@myrtex-org/form 1.0.13 → 1.0.14

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.
@@ -23,6 +23,7 @@ export class InputTableComponent {
23
23
  this._subscriptions$ = [];
24
24
  this._isCheckRequired = false;
25
25
  this.dataSource = [];
26
+ this.columns = [];
26
27
  this.values = [];
27
28
  this.changed = new EventEmitter();
28
29
  }
@@ -30,6 +31,7 @@ export class InputTableComponent {
30
31
  this.settings = settings;
31
32
  this.model = { sysName: settings.sysName, type: settings.type, data: [], totals: [] };
32
33
  this._detector.detectChanges();
34
+ this._initColumns(this.settings.components);
33
35
  }
34
36
  ngOnInit() {
35
37
  this._initModel();
@@ -139,12 +141,40 @@ export class InputTableComponent {
139
141
  this._detector.detectChanges();
140
142
  this.dataGrid.instance.refresh();
141
143
  }
144
+ _initColumns(components) {
145
+ this.columns = components.map(c => this._transformColumn(structuredClone(c)));
146
+ this.columns.push({
147
+ type: 'buttons',
148
+ width: 150,
149
+ cssClass: 'custom-cell-controls',
150
+ buttons: [
151
+ {
152
+ template: 'editButtonTemplate',
153
+ hint: 'Редактировать',
154
+ },
155
+ {
156
+ template: 'deleteButtonTemplate',
157
+ hint: 'Удалить',
158
+ },
159
+ ],
160
+ });
161
+ this.dataGrid.instance.repaint();
162
+ this._detector.detectChanges();
163
+ }
164
+ _transformColumn(component) {
165
+ return {
166
+ caption: component.options.label || '',
167
+ columns: component.components.map(c => this._transformColumn(structuredClone(c))),
168
+ dataField: component.sysName,
169
+ format: this.getFormat(component),
170
+ };
171
+ }
142
172
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
143
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: InputTableComponent, selector: "app-input-table", inputs: { values: "values", data: "data" }, outputs: { changed: "changed" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: ["dataGrid"], descendants: true }], ngImport: i0, template: "@if (settings) {\r\n <div class=\"input-table-content\">\r\n @if (settings.options.label) {\r\n <mrx-label\r\n [required]=\"settings.options.required\"\r\n [tooltip]=\"settings.options.tooltip || ''\"\r\n [customClasses]=\"'mt-2'\"\r\n >\r\n {{ settings.options.label }}\r\n </mrx-label>\r\n }\r\n\r\n <dx-data-grid\r\n #dataGrid\r\n [dataSource]=\"dataSource\"\r\n noDataText=\"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445\"\r\n >\r\n <dxo-toolbar>\r\n <dxi-item location=\"after\">\r\n <div *dxTemplate class=\"add-row\">\r\n <mrx-button\r\n [size]=\"'medium'\"\r\n [type]=\"'tertiary'\"\r\n [customClasses]=\"'px-3'\"\r\n (mrxClick)=\"createRow()\"\r\n >\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\r\n </mrx-button>\r\n </div>\r\n </dxi-item>\r\n </dxo-toolbar>\r\n\r\n @for (component of settings.components; track component.id) {\r\n <dxi-column\r\n [caption]=\"component.options.label\"\r\n [dataField]=\"component.sysName\"\r\n [format]=\"getFormat(component)\"\r\n [dataType]=\"getDataType(component)\"\r\n >\r\n @for (component of component.components; track component.id) {\r\n <dxi-column\r\n [caption]=\"component.options.label\"\r\n [dataField]=\"component.sysName\"\r\n [format]=\"getFormat(component)\"\r\n [dataType]=\"getDataType(component)\"\r\n >\r\n @for (component of component.components; track component.id) {\r\n <dxi-column\r\n [caption]=\"component.options.label\"\r\n [dataField]=\"component.sysName\"\r\n [format]=\"getFormat(component)\"\r\n [dataType]=\"getDataType(component)\"\r\n ></dxi-column>\r\n }\r\n </dxi-column>\r\n }\r\n </dxi-column>\r\n }\r\n\r\n <dxi-column\r\n [width]=\"60\"\r\n [allowFiltering]=\"false\"\r\n [allowSorting]=\"false\"\r\n [visible]=\"true\"\r\n cellTemplate=\"editCellTemplate\"\r\n >\r\n <div *dxTemplate=\"let cellInfo of 'editCellTemplate'\">\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"gap: 4px\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(cellInfo)\"></span>\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(cellInfo)\"></span>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n\r\n @if (dataSource.length) {\r\n <dxo-summary>\r\n @for (component of settings.components; track component.id; let first = $first) {\r\n @if (!first) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n } @else {\r\n @if (isTotalColumn(component)) {\r\n <dxi-total-item [column]=\"component.sysName\" [displayFormat]=\"'{0}'\"></dxi-total-item>\r\n } @else {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [cssClass]=\"'text-bold'\"\r\n [displayFormat]=\"'\u0418\u0422\u041E\u0413\u041E'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n </dxo-summary>\r\n }\r\n </dx-data-grid>\r\n </div>\r\n}\r\n\r\n\r\n", styles: [":host::ng-deep .input-table-content .dx-datagrid{padding:0}:host::ng-deep .input-table-content .dx-datagrid-header-panel{display:flex;align-items:center;min-height:40px;padding:0}:host::ng-deep .input-table-content .dx-datagrid-rowsview{border-bottom:none}:host::ng-deep .input-table-content .dx-datagrid-rowsview.dx-empty{border-bottom:1px solid #ddd;height:48px}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer{border-top:none;border-left:none;border-right:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content{padding:0}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content th,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content td{border:1px solid #ddd;border-top:none;border-collapse:collapse}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table{border-top:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content .dx-datagrid-summary-item{font-weight:400}\n"], dependencies: [{ kind: "component", type: i1.LabelComponent, selector: "mrx-label", inputs: ["requiredHidden", "required", "boldLabel", "disabled", "placeholder", "label", "customClasses", "triggerTextPosition", "isPublicInfo", "publicInfoTooltip", "isSwitch", "switchLabel", "switchValue", "isCheckbox", "checkboxLabel", "checkboxValue", "counter", "linkText", "linkPrevent", "linkType", "linkMonochrome", "href", "triggerType", "tooltip", "tooltipInitialVisible", "isSaveToStorage"], outputs: ["changeSwitchValue", "changeCheckboxValue", "clickedLink"] }, { kind: "component", type: i1.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }, { kind: "component", type: i2.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: i3.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i3.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "linkAttr", "url", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i3.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i3.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i3.DxoToolbarComponent, selector: "dxo-toolbar", inputs: ["disabled", "items", "visible", "fileSelectionItems", "container", "multiline"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
173
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: InputTableComponent, selector: "app-input-table", inputs: { values: "values", data: "data" }, outputs: { changed: "changed" }, viewQueries: [{ propertyName: "dataGrid", first: true, predicate: ["dataGrid"], descendants: true }, { propertyName: "editTemplate", first: true, predicate: ["editTemplate"], descendants: true }], ngImport: i0, template: "@if (settings) {\r\n <div class=\"input-table-content w-100\">\r\n @if (settings.options.label) {\r\n <mrx-label\r\n [required]=\"settings.options.required\"\r\n [tooltip]=\"settings.options.tooltip || ''\"\r\n [customClasses]=\"'mt-2'\"\r\n >\r\n {{ settings.options.label }}\r\n </mrx-label>\r\n }\r\n\r\n <dx-data-grid\r\n #dataGrid\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n noDataText=\"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445\"\r\n style=\"width: 100%\"\r\n >\r\n <dxo-toolbar>\r\n <dxi-item location=\"after\">\r\n <div *dxTemplate class=\"add-row\">\r\n <mrx-button\r\n [size]=\"'medium'\"\r\n [type]=\"'tertiary'\"\r\n [customClasses]=\"'px-3'\"\r\n (mrxClick)=\"createRow()\"\r\n >\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\r\n </mrx-button>\r\n </div>\r\n </dxi-item>\r\n </dxo-toolbar>\r\n\r\n <div *dxTemplate=\"let buttonData of 'editButtonTemplate'\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(buttonData)\"></span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let buttonData of 'deleteButtonTemplate'\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(buttonData)\"></span>\r\n </div>\r\n\r\n @if (dataSource.length) {\r\n <dxo-summary>\r\n @for (component of settings.components; track component.id; let first = $first) {\r\n @if (!first) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n } @else {\r\n @if (isTotalColumn(component)) {\r\n <dxi-total-item [column]=\"component.sysName\" [displayFormat]=\"'{0}'\"></dxi-total-item>\r\n } @else {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [cssClass]=\"'text-bold'\"\r\n [displayFormat]=\"'\u0418\u0422\u041E\u0413\u041E'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n </dxo-summary>\r\n }\r\n </dx-data-grid>\r\n\r\n <ng-template #editTemplate let-cellInfo=\"cellInfo\">\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"gap: 4px\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(cellInfo)\"></span>\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(cellInfo)\"></span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n}\r\n\r\n\r\n", styles: [":host::ng-deep .input-table-content .dx-datagrid{padding:0}:host::ng-deep .input-table-content .dx-datagrid-header-panel{display:flex;align-items:center;min-height:40px;padding:0}:host::ng-deep .input-table-content .dx-datagrid-rowsview{border-bottom:none}:host::ng-deep .input-table-content .dx-datagrid-rowsview.dx-empty{border-bottom:1px solid #ddd;height:48px}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer{border-top:none;border-left:none;border-right:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content{padding:0}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content th,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content td{border:1px solid #ddd;border-top:none;border-collapse:collapse}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table{border-top:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content .dx-datagrid-summary-item{font-weight:400}:host::ng-deep .custom-cell-controls .dx-template-wrapper{display:inline-flex}\n"], dependencies: [{ kind: "component", type: i1.LabelComponent, selector: "mrx-label", inputs: ["requiredHidden", "required", "boldLabel", "disabled", "placeholder", "label", "customClasses", "triggerTextPosition", "isPublicInfo", "publicInfoTooltip", "isSwitch", "switchLabel", "switchValue", "isCheckbox", "checkboxLabel", "checkboxValue", "counter", "linkText", "linkPrevent", "linkType", "linkMonochrome", "href", "triggerType", "tooltip", "tooltipInitialVisible", "isSaveToStorage"], outputs: ["changeSwitchValue", "changeCheckboxValue", "clickedLink"] }, { kind: "component", type: i1.ButtonComponent, selector: "mrx-button", inputs: ["size", "type", "color", "iconPosition", "active", "disabled", "isLoading", "iconOnly", "customClasses", "label", "icon", "iconClass", "buttonType", "href", "target", "routerLink", "queryParams"], outputs: ["mrxClick"] }, { kind: "component", type: i2.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: i3.DxiItemComponent, selector: "dxi-item", inputs: ["disabled", "html", "icon", "template", "text", "title", "titleTemplate", "visible", "onClick", "stylingMode", "type", "baseSize", "box", "ratio", "shrink", "elementAttr", "hint", "beginGroup", "closeMenuOnClick", "items", "selectable", "selected", "colSpan", "cssClass", "dataField", "editorOptions", "editorType", "helpText", "isRequired", "itemType", "label", "name", "validationRules", "visibleIndex", "alignItemLabels", "caption", "colCount", "colCountByScreen", "tabPanelOptions", "tabs", "badge", "tabTemplate", "buttonOptions", "horizontalAlignment", "verticalAlignment", "locateInMenu", "location", "menuItemTemplate", "options", "showText", "widget", "height", "width", "imageAlt", "imageSrc", "acceptedValues", "formatName", "formatValues", "key", "showChevron", "linkAttr", "url", "heightRatio", "widthRatio", "expanded", "hasItems", "id", "parentId"] }, { kind: "component", type: i3.DxoSummaryComponent, selector: "dxo-summary", inputs: ["calculateCustomSummary", "groupItems", "recalculateWhileEditing", "skipEmptyValues", "texts", "totalItems"] }, { kind: "component", type: i3.DxiTotalItemComponent, selector: "dxi-total-item", inputs: ["alignment", "column", "cssClass", "customizeText", "displayFormat", "name", "showInColumn", "skipEmptyValues", "summaryType", "valueFormat"] }, { kind: "component", type: i3.DxoToolbarComponent, selector: "dxo-toolbar", inputs: ["disabled", "items", "visible", "fileSelectionItems", "container", "multiline"] }, { kind: "directive", type: i4.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
144
174
  }
145
175
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: InputTableComponent, decorators: [{
146
176
  type: Component,
147
- args: [{ selector: 'app-input-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (settings) {\r\n <div class=\"input-table-content\">\r\n @if (settings.options.label) {\r\n <mrx-label\r\n [required]=\"settings.options.required\"\r\n [tooltip]=\"settings.options.tooltip || ''\"\r\n [customClasses]=\"'mt-2'\"\r\n >\r\n {{ settings.options.label }}\r\n </mrx-label>\r\n }\r\n\r\n <dx-data-grid\r\n #dataGrid\r\n [dataSource]=\"dataSource\"\r\n noDataText=\"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445\"\r\n >\r\n <dxo-toolbar>\r\n <dxi-item location=\"after\">\r\n <div *dxTemplate class=\"add-row\">\r\n <mrx-button\r\n [size]=\"'medium'\"\r\n [type]=\"'tertiary'\"\r\n [customClasses]=\"'px-3'\"\r\n (mrxClick)=\"createRow()\"\r\n >\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\r\n </mrx-button>\r\n </div>\r\n </dxi-item>\r\n </dxo-toolbar>\r\n\r\n @for (component of settings.components; track component.id) {\r\n <dxi-column\r\n [caption]=\"component.options.label\"\r\n [dataField]=\"component.sysName\"\r\n [format]=\"getFormat(component)\"\r\n [dataType]=\"getDataType(component)\"\r\n >\r\n @for (component of component.components; track component.id) {\r\n <dxi-column\r\n [caption]=\"component.options.label\"\r\n [dataField]=\"component.sysName\"\r\n [format]=\"getFormat(component)\"\r\n [dataType]=\"getDataType(component)\"\r\n >\r\n @for (component of component.components; track component.id) {\r\n <dxi-column\r\n [caption]=\"component.options.label\"\r\n [dataField]=\"component.sysName\"\r\n [format]=\"getFormat(component)\"\r\n [dataType]=\"getDataType(component)\"\r\n ></dxi-column>\r\n }\r\n </dxi-column>\r\n }\r\n </dxi-column>\r\n }\r\n\r\n <dxi-column\r\n [width]=\"60\"\r\n [allowFiltering]=\"false\"\r\n [allowSorting]=\"false\"\r\n [visible]=\"true\"\r\n cellTemplate=\"editCellTemplate\"\r\n >\r\n <div *dxTemplate=\"let cellInfo of 'editCellTemplate'\">\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"gap: 4px\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(cellInfo)\"></span>\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(cellInfo)\"></span>\r\n </div>\r\n </div>\r\n </dxi-column>\r\n\r\n @if (dataSource.length) {\r\n <dxo-summary>\r\n @for (component of settings.components; track component.id; let first = $first) {\r\n @if (!first) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n } @else {\r\n @if (isTotalColumn(component)) {\r\n <dxi-total-item [column]=\"component.sysName\" [displayFormat]=\"'{0}'\"></dxi-total-item>\r\n } @else {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [cssClass]=\"'text-bold'\"\r\n [displayFormat]=\"'\u0418\u0422\u041E\u0413\u041E'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n </dxo-summary>\r\n }\r\n </dx-data-grid>\r\n </div>\r\n}\r\n\r\n\r\n", styles: [":host::ng-deep .input-table-content .dx-datagrid{padding:0}:host::ng-deep .input-table-content .dx-datagrid-header-panel{display:flex;align-items:center;min-height:40px;padding:0}:host::ng-deep .input-table-content .dx-datagrid-rowsview{border-bottom:none}:host::ng-deep .input-table-content .dx-datagrid-rowsview.dx-empty{border-bottom:1px solid #ddd;height:48px}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer{border-top:none;border-left:none;border-right:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content{padding:0}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content th,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content td{border:1px solid #ddd;border-top:none;border-collapse:collapse}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table{border-top:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content .dx-datagrid-summary-item{font-weight:400}\n"] }]
177
+ args: [{ selector: 'app-input-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (settings) {\r\n <div class=\"input-table-content w-100\">\r\n @if (settings.options.label) {\r\n <mrx-label\r\n [required]=\"settings.options.required\"\r\n [tooltip]=\"settings.options.tooltip || ''\"\r\n [customClasses]=\"'mt-2'\"\r\n >\r\n {{ settings.options.label }}\r\n </mrx-label>\r\n }\r\n\r\n <dx-data-grid\r\n #dataGrid\r\n [dataSource]=\"dataSource\"\r\n [columns]=\"columns\"\r\n noDataText=\"\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445\"\r\n style=\"width: 100%\"\r\n >\r\n <dxo-toolbar>\r\n <dxi-item location=\"after\">\r\n <div *dxTemplate class=\"add-row\">\r\n <mrx-button\r\n [size]=\"'medium'\"\r\n [type]=\"'tertiary'\"\r\n [customClasses]=\"'px-3'\"\r\n (mrxClick)=\"createRow()\"\r\n >\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C\r\n </mrx-button>\r\n </div>\r\n </dxi-item>\r\n </dxo-toolbar>\r\n\r\n <div *dxTemplate=\"let buttonData of 'editButtonTemplate'\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(buttonData)\"></span>\r\n </div>\r\n\r\n <div *dxTemplate=\"let buttonData of 'deleteButtonTemplate'\">\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(buttonData)\"></span>\r\n </div>\r\n\r\n @if (dataSource.length) {\r\n <dxo-summary>\r\n @for (component of settings.components; track component.id; let first = $first) {\r\n @if (!first) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n\r\n @for (component of component.components; track component.id) {\r\n @if (showTotal(component)) {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [summaryType]=\"'sum'\"\r\n [displayFormat]=\"'{0}'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n } @else {\r\n @if (isTotalColumn(component)) {\r\n <dxi-total-item [column]=\"component.sysName\" [displayFormat]=\"'{0}'\"></dxi-total-item>\r\n } @else {\r\n <dxi-total-item\r\n [column]=\"component.sysName\"\r\n [cssClass]=\"'text-bold'\"\r\n [displayFormat]=\"'\u0418\u0422\u041E\u0413\u041E'\"\r\n ></dxi-total-item>\r\n }\r\n }\r\n }\r\n </dxo-summary>\r\n }\r\n </dx-data-grid>\r\n\r\n <ng-template #editTemplate let-cellInfo=\"cellInfo\">\r\n <div class=\"d-flex align-items-center justify-content-center\" style=\"gap: 4px\">\r\n <span class=\"mrx-icon icon-edit icon-font-16 cursor-pointer\" (click)=\"editRow(cellInfo)\"></span>\r\n <span class=\"mrx-icon icon-delete icon-font-16 cursor-pointer\" (click)=\"deleteRow(cellInfo)\"></span>\r\n </div>\r\n </ng-template>\r\n </div>\r\n}\r\n\r\n\r\n", styles: [":host::ng-deep .input-table-content .dx-datagrid{padding:0}:host::ng-deep .input-table-content .dx-datagrid-header-panel{display:flex;align-items:center;min-height:40px;padding:0}:host::ng-deep .input-table-content .dx-datagrid-rowsview{border-bottom:none}:host::ng-deep .input-table-content .dx-datagrid-rowsview.dx-empty{border-bottom:1px solid #ddd;height:48px}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer{border-top:none;border-left:none;border-right:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content{padding:0}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content th,:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content td{border:1px solid #ddd;border-top:none;border-collapse:collapse}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content table{border-top:none}:host::ng-deep .input-table-content .dx-datagrid .dx-datagrid-total-footer .dx-datagrid-content .dx-datagrid-summary-item{font-weight:400}:host::ng-deep .custom-cell-controls .dx-template-wrapper{display:inline-flex}\n"] }]
148
178
  }], propDecorators: { values: [{
149
179
  type: Input
150
180
  }], data: [{
@@ -152,7 +182,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
152
182
  }], dataGrid: [{
153
183
  type: ViewChild,
154
184
  args: ['dataGrid', { static: false }]
185
+ }], editTemplate: [{
186
+ type: ViewChild,
187
+ args: ['editTemplate', { static: false }]
155
188
  }], changed: [{
156
189
  type: Output
157
190
  }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFBRSxNQUFNLEVBQ3BCLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFRN0Qs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QUFPLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUN6RCxDQUFDO1lBRUQsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBRXpCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDOytHQXZLVSxtQkFBbUI7bUdBQW5CLG1CQUFtQiwwT0MvQmhDLDJpSkEySEE7OzRGRDVGYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07OEJBa0J0QyxNQUFNO3NCQUFkLEtBQUs7Z0JBRU8sSUFBSTtzQkFBaEIsS0FBSztnQkFRa0MsUUFBUTtzQkFBL0MsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUVyQixPQUFPO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQtZm9ybS9lbnVtcyc7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQtZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEeERhdGFHcmlkQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VmFsdWVNb2RlbCwgU2VjdGlvblZhbHVlTW9kZWwsIFRhYmxlUm93TW9kZWwsIFRhYmxlVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kZWwsIElucHV0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcbmltcG9ydCB7IG9iamVjdEZvcm1BY3Rpb25zLCBvYmplY3RGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUnO1xyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICdAbXlydGV4LW9yZy91aSc7XHJcbmltcG9ydCB7IElucHV0VGFibGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IGdldFJvd01vZGVsIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1yb3ctbW9kZWwuaGVscGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWlucHV0LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXRhYmxlLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgdHlwZSA9IENvbXBvbmVudFR5cGUuSW5wdXRUYWJsZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlID0gaW5qZWN0KFN0b3JlKVxyXG4gIHByaXZhdGUgX2RldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZilcclxuICBwcml2YXRlIF9tb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpXHJcblxyXG4gIHByaXZhdGUgX2NoYW5nZVN1YmplY3QkOiBTdWJqZWN0PFRhYmxlVmFsdWVNb2RlbD4gPSBuZXcgU3ViamVjdDxUYWJsZVZhbHVlTW9kZWw+KCk7XHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2lzQ2hlY2tSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgbW9kZWwhOiBUYWJsZVZhbHVlTW9kZWw7XHJcbiAgcHVibGljIHNldHRpbmdzITogSW5wdXRUYWJsZU1vZGVsO1xyXG4gIHB1YmxpYyBkYXRhU291cmNlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgdmFsdWVzOiBTZWN0aW9uVmFsdWVNb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNldCBkYXRhKHNldHRpbmdzOiBDb21wb25lbnRNb2RlbEJhc2UpIHtcclxuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncyBhcyBJbnB1dFRhYmxlTW9kZWw7XHJcblxyXG4gICAgdGhpcy5tb2RlbCA9IHtzeXNOYW1lOiBzZXR0aW5ncy5zeXNOYW1lLCB0eXBlOiBzZXR0aW5ncy50eXBlLCBkYXRhOiBbXSwgdG90YWxzOiBbXX07XHJcblxyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZCgnZGF0YUdyaWQnLCB7c3RhdGljOiBmYWxzZX0pIGRhdGFHcmlkITogRHhEYXRhR3JpZENvbXBvbmVudDtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VkOiBFdmVudEVtaXR0ZXI8Q29tcG9uZW50VmFsdWVNb2RlbCB8IENvbXBvbmVudFZhbHVlTW9kZWxbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPENvbXBvbmVudFZhbHVlTW9kZWwgfCBDb21wb25lbnRWYWx1ZU1vZGVsW10+KCk7XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdE1vZGVsKCk7XHJcblxyXG4gICAgdGhpcy5fY2hhbmdlU3ViamVjdCQucGlwZShcclxuICAgICAgZGVib3VuY2VUaW1lKDcwMCksXHJcbiAgICApLnN1YnNjcmliZShtb2RlbCA9PiB7XHJcbiAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKG9iamVjdEZvcm1BY3Rpb25zLnVwZGF0ZVZhbHVlcyh7dmFsdWU6IG1vZGVsfSkpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQucHVzaCh0aGlzLl9zdG9yZS5zZWxlY3Qob2JqZWN0Rm9ybVNlbGVjdG9ycy5zZWxlY3RJc0NoZWNrUmVxdWlyZWQpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICB0aGlzLl9pc0NoZWNrUmVxdWlyZWQgPSByZXN1bHQ7XHJcbiAgICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH0pKTtcclxuXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5wdXNoKHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdFZhbHVlTW9kZWwodGhpcy5zZXR0aW5ncykpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogQ29tcG9uZW50VmFsdWVNb2RlbCB8IG51bGwgfCAoQ29tcG9uZW50VmFsdWVNb2RlbCB8IG51bGwpW10pID0+IHtcclxuICAgICAgICBjb25zdCBjbG9uZVJlc3VsdCA9IGNsb25lRGVlcChyZXN1bHQgYXMgVGFibGVWYWx1ZU1vZGVsIHwgbnVsbCk7XHJcblxyXG4gICAgICAgIGlmIChjbG9uZVJlc3VsdCAmJiAhQXJyYXkuaXNBcnJheShjbG9uZVJlc3VsdCkgJiYgdGhpcy5tb2RlbC5kYXRhICE9PSBjbG9uZVJlc3VsdC5kYXRhKSB7XHJcbiAgICAgICAgICB0aGlzLm1vZGVsID0gY2xvbmVSZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLl9pbml0RGF0YVNvdXJjZSh0aGlzLm1vZGVsLmRhdGEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jaGFuZ2VTdWJqZWN0JC51bnN1YnNjcmliZSgpO1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucyQuZm9yRWFjaCgoc3Vic2NyaXB0aW9uKSA9PiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlUm93KCkge1xyXG4gICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oSW5wdXRUYWJsZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIHRpdGxlOiAn0KHQvtC30LTQsNC90LjQtSDRgdGC0YDQvtC60LgnLFxyXG4gICAgICBzZXR0aW5nczogdGhpcy5zZXR0aW5ncyxcclxuICAgICAgcm93TW9kZWw6IGdldFJvd01vZGVsKHRoaXMuc2V0dGluZ3MpXHJcbiAgICB9KS5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXNvbHZlID0+IHtcclxuICAgICAgaWYgKHJlc29sdmUucmVzdWx0KSB7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXRhID0gWy4uLnRoaXMubW9kZWwuZGF0YSwgcmVzb2x2ZS5yb3dNb2RlbF07XHJcblxyXG4gICAgICAgIHRoaXMuX2luaXREYXRhU291cmNlKHRoaXMubW9kZWwuZGF0YSk7XHJcblxyXG4gICAgICAgIHRoaXMuX2NoYW5nZVN1YmplY3QkLm5leHQodGhpcy5tb2RlbCk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlUm93KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbmRSb3cgPSB0aGlzLm1vZGVsLmRhdGEuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGV2ZW50LnJvdy5kYXRhLmlkKTtcclxuXHJcbiAgICBpZiAoZmluZFJvdykge1xyXG4gICAgICB0aGlzLm1vZGVsLmRhdGEgPSB0aGlzLm1vZGVsLmRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pZCAhPT0gZXZlbnQucm93LmRhdGEuaWQpO1xyXG5cclxuICAgICAgdGhpcy5faW5pdERhdGFTb3VyY2UodGhpcy5tb2RlbC5kYXRhKTtcclxuXHJcbiAgICAgIHRoaXMuX2NoYW5nZVN1YmplY3QkLm5leHQodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdFJvdyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmaW5kUm93OiBUYWJsZVJvd01vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy5tb2RlbC5kYXRhLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBldmVudC5yb3cuZGF0YS5pZCk7XHJcblxyXG4gICAgaWYgKGZpbmRSb3cpIHtcclxuICAgICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oSW5wdXRUYWJsZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgdGl0bGU6ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNC1INGB0YLRgNC+0LrQuCcsXHJcbiAgICAgICAgc2V0dGluZ3M6IHRoaXMuc2V0dGluZ3MsXHJcbiAgICAgICAgcm93TW9kZWw6IGZpbmRSb3dcclxuICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc29sdmUucmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBjbG9uZU1vZGVsID0gY2xvbmVEZWVwKHRoaXMubW9kZWwpO1xyXG4gICAgICAgICAgY29uc3QgZmluZFJvdyA9IGNsb25lTW9kZWwuZGF0YS5maW5kKHJvdyA9PiByb3cuaWQgPT09IHJlc29sdmUucm93TW9kZWwuaWQpO1xyXG5cclxuICAgICAgICAgIGlmIChmaW5kUm93KSB7XHJcbiAgICAgICAgICAgIGZpbmRSb3cuZGF0YSA9IHJlc29sdmUucm93TW9kZWwuZGF0YTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZVN1YmplY3QkLm5leHQoY2xvbmVNb2RlbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZvcm1hdChjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIENvbXBvbmVudFR5cGUuSW5wdXREYXRlOlxyXG4gICAgICAgIHJldHVybiAnZGQuTU0ueXl5eSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldERhdGFUeXBlKGNvbXBvbmVudDogQ29tcG9uZW50TW9kZWxCYXNlKSB7XHJcbiAgICBzd2l0Y2ggKGNvbXBvbmVudC50eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29tcG9uZW50VHlwZS5JbnB1dERhdGU6XHJcbiAgICAgICAgcmV0dXJuICdkYXRlJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dUb3RhbChjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKGNvbXBvbmVudC50eXBlID09PSBDb21wb25lbnRUeXBlLklucHV0TnVtYmVyKSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQ6IElucHV0TnVtYmVyTW9kZWwgPSBjb21wb25lbnQgYXMgSW5wdXROdW1iZXJNb2RlbDtcclxuXHJcbiAgICAgIHJldHVybiBlbGVtZW50Lm9wdGlvbnMuaW5Ub3RhbHM7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzVG90YWxDb2x1bW4oY29tcG9uZW50OiBDb21wb25lbnRNb2RlbEJhc2UpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoY29tcG9uZW50IGFzIElucHV0TnVtYmVyTW9kZWwpLm9wdGlvbnNbJ2luVG90YWxzJ107XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0TW9kZWwoKSB7XHJcbiAgICB0aGlzLm1vZGVsID0ge1xyXG4gICAgICBzeXNOYW1lOiB0aGlzLnNldHRpbmdzLnN5c05hbWUsXHJcbiAgICAgIHR5cGU6IHRoaXMuc2V0dGluZ3MudHlwZSxcclxuICAgICAgZGF0YTogW10sXHJcbiAgICAgIHRvdGFsczogW11cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0RGF0YVNvdXJjZShkYXRhOiBUYWJsZVJvd01vZGVsW10pIHtcclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGEubWFwKChpdGVtOiBUYWJsZVJvd01vZGVsKSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld0RhdGFJdGVtOiBhbnkgPSB7fTtcclxuXHJcbiAgICAgIGZvciAobGV0IGkgaW4gaXRlbS5kYXRhKSB7XHJcbiAgICAgICAgbmV3RGF0YUl0ZW1baXRlbS5kYXRhW2ldLnN5c05hbWVdID0gaXRlbS5kYXRhW2ldLnZhbHVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuZXdEYXRhSXRlbS5pZCA9IGl0ZW0uaWQ7XHJcblxyXG4gICAgICByZXR1cm4gbmV3RGF0YUl0ZW07XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9kZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLmRhdGFHcmlkLmluc3RhbmNlLnJlZnJlc2goKTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChzZXR0aW5ncykge1xyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC10YWJsZS1jb250ZW50XCI+XHJcbiAgICBAaWYgKHNldHRpbmdzLm9wdGlvbnMubGFiZWwpIHtcclxuICAgICAgPG1yeC1sYWJlbFxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJzZXR0aW5ncy5vcHRpb25zLnJlcXVpcmVkXCJcclxuICAgICAgICBbdG9vbHRpcF09XCJzZXR0aW5ncy5vcHRpb25zLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidtdC0yJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzZXR0aW5ncy5vcHRpb25zLmxhYmVsIH19XHJcbiAgICAgIDwvbXJ4LWxhYmVsPlxyXG4gICAgfVxyXG5cclxuICAgIDxkeC1kYXRhLWdyaWRcclxuICAgICAgI2RhdGFHcmlkXHJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICBub0RhdGFUZXh0PVwi0J3QtdGCINC00LDQvdC90YvRhVwiXHJcbiAgICA+XHJcbiAgICAgIDxkeG8tdG9vbGJhcj5cclxuICAgICAgICA8ZHhpLWl0ZW0gbG9jYXRpb249XCJhZnRlclwiPlxyXG4gICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZSBjbGFzcz1cImFkZC1yb3dcIj5cclxuICAgICAgICAgICAgPG1yeC1idXR0b25cclxuICAgICAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiXHJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzZXNdPVwiJ3B4LTMnXCJcclxuICAgICAgICAgICAgICAobXJ4Q2xpY2spPVwiY3JlYXRlUm93KClcIlxyXG4gICAgICAgICAgICA+0JTQvtCx0LDQstC40YLRjFxyXG4gICAgICAgICAgICA8L21yeC1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2R4aS1pdGVtPlxyXG4gICAgICA8L2R4by10b29sYmFyPlxyXG5cclxuICAgICAgQGZvciAoY29tcG9uZW50IG9mIHNldHRpbmdzLmNvbXBvbmVudHM7IHRyYWNrIGNvbXBvbmVudC5pZCkge1xyXG4gICAgICAgIDxkeGktY29sdW1uXHJcbiAgICAgICAgICBbY2FwdGlvbl09XCJjb21wb25lbnQub3B0aW9ucy5sYWJlbFwiXHJcbiAgICAgICAgICBbZGF0YUZpZWxkXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgIFtmb3JtYXRdPVwiZ2V0Rm9ybWF0KGNvbXBvbmVudClcIlxyXG4gICAgICAgICAgW2RhdGFUeXBlXT1cImdldERhdGFUeXBlKGNvbXBvbmVudClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBmb3IgKGNvbXBvbmVudCBvZiBjb21wb25lbnQuY29tcG9uZW50czsgdHJhY2sgY29tcG9uZW50LmlkKSB7XHJcbiAgICAgICAgICAgIDxkeGktY29sdW1uXHJcbiAgICAgICAgICAgICAgW2NhcHRpb25dPVwiY29tcG9uZW50Lm9wdGlvbnMubGFiZWxcIlxyXG4gICAgICAgICAgICAgIFtkYXRhRmllbGRdPVwiY29tcG9uZW50LnN5c05hbWVcIlxyXG4gICAgICAgICAgICAgIFtmb3JtYXRdPVwiZ2V0Rm9ybWF0KGNvbXBvbmVudClcIlxyXG4gICAgICAgICAgICAgIFtkYXRhVHlwZV09XCJnZXREYXRhVHlwZShjb21wb25lbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGNvbXBvbmVudCBvZiBjb21wb25lbnQuY29tcG9uZW50czsgdHJhY2sgY29tcG9uZW50LmlkKSB7XHJcbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtblxyXG4gICAgICAgICAgICAgICAgICBbY2FwdGlvbl09XCJjb21wb25lbnQub3B0aW9ucy5sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgIFtkYXRhRmllbGRdPVwiY29tcG9uZW50LnN5c05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbZm9ybWF0XT1cImdldEZvcm1hdChjb21wb25lbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW2RhdGFUeXBlXT1cImdldERhdGFUeXBlKGNvbXBvbmVudClcIlxyXG4gICAgICAgICAgICAgICAgPjwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZHhpLWNvbHVtbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2R4aS1jb2x1bW4+XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIDxkeGktY29sdW1uXHJcbiAgICAgICAgW3dpZHRoXT1cIjYwXCJcclxuICAgICAgICBbYWxsb3dGaWx0ZXJpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgIFthbGxvd1NvcnRpbmddPVwiZmFsc2VcIlxyXG4gICAgICAgIFt2aXNpYmxlXT1cInRydWVcIlxyXG4gICAgICAgIGNlbGxUZW1wbGF0ZT1cImVkaXRDZWxsVGVtcGxhdGVcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBjZWxsSW5mbyAgb2YgJ2VkaXRDZWxsVGVtcGxhdGUnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJnYXA6IDRweFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZWRpdCBpY29uLWZvbnQtMTYgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZWRpdFJvdyhjZWxsSW5mbylcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZVJvdyhjZWxsSW5mbylcIj48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9keGktY29sdW1uPlxyXG5cclxuICAgICAgQGlmIChkYXRhU291cmNlLmxlbmd0aCkge1xyXG4gICAgICAgIDxkeG8tc3VtbWFyeT5cclxuICAgICAgICAgIEBmb3IgKGNvbXBvbmVudCBvZiBzZXR0aW5ncy5jb21wb25lbnRzOyB0cmFjayBjb21wb25lbnQuaWQ7IGxldCBmaXJzdCA9ICRmaXJzdCkge1xyXG4gICAgICAgICAgICBAaWYgKCFmaXJzdCkge1xyXG4gICAgICAgICAgICAgIEBpZiAoc2hvd1RvdGFsKGNvbXBvbmVudCkpIHtcclxuICAgICAgICAgICAgICAgIDxkeGktdG90YWwtaXRlbVxyXG4gICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgW3N1bW1hcnlUeXBlXT1cIidzdW0nXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGb3JtYXRdPVwiJ3swfSdcIlxyXG4gICAgICAgICAgICAgICAgPjwvZHhpLXRvdGFsLWl0ZW0+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBAZm9yIChjb21wb25lbnQgb2YgY29tcG9uZW50LmNvbXBvbmVudHM7IHRyYWNrIGNvbXBvbmVudC5pZCkge1xyXG4gICAgICAgICAgICAgICAgQGlmIChzaG93VG90YWwoY29tcG9uZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICA8ZHhpLXRvdGFsLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3VtbWFyeVR5cGVdPVwiJ3N1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5Rm9ybWF0XT1cIid7MH0nXCJcclxuICAgICAgICAgICAgICAgICAgPjwvZHhpLXRvdGFsLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgQGZvciAoY29tcG9uZW50IG9mIGNvbXBvbmVudC5jb21wb25lbnRzOyB0cmFjayBjb21wb25lbnQuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgQGlmIChzaG93VG90YWwoY29tcG9uZW50KSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxkeGktdG90YWwtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbc3VtbWFyeVR5cGVdPVwiJ3N1bSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGb3JtYXRdPVwiJ3swfSdcIlxyXG4gICAgICAgICAgICAgICAgICAgID48L2R4aS10b3RhbC1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICBAaWYgKGlzVG90YWxDb2x1bW4oY29tcG9uZW50KSkge1xyXG4gICAgICAgICAgICAgICAgPGR4aS10b3RhbC1pdGVtIFtjb2x1bW5dPVwiY29tcG9uZW50LnN5c05hbWVcIiBbZGlzcGxheUZvcm1hdF09XCInezB9J1wiPjwvZHhpLXRvdGFsLWl0ZW0+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZHhpLXRvdGFsLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgIFtjc3NDbGFzc109XCIndGV4dC1ib2xkJ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtkaXNwbGF5Rm9ybWF0XT1cIifQmNCi0J7Qk9CeJ1wiXHJcbiAgICAgICAgICAgICAgICA+PC9keGktdG90YWwtaXRlbT5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2R4by1zdW1tYXJ5PlxyXG4gICAgICB9XHJcbiAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICA8L2Rpdj5cclxufVxyXG5cclxuXHJcbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGV4LWZvcm0vc3JjL2xpYi9tb2R1bGVzL29iamVjdC1mb3JtL2NvbXBvbmVudHMvZWxlbWVudHMvaW5wdXQvdGFibGUvaW5wdXQtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFBRSxNQUFNLEVBQ3BCLEtBQUssRUFHTCxNQUFNLEVBQ04sU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3RDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7QUFRN0Qs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QyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdEMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTztZQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7U0FDbEMsQ0FBQztJQUNKLENBQUM7K0dBbE5VLG1CQUFtQjttR0FBbkIsbUJBQW1CLHlVQy9CaEMsNHJIQWtHQTs7NEZEbkVhLG1CQUFtQjtrQkFOL0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs4QkFtQnRDLE1BQU07c0JBQWQsS0FBSztnQkFFTyxJQUFJO3NCQUFoQixLQUFLO2dCQVVrQyxRQUFRO3NCQUEvQyxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBQ00sWUFBWTtzQkFBdkQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUV6QixPQUFPO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLCBpbmplY3QsXHJcbiAgSW5wdXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQtZm9ybS9lbnVtcyc7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRNb2RlbEJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQtZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEeERhdGFHcmlkQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50VmFsdWVNb2RlbCwgU2VjdGlvblZhbHVlTW9kZWwsIFRhYmxlUm93TW9kZWwsIFRhYmxlVmFsdWVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyTW9kZWwsIElucHV0VGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9lbGVtZXRzL2lucHV0cyc7XHJcbmltcG9ydCB7IG9iamVjdEZvcm1BY3Rpb25zLCBvYmplY3RGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUnO1xyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICdAbXlydGV4LW9yZy91aSc7XHJcbmltcG9ydCB7IElucHV0VGFibGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cyc7XHJcbmltcG9ydCB7IGdldFJvd01vZGVsIH0gZnJvbSAnLi9oZWxwZXJzL2dldC1yb3ctbW9kZWwuaGVscGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWlucHV0LXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXRhYmxlLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIElucHV0VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgdHlwZSA9IENvbXBvbmVudFR5cGUuSW5wdXRUYWJsZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3RvcmU6IFN0b3JlID0gaW5qZWN0KFN0b3JlKTtcclxuICBwcml2YXRlIF9kZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgX21vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgX2NoYW5nZVN1YmplY3QkOiBTdWJqZWN0PFRhYmxlVmFsdWVNb2RlbD4gPSBuZXcgU3ViamVjdDxUYWJsZVZhbHVlTW9kZWw+KCk7XHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9ucyQ6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIHByaXZhdGUgX2lzQ2hlY2tSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgbW9kZWwhOiBUYWJsZVZhbHVlTW9kZWw7XHJcbiAgcHVibGljIHNldHRpbmdzITogSW5wdXRUYWJsZU1vZGVsO1xyXG4gIHB1YmxpYyBkYXRhU291cmNlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9W10gPSBbXTtcclxuICBwdWJsaWMgY29sdW1uczogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgdmFsdWVzOiBTZWN0aW9uVmFsdWVNb2RlbFtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHNldCBkYXRhKHNldHRpbmdzOiBDb21wb25lbnRNb2RlbEJhc2UpIHtcclxuICAgIHRoaXMuc2V0dGluZ3MgPSBzZXR0aW5ncyBhcyBJbnB1dFRhYmxlTW9kZWw7XHJcblxyXG4gICAgdGhpcy5tb2RlbCA9IHtzeXNOYW1lOiBzZXR0aW5ncy5zeXNOYW1lLCB0eXBlOiBzZXR0aW5ncy50eXBlLCBkYXRhOiBbXSwgdG90YWxzOiBbXX07XHJcblxyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuX2luaXRDb2x1bW5zKHRoaXMuc2V0dGluZ3MuY29tcG9uZW50cyk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdkYXRhR3JpZCcsIHtzdGF0aWM6IGZhbHNlfSkgZGF0YUdyaWQhOiBEeERhdGFHcmlkQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRUZW1wbGF0ZScsIHtzdGF0aWM6IGZhbHNlfSkgZWRpdFRlbXBsYXRlITogYW55O1xyXG5cclxuICBAT3V0cHV0KCkgcHVibGljIGNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxDb21wb25lbnRWYWx1ZU1vZGVsIHwgQ29tcG9uZW50VmFsdWVNb2RlbFtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8Q29tcG9uZW50VmFsdWVNb2RlbCB8IENvbXBvbmVudFZhbHVlTW9kZWxbXT4oKTtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbml0TW9kZWwoKTtcclxuXHJcbiAgICB0aGlzLl9jaGFuZ2VTdWJqZWN0JC5waXBlKFxyXG4gICAgICBkZWJvdW5jZVRpbWUoNzAwKSxcclxuICAgICkuc3Vic2NyaWJlKG1vZGVsID0+IHtcclxuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gob2JqZWN0Rm9ybUFjdGlvbnMudXBkYXRlVmFsdWVzKHt2YWx1ZTogbW9kZWx9KSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5wdXNoKHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdElzQ2hlY2tSZXF1aXJlZCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgIHRoaXMuX2lzQ2hlY2tSZXF1aXJlZCA9IHJlc3VsdDtcclxuICAgICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMkLnB1c2godGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0VmFsdWVNb2RlbCh0aGlzLnNldHRpbmdzKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0OiBDb21wb25lbnRWYWx1ZU1vZGVsIHwgbnVsbCB8IChDb21wb25lbnRWYWx1ZU1vZGVsIHwgbnVsbClbXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNsb25lUmVzdWx0ID0gY2xvbmVEZWVwKHJlc3VsdCBhcyBUYWJsZVZhbHVlTW9kZWwgfCBudWxsKTtcclxuXHJcbiAgICAgICAgaWYgKGNsb25lUmVzdWx0ICYmICFBcnJheS5pc0FycmF5KGNsb25lUmVzdWx0KSAmJiB0aGlzLm1vZGVsLmRhdGEgIT09IGNsb25lUmVzdWx0LmRhdGEpIHtcclxuICAgICAgICAgIHRoaXMubW9kZWwgPSBjbG9uZVJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuX2luaXREYXRhU291cmNlKHRoaXMubW9kZWwuZGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NoYW5nZVN1YmplY3QkLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zJC5mb3JFYWNoKChzdWJzY3JpcHRpb24pID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjcmVhdGVSb3coKSB7XHJcbiAgICB0aGlzLl9tb2RhbFNlcnZpY2Uub3BlbihJbnB1dFRhYmxlTW9kYWxDb21wb25lbnQsIHtcclxuICAgICAgdGl0bGU6ICfQodC+0LfQtNCw0L3QuNC1INGB0YLRgNC+0LrQuCcsXHJcbiAgICAgIHNldHRpbmdzOiB0aGlzLnNldHRpbmdzLFxyXG4gICAgICByb3dNb2RlbDogZ2V0Um93TW9kZWwodGhpcy5zZXR0aW5ncylcclxuICAgIH0pLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc29sdmUgPT4ge1xyXG4gICAgICBpZiAocmVzb2x2ZS5yZXN1bHQpIHtcclxuICAgICAgICB0aGlzLm1vZGVsLmRhdGEgPSBbLi4udGhpcy5tb2RlbC5kYXRhLCByZXNvbHZlLnJvd01vZGVsXTtcclxuXHJcbiAgICAgICAgdGhpcy5faW5pdERhdGFTb3VyY2UodGhpcy5tb2RlbC5kYXRhKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY2hhbmdlU3ViamVjdCQubmV4dCh0aGlzLm1vZGVsKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlUm93KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGZpbmRSb3cgPSB0aGlzLm1vZGVsLmRhdGEuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGV2ZW50LnJvdy5kYXRhLmlkKTtcclxuXHJcbiAgICBpZiAoZmluZFJvdykge1xyXG4gICAgICB0aGlzLm1vZGVsLmRhdGEgPSB0aGlzLm1vZGVsLmRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pZCAhPT0gZXZlbnQucm93LmRhdGEuaWQpO1xyXG5cclxuICAgICAgdGhpcy5faW5pdERhdGFTb3VyY2UodGhpcy5tb2RlbC5kYXRhKTtcclxuXHJcbiAgICAgIHRoaXMuX2NoYW5nZVN1YmplY3QkLm5leHQodGhpcy5tb2RlbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdFJvdyhldmVudDogYW55KSB7XHJcbiAgICBjb25zdCBmaW5kUm93OiBUYWJsZVJvd01vZGVsIHwgdW5kZWZpbmVkID0gdGhpcy5tb2RlbC5kYXRhLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBldmVudC5yb3cuZGF0YS5pZCk7XHJcblxyXG4gICAgaWYgKGZpbmRSb3cpIHtcclxuICAgICAgdGhpcy5fbW9kYWxTZXJ2aWNlLm9wZW4oSW5wdXRUYWJsZU1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgICAgdGl0bGU6ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNC1INGB0YLRgNC+0LrQuCcsXHJcbiAgICAgICAgc2V0dGluZ3M6IHRoaXMuc2V0dGluZ3MsXHJcbiAgICAgICAgcm93TW9kZWw6IGZpbmRSb3dcclxuICAgICAgfSkuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc29sdmUucmVzdWx0KSB7XHJcbiAgICAgICAgICBjb25zdCBjbG9uZU1vZGVsID0gY2xvbmVEZWVwKHRoaXMubW9kZWwpO1xyXG4gICAgICAgICAgY29uc3QgZmluZFJvdyA9IGNsb25lTW9kZWwuZGF0YS5maW5kKHJvdyA9PiByb3cuaWQgPT09IHJlc29sdmUucm93TW9kZWwuaWQpO1xyXG5cclxuICAgICAgICAgIGlmIChmaW5kUm93KSB7XHJcbiAgICAgICAgICAgIGZpbmRSb3cuZGF0YSA9IHJlc29sdmUucm93TW9kZWwuZGF0YTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZVN1YmplY3QkLm5leHQoY2xvbmVNb2RlbCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRGb3JtYXQoY29tcG9uZW50OiBDb21wb25lbnRNb2RlbEJhc2UpIHtcclxuICAgIHN3aXRjaCAoY29tcG9uZW50LnR5cGUpIHtcclxuICAgICAgY2FzZSBDb21wb25lbnRUeXBlLklucHV0RGF0ZTpcclxuICAgICAgICByZXR1cm4gJ2RkLk1NLnl5eXknO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREYXRhVHlwZShjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSkge1xyXG4gICAgc3dpdGNoIChjb21wb25lbnQudHlwZSkge1xyXG4gICAgICBjYXNlIENvbXBvbmVudFR5cGUuSW5wdXREYXRlOlxyXG4gICAgICAgIHJldHVybiAnZGF0ZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaG93VG90YWwoY29tcG9uZW50OiBDb21wb25lbnRNb2RlbEJhc2UpOiBib29sZWFuIHtcclxuICAgIGlmIChjb21wb25lbnQudHlwZSA9PT0gQ29tcG9uZW50VHlwZS5JbnB1dE51bWJlcikge1xyXG4gICAgICBjb25zdCBlbGVtZW50OiBJbnB1dE51bWJlck1vZGVsID0gY29tcG9uZW50IGFzIElucHV0TnVtYmVyTW9kZWw7XHJcblxyXG4gICAgICByZXR1cm4gZWxlbWVudC5vcHRpb25zLmluVG90YWxzO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1RvdGFsQ29sdW1uKGNvbXBvbmVudDogQ29tcG9uZW50TW9kZWxCYXNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKGNvbXBvbmVudCBhcyBJbnB1dE51bWJlck1vZGVsKS5vcHRpb25zWydpblRvdGFscyddO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdE1vZGVsKCkge1xyXG4gICAgdGhpcy5tb2RlbCA9IHtcclxuICAgICAgc3lzTmFtZTogdGhpcy5zZXR0aW5ncy5zeXNOYW1lLFxyXG4gICAgICB0eXBlOiB0aGlzLnNldHRpbmdzLnR5cGUsXHJcbiAgICAgIGRhdGE6IFtdLFxyXG4gICAgICB0b3RhbHM6IFtdXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdERhdGFTb3VyY2UoZGF0YTogVGFibGVSb3dNb2RlbFtdKSB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBkYXRhLm1hcCgoaXRlbTogVGFibGVSb3dNb2RlbCkgPT4ge1xyXG4gICAgICBjb25zdCBuZXdEYXRhSXRlbTogYW55ID0ge307XHJcblxyXG4gICAgICBmb3IgKGxldCBpIGluIGl0ZW0uZGF0YSkge1xyXG4gICAgICAgIG5ld0RhdGFJdGVtW2l0ZW0uZGF0YVtpXS5zeXNOYW1lXSA9IGl0ZW0uZGF0YVtpXS52YWx1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbmV3RGF0YUl0ZW0uaWQgPSBpdGVtLmlkO1xyXG5cclxuICAgICAgcmV0dXJuIG5ld0RhdGFJdGVtO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5fZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cclxuICAgIHRoaXMuZGF0YUdyaWQuaW5zdGFuY2UucmVmcmVzaCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdENvbHVtbnMoY29tcG9uZW50czogQ29tcG9uZW50TW9kZWxCYXNlW10pIHtcclxuICAgIHRoaXMuY29sdW1ucyA9IGNvbXBvbmVudHMubWFwKGMgPT4gdGhpcy5fdHJhbnNmb3JtQ29sdW1uKHN0cnVjdHVyZWRDbG9uZShjKSkpO1xyXG5cclxuICAgIHRoaXMuY29sdW1ucy5wdXNoKHtcclxuICAgICAgdHlwZTogJ2J1dHRvbnMnLFxyXG4gICAgICB3aWR0aDogMTUwLFxyXG4gICAgICBjc3NDbGFzczogJ2N1c3RvbS1jZWxsLWNvbnRyb2xzJyxcclxuICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRlbXBsYXRlOiAnZWRpdEJ1dHRvblRlbXBsYXRlJyxcclxuICAgICAgICAgIGhpbnQ6ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0ZW1wbGF0ZTogJ2RlbGV0ZUJ1dHRvblRlbXBsYXRlJyxcclxuICAgICAgICAgIGhpbnQ6ICfQo9C00LDQu9C40YLRjCcsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZGF0YUdyaWQuaW5zdGFuY2UucmVwYWludCgpO1xyXG5cclxuICAgIHRoaXMuX2RldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3RyYW5zZm9ybUNvbHVtbihjb21wb25lbnQ6IENvbXBvbmVudE1vZGVsQmFzZSk6IHtcclxuICAgIGNhcHRpb246IHN0cmluZyxcclxuICAgIGNvbHVtbnM6IGFueVtdLFxyXG4gICAgZGF0YUZpZWxkOiBhbnksXHJcbiAgICBmb3JtYXQ6IHN0cmluZ1xyXG4gIH0ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2FwdGlvbjogY29tcG9uZW50Lm9wdGlvbnMubGFiZWwgfHwgJycsXHJcbiAgICAgIGNvbHVtbnM6IGNvbXBvbmVudC5jb21wb25lbnRzLm1hcChjID0+IHRoaXMuX3RyYW5zZm9ybUNvbHVtbihzdHJ1Y3R1cmVkQ2xvbmUoYykpKSxcclxuICAgICAgZGF0YUZpZWxkOiBjb21wb25lbnQuc3lzTmFtZSxcclxuICAgICAgZm9ybWF0OiB0aGlzLmdldEZvcm1hdChjb21wb25lbnQpLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIiwiQGlmIChzZXR0aW5ncykge1xyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC10YWJsZS1jb250ZW50IHctMTAwXCI+XHJcbiAgICBAaWYgKHNldHRpbmdzLm9wdGlvbnMubGFiZWwpIHtcclxuICAgICAgPG1yeC1sYWJlbFxyXG4gICAgICAgIFtyZXF1aXJlZF09XCJzZXR0aW5ncy5vcHRpb25zLnJlcXVpcmVkXCJcclxuICAgICAgICBbdG9vbHRpcF09XCJzZXR0aW5ncy5vcHRpb25zLnRvb2x0aXAgfHwgJydcIlxyXG4gICAgICAgIFtjdXN0b21DbGFzc2VzXT1cIidtdC0yJ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBzZXR0aW5ncy5vcHRpb25zLmxhYmVsIH19XHJcbiAgICAgIDwvbXJ4LWxhYmVsPlxyXG4gICAgfVxyXG5cclxuICAgIDxkeC1kYXRhLWdyaWRcclxuICAgICAgI2RhdGFHcmlkXHJcbiAgICAgIFtkYXRhU291cmNlXT1cImRhdGFTb3VyY2VcIlxyXG4gICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgbm9EYXRhVGV4dD1cItCd0LXRgiDQtNCw0L3QvdGL0YVcIlxyXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlXCJcclxuICAgID5cclxuICAgICAgPGR4by10b29sYmFyPlxyXG4gICAgICAgIDxkeGktaXRlbSBsb2NhdGlvbj1cImFmdGVyXCI+XHJcbiAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlIGNsYXNzPVwiYWRkLXJvd1wiPlxyXG4gICAgICAgICAgICA8bXJ4LWJ1dHRvblxyXG4gICAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcclxuICAgICAgICAgICAgICBbdHlwZV09XCIndGVydGlhcnknXCJcclxuICAgICAgICAgICAgICBbY3VzdG9tQ2xhc3Nlc109XCIncHgtMydcIlxyXG4gICAgICAgICAgICAgIChtcnhDbGljayk9XCJjcmVhdGVSb3coKVwiXHJcbiAgICAgICAgICAgID7QlNC+0LHQsNCy0LjRgtGMXHJcbiAgICAgICAgICAgIDwvbXJ4LWJ1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZHhpLWl0ZW0+XHJcbiAgICAgIDwvZHhvLXRvb2xiYXI+XHJcblxyXG4gICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGJ1dHRvbkRhdGEgb2YgJ2VkaXRCdXR0b25UZW1wbGF0ZSdcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pY29uIGljb24tZWRpdCBpY29uLWZvbnQtMTYgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwiZWRpdFJvdyhidXR0b25EYXRhKVwiPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGJ1dHRvbkRhdGEgb2YgJ2RlbGV0ZUJ1dHRvblRlbXBsYXRlJ1wiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZVJvdyhidXR0b25EYXRhKVwiPjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICBAaWYgKGRhdGFTb3VyY2UubGVuZ3RoKSB7XHJcbiAgICAgICAgPGR4by1zdW1tYXJ5PlxyXG4gICAgICAgICAgQGZvciAoY29tcG9uZW50IG9mIHNldHRpbmdzLmNvbXBvbmVudHM7IHRyYWNrIGNvbXBvbmVudC5pZDsgbGV0IGZpcnN0ID0gJGZpcnN0KSB7XHJcbiAgICAgICAgICAgIEBpZiAoIWZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgQGlmIChzaG93VG90YWwoY29tcG9uZW50KSkge1xyXG4gICAgICAgICAgICAgICAgPGR4aS10b3RhbC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29tcG9uZW50LnN5c05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICBbc3VtbWFyeVR5cGVdPVwiJ3N1bSdcIlxyXG4gICAgICAgICAgICAgICAgICBbZGlzcGxheUZvcm1hdF09XCInezB9J1wiXHJcbiAgICAgICAgICAgICAgICA+PC9keGktdG90YWwtaXRlbT5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIEBmb3IgKGNvbXBvbmVudCBvZiBjb21wb25lbnQuY29tcG9uZW50czsgdHJhY2sgY29tcG9uZW50LmlkKSB7XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNob3dUb3RhbChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxkeGktdG90YWwtaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgIFtjb2x1bW5dPVwiY29tcG9uZW50LnN5c05hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdW1tYXJ5VHlwZV09XCInc3VtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGb3JtYXRdPVwiJ3swfSdcIlxyXG4gICAgICAgICAgICAgICAgICA+PC9keGktdG90YWwtaXRlbT5cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBAZm9yIChjb21wb25lbnQgb2YgY29tcG9uZW50LmNvbXBvbmVudHM7IHRyYWNrIGNvbXBvbmVudC5pZCkge1xyXG4gICAgICAgICAgICAgICAgICBAaWYgKHNob3dUb3RhbChjb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGR4aS10b3RhbC1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtzdW1tYXJ5VHlwZV09XCInc3VtJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZvcm1hdF09XCInezB9J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZHhpLXRvdGFsLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIEBpZiAoaXNUb3RhbENvbHVtbihjb21wb25lbnQpKSB7XHJcbiAgICAgICAgICAgICAgICA8ZHhpLXRvdGFsLWl0ZW0gW2NvbHVtbl09XCJjb21wb25lbnQuc3lzTmFtZVwiIFtkaXNwbGF5Rm9ybWF0XT1cIid7MH0nXCI+PC9keGktdG90YWwtaXRlbT5cclxuICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxkeGktdG90YWwtaXRlbVxyXG4gICAgICAgICAgICAgICAgICBbY29sdW1uXT1cImNvbXBvbmVudC5zeXNOYW1lXCJcclxuICAgICAgICAgICAgICAgICAgW2Nzc0NsYXNzXT1cIid0ZXh0LWJvbGQnXCJcclxuICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGb3JtYXRdPVwiJ9CY0KLQntCT0J4nXCJcclxuICAgICAgICAgICAgICAgID48L2R4aS10b3RhbC1pdGVtPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZHhvLXN1bW1hcnk+XHJcbiAgICAgIH1cclxuICAgIDwvZHgtZGF0YS1ncmlkPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZWRpdFRlbXBsYXRlIGxldC1jZWxsSW5mbz1cImNlbGxJbmZvXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIiBzdHlsZT1cImdhcDogNHB4XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWVkaXQgaWNvbi1mb250LTE2IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImVkaXRSb3coY2VsbEluZm8pXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1kZWxldGUgaWNvbi1mb250LTE2IGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImRlbGV0ZVJvdyhjZWxsSW5mbylcIj48L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -27,6 +27,7 @@ export class ObjectFormEffects {
27
27
  this._store.dispatch(objectFormActions.loadTemplatePending());
28
28
  })), { dispatch: false });
29
29
  this.loadTemplatePending$ = createEffect(() => this._actions$.pipe(ofType(EApplicationActions.LoadTemplatePending), withLatestFrom(this._store.select(sharedSelectors.selectRouteNestedParam(OBJECT_ID_NAME)), this._store.select(sharedSelectors.selectRouteNestedParam(TEMPLATE_SYS_NAME_NAME))), switchMap(([_, objectId, templateSysName]) => {
30
+ console.log(3, objectId);
30
31
  if (objectId) {
31
32
  return this._applicationService.getTemplate(objectId).pipe(switchMap(({ templateSysName }) => ([
32
33
  objectFormActions.loadTemplateSuccess({ templateSysName }),
@@ -143,4 +144,4 @@ export class ObjectFormEffects {
143
144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ObjectFormEffects, decorators: [{
144
145
  type: Injectable
145
146
  }], ctorParameters: () => [{ type: i1.Actions }, { type: i2.Store }, { type: i3.Router }, { type: i4.ObjectFormService }, { type: i5.ToasterService }] });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1mb3JtL3NyYy9saWIvbW9kdWxlcy9vYmplY3QtZm9ybS9zdG9yZS9vYmplY3QtZm9ybS5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JILE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUd2RixPQUFPLEVBQUUsYUFBYSxFQUFrQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQUk3RixNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQ1UsU0FBa0IsRUFDbEIsTUFBYSxFQUNiLE9BQWUsRUFDZixtQkFBc0MsRUFDdEMsZUFBK0I7UUFKL0IsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBbUI7UUFDdEMsb0JBQWUsR0FBZixl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QixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBRTVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksUUFBUSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQ0gsRUFBRSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBaFB0QixDQUFDOytHQVZVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE9iamVjdEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBvYmplY3RGb3JtQWN0aW9ucywgb2JqZWN0Rm9ybVNlbGVjdG9ycywgRUFwcGxpY2F0aW9uQWN0aW9ucyB9IGZyb20gJy4uL3N0b3JlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE9iamVjdFZhbHVlc0R0bywgVmFsdWVNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEF1dG9TYXZlU3RvcmUsIFRvYXN0ZXJTZXJ2aWNlLCBUb2FzdGVyVHlwZSB9IGZyb20gJ0BteXJ0ZXgtb3JnL3VpJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TW9kZWxCYXNlLCBGaWxlTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQtZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBzaGFyZWRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zaGFyZWQtZm9ybS9zdG9yZSc7XHJcbmltcG9ydCB7IE9CSkVDVF9JRF9OQU1FLCBTRUNUSU9OX1NZU19OQU1FX05BTUUsIFRFTVBMQVRFX1NZU19OQU1FX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBzZWxlY3RBcGlQcmVmaXgsIHNlbGVjdEFwaVVybCB9IGZyb20gJy4vb2JqZWN0LWZvcm0uc2VsZWN0b3InO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybUVmZmVjdHMge1xyXG4gIHByaXZhdGUgX2F1dG9TYXZlU3RvcmUgPSBpbmplY3QoQXV0b1NhdmVTdG9yZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgX2FwcGxpY2F0aW9uU2VydmljZTogT2JqZWN0Rm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFwaVVybCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLlVwZGF0ZUFwaVVybCksXHJcbiAgICBtYXAoKHByb3BzOiB7IGFwaVByZWZpeDogc3RyaW5nLCBhcGlVcmw6IHN0cmluZyB9KSA9PiAoe2FwaVByZWZpeDogcHJvcHMuYXBpUHJlZml4LCBhcGlVcmw6IHByb3BzLmFwaVVybH0pKSxcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICB0YXAoKHthcGlQcmVmaXgsIGFwaVVybH0pID0+IHtcclxuICAgICAgaWYgKGFwaVVybCkge1xyXG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS51cGRhdGVBcGlVcmwoYXBpVXJsKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy5sb2FkVGVtcGxhdGVQZW5kaW5nKCkpO1xyXG4gICAgfSlcclxuICApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcblxyXG4gIGxvYWRUZW1wbGF0ZVBlbmRpbmckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5Mb2FkVGVtcGxhdGVQZW5kaW5nKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpKSxcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKFRFTVBMQVRFX1NZU19OQU1FX05BTUUpKSxcclxuICAgICksXHJcbiAgICBzd2l0Y2hNYXAoKFtfLCBvYmplY3RJZCwgdGVtcGxhdGVTeXNOYW1lXSkgPT4ge1xyXG5cclxuICAgICAgaWYgKG9iamVjdElkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS5nZXRUZW1wbGF0ZShvYmplY3RJZCkucGlwZShcclxuICAgICAgICAgIHN3aXRjaE1hcCgoe3RlbXBsYXRlU3lzTmFtZX0pID0+IChbXHJcbiAgICAgICAgICAgIG9iamVjdEZvcm1BY3Rpb25zLmxvYWRUZW1wbGF0ZVN1Y2Nlc3Moe3RlbXBsYXRlU3lzTmFtZX0pLFxyXG4gICAgICAgICAgICBvYmplY3RGb3JtQWN0aW9ucy5sb2FkT2JqZWN0UGVuZGluZyh7dGVtcGxhdGVTeXNOYW1lfSlcclxuICAgICAgICAgIF0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gb2Yob2JqZWN0Rm9ybUFjdGlvbnMubG9hZFRlbXBsYXRlRXJyb3IoKSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIG9mKG9iamVjdEZvcm1BY3Rpb25zLmxvYWRQcmV2aWV3VGVtcGxhdGVQZW5kaW5nKHt0ZW1wbGF0ZVN5c05hbWV9KSk7XHJcbiAgICAgIH1cclxuICAgIH0pKVxyXG4gICk7XHJcblxyXG4gIGxvYWRQcmV2aWV3VGVtcGxhdGVQZW5kaW5nID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5Mb2FkUHJldmlld1RlbXBsYXRlUGVuZGluZyksXHJcbiAgICBtYXAoKHByb3BzOiB7IHRlbXBsYXRlU3lzTmFtZTogc3RyaW5nIH0pID0+IHByb3BzLnRlbXBsYXRlU3lzTmFtZSksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0QXBpUHJlZml4KSxcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKFNFQ1RJT05fU1lTX05BTUVfTkFNRSkpLFxyXG4gICAgKSxcclxuICAgIHN3aXRjaE1hcCgoW3RlbXBsYXRlU3lzTmFtZSwgYXBpUHJlZml4LCBzZWN0aW9uU3lzTmFtZV0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS5nZXRUZW1wbGF0ZVNldHRpbmdzKHRlbXBsYXRlU3lzTmFtZSkucGlwZShcclxuICAgICAgICBtYXAoKHRlbXBsYXRlU2V0dGluZ3MpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGFjdGl2ZVNlY3Rpb24gPSB0ZW1wbGF0ZVNldHRpbmdzLnNlY3Rpb25zLmZpbmQoXHJcbiAgICAgICAgICAgIChzOiBDb21wb25lbnRNb2RlbEJhc2UpID0+IHMuc3lzTmFtZSA9PT0gc2VjdGlvblN5c05hbWVcclxuICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgaWYgKCFhY3RpdmVTZWN0aW9uICYmIHRlbXBsYXRlU2V0dGluZ3Muc2VjdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbXHJcbiAgICAgICAgICAgICAgYC8ke2FwaVByZWZpeH0vcHJldmlldy8ke3RlbXBsYXRlU3lzTmFtZX0vJHt0ZW1wbGF0ZVNldHRpbmdzLnNlY3Rpb25zWzBdLnN5c05hbWV9YFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Rm9ybUFjdGlvbnMubG9hZFByZXZpZXdUZW1wbGF0ZVN1Y2Nlc3Moe3RlbXBsYXRlU2V0dGluZ3MsIHRlbXBsYXRlU3lzTmFtZX0pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gb2Yob2JqZWN0Rm9ybUFjdGlvbnMubG9hZFByZXZpZXdUZW1wbGF0ZUVycm9yKCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KSlcclxuICApO1xyXG5cclxuICBsb2FkQXBwbGljYXRpb25QZW5kaW5nJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLl9hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVBcHBsaWNhdGlvbkFjdGlvbnMuTG9hZE9iamVjdFBlbmRpbmcpLFxyXG4gICAgbWFwKChwcm9wczogeyB0ZW1wbGF0ZVN5c05hbWU6IHN0cmluZyB9KSA9PiBwcm9wcy50ZW1wbGF0ZVN5c05hbWUpLFxyXG4gICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdEFwaVByZWZpeCksXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbShPQkpFQ1RfSURfTkFNRSkpLFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oU0VDVElPTl9TWVNfTkFNRV9OQU1FKSksXHJcbiAgICApLFxyXG4gICAgc3dpdGNoTWFwKChbdGVtcGxhdGVTeXNOYW1lLCBhcGlQcmVmaXgsIG9iamVjdElkLCBzZWN0aW9uU3lzTmFtZV0pID0+IHtcclxuICAgICAgY29uc3QgcmVxdWVzdHM6IFtPYnNlcnZhYmxlPFRlbXBsYXRlTW9kZWw+LCBPYnNlcnZhYmxlPE9iamVjdFZhbHVlc0R0bz5dID0gW1xyXG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS5nZXRUZW1wbGF0ZVNldHRpbmdzKHRlbXBsYXRlU3lzTmFtZSksXHJcbiAgICAgICAgdGhpcy5fYXBwbGljYXRpb25TZXJ2aWNlLmdldFNlY3Rpb25WYWx1ZXMob2JqZWN0SWQpXHJcbiAgICAgIF07XHJcblxyXG4gICAgICByZXR1cm4gZm9ya0pvaW4ocmVxdWVzdHMpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKChbdGVtcGxhdGVTZXR0aW5ncywgdmFsdWVEdG9dKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBhY3RpdmVTZWN0aW9uID0gdGVtcGxhdGVTZXR0aW5ncy5zZWN0aW9ucy5maW5kKFxyXG4gICAgICAgICAgICAoczogQ29tcG9uZW50TW9kZWxCYXNlKSA9PiBzLnN5c05hbWUgPT09IHNlY3Rpb25TeXNOYW1lXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmICghYWN0aXZlU2VjdGlvbiAmJiB0ZW1wbGF0ZVNldHRpbmdzLnNlY3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW2AvJHthcGlQcmVmaXh9LyR7b2JqZWN0SWR9LyR7dGVtcGxhdGVTZXR0aW5ncy5zZWN0aW9uc1swXS5zeXNOYW1lfWBdKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICBvYmplY3RGb3JtQWN0aW9ucy5sb2FkT2JqZWN0U3VjY2Vzcyh7XHJcbiAgICAgICAgICAgICAgdGVtcGxhdGVTZXR0aW5nczogdGVtcGxhdGVTZXR0aW5ncyxcclxuICAgICAgICAgICAgICBzZWN0aW9uVmFsdWVzOiB2YWx1ZUR0by52YWx1ZS5zZWN0aW9uVmFsdWVzLFxyXG4gICAgICAgICAgICAgIGFwcGxpY2F0aW9uSWQ6IG9iamVjdElkLFxyXG4gICAgICAgICAgICAgIGlzRHJhZnQ6IHZhbHVlRHRvLmlzRHJhZnRcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIG9iamVjdEZvcm1BY3Rpb25zLmNoZWNrQWxsRGVwZW5kZW5jeVJ1bGVzKClcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gb2Yob2JqZWN0Rm9ybUFjdGlvbnMubG9hZE9iamVjdEVycm9yKCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KSlcclxuICApO1xyXG5cclxuICBjaGVja0NhblVwZGF0ZVZhbHVlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLlVwZGF0ZVZhbHVlcyksXHJcbiAgICBtYXAoKHByb3BzOiB7IHZhbHVlOiBWYWx1ZU1vZGVsIHwgVmFsdWVNb2RlbFtdIH0pID0+IHByb3BzLnZhbHVlKSxcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKFRFTVBMQVRFX1NZU19OQU1FX05BTUUpKSxcclxuICAgICksXHJcbiAgICB0YXAoKFtfLCB0ZW1wbGF0ZVN5c05hbWVdKSA9PiB7XHJcbiAgICAgIGlmICh0ZW1wbGF0ZVN5c05hbWUpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKG9iamVjdEZvcm1BY3Rpb25zLmFjY2Vzc1VwZGF0ZVZhbHVlcygpKTtcclxuICAgIH0pXHJcbiAgKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBzYXZlVmFsdWVzRGVib3VuY2VkJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLl9hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVBcHBsaWNhdGlvbkFjdGlvbnMuQWNjZXNzVXBkYXRlVmFsdWVzKSxcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICBkZWJvdW5jZVRpbWUoMTUwMCksXHJcbiAgICB0YXAoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9hdXRvU2F2ZVN0b3JlLnN0YXJ0KCk7XHJcbiAgICAgIHRoaXMuX3N0b3JlLmRpc3BhdGNoKG9iamVjdEZvcm1BY3Rpb25zLnNhdmVWYWx1ZXNQZW5kaW5nKCkpO1xyXG4gICAgfSlcclxuICApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcblxyXG4gIHVwZGF0ZUFwcGxpY2F0aW9uVmFsdWVzJCA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLl9hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVBcHBsaWNhdGlvbkFjdGlvbnMuU2F2ZVZhbHVlc1BlbmRpbmcpLFxyXG4gICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbShPQkpFQ1RfSURfTkFNRSkpLFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qob2JqZWN0Rm9ybVNlbGVjdG9ycy5zZWxlY3RTZWN0aW9uVmFsdWVzKSxcclxuICAgICksXHJcbiAgICBzd2l0Y2hNYXAoKFtfLCBvYmplY3RJZCwgc2VjdGlvblZhbHVlc10pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS51cGRhdGVBcHBsaWNhdGlvblZhbHVlcyhvYmplY3RJZCwgc2VjdGlvblZhbHVlcykucGlwZShcclxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fYXV0b1NhdmVTdG9yZS5zdWNjZXNzKCk7XHJcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Rm9ybUFjdGlvbnMuc2F2ZVZhbHVlc1N1Y2Nlc3Moe3Jlc3VsdCwgb2JqZWN0SWR9KTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fYXV0b1NhdmVTdG9yZS5lcnJvcigpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG9iamVjdEZvcm1BY3Rpb25zLnNhdmVWYWx1ZXNFcnJvcigpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSkpXHJcbiAgKTtcclxuXHJcbiAgc2F2ZUFwcGxpY2F0aW9uUGVuZGluZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLlNhdmVPYmplY3RQZW5kaW5nKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpKVxyXG4gICAgKSxcclxuICAgIHN3aXRjaE1hcCgoW18sIG9iamVjdElkXSkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25TZXJ2aWNlLnNhdmVBcHBsaWNhdGlvbihvYmplY3RJZCkucGlwZShcclxuICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdG9hc3RlclNlcnZpY2Uuc2hvdyh7XHJcbiAgICAgICAgICAgIHRpdGxlOiAn0KHQvtGF0YDQsNC90LXQvdC+INGD0YHQv9C10YjQvdC+JyxcclxuICAgICAgICAgICAgdHlwZTogVG9hc3RlclR5cGUuUG9zaXRpdmVcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHJldHVybiBvYmplY3RGb3JtQWN0aW9ucy5zYXZlT2JqZWN0U3VjY2VzcygpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdG9hc3RlclNlcnZpY2Uuc2hvdyh7XHJcbiAgICAgICAgICAgIHRpdGxlOiAn0JLQvtC30L3QuNC60LvQuCDQvtGI0LjQsdC60Lgg0L/RgNC4INGB0L7RhdGA0LDQvdC10L3QuNC4LCDQv9C+0LLRgtC+0YDQuNGC0LUnLFxyXG4gICAgICAgICAgICB0eXBlOiBUb2FzdGVyVHlwZS5OZWdhdGl2ZVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9mKG9iamVjdEZvcm1BY3Rpb25zLnNhdmVPYmplY3RFcnJvcigpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSkpXHJcbiAgKTtcclxuXHJcbiAgY29weUFwcGxpY2F0aW9uUGVuZGluZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLkNvcHlPYmplY3RQZW5kaW5nKSxcclxuICAgIG1hcCgoYWN0aW9uOiB7IHNvdXJjZUlkOiBzdHJpbmcsIHRhcmdldFRlbXBsYXRlU3lzTmFtZTogc3RyaW5nIH0pID0+IGFjdGlvbiksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0QXBpUHJlZml4KSxcclxuICAgICksXHJcbiAgICBzd2l0Y2hNYXAoKFthY3Rpb24sIGFwaVByZWZpeF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS5jb3B5QXBwbGljYXRpb24oYWN0aW9uKS5waXBlKFxyXG4gICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl90b2FzdGVyU2VydmljZS5zaG93KHtcclxuICAgICAgICAgICAgdGl0bGU6ICfQmtC+0L/QuNGA0L7QstC90LDQuNC1INC/0YDQvtGI0LvQviDRg9GB0L/QtdGI0L3QvicsXHJcbiAgICAgICAgICAgIHR5cGU6IFRvYXN0ZXJUeXBlLlBvc2l0aXZlXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB3aW5kb3cub3BlbihgLyR7YXBpUHJlZml4fWAgKyByZXN1bHQuaWQsICdfYmxhbmsnKTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Rm9ybUFjdGlvbnMuY29weU9iamVjdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3RvYXN0ZXJTZXJ2aWNlLnNob3coe1xyXG4gICAgICAgICAgICB0aXRsZTogJ9CS0L7Qt9C90LjQutC70Lgg0L7RiNC40LHQutC4INC/0YDQuCDQutC+0L/QuNGA0L7QstCw0L3QuNC4INC30LDRj9Cy0LrQuCwg0L/QvtCy0YLQvtGA0LjRgtC1JyxcclxuICAgICAgICAgICAgdHlwZTogVG9hc3RlclR5cGUuTmVnYXRpdmVcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHJldHVybiBvZihvYmplY3RGb3JtQWN0aW9ucy5jb3B5T2JqZWN0RXJyb3IoKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICBsb2FkU2VjdGlvbkZpbGVzUGVuZGluZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLkxvYWRTZWN0aW9uRmlsZXNQZW5kaW5nKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpKSxcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKFNFQ1RJT05fU1lTX05BTUVfTkFNRSkpLFxyXG4gICAgKSxcclxuICAgIHN3aXRjaE1hcCgoW18sIG9iamVjdElkLCBzZWN0aW9uU3lzTmFtZV0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS5nZXRTZWN0aW9uRmlsZXMob2JqZWN0SWQsIHNlY3Rpb25TeXNOYW1lKS5waXBlKFxyXG4gICAgICAgIG1hcCgoc2VjdGlvbkZpbGVzOiBGaWxlTW9kZWxbXSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9iamVjdEZvcm1BY3Rpb25zLmxvYWRTZWN0aW9uRmlsZXNTdWNjZXNzKHtzZWN0aW9uRmlsZXM6IHNlY3Rpb25GaWxlc30pO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG9iamVjdEZvcm1BY3Rpb25zLmxvYWRTZWN0aW9uRmlsZXNFcnJvcigpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSkpXHJcbiAgKTtcclxuXHJcbiAgcHJpbnREb2N1bWVudCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLlByaW50RG9jdW1lbnQpLFxyXG4gICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdEFwaVVybCksXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbShPQkpFQ1RfSURfTkFNRSkpLFxyXG4gICAgKSxcclxuICAgIHRhcCgoW18sIGFwaVVybCwgb2JqZWN0SWRdKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfQv9C10YfQsNGC0Ywg0LTQvtC60YPQvNC10L3RgtCwICcgKyBvYmplY3RJZCk7XHJcblxyXG4gICAgICB3aW5kb3cub3BlbihgJHthcGlVcmx9LyR7b2JqZWN0SWR9L3ByaW50YCwgJ19ibGFuaycpO1xyXG4gICAgfSlcclxuICApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcbn1cclxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uZWZmZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRleC1mb3JtL3NyYy9saWIvbW9kdWxlcy9vYmplY3QtZm9ybS9zdG9yZS9vYmplY3QtZm9ybS5lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JILE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUd2RixPQUFPLEVBQUUsYUFBYSxFQUFrQixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7OztBQUk3RixNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQ1UsU0FBa0IsRUFDbEIsTUFBYSxFQUNiLE9BQWUsRUFDZixtQkFBc0MsRUFDdEMsZUFBK0I7UUFKL0IsY0FBUyxHQUFULFNBQVMsQ0FBUztRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBbUI7UUFDdEMsb0JBQWUsR0FBZixl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QyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUM1QixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBRTVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksUUFBUSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQ0gsRUFBRSxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO0lBaFB0QixDQUFDOytHQVZVLGlCQUFpQjttSEFBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbnMsIGNyZWF0ZUVmZmVjdCwgb2ZUeXBlIH0gZnJvbSAnQG5ncngvZWZmZWN0cyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3dpdGNoTWFwLCB0YXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE9iamVjdEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBvYmplY3RGb3JtQWN0aW9ucywgb2JqZWN0Rm9ybVNlbGVjdG9ycywgRUFwcGxpY2F0aW9uQWN0aW9ucyB9IGZyb20gJy4uL3N0b3JlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IE9iamVjdFZhbHVlc0R0bywgVmFsdWVNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEF1dG9TYXZlU3RvcmUsIFRvYXN0ZXJTZXJ2aWNlLCBUb2FzdGVyVHlwZSB9IGZyb20gJ0BteXJ0ZXgtb3JnL3VpJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TW9kZWxCYXNlLCBGaWxlTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQtZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBzaGFyZWRTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zaGFyZWQtZm9ybS9zdG9yZSc7XHJcbmltcG9ydCB7IE9CSkVDVF9JRF9OQU1FLCBTRUNUSU9OX1NZU19OQU1FX05BTUUsIFRFTVBMQVRFX1NZU19OQU1FX05BTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBzZWxlY3RBcGlQcmVmaXgsIHNlbGVjdEFwaVVybCB9IGZyb20gJy4vb2JqZWN0LWZvcm0uc2VsZWN0b3InO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgT2JqZWN0Rm9ybUVmZmVjdHMge1xyXG4gIHByaXZhdGUgX2F1dG9TYXZlU3RvcmUgPSBpbmplY3QoQXV0b1NhdmVTdG9yZSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIF9yb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgX2FwcGxpY2F0aW9uU2VydmljZTogT2JqZWN0Rm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF90b2FzdGVyU2VydmljZTogVG9hc3RlclNlcnZpY2VcclxuICApIHtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFwaVVybCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLlVwZGF0ZUFwaVVybCksXHJcbiAgICBtYXAoKHByb3BzOiB7IGFwaVByZWZpeDogc3RyaW5nLCBhcGlVcmw6IHN0cmluZyB9KSA9PiAoe2FwaVByZWZpeDogcHJvcHMuYXBpUHJlZml4LCBhcGlVcmw6IHByb3BzLmFwaVVybH0pKSxcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICB0YXAoKHthcGlQcmVmaXgsIGFwaVVybH0pID0+IHtcclxuICAgICAgaWYgKGFwaVVybCkge1xyXG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS51cGRhdGVBcGlVcmwoYXBpVXJsKVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy5sb2FkVGVtcGxhdGVQZW5kaW5nKCkpO1xyXG4gICAgfSlcclxuICApLCB7ZGlzcGF0Y2g6IGZhbHNlfSk7XHJcblxyXG4gIGxvYWRUZW1wbGF0ZVBlbmRpbmckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5Mb2FkVGVtcGxhdGVQZW5kaW5nKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpKSxcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKFRFTVBMQVRFX1NZU19OQU1FX05BTUUpKSxcclxuICAgICksXHJcbiAgICBzd2l0Y2hNYXAoKFtfLCBvYmplY3RJZCwgdGVtcGxhdGVTeXNOYW1lXSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygzLCBvYmplY3RJZCk7XHJcbiAgICAgIGlmIChvYmplY3RJZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvblNlcnZpY2UuZ2V0VGVtcGxhdGUob2JqZWN0SWQpLnBpcGUoXHJcbiAgICAgICAgICBzd2l0Y2hNYXAoKHt0ZW1wbGF0ZVN5c05hbWV9KSA9PiAoW1xyXG4gICAgICAgICAgICBvYmplY3RGb3JtQWN0aW9ucy5sb2FkVGVtcGxhdGVTdWNjZXNzKHt0ZW1wbGF0ZVN5c05hbWV9KSxcclxuICAgICAgICAgICAgb2JqZWN0Rm9ybUFjdGlvbnMubG9hZE9iamVjdFBlbmRpbmcoe3RlbXBsYXRlU3lzTmFtZX0pXHJcbiAgICAgICAgICBdKSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKG9iamVjdEZvcm1BY3Rpb25zLmxvYWRUZW1wbGF0ZUVycm9yKCkpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBvZihvYmplY3RGb3JtQWN0aW9ucy5sb2FkUHJldmlld1RlbXBsYXRlUGVuZGluZyh7dGVtcGxhdGVTeXNOYW1lfSkpO1xyXG4gICAgICB9XHJcbiAgICB9KSlcclxuICApO1xyXG5cclxuICBsb2FkUHJldmlld1RlbXBsYXRlUGVuZGluZyA9IGNyZWF0ZUVmZmVjdCgoKSA9PiB0aGlzLl9hY3Rpb25zJC5waXBlKFxyXG4gICAgb2ZUeXBlKEVBcHBsaWNhdGlvbkFjdGlvbnMuTG9hZFByZXZpZXdUZW1wbGF0ZVBlbmRpbmcpLFxyXG4gICAgbWFwKChwcm9wczogeyB0ZW1wbGF0ZVN5c05hbWU6IHN0cmluZyB9KSA9PiBwcm9wcy50ZW1wbGF0ZVN5c05hbWUpLFxyXG4gICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdEFwaVByZWZpeCksXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbShTRUNUSU9OX1NZU19OQU1FX05BTUUpKSxcclxuICAgICksXHJcbiAgICBzd2l0Y2hNYXAoKFt0ZW1wbGF0ZVN5c05hbWUsIGFwaVByZWZpeCwgc2VjdGlvblN5c05hbWVdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvblNlcnZpY2UuZ2V0VGVtcGxhdGVTZXR0aW5ncyh0ZW1wbGF0ZVN5c05hbWUpLnBpcGUoXHJcbiAgICAgICAgbWFwKCh0ZW1wbGF0ZVNldHRpbmdzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBhY3RpdmVTZWN0aW9uID0gdGVtcGxhdGVTZXR0aW5ncy5zZWN0aW9ucy5maW5kKFxyXG4gICAgICAgICAgICAoczogQ29tcG9uZW50TW9kZWxCYXNlKSA9PiBzLnN5c05hbWUgPT09IHNlY3Rpb25TeXNOYW1lXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIGlmICghYWN0aXZlU2VjdGlvbiAmJiB0ZW1wbGF0ZVNldHRpbmdzLnNlY3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW1xyXG4gICAgICAgICAgICAgIGAvJHthcGlQcmVmaXh9L3ByZXZpZXcvJHt0ZW1wbGF0ZVN5c05hbWV9LyR7dGVtcGxhdGVTZXR0aW5ncy5zZWN0aW9uc1swXS5zeXNOYW1lfWBcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9iamVjdEZvcm1BY3Rpb25zLmxvYWRQcmV2aWV3VGVtcGxhdGVTdWNjZXNzKHt0ZW1wbGF0ZVNldHRpbmdzLCB0ZW1wbGF0ZVN5c05hbWV9KTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG9iamVjdEZvcm1BY3Rpb25zLmxvYWRQcmV2aWV3VGVtcGxhdGVFcnJvcigpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSkpXHJcbiAgKTtcclxuXHJcbiAgbG9hZEFwcGxpY2F0aW9uUGVuZGluZyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLkxvYWRPYmplY3RQZW5kaW5nKSxcclxuICAgIG1hcCgocHJvcHM6IHsgdGVtcGxhdGVTeXNOYW1lOiBzdHJpbmcgfSkgPT4gcHJvcHMudGVtcGxhdGVTeXNOYW1lKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qob2JqZWN0Rm9ybVNlbGVjdG9ycy5zZWxlY3RBcGlQcmVmaXgpLFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpKSxcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKFNFQ1RJT05fU1lTX05BTUVfTkFNRSkpLFxyXG4gICAgKSxcclxuICAgIHN3aXRjaE1hcCgoW3RlbXBsYXRlU3lzTmFtZSwgYXBpUHJlZml4LCBvYmplY3RJZCwgc2VjdGlvblN5c05hbWVdKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlcXVlc3RzOiBbT2JzZXJ2YWJsZTxUZW1wbGF0ZU1vZGVsPiwgT2JzZXJ2YWJsZTxPYmplY3RWYWx1ZXNEdG8+XSA9IFtcclxuICAgICAgICB0aGlzLl9hcHBsaWNhdGlvblNlcnZpY2UuZ2V0VGVtcGxhdGVTZXR0aW5ncyh0ZW1wbGF0ZVN5c05hbWUpLFxyXG4gICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS5nZXRTZWN0aW9uVmFsdWVzKG9iamVjdElkKVxyXG4gICAgICBdO1xyXG5cclxuICAgICAgcmV0dXJuIGZvcmtKb2luKHJlcXVlc3RzKS5waXBlKFxyXG4gICAgICAgIHN3aXRjaE1hcCgoW3RlbXBsYXRlU2V0dGluZ3MsIHZhbHVlRHRvXSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IHRlbXBsYXRlU2V0dGluZ3Muc2VjdGlvbnMuZmluZChcclxuICAgICAgICAgICAgKHM6IENvbXBvbmVudE1vZGVsQmFzZSkgPT4gcy5zeXNOYW1lID09PSBzZWN0aW9uU3lzTmFtZVxyXG4gICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICBpZiAoIWFjdGl2ZVNlY3Rpb24gJiYgdGVtcGxhdGVTZXR0aW5ncy5zZWN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFtgLyR7YXBpUHJlZml4fS8ke29iamVjdElkfS8ke3RlbXBsYXRlU2V0dGluZ3Muc2VjdGlvbnNbMF0uc3lzTmFtZX1gXSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgb2JqZWN0Rm9ybUFjdGlvbnMubG9hZE9iamVjdFN1Y2Nlc3Moe1xyXG4gICAgICAgICAgICAgIHRlbXBsYXRlU2V0dGluZ3M6IHRlbXBsYXRlU2V0dGluZ3MsXHJcbiAgICAgICAgICAgICAgc2VjdGlvblZhbHVlczogdmFsdWVEdG8udmFsdWUuc2VjdGlvblZhbHVlcyxcclxuICAgICAgICAgICAgICBhcHBsaWNhdGlvbklkOiBvYmplY3RJZCxcclxuICAgICAgICAgICAgICBpc0RyYWZ0OiB2YWx1ZUR0by5pc0RyYWZ0XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBvYmplY3RGb3JtQWN0aW9ucy5jaGVja0FsbERlcGVuZGVuY3lSdWxlcygpXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG9iamVjdEZvcm1BY3Rpb25zLmxvYWRPYmplY3RFcnJvcigpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfSkpXHJcbiAgKTtcclxuXHJcbiAgY2hlY2tDYW5VcGRhdGVWYWx1ZXMkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5VcGRhdGVWYWx1ZXMpLFxyXG4gICAgbWFwKChwcm9wczogeyB2YWx1ZTogVmFsdWVNb2RlbCB8IFZhbHVlTW9kZWxbXSB9KSA9PiBwcm9wcy52YWx1ZSksXHJcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbShURU1QTEFURV9TWVNfTkFNRV9OQU1FKSksXHJcbiAgICApLFxyXG4gICAgdGFwKChbXywgdGVtcGxhdGVTeXNOYW1lXSkgPT4ge1xyXG4gICAgICBpZiAodGVtcGxhdGVTeXNOYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy5hY2Nlc3NVcGRhdGVWYWx1ZXMoKSk7XHJcbiAgICB9KVxyXG4gICksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuXHJcbiAgc2F2ZVZhbHVlc0RlYm91bmNlZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLkFjY2Vzc1VwZGF0ZVZhbHVlcyksXHJcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgZGVib3VuY2VUaW1lKDE1MDApLFxyXG4gICAgdGFwKCgpID0+IHtcclxuICAgICAgdGhpcy5fYXV0b1NhdmVTdG9yZS5zdGFydCgpO1xyXG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChvYmplY3RGb3JtQWN0aW9ucy5zYXZlVmFsdWVzUGVuZGluZygpKTtcclxuICAgIH0pXHJcbiAgKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG5cclxuICB1cGRhdGVBcHBsaWNhdGlvblZhbHVlcyQgPSBjcmVhdGVFZmZlY3QoKCkgPT4gdGhpcy5fYWN0aW9ucyQucGlwZShcclxuICAgIG9mVHlwZShFQXBwbGljYXRpb25BY3Rpb25zLlNhdmVWYWx1ZXNQZW5kaW5nKSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpKSxcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KG9iamVjdEZvcm1TZWxlY3RvcnMuc2VsZWN0U2VjdGlvblZhbHVlcyksXHJcbiAgICApLFxyXG4gICAgc3dpdGNoTWFwKChbXywgb2JqZWN0SWQsIHNlY3Rpb25WYWx1ZXNdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvblNlcnZpY2UudXBkYXRlQXBwbGljYXRpb25WYWx1ZXMob2JqZWN0SWQsIHNlY3Rpb25WYWx1ZXMpLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2F1dG9TYXZlU3RvcmUuc3VjY2VzcygpO1xyXG4gICAgICAgICAgcmV0dXJuIG9iamVjdEZvcm1BY3Rpb25zLnNhdmVWYWx1ZXNTdWNjZXNzKHtyZXN1bHQsIG9iamVjdElkfSk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2F1dG9TYXZlU3RvcmUuZXJyb3IoKTtcclxuICAgICAgICAgIHJldHVybiBvZihvYmplY3RGb3JtQWN0aW9ucy5zYXZlVmFsdWVzRXJyb3IoKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKVxyXG4gICk7XHJcblxyXG4gIHNhdmVBcHBsaWNhdGlvblBlbmRpbmckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5TYXZlT2JqZWN0UGVuZGluZyksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKE9CSkVDVF9JRF9OQU1FKSlcclxuICAgICksXHJcbiAgICBzd2l0Y2hNYXAoKFtfLCBvYmplY3RJZF0pID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uU2VydmljZS5zYXZlQXBwbGljYXRpb24ob2JqZWN0SWQpLnBpcGUoXHJcbiAgICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3RvYXN0ZXJTZXJ2aWNlLnNob3coe1xyXG4gICAgICAgICAgICB0aXRsZTogJ9Ch0L7RhdGA0LDQvdC10L3QviDRg9GB0L/QtdGI0L3QvicsXHJcbiAgICAgICAgICAgIHR5cGU6IFRvYXN0ZXJUeXBlLlBvc2l0aXZlXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gb2JqZWN0Rm9ybUFjdGlvbnMuc2F2ZU9iamVjdFN1Y2Nlc3MoKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3RvYXN0ZXJTZXJ2aWNlLnNob3coe1xyXG4gICAgICAgICAgICB0aXRsZTogJ9CS0L7Qt9C90LjQutC70Lgg0L7RiNC40LHQutC4INC/0YDQuCDRgdC+0YXRgNCw0L3QtdC90LjQuCwg0L/QvtCy0YLQvtGA0LjRgtC1JyxcclxuICAgICAgICAgICAgdHlwZTogVG9hc3RlclR5cGUuTmVnYXRpdmVcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHJldHVybiBvZihvYmplY3RGb3JtQWN0aW9ucy5zYXZlT2JqZWN0RXJyb3IoKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKVxyXG4gICk7XHJcblxyXG4gIGNvcHlBcHBsaWNhdGlvblBlbmRpbmckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5Db3B5T2JqZWN0UGVuZGluZyksXHJcbiAgICBtYXAoKGFjdGlvbjogeyBzb3VyY2VJZDogc3RyaW5nLCB0YXJnZXRUZW1wbGF0ZVN5c05hbWU6IHN0cmluZyB9KSA9PiBhY3Rpb24pLFxyXG4gICAgd2l0aExhdGVzdEZyb20oXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChvYmplY3RGb3JtU2VsZWN0b3JzLnNlbGVjdEFwaVByZWZpeCksXHJcbiAgICApLFxyXG4gICAgc3dpdGNoTWFwKChbYWN0aW9uLCBhcGlQcmVmaXhdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvblNlcnZpY2UuY29weUFwcGxpY2F0aW9uKGFjdGlvbikucGlwZShcclxuICAgICAgICBtYXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdG9hc3RlclNlcnZpY2Uuc2hvdyh7XHJcbiAgICAgICAgICAgIHRpdGxlOiAn0JrQvtC/0LjRgNC+0LLQvdCw0LjQtSDQv9GA0L7RiNC70L4g0YPRgdC/0LXRiNC90L4nLFxyXG4gICAgICAgICAgICB0eXBlOiBUb2FzdGVyVHlwZS5Qb3NpdGl2ZVxyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgd2luZG93Lm9wZW4oYC8ke2FwaVByZWZpeH1gICsgcmVzdWx0LmlkLCAnX2JsYW5rJyk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG9iamVjdEZvcm1BY3Rpb25zLmNvcHlPYmplY3RTdWNjZXNzKCk7XHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl90b2FzdGVyU2VydmljZS5zaG93KHtcclxuICAgICAgICAgICAgdGl0bGU6ICfQktC+0LfQvdC40LrQu9C4INC+0YjQuNCx0LrQuCDQv9GA0Lgg0LrQvtC/0LjRgNC+0LLQsNC90LjQuCDQt9Cw0Y/QstC60LgsINC/0L7QstGC0L7RgNC40YLQtScsXHJcbiAgICAgICAgICAgIHR5cGU6IFRvYXN0ZXJUeXBlLk5lZ2F0aXZlXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICByZXR1cm4gb2Yob2JqZWN0Rm9ybUFjdGlvbnMuY29weU9iamVjdEVycm9yKCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9KSksIHtkaXNwYXRjaDogZmFsc2V9KTtcclxuXHJcbiAgbG9hZFNlY3Rpb25GaWxlc1BlbmRpbmckID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5Mb2FkU2VjdGlvbkZpbGVzUGVuZGluZyksXHJcbiAgICB3aXRoTGF0ZXN0RnJvbShcclxuICAgICAgdGhpcy5fc3RvcmUuc2VsZWN0KHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKE9CSkVDVF9JRF9OQU1FKSksXHJcbiAgICAgIHRoaXMuX3N0b3JlLnNlbGVjdChzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbShTRUNUSU9OX1NZU19OQU1FX05BTUUpKSxcclxuICAgICksXHJcbiAgICBzd2l0Y2hNYXAoKFtfLCBvYmplY3RJZCwgc2VjdGlvblN5c05hbWVdKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvblNlcnZpY2UuZ2V0U2VjdGlvbkZpbGVzKG9iamVjdElkLCBzZWN0aW9uU3lzTmFtZSkucGlwZShcclxuICAgICAgICBtYXAoKHNlY3Rpb25GaWxlczogRmlsZU1vZGVsW10pID0+IHtcclxuICAgICAgICAgIHJldHVybiBvYmplY3RGb3JtQWN0aW9ucy5sb2FkU2VjdGlvbkZpbGVzU3VjY2Vzcyh7c2VjdGlvbkZpbGVzOiBzZWN0aW9uRmlsZXN9KTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBvZihvYmplY3RGb3JtQWN0aW9ucy5sb2FkU2VjdGlvbkZpbGVzRXJyb3IoKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH0pKVxyXG4gICk7XHJcblxyXG4gIHByaW50RG9jdW1lbnQkID0gY3JlYXRlRWZmZWN0KCgpID0+IHRoaXMuX2FjdGlvbnMkLnBpcGUoXHJcbiAgICBvZlR5cGUoRUFwcGxpY2F0aW9uQWN0aW9ucy5QcmludERvY3VtZW50KSxcclxuICAgIHdpdGhMYXRlc3RGcm9tKFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qob2JqZWN0Rm9ybVNlbGVjdG9ycy5zZWxlY3RBcGlVcmwpLFxyXG4gICAgICB0aGlzLl9zdG9yZS5zZWxlY3Qoc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpKSxcclxuICAgICksXHJcbiAgICB0YXAoKFtfLCBhcGlVcmwsIG9iamVjdElkXSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygn0L/QtdGH0LDRgtGMINC00L7QutGD0LzQtdC90YLQsCAnICsgb2JqZWN0SWQpO1xyXG5cclxuICAgICAgd2luZG93Lm9wZW4oYCR7YXBpVXJsfS8ke29iamVjdElkfS9wcmludGAsICdfYmxhbmsnKTtcclxuICAgIH0pXHJcbiAgKSwge2Rpc3BhdGNoOiBmYWxzZX0pO1xyXG59XHJcbiJdfQ==
@@ -11,12 +11,12 @@ export const selectIsEdited = createSelector(objectFeature, (state) => state.isE
11
11
  export const selectIsCheckRequired = createSelector(objectFeature, (state) => state.isCheckRequired);
12
12
  export const selectMenuModel = createSelector(objectFeature, (state) => state.menuModel);
13
13
  export const selectSectionSettings = createSelector(objectFeature, sharedSelectors.selectRouteNestedParam('sectionSysName'), (state, sectionSysName) => {
14
- return state.settings?.sections.find(s => s.sysName === sectionSysName) || null;
14
+ return state?.settings?.sections.find(s => s.sysName === sectionSysName) || null;
15
15
  });
16
16
  export const selectSectionValues = createSelector(objectFeature, (state) => state.sectionValues);
17
17
  export const selectObjectId = createSelector(sharedSelectors.selectRouteNestedParam(OBJECT_ID_NAME), (applicationId) => applicationId);
18
18
  export const selectSectionFiles = createSelector(objectFeature, (state) => state.sectionFiles);
19
- export const selectTemplateSysName = createSelector(objectFeature, (state) => state.settings?.sysName);
19
+ export const selectTemplateSysName = createSelector(objectFeature, (state) => state?.settings?.sysName);
20
20
  export const selectValueModel = (settings) => createSelector(objectFeature, (state) => getValueModel(settings, state.sectionValues));
21
21
  export const selectDependencyRulesResults = createSelector(objectFeature, state => state.dependencyRuleCheckResults);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vc3RvcmUvb2JqZWN0LWZvcm0uc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsQ0FBa0IsVUFBVSxDQUFDLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FDM0MsYUFBYSxFQUNiLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQ3hDLGFBQWEsRUFDYixDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3pDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUMzQyxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUM1QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsY0FBYyxDQUNyRCxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQ3RELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUMxQyxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUMzQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUNqRCxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUNsRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FDM0MsYUFBYSxFQUNiLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGNBQWMsQ0FDakQsYUFBYSxFQUNiLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUN4RCxDQUFDLEtBQXNCLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ2pELE9BQU8sS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUE7QUFDakYsQ0FBQyxDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQy9DLGFBQWEsRUFDYixDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQ2hELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUMxQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQ3RELENBQUMsYUFBcUIsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUN6QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUM5QyxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUMvQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUNqRCxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FDcEQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBNEIsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUM5RSxhQUFhLEVBQ2IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUN4RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsY0FBYyxDQUN4RCxhQUFhLEVBQ2IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQzFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGZWF0dXJlU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBPYmplY3RGb3JtU3RhdGUgfSBmcm9tICcuLi9zdG9yZSc7XHJcbmltcG9ydCB7IE9CSkVDVF9JRF9OQU1FLCBTVEFURV9OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TW9kZWxCYXNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkLWZvcm0vbW9kZWxzJztcclxuaW1wb3J0IHsgc2hhcmVkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vc2hhcmVkLWZvcm0vc3RvcmUnO1xyXG5pbXBvcnQgeyBnZXRWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vaGVscGVycyc7XHJcblxyXG5jb25zdCBvYmplY3RGZWF0dXJlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPE9iamVjdEZvcm1TdGF0ZT4oU1RBVEVfTkFNRSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0QXBpUHJlZml4ID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuYXBpUHJlZml4XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0QXBpVXJsID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuYXBpVXJsXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0SXNMb2FkaW5nID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuaXNMb2FkaW5nXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0SXNPYmplY3RTYXZlTG9hZGluZyA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIG9iamVjdEZlYXR1cmUsXHJcbiAgKHN0YXRlOiBPYmplY3RGb3JtU3RhdGUpID0+IHN0YXRlLmlzT2JqZWN0U2F2ZUxvYWRpbmdcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RJc0VkaXRlZCA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIG9iamVjdEZlYXR1cmUsXHJcbiAgKHN0YXRlOiBPYmplY3RGb3JtU3RhdGUpID0+IHN0YXRlLmlzRWRpdGVkXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0SXNDaGVja1JlcXVpcmVkID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuaXNDaGVja1JlcXVpcmVkXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0TWVudU1vZGVsID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUubWVudU1vZGVsXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0U2VjdGlvblNldHRpbmdzID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICBzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbSgnc2VjdGlvblN5c05hbWUnKSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSwgc2VjdGlvblN5c05hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgcmV0dXJuIHN0YXRlLnNldHRpbmdzPy5zZWN0aW9ucy5maW5kKHMgPT4gcy5zeXNOYW1lID09PSBzZWN0aW9uU3lzTmFtZSkgfHwgbnVsbFxyXG4gIH1cclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RTZWN0aW9uVmFsdWVzID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuc2VjdGlvblZhbHVlc1xyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdE9iamVjdElkID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgc2hhcmVkU2VsZWN0b3JzLnNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oT0JKRUNUX0lEX05BTUUpLFxyXG4gIChhcHBsaWNhdGlvbklkOiBzdHJpbmcpID0+IGFwcGxpY2F0aW9uSWRcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RTZWN0aW9uRmlsZXMgPSBjcmVhdGVTZWxlY3RvcihcclxuICBvYmplY3RGZWF0dXJlLFxyXG4gIChzdGF0ZTogT2JqZWN0Rm9ybVN0YXRlKSA9PiBzdGF0ZS5zZWN0aW9uRmlsZXNcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RUZW1wbGF0ZVN5c05hbWUgPSBjcmVhdGVTZWxlY3RvcihcclxuICBvYmplY3RGZWF0dXJlLFxyXG4gIChzdGF0ZTogT2JqZWN0Rm9ybVN0YXRlKSA9PiBzdGF0ZS5zZXR0aW5ncz8uc3lzTmFtZVxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdFZhbHVlTW9kZWwgPSAoc2V0dGluZ3M6IENvbXBvbmVudE1vZGVsQmFzZSkgPT4gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGUpID0+IGdldFZhbHVlTW9kZWwoc2V0dGluZ3MsIHN0YXRlLnNlY3Rpb25WYWx1ZXMpXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0RGVwZW5kZW5jeVJ1bGVzUmVzdWx0cyA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIG9iamVjdEZlYXR1cmUsXHJcbiAgc3RhdGUgPT4gc3RhdGUuZGVwZW5kZW5jeVJ1bGVDaGVja1Jlc3VsdHNcclxuKVxyXG4iXX0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWZvcm0uc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvb2JqZWN0LWZvcm0vc3RvcmUvb2JqZWN0LWZvcm0uc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUzQyxNQUFNLGFBQWEsR0FBRyxxQkFBcUIsQ0FBa0IsVUFBVSxDQUFDLENBQUM7QUFFekUsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FDM0MsYUFBYSxFQUNiLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxjQUFjLENBQ3hDLGFBQWEsRUFDYixDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQ3pDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUMzQyxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUM1QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsY0FBYyxDQUNyRCxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQ3RELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUMxQyxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUMzQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUNqRCxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUNsRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FDM0MsYUFBYSxFQUNiLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FDNUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGNBQWMsQ0FDakQsYUFBYSxFQUNiLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUN4RCxDQUFDLEtBQXNCLEVBQUUsY0FBc0IsRUFBRSxFQUFFO0lBQ2pELE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUE7QUFDbEYsQ0FBQyxDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLENBQy9DLGFBQWEsRUFDYixDQUFDLEtBQXNCLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQ2hELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsY0FBYyxDQUMxQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLEVBQ3RELENBQUMsYUFBcUIsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUN6QyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUM5QyxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUMvQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUNqRCxhQUFhLEVBQ2IsQ0FBQyxLQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FDckQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsUUFBNEIsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUM5RSxhQUFhLEVBQ2IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUN4RCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQUcsY0FBYyxDQUN4RCxhQUFhLEVBQ2IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQzFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGZWF0dXJlU2VsZWN0b3IsIGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBPYmplY3RGb3JtU3RhdGUgfSBmcm9tICcuLi9zdG9yZSc7XHJcbmltcG9ydCB7IE9CSkVDVF9JRF9OQU1FLCBTVEFURV9OQU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TW9kZWxCYXNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkLWZvcm0vbW9kZWxzJztcclxuaW1wb3J0IHsgc2hhcmVkU2VsZWN0b3JzIH0gZnJvbSAnLi4vLi4vc2hhcmVkLWZvcm0vc3RvcmUnO1xyXG5pbXBvcnQgeyBnZXRWYWx1ZU1vZGVsIH0gZnJvbSAnLi4vaGVscGVycyc7XHJcblxyXG5jb25zdCBvYmplY3RGZWF0dXJlID0gY3JlYXRlRmVhdHVyZVNlbGVjdG9yPE9iamVjdEZvcm1TdGF0ZT4oU1RBVEVfTkFNRSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0QXBpUHJlZml4ID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuYXBpUHJlZml4XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0QXBpVXJsID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuYXBpVXJsXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0SXNMb2FkaW5nID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuaXNMb2FkaW5nXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0SXNPYmplY3RTYXZlTG9hZGluZyA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIG9iamVjdEZlYXR1cmUsXHJcbiAgKHN0YXRlOiBPYmplY3RGb3JtU3RhdGUpID0+IHN0YXRlLmlzT2JqZWN0U2F2ZUxvYWRpbmdcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RJc0VkaXRlZCA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIG9iamVjdEZlYXR1cmUsXHJcbiAgKHN0YXRlOiBPYmplY3RGb3JtU3RhdGUpID0+IHN0YXRlLmlzRWRpdGVkXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0SXNDaGVja1JlcXVpcmVkID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuaXNDaGVja1JlcXVpcmVkXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0TWVudU1vZGVsID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUubWVudU1vZGVsXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0U2VjdGlvblNldHRpbmdzID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICBzaGFyZWRTZWxlY3RvcnMuc2VsZWN0Um91dGVOZXN0ZWRQYXJhbSgnc2VjdGlvblN5c05hbWUnKSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSwgc2VjdGlvblN5c05hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgcmV0dXJuIHN0YXRlPy5zZXR0aW5ncz8uc2VjdGlvbnMuZmluZChzID0+IHMuc3lzTmFtZSA9PT0gc2VjdGlvblN5c05hbWUpIHx8IG51bGxcclxuICB9XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0U2VjdGlvblZhbHVlcyA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIG9iamVjdEZlYXR1cmUsXHJcbiAgKHN0YXRlOiBPYmplY3RGb3JtU3RhdGUpID0+IHN0YXRlLnNlY3Rpb25WYWx1ZXNcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RPYmplY3RJZCA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIHNoYXJlZFNlbGVjdG9ycy5zZWxlY3RSb3V0ZU5lc3RlZFBhcmFtKE9CSkVDVF9JRF9OQU1FKSxcclxuICAoYXBwbGljYXRpb25JZDogc3RyaW5nKSA9PiBhcHBsaWNhdGlvbklkXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0U2VjdGlvbkZpbGVzID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGUuc2VjdGlvbkZpbGVzXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0VGVtcGxhdGVTeXNOYW1lID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICAoc3RhdGU6IE9iamVjdEZvcm1TdGF0ZSkgPT4gc3RhdGU/LnNldHRpbmdzPy5zeXNOYW1lXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0VmFsdWVNb2RlbCA9IChzZXR0aW5nczogQ29tcG9uZW50TW9kZWxCYXNlKSA9PiBjcmVhdGVTZWxlY3RvcihcclxuICBvYmplY3RGZWF0dXJlLFxyXG4gIChzdGF0ZSkgPT4gZ2V0VmFsdWVNb2RlbChzZXR0aW5ncywgc3RhdGUuc2VjdGlvblZhbHVlcylcclxuKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3REZXBlbmRlbmN5UnVsZXNSZXN1bHRzID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgb2JqZWN0RmVhdHVyZSxcclxuICBzdGF0ZSA9PiBzdGF0ZS5kZXBlbmRlbmN5UnVsZUNoZWNrUmVzdWx0c1xyXG4pXHJcbiJdfQ==
@@ -14,6 +14,7 @@ export const selectRouteNestedParams = createSelector(selectRouter, (router) =>
14
14
  return params;
15
15
  });
16
16
  export const selectRouteNestedParam = (param) => createSelector(selectRouteNestedParams, (params) => {
17
+ console.log(params);
17
18
  return params && params[param];
18
19
  });
19
20
  export const selectTemplateSysName = createSelector(selectRouteNestedParam(TEMPLATE_SYS_NAME_NAME), (rparam) => {
@@ -25,4 +26,4 @@ export const selectIdFromQuery = createSelector(selectQueryParam('id'), (rparam)
25
26
  export const selectSectionSysName = createSelector(selectRouteParam(SECTION_SYS_NAME_NAME), (rparam) => {
26
27
  return rparam || null;
27
28
  });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWZvcm0uc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvc2hhcmVkLWZvcm0vc3RvcmUvc2hhcmVkLWZvcm0uc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQzdFLElBQUksWUFBWSxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO0lBRXZDLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUV4QixPQUFPLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUN2QyxNQUFNLEdBQUc7WUFDUCxHQUFHLE1BQU07WUFDVCxHQUFHLFlBQVksQ0FBQyxNQUFNO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUM3RixDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ1QsT0FBTyxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQyxDQUFDO0FBRUwsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsY0FBYyxDQUNqRCxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQyxFQUM5QyxDQUFDLE1BQTBCLEVBQUUsRUFBRTtJQUM3QixPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDeEIsQ0FBQyxDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQzdDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUN0QixDQUFDLE1BQW1DLEVBQUUsRUFBRTtJQUN0QyxPQUFPLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDeEIsQ0FBQyxDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxjQUFjLENBQ2hELGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLENBQUMsTUFBMEIsRUFBRSxFQUFFO0lBQzdCLE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQztBQUN4QixDQUFDLENBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBzZWxlY3RRdWVyeVBhcmFtLCBzZWxlY3RSb3V0ZVBhcmFtLCBzZWxlY3RSb3V0ZXIgfSBmcm9tICdAbXlydGV4LW9yZy91aS1jb21wb3NpdGUnO1xyXG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBTRUNUSU9OX1NZU19OQU1FX05BTUUsIFRFTVBMQVRFX1NZU19OQU1FX05BTUUgfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS9jb25zdGFudHMnO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdFJvdXRlTmVzdGVkUGFyYW1zID0gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0Um91dGVyLCAocm91dGVyKSA9PiB7XHJcbiAgbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlcj8uc3RhdGU/LnJvb3Q7XHJcblxyXG4gIGxldCBwYXJhbXM6IFBhcmFtcyA9IHt9O1xyXG5cclxuICB3aGlsZSAoY3VycmVudFJvdXRlPy5maXJzdENoaWxkKSB7XHJcbiAgICBjdXJyZW50Um91dGUgPSBjdXJyZW50Um91dGUuZmlyc3RDaGlsZDtcclxuICAgIHBhcmFtcyA9IHtcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgICAuLi5jdXJyZW50Um91dGUucGFyYW1zLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHJldHVybiBwYXJhbXM7XHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdFJvdXRlTmVzdGVkUGFyYW0gPSAocGFyYW06IHN0cmluZykgPT4gY3JlYXRlU2VsZWN0b3Ioc2VsZWN0Um91dGVOZXN0ZWRQYXJhbXMsXHJcbiAgKHBhcmFtcykgPT4ge1xyXG4gICAgcmV0dXJuIHBhcmFtcyAmJiBwYXJhbXNbcGFyYW1dO1xyXG4gIH0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdFRlbXBsYXRlU3lzTmFtZSA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIHNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oVEVNUExBVEVfU1lTX05BTUVfTkFNRSksXHJcbiAgKHJwYXJhbTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICByZXR1cm4gcnBhcmFtIHx8IG51bGw7XHJcbiAgfVxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdElkRnJvbVF1ZXJ5ID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgc2VsZWN0UXVlcnlQYXJhbSgnaWQnKSxcclxuICAocnBhcmFtOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIHJldHVybiBycGFyYW0gfHwgbnVsbDtcclxuICB9XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0U2VjdGlvblN5c05hbWUgPSBjcmVhdGVTZWxlY3RvcihcclxuICBzZWxlY3RSb3V0ZVBhcmFtKFNFQ1RJT05fU1lTX05BTUVfTkFNRSksXHJcbiAgKHJwYXJhbTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICByZXR1cm4gcnBhcmFtIHx8IG51bGw7XHJcbiAgfVxyXG4pO1xyXG5cclxuXHJcbiJdfQ==
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLWZvcm0uc2VsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJ0ZXgtZm9ybS9zcmMvbGliL21vZHVsZXMvc2hhcmVkLWZvcm0vc3RvcmUvc2hhcmVkLWZvcm0uc2VsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFNUYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQzdFLElBQUksWUFBWSxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDO0lBRXZDLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztJQUV4QixPQUFPLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztRQUN2QyxNQUFNLEdBQUc7WUFDUCxHQUFHLE1BQU07WUFDVCxHQUFHLFlBQVksQ0FBQyxNQUFNO1NBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUFDLHVCQUF1QixFQUM3RixDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQixPQUFPLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDakMsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQ2pELHNCQUFzQixDQUFDLHNCQUFzQixDQUFDLEVBQzlDLENBQUMsTUFBMEIsRUFBRSxFQUFFO0lBQzdCLE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQztBQUN4QixDQUFDLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FDN0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQ3RCLENBQUMsTUFBbUMsRUFBRSxFQUFFO0lBQ3RDLE9BQU8sTUFBTSxJQUFJLElBQUksQ0FBQztBQUN4QixDQUFDLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGNBQWMsQ0FDaEQsZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsRUFDdkMsQ0FBQyxNQUEwQixFQUFFLEVBQUU7SUFDN0IsT0FBTyxNQUFNLElBQUksSUFBSSxDQUFDO0FBQ3hCLENBQUMsQ0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IHNlbGVjdFF1ZXJ5UGFyYW0sIHNlbGVjdFJvdXRlUGFyYW0sIHNlbGVjdFJvdXRlciB9IGZyb20gJ0BteXJ0ZXgtb3JnL3VpLWNvbXBvc2l0ZSc7XHJcbmltcG9ydCB7IFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNFQ1RJT05fU1lTX05BTUVfTkFNRSwgVEVNUExBVEVfU1lTX05BTUVfTkFNRSB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtL2NvbnN0YW50cyc7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0Um91dGVOZXN0ZWRQYXJhbXMgPSBjcmVhdGVTZWxlY3RvcihzZWxlY3RSb3V0ZXIsIChyb3V0ZXIpID0+IHtcclxuICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVyPy5zdGF0ZT8ucm9vdDtcclxuXHJcbiAgbGV0IHBhcmFtczogUGFyYW1zID0ge307XHJcblxyXG4gIHdoaWxlIChjdXJyZW50Um91dGU/LmZpcnN0Q2hpbGQpIHtcclxuICAgIGN1cnJlbnRSb3V0ZSA9IGN1cnJlbnRSb3V0ZS5maXJzdENoaWxkO1xyXG4gICAgcGFyYW1zID0ge1xyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICAgIC4uLmN1cnJlbnRSb3V0ZS5wYXJhbXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBhcmFtcztcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0Um91dGVOZXN0ZWRQYXJhbSA9IChwYXJhbTogc3RyaW5nKSA9PiBjcmVhdGVTZWxlY3RvcihzZWxlY3RSb3V0ZU5lc3RlZFBhcmFtcyxcclxuICAocGFyYW1zKSA9PiB7XHJcbiAgICBjb25zb2xlLmxvZyhwYXJhbXMpO1xyXG4gICAgcmV0dXJuIHBhcmFtcyAmJiBwYXJhbXNbcGFyYW1dO1xyXG4gIH0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdFRlbXBsYXRlU3lzTmFtZSA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gIHNlbGVjdFJvdXRlTmVzdGVkUGFyYW0oVEVNUExBVEVfU1lTX05BTUVfTkFNRSksXHJcbiAgKHJwYXJhbTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICByZXR1cm4gcnBhcmFtIHx8IG51bGw7XHJcbiAgfVxyXG4pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHNlbGVjdElkRnJvbVF1ZXJ5ID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgc2VsZWN0UXVlcnlQYXJhbSgnaWQnKSxcclxuICAocnBhcmFtOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQpID0+IHtcclxuICAgIHJldHVybiBycGFyYW0gfHwgbnVsbDtcclxuICB9XHJcbik7XHJcblxyXG5leHBvcnQgY29uc3Qgc2VsZWN0U2VjdGlvblN5c05hbWUgPSBjcmVhdGVTZWxlY3RvcihcclxuICBzZWxlY3RSb3V0ZVBhcmFtKFNFQ1RJT05fU1lTX05BTUVfTkFNRSksXHJcbiAgKHJwYXJhbTogc3RyaW5nIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICByZXR1cm4gcnBhcmFtIHx8IG51bGw7XHJcbiAgfVxyXG4pO1xyXG5cclxuXHJcbiJdfQ==