UNPKG

angular-slickgrid

Version:

Slickgrid components made available in Angular

263 lines 31.4 kB
import { DelimiterType, EventNamingStyle, FileType, Filters, OperatorType, } from '@slickgrid-universal/common'; /** Global Grid Options Defaults */ export const GlobalGridOptions = { alwaysShowVerticalScroll: true, autoEdit: false, asyncEditorLoading: false, autoFitColumnsOnFirstLoad: true, autoResize: { applyResizeToContainer: true, autoHeight: true, autoHeightRecalcRow: 100, calculateAvailableSizeBy: 'window', bottomPadding: 20, minHeight: 250, minWidth: 300, rightPadding: 0, }, cellHighlightCssClass: 'slick-cell-modified', checkboxSelector: { cssClass: 'slick-cell-checkboxsel', }, columnPicker: { hideForceFitButton: false, hideSyncResizeButton: true, headerColumnValueExtractor: pickerHeaderColumnValueExtractor, }, cellMenu: { autoAdjustDrop: true, autoAlignSide: true, hideCloseButton: true, hideCommandSection: false, hideOptionSection: false, }, contextMenu: { autoAdjustDrop: true, autoAlignSide: true, hideCloseButton: true, hideClearAllGrouping: false, hideCollapseAllGroups: false, hideCommandSection: false, hideCopyCellValueCommand: false, hideExpandAllGroups: false, hideExportCsvCommand: false, hideExportExcelCommand: false, hideExportTextDelimitedCommand: true, hideMenuOnScroll: true, hideOptionSection: false, iconCollapseAllGroupsCommand: 'mdi mdi-arrow-collapse', iconExpandAllGroupsCommand: 'mdi mdi-arrow-expand', iconClearGroupingCommand: 'mdi mdi-close', iconCopyCellValueCommand: 'mdi mdi-content-copy', iconExportCsvCommand: 'mdi mdi-download', iconExportExcelCommand: 'mdi mdi-file-excel-outline', iconExportTextDelimitedCommand: 'mdi mdi-download', showBulletWhenIconMissing: true, subItemChevronClass: 'mdi mdi-chevron-down mdi-rotate-270', }, customFooterOptions: { dateFormat: 'YYYY-MM-DD, hh:mm a', hideRowSelectionCount: false, hideTotalItemCount: false, hideLastUpdateTimestamp: true, footerHeight: 25, leftContainerClass: 'col-xs-12 col-sm-5', rightContainerClass: 'col-xs-6 col-sm-7', metricSeparator: '|', metricTexts: { items: 'items', itemsKey: 'ITEMS', itemsSelected: 'items selected', itemsSelectedKey: 'ITEMS_SELECTED', of: 'of', ofKey: 'OF', }, }, dataView: { // when enabled, this will preserve the row selection even after filtering/sorting/grouping syncGridSelection: { preserveHidden: false, preserveHiddenOnSelectionChange: true, }, syncGridSelectionWithBackendService: false, // but disable it when using backend services }, datasetIdPropertyName: 'id', defaultFilter: Filters.input, defaultBackendServiceFilterTypingDebounce: 500, defaultColumnSortFieldId: 'id', defaultFilterPlaceholder: '🔎︎', defaultFilterRangeOperator: OperatorType.rangeInclusive, editable: false, enableAutoResize: true, enableAutoSizeColumns: true, enableCellNavigation: false, enableColumnPicker: true, enableColumnReorder: true, enableColumnResizeOnDoubleClick: true, enableContextMenu: true, enableExcelExport: false, enableTextExport: false, // CSV/Text with Tab Delimited enableFilterTrimWhiteSpace: false, // do we want to trim white spaces on all Filters? enableGridMenu: true, enableHeaderMenu: true, enableEmptyDataWarningMessage: true, emptyDataWarning: { className: 'slick-empty-data-warning', message: 'No data to display.', messageKey: 'EMPTY_DATA_WARNING_MESSAGE', hideFrozenLeftWarning: false, hideFrozenRightWarning: false, leftViewportMarginLeft: '40%', rightViewportMarginLeft: '40%', frozenLeftViewportMarginLeft: '0px', frozenRightViewportMarginLeft: '40%', }, enableMouseHoverHighlightRow: true, enableSorting: true, enableTextSelectionOnCells: true, eventNamingStyle: EventNamingStyle.camelCase, explicitInitialization: true, excelExportOptions: { addGroupIndentation: true, exportWithFormatter: false, filename: 'export', format: FileType.xlsx, groupingColumnHeaderTitle: 'Group By', groupCollapsedSymbol: '⮞', groupExpandedSymbol: '⮟', groupingAggregatorRowText: '', sanitizeDataExport: false, }, textExportOptions: { delimiter: DelimiterType.comma, exportWithFormatter: false, filename: 'export', format: FileType.csv, groupingColumnHeaderTitle: 'Group By', groupingAggregatorRowText: '', sanitizeDataExport: false, useUtf8WithBom: true, }, filterTypingDebounce: 0, forceFitColumns: false, frozenHeaderWidthCalcDifferential: 0, gridMenu: { dropSide: 'left', commandLabels: { clearAllFiltersCommandKey: 'CLEAR_ALL_FILTERS', clearAllSortingCommandKey: 'CLEAR_ALL_SORTING', clearFrozenColumnsCommandKey: 'CLEAR_PINNING', exportCsvCommandKey: 'EXPORT_TO_CSV', exportExcelCommandKey: 'EXPORT_TO_EXCEL', exportTextDelimitedCommandKey: 'EXPORT_TO_TAB_DELIMITED', refreshDatasetCommandKey: 'REFRESH_DATASET', toggleDarkModeCommandKey: 'TOGGLE_DARK_MODE', toggleFilterCommandKey: 'TOGGLE_FILTER_ROW', togglePreHeaderCommandKey: 'TOGGLE_PRE_HEADER_ROW', }, hideClearAllFiltersCommand: false, hideClearAllSortingCommand: false, hideClearFrozenColumnsCommand: true, // opt-in command hideExportCsvCommand: false, hideExportExcelCommand: false, hideExportTextDelimitedCommand: true, hideForceFitButton: false, hideRefreshDatasetCommand: false, hideSyncResizeButton: true, hideToggleDarkModeCommand: true, hideToggleFilterCommand: false, hideTogglePreHeaderCommand: false, iconCssClass: 'mdi mdi-menu', iconClearAllFiltersCommand: 'mdi mdi-filter-remove-outline', iconClearAllSortingCommand: 'mdi mdi-sort-variant-off', iconClearFrozenColumnsCommand: 'mdi mdi-pin-off-outline', iconExportCsvCommand: 'mdi mdi-download', iconExportExcelCommand: 'mdi mdi-file-excel-outline', iconExportTextDelimitedCommand: 'mdi mdi-download', iconRefreshDatasetCommand: 'mdi mdi-sync', iconToggleDarkModeCommand: 'mdi mdi-brightness-4', iconToggleFilterCommand: 'mdi mdi-flip-vertical', iconTogglePreHeaderCommand: 'mdi mdi-flip-vertical', menuWidth: 16, resizeOnShowHeaderRow: true, subItemChevronClass: 'mdi mdi-chevron-down mdi-rotate-270', headerColumnValueExtractor: pickerHeaderColumnValueExtractor, }, headerMenu: { autoAlign: true, autoAlignOffset: 12, minWidth: 140, iconClearFilterCommand: 'mdi mdi-filter-remove-outline', iconClearSortCommand: 'mdi mdi-sort-variant-off', iconFreezeColumns: 'mdi mdi-pin-outline', iconSortAscCommand: 'mdi mdi-sort-ascending', iconSortDescCommand: 'mdi mdi-sort-descending', iconColumnHideCommand: 'mdi mdi-close', iconColumnResizeByContentCommand: 'mdi mdi-arrow-expand-horizontal', hideColumnResizeByContentCommand: false, hideColumnHideCommand: false, hideClearFilterCommand: false, hideClearSortCommand: false, hideFreezeColumnsCommand: true, // opt-in command hideSortCommands: false, subItemChevronClass: 'mdi mdi-chevron-down mdi-rotate-270', }, headerRowHeight: 35, multiColumnSort: true, numberedMultiColumnSort: true, tristateMultiColumnSort: false, sortColNumberInSeparateSpan: true, suppressActiveCellChangeOnEdit: false, pagination: { pageSizes: [10, 15, 20, 25, 30, 40, 50, 75, 100], pageSize: 25, totalItems: 0, }, // technically speaking the Row Detail requires the process & viewComponent but we'll ignore it just to set certain options rowDetailView: { collapseAllOnSort: true, cssClass: 'detail-view-toggle', panelRows: 1, keyPrefix: '__', useRowClick: false, saveDetailViewOnScroll: false, }, rowHeight: 35, topPanelHeight: 35, preHeaderPanelWidth: '100%', // mostly useful for Draggable Grouping dropzone to take full width translationNamespaceSeparator: ':', resetFilterSearchValueAfterOnBeforeCancellation: true, resizeByContentOnlyOnFirstLoad: true, resizeByContentOptions: { alwaysRecalculateColumnWidth: false, cellCharWidthInPx: 7.8, cellPaddingWidthInPx: 14, defaultRatioForStringType: 0.88, formatterPaddingWidthInPx: 0, maxItemToInspectCellContentWidth: 1000, maxItemToInspectSingleColumnWidthByContent: 5000, widthToRemoveFromExceededWidthReadjustment: 50, }, treeDataOptions: { exportIndentMarginLeft: 5, exportIndentationLeadingChar: '͏͏͏͏͏͏͏͏͏·', }, }; /** * Value Extractor for both ColumnPicker & GridMenu Picker * when using Column Header Grouping, we'll prefix the column group title * else we'll simply return the column name title */ function pickerHeaderColumnValueExtractor(column, gridOptions) { let colName = column?.columnPickerLabel ?? column?.name ?? ''; if (colName instanceof HTMLElement || colName instanceof DocumentFragment) { colName = colName.textContent || ''; } const headerGroup = column?.columnGroup || ''; const columnGroupSeparator = gridOptions?.columnGroupSeparator ?? ' - '; if (headerGroup) { return headerGroup + columnGroupSeparator + colName; } return colName; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWdyaWQtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9hbmd1bGFyLXNsaWNrZ3JpZC9nbG9iYWwtZ3JpZC1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixPQUFPLEVBRVAsWUFBWSxHQUViLE1BQU0sNkJBQTZCLENBQUM7QUFHckMsbUNBQW1DO0FBQ25DLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUF3QjtJQUNwRCx3QkFBd0IsRUFBRSxJQUFJO0lBQzlCLFFBQVEsRUFBRSxLQUFLO0lBQ2Ysa0JBQWtCLEVBQUUsS0FBSztJQUN6Qix5QkFBeUIsRUFBRSxJQUFJO0lBQy9CLFVBQVUsRUFBRTtRQUNWLHNCQUFzQixFQUFFLElBQUk7UUFDNUIsVUFBVSxFQUFFLElBQUk7UUFDaEIsbUJBQW1CLEVBQUUsR0FBRztRQUN4Qix3QkFBd0IsRUFBRSxRQUFRO1FBQ2xDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFNBQVMsRUFBRSxHQUFHO1FBQ2QsUUFBUSxFQUFFLEdBQUc7UUFDYixZQUFZLEVBQUUsQ0FBQztLQUNoQjtJQUNELHFCQUFxQixFQUFFLHFCQUFxQjtJQUM1QyxnQkFBZ0IsRUFBRTtRQUNoQixRQUFRLEVBQUUsd0JBQXdCO0tBQ25DO0lBQ0QsWUFBWSxFQUFFO1FBQ1osa0JBQWtCLEVBQUUsS0FBSztRQUN6QixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLDBCQUEwQixFQUFFLGdDQUFnQztLQUM3RDtJQUNELFFBQVEsRUFBRTtRQUNSLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLGFBQWEsRUFBRSxJQUFJO1FBQ25CLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLGtCQUFrQixFQUFFLEtBQUs7UUFDekIsaUJBQWlCLEVBQUUsS0FBSztLQUN6QjtJQUNELFdBQVcsRUFBRTtRQUNYLGNBQWMs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Q0FBQztRQUM1QixnQ0FBZ0MsRUFBRSxJQUFJO1FBQ3RDLDBDQUEwQyxFQUFFLElBQUk7UUFDaEQsMENBQTBDLEVBQUUsRUFBRTtLQUMvQztJQUNELGVBQWUsRUFBRTtRQUNmLHNCQUFzQixFQUFFLENBQUM7UUFDekIsNEJBQTRCLEVBQUUsWUFBWTtLQUNkO0NBQy9CLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsU0FBUyxnQ0FBZ0MsQ0FBQyxNQUFjLEVBQUUsV0FBaUM7SUFDekYsSUFBSSxPQUFPLEdBQUcsTUFBTSxFQUFFLGlCQUFpQixJQUFJLE1BQU0sRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDO0lBQzlELElBQUksT0FBTyxZQUFZLFdBQVcsSUFBSSxPQUFPLFlBQVksZ0JBQWdCLEVBQUUsQ0FBQztRQUMxRSxPQUFPLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO0lBQzlDLE1BQU0sb0JBQW9CLEdBQUcsV0FBVyxFQUFFLG9CQUFvQixJQUFJLEtBQUssQ0FBQztJQUN4RSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sV0FBVyxHQUFHLG9CQUFvQixHQUFHLE9BQU8sQ0FBQztJQUN0RCxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ29sdW1uLFxuICBEZWxpbWl0ZXJUeXBlLFxuICBFdmVudE5hbWluZ1N0eWxlLFxuICBGaWxlVHlwZSxcbiAgRmlsdGVycyxcbiAgdHlwZSBHcmlkT3B0aW9uIGFzIEdyaWRPcHRpb25Vbml2ZXJzYWwsXG4gIE9wZXJhdG9yVHlwZSxcbiAgdHlwZSBUcmVlRGF0YU9wdGlvbixcbn0gZnJvbSAnQHNsaWNrZ3JpZC11bml2ZXJzYWwvY29tbW9uJztcbmltcG9ydCB0eXBlIHsgR3JpZE9wdGlvbiwgUm93RGV0YWlsVmlldyB9IGZyb20gJy4vbW9kZWxzL2luZGV4JztcblxuLyoqIEdsb2JhbCBHcmlkIE9wdGlvbnMgRGVmYXVsdHMgKi9cbmV4cG9ydCBjb25zdCBHbG9iYWxHcmlkT3B0aW9uczogUGFydGlhbDxHcmlkT3B0aW9uPiA9IHtcbiAgYWx3YXlzU2hvd1ZlcnRpY2FsU2Nyb2xsOiB0cnVlLFxuICBhdXRvRWRpdDogZmFsc2UsXG4gIGFzeW5jRWRpdG9yTG9hZGluZzogZmFsc2UsXG4gIGF1dG9GaXRDb2x1bW5zT25GaXJzdExvYWQ6IHRydWUsXG4gIGF1dG9SZXNpemU6IHtcbiAgICBhcHBseVJlc2l6ZVRvQ29udGFpbmVyOiB0cnVlLFxuICAgIGF1dG9IZWlnaHQ6IHRydWUsXG4gICAgYXV0b0hlaWdodFJlY2FsY1JvdzogMTAwLFxuICAgIGNhbGN1bGF0ZUF2YWlsYWJsZVNpemVCeTogJ3dpbmRvdycsXG4gICAgYm90dG9tUGFkZGluZzogMjAsXG4gICAgbWluSGVpZ2h0OiAyNTAsXG4gICAgbWluV2lkdGg6IDMwMCxcbiAgICByaWdodFBhZGRpbmc6IDAsXG4gIH0sXG4gIGNlbGxIaWdobGlnaHRDc3NDbGFzczogJ3NsaWNrLWNlbGwtbW9kaWZpZWQnLFxuICBjaGVja2JveFNlbGVjdG9yOiB7XG4gICAgY3NzQ2xhc3M6ICdzbGljay1jZWxsLWNoZWNrYm94c2VsJyxcbiAgfSxcbiAgY29sdW1uUGlja2VyOiB7XG4gICAgaGlkZUZvcmNlRml0QnV0dG9uOiBmYWxzZSxcbiAgICBoaWRlU3luY1Jlc2l6ZUJ1dHRvbjogdHJ1ZSxcbiAgICBoZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3RvcjogcGlja2VySGVhZGVyQ29sdW1uVmFsdWVFeHRyYWN0b3IsXG4gIH0sXG4gIGNlbGxNZW51OiB7XG4gICAgYXV0b0FkanVzdERyb3A6IHRydWUsXG4gICAgYXV0b0FsaWduU2lkZTogdHJ1ZSxcbiAgICBoaWRlQ2xvc2VCdXR0b246IHRydWUsXG4gICAgaGlkZUNvbW1hbmRTZWN0aW9uOiBmYWxzZSxcbiAgICBoaWRlT3B0aW9uU2VjdGlvbjogZmFsc2UsXG4gIH0sXG4gIGNvbnRleHRNZW51OiB7XG4gICAgYXV0b0FkanVzdERyb3A6IHRydWUsXG4gICAgYXV0b0FsaWduU2lkZTogdHJ1ZSxcbiAgICBoaWRlQ2xvc2VCdXR0b246IHRydWUsXG4gICAgaGlkZUNsZWFyQWxsR3JvdXBpbmc6IGZhbHNlLFxuICAgIGhpZGVDb2xsYXBzZUFsbEdyb3VwczogZmFsc2UsXG4gICAgaGlkZUNvbW1hbmRTZWN0aW9uOiBmYWxzZSxcbiAgICBoaWRlQ29weUNlbGxWYWx1ZUNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBhbmRBbGxHcm91cHM6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRDc3ZDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlRXhwb3J0RXhjZWxDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlRXhwb3J0VGV4dERlbGltaXRlZENvbW1hbmQ6IHRydWUsXG4gICAgaGlkZU1lbnVPblNjcm9sbDogdHJ1ZSxcbiAgICBoaWRlT3B0aW9uU2VjdGlvbjogZmFsc2UsXG4gICAgaWNvbkNvbGxhcHNlQWxsR3JvdXBzQ29tbWFuZDogJ21kaSBtZGktYXJyb3ctY29sbGFwc2UnLFxuICAgIGljb25FeHBhbmRBbGxHcm91cHNDb21tYW5kOiAnbWRpIG1kaS1hcnJvdy1leHBhbmQnLFxuICAgIGljb25DbGVhckdyb3VwaW5nQ29tbWFuZDogJ21kaSBtZGktY2xvc2UnLFxuICAgIGljb25Db3B5Q2VsbFZhbHVlQ29tbWFuZDogJ21kaSBtZGktY29udGVudC1jb3B5JyxcbiAgICBpY29uRXhwb3J0Q3N2Q29tbWFuZDogJ21kaSBtZGktZG93bmxvYWQnLFxuICAgIGljb25FeHBvcnRFeGNlbENvbW1hbmQ6ICdtZGkgbWRpLWZpbGUtZXhjZWwtb3V0bGluZScsXG4gICAgaWNvbkV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgc2hvd0J1bGxldFdoZW5JY29uTWlzc2luZzogdHJ1ZSxcbiAgICBzdWJJdGVtQ2hldnJvbkNsYXNzOiAnbWRpIG1kaS1jaGV2cm9uLWRvd24gbWRpLXJvdGF0ZS0yNzAnLFxuICB9LFxuICBjdXN0b21Gb290ZXJPcHRpb25zOiB7XG4gICAgZGF0ZUZvcm1hdDogJ1lZWVktTU0tREQsIGhoOm1tIGEnLFxuICAgIGhpZGVSb3dTZWxlY3Rpb25Db3VudDogZmFsc2UsXG4gICAgaGlkZVRvdGFsSXRlbUNvdW50OiBmYWxzZSxcbiAgICBoaWRlTGFzdFVwZGF0ZVRpbWVzdGFtcDogdHJ1ZSxcbiAgICBmb290ZXJIZWlnaHQ6IDI1LFxuICAgIGxlZnRDb250YWluZXJDbGFzczogJ2NvbC14cy0xMiBjb2wtc20tNScsXG4gICAgcmlnaHRDb250YWluZXJDbGFzczogJ2NvbC14cy02IGNvbC1zbS03JyxcbiAgICBtZXRyaWNTZXBhcmF0b3I6ICd8JyxcbiAgICBtZXRyaWNUZXh0czoge1xuICAgICAgaXRlbXM6ICdpdGVtcycsXG4gICAgICBpdGVtc0tleTogJ0lURU1TJyxcbiAgICAgIGl0ZW1zU2VsZWN0ZWQ6ICdpdGVtcyBzZWxlY3RlZCcsXG4gICAgICBpdGVtc1NlbGVjdGVkS2V5OiAnSVRFTVNfU0VMRUNURUQnLFxuICAgICAgb2Y6ICdvZicsXG4gICAgICBvZktleTogJ09GJyxcbiAgICB9LFxuICB9LFxuICBkYXRhVmlldzoge1xuICAgIC8vIHdoZW4gZW5hYmxlZCwgdGhpcyB3aWxsIHByZXNlcnZlIHRoZSByb3cgc2VsZWN0aW9uIGV2ZW4gYWZ0ZXIgZmlsdGVyaW5nL3NvcnRpbmcvZ3JvdXBpbmdcbiAgICBzeW5jR3JpZFNlbGVjdGlvbjoge1xuICAgICAgcHJlc2VydmVIaWRkZW46IGZhbHNlLFxuICAgICAgcHJlc2VydmVIaWRkZW5PblNlbGVjdGlvbkNoYW5nZTogdHJ1ZSxcbiAgICB9LFxuICAgIHN5bmNHcmlkU2VsZWN0aW9uV2l0aEJhY2tlbmRTZXJ2aWNlOiBmYWxzZSwgLy8gYnV0IGRpc2FibGUgaXQgd2hlbiB1c2luZyBiYWNrZW5kIHNlcnZpY2VzXG4gIH0sXG4gIGRhdGFzZXRJZFByb3BlcnR5TmFtZTogJ2lkJyxcbiAgZGVmYXVsdEZpbHRlcjogRmlsdGVycy5pbnB1dCxcbiAgZGVmYXVsdEJhY2tlbmRTZXJ2aWNlRmlsdGVyVHlwaW5nRGVib3VuY2U6IDUwMCxcbiAgZGVmYXVsdENvbHVtblNvcnRGaWVsZElkOiAnaWQnLFxuICBkZWZhdWx0RmlsdGVyUGxhY2Vob2xkZXI6ICfwn5SO77iOJyxcbiAgZGVmYXVsdEZpbHRlclJhbmdlT3BlcmF0b3I6IE9wZXJhdG9yVHlwZS5yYW5nZUluY2x1c2l2ZSxcbiAgZWRpdGFibGU6IGZhbHNlLFxuICBlbmFibGVBdXRvUmVzaXplOiB0cnVlLFxuICBlbmFibGVBdXRvU2l6ZUNvbHVtbnM6IHRydWUsXG4gIGVuYWJsZUNlbGxOYXZpZ2F0aW9uOiBmYWxzZSxcbiAgZW5hYmxlQ29sdW1uUGlja2VyOiB0cnVlLFxuICBlbmFibGVDb2x1bW5SZW9yZGVyOiB0cnVlLFxuICBlbmFibGVDb2x1bW5SZXNpemVPbkRvdWJsZUNsaWNrOiB0cnVlLFxuICBlbmFibGVDb250ZXh0TWVudTogdHJ1ZSxcbiAgZW5hYmxlRXhjZWxFeHBvcnQ6IGZhbHNlLFxuICBlbmFibGVUZXh0RXhwb3J0OiBmYWxzZSwgLy8gQ1NWL1RleHQgd2l0aCBUYWIgRGVsaW1pdGVkXG4gIGVuYWJsZUZpbHRlclRyaW1XaGl0ZVNwYWNlOiBmYWxzZSwgLy8gZG8gd2Ugd2FudCB0byB0cmltIHdoaXRlIHNwYWNlcyBvbiBhbGwgRmlsdGVycz9cbiAgZW5hYmxlR3JpZE1lbnU6IHRydWUsXG4gIGVuYWJsZUhlYWRlck1lbnU6IHRydWUsXG4gIGVuYWJsZUVtcHR5RGF0YVdhcm5pbmdNZXNzYWdlOiB0cnVlLFxuICBlbXB0eURhdGFXYXJuaW5nOiB7XG4gICAgY2xhc3NOYW1lOiAnc2xpY2stZW1wdHktZGF0YS13YXJuaW5nJyxcbiAgICBtZXNzYWdlOiAnTm8gZGF0YSB0byBkaXNwbGF5LicsXG4gICAgbWVzc2FnZUtleTogJ0VNUFRZX0RBVEFfV0FSTklOR19NRVNTQUdFJyxcbiAgICBoaWRlRnJvemVuTGVmdFdhcm5pbmc6IGZhbHNlLFxuICAgIGhpZGVGcm96ZW5SaWdodFdhcm5pbmc6IGZhbHNlLFxuICAgIGxlZnRWaWV3cG9ydE1hcmdpbkxlZnQ6ICc0MCUnLFxuICAgIHJpZ2h0Vmlld3BvcnRNYXJnaW5MZWZ0OiAnNDAlJyxcbiAgICBmcm96ZW5MZWZ0Vmlld3BvcnRNYXJnaW5MZWZ0OiAnMHB4JyxcbiAgICBmcm96ZW5SaWdodFZpZXdwb3J0TWFyZ2luTGVmdDogJzQwJScsXG4gIH0sXG4gIGVuYWJsZU1vdXNlSG92ZXJIaWdobGlnaHRSb3c6IHRydWUsXG4gIGVuYWJsZVNvcnRpbmc6IHRydWUsXG4gIGVuYWJsZVRleHRTZWxlY3Rpb25PbkNlbGxzOiB0cnVlLFxuICBldmVudE5hbWluZ1N0eWxlOiBFdmVudE5hbWluZ1N0eWxlLmNhbWVsQ2FzZSxcbiAgZXhwbGljaXRJbml0aWFsaXphdGlvbjogdHJ1ZSxcbiAgZXhjZWxFeHBvcnRPcHRpb25zOiB7XG4gICAgYWRkR3JvdXBJbmRlbnRhdGlvbjogdHJ1ZSxcbiAgICBleHBvcnRXaXRoRm9ybWF0dGVyOiBmYWxzZSxcbiAgICBmaWxlbmFtZTogJ2V4cG9ydCcsXG4gICAgZm9ybWF0OiBGaWxlVHlwZS54bHN4LFxuICAgIGdyb3VwaW5nQ29sdW1uSGVhZGVyVGl0bGU6ICdHcm91cCBCeScsXG4gICAgZ3JvdXBDb2xsYXBzZWRTeW1ib2w6ICfirp4nLFxuICAgIGdyb3VwRXhwYW5kZWRTeW1ib2w6ICfirp8nLFxuICAgIGdyb3VwaW5nQWdncmVnYXRvclJvd1RleHQ6ICcnLFxuICAgIHNhbml0aXplRGF0YUV4cG9ydDogZmFsc2UsXG4gIH0sXG4gIHRleHRFeHBvcnRPcHRpb25zOiB7XG4gICAgZGVsaW1pdGVyOiBEZWxpbWl0ZXJUeXBlLmNvbW1hLFxuICAgIGV4cG9ydFdpdGhGb3JtYXR0ZXI6IGZhbHNlLFxuICAgIGZpbGVuYW1lOiAnZXhwb3J0JyxcbiAgICBmb3JtYXQ6IEZpbGVUeXBlLmNzdixcbiAgICBncm91cGluZ0NvbHVtbkhlYWRlclRpdGxlOiAnR3JvdXAgQnknLFxuICAgIGdyb3VwaW5nQWdncmVnYXRvclJvd1RleHQ6ICcnLFxuICAgIHNhbml0aXplRGF0YUV4cG9ydDogZmFsc2UsXG4gICAgdXNlVXRmOFdpdGhCb206IHRydWUsXG4gIH0sXG4gIGZpbHRlclR5cGluZ0RlYm91bmNlOiAwLFxuICBmb3JjZUZpdENvbHVtbnM6IGZhbHNlLFxuICBmcm96ZW5IZWFkZXJXaWR0aENhbGNEaWZmZXJlbnRpYWw6IDAsXG4gIGdyaWRNZW51OiB7XG4gICAgZHJvcFNpZGU6ICdsZWZ0JyxcbiAgICBjb21tYW5kTGFiZWxzOiB7XG4gICAgICBjbGVhckFsbEZpbHRlcnNDb21tYW5kS2V5OiAnQ0xFQVJfQUxMX0ZJTFRFUlMnLFxuICAgICAgY2xlYXJBbGxTb3J0aW5nQ29tbWFuZEtleTogJ0NMRUFSX0FMTF9TT1JUSU5HJyxcbiAgICAgIGNsZWFyRnJvemVuQ29sdW1uc0NvbW1hbmRLZXk6ICdDTEVBUl9QSU5OSU5HJyxcbiAgICAgIGV4cG9ydENzdkNvbW1hbmRLZXk6ICdFWFBPUlRfVE9fQ1NWJyxcbiAgICAgIGV4cG9ydEV4Y2VsQ29tbWFuZEtleTogJ0VYUE9SVF9UT19FWENFTCcsXG4gICAgICBleHBvcnRUZXh0RGVsaW1pdGVkQ29tbWFuZEtleTogJ0VYUE9SVF9UT19UQUJfREVMSU1JVEVEJyxcbiAgICAgIHJlZnJlc2hEYXRhc2V0Q29tbWFuZEtleTogJ1JFRlJFU0hfREFUQVNFVCcsXG4gICAgICB0b2dnbGVEYXJrTW9kZUNvbW1hbmRLZXk6ICdUT0dHTEVfREFSS19NT0RFJyxcbiAgICAgIHRvZ2dsZUZpbHRlckNvbW1hbmRLZXk6ICdUT0dHTEVfRklMVEVSX1JPVycsXG4gICAgICB0b2dnbGVQcmVIZWFkZXJDb21tYW5kS2V5OiAnVE9HR0xFX1BSRV9IRUFERVJfUk9XJyxcbiAgICB9LFxuICAgIGhpZGVDbGVhckFsbEZpbHRlcnNDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJBbGxTb3J0aW5nQ29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUNsZWFyRnJvemVuQ29sdW1uc0NvbW1hbmQ6IHRydWUsIC8vIG9wdC1pbiBjb21tYW5kXG4gICAgaGlkZUV4cG9ydENzdkNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRFeGNlbENvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVFeHBvcnRUZXh0RGVsaW1pdGVkQ29tbWFuZDogdHJ1ZSxcbiAgICBoaWRlRm9yY2VGaXRCdXR0b246IGZhbHNlLFxuICAgIGhpZGVSZWZyZXNoRGF0YXNldENvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVTeW5jUmVzaXplQnV0dG9uOiB0cnVlLFxuICAgIGhpZGVUb2dnbGVEYXJrTW9kZUNvbW1hbmQ6IHRydWUsXG4gICAgaGlkZVRvZ2dsZUZpbHRlckNvbW1hbmQ6IGZhbHNlLFxuICAgIGhpZGVUb2dnbGVQcmVIZWFkZXJDb21tYW5kOiBmYWxzZSxcbiAgICBpY29uQ3NzQ2xhc3M6ICdtZGkgbWRpLW1lbnUnLFxuICAgIGljb25DbGVhckFsbEZpbHRlcnNDb21tYW5kOiAnbWRpIG1kaS1maWx0ZXItcmVtb3ZlLW91dGxpbmUnLFxuICAgIGljb25DbGVhckFsbFNvcnRpbmdDb21tYW5kOiAnbWRpIG1kaS1zb3J0LXZhcmlhbnQtb2ZmJyxcbiAgICBpY29uQ2xlYXJGcm96ZW5Db2x1bW5zQ29tbWFuZDogJ21kaSBtZGktcGluLW9mZi1vdXRsaW5lJyxcbiAgICBpY29uRXhwb3J0Q3N2Q29tbWFuZDogJ21kaSBtZGktZG93bmxvYWQnLFxuICAgIGljb25FeHBvcnRFeGNlbENvbW1hbmQ6ICdtZGkgbWRpLWZpbGUtZXhjZWwtb3V0bGluZScsXG4gICAgaWNvbkV4cG9ydFRleHREZWxpbWl0ZWRDb21tYW5kOiAnbWRpIG1kaS1kb3dubG9hZCcsXG4gICAgaWNvblJlZnJlc2hEYXRhc2V0Q29tbWFuZDogJ21kaSBtZGktc3luYycsXG4gICAgaWNvblRvZ2dsZURhcmtNb2RlQ29tbWFuZDogJ21kaSBtZGktYnJpZ2h0bmVzcy00JyxcbiAgICBpY29uVG9nZ2xlRmlsdGVyQ29tbWFuZDogJ21kaSBtZGktZmxpcC12ZXJ0aWNhbCcsXG4gICAgaWNvblRvZ2dsZVByZUhlYWRlckNvbW1hbmQ6ICdtZGkgbWRpLWZsaXAtdmVydGljYWwnLFxuICAgIG1lbnVXaWR0aDogMTYsXG4gICAgcmVzaXplT25TaG93SGVhZGVyUm93OiB0cnVlLFxuICAgIHN1Ykl0ZW1DaGV2cm9uQ2xhc3M6ICdtZGkgbWRpLWNoZXZyb24tZG93biBtZGktcm90YXRlLTI3MCcsXG4gICAgaGVhZGVyQ29sdW1uVmFsdWVFeHRyYWN0b3I6IHBpY2tlckhlYWRlckNvbHVtblZhbHVlRXh0cmFjdG9yLFxuICB9LFxuICBoZWFkZXJNZW51OiB7XG4gICAgYXV0b0FsaWduOiB0cnVlLFxuICAgIGF1dG9BbGlnbk9mZnNldDogMTIsXG4gICAgbWluV2lkdGg6IDE0MCxcbiAgICBpY29uQ2xlYXJGaWx0ZXJDb21tYW5kOiAnbWRpIG1kaS1maWx0ZXItcmVtb3ZlLW91dGxpbmUnLFxuICAgIGljb25DbGVhclNvcnRDb21tYW5kOiAnbWRpIG1kaS1zb3J0LXZhcmlhbnQtb2ZmJyxcbiAgICBpY29uRnJlZXplQ29sdW1uczogJ21kaSBtZGktcGluLW91dGxpbmUnLFxuICAgIGljb25Tb3J0QXNjQ29tbWFuZDogJ21kaSBtZGktc29ydC1hc2NlbmRpbmcnLFxuICAgIGljb25Tb3J0RGVzY0NvbW1hbmQ6ICdtZGkgbWRpLXNvcnQtZGVzY2VuZGluZycsXG4gICAgaWNvbkNvbHVtbkhpZGVDb21tYW5kOiAnbWRpIG1kaS1jbG9zZScsXG4gICAgaWNvbkNvbHVtblJlc2l6ZUJ5Q29udGVudENvbW1hbmQ6ICdtZGkgbWRpLWFycm93LWV4cGFuZC1ob3Jpem9udGFsJyxcbiAgICBoaWRlQ29sdW1uUmVzaXplQnlDb250ZW50Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUNvbHVtbkhpZGVDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJGaWx0ZXJDb21tYW5kOiBmYWxzZSxcbiAgICBoaWRlQ2xlYXJTb3J0Q29tbWFuZDogZmFsc2UsXG4gICAgaGlkZUZyZWV6ZUNvbHVtbnNDb21tYW5kOiB0cnVlLCAvLyBvcHQtaW4gY29tbWFuZFxuICAgIGhpZGVTb3J0Q29tbWFuZHM6IGZhbHNlLFxuICAgIHN1Ykl0ZW1DaGV2cm9uQ2xhc3M6ICdtZGkgbWRpLWNoZXZyb24tZG93biBtZGktcm90YXRlLTI3MCcsXG4gIH0sXG4gIGhlYWRlclJvd0hlaWdodDogMzUsXG4gIG11bHRpQ29sdW1uU29ydDogdHJ1ZSxcbiAgbnVtYmVyZWRNdWx0aUNvbHVtblNvcnQ6IHRydWUsXG4gIHRyaXN0YXRlTXVsdGlDb2x1bW5Tb3J0OiBmYWxzZSxcbiAgc29ydENvbE51bWJlckluU2VwYXJhdGVTcGFuOiB0cnVlLFxuICBzdXBwcmVzc0FjdGl2ZUNlbGxDaGFuZ2VPbkVkaXQ6IGZhbHNlLFxuICBwYWdpbmF0aW9uOiB7XG4gICAgcGFnZVNpemVzOiBbMTAsIDE1LCAyMCwgMjUsIDMwLCA0MCwgNTAsIDc1LCAxMDBdLFxuICAgIHBhZ2VTaXplOiAyNSxcbiAgICB0b3RhbEl0ZW1zOiAwLFxuICB9LFxuICAvLyB0ZWNobmljYWxseSBzcGVha2luZyB0aGUgUm93IERldGFpbCByZXF1aXJlcyB0aGUgcHJvY2VzcyAmIHZpZXdDb21wb25lbnQgYnV0IHdlJ2xsIGlnbm9yZSBpdCBqdXN0IHRvIHNldCBjZXJ0YWluIG9wdGlvbnNcbiAgcm93RGV0YWlsVmlldzoge1xuICAgIGNvbGxhcHNlQWxsT25Tb3J0OiB0cnVlLFxuICAgIGNzc0NsYXNzOiAnZGV0YWlsLXZpZXctdG9nZ2xlJyxcbiAgICBwYW5lbFJvd3M6IDEsXG4gICAga2V5UHJlZml4OiAnX18nLFxuICAgIHVzZVJvd0NsaWNrOiBmYWxzZSxcbiAgICBzYXZlRGV0YWlsVmlld09uU2Nyb2xsOiBmYWxzZSxcbiAgfSBhcyBSb3dEZXRhaWxWaWV3LFxuICByb3dIZWlnaHQ6IDM1LFxuICB0b3BQYW5lbEhlaWdodDogMzUsXG4gIHByZUhlYWRlclBhbmVsV2lkdGg6ICcxMDAlJywgLy8gbW9zdGx5IHVzZWZ1bCBmb3IgRHJhZ2dhYmxlIEdyb3VwaW5nIGRyb3B6b25lIHRvIHRha2UgZnVsbCB3aWR0aFxuICB0cmFuc2xhdGlvbk5hbWVzcGFjZVNlcGFyYXRvcjogJzonLFxuICByZXNldEZpbHRlclNlYXJjaFZhbHVlQWZ0ZXJPbkJlZm9yZUNhbmNlbGxhdGlvbjogdHJ1ZSxcbiAgcmVzaXplQnlDb250ZW50T25seU9uRmlyc3RMb2FkOiB0cnVlLFxuICByZXNpemVCeUNvbnRlbnRPcHRpb25zOiB7XG4gICAgYWx3YXlzUmVjYWxjdWxhdGVDb2x1bW5XaWR0aDogZmFsc2UsXG4gICAgY2VsbENoYXJXaWR0aEluUHg6IDcuOCxcbiAgICBjZWxsUGFkZGluZ1dpZHRoSW5QeDogMTQsXG4gICAgZGVmYXVsdFJhdGlvRm9yU3RyaW5nVHlwZTogMC44OCxcbiAgICBmb3JtYXR0ZXJQYWRkaW5nV2lkdGhJblB4OiAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RDZWxsQ29udGVudFdpZHRoOiAxMDAwLFxuICAgIG1heEl0ZW1Ub0luc3BlY3RTaW5nbGVDb2x1bW5XaWR0aEJ5Q29udGVudDogNTAwMCxcbiAgICB3aWR0aFRvUmVtb3ZlRnJvbUV4Y2VlZGVkV2lkdGhSZWFkanVzdG1lbnQ6IDUwLFxuICB9LFxuICB0cmVlRGF0YU9wdGlvbnM6IHtcbiAgICBleHBvcnRJbmRlbnRNYXJnaW5MZWZ0OiA1LFxuICAgIGV4cG9ydEluZGVudGF0aW9uTGVhZGluZ0NoYXI6ICfNj82PzY/Nj82PzY/Nj82PzY/CtycsXG4gIH0gYXMgdW5rbm93biBhcyBUcmVlRGF0YU9wdGlvbixcbn07XG5cbi8qKlxuICogVmFsdWUgRXh0cmFjdG9yIGZvciBib3RoIENvbHVtblBpY2tlciAmIEdyaWRNZW51IFBpY2tlclxuICogd2hlbiB1c2luZyBDb2x1bW4gSGVhZGVyIEdyb3VwaW5nLCB3ZSdsbCBwcmVmaXggdGhlIGNvbHVtbiBncm91cCB0aXRsZVxuICogZWxzZSB3ZSdsbCBzaW1wbHkgcmV0dXJuIHRoZSBjb2x1bW4gbmFtZSB0aXRsZVxuICovXG5mdW5jdGlvbiBwaWNrZXJIZWFkZXJDb2x1bW5WYWx1ZUV4dHJhY3Rvcihjb2x1bW46IENvbHVtbiwgZ3JpZE9wdGlvbnM/OiBHcmlkT3B0aW9uVW5pdmVyc2FsKSB7XG4gIGxldCBjb2xOYW1lID0gY29sdW1uPy5jb2x1bW5QaWNrZXJMYWJlbCA/PyBjb2x1bW4/Lm5hbWUgPz8gJyc7XG4gIGlmIChjb2xOYW1lIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQgfHwgY29sTmFtZSBpbnN0YW5jZW9mIERvY3VtZW50RnJhZ21lbnQpIHtcbiAgICBjb2xOYW1lID0gY29sTmFtZS50ZXh0Q29udGVudCB8fCAnJztcbiAgfVxuICBjb25zdCBoZWFkZXJHcm91cCA9IGNvbHVtbj8uY29sdW1uR3JvdXAgfHwgJyc7XG4gIGNvbnN0IGNvbHVtbkdyb3VwU2VwYXJhdG9yID0gZ3JpZE9wdGlvbnM/LmNvbHVtbkdyb3VwU2VwYXJhdG9yID8/ICcgLSAnO1xuICBpZiAoaGVhZGVyR3JvdXApIHtcbiAgICByZXR1cm4gaGVhZGVyR3JvdXAgKyBjb2x1bW5Hcm91cFNlcGFyYXRvciArIGNvbE5hbWU7XG4gIH1cbiAgcmV0dXJuIGNvbE5hbWU7XG59XG4iXX0=