@pepperi-addons/ngx-composite-lib 0.4.1-beta.24 → 0.4.1-beta.26

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.
@@ -9,6 +9,7 @@ export declare class DataViewBuilderComponent implements OnInit {
9
9
  private dataViewBuilderService;
10
10
  builderTitle: string;
11
11
  builderTitleHint: string;
12
+ showAddSeparator: boolean;
12
13
  private _availableFields;
13
14
  set availableFields(value: Array<IPepDraggableItem>);
14
15
  get availableFields(): Array<IPepDraggableItem>;
@@ -31,5 +32,5 @@ export declare class DataViewBuilderComponent implements OnInit {
31
32
  onDragEnd(event: CdkDragEnd): void;
32
33
  onFieldsChanged(fields: Array<DataViewField>): void;
33
34
  static ɵfac: i0.ɵɵFactoryDeclaration<DataViewBuilderComponent, never>;
34
- static ɵcmp: i0.ɵɵComponentDeclaration<DataViewBuilderComponent, "pep-data-view-builder", never, { "builderTitle": "builderTitle"; "builderTitleHint": "builderTitleHint"; "availableFields": "availableFields"; "dataView": "dataView"; }, { "dataViewChange": "dataViewChange"; }, never, never, false>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataViewBuilderComponent, "pep-data-view-builder", never, { "builderTitle": "builderTitle"; "builderTitleHint": "builderTitleHint"; "showAddSeparator": "showAddSeparator"; "availableFields": "availableFields"; "dataView": "dataView"; }, { "dataViewChange": "dataViewChange"; }, never, never, false>;
35
36
  }
@@ -1,11 +1,13 @@
1
1
  import { CdkDragDrop, CdkDragEnd, CdkDragStart } from '@angular/cdk/drag-drop';
2
2
  import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
3
+ import { TranslateService } from '@ngx-translate/core';
3
4
  import { IPepButtonClickEvent } from '@pepperi-addons/ngx-lib/button';
4
5
  import { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';
5
6
  import { DataViewField, MenuDataViewField } from '@pepperi-addons/papi-sdk';
6
7
  import { DataViewBuilderService } from '../data-view-builder.service';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class MenuDataViewComponent implements OnInit {
10
+ private translate;
9
11
  private dialogService;
10
12
  private dataViewBuilderService;
11
13
  separatorTitleModalTemplate: TemplateRef<any>;
@@ -13,10 +15,13 @@ export declare class MenuDataViewComponent implements OnInit {
13
15
  availableFieldsTitles: Map<string, string>;
14
16
  emptyDropAreaId: string;
15
17
  mappedFieldsId: string;
18
+ showAddSeparator: boolean;
19
+ itemKeyLabel: string;
20
+ itemTitleLabel: string;
16
21
  fieldsChange: EventEmitter<DataViewField[]>;
17
22
  isGrabbing: boolean;
18
23
  private dialogRef;
19
- constructor(dialogService: PepDialogService, dataViewBuilderService: DataViewBuilderService);
24
+ constructor(translate: TranslateService, dialogService: PepDialogService, dataViewBuilderService: DataViewBuilderService);
20
25
  private addNewField;
21
26
  private spliceMappedFields;
22
27
  private changeTitle;
@@ -32,5 +37,5 @@ export declare class MenuDataViewComponent implements OnInit {
32
37
  setDialogValue(value: string): void;
33
38
  closeDialog(value?: string | undefined): void;
34
39
  static ɵfac: i0.ɵɵFactoryDeclaration<MenuDataViewComponent, never>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<MenuDataViewComponent, "menu-data-view", never, { "fields": "fields"; "availableFieldsTitles": "availableFieldsTitles"; "emptyDropAreaId": "emptyDropAreaId"; "mappedFieldsId": "mappedFieldsId"; }, { "fieldsChange": "fieldsChange"; }, never, never, false>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuDataViewComponent, "menu-data-view", never, { "fields": "fields"; "availableFieldsTitles": "availableFieldsTitles"; "emptyDropAreaId": "emptyDropAreaId"; "mappedFieldsId": "mappedFieldsId"; "showAddSeparator": "showAddSeparator"; "itemKeyLabel": "itemKeyLabel"; "itemTitleLabel": "itemTitleLabel"; }, { "fieldsChange": "fieldsChange"; }, never, never, false>;
36
41
  }
@@ -12,6 +12,7 @@ export class DataViewBuilderComponent {
12
12
  // @Input() title: string = '';
13
13
  this.builderTitle = '';
14
14
  this.builderTitleHint = '';
15
+ this.showAddSeparator = true;
15
16
  this._availableFields = [];
16
17
  this.dataViewChange = new EventEmitter();
17
18
  this.type = 'not-supported';
@@ -99,14 +100,16 @@ export class DataViewBuilderComponent {
99
100
  }
100
101
  }
101
102
  DataViewBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DataViewBuilderComponent, deps: [{ token: i1.DataViewBuilderService }], target: i0.ɵɵFactoryTarget.Component });
102
- DataViewBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: DataViewBuilderComponent, selector: "pep-data-view-builder", inputs: { builderTitle: "builderTitle", builderTitleHint: "builderTitleHint", availableFields: "availableFields", dataView: "dataView" }, outputs: { dataViewChange: "dataViewChange" }, ngImport: i0, template: "<pep-page-layout >\n <!-- <ng-container pep-top-area>\n <pep-top-bar [title]=\"title\">\n <div header-end-content>\n </div>\n </pep-top-bar>\n </ng-container> -->\n <ng-container pep-main-area>\n <ng-container *ngIf=\"type === 'not-supported' ; then notSupportedTemplate; else supportedTemplate\"></ng-container>\n <ng-template #notSupportedTemplate>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.TYPE_NOT_SUPPORTED' | translate }}\n </span> \n </ng-template>\n <ng-template #supportedTemplate>\n <div *ngIf=\"dataView && availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'DATA_VIEW_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }}&nbsp;</span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"data-view-by-type-area\" [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <menu-data-view [fields]=\"dataView?.Fields || []\" [availableFieldsTitles]=\"availableFieldsTitles\" [emptyDropAreaId]=\"emptyDropAreaId\"\n [mappedFieldsId]=\"mappedFieldsId\" (fieldsChange)=\"onFieldsChanged($event)\">\n </menu-data-view>\n </ng-container>\n <!-- <ng-container *ngSwitchDefault>\n </ng-container> -->\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n</pep-page-layout>\n\n", styles: [".mapped-fields-container{display:grid;height:100%;grid-template-columns:auto 1fr;grid-template-areas:\"side-area main-area\"}.mapped-fields-container .available-fields-side-area{grid-area:side-area;width:240px;max-width:240px;overflow:auto;height:inherit;padding-top:var(--pep-spacing-2xl, 2rem);margin-inline-end:calc(var(--pep-spacing-lg, 1rem) * 2)}.mapped-fields-container .mapped-fields-main-area{display:grid;grid-template-rows:auto 1fr;grid-area:main-area;padding-top:var(--pep-spacing-2xl, 2rem);overflow:auto;height:inherit}.mapped-fields-container .mapped-fields-main-area .mapped-fields-top-area{height:var(--pep-top-bar-field-height, 2.5rem);display:flex;align-items:center}.mapped-fields-container .mapped-fields-main-area .data-view-by-type-area{overflow:auto;height:inherit;padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem);padding-inline:var(--pep-spacing-xs, .25rem)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i4.DraggableItemsComponent, selector: "pep-draggable-items", inputs: ["containerId", "showSearch", "title", "titleType", "titleSizeType", "itemPlaceholderType", "dropAreaIds", "items"], outputs: ["itemDragStarted", "itemDragEnded"] }, { kind: "component", type: i5.MenuDataViewComponent, selector: "menu-data-view", inputs: ["fields", "availableFieldsTitles", "emptyDropAreaId", "mappedFieldsId"], outputs: ["fieldsChange"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
103
+ DataViewBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: DataViewBuilderComponent, selector: "pep-data-view-builder", inputs: { builderTitle: "builderTitle", builderTitleHint: "builderTitleHint", showAddSeparator: "showAddSeparator", availableFields: "availableFields", dataView: "dataView" }, outputs: { dataViewChange: "dataViewChange" }, ngImport: i0, template: "<pep-page-layout >\n <!-- <ng-container pep-top-area>\n <pep-top-bar [title]=\"title\">\n <div header-end-content>\n </div>\n </pep-top-bar>\n </ng-container> -->\n <ng-container pep-main-area>\n <ng-container *ngIf=\"type === 'not-supported' ; then notSupportedTemplate; else supportedTemplate\"></ng-container>\n <ng-template #notSupportedTemplate>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.TYPE_NOT_SUPPORTED' | translate }}\n </span> \n </ng-template>\n <ng-template #supportedTemplate>\n <div *ngIf=\"dataView && availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'DATA_VIEW_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }}&nbsp;</span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"data-view-by-type-area\" [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <menu-data-view [fields]=\"dataView?.Fields || []\" [availableFieldsTitles]=\"availableFieldsTitles\" [emptyDropAreaId]=\"emptyDropAreaId\"\n [mappedFieldsId]=\"mappedFieldsId\" (fieldsChange)=\"onFieldsChanged($event)\" [showAddSeparator]=\"showAddSeparator\">\n </menu-data-view>\n </ng-container>\n <!-- <ng-container *ngSwitchDefault>\n </ng-container> -->\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n</pep-page-layout>\n\n", styles: [".mapped-fields-container{display:grid;height:100%;grid-template-columns:auto 1fr;grid-template-areas:\"side-area main-area\"}.mapped-fields-container .available-fields-side-area{grid-area:side-area;width:240px;max-width:240px;overflow:auto;height:inherit;padding-top:var(--pep-spacing-2xl, 2rem);margin-inline-end:calc(var(--pep-spacing-lg, 1rem) * 2)}.mapped-fields-container .mapped-fields-main-area{display:grid;grid-template-rows:auto 1fr;grid-area:main-area;padding-top:var(--pep-spacing-2xl, 2rem);overflow:auto;height:inherit}.mapped-fields-container .mapped-fields-main-area .mapped-fields-top-area{height:var(--pep-top-bar-field-height, 2.5rem);display:flex;align-items:center}.mapped-fields-container .mapped-fields-main-area .data-view-by-type-area{overflow:auto;height:inherit;padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem);padding-inline:var(--pep-spacing-xs, .25rem)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.PepPageLayoutComponent, selector: "pep-page-layout", inputs: ["addPadding", "showShadow"] }, { kind: "component", type: i4.DraggableItemsComponent, selector: "pep-draggable-items", inputs: ["containerId", "showSearch", "title", "titleType", "titleSizeType", "itemPlaceholderType", "dropAreaIds", "items"], outputs: ["itemDragStarted", "itemDragEnded"] }, { kind: "component", type: i5.MenuDataViewComponent, selector: "menu-data-view", inputs: ["fields", "availableFieldsTitles", "emptyDropAreaId", "mappedFieldsId", "showAddSeparator", "itemKeyLabel", "itemTitleLabel"], outputs: ["fieldsChange"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
103
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: DataViewBuilderComponent, decorators: [{
104
105
  type: Component,
105
- args: [{ selector: 'pep-data-view-builder', template: "<pep-page-layout >\n <!-- <ng-container pep-top-area>\n <pep-top-bar [title]=\"title\">\n <div header-end-content>\n </div>\n </pep-top-bar>\n </ng-container> -->\n <ng-container pep-main-area>\n <ng-container *ngIf=\"type === 'not-supported' ; then notSupportedTemplate; else supportedTemplate\"></ng-container>\n <ng-template #notSupportedTemplate>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.TYPE_NOT_SUPPORTED' | translate }}\n </span> \n </ng-template>\n <ng-template #supportedTemplate>\n <div *ngIf=\"dataView && availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'DATA_VIEW_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }}&nbsp;</span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"data-view-by-type-area\" [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <menu-data-view [fields]=\"dataView?.Fields || []\" [availableFieldsTitles]=\"availableFieldsTitles\" [emptyDropAreaId]=\"emptyDropAreaId\"\n [mappedFieldsId]=\"mappedFieldsId\" (fieldsChange)=\"onFieldsChanged($event)\">\n </menu-data-view>\n </ng-container>\n <!-- <ng-container *ngSwitchDefault>\n </ng-container> -->\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n</pep-page-layout>\n\n", styles: [".mapped-fields-container{display:grid;height:100%;grid-template-columns:auto 1fr;grid-template-areas:\"side-area main-area\"}.mapped-fields-container .available-fields-side-area{grid-area:side-area;width:240px;max-width:240px;overflow:auto;height:inherit;padding-top:var(--pep-spacing-2xl, 2rem);margin-inline-end:calc(var(--pep-spacing-lg, 1rem) * 2)}.mapped-fields-container .mapped-fields-main-area{display:grid;grid-template-rows:auto 1fr;grid-area:main-area;padding-top:var(--pep-spacing-2xl, 2rem);overflow:auto;height:inherit}.mapped-fields-container .mapped-fields-main-area .mapped-fields-top-area{height:var(--pep-top-bar-field-height, 2.5rem);display:flex;align-items:center}.mapped-fields-container .mapped-fields-main-area .data-view-by-type-area{overflow:auto;height:inherit;padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem);padding-inline:var(--pep-spacing-xs, .25rem)}\n"] }]
106
+ args: [{ selector: 'pep-data-view-builder', template: "<pep-page-layout >\n <!-- <ng-container pep-top-area>\n <pep-top-bar [title]=\"title\">\n <div header-end-content>\n </div>\n </pep-top-bar>\n </ng-container> -->\n <ng-container pep-main-area>\n <ng-container *ngIf=\"type === 'not-supported' ; then notSupportedTemplate; else supportedTemplate\"></ng-container>\n <ng-template #notSupportedTemplate>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.TYPE_NOT_SUPPORTED' | translate }}\n </span> \n </ng-template>\n <ng-template #supportedTemplate>\n <div *ngIf=\"dataView && availableFields\" class=\"mapped-fields-container\">\n <div class=\"available-fields-side-area\">\n <pep-draggable-items [items]=\"availableFields\" [title]=\"'DATA_VIEW_BUILDER.AVAILABLE_FIELDS' | translate\" titleType=\"with-bottom-border\" titleSizeType=\"md\"\n itemPlaceholderType=\"weak\" [showSearch]=\"true\" [dropAreaIds]=\"['emptyDropArea', 'mappedFields']\" (itemDragStarted)=\"onDragStart($event)\" (itemDragEnded)=\"onDragEnd($event)\">\n </pep-draggable-items>\n </div>\n <div pep-main-area class=\"mapped-fields-main-area\">\n <div class=\"mapped-fields-top-area pep-border-bottom\"\n [title]=\"builderTitle + ' ' + (builderTitleHint ? ('(' + builderTitleHint + ')') : '')\">\n <span class=\"title-md\">{{ builderTitle }}&nbsp;</span>\n <span *ngIf=\"builderTitleHint\" class=\"color-dimmed\">({{ builderTitleHint }})</span>\n </div>\n \n <div class=\"data-view-by-type-area\" [ngSwitch]=\"type\">\n <ng-container *ngSwitchCase=\"'menu'\">\n <menu-data-view [fields]=\"dataView?.Fields || []\" [availableFieldsTitles]=\"availableFieldsTitles\" [emptyDropAreaId]=\"emptyDropAreaId\"\n [mappedFieldsId]=\"mappedFieldsId\" (fieldsChange)=\"onFieldsChanged($event)\" [showAddSeparator]=\"showAddSeparator\">\n </menu-data-view>\n </ng-container>\n <!-- <ng-container *ngSwitchDefault>\n </ng-container> -->\n </div>\n </div>\n </div>\n </ng-template>\n </ng-container>\n</pep-page-layout>\n\n", styles: [".mapped-fields-container{display:grid;height:100%;grid-template-columns:auto 1fr;grid-template-areas:\"side-area main-area\"}.mapped-fields-container .available-fields-side-area{grid-area:side-area;width:240px;max-width:240px;overflow:auto;height:inherit;padding-top:var(--pep-spacing-2xl, 2rem);margin-inline-end:calc(var(--pep-spacing-lg, 1rem) * 2)}.mapped-fields-container .mapped-fields-main-area{display:grid;grid-template-rows:auto 1fr;grid-area:main-area;padding-top:var(--pep-spacing-2xl, 2rem);overflow:auto;height:inherit}.mapped-fields-container .mapped-fields-main-area .mapped-fields-top-area{height:var(--pep-top-bar-field-height, 2.5rem);display:flex;align-items:center}.mapped-fields-container .mapped-fields-main-area .data-view-by-type-area{overflow:auto;height:inherit;padding-top:var(--pep-spacing-lg, 1rem);padding-bottom:var(--pep-spacing-lg, 1rem);padding-inline:var(--pep-spacing-xs, .25rem)}\n"] }]
106
107
  }], ctorParameters: function () { return [{ type: i1.DataViewBuilderService }]; }, propDecorators: { builderTitle: [{
107
108
  type: Input
108
109
  }], builderTitleHint: [{
109
110
  type: Input
111
+ }], showAddSeparator: [{
112
+ type: Input
110
113
  }], availableFields: [{
111
114
  type: Input
112
115
  }], dataView: [{
@@ -114,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
114
117
  }], dataViewChange: [{
115
118
  type: Output
116
119
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvZGF0YS12aWV3LWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvZGF0YS12aWV3LWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV3ZHLE1BQU0sT0FBTyx3QkFBd0I7SUFvQ2pDLFlBQ1ksc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFwQzFELCtCQUErQjtRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFdkIscUJBQWdCLEdBQTZCLEVBQUUsQ0FBQztRQXNCeEQsbUJBQWMsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFFOUUsU0FBSSxHQUEyQixlQUFlLENBQUM7UUFFL0Msb0JBQWUsR0FBRyxlQUFlLENBQUM7UUFDbEMsbUJBQWMsR0FBRyxjQUFjLENBQUM7UUFFaEMsMEJBQXFCLEdBQXdCLElBQUksR0FBRyxFQUFrQixDQUFDO1FBS25FLEVBQUU7SUFDTixDQUFDO0lBbENELElBQ0ksZUFBZSxDQUFDLEtBQStCO1FBQy9DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLGVBQWU7UUFDZixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBR0QsSUFDSSxRQUFRLENB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LENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsOEJBQThCO0lBQ2xDLENBQUM7SUFFRCxRQUFRO1FBQ0osRUFBRTtJQUNOLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBbUI7UUFDM0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUE0QjtRQUN4QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDaEMsQ0FBQzs7cUhBaEhRLHdCQUF3Qjt5R0FBeEIsd0JBQXdCLHNQQ1pyQyx5OEVBMkNBOzJGRC9CYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0ksdUJBQXVCOzZHQU14QixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJRixlQUFlO3NCQURsQixLQUFLO2dCQVdGLFFBQVE7c0JBRFgsS0FBSztnQkFXTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRW5kLCBDZGtEcmFnU3RhcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElQZXBEcmFnZ2FibGVJdGVtIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zJztcbmltcG9ydCB7IEJhc2VEYXRhVmlldywgRGF0YVZpZXdGaWVsZCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9wYXBpLXNkayc7XG5pbXBvcnQgeyBQZXBEYXRhVmlld0J1aWxkZXJUeXBlIH0gZnJvbSAnLi9kYXRhLXZpZXctYnVpbGRlci5tb2RlbCc7XG5pbXBvcnQgeyBEYXRhVmlld0J1aWxkZXJTZXJ2aWNlIH0gZnJvbSAnLi9kYXRhLXZpZXctYnVpbGRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZGF0YS12aWV3LWJ1aWxkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRhLXZpZXctYnVpbGRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0YS12aWV3LWJ1aWxkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVmlld0J1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8vIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBidWlsZGVyVGl0bGUgPSAnJztcbiAgICBASW5wdXQoKSBidWlsZGVyVGl0bGVIaW50ID0gJyc7XG4gICAgXG4gICAgcHJpdmF0ZSBfYXZhaWxhYmxlRmllbGRzOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4gPSBbXTtcbiAgICBASW5wdXQoKVxuICAgIHNldCBhdmFpbGFibGVGaWVsZHModmFsdWU6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPikge1xuICAgICAgICB0aGlzLl9hdmFpbGFibGVGaWVsZHMgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRUaXRsZXNNYXAoKTtcbiAgICB9XG4gICAgZ2V0IGF2YWlsYWJsZUZpZWxkcygpOiBBcnJheTxJUGVwRHJhZ2dhYmxlSXRlbT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXZhaWxhYmxlRmllbGRzO1xuICAgIH1cbiAgICBcbiAgICBwcml2YXRlIF9kYXRhVmlldyE6IEJhc2VEYXRhVmlldztcbiAgICBASW5wdXQoKVxuICAgIHNldCBkYXRhVmlldyh2YWx1ZTogQmFzZURhdGFWaWV3KSB7XG4gICAgICAgIHRoaXMuX2RhdGFWaWV3ID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2V0VHlwZSgpO1xuICAgICAgICB0aGlzLnJlZnJlc2hBdmFpbGFibGVGaWVsZHMoKTtcbiAgICB9XG4gICAgZ2V0IGRhdGFWaWV3KCkgOiBCYXNlRGF0YVZpZXcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVZpZXc7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZGF0YVZpZXdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxCYXNlRGF0YVZpZXc+ID0gbmV3IEV2ZW50RW1pdHRlcjxCYXNlRGF0YVZpZXc+KCk7XG4gICAgXG4gICAgdHlwZTogUGVwRGF0YVZpZXdCdWlsZGVyVHlwZSA9ICdub3Qtc3VwcG9ydGVkJztcbiAgICBcbiAgICBlbXB0eURyb3BBcmVhSWQgPSAnZW1wdHlEcm9wQXJlYSc7XG4gICAgbWFwcGVkRmllbGRzSWQgPSAnbWFwcGVkRmllbGRzJztcblxuICAgIGF2YWlsYWJsZUZpZWxkc1RpdGxlczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkYXRhVmlld0J1aWxkZXJTZXJ2aWNlOiBEYXRhVmlld0J1aWxkZXJTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUeXBlKCkge1xuICAgICAgICBpZiAodGhpcy5fZGF0YVZpZXcuVHlwZSA9PT0gJ01lbnUnKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnbWVudSc7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fZGF0YVZpZXcuVHlwZSA9PT0gJ0dyaWQnKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnbGlzdCc7XG4gICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuX2RhdGFWaWV3LlR5cGUgPT09ICdDYXJkJykgfHwgXG4gICAgICAgICAgICAgICAgICAgKHRoaXMuX2RhdGFWaWV3LlR5cGUgPT09ICdGb3JtJykgfHwgXG4gICAgICAgICAgICAgICAgICAgKHRoaXMuX2RhdGFWaWV3LlR5cGUgPT09ICdMYXJnZScpIHx8IFxuICAgICAgICAgICAgICAgICAgICh0aGlzLl9kYXRhVmlldy5UeXBlID09PSAnTGluZScpKSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnY2FyZCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnR5cGUgPSAnbm90LXN1cHBvcnRlZCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEF2YWlsYWJsZUZpZWxkUGVybWlzc2lvbihmaWVsZDogc3RyaW5nLCBkaXNhYmxlOiBib29sZWFuKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGl0ZW0gaW4gdGhlIGF2YWlsYWJsZSBmaWVsZHNcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuYXZhaWxhYmxlRmllbGRzLmZpbmQoYXMgPT4gYXMuZGF0YS5rZXkgPT09IGZpZWxkKTtcbiAgICAgICAgXG4gICAgICAgIC8vIElmIGV4aXN0IGRpc2FibGUgb3IgZW5hYmxlIGl0LlxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgaXRlbS5kaXNhYmxlZCA9IGRpc2FibGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hBdmFpbGFibGVGaWVsZHMoKSB7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlRmllbGRzLmZvckVhY2goYWYgPT4gYWYuZGlzYWJsZWQgPSBmYWxzZSk7XG4gICAgICAgIFxuICAgICAgICBpZiAodGhpcy5kYXRhVmlldyAmJiB0aGlzLmRhdGFWaWV3LkZpZWxkcykge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuZGF0YVZpZXcuRmllbGRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0QXZhaWxhYmxlRmllbGRQZXJtaXNzaW9uKHRoaXMuZGF0YVZpZXcuRmllbGRzW2luZGV4XS5GaWVsZElELCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VGl0bGVzTWFwKCkge1xuICAgICAgICB0aGlzLmF2YWlsYWJsZUZpZWxkc1RpdGxlcy5jbGVhcigpO1xuXG4gICAgICAgIGlmICh0aGlzLmF2YWlsYWJsZUZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMuYXZhaWxhYmxlRmllbGRzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUZpZWxkID0gdGhpcy5hdmFpbGFibGVGaWVsZHNbaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJsZUZpZWxkPy5kYXRhPy5rZXkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmF2YWlsYWJsZUZpZWxkc1RpdGxlcy5zZXQoYXZhaWxhYmxlRmllbGQuZGF0YS5rZXksIGF2YWlsYWJsZUZpZWxkLnRpdGxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG5vdGlmeURhdGFWaWV3Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLmRhdGFWaWV3Q2hhbmdlLmVtaXQodGhpcy5kYXRhVmlldyk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGF0YVZpZXcpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhVmlld0J1aWxkZXJTZXJ2aWNlLm9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5kYXRhVmlld0J1aWxkZXJTZXJ2aWNlLm9uRHJhZ0VuZChldmVudCk7XG4gICAgfVxuICAgIFxuICAgIG9uRmllbGRzQ2hhbmdlZChmaWVsZHM6IEFycmF5PERhdGFWaWV3RmllbGQ+KSB7XG4gICAgICAgIHRoaXMuZGF0YVZpZXcuRmllbGRzID0gZmllbGRzO1xuICAgICAgICB0aGlzLnJlZnJlc2hBdmFpbGFibGVGaWVsZHMoKTtcbiAgICAgICAgdGhpcy5ub3RpZnlEYXRhVmlld0NoYW5nZSgpO1xuICAgIH1cbn1cbiIsIjxwZXAtcGFnZS1sYXlvdXQgPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciBwZXAtdG9wLWFyZWE+XG4gICAgICAgIDxwZXAtdG9wLWJhciBbdGl0bGVdPVwidGl0bGVcIj5cbiAgICAgICAgICAgIDxkaXYgaGVhZGVyLWVuZC1jb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcGVwLXRvcC1iYXI+XG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxuICAgIDxuZy1jb250YWluZXIgcGVwLW1haW4tYXJlYT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICdub3Qtc3VwcG9ydGVkJyA7IHRoZW4gbm90U3VwcG9ydGVkVGVtcGxhdGU7IGVsc2Ugc3VwcG9ydGVkVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNub3RTdXBwb3J0ZWRUZW1wbGF0ZT5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keS1zbSBlbGxpcHNpc1wiPlxuICAgICAgICAgICAgICAgIHt7ICdEQVRBX1ZJRVdfQlVJTERFUi5UWVBFX05PVF9TVVBQT1JURUQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L3NwYW4+IFxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgI3N1cHBvcnRlZFRlbXBsYXRlPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImRhdGFWaWV3ICYmIGF2YWlsYWJsZUZpZWxkc1wiIGNsYXNzPVwibWFwcGVkLWZpZWxkcy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhaWxhYmxlLWZpZWxkcy1zaWRlLWFyZWFcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1kcmFnZ2FibGUtaXRlbXMgW2l0ZW1zXT1cImF2YWlsYWJsZUZpZWxkc1wiIFt0aXRsZV09XCInREFUQV9WSUVXX0JVSUxERVIuQVZBSUxBQkxFX0ZJRUxEUycgfCB0cmFuc2xhdGVcIiB0aXRsZVR5cGU9XCJ3aXRoLWJvdHRvbS1ib3JkZXJcIiB0aXRsZVNpemVUeXBlPVwibWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVBsYWNlaG9sZGVyVHlwZT1cIndlYWtcIiBbc2hvd1NlYXJjaF09XCJ0cnVlXCIgW2Ryb3BBcmVhSWRzXT1cIlsnZW1wdHlEcm9wQXJlYScsICdtYXBwZWRGaWVsZHMnXVwiIChpdGVtRHJhZ1N0YXJ0ZWQpPVwib25EcmFnU3RhcnQoJGV2ZW50KVwiIChpdGVtRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvcGVwLWRyYWdnYWJsZS1pdGVtcz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IHBlcC1tYWluLWFyZWEgY2xhc3M9XCJtYXBwZWQtZmllbGRzLW1haW4tYXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwcGVkLWZpZWxkcy10b3AtYXJlYSBwZXAtYm9yZGVyLWJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYnVpbGRlclRpdGxlICsgJyAnICsgKGJ1aWxkZXJUaXRsZUhpbnQgPyAoJygnICsgYnVpbGRlclRpdGxlSGludCArICcpJykgOiAnJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtbWRcIj57eyBidWlsZGVyVGl0bGUgfX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImJ1aWxkZXJUaXRsZUhpbnRcIiBjbGFzcz1cImNvbG9yLWRpbW1lZFwiPih7eyBidWlsZGVyVGl0bGVIaW50IH19KTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0YS12aWV3LWJ5LXR5cGUtYXJlYVwiIFtuZ1N3aXRjaF09XCJ0eXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWVudSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWVudS1kYXRhLXZpZXcgW2ZpZWxkc109XCJkYXRhVmlldz8uRmllbGRzIHx8IFtdXCIgW2F2YWlsYWJsZUZpZWxkc1RpdGxlc109XCJhdmFpbGFibGVGaWVsZHNUaXRsZXNcIiBbZW1wdHlEcm9wQXJlYUlkXT1cImVtcHR5RHJvcEFyZWFJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXBwZWRGaWVsZHNJZF09XCJtYXBwZWRGaWVsZHNJZFwiIChmaWVsZHNDaGFuZ2UpPVwib25GaWVsZHNDaGFuZ2VkKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21lbnUtZGF0YS12aWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvcGVwLXBhZ2UtbGF5b3V0PlxuXG4iXX0=
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS12aWV3LWJ1aWxkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvZGF0YS12aWV3LWJ1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvZGF0YS12aWV3LWJ1aWxkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBMEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV3ZHLE1BQU0sT0FBTyx3QkFBd0I7SUFxQ2pDLFlBQ1ksc0JBQThDO1FBQTlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFyQzFELCtCQUErQjtRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBRXpCLHFCQUFnQixHQUE2QixFQUFFLENBQUM7UUFzQnhELG1CQUFjLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBRTlFLFNBQUksR0FBMkIsZUFBZSxDQUFDO1FBRS9DLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBQ2xDLG1CQUFjLEdBQUcsY0FBYyxDQUFDO1FBRWhDLDBCQUFxQixHQUF3QixJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUtuRSxFQUFFO0lBQ04sQ0FBQztJQWxDRCxJQUNJLGVBQWUsQ0FBQyxLQUErQjtRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7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QUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLDhCQUE4QjtJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNKLEVBQUU7SUFDTixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQW1CO1FBQzNCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFpQjtRQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlLENBQUMsTUFBNEI7UUFDeEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzlCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7O3FIQWpIUSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0UkNackMsaS9FQTJDQTsyRkQvQmEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLHVCQUF1Qjs2R0FNeEIsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUlGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBV0YsUUFBUTtzQkFEWCxLQUFLO2dCQVdOLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdFbmQsIENka0RyYWdTdGFydCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBlcERyYWdnYWJsZUl0ZW0gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kcmFnZ2FibGUtaXRlbXMnO1xuaW1wb3J0IHsgQmFzZURhdGFWaWV3LCBEYXRhVmlld0ZpZWxkIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL3BhcGktc2RrJztcbmltcG9ydCB7IFBlcERhdGFWaWV3QnVpbGRlclR5cGUgfSBmcm9tICcuL2RhdGEtdmlldy1idWlsZGVyLm1vZGVsJztcbmltcG9ydCB7IERhdGFWaWV3QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuL2RhdGEtdmlldy1idWlsZGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1kYXRhLXZpZXctYnVpbGRlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdmlldy1idWlsZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRhLXZpZXctYnVpbGRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERhdGFWaWV3QnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIGJ1aWxkZXJUaXRsZSA9ICcnO1xuICAgIEBJbnB1dCgpIGJ1aWxkZXJUaXRsZUhpbnQgPSAnJztcbiAgICBASW5wdXQoKSBzaG93QWRkU2VwYXJhdG9yID0gdHJ1ZTtcbiAgICBcbiAgICBwcml2YXRlIF9hdmFpbGFibGVGaWVsZHM6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPiA9IFtdO1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGF2YWlsYWJsZUZpZWxkcyh2YWx1ZTogQXJyYXk8SVBlcERyYWdnYWJsZUl0ZW0+KSB7XG4gICAgICAgIHRoaXMuX2F2YWlsYWJsZUZpZWxkcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNldFRpdGxlc01hcCgpO1xuICAgIH1cbiAgICBnZXQgYXZhaWxhYmxlRmllbGRzKCk6IEFycmF5PElQZXBEcmFnZ2FibGVJdGVtPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdmFpbGFibGVGaWVsZHM7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgX2RhdGFWaWV3ITogQmFzZURhdGFWaWV3O1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRhdGFWaWV3KHZhbHVlOiBCYXNlRGF0YVZpZXcpIHtcbiAgICAgICAgdGhpcy5fZGF0YVZpZXcgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5zZXRUeXBlKCk7XG4gICAgICAgIHRoaXMucmVmcmVzaEF2YWlsYWJsZUZpZWxkcygpO1xuICAgIH1cbiAgICBnZXQgZGF0YVZpZXcoKSA6IEJhc2VEYXRhVmlldyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhVmlldztcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBkYXRhVmlld0NoYW5nZTogRXZlbnRFbWl0dGVyPEJhc2VEYXRhVmlldz4gPSBuZXcgRXZlbnRFbWl0dGVyPEJhc2VEYXRhVmlldz4oKTtcbiAgICBcbiAgICB0eXBlOiBQZXBEYXRhVmlld0J1aWxkZXJUeXBlID0gJ25vdC1zdXBwb3J0ZWQnO1xuICAgIFxuICAgIGVtcHR5RHJvcEFyZWFJZCA9ICdlbXB0eURyb3BBcmVhJztcbiAgICBtYXBwZWRGaWVsZHNJZCA9ICdtYXBwZWRGaWVsZHMnO1xuXG4gICAgYXZhaWxhYmxlRmllbGRzVGl0bGVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRhdGFWaWV3QnVpbGRlclNlcnZpY2U6IERhdGFWaWV3QnVpbGRlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFR5cGUoKSB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhVmlldy5UeXBlID09PSAnTWVudScpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdtZW51JztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9kYXRhVmlldy5UeXBlID09PSAnR3JpZCcpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdsaXN0JztcbiAgICAgICAgfSBlbHNlIGlmICgodGhpcy5fZGF0YVZpZXcuVHlwZSA9PT0gJ0NhcmQnKSB8fCBcbiAgICAgICAgICAgICAgICAgICAodGhpcy5fZGF0YVZpZXcuVHlwZSA9PT0gJ0Zvcm0nKSB8fCBcbiAgICAgICAgICAgICAgICAgICAodGhpcy5fZGF0YVZpZXcuVHlwZSA9PT0gJ0xhcmdlJykgfHwgXG4gICAgICAgICAgICAgICAgICAgKHRoaXMuX2RhdGFWaWV3LlR5cGUgPT09ICdMaW5lJykpIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdjYXJkJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9ICdub3Qtc3VwcG9ydGVkJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0QXZhaWxhYmxlRmllbGRQZXJtaXNzaW9uKGZpZWxkOiBzdHJpbmcsIGRpc2FibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgLy8gRmluZCB0aGUgaXRlbSBpbiB0aGUgYXZhaWxhYmxlIGZpZWxkc1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5hdmFpbGFibGVGaWVsZHMuZmluZChhcyA9PiBhcy5kYXRhLmtleSA9PT0gZmllbGQpO1xuICAgICAgICBcbiAgICAgICAgLy8gSWYgZXhpc3QgZGlzYWJsZSBvciBlbmFibGUgaXQuXG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICBpdGVtLmRpc2FibGVkID0gZGlzYWJsZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVmcmVzaEF2YWlsYWJsZUZpZWxkcygpIHtcbiAgICAgICAgdGhpcy5hdmFpbGFibGVGaWVsZHMuZm9yRWFjaChhZiA9PiBhZi5kaXNhYmxlZCA9IGZhbHNlKTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmRhdGFWaWV3ICYmIHRoaXMuZGF0YVZpZXcuRmllbGRzKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5kYXRhVmlldy5GaWVsZHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBdmFpbGFibGVGaWVsZFBlcm1pc3Npb24odGhpcy5kYXRhVmlldy5GaWVsZHNbaW5kZXhdLkZpZWxkSUQsIHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUaXRsZXNNYXAoKSB7XG4gICAgICAgIHRoaXMuYXZhaWxhYmxlRmllbGRzVGl0bGVzLmNsZWFyKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuYXZhaWxhYmxlRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5hdmFpbGFibGVGaWVsZHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlRmllbGQgPSB0aGlzLmF2YWlsYWJsZUZpZWxkc1tpbmRleF07XG5cbiAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlRmllbGQ/LmRhdGE/LmtleS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXZhaWxhYmxlRmllbGRzVGl0bGVzLnNldChhdmFpbGFibGVGaWVsZC5kYXRhLmtleSwgYXZhaWxhYmxlRmllbGQudGl0bGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5RGF0YVZpZXdDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuZGF0YVZpZXdDaGFuZ2UuZW1pdCh0aGlzLmRhdGFWaWV3KTtcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhVmlldyk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgb25EcmFnU3RhcnQoZXZlbnQ6IENka0RyYWdTdGFydCkge1xuICAgICAgICB0aGlzLmRhdGFWaWV3QnVpbGRlclNlcnZpY2Uub25EcmFnU3RhcnQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uRHJhZ0VuZChldmVudDogQ2RrRHJhZ0VuZCkge1xuICAgICAgICB0aGlzLmRhdGFWaWV3QnVpbGRlclNlcnZpY2Uub25EcmFnRW5kKGV2ZW50KTtcbiAgICB9XG4gICAgXG4gICAgb25GaWVsZHNDaGFuZ2VkKGZpZWxkczogQXJyYXk8RGF0YVZpZXdGaWVsZD4pIHtcbiAgICAgICAgdGhpcy5kYXRhVmlldy5GaWVsZHMgPSBmaWVsZHM7XG4gICAgICAgIHRoaXMucmVmcmVzaEF2YWlsYWJsZUZpZWxkcygpO1xuICAgICAgICB0aGlzLm5vdGlmeURhdGFWaWV3Q2hhbmdlKCk7XG4gICAgfVxufVxuIiwiPHBlcC1wYWdlLWxheW91dCA+XG4gICAgPCEtLSA8bmctY29udGFpbmVyIHBlcC10b3AtYXJlYT5cbiAgICAgICAgPHBlcC10b3AtYmFyIFt0aXRsZV09XCJ0aXRsZVwiPlxuICAgICAgICAgICAgPGRpdiBoZWFkZXItZW5kLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9wZXAtdG9wLWJhcj5cbiAgICA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgPG5nLWNvbnRhaW5lciBwZXAtbWFpbi1hcmVhPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidHlwZSA9PT0gJ25vdC1zdXBwb3J0ZWQnIDsgdGhlbiBub3RTdXBwb3J0ZWRUZW1wbGF0ZTsgZWxzZSBzdXBwb3J0ZWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI25vdFN1cHBvcnRlZFRlbXBsYXRlPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCI+XG4gICAgICAgICAgICAgICAge3sgJ0RBVEFfVklFV19CVUlMREVSLlRZUEVfTk9UX1NVUFBPUlRFRCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj4gXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc3VwcG9ydGVkVGVtcGxhdGU+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZGF0YVZpZXcgJiYgYXZhaWxhYmxlRmllbGRzXCIgY2xhc3M9XCJtYXBwZWQtZmllbGRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmFpbGFibGUtZmllbGRzLXNpZGUtYXJlYVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGVwLWRyYWdnYWJsZS1pdGVtcyBbaXRlbXNdPVwiYXZhaWxhYmxlRmllbGRzXCIgW3RpdGxlXT1cIidEQVRBX1ZJRVdfQlVJTERFUi5BVkFJTEFCTEVfRklFTERTJyB8IHRyYW5zbGF0ZVwiIHRpdGxlVHlwZT1cIndpdGgtYm90dG9tLWJvcmRlclwiIHRpdGxlU2l6ZVR5cGU9XCJtZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUGxhY2Vob2xkZXJUeXBlPVwid2Vha1wiIFtzaG93U2VhcmNoXT1cInRydWVcIiBbZHJvcEFyZWFJZHNdPVwiWydlbXB0eURyb3BBcmVhJywgJ21hcHBlZEZpZWxkcyddXCIgKGl0ZW1EcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCIgKGl0ZW1EcmFnRW5kZWQpPVwib25EcmFnRW5kKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9wZXAtZHJhZ2dhYmxlLWl0ZW1zPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgcGVwLW1haW4tYXJlYSBjbGFzcz1cIm1hcHBlZC1maWVsZHMtbWFpbi1hcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYXBwZWQtZmllbGRzLXRvcC1hcmVhIHBlcC1ib3JkZXItYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJidWlsZGVyVGl0bGUgKyAnICcgKyAoYnVpbGRlclRpdGxlSGludCA/ICgnKCcgKyBidWlsZGVyVGl0bGVIaW50ICsgJyknKSA6ICcnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1tZFwiPnt7IGJ1aWxkZXJUaXRsZSB9fSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYnVpbGRlclRpdGxlSGludFwiIGNsYXNzPVwiY29sb3ItZGltbWVkXCI+KHt7IGJ1aWxkZXJUaXRsZUhpbnQgfX0pPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLXZpZXctYnktdHlwZS1hcmVhXCIgW25nU3dpdGNoXT1cInR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtZW51J1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZW51LWRhdGEtdmlldyBbZmllbGRzXT1cImRhdGFWaWV3Py5GaWVsZHMgfHwgW11cIiBbYXZhaWxhYmxlRmllbGRzVGl0bGVzXT1cImF2YWlsYWJsZUZpZWxkc1RpdGxlc1wiIFtlbXB0eURyb3BBcmVhSWRdPVwiZW1wdHlEcm9wQXJlYUlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hcHBlZEZpZWxkc0lkXT1cIm1hcHBlZEZpZWxkc0lkXCIgKGZpZWxkc0NoYW5nZSk9XCJvbkZpZWxkc0NoYW5nZWQoJGV2ZW50KVwiIFtzaG93QWRkU2VwYXJhdG9yXT1cInNob3dBZGRTZXBhcmF0b3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21lbnUtZGF0YS12aWV3PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvcGVwLXBhZ2UtbGF5b3V0PlxuXG4iXX0=
@@ -1,23 +1,27 @@
1
1
  import { moveItemInArray } from '@angular/cdk/drag-drop';
2
2
  import { Component, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';
3
3
  import * as i0 from "@angular/core";
4
- import * as i1 from "@pepperi-addons/ngx-lib/dialog";
5
- import * as i2 from "../data-view-builder.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@angular/cdk/drag-drop";
8
- import * as i5 from "@angular/material/icon";
9
- import * as i6 from "@pepperi-addons/ngx-lib/button";
10
- import * as i7 from "@pepperi-addons/ngx-lib/icon";
11
- import * as i8 from "@pepperi-addons/ngx-lib/textbox";
12
- import * as i9 from "@ngx-translate/core";
4
+ import * as i1 from "@ngx-translate/core";
5
+ import * as i2 from "@pepperi-addons/ngx-lib/dialog";
6
+ import * as i3 from "../data-view-builder.service";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "@angular/cdk/drag-drop";
9
+ import * as i6 from "@angular/material/icon";
10
+ import * as i7 from "@pepperi-addons/ngx-lib/button";
11
+ import * as i8 from "@pepperi-addons/ngx-lib/icon";
12
+ import * as i9 from "@pepperi-addons/ngx-lib/textbox";
13
13
  export class MenuDataViewComponent {
14
- constructor(dialogService, dataViewBuilderService) {
14
+ constructor(translate, dialogService, dataViewBuilderService) {
15
+ this.translate = translate;
15
16
  this.dialogService = dialogService;
16
17
  this.dataViewBuilderService = dataViewBuilderService;
17
18
  this.fields = []; // The data view fields.
18
19
  this.availableFieldsTitles = new Map(); // <FieldID, Original Title> from the available fields.
19
20
  this.emptyDropAreaId = '';
20
21
  this.mappedFieldsId = '';
22
+ this.showAddSeparator = true;
23
+ this.itemKeyLabel = '';
24
+ this.itemTitleLabel = '';
21
25
  this.fieldsChange = new EventEmitter();
22
26
  this.isGrabbing = false;
23
27
  this.dialogRef = null;
@@ -47,7 +51,16 @@ export class MenuDataViewComponent {
47
51
  this.fieldsChange.emit(this.fields);
48
52
  }
49
53
  ngOnInit() {
50
- //
54
+ if (this.itemKeyLabel == '') {
55
+ this.translate.get('DATA_VIEW_BUILDER.MENU_ITEM_KEY_TITLE').toPromise().then((res) => {
56
+ this.itemKeyLabel = res;
57
+ });
58
+ }
59
+ if (this.itemTitleLabel == '') {
60
+ this.translate.get('DATA_VIEW_BUILDER.MENU_ITEM_VALUE_TITLE').toPromise().then((res) => {
61
+ this.itemTitleLabel = res;
62
+ });
63
+ }
51
64
  }
52
65
  addSeparator(index) {
53
66
  const menuField = { FieldID: '', Title: '' };
@@ -95,12 +108,12 @@ export class MenuDataViewComponent {
95
108
  this.dialogRef?.close(value);
96
109
  }
97
110
  }
98
- MenuDataViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: MenuDataViewComponent, deps: [{ token: i1.PepDialogService }, { token: i2.DataViewBuilderService }], target: i0.ɵɵFactoryTarget.Component });
99
- MenuDataViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: MenuDataViewComponent, selector: "menu-data-view", inputs: { fields: "fields", availableFieldsTitles: "availableFieldsTitles", emptyDropAreaId: "emptyDropAreaId", mappedFieldsId: "mappedFieldsId" }, outputs: { fieldsChange: "fieldsChange" }, viewQueries: [{ propertyName: "separatorTitleModalTemplate", first: true, predicate: ["separatorTitleModalTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n<ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n</ng-template>\n<ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let menuField of fields; let i = index\" >\n <div class=\"mapped-field-container\" [ngClass]=\"{ 'separator-container': menuField.FieldID === '' }\" \n cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <ng-container *ngTemplateOutlet=\"mappedFieldTemplate; context: { menuField: menuField }\"></ng-container>\n </div>\n <div *ngIf=\"!isGrabbing\" class=\"add-separator-container\">\n <pep-button class=\"add-separator\" styleType=\"regular\" sizeType=\"sm\" iconName=\"number_plus\" \n [value]=\"'DATA_VIEW_BUILDER.ADD_SEPARATOR' | translate\" (buttonClick)=\"addSeparator(i+1)\"></pep-button>\n </div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #mappedFieldTemplate let-menuField=\"menuField\">\n <ng-container *ngIf=\"menuField.FieldID !== ''; then menuItemTemplate; else separatorTemplate\"></ng-container>\n\n <ng-template #menuItemTemplate>\n <div class=\"fields-wrapper\">\n <pep-textbox [label]=\"'DATA_VIEW_BUILDER.MENU_ITEM_KEY_TITLE' | translate\" [value]=\"menuField.FieldID\" [disabled]=\"true\">\n </pep-textbox>\n \n <pep-textbox [label]=\"'DATA_VIEW_BUILDER.MENU_ITEM_VALUE_TITLE' | translate\" [hint]=\"'(' + (availableFieldsTitles.get(menuField.FieldID) || '') + ')'\"\n [value]=\"menuField.Title\" (valueChange)=\"onTitleChanged($event, menuField)\">\n </pep-textbox>\n \n <pep-button class=\"center-button\" iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </ng-template>\n <ng-template #separatorTemplate>\n <div class=\"separator-wrapper \">\n <div class=\"pep-spacing-element title title-md color-dimmed\">\n <span [title]=\"menuField.Title\">{{ menuField.Title }}</span>\n </div>\n <div class=\"list-actions\">\n <pep-button iconName=\"system_edit\" [title]=\"'ACTIONS.EDIT' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onEditSeparatorField($event, menuField)\"></pep-button>\n <pep-button iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #separatorTitleModalTemplate let-data>\n <pep-dialog [title]=\"'DATA_VIEW_BUILDER.SEPARATOR_TITLE' | translate\">\n <ng-container pep-dialog-content>\n <pep-textbox #txt [label]=\"'DATA_VIEW_BUILDER.ADD_A_TITLE' | translate\" [(value)]=\"data.value\">\n </pep-textbox>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button md weak\"\n (click)=\"closeDialog()\">\n {{'Cancel' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\"\n (click)=\"setDialogValue(txt.value)\">\n {{ 'Save' | translate}}\n </button>\n </div>\n </ng-container>\n </pep-dialog>\n</ng-template>", styles: ["html body.inheritCursors *{cursor:inherit!important}.cdk-drag-preview.mapped-field-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.cdk-drag-preview.mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.cdk-drag-preview.mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.drop-field-here-area{min-height:5rem;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.12);position:relative}.drop-field-here-area:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.drop-field-here-area:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),calc(var(--pep-color-system-primary-l, 10%) + 30%))}.drop-field-here-area.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{display:none}.mapped-fields-area{display:flex;flex-direction:column;column-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area:not(.no-row-gap){row-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5);height:2.5rem}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container{cursor:grab;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.mapped-fields-area .mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.mapped-fields-area .mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .fields-wrapper,.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .separator-wrapper{opacity:0}.mapped-fields-area .add-separator-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);height:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container .add-separator{position:relative;display:none}.mapped-fields-area .add-separator-container:hover .add-separator{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i1.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: i7.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i8.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "minFractionDigits", "maxFractionDigits", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey", "regex", "regexError", "isInFocus"], outputs: ["valueChange", "keyup"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] });
111
+ MenuDataViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: MenuDataViewComponent, deps: [{ token: i1.TranslateService }, { token: i2.PepDialogService }, { token: i3.DataViewBuilderService }], target: i0.ɵɵFactoryTarget.Component });
112
+ MenuDataViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: MenuDataViewComponent, selector: "menu-data-view", inputs: { fields: "fields", availableFieldsTitles: "availableFieldsTitles", emptyDropAreaId: "emptyDropAreaId", mappedFieldsId: "mappedFieldsId", showAddSeparator: "showAddSeparator", itemKeyLabel: "itemKeyLabel", itemTitleLabel: "itemTitleLabel" }, outputs: { fieldsChange: "fieldsChange" }, viewQueries: [{ propertyName: "separatorTitleModalTemplate", first: true, predicate: ["separatorTitleModalTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n<ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n</ng-template>\n<ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let menuField of fields; let i = index\" >\n <div class=\"mapped-field-container\" [ngClass]=\"{ 'separator-container': menuField.FieldID === '' }\" \n cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <ng-container *ngTemplateOutlet=\"mappedFieldTemplate; context: { menuField: menuField }\"></ng-container>\n </div>\n <div *ngIf=\"!isGrabbing\" class=\"add-separator-container\">\n <pep-button *ngIf=\"showAddSeparator\" class=\"add-separator\" styleType=\"regular\" sizeType=\"sm\" iconName=\"number_plus\" \n [value]=\"'DATA_VIEW_BUILDER.ADD_SEPARATOR' | translate\" (buttonClick)=\"addSeparator(i+1)\"></pep-button>\n </div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #mappedFieldTemplate let-menuField=\"menuField\">\n <ng-container *ngIf=\"menuField.FieldID !== ''; then menuItemTemplate; else separatorTemplate\"></ng-container>\n\n <ng-template #menuItemTemplate>\n <div class=\"fields-wrapper\">\n <pep-textbox [label]=\"itemKeyLabel\" [value]=\"menuField.FieldID\" [disabled]=\"true\">\n </pep-textbox>\n \n <pep-textbox [label]=\"itemTitleLabel\" [hint]=\"'(' + (availableFieldsTitles.get(menuField.FieldID) || '') + ')'\"\n [value]=\"menuField.Title\" (valueChange)=\"onTitleChanged($event, menuField)\">\n </pep-textbox>\n \n <pep-button class=\"center-button\" iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </ng-template>\n <ng-template #separatorTemplate>\n <div class=\"separator-wrapper \">\n <div class=\"pep-spacing-element title title-md color-dimmed\">\n <span [title]=\"menuField.Title\">{{ menuField.Title }}</span>\n </div>\n <div class=\"list-actions\">\n <pep-button iconName=\"system_edit\" [title]=\"'ACTIONS.EDIT' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onEditSeparatorField($event, menuField)\"></pep-button>\n <pep-button iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #separatorTitleModalTemplate let-data>\n <pep-dialog [title]=\"'DATA_VIEW_BUILDER.SEPARATOR_TITLE' | translate\">\n <ng-container pep-dialog-content>\n <pep-textbox #txt [label]=\"'DATA_VIEW_BUILDER.ADD_A_TITLE' | translate\" [(value)]=\"data.value\">\n </pep-textbox>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button md weak\"\n (click)=\"closeDialog()\">\n {{'Cancel' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\"\n (click)=\"setDialogValue(txt.value)\">\n {{ 'Save' | translate}}\n </button>\n </div>\n </ng-container>\n </pep-dialog>\n</ng-template>\n", styles: ["html body.inheritCursors *{cursor:inherit!important}.cdk-drag-preview.mapped-field-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.cdk-drag-preview.mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.cdk-drag-preview.mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.drop-field-here-area{min-height:5rem;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.12);position:relative}.drop-field-here-area:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.drop-field-here-area:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),calc(var(--pep-color-system-primary-l, 10%) + 30%))}.drop-field-here-area.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{display:none}.mapped-fields-area{display:flex;flex-direction:column;column-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area:not(.no-row-gap){row-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5);height:2.5rem}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container{cursor:grab;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.mapped-fields-area .mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.mapped-fields-area .mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .fields-wrapper,.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .separator-wrapper{opacity:0}.mapped-fields-area .add-separator-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);height:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container .add-separator{position:relative;display:none}.mapped-fields-area .add-separator-container:hover .add-separator{display:block}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i2.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: i8.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i9.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "minFractionDigits", "maxFractionDigits", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey", "regex", "regexError", "isInFocus"], outputs: ["valueChange", "keyup"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
100
113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: MenuDataViewComponent, decorators: [{
101
114
  type: Component,
102
- args: [{ selector: 'menu-data-view', template: "<ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n<ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n</ng-template>\n<ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let menuField of fields; let i = index\" >\n <div class=\"mapped-field-container\" [ngClass]=\"{ 'separator-container': menuField.FieldID === '' }\" \n cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <ng-container *ngTemplateOutlet=\"mappedFieldTemplate; context: { menuField: menuField }\"></ng-container>\n </div>\n <div *ngIf=\"!isGrabbing\" class=\"add-separator-container\">\n <pep-button class=\"add-separator\" styleType=\"regular\" sizeType=\"sm\" iconName=\"number_plus\" \n [value]=\"'DATA_VIEW_BUILDER.ADD_SEPARATOR' | translate\" (buttonClick)=\"addSeparator(i+1)\"></pep-button>\n </div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #mappedFieldTemplate let-menuField=\"menuField\">\n <ng-container *ngIf=\"menuField.FieldID !== ''; then menuItemTemplate; else separatorTemplate\"></ng-container>\n\n <ng-template #menuItemTemplate>\n <div class=\"fields-wrapper\">\n <pep-textbox [label]=\"'DATA_VIEW_BUILDER.MENU_ITEM_KEY_TITLE' | translate\" [value]=\"menuField.FieldID\" [disabled]=\"true\">\n </pep-textbox>\n \n <pep-textbox [label]=\"'DATA_VIEW_BUILDER.MENU_ITEM_VALUE_TITLE' | translate\" [hint]=\"'(' + (availableFieldsTitles.get(menuField.FieldID) || '') + ')'\"\n [value]=\"menuField.Title\" (valueChange)=\"onTitleChanged($event, menuField)\">\n </pep-textbox>\n \n <pep-button class=\"center-button\" iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </ng-template>\n <ng-template #separatorTemplate>\n <div class=\"separator-wrapper \">\n <div class=\"pep-spacing-element title title-md color-dimmed\">\n <span [title]=\"menuField.Title\">{{ menuField.Title }}</span>\n </div>\n <div class=\"list-actions\">\n <pep-button iconName=\"system_edit\" [title]=\"'ACTIONS.EDIT' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onEditSeparatorField($event, menuField)\"></pep-button>\n <pep-button iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #separatorTitleModalTemplate let-data>\n <pep-dialog [title]=\"'DATA_VIEW_BUILDER.SEPARATOR_TITLE' | translate\">\n <ng-container pep-dialog-content>\n <pep-textbox #txt [label]=\"'DATA_VIEW_BUILDER.ADD_A_TITLE' | translate\" [(value)]=\"data.value\">\n </pep-textbox>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button md weak\"\n (click)=\"closeDialog()\">\n {{'Cancel' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\"\n (click)=\"setDialogValue(txt.value)\">\n {{ 'Save' | translate}}\n </button>\n </div>\n </ng-container>\n </pep-dialog>\n</ng-template>", styles: ["html body.inheritCursors *{cursor:inherit!important}.cdk-drag-preview.mapped-field-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.cdk-drag-preview.mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.cdk-drag-preview.mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.drop-field-here-area{min-height:5rem;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.12);position:relative}.drop-field-here-area:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.drop-field-here-area:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),calc(var(--pep-color-system-primary-l, 10%) + 30%))}.drop-field-here-area.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{display:none}.mapped-fields-area{display:flex;flex-direction:column;column-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area:not(.no-row-gap){row-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5);height:2.5rem}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container{cursor:grab;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.mapped-fields-area .mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.mapped-fields-area .mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .fields-wrapper,.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .separator-wrapper{opacity:0}.mapped-fields-area .add-separator-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);height:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container .add-separator{position:relative;display:none}.mapped-fields-area .add-separator-container:hover .add-separator{display:block}\n"] }]
103
- }], ctorParameters: function () { return [{ type: i1.PepDialogService }, { type: i2.DataViewBuilderService }]; }, propDecorators: { separatorTitleModalTemplate: [{
115
+ args: [{ selector: 'menu-data-view', template: "<ng-container *ngIf=\"fields === null || fields.length === 0; then emptyTemplate; else notEmptyTemplate\"></ng-container>\n<ng-template #emptyTemplate>\n <div [id]=\"emptyDropAreaId\" class=\"drop-field-here-area\" cdkDropList (cdkDropListDropped)=\"onDropField($event)\">\n <mat-icon class=\"pep-spacing-element\">\n <pep-icon name=\"arrow_down_alt\"></pep-icon>\n </mat-icon>\n <span class=\"body-sm ellipsis\">\n {{ 'DATA_VIEW_BUILDER.EMPTY_DROP_AREA_TEXT' | translate }}\n </span> \n </div>\n</ng-template>\n<ng-template #notEmptyTemplate>\n <div [id]=\"mappedFieldsId\" class=\"mapped-fields-area\" [ngClass]=\"{ 'no-row-gap': !isGrabbing }\"\n cdkDropList [cdkDropListData]=\"fields\" (cdkDropListDropped)=\"onDropField($event)\">\n <ng-container *ngFor=\"let menuField of fields; let i = index\" >\n <div class=\"mapped-field-container\" [ngClass]=\"{ 'separator-container': menuField.FieldID === '' }\" \n cdkDrag (cdkDragStarted)=\"onDragStart($event)\" (cdkDragEnded)=\"onDragEnd($event)\">\n <ng-container *ngTemplateOutlet=\"mappedFieldTemplate; context: { menuField: menuField }\"></ng-container>\n </div>\n <div *ngIf=\"!isGrabbing\" class=\"add-separator-container\">\n <pep-button *ngIf=\"showAddSeparator\" class=\"add-separator\" styleType=\"regular\" sizeType=\"sm\" iconName=\"number_plus\" \n [value]=\"'DATA_VIEW_BUILDER.ADD_SEPARATOR' | translate\" (buttonClick)=\"addSeparator(i+1)\"></pep-button>\n </div>\n </ng-container>\n </div>\n</ng-template>\n\n<ng-template #mappedFieldTemplate let-menuField=\"menuField\">\n <ng-container *ngIf=\"menuField.FieldID !== ''; then menuItemTemplate; else separatorTemplate\"></ng-container>\n\n <ng-template #menuItemTemplate>\n <div class=\"fields-wrapper\">\n <pep-textbox [label]=\"itemKeyLabel\" [value]=\"menuField.FieldID\" [disabled]=\"true\">\n </pep-textbox>\n \n <pep-textbox [label]=\"itemTitleLabel\" [hint]=\"'(' + (availableFieldsTitles.get(menuField.FieldID) || '') + ')'\"\n [value]=\"menuField.Title\" (valueChange)=\"onTitleChanged($event, menuField)\">\n </pep-textbox>\n \n <pep-button class=\"center-button\" iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </ng-template>\n <ng-template #separatorTemplate>\n <div class=\"separator-wrapper \">\n <div class=\"pep-spacing-element title title-md color-dimmed\">\n <span [title]=\"menuField.Title\">{{ menuField.Title }}</span>\n </div>\n <div class=\"list-actions\">\n <pep-button iconName=\"system_edit\" [title]=\"'ACTIONS.EDIT' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onEditSeparatorField($event, menuField)\"></pep-button>\n <pep-button iconName=\"system_bin\" [title]=\"'ACTIONS.DELETE' | translate\" sizeType=\"xs\" styleType=\"regular\" (buttonClick)=\"onDeleteMappedField($event, menuField)\"></pep-button>\n </div>\n </div>\n </ng-template>\n</ng-template>\n\n<ng-template #separatorTitleModalTemplate let-data>\n <pep-dialog [title]=\"'DATA_VIEW_BUILDER.SEPARATOR_TITLE' | translate\">\n <ng-container pep-dialog-content>\n <pep-textbox #txt [label]=\"'DATA_VIEW_BUILDER.ADD_A_TITLE' | translate\" [(value)]=\"data.value\">\n </pep-textbox>\n </ng-container>\n <ng-container pep-dialog-actions>\n <div class=\"pep-spacing-element-negative\">\n <button mat-button class=\"pep-spacing-element pep-button md weak\"\n (click)=\"closeDialog()\">\n {{'Cancel' | translate}}\n </button>\n <button mat-button class=\"pep-spacing-element pep-button md strong\"\n (click)=\"setDialogValue(txt.value)\">\n {{ 'Save' | translate}}\n </button>\n </div>\n </ng-container>\n </pep-dialog>\n</ng-template>\n", styles: ["html body.inheritCursors *{cursor:inherit!important}.cdk-drag-preview.mapped-field-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.cdk-drag-preview.mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.cdk-drag-preview.mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.cdk-drag-preview.mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.cdk-drag-preview.mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.drop-field-here-area{min-height:5rem;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsla(var(--pep-color-weak-h, 0),var(--pep-color-weak-s, 0%),var(--pep-color-weak-l, 10%),.12);position:relative}.drop-field-here-area:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.drop-field-here-area:after{z-index:0;content:\"\";transition:all .25s;display:block;position:absolute;inset:0;border-radius:inherit;border:1px dashed hsl(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),calc(var(--pep-color-system-primary-l, 10%) + 30%))}.drop-field-here-area.cdk-drop-list-dragging{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging:hover{background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 20%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.drop-field-here-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{display:none}.mapped-fields-area{display:flex;flex-direction:column;column-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area:not(.no-row-gap){row-gap:var(--pep-spacing-lg, 1rem)}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5);height:2.5rem}.mapped-fields-area.cdk-drop-list-dragging ::ng-deep .placeholder-item:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container{cursor:grab;max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .mapped-field-container:not(.separator-container){gap:calc(var(--pep-spacing-lg, 1rem) * 2);background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .fields-wrapper{display:grid;width:100%;grid-template-columns:1fr 1fr auto;gap:.5rem;padding-top:.5rem}.mapped-fields-area .mapped-field-container .fields-wrapper .center-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}.mapped-fields-area .mapped-field-container .separator-wrapper{display:grid;width:100%;grid-template-columns:1fr auto;padding-bottom:var(--pep-spacing-xs, .25rem);border-bottom:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%))}.mapped-fields-area .mapped-field-container .separator-wrapper .list-actions{display:flex;gap:var(--pep-spacing-xs, .25rem)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder{box-shadow:0 0 0 var(--pep-spacing-xs, .25rem) hsla(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%),.5)}.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .fields-wrapper,.mapped-fields-area .mapped-field-container.cdk-drag-placeholder .separator-wrapper{opacity:0}.mapped-fields-area .add-separator-container{max-width:600px;display:flex;justify-content:center;align-items:center;border-radius:var(--pep-border-radius-md, .25rem);height:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container:not(.separator-container){padding-inline:var(--pep-spacing-lg, 1rem)}.mapped-fields-area .add-separator-container .add-separator{position:relative;display:none}.mapped-fields-area .add-separator-container:hover .add-separator{display:block}\n"] }]
116
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }, { type: i2.PepDialogService }, { type: i3.DataViewBuilderService }]; }, propDecorators: { separatorTitleModalTemplate: [{
104
117
  type: ViewChild,
105
118
  args: ['separatorTitleModalTemplate', { read: TemplateRef }]
106
119
  }], fields: [{
@@ -111,7 +124,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
111
124
  type: Input
112
125
  }], mappedFieldsId: [{
113
126
  type: Input
127
+ }], showAddSeparator: [{
128
+ type: Input
129
+ }], itemKeyLabel: [{
130
+ type: Input
131
+ }], itemTitleLabel: [{
132
+ type: Input
114
133
  }], fieldsChange: [{
115
134
  type: Output
116
135
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kYXRhLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvbWVudS1kYXRhLXZpZXcvbWVudS1kYXRhLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvbWVudS1kYXRhLXZpZXcvbWVudS1kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBY3ZHLE1BQU0sT0FBTyxxQkFBcUI7SUFxQjlCLFlBQ1ksYUFBK0IsRUFDL0Isc0JBQThDO1FBRDlDLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBbkIxRCxXQUFNLEdBQXlCLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QjtRQUczRCwwQkFBcUIsR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUMsQ0FBQyx1REFBdUQ7UUFHL0gsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFHckIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFHcEIsaUJBQVksR0FBa0MsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFFbEYsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNYLGNBQVMsR0FBNkIsSUFBSSxDQUFDO1FBTS9DLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXLENBQUMsYUFBZ0MsRUFBRSxLQUFhO1FBQy9ELHlDQUF5QztRQUN6QyxNQUFNLFNBQVMsR0FBc0IsRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNyRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsS0FBYSxFQUFFLFdBQW1CLEVBQUUsSUFBd0I7UUFDbkYsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2hEO2FBQU07WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sV0FBVyxDQUFDLFNBQTRCLEVBQUUsS0FBYTtRQUMzRCxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNKLEVBQUU7SUFDTixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDdEIsTUFBTSxTQUFTLEdBQXNCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDaEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFtQjtRQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBaUI7UUFDdkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXlCO1FBQ2pDLElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDN0MsZUFBZSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1NBQzdCO2FBQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxlQUFlLEVBQUU7WUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNGO2FBQU07WUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzRjtJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBYSxFQUFFLFNBQTRCO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUEyQixFQUFFLFNBQTRCO1FBQ3pFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBQzVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUEyQixFQUFFLFNBQTRCO1FBQzFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzdHLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDbEQsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFO2dCQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUMzQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUE0QixTQUFTO1FBQzdDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O2tIQTdHUSxxQkFBcUI7c0dBQXJCLHFCQUFxQiw0V0FDb0IsV0FBVyw2QkNoQmpFLDR1SUEwRWM7MkZEM0RELHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxnQkFBZ0I7NElBS3VDLDJCQUEyQjtzQkFBM0YsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRy9ELE1BQU07c0JBREwsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixZQUFZO3NCQURYLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtEcmFnRHJvcCwgQ2RrRHJhZ0VuZCwgQ2RrRHJhZ1N0YXJ0LCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJUGVwQnV0dG9uQ2xpY2tFdmVudCB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL2J1dHRvbic7XG5pbXBvcnQgeyBQZXBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZGlhbG9nJztcbmltcG9ydCB7IElQZXBEcmFnZ2FibGVJdGVtIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvZHJhZ2dhYmxlLWl0ZW1zJztcbmltcG9ydCB7IERhdGFWaWV3RmllbGQsIE1lbnVEYXRhVmlld0ZpZWxkIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL3BhcGktc2RrJztcbmltcG9ydCB7IERhdGFWaWV3QnVpbGRlclNlcnZpY2UgfSBmcm9tICcuLi9kYXRhLXZpZXctYnVpbGRlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtZW51LWRhdGEtdmlldycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL21lbnUtZGF0YS12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tZW51LWRhdGEtdmlldy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVEYXRhVmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnc2VwYXJhdG9yVGl0bGVNb2RhbFRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBzZXBhcmF0b3JUaXRsZU1vZGFsVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQElucHV0KCkgXG4gICAgZmllbGRzOiBBcnJheTxEYXRhVmlld0ZpZWxkPiA9IFtdOyAvLyBUaGUgZGF0YSB2aWV3IGZpZWxkcy5cblxuICAgIEBJbnB1dCgpXG4gICAgYXZhaWxhYmxlRmllbGRzVGl0bGVzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTsgLy8gPEZpZWxkSUQsIE9yaWdpbmFsIFRpdGxlPiBmcm9tIHRoZSBhdmFpbGFibGUgZmllbGRzLlxuXG4gICAgQElucHV0KCkgXG4gICAgZW1wdHlEcm9wQXJlYUlkID0gJyc7XG5cbiAgICBASW5wdXQoKSBcbiAgICBtYXBwZWRGaWVsZHNJZCA9ICcnO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZmllbGRzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RGF0YVZpZXdGaWVsZFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0YVZpZXdGaWVsZFtdPigpO1xuICAgIFxuICAgIGlzR3JhYmJpbmcgPSBmYWxzZTtcbiAgICBwcml2YXRlIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlOiBQZXBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRhdGFWaWV3QnVpbGRlclNlcnZpY2U6IERhdGFWaWV3QnVpbGRlclNlcnZpY2VcbiAgICApIHsgXG4gICAgICAgIHRoaXMuZGF0YVZpZXdCdWlsZGVyU2VydmljZS5pc0dyYWJiaW5nQ2hhbmdlJC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzR3JhYmJpbmcgPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgYWRkTmV3RmllbGQoZHJhZ2dhYmxlSXRlbTogSVBlcERyYWdnYWJsZUl0ZW0sIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgLy8gQWRkIG5ldyBtZW51RmllbGQgdG8gdGhlIG1hcHBlZEZpZWxkcy5cbiAgICAgICAgY29uc3QgbWVudUZpZWxkOiBNZW51RGF0YVZpZXdGaWVsZCA9IHsgRmllbGRJRDogZHJhZ2dhYmxlSXRlbS5kYXRhLmtleSwgVGl0bGU6IGRyYWdnYWJsZUl0ZW0udGl0bGUgfTtcbiAgICAgICAgdGhpcy5zcGxpY2VNYXBwZWRGaWVsZHMoaW5kZXgsIDAsIG1lbnVGaWVsZCk7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgc3BsaWNlTWFwcGVkRmllbGRzKHN0YXJ0OiBudW1iZXIsIGRlbGV0ZUNvdW50OiBudW1iZXIsIGl0ZW0/OiBNZW51RGF0YVZpZXdGaWVsZCkge1xuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5maWVsZHMuc3BsaWNlKHN0YXJ0LCBkZWxldGVDb3VudCwgaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkcy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubm90aWZ5RmllbGRzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VUaXRsZShtZW51RmllbGQ6IE1lbnVEYXRhVmlld0ZpZWxkLCB0aXRsZTogc3RyaW5nKSB7XG4gICAgICAgIG1lbnVGaWVsZC5UaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLm5vdGlmeUZpZWxkc0NoYW5nZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5RmllbGRzQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLmZpZWxkc0NoYW5nZS5lbWl0KHRoaXMuZmllbGRzKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgLy9cbiAgICB9XG5cbiAgICBhZGRTZXBhcmF0b3IoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtZW51RmllbGQ6IE1lbnVEYXRhVmlld0ZpZWxkID0geyBGaWVsZElEOiAnJywgVGl0bGU6ICcnIH07XG4gICAgICAgIHRoaXMuc3BsaWNlTWFwcGVkRmllbGRzKGluZGV4LCAwLCBtZW51RmllbGQpO1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhVmlld0J1aWxkZXJTZXJ2aWNlLm9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5kYXRhVmlld0J1aWxkZXJTZXJ2aWNlLm9uRHJhZ0VuZChldmVudCk7XG4gICAgfVxuICAgIFxuICAgIG9uRHJvcEZpZWxkKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RmllbGRzQ2hhbmdlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29udGFpbmVyLmlkID09PSAnZW1wdHlEcm9wQXJlYScpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3RmllbGQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XSwgdGhpcy5maWVsZHMubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3RmllbGQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XSwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGl0bGVDaGFuZ2VkKGV2ZW50OiBzdHJpbmcsIG1lbnVGaWVsZDogTWVudURhdGFWaWV3RmllbGQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VUaXRsZShtZW51RmllbGQsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZU1hcHBlZEZpZWxkKGV2ZW50OiBJUGVwQnV0dG9uQ2xpY2tFdmVudCwgbWVudUZpZWxkOiBNZW51RGF0YVZpZXdGaWVsZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmllbGRzLmZpbmRJbmRleChtcyA9PiBtcyA9PT0gbWVudUZpZWxkKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc3BsaWNlTWFwcGVkRmllbGRzKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRWRpdFNlcGFyYXRvckZpZWxkKGV2ZW50OiBJUGVwQnV0dG9uQ2xpY2tFdmVudCwgbWVudUZpZWxkOiBNZW51RGF0YVZpZXdGaWVsZCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKHRoaXMuc2VwYXJhdG9yVGl0bGVNb2RhbFRlbXBsYXRlLCB7IHZhbHVlOiBtZW51RmllbGQuVGl0bGUgfSk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCh0aXRsZVZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGl0bGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VUaXRsZShtZW51RmllbGQsIHRpdGxlVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXREaWFsb2dWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2codmFsdWUpO1xuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKHZhbHVlKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGRzID09PSBudWxsIHx8IGZpZWxkcy5sZW5ndGggPT09IDA7IHRoZW4gZW1wdHlUZW1wbGF0ZTsgZWxzZSBub3RFbXB0eVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG48bmctdGVtcGxhdGUgI2VtcHR5VGVtcGxhdGU+XG4gICAgPGRpdiBbaWRdPVwiZW1wdHlEcm9wQXJlYUlkXCIgY2xhc3M9XCJkcm9wLWZpZWxkLWhlcmUtYXJlYVwiIGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wRmllbGQoJGV2ZW50KVwiPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50XCI+XG4gICAgICAgICAgICA8cGVwLWljb24gbmFtZT1cImFycm93X2Rvd25fYWx0XCI+PC9wZXAtaWNvbj5cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJib2R5LXNtIGVsbGlwc2lzXCI+XG4gICAgICAgICAgICB7eyAnREFUQV9WSUVXX0JVSUxERVIuRU1QVFlfRFJPUF9BUkVBX1RFWFQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj4gXG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNub3RFbXB0eVRlbXBsYXRlPlxuICAgIDxkaXYgW2lkXT1cIm1hcHBlZEZpZWxkc0lkXCIgY2xhc3M9XCJtYXBwZWQtZmllbGRzLWFyZWFcIiBbbmdDbGFzc109XCJ7ICduby1yb3ctZ2FwJzogIWlzR3JhYmJpbmcgfVwiXG4gICAgICAgIGNka0Ryb3BMaXN0IFtjZGtEcm9wTGlzdERhdGFdPVwiZmllbGRzXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJvbkRyb3BGaWVsZCgkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lbnVGaWVsZCBvZiBmaWVsZHM7IGxldCBpID0gaW5kZXhcIiA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFwcGVkLWZpZWxkLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgJ3NlcGFyYXRvci1jb250YWluZXInOiBtZW51RmllbGQuRmllbGRJRCA9PT0gJycgfVwiIFxuICAgICAgICAgICAgICAgIGNka0RyYWcgKGNka0RyYWdTdGFydGVkKT1cIm9uRHJhZ1N0YXJ0KCRldmVudClcIiAoY2RrRHJhZ0VuZGVkKT1cIm9uRHJhZ0VuZCgkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hcHBlZEZpZWxkVGVtcGxhdGU7IGNvbnRleHQ6IHsgbWVudUZpZWxkOiBtZW51RmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWlzR3JhYmJpbmdcIiBjbGFzcz1cImFkZC1zZXBhcmF0b3ItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPHBlcC1idXR0b24gY2xhc3M9XCJhZGQtc2VwYXJhdG9yXCIgc3R5bGVUeXBlPVwicmVndWxhclwiIHNpemVUeXBlPVwic21cIiBpY29uTmFtZT1cIm51bWJlcl9wbHVzXCIgXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCInREFUQV9WSUVXX0JVSUxERVIuQUREX1NFUEFSQVRPUicgfCB0cmFuc2xhdGVcIiAoYnV0dG9uQ2xpY2spPVwiYWRkU2VwYXJhdG9yKGkrMSlcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hcHBlZEZpZWxkVGVtcGxhdGUgbGV0LW1lbnVGaWVsZD1cIm1lbnVGaWVsZFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZW51RmllbGQuRmllbGRJRCAhPT0gJyc7IHRoZW4gbWVudUl0ZW1UZW1wbGF0ZTsgZWxzZSBzZXBhcmF0b3JUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNtZW51SXRlbVRlbXBsYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRzLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxwZXAtdGV4dGJveCBbbGFiZWxdPVwiJ0RBVEFfVklFV19CVUlMREVSLk1FTlVfSVRFTV9LRVlfVElUTEUnIHwgdHJhbnNsYXRlXCIgW3ZhbHVlXT1cIm1lbnVGaWVsZC5GaWVsZElEXCIgW2Rpc2FibGVkXT1cInRydWVcIj5cbiAgICAgICAgICAgIDwvcGVwLXRleHRib3g+XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIDxwZXAtdGV4dGJveCBbbGFiZWxdPVwiJ0RBVEFfVklFV19CVUlMREVSLk1FTlVfSVRFTV9WQUxVRV9USVRMRScgfCB0cmFuc2xhdGVcIiBbaGludF09XCInKCcgKyAoYXZhaWxhYmxlRmllbGRzVGl0bGVzLmdldChtZW51RmllbGQuRmllbGRJRCkgfHwgJycpICsgJyknXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibWVudUZpZWxkLlRpdGxlXCIgKHZhbHVlQ2hhbmdlKT1cIm9uVGl0bGVDaGFuZ2VkKCRldmVudCwgbWVudUZpZWxkKVwiPlxuICAgICAgICAgICAgPC9wZXAtdGV4dGJveD5cbiAgICBcbiAgICAgICAgICAgIDxwZXAtYnV0dG9uIGNsYXNzPVwiY2VudGVyLWJ1dHRvblwiIGljb25OYW1lPVwic3lzdGVtX2JpblwiIFt0aXRsZV09XCInQUNUSU9OUy5ERUxFVEUnIHwgdHJhbnNsYXRlXCIgKGJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlTWFwcGVkRmllbGQoJGV2ZW50LCBtZW51RmllbGQpXCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VwYXJhdG9yVGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZXBhcmF0b3Itd3JhcHBlciBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHRpdGxlIHRpdGxlLW1kIGNvbG9yLWRpbW1lZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFt0aXRsZV09XCJtZW51RmllbGQuVGl0bGVcIj57eyBtZW51RmllbGQuVGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICA8cGVwLWJ1dHRvbiBpY29uTmFtZT1cInN5c3RlbV9lZGl0XCIgW3RpdGxlXT1cIidBQ1RJT05TLkVESVQnIHwgdHJhbnNsYXRlXCIgc2l6ZVR5cGU9XCJ4c1wiIHN0eWxlVHlwZT1cInJlZ3VsYXJcIiAoYnV0dG9uQ2xpY2spPVwib25FZGl0U2VwYXJhdG9yRmllbGQoJGV2ZW50LCBtZW51RmllbGQpXCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxwZXAtYnV0dG9uIGljb25OYW1lPVwic3lzdGVtX2JpblwiIFt0aXRsZV09XCInQUNUSU9OUy5ERUxFVEUnIHwgdHJhbnNsYXRlXCIgc2l6ZVR5cGU9XCJ4c1wiIHN0eWxlVHlwZT1cInJlZ3VsYXJcIiAoYnV0dG9uQ2xpY2spPVwib25EZWxldGVNYXBwZWRGaWVsZCgkZXZlbnQsIG1lbnVGaWVsZClcIj48L3BlcC1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc2VwYXJhdG9yVGl0bGVNb2RhbFRlbXBsYXRlIGxldC1kYXRhPlxuICAgIDxwZXAtZGlhbG9nIFt0aXRsZV09XCInREFUQV9WSUVXX0JVSUxERVIuU0VQQVJBVE9SX1RJVExFJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyIHBlcC1kaWFsb2ctY29udGVudD5cbiAgICAgICAgICAgIDxwZXAtdGV4dGJveCAjdHh0IFtsYWJlbF09XCInREFUQV9WSUVXX0JVSUxERVIuQUREX0FfVElUTEUnIHwgdHJhbnNsYXRlXCIgWyh2YWx1ZSldPVwiZGF0YS52YWx1ZVwiPlxuICAgICAgICAgICAgPC9wZXAtdGV4dGJveD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgcGVwLWRpYWxvZy1hY3Rpb25zPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnQtbmVnYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHBlcC1idXR0b24gbWQgd2Vha1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURpYWxvZygpXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7J0NhbmNlbCcgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiBjbGFzcz1cInBlcC1zcGFjaW5nLWVsZW1lbnQgcGVwLWJ1dHRvbiBtZCBzdHJvbmdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0RGlhbG9nVmFsdWUodHh0LnZhbHVlKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvcGVwLWRpYWxvZz5cbjwvbmctdGVtcGxhdGU+Il19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1kYXRhLXZpZXcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvbWVudS1kYXRhLXZpZXcvbWVudS1kYXRhLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZGF0YS12aWV3LWJ1aWxkZXIvbWVudS1kYXRhLXZpZXcvbWVudS1kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF5QyxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNoRyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7O0FBY3ZHLE1BQU0sT0FBTyxxQkFBcUI7SUE4QjlCLFlBQ1ksU0FBMkIsRUFDM0IsYUFBK0IsRUFDL0Isc0JBQThDO1FBRjlDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUMvQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBN0IxRCxXQUFNLEdBQXlCLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QjtRQUczRCwwQkFBcUIsR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUMsQ0FBQyx1REFBdUQ7UUFHL0gsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFHckIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFHcEIscUJBQWdCLEdBQUcsSUFBSSxDQUFDO1FBR3hCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBR2xCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBR3BCLGlCQUFZLEdBQWtDLElBQUksWUFBWSxFQUFtQixDQUFDO1FBRWxGLGVBQVUsR0FBRyxLQUFLLENB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QUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUMzQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsQ0FBQyxLQUFhO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUE0QixTQUFTO1FBQzdDLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O2tIQWhJUSxxQkFBcUI7c0dBQXJCLHFCQUFxQixrZEFDb0IsV0FBVyw2QkNoQmpFLDJySUEyRUE7MkZENURhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDSSxnQkFBZ0I7MktBS3VDLDJCQUEyQjtzQkFBM0YsU0FBUzt1QkFBQyw2QkFBNkIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBRy9ELE1BQU07c0JBREwsS0FBSztnQkFJTixxQkFBcUI7c0JBRHBCLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLGNBQWM7c0JBRGIsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBDZGtEcmFnRW5kLCBDZGtEcmFnU3RhcnQsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IElQZXBCdXR0b25DbGlja0V2ZW50IH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvYnV0dG9uJztcbmltcG9ydCB7IFBlcERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kaWFsb2cnO1xuaW1wb3J0IHsgSVBlcERyYWdnYWJsZUl0ZW0gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9kcmFnZ2FibGUtaXRlbXMnO1xuaW1wb3J0IHsgRGF0YVZpZXdGaWVsZCwgTWVudURhdGFWaWV3RmllbGQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsnO1xuaW1wb3J0IHsgRGF0YVZpZXdCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uL2RhdGEtdmlldy1idWlsZGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21lbnUtZGF0YS12aWV3JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWVudS1kYXRhLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL21lbnUtZGF0YS12aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWVudURhdGFWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBAVmlld0NoaWxkKCdzZXBhcmF0b3JUaXRsZU1vZGFsVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIHNlcGFyYXRvclRpdGxlTW9kYWxUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASW5wdXQoKSBcbiAgICBmaWVsZHM6IEFycmF5PERhdGFWaWV3RmllbGQ+ID0gW107IC8vIFRoZSBkYXRhIHZpZXcgZmllbGRzLlxuXG4gICAgQElucHV0KClcbiAgICBhdmFpbGFibGVGaWVsZHNUaXRsZXM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpOyAvLyA8RmllbGRJRCwgT3JpZ2luYWwgVGl0bGU+IGZyb20gdGhlIGF2YWlsYWJsZSBmaWVsZHMuXG5cbiAgICBASW5wdXQoKSBcbiAgICBlbXB0eURyb3BBcmVhSWQgPSAnJztcblxuICAgIEBJbnB1dCgpIFxuICAgIG1hcHBlZEZpZWxkc0lkID0gJyc7XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dBZGRTZXBhcmF0b3IgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBpdGVtS2V5TGFiZWwgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgaXRlbVRpdGxlTGFiZWwgPSAnJztcblxuICAgIEBPdXRwdXQoKVxuICAgIGZpZWxkc0NoYW5nZTogRXZlbnRFbWl0dGVyPERhdGFWaWV3RmllbGRbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGFWaWV3RmllbGRbXT4oKTtcbiAgICBcbiAgICBpc0dyYWJiaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IFBlcERpYWxvZ1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGF0YVZpZXdCdWlsZGVyU2VydmljZTogRGF0YVZpZXdCdWlsZGVyU2VydmljZVxuICAgICkgeyBcbiAgICAgICAgdGhpcy5kYXRhVmlld0J1aWxkZXJTZXJ2aWNlLmlzR3JhYmJpbmdDaGFuZ2UkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaXNHcmFiYmluZyA9IHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBhZGROZXdGaWVsZChkcmFnZ2FibGVJdGVtOiBJUGVwRHJhZ2dhYmxlSXRlbSwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICAvLyBBZGQgbmV3IG1lbnVGaWVsZCB0byB0aGUgbWFwcGVkRmllbGRzLlxuICAgICAgICBjb25zdCBtZW51RmllbGQ6IE1lbnVEYXRhVmlld0ZpZWxkID0geyBGaWVsZElEOiBkcmFnZ2FibGVJdGVtLmRhdGEua2V5LCBUaXRsZTogZHJhZ2dhYmxlSXRlbS50aXRsZSB9O1xuICAgICAgICB0aGlzLnNwbGljZU1hcHBlZEZpZWxkcyhpbmRleCwgMCwgbWVudUZpZWxkKTtcbiAgICB9XG4gICAgXG4gICAgcHJpdmF0ZSBzcGxpY2VNYXBwZWRGaWVsZHMoc3RhcnQ6IG51bWJlciwgZGVsZXRlQ291bnQ6IG51bWJlciwgaXRlbT86IE1lbnVEYXRhVmlld0ZpZWxkKSB7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmZpZWxkcy5zcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBpdGVtKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRzLnNwbGljZShzdGFydCwgZGVsZXRlQ291bnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ub3RpZnlGaWVsZHNDaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZVRpdGxlKG1lbnVGaWVsZDogTWVudURhdGFWaWV3RmllbGQsIHRpdGxlOiBzdHJpbmcpIHtcbiAgICAgICAgbWVudUZpZWxkLlRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMubm90aWZ5RmllbGRzQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlGaWVsZHNDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuZmllbGRzQ2hhbmdlLmVtaXQodGhpcy5maWVsZHMpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZih0aGlzLml0ZW1LZXlMYWJlbCA9PSAnJyl7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5nZXQoJ0RBVEFfVklFV19CVUlMREVSLk1FTlVfSVRFTV9LRVlfVElUTEUnKS50b1Byb21pc2UoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1LZXlMYWJlbCA9IHJlcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmKHRoaXMuaXRlbVRpdGxlTGFiZWwgPT0gJycpe1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KCdEQVRBX1ZJRVdfQlVJTERFUi5NRU5VX0lURU1fVkFMVUVfVElUTEUnKS50b1Byb21pc2UoKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1UaXRsZUxhYmVsID0gcmVzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRTZXBhcmF0b3IoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBjb25zdCBtZW51RmllbGQ6IE1lbnVEYXRhVmlld0ZpZWxkID0geyBGaWVsZElEOiAnJywgVGl0bGU6ICcnIH07XG4gICAgICAgIHRoaXMuc3BsaWNlTWFwcGVkRmllbGRzKGluZGV4LCAwLCBtZW51RmllbGQpO1xuICAgIH1cblxuICAgIG9uRHJhZ1N0YXJ0KGV2ZW50OiBDZGtEcmFnU3RhcnQpIHtcbiAgICAgICAgdGhpcy5kYXRhVmlld0J1aWxkZXJTZXJ2aWNlLm9uRHJhZ1N0YXJ0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRyYWdFbmQoZXZlbnQ6IENka0RyYWdFbmQpIHtcbiAgICAgICAgdGhpcy5kYXRhVmlld0J1aWxkZXJTZXJ2aWNlLm9uRHJhZ0VuZChldmVudCk7XG4gICAgfVxuICAgIFxuICAgIG9uRHJvcEZpZWxkKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5RmllbGRzQ2hhbmdlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29udGFpbmVyLmlkID09PSAnZW1wdHlEcm9wQXJlYScpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3RmllbGQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XSwgdGhpcy5maWVsZHMubGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWRkTmV3RmllbGQoZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YVtldmVudC5wcmV2aW91c0luZGV4XSwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGl0bGVDaGFuZ2VkKGV2ZW50OiBzdHJpbmcsIG1lbnVGaWVsZDogTWVudURhdGFWaWV3RmllbGQpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VUaXRsZShtZW51RmllbGQsIGV2ZW50KTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZU1hcHBlZEZpZWxkKGV2ZW50OiBJUGVwQnV0dG9uQ2xpY2tFdmVudCwgbWVudUZpZWxkOiBNZW51RGF0YVZpZXdGaWVsZCkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmllbGRzLmZpbmRJbmRleChtcyA9PiBtcyA9PT0gbWVudUZpZWxkKTtcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc3BsaWNlTWFwcGVkRmllbGRzKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRWRpdFNlcGFyYXRvckZpZWxkKGV2ZW50OiBJUGVwQnV0dG9uQ2xpY2tFdmVudCwgbWVudUZpZWxkOiBNZW51RGF0YVZpZXdGaWVsZCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nU2VydmljZS5vcGVuRGlhbG9nKHRoaXMuc2VwYXJhdG9yVGl0bGVNb2RhbFRlbXBsYXRlLCB7IHZhbHVlOiBtZW51RmllbGQuVGl0bGUgfSk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCh0aXRsZVZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodGl0bGVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VUaXRsZShtZW51RmllbGQsIHRpdGxlVmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXREaWFsb2dWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEaWFsb2codmFsdWUpO1xuICAgIH1cblxuICAgIGNsb3NlRGlhbG9nKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKHZhbHVlKTtcbiAgICB9XG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkcyA9PT0gbnVsbCB8fCBmaWVsZHMubGVuZ3RoID09PSAwOyB0aGVuIGVtcHR5VGVtcGxhdGU7IGVsc2Ugbm90RW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNlbXB0eVRlbXBsYXRlPlxuICAgIDxkaXYgW2lkXT1cImVtcHR5RHJvcEFyZWFJZFwiIGNsYXNzPVwiZHJvcC1maWVsZC1oZXJlLWFyZWFcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cIm9uRHJvcEZpZWxkKCRldmVudClcIj5cbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiPlxuICAgICAgICAgICAgPHBlcC1pY29uIG5hbWU9XCJhcnJvd19kb3duX2FsdFwiPjwvcGVwLWljb24+XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keS1zbSBlbGxpcHNpc1wiPlxuICAgICAgICAgICAge3sgJ0RBVEFfVklFV19CVUlMREVSLkVNUFRZX0RST1BfQVJFQV9URVhUJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+IFxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjbm90RW1wdHlUZW1wbGF0ZT5cbiAgICA8ZGl2IFtpZF09XCJtYXBwZWRGaWVsZHNJZFwiIGNsYXNzPVwibWFwcGVkLWZpZWxkcy1hcmVhXCIgW25nQ2xhc3NdPVwieyAnbm8tcm93LWdhcCc6ICFpc0dyYWJiaW5nIH1cIlxuICAgICAgICBjZGtEcm9wTGlzdCBbY2RrRHJvcExpc3REYXRhXT1cImZpZWxkc1wiIChjZGtEcm9wTGlzdERyb3BwZWQpPVwib25Ecm9wRmllbGQoJGV2ZW50KVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51RmllbGQgb2YgZmllbGRzOyBsZXQgaSA9IGluZGV4XCIgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1hcHBlZC1maWVsZC1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7ICdzZXBhcmF0b3ItY29udGFpbmVyJzogbWVudUZpZWxkLkZpZWxkSUQgPT09ICcnIH1cIiBcbiAgICAgICAgICAgICAgICBjZGtEcmFnIChjZGtEcmFnU3RhcnRlZCk9XCJvbkRyYWdTdGFydCgkZXZlbnQpXCIgKGNka0RyYWdFbmRlZCk9XCJvbkRyYWdFbmQoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXBwZWRGaWVsZFRlbXBsYXRlOyBjb250ZXh0OiB7IG1lbnVGaWVsZDogbWVudUZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc0dyYWJiaW5nXCIgY2xhc3M9XCJhZGQtc2VwYXJhdG9yLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxwZXAtYnV0dG9uICpuZ0lmPVwic2hvd0FkZFNlcGFyYXRvclwiIGNsYXNzPVwiYWRkLXNlcGFyYXRvclwiIHN0eWxlVHlwZT1cInJlZ3VsYXJcIiBzaXplVHlwZT1cInNtXCIgaWNvbk5hbWU9XCJudW1iZXJfcGx1c1wiIFxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiJ0RBVEFfVklFV19CVUlMREVSLkFERF9TRVBBUkFUT1InIHwgdHJhbnNsYXRlXCIgKGJ1dHRvbkNsaWNrKT1cImFkZFNlcGFyYXRvcihpKzEpXCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtYXBwZWRGaWVsZFRlbXBsYXRlIGxldC1tZW51RmllbGQ9XCJtZW51RmllbGRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibWVudUZpZWxkLkZpZWxkSUQgIT09ICcnOyB0aGVuIG1lbnVJdGVtVGVtcGxhdGU7IGVsc2Ugc2VwYXJhdG9yVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjbWVudUl0ZW1UZW1wbGF0ZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkcy13cmFwcGVyXCI+XG4gICAgICAgICAgICA8cGVwLXRleHRib3ggW2xhYmVsXT1cIml0ZW1LZXlMYWJlbFwiIFt2YWx1ZV09XCJtZW51RmllbGQuRmllbGRJRFwiIFtkaXNhYmxlZF09XCJ0cnVlXCI+XG4gICAgICAgICAgICA8L3BlcC10ZXh0Ym94PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8cGVwLXRleHRib3ggW2xhYmVsXT1cIml0ZW1UaXRsZUxhYmVsXCIgW2hpbnRdPVwiJygnICsgKGF2YWlsYWJsZUZpZWxkc1RpdGxlcy5nZXQobWVudUZpZWxkLkZpZWxkSUQpIHx8ICcnKSArICcpJ1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm1lbnVGaWVsZC5UaXRsZVwiICh2YWx1ZUNoYW5nZSk9XCJvblRpdGxlQ2hhbmdlZCgkZXZlbnQsIG1lbnVGaWVsZClcIj5cbiAgICAgICAgICAgIDwvcGVwLXRleHRib3g+XG4gICAgXG4gICAgICAgICAgICA8cGVwLWJ1dHRvbiBjbGFzcz1cImNlbnRlci1idXR0b25cIiBpY29uTmFtZT1cInN5c3RlbV9iaW5cIiBbdGl0bGVdPVwiJ0FDVElPTlMuREVMRVRFJyB8IHRyYW5zbGF0ZVwiIChidXR0b25DbGljayk9XCJvbkRlbGV0ZU1hcHBlZEZpZWxkKCRldmVudCwgbWVudUZpZWxkKVwiPjwvcGVwLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3NlcGFyYXRvclRlbXBsYXRlPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VwYXJhdG9yLXdyYXBwZXIgXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudCB0aXRsZSB0aXRsZS1tZCBjb2xvci1kaW1tZWRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbdGl0bGVdPVwibWVudUZpZWxkLlRpdGxlXCI+e3sgbWVudUZpZWxkLlRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1hY3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPHBlcC1idXR0b24gaWNvbk5hbWU9XCJzeXN0ZW1fZWRpdFwiIFt0aXRsZV09XCInQUNUSU9OUy5FRElUJyB8IHRyYW5zbGF0ZVwiIHNpemVUeXBlPVwieHNcIiBzdHlsZVR5cGU9XCJyZWd1bGFyXCIgKGJ1dHRvbkNsaWNrKT1cIm9uRWRpdFNlcGFyYXRvckZpZWxkKCRldmVudCwgbWVudUZpZWxkKVwiPjwvcGVwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8cGVwLWJ1dHRvbiBpY29uTmFtZT1cInN5c3RlbV9iaW5cIiBbdGl0bGVdPVwiJ0FDVElPTlMuREVMRVRFJyB8IHRyYW5zbGF0ZVwiIHNpemVUeXBlPVwieHNcIiBzdHlsZVR5cGU9XCJyZWd1bGFyXCIgKGJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlTWFwcGVkRmllbGQoJGV2ZW50LCBtZW51RmllbGQpXCI+PC9wZXAtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3NlcGFyYXRvclRpdGxlTW9kYWxUZW1wbGF0ZSBsZXQtZGF0YT5cbiAgICA8cGVwLWRpYWxvZyBbdGl0bGVdPVwiJ0RBVEFfVklFV19CVUlMREVSLlNFUEFSQVRPUl9USVRMRScgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBwZXAtZGlhbG9nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8cGVwLXRleHRib3ggI3R4dCBbbGFiZWxdPVwiJ0RBVEFfVklFV19CVUlMREVSLkFERF9BX1RJVExFJyB8IHRyYW5zbGF0ZVwiIFsodmFsdWUpXT1cImRhdGEudmFsdWVcIj5cbiAgICAgICAgICAgIDwvcGVwLXRleHRib3g+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyIHBlcC1kaWFsb2ctYWN0aW9ucz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50LW5lZ2F0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudCBwZXAtYnV0dG9uIG1kIHdlYWtcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEaWFsb2coKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eydDYW5jZWwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwZXAtc3BhY2luZy1lbGVtZW50IHBlcC1idXR0b24gbWQgc3Ryb25nXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldERpYWxvZ1ZhbHVlKHR4dC52YWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3BlcC1kaWFsb2c+XG48L25nLXRlbXBsYXRlPlxuIl19