gamma-app-controller 1.2.14 → 1.2.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.mjs +21 -3
- package/esm2020/lib/application-controller/application-dataset-component/create-dataset-sql/create-dataset-sql.component.mjs +2 -2
- package/esm2020/lib/application-controller/application-filter/application-filter.component.mjs +21 -3
- package/esm2020/lib/application-controller/application-view-components/application-views/application-views.component.mjs +21 -3
- package/esm2020/lib/application-controller/page-controller/page-controller/page-controller.component.mjs +21 -3
- package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +3 -3
- package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-with-dataset.component.mjs +3 -3
- package/fesm2015/gamma-app-controller.mjs +85 -13
- package/fesm2015/gamma-app-controller.mjs.map +1 -1
- package/fesm2020/gamma-app-controller.mjs +85 -13
- package/fesm2020/gamma-app-controller.mjs.map +1 -1
- package/lib/application-controller/application-dataset-component/application-dataset/application-dataset.component.d.ts +3 -0
- package/lib/application-controller/application-filter/application-filter.component.d.ts +3 -0
- package/lib/application-controller/application-view-components/application-views/application-views.component.d.ts +3 -0
- package/lib/application-controller/page-controller/page-controller/page-controller.component.d.ts +3 -0
- package/package.json +1 -1
|
@@ -43,6 +43,7 @@ export class PageControlerComponent {
|
|
|
43
43
|
{ "compName": "CreateMetricsComponent", "item": "Create Metrics" },
|
|
44
44
|
{ "compName": "ExceptionOperationComponent", "item": "Exception Opration" },
|
|
45
45
|
];
|
|
46
|
+
this.selected_page = [];
|
|
46
47
|
}
|
|
47
48
|
ngOnInit() {
|
|
48
49
|
this.getAppPageConfigs();
|
|
@@ -167,14 +168,31 @@ export class PageControlerComponent {
|
|
|
167
168
|
this.scrollContainer.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'end' });
|
|
168
169
|
}, 0);
|
|
169
170
|
}
|
|
171
|
+
isSelectionChange(event) {
|
|
172
|
+
this.selected_page = event.selectedRowsData;
|
|
173
|
+
}
|
|
174
|
+
getDownloadPage() {
|
|
175
|
+
if (this.selected_page.length == 0) {
|
|
176
|
+
this.toastr.error('No data available to export.', 'Export Error');
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const jsonStr = JSON.stringify(this.selected_page, null, 2);
|
|
180
|
+
const blob = new Blob([jsonStr], { type: 'application/json' });
|
|
181
|
+
const url = window.URL.createObjectURL(blob);
|
|
182
|
+
const anchor = document.createElement('a');
|
|
183
|
+
anchor.href = url;
|
|
184
|
+
anchor.download = `exported_pages.json`;
|
|
185
|
+
anchor.click();
|
|
186
|
+
window.URL.revokeObjectURL(url);
|
|
187
|
+
}
|
|
170
188
|
}
|
|
171
189
|
PageControlerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PageControlerComponent, deps: [{ token: i1.Router }, { token: i2.CommonService }, { token: i3.ApplicationContentService }, { token: i4.ToastrService }, { token: i5.DynamicRouteService }], target: i0.ɵɵFactoryTarget.Component });
|
|
172
|
-
PageControlerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PageControlerComponent, selector: "app-dashbord-controller", viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"' Application Pages'\"></lib-common-header>\n\n\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Pages\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewTamplete()\">\n Create New Page\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"templateDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"pageName\"></dxi-column>\n <!-- <dxi-column dataField=\"pageTitle\"></dxi-column> -->\n <!-- <dxi-column dataField=\"pageTemplate\"></dxi-column> -->\n <dxi-column dataField=\"pageId\"></dxi-column>\n <dxi-column dataField=\"pageUrl\"></dxi-column>\n <!-- <dxi-column dataField=\"createdBy\"></dxi-column> -->\n <!-- <dxi-column dataField=\"creationDate\"></dxi-column> -->\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"Configured\" cellTemplate=\"cellTemplate2\" fixed=\"true\" fixedPosition=\"left\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" fixed=\"true\" fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editTemplate(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"viewsPage(data.data)\">\n View Page\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteTamplete(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"configuredTemplate(data.data)\">\n Configure\n </button>\n\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n <div #scrollContainer>\n <div class=\"p-2\" *ngIf=\"isNewTampleteCreate\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Create Page\n </h6>\n\n <!-- Flex container for form fields -->\n <!-- <div class=\"flex flex-wrap w-full\">\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" searchEnabled=\"true\"></dx-select-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div> -->\n <div class=\"grid grid-cols-2 gap-4 w-full\">\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div>\n\n <!-- Submit button -->\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit Template</button>\n </div>\n </div>\n </div>\n </div>\n\n\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i8.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i9.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "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", "onExported", "onExporting", "onFileSaving", "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", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "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: i8.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: i8.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i8.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i10.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i11.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i13.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i14.CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
|
|
190
|
+
PageControlerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: PageControlerComponent, selector: "app-dashbord-controller", viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], ngImport: i0, template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"' Application Pages'\"></lib-common-header>\n\n\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Pages\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewTamplete()\">\n Create New Page\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"getDownloadPage()\"\n *ngIf=\"selected_page.length !== 0\">\n Export Pages\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"templateDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" (onSelectionChanged)=\"isSelectionChange($event)\">\n <dxo-selection [selectAllMode]=\"'allMode'\" [showCheckBoxesMode]=\"'always'\" mode=\"multiple\">\n </dxo-selection>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"pageName\"></dxi-column>\n <!-- <dxi-column dataField=\"pageTitle\"></dxi-column> -->\n <!-- <dxi-column dataField=\"pageTemplate\"></dxi-column> -->\n <dxi-column dataField=\"pageId\"></dxi-column>\n <dxi-column dataField=\"pageUrl\"></dxi-column>\n <!-- <dxi-column dataField=\"createdBy\"></dxi-column> -->\n <!-- <dxi-column dataField=\"creationDate\"></dxi-column> -->\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"Configured\" cellTemplate=\"cellTemplate2\" fixed=\"true\" fixedPosition=\"left\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" fixed=\"true\" fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editTemplate(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"viewsPage(data.data)\">\n View Page\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteTamplete(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"configuredTemplate(data.data)\">\n Configure\n </button>\n\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n <div #scrollContainer>\n <div class=\"p-2\" *ngIf=\"isNewTampleteCreate\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Create Page\n </h6>\n\n <!-- Flex container for form fields -->\n <!-- <div class=\"flex flex-wrap w-full\">\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" searchEnabled=\"true\"></dx-select-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div> -->\n <div class=\"grid grid-cols-2 gap-4 w-full\">\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div>\n\n <!-- Submit button -->\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit Template</button>\n </div>\n </div>\n </div>\n </div>\n\n\n\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "component", type: i8.DxoExportComponent, selector: "dxo-export", inputs: ["backgroundColor", "enabled", "fileName", "formats", "margin", "printingEnabled", "proxyUrl", "svgToCanvas", "allowExportSelectedData", "customizeExcelCell", "excelFilterEnabled", "excelWrapTextEnabled", "ignoreExcelErrors", "texts"] }, { kind: "component", type: i9.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "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", "onExported", "onExporting", "onFileSaving", "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", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "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: i8.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: i8.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i8.DxoSearchPanelComponent, selector: "dxo-search-panel", inputs: ["highlightCaseSensitive", "highlightSearchText", "placeholder", "searchVisibleColumnsOnly", "text", "visible", "width"], outputs: ["textChange"] }, { kind: "component", type: i8.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i10.DxSelectBoxComponent, selector: "dx-select-box", inputs: ["acceptCustomValue", "accessKey", "activeStateEnabled", "buttons", "dataSource", "deferRendering", "disabled", "displayExpr", "displayValue", "dropDownButtonTemplate", "dropDownOptions", "elementAttr", "fieldTemplate", "focusStateEnabled", "grouped", "groupTemplate", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "items", "itemTemplate", "label", "labelMode", "maxLength", "minSearchLength", "name", "noDataText", "opened", "openOnFieldClick", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "searchExpr", "searchMode", "searchTimeout", "selectedItem", "showClearButton", "showDataBeforeSearch", "showDropDownButton", "showSelectionControls", "spellcheck", "stylingMode", "tabIndex", "text", "useItemTextAsTitle", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "valueExpr", "visible", "width", "wrapItemText"], outputs: ["onChange", "onClosed", "onContentReady", "onCopy", "onCustomItemCreating", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onItemClick", "onKeyDown", "onKeyUp", "onOpened", "onOptionChanged", "onPaste", "onSelectionChanged", "onValueChanged", "acceptCustomValueChange", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "dataSourceChange", "deferRenderingChange", "disabledChange", "displayExprChange", "displayValueChange", "dropDownButtonTemplateChange", "dropDownOptionsChange", "elementAttrChange", "fieldTemplateChange", "focusStateEnabledChange", "groupedChange", "groupTemplateChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "itemsChange", "itemTemplateChange", "labelChange", "labelModeChange", "maxLengthChange", "minSearchLengthChange", "nameChange", "noDataTextChange", "openedChange", "openOnFieldClickChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "searchEnabledChange", "searchExprChange", "searchModeChange", "searchTimeoutChange", "selectedItemChange", "showClearButtonChange", "showDataBeforeSearchChange", "showDropDownButtonChange", "showSelectionControlsChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useItemTextAsTitleChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "valueExprChange", "visibleChange", "widthChange", "wrapItemTextChange", "onBlur"] }, { kind: "component", type: i11.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "directive", type: i12.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i12.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i13.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i14.CommonHeaderComponent, selector: "lib-common-header", inputs: ["pageTitle"] }] });
|
|
173
191
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: PageControlerComponent, decorators: [{
|
|
174
192
|
type: Component,
|
|
175
|
-
args: [{ selector: 'app-dashbord-controller', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"' Application Pages'\"></lib-common-header>\n\n\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Pages\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewTamplete()\">\n Create New Page\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"templateDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\">\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"pageName\"></dxi-column>\n <!-- <dxi-column dataField=\"pageTitle\"></dxi-column> -->\n <!-- <dxi-column dataField=\"pageTemplate\"></dxi-column> -->\n <dxi-column dataField=\"pageId\"></dxi-column>\n <dxi-column dataField=\"pageUrl\"></dxi-column>\n <!-- <dxi-column dataField=\"createdBy\"></dxi-column> -->\n <!-- <dxi-column dataField=\"creationDate\"></dxi-column> -->\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"Configured\" cellTemplate=\"cellTemplate2\" fixed=\"true\" fixedPosition=\"left\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" fixed=\"true\" fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editTemplate(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"viewsPage(data.data)\">\n View Page\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteTamplete(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"configuredTemplate(data.data)\">\n Configure\n </button>\n\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n <div #scrollContainer>\n <div class=\"p-2\" *ngIf=\"isNewTampleteCreate\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Create Page\n </h6>\n\n <!-- Flex container for form fields -->\n <!-- <div class=\"flex flex-wrap w-full\">\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" searchEnabled=\"true\"></dx-select-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div> -->\n <div class=\"grid grid-cols-2 gap-4 w-full\">\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div>\n\n <!-- Submit button -->\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit Template</button>\n </div>\n </div>\n </div>\n </div>\n\n\n\n</div>" }]
|
|
193
|
+
args: [{ selector: 'app-dashbord-controller', template: "<div class=\"flex flex-col flex-auto min-w-0\">\n\n <lib-common-header [pageTitle]=\"' Application Pages'\"></lib-common-header>\n\n\n\n <div class=\"p-4 w-full\">\n <div class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6 class=\"mb-2 text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Manage Pages\n <div class=\"ml-auto\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"createNewTamplete()\">\n Create New Page\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"getDownloadPage()\"\n *ngIf=\"selected_page.length !== 0\">\n Export Pages\n </button>\n </div>\n </h6>\n <app-loader *ngIf=\"isLoader\"></app-loader>\n <dx-data-grid [columnAutoWidth]=\"true\" [dataSource]=\"templateDataSource\" [hoverStateEnabled]=\"true\"\n *ngIf=\"!isLoader\" [selectedRowKeys]=\"[]\" [showBorders]=\"true\" [showColumnLines]=\"true\"\n [showRowLines]=\"true\" (onSelectionChanged)=\"isSelectionChange($event)\">\n <dxo-selection [selectAllMode]=\"'allMode'\" [showCheckBoxesMode]=\"'always'\" mode=\"multiple\">\n </dxo-selection>\n <dxo-paging [pageSize]=\"10\"></dxo-paging>\n <dxo-export [enabled]=\"true\"></dxo-export>\n <dxo-search-panel [highlightCaseSensitive]=\"true\" [visible]=\"true\">\n </dxo-search-panel>\n\n <dxi-column dataField=\"pageName\"></dxi-column>\n <!-- <dxi-column dataField=\"pageTitle\"></dxi-column> -->\n <!-- <dxi-column dataField=\"pageTemplate\"></dxi-column> -->\n <dxi-column dataField=\"pageId\"></dxi-column>\n <dxi-column dataField=\"pageUrl\"></dxi-column>\n <!-- <dxi-column dataField=\"createdBy\"></dxi-column> -->\n <!-- <dxi-column dataField=\"creationDate\"></dxi-column> -->\n <dxi-column dataField=\"creationDate\" sortOrder=\"desc\"></dxi-column>\n <dxi-column dataField=\"Configured\" cellTemplate=\"cellTemplate2\" fixed=\"true\" fixedPosition=\"left\"></dxi-column>\n <dxi-column dataField=\"action\" cellTemplate=\"cellTemplate\" fixed=\"true\" fixedPosition=\"right\"></dxi-column>\n <div *dxTemplate=\"let data of 'cellTemplate'\">\n <button class=\"{{commonService.btn_primary_md}}\" (click)=\"editTemplate(data.data)\">\n Edit\n </button>\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"viewsPage(data.data)\">\n View Page\n </button>\n <button class=\"{{commonService.btn_danger_md}}\" (click)=\"deleteTamplete(data.data)\">\n Delete\n </button>\n </div>\n <div *dxTemplate=\"let data of 'cellTemplate2'\">\n\n <button class=\"{{commonService.btn_success_md}}\" (click)=\"configuredTemplate(data.data)\">\n Configure\n </button>\n\n </div>\n\n\n\n </dx-data-grid>\n </div>\n </div>\n\n <div #scrollContainer>\n <div class=\"p-2\" *ngIf=\"isNewTampleteCreate\">\n <div\n class=\"m-3 p-4 bg-white border border-gray-200 rounded-lg shadow-md dark:bg-gray-800 dark:border-gray-700\">\n <h6\n class=\"mb-2 font-bold text-lg tracking-tight text-gray-900 dark:text-white border-b pb-3 flex items-center\">\n <i class=\"fa fa-table mr-2\"></i> Create Page\n </h6>\n\n <!-- Flex container for form fields -->\n <!-- <div class=\"flex flex-wrap w-full\">\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" searchEnabled=\"true\"></dx-select-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"w-1/2 px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div> -->\n <div class=\"grid grid-cols-2 gap-4 w-full\">\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Name</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageName\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Title</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageTitle\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page URL</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Template</div>\n <dx-select-box [items]=\"componentTemplates\" displayExpr=\"item\" valueExpr=\"compName\"\n [(ngModel)]=\"dashboardConfig.pageTemplate\" [searchEnabled]=\"true\"></dx-select-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Documentation Url</div>\n <dx-text-box [(ngModel)]=\"dashboardConfig.pageDocumentationUrl\"></dx-text-box>\n </div>\n <div class=\"px-2 mb-2\">\n <div class=\"text-md mb-1\">Page Filter</div>\n <dx-select-box [items]=\"filterDataSource\" displayExpr=\"filterName\" valueExpr=\"filterId\"\n [(ngModel)]=\"dashboardConfig.filterId\"></dx-select-box>\n </div>\n </div>\n\n <!-- Submit button -->\n <div class=\"flex justify-end mx-1 flex-grow\">\n <button class=\"{{commonService.btn_success_md}} cursor-pointer mt-2\"\n (click)=\"getSaveChartConfig()\">Submit Template</button>\n </div>\n </div>\n </div>\n </div>\n\n\n\n</div>" }]
|
|
176
194
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.CommonService }, { type: i3.ApplicationContentService }, { type: i4.ToastrService }, { type: i5.DynamicRouteService }]; }, propDecorators: { scrollContainer: [{
|
|
177
195
|
type: ViewChild,
|
|
178
196
|
args: ['scrollContainer']
|
|
179
197
|
}] } });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVcvQyxNQUFNLE9BQU8sc0JBQXNCO0lBNkJqQyxZQUNVLE1BQWMsRUFBUyxhQUE0QixFQUFVLE9BQWtDLEVBQy9GLE1BQXFCLEVBQVUsbUJBQXdDO1FBRHZFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQy9GLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBOUJqRixvQkFBZSxHQUFHO1lBQ2hCLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLFlBQVksRUFBRSxFQUFFO1lBQ2hCLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUE7UUFD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QUUsSUFBSSxDQUFDLE1BQU07Z0JBQ3JCLGFBQWEsRUFBRSxNQUFNO2FBRXRCO1NBQ0YsQ0FBQztRQUNGLElBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxvQ0FBb0MsRUFBQztZQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDhDQUE4QyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDcEY7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMseUNBQXlDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMvRTtJQUNILENBQUM7SUFHRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMseUNBQXlDLENBQUMsQ0FBQTtJQUN0RSxDQUFDO0lBRUQsY0FBYztRQUNaLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFGLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7O21IQTNLVSxzQkFBc0I7dUdBQXRCLHNCQUFzQixtTENkbkMsMitPQTBJTTsyRkQ1SE8sc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHlCQUF5QjsrTkErQkcsZUFBZTtzQkFBcEQsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVG9hc3RyU2VydmljZSB9IGZyb20gJ25neC10b2FzdHInO1xuaW1wb3J0IHsgY29uZmlybSB9IGZyb20gJ2RldmV4dHJlbWUvdWkvZGlhbG9nJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcHBsaWNhdGlvbi1jb250ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRHluYW1pY1JvdXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3BhZ2UtdGVtcGxhdGVzL2R5bmFtaWMtcm91dGUtc2VydmljZSc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtZGFzaGJvcmQtY29udHJvbGxlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQYWdlQ29udHJvbGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGFzaGJvYXJkQ29uZmlnID0ge1xuICAgIHBhZ2VOYW1lOiBcIlwiLFxuICAgIHBhZ2VUaXRsZTogXCJcIixcbiAgICBwYWdlVXJsOiBcIlwiLFxuICAgIHBhZ2VUZW1wbGF0ZTogXCJcIixcbiAgICBwYWdlRG9jdW1lbnRhdGlvblVybDogXCJcIixcbiAgICB3aWRnZXRzOiBbXSxcbiAgICBmaWx0ZXJJZDogXCJcIlxuICB9XG4gIGlzTmV3VGFtcGxldGVDcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICB0ZW1wbGF0ZURhdGFTb3VyY2U6IGFueSA9IFtdO1xuXG4gIGZpbHRlckRhdGFTb3VyY2U6IGFueTtcblxuICBjb21wb25lbnRUZW1wbGF0ZXMgPSBbXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiS3BpV2l0aERhdGFTZXRUZXN0Q29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkRlZmF1bHQgS1BJIExheW91dFwiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiS3BpV2l0aE11bHRpbGF5b3V0U2V0VGVzdENvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJNdWx0aXBsZSBMYXlvdXQgS1BJXCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJMYW5kaW5nQ29tcG9uZW50Q29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkRlZmF1bHQgUGFnZVwiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiQ2RyQ29uZmlnQ29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkNEUiBDb25maWdcIiB9LFxuICAgIHsgXCJjb21wTmFtZVwiOiBcIkNyZWF0ZUtwaVRyZWVDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiQ3JlYXRlIEtQSSBDb25maWdcIiB9LFxuICAgIHsgXCJjb21wTmFtZVwiOiBcIkNyZWF0ZU1ldHJpY3NDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiQ3JlYXRlIE1ldHJpY3NcIiB9LFxuICAgIHsgXCJjb21wTmFtZVwiOiBcIkV4Y2VwdGlvbk9wZXJhdGlvbkNvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJFeGNlcHRpb24gT3ByYXRpb25cIiB9LFxuICBdXG5cbiAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJykgcHJpdmF0ZSBzY3JvbGxDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHVibGljIGNvbW1vblNlcnZpY2U6IENvbW1vblNlcnZpY2UsIHByaXZhdGUgc2VydmljZTogQXBwbGljYXRpb25Db250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSwgcHJpdmF0ZSBkeW5hbWljUm91dGVTZXJ2aWNlOiBEeW5hbWljUm91dGVTZXJ2aWNlXG4gICkge1xuXG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgdGhpcy5nZXRGaWx0ZXJEYXRhU2V0KCk7XG4gIH1cbiAgZ2V0RmlsdGVyRGF0YVNldCgpIHtcbiAgICB0aGlzLnNlcnZpY2UuZ2V0QXBwRmlsdGVyQ29uZmlncygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuZmlsdGVyRGF0YVNvdXJjZSA9IGRhdGE7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdQYWdlIENyZWF0aW9uJylcblxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgZ2V0QXBwUGFnZUNvbmZpZ3MoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcFBhZ2VDb25maWdzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50ZW1wbGF0ZURhdGFTb3VyY2UgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBDcmVhdGlvbicpXG5cbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY3JlYXRlTmV3VGFtcGxldGUoKSB7XG4gICAgdGhpcy5pc05ld1RhbXBsZXRlQ3JlYXRlID0gdHJ1ZTtcbiAgICB0aGlzLmRhc2hib2FyZENvbmZpZyA9IHtcbiAgICAgIHBhZ2VOYW1lOiBcIlwiLFxuICAgICAgcGFnZVRpdGxlOiBcIlwiLFxuICAgICAgcGFnZVVybDogXCJcIixcbiAgICAgIHBhZ2VUZW1wbGF0ZTogXCJcIixcbiAgICAgIHBhZ2VEb2N1bWVudGF0aW9uVXJsOiBcIlwiLFxuICAgICAgd2lkZ2V0czogW10sXG4gICAgICBmaWx0ZXJJZDogXCJcIlxuICAgIH1cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgdmlld3NQYWdlKGl0ZW0pIHtcbiAgICBsZXQgbmF2aWdhdGlvbkV4dHJhczogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgIFwicGFnZUlkXCI6IGl0ZW0ucGFnZUlkXG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnBhZ2VVcmxdLCBuYXZpZ2F0aW9uRXh0cmFzKVxuICB9XG4gIGRlbGV0ZVRhbXBsZXRlKGl0ZW0pIHtcbiAgICBsZXQgcmVzdWx0ID0gY29uZmlybShcIjxpPkFyZSBZb3UgU3VyZT88L2k+XCIsIFwiRGVsZXRlIEZpbHRlclwiKTtcbiAgICByZXN1bHQudGhlbigoZGlhbG9nUmVzdWx0KSA9PiB7XG4gICAgICBpZiAoZGlhbG9nUmVzdWx0KSB7XG4gICAgICAgIHRoaXMuaXNMb2FkZXIgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlcnZpY2UuZGVsZXRlQXBwUGFnZUNvbmZpZyhpdGVtLnBhZ2VJZCkuc3Vic2NyaWJlKCh2YWw6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuZ2V0QXBwUGFnZUNvbmZpZ3MoKTtcbiAgICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnUGFnZSBEZWxldGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIH0sIGVyciA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1J1bGUgTW9kdWxlJyk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBlZGl0VGVtcGxhdGUoaXRlbSkge1xuICAgIHRoaXMuZGFzaGJvYXJkQ29uZmlnID0gaXRlbTtcbiAgICB0aGlzLmlzTmV3VGFtcGxldGVDcmVhdGUgPSB0cnVlO1xuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgfVxuXG4gIGdldFNhdmVDaGFydENvbmZpZygpIHtcblxuICAgIGlmICh0aGlzLmRhc2hib2FyZENvbmZpZ1sncGFnZUlkJ10pIHtcbiAgICAgIHRoaXMuc2VydmljZS5lZGl0QXBwUGFnZUNvbmZpZyh0aGlzLmRhc2hib2FyZENvbmZpZykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNOZXdUYW1wbGV0ZUNyZWF0ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZ2V0QXBwUGFnZUNvbmZpZ3MoKTtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKCdQYWdlIFVwZGF0ZSBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdQYWdlIENyZWF0aW9uJylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZUFwcFBhZ2VDb25maWcodGhpcy5kYXNoYm9hcmRDb25maWcpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTmV3VGFtcGxldGVDcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnUGFnZSBDcmVhdGVkIFN1Y2Nlc3NmdWxseScpXG4gICAgICAgIH0sIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1BhZ2UgQ3JlYXRpb24nKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHZpZXdDb25maWd1cmVkVGVtcGxhdGUoaXRlbSkge1xuICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgJ3BhZ2VJZCc6IGl0ZW0ucGFnZUlkLFxuICAgICAgICAnY29udGVudFR5cGUnOiBcInZpZXdcIixcblxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvcGFnZUNvbmZpZ0NvbnRyb2xsZXInXSwgbmF2aWdhdGlvbik7XG4gIH1cblxuICBjb25maWd1cmVkVGVtcGxhdGUoaXRlbSkge1xuICAgIFxuICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgJ3BhZ2VJZCc6IGl0ZW0ucGFnZUlkLFxuICAgICAgICAnY29udGVudFR5cGUnOiBcImVkaXRcIixcblxuICAgICAgfVxuICAgIH07XG4gICAgaWYoaXRlbS5wYWdlVGVtcGxhdGUgPT0gXCJLcGlXaXRoTXVsdGlsYXlvdXRTZXRUZXN0Q29tcG9uZW50XCIpe1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvbXVsdGlQYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYXBwcy9jb250cm9sUGFuZWwvcGFnZUNvbmZpZ0NvbnRyb2xsZXInXSwgbmF2aWdhdGlvbik7XG4gICAgfVxuICB9XG5cblxuICBnZXRDcmVhdGVEYXNoYm9hcmQoKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2FwcHMvY29udHJvbFBhbmVsL3BhZ2VDb25maWdDb250cm9sbGVyJylcbiAgfVxuXG4gIHNjcm9sbFRvQm90dG9tKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdlbmQnIH0pO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLy8gc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gIC8vICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgLy8gfVxuXG5cblxuICAvLyBhZGRSb3V0ZXNBbmROYXZpZ2F0ZShyb3V0ZUNvbmZpZykge1xuICAvLyAgIGNvbnN0IGNvbXBvbmVudE1hcCA9IHtcbiAgLy8gICAgICdLcGlUcmVlVmlld0NvbXBvbmVudCc6IEtwaVRyZWVWaWV3Q29tcG9uZW50LFxuICAvLyAgICAgJ0Jvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudCc6IEJvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudFxuICAvLyAgIH07XG4gIC8vICAgY29uc3QgZHluYW1pY1JvdXRlID0ge1xuICAvLyAgICAgcGF0aDogcm91dGVDb25maWcucGF0aCxcbiAgLy8gICAgIGNvbXBvbmVudDogY29tcG9uZW50TWFwW3JvdXRlQ29uZmlnLmNvbXBOYW1lXSxcbiAgLy8gICB9O1xuXG4gIC8vICAgLy8gRmluZCB0aGUgcGFyZW50IHJvdXRlIChlLmcuLCBNYWluTGF5b3V0Q29tcG9uZW50KVxuICAvLyAgIGNvbnN0IG1haW5MYXlvdXRSb3V0ZSA9IHRoaXMucm91dGVyLmNvbmZpZy5maW5kKHJvdXRlID0+IHJvdXRlLmNvbXBvbmVudCA9PT0gTGF5b3V0Q29tcG9uZW50KTtcblxuICAvLyAgIGlmIChtYWluTGF5b3V0Um91dGUpIHtcbiAgLy8gICAgIGlmICghbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuKSB7XG4gIC8vICAgICAgIG1haW5MYXlvdXRSb3V0ZS5jaGlsZHJlbiA9IFtdO1xuICAvLyAgICAgfVxuXG4gIC8vICAgICAvLyBBZGQgdGhlIGR5bmFtaWMgcm91dGUgYXMgYSBjaGlsZCBvZiB0aGUgbWFpbiBsYXlvdXQgcm91dGVcbiAgLy8gICAgIG1haW5MYXlvdXRSb3V0ZS5jaGlsZHJlbi5wdXNoKGR5bmFtaWNSb3V0ZSk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIC8vIEZhbGxiYWNrOiBBZGQgdGhlIHJvdXRlIGRpcmVjdGx5ICh0aGlzIG1heSBjYXVzZSBpc3N1ZXMgaWYgdGhlIGxheW91dCBpcyBtaXNzaW5nKVxuICAvLyAgICAgdGhpcy5yb3V0ZXIuY29uZmlnLnB1c2goZHluYW1pY1JvdXRlKTtcbiAgLy8gICB9XG5cbiAgLy8gICAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV3bHkgYWRkZWQgcm91dGVcbiAgLy8gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcm91dGVDb25maWcucGF0aF0pO1xuICAvLyB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInIEFwcGxpY2F0aW9uIFBhZ2VzJ1wiPjwvbGliLWNvbW1vbi1oZWFkZXI+XG5cblxuXG4gICAgPGRpdiBjbGFzcz1cInAtNCB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJtYi0yIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gTWFuYWdlIFBhZ2VzXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImNyZWF0ZU5ld1RhbXBsZXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBOZXcgUGFnZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgICA8YXBwLWxvYWRlciAqbmdJZj1cImlzTG9hZGVyXCI+PC9hcHAtbG9hZGVyPlxuICAgICAgICAgICAgPGR4LWRhdGEtZ3JpZCBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIiBbZGF0YVNvdXJjZV09XCJ0ZW1wbGF0ZURhdGFTb3VyY2VcIiBbaG92ZXJTdGF0ZUVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNMb2FkZXJcIiBbc2VsZWN0ZWRSb3dLZXlzXT1cIltdXCIgW3Nob3dCb3JkZXJzXT1cInRydWVcIiBbc2hvd0NvbHVtbkxpbmVzXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCIxMFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgICAgICAgICAgICA8ZHhvLWV4cG9ydCBbZW5hYmxlZF09XCJ0cnVlXCI+PC9keG8tZXhwb3J0PlxuICAgICAgICAgICAgICAgIDxkeG8tc2VhcmNoLXBhbmVsIFtoaWdobGlnaHRDYXNlU2Vuc2l0aXZlXT1cInRydWVcIiBbdmlzaWJsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPC9keG8tc2VhcmNoLXBhbmVsPlxuXG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZU5hbWVcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwYWdlVGl0bGVcIj48L2R4aS1jb2x1bW4+IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZVRlbXBsYXRlXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwYWdlSWRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZVVybFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNyZWF0ZWRCeVwiPjwvZHhpLWNvbHVtbj4gLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGlvbkRhdGVcIj48L2R4aS1jb2x1bW4+IC0tPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImNyZWF0aW9uRGF0ZVwiIHNvcnRPcmRlcj1cImRlc2NcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiQ29uZmlndXJlZFwiIGNlbGxUZW1wbGF0ZT1cImNlbGxUZW1wbGF0ZTJcIiBmaXhlZD1cInRydWVcIiBmaXhlZFBvc2l0aW9uPVwibGVmdFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJhY3Rpb25cIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGVcIiBmaXhlZD1cInRydWVcIiBmaXhlZFBvc2l0aW9uPVwicmlnaHRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3ByaW1hcnlfbWR9fVwiIChjbGljayk9XCJlZGl0VGVtcGxhdGUoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgRWRpdFxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19XCIgKGNsaWNrKT1cInZpZXdzUGFnZShkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBWaWV3IFBhZ2VcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX2Rhbmdlcl9tZH19XCIgKGNsaWNrKT1cImRlbGV0ZVRhbXBsZXRlKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NlbGxUZW1wbGF0ZTInXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19XCIgKGNsaWNrKT1cImNvbmZpZ3VyZWRUZW1wbGF0ZShkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cblxuXG5cbiAgICAgICAgICAgIDwvZHgtZGF0YS1ncmlkPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgI3Njcm9sbENvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMlwiICpuZ0lmPVwiaXNOZXdUYW1wbGV0ZUNyZWF0ZVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibS0zIHAtNCBiZy13aGl0ZSBib3JkZXIgYm9yZGVyLWdyYXktMjAwIHJvdW5kZWQtbGcgc2hhZG93LW1kIGRhcms6YmctZ3JheS04MDAgZGFyazpib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICA8aDZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtYi0yIGZvbnQtYm9sZCB0ZXh0LWxnIHRyYWNraW5nLXRpZ2h0IHRleHQtZ3JheS05MDAgZGFyazp0ZXh0LXdoaXRlIGJvcmRlci1iIHBiLTMgZmxleCBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10YWJsZSBtci0yXCI+PC9pPiBDcmVhdGUgUGFnZVxuICAgICAgICAgICAgICAgIDwvaDY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIEZsZXggY29udGFpbmVyIGZvciBmb3JtIGZpZWxkcyAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8yIHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VOYW1lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRpdGxlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcucGFnZVRpdGxlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFVSTDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VVcmxcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8yIHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgVGVtcGxhdGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJjb21wb25lbnRUZW1wbGF0ZXNcIiBkaXNwbGF5RXhwcj1cIml0ZW1cIiB2YWx1ZUV4cHI9XCJjb21wTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcucGFnZVRlbXBsYXRlXCIgc2VhcmNoRW5hYmxlZD1cInRydWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBEb2N1bWVudGF0aW9uIFVybDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VEb2N1bWVudGF0aW9uVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIEZpbHRlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImZpbHRlckRhdGFTb3VyY2VcIiBkaXNwbGF5RXhwcj1cImZpbHRlck5hbWVcIiB2YWx1ZUV4cHI9XCJmaWx0ZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcuZmlsdGVySWRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZCBncmlkLWNvbHMtMiBnYXAtNCB3LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgTmFtZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VOYW1lXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRpdGxlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcucGFnZVRpdGxlXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFVSTDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VVcmxcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgVGVtcGxhdGU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJjb21wb25lbnRUZW1wbGF0ZXNcIiBkaXNwbGF5RXhwcj1cIml0ZW1cIiB2YWx1ZUV4cHI9XCJjb21wTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcucGFnZVRlbXBsYXRlXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIERvY3VtZW50YXRpb24gVXJsPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtdGV4dC1ib3ggWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcucGFnZURvY3VtZW50YXRpb25VcmxcIj48L2R4LXRleHQtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgRmlsdGVyPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiZmlsdGVyRGF0YVNvdXJjZVwiIGRpc3BsYXlFeHByPVwiZmlsdGVyTmFtZVwiIHZhbHVlRXhwcj1cImZpbHRlcklkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5maWx0ZXJJZFwiPjwvZHgtc2VsZWN0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8IS0tIFN1Ym1pdCBidXR0b24gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1lbmQgbXgtMSBmbGV4LWdyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fc3VjY2Vzc19tZH19IGN1cnNvci1wb2ludGVyIG10LTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldFNhdmVDaGFydENvbmZpZygpXCI+U3VibWl0IFRlbXBsYXRlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cblxuXG48L2Rpdj4iXX0=
|
|
198
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb250cm9sbGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dhbW1hLWFwcC1jb250cm9sbGVyL3NyYy9saWIvYXBwbGljYXRpb24tY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL2FwcGxpY2F0aW9uLWNvbnRyb2xsZXIvcGFnZS1jb250cm9sbGVyL3BhZ2UtY29udHJvbGxlci9wYWdlLWNvbnRyb2xsZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7OztBQVcvQyxNQUFNLE9BQU8sc0JBQXNCO0lBNkJqQyxZQUNVLE1BQWMsRUFBUyxhQUE0QixFQUFVLE9BQWtDLEVBQy9GLE1BQXFCLEVBQVUsbUJBQXdDO1FBRHZFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBUyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQy9GLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBOUJqRixvQkFBZSxHQUFHO1lBQ2hCLFFBQVEsRUFBRSxFQUFFO1lBQ1osU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsRUFBRTtZQUNYLFlBQVksRUFBRSxFQUFFO1lBQ2hCLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsT0FBTyxFQUFFLEVBQUU7WUFDWCxRQUFRLEVBQUUsRUFBRTtTQUNiLENBQUE7UUFD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Q0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUMvRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLEdBQUcscUJBQXFCLENBQUM7UUFDeEMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7bUhBbE1VLHNCQUFzQjt1R0FBdEIsc0JBQXNCLG1MQ2RuQywrNVBBZ0pNOzJGRGxJTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UseUJBQXlCOytOQStCRyxlQUFlO3NCQUFwRCxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FeHRyYXMsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5pbXBvcnQgeyBjb25maXJtIH0gZnJvbSAnZGV2ZXh0cmVtZS91aS9kaWFsb2cnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db250ZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2FwcGxpY2F0aW9uLWNvbnRlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBEeW5hbWljUm91dGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGFnZS10ZW1wbGF0ZXMvZHluYW1pYy1yb3V0ZS1zZXJ2aWNlJztcbmltcG9ydCB7IENvbW1vblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kYXNoYm9yZC1jb250cm9sbGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BhZ2UtY29udHJvbGxlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2VDb250cm9sZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBkYXNoYm9hcmRDb25maWcgPSB7XG4gICAgcGFnZU5hbWU6IFwiXCIsXG4gICAgcGFnZVRpdGxlOiBcIlwiLFxuICAgIHBhZ2VVcmw6IFwiXCIsXG4gICAgcGFnZVRlbXBsYXRlOiBcIlwiLFxuICAgIHBhZ2VEb2N1bWVudGF0aW9uVXJsOiBcIlwiLFxuICAgIHdpZGdldHM6IFtdLFxuICAgIGZpbHRlcklkOiBcIlwiXG4gIH1cbiAgaXNOZXdUYW1wbGV0ZUNyZWF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHRlbXBsYXRlRGF0YVNvdXJjZTogYW55ID0gW107XG5cbiAgZmlsdGVyRGF0YVNvdXJjZTogYW55O1xuXG4gIGNvbXBvbmVudFRlbXBsYXRlcyA9IFtcbiAgICB7IFwiY29tcE5hbWVcIjogXCJLcGlXaXRoRGF0YVNldFRlc3RDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiRGVmYXVsdCBLUEkgTGF5b3V0XCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJLcGlXaXRoTXVsdGlsYXlvdXRTZXRUZXN0Q29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIk11bHRpcGxlIExheW91dCBLUElcIiB9LFxuICAgIHsgXCJjb21wTmFtZVwiOiBcIkxhbmRpbmdDb21wb25lbnRDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiRGVmYXVsdCBQYWdlXCIgfSxcbiAgICB7IFwiY29tcE5hbWVcIjogXCJDZHJDb25maWdDb21wb25lbnRcIiwgXCJpdGVtXCI6IFwiQ0RSIENvbmZpZ1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiQ3JlYXRlS3BpVHJlZUNvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJDcmVhdGUgS1BJIENvbmZpZ1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiQ3JlYXRlTWV0cmljc0NvbXBvbmVudFwiLCBcIml0ZW1cIjogXCJDcmVhdGUgTWV0cmljc1wiIH0sXG4gICAgeyBcImNvbXBOYW1lXCI6IFwiRXhjZXB0aW9uT3BlcmF0aW9uQ29tcG9uZW50XCIsIFwiaXRlbVwiOiBcIkV4Y2VwdGlvbiBPcHJhdGlvblwiIH0sXG4gIF1cblxuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKSBwcml2YXRlIHNjcm9sbENvbnRhaW5lcjogRWxlbWVudFJlZjtcbiAgc2VsZWN0ZWRfcGFnZTogYW55ID0gW107XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBjb21tb25TZXJ2aWNlOiBDb21tb25TZXJ2aWNlLCBwcml2YXRlIHNlcnZpY2U6IEFwcGxpY2F0aW9uQ29udGVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsIHByaXZhdGUgZHluYW1pY1JvdXRlU2VydmljZTogRHluYW1pY1JvdXRlU2VydmljZVxuICApIHtcblxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5nZXRBcHBQYWdlQ29uZmlncygpO1xuICAgIHRoaXMuZ2V0RmlsdGVyRGF0YVNldCgpO1xuICB9XG4gIGdldEZpbHRlckRhdGFTZXQoKSB7XG4gICAgdGhpcy5zZXJ2aWNlLmdldEFwcEZpbHRlckNvbmZpZ3MoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlckRhdGFTb3VyY2UgPSBkYXRhO1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XG4gICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBDcmVhdGlvbicpXG5cbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIGdldEFwcFBhZ2VDb25maWdzKCkge1xuICAgIHRoaXMuc2VydmljZS5nZXRBcHBQYWdlQ29uZmlncygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVEYXRhU291cmNlID0gZGF0YTtcbiAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcignVW5leHBlY3RlZCBTZXJ2ZXIgRXhjZXB0aW9uLiBQbGVhc2UgY29udGFjdCBTeXN0ZW0gQWRtaW4uJywgJ1BhZ2UgQ3JlYXRpb24nKVxuXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNyZWF0ZU5ld1RhbXBsZXRlKCkge1xuICAgIHRoaXMuaXNOZXdUYW1wbGV0ZUNyZWF0ZSA9IHRydWU7XG4gICAgdGhpcy5kYXNoYm9hcmRDb25maWcgPSB7XG4gICAgICBwYWdlTmFtZTogXCJcIixcbiAgICAgIHBhZ2VUaXRsZTogXCJcIixcbiAgICAgIHBhZ2VVcmw6IFwiXCIsXG4gICAgICBwYWdlVGVtcGxhdGU6IFwiXCIsXG4gICAgICBwYWdlRG9jdW1lbnRhdGlvblVybDogXCJcIixcbiAgICAgIHdpZGdldHM6IFtdLFxuICAgICAgZmlsdGVySWQ6IFwiXCJcbiAgICB9XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIHZpZXdzUGFnZShpdGVtKSB7XG4gICAgbGV0IG5hdmlnYXRpb25FeHRyYXM6IE5hdmlnYXRpb25FeHRyYXMgPSB7XG4gICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICBcInBhZ2VJZFwiOiBpdGVtLnBhZ2VJZFxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbaXRlbS5wYWdlVXJsXSwgbmF2aWdhdGlvbkV4dHJhcylcbiAgfVxuICBkZWxldGVUYW1wbGV0ZShpdGVtKSB7XG4gICAgbGV0IHJlc3VsdCA9IGNvbmZpcm0oXCI8aT5BcmUgWW91IFN1cmU/PC9pPlwiLCBcIkRlbGV0ZSBGaWx0ZXJcIik7XG4gICAgcmVzdWx0LnRoZW4oKGRpYWxvZ1Jlc3VsdCkgPT4ge1xuICAgICAgaWYgKGRpYWxvZ1Jlc3VsdCkge1xuICAgICAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZUFwcFBhZ2VDb25maWcoaXRlbS5wYWdlSWQpLnN1YnNjcmliZSgodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1BhZ2UgRGVsZXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnIgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdSdWxlIE1vZHVsZScpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZWRpdFRlbXBsYXRlKGl0ZW0pIHtcbiAgICB0aGlzLmRhc2hib2FyZENvbmZpZyA9IGl0ZW07XG4gICAgdGhpcy5pc05ld1RhbXBsZXRlQ3JlYXRlID0gdHJ1ZTtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gIH1cblxuICBnZXRTYXZlQ2hhcnRDb25maWcoKSB7XG5cbiAgICBpZiAodGhpcy5kYXNoYm9hcmRDb25maWdbJ3BhZ2VJZCddKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZWRpdEFwcFBhZ2VDb25maWcodGhpcy5kYXNoYm9hcmRDb25maWcpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmlzTmV3VGFtcGxldGVDcmVhdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmdldEFwcFBhZ2VDb25maWdzKCk7XG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcygnUGFnZSBVcGRhdGUgU3VjY2Vzc2Z1bGx5JylcbiAgICAgICAgfSwgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdVbmV4cGVjdGVkIFNlcnZlciBFeGNlcHRpb24uIFBsZWFzZSBjb250YWN0IFN5c3RlbSBBZG1pbi4nLCAnUGFnZSBDcmVhdGlvbicpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZS5jcmVhdGVBcHBQYWdlQ29uZmlnKHRoaXMuZGFzaGJvYXJkQ29uZmlnKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc05ld1RhbXBsZXRlQ3JlYXRlID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5nZXRBcHBQYWdlQ29uZmlncygpO1xuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoJ1BhZ2UgQ3JlYXRlZCBTdWNjZXNzZnVsbHknKVxuICAgICAgICB9LCBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ1VuZXhwZWN0ZWQgU2VydmVyIEV4Y2VwdGlvbi4gUGxlYXNlIGNvbnRhY3QgU3lzdGVtIEFkbWluLicsICdQYWdlIENyZWF0aW9uJylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2aWV3Q29uZmlndXJlZFRlbXBsYXRlKGl0ZW0pIHtcbiAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICdwYWdlSWQnOiBpdGVtLnBhZ2VJZCxcbiAgICAgICAgJ2NvbnRlbnRUeXBlJzogXCJ2aWV3XCIsXG5cbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FwcHMvY29udHJvbFBhbmVsL3BhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb24pO1xuICB9XG5cbiAgY29uZmlndXJlZFRlbXBsYXRlKGl0ZW0pIHtcblxuICAgIGxldCBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uRXh0cmFzID0ge1xuICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgJ3BhZ2VJZCc6IGl0ZW0ucGFnZUlkLFxuICAgICAgICAnY29udGVudFR5cGUnOiBcImVkaXRcIixcblxuICAgICAgfVxuICAgIH07XG4gICAgaWYgKGl0ZW0ucGFnZVRlbXBsYXRlID09IFwiS3BpV2l0aE11bHRpbGF5b3V0U2V0VGVzdENvbXBvbmVudFwiKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9tdWx0aVBhZ2VDb25maWdDb250cm9sbGVyJ10sIG5hdmlnYXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9hcHBzL2NvbnRyb2xQYW5lbC9wYWdlQ29uZmlnQ29udHJvbGxlciddLCBuYXZpZ2F0aW9uKTtcbiAgICB9XG4gIH1cblxuXG4gIGdldENyZWF0ZURhc2hib2FyZCgpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvYXBwcy9jb250cm9sUGFuZWwvcGFnZUNvbmZpZ0NvbnRyb2xsZXInKVxuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2VuZCcgfSk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBpc1NlbGVjdGlvbkNoYW5nZShldmVudCkge1xuXG4gICAgdGhpcy5zZWxlY3RlZF9wYWdlID0gZXZlbnQuc2VsZWN0ZWRSb3dzRGF0YTtcblxuXG4gIH1cblxuICBnZXREb3dubG9hZFBhZ2UoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRfcGFnZS5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoJ05vIGRhdGEgYXZhaWxhYmxlIHRvIGV4cG9ydC4nLCAnRXhwb3J0IEVycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QganNvblN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuc2VsZWN0ZWRfcGFnZSwgbnVsbCwgMik7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtqc29uU3RyXSwgeyB0eXBlOiAnYXBwbGljYXRpb24vanNvbicgfSk7XG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgY29uc3QgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgIGFuY2hvci5ocmVmID0gdXJsO1xuICAgIGFuY2hvci5kb3dubG9hZCA9IGBleHBvcnRlZF9wYWdlcy5qc29uYDtcbiAgICBhbmNob3IuY2xpY2soKTtcbiAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcbiAgfVxuXG4gICAgLy8gc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgLy8gICB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgIC8vIH1cblxuXG5cbiAgICAvLyBhZGRSb3V0ZXNBbmROYXZpZ2F0ZShyb3V0ZUNvbmZpZykge1xuICAgIC8vICAgY29uc3QgY29tcG9uZW50TWFwID0ge1xuICAgIC8vICAgICAnS3BpVHJlZVZpZXdDb21wb25lbnQnOiBLcGlUcmVlVmlld0NvbXBvbmVudCxcbiAgICAvLyAgICAgJ0Jvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudCc6IEJvb2ttYXJrZWRUZW1wbGF0ZUNvbXBvbmVudFxuICAgIC8vICAgfTtcbiAgICAvLyAgIGNvbnN0IGR5bmFtaWNSb3V0ZSA9IHtcbiAgICAvLyAgICAgcGF0aDogcm91dGVDb25maWcucGF0aCxcbiAgICAvLyAgICAgY29tcG9uZW50OiBjb21wb25lbnRNYXBbcm91dGVDb25maWcuY29tcE5hbWVdLFxuICAgIC8vICAgfTtcblxuICAgIC8vICAgLy8gRmluZCB0aGUgcGFyZW50IHJvdXRlIChlLmcuLCBNYWluTGF5b3V0Q29tcG9uZW50KVxuICAgIC8vICAgY29uc3QgbWFpbkxheW91dFJvdXRlID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQocm91dGUgPT4gcm91dGUuY29tcG9uZW50ID09PSBMYXlvdXRDb21wb25lbnQpO1xuXG4gICAgLy8gICBpZiAobWFpbkxheW91dFJvdXRlKSB7XG4gICAgLy8gICAgIGlmICghbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuKSB7XG4gICAgLy8gICAgICAgbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgLy8gICAgIH1cblxuICAgIC8vICAgICAvLyBBZGQgdGhlIGR5bmFtaWMgcm91dGUgYXMgYSBjaGlsZCBvZiB0aGUgbWFpbiBsYXlvdXQgcm91dGVcbiAgICAvLyAgICAgbWFpbkxheW91dFJvdXRlLmNoaWxkcmVuLnB1c2goZHluYW1pY1JvdXRlKTtcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy8gICAgIC8vIEZhbGxiYWNrOiBBZGQgdGhlIHJvdXRlIGRpcmVjdGx5ICh0aGlzIG1heSBjYXVzZSBpc3N1ZXMgaWYgdGhlIGxheW91dCBpcyBtaXNzaW5nKVxuICAgIC8vICAgICB0aGlzLnJvdXRlci5jb25maWcucHVzaChkeW5hbWljUm91dGUpO1xuICAgIC8vICAgfVxuXG4gICAgLy8gICAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV3bHkgYWRkZWQgcm91dGVcbiAgICAvLyAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtyb3V0ZUNvbmZpZy5wYXRoXSk7XG4gICAgLy8gfVxuXG4gIH1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGZsZXgtYXV0byBtaW4tdy0wXCI+XG5cbiAgICA8bGliLWNvbW1vbi1oZWFkZXIgW3BhZ2VUaXRsZV09XCInIEFwcGxpY2F0aW9uIFBhZ2VzJ1wiPjwvbGliLWNvbW1vbi1oZWFkZXI+XG5cblxuXG4gICAgPGRpdiBjbGFzcz1cInAtNCB3LWZ1bGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICA8aDYgY2xhc3M9XCJtYi0yIHRleHQtbGcgdHJhY2tpbmctdGlnaHQgdGV4dC1ncmF5LTkwMCBkYXJrOnRleHQtd2hpdGUgYm9yZGVyLWIgcGItMyBmbGV4IGl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gTWFuYWdlIFBhZ2VzXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1sLWF1dG9cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInt7Y29tbW9uU2VydmljZS5idG5fcHJpbWFyeV9tZH19XCIgKGNsaWNrKT1cImNyZWF0ZU5ld1RhbXBsZXRlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBOZXcgUGFnZVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJnZXREb3dubG9hZFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkX3BhZ2UubGVuZ3RoICE9PSAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBFeHBvcnQgUGFnZXNcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgPGFwcC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXBwLWxvYWRlcj5cbiAgICAgICAgICAgIDxkeC1kYXRhLWdyaWQgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIgW2RhdGFTb3VyY2VdPVwidGVtcGxhdGVEYXRhU291cmNlXCIgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTG9hZGVyXCIgW3NlbGVjdGVkUm93S2V5c109XCJbXVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dDb2x1bW5MaW5lc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2hvd1Jvd0xpbmVzXT1cInRydWVcIiAob25TZWxlY3Rpb25DaGFuZ2VkKT1cImlzU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgPGR4by1zZWxlY3Rpb24gW3NlbGVjdEFsbE1vZGVdPVwiJ2FsbE1vZGUnXCIgW3Nob3dDaGVja0JveGVzTW9kZV09XCInYWx3YXlzJ1wiIG1vZGU9XCJtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXNlbGVjdGlvbj5cbiAgICAgICAgICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiMTBcIj48L2R4by1wYWdpbmc+XG4gICAgICAgICAgICAgICAgPGR4by1leHBvcnQgW2VuYWJsZWRdPVwidHJ1ZVwiPjwvZHhvLWV4cG9ydD5cbiAgICAgICAgICAgICAgICA8ZHhvLXNlYXJjaC1wYW5lbCBbaGlnaGxpZ2h0Q2FzZVNlbnNpdGl2ZV09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDwvZHhvLXNlYXJjaC1wYW5lbD5cblxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VOYW1lXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZVRpdGxlXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8IS0tIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VUZW1wbGF0ZVwiPjwvZHhpLWNvbHVtbj4gLS0+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicGFnZUlkXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInBhZ2VVcmxcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGVkQnlcIj48L2R4aS1jb2x1bW4+IC0tPlxuICAgICAgICAgICAgICAgIDwhLS0gPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3JlYXRpb25EYXRlXCI+PC9keGktY29sdW1uPiAtLT5cbiAgICAgICAgICAgICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjcmVhdGlvbkRhdGVcIiBzb3J0T3JkZXI9XCJkZXNjXCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cIkNvbmZpZ3VyZWRcIiBjZWxsVGVtcGxhdGU9XCJjZWxsVGVtcGxhdGUyXCIgZml4ZWQ9XCJ0cnVlXCIgZml4ZWRQb3NpdGlvbj1cImxlZnRcIj48L2R4aS1jb2x1bW4+XG4gICAgICAgICAgICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiYWN0aW9uXCIgY2VsbFRlbXBsYXRlPVwiY2VsbFRlbXBsYXRlXCIgZml4ZWQ9XCJ0cnVlXCIgZml4ZWRQb3NpdGlvbj1cInJpZ2h0XCI+PC9keGktY29sdW1uPlxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY2VsbFRlbXBsYXRlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9wcmltYXJ5X21kfX1cIiAoY2xpY2spPVwiZWRpdFRlbXBsYXRlKGRhdGEuZGF0YSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJ2aWV3c1BhZ2UoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgVmlldyBQYWdlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwie3tjb21tb25TZXJ2aWNlLmJ0bl9kYW5nZXJfbWR9fVwiIChjbGljayk9XCJkZWxldGVUYW1wbGV0ZShkYXRhLmRhdGEpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBEZWxldGVcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjZWxsVGVtcGxhdGUyJ1wiPlxuXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fVwiIChjbGljayk9XCJjb25maWd1cmVkVGVtcGxhdGUoZGF0YS5kYXRhKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuXG4gICAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICNzY3JvbGxDb250YWluZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLTJcIiAqbmdJZj1cImlzTmV3VGFtcGxldGVDcmVhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm0tMyBwLTQgYmctd2hpdGUgYm9yZGVyIGJvcmRlci1ncmF5LTIwMCByb3VuZGVkLWxnIHNoYWRvdy1tZCBkYXJrOmJnLWdyYXktODAwIGRhcms6Ym9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgICAgPGg2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWItMiBmb250LWJvbGQgdGV4dC1sZyB0cmFja2luZy10aWdodCB0ZXh0LWdyYXktOTAwIGRhcms6dGV4dC13aGl0ZSBib3JkZXItYiBwYi0zIGZsZXggaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGFibGUgbXItMlwiPjwvaT4gQ3JlYXRlIFBhZ2VcbiAgICAgICAgICAgICAgICA8L2g2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBGbGV4IGNvbnRhaW5lciBmb3IgZm9ybSBmaWVsZHMgLS0+XG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXdyYXAgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBUaXRsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUaXRsZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBVUkw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3LTEvMiBweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRlbXBsYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29tcG9uZW50VGVtcGxhdGVzXCIgZGlzcGxheUV4cHI9XCJpdGVtXCIgdmFsdWVFeHByPVwiY29tcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUZW1wbGF0ZVwiIHNlYXJjaEVuYWJsZWQ9XCJ0cnVlXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMS8yIHB4LTIgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgbWItMVwiPlBhZ2UgRG9jdW1lbnRhdGlvbiBVcmw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlRG9jdW1lbnRhdGlvblVybFwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy0xLzIgcHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBGaWx0ZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1zZWxlY3QtYm94IFtpdGVtc109XCJmaWx0ZXJEYXRhU291cmNlXCIgZGlzcGxheUV4cHI9XCJmaWx0ZXJOYW1lXCIgdmFsdWVFeHByPVwiZmlsdGVySWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLmZpbHRlcklkXCI+PC9keC1zZWxlY3QtYm94PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTIgZ2FwLTQgdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIE5hbWU8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlTmFtZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBUaXRsZTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUaXRsZVwiPjwvZHgtdGV4dC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBVUkw8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkeC10ZXh0LWJveCBbKG5nTW9kZWwpXT1cImRhc2hib2FyZENvbmZpZy5wYWdlVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIFRlbXBsYXRlPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZHgtc2VsZWN0LWJveCBbaXRlbXNdPVwiY29tcG9uZW50VGVtcGxhdGVzXCIgZGlzcGxheUV4cHI9XCJpdGVtXCIgdmFsdWVFeHByPVwiY29tcE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VUZW1wbGF0ZVwiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMiBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tZCBtYi0xXCI+UGFnZSBEb2N1bWVudGF0aW9uIFVybDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXRleHQtYm94IFsobmdNb2RlbCldPVwiZGFzaGJvYXJkQ29uZmlnLnBhZ2VEb2N1bWVudGF0aW9uVXJsXCI+PC9keC10ZXh0LWJveD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC0yIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW1kIG1iLTFcIj5QYWdlIEZpbHRlcjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGR4LXNlbGVjdC1ib3ggW2l0ZW1zXT1cImZpbHRlckRhdGFTb3VyY2VcIiBkaXNwbGF5RXhwcj1cImZpbHRlck5hbWVcIiB2YWx1ZUV4cHI9XCJmaWx0ZXJJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXNoYm9hcmRDb25maWcuZmlsdGVySWRcIj48L2R4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPCEtLSBTdWJtaXQgYnV0dG9uIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktZW5kIG14LTEgZmxleC1ncm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ7e2NvbW1vblNlcnZpY2UuYnRuX3N1Y2Nlc3NfbWR9fSBjdXJzb3ItcG9pbnRlciBtdC0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnZXRTYXZlQ2hhcnRDb25maWcoKVwiPlN1Ym1pdCBUZW1wbGF0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG5cblxuPC9kaXY+Il19
|