@provoly/dashboard 0.12.0 → 0.12.1
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/dataset/i18n/en.translations.d.ts +3 -1
- package/dataset/i18n/fr.translations.d.ts +1 -0
- package/dataset/style/_o-pry-dataset.scss +2 -7
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +3 -3
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
- package/esm2022/dataset/i18n/en.translations.mjs +4 -2
- package/esm2022/dataset/i18n/fr.translations.mjs +3 -2
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/filters/date/date-filter.component.mjs +24 -8
- package/esm2022/filters/date/date-filter.module.mjs +7 -8
- package/esm2022/filters/date/public-api.mjs +1 -2
- package/esm2022/filters/number/number-filter.component.mjs +5 -4
- package/esm2022/filters/number/number-filter.module.mjs +5 -5
- package/esm2022/filters/text/text-filter.component.mjs +5 -4
- package/esm2022/filters/text/text-filter.module.mjs +5 -5
- package/esm2022/lib/core/components/modal-status/modal-status.component.mjs +40 -0
- package/esm2022/lib/core/components/modal-status/modal-status.module.mjs +28 -0
- package/esm2022/lib/core/core.module.mjs +2 -2
- package/esm2022/lib/core/i18n/en.translations.mjs +4 -1
- package/esm2022/lib/core/i18n/fr.translations.mjs +4 -1
- package/esm2022/lib/core/model/dataset.interface.mjs +1 -1
- package/esm2022/lib/core/model/manifest.interface.mjs +1 -1
- package/esm2022/lib/core/public-api.mjs +3 -3
- package/esm2022/lib/core/store/data-source/data-source.actions.mjs +5 -5
- package/esm2022/lib/core/store/data-source/data-source.effects.mjs +2 -2
- package/esm2022/lib/core/store/data-source/data-source.reducer.mjs +7 -7
- package/esm2022/lib/core/store/data-source/data-source.selectors.mjs +3 -3
- package/esm2022/lib/core/store/data-source/data-source.service.mjs +3 -3
- package/esm2022/lib/dashboard/store/manifest.service.mjs +10 -7
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +1 -1
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/i18n/fr.translations.mjs +2 -2
- package/esm2022/restitution/style/css.component.mjs +2 -2
- package/esm2022/toolbox/components/automate-refresh/automate-refresh.component.mjs +104 -0
- package/esm2022/toolbox/components/clear-view/clear-view.component.mjs +8 -10
- package/esm2022/toolbox/components/drag-widgets/drag-widgets.component.mjs +8 -10
- package/esm2022/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.mjs +7 -9
- package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +7 -7
- package/esm2022/toolbox/components/launch-tab/launch-tab.component.mjs +8 -10
- package/esm2022/toolbox/components/refresh-datasets/refresh-datasets.component.mjs +38 -0
- package/esm2022/toolbox/components/save-view/save-view.component.mjs +8 -11
- package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +9 -12
- package/esm2022/toolbox/components/toolbox-action/toolbox-action.component.mjs +26 -0
- package/esm2022/toolbox/components/toolbox-action-instanciator/toolbox-action-instanciator.component.mjs +44 -0
- package/esm2022/toolbox/components/toolbox.component.mjs +40 -12
- package/esm2022/toolbox/public-api.mjs +6 -1
- package/esm2022/toolbox/style/css.component.mjs +3 -3
- package/esm2022/toolbox/toolbox.model.mjs +59 -0
- package/esm2022/toolbox/toolbox.module.mjs +22 -6
- package/fesm2022/provoly-dashboard-dataset.mjs +11 -8
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-date.mjs +31 -23
- package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-number.mjs +8 -7
- package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-filters-text.mjs +8 -7
- package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +3 -3
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +3 -3
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-toolbox.mjs +327 -68
- package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +43 -27
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/filters/date/date-filter.component.d.ts +1 -0
- package/filters/date/date-filter.module.d.ts +5 -6
- package/filters/date/public-api.d.ts +0 -1
- package/filters/number/number-filter.module.d.ts +1 -1
- package/filters/text/text-filter.module.d.ts +1 -1
- package/lib/core/components/{modalStatus/modalStatus.component.d.ts → modal-status/modal-status.component.d.ts} +10 -3
- package/lib/core/components/{modalStatus/modalStatus.module.d.ts → modal-status/modal-status.module.d.ts} +1 -1
- package/lib/core/core.module.d.ts +1 -1
- package/lib/core/i18n/en.translations.d.ts +3 -0
- package/lib/core/i18n/fr.translations.d.ts +3 -0
- package/lib/core/model/dataset.interface.d.ts +11 -4
- package/lib/core/model/manifest.interface.d.ts +1 -0
- package/lib/core/public-api.d.ts +2 -2
- package/lib/core/store/data-source/data-source.actions.d.ts +10 -10
- package/lib/core/store/data-source/data-source.effects.d.ts +4 -4
- package/lib/core/store/data-source/data-source.reducer.d.ts +2 -2
- package/lib/core/store/data-source/data-source.selectors.d.ts +1 -1
- package/lib/core/store/data-source/data-source.service.d.ts +2 -2
- package/lib/dashboard/store/manifest.service.d.ts +1 -0
- package/package.json +1 -1
- package/presentation/style/_o-pry-presentation.scss +8 -0
- package/styles/components/_m-actions-list.scss +1 -0
- package/styles/components/_m-filter.scss +43 -0
- package/styles-theme/components-theme/_m-filter.theme.scss +12 -0
- package/styles-theme/main-theme.scss +2 -0
- package/toolbox/components/automate-refresh/automate-refresh.component.d.ts +29 -0
- package/toolbox/components/clear-view/clear-view.component.d.ts +3 -4
- package/toolbox/components/drag-widgets/drag-widgets.component.d.ts +3 -4
- package/toolbox/components/edit-mode-toggle/edit-mode-toggle.component.d.ts +3 -4
- package/toolbox/components/filter-settings/filter-settings.component.d.ts +3 -3
- package/toolbox/components/launch-tab/launch-tab.component.d.ts +3 -4
- package/toolbox/components/refresh-datasets/refresh-datasets.component.d.ts +14 -0
- package/toolbox/components/save-view/save-view.component.d.ts +4 -5
- package/toolbox/components/select-grid-layout/select-grid-layout.component.d.ts +4 -5
- package/toolbox/components/toolbox-action/toolbox-action.component.d.ts +12 -0
- package/toolbox/components/toolbox-action-instanciator/toolbox-action-instanciator.component.d.ts +17 -0
- package/toolbox/components/toolbox.component.d.ts +18 -3
- package/toolbox/public-api.d.ts +5 -0
- package/toolbox/style/_o-automate-refresh.scss +24 -0
- package/toolbox/style/_o-toolbox.scss +30 -0
- package/toolbox/style/css.component.d.ts +1 -1
- package/toolbox/toolbox.model.d.ts +10 -0
- package/toolbox/toolbox.module.d.ts +22 -18
- package/esm2022/filters/date/style/css.component.mjs +0 -11
- package/esm2022/lib/core/components/modalStatus/modalStatus.component.mjs +0 -35
- package/esm2022/lib/core/components/modalStatus/modalStatus.module.mjs +0 -28
- package/filters/date/style/_m-date.scss +0 -6
- package/filters/date/style/css.component.d.ts +0 -5
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
2
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
3
|
import { Component, Input, TemplateRef, ViewChild } from '@angular/core';
|
|
4
|
-
import { ConfigActions, DashboardActions, DashboardSelectors, LibraryTypes, PryVisibilityType,
|
|
4
|
+
import { ConfigActions, DashboardActions, DashboardSelectors, LibraryTypes, PryVisibilityType, ViewMode } from '@provoly/dashboard';
|
|
5
5
|
import { v4 } from 'uuid';
|
|
6
|
+
import { ToolboxActionComponent } from '../toolbox-action/toolbox-action.component';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@ngrx/store";
|
|
8
9
|
import * as i2 from "@angular/cdk/overlay";
|
|
@@ -11,13 +12,11 @@ import * as i4 from "@angular/forms";
|
|
|
11
12
|
import * as i5 from "@provoly/dashboard";
|
|
12
13
|
import * as i6 from "@provoly/dashboard/components/checkbox";
|
|
13
14
|
import * as i7 from "@provoly/dashboard/components/stepper";
|
|
14
|
-
export class SaveViewComponent extends
|
|
15
|
+
export class SaveViewComponent extends ToolboxActionComponent {
|
|
15
16
|
constructor(store, overlay, viewContainerRef) {
|
|
16
|
-
super();
|
|
17
|
-
this.store = store;
|
|
17
|
+
super(store);
|
|
18
18
|
this.overlay = overlay;
|
|
19
19
|
this.viewContainerRef = viewContainerRef;
|
|
20
|
-
this.label = true;
|
|
21
20
|
this.mode = 'saveAs';
|
|
22
21
|
this.saveAsOpened = false;
|
|
23
22
|
this.visibility = { type: PryVisibilityType.PRIVATE };
|
|
@@ -170,14 +169,12 @@ export class SaveViewComponent extends SubscriptionnerDirective {
|
|
|
170
169
|
}
|
|
171
170
|
}
|
|
172
171
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SaveViewComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
173
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SaveViewComponent, selector: "pry-save-view", inputs: { label: "label", mode: "mode" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "saveAs", first: true, predicate: ["saveAs"], descendants: true }, { propertyName: "directiveSave", first: true, predicate: ["directiveSave"], descendants: true }, { propertyName: "firstFocusdirective", first: true, predicate: ["firstFocusdirective"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true }, { propertyName: "templateSaveAs", first: true, predicate: ["templateSaveAs"], descendants: true, read: TemplateRef }, { propertyName: "templateDirectSaveType", first: true, predicate: ["templateDirectSaveType"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'directSave'\">\n <div\n [pryTooltip]=\"infoTooltipDirectSave\"\n pryTooltipPosition=\"bottom\"\n [attr.aria-expanded]=\"saveTypeOpened\"\n aria-controls=\"directiveSave\"\n aria-describedby=\"infoTooltip_directSave\"\n >\n <button\n type=\"button\"\n #directiveSave\n class=\"a-btn a-btn--secondary -size-md\"\n (click)=\"directSave()\"\n [disabled]=\"!(savePresentationActive$ | async)\"\n >\n <ng-container *ngIf=\"label\">{{ '@pry.toolbox.save' | i18n }} ({{ nbPages }})</ng-container>\n </button>\n </div>\n</ng-container>\n<ng-container *ngIf=\"mode === 'saveAs'\">\n <div\n class=\"save-manifest-container\"\n [pryTooltip]=\"infoTooltipSaveAs\"\n pryTooltipPosition=\"bottom\"\n [attr.aria-expanded]=\"saveAsOpened\"\n aria-controls=\"saveModal\"\n aria-describedby=\"infoTooltip_saveAs\"\n >\n <button\n type=\"button\"\n #saveAs\n class=\"a-btn a-btn--secondary -size-md\"\n (click)=\"toggleSaveAs()\"\n aria-haspopup=\"dialog\"\n >\n <ng-container *ngIf=\"label\">{{ '@pry.toolbox.saveView' | i18n }} ({{ nbPages }})</ng-container>\n </button>\n </div>\n</ng-container>\n\n<ng-template #templateSaveAs>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n id=\"saveModal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_saveModal\"\n (keydown.escape)=\"closeModals()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusValidation()\" (click)=\"toggleSaveAs()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-stepper #stepper>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.presentation.add.info' | i18n }}</h4>\n <form>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"label-name\" for=\"input-name\">{{ '@pry.toolbox.manifest.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"input-name\"\n name=\"input-name\"\n class=\"a-form-field\"\n placeholder=\"{{ '@pry.toolbox.manifest.name' | i18n }}\"\n [ngModel]=\"currentManifest!.name\"\n (ngModelChange)=\"changeValue($event)\"\n aria-labelledby=\"label-name\"\n maxlength=\"50\"\n #input\n />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"label-descr\" for=\"input-descr\">{{\n '@pry.toolbox.manifest.description' | i18n\n }}</label>\n <input\n type=\"text\"\n id=\"input-descr\"\n name=\"input-descr\"\n class=\"a-form-field\"\n placeholder=\"{{ '@pry.toolbox.manifest.description' | i18n }}\"\n [ngModel]=\"currentManifest!.description\"\n (ngModelChange)=\"changeDescr($event)\"\n aria-labelledby=\"label-name\"\n maxlength=\"200\"\n />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"currentManifest!.image = $event\"\n [iconUrl]=\"currentManifest!.image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox [(ngModel)]=\"currentManifest!.cover\" name=\"cover\">\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <div class=\"m-btn-group\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n #cancel\n (click)=\"toggleSaveAs()\"\n (keydown.tab)=\"disableNextStep()\"\n >\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n (click)=\"stepper.next()\"\n [disabled]=\"!isValid()\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.action.next' | i18n }}\n </button>\n </div>\n </form>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.broadcast' | i18n }}</h4>\n <pry-share [(ngModel)]=\"visibility\" (ngModelChange)=\"changeVisibility($event)\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"stepper.prev()\">\n {{ '@pry.action.back' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #confirm\n (click)=\"save()\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.restitution.broadcast' | i18n }}\n </button>\n </div>\n </pry-step>\n </pry-stepper>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSaveAs>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_saveAs\">\n <span class=\"m-tooltip__text\">{{ '@pry.toolbox.rename' | i18n }}</span>\n </div>\n</ng-template>\n<ng-template #infoTooltipDirectSave>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_directSave\">\n <span class=\"m-tooltip__text\">{{ '@pry.toolbox.save' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #templateDirectSaveType>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n id=\"directiveSave\"\n role=\"dialog\"\n aria-labelledby=\"dialog_title\"\n (keydown.escape)=\"closeModals()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title_\">{{ '@pry.toolbox.save' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #firstFocusdirective (click)=\"toggleDirectSaveType()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div>\n <h3>{{ '@pry.snack.pagesChanged' | i18n }}</h3>\n </div>\n <div class=\"m-btn-group\">\n <button class=\"a-btn a-btn--primary\" (click)=\"save()\">\n {{ '@pry.toolbox.save' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" (click)=\"rename()\">\n {{ '@pry.toolbox.rename' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" (click)=\"restore()\" (keydown.tab)=\"closeModals()\">\n {{ '@pry.toolbox.restore' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "component", type: i5.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i7.PryStepperComponent, selector: "pry-stepper", inputs: ["isConsultMode"], outputs: ["lastStepCompleted"] }, { kind: "component", type: i7.PryStepComponent, selector: "pry-step", inputs: ["setActiveState"] }, { kind: "directive", type: i7.PryStepTitleDirective, selector: "[stepTitle]" }, { kind: "component", type: i5.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
172
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SaveViewComponent, selector: "pry-save-view", inputs: { mode: "mode" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }, { propertyName: "saveAs", first: true, predicate: ["saveAs"], descendants: true }, { propertyName: "directiveSave", first: true, predicate: ["directiveSave"], descendants: true }, { propertyName: "firstFocusdirective", first: true, predicate: ["firstFocusdirective"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }, { propertyName: "cancel", first: true, predicate: ["cancel"], descendants: true }, { propertyName: "templateSaveAs", first: true, predicate: ["templateSaveAs"], descendants: true, read: TemplateRef }, { propertyName: "templateDirectSaveType", first: true, predicate: ["templateDirectSaveType"], descendants: true, read: TemplateRef }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'directSave'\">\n <div\n [pryTooltip]=\"infoTooltipDirectSave\"\n pryTooltipPosition=\"bottom\"\n [attr.aria-expanded]=\"saveTypeOpened\"\n aria-controls=\"directiveSave\"\n aria-describedby=\"infoTooltip_directSave\"\n >\n <button\n type=\"button\"\n #directiveSave\n class=\"a-btn a-btn--primary -size-md\"\n (click)=\"directSave()\"\n [disabled]=\"!(savePresentationActive$ | async)\"\n >\n <ng-container *ngIf=\"displayLabels\">{{ '@pry.toolbox.save' | i18n }} ({{ nbPages }})</ng-container>\n </button>\n </div>\n</ng-container>\n<ng-container *ngIf=\"mode === 'saveAs'\">\n <div\n class=\"save-manifest-container\"\n [pryTooltip]=\"infoTooltipSaveAs\"\n pryTooltipPosition=\"bottom\"\n [attr.aria-expanded]=\"saveAsOpened\"\n aria-controls=\"saveModal\"\n aria-describedby=\"infoTooltip_saveAs\"\n >\n <button\n type=\"button\"\n #saveAs\n class=\"a-btn a-btn--secondary -size-md\"\n (click)=\"toggleSaveAs()\"\n aria-haspopup=\"dialog\"\n >\n <ng-container *ngIf=\"displayLabels\">{{ '@pry.toolbox.saveView' | i18n }} ({{ nbPages }})</ng-container>\n </button>\n </div>\n</ng-container>\n\n<ng-template #templateSaveAs>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n id=\"saveModal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_saveModal\"\n (keydown.escape)=\"closeModals()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusValidation()\" (click)=\"toggleSaveAs()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-stepper #stepper>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.presentation.add.info' | i18n }}</h4>\n <form>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"label-name\" for=\"input-name\">{{ '@pry.toolbox.manifest.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"input-name\"\n name=\"input-name\"\n class=\"a-form-field\"\n placeholder=\"{{ '@pry.toolbox.manifest.name' | i18n }}\"\n [ngModel]=\"currentManifest!.name\"\n (ngModelChange)=\"changeValue($event)\"\n aria-labelledby=\"label-name\"\n maxlength=\"50\"\n #input\n />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"label-descr\" for=\"input-descr\">{{\n '@pry.toolbox.manifest.description' | i18n\n }}</label>\n <input\n type=\"text\"\n id=\"input-descr\"\n name=\"input-descr\"\n class=\"a-form-field\"\n placeholder=\"{{ '@pry.toolbox.manifest.description' | i18n }}\"\n [ngModel]=\"currentManifest!.description\"\n (ngModelChange)=\"changeDescr($event)\"\n aria-labelledby=\"label-name\"\n maxlength=\"200\"\n />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"currentManifest!.image = $event\"\n [iconUrl]=\"currentManifest!.image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox [(ngModel)]=\"currentManifest!.cover\" name=\"cover\">\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <div class=\"m-btn-group\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n #cancel\n (click)=\"toggleSaveAs()\"\n (keydown.tab)=\"disableNextStep()\"\n >\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n (click)=\"stepper.next()\"\n [disabled]=\"!isValid()\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.action.next' | i18n }}\n </button>\n </div>\n </form>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.broadcast' | i18n }}</h4>\n <pry-share [(ngModel)]=\"visibility\" (ngModelChange)=\"changeVisibility($event)\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"stepper.prev()\">\n {{ '@pry.action.back' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #confirm\n (click)=\"save()\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.restitution.broadcast' | i18n }}\n </button>\n </div>\n </pry-step>\n </pry-stepper>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSaveAs>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_saveAs\">\n <span class=\"m-tooltip__text\">{{ '@pry.toolbox.rename' | i18n }}</span>\n </div>\n</ng-template>\n<ng-template #infoTooltipDirectSave>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_directSave\">\n <span class=\"m-tooltip__text\">{{ '@pry.toolbox.save' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #templateDirectSaveType>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n id=\"directiveSave\"\n role=\"dialog\"\n aria-labelledby=\"dialog_title\"\n (keydown.escape)=\"closeModals()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title_\">{{ '@pry.toolbox.save' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #firstFocusdirective (click)=\"toggleDirectSaveType()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div>\n <h3>{{ '@pry.snack.pagesChanged' | i18n }}</h3>\n </div>\n <div class=\"m-btn-group\">\n <button class=\"a-btn a-btn--primary\" (click)=\"save()\">\n {{ '@pry.toolbox.save' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" (click)=\"rename()\">\n {{ '@pry.toolbox.rename' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" (click)=\"restore()\" (keydown.tab)=\"closeModals()\">\n {{ '@pry.toolbox.restore' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.PryTooltipDirective, selector: "[pryTooltip]", inputs: ["pryTooltip", "styleReversed", "pryTooltipContext", "pryTooltipPosition", "pryTooltipShowDelay"] }, { kind: "component", type: i5.PrySelectImageComponent, selector: "pry-select-image", inputs: ["iconUrl", "size", "mode"], outputs: ["toggled", "changed"] }, { kind: "component", type: i5.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i7.PryStepperComponent, selector: "pry-stepper", inputs: ["isConsultMode"], outputs: ["lastStepCompleted"] }, { kind: "component", type: i7.PryStepComponent, selector: "pry-step", inputs: ["setActiveState"] }, { kind: "directive", type: i7.PryStepTitleDirective, selector: "[stepTitle]" }, { kind: "component", type: i5.PryShareComponent, selector: "pry-share", inputs: ["value", "labelProperty", "valueProperty", "users$"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.I18nPipe, name: "i18n" }] }); }
|
|
174
173
|
}
|
|
175
174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SaveViewComponent, decorators: [{
|
|
176
175
|
type: Component,
|
|
177
|
-
args: [{ selector: 'pry-save-view', template: "<ng-container *ngIf=\"mode === 'directSave'\">\n <div\n [pryTooltip]=\"infoTooltipDirectSave\"\n pryTooltipPosition=\"bottom\"\n [attr.aria-expanded]=\"saveTypeOpened\"\n aria-controls=\"directiveSave\"\n aria-describedby=\"infoTooltip_directSave\"\n >\n <button\n type=\"button\"\n #directiveSave\n class=\"a-btn a-btn--
|
|
178
|
-
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: {
|
|
179
|
-
type: Input
|
|
180
|
-
}], mode: [{
|
|
176
|
+
args: [{ selector: 'pry-save-view', template: "<ng-container *ngIf=\"mode === 'directSave'\">\n <div\n [pryTooltip]=\"infoTooltipDirectSave\"\n pryTooltipPosition=\"bottom\"\n [attr.aria-expanded]=\"saveTypeOpened\"\n aria-controls=\"directiveSave\"\n aria-describedby=\"infoTooltip_directSave\"\n >\n <button\n type=\"button\"\n #directiveSave\n class=\"a-btn a-btn--primary -size-md\"\n (click)=\"directSave()\"\n [disabled]=\"!(savePresentationActive$ | async)\"\n >\n <ng-container *ngIf=\"displayLabels\">{{ '@pry.toolbox.save' | i18n }} ({{ nbPages }})</ng-container>\n </button>\n </div>\n</ng-container>\n<ng-container *ngIf=\"mode === 'saveAs'\">\n <div\n class=\"save-manifest-container\"\n [pryTooltip]=\"infoTooltipSaveAs\"\n pryTooltipPosition=\"bottom\"\n [attr.aria-expanded]=\"saveAsOpened\"\n aria-controls=\"saveModal\"\n aria-describedby=\"infoTooltip_saveAs\"\n >\n <button\n type=\"button\"\n #saveAs\n class=\"a-btn a-btn--secondary -size-md\"\n (click)=\"toggleSaveAs()\"\n aria-haspopup=\"dialog\"\n >\n <ng-container *ngIf=\"displayLabels\">{{ '@pry.toolbox.saveView' | i18n }} ({{ nbPages }})</ng-container>\n </button>\n </div>\n</ng-container>\n\n<ng-template #templateSaveAs>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n id=\"saveModal\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_saveModal\"\n (keydown.escape)=\"closeModals()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.rename' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #cross (keydown.shift.tab)=\"focusValidation()\" (click)=\"toggleSaveAs()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <pry-stepper #stepper>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.presentation.add.info' | i18n }}</h4>\n <form>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"label-name\" for=\"input-name\">{{ '@pry.toolbox.manifest.name' | i18n }}</label>\n <input\n type=\"text\"\n id=\"input-name\"\n name=\"input-name\"\n class=\"a-form-field\"\n placeholder=\"{{ '@pry.toolbox.manifest.name' | i18n }}\"\n [ngModel]=\"currentManifest!.name\"\n (ngModelChange)=\"changeValue($event)\"\n aria-labelledby=\"label-name\"\n maxlength=\"50\"\n #input\n />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" id=\"label-descr\" for=\"input-descr\">{{\n '@pry.toolbox.manifest.description' | i18n\n }}</label>\n <input\n type=\"text\"\n id=\"input-descr\"\n name=\"input-descr\"\n class=\"a-form-field\"\n placeholder=\"{{ '@pry.toolbox.manifest.description' | i18n }}\"\n [ngModel]=\"currentManifest!.description\"\n (ngModelChange)=\"changeDescr($event)\"\n aria-labelledby=\"label-name\"\n maxlength=\"200\"\n />\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"presentation_image\">{{ '@pry.presentation.form.image' | i18n }}</label>\n <div class=\"o-file-input\">\n <pry-select-image\n id=\"presentation_image\"\n (changed)=\"currentManifest!.image = $event\"\n [iconUrl]=\"currentManifest!.image\"\n [mode]=\"type\"\n ></pry-select-image>\n <pry-checkbox [(ngModel)]=\"currentManifest!.cover\" name=\"cover\">\n {{ '@pry.presentation.form.cover' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <div class=\"m-btn-group\">\n <button\n type=\"button\"\n class=\"a-btn a-btn--secondary\"\n #cancel\n (click)=\"toggleSaveAs()\"\n (keydown.tab)=\"disableNextStep()\"\n >\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n (click)=\"stepper.next()\"\n [disabled]=\"!isValid()\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.action.next' | i18n }}\n </button>\n </div>\n </form>\n </pry-step>\n <pry-step>\n <h4 class=\"m-stepper-item__title\" *stepTitle>{{ '@pry.restitution.broadcast' | i18n }}</h4>\n <pry-share [(ngModel)]=\"visibility\" (ngModelChange)=\"changeVisibility($event)\"></pry-share>\n <div class=\"m-btn-group\">\n <button type=\"button\" class=\"a-btn a-btn--secondary\" (click)=\"stepper.prev()\">\n {{ '@pry.action.back' | i18n }}\n </button>\n <button\n type=\"submit\"\n class=\"a-btn a-btn--primary\"\n #confirm\n (click)=\"save()\"\n (keydown.tab)=\"focusCrossElement()\"\n >\n {{ '@pry.restitution.broadcast' | i18n }}\n </button>\n </div>\n </pry-step>\n </pry-stepper>\n </div>\n</ng-template>\n\n<ng-template #infoTooltipSaveAs>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_saveAs\">\n <span class=\"m-tooltip__text\">{{ '@pry.toolbox.rename' | i18n }}</span>\n </div>\n</ng-template>\n<ng-template #infoTooltipDirectSave>\n <div class=\"m-tooltip\" role=\"tooltip\" id=\"infoTooltip_directSave\">\n <span class=\"m-tooltip__text\">{{ '@pry.toolbox.save' | i18n }}</span>\n </div>\n</ng-template>\n\n<ng-template #templateDirectSaveType>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n id=\"directiveSave\"\n role=\"dialog\"\n aria-labelledby=\"dialog_title\"\n (keydown.escape)=\"closeModals()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title_\">{{ '@pry.toolbox.save' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button class=\"a-btn a-btn--icon-only\" #firstFocusdirective (click)=\"toggleDirectSaveType()\">\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div>\n <h3>{{ '@pry.snack.pagesChanged' | i18n }}</h3>\n </div>\n <div class=\"m-btn-group\">\n <button class=\"a-btn a-btn--primary\" (click)=\"save()\">\n {{ '@pry.toolbox.save' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" (click)=\"rename()\">\n {{ '@pry.toolbox.rename' | i18n }}\n </button>\n <button class=\"a-btn a-btn--primary\" (click)=\"restore()\" (keydown.tab)=\"closeModals()\">\n {{ '@pry.toolbox.restore' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
177
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { mode: [{
|
|
181
178
|
type: Input
|
|
182
179
|
}], input: [{
|
|
183
180
|
type: ViewChild,
|
|
@@ -207,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
207
204
|
type: ViewChild,
|
|
208
205
|
args: ['templateDirectSaveType', { read: TemplateRef }]
|
|
209
206
|
}] } });
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zYXZlLXZpZXcvc2F2ZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zYXZlLXZpZXcvc2F2ZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFlBQVksRUFHWixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLFFBQVEsRUFDVCxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQU0xQixNQUFNLE9BQU8saUJBQWtCLFNBQVEsd0JBQXdCO0lBeUI3RCxZQUNVLEtBQVksRUFDWixPQUFnQixFQUNoQixnQkFBa0M7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFKQSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBM0JuQyxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2IsU0FBSSxHQUE0QixRQUFRLENBQUM7UUFRbEQsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFLOUIsZUFBVSxHQUFrQixF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LElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7OEdBdk1VLGlCQUFpQjtrR0FBakIsaUJBQWlCLHV5QkFZUyxXQUFXLDJIQUVILFdBQVcsb0RDcEMxRCxxMU9BME1BOzsyRkRwTGEsaUJBQWlCO2tCQUo3QixTQUFTOytCQUNFLGVBQWU7aUpBSWhCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ2MsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPO2dCQUNHLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUyxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ1EsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDWixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0ksT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUNDLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFHaUMsY0FBYztzQkFBakUsU0FBUzt1QkFBQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRVUsc0JBQXNCO3NCQUFqRixTQUFTO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQge1xuICBDb25maWdBY3Rpb25zLFxuICBEYXNoYm9hcmRBY3Rpb25zLFxuICBEYXNoYm9hcmRTZWxlY3RvcnMsXG4gIExpYnJhcnlUeXBlcyxcbiAgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgUHJ5VmlzaWJpbGl0eSxcbiAgUHJ5VmlzaWJpbGl0eVR5cGUsXG4gIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSxcbiAgVmlld01vZGVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1zYXZlLXZpZXcnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2F2ZS12aWV3LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTYXZlVmlld0NvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIEBJbnB1dCgpIGxhYmVsID0gdHJ1ZTtcbiAgQElucHV0KCkgbW9kZTogJ3NhdmVBcycgfCAnZGlyZWN0U2F2ZScgPSAnc2F2ZUFzJztcbiAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3NhdmVBcycpIHNhdmVBcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdkaXJlY3RpdmVTYXZlJykgZGlyZWN0aXZlU2F2ZSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdmaXJzdEZvY3VzZGlyZWN0aXZlJykgZmlyc3RGb2N1c2RpcmVjdGl2ZSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjcm9zcycpIGNyb3NzITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm0nKSBjb25maXJtITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NhbmNlbCcpIGNhbmNlbCE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBzYXZlQXNPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3ZlcmxheVJlZlNhdmVBcz86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlU2F2ZUFzJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZVNhdmVBcyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIG92ZXJsYXlSZWZEaXJlY3RTYXZlVHlwZT86IE92ZXJsYXlSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlRGlyZWN0U2F2ZVR5cGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlRGlyZWN0U2F2ZVR5cGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICB2aXNpYmlsaXR5OiBQcnlWaXNpYmlsaXR5ID0geyB0eXBlOiBQcnlWaXNpYmlsaXR5VHlwZS5QUklWQVRFIH07XG4gIHR5cGU6IExpYnJhcnlUeXBlcyA9IExpYnJhcnlUeXBlcy5JTExVU1RSQVRJT047XG4gIHNhdmVUeXBlT3BlbmVkID0gZmFsc2U7XG4gIGN1cnJlbnRNYW5pZmVzdD86IE1hbmlmZXN0RGVzY3JpcHRpb247XG4gIHNhdmVQcmVzZW50YXRpb25BY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBuYlBhZ2VzOiBudW1iZXIgPSAwO1xuICBpbml0aWFsTmJQYWdlczogbnVtYmVyID0gMDtcbiAgaGFzSW5pdGlhbDogYm9vbGVhbiA9IGZhbHNlO1xuICBWaWV3TW9kZSA9IFZpZXdNb2RlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc3RvcmU6IFN0b3JlLFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMucHJlc2VudGF0aW9uKS5zdWJzY3JpYmUoKHByZXNlbnRhdGlvbikgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRNYW5pZmVzdCA9IHByZXNlbnRhdGlvbi5jdXJyZW50XG4gICAgICAgICAgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHByZXNlbnRhdGlvbi5jdXJyZW50KSlcbiAgICAgICAgICA6ICh7IG5hbWU6ICcnLCBpbWFnZTogJycsIGRlc2NyaXB0aW9uOiAnJywgY292ZXI6IGZhbHNlIH0gYXMgTWFuaWZlc3REZXNjcmlwdGlvbik7XG4gICAgICAgIHRoaXMuaW5pdGlhbE5iUGFnZXMgPSBwcmVzZW50YXRpb24uaW5pdGlhbD8ud2luZG93cy5sZW5ndGggPz8gMDtcbiAgICAgICAgdGhpcy5oYXNJbml0aWFsID0gISFwcmVzZW50YXRpb24uaW5pdGlhbDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLnNhdmVQcmVzZW50YXRpb25BY3RpdmUkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLnNhdmVQcmVzZW50YXRpb25BY3RpdmUpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlXG4gICAgICAgIC5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLmdsb2JhbE1hbmlmZXN0KVxuICAgICAgICAuc3Vic2NyaWJlKChtYW5pZmVzdCkgPT4gKHRoaXMubmJQYWdlcyA9IG1hbmlmZXN0LndpbmRvd3MubGVuZ3RoKSlcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlU2F2ZUFzKCkge1xuICAgIHRoaXMuc2F2ZUFzT3BlbmVkID0gIXRoaXMuc2F2ZUFzT3BlbmVkO1xuICAgIGlmICh0aGlzLnNhdmVBc09wZW5lZCkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RBbGxSb3V0ZXMoKSk7XG4gICAgICB0aGlzLm9wZW5TYXZlQXMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5UmVmU2F2ZUFzPy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZTYXZlQXMgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLnNhdmVBcy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMucmVxdWVzdEFsbFJvdXRlcygpKTtcblxuICAgIC8vIEdpdmUgdGltZSBmb3Igcm91dGVzIHRvIGJlIHVwZGF0ZWRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGxldCBwcmVzZW50YXRpb24gPSB7XG4gICAgICAgIG5hbWU6IHRoaXMuY3VycmVudE1hbmlmZXN0IS5uYW1lLFxuICAgICAgICBpZDogdjQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuY3VycmVudE1hbmlmZXN0IS5kZXNjcmlwdGlvbixcbiAgICAgICAgaW1hZ2U6IHRoaXMuY3VycmVudE1hbmlmZXN0IS5pbWFnZSxcbiAgICAgICAgdmlzaWJpbGl0eTogdGhpcy52aXNpYmlsaXR5LFxuICAgICAgICBjb3ZlcjogdGhpcy5jdXJyZW50TWFuaWZlc3Q/LmNvdmVyID8/IGZhbHNlXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMubW9kZSA9PSAnZGlyZWN0U2F2ZScpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE1hbmlmZXN0KSB7XG4gICAgICAgICAgcHJlc2VudGF0aW9uLmlkID0gdGhpcy5jdXJyZW50TWFuaWZlc3QuaWQ7XG4gICAgICAgICAgcHJlc2VudGF0aW9uLnZpc2liaWxpdHkgPSB0aGlzLmN1cnJlbnRNYW5pZmVzdC52aXNpYmlsaXR5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMuc2F2ZU1hbmlmZXN0KHByZXNlbnRhdGlvbikpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgRGFzaGJvYXJkQWN0aW9ucy5zZWxlY3RQcmVzZW50YXRpb24oe1xuICAgICAgICAgIHByZXNlbnRhdGlvbjogcHJlc2VudGF0aW9uIGFzIE1hbmlmZXN0RGVzY3JpcHRpb24sXG4gICAgICAgICAgdmlld01vZGU6IFZpZXdNb2RlLkNBVEFMT0dcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLm1vZGUgPSAnZGlyZWN0U2F2ZSc7XG4gICAgfSwgMjAwKTtcbiAgICB0aGlzLm92ZXJsYXlSZWZTYXZlQXM/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLmNsb3NlTW9kYWxzKCk7XG4gIH1cblxuICBjbG9zZU1vZGFscygpIHtcbiAgICBpZiAodGhpcy5zYXZlVHlwZU9wZW5lZCkge1xuICAgICAgdGhpcy50b2dnbGVEaXJlY3RTYXZlVHlwZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5zYXZlQXNPcGVuZWQpIHtcbiAgICAgIHRoaXMudG9nZ2xlU2F2ZUFzKCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmlzaWJpbGl0eSgkZXZlbnQ6IFByeVZpc2liaWxpdHkpIHtcbiAgICB0aGlzLmN1cnJlbnRNYW5pZmVzdCEudmlzaWJpbGl0eSA9ICRldmVudDtcbiAgfVxuXG4gIGNoYW5nZVZhbHVlKCRldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50TWFuaWZlc3QhLm5hbWUgPSAkZXZlbnQ7XG4gIH1cblxuICBjaGFuZ2VEZXNjcigkZXZlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuY3VycmVudE1hbmlmZXN0IS5kZXNjcmlwdGlvbiA9ICRldmVudDtcbiAgfVxuXG4gIG9wZW5TYXZlQXMoKSB7XG4gICAgdGhpcy5vdmVybGF5UmVmU2F2ZUFzID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLm1vZGUgPSAnc2F2ZUFzJztcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgIHRoaXMub3ZlcmxheVJlZlNhdmVBcy5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnRvZ2dsZVNhdmVBcygpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWZTYXZlQXMuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlU2F2ZUFzLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgfVxuXG4gIGlzVmFsaWQoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVudE1hbmlmZXN0Py5uYW1lICYmIDAgPCB0aGlzLmN1cnJlbnRNYW5pZmVzdD8ubmFtZS5sZW5ndGggJiYgdGhpcy5jdXJyZW50TWFuaWZlc3Q/Lm5hbWUubGVuZ3RoIDw9IDUwXG4gICAgKTtcbiAgfVxuXG4gIHRvZ2dsZURpcmVjdFNhdmVUeXBlKCkge1xuICAgIHRoaXMuc2F2ZVR5cGVPcGVuZWQgPSAhdGhpcy5zYXZlVHlwZU9wZW5lZDtcbiAgICBpZiAodGhpcy5zYXZlVHlwZU9wZW5lZCkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnJlcXVlc3RBbGxSb3V0ZXMoKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZEaXJlY3RTYXZlVHlwZSA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlciddLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdiYWNrZHJvcCdcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuYWRkaW5nT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmRGlyZWN0U2F2ZVR5cGUuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVEaXJlY3RTYXZlVHlwZSgpKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZkRpcmVjdFNhdmVUeXBlLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZURpcmVjdFNhdmVUeXBlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpcnN0Rm9jdXNkaXJlY3RpdmUubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZEaXJlY3RTYXZlVHlwZT8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmRGlyZWN0U2F2ZVR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKENvbmZpZ0FjdGlvbnMuY2xvc2VPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLmRpcmVjdGl2ZVNhdmUubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBtdXN0T3Blbk1vZGFsKCkge1xuICAgIHJldHVybiB0aGlzLmhhc0luaXRpYWwgJiYgdGhpcy5uYlBhZ2VzICE9PSB0aGlzLmluaXRpYWxOYlBhZ2VzO1xuICB9XG5cbiAgZGlyZWN0U2F2ZSgpIHtcbiAgICBpZiAodGhpcy5tdXN0T3Blbk1vZGFsKSB7XG4gICAgICB0aGlzLnRvZ2dsZURpcmVjdFNhdmVUeXBlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2F2ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RvcmUoKSB7XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnJlc3RvcmVJbml0aWFsTWFuaWZlc3QoKSk7XG4gICAgdGhpcy5jbG9zZU1vZGFscygpO1xuICB9XG5cbiAgZm9jdXNDcm9zc0VsZW1lbnQoKSB7XG4gICAgdGhpcy5jcm9zcy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBmb2N1c1ZhbGlkYXRpb24oKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRNYW5pZmVzdD8ubmFtZSkge1xuICAgICAgdGhpcy5jYW5jZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpcm0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcmVuYW1lKCkge1xuICAgIHRoaXMudG9nZ2xlU2F2ZUFzKCk7XG4gIH1cblxuICBkaXNhYmxlTmV4dFN0ZXAoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRNYW5pZmVzdD8ubmFtZSkge1xuICAgICAgdGhpcy5mb2N1c0Nyb3NzRWxlbWVudCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGUgPT09ICdkaXJlY3RTYXZlJ1wiPlxuICA8ZGl2XG4gICAgW3ByeVRvb2x0aXBdPVwiaW5mb1Rvb2x0aXBEaXJlY3RTYXZlXCJcbiAgICBwcnlUb29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2F2ZVR5cGVPcGVuZWRcIlxuICAgIGFyaWEtY29udHJvbHM9XCJkaXJlY3RpdmVTYXZlXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiaW5mb1Rvb2x0aXBfZGlyZWN0U2F2ZVwiXG4gID5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICNkaXJlY3RpdmVTYXZlXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLXNpemUtbWRcIlxuICAgICAgKGNsaWNrKT1cImRpcmVjdFNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIShzYXZlUHJlc2VudGF0aW9uQWN0aXZlJCB8IGFzeW5jKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+e3sgJ0BwcnkudG9vbGJveC5zYXZlJyB8IGkxOG4gfX0gKHt7IG5iUGFnZXMgfX0pPC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG48bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ3NhdmVBcydcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic2F2ZS1tYW5pZmVzdC1jb250YWluZXJcIlxuICAgIFtwcnlUb29sdGlwXT1cImluZm9Ub29sdGlwU2F2ZUFzXCJcbiAgICBwcnlUb29sdGlwUG9zaXRpb249XCJib3R0b21cIlxuICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwic2F2ZUFzT3BlbmVkXCJcbiAgICBhcmlhLWNvbnRyb2xzPVwic2F2ZU1vZGFsXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiaW5mb1Rvb2x0aXBfc2F2ZUFzXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgI3NhdmVBc1xuICAgICAgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1zaXplLW1kXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVTYXZlQXMoKVwiXG4gICAgICBhcmlhLWhhc3BvcHVwPVwiZGlhbG9nXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGFiZWxcIj57eyAnQHByeS50b29sYm94LnNhdmVWaWV3JyB8IGkxOG4gfX0gKHt7IG5iUGFnZXMgfX0pPC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVTYXZlQXM+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGlkPVwic2F2ZU1vZGFsXCJcbiAgICByb2xlPVwiZGlhbG9nXCJcbiAgICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nX3NhdmVNb2RhbFwiXG4gICAgKGtleWRvd24uZXNjYXBlKT1cImNsb3NlTW9kYWxzKClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fdGl0bGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiYS1oMlwiIGlkPVwiZGlhbG9nX3RpdGxlXCI+e3sgJ0BwcnkudG9vbGJveC5yZW5hbWUnIHwgaTE4biB9fTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX2Nsb3NlXCI+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0taWNvbi1vbmx5XCIgI2Nyb3NzIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c1ZhbGlkYXRpb24oKVwiIChjbGljayk9XCJ0b2dnbGVTYXZlQXMoKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbaGVpZ2h0XT1cIjM1XCIgW3dpZHRoXT1cIjM1XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxwcnktc3RlcHBlciAjc3RlcHBlcj5cbiAgICAgIDxwcnktc3RlcD5cbiAgICAgICAgPGg0IGNsYXNzPVwibS1zdGVwcGVyLWl0ZW1fX3RpdGxlXCIgKnN0ZXBUaXRsZT57eyAnQHByeS5wcmVzZW50YXRpb24uYWRkLmluZm8nIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgIDxmb3JtPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBpZD1cImxhYmVsLW5hbWVcIiBmb3I9XCJpbnB1dC1uYW1lXCI+e3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5uYW1lJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgaWQ9XCJpbnB1dC1uYW1lXCJcbiAgICAgICAgICAgICAgbmFtZT1cImlucHV0LW5hbWVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5uYW1lJyB8IGkxOG4gfX1cIlxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjdXJyZW50TWFuaWZlc3QhLm5hbWVcIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwibGFiZWwtbmFtZVwiXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjUwXCJcbiAgICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBpZD1cImxhYmVsLWRlc2NyXCIgZm9yPVwiaW5wdXQtZGVzY3JcIj57e1xuICAgICAgICAgICAgICAnQHByeS50b29sYm94Lm1hbmlmZXN0LmRlc2NyaXB0aW9uJyB8IGkxOG5cbiAgICAgICAgICAgIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXQtZGVzY3JcIlxuICAgICAgICAgICAgICBuYW1lPVwiaW5wdXQtZGVzY3JcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtZm9ybS1maWVsZFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5kZXNjcmlwdGlvbicgfCBpMThuIH19XCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY3VycmVudE1hbmlmZXN0IS5kZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZURlc2NyKCRldmVudClcIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9XCJsYWJlbC1uYW1lXCJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjAwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tZm9ybS1sYWJlbC1maWVsZFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInByZXNlbnRhdGlvbl9pbWFnZVwiPnt7ICdAcHJ5LnByZXNlbnRhdGlvbi5mb3JtLmltYWdlJyB8IGkxOG4gfX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm8tZmlsZS1pbnB1dFwiPlxuICAgICAgICAgICAgICA8cHJ5LXNlbGVjdC1pbWFnZVxuICAgICAgICAgICAgICAgIGlkPVwicHJlc2VudGF0aW9uX2ltYWdlXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlZCk9XCJjdXJyZW50TWFuaWZlc3QhLmltYWdlID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICBbaWNvblVybF09XCJjdXJyZW50TWFuaWZlc3QhLmltYWdlXCJcbiAgICAgICAgICAgICAgICBbbW9kZV09XCJ0eXBlXCJcbiAgICAgICAgICAgICAgPjwvcHJ5LXNlbGVjdC1pbWFnZT5cbiAgICAgICAgICAgICAgPHByeS1jaGVja2JveCBbKG5nTW9kZWwpXT1cImN1cnJlbnRNYW5pZmVzdCEuY292ZXJcIiBuYW1lPVwiY292ZXJcIj5cbiAgICAgICAgICAgICAgICB7eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5jb3ZlcicgfCBpMThuIH19XG4gICAgICAgICAgICAgIDwvcHJ5LWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICNjYW5jZWxcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNhdmVBcygpXCJcbiAgICAgICAgICAgICAgKGtleWRvd24udGFiKT1cImRpc2FibGVOZXh0U3RlcCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwic3RlcHBlci5uZXh0KClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzVmFsaWQoKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0Nyb3NzRWxlbWVudCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ0BwcnkuYWN0aW9uLm5leHQnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICAgIDwvcHJ5LXN0ZXA+XG4gICAgICA8cHJ5LXN0ZXA+XG4gICAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucmVzdGl0dXRpb24uYnJvYWRjYXN0JyB8IGkxOG4gfX08L2g0PlxuICAgICAgICA8cHJ5LXNoYXJlIFsobmdNb2RlbCldPVwidmlzaWJpbGl0eVwiIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVZpc2liaWxpdHkoJGV2ZW50KVwiPjwvcHJ5LXNoYXJlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXBcIj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiAoY2xpY2spPVwic3RlcHBlci5wcmV2KClcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LmFjdGlvbi5iYWNrJyB8IGkxOG4gfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIlxuICAgICAgICAgICAgI2NvbmZpcm1cbiAgICAgICAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgICAgICAgICAgKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnJlc3RpdHV0aW9uLmJyb2FkY2FzdCcgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wcnktc3RlcD5cbiAgICA8L3ByeS1zdGVwcGVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaW5mb1Rvb2x0aXBTYXZlQXM+XG4gIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiIGlkPVwiaW5mb1Rvb2x0aXBfc2F2ZUFzXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj57eyAnQHByeS50b29sYm94LnJlbmFtZScgfCBpMThuIH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2luZm9Ub29sdGlwRGlyZWN0U2F2ZT5cbiAgPGRpdiBjbGFzcz1cIm0tdG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCIgaWQ9XCJpbmZvVG9vbHRpcF9kaXJlY3RTYXZlXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtLXRvb2x0aXBfX3RleHRcIj57eyAnQHByeS50b29sYm94LnNhdmUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlRGlyZWN0U2F2ZVR5cGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIGlkPVwiZGlyZWN0aXZlU2F2ZVwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiZGlhbG9nX3RpdGxlXCJcbiAgICAoa2V5ZG93bi5lc2NhcGUpPVwiY2xvc2VNb2RhbHMoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCIgaWQ9XCJkaWFsb2dfdGl0bGVfXCI+e3sgJ0BwcnkudG9vbGJveC5zYXZlJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiICNmaXJzdEZvY3VzZGlyZWN0aXZlIChjbGljayk9XCJ0b2dnbGVEaXJlY3RTYXZlVHlwZSgpXCI+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgIDxoMz57eyAnQHByeS5zbmFjay5wYWdlc0NoYW5nZWQnIHwgaTE4biB9fTwvaDM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwic2F2ZSgpXCI+XG4gICAgICAgIHt7ICdAcHJ5LnRvb2xib3guc2F2ZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJyZW5hbWUoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94LnJlbmFtZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJyZXN0b3JlKClcIiAoa2V5ZG93bi50YWIpPVwiY2xvc2VNb2RhbHMoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94LnJlc3RvcmUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zYXZlLXZpZXcvc2F2ZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zYXZlLXZpZXcvc2F2ZS12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLFlBQVksRUFHWixpQkFBaUIsRUFDakIsUUFBUSxFQUNULE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7Ozs7O0FBTXBGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxzQkFBc0I7SUF3QjNELFlBQVksS0FBWSxFQUFVLE9BQWdCLEVBQVUsZ0JBQWtDO1FBQzVGLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQURtQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQXZCckYsU0FBSSxHQUE0QixRQUFRLENBQUM7UUFRbEQsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFLOUIsZUFBVSxHQUFrQixFQUFFLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoRSxTQUFJLEdBQWlCLFlBQVksQ0FBQyxZQUFZLENBQUM7UUFDL0MsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFHdkIsWUFBTyxHQUFXLENBQUMsQ0FBQztRQUNwQixtQkFBYyxHQUFXLENBQUMsQ0FBQztRQUMzQixlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFLbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzVFLElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLE9BQU87Z0JBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsRCxDQUFDLENBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUEwQixDQUFDO1lBQ3BGLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLEtBQUs7YUFDUCxNQUFNLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FDckUsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDUjthQUFNO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXpELHFDQUFxQztRQUNyQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxZQUFZLEdBQUc7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZ0IsQ0FBQyxJQUFJO2dCQUNoQyxFQUFFLEVBQUUsRUFBRSxFQUFFO2dCQUNSLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZ0IsQ0FBQyxXQUFXO2dCQUM5QyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWdCLENBQUMsS0FBSztnQkFDbEMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxLQUFLLElBQUksS0FBSzthQUM1QyxDQUFDO1lBQ0YsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFlBQVksRUFBRTtnQkFDN0IsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO29CQUN4QixZQUFZLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO29CQUMxQyxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO2lCQUMzRDthQUNGO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDO2dCQUNsQyxZQUFZLEVBQUUsWUFBbUM7Z0JBQ2pELFFBQVEsRUFBRSxRQUFRLENBQUMsT0FBTzthQUMzQixDQUFDLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1FBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNSLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQXFCO1FBQ3BDLElBQUksQ0FBQyxlQUFnQixDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLElBQUksQ0FBQyxlQUFnQixDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLElBQUksQ0FBQyxlQUFnQixDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDN0MsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQ3pDLElBQUksYUFBYSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFVBQVUsRUFBRSxDQUFDLGlCQUFpQixDQUFDO1lBQy9CLGFBQWEsRUFBRSxVQUFVO1NBQzFCLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sQ0FDTCxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQy9HLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNqRCxJQUFJLGFBQWEsQ0FBQztnQkFDaEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxDQUFDLGlCQUFpQixDQUFDO2dCQUMvQixhQUFhLEVBQUUsVUFBVTthQUMxQixDQUFDLENBQ0gsQ0FBQztZQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEYsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztZQUM1RixJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1lBQzdHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqRCxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDUjthQUFNO1lBQ0wsSUFBSSxDQUFDLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUU7WUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7OEdBbE1VLGlCQUFpQjtrR0FBakIsaUJBQWlCLHV4QkFXUyxXQUFXLDJIQUVILFdBQVcsb0RDbkMxRCxtMk9BME1BOzsyRkRwTGEsaUJBQWlCO2tCQUo3QixTQUFTOytCQUNFLGVBQWU7aUpBSWhCLElBQUk7c0JBQVosS0FBSztnQkFDYyxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0csTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNTLGFBQWE7c0JBQXhDLFNBQVM7dUJBQUMsZUFBZTtnQkFDUSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCO2dCQUNaLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDSSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0MsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUdpQyxjQUFjO3NCQUFqRSxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFVSxzQkFBc0I7c0JBQWpGLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7XG4gIENvbmZpZ0FjdGlvbnMsXG4gIERhc2hib2FyZEFjdGlvbnMsXG4gIERhc2hib2FyZFNlbGVjdG9ycyxcbiAgTGlicmFyeVR5cGVzLFxuICBNYW5pZmVzdERlc2NyaXB0aW9uLFxuICBQcnlWaXNpYmlsaXR5LFxuICBQcnlWaXNpYmlsaXR5VHlwZSxcbiAgVmlld01vZGVcbn0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBUb29sYm94QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJveC1hY3Rpb24vdG9vbGJveC1hY3Rpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXNhdmUtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zYXZlLXZpZXcuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNhdmVWaWV3Q29tcG9uZW50IGV4dGVuZHMgVG9vbGJveEFjdGlvbkNvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG1vZGU6ICdzYXZlQXMnIHwgJ2RpcmVjdFNhdmUnID0gJ3NhdmVBcyc7XG4gIEBWaWV3Q2hpbGQoJ2lucHV0JykgaW5wdXQhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzYXZlQXMnKSBzYXZlQXMhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZGlyZWN0aXZlU2F2ZScpIGRpcmVjdGl2ZVNhdmUhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZmlyc3RGb2N1c2RpcmVjdGl2ZScpIGZpcnN0Rm9jdXNkaXJlY3RpdmUhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3MnKSBjcm9zcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjb25maXJtJykgY29uZmlybSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjYW5jZWwnKSBjYW5jZWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgc2F2ZUFzT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIG92ZXJsYXlSZWZTYXZlQXM/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZVNhdmVBcycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgdGVtcGxhdGVTYXZlQXMhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBvdmVybGF5UmVmRGlyZWN0U2F2ZVR5cGU/OiBPdmVybGF5UmVmO1xuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZURpcmVjdFNhdmVUeXBlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZURpcmVjdFNhdmVUeXBlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgdmlzaWJpbGl0eTogUHJ5VmlzaWJpbGl0eSA9IHsgdHlwZTogUHJ5VmlzaWJpbGl0eVR5cGUuUFJJVkFURSB9O1xuICB0eXBlOiBMaWJyYXJ5VHlwZXMgPSBMaWJyYXJ5VHlwZXMuSUxMVVNUUkFUSU9OO1xuICBzYXZlVHlwZU9wZW5lZCA9IGZhbHNlO1xuICBjdXJyZW50TWFuaWZlc3Q/OiBNYW5pZmVzdERlc2NyaXB0aW9uO1xuICBzYXZlUHJlc2VudGF0aW9uQWN0aXZlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgbmJQYWdlczogbnVtYmVyID0gMDtcbiAgaW5pdGlhbE5iUGFnZXM6IG51bWJlciA9IDA7XG4gIGhhc0luaXRpYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgVmlld01vZGUgPSBWaWV3TW9kZTtcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KERhc2hib2FyZFNlbGVjdG9ycy5wcmVzZW50YXRpb24pLnN1YnNjcmliZSgocHJlc2VudGF0aW9uKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudE1hbmlmZXN0ID0gcHJlc2VudGF0aW9uLmN1cnJlbnRcbiAgICAgICAgICA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocHJlc2VudGF0aW9uLmN1cnJlbnQpKVxuICAgICAgICAgIDogKHsgbmFtZTogJycsIGltYWdlOiAnJywgZGVzY3JpcHRpb246ICcnLCBjb3ZlcjogZmFsc2UgfSBhcyBNYW5pZmVzdERlc2NyaXB0aW9uKTtcbiAgICAgICAgdGhpcy5pbml0aWFsTmJQYWdlcyA9IHByZXNlbnRhdGlvbi5pbml0aWFsPy53aW5kb3dzLmxlbmd0aCA/PyAwO1xuICAgICAgICB0aGlzLmhhc0luaXRpYWwgPSAhIXByZXNlbnRhdGlvbi5pbml0aWFsO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc2F2ZVByZXNlbnRhdGlvbkFjdGl2ZSQgPSB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuc2F2ZVByZXNlbnRhdGlvbkFjdGl2ZSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmVcbiAgICAgICAgLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ2xvYmFsTWFuaWZlc3QpXG4gICAgICAgIC5zdWJzY3JpYmUoKG1hbmlmZXN0KSA9PiAodGhpcy5uYlBhZ2VzID0gbWFuaWZlc3Qud2luZG93cy5sZW5ndGgpKVxuICAgICk7XG4gIH1cblxuICB0b2dnbGVTYXZlQXMoKSB7XG4gICAgdGhpcy5zYXZlQXNPcGVuZWQgPSAhdGhpcy5zYXZlQXNPcGVuZWQ7XG4gICAgaWYgKHRoaXMuc2F2ZUFzT3BlbmVkKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMucmVxdWVzdEFsbFJvdXRlcygpKTtcbiAgICAgIHRoaXMub3BlblNhdmVBcygpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfSwgMTApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZTYXZlQXM/LmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZlNhdmVBcyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMuc2F2ZUFzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5yZXF1ZXN0QWxsUm91dGVzKCkpO1xuXG4gICAgLy8gR2l2ZSB0aW1lIGZvciByb3V0ZXMgdG8gYmUgdXBkYXRlZFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbGV0IHByZXNlbnRhdGlvbiA9IHtcbiAgICAgICAgbmFtZTogdGhpcy5jdXJyZW50TWFuaWZlc3QhLm5hbWUsXG4gICAgICAgIGlkOiB2NCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5jdXJyZW50TWFuaWZlc3QhLmRlc2NyaXB0aW9uLFxuICAgICAgICBpbWFnZTogdGhpcy5jdXJyZW50TWFuaWZlc3QhLmltYWdlLFxuICAgICAgICB2aXNpYmlsaXR5OiB0aGlzLnZpc2liaWxpdHksXG4gICAgICAgIGNvdmVyOiB0aGlzLmN1cnJlbnRNYW5pZmVzdD8uY292ZXIgPz8gZmFsc2VcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5tb2RlID09ICdkaXJlY3RTYXZlJykge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50TWFuaWZlc3QpIHtcbiAgICAgICAgICBwcmVzZW50YXRpb24uaWQgPSB0aGlzLmN1cnJlbnRNYW5pZmVzdC5pZDtcbiAgICAgICAgICBwcmVzZW50YXRpb24udmlzaWJpbGl0eSA9IHRoaXMuY3VycmVudE1hbmlmZXN0LnZpc2liaWxpdHk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goRGFzaGJvYXJkQWN0aW9ucy5zYXZlTWFuaWZlc3QocHJlc2VudGF0aW9uKSk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgICBEYXNoYm9hcmRBY3Rpb25zLnNlbGVjdFByZXNlbnRhdGlvbih7XG4gICAgICAgICAgcHJlc2VudGF0aW9uOiBwcmVzZW50YXRpb24gYXMgTWFuaWZlc3REZXNjcmlwdGlvbixcbiAgICAgICAgICB2aWV3TW9kZTogVmlld01vZGUuQ0FUQUxPR1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMubW9kZSA9ICdkaXJlY3RTYXZlJztcbiAgICB9LCAyMDApO1xuICAgIHRoaXMub3ZlcmxheVJlZlNhdmVBcz8uZGlzcG9zZSgpO1xuICAgIHRoaXMuY2xvc2VNb2RhbHMoKTtcbiAgfVxuXG4gIGNsb3NlTW9kYWxzKCkge1xuICAgIGlmICh0aGlzLnNhdmVUeXBlT3BlbmVkKSB7XG4gICAgICB0aGlzLnRvZ2dsZURpcmVjdFNhdmVUeXBlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnNhdmVBc09wZW5lZCkge1xuICAgICAgdGhpcy50b2dnbGVTYXZlQXMoKTtcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VWaXNpYmlsaXR5KCRldmVudDogUHJ5VmlzaWJpbGl0eSkge1xuICAgIHRoaXMuY3VycmVudE1hbmlmZXN0IS52aXNpYmlsaXR5ID0gJGV2ZW50O1xuICB9XG5cbiAgY2hhbmdlVmFsdWUoJGV2ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLmN1cnJlbnRNYW5pZmVzdCEubmFtZSA9ICRldmVudDtcbiAgfVxuXG4gIGNoYW5nZURlc2NyKCRldmVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50TWFuaWZlc3QhLmRlc2NyaXB0aW9uID0gJGV2ZW50O1xuICB9XG5cbiAgb3BlblNhdmVBcygpIHtcbiAgICB0aGlzLm92ZXJsYXlSZWZTYXZlQXMgPSB0aGlzLm92ZXJsYXkuY3JlYXRlKFxuICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgcGFuZWxDbGFzczogWydvLW1vZGFsLXdyYXBwZXInXSxcbiAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMubW9kZSA9ICdzYXZlQXMnO1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgdGhpcy5vdmVybGF5UmVmU2F2ZUFzLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKF8pID0+IHRoaXMudG9nZ2xlU2F2ZUFzKCkpO1xuICAgIHRoaXMub3ZlcmxheVJlZlNhdmVBcy5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMudGVtcGxhdGVTYXZlQXMsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICB9XG5cbiAgaXNWYWxpZCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5jdXJyZW50TWFuaWZlc3Q/Lm5hbWUgJiYgMCA8IHRoaXMuY3VycmVudE1hbmlmZXN0Py5uYW1lLmxlbmd0aCAmJiB0aGlzLmN1cnJlbnRNYW5pZmVzdD8ubmFtZS5sZW5ndGggPD0gNTBcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlRGlyZWN0U2F2ZVR5cGUoKSB7XG4gICAgdGhpcy5zYXZlVHlwZU9wZW5lZCA9ICF0aGlzLnNhdmVUeXBlT3BlbmVkO1xuICAgIGlmICh0aGlzLnNhdmVUeXBlT3BlbmVkKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMucmVxdWVzdEFsbFJvdXRlcygpKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZkRpcmVjdFNhdmVUeXBlID0gdGhpcy5vdmVybGF5LmNyZWF0ZShcbiAgICAgICAgbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnby1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZEaXJlY3RTYXZlVHlwZS5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKChfKSA9PiB0aGlzLnRvZ2dsZURpcmVjdFNhdmVUeXBlKCkpO1xuICAgICAgdGhpcy5vdmVybGF5UmVmRGlyZWN0U2F2ZVR5cGUuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlRGlyZWN0U2F2ZVR5cGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuZmlyc3RGb2N1c2RpcmVjdGl2ZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB9LCAxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZkRpcmVjdFNhdmVUeXBlPy5kaXNwb3NlKCk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWZEaXJlY3RTYXZlVHlwZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMuZGlyZWN0aXZlU2F2ZS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG11c3RPcGVuTW9kYWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGFzSW5pdGlhbCAmJiB0aGlzLm5iUGFnZXMgIT09IHRoaXMuaW5pdGlhbE5iUGFnZXM7XG4gIH1cblxuICBkaXJlY3RTYXZlKCkge1xuICAgIGlmICh0aGlzLm11c3RPcGVuTW9kYWwpIHtcbiAgICAgIHRoaXMudG9nZ2xlRGlyZWN0U2F2ZVR5cGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zYXZlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzdG9yZSgpIHtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhc2hib2FyZEFjdGlvbnMucmVzdG9yZUluaXRpYWxNYW5pZmVzdCgpKTtcbiAgICB0aGlzLmNsb3NlTW9kYWxzKCk7XG4gIH1cblxuICBmb2N1c0Nyb3NzRWxlbWVudCgpIHtcbiAgICB0aGlzLmNyb3NzLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIGZvY3VzVmFsaWRhdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudE1hbmlmZXN0Py5uYW1lKSB7XG4gICAgICB0aGlzLmNhbmNlbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlybS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICByZW5hbWUoKSB7XG4gICAgdGhpcy50b2dnbGVTYXZlQXMoKTtcbiAgfVxuXG4gIGRpc2FibGVOZXh0U3RlcCgpIHtcbiAgICBpZiAoIXRoaXMuY3VycmVudE1hbmlmZXN0Py5uYW1lKSB7XG4gICAgICB0aGlzLmZvY3VzQ3Jvc3NFbGVtZW50KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ2RpcmVjdFNhdmUnXCI+XG4gIDxkaXZcbiAgICBbcHJ5VG9vbHRpcF09XCJpbmZvVG9vbHRpcERpcmVjdFNhdmVcIlxuICAgIHByeVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJzYXZlVHlwZU9wZW5lZFwiXG4gICAgYXJpYS1jb250cm9scz1cImRpcmVjdGl2ZVNhdmVcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJpbmZvVG9vbHRpcF9kaXJlY3RTYXZlXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgI2RpcmVjdGl2ZVNhdmVcbiAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgLXNpemUtbWRcIlxuICAgICAgKGNsaWNrKT1cImRpcmVjdFNhdmUoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiIShzYXZlUHJlc2VudGF0aW9uQWN0aXZlJCB8IGFzeW5jKVwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlMYWJlbHNcIj57eyAnQHByeS50b29sYm94LnNhdmUnIHwgaTE4biB9fSAoe3sgbmJQYWdlcyB9fSk8L25nLWNvbnRhaW5lcj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09PSAnc2F2ZUFzJ1wiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzYXZlLW1hbmlmZXN0LWNvbnRhaW5lclwiXG4gICAgW3ByeVRvb2x0aXBdPVwiaW5mb1Rvb2x0aXBTYXZlQXNcIlxuICAgIHByeVRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJzYXZlQXNPcGVuZWRcIlxuICAgIGFyaWEtY29udHJvbHM9XCJzYXZlTW9kYWxcIlxuICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJpbmZvVG9vbHRpcF9zYXZlQXNcIlxuICA+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAjc2F2ZUFzXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLXNpemUtbWRcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZVNhdmVBcygpXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJkaWFsb2dcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5TGFiZWxzXCI+e3sgJ0BwcnkudG9vbGJveC5zYXZlVmlldycgfCBpMThuIH19ICh7eyBuYlBhZ2VzIH19KTwvbmctY29udGFpbmVyPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlU2F2ZUFzPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBpZD1cInNhdmVNb2RhbFwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZ19zYXZlTW9kYWxcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCJjbG9zZU1vZGFscygpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnRvb2xib3gucmVuYW1lJyB8IGkxOG4gfX08L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX19jbG9zZVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiICNjcm9zcyAoa2V5ZG93bi5zaGlmdC50YWIpPVwiZm9jdXNWYWxpZGF0aW9uKClcIiAoY2xpY2spPVwidG9nZ2xlU2F2ZUFzKClcIj5cbiAgICAgICAgICA8cHJ5LWljb24gaWNvblN2Zz1cImNsb3NlXCIgW2hlaWdodF09XCIzNVwiIFt3aWR0aF09XCIzNVwiPjwvcHJ5LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1LXZpc3VhbGx5LWhpZGRlblwiPnt7ICdAcHJ5LnRvb2xib3guY2xvc2UnIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8cHJ5LXN0ZXBwZXIgI3N0ZXBwZXI+XG4gICAgICA8cHJ5LXN0ZXA+XG4gICAgICAgIDxoNCBjbGFzcz1cIm0tc3RlcHBlci1pdGVtX190aXRsZVwiICpzdGVwVGl0bGU+e3sgJ0BwcnkucHJlc2VudGF0aW9uLmFkZC5pbmZvJyB8IGkxOG4gfX08L2g0PlxuICAgICAgICA8Zm9ybT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgaWQ9XCJsYWJlbC1uYW1lXCIgZm9yPVwiaW5wdXQtbmFtZVwiPnt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QubmFtZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGlkPVwiaW5wdXQtbmFtZVwiXG4gICAgICAgICAgICAgIG5hbWU9XCJpbnB1dC1uYW1lXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QubmFtZScgfCBpMThuIH19XCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY3VycmVudE1hbmlmZXN0IS5uYW1lXCJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImxhYmVsLW5hbWVcIlxuICAgICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXG4gICAgICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1mb3JtLWxhYmVsLWZpZWxkXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJhLWxhYmVsXCIgaWQ9XCJsYWJlbC1kZXNjclwiIGZvcj1cImlucHV0LWRlc2NyXCI+e3tcbiAgICAgICAgICAgICAgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5kZXNjcmlwdGlvbicgfCBpMThuXG4gICAgICAgICAgICB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBpZD1cImlucHV0LWRlc2NyXCJcbiAgICAgICAgICAgICAgbmFtZT1cImlucHV0LWRlc2NyXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuZGVzY3JpcHRpb24nIHwgaTE4biB9fVwiXG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cImN1cnJlbnRNYW5pZmVzdCEuZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VEZXNjcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwibGFiZWwtbmFtZVwiXG4gICAgICAgICAgICAgIG1heGxlbmd0aD1cIjIwMFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJwcmVzZW50YXRpb25faW1hZ2VcIj57eyAnQHByeS5wcmVzZW50YXRpb24uZm9ybS5pbWFnZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLWZpbGUtaW5wdXRcIj5cbiAgICAgICAgICAgICAgPHByeS1zZWxlY3QtaW1hZ2VcbiAgICAgICAgICAgICAgICBpZD1cInByZXNlbnRhdGlvbl9pbWFnZVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZWQpPVwiY3VycmVudE1hbmlmZXN0IS5pbWFnZSA9ICRldmVudFwiXG4gICAgICAgICAgICAgICAgW2ljb25VcmxdPVwiY3VycmVudE1hbmlmZXN0IS5pbWFnZVwiXG4gICAgICAgICAgICAgICAgW21vZGVdPVwidHlwZVwiXG4gICAgICAgICAgICAgID48L3ByeS1zZWxlY3QtaW1hZ2U+XG4gICAgICAgICAgICAgIDxwcnktY2hlY2tib3ggWyhuZ01vZGVsKV09XCJjdXJyZW50TWFuaWZlc3QhLmNvdmVyXCIgbmFtZT1cImNvdmVyXCI+XG4gICAgICAgICAgICAgICAge3sgJ0BwcnkucHJlc2VudGF0aW9uLmZvcm0uY292ZXInIHwgaTE4biB9fVxuICAgICAgICAgICAgICA8L3ByeS1jaGVja2JveD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAjY2FuY2VsXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTYXZlQXMoKVwiXG4gICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJkaXNhYmxlTmV4dFN0ZXAoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdAcHJ5LnRvb2xib3gubWFuaWZlc3QuY2xvc2UnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInN0ZXBwZXIubmV4dCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc1ZhbGlkKClcIlxuICAgICAgICAgICAgICAoa2V5ZG93bi50YWIpPVwiZm9jdXNDcm9zc0VsZW1lbnQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7ICdAcHJ5LmFjdGlvbi5uZXh0JyB8IGkxOG4gfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L3ByeS1zdGVwPlxuICAgICAgPHByeS1zdGVwPlxuICAgICAgICA8aDQgY2xhc3M9XCJtLXN0ZXBwZXItaXRlbV9fdGl0bGVcIiAqc3RlcFRpdGxlPnt7ICdAcHJ5LnJlc3RpdHV0aW9uLmJyb2FkY2FzdCcgfCBpMThuIH19PC9oND5cbiAgICAgICAgPHByeS1zaGFyZSBbKG5nTW9kZWwpXT1cInZpc2liaWxpdHlcIiAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VWaXNpYmlsaXR5KCRldmVudClcIj48L3ByeS1zaGFyZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tYnRuLWdyb3VwXCI+XG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cInN0ZXBwZXIucHJldigpXCI+XG4gICAgICAgICAgICB7eyAnQHByeS5hY3Rpb24uYmFjaycgfCBpMThuIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCJcbiAgICAgICAgICAgICNjb25maXJtXG4gICAgICAgICAgICAoY2xpY2spPVwic2F2ZSgpXCJcbiAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJmb2N1c0Nyb3NzRWxlbWVudCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnQHByeS5yZXN0aXR1dGlvbi5icm9hZGNhc3QnIHwgaTE4biB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcHJ5LXN0ZXA+XG4gICAgPC9wcnktc3RlcHBlcj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2luZm9Ub29sdGlwU2F2ZUFzPlxuICA8ZGl2IGNsYXNzPVwibS10b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIiBpZD1cImluZm9Ub29sdGlwX3NhdmVBc1wiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+e3sgJ0BwcnkudG9vbGJveC5yZW5hbWUnIHwgaTE4biB9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNpbmZvVG9vbHRpcERpcmVjdFNhdmU+XG4gIDxkaXYgY2xhc3M9XCJtLXRvb2x0aXBcIiByb2xlPVwidG9vbHRpcFwiIGlkPVwiaW5mb1Rvb2x0aXBfZGlyZWN0U2F2ZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwibS10b29sdGlwX190ZXh0XCI+e3sgJ0BwcnkudG9vbGJveC5zYXZlJyB8IGkxOG4gfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZURpcmVjdFNhdmVUeXBlPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvLW1vZGFsXCJcbiAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICBpZD1cImRpcmVjdGl2ZVNhdmVcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZ190aXRsZVwiXG4gICAgKGtleWRvd24uZXNjYXBlKT1cImNsb3NlTW9kYWxzKClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fdGl0bGVcIj5cbiAgICAgICAgPGgyIGNsYXNzPVwiYS1oMlwiIGlkPVwiZGlhbG9nX3RpdGxlX1wiPnt7ICdAcHJ5LnRvb2xib3guc2F2ZScgfCBpMThuIH19PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIiAjZmlyc3RGb2N1c2RpcmVjdGl2ZSAoY2xpY2spPVwidG9nZ2xlRGlyZWN0U2F2ZVR5cGUoKVwiPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbaGVpZ2h0XT1cIjM1XCIgW3dpZHRoXT1cIjM1XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8aDM+e3sgJ0Bwcnkuc25hY2sucGFnZXNDaGFuZ2VkJyB8IGkxOG4gfX08L2gzPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cInNhdmUoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94LnNhdmUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwicmVuYW1lKClcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5yZW5hbWUnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAoY2xpY2spPVwicmVzdG9yZSgpXCIgKGtleWRvd24udGFiKT1cImNsb3NlTW9kYWxzKClcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5yZXN0b3JlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
2
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
3
|
-
import { Component,
|
|
4
|
-
import { ConfigActions, DashboardActions, DashboardGridLayout, DashboardSelectors,
|
|
3
|
+
import { Component, TemplateRef, ViewChild } from '@angular/core';
|
|
4
|
+
import { ConfigActions, DashboardActions, DashboardGridLayout, DashboardSelectors, WidgetPlacementUtils } from '@provoly/dashboard';
|
|
5
5
|
import { map } from 'rxjs/operators';
|
|
6
|
+
import { ToolboxActionComponent } from '../toolbox-action/toolbox-action.component';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "@ngrx/store";
|
|
8
9
|
import * as i2 from "@angular/cdk/overlay";
|
|
9
10
|
import * as i3 from "@angular/common";
|
|
10
11
|
import * as i4 from "@provoly/dashboard";
|
|
11
12
|
import * as i5 from "../../style/css.component";
|
|
12
|
-
export class SelectGridLayoutComponent extends
|
|
13
|
+
export class SelectGridLayoutComponent extends ToolboxActionComponent {
|
|
13
14
|
constructor(store, overlay, viewContainerRef) {
|
|
14
|
-
super();
|
|
15
|
-
this.store = store;
|
|
15
|
+
super(store);
|
|
16
16
|
this.overlay = overlay;
|
|
17
17
|
this.viewContainerRef = viewContainerRef;
|
|
18
|
-
this.label = true;
|
|
19
18
|
this.chosenLayout = DashboardGridLayout.MANUAL;
|
|
20
19
|
this.canDispatch = false;
|
|
21
20
|
this.modalOpened = false;
|
|
@@ -83,14 +82,12 @@ export class SelectGridLayoutComponent extends SubscriptionnerDirective {
|
|
|
83
82
|
this.confirm.nativeElement.focus();
|
|
84
83
|
}
|
|
85
84
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SelectGridLayoutComponent, deps: [{ token: i1.Store }, { token: i2.Overlay }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
86
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SelectGridLayoutComponent, selector: "pry-select-grid-layout",
|
|
85
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: SelectGridLayoutComponent, selector: "pry-select-grid-layout", viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true, read: TemplateRef }, { propertyName: "firstButton", first: true, predicate: ["firstButton"], descendants: true }, { propertyName: "openModal", first: true, predicate: ["openModal"], descendants: true }, { propertyName: "cross", first: true, predicate: ["cross"], descendants: true }, { propertyName: "confirm", first: true, predicate: ["confirm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-toolbox-css></pry-toolbox-css>\n<div [attr.aria-expanded]=\"modalOpened\" aria-controls=\"grid-layout\">\n <button type=\"button\" #openModal class=\"a-btn a-btn--secondary -size-md\" (click)=\"toggleGridChoiceModal()\">\n <ng-container *ngIf=\"displayLabels\">\n {{ '@pry.toolbox.chooseGrid' | i18n }}\n </ng-container>\n </button>\n</div>\n<ng-template #template>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_title\"\n id=\"grid-layout\"\n (keydown.escape)=\"toggleGridChoiceModal()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.chooseGrid' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleGridChoiceModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"o-select-grid-layout-wrapper\">\n <ul class=\"o-select-grid-layout\">\n <li *ngFor=\"let layout of availableLayouts$ | async\" class=\"o-select-grid-layout__item\">\n <button\n type=\"button\"\n #firstButton\n class=\"a-btn\"\n [attr.aria-pressed]=\"chosenLayout === layout.value\"\n [class.selected]=\"chosenLayout === layout.value\"\n (click)=\"changeLayout(layout.value)\"\n >\n <div class=\"u-txt-center\">\n <img [src]=\"layout.image\" />\n <strong>{{ layout.translation | i18n }}</strong>\n </div>\n <p class=\"a-p\">\n {{ layout.translation + '_detailled' | i18n }}\n </p>\n </button>\n </li>\n </ul>\n </div>\n <div class=\"m-btn-group -space-evenly\">\n <button (click)=\"toggleGridChoiceModal()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button (click)=\"validate()\" class=\"a-btn a-btn--primary\" #confirm (keydown.tab)=\"focusCrossElement()\">\n {{ '@pry.toolbox.manifest.validated' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PrySelectGridLayoutCssComponent, selector: "pry-toolbox-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }] }); }
|
|
87
86
|
}
|
|
88
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: SelectGridLayoutComponent, decorators: [{
|
|
89
88
|
type: Component,
|
|
90
|
-
args: [{ selector: 'pry-select-grid-layout', template: "<pry-
|
|
91
|
-
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: {
|
|
92
|
-
type: Input
|
|
93
|
-
}], template: [{
|
|
89
|
+
args: [{ selector: 'pry-select-grid-layout', template: "<pry-toolbox-css></pry-toolbox-css>\n<div [attr.aria-expanded]=\"modalOpened\" aria-controls=\"grid-layout\">\n <button type=\"button\" #openModal class=\"a-btn a-btn--secondary -size-md\" (click)=\"toggleGridChoiceModal()\">\n <ng-container *ngIf=\"displayLabels\">\n {{ '@pry.toolbox.chooseGrid' | i18n }}\n </ng-container>\n </button>\n</div>\n<ng-template #template>\n <div\n class=\"o-modal\"\n (click)=\"$event.stopPropagation()\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"dialog_title\"\n id=\"grid-layout\"\n (keydown.escape)=\"toggleGridChoiceModal()\"\n >\n <div class=\"o-modal__top\">\n <div class=\"o-modal__top__title\">\n <h2 class=\"a-h2\" id=\"dialog_title\">{{ '@pry.toolbox.chooseGrid' | i18n }}</h2>\n </div>\n <div class=\"o-modal__top__close\">\n <button\n class=\"a-btn a-btn--icon-only\"\n #cross\n (keydown.shift.tab)=\"focusValidation()\"\n (click)=\"toggleGridChoiceModal()\"\n >\n <pry-icon iconSvg=\"close\" [height]=\"35\" [width]=\"35\"></pry-icon>\n <span class=\"u-visually-hidden\">{{ '@pry.toolbox.close' | i18n }}</span>\n </button>\n </div>\n </div>\n <div class=\"o-select-grid-layout-wrapper\">\n <ul class=\"o-select-grid-layout\">\n <li *ngFor=\"let layout of availableLayouts$ | async\" class=\"o-select-grid-layout__item\">\n <button\n type=\"button\"\n #firstButton\n class=\"a-btn\"\n [attr.aria-pressed]=\"chosenLayout === layout.value\"\n [class.selected]=\"chosenLayout === layout.value\"\n (click)=\"changeLayout(layout.value)\"\n >\n <div class=\"u-txt-center\">\n <img [src]=\"layout.image\" />\n <strong>{{ layout.translation | i18n }}</strong>\n </div>\n <p class=\"a-p\">\n {{ layout.translation + '_detailled' | i18n }}\n </p>\n </button>\n </li>\n </ul>\n </div>\n <div class=\"m-btn-group -space-evenly\">\n <button (click)=\"toggleGridChoiceModal()\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.toolbox.manifest.close' | i18n }}\n </button>\n <button (click)=\"validate()\" class=\"a-btn a-btn--primary\" #confirm (keydown.tab)=\"focusCrossElement()\">\n {{ '@pry.toolbox.manifest.validated' | i18n }}\n </button>\n </div>\n </div>\n</ng-template>\n" }]
|
|
90
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.Overlay }, { type: i0.ViewContainerRef }]; }, propDecorators: { template: [{
|
|
94
91
|
type: ViewChild,
|
|
95
92
|
args: ['template', { read: TemplateRef }]
|
|
96
93
|
}], firstButton: [{
|
|
@@ -106,4 +103,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
106
103
|
type: ViewChild,
|
|
107
104
|
args: ['confirm']
|
|
108
105
|
}] } });
|
|
109
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zZWxlY3QtZ3JpZC1sYXlvdXQvc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zZWxlY3QtZ3JpZC1sYXlvdXQvc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBYyxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFdkcsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQix3QkFBd0IsRUFDeEIsb0JBQW9CLEVBQ3JCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBTXJDLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSx3QkFBd0I7SUFhckUsWUFDVSxLQUFZLEVBQ1osT0FBZ0IsRUFDaEIsZ0JBQWtDO1FBRTFDLEtBQUssRUFBRSxDQUFDO1FBSkEsVUFBSyxHQUFMLEtBQUssQ0FBTztRQUNaLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWZuQyxVQUFLLEdBQUcsSUFBSSxDQUFDO1FBRXRCLGlCQUFZLEdBQXdCLG1CQUFtQixDQUFDLE1BQU0s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LHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx3QkFBd0I7aUpBSXpCLEtBQUs7c0JBQWIsS0FBSztnQkFJd0MsUUFBUTtzQkFBckQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUNsQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBQ0EsU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUNGLEtBQUs7c0JBQXhCLFNBQVM7dUJBQUMsT0FBTztnQkFDSSxPQUFPO3NCQUE1QixTQUFTO3VCQUFDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlnQWN0aW9ucyxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUsXG4gIFdpZGdldFBsYWNlbWVudFV0aWxzXG59IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1zZWxlY3QtZ3JpZC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RHcmlkTGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgbGFiZWwgPSB0cnVlO1xuICBhdmFpbGFibGVMYXlvdXRzJDogT2JzZXJ2YWJsZTx7IHRyYW5zbGF0aW9uOiBhbnk7IHZhbHVlOiBhbnk7IGltYWdlOiBzdHJpbmcgfVtdPjtcbiAgY2hvc2VuTGF5b3V0OiBEYXNoYm9hcmRHcmlkTGF5b3V0ID0gRGFzaGJvYXJkR3JpZExheW91dC5NQU5VQUw7XG4gIGNhbkRpc3BhdGNoID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSB0ZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBWaWV3Q2hpbGQoJ2ZpcnN0QnV0dG9uJykgZmlyc3RCdXR0b24hOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnb3Blbk1vZGFsJykgb3Blbk1vZGFsITogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Nyb3NzJykgY3Jvc3MhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY29uZmlybScpIGNvbmZpcm0hOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgbW9kYWxPcGVuZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZlxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCkuc3Vic2NyaWJlKChsYXlvdXQpID0+ICh0aGlzLmNob3NlbkxheW91dCA9IGxheW91dCkpXG4gICAgKTtcbiAgICB0aGlzLmF2YWlsYWJsZUxheW91dHMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KS5waXBlKFxuICAgICAgbWFwKChtYW5pZmVzdCkgPT5cbiAgICAgICAgV2lkZ2V0UGxhY2VtZW50VXRpbHMuZ2V0TGF5b3V0cygpXG4gICAgICAgICAgLmZpbHRlcigobGF5b3V0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VzRm9yTGF5b3V0KGxheW91dC5rZXkpID49IChtYW5pZmVzdC53aWRnZXRzID8/IFtdKS5sZW5ndGg7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAubWFwKChsYXlvdXQpID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogbGF5b3V0LmtleSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uOiAnQHByeS50b29sYm94LmxheW91dC4nICsgbGF5b3V0LmtleSxcbiAgICAgICAgICAgIGltYWdlOiBsYXlvdXQuaW1hZ2VcbiAgICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbkRpc3BhdGNoID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgY2hhbmdlTGF5b3V0KGxheW91dDogRGFzaGJvYXJkR3JpZExheW91dCkge1xuICAgIHRoaXMuY2hvc2VuTGF5b3V0ID0gbGF5b3V0O1xuICB9XG5cbiAgdG9nZ2xlR3JpZENob2ljZU1vZGFsKCkge1xuICAgIHRoaXMubW9kYWxPcGVuZWQgPSAhdGhpcy5tb2RhbE9wZW5lZDtcbiAgICBpZiAodGhpcy5tb2RhbE9wZW5lZCkge1xuICAgICAgdGhpcy5vcGVuV2l0aFRlbXBsYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgICAgdGhpcy5vcGVuTW9kYWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5XaXRoVGVtcGxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMubW9kYWxPcGVuZWQgPSAhdGhpcy5tb2RhbE9wZW5lZDtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlcicsICdvLXNlbGVjdC1ncmlkLWxheW91dC1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVHcmlkQ2hvaWNlTW9kYWwoKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpcnN0QnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMub3Blbk1vZGFsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMubW9kYWxPcGVuZWQgPSAhdGhpcy5tb2RhbE9wZW5lZDtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5jYW5EaXNwYXRjaCkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNldEdyaWRMYXlvdXQoeyBsYXlvdXQ6IHRoaXMuY2hvc2VuTGF5b3V0IH0pKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVHcmlkQ2hvaWNlTW9kYWwoKTtcbiAgfVxuXG4gIGZvY3VzQ3Jvc3NFbGVtZW50KCkge1xuICAgIHRoaXMuY3Jvc3MubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZm9jdXNWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuY29uZmlybS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxwcnktc2VsZWN0LWdyaWQtbGF5b3V0LWNzcz48L3ByeS1zZWxlY3QtZ3JpZC1sYXlvdXQtY3NzPlxuPGRpdiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cIm1vZGFsT3BlbmVkXCIgYXJpYS1jb250cm9scz1cImdyaWQtbGF5b3V0XCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNvcGVuTW9kYWwgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IC1zaXplLW1kXCIgKGNsaWNrKT1cInRvZ2dsZUdyaWRDaG9pY2VNb2RhbCgpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxhYmVsXCI+XG4gICAgICB7eyAnQHByeS50b29sYm94LmNob29zZUdyaWQnIHwgaTE4biB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwiby1tb2RhbFwiXG4gICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgYXJpYS1tb2RhbD1cInRydWVcIlxuICAgIGFyaWEtbGFiZWxsZWRieT1cImRpYWxvZ190aXRsZVwiXG4gICAgaWQ9XCJncmlkLWxheW91dFwiXG4gICAgKGtleWRvd24uZXNjYXBlKT1cInRvZ2dsZUdyaWRDaG9pY2VNb2RhbCgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX3RpdGxlXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImEtaDJcIiBpZD1cImRpYWxvZ190aXRsZVwiPnt7ICdAcHJ5LnRvb2xib3guY2hvb3NlR3JpZCcgfCBpMThuIH19PC9oMj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tbW9kYWxfX3RvcF9fY2xvc2VcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgICAgICAgI2Nyb3NzXG4gICAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cImZvY3VzVmFsaWRhdGlvbigpXCJcbiAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlR3JpZENob2ljZU1vZGFsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJjbG9zZVwiIFtoZWlnaHRdPVwiMzVcIiBbd2lkdGhdPVwiMzVcIj48L3ByeS1pY29uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS50b29sYm94LmNsb3NlJyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm8tc2VsZWN0LWdyaWQtbGF5b3V0LXdyYXBwZXJcIj5cbiAgICAgIDx1bCBjbGFzcz1cIm8tc2VsZWN0LWdyaWQtbGF5b3V0XCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbGF5b3V0IG9mIGF2YWlsYWJsZUxheW91dHMkIHwgYXN5bmNcIiBjbGFzcz1cIm8tc2VsZWN0LWdyaWQtbGF5b3V0X19pdGVtXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAjZmlyc3RCdXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYS1idG5cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImNob3NlbkxheW91dCA9PT0gbGF5b3V0LnZhbHVlXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJjaG9zZW5MYXlvdXQgPT09IGxheW91dC52YWx1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlTGF5b3V0KGxheW91dC52YWx1ZSlcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1LXR4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImxheW91dC5pbWFnZVwiIC8+XG4gICAgICAgICAgICAgIDxzdHJvbmc+e3sgbGF5b3V0LnRyYW5zbGF0aW9uIHwgaTE4biB9fTwvc3Ryb25nPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImEtcFwiPlxuICAgICAgICAgICAgICB7eyBsYXlvdXQudHJhbnNsYXRpb24gKyAnX2RldGFpbGxlZCcgfCBpMThuIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtLWJ0bi1ncm91cCAtc3BhY2UtZXZlbmx5XCI+XG4gICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVHcmlkQ2hvaWNlTW9kYWwoKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LmNsb3NlJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidmFsaWRhdGUoKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnlcIiAjY29uZmlybSAoa2V5ZG93bi50YWIpPVwiZm9jdXNDcm9zc0VsZW1lbnQoKVwiPlxuICAgICAgICB7eyAnQHByeS50b29sYm94Lm1hbmlmZXN0LnZhbGlkYXRlZCcgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zZWxlY3QtZ3JpZC1sYXlvdXQvc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy9zZWxlY3QtZ3JpZC1sYXlvdXQvc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQ0wsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLG9CQUFvQixFQUNyQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQzs7Ozs7OztBQU1wRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsc0JBQXNCO0lBWW5FLFlBQVksS0FBWSxFQUFVLE9BQWdCLEVBQVUsZ0JBQWtDO1FBQzVGLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQURtQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVY5RixpQkFBWSxHQUF3QixtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFDL0QsZ0JBQVcsR0FB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K0JBQ0Usd0JBQXdCO2lKQU9ZLFFBQVE7c0JBQXJELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDbEIsV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhO2dCQUNBLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDRixLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ0ksT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ29uZmlnQWN0aW9ucyxcbiAgRGFzaGJvYXJkQWN0aW9ucyxcbiAgRGFzaGJvYXJkR3JpZExheW91dCxcbiAgRGFzaGJvYXJkU2VsZWN0b3JzLFxuICBXaWRnZXRQbGFjZW1lbnRVdGlsc1xufSBmcm9tICdAcHJvdm9seS9kYXNoYm9hcmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVG9vbGJveEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3Rvb2xib3gtYWN0aW9uL3Rvb2xib3gtYWN0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1zZWxlY3QtZ3JpZC1sYXlvdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWdyaWQtbGF5b3V0LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RHcmlkTGF5b3V0Q29tcG9uZW50IGV4dGVuZHMgVG9vbGJveEFjdGlvbkNvbXBvbmVudCB7XG4gIGF2YWlsYWJsZUxheW91dHMkOiBPYnNlcnZhYmxlPHsgdHJhbnNsYXRpb246IGFueTsgdmFsdWU6IGFueTsgaW1hZ2U6IHN0cmluZyB9W10+O1xuICBjaG9zZW5MYXlvdXQ6IERhc2hib2FyZEdyaWRMYXlvdXQgPSBEYXNoYm9hcmRHcmlkTGF5b3V0Lk1BTlVBTDtcbiAgY2FuRGlzcGF0Y2ggPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgndGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnZmlyc3RCdXR0b24nKSBmaXJzdEJ1dHRvbiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdvcGVuTW9kYWwnKSBvcGVuTW9kYWwhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnY3Jvc3MnKSBjcm9zcyE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdjb25maXJtJykgY29uZmlybSE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBtb2RhbE9wZW5lZDogYm9vbGVhbiA9IGZhbHNlO1xuICBvdmVybGF5UmVmPzogT3ZlcmxheVJlZjtcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN0b3JlLnNlbGVjdChEYXNoYm9hcmRTZWxlY3RvcnMuZ3JpZExheW91dCkuc3Vic2NyaWJlKChsYXlvdXQpID0+ICh0aGlzLmNob3NlbkxheW91dCA9IGxheW91dCkpXG4gICAgKTtcbiAgICB0aGlzLmF2YWlsYWJsZUxheW91dHMkID0gdGhpcy5zdG9yZS5zZWxlY3QoRGFzaGJvYXJkU2VsZWN0b3JzLndpbmRvd01hbmlmZXN0KS5waXBlKFxuICAgICAgbWFwKChtYW5pZmVzdCkgPT5cbiAgICAgICAgV2lkZ2V0UGxhY2VtZW50VXRpbHMuZ2V0TGF5b3V0cygpXG4gICAgICAgICAgLmZpbHRlcigobGF5b3V0KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gV2lkZ2V0UGxhY2VtZW50VXRpbHMucGxhY2VzRm9yTGF5b3V0KGxheW91dC5rZXkpID49IChtYW5pZmVzdC53aWRnZXRzID8/IFtdKS5sZW5ndGg7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAubWFwKChsYXlvdXQpID0+ICh7XG4gICAgICAgICAgICB2YWx1ZTogbGF5b3V0LmtleSxcbiAgICAgICAgICAgIHRyYW5zbGF0aW9uOiAnQHByeS50b29sYm94LmxheW91dC4nICsgbGF5b3V0LmtleSxcbiAgICAgICAgICAgIGltYWdlOiBsYXlvdXQuaW1hZ2VcbiAgICAgICAgICB9KSlcbiAgICAgIClcbiAgICApO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNhbkRpc3BhdGNoID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgY2hhbmdlTGF5b3V0KGxheW91dDogRGFzaGJvYXJkR3JpZExheW91dCkge1xuICAgIHRoaXMuY2hvc2VuTGF5b3V0ID0gbGF5b3V0O1xuICB9XG5cbiAgdG9nZ2xlR3JpZENob2ljZU1vZGFsKCkge1xuICAgIHRoaXMubW9kYWxPcGVuZWQgPSAhdGhpcy5tb2RhbE9wZW5lZDtcbiAgICBpZiAodGhpcy5tb2RhbE9wZW5lZCkge1xuICAgICAgdGhpcy5vcGVuV2l0aFRlbXBsYXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChDb25maWdBY3Rpb25zLmNsb3NlT3ZlcmxheSh7IGlkOiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgfSkpO1xuICAgICAgdGhpcy5vcGVuTW9kYWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5XaXRoVGVtcGxhdGUoKSB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMubW9kYWxPcGVuZWQgPSAhdGhpcy5tb2RhbE9wZW5lZDtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoXG4gICAgICAgIG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgICAgICBwYW5lbENsYXNzOiBbJ28tbW9kYWwtd3JhcHBlcicsICdvLXNlbGVjdC1ncmlkLWxheW91dC1tb2RhbC13cmFwcGVyJ10sXG4gICAgICAgICAgYmFja2Ryb3BDbGFzczogJ2JhY2tkcm9wJ1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5hZGRpbmdPdmVybGF5KHsgaWQ6IHRoaXMuY29uc3RydWN0b3IubmFtZSB9KSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoXykgPT4gdGhpcy50b2dnbGVHcmlkQ2hvaWNlTW9kYWwoKSk7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmZpcnN0QnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH0sIDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goQ29uZmlnQWN0aW9ucy5jbG9zZU92ZXJsYXkoeyBpZDogdGhpcy5jb25zdHJ1Y3Rvci5uYW1lIH0pKTtcbiAgICAgIHRoaXMub3Blbk1vZGFsLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMubW9kYWxPcGVuZWQgPSAhdGhpcy5tb2RhbE9wZW5lZDtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZSgpIHtcbiAgICBpZiAodGhpcy5jYW5EaXNwYXRjaCkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChEYXNoYm9hcmRBY3Rpb25zLnNldEdyaWRMYXlvdXQoeyBsYXlvdXQ6IHRoaXMuY2hvc2VuTGF5b3V0IH0pKTtcbiAgICB9XG4gICAgdGhpcy50b2dnbGVHcmlkQ2hvaWNlTW9kYWwoKTtcbiAgfVxuXG4gIGZvY3VzQ3Jvc3NFbGVtZW50KCkge1xuICAgIHRoaXMuY3Jvc3MubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZm9jdXNWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuY29uZmlybS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cbn1cbiIsIjxwcnktdG9vbGJveC1jc3M+PC9wcnktdG9vbGJveC1jc3M+XG48ZGl2IFthdHRyLmFyaWEtZXhwYW5kZWRdPVwibW9kYWxPcGVuZWRcIiBhcmlhLWNvbnRyb2xzPVwiZ3JpZC1sYXlvdXRcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgI29wZW5Nb2RhbCBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnkgLXNpemUtbWRcIiAoY2xpY2spPVwidG9nZ2xlR3JpZENob2ljZU1vZGFsKClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheUxhYmVsc1wiPlxuICAgICAge3sgJ0BwcnkudG9vbGJveC5jaG9vc2VHcmlkJyB8IGkxOG4gfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjdGVtcGxhdGU+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm8tbW9kYWxcIlxuICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgIHJvbGU9XCJkaWFsb2dcIlxuICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICBhcmlhLWxhYmVsbGVkYnk9XCJkaWFsb2dfdGl0bGVcIlxuICAgIGlkPVwiZ3JpZC1sYXlvdXRcIlxuICAgIChrZXlkb3duLmVzY2FwZSk9XCJ0b2dnbGVHcmlkQ2hvaWNlTW9kYWwoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiby1tb2RhbF9fdG9wX190aXRsZVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJhLWgyXCIgaWQ9XCJkaWFsb2dfdGl0bGVcIj57eyAnQHByeS50b29sYm94LmNob29zZUdyaWQnIHwgaTE4biB9fTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvLW1vZGFsX190b3BfX2Nsb3NlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgICAgICNjcm9zc1xuICAgICAgICAgIChrZXlkb3duLnNoaWZ0LnRhYik9XCJmb2N1c1ZhbGlkYXRpb24oKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUdyaWRDaG9pY2VNb2RhbCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwcnktaWNvbiBpY29uU3ZnPVwiY2xvc2VcIiBbaGVpZ2h0XT1cIjM1XCIgW3dpZHRoXT1cIjM1XCI+PC9wcnktaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0BwcnkudG9vbGJveC5jbG9zZScgfCBpMThuIH19PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLXNlbGVjdC1ncmlkLWxheW91dC13cmFwcGVyXCI+XG4gICAgICA8dWwgY2xhc3M9XCJvLXNlbGVjdC1ncmlkLWxheW91dFwiPlxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGxheW91dCBvZiBhdmFpbGFibGVMYXlvdXRzJCB8IGFzeW5jXCIgY2xhc3M9XCJvLXNlbGVjdC1ncmlkLWxheW91dF9faXRlbVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgI2ZpcnN0QnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImEtYnRuXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcHJlc3NlZF09XCJjaG9zZW5MYXlvdXQgPT09IGxheW91dC52YWx1ZVwiXG4gICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiY2hvc2VuTGF5b3V0ID09PSBsYXlvdXQudmFsdWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUxheW91dChsYXlvdXQudmFsdWUpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidS10eHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJsYXlvdXQuaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICA8c3Ryb25nPnt7IGxheW91dC50cmFuc2xhdGlvbiB8IGkxOG4gfX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJhLXBcIj5cbiAgICAgICAgICAgICAge3sgbGF5b3V0LnRyYW5zbGF0aW9uICsgJ19kZXRhaWxsZWQnIHwgaTE4biB9fVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibS1idG4tZ3JvdXAgLXNwYWNlLWV2ZW5seVwiPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlR3JpZENob2ljZU1vZGFsKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC5jbG9zZScgfCBpMThuIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKGNsaWNrKT1cInZhbGlkYXRlKClcIiBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5XCIgI2NvbmZpcm0gKGtleWRvd24udGFiKT1cImZvY3VzQ3Jvc3NFbGVtZW50KClcIj5cbiAgICAgICAge3sgJ0BwcnkudG9vbGJveC5tYW5pZmVzdC52YWxpZGF0ZWQnIHwgaTE4biB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { SubscriptionnerDirective } from '@provoly/dashboard';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ngrx/store";
|
|
5
|
+
export class ToolboxActionComponent extends SubscriptionnerDirective {
|
|
6
|
+
constructor(store) {
|
|
7
|
+
super();
|
|
8
|
+
this.store = store;
|
|
9
|
+
this.displayLabels = true;
|
|
10
|
+
this.closeOptions = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ToolboxActionComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ToolboxActionComponent, selector: "pry-toolbox-action", inputs: { displayLabels: "displayLabels" }, outputs: { closeOptions: "closeOptions" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ToolboxActionComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{
|
|
18
|
+
selector: 'pry-toolbox-action',
|
|
19
|
+
template: ''
|
|
20
|
+
}]
|
|
21
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { displayLabels: [{
|
|
22
|
+
type: Input
|
|
23
|
+
}], closeOptions: [{
|
|
24
|
+
type: Output
|
|
25
|
+
}] } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC1hY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvdG9vbGJveC9jb21wb25lbnRzL3Rvb2xib3gtYWN0aW9uL3Rvb2xib3gtYWN0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFNOUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHdCQUF3QjtJQUlsRSxZQUFzQixLQUFZO1FBQ2hDLEtBQUssRUFBRSxDQUFDO1FBRFksVUFBSyxHQUFMLEtBQUssQ0FBTztRQUh6QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNwQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJbEQsQ0FBQzs4R0FOVSxzQkFBc0I7a0dBQXRCLHNCQUFzQix3S0FGdkIsRUFBRTs7MkZBRUQsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxFQUFFO2lCQUNiOzRGQUVVLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS10b29sYm94LWFjdGlvbicsXG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBUb29sYm94QWN0aW9uQ29tcG9uZW50IGV4dGVuZHMgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIHtcbiAgQElucHV0KCkgZGlzcGxheUxhYmVscyA9IHRydWU7XG4gIEBPdXRwdXQoKSBjbG9zZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHN0b3JlOiBTdG9yZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Component, ViewContainerRef, Input, ViewChild, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { SubscriptionnerDirective } from '@provoly/dashboard';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@ngrx/store";
|
|
5
|
+
export class ToolboxActionInstanciatorComponent extends SubscriptionnerDirective {
|
|
6
|
+
constructor(store, _cd) {
|
|
7
|
+
super();
|
|
8
|
+
this.store = store;
|
|
9
|
+
this._cd = _cd;
|
|
10
|
+
this.displayLabels = true;
|
|
11
|
+
this.closeOptions = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
ngAfterViewInit() {
|
|
14
|
+
if (this.action.visible) {
|
|
15
|
+
const componentRef = this.actionContainerRef.createComponent(this.action.component);
|
|
16
|
+
this.subscriptions.add(componentRef.instance.closeOptions.subscribe((_) => this.closeOptions.emit()));
|
|
17
|
+
componentRef.instance.displayLabels = this.displayLabels;
|
|
18
|
+
componentRef.location.nativeElement.style.zIndex = 2;
|
|
19
|
+
if (this.action.name === 'default_size') {
|
|
20
|
+
componentRef.location.nativeElement.classList.add('is-screen-size-select');
|
|
21
|
+
}
|
|
22
|
+
if (this.action.name === 'save_view') {
|
|
23
|
+
componentRef.instance.mode = 'directSave';
|
|
24
|
+
}
|
|
25
|
+
this._cd.detectChanges();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ToolboxActionInstanciatorComponent, deps: [{ token: i1.Store }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
29
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: ToolboxActionInstanciatorComponent, selector: "pry-toolbox-action-instanciator", inputs: { action: "action", displayLabels: "displayLabels" }, outputs: { closeOptions: "closeOptions" }, viewQueries: [{ propertyName: "actionContainerRef", first: true, predicate: ["actionContainerRef"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<ng-template #actionContainerRef></ng-template>\n" }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: ToolboxActionInstanciatorComponent, decorators: [{
|
|
32
|
+
type: Component,
|
|
33
|
+
args: [{ selector: 'pry-toolbox-action-instanciator', template: "<ng-template #actionContainerRef></ng-template>\n" }]
|
|
34
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { action: [{
|
|
35
|
+
type: Input
|
|
36
|
+
}], displayLabels: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}], closeOptions: [{
|
|
39
|
+
type: Output
|
|
40
|
+
}], actionContainerRef: [{
|
|
41
|
+
type: ViewChild,
|
|
42
|
+
args: ['actionContainerRef', { read: ViewContainerRef }]
|
|
43
|
+
}] } });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy90b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3IvdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3Rvb2xib3gvY29tcG9uZW50cy90b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3IvdG9vbGJveC1hY3Rpb24taW5zdGFuY2lhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBTTlELE1BQU0sT0FBTyxrQ0FBbUMsU0FBUSx3QkFBd0I7SUFPOUUsWUFBb0IsS0FBaUIsRUFBVSxHQUFzQjtRQUNuRSxLQUFLLEVBQUUsQ0FBQztRQURVLFVBQUssR0FBTCxLQUFLLENBQVk7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUw1RCxrQkFBYSxHQUFZLElBQUksQ0FBQztRQUM3QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFNbEQsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQXlCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0RyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3pELFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBRXJELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFO2dCQUN2QyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7YUFDNUU7WUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtnQkFDbkMsWUFBWSxDQUFDLFFBQThCLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQzthQUNsRTtZQUVELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzhHQTVCVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyxxUkFLSixnQkFBZ0Isb0RDekIzRCxtREFDQTs7MkZEbUJhLGtDQUFrQztrQkFKOUMsU0FBUzsrQkFDRSxpQ0FBaUM7NEhBSWxDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBRXNELGtCQUFrQjtzQkFBOUUsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBUb29sYm94QWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbGJveC1hY3Rpb24vdG9vbGJveC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNhdmVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vc2F2ZS12aWV3L3NhdmUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbGJveEFjdGlvbiB9IGZyb20gJy4uLy4uL3Rvb2xib3gubW9kZWwnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LXRvb2xib3gtYWN0aW9uLWluc3RhbmNpYXRvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29sYm94LWFjdGlvbi1pbnN0YW5jaWF0b3IuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRvb2xib3hBY3Rpb25JbnN0YW5jaWF0b3JDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgYWN0aW9uITogVG9vbGJveEFjdGlvbjtcbiAgQElucHV0KCkgZGlzcGxheUxhYmVsczogYm9vbGVhbiA9IHRydWU7XG4gIEBPdXRwdXQoKSBjbG9zZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQFZpZXdDaGlsZCgnYWN0aW9uQ29udGFpbmVyUmVmJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGFjdGlvbkNvbnRhaW5lclJlZiE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmU8YW55PiwgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAodGhpcy5hY3Rpb24udmlzaWJsZSkge1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5hY3Rpb25Db250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50PFRvb2xib3hBY3Rpb25Db21wb25lbnQ+KHRoaXMuYWN0aW9uLmNvbXBvbmVudCk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbG9zZU9wdGlvbnMuc3Vic2NyaWJlKChfKSA9PiB0aGlzLmNsb3NlT3B0aW9ucy5lbWl0KCkpKTtcbiAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kaXNwbGF5TGFiZWxzID0gdGhpcy5kaXNwbGF5TGFiZWxzO1xuICAgICAgY29tcG9uZW50UmVmLmxvY2F0aW9uLm5hdGl2ZUVsZW1lbnQuc3R5bGUuekluZGV4ID0gMjtcblxuICAgICAgaWYgKHRoaXMuYWN0aW9uLm5hbWUgPT09ICdkZWZhdWx0X3NpemUnKSB7XG4gICAgICAgIGNvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2lzLXNjcmVlbi1zaXplLXNlbGVjdCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5hY3Rpb24ubmFtZSA9PT0gJ3NhdmVfdmlldycpIHtcbiAgICAgICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBTYXZlVmlld0NvbXBvbmVudCkubW9kZSA9ICdkaXJlY3RTYXZlJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlICNhY3Rpb25Db250YWluZXJSZWY+PC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|