@trudb/tru-common-lib 0.0.493 → 0.0.495
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/classes/tru-data-change-parser.mjs +278 -0
- package/esm2020/lib/classes/tru-data-change.mjs +7 -0
- package/esm2020/lib/components/data-grid/tru-data-grid.mjs +16 -11
- package/esm2020/lib/services/tru-connection-hub.mjs +21 -13
- package/esm2020/lib/services/tru-model-property-lookup.mjs +1 -1
- package/fesm2015/trudb-tru-common-lib.mjs +353 -61
- package/fesm2015/trudb-tru-common-lib.mjs.map +1 -1
- package/fesm2020/trudb-tru-common-lib.mjs +352 -61
- package/fesm2020/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/classes/tru-data-change-parser.d.ts +32 -0
- package/lib/classes/tru-data-change.d.ts +4 -0
- package/lib/components/data-grid/tru-data-grid.d.ts +3 -1
- package/lib/services/tru-connection-hub.d.ts +10 -1
- package/lib/services/tru-model-property-lookup.d.ts +3 -2
- package/package.json +1 -1
|
@@ -8,19 +8,21 @@ import * as i2 from "../../services/tru-search-result-view-manager";
|
|
|
8
8
|
import * as i3 from "../../services/tru-app-environment";
|
|
9
9
|
import * as i4 from "../../base-views/search/services/tru-search-view-event-handler";
|
|
10
10
|
import * as i5 from "../../services/tru-ui-notification";
|
|
11
|
-
import * as i6 from "
|
|
12
|
-
import * as i7 from "
|
|
13
|
-
import * as i8 from "
|
|
14
|
-
import * as i9 from "../toolbar/
|
|
15
|
-
import * as i10 from "../toolbar/
|
|
16
|
-
import * as i11 from "../toolbar/
|
|
11
|
+
import * as i6 from "../../services/tru-connection-hub";
|
|
12
|
+
import * as i7 from "@angular/common";
|
|
13
|
+
import * as i8 from "ag-grid-angular";
|
|
14
|
+
import * as i9 from "../toolbar/tru-toolbar";
|
|
15
|
+
import * as i10 from "../toolbar/button/tru-toolbar-button";
|
|
16
|
+
import * as i11 from "../toolbar/dropdown/tru-toolbar-dropdown";
|
|
17
|
+
import * as i12 from "../toolbar/separator/tru-toolbar-separator";
|
|
17
18
|
export class TruDataGrid {
|
|
18
|
-
constructor(dataContext, searchResultViewManager, appEnvironment, searchViewEventHandler, uiNotification) {
|
|
19
|
+
constructor(dataContext, searchResultViewManager, appEnvironment, searchViewEventHandler, uiNotification, connectionHub) {
|
|
19
20
|
this.dataContext = dataContext;
|
|
20
21
|
this.searchResultViewManager = searchResultViewManager;
|
|
21
22
|
this.appEnvironment = appEnvironment;
|
|
22
23
|
this.searchViewEventHandler = searchViewEventHandler;
|
|
23
24
|
this.uiNotification = uiNotification;
|
|
25
|
+
this.connectionHub = connectionHub;
|
|
24
26
|
this.TruDataGridTypes = TruDataGridTypes;
|
|
25
27
|
this.columnDefs = [];
|
|
26
28
|
this.rowData = [];
|
|
@@ -226,6 +228,9 @@ export class TruDataGrid {
|
|
|
226
228
|
this.subscribeTo();
|
|
227
229
|
this.columnDefs = this.config.resultConfig.columnDefs;
|
|
228
230
|
this.gridType = this.config.resultConfig.gridType;
|
|
231
|
+
this.connectionHub.subscribe(this.dataContext, this.config.tableName, () => { return this.loadedEntities; }, () => { return this.latestSetupQuery; }, this.config.resultConfig.expands, [], () => { return true; }).subscribe((dataChange) => {
|
|
232
|
+
console.log(dataChange);
|
|
233
|
+
});
|
|
229
234
|
}
|
|
230
235
|
ngOnChanges(changes) {
|
|
231
236
|
if (this.gridType === TruDataGridTypes.Detail || this.gridType === TruDataGridTypes.DetailManyToMany)
|
|
@@ -241,16 +246,16 @@ export class TruDataGrid {
|
|
|
241
246
|
}, 0);
|
|
242
247
|
}
|
|
243
248
|
}
|
|
244
|
-
TruDataGrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataGrid, deps: [{ token: i1.TruDataContext }, { token: i2.TruSearchResultViewManager }, { token: i3.TruAppEnvironment }, { token: i4.TruSearchViewEventHandler }, { token: i5.TruUiNotification }], target: i0.ɵɵFactoryTarget.Component });
|
|
245
|
-
TruDataGrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruDataGrid, selector: "tru-data-grid", inputs: { config: "config", entity: "entity", name: "name" }, host: { properties: { "class.tru-data-grid": "true" } }, usesOnChanges: true, ngImport: i0, template: "<div>\r\n <div class=\"tru-data-grid-toolbar-container\">\r\n <tru-toolbar>\r\n <tru-toolbar-dropdown [options]=\"unassociatedChoices\"\r\n [(selectedOption)]=\"selectedUnassociatedChoice\"\r\n (selectionChange)=\"onUnassociatedChoiceChanged($event)\"\r\n *ngIf=\"gridType == TruDataGridTypes.DetailManyToMany\">\r\n </tru-toolbar-dropdown>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-add-icon'\" [tooltip]=\"'Add - [Ctrl + I]'\" [disabled]=\"!canAdd()\" (onClick)=\"onAdd()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-delete-icon'\" [tooltip]=\"'Delete - [Ctrl + D]'\" (click)=\"onDelete()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-keep-icon'\" [tooltip]=\"'Keep selected records - [Ctrl + K]'\" (click)=\"onKeep()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-remove-icon'\" [tooltip]=\"'Remove selected records - [Ctrl + R]'\" (click)=\"onRemove()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-star-empty-icon'\" [tooltip]=\"'Set this result view as default'\" (click)=\"onSetDefaultResultView()\" *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-button>\r\n <tru-toolbar-separator *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-export-icon'\" [tooltip]=\"'Export'\" (click)=\"onExport()\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n </div>\r\n <div class=\"tru-data-grid-container\">\r\n <ag-grid-angular class=\"ag-theme-alpine\"\r\n [gridOptions]=\"gridOptions\"\r\n [rowData]=\"rowData\"\r\n [columnDefs]=\"columnDefs\"\r\n [headerHeight]=\"25\"\r\n [rowHeight]=\"25\"\r\n [overlayLoadingTemplate]=\"loadingTemplate\"\r\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n", styles: [".tru-data-grid:first-of-type+.tru-data-grid{margin-left:5px}.tru-data-grid-toolbar-container{display:inline-flex}.tru-data-grid-container{min-height:200px}.detail-container .tru-data-grid{position:relative}ag-grid-angular{position:absolute;inset:28px 0 0;width:100%;height:100%}.ag-root-wrapper{border-top:0px!important}.ag-header-cell{padding-left:0!important;padding-right:0!important}.ag-header-cell-resize:after{top:unset!important;height:25px!important}.ag-header-row{font-weight:500!important}.ag-header-cell-label{justify-content:center}.ag-row .ag-cell-value{padding-left:2px!important;padding-right:2px!important}.ag-cell-inline-editing{height:24px!important}.ag-cell{border-right:solid #dde2eb 1px!important}.ag-has-focus .ag-cell-focus:not(.ag-cell-inline-editing){border-right:solid #2196f3 1px!important}.ag-pinned-left-cols-container .ag-cell.ag-cell-focus{border:solid #dde2eb 1px!important;border-top:0px!important;border-bottom:0px!important}.ag-pinned-left-cols-container .ag-row-selected .ag-cell{border:0px solid #dde2eb!important;border-right:2px solid #006dcc!important;color:#006dcc;font-weight:700;background-color:#ddd}.ag-pk-aligned-cell{text-align:center}.ag-horizontal-left-spacer{overflow:hidden}.ag-grid-row-has-changes-gradient{background-color:#fff;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#fff,endColorstr=#ffffff);background-image:linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-ms-linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(25%,#ffffff),color-stop(100%,#dbffdf))}\n"], dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "suppressServerSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: i8.TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: i9.TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: i10.TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: i11.TruToolbarSeparator, selector: "tru-toolbar-separator" }], encapsulation: i0.ViewEncapsulation.None });
|
|
249
|
+
TruDataGrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataGrid, deps: [{ token: i1.TruDataContext }, { token: i2.TruSearchResultViewManager }, { token: i3.TruAppEnvironment }, { token: i4.TruSearchViewEventHandler }, { token: i5.TruUiNotification }, { token: i6.TruConnectionHub }], target: i0.ɵɵFactoryTarget.Component });
|
|
250
|
+
TruDataGrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruDataGrid, selector: "tru-data-grid", inputs: { config: "config", entity: "entity", name: "name" }, host: { properties: { "class.tru-data-grid": "true" } }, usesOnChanges: true, ngImport: i0, template: "<div>\r\n <div class=\"tru-data-grid-toolbar-container\">\r\n <tru-toolbar>\r\n <tru-toolbar-dropdown [options]=\"unassociatedChoices\"\r\n [(selectedOption)]=\"selectedUnassociatedChoice\"\r\n (selectionChange)=\"onUnassociatedChoiceChanged($event)\"\r\n *ngIf=\"gridType == TruDataGridTypes.DetailManyToMany\">\r\n </tru-toolbar-dropdown>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-add-icon'\" [tooltip]=\"'Add - [Ctrl + I]'\" [disabled]=\"!canAdd()\" (onClick)=\"onAdd()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-delete-icon'\" [tooltip]=\"'Delete - [Ctrl + D]'\" (click)=\"onDelete()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-keep-icon'\" [tooltip]=\"'Keep selected records - [Ctrl + K]'\" (click)=\"onKeep()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-remove-icon'\" [tooltip]=\"'Remove selected records - [Ctrl + R]'\" (click)=\"onRemove()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-star-empty-icon'\" [tooltip]=\"'Set this result view as default'\" (click)=\"onSetDefaultResultView()\" *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-button>\r\n <tru-toolbar-separator *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-export-icon'\" [tooltip]=\"'Export'\" (click)=\"onExport()\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n </div>\r\n <div class=\"tru-data-grid-container\">\r\n <ag-grid-angular class=\"ag-theme-alpine\"\r\n [gridOptions]=\"gridOptions\"\r\n [rowData]=\"rowData\"\r\n [columnDefs]=\"columnDefs\"\r\n [headerHeight]=\"25\"\r\n [rowHeight]=\"25\"\r\n [overlayLoadingTemplate]=\"loadingTemplate\"\r\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n", styles: [".tru-data-grid:first-of-type+.tru-data-grid{margin-left:5px}.tru-data-grid-toolbar-container{display:inline-flex}.tru-data-grid-container{min-height:200px}.detail-container .tru-data-grid{position:relative}ag-grid-angular{position:absolute;inset:28px 0 0;width:100%;height:100%}.ag-root-wrapper{border-top:0px!important}.ag-header-cell{padding-left:0!important;padding-right:0!important}.ag-header-cell-resize:after{top:unset!important;height:25px!important}.ag-header-row{font-weight:500!important}.ag-header-cell-label{justify-content:center}.ag-row .ag-cell-value{padding-left:2px!important;padding-right:2px!important}.ag-cell-inline-editing{height:24px!important}.ag-cell{border-right:solid #dde2eb 1px!important}.ag-has-focus .ag-cell-focus:not(.ag-cell-inline-editing){border-right:solid #2196f3 1px!important}.ag-pinned-left-cols-container .ag-cell.ag-cell-focus{border:solid #dde2eb 1px!important;border-top:0px!important;border-bottom:0px!important}.ag-pinned-left-cols-container .ag-row-selected .ag-cell{border:0px solid #dde2eb!important;border-right:2px solid #006dcc!important;color:#006dcc;font-weight:700;background-color:#ddd}.ag-pk-aligned-cell{text-align:center}.ag-horizontal-left-spacer{overflow:hidden}.ag-grid-row-has-changes-gradient{background-color:#fff;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#fff,endColorstr=#ffffff);background-image:linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-ms-linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(25%,#ffffff),color-stop(100%,#dbffdf))}\n"], dependencies: [{ kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "suppressServerSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: i9.TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: i10.TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: i11.TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: i12.TruToolbarSeparator, selector: "tru-toolbar-separator" }], encapsulation: i0.ViewEncapsulation.None });
|
|
246
251
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataGrid, decorators: [{
|
|
247
252
|
type: Component,
|
|
248
253
|
args: [{ selector: 'tru-data-grid', encapsulation: ViewEncapsulation.None, host: { '[class.tru-data-grid]': 'true' }, template: "<div>\r\n <div class=\"tru-data-grid-toolbar-container\">\r\n <tru-toolbar>\r\n <tru-toolbar-dropdown [options]=\"unassociatedChoices\"\r\n [(selectedOption)]=\"selectedUnassociatedChoice\"\r\n (selectionChange)=\"onUnassociatedChoiceChanged($event)\"\r\n *ngIf=\"gridType == TruDataGridTypes.DetailManyToMany\">\r\n </tru-toolbar-dropdown>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-add-icon'\" [tooltip]=\"'Add - [Ctrl + I]'\" [disabled]=\"!canAdd()\" (onClick)=\"onAdd()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-delete-icon'\" [tooltip]=\"'Delete - [Ctrl + D]'\" (click)=\"onDelete()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-keep-icon'\" [tooltip]=\"'Keep selected records - [Ctrl + K]'\" (click)=\"onKeep()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-remove-icon'\" [tooltip]=\"'Remove selected records - [Ctrl + R]'\" (click)=\"onRemove()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-star-empty-icon'\" [tooltip]=\"'Set this result view as default'\" (click)=\"onSetDefaultResultView()\" *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-button>\r\n <tru-toolbar-separator *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-export-icon'\" [tooltip]=\"'Export'\" (click)=\"onExport()\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n </div>\r\n <div class=\"tru-data-grid-container\">\r\n <ag-grid-angular class=\"ag-theme-alpine\"\r\n [gridOptions]=\"gridOptions\"\r\n [rowData]=\"rowData\"\r\n [columnDefs]=\"columnDefs\"\r\n [headerHeight]=\"25\"\r\n [rowHeight]=\"25\"\r\n [overlayLoadingTemplate]=\"loadingTemplate\"\r\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n", styles: [".tru-data-grid:first-of-type+.tru-data-grid{margin-left:5px}.tru-data-grid-toolbar-container{display:inline-flex}.tru-data-grid-container{min-height:200px}.detail-container .tru-data-grid{position:relative}ag-grid-angular{position:absolute;inset:28px 0 0;width:100%;height:100%}.ag-root-wrapper{border-top:0px!important}.ag-header-cell{padding-left:0!important;padding-right:0!important}.ag-header-cell-resize:after{top:unset!important;height:25px!important}.ag-header-row{font-weight:500!important}.ag-header-cell-label{justify-content:center}.ag-row .ag-cell-value{padding-left:2px!important;padding-right:2px!important}.ag-cell-inline-editing{height:24px!important}.ag-cell{border-right:solid #dde2eb 1px!important}.ag-has-focus .ag-cell-focus:not(.ag-cell-inline-editing){border-right:solid #2196f3 1px!important}.ag-pinned-left-cols-container .ag-cell.ag-cell-focus{border:solid #dde2eb 1px!important;border-top:0px!important;border-bottom:0px!important}.ag-pinned-left-cols-container .ag-row-selected .ag-cell{border:0px solid #dde2eb!important;border-right:2px solid #006dcc!important;color:#006dcc;font-weight:700;background-color:#ddd}.ag-pk-aligned-cell{text-align:center}.ag-horizontal-left-spacer{overflow:hidden}.ag-grid-row-has-changes-gradient{background-color:#fff;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#fff,endColorstr=#ffffff);background-image:linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-ms-linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(25%,#ffffff),color-stop(100%,#dbffdf))}\n"] }]
|
|
249
|
-
}], ctorParameters: function () { return [{ type: i1.TruDataContext }, { type: i2.TruSearchResultViewManager }, { type: i3.TruAppEnvironment }, { type: i4.TruSearchViewEventHandler }, { type: i5.TruUiNotification }]; }, propDecorators: { config: [{
|
|
254
|
+
}], ctorParameters: function () { return [{ type: i1.TruDataContext }, { type: i2.TruSearchResultViewManager }, { type: i3.TruAppEnvironment }, { type: i4.TruSearchViewEventHandler }, { type: i5.TruUiNotification }, { type: i6.TruConnectionHub }]; }, propDecorators: { config: [{
|
|
250
255
|
type: Input
|
|
251
256
|
}], entity: [{
|
|
252
257
|
type: Input
|
|
253
258
|
}], name: [{
|
|
254
259
|
type: Input
|
|
255
260
|
}] } });
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUF3RCxNQUFNLGVBQWUsQ0FBQztBQU1sSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7OztBQVVoQyxNQUFNLE9BQU8sV0FBVztJQTZCdEIsWUFDVSxXQUEyQixFQUMzQix1QkFBbUQsRUFDbkQsY0FBaUMsRUFDakMsc0JBQWlELEVBQ2pELGNBQWlDO1FBSmpDLGdCQUFXLEdBQVgsV0FBVyxDQUFnQjtRQUMzQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQTRCO1FBQ25ELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQTJCO1FBQ2pELG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQTdCM0MscUJBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFFcEMsZUFBVSxHQUFRLEVBQUUsQ0FBQztRQUNyQixZQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQWUsRUFBRSxDQUFDO1FBRTdCLHdCQUFtQixHQUFlLEVBQUUsQ0FBQztRQUVyQyxvQkFBZSxHQUFXLG9FQUFvRSxDQUFDO1FBQy9GLG1CQUFjLEdBQVcs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QUU7WUFDZCxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHlCQUF5QixDQUFDO1lBQ3BGLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDcEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDakU7UUFDSCxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOzt3R0ExUVUsV0FBVzs0RkFBWCxXQUFXLGlNQ25CeEIsczBFQWlDQTsyRkRkYSxXQUFXO2tCQVB2QixTQUFTOytCQUNFLGVBQWUsaUJBR1YsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBQztzUEFHOUIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9iYXNlLXZpZXdzL3NlYXJjaC9zZXJ2aWNlcy90cnUtc2VhcmNoLXZpZXctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IElUcnVEYXRhR3JpZENvbmZpZyB9IGZyb20gJy4vY2xhc3Nlcy90cnUtZGF0YS1ncmlkLWNvbmZpZyc7XHJcbmltcG9ydCB7IFRydURhdGFHcmlkVHlwZXMgfSBmcm9tICcuL2VudW1zL3RydS1kYXRhLWdyaWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vdG9vbGJhci9jbGFzc2VzL3RydS10b29sYmFyLWRyb3Bkb3duLW9wdGlvbic7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1tYW5hZ2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWRhdGEtZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kYXRhLWdyaWQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRhdGEtZ3JpZC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHsnW2NsYXNzLnRydS1kYXRhLWdyaWRdJzogJ3RydWUnfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RGF0YUdyaWQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydURhdGFHcmlkQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGVudGl0eSE6IGFueTtcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBUcnVEYXRhR3JpZFR5cGVzID0gVHJ1RGF0YUdyaWRUeXBlcztcclxuXHJcbiAgY29sdW1uRGVmczogYW55ID0gW107XHJcbiAgcm93RGF0YTogYW55ID0gW107XHJcbiAgdmlld0Nob2ljZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBzZWxlY3RlZFZpZXdDaG9pY2U6IGFueTtcclxuICB1bmFzc29jaWF0ZWRDaG9pY2VzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2U6IGFueTtcclxuICBsb2FkaW5nVGVtcGxhdGU6IHN0cmluZyA9ICc8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXJcIj4gRGF0YSBpcyBsb2FkaW5nLi4uPC9zcGFuPic7XHJcbiAgbm9Sb3dzVGVtcGxhdGU6IHN0cmluZyA9IGA8c3Bhbj5SdW4gYSBzZWFyY2ggdG8gZmluZCBpdGVtcy48L3NwYW4+YDtcclxuICBncmlkVHlwZTogVHJ1RGF0YUdyaWRUeXBlcyA9IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXHJcbiAgdW5zYXZlZEVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbG9hZGVkRW50aXRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBsYXRlc3RTZXR1cFF1ZXJ5OiBhbnk7XHJcbiAgZ3JpZE9wdGlvbnM6IGFueSA9IHtcclxuICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcclxuICAgIHJvd1N0eWxlOiB7IGJhY2tncm91bmQ6ICd3aGl0ZScgfSxcclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlZDogKHBhcmFtczogYW55KSA9PiB7IH0sXHJcbiAgICBvbkNlbGxFZGl0aW5nU3RvcHBlZDogKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoeyByb3dOb2RlczogcGFyYW1zLm5vZGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hSZXN1bHRWaWV3TWFuYWdlcjogVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIsXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgdWlOb3RpZmljYXRpb246IFRydVVpTm90aWZpY2F0aW9uKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuaGFuY2VSb3dEYXRhRm9yRW50aXR5ID0gKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICBsZXQgcm93RGF0YSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5yb3dEYXRhRW5oYW5jZXIoZW50aXR5KTtcclxuICAgIHJvd0RhdGEuJGVudGl0eSA9IGVudGl0eTtcclxuICAgIHJldHVybiByb3dEYXRhO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2V0Tm9Sb3dzVGVtcGxhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5vUm93c1RlbXBsYXRlID0gYDxzcGFuPk5vIHJvd3MgdG8gc2hvdy48L3NwYW4+YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uU2F2ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkucmVkcmF3Um93cygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uUmV2ZXJ0Q29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgIGxldCByb3dOb2RlczogYW55ID0gW107XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZm9yRWFjaE5vZGUoKHJvd05vZGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJvd05vZGVzLnB1c2gocm93Tm9kZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHJvd05vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKVxyXG4gICAgICAgICAgaWYgKHJvd05vZGVzW2ldLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddIDwgMClcclxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkudXBkYXRlUm93RGF0YSh7IHJlbW92ZTogW3Jvd05vZGVzW2ldLmRhdGFdIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBFbnZpcm9ubWVudC5vbkRlbGV0ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwgJiYgZXZlbnQuZW50aXRpZXMgJiYgZXZlbnQuZW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHJvd3NUb1JlbW92ZTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnJvd0RhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSBldmVudC5lbnRpdGllcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhW2ldLiRlbnRpdHkgPT09IGV2ZW50LmVudGl0aWVzW2pdKVxyXG4gICAgICAgICAgICAgIHJvd3NUb1JlbW92ZS5wdXNoKHRoaXMucm93RGF0YVtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHJvd3NUb1JlbW92ZSB9KTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRHcmlkRGF0YSA9IChlbnRpdGllczogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgdGhpcy5yb3dEYXRhID0gZW50aXRpZXMubWFwKHRoaXMuZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHksIGVudGl0aWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE1hbnlUb01hbnlHcmlkRGF0YSA9IChhc3NvY2lhdGVkRW50aXRpZXM6IEFycmF5PGFueT4sIGFzc29jaWF0YWJsZUVudGl0aWVzOiBBcnJheTxhbnk+LCBpbml0YWxMb2FkOiBib29sZWFuKSA9PiB7XHJcbiAgICBpZiAoaW5pdGFsTG9hZClcclxuICAgICAgdGhpcy5yb3dEYXRhID0gYXNzb2NpYXRlZEVudGl0aWVzLm1hcCh0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5LCBhc3NvY2lhdGVkRW50aXRpZXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICBhc3NvY2lhdGVkRW50aXRpZXMgPSB0aGlzLnJvd0RhdGEubWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIGUuJGVudGl0eSB9KTtcclxuICAgIGxldCBhc3NvY2lhdGFibGVUeXBlTmFtZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZS5uYW1lXHJcbiAgICBsZXQgYXNzb2NpYXRlZE1hcE9mQXNzb2NpYXRhYmxlID0gXy5tYXAoYXNzb2NpYXRlZEVudGl0aWVzLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsnbycgKyBhc3NvY2lhdGFibGVUeXBlTmFtZV07IH0pO1xyXG4gICAgdGhpcy51bmFzc29jaWF0ZWRDaG9pY2VzID0gYXNzb2NpYXRhYmxlRW50aXRpZXMuZmlsdGVyKG9iamVjdDEgPT4ge1xyXG4gICAgICByZXR1cm4gIWFzc29jaWF0ZWRNYXBPZkFzc29jaWF0YWJsZS5zb21lKG9iamVjdDIgPT4geyByZXR1cm4gb2JqZWN0MS52YWx1ZS4kID09PSBvYmplY3QyW2Fzc29jaWF0YWJsZVR5cGVOYW1lICsgJ1JlZiddOyB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnREYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zaG93RXhwb3J0RGlhbG9nKCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XHJcbiAgICAgIGxldCBleHBvcnRHcmlkU3BlYztcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlKVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUubmFtZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gJyRjdXN0b209JyArIDE7XHJcblxyXG4gICAgICBsZXQgcm93Tm9kZXM6IGFueSA9IFtdO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5mb3JFYWNoTm9kZSgocm93Tm9kZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgcm93Tm9kZXMucHVzaChyb3dOb2RlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZWZzID0gXy5tYXAocm93Tm9kZXMsIChyb3dOb2RlKSA9PiB7IHJldHVybiByb3dOb2RlLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddOyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dFxyXG4gICAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAgIC5leHBvcnQodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUsIGV4cG9ydEdyaWRTcGVjLCB0aGlzLmxhdGVzdFNldHVwUXVlcnksIHJlZnMuam9pbignLCcpLCByZXN1bHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJvd0RhdGFDaGFuZ2VkID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucm93RGF0YSA9PT0gbnVsbClcclxuICAgICAgdGhpcy5zZXROb1Jvd3NUZW1wbGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsRG91YmxlQ2xpY2tlZCA9IChncmlkQ29uZmlnOiBhbnkpID0+IHtcclxuICAgIGlmIChncmlkQ29uZmlnLmNvbERlZi5jZWxsQ2xhc3MgPT09ICdhZy1way1hbGlnbmVkLWNlbGwnKVxyXG4gICAgICB0aGlzLmNvbmZpZy5yb3dIZWFkZXJEb3VibGVDbGlja2VkKGdyaWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2ggPSAoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICBsZXQgZW50aXR5TG9hZGVkID0gdGhpcy5sb2FkZWRFbnRpdGllcy5zb21lKChyZWYpID0+IHsgcmV0dXJuIHJlZiA9PT0gdGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXTsgfSk7XHJcbiAgICBsZXQgam9pbnMgPSBbXTtcclxuICAgIGlmIChlbnRpdHlMb2FkZWQpIHtcclxuICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaENhY2hlT25seShcclxuICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSxcclxuICAgICAgICBzZXR1cFF1ZXJ5LFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCBmYWxzZSkpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMsIGZhbHNlKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCB0cnVlKSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhdGVzdFNldHVwUXVlcnkgPSBzZXR1cFF1ZXJ5O1xyXG5cclxuICAgIGZvcmtKb2luKGpvaW5zKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLnNldE5vUm93c1RlbXBsYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgICAgIHRoaXMubG9hZE1hbnlUb01hbnlHcmlkRGF0YShyZXN1bHRzWzBdLCByZXN1bHRzWzFdLCB0cnVlKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmxvYWRHcmlkRGF0YShyZXN1bHRzWzBdKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkVHlwZSAhPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2gpXHJcbiAgICAgICAgICB0aGlzLmxvYWRlZEVudGl0aWVzLnB1c2godGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25VbmFzc29jaWF0ZWRDaG9pY2VDaGFuZ2VkID0gKG9wdGlvbjogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB8IG51bGwpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBjYW5BZGQgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkFkZCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgbGV0IHBhcmVudE5hbWUgPSB0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICBsZXQgYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZTtcclxuICAgICAgbGV0IHVuYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGU7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlLnZhbHVlLiQ7XHJcbiAgICAgIGxldCBjaGlsZFRvQXNzb2NpYXRlID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hCeVJlZkNhY2hlT25seSh1bmFzc29jaWF0ZWRUeXBlLCByZWYsIHRydWUpXHJcbiAgICAgIGlmIChjaGlsZFRvQXNzb2NpYXRlKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlIG1hbnktdG8tbWFueSBlbnRpdHlcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZChhc3NvY2lhdGVkVHlwZSkpO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3VuYXNzb2NpYXRlZFR5cGUubmFtZSArICdSZWYnXSA9IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3BhcmVudE5hbWUgKyAnUmVmJ10gPSB0aGlzLmVudGl0eVtwYXJlbnROYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gdGhlIGFkZCBkcm9wZG93biBjb250cm9sXHJcbiAgICAgICAgbGV0IGl0ZW1JbmRleCA9IHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5maW5kSW5kZXgoKGNob2ljZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNob2ljZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ10gPT09IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgICAvLyBjbGVhciBhZGQgc2VsZWN0aW9uXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBhZGQgcm93IHRvIGdyaWRcclxuICAgICAgICB0aGlzLnVuc2F2ZWRFbnRpdGllcy5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW25ld0VudGl0eV0sIGFkZEluZGV4OiAwIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSkpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbbmV3RW50aXR5XSwgYWRkSW5kZXg6IDAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBlbnRpdGllcyA9IHNlbGVjdGVkUm93cy5tYXAoZnVuY3Rpb24gKHJvdzogYW55KSB7IHJldHVybiByb3cuJGVudGl0eTsgfSk7XHJcbiAgICAgIGxldCBjb25maXJtTXNnID0gdGhpcy5hcHBFbnZpcm9ubWVudC5mb3JtYXREZWxldGVDb25maXJtYXRpb25NZXNzYWdlKHRoaXMuY29uZmlnLnRhYmxlTmFtZSwgdGhpcy5jb25maWcudGFibGVQbHVyYWxMYWJlbCwgc2VsZWN0ZWRSb3dzLmxlbmd0aCk7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgICBsZXQgb25TdWNjZXNzID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZywgb25TdWNjZXNzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ05vUmVjb3Jkc1NlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2VlcCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKVxyXG4gICAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogc2VsZWN0ZWRSb3dzIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZXREZWZhdWx0UmVzdWx0VmlldyA9ICgpOiB2b2lkID0+IHtcclxuICAgIGFsZXJ0KCdOb3QgSW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5leHBvcnREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jb2x1bW5EZWZzO1xyXG4gICAgdGhpcy5ncmlkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5ncmlkVHlwZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbCB8fCB0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vc2V0VGltZW91dCB0byBwcmV2ZW50OiBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLiBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmVudFRvb2xiYXJUZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0Vmlld01hbmFnZXIuc2VhcmNoVmlld1Rvb2xiYXJUZW1wbGF0ZTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsIHx8IHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSkge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kYXRhLWdyaWQtdG9vbGJhci1jb250YWluZXJcIj5cclxuICAgIDx0cnUtdG9vbGJhcj5cclxuICAgICAgPHRydS10b29sYmFyLWRyb3Bkb3duIFtvcHRpb25zXT1cInVuYXNzb2NpYXRlZENob2ljZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE9wdGlvbildPVwic2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblVuYXNzb2NpYXRlZENob2ljZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdyaWRUeXBlID09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueVwiPlxyXG4gICAgICA8L3RydS10b29sYmFyLWRyb3Bkb3duPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1hZGQtaWNvbidcIiBbdG9vbHRpcF09XCInQWRkIC0gW0N0cmwgKyBJXSdcIiBbZGlzYWJsZWRdPVwiIWNhbkFkZCgpXCIgKG9uQ2xpY2spPVwib25BZGQoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1kZWxldGUtaWNvbidcIiBbdG9vbHRpcF09XCInRGVsZXRlIC0gW0N0cmwgKyBEXSdcIiAoY2xpY2spPVwib25EZWxldGUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1rZWVwLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0tlZXAgc2VsZWN0ZWQgcmVjb3JkcyAtIFtDdHJsICsgS10nXCIgKGNsaWNrKT1cIm9uS2VlcCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLXJlbW92ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidSZW1vdmUgc2VsZWN0ZWQgcmVjb3JkcyAtIFtDdHJsICsgUl0nXCIgKGNsaWNrKT1cIm9uUmVtb3ZlKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLXNlcGFyYXRvcj48L3RydS10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItc3Rhci1lbXB0eS1pY29uJ1wiIFt0b29sdGlwXT1cIidTZXQgdGhpcyByZXN1bHQgdmlldyBhcyBkZWZhdWx0J1wiIChjbGljayk9XCJvblNldERlZmF1bHRSZXN1bHRWaWV3KClcIiAqbmdJZj1cImdyaWRUeXBlID09IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1zZXBhcmF0b3IgKm5nSWY9XCJncmlkVHlwZSA9PSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaFwiPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1leHBvcnQtaWNvbidcIiBbdG9vbHRpcF09XCInRXhwb3J0J1wiIChjbGljayk9XCJvbkV4cG9ydCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8L3RydS10b29sYmFyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhcmVudFRvb2xiYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLWNvbnRhaW5lclwiPlxyXG4gICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2hlYWRlckhlaWdodF09XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3ZlcmxheUxvYWRpbmdUZW1wbGF0ZV09XCJsb2FkaW5nVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3ZlcmxheU5vUm93c1RlbXBsYXRlXT1cIm5vUm93c1RlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNlbGxEb3VibGVDbGlja2VkKT1cIm9uQ2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChyb3dEYXRhQ2hhbmdlZCk9XCJvblJvd0RhdGFDaGFuZ2VkKCRldmVudClcIj5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
261
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWRhdGEtZ3JpZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLGlCQUFpQixFQUF3RCxNQUFNLGVBQWUsQ0FBQztBQU1sSSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUvRCxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7QUFZaEMsTUFBTSxPQUFPLFdBQVc7SUE2QnRCLFlBQ1UsV0FBMkIsRUFDM0IsdUJBQW1ELEVBQ25ELGNBQWlDLEVBQ2pDLHNCQUFpRCxFQUNqRCxjQUFpQyxFQUNqQyxhQUErQjtRQUwvQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUEyQjtRQUNqRCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDakMsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBOUJ6QyxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBUSxFQUFFLENBQUM7UUFDbEIsZ0JBQVcsR0FBZSxFQUFFLENBQUM7UUFFN0Isd0JBQW1CLEdBQWUsRUFBRSxDQUFDO1FBRXJD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TUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlciB9IGZyb20gJy4uLy4uL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1ldmVudC1oYW5kbGVyJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgSVRydURhdGFHcmlkQ29uZmlnIH0gZnJvbSAnLi9jbGFzc2VzL3RydS1kYXRhLWdyaWQtY29uZmlnJztcclxuaW1wb3J0IHsgVHJ1RGF0YUdyaWRUeXBlcyB9IGZyb20gJy4vZW51bXMvdHJ1LWRhdGEtZ3JpZC10eXBlcyc7XHJcbmltcG9ydCB7IElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24gfSBmcm9tICcuLi90b29sYmFyL2NsYXNzZXMvdHJ1LXRvb2xiYXItZHJvcGRvd24tb3B0aW9uJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIHNraXAgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgXyBmcm9tICd1bmRlcnNjb3JlJztcclxuaW1wb3J0IHsgVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtc2VhcmNoLXJlc3VsdC12aWV3LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVDb25uZWN0aW9uSHViIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWNvbm5lY3Rpb24taHViJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1LWRhdGEtZ3JpZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1kYXRhLWdyaWQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJ1LWRhdGEtZ3JpZC5jc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHsnW2NsYXNzLnRydS1kYXRhLWdyaWRdJzogJ3RydWUnfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RGF0YUdyaWQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQElucHV0KCkgY29uZmlnITogSVRydURhdGFHcmlkQ29uZmlnO1xyXG4gIEBJbnB1dCgpIGVudGl0eSE6IGFueTtcclxuICBASW5wdXQoKSBuYW1lITogYW55O1xyXG5cclxuICBUcnVEYXRhR3JpZFR5cGVzID0gVHJ1RGF0YUdyaWRUeXBlcztcclxuXHJcbiAgY29sdW1uRGVmczogYW55ID0gW107XHJcbiAgcm93RGF0YTogYW55ID0gW107XHJcbiAgdmlld0Nob2ljZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBzZWxlY3RlZFZpZXdDaG9pY2U6IGFueTtcclxuICB1bmFzc29jaWF0ZWRDaG9pY2VzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2U6IGFueTtcclxuICBsb2FkaW5nVGVtcGxhdGU6IHN0cmluZyA9ICc8c3BhbiBjbGFzcz1cImFnLW92ZXJsYXktbG9hZGluZy1jZW50ZXJcIj4gRGF0YSBpcyBsb2FkaW5nLi4uPC9zcGFuPic7XHJcbiAgbm9Sb3dzVGVtcGxhdGU6IHN0cmluZyA9IGA8c3Bhbj5SdW4gYSBzZWFyY2ggdG8gZmluZCBpdGVtcy48L3NwYW4+YDtcclxuICBncmlkVHlwZTogVHJ1RGF0YUdyaWRUeXBlcyA9IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXHJcbiAgdW5zYXZlZEVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbG9hZGVkRW50aXRpZXM6IEFycmF5PGFueT4gPSBbXTtcclxuICBsYXRlc3RTZXR1cFF1ZXJ5OiBhbnk7XHJcbiAgZ3JpZE9wdGlvbnM6IGFueSA9IHtcclxuICAgIHJvd1NlbGVjdGlvbjogJ211bHRpcGxlJyxcclxuICAgIHJvd1N0eWxlOiB7IGJhY2tncm91bmQ6ICd3aGl0ZScgfSxcclxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlZDogKHBhcmFtczogYW55KSA9PiB7IH0sXHJcbiAgICBvbkNlbGxFZGl0aW5nU3RvcHBlZDogKHBhcmFtczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoeyByb3dOb2RlczogcGFyYW1zLm5vZGUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHBhcmVudFRvb2xiYXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgcHJpdmF0ZSBzZWFyY2hSZXN1bHRWaWV3TWFuYWdlcjogVHJ1U2VhcmNoUmVzdWx0Vmlld01hbmFnZXIsXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgc2VhcmNoVmlld0V2ZW50SGFuZGxlcjogVHJ1U2VhcmNoVmlld0V2ZW50SGFuZGxlcixcclxuICAgIHByaXZhdGUgdWlOb3RpZmljYXRpb246IFRydVVpTm90aWZpY2F0aW9uLFxyXG4gICAgcHJpdmF0ZSBjb25uZWN0aW9uSHViOiBUcnVDb25uZWN0aW9uSHViKSB7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuaGFuY2VSb3dEYXRhRm9yRW50aXR5ID0gKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICBsZXQgcm93RGF0YSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5yb3dEYXRhRW5oYW5jZXIoZW50aXR5KTtcclxuICAgIHJvd0RhdGEuJGVudGl0eSA9IGVudGl0eTtcclxuICAgIHJldHVybiByb3dEYXRhO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2V0Tm9Sb3dzVGVtcGxhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5vUm93c1RlbXBsYXRlID0gYDxzcGFuPk5vIHJvd3MgdG8gc2hvdy48L3NwYW4+YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uU2F2ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkucmVkcmF3Um93cygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uUmV2ZXJ0Q29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgIGxldCByb3dOb2RlczogYW55ID0gW107XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZm9yRWFjaE5vZGUoKHJvd05vZGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJvd05vZGVzLnB1c2gocm93Tm9kZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHJvd05vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKVxyXG4gICAgICAgICAgaWYgKHJvd05vZGVzW2ldLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddIDwgMClcclxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkudXBkYXRlUm93RGF0YSh7IHJlbW92ZTogW3Jvd05vZGVzW2ldLmRhdGFdIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBFbnZpcm9ubWVudC5vbkRlbGV0ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwgJiYgZXZlbnQuZW50aXRpZXMgJiYgZXZlbnQuZW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHJvd3NUb1JlbW92ZTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnJvd0RhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSBldmVudC5lbnRpdGllcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhW2ldLiRlbnRpdHkgPT09IGV2ZW50LmVudGl0aWVzW2pdKVxyXG4gICAgICAgICAgICAgIHJvd3NUb1JlbW92ZS5wdXNoKHRoaXMucm93RGF0YVtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHJvd3NUb1JlbW92ZSB9KTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRHcmlkRGF0YSA9IChlbnRpdGllczogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgdGhpcy5yb3dEYXRhID0gZW50aXRpZXMubWFwKHRoaXMuZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHksIGVudGl0aWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE1hbnlUb01hbnlHcmlkRGF0YSA9IChhc3NvY2lhdGVkRW50aXRpZXM6IEFycmF5PGFueT4sIGFzc29jaWF0YWJsZUVudGl0aWVzOiBBcnJheTxhbnk+LCBpbml0YWxMb2FkOiBib29sZWFuKSA9PiB7XHJcbiAgICBpZiAoaW5pdGFsTG9hZClcclxuICAgICAgdGhpcy5yb3dEYXRhID0gYXNzb2NpYXRlZEVudGl0aWVzLm1hcCh0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5LCBhc3NvY2lhdGVkRW50aXRpZXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICBhc3NvY2lhdGVkRW50aXRpZXMgPSB0aGlzLnJvd0RhdGEubWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIGUuJGVudGl0eSB9KTtcclxuICAgIGxldCBhc3NvY2lhdGFibGVUeXBlTmFtZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZS5uYW1lXHJcbiAgICBsZXQgYXNzb2NpYXRlZE1hcE9mQXNzb2NpYXRhYmxlID0gXy5tYXAoYXNzb2NpYXRlZEVudGl0aWVzLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsnbycgKyBhc3NvY2lhdGFibGVUeXBlTmFtZV07IH0pO1xyXG4gICAgdGhpcy51bmFzc29jaWF0ZWRDaG9pY2VzID0gYXNzb2NpYXRhYmxlRW50aXRpZXMuZmlsdGVyKG9iamVjdDEgPT4ge1xyXG4gICAgICByZXR1cm4gIWFzc29jaWF0ZWRNYXBPZkFzc29jaWF0YWJsZS5zb21lKG9iamVjdDIgPT4geyByZXR1cm4gb2JqZWN0MS52YWx1ZS4kID09PSBvYmplY3QyW2Fzc29jaWF0YWJsZVR5cGVOYW1lICsgJ1JlZiddOyB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnREYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zaG93RXhwb3J0RGlhbG9nKCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XHJcbiAgICAgIGxldCBleHBvcnRHcmlkU3BlYztcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlKVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUubmFtZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gJyRjdXN0b209JyArIDE7XHJcblxyXG4gICAgICBsZXQgcm93Tm9kZXM6IGFueSA9IFtdO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5mb3JFYWNoTm9kZSgocm93Tm9kZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgcm93Tm9kZXMucHVzaChyb3dOb2RlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZWZzID0gXy5tYXAocm93Tm9kZXMsIChyb3dOb2RlKSA9PiB7IHJldHVybiByb3dOb2RlLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddOyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dFxyXG4gICAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAgIC5leHBvcnQodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUsIGV4cG9ydEdyaWRTcGVjLCB0aGlzLmxhdGVzdFNldHVwUXVlcnksIHJlZnMuam9pbignLCcpLCByZXN1bHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJvd0RhdGFDaGFuZ2VkID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucm93RGF0YSA9PT0gbnVsbClcclxuICAgICAgdGhpcy5zZXROb1Jvd3NUZW1wbGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsRG91YmxlQ2xpY2tlZCA9IChncmlkQ29uZmlnOiBhbnkpID0+IHtcclxuICAgIGlmIChncmlkQ29uZmlnLmNvbERlZi5jZWxsQ2xhc3MgPT09ICdhZy1way1hbGlnbmVkLWNlbGwnKVxyXG4gICAgICB0aGlzLmNvbmZpZy5yb3dIZWFkZXJEb3VibGVDbGlja2VkKGdyaWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2ggPSAoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICBsZXQgZW50aXR5TG9hZGVkID0gdGhpcy5sb2FkZWRFbnRpdGllcy5zb21lKChyZWYpID0+IHsgcmV0dXJuIHJlZiA9PT0gdGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXTsgfSk7XHJcbiAgICBsZXQgam9pbnMgPSBbXTtcclxuICAgIGlmIChlbnRpdHlMb2FkZWQpIHtcclxuICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaENhY2hlT25seShcclxuICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSxcclxuICAgICAgICBzZXR1cFF1ZXJ5LFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCBmYWxzZSkpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMsIGZhbHNlKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCB0cnVlKSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhdGVzdFNldHVwUXVlcnkgPSBzZXR1cFF1ZXJ5O1xyXG5cclxuICAgIGZvcmtKb2luKGpvaW5zKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLnNldE5vUm93c1RlbXBsYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgICAgIHRoaXMubG9hZE1hbnlUb01hbnlHcmlkRGF0YShyZXN1bHRzWzBdLCByZXN1bHRzWzFdLCB0cnVlKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmxvYWRHcmlkRGF0YShyZXN1bHRzWzBdKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkVHlwZSAhPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2gpXHJcbiAgICAgICAgICB0aGlzLmxvYWRlZEVudGl0aWVzLnB1c2godGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25VbmFzc29jaWF0ZWRDaG9pY2VDaGFuZ2VkID0gKG9wdGlvbjogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB8IG51bGwpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBjYW5BZGQgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkFkZCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgbGV0IHBhcmVudE5hbWUgPSB0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICBsZXQgYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZTtcclxuICAgICAgbGV0IHVuYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGU7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlLnZhbHVlLiQ7XHJcbiAgICAgIGxldCBjaGlsZFRvQXNzb2NpYXRlID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hCeVJlZkNhY2hlT25seSh1bmFzc29jaWF0ZWRUeXBlLCByZWYsIHRydWUpXHJcbiAgICAgIGlmIChjaGlsZFRvQXNzb2NpYXRlKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlIG1hbnktdG8tbWFueSBlbnRpdHlcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZChhc3NvY2lhdGVkVHlwZSkpO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3VuYXNzb2NpYXRlZFR5cGUubmFtZSArICdSZWYnXSA9IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3BhcmVudE5hbWUgKyAnUmVmJ10gPSB0aGlzLmVudGl0eVtwYXJlbnROYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gdGhlIGFkZCBkcm9wZG93biBjb250cm9sXHJcbiAgICAgICAgbGV0IGl0ZW1JbmRleCA9IHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5maW5kSW5kZXgoKGNob2ljZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNob2ljZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ10gPT09IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgICAvLyBjbGVhciBhZGQgc2VsZWN0aW9uXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBhZGQgcm93IHRvIGdyaWRcclxuICAgICAgICB0aGlzLnVuc2F2ZWRFbnRpdGllcy5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW25ld0VudGl0eV0sIGFkZEluZGV4OiAwIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSkpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbbmV3RW50aXR5XSwgYWRkSW5kZXg6IDAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBlbnRpdGllcyA9IHNlbGVjdGVkUm93cy5tYXAoZnVuY3Rpb24gKHJvdzogYW55KSB7IHJldHVybiByb3cuJGVudGl0eTsgfSk7XHJcbiAgICAgIGxldCBjb25maXJtTXNnID0gdGhpcy5hcHBFbnZpcm9ubWVudC5mb3JtYXREZWxldGVDb25maXJtYXRpb25NZXNzYWdlKHRoaXMuY29uZmlnLnRhYmxlTmFtZSwgdGhpcy5jb25maWcudGFibGVQbHVyYWxMYWJlbCwgc2VsZWN0ZWRSb3dzLmxlbmd0aCk7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgICBsZXQgb25TdWNjZXNzID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZywgb25TdWNjZXNzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ05vUmVjb3Jkc1NlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2VlcCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKVxyXG4gICAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogc2VsZWN0ZWRSb3dzIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZXREZWZhdWx0UmVzdWx0VmlldyA9ICgpOiB2b2lkID0+IHtcclxuICAgIGFsZXJ0KCdOb3QgSW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5leHBvcnREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jb2x1bW5EZWZzO1xyXG4gICAgdGhpcy5ncmlkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5ncmlkVHlwZTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb25IdWIuc3Vic2NyaWJlKFxyXG4gICAgICB0aGlzLmRhdGFDb250ZXh0LFxyXG4gICAgICB0aGlzLmNvbmZpZy50YWJsZU5hbWUsXHJcbiAgICAgICgpID0+IHsgcmV0dXJuIHRoaXMubG9hZGVkRW50aXRpZXMgfSxcclxuICAgICAgKCkgPT4geyByZXR1cm4gdGhpcy5sYXRlc3RTZXR1cFF1ZXJ5IH0sXHJcbiAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzLFxyXG4gICAgICBbXSxcclxuICAgICAgKCkgPT4geyByZXR1cm4gdHJ1ZTsgfSkuc3Vic2NyaWJlKChkYXRhQ2hhbmdlOiBUcnVEYXRhQ2hhbmdlKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coZGF0YUNoYW5nZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsIHx8IHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy9zZXRUaW1lb3V0IHRvIHByZXZlbnQ6IEVSUk9SIEVycm9yOiBORzAxMDA6IEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuIFxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMucGFyZW50VG9vbGJhclRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRWaWV3TWFuYWdlci5zZWFyY2hWaWV3VG9vbGJhclRlbXBsYXRlO1xyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWwgfHwgdGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KSB7XHJcbiAgICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRhdGEtZ3JpZC10b29sYmFyLWNvbnRhaW5lclwiPlxyXG4gICAgPHRydS10b29sYmFyPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwidW5hc3NvY2lhdGVkQ2hvaWNlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkT3B0aW9uKV09XCJzZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVW5hc3NvY2lhdGVkQ2hvaWNlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55XCI+XHJcbiAgICAgIDwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWFkZC1pY29uJ1wiIFt0b29sdGlwXT1cIidBZGQgLSBbQ3RybCArIEldJ1wiIFtkaXNhYmxlZF09XCIhY2FuQWRkKClcIiAob25DbGljayk9XCJvbkFkZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWRlbGV0ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidEZWxldGUgLSBbQ3RybCArIERdJ1wiIChjbGljayk9XCJvbkRlbGV0ZSgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWtlZXAtaWNvbidcIiBbdG9vbHRpcF09XCInS2VlcCBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBLXSdcIiAoY2xpY2spPVwib25LZWVwKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItcmVtb3ZlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ1JlbW92ZSBzZWxlY3RlZCByZWNvcmRzIC0gW0N0cmwgKyBSXSdcIiAoY2xpY2spPVwib25SZW1vdmUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItc2VwYXJhdG9yPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1zdGFyLWVtcHR5LWljb24nXCIgW3Rvb2x0aXBdPVwiJ1NldCB0aGlzIHJlc3VsdCB2aWV3IGFzIGRlZmF1bHQnXCIgKGNsaWNrKT1cIm9uU2V0RGVmYXVsdFJlc3VsdFZpZXcoKVwiICpuZ0lmPVwiZ3JpZFR5cGUgPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2hcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLXNlcGFyYXRvciAqbmdJZj1cImdyaWRUeXBlID09IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXCI+PC90cnUtdG9vbGJhci1zZXBhcmF0b3I+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLWV4cG9ydC1pY29uJ1wiIFt0b29sdGlwXT1cIidFeHBvcnQnXCIgKGNsaWNrKT1cIm9uRXhwb3J0KClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDwvdHJ1LXRvb2xiYXI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFyZW50VG9vbGJhclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kYXRhLWdyaWQtY29udGFpbmVyXCI+XHJcbiAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2dyaWRPcHRpb25zXT1cImdyaWRPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbaGVhZGVySGVpZ2h0XT1cIjI1XCJcclxuICAgICAgICAgICAgICAgICAgICAgW3Jvd0hlaWdodF09XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvdmVybGF5TG9hZGluZ1RlbXBsYXRlXT1cImxvYWRpbmdUZW1wbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvdmVybGF5Tm9Sb3dzVGVtcGxhdGVdPVwibm9Sb3dzVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAoY2VsbERvdWJsZUNsaWNrZWQpPVwib25DZWxsRG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgKHJvd0RhdGFDaGFuZ2VkKT1cIm9uUm93RGF0YUNoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC9hZy1ncmlkLWFuZ3VsYXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import * as signalR from "@microsoft/signalr";
|
|
3
|
+
import { TruDataChangeParser } from '../classes/tru-data-change-parser';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
skipNegotiation: true,
|
|
7
|
-
transport: signalR.HttpTransportType.WebSockets,
|
|
8
|
-
}).withAutomaticReconnect().build();
|
|
5
|
+
import * as i1 from "./tru-app-environment";
|
|
6
|
+
import * as i2 from "./tru-model-property-lookup";
|
|
9
7
|
export class TruConnectionHub {
|
|
10
|
-
constructor() {
|
|
8
|
+
constructor(appEnvironment, modelPropertyLookup) {
|
|
9
|
+
this.appEnvironment = appEnvironment;
|
|
10
|
+
this.modelPropertyLookup = modelPropertyLookup;
|
|
11
11
|
this.start = () => {
|
|
12
|
-
connection.on("
|
|
12
|
+
this.connection.on("error", (value) => {
|
|
13
13
|
console.log(JSON.parse(value));
|
|
14
14
|
});
|
|
15
15
|
try {
|
|
16
16
|
Object.defineProperty(WebSocket, 'OPEN', { value: 1, });
|
|
17
|
-
connection.start().then(() => {
|
|
18
|
-
connection.invoke('getConnectionId')
|
|
19
|
-
.then(
|
|
17
|
+
this.connection.start().then(() => {
|
|
18
|
+
this.connection.invoke('getConnectionId')
|
|
19
|
+
.then((connectionId) => {
|
|
20
20
|
console.log(`SignalR connection success! connectionId: ${connectionId}`);
|
|
21
21
|
});
|
|
22
22
|
});
|
|
@@ -25,14 +25,22 @@ export class TruConnectionHub {
|
|
|
25
25
|
console.log(`SignalR connection error: ${error}`);
|
|
26
26
|
}
|
|
27
27
|
};
|
|
28
|
+
this.subscribe = (dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded) => {
|
|
29
|
+
return new TruDataChangeParser(this.connection, dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
|
|
30
|
+
};
|
|
31
|
+
this.connection = new signalR.HubConnectionBuilder()
|
|
32
|
+
.withUrl(`${this.appEnvironment.appUri}/notificationhub`, {
|
|
33
|
+
skipNegotiation: true,
|
|
34
|
+
transport: signalR.HttpTransportType.WebSockets,
|
|
35
|
+
}).withAutomaticReconnect().build();
|
|
28
36
|
}
|
|
29
37
|
}
|
|
30
|
-
TruConnectionHub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
38
|
+
TruConnectionHub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, deps: [{ token: i1.TruAppEnvironment }, { token: i2.TruModelPropertyLookup }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
31
39
|
TruConnectionHub.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, providedIn: 'root' });
|
|
32
40
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, decorators: [{
|
|
33
41
|
type: Injectable,
|
|
34
42
|
args: [{
|
|
35
43
|
providedIn: 'root',
|
|
36
44
|
}]
|
|
37
|
-
}], ctorParameters: function () { return []; } });
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
45
|
+
}], ctorParameters: function () { return [{ type: i1.TruAppEnvironment }, { type: i2.TruModelPropertyLookup }]; } });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNvbm5lY3Rpb24taHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtY29ubmVjdGlvbi1odWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBRzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUXhFLE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsY0FBaUMsRUFBVSxtQkFBMkM7UUFBdEYsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVUsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQVExRyxVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSTtnQkFDRixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzt5QkFDdEMsSUFBSSxDQUFDLENBQUMsWUFBb0IsRUFBRSxFQUFFO3dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxZQUFZLEVBQUUsQ0FBQyxDQUFDO29CQUMzRSxDQUFDLENBQUMsQ0FBQTtnQkFDTixDQUFDLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNuRDtRQUNILENBQUMsQ0FBQTtRQUVELGNBQVMsR0FBRyxDQUNWLFdBQTJCLEVBQzNCLFNBQWlCLEVBQ2pCLGdCQUEyQixFQUMzQixjQUF5QixFQUN6QixjQUFrQixFQUNsQixXQUEwQixFQUMxQixRQUF1QixFQUEwQixFQUFFO1lBQ25ELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdMLENBQUMsQ0FBQTtRQWxDQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLG9CQUFvQixFQUFFO2FBQ2pELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxrQkFBa0IsRUFBRTtZQUN4RCxlQUFlLEVBQUUsSUFBSTtZQUNyQixTQUFTLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFVBQVU7U0FDaEQsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7NkdBVFUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIHNpZ25hbFIgZnJvbSBcIkBtaWNyb3NvZnQvc2lnbmFsclwiXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZVBhcnNlciB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlLXBhcnNlcic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSAnLi90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDb25uZWN0aW9uSHViIHtcclxuICBwcml2YXRlIGNvbm5lY3Rpb246IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsIHByaXZhdGUgbW9kZWxQcm9wZXJ0eUxvb2t1cDogVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCkge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IHNpZ25hbFIuSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gICAgICAud2l0aFVybChgJHt0aGlzLmFwcEVudmlyb25tZW50LmFwcFVyaX0vbm90aWZpY2F0aW9uaHViYCwge1xyXG4gICAgICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSxcclxuICAgICAgICB0cmFuc3BvcnQ6IHNpZ25hbFIuSHR0cFRyYW5zcG9ydFR5cGUuV2ViU29ja2V0cyxcclxuICAgICAgfSkud2l0aEF1dG9tYXRpY1JlY29ubmVjdCgpLmJ1aWxkKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbihcImVycm9yXCIsICh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04ucGFyc2UodmFsdWUpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJTb2NrZXQsICdPUEVOJywgeyB2YWx1ZTogMSwgfSk7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5zdGFydCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoJ2dldENvbm5lY3Rpb25JZCcpXHJcbiAgICAgICAgICAudGhlbigoY29ubmVjdGlvbklkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFNpZ25hbFIgY29ubmVjdGlvbiBzdWNjZXNzISBjb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgU2lnbmFsUiBjb25uZWN0aW9uIGVycm9yOiAke2Vycm9yfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlID0gKFxyXG4gICAgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBnZXRMYXRlc3RSZXN1bHRzOiAoKSA9PiBhbnksXHJcbiAgICBnZXRMYXRlc3RRdWVyeTogKCkgPT4gYW55LFxyXG4gICAgY29udGV4dEZpbHRlcnM6IFtdLFxyXG4gICAgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz4sXHJcbiAgICBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbik6IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4gPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBUcnVEYXRhQ2hhbmdlUGFyc2VyKHRoaXMuY29ubmVjdGlvbiwgZGF0YUNvbnRleHQsIHRhYmxlTmFtZSwgZ2V0TGF0ZXN0UmVzdWx0cywgZ2V0TGF0ZXN0UXVlcnksIGNvbnRleHRGaWx0ZXJzLCBleHBhbmRQYXRocywgaXNMb2FkZWQsIHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cCkub25EYXRhQ2hhbmdlZCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -19,4 +19,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
19
19
|
providedIn: 'root',
|
|
20
20
|
}]
|
|
21
21
|
}], ctorParameters: function () { return []; } });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LW1vZGVsLXByb3BlcnR5LWxvb2t1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LW1vZGVsLXByb3BlcnR5LWxvb2t1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDO1FBRlEsWUFBTyxHQUF1QyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztJQUVoRixDQUFDO0lBRWhCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBeUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQzs7bUhBWFUsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FGckIsTUFBTTsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRydVByb3BlcnR5Q29uZmlnQmFzZSB9IGZyb20gXCIuLi9iYXNlLWNsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1iYXNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB7XHJcbiAgcHJpdmF0ZSBfbG9va3VwOiBNYXA8c3RyaW5nLCBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2U+ID0gbmV3IE1hcDxzdHJpbmcsIFRydVByb3BlcnR5Q29uZmlnQmFzZT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBnZXQgbG9va3VwKCk6IE1hcDxzdHJpbmcsIFRydVByb3BlcnR5Q29uZmlnQmFzZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvb2t1cDtcclxuICB9XHJcblxyXG4gIHNldCBsb29rdXAodmFsdWU6IE1hcDxzdHJpbmcsIFRydVByb3BlcnR5Q29uZmlnQmFzZT4pICB7XHJcbiAgICB0aGlzLl9sb29rdXAgPSB2YWx1ZTtcclxuICB9XHJcbn1cclxuIl19
|