@sachin9822/reports-lib 0.0.199 → 0.0.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/accounting-report/accounting-report.component.mjs +12 -3
- package/esm2020/lib/components/branch-activity-receive-report/branch-activity-receive-report.component.mjs +3 -3
- package/esm2020/lib/components/branch-activity-send-report/branch-activity-send-report.component.mjs +5 -5
- package/esm2020/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.mjs +9 -19
- package/esm2020/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.mjs +177 -0
- package/esm2020/lib/components/funding-report/funding-report.component.mjs +190 -0
- package/esm2020/lib/components/revenue-per-transaction-report/revenue-per-transaction-report.component.mjs +5 -2
- package/esm2020/lib/components/statement-of-accounts-report/statement-of-accounts-report.component.mjs +2 -2
- package/esm2020/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.mjs +9 -18
- package/esm2020/lib/components/trial-balance-accounts-report/trial-balance-accounts-report.component.mjs +4 -377
- package/esm2020/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.mjs +5 -0
- package/esm2020/lib/reports-lib.module.mjs +11 -1
- package/esm2020/lib/services/report.service.mjs +25 -1
- package/esm2020/lib/shared/export-generic.service.mjs +2 -1
- package/esm2020/lib/shared/export.service.mjs +9 -8
- package/esm2020/lib/shared/metadata/metadata.component.mjs +2 -1
- package/esm2020/lib/shared/search-filter/search-filter.component.mjs +150 -58
- package/esm2020/public-api.mjs +5 -1
- package/fesm2015/sachin9822-reports-lib.mjs +591 -487
- package/fesm2015/sachin9822-reports-lib.mjs.map +1 -1
- package/fesm2020/sachin9822-reports-lib.mjs +581 -487
- package/fesm2020/sachin9822-reports-lib.mjs.map +1 -1
- package/lib/components/cancellation-transaction-report/cancellation-transaction-report.component.d.ts +9 -5
- package/lib/components/credit-limit-status-enquiry-report/credit-limit-status-enquiry-report.component.d.ts +49 -0
- package/lib/components/funding-report/funding-report.component.d.ts +51 -0
- package/lib/components/transaction-enquiry-report/transaction-enquiry-report.component.d.ts +0 -1
- package/lib/models/credit-limit-status-enquiry-report/credit-limit-status-enquiry.model.d.ts +26 -0
- package/lib/reports-lib.module.d.ts +13 -11
- package/lib/services/report.service.d.ts +4 -0
- package/lib/shared/search-filter/search-filter.component.d.ts +7 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -264,6 +264,15 @@ export class AccountingReportComponent {
|
|
|
264
264
|
currentY = doc.lastAutoTable.finalY + 10;
|
|
265
265
|
});
|
|
266
266
|
});
|
|
267
|
+
const pageCount = doc.internal.getNumberOfPages();
|
|
268
|
+
for (let i = 1; i <= pageCount; i++) {
|
|
269
|
+
doc.setFont("helvetica", "bold");
|
|
270
|
+
doc.setPage(i);
|
|
271
|
+
doc.setFontSize(9);
|
|
272
|
+
doc.setTextColor(100);
|
|
273
|
+
const footerY = doc.internal.pageSize.height - 6;
|
|
274
|
+
doc.text(`Page ${i} of ${pageCount}`, pageWidth - 15, footerY, { align: 'right' });
|
|
275
|
+
}
|
|
267
276
|
doc.save(fileName);
|
|
268
277
|
}
|
|
269
278
|
exportToExcel() {
|
|
@@ -470,9 +479,9 @@ export class AccountingReportComponent {
|
|
|
470
479
|
}
|
|
471
480
|
}
|
|
472
481
|
AccountingReportComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountingReportComponent, deps: [{ token: i1.ReportService }, { token: i2.ExportService }], target: i0.ɵɵFactoryTarget.Component });
|
|
473
|
-
AccountingReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AccountingReportComponent, selector: "lib-accounting-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && loadingState == ComponentLoadingState.Complete && !noDataFound \"\r\n style=\"margin-bottom: 30px;\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div *ngIf=\"accountingReportModel.accountingReportByBranchGroups?.length\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\" [activeIds]=\"'panel-0'\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"panel-cls\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px!important;height:32px;min-width:110px;margin:0 0 0 20px!important;padding:4px 15px!important}.tooltip-block{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #ccc!important}.dpicker{border:1px solid #ccc!important;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2!important}.cal:focus{box-shadow:none!important}.input-group-button{background:none;border:1px solid #0081c6;background-color:#0081c6;border-radius:0 3px 3px 0;min-width:35px;margin-left:1px;cursor:pointer}.labl{font-size:11.2px;font-weight:700!important}.info{font-size:12px!important;font-weight:400;padding-left:.5rem}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}.meta-td{padding:0!important}.title{text-align:center;font-size:18px;font-weight:700!important}.export-options{display:inline-flex;font-size:.75rem;height:2rem!important;width:5rem!important;margin-right:-1;margin-left:.4rem}.opt-cls{display:block;height:100%;width:5rem;border:1px solid #ccc!important;border-radius:4px!important;margin-right:1rem!important;outline:none!important}.opt-cls:focus{box-shadow:0 0 5px 3px #1877f2}.export-selector{height:2rem!important;width:100%}.search-btn{height:32px!important;height:32px;width:36px;background-color:#8091a5;border:none;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center}.search-btn:hover{background-color:#8091a5}.search-icon{height:16px;width:16px;object-fit:contain}.search-input{outline:none!important;border:1px solid #ccc!important;width:190px;height:32px!important;font-size:.75rem;padding:.25rem .5rem;border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;text-transform:uppercase}.search-input:focus{box-shadow:0 0 5px 3px #1877f2!important}.searchBox{margin-right:auto;display:flex}table{width:100%;border-collapse:separate;margin-bottom:0!important;table-layout:fixed!important}td{padding:0 1rem 6px 0!important;border-right:0 solid #ffffff!important;background-color:#fff!important}.row-cls{height:2.5rem!important}.inputbox{padding-left:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}::ng-deep .ng-select.ng-select-single .ng-select-container{height:32px I!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;overflow-y:auto;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container .ng-value{max-width:200px!important;overflow:hidden!important;text-overflow:hidden!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow-x:scroll!important;text-overflow:clip!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option::-webkit-scrollbar{display:none!important;width:0!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container,::ng-deep .ng-select.ng-select-single .ng-select-container,::ng-deep .ng-select.ng-select-multiple .ng-select-container{min-height:32px!important;height:32px!important;font-size:12px!important}.panel-cls{font-weight:700;font-size:13px;line-height:1.2;margin:0;padding:2px 0;color:#16181e}.transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}.grid-size{width:100%!important;font-weight:500!important;height:375px!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#16181e!important;font-weight:700!important}:host ::ng-deep .my-2{margin-bottom:10px!important}\n"], dependencies: [{ kind: "component", type: i3.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", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "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", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "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", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "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", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "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", "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: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i6.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i7.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i7.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i7.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i7.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i8.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i9.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName"], outputs: ["searchClicked"] }] });
|
|
482
|
+
AccountingReportComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AccountingReportComponent, selector: "lib-accounting-report", ngImport: i0, template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && loadingState == ComponentLoadingState.Complete && !noDataFound \"\r\n style=\"margin-bottom: 30px;\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div *ngIf=\"accountingReportModel.accountingReportByBranchGroups?.length\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"panel-cls\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px!important;height:32px;min-width:110px;margin:0 0 0 20px!important;padding:4px 15px!important}.tooltip-block{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #ccc!important}.dpicker{border:1px solid #ccc!important;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2!important}.cal:focus{box-shadow:none!important}.input-group-button{background:none;border:1px solid #0081c6;background-color:#0081c6;border-radius:0 3px 3px 0;min-width:35px;margin-left:1px;cursor:pointer}.labl{font-size:11.2px;font-weight:700!important}.info{font-size:12px!important;font-weight:400;padding-left:.5rem}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}.meta-td{padding:0!important}.title{text-align:center;font-size:18px;font-weight:700!important}.export-options{display:inline-flex;font-size:.75rem;height:2rem!important;width:5rem!important;margin-right:-1;margin-left:.4rem}.opt-cls{display:block;height:100%;width:5rem;border:1px solid #ccc!important;border-radius:4px!important;margin-right:1rem!important;outline:none!important}.opt-cls:focus{box-shadow:0 0 5px 3px #1877f2}.export-selector{height:2rem!important;width:100%}.search-btn{height:32px!important;height:32px;width:36px;background-color:#8091a5;border:none;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center}.search-btn:hover{background-color:#8091a5}.search-icon{height:16px;width:16px;object-fit:contain}.search-input{outline:none!important;border:1px solid #ccc!important;width:190px;height:32px!important;font-size:.75rem;padding:.25rem .5rem;border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;text-transform:uppercase}.search-input:focus{box-shadow:0 0 5px 3px #1877f2!important}.searchBox{margin-right:auto;display:flex}table{width:100%;border-collapse:separate;margin-bottom:0!important;table-layout:fixed!important}td{padding:0 1rem 6px 0!important;border-right:0 solid #ffffff!important;background-color:#fff!important}.row-cls{height:2.5rem!important}.inputbox{padding-left:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}::ng-deep .ng-select.ng-select-single .ng-select-container{height:32px I!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;overflow-y:auto;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container .ng-value{max-width:200px!important;overflow:hidden!important;text-overflow:hidden!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow-x:scroll!important;text-overflow:clip!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option::-webkit-scrollbar{display:none!important;width:0!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container,::ng-deep .ng-select.ng-select-single .ng-select-container,::ng-deep .ng-select.ng-select-multiple .ng-select-container{min-height:32px!important;height:32px!important;font-size:12px!important}.panel-cls{font-weight:700;font-size:13px;line-height:1.2;margin:0;padding:2px 0;color:#16181e}.transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}.grid-size{width:100%!important;font-weight:500!important;height:375px!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#16181e!important;font-weight:700!important}:host ::ng-deep .my-2{margin-bottom:10px!important}\n"], dependencies: [{ kind: "component", type: i3.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", "deltaColumnMode", "applyColumnDefOrder", "immutableColumns", "suppressSetColumnStateEvents", "suppressColumnStateEvents", "colWidth", "minColWidth", "maxColWidth", "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", "stopEditingWhenGridLosesFocus", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "defaultExportParams", "quickFilterText", "cacheQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "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", "deprecatedEmbedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "groupRowInnerRenderer", "groupRowInnerRendererFramework", "groupMultiAutoColumn", "groupUseEntireRow", "groupSuppressAutoColumn", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "deltaRowDataMode", "batchUpdateWaitMillis", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "serverSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "suppressEnterpriseResetOnNewColumns", "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", "angularCompileRows", "angularCompileFilters", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "suppressKeyboardEvent", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "defaultGroupSortComparator", "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", "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: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PageSizeSelectorComponent, selector: "lib-page-size-selector", inputs: ["pageSizeArray", "defaultSize", "totalEntries", "gridApi"] }, { kind: "component", type: i6.MetadataComponent, selector: "lib-metadata", inputs: ["metaDataOne", "metaDataTwo", "showmetaDataOne", "showmetaDataTwo", "reportName"], outputs: ["searchEvent", "exportEvent"] }, { kind: "component", type: i7.NgbAccordion, selector: "ngb-accordion", inputs: ["animation", "activeIds", "closeOthers", "destroyOnHide", "type"], outputs: ["panelChange", "shown", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i7.NgbPanel, selector: "ngb-panel", inputs: ["disabled", "id", "title", "type", "cardClass"], outputs: ["shown", "hidden"] }, { kind: "directive", type: i7.NgbPanelTitle, selector: "ng-template[ngbPanelTitle]" }, { kind: "directive", type: i7.NgbPanelContent, selector: "ng-template[ngbPanelContent]" }, { kind: "component", type: i8.LoaderComponent, selector: "app-loader" }, { kind: "component", type: i9.SearchFilterComponent, selector: "lib-search-filter", inputs: ["ReportName"], outputs: ["searchClicked"] }] });
|
|
474
483
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AccountingReportComponent, decorators: [{
|
|
475
484
|
type: Component,
|
|
476
|
-
args: [{ selector: 'lib-accounting-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && loadingState == ComponentLoadingState.Complete && !noDataFound \"\r\n style=\"margin-bottom: 30px;\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div *ngIf=\"accountingReportModel.accountingReportByBranchGroups?.length\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\"
|
|
485
|
+
args: [{ selector: 'lib-accounting-report', template: "<lib-search-filter [ReportName]=\"ReportName\" (searchClicked)=\"getReport($event)\"></lib-search-filter>\r\n\r\n<app-loader class=\"\" *ngIf=\"loadingState == ComponentLoadingState.Loading\"></app-loader>\r\n\r\n<div *ngIf=\"accountingReportModel!=undefined && loadingState == ComponentLoadingState.Complete && !noDataFound \"\r\n style=\"margin-bottom: 30px;\">\r\n\r\n <lib-metadata [reportName]=\"ReportName\" [showmetaDataOne]=\"true\" [showmetaDataTwo]=\"true\" [metaDataOne]=\"leftData\"\r\n [metaDataTwo]=\"rightData\" (exportEvent)=\"handleExport($event)\" (searchEvent)=\"onSearch($event)\"></lib-metadata>\r\n\r\n <div *ngIf=\"accountingReportModel.accountingReportByBranchGroups?.length\">\r\n <ngb-accordion #acc=\"ngbAccordion\" [closeOthers]=\"false\">\r\n <ng-container *ngFor=\"let group of accountingReportModel?.accountingReportByBranchGroups; let i = index\">\r\n <ngb-panel [id]=\"'panel-' + i\">\r\n <ng-template ngbPanelTitle>\r\n <label class=\"panel-cls\">\r\n {{ group.branchNameAndCode }}\r\n </label>\r\n </ng-template>\r\n\r\n <ng-template ngbPanelContent>\r\n <!-- Send Transactions -->\r\n <div *ngIf=\"group.sendTransactions.entries.length\">\r\n <h6 class=\"subgroupcolumn\">{{ group.sendTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.sendTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\" [rowData]=\"group.sendTransactions.entries\"\r\n [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\" [paginationPageSize]=\"paginationArray[i]\"\r\n (gridReady)=\"onGridReady($event, i * 2)\" (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n\r\n <!-- Receive Transactions -->\r\n <div *ngIf=\"group.receiveTransactions.entries.length\" class=\"mt-3\">\r\n <h6 class=\"subgroupcolumn\">{{ group.receiveTransactions.subGroupName }}</h6>\r\n <div style=\"position: relative;\">\r\n <lib-page-size-selector [totalEntries]=\"group.receiveTransactions.entries.length\" [defaultSize]=\"'15'\"\r\n [gridApi]=\"gridApis[i * 2 + 1]\">\r\n </lib-page-size-selector>\r\n\r\n <ag-grid-angular class=\"ag-theme-alpine transaction-grid grid-size\" style=\"width: 100%;\"\r\n [columnDefs]=\"columnDefs\" [defaultColDef]=\"defaultColDef\"\r\n [rowData]=\"group.receiveTransactions.entries\" [rowHeight]=\"20\" [headerHeight]=\"24\" [pagination]=\"true\"\r\n [paginationPageSize]=\"paginationArray[i]\" (gridReady)=\"onGridReady($event, i * 2 + 1)\"\r\n (gridSizeChanged)=\"onGridSizeChanged($event, i * 2)\">\r\n </ag-grid-angular>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngb-panel>\r\n </ng-container>\r\n </ngb-accordion>\r\n </div>\r\n\r\n</div>\r\n\r\n<div class=\"alert alert-warning mt-3\" *ngIf=\"noDataFound && loadingState!=ComponentLoadingState.Loading\">\r\n No Data found matching your search criteria.\r\n</div>", styles: [".btn-report{border-radius:4px;background-color:#8091a5;color:#fff!important;font-size:14px!important;height:32px!important;height:32px;min-width:110px;margin:0 0 0 20px!important;padding:4px 15px!important}.tooltip-block{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #ccc!important}.dpicker{border:1px solid #ccc!important;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"!important;font-size:12px!important;font-weight:400!important;height:32px!important}.dpicker:focus{box-shadow:0 0 5px 3px #1877f2!important}.cal{height:32px!important;background-color:#1877f2!important}.cal:focus{box-shadow:none!important}.input-group-button{background:none;border:1px solid #0081c6;background-color:#0081c6;border-radius:0 3px 3px 0;min-width:35px;margin-left:1px;cursor:pointer}.labl{font-size:11.2px;font-weight:700!important}.info{font-size:12px!important;font-weight:400;padding-left:.5rem}.label-data{font-weight:600!important;font-size:.7rem!important;line-height:1rem}.meta-td{padding:0!important}.title{text-align:center;font-size:18px;font-weight:700!important}.export-options{display:inline-flex;font-size:.75rem;height:2rem!important;width:5rem!important;margin-right:-1;margin-left:.4rem}.opt-cls{display:block;height:100%;width:5rem;border:1px solid #ccc!important;border-radius:4px!important;margin-right:1rem!important;outline:none!important}.opt-cls:focus{box-shadow:0 0 5px 3px #1877f2}.export-selector{height:2rem!important;width:100%}.search-btn{height:32px!important;height:32px;width:36px;background-color:#8091a5;border:none;border-radius:0 4px 4px 0;display:flex;justify-content:center;align-items:center}.search-btn:hover{background-color:#8091a5}.search-icon{height:16px;width:16px;object-fit:contain}.search-input{outline:none!important;border:1px solid #ccc!important;width:190px;height:32px!important;font-size:.75rem;padding:.25rem .5rem;border-top-left-radius:4px;border-bottom-left-radius:4px;border-top-right-radius:0!important;border-bottom-right-radius:0!important;text-transform:uppercase}.search-input:focus{box-shadow:0 0 5px 3px #1877f2!important}.searchBox{margin-right:auto;display:flex}table{width:100%;border-collapse:separate;margin-bottom:0!important;table-layout:fixed!important}td{padding:0 1rem 6px 0!important;border-right:0 solid #ffffff!important;background-color:#fff!important}.row-cls{height:2.5rem!important}.inputbox{padding-left:1rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Noto Sans,Liberation Sans,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,\"Noto Color Emoji\"}::ng-deep .ng-select.ng-select-single .ng-select-container{height:32px I!important}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;overflow-y:auto;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container{max-height:32px!important;overflow-x:auto!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-multiple .ng-select-container .ng-value-container .ng-value{max-width:200px!important;overflow:hidden!important;text-overflow:hidden!important;white-space:nowrap!important}::ng-deep .ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow-x:scroll!important;text-overflow:clip!important}::ng-deep .ng-dropdown-panel .ng-dropdown-panel-items .ng-option::-webkit-scrollbar{display:none!important;width:0!important}::ng-deep .ng-select .ng-select-container:focus-within{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container:focus{box-shadow:0 0 5px 3px #1877f2!important}::ng-deep .ng-select .ng-select-container,::ng-deep .ng-select.ng-select-single .ng-select-container,::ng-deep .ng-select.ng-select-multiple .ng-select-container{min-height:32px!important;height:32px!important;font-size:12px!important}.panel-cls{font-weight:700;font-size:13px;line-height:1.2;margin:0;padding:2px 0;color:#16181e}.transaction-grid ::ng-deep .ag-header{background-color:#f9f9f9;font-weight:600;font-size:10px;color:#000;border-right:1px solid #e0e0e0}:host ::ng-deep .ag-header-cell{padding:2px!important;align-items:center!important;justify-content:center!important;border-right:1px solid #e0e0e0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-align:center!important}::ng-deep .ag-header-cell-label{display:flex!important;justify-content:center!important;align-items:center!important;width:100%;text-align:center!important}::ng-deep .ag-header-cell-text{text-align:center!important;width:100%!important;display:flex!important;justify-content:center!important}.transaction-grid ::ng-deep .ag-row{border-bottom:1px solid #e0e0e0}.transaction-grid ::ng-deep .ag-cell{font-size:9px;white-space:normal!important;word-break:keep-all!important;overflow-wrap:anywhere;line-height:1.4;padding:4px!important;color:#000;font-weight:500;border-right:.5px solid #e0e0e0;align-content:center;user-select:text!important;-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;cursor:text}::ng-deep .ag-cell-label-container{padding:0!important}.ag-theme-alpine{--ag-header-font-size: 10px;--ag-font-size: 10px;--ag-header-background-color: #fdfdfd;--ag-header-foreground-color: rgb(0, 0, 0)}::ng-deep .ag-paging-panel{height:30px!important;font-weight:500!important}.grid-size{width:100%!important;font-weight:500!important;height:375px!important}::ng-deep .ag-cell{-webkit-user-select:text!important;user-select:text!important}.subgroupcolumn{font-family:Open Sans!important;font-size:13px!important;color:#16181e!important;font-weight:700!important}:host ::ng-deep .my-2{margin-bottom:10px!important}\n"] }]
|
|
477
486
|
}], ctorParameters: function () { return [{ type: i1.ReportService }, { type: i2.ExportService }]; } });
|
|
478
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50aW5nLXJlcG9ydC9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUtyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7O0FBMEJ4QyxNQUFNLE9BQU8seUJBQXlCO0lBd0VwQyxZQUFvQixhQUE0QixFQUFVLGFBQTRCO1FBQWxFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF0RXRGLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFNbEMsMEJBQXFCLEdBQUcsc0JBQXNCLENBQUM7UUFDL0MsaUJBQVksR0FBMkIsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1FBQ3ZFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSzdCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFF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QStDO1NBQ25FLENBQUM7UUFFRixJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7c0hBcGlCVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qiw2RENyQ3RDLHFsSEErRE07MkZEMUJPLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWNjb3VudGluZ1JlcG9ydE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LW1vZGVsJztcclxuaW1wb3J0IHsgQ29sRGVmLCBDb2x1bW5BcGksIEdyaWRBcGksIEdyaWRSZWFkeUV2ZW50IH0gZnJvbSAnYWctZ3JpZC1jb21tdW5pdHknO1xyXG5pbXBvcnQgeyBSZXBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2V4cG9ydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZm9ybWF0RGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudExvYWRpbmdTdGF0ZXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50LWxvYWRpbmctc3RhdGVzJztcclxuaW1wb3J0IHsgQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LWJyYW5jaC1ncm91cCc7XHJcbmltcG9ydCBqc1BERiBmcm9tICdqc3BkZic7XHJcbmltcG9ydCAnanNwZGYtYXV0b3RhYmxlJztcclxuaW1wb3J0ICogYXMgRXhjZWxKUyBmcm9tICdleGNlbGpzJztcclxuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5cclxuZGVjbGFyZSBtb2R1bGUgJ2pzcGRmJyB7XHJcbiAgaW50ZXJmYWNlIGpzUERGIHtcclxuICAgIGF1dG9UYWJsZTogKG9wdGlvbnM6IGFueSkgPT4ganNQREY7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjY291bnRpbmdSZXBvcnRSZXF1ZXN0IHtcclxuICBzdGFydERhdGU6IHN0cmluZztcclxuICBlbmREYXRlOiBzdHJpbmc7XHJcbiAgc2VuZENvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgcmVjdkNvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgYnVzaW5lc3NQYXJ0bmVyQ29ycmVsYXRpb25JRDogc3RyaW5nO1xyXG4gIHRyYW5zYWN0aW9uU3RhdHVzOiBzdHJpbmc7XHJcbiAgcGF5b3V0Q3VycmVuY3k6IHN0cmluZztcclxuICB0cmFuc2FjdGlvblR5cGU6IHN0cmluZztcclxuICBicmFuY2hDb2RlOiBzdHJpbmc7XHJcbiAgY29tcGFueUNvZGU6IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYWNjb3VudGluZy1yZXBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFjY291bnRpbmdSZXBvcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBSZXBvcnROYW1lOiBzdHJpbmcgPSBcIkFjY291bnRpbmdcIjtcclxuICByZXBvcnRVc2VyOiBhbnk7XHJcbiAgcmVwb3J0VGltZTogYW55O1xyXG4gIHJlcG9ydFBlcmlvZDogYW55O1xyXG4gIGJyYW5jaE5hbWVBbmRDb2RlOiBhbnk7XHJcbiAgc3ViR3JvdXBDb2x1bW46IGFueTtcclxuICBDb21wb25lbnRMb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzO1xyXG4gIGxvYWRpbmdTdGF0ZTogQ29tcG9uZW50TG9hZGluZ1N0YXRlcyA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXMuQ29tcGxldGU7XHJcbiAgbm9EYXRhRm91bmQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgbGVmdERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgcmlnaHREYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xyXG5cclxuICBzZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcclxuICByb3dEYXRhID0gW107XHJcbiAgYWNjb3VudGluZ1JlcG9ydE1vZGVsOiBBY2NvdW50aW5nUmVwb3J0TW9kZWw7XHJcbiAgcGFnZVNpemU6IG51bWJlciA9IDE1O1xyXG5cclxuICBzZWxlY3RlZEV4cG9ydE9wdGlvbjogc3RyaW5nID0gJ2V4Y2VsJztcclxuICBleHBvcnRGb3JtYXRzID0gW3sgZm9ybWF0TmFtZTogXCJFeGNlbFwiLCBjb2RlOiAnZXhjZWwnIH0sIHsgZm9ybWF0TmFtZTogXCJQREZcIiwgY29kZTogJ3BkZicgfSwgeyBmb3JtYXROYW1lOiBcIkNTVlwiLCBjb2RlOiAnY3N2JyB9XVxyXG5cclxuICBkZWZhdWx0Q29sRGVmOiBDb2xEZWYgPSB7XHJcbiAgICByZXNpemFibGU6IHRydWUsXHJcbiAgICBzb3J0YWJsZTogZmFsc2UsXHJcbiAgICBtaW5XaWR0aDogNDAsXHJcbiAgICBzdXBwcmVzc1NpemVUb0ZpdDogZmFsc2UsXHJcbiAgICBjZWxsU3R5bGU6IHsgdXNlclNlbGVjdDogJ3RleHQnLCAnbGluZS1oZWlnaHQnOiAnMS4yJywgJ3doaXRlLXNwYWNlJzogJ25vcm1hbCcsICd3b3JkLWJyZWFrJzogJ25vcm1hbCcsICdvdmVyZmxvdy13cmFwJzogJ2JyZWFrLXdvcmQnIH0sXHJcblxyXG4gICAgLy8gIEhlYWRlciB3cmFwcGluZ1xyXG4gICAgd3JhcEhlYWRlclRleHQ6IHRydWUsXHJcbiAgICBhdXRvSGVhZGVySGVpZ2h0OiB0cnVlLFxyXG5cclxuICAgIC8vICBDZWxsIHdyYXBwaW5nXHJcbiAgICB3cmFwVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWlnaHQ6IHRydWVcclxuICB9O1xyXG5cclxuICBjb2x1bW5EZWZzOiBDb2xEZWZbXSA9IFtcclxuICAgIHsgaGVhZGVyTmFtZTogJ0J1c2luZXNzRGF0ZScsIGZpZWxkOiAnYnVzaW5lc3NEYXRlJywgdG9vbHRpcEZpZWxkOiAnYnVzaW5lc3NEYXRlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVHhuRGF0ZSZUaW1lJywgZmllbGQ6ICd0cmFuc2FjdGlvbkRhdGVBbmRUaW1lJywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25EYXRlQW5kVGltZScsIG1pbldpZHRoOiAxMTAsIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBOdW1iZXInLCBmaWVsZDogJ3RyYW5zYWN0aW9uTnVtYmVyJywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZW5kQ2xpZW50JywgZmllbGQ6ICdzZW5kQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAnc2VuZENsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1ByaW5jaXBsZSBTZW5kQ2xpZW50IChJZiBBcHBsaWNhYmxlKScsIGZpZWxkOiAncHJpbmNpcGxlU2VuZENsaWVudCcsIHRvb2x0aXBGaWVsZDogJ3ByaW5jaXBsZVNlbmRDbGllbnQnLCB3aWR0aDogOTAsIG1pbldpZHRoOiA4MCwgbWF4V2lkdGg6IDExMCB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUmVjZWl2ZUNsaWVudCcsIGZpZWxkOiAncmVjZWl2ZUNsaWVudCcsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVDbGllbnQnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdQcmluY2lwbGUgUmVjZWl2ZUNsaWVudCAoSWYgQXBwbGljYWJsZSknLCBmaWVsZDogJ3ByaW5jaXBsZVJlY2VpdmVDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdwcmluY2lwbGVSZWNlaXZlQ2xpZW50Jywgd2lkdGg6IDEwMCwgbWluV2lkdGg6IDkwLCBtYXhXaWR0aDogMTIwIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdSZWNlaXZlQ2N5JywgZmllbGQ6ICdyZWNlaXZlQ3VycmVuY3knLCB0b29sdGlwRmllbGQ6ICdyZWNlaXZlQ3VycmVuY3knIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdBbW91bnRQYWlkJywgZmllbGQ6ICdhbW91bnRQYWlkJywgdG9vbHRpcEZpZWxkOiAnYW1vdW50UGFpZCcsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlbmRDY3knLCBmaWVsZDogJ3NlbmRDdXJyZW5jeScsIHRvb2x0aXBGaWVsZDogJ3NlbmRDdXJyZW5jeScsIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZXJ2aWNlRmVlJywgZmllbGQ6ICdzZXJ2aWNlRmVlJywgdG9vbHRpcEZpZWxkOiAnc2VydmljZUZlZScsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RheCcsIGZpZWxkOiAndGF4JywgdG9vbHRpcEZpZWxkOiAndGF4JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlU2VuZCBBbW91bnQnLCBmaWVsZDogJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCB0b29sdGlwRmllbGQ6ICdwcmluY2lwbGVTZW5kQW1vdW50JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVHJhbnNhY3Rpb24gU3RhdHVzJywgZmllbGQ6ICd0cmFuc2FjdGlvblN0YXR1cycsIHRvb2x0aXBGaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2V0dGxlbWVudENjeScsIGZpZWxkOiAnc2V0dGxlbWVudEN1cnJlbmN5JywgdG9vbHRpcEZpZWxkOiAnc2V0dGxlbWVudEN1cnJlbmN5JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnQ2xpZW50U2V0dGwgKGluIFNDY3kpJywgZmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5JywgdG9vbHRpcEZpZWxkOiAnY2xpZW50U2V0dGxlbWVudEluU0NjeScsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0NsaWVudFNldHRsIChpbiBVU0QpJywgZmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5VU0QnLCB0b29sdGlwRmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5VU0QnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTaGFyZVR5cGUnLCBmaWVsZDogJ3NoYXJlVHlwZScsIHRvb2x0aXBGaWVsZDogJ3NoYXJlVHlwZScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NoYXJlVmFsdWUnLCBmaWVsZDogJ3NoYXJlVmFsdWUnLCB0b29sdGlwRmllbGQ6ICdzaGFyZVZhbHVlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2VuZC9SZWNlaXZlIEZlZUNjeScsIGZpZWxkOiAnc2VuZFJlY2VpdmVGZWVDY3knLCB0b29sdGlwRmllbGQ6ICdzZW5kUmVjZWl2ZUZlZUNjeScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NoYXJlQW10IChpbiBVU0QpJywgZmllbGQ6ICdzaGFyZUFtb3VudEluVVNEJywgdG9vbHRpcEZpZWxkOiAnc2hhcmVBbW91bnRJblVTRCcsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NldHRsZW1lbnQgUmF0ZScsIGZpZWxkOiAnc2V0dGxlbWVudFJhdGUnLCB0b29sdGlwRmllbGQ6ICdzZXR0bGVtZW50UmF0ZScsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICBdO1xyXG5cclxuXHJcbiAgZ3JpZEFwaXM6IEdyaWRBcGlbXSA9IFtdO1xyXG4gIGdyaWRDb2x1bW5BcGlzOiBDb2x1bW5BcGlbXSA9IFtdO1xyXG5cclxuICBwYWdpbmF0aW9uQXJyYXk6IGFueVtdO1xyXG4gIGV6cmVtaXRVc2VyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb3JpZ2luYWxHcm91cEVudHJpZXM6IEFjY291bnRpbmdSZXBvcnRCcmFuY2hHcm91cFtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVwb3J0U2VydmljZTogUmVwb3J0U2VydmljZSwgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBlenJlbWl0dXNlcm5hbWUgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlenJlbWl0dXNlcm5hbWUnKTtcclxuICAgIGlmIChlenJlbWl0dXNlcm5hbWUpIHtcclxuICAgICAgdGhpcy5lenJlbWl0VXNlciA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0QWNjb3VudGluZ1JlcG9ydChyZXF1ZXN0PzogQWNjb3VudGluZ1JlcG9ydFJlcXVlc3QpIHtcclxuICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Mb2FkaW5nO1xyXG4gICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLmJyYW5jaE5hbWVBbmRDb2RlID0gdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdWJHcm91cENvbHVtbiA9IHVuZGVmaW5lZDtcclxuICAgIGNvbnN0IGZpbmFsUmVxID0gcmVxdWVzdDtcclxuXHJcbiAgICB0aGlzLnJlcG9ydFNlcnZpY2UuZ2V0QWNjb3VudGluZ1JlcG9ydChmaW5hbFJlcSkuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IGRhdGE7XHJcbiAgICAgIHRoaXMubG9hZGluZ1N0YXRlID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICAgICAgdGhpcy5ub0RhdGFGb3VuZCA9IE9iamVjdC5rZXlzKHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3VwcykubGVuZ3RoID09IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgIGNvbnN0IGJyYW5jaENvdW50ID0gdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmxlbmd0aDtcclxuICAgICAgdGhpcy5wYWdpbmF0aW9uQXJyYXkgPSBuZXcgQXJyYXkoYnJhbmNoQ291bnQgKiAyKS5maWxsKDE1KTtcclxuXHJcbiAgICAgIHRoaXMucmVwb3J0VXNlciA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLnJlcG9ydFVzZXI7XHJcbiAgICAgIHRoaXMucmVwb3J0VGltZSA9IGZvcm1hdERhdGUobmV3IERhdGUoKSwgJ2RkL01NL3l5eXkgaGg6bW0gYScsICdlbi1VUycpO1xyXG4gICAgICB0aGlzLnJlcG9ydFBlcmlvZCA9IGAke2Zvcm1hdERhdGUoZmluYWxSZXEuc3RhcnREYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpfSAtICR7Zm9ybWF0RGF0ZShmaW5hbFJlcS5lbmREYXRlLCAnZGQvTU0veXl5eScsICdlbi1VUycpfWA7XHJcblxyXG4gICAgICB0aGlzLmxlZnREYXRhID0ge1xyXG4gICAgICAgICdSZXBvcnQgVXNlciAnOiBgJHt0aGlzLnJlcG9ydFVzZXJ9YCxcclxuICAgICAgICAnUmVwb3J0IFRpbWUnOiBgJHt0aGlzLnJlcG9ydFRpbWV9YCxcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5yaWdodERhdGEgPSB7XHJcbiAgICAgICAgJ1JlcG9ydCBQZXJpb2QnOiBgJHt0aGlzLnJlcG9ydFBlcmlvZH1gLFxyXG4gICAgICAgICdDb21wYW55JzogXCJYcHJlc3MgTW9uZXlcIlxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBEZWVwIGNvcHkgdG8gcHJlc2VydmUgb3JpZ2luYWwgZGF0YSBmb3Igc2VhcmNoXHJcbiAgICAgIHRoaXMub3JpZ2luYWxHcm91cEVudHJpZXMgPSB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMubWFwKGdyb3VwID0+ICh7XHJcbiAgICAgICAgLi4uZ3JvdXAsXHJcbiAgICAgICAgc2VuZFRyYW5zYWN0aW9uczoge1xyXG4gICAgICAgICAgLi4uZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucyxcclxuICAgICAgICAgIGVudHJpZXM6IFsuLi5ncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXNdXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZWNlaXZlVHJhbnNhY3Rpb25zOiB7XHJcbiAgICAgICAgICAuLi5ncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLFxyXG4gICAgICAgICAgZW50cmllczogWy4uLmdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllc11cclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuXHJcblxyXG4gICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyhlcnJvcik7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGhhbmRsZUV4cG9ydChvcHRpb246IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZEV4cG9ydE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIHN3aXRjaCAodGhpcy5zZWxlY3RlZEV4cG9ydE9wdGlvbikge1xyXG4gICAgICBjYXNlICdleGNlbCc6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0V4Y2VsKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3BkZic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb1BkZigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjc3YnOlxyXG4gICAgICAgIHRoaXMuZXhwb3J0VG9Dc3YoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBhbGVydCgnUGxlYXNlIHNlbGVjdCBhbiBleHBvcnQgZm9ybWF0LicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWFyY2godGV4dDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBub3JtYWxpemUgPSAoc3RyOiBhbnkpOiBzdHJpbmcgPT5cclxuICAgICAgc3RyPy50b1N0cmluZygpXHJcbiAgICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgICAucmVwbGFjZSgvLC9nLCAnJylcclxuICAgICAgICAucmVwbGFjZSgvXFxzKy9nLCAnICcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1tcXHUyMDBCLVxcdTIwMERcXHVGRUZGXS9nLCAnJylcclxuICAgICAgICAudHJpbSgpO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoVGV4dCA9IHRleHQ7XHJcbiAgICBjb25zdCBzZWFyY2ggPSBub3JtYWxpemUodGV4dCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLm9yaWdpbmFsR3JvdXBFbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAvLyBCdWlsZCBmaWx0ZXJlZCBicmFuY2ggZ3JvdXBzXHJcbiAgICBjb25zdCBmaWx0ZXJlZEdyb3VwcyA9IHRoaXMub3JpZ2luYWxHcm91cEVudHJpZXMubWFwKGdyb3VwID0+IHtcclxuICAgICAgY29uc3Qgb3JpZ2luYWxTZW5kRW50cmllcyA9IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcyB8fCBbXTtcclxuICAgICAgY29uc3Qgb3JpZ2luYWxSZWNlaXZlRW50cmllcyA9IGdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcyB8fCBbXTtcclxuXHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkU2VuZCA9IHNlYXJjaFxyXG4gICAgICAgID8gb3JpZ2luYWxTZW5kRW50cmllcy5maWx0ZXIoZW50cnkgPT5cclxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkpLnNvbWUodmFsdWUgPT4gbm9ybWFsaXplKHZhbHVlKS5pbmNsdWRlcyhzZWFyY2gpKVxyXG4gICAgICAgIClcclxuICAgICAgICA6IFsuLi5vcmlnaW5hbFNlbmRFbnRyaWVzXTtcclxuXHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkUmVjZWl2ZSA9IHNlYXJjaFxyXG4gICAgICAgID8gb3JpZ2luYWxSZWNlaXZlRW50cmllcy5maWx0ZXIoZW50cnkgPT5cclxuICAgICAgICAgIE9iamVjdC52YWx1ZXMoZW50cnkpLnNvbWUodmFsdWUgPT4gbm9ybWFsaXplKHZhbHVlKS5pbmNsdWRlcyhzZWFyY2gpKVxyXG4gICAgICAgIClcclxuICAgICAgICA6IFsuLi5vcmlnaW5hbFJlY2VpdmVFbnRyaWVzXTtcclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZ3JvdXAsXHJcbiAgICAgICAgc2VuZFRyYW5zYWN0aW9uczogeyAuLi5ncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBlbnRyaWVzOiBmaWx0ZXJlZFNlbmQgfSxcclxuICAgICAgICByZWNlaXZlVHJhbnNhY3Rpb25zOiB7IC4uLmdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMsIGVudHJpZXM6IGZpbHRlcmVkUmVjZWl2ZSB9XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyDwn5S5IEtlZXAgb25seSBicmFuY2hlcyB0aGF0IGhhdmUgYW55IG1hdGNoaW5nIGVudHJpZXNcclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3VwcyA9XHJcbiAgICAgIGZpbHRlcmVkR3JvdXBzLmZpbHRlcihnID0+XHJcbiAgICAgICAgZy5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMubGVuZ3RoID4gMCB8fCBnLnJlY2VpdmVUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGggPiAwXHJcbiAgICAgICk7XHJcblxyXG4gICAgLy8gUmVzZXQgZ3JpZHMgZm9yIHZpc2libGUgYnJhbmNoZXNcclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKChncm91cCwgaW5kZXgpID0+IHtcclxuICAgICAgW2dyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXS5mb3JFYWNoKChlbnRyaWVzLCBpZHgpID0+IHtcclxuICAgICAgICBjb25zdCBncmlkQXBpID0gdGhpcy5ncmlkQXBpc1tpbmRleCAqIDIgKyBpZHhdO1xyXG4gICAgICAgIGlmIChncmlkQXBpKSB7XHJcbiAgICAgICAgICBncmlkQXBpLnNldFJvd0RhdGEoZW50cmllcyk7XHJcbiAgICAgICAgICBpZiAoZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub0ZpcnN0UGFnZSkgZ3JpZEFwaS5wYWdpbmF0aW9uR29Ub0ZpcnN0UGFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBvbkdyaWRSZWFkeShwYXJhbXM6IEdyaWRSZWFkeUV2ZW50LCBpZDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmdyaWRBcGlzW2lkXSA9IHBhcmFtcy5hcGk7XHJcbiAgICB0aGlzLmdyaWRDb2x1bW5BcGlzW2lkXSA9IHBhcmFtcy5jb2x1bW5BcGk7XHJcblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9TaXplQWxsQ29sdW1ucyhpZCksIDEwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25HcmlkU2l6ZUNoYW5nZWQocGFyYW1zOiBhbnksIGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuYXV0b1NpemVBbGxDb2x1bW5zKGlkKTtcclxuICB9XHJcblxyXG5cclxuICBhdXRvU2l6ZUFsbENvbHVtbnMoaWQ6IG51bWJlciwgc2tpcEhlYWRlcjogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBjb2x1bW5BcGkgPSB0aGlzLmdyaWRDb2x1bW5BcGlzW2lkXTtcclxuICAgIGlmICghY29sdW1uQXBpKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgYWxsQ29sdW1uSWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgY29sdW1uQXBpLmdldENvbHVtbnMoKS5mb3JFYWNoKChjb2x1bW46IGFueSkgPT4ge1xyXG4gICAgICBhbGxDb2x1bW5JZHMucHVzaChjb2x1bW4uZ2V0SWQoKSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb2x1bW5BcGkuYXV0b1NpemVDb2x1bW5zKGFsbENvbHVtbklkcywgc2tpcEhlYWRlcik7XHJcbiAgfVxyXG5cclxuXHJcbiAgZm9ybWF0TnVtYmVyKHBhcmFtczogYW55KTogc3RyaW5nIHtcclxuICAgIGlmIChwYXJhbXMudmFsdWUgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG5cclxuICAgIGNvbnN0IGZpZWxkID0gcGFyYW1zLmNvbERlZi5maWVsZDtcclxuXHJcbiAgICBpZiAoZmllbGQgPT09ICdzZXR0bGVtZW50UmF0ZScpIHtcclxuICAgICAgcmV0dXJuIE51bWJlcihwYXJhbXMudmFsdWUpLnRvRml4ZWQoOCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIE51bWJlcihwYXJhbXMudmFsdWUpLnRvRml4ZWQoMyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydFRvUGRmKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGl0bGUgPSAnQWNjb3VudGluZyBSZXBvcnQnO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQucGRmJztcclxuXHJcbiAgICBjb25zdCBtZXRhZGF0YTogW3N0cmluZywgc3RyaW5nXVtdID0gW1xyXG4gICAgICBbJ1JlcG9ydCBVc2VyOicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWU6JywgdGhpcy5yZXBvcnRUaW1lXSxcclxuICAgICAgWydSZXBvcnQgUGVyaW9kOicsIHRoaXMucmVwb3J0UGVyaW9kXSxcclxuICAgIF07XHJcblxyXG4gICAgY29uc3QgZG9jID0gbmV3IGpzUERGKHsgb3JpZW50YXRpb246ICdsYW5kc2NhcGUnLCB1bml0OiAnbW0nLCBmb3JtYXQ6IFs3MDAsIDIxMF0gfSk7XHJcblxyXG4gICAgY29uc3QgbG9nb1dpZHRoID0gMzguNCwgbG9nb0hlaWdodCA9IDE3LjUsIGxvZ29YID0gMTUsIGxvZ29ZID0gODtcclxuICAgIGNvbnN0IHBhZ2VXaWR0aCA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS53aWR0aDtcclxuICAgIGNvbnN0IHRpdGxlWSA9IDE4O1xyXG5cclxuICAgIC8vIExvZ29cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2VbJ2xvZ29CYXNlNjQnXSkge1xyXG4gICAgICBkb2MuYWRkSW1hZ2UodGhpcy5leHBvcnRTZXJ2aWNlWydsb2dvQmFzZTY0J10sICdQTkcnLCBsb2dvWCwgbG9nb1ksIGxvZ29XaWR0aCwgbG9nb0hlaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGl0bGVcclxuICAgIGRvYy5zZXRGb250U2l6ZSgxNSk7XHJcbiAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcclxuICAgIGRvYy50ZXh0KHRpdGxlLCBwYWdlV2lkdGggLyAyLCB0aXRsZVksIHsgYWxpZ246ICdjZW50ZXInIH0pO1xyXG5cclxuICAgIGxldCBjdXJyZW50WSA9IHRpdGxlWSArIDE0O1xyXG5cclxuICAgIC8vIE1ldGFkYXRhXHJcbiAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xyXG4gICAgbWV0YWRhdGEuZm9yRWFjaCgoW2xhYmVsLCB2YWx1ZV0sIGkpID0+IHtcclxuICAgICAgY29uc3QgeSA9IGN1cnJlbnRZICsgaSAqIDc7XHJcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgICBkb2MudGV4dChsYWJlbCwgMTUsIHkpO1xyXG4gICAgICBjb25zdCBsYWJlbFdpZHRoID0gZG9jLmdldFRleHRXaWR0aChsYWJlbCArICcgJyk7XHJcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnbm9ybWFsJyk7XHJcbiAgICAgIGRvYy50ZXh0KHZhbHVlID8/ICcnLCAxNSArIGxhYmVsV2lkdGgsIHkpO1xyXG4gICAgfSk7XHJcbiAgICBjdXJyZW50WSArPSBtZXRhZGF0YS5sZW5ndGggKiA3ICsgNTtcclxuXHJcbiAgICAvLyBCcmFuY2hlc1xyXG4gICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICBkb2Muc2V0Rm9udFNpemUoMTApO1xyXG4gICAgICBkb2Muc2V0Rm9udCgnaGVsdmV0aWNhJywgJ2JvbGQnKTtcclxuXHJcbiAgICAgIGNvbnN0IGJyYW5jaFRleHQgPSBgQnJhbmNoIChOYW1lICYgQ29kZSk6ICR7Z3JvdXAuYnJhbmNoTmFtZUFuZENvZGV9YDtcclxuICAgICAgZG9jLnRleHQoYnJhbmNoVGV4dCwgMTUsIGN1cnJlbnRZKTtcclxuICAgICAgY3VycmVudFkgKz0gNztcclxuXHJcbiAgICAgIC8vIExvb3Agc3ViZ3JvdXBzIChTZW5kICsgUmVjZWl2ZSlcclxuICAgICAgW2dyb3VwLnNlbmRUcmFuc2FjdGlvbnMsIGdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnNdLmZvckVhY2goc3ViR3JvdXAgPT4ge1xyXG4gICAgICAgIGlmICghc3ViR3JvdXAuZW50cmllcz8ubGVuZ3RoKSByZXR1cm47XHJcblxyXG4gICAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgICAgIGRvYy50ZXh0KGBTdWIgR3JvdXA6ICR7c3ViR3JvdXAuc3ViR3JvdXBOYW1lfWAsIDE1LCBjdXJyZW50WSk7XHJcbiAgICAgICAgY3VycmVudFkgKz0gNTtcclxuXHJcbiAgICAgICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLnByZXBhcmVBY2NvdW50aW5nVGFibGUoc3ViR3JvdXAuZW50cmllcyk7XHJcblxyXG4gICAgICAgIChkb2MgYXMgYW55KS5hdXRvVGFibGUoe1xyXG4gICAgICAgICAgaGVhZDogW2hlYWRlcnNdLFxyXG4gICAgICAgICAgYm9keTogcm93cyxcclxuICAgICAgICAgIHN0YXJ0WTogY3VycmVudFksXHJcbiAgICAgICAgICB0aGVtZTogJ2dyaWQnLFxyXG4gICAgICAgICAgaGVhZFN0eWxlczoge1xyXG4gICAgICAgICAgICBmaWxsQ29sb3I6IFsyMjAsIDIyMCwgMjIwXSwgdGV4dENvbG9yOiAwLFxyXG4gICAgICAgICAgICBmb250U3R5bGU6ICdib2xkJywgZm9udFNpemU6IDksIGhhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgYm9keVN0eWxlczogeyBmb250U2l6ZTogOCwgZmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NV0sIHRleHRDb2xvcjogWzAsIDAsIDBdIH0sXHJcbiAgICAgICAgICBzdHlsZXM6IHsgY2VsbFBhZGRpbmc6IDIsIG92ZXJmbG93OiAnbGluZWJyZWFrJywgbWluQ2VsbEhlaWdodDogNiB9LFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjdXJyZW50WSA9IChkb2MgYXMgYW55KS5sYXN0QXV0b1RhYmxlLmZpbmFsWSArIDEwO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGRvYy5zYXZlKGZpbGVOYW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9FeGNlbCgpIHtcclxuICAgIGlmICghdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzPy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IHRpdGxlID0gJ0FjY291bnRpbmcgUmVwb3J0JztcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gJ0FjY291bnRpbmctUmVwb3J0Lnhsc3gnO1xyXG5cclxuICAgIGNvbnN0IHdvcmtib29rID0gbmV3IEV4Y2VsSlMuV29ya2Jvb2soKTtcclxuICAgIGNvbnN0IHdvcmtzaGVldCA9IHdvcmtib29rLmFkZFdvcmtzaGVldCgnQWNjb3VudGluZyBSZXBvcnQnKTtcclxuICAgIGxldCBjdXJyZW50Um93ID0gMTtcclxuXHJcbiAgICAvLyBMb2dvXHJcbiAgICBpZiAodGhpcy5leHBvcnRTZXJ2aWNlLmxvZ29CYXNlNjQpIHtcclxuICAgICAgY29uc3QgYmFzZTY0RGF0YSA9IHRoaXMuZXhwb3J0U2VydmljZS5sb2dvQmFzZTY0LnJlcGxhY2UoL15kYXRhOmltYWdlXFwvXFx3KztiYXNlNjQsLywgJycpO1xyXG4gICAgICBjb25zdCBpbWFnZUlkID0gd29ya2Jvb2suYWRkSW1hZ2Uoe1xyXG4gICAgICAgIGJhc2U2NDogYmFzZTY0RGF0YSxcclxuICAgICAgICBleHRlbnNpb246ICdwbmcnLFxyXG4gICAgICB9KTtcclxuICAgICAgd29ya3NoZWV0LmFkZEltYWdlKGltYWdlSWQsIHsgdGw6IHsgY29sOiAwLCByb3c6IDAgfSwgZXh0OiB7IHdpZHRoOiAxNDUsIGhlaWdodDogNjYgfSwgZWRpdEFzOiAnb25lQ2VsbCcgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGl0bGVcclxuICAgIGNvbnN0IHRpdGxlUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KTtcclxuICAgIHRpdGxlUm93LmdldENlbGwoNikudmFsdWUgPSB0aXRsZTtcclxuICAgIHRpdGxlUm93LmdldENlbGwoNikuZm9udCA9IHsgYm9sZDogdHJ1ZSwgc2l6ZTogMTYgfTtcclxuICAgIHRpdGxlUm93LmdldENlbGwoNikuYWxpZ25tZW50ID0geyB2ZXJ0aWNhbDogJ21pZGRsZScsIGhvcml6b250YWw6ICdsZWZ0JyB9O1xyXG4gICAgd29ya3NoZWV0Lm1lcmdlQ2VsbHMoYEYke2N1cnJlbnRSb3d9Okoke2N1cnJlbnRSb3d9YCk7XHJcbiAgICBjdXJyZW50Um93ICs9IDM7XHJcblxyXG4gICAgLy8gTWV0YWRhdGFcclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXInLCB0aGlzLnJlcG9ydFVzZXJdLFxyXG4gICAgICBbJ1JlcG9ydCBUaW1lJywgdGhpcy5yZXBvcnRUaW1lXSxcclxuICAgICAgWydSZXBvcnQgUGVyaW9kJywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgXTtcclxuICAgIG1ldGFkYXRhLmZvckVhY2goKFtsYWJlbCwgdmFsdWVdKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgcm93LmdldENlbGwoMSkudmFsdWUgPSB7XHJcbiAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgIHsgdGV4dDogYCR7bGFiZWx9OiBgLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgeyB0ZXh0OiB2YWx1ZSA/PyAnJywgZm9udDogeyBib2xkOiBmYWxzZSB9IH1cclxuICAgICAgICBdXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTsgY3VycmVudFJvdysrO1xyXG5cclxuICAgIC8vIEJyYW5jaGVzXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGNvbnN0IGJyYW5jaFJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgYnJhbmNoUm93LmdldENlbGwoMSkudmFsdWUgPSB7XHJcbiAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgIHsgdGV4dDogJ0JyYW5jaCAoTmFtZSAmIENvZGUpOiAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgeyB0ZXh0OiBncm91cC5icmFuY2hOYW1lQW5kQ29kZSA/PyAnJywgZm9udDogeyBib2xkOiBmYWxzZSB9IH1cclxuICAgICAgICBdXHJcbiAgICAgIH07XHJcbiAgICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgICAvLyBMb29wIHN1Ymdyb3Vwc1xyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFzdWJHcm91cC5lbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgY29uc3Qgc3ViR3JvdXBSb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3crKyk7XHJcbiAgICAgICAgc3ViR3JvdXBSb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICAgIHJpY2hUZXh0OiBbXHJcbiAgICAgICAgICAgIHsgdGV4dDogJ1N1YiBHcm91cDogJywgZm9udDogeyBib2xkOiB0cnVlIH0gfSxcclxuICAgICAgICAgICAgeyB0ZXh0OiBzdWJHcm91cC5zdWJHcm91cE5hbWUgPz8gJycsIGZvbnQ6IHsgYm9sZDogZmFsc2UgfSB9XHJcbiAgICAgICAgICBdXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7IGN1cnJlbnRSb3crKztcclxuXHJcbiAgICAgICAgLy8gSGVhZGVyc1xyXG4gICAgICAgIGNvbnN0IHsgaGVhZGVycywgcm93cyB9ID0gdGhpcy5wcmVwYXJlQWNjb3VudGluZ1RhYmxlKHN1Ykdyb3VwLmVudHJpZXMpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlclJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgICBoZWFkZXJzLmZvckVhY2goKGhlYWRlciwgaSkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgY2VsbCA9IGhlYWRlclJvdy5nZXRDZWxsKGkgKyAxKTtcclxuICAgICAgICAgIGNlbGwudmFsdWUgPSBoZWFkZXI7XHJcbiAgICAgICAgICBjZWxsLmZvbnQgPSB7IGJvbGQ6IHRydWUgfTtcclxuICAgICAgICAgIGNlbGwuZmlsbCA9IHsgdHlwZTogJ3BhdHRlcm4nLCBwYXR0ZXJuOiAnc29saWQnLCBmZ0NvbG9yOiB7IGFyZ2I6ICdEOUQ5RDknIH0gfTtcclxuICAgICAgICAgIGNlbGwuYWxpZ25tZW50ID0geyB2ZXJ0aWNhbDogJ21pZGRsZScsIGhvcml6b250YWw6ICdjZW50ZXInIH07XHJcbiAgICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBSb3dzXHJcbiAgICAgICAgcm93cy5mb3JFYWNoKHIgPT4ge1xyXG4gICAgICAgICAgY29uc3Qgcm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICAgICAgci5mb3JFYWNoKCh2YWwsIGkpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgY2VsbCA9IHJvdy5nZXRDZWxsKGkgKyAxKTtcclxuICAgICAgICAgICAgY2VsbC52YWx1ZSA9IHZhbDtcclxuICAgICAgICAgICAgY2VsbC5ib3JkZXIgPSB7IHRvcDogeyBzdHlsZTogJ3RoaW4nIH0sIGJvdHRvbTogeyBzdHlsZTogJ3RoaW4nIH0sIGxlZnQ6IHsgc3R5bGU6ICd0aGluJyB9LCByaWdodDogeyBzdHlsZTogJ3RoaW4nIH0gfTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTsgY3VycmVudFJvdysrO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEF1dG8tYWRqdXN0IGNvbHVtbiB3aWR0aHMgKGluY2x1ZGluZyBTciBObylcclxuICAgIGNvbnN0IGFsbEhlYWRlcnMgPSBbJ1NyIE5vJywgLi4udGhpcy5jb2x1bW5EZWZzLm1hcChjID0+IGMuaGVhZGVyTmFtZSldO1xyXG4gICAgYWxsSGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIGkpID0+IHtcclxuICAgICAgbGV0IG1heExlbmd0aCA9IGhlYWRlci5sZW5ndGg7IC8vIHN0YXJ0IHdpdGggaGVhZGVyIGxlbmd0aFxyXG5cclxuICAgICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICAgIHN1Ykdyb3VwLmVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XHJcbiAgICAgICAgICAgIC8vIFNyIE5vIGNvbHVtbiAoaSA9IDApIGlzIGp1c3QgbnVtYmVyc1xyXG4gICAgICAgICAgICBsZXQgdmFsID0gaSA9PT0gMCA/IChzdWJHcm91cC5lbnRyaWVzLmluZGV4T2YoZW50cnkpICsgMSkudG9TdHJpbmcoKSA6IChlbnRyeVt0aGlzLmNvbHVtbkRlZnNbaSAtIDFdPy5maWVsZF0gPz8gJycpO1xyXG4gICAgICAgICAgICBjb25zdCBsZW4gPSB2YWwudG9TdHJpbmcoKS5sZW5ndGg7XHJcbiAgICAgICAgICAgIGlmIChsZW4gPiBtYXhMZW5ndGgpIG1heExlbmd0aCA9IGxlbjtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHdvcmtzaGVldC5nZXRDb2x1bW4oaSArIDEpLndpZHRoID0gbWF4TGVuZ3RoICsgNTsgLy8gcGFkZGluZ1xyXG4gICAgfSk7XHJcblxyXG4gICAgd29ya2Jvb2sueGxzeC53cml0ZUJ1ZmZlcigpLnRoZW4oYnVmZmVyID0+IHtcclxuICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtidWZmZXJdLCB7XHJcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0J1xyXG4gICAgICB9KTtcclxuICAgICAgRmlsZVNhdmVyLnNhdmVBcyhibG9iLCBmaWxlTmFtZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuXHJcblxyXG5cclxuICBwcml2YXRlIHByZXBhcmVBY2NvdW50aW5nVGFibGUoZGF0YTogYW55W10pOiB7IGhlYWRlcnM6IHN0cmluZ1tdLCByb3dzOiBhbnlbXVtdIH0ge1xyXG4gICAgY29uc3QgY3VycmVuY3lGaWVsZHMgPSBbJ2Ftb3VudFBhaWQnLCAnc2VydmljZUZlZScsICd0YXgnLCAncHJpbmNpcGxlU2VuZEFtb3VudCcsICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5J107XHJcbiAgICBjb25zdCBoZWFkZXJzID0gWydTciBObycsIC4uLnRoaXMuY29sdW1uRGVmcy5tYXAoYyA9PiBjLmhlYWRlck5hbWUpXTtcclxuXHJcbiAgICBpZiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHsgaGVhZGVycywgcm93czogW10gfTsgLy8gcmV0dXJuIGhlYWRlcnMgb25seSwgZW1wdHkgcm93c1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHJvd3MgPSBkYXRhLm1hcCgocm93LCBpKSA9PiB7XHJcbiAgICAgIHJldHVybiBbXHJcbiAgICAgICAgaSArIDEsXHJcbiAgICAgICAgLi4udGhpcy5jb2x1bW5EZWZzLm1hcChjb2wgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbCA9IHJvd1tjb2wuZmllbGRdO1xyXG4gICAgICAgICAgaWYgKHZhbCA9PSBudWxsKSByZXR1cm4gJyc7XHJcbiAgICAgICAgICBpZiAoY3VycmVuY3lGaWVsZHMuaW5jbHVkZXMoY29sLmZpZWxkKSkgcmV0dXJuIHBhcnNlRmxvYXQodmFsKS50b0ZpeGVkKDMpO1xyXG4gICAgICAgICAgaWYgKGNvbC5maWVsZCA9PT0gJ3NldHRsZW1lbnRSYXRlJykgcmV0dXJuIHBhcnNlRmxvYXQodmFsKS50b0ZpeGVkKDgpO1xyXG4gICAgICAgICAgcmV0dXJuIHZhbDtcclxuICAgICAgICB9KVxyXG4gICAgICBdO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHsgaGVhZGVycywgcm93cyB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnRUb0NzdigpIHtcclxuICAgIGlmICghdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzPy5sZW5ndGgpIHJldHVybjtcclxuICAgIGNvbnN0IGZpbGVOYW1lID0gJ0FjY291bnRpbmctUmVwb3J0LmNzdic7XHJcbiAgICBjb25zdCByb3dzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIHJvd3MucHVzaCgnUmVwb3J0IFRpdGxlOiBBY2NvdW50aW5nIFJlcG9ydCcpO1xyXG4gICAgcm93cy5wdXNoKCcnKTtcclxuICAgIHJvd3MucHVzaChgUmVwb3J0IFVzZXI6ICR7dGhpcy5yZXBvcnRVc2VyfWApO1xyXG4gICAgcm93cy5wdXNoKGBSZXBvcnQgVGltZTogJHt0aGlzLnJlcG9ydFRpbWV9YCk7XHJcbiAgICByb3dzLnB1c2goYFJlcG9ydCBQZXJpb2Q6ICR7dGhpcy5yZXBvcnRQZXJpb2R9YCk7XHJcbiAgICByb3dzLnB1c2goYENvbXBhbnk6IFhwcmVzcyBNb25leWApO1xyXG4gICAgcm93cy5wdXNoKCcnKTtcclxuXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIHJvd3MucHVzaChgQnJhbmNoIChOYW1lICYgQ29kZSk6ICR7Z3JvdXAuYnJhbmNoTmFtZUFuZENvZGV9YCk7XHJcblxyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFzdWJHcm91cC5lbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgcm93cy5wdXNoKGBTdWIgR3JvdXA6ICR7c3ViR3JvdXAuc3ViR3JvdXBOYW1lfWApO1xyXG5cclxuICAgICAgICAvLyAgQWRkIFwiU3IgTm9cIiBhdCB0aGUgYmVnaW5uaW5nIG9mIGhlYWRlcnNcclxuICAgICAgICByb3dzLnB1c2goWydcIlNyIE5vXCInLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiBgXCIke2NvbC5oZWFkZXJOYW1lfVwiYCldLmpvaW4oJywnKSk7XHJcblxyXG4gICAgICAgIHN1Ykdyb3VwLmVudHJpZXMuZm9yRWFjaCgoZW50cnksIGlkeCkgPT4ge1xyXG4gICAgICAgICAgLy8gIEFkZCBzZXJpYWwgbnVtYmVyIGF0IHN0YXJ0IG9mIGVhY2ggcm93XHJcbiAgICAgICAgICBjb25zdCByb3cgPSBbXHJcbiAgICAgICAgICAgIChpZHggKyAxKS50b1N0cmluZygpLFxyXG4gICAgICAgICAgICAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsID0gZW50cnlbY29sLmZpZWxkXTtcclxuICAgICAgICAgICAgICBpZiAodmFsID09IG51bGwpIHJldHVybiAnJztcclxuICAgICAgICAgICAgICBpZiAoWydhbW91bnRQYWlkJywgJ3NlcnZpY2VGZWUnLCAndGF4JywgJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCAnY2xpZW50U2V0dGxlbWVudEluU0NjeSddLmluY2x1ZGVzKGNvbC5maWVsZCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KHZhbCkudG9GaXhlZCgzKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGNvbC5maWVsZCA9PT0gJ3NldHRsZW1lbnRSYXRlJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsKS50b0ZpeGVkKDgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICByZXR1cm4gYFwiJHt2YWx9XCJgO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgXS5qb2luKCcsJyk7XHJcbiAgICAgICAgICByb3dzLnB1c2gocm93KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcm93cy5wdXNoKCcnKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3Jvd3Muam9pbignXFxuJyldLCB7IHR5cGU6ICd0ZXh0L2NzdjtjaGFyc2V0PXV0Zi04OycgfSk7XHJcbiAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgIGxpbmsuc2V0QXR0cmlidXRlKCdkb3dubG9hZCcsIGZpbGVOYW1lKTtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICBsaW5rLmNsaWNrKCk7XHJcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIGdldFJlcG9ydChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IG1vZGFsID0gcGF5bG9hZD8ubW9kYWwgfHwgcGF5bG9hZDtcclxuXHJcbiAgICBjb25zdCByZXE6IEFjY291bnRpbmdSZXBvcnRSZXF1ZXN0ID0ge1xyXG4gICAgICBzdGFydERhdGU6IG1vZGFsLmZyb21EYXRlLCAvLyB5eXl5LU1NLWRkIGZyb20gdGhlIGZpbHRlclxyXG4gICAgICBlbmREYXRlOiBtb2RhbC50b0RhdGUsXHJcbiAgICAgIHNlbmRDb3VudHJ5Q29kZTogbW9kYWwuc2VuZENvdW50cnkgPz8gJ0FMTCcsXHJcbiAgICAgIHJlY3ZDb3VudHJ5Q29kZTogbW9kYWwucmVjZWl2ZUNvdW50cnkgPz8gJ0FMTCcsXHJcbiAgICAgIGJ1c2luZXNzUGFydG5lckNvcnJlbGF0aW9uSUQ6IG1vZGFsLmNsaWVudCA/PyAnQUxMJyxcclxuICAgICAgdHJhbnNhY3Rpb25TdGF0dXM6IG1vZGFsLnRyYW5zYWN0aW9uU3RhdHVzLmpvaW4oXCIsXCIpLFxyXG4gICAgICBwYXlvdXRDdXJyZW5jeTogbW9kYWwuY3VycmVuY3kgPz8gJ0FMTCcsXHJcbiAgICAgIHRyYW5zYWN0aW9uVHlwZTogbW9kYWwucHJvZHVjdCA/PyAnQUxMJyxcclxuICAgICAgYnJhbmNoQ29kZTogbW9kYWwuYnJhbmNoID8/ICdBTEwnLFxyXG4gICAgICBjb21wYW55Q29kZTogJ0FMTCcgLy8gb3IgJ0JIJyBpZiB5b3VyIEFQSSByZXF1aXJlcyBpdCBzcGVjaWZpY2FsbHlcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5nZXRBY2NvdW50aW5nUmVwb3J0KHJlcSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bGliLXNlYXJjaC1maWx0ZXIgW1JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIChzZWFyY2hDbGlja2VkKT1cImdldFJlcG9ydCgkZXZlbnQpXCI+PC9saWItc2VhcmNoLWZpbHRlcj5cclxuXHJcbjxhcHAtbG9hZGVyIGNsYXNzPVwiXCIgKm5nSWY9XCJsb2FkaW5nU3RhdGUgPT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkxvYWRpbmdcIj48L2FwcC1sb2FkZXI+XHJcblxyXG48ZGl2ICpuZ0lmPVwiYWNjb3VudGluZ1JlcG9ydE1vZGVsIT11bmRlZmluZWQgJiYgbG9hZGluZ1N0YXRlID09IENvbXBvbmVudExvYWRpbmdTdGF0ZS5Db21wbGV0ZSAmJiAhbm9EYXRhRm91bmQgXCJcclxuICBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDMwcHg7XCI+XHJcblxyXG4gIDxsaWItbWV0YWRhdGEgW3JlcG9ydE5hbWVdPVwiUmVwb3J0TmFtZVwiIFtzaG93bWV0YURhdGFPbmVdPVwidHJ1ZVwiIFtzaG93bWV0YURhdGFUd29dPVwidHJ1ZVwiIFttZXRhRGF0YU9uZV09XCJsZWZ0RGF0YVwiXHJcbiAgICBbbWV0YURhdGFUd29dPVwicmlnaHREYXRhXCIgKGV4cG9ydEV2ZW50KT1cImhhbmRsZUV4cG9ydCgkZXZlbnQpXCIgKHNlYXJjaEV2ZW50KT1cIm9uU2VhcmNoKCRldmVudClcIj48L2xpYi1tZXRhZGF0YT5cclxuXHJcbiAgPGRpdiAqbmdJZj1cImFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aFwiPlxyXG4gICAgPG5nYi1hY2NvcmRpb24gI2FjYz1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJmYWxzZVwiIFthY3RpdmVJZHNdPVwiJ3BhbmVsLTAnXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGFjY291bnRpbmdSZXBvcnRNb2RlbD8uYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPG5nYi1wYW5lbCBbaWRdPVwiJ3BhbmVsLScgKyBpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicGFuZWwtY2xzXCI+XHJcbiAgICAgICAgICAgICAge3sgZ3JvdXAuYnJhbmNoTmFtZUFuZENvZGUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cclxuICAgICAgICAgICAgPCEtLSBTZW5kIFRyYW5zYWN0aW9ucyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJzdWJncm91cGNvbHVtblwiPnt7IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuc3ViR3JvdXBOYW1lIH19PC9oNj5cclxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1wYWdlLXNpemUtc2VsZWN0b3IgW3RvdGFsRW50cmllc109XCJncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMubGVuZ3RoXCIgW2RlZmF1bHRTaXplXT1cIicxNSdcIlxyXG4gICAgICAgICAgICAgICAgICBbZ3JpZEFwaV09XCJncmlkQXBpc1tpICogMl1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLXBhZ2Utc2l6ZS1zZWxlY3Rvcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lIHRyYW5zYWN0aW9uLWdyaWQgZ3JpZC1zaXplXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFtyb3dEYXRhXT1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjBcIiBbaGVhZGVySGVpZ2h0XT1cIjI0XCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvbkFycmF5W2ldXCJcclxuICAgICAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQsIGkgKiAyKVwiIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50LCBpICogMilcIj5cclxuICAgICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUmVjZWl2ZSBUcmFuc2FjdGlvbnMgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMubGVuZ3RoXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgPGg2IGNsYXNzPVwic3ViZ3JvdXBjb2x1bW5cIj57eyBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLnN1Ykdyb3VwTmFtZSB9fTwvaDY+XHJcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiIFtkZWZhdWx0U2l6ZV09XCInMTUnXCJcclxuICAgICAgICAgICAgICAgICAgW2dyaWRBcGldPVwiZ3JpZEFwaXNbaSAqIDIgKyAxXVwiPlxyXG4gICAgICAgICAgICAgICAgPC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgdHJhbnNhY3Rpb24tZ3JpZCBncmlkLXNpemVcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXCIgW3Jvd0hlaWdodF09XCIyMFwiIFtoZWFkZXJIZWlnaHRdPVwiMjRcIiBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uQXJyYXlbaV1cIiAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudCwgaSAqIDIgKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50LCBpICogMilcIj5cclxuICAgICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ2ItcGFuZWw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZ2ItYWNjb3JkaW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtdC0zXCIgKm5nSWY9XCJub0RhdGFGb3VuZCAmJiBsb2FkaW5nU3RhdGUhPUNvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+XHJcbiAgTm8gRGF0YSBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYS5cclxuPC9kaXY+Il19
|
|
487
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudGluZy1yZXBvcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmVwb3J0cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2FjY291bnRpbmctcmVwb3J0L2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JlcG9ydHMtbGliL3NyYy9saWIvY29tcG9uZW50cy9hY2NvdW50aW5nLXJlcG9ydC9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQUtyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFL0UsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8saUJBQWlCLENBQUM7QUFDekIsT0FBTyxLQUFLLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDbkMsT0FBTyxLQUFLLFNBQVMsTUFBTSxZQUFZLENBQUM7Ozs7Ozs7Ozs7O0FBMEJ4QyxNQUFNLE9BQU8seUJBQXlCO0lBd0VwQyxZQUFvQixhQUE0QixFQUFVLGFBQTRCO1FBQWxFLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF0RXRGLGVBQVUsR0FBVyxZQUFZLENBQUM7UUFNbEMsMEJBQXFCLEdBQUcsc0JBQXNCLENBQUM7UUFDL0MsaUJBQVksR0FBMkIsc0JBQXNCLENBQUMsUUFBUSxDQUFDO1FBQ3ZFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBSzdCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUViLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFF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bEMsQ0FBQztJQU1ELFNBQVMsQ0FBQyxPQUFZO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxDQUFDO1FBRXhDLE1BQU0sR0FBRyxHQUE0QjtZQUNuQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDekIsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3JCLGVBQWUsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUs7WUFDM0MsZUFBZSxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSztZQUM5Qyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDbkQsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDcEQsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSztZQUN2QyxlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLO1lBQ3ZDLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUs7WUFDakMsV0FBVyxFQUFFLEtBQUssQ0FBQywrQ0FBK0M7U0FDbkUsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxDQUFDOztzSEFyakJVLHlCQUF5QjswR0FBekIseUJBQXlCLDZEQ3JDdEMsMmpIQStETTsyRkQxQk8seUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY2NvdW50aW5nUmVwb3J0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudGluZy1yZXBvcnQvYWNjb3VudGluZy1yZXBvcnQtbW9kZWwnO1xyXG5pbXBvcnQgeyBDb2xEZWYsIENvbHVtbkFwaSwgR3JpZEFwaSwgR3JpZFJlYWR5RXZlbnQgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcbmltcG9ydCB7IFJlcG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEV4cG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXhwb3J0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50TG9hZGluZ1N0YXRlcyB9IGZyb20gJy4uLy4uL21vZGVscy9jb21wb25lbnQtbG9hZGluZy1zdGF0ZXMnO1xyXG5pbXBvcnQgeyBBY2NvdW50aW5nUmVwb3J0QnJhbmNoR3JvdXAgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWNjb3VudGluZy1yZXBvcnQvYWNjb3VudGluZy1yZXBvcnQtYnJhbmNoLWdyb3VwJztcclxuaW1wb3J0IGpzUERGIGZyb20gJ2pzcGRmJztcclxuaW1wb3J0ICdqc3BkZi1hdXRvdGFibGUnO1xyXG5pbXBvcnQgKiBhcyBFeGNlbEpTIGZyb20gJ2V4Y2VsanMnO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcblxyXG5kZWNsYXJlIG1vZHVsZSAnanNwZGYnIHtcclxuICBpbnRlcmZhY2UganNQREYge1xyXG4gICAgYXV0b1RhYmxlOiAob3B0aW9uczogYW55KSA9PiBqc1BERjtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudGluZ1JlcG9ydFJlcXVlc3Qge1xyXG4gIHN0YXJ0RGF0ZTogc3RyaW5nO1xyXG4gIGVuZERhdGU6IHN0cmluZztcclxuICBzZW5kQ291bnRyeUNvZGU6IHN0cmluZztcclxuICByZWN2Q291bnRyeUNvZGU6IHN0cmluZztcclxuICBidXNpbmVzc1BhcnRuZXJDb3JyZWxhdGlvbklEOiBzdHJpbmc7XHJcbiAgdHJhbnNhY3Rpb25TdGF0dXM6IHN0cmluZztcclxuICBwYXlvdXRDdXJyZW5jeTogc3RyaW5nO1xyXG4gIHRyYW5zYWN0aW9uVHlwZTogc3RyaW5nO1xyXG4gIGJyYW5jaENvZGU6IHN0cmluZztcclxuICBjb21wYW55Q29kZTogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1hY2NvdW50aW5nLXJlcG9ydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FjY291bnRpbmctcmVwb3J0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hY2NvdW50aW5nLXJlcG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWNjb3VudGluZ1JlcG9ydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIFJlcG9ydE5hbWU6IHN0cmluZyA9IFwiQWNjb3VudGluZ1wiO1xyXG4gIHJlcG9ydFVzZXI6IGFueTtcclxuICByZXBvcnRUaW1lOiBhbnk7XHJcbiAgcmVwb3J0UGVyaW9kOiBhbnk7XHJcbiAgYnJhbmNoTmFtZUFuZENvZGU6IGFueTtcclxuICBzdWJHcm91cENvbHVtbjogYW55O1xyXG4gIENvbXBvbmVudExvYWRpbmdTdGF0ZSA9IENvbXBvbmVudExvYWRpbmdTdGF0ZXM7XHJcbiAgbG9hZGluZ1N0YXRlOiBDb21wb25lbnRMb2FkaW5nU3RhdGVzID0gQ29tcG9uZW50TG9hZGluZ1N0YXRlcy5Db21wbGV0ZTtcclxuICBub0RhdGFGb3VuZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBsZWZ0RGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcclxuICByaWdodERhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG4gIHNlYXJjaFRleHQ6IHN0cmluZyA9ICcnO1xyXG4gIHJvd0RhdGEgPSBbXTtcclxuICBhY2NvdW50aW5nUmVwb3J0TW9kZWw6IEFjY291bnRpbmdSZXBvcnRNb2RlbDtcclxuICBwYWdlU2l6ZTogbnVtYmVyID0gMTU7XHJcblxyXG4gIHNlbGVjdGVkRXhwb3J0T3B0aW9uOiBzdHJpbmcgPSAnZXhjZWwnO1xyXG4gIGV4cG9ydEZvcm1hdHMgPSBbeyBmb3JtYXROYW1lOiBcIkV4Y2VsXCIsIGNvZGU6ICdleGNlbCcgfSwgeyBmb3JtYXROYW1lOiBcIlBERlwiLCBjb2RlOiAncGRmJyB9LCB7IGZvcm1hdE5hbWU6IFwiQ1NWXCIsIGNvZGU6ICdjc3YnIH1dXHJcblxyXG4gIGRlZmF1bHRDb2xEZWY6IENvbERlZiA9IHtcclxuICAgIHJlc2l6YWJsZTogdHJ1ZSxcclxuICAgIHNvcnRhYmxlOiBmYWxzZSxcclxuICAgIG1pbldpZHRoOiA0MCxcclxuICAgIHN1cHByZXNzU2l6ZVRvRml0OiBmYWxzZSxcclxuICAgIGNlbGxTdHlsZTogeyB1c2VyU2VsZWN0OiAndGV4dCcsICdsaW5lLWhlaWdodCc6ICcxLjInLCAnd2hpdGUtc3BhY2UnOiAnbm9ybWFsJywgJ3dvcmQtYnJlYWsnOiAnbm9ybWFsJywgJ292ZXJmbG93LXdyYXAnOiAnYnJlYWstd29yZCcgfSxcclxuXHJcbiAgICAvLyAgSGVhZGVyIHdyYXBwaW5nXHJcbiAgICB3cmFwSGVhZGVyVGV4dDogdHJ1ZSxcclxuICAgIGF1dG9IZWFkZXJIZWlnaHQ6IHRydWUsXHJcblxyXG4gICAgLy8gIENlbGwgd3JhcHBpbmdcclxuICAgIHdyYXBUZXh0OiB0cnVlLFxyXG4gICAgYXV0b0hlaWdodDogdHJ1ZVxyXG4gIH07XHJcblxyXG4gIGNvbHVtbkRlZnM6IENvbERlZltdID0gW1xyXG4gICAgeyBoZWFkZXJOYW1lOiAnQnVzaW5lc3NEYXRlJywgZmllbGQ6ICdidXNpbmVzc0RhdGUnLCB0b29sdGlwRmllbGQ6ICdidXNpbmVzc0RhdGUnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUeG5EYXRlJlRpbWUnLCBmaWVsZDogJ3RyYW5zYWN0aW9uRGF0ZUFuZFRpbWUnLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbkRhdGVBbmRUaW1lJywgbWluV2lkdGg6IDExMCwgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1RyYW5zYWN0aW9uIE51bWJlcicsIGZpZWxkOiAndHJhbnNhY3Rpb25OdW1iZXInLCB0b29sdGlwRmllbGQ6ICd0cmFuc2FjdGlvbk51bWJlcicgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlbmRDbGllbnQnLCBmaWVsZDogJ3NlbmRDbGllbnQnLCB0b29sdGlwRmllbGQ6ICdzZW5kQ2xpZW50JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnUHJpbmNpcGxlIFNlbmRDbGllbnQgKElmIEFwcGxpY2FibGUpJywgZmllbGQ6ICdwcmluY2lwbGVTZW5kQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncHJpbmNpcGxlU2VuZENsaWVudCcsIHdpZHRoOiA5MCwgbWluV2lkdGg6IDgwLCBtYXhXaWR0aDogMTEwIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdSZWNlaXZlQ2xpZW50JywgZmllbGQ6ICdyZWNlaXZlQ2xpZW50JywgdG9vbHRpcEZpZWxkOiAncmVjZWl2ZUNsaWVudCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1ByaW5jaXBsZSBSZWNlaXZlQ2xpZW50IChJZiBBcHBsaWNhYmxlKScsIGZpZWxkOiAncHJpbmNpcGxlUmVjZWl2ZUNsaWVudCcsIHRvb2x0aXBGaWVsZDogJ3ByaW5jaXBsZVJlY2VpdmVDbGllbnQnLCB3aWR0aDogMTAwLCBtaW5XaWR0aDogOTAsIG1heFdpZHRoOiAxMjAgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1JlY2VpdmVDY3knLCBmaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScsIHRvb2x0aXBGaWVsZDogJ3JlY2VpdmVDdXJyZW5jeScgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ0Ftb3VudFBhaWQnLCBmaWVsZDogJ2Ftb3VudFBhaWQnLCB0b29sdGlwRmllbGQ6ICdhbW91bnRQYWlkJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2VuZENjeScsIGZpZWxkOiAnc2VuZEN1cnJlbmN5JywgdG9vbHRpcEZpZWxkOiAnc2VuZEN1cnJlbmN5JywgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NlcnZpY2VGZWUnLCBmaWVsZDogJ3NlcnZpY2VGZWUnLCB0b29sdGlwRmllbGQ6ICdzZXJ2aWNlRmVlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnVGF4JywgZmllbGQ6ICd0YXgnLCB0b29sdGlwRmllbGQ6ICd0YXgnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdQcmluY2lwbGVTZW5kIEFtb3VudCcsIGZpZWxkOiAncHJpbmNpcGxlU2VuZEFtb3VudCcsIHRvb2x0aXBGaWVsZDogJ3ByaW5jaXBsZVNlbmRBbW91bnQnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdUcmFuc2FjdGlvbiBTdGF0dXMnLCBmaWVsZDogJ3RyYW5zYWN0aW9uU3RhdHVzJywgdG9vbHRpcEZpZWxkOiAndHJhbnNhY3Rpb25TdGF0dXMnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZXR0bGVtZW50Q2N5JywgZmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCB0b29sdGlwRmllbGQ6ICdzZXR0bGVtZW50Q3VycmVuY3knLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdDbGllbnRTZXR0bCAoaW4gU0NjeSknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblNDY3knLCB0b29sdGlwRmllbGQ6ICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5JywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnQ2xpZW50U2V0dGwgKGluIFVTRCknLCBmaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIHRvb2x0aXBGaWVsZDogJ2NsaWVudFNldHRsZW1lbnRJblVTRCcsIGNlbGxDbGFzczogJ2FnLXJpZ2h0LWFsaWduZWQtY2VsbCcgfSxcclxuICAgIHsgaGVhZGVyTmFtZTogJ1NoYXJlVHlwZScsIGZpZWxkOiAnc2hhcmVUeXBlJywgdG9vbHRpcEZpZWxkOiAnc2hhcmVUeXBlJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVWYWx1ZScsIGZpZWxkOiAnc2hhcmVWYWx1ZScsIHRvb2x0aXBGaWVsZDogJ3NoYXJlVmFsdWUnLCBjZWxsQ2xhc3M6ICdhZy1yaWdodC1hbGlnbmVkLWNlbGwnIH0sXHJcbiAgICB7IGhlYWRlck5hbWU6ICdTZW5kL1JlY2VpdmUgRmVlQ2N5JywgZmllbGQ6ICdzZW5kUmVjZWl2ZUZlZUNjeScsIHRvb2x0aXBGaWVsZDogJ3NlbmRSZWNlaXZlRmVlQ2N5JyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2hhcmVBbXQgKGluIFVTRCknLCBmaWVsZDogJ3NoYXJlQW1vdW50SW5VU0QnLCB0b29sdGlwRmllbGQ6ICdzaGFyZUFtb3VudEluVVNEJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gICAgeyBoZWFkZXJOYW1lOiAnU2V0dGxlbWVudCBSYXRlJywgZmllbGQ6ICdzZXR0bGVtZW50UmF0ZScsIHRvb2x0aXBGaWVsZDogJ3NldHRsZW1lbnRSYXRlJywgY2VsbENsYXNzOiAnYWctcmlnaHQtYWxpZ25lZC1jZWxsJyB9LFxyXG4gIF07XHJcblxyXG5cclxuICBncmlkQXBpczogR3JpZEFwaVtdID0gW107XHJcbiAgZ3JpZENvbHVtbkFwaXM6IENvbHVtbkFwaVtdID0gW107XHJcblxyXG4gIHBhZ2luYXRpb25BcnJheTogYW55W107XHJcbiAgZXpyZW1pdFVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvcmlnaW5hbEdyb3VwRW50cmllczogQWNjb3VudGluZ1JlcG9ydEJyYW5jaEdyb3VwW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvcnRTZXJ2aWNlOiBSZXBvcnRTZXJ2aWNlLCBwcml2YXRlIGV4cG9ydFNlcnZpY2U6IEV4cG9ydFNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGV6cmVtaXR1c2VybmFtZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2V6cmVtaXR1c2VybmFtZScpO1xyXG4gICAgaWYgKGV6cmVtaXR1c2VybmFtZSkge1xyXG4gICAgICB0aGlzLmV6cmVtaXRVc2VyID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRBY2NvdW50aW5nUmVwb3J0KHJlcXVlc3Q/OiBBY2NvdW50aW5nUmVwb3J0UmVxdWVzdCkge1xyXG4gICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkxvYWRpbmc7XHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuYnJhbmNoTmFtZUFuZENvZGUgPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN1Ykdyb3VwQ29sdW1uID0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3QgZmluYWxSZXEgPSByZXF1ZXN0O1xyXG5cclxuICAgIHRoaXMucmVwb3J0U2VydmljZS5nZXRBY2NvdW50aW5nUmVwb3J0KGZpbmFsUmVxKS5zdWJzY3JpYmUoZGF0YSA9PiB7XHJcbiAgICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsID0gZGF0YTtcclxuICAgICAgdGhpcy5sb2FkaW5nU3RhdGUgPSBDb21wb25lbnRMb2FkaW5nU3RhdGVzLkNvbXBsZXRlO1xyXG4gICAgICB0aGlzLm5vRGF0YUZvdW5kID0gT2JqZWN0LmtleXModGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzKS5sZW5ndGggPT0gMCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgY29uc3QgYnJhbmNoQ291bnQgPSB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMubGVuZ3RoO1xyXG4gICAgICB0aGlzLnBhZ2luYXRpb25BcnJheSA9IG5ldyBBcnJheShicmFuY2hDb3VudCAqIDIpLmZpbGwoMTUpO1xyXG5cclxuICAgICAgdGhpcy5yZXBvcnRVc2VyID0gdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwucmVwb3J0VXNlcjtcclxuICAgICAgdGhpcy5yZXBvcnRUaW1lID0gZm9ybWF0RGF0ZShuZXcgRGF0ZSgpLCAnZGQvTU0veXl5eSBoaDptbSBhJywgJ2VuLVVTJyk7XHJcbiAgICAgIHRoaXMucmVwb3J0UGVyaW9kID0gYCR7Zm9ybWF0RGF0ZShmaW5hbFJlcS5zdGFydERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9IC0gJHtmb3JtYXREYXRlKGZpbmFsUmVxLmVuZERhdGUsICdkZC9NTS95eXl5JywgJ2VuLVVTJyl9YDtcclxuXHJcbiAgICAgIHRoaXMubGVmdERhdGEgPSB7XHJcbiAgICAgICAgJ1JlcG9ydCBVc2VyICc6IGAke3RoaXMucmVwb3J0VXNlcn1gLFxyXG4gICAgICAgICdSZXBvcnQgVGltZSc6IGAke3RoaXMucmVwb3J0VGltZX1gLFxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnJpZ2h0RGF0YSA9IHtcclxuICAgICAgICAnUmVwb3J0IFBlcmlvZCc6IGAke3RoaXMucmVwb3J0UGVyaW9kfWAsXHJcbiAgICAgICAgJ0NvbXBhbnknOiBcIlhwcmVzcyBNb25leVwiXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERlZXAgY29weSB0byBwcmVzZXJ2ZSBvcmlnaW5hbCBkYXRhIGZvciBzZWFyY2hcclxuICAgICAgdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllcyA9IHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5tYXAoZ3JvdXAgPT4gKHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBzZW5kVHJhbnNhY3Rpb25zOiB7XHJcbiAgICAgICAgICAuLi5ncm91cC5zZW5kVHJhbnNhY3Rpb25zLFxyXG4gICAgICAgICAgZW50cmllczogWy4uLmdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllc11cclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlY2VpdmVUcmFuc2FjdGlvbnM6IHtcclxuICAgICAgICAgIC4uLmdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnMsXHJcbiAgICAgICAgICBlbnRyaWVzOiBbLi4uZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXVxyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG5cclxuXHJcbiAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgaGFuZGxlRXhwb3J0KG9wdGlvbjogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uID0gb3B0aW9uO1xyXG4gICAgc3dpdGNoICh0aGlzLnNlbGVjdGVkRXhwb3J0T3B0aW9uKSB7XHJcbiAgICAgIGNhc2UgJ2V4Y2VsJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvRXhjZWwoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncGRmJzpcclxuICAgICAgICB0aGlzLmV4cG9ydFRvUGRmKCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2Nzdic6XHJcbiAgICAgICAgdGhpcy5leHBvcnRUb0NzdigpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGFsZXJ0KCdQbGVhc2Ugc2VsZWN0IGFuIGV4cG9ydCBmb3JtYXQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaCh0ZXh0OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG5vcm1hbGl6ZSA9IChzdHI6IGFueSk6IHN0cmluZyA9PlxyXG4gICAgICBzdHI/LnRvU3RyaW5nKClcclxuICAgICAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIC5yZXBsYWNlKC8sL2csICcnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cXHMrL2csICcgJylcclxuICAgICAgICAucmVwbGFjZSgvW1xcdTIwMEItXFx1MjAwRFxcdUZFRkZdL2csICcnKVxyXG4gICAgICAgIC50cmltKCk7XHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gdGV4dDtcclxuICAgIGNvbnN0IHNlYXJjaCA9IG5vcm1hbGl6ZSh0ZXh0KTtcclxuXHJcbiAgICBpZiAoIXRoaXMub3JpZ2luYWxHcm91cEVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgIC8vIEJ1aWxkIGZpbHRlcmVkIGJyYW5jaCBncm91cHNcclxuICAgIGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gdGhpcy5vcmlnaW5hbEdyb3VwRW50cmllcy5tYXAoZ3JvdXAgPT4ge1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFNlbmRFbnRyaWVzID0gZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzIHx8IFtdO1xyXG4gICAgICBjb25zdCBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzID0gZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzIHx8IFtdO1xyXG5cclxuICAgICAgY29uc3QgZmlsdGVyZWRTZW5kID0gc2VhcmNoXHJcbiAgICAgICAgPyBvcmlnaW5hbFNlbmRFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIDogWy4uLm9yaWdpbmFsU2VuZEVudHJpZXNdO1xyXG5cclxuICAgICAgY29uc3QgZmlsdGVyZWRSZWNlaXZlID0gc2VhcmNoXHJcbiAgICAgICAgPyBvcmlnaW5hbFJlY2VpdmVFbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxyXG4gICAgICAgICAgT2JqZWN0LnZhbHVlcyhlbnRyeSkuc29tZSh2YWx1ZSA9PiBub3JtYWxpemUodmFsdWUpLmluY2x1ZGVzKHNlYXJjaCkpXHJcbiAgICAgICAgKVxyXG4gICAgICAgIDogWy4uLm9yaWdpbmFsUmVjZWl2ZUVudHJpZXNdO1xyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICAuLi5ncm91cCxcclxuICAgICAgICBzZW5kVHJhbnNhY3Rpb25zOiB7IC4uLmdyb3VwLnNlbmRUcmFuc2FjdGlvbnMsIGVudHJpZXM6IGZpbHRlcmVkU2VuZCB9LFxyXG4gICAgICAgIHJlY2VpdmVUcmFuc2FjdGlvbnM6IHsgLi4uZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucywgZW50cmllczogZmlsdGVyZWRSZWNlaXZlIH1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIPCflLkgS2VlcCBvbmx5IGJyYW5jaGVzIHRoYXQgaGF2ZSBhbnkgbWF0Y2hpbmcgZW50cmllc1xyXG4gICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzID1cclxuICAgICAgZmlsdGVyZWRHcm91cHMuZmlsdGVyKGcgPT5cclxuICAgICAgICBnLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGggPiAwIHx8IGcucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aCA+IDBcclxuICAgICAgKTtcclxuXHJcbiAgICAvLyBSZXNldCBncmlkcyBmb3IgdmlzaWJsZSBicmFuY2hlc1xyXG4gICAgdGhpcy5hY2NvdW50aW5nUmVwb3J0TW9kZWwuYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzLmZvckVhY2goKGdyb3VwLCBpbmRleCkgPT4ge1xyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucy5lbnRyaWVzLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXNdLmZvckVhY2goKGVudHJpZXMsIGlkeCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGdyaWRBcGkgPSB0aGlzLmdyaWRBcGlzW2luZGV4ICogMiArIGlkeF07XHJcbiAgICAgICAgaWYgKGdyaWRBcGkpIHtcclxuICAgICAgICAgIGdyaWRBcGkuc2V0Um93RGF0YShlbnRyaWVzKTtcclxuICAgICAgICAgIGlmIChncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKSBncmlkQXBpLnBhZ2luYXRpb25Hb1RvRmlyc3RQYWdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIG9uR3JpZFJlYWR5KHBhcmFtczogR3JpZFJlYWR5RXZlbnQsIGlkOiBudW1iZXIpIHtcclxuICAgIHRoaXMuZ3JpZEFwaXNbaWRdID0gcGFyYW1zLmFwaTtcclxuICAgIHRoaXMuZ3JpZENvbHVtbkFwaXNbaWRdID0gcGFyYW1zLmNvbHVtbkFwaTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYXV0b1NpemVBbGxDb2x1bW5zKGlkKSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICBvbkdyaWRTaXplQ2hhbmdlZChwYXJhbXM6IGFueSwgaWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5hdXRvU2l6ZUFsbENvbHVtbnMoaWQpO1xyXG4gIH1cclxuXHJcblxyXG4gIGF1dG9TaXplQWxsQ29sdW1ucyhpZDogbnVtYmVyLCBza2lwSGVhZGVyOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIGNvbnN0IGNvbHVtbkFwaSA9IHRoaXMuZ3JpZENvbHVtbkFwaXNbaWRdO1xyXG4gICAgaWYgKCFjb2x1bW5BcGkpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBhbGxDb2x1bW5JZHM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb2x1bW5BcGkuZ2V0Q29sdW1ucygpLmZvckVhY2goKGNvbHVtbjogYW55KSA9PiB7XHJcbiAgICAgIGFsbENvbHVtbklkcy5wdXNoKGNvbHVtbi5nZXRJZCgpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbHVtbkFwaS5hdXRvU2l6ZUNvbHVtbnMoYWxsQ29sdW1uSWRzLCBza2lwSGVhZGVyKTtcclxuICB9XHJcblxyXG5cclxuICBmb3JtYXROdW1iZXIocGFyYW1zOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKHBhcmFtcy52YWx1ZSA9PSBudWxsKSByZXR1cm4gJyc7XHJcblxyXG4gICAgY29uc3QgZmllbGQgPSBwYXJhbXMuY29sRGVmLmZpZWxkO1xyXG5cclxuICAgIGlmIChmaWVsZCA9PT0gJ3NldHRsZW1lbnRSYXRlJykge1xyXG4gICAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCg4KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gTnVtYmVyKHBhcmFtcy52YWx1ZSkudG9GaXhlZCgzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXhwb3J0VG9QZGYoKSB7XHJcbiAgICBpZiAoIXRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcz8ubGVuZ3RoKSByZXR1cm47XHJcbiAgICBjb25zdCB0aXRsZSA9ICdBY2NvdW50aW5nIFJlcG9ydCc7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9ICdBY2NvdW50aW5nLVJlcG9ydC5wZGYnO1xyXG5cclxuICAgIGNvbnN0IG1ldGFkYXRhOiBbc3RyaW5nLCBzdHJpbmddW10gPSBbXHJcbiAgICAgIFsnUmVwb3J0IFVzZXI6JywgdGhpcy5yZXBvcnRVc2VyXSxcclxuICAgICAgWydSZXBvcnQgVGltZTonLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2Q6JywgdGhpcy5yZXBvcnRQZXJpb2RdLFxyXG4gICAgXTtcclxuXHJcbiAgICBjb25zdCBkb2MgPSBuZXcganNQREYoeyBvcmllbnRhdGlvbjogJ2xhbmRzY2FwZScsIHVuaXQ6ICdtbScsIGZvcm1hdDogWzcwMCwgMjEwXSB9KTtcclxuXHJcbiAgICBjb25zdCBsb2dvV2lkdGggPSAzOC40LCBsb2dvSGVpZ2h0ID0gMTcuNSwgbG9nb1ggPSAxNSwgbG9nb1kgPSA4O1xyXG4gICAgY29uc3QgcGFnZVdpZHRoID0gZG9jLmludGVybmFsLnBhZ2VTaXplLndpZHRoO1xyXG4gICAgY29uc3QgdGl0bGVZID0gMTg7XHJcblxyXG4gICAgLy8gTG9nb1xyXG4gICAgaWYgKHRoaXMuZXhwb3J0U2VydmljZVsnbG9nb0Jhc2U2NCddKSB7XHJcbiAgICAgIGRvYy5hZGRJbWFnZSh0aGlzLmV4cG9ydFNlcnZpY2VbJ2xvZ29CYXNlNjQnXSwgJ1BORycsIGxvZ29YLCBsb2dvWSwgbG9nb1dpZHRoLCBsb2dvSGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgZG9jLnNldEZvbnRTaXplKDE1KTtcclxuICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG4gICAgZG9jLnRleHQodGl0bGUsIHBhZ2VXaWR0aCAvIDIsIHRpdGxlWSwgeyBhbGlnbjogJ2NlbnRlcicgfSk7XHJcblxyXG4gICAgbGV0IGN1cnJlbnRZID0gdGl0bGVZICsgMTQ7XHJcblxyXG4gICAgLy8gTWV0YWRhdGFcclxuICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICBtZXRhZGF0YS5mb3JFYWNoKChbbGFiZWwsIHZhbHVlXSwgaSkgPT4ge1xyXG4gICAgICBjb25zdCB5ID0gY3VycmVudFkgKyBpICogNztcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgIGRvYy50ZXh0KGxhYmVsLCAxNSwgeSk7XHJcbiAgICAgIGNvbnN0IGxhYmVsV2lkdGggPSBkb2MuZ2V0VGV4dFdpZHRoKGxhYmVsICsgJyAnKTtcclxuICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdub3JtYWwnKTtcclxuICAgICAgZG9jLnRleHQodmFsdWUgPz8gJycsIDE1ICsgbGFiZWxXaWR0aCwgeSk7XHJcbiAgICB9KTtcclxuICAgIGN1cnJlbnRZICs9IG1ldGFkYXRhLmxlbmd0aCAqIDcgKyA1O1xyXG5cclxuICAgIC8vIEJyYW5jaGVzXHJcbiAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgIGRvYy5zZXRGb250U2l6ZSgxMCk7XHJcbiAgICAgIGRvYy5zZXRGb250KCdoZWx2ZXRpY2EnLCAnYm9sZCcpO1xyXG5cclxuICAgICAgY29uc3QgYnJhbmNoVGV4dCA9IGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gO1xyXG4gICAgICBkb2MudGV4dChicmFuY2hUZXh0LCAxNSwgY3VycmVudFkpO1xyXG4gICAgICBjdXJyZW50WSArPSA3O1xyXG5cclxuICAgICAgLy8gTG9vcCBzdWJncm91cHMgKFNlbmQgKyBSZWNlaXZlKVxyXG4gICAgICBbZ3JvdXAuc2VuZFRyYW5zYWN0aW9ucywgZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9uc10uZm9yRWFjaChzdWJHcm91cCA9PiB7XHJcbiAgICAgICAgaWYgKCFzdWJHcm91cC5lbnRyaWVzPy5sZW5ndGgpIHJldHVybjtcclxuXHJcbiAgICAgICAgZG9jLnNldEZvbnQoJ2hlbHZldGljYScsICdib2xkJyk7XHJcbiAgICAgICAgZG9jLnRleHQoYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCwgMTUsIGN1cnJlbnRZKTtcclxuICAgICAgICBjdXJyZW50WSArPSA1O1xyXG5cclxuICAgICAgICBjb25zdCB7IGhlYWRlcnMsIHJvd3MgfSA9IHRoaXMucHJlcGFyZUFjY291bnRpbmdUYWJsZShzdWJHcm91cC5lbnRyaWVzKTtcclxuXHJcbiAgICAgICAgKGRvYyBhcyBhbnkpLmF1dG9UYWJsZSh7XHJcbiAgICAgICAgICBoZWFkOiBbaGVhZGVyc10sXHJcbiAgICAgICAgICBib2R5OiByb3dzLFxyXG4gICAgICAgICAgc3RhcnRZOiBjdXJyZW50WSxcclxuICAgICAgICAgIHRoZW1lOiAnZ3JpZCcsXHJcbiAgICAgICAgICBoZWFkU3R5bGVzOiB7XHJcbiAgICAgICAgICAgIGZpbGxDb2xvcjogWzIyMCwgMjIwLCAyMjBdLCB0ZXh0Q29sb3I6IDAsXHJcbiAgICAgICAgICAgIGZvbnRTdHlsZTogJ2JvbGQnLCBmb250U2l6ZTogOSwgaGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBib2R5U3R5bGVzOiB7IGZvbnRTaXplOiA4LCBmaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1XSwgdGV4dENvbG9yOiBbMCwgMCwgMF0gfSxcclxuICAgICAgICAgIHN0eWxlczogeyBjZWxsUGFkZGluZzogMiwgb3ZlcmZsb3c6ICdsaW5lYnJlYWsnLCBtaW5DZWxsSGVpZ2h0OiA2IH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGN1cnJlbnRZID0gKGRvYyBhcyBhbnkpLmxhc3RBdXRvVGFibGUuZmluYWxZICsgMTA7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcGFnZUNvdW50ID0gKGRvYyBhcyBhbnkpLmludGVybmFsLmdldE51bWJlck9mUGFnZXMoKTtcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IHBhZ2VDb3VudDsgaSsrKSB7XHJcbiAgICAgIGRvYy5zZXRGb250KFwiaGVsdmV0aWNhXCIsIFwiYm9sZFwiKTtcclxuICAgICAgZG9jLnNldFBhZ2UoaSk7XHJcbiAgICAgIGRvYy5zZXRGb250U2l6ZSg5KTtcclxuICAgICAgZG9jLnNldFRleHRDb2xvcigxMDApO1xyXG5cclxuICAgICAgY29uc3QgZm9vdGVyWSA9IGRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5oZWlnaHQgLSA2O1xyXG5cclxuICAgICAgZG9jLnRleHQoXHJcbiAgICAgICAgYFBhZ2UgJHtpfSBvZiAke3BhZ2VDb3VudH1gLFxyXG4gICAgICAgIHBhZ2VXaWR0aCAtIDE1LFxyXG4gICAgICAgIGZvb3RlclksXHJcbiAgICAgICAgeyBhbGlnbjogJ3JpZ2h0JyB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgZG9jLnNhdmUoZmlsZU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHBvcnRUb0V4Y2VsKCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGl0bGUgPSAnQWNjb3VudGluZyBSZXBvcnQnO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQueGxzeCc7XHJcblxyXG4gICAgY29uc3Qgd29ya2Jvb2sgPSBuZXcgRXhjZWxKUy5Xb3JrYm9vaygpO1xyXG4gICAgY29uc3Qgd29ya3NoZWV0ID0gd29ya2Jvb2suYWRkV29ya3NoZWV0KCdBY2NvdW50aW5nIFJlcG9ydCcpO1xyXG4gICAgbGV0IGN1cnJlbnRSb3cgPSAxO1xyXG5cclxuICAgIC8vIExvZ29cclxuICAgIGlmICh0aGlzLmV4cG9ydFNlcnZpY2UubG9nb0Jhc2U2NCkge1xyXG4gICAgICBjb25zdCBiYXNlNjREYXRhID0gdGhpcy5leHBvcnRTZXJ2aWNlLmxvZ29CYXNlNjQucmVwbGFjZSgvXmRhdGE6aW1hZ2VcXC9cXHcrO2Jhc2U2NCwvLCAnJyk7XHJcbiAgICAgIGNvbnN0IGltYWdlSWQgPSB3b3JrYm9vay5hZGRJbWFnZSh7XHJcbiAgICAgICAgYmFzZTY0OiBiYXNlNjREYXRhLFxyXG4gICAgICAgIGV4dGVuc2lvbjogJ3BuZycsXHJcbiAgICAgIH0pO1xyXG4gICAgICB3b3Jrc2hlZXQuYWRkSW1hZ2UoaW1hZ2VJZCwgeyB0bDogeyBjb2w6IDAsIHJvdzogMCB9LCBleHQ6IHsgd2lkdGg6IDE0NSwgaGVpZ2h0OiA2NiB9LCBlZGl0QXM6ICdvbmVDZWxsJyB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaXRsZVxyXG4gICAgY29uc3QgdGl0bGVSb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3cpO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS52YWx1ZSA9IHRpdGxlO1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5mb250ID0geyBib2xkOiB0cnVlLCBzaXplOiAxNiB9O1xyXG4gICAgdGl0bGVSb3cuZ2V0Q2VsbCg2KS5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2xlZnQnIH07XHJcbiAgICB3b3Jrc2hlZXQubWVyZ2VDZWxscyhgRiR7Y3VycmVudFJvd306SiR7Y3VycmVudFJvd31gKTtcclxuICAgIGN1cnJlbnRSb3cgKz0gMztcclxuXHJcbiAgICAvLyBNZXRhZGF0YVxyXG4gICAgY29uc3QgbWV0YWRhdGE6IFtzdHJpbmcsIHN0cmluZ11bXSA9IFtcclxuICAgICAgWydSZXBvcnQgVXNlcicsIHRoaXMucmVwb3J0VXNlcl0sXHJcbiAgICAgIFsnUmVwb3J0IFRpbWUnLCB0aGlzLnJlcG9ydFRpbWVdLFxyXG4gICAgICBbJ1JlcG9ydCBQZXJpb2QnLCB0aGlzLnJlcG9ydFBlcmlvZF0sXHJcbiAgICBdO1xyXG4gICAgbWV0YWRhdGEuZm9yRWFjaCgoW2xhYmVsLCB2YWx1ZV0pID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICByb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiBgJHtsYWJlbH06IGAsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IHZhbHVlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG5cclxuICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcblxyXG4gICAgLy8gQnJhbmNoZXNcclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgY29uc3QgYnJhbmNoUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICBicmFuY2hSb3cuZ2V0Q2VsbCgxKS52YWx1ZSA9IHtcclxuICAgICAgICByaWNoVGV4dDogW1xyXG4gICAgICAgICAgeyB0ZXh0OiAnQnJhbmNoIChOYW1lICYgQ29kZSk6ICcsIGZvbnQ6IHsgYm9sZDogdHJ1ZSB9IH0sXHJcbiAgICAgICAgICB7IHRleHQ6IGdyb3VwLmJyYW5jaE5hbWVBbmRDb2RlID8/ICcnLCBmb250OiB7IGJvbGQ6IGZhbHNlIH0gfVxyXG4gICAgICAgIF1cclxuICAgICAgfTtcclxuICAgICAgd29ya3NoZWV0LmFkZFJvdyhbXSk7IGN1cnJlbnRSb3crKztcclxuXHJcbiAgICAgIC8vIExvb3Agc3ViZ3JvdXBzXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCBzdWJHcm91cFJvdyA9IHdvcmtzaGVldC5nZXRSb3coY3VycmVudFJvdysrKTtcclxuICAgICAgICBzdWJHcm91cFJvdy5nZXRDZWxsKDEpLnZhbHVlID0ge1xyXG4gICAgICAgICAgcmljaFRleHQ6IFtcclxuICAgICAgICAgICAgeyB0ZXh0OiAnU3ViIEdyb3VwOiAnLCBmb250OiB7IGJvbGQ6IHRydWUgfSB9LFxyXG4gICAgICAgICAgICB7IHRleHQ6IHN1Ykdyb3VwLnN1Ykdyb3VwTmFtZSA/PyAnJywgZm9udDogeyBib2xkOiBmYWxzZSB9IH1cclxuICAgICAgICAgIF1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB3b3Jrc2hlZXQuYWRkUm93KFtdKTsgY3VycmVudFJvdysrO1xyXG5cclxuICAgICAgICAvLyBIZWFkZXJzXHJcbiAgICAgICAgY29uc3QgeyBoZWFkZXJzLCByb3dzIH0gPSB0aGlzLnByZXBhcmVBY2NvdW50aW5nVGFibGUoc3ViR3JvdXAuZW50cmllcyk7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyUm93ID0gd29ya3NoZWV0LmdldFJvdyhjdXJyZW50Um93KyspO1xyXG4gICAgICAgIGhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBpKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZWxsID0gaGVhZGVyUm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgY2VsbC52YWx1ZSA9IGhlYWRlcjtcclxuICAgICAgICAgIGNlbGwuZm9udCA9IHsgYm9sZDogdHJ1ZSB9O1xyXG4gICAgICAgICAgY2VsbC5maWxsID0geyB0eXBlOiAncGF0dGVybicsIHBhdHRlcm46ICdzb2xpZCcsIGZnQ29sb3I6IHsgYXJnYjogJ0Q5RDlEOScgfSB9O1xyXG4gICAgICAgICAgY2VsbC5hbGlnbm1lbnQgPSB7IHZlcnRpY2FsOiAnbWlkZGxlJywgaG9yaXpvbnRhbDogJ2NlbnRlcicgfTtcclxuICAgICAgICAgIGNlbGwuYm9yZGVyID0geyB0b3A6IHsgc3R5bGU6ICd0aGluJyB9LCBib3R0b206IHsgc3R5bGU6ICd0aGluJyB9LCBsZWZ0OiB7IHN0eWxlOiAndGhpbicgfSwgcmlnaHQ6IHsgc3R5bGU6ICd0aGluJyB9IH07XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIFJvd3NcclxuICAgICAgICByb3dzLmZvckVhY2gociA9PiB7XHJcbiAgICAgICAgICBjb25zdCByb3cgPSB3b3Jrc2hlZXQuZ2V0Um93KGN1cnJlbnRSb3crKyk7XHJcbiAgICAgICAgICByLmZvckVhY2goKHZhbCwgaSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBjZWxsID0gcm93LmdldENlbGwoaSArIDEpO1xyXG4gICAgICAgICAgICBjZWxsLnZhbHVlID0gdmFsO1xyXG4gICAgICAgICAgICBjZWxsLmJvcmRlciA9IHsgdG9wOiB7IHN0eWxlOiAndGhpbicgfSwgYm90dG9tOiB7IHN0eWxlOiAndGhpbicgfSwgbGVmdDogeyBzdHlsZTogJ3RoaW4nIH0sIHJpZ2h0OiB7IHN0eWxlOiAndGhpbicgfSB9O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHdvcmtzaGVldC5hZGRSb3coW10pOyBjdXJyZW50Um93Kys7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQXV0by1hZGp1c3QgY29sdW1uIHdpZHRocyAoaW5jbHVkaW5nIFNyIE5vKVxyXG4gICAgY29uc3QgYWxsSGVhZGVycyA9IFsnU3IgTm8nLCAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGMgPT4gYy5oZWFkZXJOYW1lKV07XHJcbiAgICBhbGxIZWFkZXJzLmZvckVhY2goKGhlYWRlciwgaSkgPT4ge1xyXG4gICAgICBsZXQgbWF4TGVuZ3RoID0gaGVhZGVyLmxlbmd0aDsgLy8gc3RhcnQgd2l0aCBoZWFkZXIgbGVuZ3RoXHJcblxyXG4gICAgICB0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgICAgW2dyb3VwLnNlbmRUcmFuc2FjdGlvbnMsIGdyb3VwLnJlY2VpdmVUcmFuc2FjdGlvbnNdLmZvckVhY2goc3ViR3JvdXAgPT4ge1xyXG4gICAgICAgICAgc3ViR3JvdXAuZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcclxuICAgICAgICAgICAgLy8gU3IgTm8gY29sdW1uIChpID0gMCkgaXMganVzdCBudW1iZXJzXHJcbiAgICAgICAgICAgIGxldCB2YWwgPSBpID09PSAwID8gKHN1Ykdyb3VwLmVudHJpZXMuaW5kZXhPZihlbnRyeSkgKyAxKS50b1N0cmluZygpIDogKGVudHJ5W3RoaXMuY29sdW1uRGVmc1tpIC0gMV0/LmZpZWxkXSA/PyAnJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHZhbC50b1N0cmluZygpLmxlbmd0aDtcclxuICAgICAgICAgICAgaWYgKGxlbiA+IG1heExlbmd0aCkgbWF4TGVuZ3RoID0gbGVuO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgd29ya3NoZWV0LmdldENvbHVtbihpICsgMSkud2lkdGggPSBtYXhMZW5ndGggKyA1OyAvLyBwYWRkaW5nXHJcbiAgICB9KTtcclxuXHJcbiAgICB3b3JrYm9vay54bHN4LndyaXRlQnVmZmVyKCkudGhlbihidWZmZXIgPT4ge1xyXG4gICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgICB0eXBlOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnXHJcbiAgICAgIH0pO1xyXG4gICAgICBGaWxlU2F2ZXIuc2F2ZUFzKGJsb2IsIGZpbGVOYW1lKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZUFjY291bnRpbmdUYWJsZShkYXRhOiBhbnlbXSk6IHsgaGVhZGVyczogc3RyaW5nW10sIHJvd3M6IGFueVtdW10gfSB7XHJcbiAgICBjb25zdCBjdXJyZW5jeUZpZWxkcyA9IFsnYW1vdW50UGFpZCcsICdzZXJ2aWNlRmVlJywgJ3RheCcsICdwcmluY2lwbGVTZW5kQW1vdW50JywgJ2NsaWVudFNldHRsZW1lbnRJblNDY3knXTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBbJ1NyIE5vJywgLi4udGhpcy5jb2x1bW5EZWZzLm1hcChjID0+IGMuaGVhZGVyTmFtZSldO1xyXG5cclxuICAgIGlmICghZGF0YSB8fCBkYXRhLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4geyBoZWFkZXJzLCByb3dzOiBbXSB9OyAvLyByZXR1cm4gaGVhZGVycyBvbmx5LCBlbXB0eSByb3dzXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm93cyA9IGRhdGEubWFwKChyb3csIGkpID0+IHtcclxuICAgICAgcmV0dXJuIFtcclxuICAgICAgICBpICsgMSxcclxuICAgICAgICAuLi50aGlzLmNvbHVtbkRlZnMubWFwKGNvbCA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsID0gcm93W2NvbC5maWVsZF07XHJcbiAgICAgICAgICBpZiAodmFsID09IG51bGwpIHJldHVybiAnJztcclxuICAgICAgICAgIGlmIChjdXJyZW5jeUZpZWxkcy5pbmNsdWRlcyhjb2wuZmllbGQpKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoMyk7XHJcbiAgICAgICAgICBpZiAoY29sLmZpZWxkID09PSAnc2V0dGxlbWVudFJhdGUnKSByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoOCk7XHJcbiAgICAgICAgICByZXR1cm4gdmFsO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIF07XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4geyBoZWFkZXJzLCByb3dzIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4cG9ydFRvQ3N2KCkge1xyXG4gICAgaWYgKCF0aGlzLmFjY291bnRpbmdSZXBvcnRNb2RlbC5hY2NvdW50aW5nUmVwb3J0QnlCcmFuY2hHcm91cHM/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSAnQWNjb3VudGluZy1SZXBvcnQuY3N2JztcclxuICAgIGNvbnN0IHJvd3M6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgcm93cy5wdXNoKCdSZXBvcnQgVGl0bGU6IEFjY291bnRpbmcgUmVwb3J0Jyk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG4gICAgcm93cy5wdXNoKGBSZXBvcnQgVXNlcjogJHt0aGlzLnJlcG9ydFVzZXJ9YCk7XHJcbiAgICByb3dzLnB1c2goYFJlcG9ydCBUaW1lOiAke3RoaXMucmVwb3J0VGltZX1gKTtcclxuICAgIHJvd3MucHVzaChgUmVwb3J0IFBlcmlvZDogJHt0aGlzLnJlcG9ydFBlcmlvZH1gKTtcclxuICAgIHJvd3MucHVzaChgQ29tcGFueTogWHByZXNzIE1vbmV5YCk7XHJcbiAgICByb3dzLnB1c2goJycpO1xyXG5cclxuICAgIHRoaXMuYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgcm93cy5wdXNoKGBCcmFuY2ggKE5hbWUgJiBDb2RlKTogJHtncm91cC5icmFuY2hOYW1lQW5kQ29kZX1gKTtcclxuXHJcbiAgICAgIFtncm91cC5zZW5kVHJhbnNhY3Rpb25zLCBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zXS5mb3JFYWNoKHN1Ykdyb3VwID0+IHtcclxuICAgICAgICBpZiAoIXN1Ykdyb3VwLmVudHJpZXM/Lmxlbmd0aCkgcmV0dXJuO1xyXG5cclxuICAgICAgICByb3dzLnB1c2goYFN1YiBHcm91cDogJHtzdWJHcm91cC5zdWJHcm91cE5hbWV9YCk7XHJcblxyXG4gICAgICAgIC8vICBBZGQgXCJTciBOb1wiIGF0IHRoZSBiZWdpbm5pbmcgb2YgaGVhZGVyc1xyXG4gICAgICAgIHJvd3MucHVzaChbJ1wiU3IgTm9cIicsIC4uLnRoaXMuY29sdW1uRGVmcy5tYXAoY29sID0+IGBcIiR7Y29sLmhlYWRlck5hbWV9XCJgKV0uam9pbignLCcpKTtcclxuXHJcbiAgICAgICAgc3ViR3JvdXAuZW50cmllcy5mb3JFYWNoKChlbnRyeSwgaWR4KSA9PiB7XHJcbiAgICAgICAgICAvLyAgQWRkIHNlcmlhbCBudW1iZXIgYXQgc3RhcnQgb2YgZWFjaCByb3dcclxuICAgICAgICAgIGNvbnN0IHJvdyA9IFtcclxuICAgICAgICAgICAgKGlkeCArIDEpLnRvU3RyaW5nKCksXHJcbiAgICAgICAgICAgIC4uLnRoaXMuY29sdW1uRGVmcy5tYXAoY29sID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWwgPSBlbnRyeVtjb2wuZmllbGRdO1xyXG4gICAgICAgICAgICAgIGlmICh2YWwgPT0gbnVsbCkgcmV0dXJuICcnO1xyXG4gICAgICAgICAgICAgIGlmIChbJ2Ftb3VudFBhaWQnLCAnc2VydmljZUZlZScsICd0YXgnLCAncHJpbmNpcGxlU2VuZEFtb3VudCcsICdjbGllbnRTZXR0bGVtZW50SW5TQ2N5J10uaW5jbHVkZXMoY29sLmZpZWxkKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodmFsKS50b0ZpeGVkKDMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoY29sLmZpZWxkID09PSAnc2V0dGxlbWVudFJhdGUnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdCh2YWwpLnRvRml4ZWQoOCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHJldHVybiBgXCIke3ZhbH1cImA7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICBdLmpvaW4oJywnKTtcclxuICAgICAgICAgIHJvd3MucHVzaChyb3cpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByb3dzLnB1c2goJycpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbcm93cy5qb2luKCdcXG4nKV0sIHsgdHlwZTogJ3RleHQvY3N2O2NoYXJzZXQ9dXRmLTg7JyB9KTtcclxuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICBsaW5rLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xyXG4gICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZU5hbWUpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbiAgZ2V0UmVwb3J0KHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgbW9kYWwgPSBwYXlsb2FkPy5tb2RhbCB8fCBwYXlsb2FkO1xyXG5cclxuICAgIGNvbnN0IHJlcTogQWNjb3VudGluZ1JlcG9ydFJlcXVlc3QgPSB7XHJcbiAgICAgIHN0YXJ0RGF0ZTogbW9kYWwuZnJvbURhdGUsIC8vIHl5eXktTU0tZGQgZnJvbSB0aGUgZmlsdGVyXHJcbiAgICAgIGVuZERhdGU6IG1vZGFsLnRvRGF0ZSxcclxuICAgICAgc2VuZENvdW50cnlDb2RlOiBtb2RhbC5zZW5kQ291bnRyeSA/PyAnQUxMJyxcclxuICAgICAgcmVjdkNvdW50cnlDb2RlOiBtb2RhbC5yZWNlaXZlQ291bnRyeSA/PyAnQUxMJyxcclxuICAgICAgYnVzaW5lc3NQYXJ0bmVyQ29ycmVsYXRpb25JRDogbW9kYWwuY2xpZW50ID8/ICdBTEwnLFxyXG4gICAgICB0cmFuc2FjdGlvblN0YXR1czogbW9kYWwudHJhbnNhY3Rpb25TdGF0dXMuam9pbihcIixcIiksXHJcbiAgICAgIHBheW91dEN1cnJlbmN5OiBtb2RhbC5jdXJyZW5jeSA/PyAnQUxMJyxcclxuICAgICAgdHJhbnNhY3Rpb25UeXBlOiBtb2RhbC5wcm9kdWN0ID8/ICdBTEwnLFxyXG4gICAgICBicmFuY2hDb2RlOiBtb2RhbC5icmFuY2ggPz8gJ0FMTCcsXHJcbiAgICAgIGNvbXBhbnlDb2RlOiAnQUxMJyAvLyBvciAnQkgnIGlmIHlvdXIgQVBJIHJlcXVpcmVzIGl0IHNwZWNpZmljYWxseVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmdldEFjY291bnRpbmdSZXBvcnQocmVxKTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxsaWItc2VhcmNoLWZpbHRlciBbUmVwb3J0TmFtZV09XCJSZXBvcnROYW1lXCIgKHNlYXJjaENsaWNrZWQpPVwiZ2V0UmVwb3J0KCRldmVudClcIj48L2xpYi1zZWFyY2gtZmlsdGVyPlxyXG5cclxuPGFwcC1sb2FkZXIgY2xhc3M9XCJcIiAqbmdJZj1cImxvYWRpbmdTdGF0ZSA9PSBDb21wb25lbnRMb2FkaW5nU3RhdGUuTG9hZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuXHJcbjxkaXYgKm5nSWY9XCJhY2NvdW50aW5nUmVwb3J0TW9kZWwhPXVuZGVmaW5lZCAmJiBsb2FkaW5nU3RhdGUgPT0gQ29tcG9uZW50TG9hZGluZ1N0YXRlLkNvbXBsZXRlICYmICFub0RhdGFGb3VuZCBcIlxyXG4gIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMzBweDtcIj5cclxuXHJcbiAgPGxpYi1tZXRhZGF0YSBbcmVwb3J0TmFtZV09XCJSZXBvcnROYW1lXCIgW3Nob3dtZXRhRGF0YU9uZV09XCJ0cnVlXCIgW3Nob3dtZXRhRGF0YVR3b109XCJ0cnVlXCIgW21ldGFEYXRhT25lXT1cImxlZnREYXRhXCJcclxuICAgIFttZXRhRGF0YVR3b109XCJyaWdodERhdGFcIiAoZXhwb3J0RXZlbnQpPVwiaGFuZGxlRXhwb3J0KCRldmVudClcIiAoc2VhcmNoRXZlbnQpPVwib25TZWFyY2goJGV2ZW50KVwiPjwvbGliLW1ldGFkYXRhPlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwiYWNjb3VudGluZ1JlcG9ydE1vZGVsLmFjY291bnRpbmdSZXBvcnRCeUJyYW5jaEdyb3Vwcz8ubGVuZ3RoXCI+XHJcbiAgICA8bmdiLWFjY29yZGlvbiAjYWNjPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cImZhbHNlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGFjY291bnRpbmdSZXBvcnRNb2RlbD8uYWNjb3VudGluZ1JlcG9ydEJ5QnJhbmNoR3JvdXBzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPG5nYi1wYW5lbCBbaWRdPVwiJ3BhbmVsLScgKyBpXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFuZWxUaXRsZT5cclxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicGFuZWwtY2xzXCI+XHJcbiAgICAgICAgICAgICAge3sgZ3JvdXAuYnJhbmNoTmFtZUFuZENvZGUgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhbmVsQ29udGVudD5cclxuICAgICAgICAgICAgPCEtLSBTZW5kIFRyYW5zYWN0aW9ucyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJzdWJncm91cGNvbHVtblwiPnt7IGdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuc3ViR3JvdXBOYW1lIH19PC9oNj5cclxuICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgICAgPGxpYi1wYWdlLXNpemUtc2VsZWN0b3IgW3RvdGFsRW50cmllc109XCJncm91cC5zZW5kVHJhbnNhY3Rpb25zLmVudHJpZXMubGVuZ3RoXCIgW2RlZmF1bHRTaXplXT1cIicxNSdcIlxyXG4gICAgICAgICAgICAgICAgICBbZ3JpZEFwaV09XCJncmlkQXBpc1tpICogMl1cIj5cclxuICAgICAgICAgICAgICAgIDwvbGliLXBhZ2Utc2l6ZS1zZWxlY3Rvcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8YWctZ3JpZC1hbmd1bGFyIGNsYXNzPVwiYWctdGhlbWUtYWxwaW5lIHRyYW5zYWN0aW9uLWdyaWQgZ3JpZC1zaXplXCIgc3R5bGU9XCJ3aWR0aDogMTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW2RlZmF1bHRDb2xEZWZdPVwiZGVmYXVsdENvbERlZlwiIFtyb3dEYXRhXT1cImdyb3VwLnNlbmRUcmFuc2FjdGlvbnMuZW50cmllc1wiXHJcbiAgICAgICAgICAgICAgICAgIFtyb3dIZWlnaHRdPVwiMjBcIiBbaGVhZGVySGVpZ2h0XT1cIjI0XCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvbkFycmF5W2ldXCJcclxuICAgICAgICAgICAgICAgICAgKGdyaWRSZWFkeSk9XCJvbkdyaWRSZWFkeSgkZXZlbnQsIGkgKiAyKVwiIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50LCBpICogMilcIj5cclxuICAgICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUmVjZWl2ZSBUcmFuc2FjdGlvbnMgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLmVudHJpZXMubGVuZ3RoXCIgY2xhc3M9XCJtdC0zXCI+XHJcbiAgICAgICAgICAgICAgPGg2IGNsYXNzPVwic3ViZ3JvdXBjb2x1bW5cIj57eyBncm91cC5yZWNlaXZlVHJhbnNhY3Rpb25zLnN1Ykdyb3VwTmFtZSB9fTwvaDY+XHJcbiAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICAgICAgICAgIDxsaWItcGFnZS1zaXplLXNlbGVjdG9yIFt0b3RhbEVudHJpZXNdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzLmxlbmd0aFwiIFtkZWZhdWx0U2l6ZV09XCInMTUnXCJcclxuICAgICAgICAgICAgICAgICAgW2dyaWRBcGldPVwiZ3JpZEFwaXNbaSAqIDIgKyAxXVwiPlxyXG4gICAgICAgICAgICAgICAgPC9saWItcGFnZS1zaXplLXNlbGVjdG9yPlxyXG5cclxuICAgICAgICAgICAgICAgIDxhZy1ncmlkLWFuZ3VsYXIgY2xhc3M9XCJhZy10aGVtZS1hbHBpbmUgdHJhbnNhY3Rpb24tZ3JpZCBncmlkLXNpemVcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgIFtjb2x1bW5EZWZzXT1cImNvbHVtbkRlZnNcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcclxuICAgICAgICAgICAgICAgICAgW3Jvd0RhdGFdPVwiZ3JvdXAucmVjZWl2ZVRyYW5zYWN0aW9ucy5lbnRyaWVzXCIgW3Jvd0hlaWdodF09XCIyMFwiIFtoZWFkZXJIZWlnaHRdPVwiMjRcIiBbcGFnaW5hdGlvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgW3BhZ2luYXRpb25QYWdlU2l6ZV09XCJwYWdpbmF0aW9uQXJyYXlbaV1cIiAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudCwgaSAqIDIgKyAxKVwiXHJcbiAgICAgICAgICAgICAgICAgIChncmlkU2l6ZUNoYW5nZWQpPVwib25HcmlkU2l6ZUNoYW5nZWQoJGV2ZW50LCBpICogMilcIj5cclxuICAgICAgICAgICAgICAgIDwvYWctZ3JpZC1hbmd1bGFyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZ2ItcGFuZWw+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZ2ItYWNjb3JkaW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtdC0zXCIgKm5nSWY9XCJub0RhdGFGb3VuZCAmJiBsb2FkaW5nU3RhdGUhPUNvbXBvbmVudExvYWRpbmdTdGF0ZS5Mb2FkaW5nXCI+XHJcbiAgTm8gRGF0YSBmb3VuZCBtYXRjaGluZyB5b3VyIHNlYXJjaCBjcml0ZXJpYS5cclxuPC9kaXY+Il19
|