ngx-rs-ant 1.3.6 → 1.3.8

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.
@@ -14,6 +14,7 @@ export declare class DataGridComponent implements OnInit {
14
14
  view?: any;
15
15
  filter?: any;
16
16
  enableMasterDetail: boolean;
17
+ dataGridName?: string;
17
18
  selectionMode: 'none' | 'multiple' | 'single';
18
19
  customColumnFn?: (columns: any[]) => void;
19
20
  onDxDataGridCellPrepared: EventEmitter<any>;
@@ -37,5 +38,5 @@ export declare class DataGridComponent implements OnInit {
37
38
  onSelectionChanged($event: any): void;
38
39
  onEditorPreparing($event: any): void;
39
40
  static ɵfac: i0.ɵɵFactoryDeclaration<DataGridComponent, never>;
40
- static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "rs-data-grid", never, { "tenant": "tenant"; "className": "className"; "view": "view"; "filter": "filter"; "enableMasterDetail": "enableMasterDetail"; "selectionMode": "selectionMode"; "customColumnFn": "customColumnFn"; }, { "onDxDataGridCellPrepared": "onDxDataGridCellPrepared"; "onDxDataGridContentReady": "onDxDataGridContentReady"; "onDxDataGridSelectionChanged": "onDxDataGridSelectionChanged"; }, ["masterDetailTemplate", "rowButtonsTemplate", "instanceLinkTemplate"], never, false, never>;
41
+ static ɵcmp: i0.ɵɵComponentDeclaration<DataGridComponent, "rs-data-grid", never, { "tenant": "tenant"; "className": "className"; "view": "view"; "filter": "filter"; "enableMasterDetail": "enableMasterDetail"; "dataGridName": "dataGridName"; "selectionMode": "selectionMode"; "customColumnFn": "customColumnFn"; }, { "onDxDataGridCellPrepared": "onDxDataGridCellPrepared"; "onDxDataGridContentReady": "onDxDataGridContentReady"; "onDxDataGridSelectionChanged": "onDxDataGridSelectionChanged"; }, ["masterDetailTemplate", "rowButtonsTemplate", "instanceLinkTemplate"], never, false, never>;
41
42
  }
@@ -8,7 +8,7 @@ export declare class DataGridFactory {
8
8
  private service;
9
9
  private typeMap;
10
10
  makeDataGridColumns(tenant: any, className: any, view: any): Observable<any>;
11
- makeDataGridDataSource(tenant: any, className: any, view: any, extraFilter: any): CustomStore;
11
+ makeDataGridDataSource(tenant: any, className: any, view: any, extraFilter: any, dataGridName?: string): CustomStore;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<DataGridFactory, never>;
13
13
  static ɵprov: i0.ɵɵInjectableDeclaration<DataGridFactory>;
14
14
  }
@@ -14,7 +14,6 @@ export declare class FileCellTemplateComponent {
14
14
  constructor(service: DataGridService, domSanitizer: DomSanitizer);
15
15
  ngOnInit(): void;
16
16
  download(): void;
17
- getFileSize(size: number): string;
18
17
  static ɵfac: i0.ɵɵFactoryDeclaration<FileCellTemplateComponent, never>;
19
18
  static ɵcmp: i0.ɵɵComponentDeclaration<FileCellTemplateComponent, "rs-file-cell-template", never, { "table": "table"; "oid": "oid"; }, {}, never, never, false, never>;
20
19
  }
@@ -43,7 +43,7 @@ export class DataGridComponent {
43
43
  }
44
44
  this.columns = columns;
45
45
  });
46
- this.dataSource = this.factory.makeDataGridDataSource(this.tenant, this.className, this.view, this.filter);
46
+ this.dataSource = this.factory.makeDataGridDataSource(this.tenant, this.className, this.view, this.filter, this.dataGridName);
47
47
  }
48
48
  convertMultipleValueCellText(cellInfo) {
49
49
  if (!cellInfo.value) {
@@ -103,7 +103,7 @@ export class DataGridComponent {
103
103
  }
104
104
  }
105
105
  DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, deps: [{ token: i1.DataGridFactory }, { token: i2.DataGridService }], target: i0.ɵɵFactoryTarget.Component });
106
- DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", enableMasterDetail: "enableMasterDetail", selectionMode: "selectionMode", customColumnFn: "customColumnFn" }, outputs: { onDxDataGridCellPrepared: "onDxDataGridCellPrepared", onDxDataGridContentReady: "onDxDataGridContentReady", onDxDataGridSelectionChanged: "onDxDataGridSelectionChanged" }, providers: [DataGridService], queries: [{ propertyName: "masterDetailTemplate", first: true, predicate: MasterDetailTemplateDirective, descendants: true }, { propertyName: "rowButtonsTemplate", first: true, predicate: RowButtonsTemplateDirective, descendants: true }, { propertyName: "instanceLinkTemplate", first: true, predicate: InstanceLinkTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [syncLookupFilterValues]=\"false\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\r\n (onCellPrepared)=\"onCellPrepared($event)\"\r\n (onEditorPreparing)=\"onEditorPreparing($event)\"\r\n (onContentReady)=\"onContentReady($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowExpanding)=\"$event.component.collapseAll(-1)\">\r\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\r\n <dxo-selection [mode]=\"selectionMode\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"></dxo-selection>\r\n <dxo-header-filter [visible]=\"true\">\r\n <dxo-search [enabled]=\"true\"></dxo-search>\r\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\r\n </dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-remote-operations [filtering]=\"true\"\r\n [sorting]=\"true\"\r\n [paging]=\"true\">\r\n </dxo-remote-operations>\r\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\r\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\r\n <dxo-pager [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\r\n [showPageSizeSelector]=\"true\"\r\n [allowedPageSizes]=\"[15, 30, 50]\"\r\n ></dxo-pager>\r\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\r\n <div *dxTemplate=\"let cellInfo of 'masterDetailTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowButtonsTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"rowButtonsTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'instanceLinkTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"instanceLinkTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\r\n {{cellInfo.rowIndex + 1}}\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'multipleValueCellTemplate'\">\r\n <div [innerHTML]=\"convertMultipleValueCellText(cellInfo)\"></div>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\r\n <div #textDiv style=\"text-overflow: ellipsis; overflow: hidden; cursor: pointer;\">{{cellInfo.value}}</div>\r\n <dx-tooltip [target]=\"textDiv\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <p style=\"max-width: 320px; text-align: left; white-space: normal;\" [innerText]=\"cellInfo.value\"></p>\r\n </div>\r\n </dx-tooltip>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'fileCellTemplate'\">\r\n <ng-container *ngFor=\"let file of cellInfo.value\">\r\n <rs-file-cell-template [table]=\"cellInfo.component\" [oid]=\"file\"></rs-file-cell-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'userCellTemplate'\">\r\n <ng-container *ngFor=\"let user of getOriginalValue(cellInfo, 'userInfo')\">\r\n <rs-user-info-template [table]=\"cellInfo.component\" [uid]=\"user\"></rs-user-info-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'unitCellTemplate'\">\r\n <ng-container *ngFor=\"let unit of getOriginalValue(cellInfo, 'unitInfo')\">\r\n <rs-unit-info-template [table]=\"cellInfo.component\" [uid]=\"unit\"></rs-unit-info-template>\r\n </ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxoSearchComponent, selector: "dxo-search", inputs: ["editorOptions", "enabled", "timeout", "mode", "searchExpr"] }, { kind: "component", type: i6.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i6.DxoTextsComponent, selector: "dxo-texts", inputs: ["fix", "leftPosition", "rightPosition", "unfix", "addRow", "cancelAllChanges", "cancelRowChanges", "confirmDeleteMessage", "confirmDeleteTitle", "deleteRow", "editRow", "saveAllChanges", "saveRowChanges", "undeleteRow", "validationCancelChanges", "exportAll", "exportSelectedRows", "exportTo", "clearFilter", "createFilter", "filterEnabledHint", "groupByThisColumn", "groupContinuedMessage", "groupContinuesMessage", "ungroup", "ungroupAll", "cancel", "emptyValue", "ok", "avg", "avgOtherColumn", "count", "max", "maxOtherColumn", "min", "minOtherColumn", "sum", "sumOtherColumn", "allFields", "columnFields", "dataFields", "filterFields", "rowFields", "columnFieldArea", "dataFieldArea", "filterFieldArea", "rowFieldArea", "collapseAll", "dataNotAvailable", "expandAll", "exportToExcel", "grandTotal", "noData", "removeAllSorting", "showFieldChooser", "sortColumnBySummary", "sortRowBySummary", "total", "addRowToNode"] }, { kind: "component", type: i6.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "allowSelectAll", "dataSource", "groupInterval", "height", "search", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i6.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i6.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i6.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i7.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i8.FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: ["table", "oid"] }, { kind: "component", type: i9.UserInfoTemplateComponent, selector: "rs-user-info-template", inputs: ["table", "uid"] }, { kind: "component", type: i10.UnitInfoTemplateComponent, selector: "rs-unit-info-template", inputs: ["table", "uid"] }] });
106
+ DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.7", type: DataGridComponent, selector: "rs-data-grid", inputs: { tenant: "tenant", className: "className", view: "view", filter: "filter", enableMasterDetail: "enableMasterDetail", dataGridName: "dataGridName", selectionMode: "selectionMode", customColumnFn: "customColumnFn" }, outputs: { onDxDataGridCellPrepared: "onDxDataGridCellPrepared", onDxDataGridContentReady: "onDxDataGridContentReady", onDxDataGridSelectionChanged: "onDxDataGridSelectionChanged" }, providers: [DataGridService], queries: [{ propertyName: "masterDetailTemplate", first: true, predicate: MasterDetailTemplateDirective, descendants: true }, { propertyName: "rowButtonsTemplate", first: true, predicate: RowButtonsTemplateDirective, descendants: true }, { propertyName: "instanceLinkTemplate", first: true, predicate: InstanceLinkTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "dxDataGrid", first: true, predicate: DxDataGridComponent, descendants: true, static: true }], ngImport: i0, template: "<dx-data-grid [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [syncLookupFilterValues]=\"false\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\r\n (onCellPrepared)=\"onCellPrepared($event)\"\r\n (onEditorPreparing)=\"onEditorPreparing($event)\"\r\n (onContentReady)=\"onContentReady($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowExpanding)=\"$event.component.collapseAll(-1)\">\r\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\r\n <dxo-selection [mode]=\"selectionMode\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"></dxo-selection>\r\n <dxo-header-filter [visible]=\"true\">\r\n <dxo-search [enabled]=\"true\"></dxo-search>\r\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\r\n </dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-remote-operations [filtering]=\"true\"\r\n [sorting]=\"true\"\r\n [paging]=\"true\">\r\n </dxo-remote-operations>\r\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\r\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\r\n <dxo-pager [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\r\n [showPageSizeSelector]=\"true\"\r\n [allowedPageSizes]=\"[15, 30, 50]\"\r\n ></dxo-pager>\r\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\r\n <div *dxTemplate=\"let cellInfo of 'masterDetailTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowButtonsTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"rowButtonsTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'instanceLinkTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"instanceLinkTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\r\n {{cellInfo.rowIndex + 1}}\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'multipleValueCellTemplate'\">\r\n <div [innerHTML]=\"convertMultipleValueCellText(cellInfo)\"></div>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\r\n <div #textDiv style=\"text-overflow: ellipsis; overflow: hidden; cursor: pointer;\">{{cellInfo.value}}</div>\r\n <dx-tooltip [target]=\"textDiv\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <p style=\"max-width: 320px; text-align: left; white-space: normal;\" [innerText]=\"cellInfo.value\"></p>\r\n </div>\r\n </dx-tooltip>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'fileCellTemplate'\">\r\n <ng-container *ngFor=\"let file of cellInfo.value\">\r\n <rs-file-cell-template [table]=\"cellInfo.component\" [oid]=\"file\"></rs-file-cell-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'userCellTemplate'\">\r\n <ng-container *ngFor=\"let user of getOriginalValue(cellInfo, 'userInfo')\">\r\n <rs-user-info-template [table]=\"cellInfo.component\" [uid]=\"user\"></rs-user-info-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'unitCellTemplate'\">\r\n <ng-container *ngFor=\"let unit of getOriginalValue(cellInfo, 'unitInfo')\">\r\n <rs-unit-info-template [table]=\"cellInfo.component\" [uid]=\"unit\"></rs-unit-info-template>\r\n </ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i5.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxoSearchComponent, selector: "dxo-search", inputs: ["editorOptions", "enabled", "timeout", "mode", "searchExpr"] }, { kind: "component", type: i6.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "recursive", "selectByClick", "deferred", "mode", "selectAllMode", "showCheckBoxesMode"] }, { kind: "component", type: i6.DxoTextsComponent, selector: "dxo-texts", inputs: ["fix", "leftPosition", "rightPosition", "unfix", "addRow", "cancelAllChanges", "cancelRowChanges", "confirmDeleteMessage", "confirmDeleteTitle", "deleteRow", "editRow", "saveAllChanges", "saveRowChanges", "undeleteRow", "validationCancelChanges", "exportAll", "exportSelectedRows", "exportTo", "clearFilter", "createFilter", "filterEnabledHint", "groupByThisColumn", "groupContinuedMessage", "groupContinuesMessage", "ungroup", "ungroupAll", "cancel", "emptyValue", "ok", "avg", "avgOtherColumn", "count", "max", "maxOtherColumn", "min", "minOtherColumn", "sum", "sumOtherColumn", "allFields", "columnFields", "dataFields", "filterFields", "rowFields", "columnFieldArea", "dataFieldArea", "filterFieldArea", "rowFieldArea", "collapseAll", "dataNotAvailable", "expandAll", "exportToExcel", "grandTotal", "noData", "removeAllSorting", "showFieldChooser", "sortColumnBySummary", "sortRowBySummary", "total", "addRowToNode"] }, { kind: "component", type: i6.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "allowSelectAll", "dataSource", "groupInterval", "height", "search", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i6.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i6.DxoMasterDetailComponent, selector: "dxo-master-detail", inputs: ["autoExpandAll", "enabled", "template"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoRemoteOperationsComponent, selector: "dxo-remote-operations", inputs: ["filtering", "grouping", "groupPaging", "paging", "sorting", "summary"] }, { kind: "component", type: i6.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i7.DxTooltipComponent, selector: "dx-tooltip", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showEvent", "target", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showEventChange", "targetChange", "visibleChange", "widthChange", "wrapperAttrChange"] }, { kind: "component", type: i8.FileCellTemplateComponent, selector: "rs-file-cell-template", inputs: ["table", "oid"] }, { kind: "component", type: i9.UserInfoTemplateComponent, selector: "rs-user-info-template", inputs: ["table", "uid"] }, { kind: "component", type: i10.UnitInfoTemplateComponent, selector: "rs-unit-info-template", inputs: ["table", "uid"] }] });
107
107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DataGridComponent, decorators: [{
108
108
  type: Component,
109
109
  args: [{ selector: 'rs-data-grid', providers: [DataGridService], template: "<dx-data-grid [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n [syncLookupFilterValues]=\"false\"\r\n [showBorders]=\"true\"\r\n [showRowLines]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [rowAlternationEnabled]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n dateSerializationFormat=\"yyyy/MM/dd HH:mm:ss\"\r\n (onCellPrepared)=\"onCellPrepared($event)\"\r\n (onEditorPreparing)=\"onEditorPreparing($event)\"\r\n (onContentReady)=\"onContentReady($event)\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onRowExpanding)=\"$event.component.collapseAll(-1)\">\r\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\r\n <dxo-selection [mode]=\"selectionMode\" selectAllMode=\"page\" showCheckBoxesMode=\"always\"></dxo-selection>\r\n <dxo-header-filter [visible]=\"true\">\r\n <dxo-search [enabled]=\"true\"></dxo-search>\r\n <dxo-texts [ok]=\"'\u786E\u5B9A'\"></dxo-texts>\r\n </dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-remote-operations [filtering]=\"true\"\r\n [sorting]=\"true\"\r\n [paging]=\"true\">\r\n </dxo-remote-operations>\r\n <dxo-master-detail [enabled]=\"enableMasterDetail\" template=\"masterDetailTemplate\"></dxo-master-detail>\r\n <dxo-paging [pageSize]=\"15\"></dxo-paging>\r\n <dxo-pager [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n infoText=\"\u7B2C{0}\u9875\uFF0C\u5171{1}\u9875\uFF08\u5171{2}\u4E2A\u9879\u76EE\uFF09\"\r\n [showPageSizeSelector]=\"true\"\r\n [allowedPageSizes]=\"[15, 30, 50]\"\r\n ></dxo-pager>\r\n <dxo-scrolling showScrollbar=\"always\"></dxo-scrolling>\r\n <div *dxTemplate=\"let cellInfo of 'masterDetailTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"masterDetailTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowButtonsTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"rowButtonsTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'instanceLinkTemplate'\">\r\n <ng-container [ngTemplateOutlet]=\"instanceLinkTemplate.templateRef\"\r\n [ngTemplateOutletContext]=\"{$implicit: cellInfo, cellTemplateLoaded$: service.cellTemplateLoaded$}\"></ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'rowIndexTemplate'\">\r\n {{cellInfo.rowIndex + 1}}\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'multipleValueCellTemplate'\">\r\n <div [innerHTML]=\"convertMultipleValueCellText(cellInfo)\"></div>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'textCellTemplate'\">\r\n <div #textDiv style=\"text-overflow: ellipsis; overflow: hidden; cursor: pointer;\">{{cellInfo.value}}</div>\r\n <dx-tooltip [target]=\"textDiv\"\r\n [position]=\"'top'\"\r\n [showEvent]=\"'click'\">\r\n <div *dxTemplate=\"let data of 'content'\">\r\n <p style=\"max-width: 320px; text-align: left; white-space: normal;\" [innerText]=\"cellInfo.value\"></p>\r\n </div>\r\n </dx-tooltip>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'fileCellTemplate'\">\r\n <ng-container *ngFor=\"let file of cellInfo.value\">\r\n <rs-file-cell-template [table]=\"cellInfo.component\" [oid]=\"file\"></rs-file-cell-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'userCellTemplate'\">\r\n <ng-container *ngFor=\"let user of getOriginalValue(cellInfo, 'userInfo')\">\r\n <rs-user-info-template [table]=\"cellInfo.component\" [uid]=\"user\"></rs-user-info-template>\r\n </ng-container>\r\n </div>\r\n <div *dxTemplate=\"let cellInfo of 'unitCellTemplate'\">\r\n <ng-container *ngFor=\"let unit of getOriginalValue(cellInfo, 'unitInfo')\">\r\n <rs-unit-info-template [table]=\"cellInfo.component\" [uid]=\"unit\"></rs-unit-info-template>\r\n </ng-container>\r\n </div>\r\n</dx-data-grid>\r\n", styles: [":host{display:flex;flex-flow:column nowrap}:host dx-data-grid{flex:auto;height:0}\n"] }]
@@ -117,6 +117,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
117
117
  type: Input
118
118
  }], enableMasterDetail: [{
119
119
  type: Input
120
+ }], dataGridName: [{
121
+ type: Input
120
122
  }], selectionMode: [{
121
123
  type: Input
122
124
  }], customColumnFn: [{
@@ -140,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
140
142
  type: ContentChild,
141
143
  args: [InstanceLinkTemplateDirective]
142
144
  }] } });
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pGLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTdFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQVFsQyxNQUFNLE9BQU8saUJBQWlCO0lBNkI1QixZQUFvQixPQUF3QixFQUFZLE9BQXdCO1FBQTVELFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQVksWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUEzQmhGLFdBQU0sR0FBUyxHQUFHLENBQUM7UUFRbkIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRTNCLGtCQUFhLEdBQW1DLE1BQU0sQ0FBQztRQUl2RCw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRW5ELDZCQUF3QixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbkQsaUNBQTRCLEdBQUcsSUFBSSxZQUFZLEVB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SztnQkFHTixJQUFJO3NCQURILEtBQUs7Z0JBR04sTUFBTTtzQkFETCxLQUFLO2dCQUdOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLHdCQUF3QjtzQkFEdkIsTUFBTTtnQkFHUCx3QkFBd0I7c0JBRHZCLE1BQU07Z0JBR1AsNEJBQTRCO3NCQUQzQixNQUFNO2dCQUt5QyxVQUFVO3NCQUF6RCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRCxvQkFBb0I7c0JBQWhFLFlBQVk7dUJBQUMsNkJBQTZCO2dCQUNBLGtCQUFrQjtzQkFBNUQsWUFBWTt1QkFBQywyQkFBMkI7Z0JBQ0ksb0JBQW9CO3NCQUFoRSxZQUFZO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0R4RGF0YUdyaWRDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcclxuaW1wb3J0IHtEYXRhR3JpZFNlcnZpY2V9IGZyb20gXCIuL2RhdGEtZ3JpZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TWFzdGVyRGV0YWlsVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuL21hc3Rlci1kZXRhaWwtdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7Um93QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tIFwiLi9yb3ctYnV0dG9ucy10ZW1wbGF0ZS5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtEYXRhR3JpZEZhY3Rvcnl9IGZyb20gXCIuL2RhdGEtZ3JpZC5mYWN0b3J5XCI7XHJcbmltcG9ydCB7SW5zdGFuY2VMaW5rVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuL2luc3RhbmNlLWxpbmstdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdycy1kYXRhLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0RhdGFHcmlkU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKVxyXG4gIHRlbmFudD86IGFueSA9ICdUJztcclxuICBASW5wdXQoKVxyXG4gIGNsYXNzTmFtZSE6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHZpZXc/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXI/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBlbmFibGVNYXN0ZXJEZXRhaWwgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGlvbk1vZGU6ICdub25lJyB8ICdtdWx0aXBsZScgfCAnc2luZ2xlJyA9ICdub25lJztcclxuICBASW5wdXQoKVxyXG4gIGN1c3RvbUNvbHVtbkZuPzogKGNvbHVtbnM6IGFueVtdKSA9PiB2b2lkO1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHhEYXRhR3JpZENlbGxQcmVwYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHhEYXRhR3JpZENvbnRlbnRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBkYXRhU291cmNlOiBhbnkgPSB7fTtcclxuICBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKER4RGF0YUdyaWRDb21wb25lbnQsIHtzdGF0aWM6IHRydWV9KSBkeERhdGFHcmlkITogRHhEYXRhR3JpZENvbXBvbmVudDtcclxuICBAQ29udGVudENoaWxkKE1hc3RlckRldGFpbFRlbXBsYXRlRGlyZWN0aXZlKSBtYXN0ZXJEZXRhaWxUZW1wbGF0ZSE6IE1hc3RlckRldGFpbFRlbXBsYXRlRGlyZWN0aXZlO1xyXG4gIEBDb250ZW50Q2hpbGQoUm93QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlKSByb3dCdXR0b25zVGVtcGxhdGUhOiBSb3dCdXR0b25zVGVtcGxhdGVEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChJbnN0YW5jZUxpbmtUZW1wbGF0ZURpcmVjdGl2ZSkgaW5zdGFuY2VMaW5rVGVtcGxhdGUhOiBJbnN0YW5jZUxpbmtUZW1wbGF0ZURpcmVjdGl2ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYWN0b3J5OiBEYXRhR3JpZEZhY3RvcnksIHByb3RlY3RlZCBzZXJ2aWNlOiBEYXRhR3JpZFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5yZWxvYWQoKTtcclxuICAgIHRoaXMuc2VydmljZS5jZWxsVGVtcGxhdGVMb2FkZWQkLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICg8YW55PnRoaXMuZHhEYXRhR3JpZC5pbnN0YW5jZSkucmVzaXplKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbG9hZCgpIHtcclxuICAgIHRoaXMuY29sdW1ucy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5mYWN0b3J5Lm1ha2VEYXRhR3JpZENvbHVtbnModGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB0aGlzLnZpZXcpLnN1YnNjcmliZShjb2x1bW5zID0+IHtcclxuICAgICAgaWYgKHRoaXMuY3VzdG9tQ29sdW1uRm4pIHtcclxuICAgICAgICB0aGlzLmN1c3RvbUNvbHVtbkZuKGNvbHVtbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZmFjdG9yeS5tYWtlRGF0YUdyaWREYXRhU291cmNlKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy52aWV3LCB0aGlzLmZpbHRlcik7XHJcbiAgfVxyXG5cclxuICBjb252ZXJ0TXVsdGlwbGVWYWx1ZUNlbGxUZXh0KGNlbGxJbmZvOiBhbnkpIHtcclxuICAgIGlmICghY2VsbEluZm8udmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2VsbEluZm8udmFsdWUpKSB7XHJcbiAgICAgIGlmIChjZWxsSW5mby5jb2x1bW4ubG9va3VwKSB7XHJcbiAgICAgICAgcmV0dXJuIGNlbGxJbmZvLnZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiBjZWxsSW5mby5jb2x1bW4ubG9va3VwLmNhbGN1bGF0ZUNlbGxWYWx1ZShpdGVtKSkuam9pbignPGJyIC8+Jyk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGNlbGxJbmZvLnZhbHVlLmpvaW4oJzxiciAvPicpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNlbGxJbmZvLmNvbHVtbi5sb29rdXApIHtcclxuICAgICAgcmV0dXJuIGNlbGxJbmZvLmNvbHVtbi5sb29rdXAuY2FsY3VsYXRlQ2VsbFZhbHVlKGNlbGxJbmZvLnZhbHVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjZWxsSW5mby52YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldE9yaWdpbmFsVmFsdWUoY2VsbEluZm86IGFueSwga2V5OiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbmZpZyA9IGNlbGxJbmZvLmNvbHVtbltrZXldO1xyXG4gICAgaWYgKGNvbmZpZykge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGNlbGxJbmZvLmRhdGFbY29uZmlnLmZpZWxkXTtcclxuICAgICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbdmFsdWVdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICAgIHJldHVybiBjZWxsSW5mby5kYXRhW2tleV07XHJcbiAgfVxyXG5cclxuICByZWZyZXNoKGNhbGxiYWNrPzogYW55KSB7XHJcbiAgICB0aGlzLmR4RGF0YUdyaWQuaW5zdGFuY2UucmVmcmVzaCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLmR4RGF0YUdyaWQuaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBvbkNlbGxQcmVwYXJlZCgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkR4RGF0YUdyaWRDZWxsUHJlcGFyZWQuZW1pdCgkZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZW50UmVhZHkoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25EeERhdGFHcmlkQ29udGVudFJlYWR5LmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZCgkZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbkR4RGF0YUdyaWRTZWxlY3Rpb25DaGFuZ2VkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRWRpdG9yUHJlcGFyaW5nKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50LnBhcmVudFR5cGUgPT09ICdmaWx0ZXJSb3cnICYmICRldmVudC5lZGl0b3JOYW1lID09PSAnZHhUZXh0Qm94Jykge1xyXG4gICAgICAkZXZlbnQuZWRpdG9yT3B0aW9ucy52YWx1ZUNoYW5nZUV2ZW50ID0gJ2JsdXInO1xyXG4gICAgICAkZXZlbnQuZWRpdG9yT3B0aW9ucy5vbkVudGVyS2V5ID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGUuY29tcG9uZW50LmJsdXIoKTtcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGR4LWRhdGEtZ3JpZCBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcclxuICAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICAgICAgICBbc3luY0xvb2t1cEZpbHRlclZhbHVlc109XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtyb3dBbHRlcm5hdGlvbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBjb2x1bW5SZXNpemluZ01vZGU9XCJ3aWRnZXRcIlxyXG4gICAgICAgICAgICAgIGRhdGVTZXJpYWxpemF0aW9uRm9ybWF0PVwieXl5eS9NTS9kZCBISDptbTpzc1wiXHJcbiAgICAgICAgICAgICAgKG9uQ2VsbFByZXBhcmVkKT1cIm9uQ2VsbFByZXBhcmVkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChvbkVkaXRvclByZXBhcmluZyk9XCJvbkVkaXRvclByZXBhcmluZygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAob25Db250ZW50UmVhZHkpPVwib25Db250ZW50UmVhZHkoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKG9uUm93RXhwYW5kaW5nKT1cIiRldmVudC5jb21wb25lbnQuY29sbGFwc2VBbGwoLTEpXCI+XHJcbiAgPGR4by1zb3J0aW5nIG1vZGU9XCJtdWx0aXBsZVwiPjwvZHhvLXNvcnRpbmc+XHJcbiAgPGR4by1zZWxlY3Rpb24gW21vZGVdPVwic2VsZWN0aW9uTW9kZVwiIHNlbGVjdEFsbE1vZGU9XCJwYWdlXCIgc2hvd0NoZWNrQm94ZXNNb2RlPVwiYWx3YXlzXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gIDxkeG8taGVhZGVyLWZpbHRlciBbdmlzaWJsZV09XCJ0cnVlXCI+XHJcbiAgICA8ZHhvLXNlYXJjaCBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tc2VhcmNoPlxyXG4gICAgPGR4by10ZXh0cyBbb2tdPVwiJ+ehruWumidcIj48L2R4by10ZXh0cz5cclxuICA8L2R4by1oZWFkZXItZmlsdGVyPlxyXG4gIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICA8ZHhvLXJlbW90ZS1vcGVyYXRpb25zIFtmaWx0ZXJpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbc29ydGluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdpbmddPVwidHJ1ZVwiPlxyXG4gIDwvZHhvLXJlbW90ZS1vcGVyYXRpb25zPlxyXG4gIDxkeG8tbWFzdGVyLWRldGFpbCBbZW5hYmxlZF09XCJlbmFibGVNYXN0ZXJEZXRhaWxcIiB0ZW1wbGF0ZT1cIm1hc3RlckRldGFpbFRlbXBsYXRlXCI+PC9keG8tbWFzdGVyLWRldGFpbD5cclxuICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiMTVcIj48L2R4by1wYWdpbmc+XHJcbiAgPGR4by1wYWdlciBbdmlzaWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgIFtzaG93SW5mb109XCJ0cnVlXCJcclxuICAgICAgICAgICAgIGluZm9UZXh0PVwi56ysezB96aG177yM5YWxezF96aG177yI5YWxezJ95Liq6aG555uu77yJXCJcclxuICAgICAgICAgICAgIFtzaG93UGFnZVNpemVTZWxlY3Rvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgIFthbGxvd2VkUGFnZVNpemVzXT1cIlsxNSwgMzAsIDUwXVwiXHJcbiAgPjwvZHhvLXBhZ2VyPlxyXG4gIDxkeG8tc2Nyb2xsaW5nIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAnbWFzdGVyRGV0YWlsVGVtcGxhdGUnXCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm1hc3RlckRldGFpbFRlbXBsYXRlLnRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IGNlbGxJbmZvLCBjZWxsVGVtcGxhdGVMb2FkZWQkOiBzZXJ2aWNlLmNlbGxUZW1wbGF0ZUxvYWRlZCR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAncm93QnV0dG9uc1RlbXBsYXRlJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJyb3dCdXR0b25zVGVtcGxhdGUudGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDogY2VsbEluZm8sIGNlbGxUZW1wbGF0ZUxvYWRlZCQ6IHNlcnZpY2UuY2VsbFRlbXBsYXRlTG9hZGVkJH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICdpbnN0YW5jZUxpbmtUZW1wbGF0ZSdcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaW5zdGFuY2VMaW5rVGVtcGxhdGUudGVtcGxhdGVSZWZcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyRpbXBsaWNpdDogY2VsbEluZm8sIGNlbGxUZW1wbGF0ZUxvYWRlZCQ6IHNlcnZpY2UuY2VsbFRlbXBsYXRlTG9hZGVkJH1cIj48L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICdyb3dJbmRleFRlbXBsYXRlJ1wiPlxyXG4gICAge3tjZWxsSW5mby5yb3dJbmRleCArIDF9fVxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbEluZm8gb2YgJ211bHRpcGxlVmFsdWVDZWxsVGVtcGxhdGUnXCI+XHJcbiAgICA8ZGl2IFtpbm5lckhUTUxdPVwiY29udmVydE11bHRpcGxlVmFsdWVDZWxsVGV4dChjZWxsSW5mbylcIj48L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICd0ZXh0Q2VsbFRlbXBsYXRlJ1wiPlxyXG4gICAgPGRpdiAjdGV4dERpdiBzdHlsZT1cInRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyBvdmVyZmxvdzogaGlkZGVuOyBjdXJzb3I6IHBvaW50ZXI7XCI+e3tjZWxsSW5mby52YWx1ZX19PC9kaXY+XHJcbiAgICA8ZHgtdG9vbHRpcCBbdGFyZ2V0XT1cInRleHREaXZcIlxyXG4gICAgICAgICAgICAgICAgW3Bvc2l0aW9uXT1cIid0b3AnXCJcclxuICAgICAgICAgICAgICAgIFtzaG93RXZlbnRdPVwiJ2NsaWNrJ1wiPlxyXG4gICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XHJcbiAgICAgICAgPHAgc3R5bGU9XCJtYXgtd2lkdGg6IDMyMHB4OyB0ZXh0LWFsaWduOiBsZWZ0OyB3aGl0ZS1zcGFjZTogbm9ybWFsO1wiIFtpbm5lclRleHRdPVwiY2VsbEluZm8udmFsdWVcIj48L3A+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9keC10b29sdGlwPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbEluZm8gb2YgJ2ZpbGVDZWxsVGVtcGxhdGUnXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWxlIG9mIGNlbGxJbmZvLnZhbHVlXCI+XHJcbiAgICAgIDxycy1maWxlLWNlbGwtdGVtcGxhdGUgW3RhYmxlXT1cImNlbGxJbmZvLmNvbXBvbmVudFwiIFtvaWRdPVwiZmlsZVwiPjwvcnMtZmlsZS1jZWxsLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAndXNlckNlbGxUZW1wbGF0ZSdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVzZXIgb2YgZ2V0T3JpZ2luYWxWYWx1ZShjZWxsSW5mbywgJ3VzZXJJbmZvJylcIj5cclxuICAgICAgPHJzLXVzZXItaW5mby10ZW1wbGF0ZSBbdGFibGVdPVwiY2VsbEluZm8uY29tcG9uZW50XCIgW3VpZF09XCJ1c2VyXCI+PC9ycy11c2VyLWluZm8tdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICd1bml0Q2VsbFRlbXBsYXRlJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdW5pdCBvZiBnZXRPcmlnaW5hbFZhbHVlKGNlbGxJbmZvLCAndW5pdEluZm8nKVwiPlxyXG4gICAgICA8cnMtdW5pdC1pbmZvLXRlbXBsYXRlIFt0YWJsZV09XCJjZWxsSW5mby5jb21wb25lbnRcIiBbdWlkXT1cInVuaXRcIj48L3JzLXVuaXQtaW5mby10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG48L2R4LWRhdGEtZ3JpZD5cclxuIl19
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ycy1hbnQvc3JjL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJzLWFudC9zcmMvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEcsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pGLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTdFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7OztBQVFsQyxNQUFNLE9BQU8saUJBQWlCO0lBK0I1QixZQUFvQixPQUF3QixFQUFZLE9BQXdCO1FBQTVELFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQVksWUFBTyxHQUFQLE9BQU8sQ0FBaUI7UUE3QmhGLFdBQU0sR0FBUyxHQUFHLENBQUM7UUFRbkIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBSTNCLGtCQUFhLEdBQW1DLE1BQU0sQ0FBQztRQUl2RCw2QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRW5ELDZCQUF3QixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbkQsaUNBQTRCLEdBQUcsSUFBSSxZQUFZLEVB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Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdOLElBQUk7c0JBREgsS0FBSztnQkFHTixNQUFNO3NCQURMLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUdOLFlBQVk7c0JBRFgsS0FBSztnQkFHTixhQUFhO3NCQURaLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLO2dCQUdOLHdCQUF3QjtzQkFEdkIsTUFBTTtnQkFHUCx3QkFBd0I7c0JBRHZCLE1BQU07Z0JBR1AsNEJBQTRCO3NCQUQzQixNQUFNO2dCQUt5QyxVQUFVO3NCQUF6RCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDRCxvQkFBb0I7c0JBQWhFLFlBQVk7dUJBQUMsNkJBQTZCO2dCQUNBLGtCQUFrQjtzQkFBNUQsWUFBWTt1QkFBQywyQkFBMkI7Z0JBQ0ksb0JBQW9CO3NCQUFoRSxZQUFZO3VCQUFDLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0R4RGF0YUdyaWRDb21wb25lbnR9IGZyb20gXCJkZXZleHRyZW1lLWFuZ3VsYXJcIjtcclxuaW1wb3J0IHtEYXRhR3JpZFNlcnZpY2V9IGZyb20gXCIuL2RhdGEtZ3JpZC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7TWFzdGVyRGV0YWlsVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuL21hc3Rlci1kZXRhaWwtdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7Um93QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tIFwiLi9yb3ctYnV0dG9ucy10ZW1wbGF0ZS5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtEYXRhR3JpZEZhY3Rvcnl9IGZyb20gXCIuL2RhdGEtZ3JpZC5mYWN0b3J5XCI7XHJcbmltcG9ydCB7SW5zdGFuY2VMaW5rVGVtcGxhdGVEaXJlY3RpdmV9IGZyb20gXCIuL2luc3RhbmNlLWxpbmstdGVtcGxhdGUuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdycy1kYXRhLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRhLWdyaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RhdGEtZ3JpZC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW0RhdGFHcmlkU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKVxyXG4gIHRlbmFudD86IGFueSA9ICdUJztcclxuICBASW5wdXQoKVxyXG4gIGNsYXNzTmFtZSE6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIHZpZXc/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBmaWx0ZXI/OiBhbnk7XHJcbiAgQElucHV0KClcclxuICBlbmFibGVNYXN0ZXJEZXRhaWwgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIGRhdGFHcmlkTmFtZT86IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIHNlbGVjdGlvbk1vZGU6ICdub25lJyB8ICdtdWx0aXBsZScgfCAnc2luZ2xlJyA9ICdub25lJztcclxuICBASW5wdXQoKVxyXG4gIGN1c3RvbUNvbHVtbkZuPzogKGNvbHVtbnM6IGFueVtdKSA9PiB2b2lkO1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHhEYXRhR3JpZENlbGxQcmVwYXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHhEYXRhR3JpZENvbnRlbnRSZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHhEYXRhR3JpZFNlbGVjdGlvbkNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBkYXRhU291cmNlOiBhbnkgPSB7fTtcclxuICBjb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAVmlld0NoaWxkKER4RGF0YUdyaWRDb21wb25lbnQsIHtzdGF0aWM6IHRydWV9KSBkeERhdGFHcmlkITogRHhEYXRhR3JpZENvbXBvbmVudDtcclxuICBAQ29udGVudENoaWxkKE1hc3RlckRldGFpbFRlbXBsYXRlRGlyZWN0aXZlKSBtYXN0ZXJEZXRhaWxUZW1wbGF0ZSE6IE1hc3RlckRldGFpbFRlbXBsYXRlRGlyZWN0aXZlO1xyXG4gIEBDb250ZW50Q2hpbGQoUm93QnV0dG9uc1RlbXBsYXRlRGlyZWN0aXZlKSByb3dCdXR0b25zVGVtcGxhdGUhOiBSb3dCdXR0b25zVGVtcGxhdGVEaXJlY3RpdmU7XHJcbiAgQENvbnRlbnRDaGlsZChJbnN0YW5jZUxpbmtUZW1wbGF0ZURpcmVjdGl2ZSkgaW5zdGFuY2VMaW5rVGVtcGxhdGUhOiBJbnN0YW5jZUxpbmtUZW1wbGF0ZURpcmVjdGl2ZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYWN0b3J5OiBEYXRhR3JpZEZhY3RvcnksIHByb3RlY3RlZCBzZXJ2aWNlOiBEYXRhR3JpZFNlcnZpY2UpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5yZWxvYWQoKTtcclxuICAgIHRoaXMuc2VydmljZS5jZWxsVGVtcGxhdGVMb2FkZWQkLnBpcGUoZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICg8YW55PnRoaXMuZHhEYXRhR3JpZC5pbnN0YW5jZSkucmVzaXplKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHJlbG9hZCgpIHtcclxuICAgIHRoaXMuY29sdW1ucy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5mYWN0b3J5Lm1ha2VEYXRhR3JpZENvbHVtbnModGhpcy50ZW5hbnQsIHRoaXMuY2xhc3NOYW1lLCB0aGlzLnZpZXcpLnN1YnNjcmliZShjb2x1bW5zID0+IHtcclxuICAgICAgaWYgKHRoaXMuY3VzdG9tQ29sdW1uRm4pIHtcclxuICAgICAgICB0aGlzLmN1c3RvbUNvbHVtbkZuKGNvbHVtbnMpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuZmFjdG9yeS5tYWtlRGF0YUdyaWREYXRhU291cmNlKHRoaXMudGVuYW50LCB0aGlzLmNsYXNzTmFtZSwgdGhpcy52aWV3LCB0aGlzLmZpbHRlciwgdGhpcy5kYXRhR3JpZE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgY29udmVydE11bHRpcGxlVmFsdWVDZWxsVGV4dChjZWxsSW5mbzogYW55KSB7XHJcbiAgICBpZiAoIWNlbGxJbmZvLnZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNlbGxJbmZvLnZhbHVlKSkge1xyXG4gICAgICBpZiAoY2VsbEluZm8uY29sdW1uLmxvb2t1cCkge1xyXG4gICAgICAgIHJldHVybiBjZWxsSW5mby52YWx1ZS5tYXAoKGl0ZW06IGFueSkgPT4gY2VsbEluZm8uY29sdW1uLmxvb2t1cC5jYWxjdWxhdGVDZWxsVmFsdWUoaXRlbSkpLmpvaW4oJzxiciAvPicpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBjZWxsSW5mby52YWx1ZS5qb2luKCc8YnIgLz4nKTtcclxuICAgIH1cclxuICAgIGlmIChjZWxsSW5mby5jb2x1bW4ubG9va3VwKSB7XHJcbiAgICAgIHJldHVybiBjZWxsSW5mby5jb2x1bW4ubG9va3VwLmNhbGN1bGF0ZUNlbGxWYWx1ZShjZWxsSW5mby52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2VsbEluZm8udmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRPcmlnaW5hbFZhbHVlKGNlbGxJbmZvOiBhbnksIGtleTogYW55KSB7XHJcbiAgICBjb25zdCBjb25maWcgPSBjZWxsSW5mby5jb2x1bW5ba2V5XTtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjZWxsSW5mby5kYXRhW2NvbmZpZy5maWVsZF07XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW3ZhbHVlXTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2VsbEluZm8uZGF0YVtrZXldO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaChjYWxsYmFjaz86IGFueSkge1xyXG4gICAgdGhpcy5keERhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKS50aGVuKCgpID0+IHtcclxuICAgICAgaWYgKGNhbGxiYWNrKSB7XHJcbiAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5keERhdGFHcmlkLmluc3RhbmNlLmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsUHJlcGFyZWQoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25EeERhdGFHcmlkQ2VsbFByZXBhcmVkLmVtaXQoJGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVudFJlYWR5KCRldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uRHhEYXRhR3JpZENvbnRlbnRSZWFkeS5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25EeERhdGFHcmlkU2VsZWN0aW9uQ2hhbmdlZC5lbWl0KCRldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkVkaXRvclByZXBhcmluZygkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCRldmVudC5wYXJlbnRUeXBlID09PSAnZmlsdGVyUm93JyAmJiAkZXZlbnQuZWRpdG9yTmFtZSA9PT0gJ2R4VGV4dEJveCcpIHtcclxuICAgICAgJGV2ZW50LmVkaXRvck9wdGlvbnMudmFsdWVDaGFuZ2VFdmVudCA9ICdibHVyJztcclxuICAgICAgJGV2ZW50LmVkaXRvck9wdGlvbnMub25FbnRlcktleSA9IChlOiBhbnkpID0+IHtcclxuICAgICAgICBlLmNvbXBvbmVudC5ibHVyKCk7XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkeC1kYXRhLWdyaWQgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXHJcbiAgICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgICAgW3N5bmNMb29rdXBGaWx0ZXJWYWx1ZXNdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbcm93QWx0ZXJuYXRpb25FbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFtjb2x1bW5BdXRvV2lkdGhdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVzaXppbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCJcclxuICAgICAgICAgICAgICBkYXRlU2VyaWFsaXphdGlvbkZvcm1hdD1cInl5eXkvTU0vZGQgSEg6bW06c3NcIlxyXG4gICAgICAgICAgICAgIChvbkNlbGxQcmVwYXJlZCk9XCJvbkNlbGxQcmVwYXJlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAob25FZGl0b3JQcmVwYXJpbmcpPVwib25FZGl0b3JQcmVwYXJpbmcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKG9uQ29udGVudFJlYWR5KT1cIm9uQ29udGVudFJlYWR5KCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZWQpPVwib25TZWxlY3Rpb25DaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChvblJvd0V4cGFuZGluZyk9XCIkZXZlbnQuY29tcG9uZW50LmNvbGxhcHNlQWxsKC0xKVwiPlxyXG4gIDxkeG8tc29ydGluZyBtb2RlPVwibXVsdGlwbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gIDxkeG8tc2VsZWN0aW9uIFttb2RlXT1cInNlbGVjdGlvbk1vZGVcIiBzZWxlY3RBbGxNb2RlPVwicGFnZVwiIHNob3dDaGVja0JveGVzTW9kZT1cImFsd2F5c1wiPjwvZHhvLXNlbGVjdGlvbj5cclxuICA8ZHhvLWhlYWRlci1maWx0ZXIgW3Zpc2libGVdPVwidHJ1ZVwiPlxyXG4gICAgPGR4by1zZWFyY2ggW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLXNlYXJjaD5cclxuICAgIDxkeG8tdGV4dHMgW29rXT1cIifnoa7lrponXCI+PC9keG8tdGV4dHM+XHJcbiAgPC9keG8taGVhZGVyLWZpbHRlcj5cclxuICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XHJcbiAgPGR4by1yZW1vdGUtb3BlcmF0aW9ucyBbZmlsdGVyaW5nXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRpbmddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5nXT1cInRydWVcIj5cclxuICA8L2R4by1yZW1vdGUtb3BlcmF0aW9ucz5cclxuICA8ZHhvLW1hc3Rlci1kZXRhaWwgW2VuYWJsZWRdPVwiZW5hYmxlTWFzdGVyRGV0YWlsXCIgdGVtcGxhdGU9XCJtYXN0ZXJEZXRhaWxUZW1wbGF0ZVwiPjwvZHhvLW1hc3Rlci1kZXRhaWw+XHJcbiAgPGR4by1wYWdpbmcgW3BhZ2VTaXplXT1cIjE1XCI+PC9keG8tcGFnaW5nPlxyXG4gIDxkeG8tcGFnZXIgW3Zpc2libGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbc2hvd0luZm9dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBpbmZvVGV4dD1cIuesrHswfemhte+8jOWFsXsxfemhte+8iOWFsXsyfeS4qumhueebru+8iVwiXHJcbiAgICAgICAgICAgICBbc2hvd1BhZ2VTaXplU2VsZWN0b3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJbMTUsIDMwLCA1MF1cIlxyXG4gID48L2R4by1wYWdlcj5cclxuICA8ZHhvLXNjcm9sbGluZyBzaG93U2Nyb2xsYmFyPVwiYWx3YXlzXCI+PC9keG8tc2Nyb2xsaW5nPlxyXG4gIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbEluZm8gb2YgJ21hc3RlckRldGFpbFRlbXBsYXRlJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJtYXN0ZXJEZXRhaWxUZW1wbGF0ZS50ZW1wbGF0ZVJlZlwiXHJcbiAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7JGltcGxpY2l0OiBjZWxsSW5mbywgY2VsbFRlbXBsYXRlTG9hZGVkJDogc2VydmljZS5jZWxsVGVtcGxhdGVMb2FkZWQkfVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbEluZm8gb2YgJ3Jvd0J1dHRvbnNUZW1wbGF0ZSdcIj5cclxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicm93QnV0dG9uc1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IGNlbGxJbmZvLCBjZWxsVGVtcGxhdGVMb2FkZWQkOiBzZXJ2aWNlLmNlbGxUZW1wbGF0ZUxvYWRlZCR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAnaW5zdGFuY2VMaW5rVGVtcGxhdGUnXCI+XHJcbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImluc3RhbmNlTGlua1RlbXBsYXRlLnRlbXBsYXRlUmVmXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInskaW1wbGljaXQ6IGNlbGxJbmZvLCBjZWxsVGVtcGxhdGVMb2FkZWQkOiBzZXJ2aWNlLmNlbGxUZW1wbGF0ZUxvYWRlZCR9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAncm93SW5kZXhUZW1wbGF0ZSdcIj5cclxuICAgIHt7Y2VsbEluZm8ucm93SW5kZXggKyAxfX1cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICdtdWx0aXBsZVZhbHVlQ2VsbFRlbXBsYXRlJ1wiPlxyXG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cImNvbnZlcnRNdWx0aXBsZVZhbHVlQ2VsbFRleHQoY2VsbEluZm8pXCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAndGV4dENlbGxUZW1wbGF0ZSdcIj5cclxuICAgIDxkaXYgI3RleHREaXYgc3R5bGU9XCJ0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgb3ZlcmZsb3c6IGhpZGRlbjsgY3Vyc29yOiBwb2ludGVyO1wiPnt7Y2VsbEluZm8udmFsdWV9fTwvZGl2PlxyXG4gICAgPGR4LXRvb2x0aXAgW3RhcmdldF09XCJ0ZXh0RGl2XCJcclxuICAgICAgICAgICAgICAgIFtwb3NpdGlvbl09XCIndG9wJ1wiXHJcbiAgICAgICAgICAgICAgICBbc2hvd0V2ZW50XT1cIidjbGljaydcIj5cclxuICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxyXG4gICAgICAgIDxwIHN0eWxlPVwibWF4LXdpZHRoOiAzMjBweDsgdGV4dC1hbGlnbjogbGVmdDsgd2hpdGUtc3BhY2U6IG5vcm1hbDtcIiBbaW5uZXJUZXh0XT1cImNlbGxJbmZvLnZhbHVlXCI+PC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZHgtdG9vbHRpcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGNlbGxJbmZvIG9mICdmaWxlQ2VsbFRlbXBsYXRlJ1wiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsZSBvZiBjZWxsSW5mby52YWx1ZVwiPlxyXG4gICAgICA8cnMtZmlsZS1jZWxsLXRlbXBsYXRlIFt0YWJsZV09XCJjZWxsSW5mby5jb21wb25lbnRcIiBbb2lkXT1cImZpbGVcIj48L3JzLWZpbGUtY2VsbC10ZW1wbGF0ZT5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbEluZm8gb2YgJ3VzZXJDZWxsVGVtcGxhdGUnXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB1c2VyIG9mIGdldE9yaWdpbmFsVmFsdWUoY2VsbEluZm8sICd1c2VySW5mbycpXCI+XHJcbiAgICAgIDxycy11c2VyLWluZm8tdGVtcGxhdGUgW3RhYmxlXT1cImNlbGxJbmZvLmNvbXBvbmVudFwiIFt1aWRdPVwidXNlclwiPjwvcnMtdXNlci1pbmZvLXRlbXBsYXRlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyBvZiAndW5pdENlbGxUZW1wbGF0ZSdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVuaXQgb2YgZ2V0T3JpZ2luYWxWYWx1ZShjZWxsSW5mbywgJ3VuaXRJbmZvJylcIj5cclxuICAgICAgPHJzLXVuaXQtaW5mby10ZW1wbGF0ZSBbdGFibGVdPVwiY2VsbEluZm8uY29tcG9uZW50XCIgW3VpZF09XCJ1bml0XCI+PC9ycy11bml0LWluZm8tdGVtcGxhdGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuPC9keC1kYXRhLWdyaWQ+XHJcbiJdfQ==
@@ -314,6 +314,7 @@ export class DataGridFactory {
314
314
  cssClass: 'cell-vertical-middle',
315
315
  allowHeaderFiltering: false,
316
316
  allowFiltering: false,
317
+ allowSorting: false,
317
318
  visible: field.visible,
318
319
  fixed: field.fixed
319
320
  };
@@ -339,7 +340,7 @@ export class DataGridFactory {
339
340
  });
340
341
  return result;
341
342
  }
342
- makeDataGridDataSource(tenant, className, view, extraFilter) {
343
+ makeDataGridDataSource(tenant, className, view, extraFilter, dataGridName) {
343
344
  return new CustomStore({
344
345
  key: 'oid',
345
346
  byKey: (key) => {
@@ -389,7 +390,11 @@ export class DataGridFactory {
389
390
  if (filter) {
390
391
  params += '&filter=' + encodeURIComponent(JSON.stringify(filter));
391
392
  }
392
- return lastValueFrom(this.service.getMany(tenant, className, params + '&view=' + (view || '')));
393
+ params += '&view=' + view || '';
394
+ if (dataGridName) {
395
+ params += '&dataGridName=' + dataGridName;
396
+ }
397
+ return lastValueFrom(this.service.getMany(tenant, className, params));
393
398
  }
394
399
  });
395
400
  }
@@ -402,4 +407,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImpor
402
407
  providedIn: 'root'
403
408
  }]
404
409
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
405
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9kYXRhLWdyaWQvZGF0YS1ncmlkLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU01QixZQUFPLEdBQVE7WUFDckIsTUFBTSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7YUFDcEU7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQzthQUNwRTtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsZ0JBQWdCLEVBQUUsRUFBRTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7YUFDL0Q7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFFBQVE7Z0JBQ2xC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O1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NEdBbllVLGVBQWU7Z0hBQWYsZUFBZSxjQUZkLE1BQU07MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3VzdG9tU3RvcmUgZnJvbSBcImRldmV4dHJlbWUvZGF0YS9jdXN0b21fc3RvcmVcIjtcclxuaW1wb3J0IHtsYXN0VmFsdWVGcm9tLCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Q29sdW1ufSBmcm9tIFwiZGV2ZXh0cmVtZS91aS9kYXRhX2dyaWRcIjtcclxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0RhdGFHcmlkU2VydmljZX0gZnJvbSBcIi4vZGF0YS1ncmlkLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFHcmlkRmFjdG9yeSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7XHJcbiAgICB0aGlzLnNlcnZpY2UgPSBuZXcgRGF0YUdyaWRTZXJ2aWNlKGh0dHApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXJ2aWNlITogRGF0YUdyaWRTZXJ2aWNlO1xyXG5cclxuICBwcml2YXRlIHR5cGVNYXA6IGFueSA9IHtcclxuICAgIFNUUklORzoge1xyXG4gICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnY29udGFpbnMnLCAnc3RhcnRzd2l0aCcsICdlbmRzd2l0aCcsICc9JywgJzw+J11cclxuICAgIH0sXHJcbiAgICBURVhUOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWydjb250YWlucycsICdzdGFydHN3aXRoJywgJ2VuZHN3aXRoJywgJz0nLCAnPD4nXVxyXG4gICAgfSxcclxuICAgIEJPT0xFQU46IHtcclxuICAgICAgZGF0YVR5cGU6ICdib29sZWFuJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogW11cclxuICAgIH0sXHJcbiAgICBJTlRFR0VSOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnbnVtYmVyJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWyc9JywgJzw+JywgJz4nLCAnPj0nLCAnPCcsICc8PScsICdiZXR3ZWVuJ11cclxuICAgIH0sXHJcbiAgICBET1VCTEU6IHtcclxuICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXVxyXG4gICAgfSxcclxuICAgIERBVEU6IHtcclxuICAgICAgZGF0YVR5cGU6ICdkYXRlJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWyc9JywgJzw+JywgJz4nLCAnPj0nLCAnPCcsICc8PScsICdiZXR3ZWVuJ10sXHJcbiAgICAgIGZvcm1hdDogJ3l5eXkvTU0vZGQnXHJcbiAgICB9LFxyXG4gICAgREFURVRJTUU6IHtcclxuICAgICAgZGF0YVR5cGU6ICdkYXRldGltZScsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPicsICc8JywgJ2JldHdlZW4nXSxcclxuICAgICAgZm9ybWF0OiAneXl5eS9NTS9kZCBISDptbTpzcydcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwdWJsaWMgbWFrZURhdGFHcmlkQ29sdW1ucyh0ZW5hbnQ6IGFueSwgY2xhc3NOYW1lOiBhbnksIHZpZXc6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCByZXN1bHQgPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLmdldE1ldGFkYXRhQnlWaWV3KHRlbmFudCwgY2xhc3NOYW1lLCB2aWV3IHx8ICcnKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xyXG4gICAgICBjb25zdCBjb2x1bW5zID0gW107XHJcbiAgICAgIGZvciAobGV0IGZpZWxkIG9mIHJlc3BvbnNlLmRhdGEuY29sdW1ucykge1xyXG4gICAgICAgIGxldCBjb2x1bW46IGFueTtcclxuICAgICAgICBzd2l0Y2ggKGZpZWxkLnR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ0ZJTEUnOlxyXG4gICAgICAgICAgICBjb2x1bW4gPSB7XHJcbiAgICAgICAgICAgICAgZGF0YUZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgICAgIGNhcHRpb246IGZpZWxkLmNhcHRpb24sXHJcbiAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgIGFsaWdubWVudDogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgY3NzQ2xhc3M6ICdjZWxsLXZlcnRpY2FsLW1pZGRsZScsXHJcbiAgICAgICAgICAgICAgYWxsb3dIZWFkZXJGaWx0ZXJpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93RmlsdGVyaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICBhbGxvd1NvcnRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGNlbGxUZW1wbGF0ZTogJ2ZpbGVDZWxsVGVtcGxhdGUnLFxyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgZml4ZWQ6IGZpZWxkLmZpeGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnTk9STUFMJzpcclxuICAgICAgICAgICAgY29sdW1uID0ge1xyXG4gICAgICAgICAgICAgIGRhdGFGaWVsZDogZmllbGQubmFtZSxcclxuICAgICAgICAgICAgICBjYXB0aW9uOiBmaWVsZC5jYXB0aW9uLFxyXG4gICAgICAgICAgICAgIGRhdGFUeXBlOiB0aGlzLnR5cGVNYXBbZmllbGQuZGF0YVR5cGVdLmRhdGFUeXBlLFxyXG4gICAgICAgICAgICAgIGFsaWdubWVudDogJ2xlZnQnLFxyXG4gICAgICAgICAgICAgIGNzc0NsYXNzOiAnY2VsbC12ZXJ0aWNhbC1taWRkbGUnLFxyXG4gICAgICAgICAgICAgIGFsbG93SGVhZGVyRmlsdGVyaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGhlYWRlckZpbHRlcjoge1xyXG4gICAgICAgICAgICAgICAgYWxsb3dTZWxlY3RBbGw6IGZhbHNlXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBmaWx0ZXJPcGVyYXRpb25zOiB0aGlzLnR5cGVNYXBbZmllbGQuZGF0YVR5cGVdLmZpbHRlck9wZXJhdGlvbnMsXHJcbiAgICAgICAgICAgICAgZm9ybWF0OiB0aGlzLnR5cGVNYXBbZmllbGQuZGF0YVR5cGVdLmZvcm1hdCxcclxuICAgICAgICAgICAgICB2aXNpYmxlOiBmaWVsZC52aXNpYmxlLFxyXG4gICAgICAgICAgICAgIGZpeGVkOiBmaWVsZC5maXhlZFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBpZiAoZmllbGQuaXNQcmltYXJ5S2V5KSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uLmluc3RhbmNlSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIHRlbmFudCxcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZVxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc3dpdGNoIChmaWVsZC5kYXRhVHlwZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ0JPT0xFQU4nOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmFsbG93SGVhZGVyRmlsdGVyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uYWxpZ25tZW50ID0gJ2NlbnRlcic7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4udHJ1ZVRleHQgPSAn5pivJztcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5mYWxzZVRleHQgPSAn5ZCmJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ0RBVEUnOlxyXG4gICAgICAgICAgICAgIGNhc2UgJ0RBVEVUSU1FJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5oZWFkZXJGaWx0ZXIuZGF0YVNvdXJjZSA9IChvcHRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLmdyb3VwLmxlbmd0aCA9IDM7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVNvdXJjZS5wb3N0UHJvY2VzcyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLmZvckVhY2goKHllYXI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgeWVhci50ZXh0ID0geWVhci5rZXkgKyAn5bm0JztcclxuICAgICAgICAgICAgICAgICAgICAgIHllYXIuaXRlbXMuZm9yRWFjaCgobW9udGg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb250aC50ZXh0ID0gbW9udGgua2V5ICsgJ+aciCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoLml0ZW1zLmZvckVhY2goKGRheTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5LnRleHQgPSBkYXkua2V5ICsgJ+aXpSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5Lml0ZW1zID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51bnNoaWZ0KHtcclxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICco56m655m9KSdcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlICdET1VCTEUnOlxyXG4gICAgICAgICAgICAgIGNhc2UgJ0lOVEVHRVInOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0gKG9wdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGFTb3VyY2UucG9zdFByb2Nlc3MgPSAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51bnNoaWZ0KHtcclxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICco56m655m9KSdcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnX18nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnX18nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlICdTVFJJTkcnOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0gKG9wdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGFTb3VyY2UucG9zdFByb2Nlc3MgPSAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS51bnNoaWZ0KHtcclxuICAgICAgICAgICAgICAgICAgICAgIGtleTogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICco56m655m9KSdcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnX18nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnX18nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50LnR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgY2FzZSAnVVNFUic6XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLnVzZXJJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGZpZWxkLm5hbWVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAndXNlckNlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0VXNlckNvbHVtbkRhdGFTb3VyY2UodGVuYW50LCBjbGFzc05hbWUsIHZpZXcsIGZpZWxkLm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uYWxsb3dGaWx0ZXJpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5sb29rdXAgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldFVzZXJDb2x1bW5EYXRhU291cmNlKHRlbmFudCwgY2xhc3NOYW1lLCB2aWV3LCBmaWVsZC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVFeHByOiAndmFsdWUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcjogJ3RleHQnXHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24gPSBmdW5jdGlvbiAodGhpczogQ29sdW1uLCBmaWx0ZXJWYWx1ZTogYW55LCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbjogYW55LCB0YXJnZXQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgJz0nLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnY29udGFpbnMnLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVzZXJfZGlzcGxheU5hbWUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24gPSBmdW5jdGlvbiAodGhpczogYW55LCBmaWx0ZXJWYWx1ZTogYW55LCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbjogYW55LCB0YXJnZXQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSAnaGVhZGVyRmlsdGVyJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFGaWVsZCA9ICdfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVc2VyX3VzZXJuYW1lJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW4ubmFtZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnb3InLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVXNlcl91c2VybmFtZScsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlICdVTklUJzpcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4udW5pdEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICd1bml0Q2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRVbml0Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgZmllbGQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuY29uZmlnLmNvbnN0cmFpbnQubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0ZpbHRlcmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmxvb2t1cCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0VW5pdENvbHVtbkRhdGFTb3VyY2UodGVuYW50LCBjbGFzc05hbWUsIHZpZXcsIGZpZWxkLm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBDb2x1bW4sIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnPScsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICdjb250YWlucycsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVW5pdF9kaXNwbGF5TmFtZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBDb2x1bW4sIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09ICdoZWFkZXJGaWx0ZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVuaXRfbmFtZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uLm5hbWUsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVuaXRfbmFtZScsIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uLCBmaWx0ZXJWYWx1ZV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBjYXNlICdDVVNUT00nOlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5oZWFkZXJGaWx0ZXIuZGF0YVNvdXJjZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldENvbnN0cmFpbnRDb2x1bW5EYXRhU291cmNlKHRlbmFudCwgY2xhc3NOYW1lLCB2aWV3LCBmaWVsZC5uYW1lLCBmaWVsZC5jb25maWcuY29uc3RyYWludC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5sb29rdXAgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRDb25zdHJhaW50RW50cmllcyhmaWVsZC5jb25maWcuY29uc3RyYWludC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI6ICdzdG9yZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5RXhwcjogJ2Rpc3BsYXknXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uZmlsdGVyT3BlcmF0aW9ucyA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jb25maWcuY29uc3RyYWludC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24gPSBmdW5jdGlvbiAodGhpczogQ29sdW1uLCBmaWx0ZXJWYWx1ZTogYW55LCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbjogYW55LCB0YXJnZXQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmlsdGVyVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgJz0nLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnY29udGFpbnMnLCB0YXJnZXRdKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ211bHRpcGxlVmFsdWVDZWxsVGVtcGxhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAndGV4dENlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlICdURVhUJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0hlYWRlckZpbHRlcmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLndpZHRoID0gMjQwO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICd0ZXh0Q2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnUkVMQVRJT04nOlxyXG4gICAgICAgICAgICBjb2x1bW4gPSB7XHJcbiAgICAgICAgICAgICAgZGF0YUZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgICAgIGNhcHRpb246IGZpZWxkLmNhcHRpb24sXHJcbiAgICAgICAgICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgICAgICAgIGFsaWdubWVudDogJ2xlZnQnLFxyXG4gICAgICAgICAgICAgIGNzc0NsYXNzOiAnY2VsbC12ZXJ0aWNhbC1taWRkbGUnLFxyXG4gICAgICAgICAgICAgIGFsbG93SGVhZGVyRmlsdGVyaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICBhbGxvd0ZpbHRlcmluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmllbGQudmlzaWJsZSxcclxuICAgICAgICAgICAgICBmaXhlZDogZmllbGQuZml4ZWRcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29sdW1uLmluc3RhbmNlSW5mbyA9IHtcclxuICAgICAgICAgICAgICB0ZW5hbnQsXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lOiBmaWVsZC50YXJnZXRDbGFzc05hbWUsXHJcbiAgICAgICAgICAgICAga2V5OiBmaWVsZC5uYW1lXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQucmVsYXRpb25UeXBlKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAnTUFOWV9UT19PTkUnOlxyXG4gICAgICAgICAgICAgIGNhc2UgJ09ORV9UT19PTkUnOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmFsbG93RmlsdGVyaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5maWx0ZXJPcGVyYXRpb25zID0gWyc9J107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICdtdWx0aXBsZVZhbHVlQ2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xyXG4gICAgICB9XHJcbiAgICAgIHJlc3VsdC5uZXh0KGNvbHVtbnMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1ha2VEYXRhR3JpZERhdGFTb3VyY2UodGVuYW50OiBhbnksIGNsYXNzTmFtZTogYW55LCB2aWV3OiBhbnksIGV4dHJhRmlsdGVyOiBhbnkpOiBDdXN0b21TdG9yZSB7XHJcbiAgICByZXR1cm4gbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAga2V5OiAnb2lkJyxcclxuICAgICAgYnlLZXk6IChrZXk6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRPbmUodGVuYW50LCBjbGFzc05hbWUsIGtleSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSkpKTtcclxuICAgICAgfSxcclxuICAgICAgbG9hZDogKGxvYWRPcHRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZGF0YUZpZWxkKSB7XHJcbiAgICAgICAgICAvLyDmnKrph43lhploZWFkZXJGaWx0ZXLnmoRkYXRhU291cmNl5pe277yMaGVhZGVyRmlsdGVy5Lya6LCD55SobG9hZOaWueazleWKoOi9veetm+mAieagke+8jOmHjeWGmeivpeaWueazleafpeivouivpeihqOaJgOacieaVsOaNrlxyXG4gICAgICAgICAgLy8g6K+l5pa55byP5a2Y5Zyo6aOO6Zmp77yM5peg5rOV6K+G5Yir5LiA5a6a5piv6YCa6L+HaGVhZGVyRmlsdGVy6L+H5ruk5omN5a2Y5ZyoZGF0YUZpZWxk5Y+C5pWwXHJcbiAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgbG9hZE9wdGlvbnMuZGF0YUZpZWxkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJhbXMgPSAnPyc7XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNraXAgfHwgbG9hZE9wdGlvbnMudGFrZSkge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdvZmZzZXQ9JyArIGxvYWRPcHRpb25zLnNraXA7XHJcbiAgICAgICAgICBwYXJhbXMgKz0gJyZsaW1pdD0nICsgbG9hZE9wdGlvbnMudGFrZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdsaW1pdD0wJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgIGxldCBmaXJzdCA9IHRydWU7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHRoaXNTb3J0IG9mIGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgICAgaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcmb3JkZXJCeT0nICsgdGhpc1NvcnQuc2VsZWN0b3I7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcsJyArIHRoaXNTb3J0LnNlbGVjdG9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzU29ydC5kZXNjKSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcgZGVzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbHRlcjtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZmlsdGVyKSB7XHJcbiAgICAgICAgICBmaWx0ZXIgPSBsb2FkT3B0aW9ucy5maWx0ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRyYUZpbHRlcikge1xyXG4gICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICBmaWx0ZXIgPSBbZmlsdGVyLCAnYW5kJywgZXh0cmFGaWx0ZXJdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyID0gZXh0cmFGaWx0ZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgICAgIHBhcmFtcyArPSAnJmZpbHRlcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0TWFueSh0ZW5hbnQsIGNsYXNzTmFtZSwgcGFyYW1zICsgJyZ2aWV3PScgKyAodmlldyB8fCAnJykpKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
410
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLmZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcnMtYW50L3NyYy9kYXRhLWdyaWQvZGF0YS1ncmlkLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxXQUFXLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTdELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7QUFNcEQsTUFBTSxPQUFPLGVBQWU7SUFDMUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQU01QixZQUFPLEdBQVE7WUFDckIsTUFBTSxFQUFFO2dCQUNOLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUM7YUFDcEU7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGdCQUFnQixFQUFFLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQzthQUNwRTtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsU0FBUztnQkFDbkIsZ0JBQWdCLEVBQUUsRUFBRTthQUNyQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7YUFDL0Q7WUFDRCxNQUFNLEVBQUU7Z0JBQ04sUUFBUSxFQUFFLFFBQVE7Z0JBQ2xC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QkFDM0M7Z0JBQ0QsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hFLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOzs0R0F4WVUsZUFBZTtnSEFBZixlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDdXN0b21TdG9yZSBmcm9tIFwiZGV2ZXh0cmVtZS9kYXRhL2N1c3RvbV9zdG9yZVwiO1xyXG5pbXBvcnQge2xhc3RWYWx1ZUZyb20sIG1hcCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtDb2x1bW59IGZyb20gXCJkZXZleHRyZW1lL3VpL2RhdGFfZ3JpZFwiO1xyXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7RGF0YUdyaWRTZXJ2aWNlfSBmcm9tIFwiLi9kYXRhLWdyaWQuc2VydmljZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGF0YUdyaWRGYWN0b3J5IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIHRoaXMuc2VydmljZSA9IG5ldyBEYXRhR3JpZFNlcnZpY2UoaHR0cCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlcnZpY2UhOiBEYXRhR3JpZFNlcnZpY2U7XHJcblxyXG4gIHByaXZhdGUgdHlwZU1hcDogYW55ID0ge1xyXG4gICAgU1RSSU5HOiB7XHJcbiAgICAgIGRhdGFUeXBlOiAnc3RyaW5nJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWydjb250YWlucycsICdzdGFydHN3aXRoJywgJ2VuZHN3aXRoJywgJz0nLCAnPD4nXVxyXG4gICAgfSxcclxuICAgIFRFWFQ6IHtcclxuICAgICAgZGF0YVR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJ2NvbnRhaW5zJywgJ3N0YXJ0c3dpdGgnLCAnZW5kc3dpdGgnLCAnPScsICc8PiddXHJcbiAgICB9LFxyXG4gICAgQk9PTEVBTjoge1xyXG4gICAgICBkYXRhVHlwZTogJ2Jvb2xlYW4nLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbXVxyXG4gICAgfSxcclxuICAgIElOVEVHRVI6IHtcclxuICAgICAgZGF0YVR5cGU6ICdudW1iZXInLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXVxyXG4gICAgfSxcclxuICAgIERPVUJMRToge1xyXG4gICAgICBkYXRhVHlwZTogJ251bWJlcicsXHJcbiAgICAgIGZpbHRlck9wZXJhdGlvbnM6IFsnPScsICc8PicsICc+JywgJz49JywgJzwnLCAnPD0nLCAnYmV0d2VlbiddXHJcbiAgICB9LFxyXG4gICAgREFURToge1xyXG4gICAgICBkYXRhVHlwZTogJ2RhdGUnLFxyXG4gICAgICBmaWx0ZXJPcGVyYXRpb25zOiBbJz0nLCAnPD4nLCAnPicsICc+PScsICc8JywgJzw9JywgJ2JldHdlZW4nXSxcclxuICAgICAgZm9ybWF0OiAneXl5eS9NTS9kZCdcclxuICAgIH0sXHJcbiAgICBEQVRFVElNRToge1xyXG4gICAgICBkYXRhVHlwZTogJ2RhdGV0aW1lJyxcclxuICAgICAgZmlsdGVyT3BlcmF0aW9uczogWyc+JywgJzwnLCAnYmV0d2VlbiddLFxyXG4gICAgICBmb3JtYXQ6ICd5eXl5L01NL2RkIEhIOm1tOnNzJ1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHB1YmxpYyBtYWtlRGF0YUdyaWRDb2x1bW5zKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgdmlldzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0TWV0YWRhdGFCeVZpZXcodGVuYW50LCBjbGFzc05hbWUsIHZpZXcgfHwgJycpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSBbXTtcclxuICAgICAgZm9yIChsZXQgZmllbGQgb2YgcmVzcG9uc2UuZGF0YS5jb2x1bW5zKSB7XHJcbiAgICAgICAgbGV0IGNvbHVtbjogYW55O1xyXG4gICAgICAgIHN3aXRjaCAoZmllbGQudHlwZSkge1xyXG4gICAgICAgICAgY2FzZSAnRklMRSc6XHJcbiAgICAgICAgICAgIGNvbHVtbiA9IHtcclxuICAgICAgICAgICAgICBkYXRhRmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICAgICAgY2FwdGlvbjogZmllbGQuY2FwdGlvbixcclxuICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICBjc3NDbGFzczogJ2NlbGwtdmVydGljYWwtbWlkZGxlJyxcclxuICAgICAgICAgICAgICBhbGxvd0hlYWRlckZpbHRlcmluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYWxsb3dGaWx0ZXJpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93U29ydGluZzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgY2VsbFRlbXBsYXRlOiAnZmlsZUNlbGxUZW1wbGF0ZScsXHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmllbGQudmlzaWJsZSxcclxuICAgICAgICAgICAgICBmaXhlZDogZmllbGQuZml4ZWRcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdOT1JNQUwnOlxyXG4gICAgICAgICAgICBjb2x1bW4gPSB7XHJcbiAgICAgICAgICAgICAgZGF0YUZpZWxkOiBmaWVsZC5uYW1lLFxyXG4gICAgICAgICAgICAgIGNhcHRpb246IGZpZWxkLmNhcHRpb24sXHJcbiAgICAgICAgICAgICAgZGF0YVR5cGU6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZGF0YVR5cGUsXHJcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgY3NzQ2xhc3M6ICdjZWxsLXZlcnRpY2FsLW1pZGRsZScsXHJcbiAgICAgICAgICAgICAgYWxsb3dIZWFkZXJGaWx0ZXJpbmc6IHRydWUsXHJcbiAgICAgICAgICAgICAgaGVhZGVyRmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICBhbGxvd1NlbGVjdEFsbDogZmFsc2VcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGZpbHRlck9wZXJhdGlvbnM6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZmlsdGVyT3BlcmF0aW9ucyxcclxuICAgICAgICAgICAgICBmb3JtYXQ6IHRoaXMudHlwZU1hcFtmaWVsZC5kYXRhVHlwZV0uZm9ybWF0LFxyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgZml4ZWQ6IGZpZWxkLmZpeGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChmaWVsZC5pc1ByaW1hcnlLZXkpIHtcclxuICAgICAgICAgICAgICBjb2x1bW4uaW5zdGFuY2VJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgdGVuYW50LFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLmRhdGFUeXBlKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSAnQk9PTEVBTic6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uYWxsb3dIZWFkZXJGaWx0ZXJpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5hbGlnbm1lbnQgPSAnY2VudGVyJztcclxuICAgICAgICAgICAgICAgIGNvbHVtbi50cnVlVGV4dCA9ICfmmK8nO1xyXG4gICAgICAgICAgICAgICAgY29sdW1uLmZhbHNlVGV4dCA9ICflkKYnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSAnREFURSc6XHJcbiAgICAgICAgICAgICAgY2FzZSAnREFURVRJTUUnOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0gKG9wdGlvbnM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICBvcHRpb25zLmRhdGFTb3VyY2UuZ3JvdXAubGVuZ3RoID0gMztcclxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5kYXRhU291cmNlLnBvc3RQcm9jZXNzID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgoeWVhcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB5ZWFyLnRleHQgPSB5ZWFyLmtleSArICflubQnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgeWVhci5pdGVtcy5mb3JFYWNoKChtb250aDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoLnRleHQgPSBtb250aC5rZXkgKyAn5pyIJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9udGguaXRlbXMuZm9yRWFjaCgoZGF5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXkudGV4dCA9IGRheS5rZXkgKyAn5pelJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXkuaXRlbXMgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyjnqbrnmb0pJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ0RPVUJMRSc6XHJcbiAgICAgICAgICAgICAgY2FzZSAnSU5URUdFUic6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSAob3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVNvdXJjZS5wb3N0UHJvY2VzcyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyjnqbrnmb0pJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ1NUUklORyc6XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSAob3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnMuZGF0YVNvdXJjZS5wb3N0UHJvY2VzcyA9IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkYXRhLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyjnqbrnmb0pJ1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJ19fJyxcclxuICAgICAgICAgICAgICAgICAgICAgIHRleHQ6ICdfXycsXHJcbiAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuY29uZmlnLmNvbnN0cmFpbnQudHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICBjYXNlICdVU0VSJzpcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4udXNlckluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmllbGQubmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICd1c2VyQ2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uaGVhZGVyRmlsdGVyLmRhdGFTb3VyY2UgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdG9yZTogbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRVc2VyQ29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgZmllbGQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQuY29uZmlnLmNvbnN0cmFpbnQubXVsdGlwbGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0ZpbHRlcmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmxvb2t1cCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVNvdXJjZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0VXNlckNvbHVtbkRhdGFTb3VyY2UodGVuYW50LCBjbGFzc05hbWUsIHZpZXcsIGZpZWxkLm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUV4cHI6ICd2YWx1ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiAndGV4dCdcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBDb2x1bW4sIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnPScsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICdjb250YWlucycsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVXNlcl9kaXNwbGF5TmFtZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09ICdoZWFkZXJGaWx0ZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YUZpZWxkID0gJ19fJyArIGZpZWxkLm5hbWUgKyAnXFx1MDAwMVVzZXJfdXNlcm5hbWUnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbi5uYW1lLCBzZWxlY3RlZEZpbHRlck9wZXJhdGlvbiwgZmlsdGVyVmFsdWVdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWydfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVc2VyX3VzZXJuYW1lJywgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ1VOSVQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi51bml0SW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZC5uYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ3VuaXRDZWxsVGVtcGxhdGUnO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5oZWFkZXJGaWx0ZXIuZGF0YVNvdXJjZSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHN0b3JlOiBuZXcgQ3VzdG9tU3RvcmUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldFVuaXRDb2x1bW5EYXRhU291cmNlKHRlbmFudCwgY2xhc3NOYW1lLCB2aWV3LCBmaWVsZC5uYW1lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgcGFnaW5hdGU6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5jb25maWcuY29uc3RyYWludC5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmFsbG93RmlsdGVyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4ubG9va3VwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhU291cmNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRVbml0Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgZmllbGQubmFtZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2luYXRlOiB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcjogJ3ZhbHVlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUV4cHI6ICd0ZXh0J1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHRoaXM6IENvbHVtbiwgZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbHRlclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICc9JywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgJ2NvbnRhaW5zJywgdGFyZ2V0XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29sdW1uLmRhdGFGaWVsZCA9ICdfXycgKyBmaWVsZC5uYW1lICsgJ1xcdTAwMDFVbml0X2Rpc3BsYXlOYW1lJztcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uID0gZnVuY3Rpb24gKHRoaXM6IENvbHVtbiwgZmlsdGVyVmFsdWU6IGFueSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb246IGFueSwgdGFyZ2V0OiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PT0gJ2hlYWRlckZpbHRlcicpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhRmllbGQgPSAnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVW5pdF9uYW1lJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uLmFwcGx5KHRoaXMsIFtmaWx0ZXJWYWx1ZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW4ubmFtZSwgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAnb3InLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsnX18nICsgZmllbGQubmFtZSArICdcXHUwMDAxVW5pdF9uYW1lJywgc2VsZWN0ZWRGaWx0ZXJPcGVyYXRpb24sIGZpbHRlclZhbHVlXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGNhc2UgJ0NVU1RPTSc6XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmhlYWRlckZpbHRlci5kYXRhU291cmNlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29uc3RyYWludENvbHVtbkRhdGFTb3VyY2UodGVuYW50LCBjbGFzc05hbWUsIHZpZXcsIGZpZWxkLm5hbWUsIGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLmxvb2t1cCA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmU6IG5ldyBDdXN0b21TdG9yZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1ZUZyb20odGhpcy5zZXJ2aWNlLmdldENvbnN0cmFpbnRFbnRyaWVzKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdpbmF0ZTogdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlRXhwcjogJ3N0b3JlJyxcclxuICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlFeHByOiAnZGlzcGxheSdcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5maWx0ZXJPcGVyYXRpb25zID0gW107XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLmNvbmZpZy5jb25zdHJhaW50Lm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4uY2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbiA9IGZ1bmN0aW9uICh0aGlzOiBDb2x1bW4sIGZpbHRlclZhbHVlOiBhbnksIHNlbGVjdGVkRmlsdGVyT3BlcmF0aW9uOiBhbnksIHRhcmdldDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlZmF1bHRDYWxjdWxhdGVGaWx0ZXJFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWx0ZXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdENhbGN1bGF0ZUZpbHRlckV4cHJlc3Npb24uYXBwbHkodGhpcywgW2ZpbHRlclZhbHVlLCAnPScsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0Q2FsY3VsYXRlRmlsdGVyRXhwcmVzc2lvbi5hcHBseSh0aGlzLCBbZmlsdGVyVmFsdWUsICdjb250YWlucycsIHRhcmdldF0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAnbXVsdGlwbGVWYWx1ZUNlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29sdW1uLmNlbGxUZW1wbGF0ZSA9ICd0ZXh0Q2VsbFRlbXBsYXRlJztcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgJ1RFWFQnOlxyXG4gICAgICAgICAgICAgICAgY29sdW1uLmFsbG93SGVhZGVyRmlsdGVyaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4ud2lkdGggPSAyNDA7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uY2VsbFRlbXBsYXRlID0gJ3RleHRDZWxsVGVtcGxhdGUnO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdSRUxBVElPTic6XHJcbiAgICAgICAgICAgIGNvbHVtbiA9IHtcclxuICAgICAgICAgICAgICBkYXRhRmllbGQ6IGZpZWxkLm5hbWUsXHJcbiAgICAgICAgICAgICAgY2FwdGlvbjogZmllbGQuY2FwdGlvbixcclxuICAgICAgICAgICAgICBkYXRhVHlwZTogJ3N0cmluZycsXHJcbiAgICAgICAgICAgICAgYWxpZ25tZW50OiAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgY3NzQ2xhc3M6ICdjZWxsLXZlcnRpY2FsLW1pZGRsZScsXHJcbiAgICAgICAgICAgICAgYWxsb3dIZWFkZXJGaWx0ZXJpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFsbG93RmlsdGVyaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICBhbGxvd1NvcnRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZpc2libGU6IGZpZWxkLnZpc2libGUsXHJcbiAgICAgICAgICAgICAgZml4ZWQ6IGZpZWxkLmZpeGVkXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbHVtbi5pbnN0YW5jZUluZm8gPSB7XHJcbiAgICAgICAgICAgICAgdGVuYW50LFxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZTogZmllbGQudGFyZ2V0Q2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgIGtleTogZmllbGQubmFtZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGZpZWxkLnJlbGF0aW9uVHlwZSkge1xyXG4gICAgICAgICAgICAgIGNhc2UgJ01BTllfVE9fT05FJzpcclxuICAgICAgICAgICAgICBjYXNlICdPTkVfVE9fT05FJzpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5hbGxvd0ZpbHRlcmluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW4uZmlsdGVyT3BlcmF0aW9ucyA9IFsnPSddO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGNvbHVtbi5jZWxsVGVtcGxhdGUgPSAnbXVsdGlwbGVWYWx1ZUNlbGxUZW1wbGF0ZSc7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgICByZXN1bHQubmV4dChjb2x1bW5zKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtYWtlRGF0YUdyaWREYXRhU291cmNlKHRlbmFudDogYW55LCBjbGFzc05hbWU6IGFueSwgdmlldzogYW55LCBleHRyYUZpbHRlcjogYW55LCBkYXRhR3JpZE5hbWU/OiBzdHJpbmcpOiBDdXN0b21TdG9yZSB7XHJcbiAgICByZXR1cm4gbmV3IEN1c3RvbVN0b3JlKHtcclxuICAgICAga2V5OiAnb2lkJyxcclxuICAgICAgYnlLZXk6IChrZXk6IGFueSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBsYXN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5nZXRPbmUodGVuYW50LCBjbGFzc05hbWUsIGtleSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YSkpKTtcclxuICAgICAgfSxcclxuICAgICAgbG9hZDogKGxvYWRPcHRpb25zOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZGF0YUZpZWxkKSB7XHJcbiAgICAgICAgICAvLyDmnKrph43lhploZWFkZXJGaWx0ZXLnmoRkYXRhU291cmNl5pe277yMaGVhZGVyRmlsdGVy5Lya6LCD55SobG9hZOaWueazleWKoOi9veetm+mAieagke+8jOmHjeWGmeivpeaWueazleafpeivouivpeihqOaJgOacieaVsOaNrlxyXG4gICAgICAgICAgLy8g6K+l5pa55byP5a2Y5Zyo6aOO6Zmp77yM5peg5rOV6K+G5Yir5LiA5a6a5piv6YCa6L+HaGVhZGVyRmlsdGVy6L+H5ruk5omN5a2Y5ZyoZGF0YUZpZWxk5Y+C5pWwXHJcbiAgICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0Q29sdW1uRGF0YVNvdXJjZSh0ZW5hbnQsIGNsYXNzTmFtZSwgdmlldywgbG9hZE9wdGlvbnMuZGF0YUZpZWxkKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBwYXJhbXMgPSAnPyc7XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNraXAgfHwgbG9hZE9wdGlvbnMudGFrZSkge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdvZmZzZXQ9JyArIGxvYWRPcHRpb25zLnNraXA7XHJcbiAgICAgICAgICBwYXJhbXMgKz0gJyZsaW1pdD0nICsgbG9hZE9wdGlvbnMudGFrZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcGFyYW1zICs9ICdsaW1pdD0wJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgIGxldCBmaXJzdCA9IHRydWU7XHJcbiAgICAgICAgICBmb3IgKGNvbnN0IHRoaXNTb3J0IG9mIGxvYWRPcHRpb25zLnNvcnQpIHtcclxuICAgICAgICAgICAgaWYgKGZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcmb3JkZXJCeT0nICsgdGhpc1NvcnQuc2VsZWN0b3I7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcsJyArIHRoaXNTb3J0LnNlbGVjdG9yO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzU29ydC5kZXNjKSB7XHJcbiAgICAgICAgICAgICAgcGFyYW1zICs9ICcgZGVzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGZpbHRlcjtcclxuICAgICAgICBpZiAobG9hZE9wdGlvbnMuZmlsdGVyKSB7XHJcbiAgICAgICAgICBmaWx0ZXIgPSBsb2FkT3B0aW9ucy5maWx0ZXI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChleHRyYUZpbHRlcikge1xyXG4gICAgICAgICAgaWYgKGZpbHRlcikge1xyXG4gICAgICAgICAgICBmaWx0ZXIgPSBbZmlsdGVyLCAnYW5kJywgZXh0cmFGaWx0ZXJdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZmlsdGVyID0gZXh0cmFGaWx0ZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWx0ZXIpIHtcclxuICAgICAgICAgIHBhcmFtcyArPSAnJmZpbHRlcj0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZpbHRlcikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwYXJhbXMgKz0gJyZ2aWV3PScgKyB2aWV3IHx8ICcnO1xyXG4gICAgICAgIGlmIChkYXRhR3JpZE5hbWUpIHtcclxuICAgICAgICAgIHBhcmFtcyArPSAnJmRhdGFHcmlkTmFtZT0nICsgZGF0YUdyaWROYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbGFzdFZhbHVlRnJvbSh0aGlzLnNlcnZpY2UuZ2V0TWFueSh0ZW5hbnQsIGNsYXNzTmFtZSwgcGFyYW1zKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=