@trudb/tru-common-lib 0.0.492 → 0.0.494

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.
@@ -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 "@angular/common";
12
- import * as i7 from "ag-grid-angular";
13
- import * as i8 from "../toolbar/tru-toolbar";
14
- import * as i9 from "../toolbar/button/tru-toolbar-button";
15
- import * as i10 from "../toolbar/dropdown/tru-toolbar-dropdown";
16
- import * as i11 from "../toolbar/separator/tru-toolbar-separator";
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 = [];
@@ -221,6 +223,9 @@ export class TruDataGrid {
221
223
  this.onExport = () => {
222
224
  this.exportData();
223
225
  };
226
+ this.connectionHub.subscribe(this.dataContext, this.config.tableName, () => { return this.loadedEntities; }, () => { return this.latestSetupQuery; }, this.config.resultConfig.expands, [], () => { return true; }).subscribe((dataChange) => {
227
+ console.log(dataChange);
228
+ });
224
229
  }
225
230
  ngOnInit() {
226
231
  this.subscribeTo();
@@ -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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LE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIgfSBmcm9tICcuLi8uLi9iYXNlLXZpZXdzL3NlYXJjaC9zZXJ2aWNlcy90cnUtc2VhcmNoLXZpZXctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XHJcbmltcG9ydCB7IFRydVVpTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXVpLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IElUcnVEYXRhR3JpZENvbmZpZyB9IGZyb20gJy4vY2xhc3Nlcy90cnUtZGF0YS1ncmlkLWNvbmZpZyc7XHJcbmltcG9ydCB7IFRydURhdGFHcmlkVHlwZXMgfSBmcm9tICcuL2VudW1zL3RydS1kYXRhLWdyaWQtdHlwZXMnO1xyXG5pbXBvcnQgeyBJVHJ1VG9vbGJhckRyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vdG9vbGJhci9jbGFzc2VzL3RydS10b29sYmFyLWRyb3Bkb3duLW9wdGlvbic7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBza2lwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCAqIGFzIF8gZnJvbSAndW5kZXJzY29yZSc7XHJcbmltcG9ydCB7IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1tYW5hZ2VyJztcclxuaW1wb3J0IHsgVHJ1Q29ubmVjdGlvbkh1YiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1jb25uZWN0aW9uLWh1Yic7XHJcbmltcG9ydCB7IFRydURhdGFDaGFuZ2UgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RydS1kYXRhLWNoYW5nZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydS1kYXRhLWdyaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90cnUtZGF0YS1ncmlkLmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1kYXRhLWdyaWQuY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBob3N0OiB7J1tjbGFzcy50cnUtZGF0YS1ncmlkXSc6ICd0cnVlJ31cclxufSlcclxuZXhwb3J0IGNsYXNzIFRydURhdGFHcmlkIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyVmlld0luaXQge1xyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IElUcnVEYXRhR3JpZENvbmZpZztcclxuICBASW5wdXQoKSBlbnRpdHkhOiBhbnk7XHJcbiAgQElucHV0KCkgbmFtZSE6IGFueTtcclxuXHJcbiAgVHJ1RGF0YUdyaWRUeXBlcyA9IFRydURhdGFHcmlkVHlwZXM7XHJcblxyXG4gIGNvbHVtbkRlZnM6IGFueSA9IFtdO1xyXG4gIHJvd0RhdGE6IGFueSA9IFtdO1xyXG4gIHZpZXdDaG9pY2VzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgc2VsZWN0ZWRWaWV3Q2hvaWNlOiBhbnk7XHJcbiAgdW5hc3NvY2lhdGVkQ2hvaWNlczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIHNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlOiBhbnk7XHJcbiAgbG9hZGluZ1RlbXBsYXRlOiBzdHJpbmcgPSAnPHNwYW4gY2xhc3M9XCJhZy1vdmVybGF5LWxvYWRpbmctY2VudGVyXCI+IERhdGEgaXMgbG9hZGluZy4uLjwvc3Bhbj4nO1xyXG4gIG5vUm93c1RlbXBsYXRlOiBzdHJpbmcgPSBgPHNwYW4+UnVuIGEgc2VhcmNoIHRvIGZpbmQgaXRlbXMuPC9zcGFuPmA7XHJcbiAgZ3JpZFR5cGU6IFRydURhdGFHcmlkVHlwZXMgPSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaFxyXG4gIHVuc2F2ZWRFbnRpdGllczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIGxvYWRlZEVudGl0aWVzOiBBcnJheTxhbnk+ID0gW107XHJcbiAgbGF0ZXN0U2V0dXBRdWVyeTogYW55O1xyXG4gIGdyaWRPcHRpb25zOiBhbnkgPSB7XHJcbiAgICByb3dTZWxlY3Rpb246ICdtdWx0aXBsZScsXHJcbiAgICByb3dTdHlsZTogeyBiYWNrZ3JvdW5kOiAnd2hpdGUnIH0sXHJcbiAgICBvblNlbGVjdGlvbkNoYW5nZWQ6IChwYXJhbXM6IGFueSkgPT4geyB9LFxyXG4gICAgb25DZWxsRWRpdGluZ1N0b3BwZWQ6IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5yZWRyYXdSb3dzKHsgcm93Tm9kZXM6IHBhcmFtcy5ub2RlIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBwYXJlbnRUb29sYmFyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRhdGFDb250ZXh0OiBUcnVEYXRhQ29udGV4dCxcclxuICAgIHByaXZhdGUgc2VhcmNoUmVzdWx0Vmlld01hbmFnZXI6IFRydVNlYXJjaFJlc3VsdFZpZXdNYW5hZ2VyLFxyXG4gICAgcHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIHNlYXJjaFZpZXdFdmVudEhhbmRsZXI6IFRydVNlYXJjaFZpZXdFdmVudEhhbmRsZXIsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgY29ubmVjdGlvbkh1YjogVHJ1Q29ubmVjdGlvbkh1Yikge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uSHViLnN1YnNjcmliZShcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dCxcclxuICAgICAgdGhpcy5jb25maWcudGFibGVOYW1lLFxyXG4gICAgICAoKSA9PiB7IHJldHVybiB0aGlzLmxvYWRlZEVudGl0aWVzIH0sXHJcbiAgICAgICgpID0+IHsgcmV0dXJuIHRoaXMubGF0ZXN0U2V0dXBRdWVyeSB9LFxyXG4gICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZXhwYW5kcyxcclxuICAgICAgW10sXHJcbiAgICAgICgpID0+IHsgcmV0dXJuIHRydWU7IH0pLnN1YnNjcmliZSgoZGF0YUNoYW5nZTogVHJ1RGF0YUNoYW5nZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGRhdGFDaGFuZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuaGFuY2VSb3dEYXRhRm9yRW50aXR5ID0gKGVudGl0eTogYW55KSA9PiB7XHJcbiAgICBsZXQgcm93RGF0YSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5yb3dEYXRhRW5oYW5jZXIoZW50aXR5KTtcclxuICAgIHJvd0RhdGEuJGVudGl0eSA9IGVudGl0eTtcclxuICAgIHJldHVybiByb3dEYXRhO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgc2V0Tm9Sb3dzVGVtcGxhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm5vUm93c1RlbXBsYXRlID0gYDxzcGFuPk5vIHJvd3MgdG8gc2hvdy48L3NwYW4+YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG8gPSAoKSA9PiB7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uU2F2ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwpXHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkucmVkcmF3Um93cygpO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLmFwcEVudmlyb25tZW50Lm9uUmV2ZXJ0Q29tcGxldGUkLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgIGlmIChldmVudD8uc3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgIGxldCByb3dOb2RlczogYW55ID0gW107XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuZm9yRWFjaE5vZGUoKHJvd05vZGU6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIHJvd05vZGVzLnB1c2gocm93Tm9kZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IHJvd05vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKVxyXG4gICAgICAgICAgaWYgKHJvd05vZGVzW2ldLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddIDwgMClcclxuICAgICAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkudXBkYXRlUm93RGF0YSh7IHJlbW92ZTogW3Jvd05vZGVzW2ldLmRhdGFdIH0pO1xyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLnJlZHJhd1Jvd3MoKTtcclxuICAgICAgfVxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5hcHBFbnZpcm9ubWVudC5vbkRlbGV0ZUNvbXBsZXRlJC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQ/LnN1Y2Nlc3NmdWwgJiYgZXZlbnQuZW50aXRpZXMgJiYgZXZlbnQuZW50aXRpZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IHJvd3NUb1JlbW92ZTogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnJvd0RhdGEubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSBldmVudC5lbnRpdGllcy5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yb3dEYXRhW2ldLiRlbnRpdHkgPT09IGV2ZW50LmVudGl0aWVzW2pdKVxyXG4gICAgICAgICAgICAgIHJvd3NUb1JlbW92ZS5wdXNoKHRoaXMucm93RGF0YVtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmFwcGx5VHJhbnNhY3Rpb24oeyByZW1vdmU6IHJvd3NUb1JlbW92ZSB9KTtcclxuICAgICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5yZWRyYXdSb3dzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZWFyY2hWaWV3RXZlbnRIYW5kbGVyLm9uU2VhcmNoKCkucGlwZShza2lwKDEpKS5zdWJzY3JpYmUoKHNldHVwUXVlcnk6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLm9uU2VhcmNoKHNldHVwUXVlcnkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRHcmlkRGF0YSA9IChlbnRpdGllczogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgdGhpcy5yb3dEYXRhID0gZW50aXRpZXMubWFwKHRoaXMuZW5oYW5jZVJvd0RhdGFGb3JFbnRpdHksIGVudGl0aWVzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE1hbnlUb01hbnlHcmlkRGF0YSA9IChhc3NvY2lhdGVkRW50aXRpZXM6IEFycmF5PGFueT4sIGFzc29jaWF0YWJsZUVudGl0aWVzOiBBcnJheTxhbnk+LCBpbml0YWxMb2FkOiBib29sZWFuKSA9PiB7XHJcbiAgICBpZiAoaW5pdGFsTG9hZClcclxuICAgICAgdGhpcy5yb3dEYXRhID0gYXNzb2NpYXRlZEVudGl0aWVzLm1hcCh0aGlzLmVuaGFuY2VSb3dEYXRhRm9yRW50aXR5LCBhc3NvY2lhdGVkRW50aXRpZXMpO1xyXG4gICAgZWxzZVxyXG4gICAgICBhc3NvY2lhdGVkRW50aXRpZXMgPSB0aGlzLnJvd0RhdGEubWFwKChlOiBhbnkpID0+IHsgcmV0dXJuIGUuJGVudGl0eSB9KTtcclxuICAgIGxldCBhc3NvY2lhdGFibGVUeXBlTmFtZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlNYW55VG9NYW55VHlwZS5uYW1lXHJcbiAgICBsZXQgYXNzb2NpYXRlZE1hcE9mQXNzb2NpYXRhYmxlID0gXy5tYXAoYXNzb2NpYXRlZEVudGl0aWVzLCBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZVsnbycgKyBhc3NvY2lhdGFibGVUeXBlTmFtZV07IH0pO1xyXG4gICAgdGhpcy51bmFzc29jaWF0ZWRDaG9pY2VzID0gYXNzb2NpYXRhYmxlRW50aXRpZXMuZmlsdGVyKG9iamVjdDEgPT4ge1xyXG4gICAgICByZXR1cm4gIWFzc29jaWF0ZWRNYXBPZkFzc29jaWF0YWJsZS5zb21lKG9iamVjdDIgPT4geyByZXR1cm4gb2JqZWN0MS52YWx1ZS4kID09PSBvYmplY3QyW2Fzc29jaWF0YWJsZVR5cGVOYW1lICsgJ1JlZiddOyB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnREYXRhID0gKCkgPT4ge1xyXG4gICAgdGhpcy51aU5vdGlmaWNhdGlvbi5zaG93RXhwb3J0RGlhbG9nKCkudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmICghcmVzdWx0KSByZXR1cm47XHJcbiAgICAgIGxldCBleHBvcnRHcmlkU3BlYztcclxuICAgICAgaWYgKHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlKVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUubmFtZTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIGV4cG9ydEdyaWRTcGVjID0gJyRjdXN0b209JyArIDE7XHJcblxyXG4gICAgICBsZXQgcm93Tm9kZXM6IGFueSA9IFtdO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5mb3JFYWNoTm9kZSgocm93Tm9kZTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgcm93Tm9kZXMucHVzaChyb3dOb2RlKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGxldCByZWZzID0gXy5tYXAocm93Tm9kZXMsIChyb3dOb2RlKSA9PiB7IHJldHVybiByb3dOb2RlLmRhdGEuJGVudGl0eVt0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZS5uYW1lICsgJ1JlZiddOyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ29udGV4dFxyXG4gICAgICAgIC5lbnRpdHlBY2Nlc3MoKVxyXG4gICAgICAgIC5leHBvcnQodGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmVudGl0eVR5cGUsIGV4cG9ydEdyaWRTcGVjLCB0aGlzLmxhdGVzdFNldHVwUXVlcnksIHJlZnMuam9pbignLCcpLCByZXN1bHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblJvd0RhdGFDaGFuZ2VkID0gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgaWYgKHRoaXMucm93RGF0YSA9PT0gbnVsbClcclxuICAgICAgdGhpcy5zZXROb1Jvd3NUZW1wbGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DZWxsRG91YmxlQ2xpY2tlZCA9IChncmlkQ29uZmlnOiBhbnkpID0+IHtcclxuICAgIGlmIChncmlkQ29uZmlnLmNvbERlZi5jZWxsQ2xhc3MgPT09ICdhZy1way1hbGlnbmVkLWNlbGwnKVxyXG4gICAgICB0aGlzLmNvbmZpZy5yb3dIZWFkZXJEb3VibGVDbGlja2VkKGdyaWRDb25maWcpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2ggPSAoc2V0dXBRdWVyeTogYW55KSA9PiB7XHJcbiAgICBsZXQgZW50aXR5TG9hZGVkID0gdGhpcy5sb2FkZWRFbnRpdGllcy5zb21lKChyZWYpID0+IHsgcmV0dXJuIHJlZiA9PT0gdGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXTsgfSk7XHJcbiAgICBsZXQgam9pbnMgPSBbXTtcclxuICAgIGlmIChlbnRpdHlMb2FkZWQpIHtcclxuICAgICAgam9pbnMucHVzaCh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLnNlYXJjaENhY2hlT25seShcclxuICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSxcclxuICAgICAgICBzZXR1cFF1ZXJ5LFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5leHBhbmRzKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCBmYWxzZSkpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBqb2lucy5wdXNoKHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuc2VhcmNoKFxyXG4gICAgICAgIHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5lbnRpdHlUeXBlLFxyXG4gICAgICAgIHNldHVwUXVlcnksXHJcbiAgICAgICAgdGhpcy5jb25maWcucmVzdWx0Q29uZmlnLmV4cGFuZHMsIGZhbHNlKSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICAgIGpvaW5zLnB1c2godGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hRdWVyeUNob2ljZXMoXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGUsXHJcbiAgICAgICAgICB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcubWFueVRvTWFueVNldHVwUXVlcnkodGhpcy5lbnRpdHkpLCBudWxsLCB0cnVlKSlcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxhdGVzdFNldHVwUXVlcnkgPSBzZXR1cFF1ZXJ5O1xyXG5cclxuICAgIGZvcmtKb2luKGpvaW5zKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXN1bHRzID0+IHtcclxuICAgICAgICB0aGlzLnNldE5vUm93c1RlbXBsYXRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSlcclxuICAgICAgICAgIHRoaXMubG9hZE1hbnlUb01hbnlHcmlkRGF0YShyZXN1bHRzWzBdLCByZXN1bHRzWzFdLCB0cnVlKTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICB0aGlzLmxvYWRHcmlkRGF0YShyZXN1bHRzWzBdKTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5ncmlkVHlwZSAhPT0gVHJ1RGF0YUdyaWRUeXBlcy5TZWFyY2gpXHJcbiAgICAgICAgICB0aGlzLmxvYWRlZEVudGl0aWVzLnB1c2godGhpcy5lbnRpdHlbdGhpcy5lbnRpdHkuY29uc3RydWN0b3IubmFtZSArICdSZWYnXSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25VbmFzc29jaWF0ZWRDaG9pY2VDaGFuZ2VkID0gKG9wdGlvbjogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB8IG51bGwpID0+IHtcclxuXHJcbiAgfVxyXG5cclxuICBjYW5BZGQgPSAoKTogYm9vbGVhbiA9PiB7XHJcbiAgICBpZiAodGhpcy5ncmlkVHlwZSA9PT0gVHJ1RGF0YUdyaWRUeXBlcy5EZXRhaWxNYW55VG9NYW55KVxyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSAhPT0gdW5kZWZpbmVkO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBvbkFkZCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgbGV0IHBhcmVudE5hbWUgPSB0aGlzLmVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lO1xyXG4gICAgICBsZXQgYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZTtcclxuICAgICAgbGV0IHVuYXNzb2NpYXRlZFR5cGUgPSB0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5TWFueVRvTWFueVR5cGU7XHJcbiAgICAgIGxldCByZWYgPSB0aGlzLnNlbGVjdGVkVW5hc3NvY2lhdGVkQ2hvaWNlLnZhbHVlLiQ7XHJcbiAgICAgIGxldCBjaGlsZFRvQXNzb2NpYXRlID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5zZWFyY2hCeVJlZkNhY2hlT25seSh1bmFzc29jaWF0ZWRUeXBlLCByZWYsIHRydWUpXHJcbiAgICAgIGlmIChjaGlsZFRvQXNzb2NpYXRlKSB7XHJcbiAgICAgICAgLy8gY3JlYXRlIG1hbnktdG8tbWFueSBlbnRpdHlcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZChhc3NvY2lhdGVkVHlwZSkpO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3VuYXNzb2NpYXRlZFR5cGUubmFtZSArICdSZWYnXSA9IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIG5ld0VudGl0eS4kZW50aXR5W3BhcmVudE5hbWUgKyAnUmVmJ10gPSB0aGlzLmVudGl0eVtwYXJlbnROYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gdGhlIGFkZCBkcm9wZG93biBjb250cm9sXHJcbiAgICAgICAgbGV0IGl0ZW1JbmRleCA9IHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5maW5kSW5kZXgoKGNob2ljZSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGNob2ljZVt1bmFzc29jaWF0ZWRUeXBlLm5hbWUgKyAnUmVmJ10gPT09IGNoaWxkVG9Bc3NvY2lhdGVbdW5hc3NvY2lhdGVkVHlwZS5uYW1lICsgJ1JlZiddO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudW5hc3NvY2lhdGVkQ2hvaWNlcy5zcGxpY2UoaXRlbUluZGV4LCAxKTtcclxuICAgICAgICAvLyBjbGVhciBhZGQgc2VsZWN0aW9uXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZFVuYXNzb2NpYXRlZENob2ljZSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAvLyBhZGQgcm93IHRvIGdyaWRcclxuICAgICAgICB0aGlzLnVuc2F2ZWRFbnRpdGllcy5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICAgICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IGFkZDogW25ld0VudGl0eV0sIGFkZEluZGV4OiAwIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5lbmhhbmNlUm93RGF0YUZvckVudGl0eSh0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuZW50aXR5VHlwZSkpO1xyXG4gICAgICB0aGlzLmdyaWRPcHRpb25zLmFwaS5hcHBseVRyYW5zYWN0aW9uKHsgYWRkOiBbbmV3RW50aXR5XSwgYWRkSW5kZXg6IDAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBlbnRpdGllcyA9IHNlbGVjdGVkUm93cy5tYXAoZnVuY3Rpb24gKHJvdzogYW55KSB7IHJldHVybiByb3cuJGVudGl0eTsgfSk7XHJcbiAgICAgIGxldCBjb25maXJtTXNnID0gdGhpcy5hcHBFbnZpcm9ubWVudC5mb3JtYXREZWxldGVDb25maXJtYXRpb25NZXNzYWdlKHRoaXMuY29uZmlnLnRhYmxlTmFtZSwgdGhpcy5jb25maWcudGFibGVQbHVyYWxMYWJlbCwgc2VsZWN0ZWRSb3dzLmxlbmd0aCk7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpIHtcclxuICAgICAgICBsZXQgb25TdWNjZXNzID0gKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vblNlYXJjaCh0aGlzLmNvbmZpZy5yZXN1bHRDb25maWcuc2V0dXBRdWVyeSh0aGlzLmVudGl0eSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZywgb25TdWNjZXNzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRhdGFDb250ZXh0LmRlbGV0ZShlbnRpdGllcywgY29uZmlybU1zZyk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudWlOb3RpZmljYXRpb24ud2FybmluZyh0aGlzLmFwcEVudmlyb25tZW50Lm1zZ05vUmVjb3Jkc1NlbGVjdGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uS2VlcCA9ICgpOiB2b2lkID0+IHtcclxuICAgIGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoKVxyXG4gICAgICB0aGlzLnJvd0RhdGEgPSB0aGlzLmdyaWRPcHRpb25zLmFwaS5nZXRTZWxlY3RlZFJvd3MoKTtcclxuICB9XHJcblxyXG4gIG9uUmVtb3ZlID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgbGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZE9wdGlvbnMuYXBpLmdldFNlbGVjdGVkUm93cygpO1xyXG4gICAgdGhpcy5ncmlkT3B0aW9ucy5hcGkuYXBwbHlUcmFuc2FjdGlvbih7IHJlbW92ZTogc2VsZWN0ZWRSb3dzIH0pO1xyXG4gIH1cclxuXHJcbiAgb25TZXREZWZhdWx0UmVzdWx0VmlldyA9ICgpOiB2b2lkID0+IHtcclxuICAgIGFsZXJ0KCdOb3QgSW1wbGVtZW50ZWQnKTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0ID0gKCk6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy5leHBvcnREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc3Vic2NyaWJlVG8oKTtcclxuICAgIHRoaXMuY29sdW1uRGVmcyA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5jb2x1bW5EZWZzO1xyXG4gICAgdGhpcy5ncmlkVHlwZSA9IHRoaXMuY29uZmlnLnJlc3VsdENvbmZpZy5ncmlkVHlwZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbCB8fCB0aGlzLmdyaWRUeXBlID09PSBUcnVEYXRhR3JpZFR5cGVzLkRldGFpbE1hbnlUb01hbnkpXHJcbiAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIC8vc2V0VGltZW91dCB0byBwcmV2ZW50OiBFUlJPUiBFcnJvcjogTkcwMTAwOiBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yLiBcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnBhcmVudFRvb2xiYXJUZW1wbGF0ZSA9IHRoaXMuc2VhcmNoUmVzdWx0Vmlld01hbmFnZXIuc2VhcmNoVmlld1Rvb2xiYXJUZW1wbGF0ZTtcclxuICAgICAgaWYgKHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsIHx8IHRoaXMuZ3JpZFR5cGUgPT09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueSkge1xyXG4gICAgICAgIHRoaXMub25TZWFyY2godGhpcy5jb25maWcucmVzdWx0Q29uZmlnLnNldHVwUXVlcnkodGhpcy5lbnRpdHkpKTtcclxuICAgICAgfVxyXG4gICAgfSwgMCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgPGRpdiBjbGFzcz1cInRydS1kYXRhLWdyaWQtdG9vbGJhci1jb250YWluZXJcIj5cclxuICAgIDx0cnUtdG9vbGJhcj5cclxuICAgICAgPHRydS10b29sYmFyLWRyb3Bkb3duIFtvcHRpb25zXT1cInVuYXNzb2NpYXRlZENob2ljZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzZWxlY3RlZE9wdGlvbildPVwic2VsZWN0ZWRVbmFzc29jaWF0ZWRDaG9pY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblVuYXNzb2NpYXRlZENob2ljZUNoYW5nZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdyaWRUeXBlID09IFRydURhdGFHcmlkVHlwZXMuRGV0YWlsTWFueVRvTWFueVwiPlxyXG4gICAgICA8L3RydS10b29sYmFyLWRyb3Bkb3duPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1hZGQtaWNvbidcIiBbdG9vbHRpcF09XCInQWRkIC0gW0N0cmwgKyBJXSdcIiBbZGlzYWJsZWRdPVwiIWNhbkFkZCgpXCIgKG9uQ2xpY2spPVwib25BZGQoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1kZWxldGUtaWNvbidcIiBbdG9vbHRpcF09XCInRGVsZXRlIC0gW0N0cmwgKyBEXSdcIiAoY2xpY2spPVwib25EZWxldGUoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1rZWVwLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0tlZXAgc2VsZWN0ZWQgcmVjb3JkcyAtIFtDdHJsICsgS10nXCIgKGNsaWNrKT1cIm9uS2VlcCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ3RydS10b29sYmFyLXJlbW92ZS1pY29uJ1wiIFt0b29sdGlwXT1cIidSZW1vdmUgc2VsZWN0ZWQgcmVjb3JkcyAtIFtDdHJsICsgUl0nXCIgKGNsaWNrKT1cIm9uUmVtb3ZlKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgICAgPHRydS10b29sYmFyLXNlcGFyYXRvcj48L3RydS10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCIndHJ1LXRvb2xiYXItc3Rhci1lbXB0eS1pY29uJ1wiIFt0b29sdGlwXT1cIidTZXQgdGhpcyByZXN1bHQgdmlldyBhcyBkZWZhdWx0J1wiIChjbGljayk9XCJvblNldERlZmF1bHRSZXN1bHRWaWV3KClcIiAqbmdJZj1cImdyaWRUeXBlID09IFRydURhdGFHcmlkVHlwZXMuU2VhcmNoXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICAgIDx0cnUtdG9vbGJhci1zZXBhcmF0b3IgKm5nSWY9XCJncmlkVHlwZSA9PSBUcnVEYXRhR3JpZFR5cGVzLlNlYXJjaFwiPjwvdHJ1LXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIid0cnUtdG9vbGJhci1leHBvcnQtaWNvbidcIiBbdG9vbHRpcF09XCInRXhwb3J0J1wiIChjbGljayk9XCJvbkV4cG9ydCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8L3RydS10b29sYmFyPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhcmVudFRvb2xiYXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGF0YS1ncmlkLWNvbnRhaW5lclwiPlxyXG4gICAgPGFnLWdyaWQtYW5ndWxhciBjbGFzcz1cImFnLXRoZW1lLWFscGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtncmlkT3B0aW9uc109XCJncmlkT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyb3dEYXRhXT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCJcclxuICAgICAgICAgICAgICAgICAgICAgW2hlYWRlckhlaWdodF09XCIyNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3ZlcmxheUxvYWRpbmdUZW1wbGF0ZV09XCJsb2FkaW5nVGVtcGxhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbb3ZlcmxheU5vUm93c1RlbXBsYXRlXT1cIm5vUm93c1RlbXBsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgKGNlbGxEb3VibGVDbGlja2VkKT1cIm9uQ2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIChyb3dEYXRhQ2hhbmdlZCk9XCJvblJvd0RhdGFDaGFuZ2VkKCRldmVudClcIj5cclxuICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -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
- const connection = new signalR.HubConnectionBuilder()
5
- .withUrl("https://localhost:44303/notificationhub", {
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("change", (value) => {
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(function (connectionId) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNvbm5lY3Rpb24taHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtY29ubmVjdGlvbi1odWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBOztBQUU3QyxNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRTtLQUNsRCxPQUFPLENBQUMseUNBQXlDLEVBQUU7SUFDbEQsZUFBZSxFQUFFLElBQUk7SUFDckIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVO0NBQ2hELENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBS3RDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7UUFFQSxVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtnQkFDeEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJO2dCQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDM0IsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzt5QkFDakMsSUFBSSxDQUFDLFVBQVUsWUFBWTt3QkFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2Q0FBNkMsWUFBWSxFQUFFLENBQUMsQ0FBQztvQkFDM0UsQ0FBQyxDQUFDLENBQUE7Z0JBQ04sQ0FBQyxDQUFDLENBQUM7YUFDSjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEtBQUssRUFBRSxDQUFDLENBQUM7YUFDbkQ7UUFDSCxDQUFDLENBQUE7SUFsQmMsQ0FBQzs7NkdBREwsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIHNpZ25hbFIgZnJvbSBcIkBtaWNyb3NvZnQvc2lnbmFsclwiXHJcblxyXG5jb25zdCBjb25uZWN0aW9uID0gbmV3IHNpZ25hbFIuSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gIC53aXRoVXJsKFwiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzMDMvbm90aWZpY2F0aW9uaHViXCIsIHtcclxuICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSxcclxuICAgIHRyYW5zcG9ydDogc2lnbmFsUi5IdHRwVHJhbnNwb3J0VHlwZS5XZWJTb2NrZXRzLFxyXG4gIH0pLndpdGhBdXRvbWF0aWNSZWNvbm5lY3QoKS5idWlsZCgpO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUNvbm5lY3Rpb25IdWIge1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgc3RhcnQgPSAoKSA9PiB7XHJcbiAgICBjb25uZWN0aW9uLm9uKFwiY2hhbmdlXCIsICh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04ucGFyc2UodmFsdWUpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJTb2NrZXQsICdPUEVOJywgeyB2YWx1ZTogMSwgfSk7XHJcbiAgICAgIGNvbm5lY3Rpb24uc3RhcnQoKS50aGVuKCgpID0+IHtcclxuICAgICAgICBjb25uZWN0aW9uLmludm9rZSgnZ2V0Q29ubmVjdGlvbklkJylcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChjb25uZWN0aW9uSWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFNpZ25hbFIgY29ubmVjdGlvbiBzdWNjZXNzISBjb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgU2lnbmFsUiBjb25uZWN0aW9uIGVycm9yOiAke2Vycm9yfWApO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
45
+ }], ctorParameters: function () { return [{ type: i1.TruAppEnvironment }, { type: i2.TruModelPropertyLookup }]; } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNvbm5lY3Rpb24taHViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9zZXJ2aWNlcy90cnUtY29ubmVjdGlvbi1odWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBRzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBUXhFLE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsWUFBb0IsY0FBaUMsRUFBVSxtQkFBMkM7UUFBdEYsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQVUsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF3QjtRQVExRyxVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7Z0JBQzVDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSTtnQkFDRixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO29CQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQzt5QkFDdEMsSUFBSSxDQUFDLENBQUMsWUFBb0IsRUFBRSxFQUFFO3dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLDZDQUE2QyxZQUFZLEVBQUUsQ0FBQyxDQUFDO29CQUMzRSxDQUFDLENBQUMsQ0FBQTtnQkFDTixDQUFDLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUNuRDtRQUNILENBQUMsQ0FBQTtRQUVELGNBQVMsR0FBRyxDQUNWLFdBQTJCLEVBQzNCLFNBQWlCLEVBQ2pCLGdCQUEyQixFQUMzQixjQUF5QixFQUN6QixjQUFrQixFQUNsQixXQUEwQixFQUMxQixRQUF1QixFQUEwQixFQUFFO1lBQ25ELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdMLENBQUMsQ0FBQTtRQWxDQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLG9CQUFvQixFQUFFO2FBQ2pELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxrQkFBa0IsRUFBRTtZQUN4RCxlQUFlLEVBQUUsSUFBSTtZQUNyQixTQUFTLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFVBQVU7U0FDaEQsQ0FBQyxDQUFDLHNCQUFzQixFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDeEMsQ0FBQzs7NkdBVFUsZ0JBQWdCO2lIQUFoQixnQkFBZ0IsY0FGZixNQUFNOzJGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIHNpZ25hbFIgZnJvbSBcIkBtaWNyb3NvZnQvc2lnbmFsclwiXHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZSB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNoYW5nZVBhcnNlciB9IGZyb20gJy4uL2NsYXNzZXMvdHJ1LWRhdGEtY2hhbmdlLXBhcnNlcic7XHJcbmltcG9ydCB7IFRydUFwcEVudmlyb25tZW50IH0gZnJvbSAnLi90cnUtYXBwLWVudmlyb25tZW50JztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuL3RydS1kYXRhLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFByb3BlcnR5TG9va3VwIH0gZnJvbSAnLi90cnUtbW9kZWwtcHJvcGVydHktbG9va3VwJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDb25uZWN0aW9uSHViIHtcclxuICBwcml2YXRlIGNvbm5lY3Rpb246IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcHBFbnZpcm9ubWVudDogVHJ1QXBwRW52aXJvbm1lbnQsIHByaXZhdGUgbW9kZWxQcm9wZXJ0eUxvb2t1cDogVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCkge1xyXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IHNpZ25hbFIuSHViQ29ubmVjdGlvbkJ1aWxkZXIoKVxyXG4gICAgICAud2l0aFVybChgJHt0aGlzLmFwcEVudmlyb25tZW50LmFwcFVyaX0vbm90aWZpY2F0aW9uaHViYCwge1xyXG4gICAgICAgIHNraXBOZWdvdGlhdGlvbjogdHJ1ZSxcclxuICAgICAgICB0cmFuc3BvcnQ6IHNpZ25hbFIuSHR0cFRyYW5zcG9ydFR5cGUuV2ViU29ja2V0cyxcclxuICAgICAgfSkud2l0aEF1dG9tYXRpY1JlY29ubmVjdCgpLmJ1aWxkKCk7XHJcbiAgfVxyXG5cclxuICBzdGFydCA9ICgpID0+IHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbihcImVycm9yXCIsICh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKEpTT04ucGFyc2UodmFsdWUpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJTb2NrZXQsICdPUEVOJywgeyB2YWx1ZTogMSwgfSk7XHJcbiAgICAgIHRoaXMuY29ubmVjdGlvbi5zdGFydCgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoJ2dldENvbm5lY3Rpb25JZCcpXHJcbiAgICAgICAgICAudGhlbigoY29ubmVjdGlvbklkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coYFNpZ25hbFIgY29ubmVjdGlvbiBzdWNjZXNzISBjb25uZWN0aW9uSWQ6ICR7Y29ubmVjdGlvbklkfWApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmxvZyhgU2lnbmFsUiBjb25uZWN0aW9uIGVycm9yOiAke2Vycm9yfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3Vic2NyaWJlID0gKFxyXG4gICAgZGF0YUNvbnRleHQ6IFRydURhdGFDb250ZXh0LFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBnZXRMYXRlc3RSZXN1bHRzOiAoKSA9PiBhbnksXHJcbiAgICBnZXRMYXRlc3RRdWVyeTogKCkgPT4gYW55LFxyXG4gICAgY29udGV4dEZpbHRlcnM6IFtdLFxyXG4gICAgZXhwYW5kUGF0aHM6IEFycmF5PHN0cmluZz4sXHJcbiAgICBpc0xvYWRlZDogKCkgPT4gYm9vbGVhbik6IFN1YmplY3Q8VHJ1RGF0YUNoYW5nZT4gPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBUcnVEYXRhQ2hhbmdlUGFyc2VyKHRoaXMuY29ubmVjdGlvbiwgZGF0YUNvbnRleHQsIHRhYmxlTmFtZSwgZ2V0TGF0ZXN0UmVzdWx0cywgZ2V0TGF0ZXN0UXVlcnksIGNvbnRleHRGaWx0ZXJzLCBleHBhbmRQYXRocywgaXNMb2FkZWQsIHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cCkub25EYXRhQ2hhbmdlZCgpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,22 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class TruModelPropertyLookup {
4
+ constructor() {
5
+ this._lookup = new Map();
6
+ }
7
+ get lookup() {
8
+ return this._lookup;
9
+ }
10
+ set lookup(value) {
11
+ this._lookup = value;
12
+ }
13
+ }
14
+ TruModelPropertyLookup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
15
+ TruModelPropertyLookup.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, providedIn: 'root' });
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, decorators: [{
17
+ type: Injectable,
18
+ args: [{
19
+ providedIn: 'root',
20
+ }]
21
+ }], ctorParameters: function () { return []; } });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LW1vZGVsLXByb3BlcnR5LWxvb2t1cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvc2VydmljZXMvdHJ1LW1vZGVsLXByb3BlcnR5LWxvb2t1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sc0JBQXNCO0lBR2pDO1FBRlEsWUFBTyxHQUF1QyxJQUFJLEdBQUcsRUFBaUMsQ0FBQztJQUVoRixDQUFDO0lBRWhCLElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsS0FBeUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQzs7bUhBWFUsc0JBQXNCO3VIQUF0QixzQkFBc0IsY0FGckIsTUFBTTsyRkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRydVByb3BlcnR5Q29uZmlnQmFzZSB9IGZyb20gXCIuLi9iYXNlLWNsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1iYXNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB7XHJcbiAgcHJpdmF0ZSBfbG9va3VwOiBNYXA8c3RyaW5nLCBUcnVQcm9wZXJ0eUNvbmZpZ0Jhc2U+ID0gbmV3IE1hcDxzdHJpbmcsIFRydVByb3BlcnR5Q29uZmlnQmFzZT4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBnZXQgbG9va3VwKCk6IE1hcDxzdHJpbmcsIFRydVByb3BlcnR5Q29uZmlnQmFzZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xvb2t1cDtcclxuICB9XHJcblxyXG4gIHNldCBsb29rdXAodmFsdWU6IE1hcDxzdHJpbmcsIFRydVByb3BlcnR5Q29uZmlnQmFzZT4pICB7XHJcbiAgICB0aGlzLl9sb29rdXAgPSB2YWx1ZTtcclxuICB9XHJcbn1cclxuIl19
@@ -118,6 +118,7 @@ export * from './lib/services/tru-connection-hub';
118
118
  export * from './lib/services/tru-context-filters';
119
119
  export * from './lib/services/tru-data-context';
120
120
  export * from './lib/services/tru-entity-accessor';
121
+ export * from './lib/services/tru-model-property-lookup';
121
122
  export * from './lib/services/tru-predicate-map';
122
123
  export * from './lib/services/tru-search-result-view-manager';
123
124
  export * from './lib/services/tru-sort';
@@ -132,4 +133,4 @@ export * from './lib/services/tru-util';
132
133
  export * from './lib/assets/tru-icon-module';
133
134
  export * from './lib/assets/tru-search-icon-module';
134
135
  export * from './lib/tru-common-module';
135
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDBDQUEwQyxDQUFDO0FBRXpEOztHQUVHO0FBQ0gsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHFEQUFxRCxDQUFDO0FBRXBFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsZ0VBQWdFLENBQUM7QUFFL0UsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLG1FQUFtRSxDQUFDO0FBRWxGOztHQUVHO0FBQ0gsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5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InNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgdHJ1LWNvbW1vbi1saWJcbiAqL1xuXG4vKlxuICogQmFzZSBDbGFzc2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtY29tcG9uZW50LWNvbmZpZy1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtY29udHJvbC1jb21wb25lbnQtY29uZmlnLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1lZGl0LWNvbnRyb2wtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LWVkaXQtY29udHJvbC1jb25maWctYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LWVkaXQtcGFyZW50LWNvbnRyb2wtY29uZmlnLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1lZGl0LXBrZXktY29udHJvbC1jb25maWctYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LWVudGl0eS1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1zZWFyY2gtY29udHJvbC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtc2VhcmNoLWNvbnRyb2wtY29uZmlnLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1zZWFyY2gtY29udHJvbC1yYW5nZS1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtc2VhcmNoLWNvbmZpZy1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtdGFibGUtY29uZmlnLWJhc2UnO1xuXG4vKlxuICogQmFzZSBWaWV3XG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2Utdmlld3MvZGV0YWlsL3RydS1kZXRhaWwtdmlldy1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2Utdmlld3MvZGV0YWlsL3RydS1kZXRhaWwtdmlldy1iYXNlLW1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2Utdmlld3Mvc2VhcmNoL3RydS1zZWFyY2gtdmlldy1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2Utdmlld3Mvc2VhcmNoL3RydS1zZWFyY2gtdmlldy1iYXNlLW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLXZpZXdzL3NlYXJjaC9zZXJ2aWNlcy90cnUtc2VhcmNoLXZpZXctY29udHJvbC1ldmVudC1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1ldmVudC1oYW5kbGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS12aWV3cy9zZWFyY2gtcmVzdWx0L3RydS1zZWFyY2gtcmVzdWx0LXZpZXctYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLXZpZXdzL3NlYXJjaC1yZXN1bHQvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1iYXNlLW1vZHVsZSc7XG5cbi8qXG4gKiBDbGFzc2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LWNob2ljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1jb250ZXh0LWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1jb250ZXh0LWZpbHRlci1jaG9pY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtZm9ybXVsYS1ldmFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByZWRpY2F0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctY2xvdWQtZmlsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctZGVjaW1hbCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctZmlsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctZm9yZWlnbi1rZXknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLWludGVnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLXBhc3N3b3JkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1wZXJjZW50YWdlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1zY2llbnRpZmljJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy10ZXh0LWNob2ljZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLXVzYS1hZGRyZXNzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy16aXAtY29kZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1xdWVyeS1wcmVkaWNhdGUtbWFuYWdlcic7XG5cbi8qXG4gKiBDb21wb25lbnRzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvdHJ1LWNvbmZpcm0tZGlhbG9nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybS1kaWFsb2cvdHJ1LWNvbmZpcm0tZGlhbG9nLW1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0YS1ncmlkL2NsYXNzZXMvdHJ1LWRhdGEtZ3JpZC1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvZW51bXMvdHJ1LWRhdGEtZ3JpZC10eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGEtZ3JpZC90cnUtZGF0YS1ncmlkJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0YS1ncmlkL3RydS1kYXRhLWdyaWQtbW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kZXNrdG9wL3RydS1kZXNrdG9wJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGVza3RvcC90cnUtZGVza3RvcC1tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rlc2t0b3AvY2xhc3Nlcy90cnUtZGVza3RvcC12aWV3LWNvbmZpZyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtZGVza3RvcC1tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtd2luZG93LWFjdGlvbi1ldmVudC1oYW5kbGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGVza3RvcC9zZXJ2aWNlcy90cnUtd2luZG93LWV2ZW50LWFyZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZXhwb3J0LWRpYWxvZy90cnUtZXhwb3J0LWRpYWxvZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2V4cG9ydC1kaWFsb2cvdHJ1LWV4cG9ydC1kaWFsb2ctbW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvY29sdW1uL3RydS1jb2x1bW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvY29sdW1uL3RydS1jb2x1bW4tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF5b3V0L2Zvcm0vdHJ1LWZvcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvZm9ybS90cnUtZm9ybS1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvZ3JvdXAtYm94L3RydS1ncm91cC1ib3gnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvZ3JvdXAtYm94L3RydS1ncm91cC1ib3gtbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF5b3V0L3Jvdy90cnUtcm93JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbGF5b3V0L3Jvdy90cnUtcm93LW1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci90cnUtdG9vbGJhcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdHJ1LXRvb2xiYXItbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9tZW51L3RydS10b29sYmFyLW1lbnUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL21lbnUvdHJ1LXRvb2xiYXItbWVudS1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL2J1dHRvbi90cnUtdG9vbGJhci1idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL2J1dHRvbi90cnUtdG9vbGJhci1idXR0b24tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9kcm9wZG93bi90cnUtdG9vbGJhci1kcm9wZG93bic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvZHJvcGRvd24vdHJ1LXRvb2xiYXItZHJvcGRvd24tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9zZXBhcmF0b3IvdHJ1LXRvb2xiYXItc2VwYXJhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9zZXBhcmF0b3IvdHJ1LXRvb2xiYXItc2VwYXJhdG9yLW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvY29udGV4dC1maWx0ZXIvdHJ1LXRvb2xiYXItY29udGV4dC1maWx0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL2NvbnRleHQtZmlsdGVyL3RydS10b29sYmFyLWNvbnRleHQtZmlsdGVyLW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvdGV4dC90cnUtdG9vbGJhci10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci90ZXh0L3RydS10b29sYmFyLXRleHQtbW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2dpbi90cnUtbG9naW4nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2dpbi90cnUtbG9naW4tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvbG9naW4vc2VydmljZXMvdHJ1LWF1dGgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2dpbi9zZXJ2aWNlcy90cnUtYXV0aC1pbnRlcmNlcHRvcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmFsaWRhdGlvbi1kaWFsb2cvdHJ1LXZhbGlkYXRpb24tZGlhbG9nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdmFsaWRhdGlvbi1kaWFsb2cvdHJ1LXZhbGlkYXRpb24tZGlhbG9nLW1vZHVsZSc7XG5cbi8qXG4gKiBEaXJlY3RpdmVzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvYnJlZXplLXZhbGlkYXRvci90cnUtYnJlZXplLXZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL2JyZWV6ZS12YWxpZGF0b3IvdHJ1LWJyZWV6ZS12YWxpZGF0b3ItbW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zZWFyY2gtcGFuZWwtcG9zaXRpb24tbWFuYWdlci90cnUtc2VhcmNoLXBhbmVsLXBvc2l0aW9uLW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9zZWFyY2gtcGFuZWwtcG9zaXRpb24tbWFuYWdlci90cnUtc2VhcmNoLXBhbmVsLXBvc2l0aW9uLW1hbmFnZXItbW9kdWxlJztcblxuLypcbiAqIEludGVyZmFjZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJmYWNlcy90cnUtdmFsdWUnO1xuXG4vKlxuICogU2VydmljZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtYnJlZXplLWNvbnRleHQtZmFjdG9yeSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtYnJlZXplLW1ldGFkYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1jb21wb25lbnQtbG9va3VwJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1jb25uZWN0aW9uLWh1Yic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtY29udGV4dC1maWx0ZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1kYXRhLWNvbnRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LWVudGl0eS1hY2Nlc3Nvcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtcHJlZGljYXRlLW1hcCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtc2VhcmNoLXJlc3VsdC12aWV3LW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXNvcnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXRhYmxlLXJlZ2lzdHJ5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS10ZXh0LW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXVpLW5vdGlmaWNhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtdXNlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtdXRpbCc7XG5cbi8qXG4gKiBNb2R1bGVzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fzc2V0cy90cnUtaWNvbi1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXNzZXRzL3RydS1zZWFyY2gtaWNvbi1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJ1LWNvbW1vbi1tb2R1bGUnO1xuIl19
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUg7O0dBRUc7QUFDSCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsc0RBQXNELENBQUM7QUFDckUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxzREFBc0QsQ0FBQztBQUNyRSxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLDBDQUEwQyxDQUFDO0FBRXpEOztHQUVHO0FBQ0gsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHFEQUFxRCxDQUFDO0FBRXBFLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLHdFQUF3RSxDQUFDO0FBQ3ZGLGNBQWMsZ0VBQWdFLENBQUM7QUFFL0UsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLG1FQUFtRSxDQUFDO0FBRWxGOztHQUVHO0FBQ0gsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5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QUNwRCxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiB0cnUtY29tbW9uLWxpYlxuICovXG5cbi8qXG4gKiBCYXNlIENsYXNzZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1jb21wb25lbnQtY29uZmlnLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1jb250cm9sLWNvbXBvbmVudC1jb25maWctYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LWVkaXQtY29udHJvbC1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtZWRpdC1jb250cm9sLWNvbmZpZy1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtZWRpdC1wYXJlbnQtY29udHJvbC1jb25maWctYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LWVkaXQtcGtleS1jb250cm9sLWNvbmZpZy1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2UtY2xhc3Nlcy90cnUtZW50aXR5LWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LXNlYXJjaC1jb250cm9sLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1zZWFyY2gtY29udHJvbC1jb25maWctYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLWNsYXNzZXMvdHJ1LXNlYXJjaC1jb250cm9sLXJhbmdlLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS1zZWFyY2gtY29uZmlnLWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS1jbGFzc2VzL3RydS10YWJsZS1jb25maWctYmFzZSc7XG5cbi8qXG4gKiBCYXNlIFZpZXdcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS12aWV3cy9kZXRhaWwvdHJ1LWRldGFpbC12aWV3LWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS12aWV3cy9kZXRhaWwvdHJ1LWRldGFpbC12aWV3LWJhc2UtbW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS12aWV3cy9zZWFyY2gvdHJ1LXNlYXJjaC12aWV3LWJhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS12aWV3cy9zZWFyY2gvdHJ1LXNlYXJjaC12aWV3LWJhc2UtbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2Utdmlld3Mvc2VhcmNoL3NlcnZpY2VzL3RydS1zZWFyY2gtdmlldy1jb250cm9sLWV2ZW50LWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFzZS12aWV3cy9zZWFyY2gvc2VydmljZXMvdHJ1LXNlYXJjaC12aWV3LWV2ZW50LWhhbmRsZXInO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLXZpZXdzL3NlYXJjaC1yZXN1bHQvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1iYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Jhc2Utdmlld3Mvc2VhcmNoLXJlc3VsdC90cnUtc2VhcmNoLXJlc3VsdC12aWV3LWJhc2UtbW9kdWxlJztcblxuLypcbiAqIENsYXNzZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtY2hvaWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LWNvbnRleHQtZmlsdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LWNvbnRleHQtZmlsdGVyLWNob2ljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1mb3JtdWxhLWV2YWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJlZGljYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1jbG91ZC1maWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1kYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1kZWNpbWFsJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1maWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXByb3BlcnR5LWNvbmZpZy1mb3JlaWduLWtleSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctaW50ZWdlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctcGFzc3dvcmQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLXBlcmNlbnRhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLXNjaWVudGlmaWMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLXRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLXRleHQtY2hvaWNlcyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctdXNhLWFkZHJlc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2xhc3Nlcy90cnUtcHJvcGVydHktY29uZmlnLXppcC1jb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsYXNzZXMvdHJ1LXF1ZXJ5LXByZWRpY2F0ZS1tYW5hZ2VyJztcblxuLypcbiAqIENvbXBvbmVudHNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy90cnUtY29uZmlybS1kaWFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy90cnUtY29uZmlybS1kaWFsb2ctbW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvY2xhc3Nlcy90cnUtZGF0YS1ncmlkLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGEtZ3JpZC9lbnVtcy90cnUtZGF0YS1ncmlkLXR5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0YS1ncmlkL3RydS1kYXRhLWdyaWQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvdHJ1LWRhdGEtZ3JpZC1tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rlc2t0b3AvdHJ1LWRlc2t0b3AnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kZXNrdG9wL3RydS1kZXNrdG9wLW1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGVza3RvcC9jbGFzc2VzL3RydS1kZXNrdG9wLXZpZXctY29uZmlnJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS1kZXNrdG9wLW1hbmFnZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctYWN0aW9uLWV2ZW50LWhhbmRsZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtYXJncyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Rlc2t0b3Avc2VydmljZXMvdHJ1LXdpbmRvdy1ldmVudC1oYW5kbGVyJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9leHBvcnQtZGlhbG9nL3RydS1leHBvcnQtZGlhbG9nJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZXhwb3J0LWRpYWxvZy90cnUtZXhwb3J0LWRpYWxvZy1tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xheW91dC9jb2x1bW4vdHJ1LWNvbHVtbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xheW91dC9jb2x1bW4vdHJ1LWNvbHVtbi1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvZm9ybS90cnUtZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xheW91dC9mb3JtL3RydS1mb3JtLW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xheW91dC9ncm91cC1ib3gvdHJ1LWdyb3VwLWJveCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xheW91dC9ncm91cC1ib3gvdHJ1LWdyb3VwLWJveC1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvcm93L3RydS1yb3cnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sYXlvdXQvcm93L3RydS1yb3ctbW9kdWxlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL3RydS10b29sYmFyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci90cnUtdG9vbGJhci1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL21lbnUvdHJ1LXRvb2xiYXItbWVudSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvbWVudS90cnUtdG9vbGJhci1tZW51LW1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvYnV0dG9uL3RydS10b29sYmFyLWJ1dHRvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvYnV0dG9uL3RydS10b29sYmFyLWJ1dHRvbi1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL2Ryb3Bkb3duL3RydS10b29sYmFyLWRyb3Bkb3duJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9kcm9wZG93bi90cnUtdG9vbGJhci1kcm9wZG93bi1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL3NlcGFyYXRvci90cnUtdG9vbGJhci1zZXBhcmF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL3NlcGFyYXRvci90cnUtdG9vbGJhci1zZXBhcmF0b3ItbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci9jb250ZXh0LWZpbHRlci90cnUtdG9vbGJhci1jb250ZXh0LWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Rvb2xiYXIvY29udGV4dC1maWx0ZXIvdHJ1LXRvb2xiYXItY29udGV4dC1maWx0ZXItbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdG9vbGJhci90ZXh0L3RydS10b29sYmFyLXRleHQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b29sYmFyL3RleHQvdHJ1LXRvb2xiYXItdGV4dC1tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvZ2luL3RydS1sb2dpbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvZ2luL3RydS1sb2dpbi1tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9sb2dpbi9zZXJ2aWNlcy90cnUtYXV0aCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2xvZ2luL3NlcnZpY2VzL3RydS1hdXRoLWludGVyY2VwdG9yJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92YWxpZGF0aW9uLWRpYWxvZy90cnUtdmFsaWRhdGlvbi1kaWFsb2cnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy92YWxpZGF0aW9uLWRpYWxvZy90cnUtdmFsaWRhdGlvbi1kaWFsb2ctbW9kdWxlJztcblxuLypcbiAqIERpcmVjdGl2ZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9icmVlemUtdmFsaWRhdG9yL3RydS1icmVlemUtdmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvYnJlZXplLXZhbGlkYXRvci90cnUtYnJlZXplLXZhbGlkYXRvci1tb2R1bGUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3NlYXJjaC1wYW5lbC1wb3NpdGlvbi1tYW5hZ2VyL3RydS1zZWFyY2gtcGFuZWwtcG9zaXRpb24tbWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzL3NlYXJjaC1wYW5lbC1wb3NpdGlvbi1tYW5hZ2VyL3RydS1zZWFyY2gtcGFuZWwtcG9zaXRpb24tbWFuYWdlci1tb2R1bGUnO1xuXG4vKlxuICogSW50ZXJmYWNlc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbnRlcmZhY2VzL3RydS12YWx1ZSc7XG5cbi8qXG4gKiBTZXJ2aWNlc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtYXBwLWVudmlyb25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1icmVlemUtY29udGV4dC1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1icmVlemUtbWV0YWRhdGEtcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LWNvbXBvbmVudC1sb29rdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LWNvbm5lY3Rpb24taHViJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1jb250ZXh0LWZpbHRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LWRhdGEtY29udGV4dCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtZW50aXR5LWFjY2Vzc29yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXByZWRpY2F0ZS1tYXAnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXNlYXJjaC1yZXN1bHQtdmlldy1tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS1zb3J0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS10YWJsZS1yZWdpc3RyeSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy90cnUtdGV4dC1tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RydS11aS1ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXVzZXInO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdHJ1LXV0aWwnO1xuXG4vKlxuICogTW9kdWxlc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hc3NldHMvdHJ1LWljb24tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Fzc2V0cy90cnUtc2VhcmNoLWljb24tbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RydS1jb21tb24tbW9kdWxlJztcbiJdfQ==