systelab-components
Version:
systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.
42 lines • 34.3 kB
JavaScript
import { AbstractComboBox } from '../combobox/abstract-combobox.component';
import { Component } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "systelab-preferences";
import * as i2 from "@angular/common";
import * as i3 from "@angular/forms";
import * as i4 from "ag-grid-angular";
import * as i5 from "../combobox/renderer/combobox-input-renderer.component";
import * as i6 from "systelab-translate";
class Element {
constructor(id, description) {
this.id = id;
this.description = description;
}
}
export class ModulabSelect extends AbstractComboBox {
constructor(myRenderer, chRef, preferencesService) {
super(myRenderer, chRef, preferencesService);
this.myRenderer = myRenderer;
this.chRef = chRef;
this.preferencesService = preferencesService;
}
getInstance() {
return new Element('', '');
}
getDescriptionField() {
return 'description';
}
getCodeField() {
return 'code';
}
getIdField() {
return 'id';
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ModulabSelect, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i1.PreferencesService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.9", type: ModulabSelect, selector: "systelab-select", usesInheritance: true, ngImport: i0, template: "<div #combobox class=\"dropdown slab-combobox d-flex w-100\" [ngClass]=\"{'disabled': isDisabled}\">\n <div #dropdowntoogle class=\"slab-flex-1 d-flex dropdown-toggle slab-dropdown-toogle\" id=\"{{comboId}}\"\n data-toggle=\"dropdown\" (click)=\"onComboClicked($event)\" (keydown.arrowDown)=\"onComboKeyArrowDown($event)\"\n (keydown.arrowUp)=\"onComboKeyArrowUp($event)\">\n <input *ngIf=\"!customInputRenderer\" #input [readonly]=\"!allowEditInput\" type=\"text\"\n class=\"slab-flex-1 slab-combo-label slab-combo-input\"\n [tabindex]=\"tabindex\"\n [ngStyle]=\"getInputHeight()\" [style.font-family]=\"fontFamily\" [style.font-size.px]=\"fontSize\"\n [style.font-weight]=\"fontWeight\" [style.font-style]=\"fontStyle\"\n [(ngModel)]=\"description\" [disabled]=\"isDisabled\" [style.color]=\"inputColor\"/>\n <div *ngIf=\"customInputRenderer\" #input readonly type=\"text\"\n class=\"slab-flex-1 slab-combo-input combobox-input-renderer\" [ngStyle]=\"getInputHeight()\"\n [style.font-family]=\"fontFamily\" [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\"\n [style.font-style]=\"fontStyle\" [style.color]=\"inputColor\"\n [tabindex]=\"tabindex\">\n <combobox-input-renderer [componentType]=\"customInputRenderer\" [id]=\"id\" [description]=\"description\"\n [initialParams]=\"initialParams\"\n [selectedData]=\"currentSelected\"></combobox-input-renderer>\n </div>\n <button *ngIf=\"withDeleteOption && id && (id !== defaultIdValue)\" type=\"button\" #deleteButton\n class=\"slab-combo-button border-right-0 rounded-0 {{deleteIconClass}}\" (click)=\"deleteValueSelected($event)\"\n tabindex=\"-1\"></button>\n <button *ngIf=\"withIcon && id\" class=\"slab-combo-button border-right-0 rounded-0 {{iconClass}}\"\n [style.color]=\"iconColor\" tabindex=\"-1\"></button>\n <button type=\"button\" *ngIf=\"withFavourites && id!==null && (!isTree || (isTree && level))\" #favouriteButton\n class=\"slab-combo-button slab-combo-star border-right-0 rounded-0 text-primary\"\n [ngClass]=\"{'icon-star': isFavourite, 'icon-star-o': !isFavourite }\" (click)=\"doToggleFavourite($event)\"\n tabindex=\"-1\"></button>\n <button type=\"button\" #combobutton class=\"slab-combo-button slab-combo-button-icon\" [disabled]=\"isDisabled\"\n tabindex=\"-1\"></button>\n </div>\n\n <div #dropdownmenu class=\"dropdown-menu slab-combo-dropdown\" (click)=\"clickDropDownMenu($event)\"\n [ngClass]=\"{'disabled': isDisabled}\">\n <div #dropdown id=\"slab-combo-dropdown-box\" class=\"slab-combo-dropdown-box d-flex flex-column\">\n <div *ngIf=\"filter\" class=\"slab-filter-container\" [style.font-family]=\"fontFamily\"\n [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\" [tabindex]=\"tabindex\"\n [style.font-style]=\"fontStyle\">\n <input class=\"w-100 border rounded\" [value]=\"filterValue\" #filterInput (keyup)=\"doSearch($event)\">\n </div>\n <div *ngIf=\"selectDeselectAll\" class=\"slab-filter-container mb-2\">\n <div class=\"w-100 text-center btn-group\" role=\"group\">\n <button type=\"button\" class=\"btn btn-sm w-50\"\n (click)=\"doSelectAll()\">{{'COMMON_SELECT_ALL' | translate | async }}</button>\n <button type=\"button\" class=\"btn btn-sm w-50\"\n (click)=\"doDeselectAll()\">{{'COMMON_DESELECT_ALL' | translate | async }}</button>\n </div>\n </div>\n <div #hidden class=\"height-hidden\"></div>\n <div class=\"slab-flex-1 position-relative\">\n <ag-grid-angular *ngIf=\"isDropdownOpened\" #grid id=\"agGrid\" #agGrid style=\"width: 100%; height: 100%;\"\n [style.font-family]=\"fontFamily\"\n [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\"\n [style.font-style]=\"fontStyle\" class=\"ag-theme-fresh\"\n [gridOptions]=\"gridOptions\" (selectionChanged)=\"onSelectionChanged($event)\"\n (modelUpdated)=\"onModelUpdated()\"\n (rowSelected)=\"onRowSelected($event)\" (gridReady)=\"doGridReady()\"\n (cellKeyDown)=\"onCellKeyDown($event)\">\n </ag-grid-angular>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"listSelectedValues && multipleSelection\">\n <ul class=\"ml-1 mt-2 mb-0 pl-0\" *ngIf=\"multipleSelectedItemList.length < 8\">\n <li class=\"slab-combo-badge badge badge-primary mr-1 p-2\" role=\"badge\"\n *ngFor=\"let item of multipleSelectedItemList\"><span\n class=\"float-left mr-2\">{{item.description}}</span>\n <button data-dismiss=\"badge\" type=\"button\" class=\"close\" (click)=\"removeItem(item)\" aria-label=\"Close\"\n tabindex=\"-1\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </li>\n </ul>\n <ul class=\"ml-1 mt-2 pl-0\" *ngIf=\"multipleSelectedItemList.length > 7\">\n <li class=\"slab-combo-badge badge badge-primary mr-1 p-2\"\n role=\"badge\">{{'COMMON_SELECTED_ITEMS' | translate | async }}\n <span class=\"badge badge-light\">{{multipleSelectedItemList.length}}</span>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.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: "component", type: i5.ComboBoxInputRendererComponent, selector: "combobox-input-renderer", inputs: ["componentType", "id", "description", "selectedData", "initialParams"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.GeneralTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: ModulabSelect, decorators: [{
type: Component,
args: [{ selector: 'systelab-select', template: "<div #combobox class=\"dropdown slab-combobox d-flex w-100\" [ngClass]=\"{'disabled': isDisabled}\">\n <div #dropdowntoogle class=\"slab-flex-1 d-flex dropdown-toggle slab-dropdown-toogle\" id=\"{{comboId}}\"\n data-toggle=\"dropdown\" (click)=\"onComboClicked($event)\" (keydown.arrowDown)=\"onComboKeyArrowDown($event)\"\n (keydown.arrowUp)=\"onComboKeyArrowUp($event)\">\n <input *ngIf=\"!customInputRenderer\" #input [readonly]=\"!allowEditInput\" type=\"text\"\n class=\"slab-flex-1 slab-combo-label slab-combo-input\"\n [tabindex]=\"tabindex\"\n [ngStyle]=\"getInputHeight()\" [style.font-family]=\"fontFamily\" [style.font-size.px]=\"fontSize\"\n [style.font-weight]=\"fontWeight\" [style.font-style]=\"fontStyle\"\n [(ngModel)]=\"description\" [disabled]=\"isDisabled\" [style.color]=\"inputColor\"/>\n <div *ngIf=\"customInputRenderer\" #input readonly type=\"text\"\n class=\"slab-flex-1 slab-combo-input combobox-input-renderer\" [ngStyle]=\"getInputHeight()\"\n [style.font-family]=\"fontFamily\" [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\"\n [style.font-style]=\"fontStyle\" [style.color]=\"inputColor\"\n [tabindex]=\"tabindex\">\n <combobox-input-renderer [componentType]=\"customInputRenderer\" [id]=\"id\" [description]=\"description\"\n [initialParams]=\"initialParams\"\n [selectedData]=\"currentSelected\"></combobox-input-renderer>\n </div>\n <button *ngIf=\"withDeleteOption && id && (id !== defaultIdValue)\" type=\"button\" #deleteButton\n class=\"slab-combo-button border-right-0 rounded-0 {{deleteIconClass}}\" (click)=\"deleteValueSelected($event)\"\n tabindex=\"-1\"></button>\n <button *ngIf=\"withIcon && id\" class=\"slab-combo-button border-right-0 rounded-0 {{iconClass}}\"\n [style.color]=\"iconColor\" tabindex=\"-1\"></button>\n <button type=\"button\" *ngIf=\"withFavourites && id!==null && (!isTree || (isTree && level))\" #favouriteButton\n class=\"slab-combo-button slab-combo-star border-right-0 rounded-0 text-primary\"\n [ngClass]=\"{'icon-star': isFavourite, 'icon-star-o': !isFavourite }\" (click)=\"doToggleFavourite($event)\"\n tabindex=\"-1\"></button>\n <button type=\"button\" #combobutton class=\"slab-combo-button slab-combo-button-icon\" [disabled]=\"isDisabled\"\n tabindex=\"-1\"></button>\n </div>\n\n <div #dropdownmenu class=\"dropdown-menu slab-combo-dropdown\" (click)=\"clickDropDownMenu($event)\"\n [ngClass]=\"{'disabled': isDisabled}\">\n <div #dropdown id=\"slab-combo-dropdown-box\" class=\"slab-combo-dropdown-box d-flex flex-column\">\n <div *ngIf=\"filter\" class=\"slab-filter-container\" [style.font-family]=\"fontFamily\"\n [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\" [tabindex]=\"tabindex\"\n [style.font-style]=\"fontStyle\">\n <input class=\"w-100 border rounded\" [value]=\"filterValue\" #filterInput (keyup)=\"doSearch($event)\">\n </div>\n <div *ngIf=\"selectDeselectAll\" class=\"slab-filter-container mb-2\">\n <div class=\"w-100 text-center btn-group\" role=\"group\">\n <button type=\"button\" class=\"btn btn-sm w-50\"\n (click)=\"doSelectAll()\">{{'COMMON_SELECT_ALL' | translate | async }}</button>\n <button type=\"button\" class=\"btn btn-sm w-50\"\n (click)=\"doDeselectAll()\">{{'COMMON_DESELECT_ALL' | translate | async }}</button>\n </div>\n </div>\n <div #hidden class=\"height-hidden\"></div>\n <div class=\"slab-flex-1 position-relative\">\n <ag-grid-angular *ngIf=\"isDropdownOpened\" #grid id=\"agGrid\" #agGrid style=\"width: 100%; height: 100%;\"\n [style.font-family]=\"fontFamily\"\n [style.font-size.px]=\"fontSize\" [style.font-weight]=\"fontWeight\"\n [style.font-style]=\"fontStyle\" class=\"ag-theme-fresh\"\n [gridOptions]=\"gridOptions\" (selectionChanged)=\"onSelectionChanged($event)\"\n (modelUpdated)=\"onModelUpdated()\"\n (rowSelected)=\"onRowSelected($event)\" (gridReady)=\"doGridReady()\"\n (cellKeyDown)=\"onCellKeyDown($event)\">\n </ag-grid-angular>\n </div>\n </div>\n </div>\n</div>\n\n<div *ngIf=\"listSelectedValues && multipleSelection\">\n <ul class=\"ml-1 mt-2 mb-0 pl-0\" *ngIf=\"multipleSelectedItemList.length < 8\">\n <li class=\"slab-combo-badge badge badge-primary mr-1 p-2\" role=\"badge\"\n *ngFor=\"let item of multipleSelectedItemList\"><span\n class=\"float-left mr-2\">{{item.description}}</span>\n <button data-dismiss=\"badge\" type=\"button\" class=\"close\" (click)=\"removeItem(item)\" aria-label=\"Close\"\n tabindex=\"-1\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </li>\n </ul>\n <ul class=\"ml-1 mt-2 pl-0\" *ngIf=\"multipleSelectedItemList.length > 7\">\n <li class=\"slab-combo-badge badge badge-primary mr-1 p-2\"\n role=\"badge\">{{'COMMON_SELECTED_ITEMS' | translate | async }}\n <span class=\"badge badge-light\">{{multipleSelectedItemList.length}}</span>\n </li>\n </ul>\n</div>\n" }]
}], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i1.PreferencesService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5c3RlbGFiLWNvbXBvbmVudHMvc3JjL2xpYi9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N5c3RlbGFiLWNvbXBvbmVudHMvc3JjL2xpYi9jb21ib2JveC9hYnN0cmFjdC1jb21ib2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQW9CLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFJdEUsTUFBTSxPQUFPO0lBQ1osWUFBbUIsRUFBVSxFQUFTLFdBQW1CO1FBQXRDLE9BQUUsR0FBRixFQUFFLENBQVE7UUFBUyxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUV6RCxDQUFDO0NBQ0Q7QUFPRCxNQUFNLE9BQU8sYUFBYyxTQUFRLGdCQUF5QjtJQUUzRCxZQUE0QixVQUFxQixFQUFrQixLQUF3QixFQUFrQixrQkFBdUM7UUFDbkosS0FBSyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQURsQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQWtCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQWtCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBcUI7SUFFcEosQ0FBQztJQUVELFdBQVc7UUFDVixPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsbUJBQW1CO1FBQ2xCLE9BQU8sYUFBYSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxZQUFZO1FBQ1gsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBRUQsVUFBVTtRQUNULE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQzs4R0FwQlcsYUFBYTtrR0FBYixhQUFhLDhFQ2hCMUIsNHRMQWtGQTs7MkZEbEVhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0MsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBYnN0cmFjdENvbWJvQm94fSBmcm9tICcuLi9jb21ib2JveC9hYnN0cmFjdC1jb21ib2JveC5jb21wb25lbnQnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBSZW5kZXJlcjJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcmVmZXJlbmNlc1NlcnZpY2V9IGZyb20gJ3N5c3RlbGFiLXByZWZlcmVuY2VzJztcblxuXG5jbGFzcyBFbGVtZW50IHtcblx0Y29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nKSB7XG5cblx0fVxufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdzeXN0ZWxhYi1zZWxlY3QnLFxuXHR0ZW1wbGF0ZVVybDogJy4uL2NvbWJvYm94L2Fic3RyYWN0LWNvbWJvYm94LmNvbXBvbmVudC5odG1sJ1xufSlcblxuZXhwb3J0IGNsYXNzIE1vZHVsYWJTZWxlY3QgZXh0ZW5kcyBBYnN0cmFjdENvbWJvQm94PEVsZW1lbnQ+IHtcblxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgb3ZlcnJpZGUgbXlSZW5kZXJlcjogUmVuZGVyZXIyLCBwdWJsaWMgb3ZlcnJpZGUgY2hSZWY6IENoYW5nZURldGVjdG9yUmVmLCBwdWJsaWMgb3ZlcnJpZGUgcHJlZmVyZW5jZXNTZXJ2aWNlPzogUHJlZmVyZW5jZXNTZXJ2aWNlKSB7XG5cdFx0c3VwZXIobXlSZW5kZXJlciwgY2hSZWYsIHByZWZlcmVuY2VzU2VydmljZSk7XG5cdH1cblxuXHRnZXRJbnN0YW5jZSgpOiBFbGVtZW50IHtcblx0XHRyZXR1cm4gbmV3IEVsZW1lbnQoJycsICcnKTtcblx0fVxuXG5cdGdldERlc2NyaXB0aW9uRmllbGQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gJ2Rlc2NyaXB0aW9uJztcblx0fVxuXG5cdGdldENvZGVGaWVsZCgpOiBzdHJpbmcge1xuXHRcdHJldHVybiAnY29kZSc7XG5cdH1cblxuXHRnZXRJZEZpZWxkKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuICdpZCc7XG5cdH1cbn1cbiIsIjxkaXYgI2NvbWJvYm94IGNsYXNzPVwiZHJvcGRvd24gc2xhYi1jb21ib2JveCBkLWZsZXggdy0xMDBcIiBbbmdDbGFzc109XCJ7J2Rpc2FibGVkJzogaXNEaXNhYmxlZH1cIj5cbiAgICA8ZGl2ICNkcm9wZG93bnRvb2dsZSBjbGFzcz1cInNsYWItZmxleC0xIGQtZmxleCBkcm9wZG93bi10b2dnbGUgc2xhYi1kcm9wZG93bi10b29nbGVcIiBpZD1cInt7Y29tYm9JZH19XCJcbiAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiAoY2xpY2spPVwib25Db21ib0NsaWNrZWQoJGV2ZW50KVwiIChrZXlkb3duLmFycm93RG93bik9XCJvbkNvbWJvS2V5QXJyb3dEb3duKCRldmVudClcIlxuICAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJvbkNvbWJvS2V5QXJyb3dVcCgkZXZlbnQpXCI+XG4gICAgICAgIDxpbnB1dCAqbmdJZj1cIiFjdXN0b21JbnB1dFJlbmRlcmVyXCIgI2lucHV0IFtyZWFkb25seV09XCIhYWxsb3dFZGl0SW5wdXRcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICBjbGFzcz1cInNsYWItZmxleC0xIHNsYWItY29tYm8tbGFiZWwgc2xhYi1jb21iby1pbnB1dFwiXG4gICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0SW5wdXRIZWlnaHQoKVwiIFtzdHlsZS5mb250LWZhbWlseV09XCJmb250RmFtaWx5XCIgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJmb250U2l6ZVwiXG4gICAgICAgICAgICAgICBbc3R5bGUuZm9udC13ZWlnaHRdPVwiZm9udFdlaWdodFwiIFtzdHlsZS5mb250LXN0eWxlXT1cImZvbnRTdHlsZVwiXG4gICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRlc2NyaXB0aW9uXCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBbc3R5bGUuY29sb3JdPVwiaW5wdXRDb2xvclwiLz5cbiAgICAgICAgPGRpdiAqbmdJZj1cImN1c3RvbUlucHV0UmVuZGVyZXJcIiAjaW5wdXQgcmVhZG9ubHkgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgIGNsYXNzPVwic2xhYi1mbGV4LTEgc2xhYi1jb21iby1pbnB1dCBjb21ib2JveC1pbnB1dC1yZW5kZXJlclwiIFtuZ1N0eWxlXT1cImdldElucHV0SGVpZ2h0KClcIlxuICAgICAgICAgICAgIFtzdHlsZS5mb250LWZhbWlseV09XCJmb250RmFtaWx5XCIgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJmb250U2l6ZVwiIFtzdHlsZS5mb250LXdlaWdodF09XCJmb250V2VpZ2h0XCJcbiAgICAgICAgICAgICBbc3R5bGUuZm9udC1zdHlsZV09XCJmb250U3R5bGVcIiBbc3R5bGUuY29sb3JdPVwiaW5wdXRDb2xvclwiXG4gICAgICAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCI+XG4gICAgICAgICAgICA8Y29tYm9ib3gtaW5wdXQtcmVuZGVyZXIgW2NvbXBvbmVudFR5cGVdPVwiY3VzdG9tSW5wdXRSZW5kZXJlclwiIFtpZF09XCJpZFwiIFtkZXNjcmlwdGlvbl09XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luaXRpYWxQYXJhbXNdPVwiaW5pdGlhbFBhcmFtc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkRGF0YV09XCJjdXJyZW50U2VsZWN0ZWRcIj48L2NvbWJvYm94LWlucHV0LXJlbmRlcmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIndpdGhEZWxldGVPcHRpb24gJiYgaWQgJiYgKGlkICE9PSBkZWZhdWx0SWRWYWx1ZSlcIiB0eXBlPVwiYnV0dG9uXCIgI2RlbGV0ZUJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2xhYi1jb21iby1idXR0b24gYm9yZGVyLXJpZ2h0LTAgcm91bmRlZC0wIHt7ZGVsZXRlSWNvbkNsYXNzfX1cIiAoY2xpY2spPVwiZGVsZXRlVmFsdWVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJ3aXRoSWNvbiAmJiBpZFwiIGNsYXNzPVwic2xhYi1jb21iby1idXR0b24gYm9yZGVyLXJpZ2h0LTAgcm91bmRlZC0wIHt7aWNvbkNsYXNzfX1cIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJpY29uQ29sb3JcIiB0YWJpbmRleD1cIi0xXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwid2l0aEZhdm91cml0ZXMgJiYgaWQhPT1udWxsICYmICghaXNUcmVlIHx8IChpc1RyZWUgJiYgbGV2ZWwpKVwiICNmYXZvdXJpdGVCdXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInNsYWItY29tYm8tYnV0dG9uIHNsYWItY29tYm8tc3RhciBib3JkZXItcmlnaHQtMCByb3VuZGVkLTAgdGV4dC1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J2ljb24tc3Rhcic6IGlzRmF2b3VyaXRlLCAnaWNvbi1zdGFyLW8nOiAhaXNGYXZvdXJpdGUgfVwiIChjbGljayk9XCJkb1RvZ2dsZUZhdm91cml0ZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICB0YWJpbmRleD1cIi0xXCI+PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICNjb21ib2J1dHRvbiBjbGFzcz1cInNsYWItY29tYm8tYnV0dG9uIHNsYWItY29tYm8tYnV0dG9uLWljb25cIiBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAjZHJvcGRvd25tZW51IGNsYXNzPVwiZHJvcGRvd24tbWVudSBzbGFiLWNvbWJvLWRyb3Bkb3duXCIgKGNsaWNrKT1cImNsaWNrRHJvcERvd25NZW51KCRldmVudClcIlxuICAgICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGlzRGlzYWJsZWR9XCI+XG4gICAgICAgIDxkaXYgI2Ryb3Bkb3duIGlkPVwic2xhYi1jb21iby1kcm9wZG93bi1ib3hcIiBjbGFzcz1cInNsYWItY29tYm8tZHJvcGRvd24tYm94IGQtZmxleCBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlclwiIGNsYXNzPVwic2xhYi1maWx0ZXItY29udGFpbmVyXCIgW3N0eWxlLmZvbnQtZmFtaWx5XT1cImZvbnRGYW1pbHlcIlxuICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cImZvbnRTaXplXCIgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImZvbnRXZWlnaHRcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zdHlsZV09XCJmb250U3R5bGVcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJ3LTEwMCBib3JkZXIgcm91bmRlZFwiIFt2YWx1ZV09XCJmaWx0ZXJWYWx1ZVwiICNmaWx0ZXJJbnB1dCAoa2V5dXApPVwiZG9TZWFyY2goJGV2ZW50KVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2VsZWN0RGVzZWxlY3RBbGxcIiBjbGFzcz1cInNsYWItZmlsdGVyLWNvbnRhaW5lciBtYi0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctMTAwIHRleHQtY2VudGVyIGJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gdy01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvU2VsZWN0QWxsKClcIj57eydDT01NT05fU0VMRUNUX0FMTCcgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gdy01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvRGVzZWxlY3RBbGwoKVwiPnt7J0NPTU1PTl9ERVNFTEVDVF9BTEwnIHwgdHJhbnNsYXRlIHwgYXN5bmMgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAjaGlkZGVuIGNsYXNzPVwiaGVpZ2h0LWhpZGRlblwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNsYWItZmxleC0xIHBvc2l0aW9uLXJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgICAgPGFnLWdyaWQtYW5ndWxhciAqbmdJZj1cImlzRHJvcGRvd25PcGVuZWRcIiAjZ3JpZCBpZD1cImFnR3JpZFwiICNhZ0dyaWQgc3R5bGU9XCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1mYW1pbHldPVwiZm9udEZhbWlseVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuZm9udC1zaXplLnB4XT1cImZvbnRTaXplXCIgW3N0eWxlLmZvbnQtd2VpZ2h0XT1cImZvbnRXZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmZvbnQtc3R5bGVdPVwiZm9udFN0eWxlXCIgY2xhc3M9XCJhZy10aGVtZS1mcmVzaFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JpZE9wdGlvbnNdPVwiZ3JpZE9wdGlvbnNcIiAoc2VsZWN0aW9uQ2hhbmdlZCk9XCJvblNlbGVjdGlvbkNoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxVcGRhdGVkKT1cIm9uTW9kZWxVcGRhdGVkKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvd1NlbGVjdGVkKT1cIm9uUm93U2VsZWN0ZWQoJGV2ZW50KVwiIChncmlkUmVhZHkpPVwiZG9HcmlkUmVhZHkoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2VsbEtleURvd24pPVwib25DZWxsS2V5RG93bigkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPC9hZy1ncmlkLWFuZ3VsYXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImxpc3RTZWxlY3RlZFZhbHVlcyAmJiBtdWx0aXBsZVNlbGVjdGlvblwiPlxuICAgIDx1bCBjbGFzcz1cIm1sLTEgbXQtMiBtYi0wIHBsLTBcIiAqbmdJZj1cIm11bHRpcGxlU2VsZWN0ZWRJdGVtTGlzdC5sZW5ndGggPCA4XCI+XG4gICAgICAgIDxsaSBjbGFzcz1cInNsYWItY29tYm8tYmFkZ2UgYmFkZ2UgYmFkZ2UtcHJpbWFyeSBtci0xIHAtMlwiIHJvbGU9XCJiYWRnZVwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtdWx0aXBsZVNlbGVjdGVkSXRlbUxpc3RcIj48c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxvYXQtbGVmdCBtci0yXCI+e3tpdGVtLmRlc2NyaXB0aW9ufX08L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uIGRhdGEtZGlzbWlzcz1cImJhZGdlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwicmVtb3ZlSXRlbShpdGVtKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiXG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8dWwgY2xhc3M9XCJtbC0xIG10LTIgcGwtMFwiICpuZ0lmPVwibXVsdGlwbGVTZWxlY3RlZEl0ZW1MaXN0Lmxlbmd0aCA+IDdcIj5cbiAgICAgICAgPGxpIGNsYXNzPVwic2xhYi1jb21iby1iYWRnZSBiYWRnZSBiYWRnZS1wcmltYXJ5IG1yLTEgcC0yXCJcbiAgICAgICAgICAgIHJvbGU9XCJiYWRnZVwiPnt7J0NPTU1PTl9TRUxFQ1RFRF9JVEVNUycgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodFwiPnt7bXVsdGlwbGVTZWxlY3RlZEl0ZW1MaXN0Lmxlbmd0aH19PC9zcGFuPlxuICAgICAgICA8L2xpPlxuICAgIDwvdWw+XG48L2Rpdj5cbiJdfQ==