aril 0.1.46 → 0.1.48

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.
@@ -80,6 +80,7 @@ export class TableComponent {
80
80
  this.exportColumns = [];
81
81
  this.isColumnExpandMode = input(false);
82
82
  this.isResizableColumns = input(false);
83
+ this.isSortable = input(false);
83
84
  this.isInitialLoad = true;
84
85
  this.toggleExport = (event) => this.op.toggle(event);
85
86
  this.primengConfig.setTranslation(tranlations);
@@ -218,11 +219,11 @@ export class TableComponent {
218
219
  this.op?.hide();
219
220
  }
220
221
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableComponent, deps: [{ token: i1.HttpClient }, { token: i2.NonNullableFormBuilder }, { token: i3.PrimeNGConfig }, { token: i3.MessageService }, { token: i4.TranslocoService }, { token: i5.SelectionGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
221
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TableComponent, selector: "aril-table", inputs: { kebabMenuItems: { classPropertyName: "kebabMenuItems", publicName: "kebabMenuItems", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, checkboxSelection: { classPropertyName: "checkboxSelection", publicName: "checkboxSelection", isSignal: true, isRequired: false, transformFunction: null }, headerCheckboxSelection: { classPropertyName: "headerCheckboxSelection", publicName: "headerCheckboxSelection", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, proxy: { classPropertyName: "proxy", publicName: "proxy", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, tAlign: { classPropertyName: "tAlign", publicName: "tAlign", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showSearchTool: { classPropertyName: "showSearchTool", publicName: "showSearchTool", isSignal: true, isRequired: false, transformFunction: null }, showExportTool: { classPropertyName: "showExportTool", publicName: "showExportTool", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, noDataFoundLabel: { classPropertyName: "noDataFoundLabel", publicName: "noDataFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, tableHeader: { classPropertyName: "tableHeader", publicName: "tableHeader", isSignal: true, isRequired: false, transformFunction: null }, showTableHeader: { classPropertyName: "showTableHeader", publicName: "showTableHeader", isSignal: true, isRequired: false, transformFunction: null }, isFirstRowSelected: { classPropertyName: "isFirstRowSelected", publicName: "isFirstRowSelected", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, selectedRowsInput: { classPropertyName: "selectedRowsInput", publicName: "selectedRowsInput", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "isLazy", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, paginatorDropdownAppendTo: { classPropertyName: "paginatorDropdownAppendTo", publicName: "paginatorDropdownAppendTo", isSignal: true, isRequired: false, transformFunction: null }, isShowNoDataFoundMessage: { classPropertyName: "isShowNoDataFoundMessage", publicName: "isShowNoDataFoundMessage", isSignal: true, isRequired: false, transformFunction: null }, exportConfig: { classPropertyName: "exportConfig", publicName: "exportConfig", isSignal: true, isRequired: false, transformFunction: null }, isColumnExpandMode: { classPropertyName: "isColumnExpandMode", publicName: "isColumnExpandMode", isSignal: true, isRequired: false, transformFunction: null }, isResizableColumns: { classPropertyName: "isResizableColumns", publicName: "isResizableColumns", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageEvent: "onPageEvent", selectionEvent: "selectionEvent", lazyLoadEvent: "lazyLoadEvent" }, queries: [{ propertyName: "columns", predicate: TableColumnComponent }], viewQueries: [{ propertyName: "op", first: true, predicate: OverlayPanel, descendants: true }, { propertyName: "tableRef", first: true, predicate: Table, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"paginator()\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand': ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\">\r\n\t<!--@if (tableHeader() || showSearchTool() || showExportTool()) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"flex space-between\">\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t@if (tableHeader().length) {\r\n\t\t\t\t\t\t<div class=\"table-header\">\r\n\t\t\t\t\t\t\t{{ tableHeader() }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t<div class=\"flex justify-content-end align-items-center\">\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\t\t\t\ticonPos=\"left\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Arama\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"filterText\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"ref.filterGlobal($event.target.value, 'contains')\">\r\n\t\t\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_EXCEL\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"XLS\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"excelExport()\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_PDF\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"PDF\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"exportPdf()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (data() && kebabMenuItems.length > 0 ) {\r\n\t\t\t\t\t\t\t<div tools style=\"padding: 4px;margin-left: 4px;border:1px solid #6366f1;border-radius: 6px;background-color: #6366f1; color: white;\" >\r\n\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t[attr.role]=\"'none'\"\r\n\t\t\t\t\t\t\t\t\tclass=\"pi mr-1 header-icon pi-ellipsis-v\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"bulkOperations.toggle($event);\"></i>\r\n\t\t\t\t\t\t\t\t<p-menu\r\n\t\t\t\t\t\t\t\t\t#bulkOperations\r\n\t\t\t\t\t\t\t\t\t[popup]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[model]=\"kebabMenuItems\"\r\n\t\t\t\t\t\t\t\t\tstyleClass=\"z-index: 9998899;\"\r\n\t\t\t\t\t\t\t\t\tappendTo=\"body\"></p-menu>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}-->\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" style=\"min-width:170px\">\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\r\n\t\t@if (selectionMode()) {\r\n\t\t\t<tr [pSelectableRow]=\"item\">\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : '#fff' }\">\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<p-overlayPanel styleClass=\"export-overlay-panel\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Export Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button class=\"col-12\" label=\"Export\" color=\"primary\" (clickEvent)=\"export()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}\n"], dependencies: [{ kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i7.ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "outlined", "badge", "size", "icon", "color"], outputs: ["clickEvent"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i8.CheckboxComponent, selector: "aril-checkbox[ngModel], aril-checkbox[formControl], aril-checkbox[formControlName]", inputs: ["label", "tabindex"] }, { kind: "component", type: i9.FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i12.OrderList, selector: "p-orderList", inputs: ["header", "style", "styleClass", "tabindex", "ariaLabel", "ariaLabelledBy", "listStyle", "responsive", "filterBy", "filterPlaceholder", "filterLocale", "metaKeySelection", "dragdrop", "controlsPosition", "ariaFilterLabel", "filterMatchMode", "breakpoint", "stripedRows", "disabled", "trackBy", "selection", "value"], outputs: ["selectionChange", "onReorder", "onSelectionChange", "onFilterEvent", "onFocus", "onBlur"] }, { kind: "component", type: i13.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i14.RadioButtonComponent, selector: "aril-radio-button[ngModel], aril-radio-button[formControl], aril-radio-button[formControlName]", inputs: ["options", "tabindex", "align"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i15.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i15.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i15.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i15.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: i15.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i15.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i15.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i16.TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }] }); }
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: TableComponent, selector: "aril-table", inputs: { kebabMenuItems: { classPropertyName: "kebabMenuItems", publicName: "kebabMenuItems", isSignal: false, isRequired: false, transformFunction: null }, expandableFields: { classPropertyName: "expandableFields", publicName: "expandableFields", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, checkboxSelection: { classPropertyName: "checkboxSelection", publicName: "checkboxSelection", isSignal: true, isRequired: false, transformFunction: null }, headerCheckboxSelection: { classPropertyName: "headerCheckboxSelection", publicName: "headerCheckboxSelection", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, proxy: { classPropertyName: "proxy", publicName: "proxy", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, tAlign: { classPropertyName: "tAlign", publicName: "tAlign", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showSearchTool: { classPropertyName: "showSearchTool", publicName: "showSearchTool", isSignal: true, isRequired: false, transformFunction: null }, showExportTool: { classPropertyName: "showExportTool", publicName: "showExportTool", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, noDataFoundLabel: { classPropertyName: "noDataFoundLabel", publicName: "noDataFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, tableHeader: { classPropertyName: "tableHeader", publicName: "tableHeader", isSignal: true, isRequired: false, transformFunction: null }, showTableHeader: { classPropertyName: "showTableHeader", publicName: "showTableHeader", isSignal: true, isRequired: false, transformFunction: null }, isFirstRowSelected: { classPropertyName: "isFirstRowSelected", publicName: "isFirstRowSelected", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, selectedRowsInput: { classPropertyName: "selectedRowsInput", publicName: "selectedRowsInput", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "isLazy", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, paginatorDropdownAppendTo: { classPropertyName: "paginatorDropdownAppendTo", publicName: "paginatorDropdownAppendTo", isSignal: true, isRequired: false, transformFunction: null }, isShowNoDataFoundMessage: { classPropertyName: "isShowNoDataFoundMessage", publicName: "isShowNoDataFoundMessage", isSignal: true, isRequired: false, transformFunction: null }, exportConfig: { classPropertyName: "exportConfig", publicName: "exportConfig", isSignal: true, isRequired: false, transformFunction: null }, isColumnExpandMode: { classPropertyName: "isColumnExpandMode", publicName: "isColumnExpandMode", isSignal: true, isRequired: false, transformFunction: null }, isResizableColumns: { classPropertyName: "isResizableColumns", publicName: "isResizableColumns", isSignal: true, isRequired: false, transformFunction: null }, isSortable: { classPropertyName: "isSortable", publicName: "isSortable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageEvent: "onPageEvent", selectionEvent: "selectionEvent", lazyLoadEvent: "lazyLoadEvent" }, queries: [{ propertyName: "columns", predicate: TableColumnComponent }], viewQueries: [{ propertyName: "op", first: true, predicate: OverlayPanel, descendants: true }, { propertyName: "tableRef", first: true, predicate: Table, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"paginator()\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand': ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\">\r\n\t<!--@if (tableHeader() || showSearchTool() || showExportTool()) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"flex space-between\">\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t@if (tableHeader().length) {\r\n\t\t\t\t\t\t<div class=\"table-header\">\r\n\t\t\t\t\t\t\t{{ tableHeader() }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t<div class=\"flex justify-content-end align-items-center\">\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\t\t\t\ticonPos=\"left\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Arama\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"filterText\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"ref.filterGlobal($event.target.value, 'contains')\">\r\n\t\t\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_EXCEL\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"XLS\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"excelExport()\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_PDF\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"PDF\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"exportPdf()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (data() && kebabMenuItems.length > 0 ) {\r\n\t\t\t\t\t\t\t<div tools style=\"padding: 4px;margin-left: 4px;border:1px solid #6366f1;border-radius: 6px;background-color: #6366f1; color: white;\" >\r\n\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t[attr.role]=\"'none'\"\r\n\t\t\t\t\t\t\t\t\tclass=\"pi mr-1 header-icon pi-ellipsis-v\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"bulkOperations.toggle($event);\"></i>\r\n\t\t\t\t\t\t\t\t<p-menu\r\n\t\t\t\t\t\t\t\t\t#bulkOperations\r\n\t\t\t\t\t\t\t\t\t[popup]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[model]=\"kebabMenuItems\"\r\n\t\t\t\t\t\t\t\t\tstyleClass=\"z-index: 9998899;\"\r\n\t\t\t\t\t\t\t\t\tappendTo=\"body\"></p-menu>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}-->\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@else if (isSortable()){\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" style=\"min-width:170px\">\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<th [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" style=\"min-width:170px\">\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\r\n\t\t@if (selectionMode()) {\r\n\t\t\t<tr [pSelectableRow]=\"item\">\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : '#fff' }\">\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<p-overlayPanel styleClass=\"export-overlay-panel\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Export Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button class=\"col-12\" label=\"Export\" color=\"primary\" (clickEvent)=\"export()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}\n"], dependencies: [{ kind: "component", type: i6.FormComponent, selector: "aril-form", inputs: ["formGroup"] }, { kind: "component", type: i7.ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "outlined", "badge", "size", "icon", "color"], outputs: ["clickEvent"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i8.CheckboxComponent, selector: "aril-checkbox[ngModel], aril-checkbox[formControl], aril-checkbox[formControlName]", inputs: ["label", "tabindex"] }, { kind: "component", type: i9.FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i11.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i12.OrderList, selector: "p-orderList", inputs: ["header", "style", "styleClass", "tabindex", "ariaLabel", "ariaLabelledBy", "listStyle", "responsive", "filterBy", "filterPlaceholder", "filterLocale", "metaKeySelection", "dragdrop", "controlsPosition", "ariaFilterLabel", "filterMatchMode", "breakpoint", "stripedRows", "disabled", "trackBy", "selection", "value"], outputs: ["selectionChange", "onReorder", "onSelectionChange", "onFilterEvent", "onFocus", "onBlur"] }, { kind: "component", type: i13.OverlayPanel, selector: "p-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "component", type: i14.RadioButtonComponent, selector: "aril-radio-button[ngModel], aril-radio-button[formControl], aril-radio-button[formControlName]", inputs: ["options", "tabindex", "align"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i15.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i15.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i15.SelectableRow, selector: "[pSelectableRow]", inputs: ["pSelectableRow", "pSelectableRowIndex", "pSelectableRowDisabled"] }, { kind: "directive", type: i15.ResizableColumn, selector: "[pResizableColumn]", inputs: ["pResizableColumnDisabled"] }, { kind: "component", type: i15.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i15.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i15.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i16.TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }] }); }
222
223
  }
223
224
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TableComponent, decorators: [{
224
225
  type: Component,
225
- args: [{ selector: 'aril-table', template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"paginator()\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand': ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\">\r\n\t<!--@if (tableHeader() || showSearchTool() || showExportTool()) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"flex space-between\">\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t@if (tableHeader().length) {\r\n\t\t\t\t\t\t<div class=\"table-header\">\r\n\t\t\t\t\t\t\t{{ tableHeader() }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t<div class=\"flex justify-content-end align-items-center\">\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\t\t\t\ticonPos=\"left\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Arama\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"filterText\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"ref.filterGlobal($event.target.value, 'contains')\">\r\n\t\t\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_EXCEL\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"XLS\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"excelExport()\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_PDF\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"PDF\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"exportPdf()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (data() && kebabMenuItems.length > 0 ) {\r\n\t\t\t\t\t\t\t<div tools style=\"padding: 4px;margin-left: 4px;border:1px solid #6366f1;border-radius: 6px;background-color: #6366f1; color: white;\" >\r\n\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t[attr.role]=\"'none'\"\r\n\t\t\t\t\t\t\t\t\tclass=\"pi mr-1 header-icon pi-ellipsis-v\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"bulkOperations.toggle($event);\"></i>\r\n\t\t\t\t\t\t\t\t<p-menu\r\n\t\t\t\t\t\t\t\t\t#bulkOperations\r\n\t\t\t\t\t\t\t\t\t[popup]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[model]=\"kebabMenuItems\"\r\n\t\t\t\t\t\t\t\t\tstyleClass=\"z-index: 9998899;\"\r\n\t\t\t\t\t\t\t\t\tappendTo=\"body\"></p-menu>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}-->\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" style=\"min-width:170px\">\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\r\n\t\t@if (selectionMode()) {\r\n\t\t\t<tr [pSelectableRow]=\"item\">\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : '#fff' }\">\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<p-overlayPanel styleClass=\"export-overlay-panel\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Export Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button class=\"col-12\" label=\"Export\" color=\"primary\" (clickEvent)=\"export()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}\n"] }]
226
+ args: [{ selector: 'aril-table', template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"paginator()\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t[(selection)]=\"selectedRows\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t(selectionChange)=\"selectionEvent.emit(selectedRows)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\t[selectionMode]=\"selectionMode()\"\r\n\t[columnResizeMode]=\"isColumnExpandMode() ? 'expand': ''\"\r\n\t[resizableColumns]=\"isResizableColumns()\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\"\r\n\t[paginatorDropdownAppendTo]=\"paginatorDropdownAppendTo()\">\r\n\t<!--@if (tableHeader() || showSearchTool() || showExportTool()) {\r\n\t\t<ng-template pTemplate=\"caption\">\r\n\t\t\t<div class=\"flex space-between\">\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t@if (tableHeader().length) {\r\n\t\t\t\t\t\t<div class=\"table-header\">\r\n\t\t\t\t\t\t\t{{ tableHeader() }}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div style=\"flex: auto\">\r\n\t\t\t\t\t<div class=\"flex justify-content-end align-items-center\">\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-text\r\n\t\t\t\t\t\t\t\ticon=\"SEARCH\"\r\n\t\t\t\t\t\t\t\ticonPos=\"left\"\r\n\t\t\t\t\t\t\t\tplaceholder=\"Arama\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"filterText\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"ref.filterGlobal($event.target.value, 'contains')\">\r\n\t\t\t\t\t\t\t</aril-text>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (false) {\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_EXCEL\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"XLS\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"excelExport()\"\r\n\t\t\t\t\t\t\t\tclass=\"mr-1\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t\t<aril-button\r\n\t\t\t\t\t\t\t\tsize=\"sm\"\r\n\t\t\t\t\t\t\t\ticon=\"FILE_PDF\"\r\n\t\t\t\t\t\t\t\tcolor=\"primary\"\r\n\t\t\t\t\t\t\t\tpTooltip=\"PDF\"\r\n\t\t\t\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t\t\t\t(clickEvent)=\"exportPdf()\">\r\n\t\t\t\t\t\t\t</aril-button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (data() && kebabMenuItems.length > 0 ) {\r\n\t\t\t\t\t\t\t<div tools style=\"padding: 4px;margin-left: 4px;border:1px solid #6366f1;border-radius: 6px;background-color: #6366f1; color: white;\" >\r\n\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t[attr.role]=\"'none'\"\r\n\t\t\t\t\t\t\t\t\tclass=\"pi mr-1 header-icon pi-ellipsis-v\"\r\n\t\t\t\t\t\t\t\t\t(click)=\"bulkOperations.toggle($event);\"></i>\r\n\t\t\t\t\t\t\t\t<p-menu\r\n\t\t\t\t\t\t\t\t\t#bulkOperations\r\n\t\t\t\t\t\t\t\t\t[popup]=\"true\"\r\n\t\t\t\t\t\t\t\t\t[model]=\"kebabMenuItems\"\r\n\t\t\t\t\t\t\t\t\tstyleClass=\"z-index: 9998899;\"\r\n\t\t\t\t\t\t\t\t\tappendTo=\"body\"></p-menu>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</ng-template>\r\n\t}-->\r\n\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t<th>\r\n\t\t\t\t\t@if (headerCheckboxSelection()) {\r\n\t\t\t\t\t\t<p-tableHeaderCheckbox></p-tableHeaderCheckbox>\r\n\t\t\t\t\t}\r\n\t\t\t\t</th>\r\n\t\t\t}\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\r\n\t\t\t\t\t@if (isResizableColumns()) {\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" pResizableColumn>\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@else if (isSortable()){\r\n\t\t\t\t\t\t<th [pSortableColumn]=\"column.field()\" [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" style=\"min-width:170px\">\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<th [ngStyle]=\"{'width': column.width() ? column.width() : 'auto'}\" style=\"min-width:170px\">\r\n\t\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"color: green; padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-info-circle\"\r\n\t\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</th>\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\r\n\t\t@if (selectionMode()) {\r\n\t\t\t<tr [pSelectableRow]=\"item\">\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t} @else {\r\n\t\t\t<tr [ngStyle]=\"{ 'background-color': item?.rowColor ? item?.rowColor : '#fff' }\">\r\n\t\t\t\t@if (checkboxSelection()) {\r\n\t\t\t\t\t<td>\r\n\t\t\t\t\t\t<p-tableCheckbox [value]=\"item\"></p-tableCheckbox>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[item]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t}\r\n\t\t\t</tr>\r\n\t\t}\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n\r\n<p-overlayPanel styleClass=\"export-overlay-panel\">\r\n\t@if (exportForm) {\r\n\t\t<aril-form [formGroup]=\"exportForm\" class=\"w-20rem\">\r\n\t\t\t<aril-field [label]=\"'Export Tipi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-radio-button formControlName=\"exportType\" [options]=\"exportTypeOptions\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<aril-field [label]=\"'Dosya \u0130smi'\" [cols]=\"{ default: 12 }\">\r\n\t\t\t\t<aril-text class=\"w-full\" formControlName=\"exportLabel\" />\r\n\t\t\t</aril-field>\r\n\r\n\t\t\t<ng-container formArrayName=\"columns\">\r\n\t\t\t\t<p-orderList\r\n\t\t\t\t\t#orderListRef\r\n\t\t\t\t\tclass=\"col-12\"\r\n\t\t\t\t\t[value]=\"exportForm.controls.columns.controls\"\r\n\t\t\t\t\t[listStyle]=\"{ 'max-height': '20rem' }\"\r\n\t\t\t\t\tfilterBy=\"value.title\">\r\n\t\t\t\t\t<ng-template pTemplate=\"filter\">\r\n\t\t\t\t\t\t<div class=\"flex align-items-center gap-3\">\r\n\t\t\t\t\t\t\t<aril-checkbox\r\n\t\t\t\t\t\t\t\t[label]=\"''\"\r\n\t\t\t\t\t\t\t\t[ngModel]=\"isAllSelected\"\r\n\t\t\t\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\r\n\t\t\t\t\t\t\t\t(ngModelChange)=\"onSelectAll($event)\" />\r\n\r\n\t\t\t\t\t\t\t<div class=\"p-orderlist-filter\" [attr.data-pc-section]=\"'filter'\">\r\n\t\t\t\t\t\t\t\t<input\r\n\t\t\t\t\t\t\t\t\t#filter\r\n\t\t\t\t\t\t\t\t\ttype=\"text\"\r\n\t\t\t\t\t\t\t\t\trole=\"textbox\"\r\n\t\t\t\t\t\t\t\t\t(keyup)=\"orderListRef.onFilterKeyup($event)\"\r\n\t\t\t\t\t\t\t\t\t[disabled]=\"orderListRef.disabled\"\r\n\t\t\t\t\t\t\t\t\tclass=\"p-orderlist-filter-input p-inputtext p-component\" />\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t<ng-template let-col pTemplate=\"item\">\r\n\t\t\t\t\t\t<aril-checkbox [label]=\"col.value.title\" [formControl]=\"col.controls.checked\" />\r\n\t\t\t\t\t</ng-template>\r\n\t\t\t\t</p-orderList>\r\n\t\t\t</ng-container>\r\n\r\n\t\t\t<aril-button class=\"col-12\" label=\"Export\" color=\"primary\" (clickEvent)=\"export()\" />\r\n\t\t</aril-form>\r\n\t}\r\n</p-overlayPanel>\r\n", styles: ["::ng-deep aril-table th{min-width:0px!important}\n"] }]
226
227
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.NonNullableFormBuilder }, { type: i3.PrimeNGConfig }, { type: i3.MessageService }, { type: i4.TranslocoService }, { type: i5.SelectionGroupService }], propDecorators: { onPageEvent: [{
227
228
  type: Output
228
229
  }], selectionEvent: [{
@@ -240,5 +241,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
240
241
  args: [Table]
241
242
  }], kebabMenuItems: [{
242
243
  type: Input
244
+ }], expandableFields: [{
245
+ type: Input
243
246
  }] } });
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNSLGNBQWMsRUFDZCxJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFVBQVUsRUFDVixPQUFPLEVBQ1AsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUt2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JDLE9BQU8sRUFBMEUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xILE9BQU8sRUFBYyxvQkFBb0IsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFGOzs7OztHQUtHO0FBQ0gs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QUU7c0JBQTFCLFNBQVM7dUJBQUMsWUFBWTtnQkFDTCxRQUFRO3NCQUF6QixTQUFTO3VCQUFDLEtBQUs7Z0JBQ1AsY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgZWZmZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IE92ZXJsYXlQYW5lbCB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuXHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQge1xyXG5cdGNhdGNoRXJyb3IsXHJcblx0Y29uY2F0TWFwLFxyXG5cdGZpbHRlcixcclxuXHRmaW5hbGl6ZSxcclxuXHRmaXJzdFZhbHVlRnJvbSxcclxuXHRmcm9tLFxyXG5cdGludGVydmFsLFxyXG5cdG1hcCxcclxuXHRzd2l0Y2hNYXAsXHJcblx0dGFrZSxcclxuXHR0aHJvd0Vycm9yLFxyXG5cdHRvQXJyYXlcclxufSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEFQSV9DT05GSUdTIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBQcm94eVR5cGVzIH0gZnJvbSAnYXJpbC9odHRwJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnYXJpbC90aGVtZS9sYXlvdXQnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IHRyYW5sYXRpb25zIH0gZnJvbSAnLi9pMThuJztcclxuaW1wb3J0IHsgQ29sRm9ybSwgQ29sdW1uRmllbGRWYWx1ZU1hcCwgRXhwb3J0Rm9ybSwgRXhwb3J0T3B0aW9ucywgRXhwb3J0UmVxdWVzdCwgRXhwb3J0VHlwZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEFsaWduVHlwZXMsIFRhYmxlQ29sdW1uQ29tcG9uZW50LCBUYWJsZUNvbHVtbnMgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5cclxuLyogVE9ETyA6XHJcbiAqIHNlcnZlci1zaWRlLXByb3h5IChQcm94eVR5cGVzLlNlcnZlclNpZGUpXHJcbiAqIHNlYXJjaCAmIGNvbHVtIGZpbHRlciAmIHNvcnRcclxuICogcGFnaW5hdGlvbiBvcGVyYXRpb25cclxuICogUXVlcnkgU2lnbmFsc1xyXG4gKi9cclxuY29uc3QgcGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSBhcyBjb25zdDtcclxuXHJcbnR5cGUgU2VsZWN0aW9uVHlwZXMgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XHJcblxyXG5pbnRlcmZhY2UgSUtlYmFiTWVudUl0ZW0ge1xyXG5cdGljb246IHN0cmluZztcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdG9uQ2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcmlsLXRhYmxlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IHtcclxuXHRAT3V0cHV0KCkgb25QYWdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIHNlbGVjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBsYXp5TG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBDb250ZW50Q2hpbGRyZW4oVGFibGVDb2x1bW5Db21wb25lbnQpIGNvbHVtbnMhOiBUYWJsZUNvbHVtbnM7XHJcblx0QFZpZXdDaGlsZChPdmVybGF5UGFuZWwpIG9wITogT3ZlcmxheVBhbmVsO1xyXG5cdEBWaWV3Q2hpbGQoVGFibGUpIHRhYmxlUmVmITogVGFibGU7XHJcblx0QElucHV0KCkga2ViYWJNZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcblx0ZGF0YSA9IGlucHV0LnJlcXVpcmVkPGFueVtdPigpO1xyXG5cdGNoZWNrYm94U2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuXHRoZWFkZXJDaGVja2JveFNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XHJcblx0cGFnZVNpemUgPSBpbnB1dDwodHlwZW9mIHBhZ2VPcHRpb25zKVtudW1iZXJdPigxMCk7XHJcblx0cHJveHkgPSBpbnB1dDxQcm94eVR5cGVzPihQcm94eVR5cGVzLk5hdGl2ZSk7XHJcblx0c2hvd0Zvb3RlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHR0QWxpZ24gPSBpbnB1dDxBbGlnblR5cGVzPignbGVmdCcpO1xyXG5cdHNlbGVjdGlvbk1vZGUgPSBpbnB1dDxTZWxlY3Rpb25UeXBlcz4oKTtcclxuXHRzaG93U2VhcmNoVG9vbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdHNob3dFeHBvcnRUb29sID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0ZXhwb3J0RmlsZU5hbWUgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRub0RhdGFGb3VuZExhYmVsID0gaW5wdXQ8c3RyaW5nPignTm8gRGF0YSBGb3VuZCcpO1xyXG5cdHRhYmxlSGVhZGVyID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2hvd1RhYmxlSGVhZGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzRmlyc3RSb3dTZWxlY3RlZCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRkYXRhS2V5ID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0c2VsZWN0ZWRSb3dzSW5wdXQgPSBpbnB1dDxhbnk+KFtdKTtcclxuXHRpc0xhenkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dG90YWxSZWNvcmRzID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHRwYWdpbmF0b3IgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRwYWdpbmF0b3JEcm9wZG93bkFwcGVuZFRvID0gaW5wdXQ8c3RyaW5nPignYm9keScpOyAvLyAnYm9keSd8ICdteURpdidcclxuXHJcblx0aXNTaG93Tm9EYXRhRm91bmRNZXNzYWdlID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0LyoqXHJcblx0ICogQHNlZSB7QGxpbmsgRXhwb3J0T3B0aW9uc31cclxuXHQgKi9cclxuXHRleHBvcnRDb25maWcgPSBpbnB1dDxFeHBvcnRPcHRpb25zPigpO1xyXG5cclxuXHRleHBvcnRGb3JtITogRm9ybUdyb3VwPEV4cG9ydEZvcm0+O1xyXG5cdGV4cG9ydFR5cGVPcHRpb25zID0gW1xyXG5cdFx0eyBrZXk6IEV4cG9ydFR5cGUuRXhjZWwsIGxhYmVsOiAnRXhjZWwnLCBmaWxlRXh0ZW5zaW9uOiAnLnhsc3gnIH0sXHJcblx0XHR7IGtleTogRXhwb3J0VHlwZS5Dc3YsIGxhYmVsOiAnQ3N2JywgZmlsZUV4dGVuc2lvbjogJy5jc3YnIH1cclxuXHRdO1xyXG5cclxuXHRmaWx0ZXJUZXh0ITogc3RyaW5nO1xyXG5cdGlzQWxsU2VsZWN0ZWQgPSB0cnVlO1xyXG5cdHNlbGVjdGVkUm93czogYW55O1xyXG5cdHBhZ2VPcHRpb25zID0gcGFnZU9wdGlvbnM7XHJcblx0ZXhwb3J0Q29sdW1uczogQXJyYXk8eyB0aXRsZTogc3RyaW5nOyBkYXRhS2V5OiBzdHJpbmcgfT4gPSBbXTtcclxuXHRpc0NvbHVtbkV4cGFuZE1vZGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aXNSZXNpemFibGVDb2x1bW5zID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuXHRcdHByaXZhdGUgZmI6IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXHJcblx0XHRwcml2YXRlIHByaW1lbmdDb25maWc6IFByaW1lTkdDb25maWcsXHJcblx0XHRwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgc2VsZWN0aW9uR3JvdXBTZXJ2aWNlOiBTZWxlY3Rpb25Hcm91cFNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih0cmFubGF0aW9ucyk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuaXNGaXJzdFJvd1NlbGVjdGVkKCkgJiYgdGhpcy5kYXRhKCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuZGF0YSgpWzBdO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0aW9uRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkUm93c0lucHV0KCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5wdXQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuZXhwb3J0Q29uZmlnKCkpIHtcclxuXHRcdFx0XHR0aGlzLmNyZWF0ZUV4cG9ydEZvcm0oKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGlzSW5pdGlhbExvYWQgPSB0cnVlO1xyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAoY2hhbmdlc1snZGF0YSddICYmIGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ2RhdGEnXS5wcmV2aW91c1ZhbHVlKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzSW5pdGlhbExvYWQpIHtcclxuXHRcdFx0XHR0aGlzLmlzSW5pdGlhbExvYWQgPSBmYWxzZTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNvbnN0IGN1cnJlbnREYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuXHRcdFx0aWYgKHRoaXMuaXNTaG93Tm9EYXRhRm91bmRNZXNzYWdlKCkgJiYgIWN1cnJlbnREYXRhPy5sZW5ndGgpIHtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0XHRzZXZlcml0eTogJ2luZm8nLFxyXG5cdFx0XHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMubm9EYXRhVG9EaXNwbGF5JyksXHJcblx0XHRcdFx0XHRrZXk6ICd0b2FzdC1yb290J1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNyZWF0ZUV4cG9ydEZvcm0oKTogdm9pZCB7XHJcblx0XHRjb25zdCB7IGV4cG9ydExhYmVsIH0gPSB0aGlzLmV4cG9ydENvbmZpZygpITtcclxuXHJcblx0XHR0aGlzLmV4cG9ydEZvcm0gPSB0aGlzLmZiLmdyb3VwPEV4cG9ydEZvcm0+KHtcclxuXHRcdFx0ZXhwb3J0VHlwZTogdGhpcy5mYi5jb250cm9sKEV4cG9ydFR5cGUuRXhjZWwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG5cdFx0XHRleHBvcnRMYWJlbDogdGhpcy5mYi5jb250cm9sKGV4cG9ydExhYmVsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuXHRcdFx0Y29sdW1uczogdGhpcy5mYi5hcnJheTxGb3JtR3JvdXA8Q29sRm9ybT4+KFtdKVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5jb2x1bW5zLl9yZXN1bHRzXHJcblx0XHRcdC5maWx0ZXIoKGNvbCkgPT4gY29sLnR5cGUoKSAhPT0gJ29wZXJhdGlvbnMnKVxyXG5cdFx0XHQuZmlsdGVyKChjb2wpID0+IHtcclxuXHRcdFx0XHRjb25zdCBleHBvcnRDb25maWcgPSB0aGlzLmV4cG9ydENvbmZpZygpO1xyXG5cdFx0XHRcdGNvbnN0IGV4Y2x1ZGVkRmllbGRzID0gZXhwb3J0Q29uZmlnPy5leGNsdWRlZEZpZWxkcyA/PyBbXTtcclxuXHJcblx0XHRcdFx0cmV0dXJuICFleGNsdWRlZEZpZWxkcy5pbmNsdWRlcyhjb2wuZmllbGQoKSk7XHJcblx0XHRcdH0pXHJcblx0XHRcdC5mb3JFYWNoKChjb2wpID0+IHtcclxuXHRcdFx0XHRjb25zdCBjb2xHcm91cCA9IHRoaXMuZmIuZ3JvdXA8Q29sRm9ybT4oe1xyXG5cdFx0XHRcdFx0Y2hlY2tlZDogdGhpcy5mYi5jb250cm9sKHRydWUpLFxyXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZmIuY29udHJvbChjb2wuaGVhZGVyKCkpLFxyXG5cdFx0XHRcdFx0ZGF0YUtleTogdGhpcy5mYi5jb250cm9sKGNvbC5maWVsZCgpKVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHR0aGlzLmV4cG9ydEZvcm0uY29udHJvbHMuY29sdW1ucy5wdXNoKGNvbEdyb3VwKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5leHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodCkgPT4gKHRoaXMuaXNBbGxTZWxlY3RlZCA9IHQuZXZlcnkoKGEpID0+IGEuY2hlY2tlZCkpKTtcclxuXHR9XHJcblxyXG5cdGdldCBob3N0VXJsKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gYCR7Z2xvYmFsVGhpcy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7Z2xvYmFsVGhpcy5sb2NhdGlvbi5ob3N0fS9odG1sL2A7XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBvcnQoKSB7XHJcblx0XHRjb25zdCB7IGV4cG9ydFR5cGUsIGV4cG9ydExhYmVsLCBjb2x1bW5zIH0gPSB0aGlzLmV4cG9ydEZvcm0udmFsdWU7XHJcblx0XHRjb25zdCB7IHJvdXRlLCBwYXJhbXMsIGNvbHVtbkZpZWxkVmFsdWVNYXAsIGRhdGVDb2x1bW5Gb3JtYXRNYXAsIGNvbXB1dGVkQ29sdW1uTWFwIH0gPSB0aGlzLmV4cG9ydENvbmZpZygpITtcclxuXHJcblx0XHRjb25zdCBjaGVja2VkQ29sdW1ucyA9IGNvbHVtbnMhLmZpbHRlcigodCkgPT4gdC5jaGVja2VkKTtcclxuXHRcdGNvbnN0IGZpbGVFeHRlbnNpb24gPSB0aGlzLmV4cG9ydFR5cGVPcHRpb25zLmZpbmQoKHQpID0+IHQua2V5ID09PSBleHBvcnRUeXBlKT8uZmlsZUV4dGVuc2lvbjtcclxuXHJcblx0XHRsZXQgY29sdW1uRmllbGRWYWx1ZU1hcE9iajogQ29sdW1uRmllbGRWYWx1ZU1hcCB8IHVuZGVmaW5lZDtcclxuXHJcblx0XHRpZiAoY29sdW1uRmllbGRWYWx1ZU1hcCkge1xyXG5cdFx0XHRjb25zdCB0ZW1wT2JqID0ge30gYXMgQ29sdW1uRmllbGRWYWx1ZU1hcDtcclxuXHJcblx0XHRcdGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHRcdGZyb20oT2JqZWN0LmVudHJpZXMoY29sdW1uRmllbGRWYWx1ZU1hcCkpLnBpcGUoXHJcblx0XHRcdFx0XHRjb25jYXRNYXAoKFtmaWVsZE5hbWUsIHZhbHVlXSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0IXRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpW2Ake3ZhbHVlLmdyb3VwTmFtZX1+JHt2YWx1ZS5wYXJlbnRTZWxlY3Rpb25LZXkgPz8gJ0FMTCd9YF1cclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuZmV0Y2hFbnVtKHZhbHVlLmdyb3VwTmFtZSwgdmFsdWUucGFyZW50U2VsZWN0aW9uS2V5KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Y29uc3Qga2V5ID0gdmFsdWUuZ3JvdXBOYW1lICsgJ34nICsgKHZhbHVlLnBhcmVudFNlbGVjdGlvbktleSA/PyAnQUxMJyk7XHJcblxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gaW50ZXJ2YWwoMTApLnBpcGUoXHJcblx0XHRcdFx0XHRcdFx0ZmlsdGVyKCgpID0+ICF0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5pc0xvYWRpbmcoa2V5KSksXHJcblx0XHRcdFx0XHRcdFx0dGFrZSgxKSxcclxuXHRcdFx0XHRcdFx0XHRtYXAoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSB0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5zZWxlY3Rpb25Hcm91cHMoKVtrZXldO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNlbGVjdGlvbkdyb3VwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRlbXBPYmpbZmllbGROYW1lXSA9IHNlbGVjdGlvbkdyb3VwLnNlbGVjdGlvbkl0ZW1zLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBpdGVtKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0YWNjW2l0ZW0uc2VsZWN0aW9uS2V5XSA9IGl0ZW0uc2VsZWN0aW9uRGlzcGxheTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0sIHt9KSBhcyBhbnk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0dG9BcnJheSgpLFxyXG5cdFx0XHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb2x1bW5GaWVsZFZhbHVlTWFwT2JqID0gdGVtcE9iajtcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHJlcXVlc3Q6IEV4cG9ydFJlcXVlc3QgPSB7XHJcblx0XHRcdHJvdXRlOiByb3V0ZSEsXHJcblx0XHRcdHBhcmFtczogcGFyYW1zISxcclxuXHRcdFx0ZXhwb3J0VHlwZTogZXhwb3J0VHlwZSEsXHJcblx0XHRcdGV4cG9ydExhYmVsOiBleHBvcnRMYWJlbCEsXHJcblx0XHRcdGNvbXB1dGVkQ29sdW1uTWFwOiBjb21wdXRlZENvbHVtbk1hcCEsXHJcblx0XHRcdGRhdGVDb2x1bW5Gb3JtYXRNYXA6IGRhdGVDb2x1bW5Gb3JtYXRNYXAhLFxyXG5cdFx0XHRjb2x1bW5GaWVsZFZhbHVlTWFwOiBjb2x1bW5GaWVsZFZhbHVlTWFwT2JqISxcclxuXHRcdFx0aGVhZGVyTmFtZXM6IGNoZWNrZWRDb2x1bW5zLm1hcCgoY29sKSA9PiBjb2wudGl0bGUhKSxcclxuXHRcdFx0b3V0cHV0RmllbGRzOiBjaGVja2VkQ29sdW1ucy5tYXAoKGNvbCkgPT4gY29sLmRhdGFLZXkhKVxyXG5cdFx0fTtcclxuXHJcblx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHR0aGlzLmh0dHAucG9zdDx7IHN1Y2Nlc3M6IGJvb2xlYW47IHVybDogc3RyaW5nIH0+KEFQSV9DT05GSUdTLmFwaSArICcvYmF0Y2gtZXhwb3J0ZXJzL2V4cG9ydCcsIHJlcXVlc3QpLnBpcGUoXHJcblx0XHRcdFx0c3dpdGNoTWFwKChyZXMpID0+XHJcblx0XHRcdFx0XHR0aGlzLmh0dHAuZ2V0KEFQSV9DT05GSUdTLmFwaSArICcvYnVja2V0LW9iamVjdHMvZG93bmxvYWQnLCB7XHJcblx0XHRcdFx0XHRcdHBhcmFtczogeyB1cmw6IHJlcy51cmwgfSxcclxuXHRcdFx0XHRcdFx0cmVzcG9uc2VUeXBlOiAnYmxvYidcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KSxcclxuXHRcdFx0XHRjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGVycm9yLnN0YXR1cyA9PT0gNTA0KSB7XHJcblx0XHRcdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5ob3N0VXJsfW1uZy8jL21uZy9jb250cm9sLW1hbmFnZW1lbnQvZXhwb3J0LXJlcXVlc3RzYDtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0hhdGEgb2x1xZ90dTonLCBlcnJvcik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KTtcclxuXHJcblx0XHRzYXZlQXMocmVzcG9uc2UsIGAke2V4cG9ydExhYmVsfS0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfSR7ZmlsZUV4dGVuc2lvbn1gKTtcclxuXHR9XHJcblxyXG5cdG9uU2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmF0KGkpO1xyXG5cdFx0XHRmb3JtR3JvdXAuY29udHJvbHMuY2hlY2tlZC5zZXRWYWx1ZSh2YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVFeHBvcnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB0aGlzLm9wLnRvZ2dsZShldmVudCk7XHJcblxyXG5cdGhhbmRsZUxhenlMb2FkRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgbmV3RXZlbnREYXRhID0ge1xyXG5cdFx0XHRwYWdlcjoge1xyXG5cdFx0XHRcdHBhZ2VTaXplOiBldmVudC5yb3dzLFxyXG5cdFx0XHRcdHBhZ2VOdW1iZXI6IGV2ZW50LmZpcnN0IC8gZXZlbnQucm93cyArIDFcclxuXHRcdFx0fSxcclxuXHRcdFx0c29ydDogZXZlbnQubXVsdGlTb3J0TWV0YSxcclxuXHRcdFx0ZmlsdGVyOiBldmVudC5maWx0ZXJzXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5sYXp5TG9hZEV2ZW50LmVtaXQobmV3RXZlbnREYXRhKTtcclxuXHR9XHJcblxyXG5cdGNsZWFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy50YWJsZVJlZi52YWx1ZSA9IFtdO1xyXG5cdFx0dGhpcy50YWJsZVJlZi5jbGVhcigpO1xyXG5cdFx0dGhpcy5vcD8uaGlkZSgpO1xyXG5cdH1cclxufVxyXG4iLCI8cC10YWJsZVxyXG5cdCNyZWZcclxuXHRbdmFsdWVdPVwiZGF0YSgpXCJcclxuXHRbZGF0YUtleV09XCJkYXRhS2V5KClcIlxyXG5cdFtjb2x1bW5zXT1cImNvbHVtbnMuX3Jlc3VsdHNcIlxyXG5cdFtyb3dzXT1cInBhZ2VTaXplKClcIlxyXG5cdFtyb3dIb3Zlcl09XCJ0cnVlXCJcclxuXHRbcGFnaW5hdG9yXT1cInBhZ2luYXRvcigpXCJcclxuXHRbbGF6eV09XCJpc0xhenkoKVwiXHJcblx0W2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuXHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3JkcygpXCJcclxuXHRbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwLCAxMDBdXCJcclxuXHRbZmlsdGVyRGVsYXldPVwiMFwiXHJcblx0c29ydE1vZGU9XCJtdWx0aXBsZVwiXHJcblx0WyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXHJcblx0KG9uUGFnZSk9XCJvblBhZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG5cdChvbkxhenlMb2FkKT1cImhhbmRsZUxhenlMb2FkRXZlbnQoJGV2ZW50KVwiXHJcblx0KHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25FdmVudC5lbWl0KHNlbGVjdGVkUm93cylcIlxyXG5cdFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcblx0W3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCJcclxuXHRbY29sdW1uUmVzaXplTW9kZV09XCJpc0NvbHVtbkV4cGFuZE1vZGUoKSA/ICdleHBhbmQnOiAnJ1wiXHJcblx0W3Jlc2l6YWJsZUNvbHVtbnNdPVwiaXNSZXNpemFibGVDb2x1bW5zKClcIlxyXG5cdGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJUb3BsYW0gOiB7dG90YWxSZWNvcmRzfSBrYXnEsXQgfCBTYXlmYSA6IHtjdXJyZW50UGFnZX0gLyB7dG90YWxQYWdlc31cIlxyXG5cdHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiXHJcblx0W3BhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbygpXCI+XHJcblx0PCEtLUBpZiAodGFibGVIZWFkZXIoKSB8fCBzaG93U2VhcmNoVG9vbCgpIHx8IHNob3dFeHBvcnRUb29sKCkpIHtcclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IHNwYWNlLWJldHdlZW5cIj5cclxuXHRcdFx0XHQ8ZGl2IHN0eWxlPVwiZmxleDogYXV0b1wiPlxyXG5cdFx0XHRcdFx0QGlmICh0YWJsZUhlYWRlcigpLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgdGFibGVIZWFkZXIoKSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IHN0eWxlPVwiZmxleDogYXV0b1wiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChmYWxzZSkge1xyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLXRleHRcclxuXHRcdFx0XHRcdFx0XHRcdGljb249XCJTRUFSQ0hcIlxyXG5cdFx0XHRcdFx0XHRcdFx0aWNvblBvcz1cImxlZnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJBcmFtYVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbF09XCJmaWx0ZXJUZXh0XCJcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXItMVwiXHJcblx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJyZWYuZmlsdGVyR2xvYmFsKCRldmVudC50YXJnZXQudmFsdWUsICdjb250YWlucycpXCI+XHJcblx0XHRcdFx0XHRcdFx0PC9hcmlsLXRleHQ+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0QGlmIChmYWxzZSkge1xyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdFx0XHRcdGljb249XCJGSUxFX0VYQ0VMXCJcclxuXHRcdFx0XHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRcdFx0XHRwVG9vbHRpcD1cIlhMU1wiXHJcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwiZXhjZWxFeHBvcnQoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1yLTFcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdFx0XHRcdGljb249XCJGSUxFX1BERlwiXHJcblx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0cFRvb2x0aXA9XCJQREZcIlxyXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImV4cG9ydFBkZigpXCI+XHJcblx0XHRcdFx0XHRcdFx0PC9hcmlsLWJ1dHRvbj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRAaWYgKGRhdGEoKSAmJiBrZWJhYk1lbnVJdGVtcy5sZW5ndGggPiAwICkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgdG9vbHMgc3R5bGU9XCJwYWRkaW5nOiA0cHg7bWFyZ2luLWxlZnQ6IDRweDtib3JkZXI6MXB4IHNvbGlkICM2MzY2ZjE7Ym9yZGVyLXJhZGl1czogNnB4O2JhY2tncm91bmQtY29sb3I6ICM2MzY2ZjE7IGNvbG9yOiB3aGl0ZTtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbYXR0ci5yb2xlXT1cIidub25lJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgbXItMSBoZWFkZXItaWNvbiBwaS1lbGxpcHNpcy12XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImJ1bGtPcGVyYXRpb25zLnRvZ2dsZSgkZXZlbnQpO1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDxwLW1lbnVcclxuXHRcdFx0XHRcdFx0XHRcdFx0I2J1bGtPcGVyYXRpb25zXHJcblx0XHRcdFx0XHRcdFx0XHRcdFtwb3B1cF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W21vZGVsXT1cImtlYmFiTWVudUl0ZW1zXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0c3R5bGVDbGFzcz1cInotaW5kZXg6IDk5OTg4OTk7XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0fS0tPlxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcblx0XHQ8dHI+XHJcblx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdDx0aD5cclxuXHRcdFx0XHRcdEBpZiAoaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdH1cclxuXHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHQ8dGg+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj7EsMWfbGVtbGVyPC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cclxuXHRcdFx0XHRcdEBpZiAoaXNSZXNpemFibGVDb2x1bW5zKCkpIHtcclxuXHRcdFx0XHRcdFx0PHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sdW1uLmZpZWxkKClcIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogY29sdW1uLndpZHRoKCkgPyBjb2x1bW4ud2lkdGgoKSA6ICdhdXRvJ31cIiBwUmVzaXphYmxlQ29sdW1uPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0e3sgY29sdW1uLmhlYWRlcigpIH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi5pc1Nob3dIZWFkZXJUb29sdGlwKCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogZ3JlZW47IHBhZGRpbmctdG9wOiA0cHg7IHBhZGRpbmctbGVmdDogNHB4XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi50b29sdGlwVGVtcGxhdGUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmICghaXNMYXp5KCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1zb3J0SWNvbiBbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIj48L3Atc29ydEljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0fSBAZWxzZSB7XHJcblx0XHRcdFx0XHRcdDx0aCBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbHVtbi5maWVsZCgpXCIgW25nU3R5bGVdPVwieyd3aWR0aCc6IGNvbHVtbi53aWR0aCgpID8gY29sdW1uLndpZHRoKCkgOiAnYXV0byd9XCIgIHN0eWxlPVwibWluLXdpZHRoOjE3MHB4XCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyBjb2x1bW4uaGVhZGVyKCkgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiBncmVlbjsgcGFkZGluZy10b3A6IDRweDsgcGFkZGluZy1sZWZ0OiA0cHhcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBUZW1wbGF0ZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKCFpc0xhenkoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiPjwvcC1zb3J0SWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWl0ZW0gbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcblx0XHRAaWYgKHNlbGVjdGlvbk1vZGUoKSkge1xyXG5cdFx0XHQ8dHIgW3BTZWxlY3RhYmxlUm93XT1cIml0ZW1cIj5cclxuXHRcdFx0XHRAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcblx0XHRcdFx0XHQ8dGQgW25nU3R5bGVdPVwieyAndGV4dC1hbGlnbic6IGNvbHVtbi50eXBlKCkgPT09ICdvcGVyYXRpb25zJyA/ICdjZW50ZXInIDogY29sdW1uLnRBbGlnbigpIHx8IHRBbGlnbigpIH1cIj5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cIltpdGVtXVwiIFtuZ0ZvclRlbXBsYXRlXT1cImNvbHVtbi50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC90cj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8dHIgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGl0ZW0/LnJvd0NvbG9yID8gaXRlbT8ucm93Q29sb3IgOiAnI2ZmZicgfVwiPlxyXG5cdFx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJpdGVtXCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdFx0PHRkIFtuZ1N0eWxlXT1cInsgJ3RleHQtYWxpZ24nOiBjb2x1bW4udHlwZSgpID09PSAnb3BlcmF0aW9ucycgPyAnY2VudGVyJyA6IGNvbHVtbi50QWxpZ24oKSB8fCB0QWxpZ24oKSB9XCI+XHJcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJbaXRlbV1cIiBbbmdGb3JUZW1wbGF0ZV09XCJjb2x1bW4udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdHI+XHJcblx0XHR9XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0QGlmIChzaG93Rm9vdGVyKCkpIHtcclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHR9XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5fcmVzdWx0cy5sZW5ndGhcIj57eyBub0RhdGFGb3VuZExhYmVsKCkgfX08L3RkPlxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L3AtdGFibGU+XHJcblxyXG48cC1vdmVybGF5UGFuZWwgc3R5bGVDbGFzcz1cImV4cG9ydC1vdmVybGF5LXBhbmVsXCI+XHJcblx0QGlmIChleHBvcnRGb3JtKSB7XHJcblx0XHQ8YXJpbC1mb3JtIFtmb3JtR3JvdXBdPVwiZXhwb3J0Rm9ybVwiIGNsYXNzPVwidy0yMHJlbVwiPlxyXG5cdFx0XHQ8YXJpbC1maWVsZCBbbGFiZWxdPVwiJ0V4cG9ydCBUaXBpJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXJhZGlvLWJ1dHRvbiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRUeXBlXCIgW29wdGlvbnNdPVwiZXhwb3J0VHlwZU9wdGlvbnNcIiAvPlxyXG5cdFx0XHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdFx0XHQ8YXJpbC1maWVsZCBbbGFiZWxdPVwiJ0Rvc3lhIMSwc21pJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRMYWJlbFwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHJcblx0XHRcdDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImNvbHVtbnNcIj5cclxuXHRcdFx0XHQ8cC1vcmRlckxpc3RcclxuXHRcdFx0XHRcdCNvcmRlckxpc3RSZWZcclxuXHRcdFx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0XHRcdFt2YWx1ZV09XCJleHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMuY29udHJvbHNcIlxyXG5cdFx0XHRcdFx0W2xpc3RTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogJzIwcmVtJyB9XCJcclxuXHRcdFx0XHRcdGZpbHRlckJ5PVwidmFsdWUudGl0bGVcIj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcblx0XHRcdFx0XHRcdFx0PGFyaWwtY2hlY2tib3hcclxuXHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCInJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbF09XCJpc0FsbFNlbGVjdGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcblx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdEFsbCgkZXZlbnQpXCIgLz5cclxuXHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInAtb3JkZXJsaXN0LWZpbHRlclwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZmlsdGVyJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdFx0XHRcdCNmaWx0ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2xlPVwidGV4dGJveFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChrZXl1cCk9XCJvcmRlckxpc3RSZWYub25GaWx0ZXJLZXl1cCgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cIm9yZGVyTGlzdFJlZi5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicC1vcmRlcmxpc3QtZmlsdGVyLWlucHV0IHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50XCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIGxldC1jb2wgcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8YXJpbC1jaGVja2JveCBbbGFiZWxdPVwiY29sLnZhbHVlLnRpdGxlXCIgW2Zvcm1Db250cm9sXT1cImNvbC5jb250cm9scy5jaGVja2VkXCIgLz5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9wLW9yZGVyTGlzdD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHQ8YXJpbC1idXR0b24gY2xhc3M9XCJjb2wtMTJcIiBsYWJlbD1cIkV4cG9ydFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGlja0V2ZW50KT1cImV4cG9ydCgpXCIgLz5cclxuXHRcdDwvYXJpbC1mb3JtPlxyXG5cdH1cclxuPC9wLW92ZXJsYXlQYW5lbD5cclxuIl19
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS9zcmMvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFBcUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLEVBQ04sVUFBVSxFQUNWLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNSLGNBQWMsRUFDZCxJQUFJLEVBQ0osUUFBUSxFQUNSLEdBQUcsRUFDSCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFVBQVUsRUFDVixPQUFPLEVBQ1AsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUt2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JDLE9BQU8sRUFBMEUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ2xILE9BQU8sRUFBYyxvQkFBb0IsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTFGOzs7OztHQUtHO0FBQ0gs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Z0MsT0FBTztzQkFBN0MsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBQ1osRUFBRTtzQkFBMUIsU0FBUzt1QkFBQyxZQUFZO2dCQUNMLFFBQVE7c0JBQXpCLFNBQVM7dUJBQUMsS0FBSztnQkFDUCxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkcmVuLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCwgZWZmZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UsIFByaW1lTkdDb25maWcgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IE92ZXJsYXlQYW5lbCB9IGZyb20gJ3ByaW1lbmcvb3ZlcmxheXBhbmVsJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuXHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xyXG5pbXBvcnQge1xyXG5cdGNhdGNoRXJyb3IsXHJcblx0Y29uY2F0TWFwLFxyXG5cdGZpbHRlcixcclxuXHRmaW5hbGl6ZSxcclxuXHRmaXJzdFZhbHVlRnJvbSxcclxuXHRmcm9tLFxyXG5cdGludGVydmFsLFxyXG5cdG1hcCxcclxuXHRzd2l0Y2hNYXAsXHJcblx0dGFrZSxcclxuXHR0aHJvd0Vycm9yLFxyXG5cdHRvQXJyYXlcclxufSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEFQSV9DT05GSUdTIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBQcm94eVR5cGVzIH0gZnJvbSAnYXJpbC9odHRwJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnYXJpbC90aGVtZS9sYXlvdXQnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7IHRyYW5sYXRpb25zIH0gZnJvbSAnLi9pMThuJztcclxuaW1wb3J0IHsgQ29sRm9ybSwgQ29sdW1uRmllbGRWYWx1ZU1hcCwgRXhwb3J0Rm9ybSwgRXhwb3J0T3B0aW9ucywgRXhwb3J0UmVxdWVzdCwgRXhwb3J0VHlwZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEFsaWduVHlwZXMsIFRhYmxlQ29sdW1uQ29tcG9uZW50LCBUYWJsZUNvbHVtbnMgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5cclxuLyogVE9ETyA6XHJcbiAqIHNlcnZlci1zaWRlLXByb3h5IChQcm94eVR5cGVzLlNlcnZlclNpZGUpXHJcbiAqIHNlYXJjaCAmIGNvbHVtIGZpbHRlciAmIHNvcnRcclxuICogcGFnaW5hdGlvbiBvcGVyYXRpb25cclxuICogUXVlcnkgU2lnbmFsc1xyXG4gKi9cclxuY29uc3QgcGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSBhcyBjb25zdDtcclxuXHJcbnR5cGUgU2VsZWN0aW9uVHlwZXMgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XHJcblxyXG5pbnRlcmZhY2UgSUtlYmFiTWVudUl0ZW0ge1xyXG5cdGljb246IHN0cmluZztcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdG9uQ2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcmlsLXRhYmxlJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IHtcclxuXHRAT3V0cHV0KCkgb25QYWdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIHNlbGVjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBsYXp5TG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBDb250ZW50Q2hpbGRyZW4oVGFibGVDb2x1bW5Db21wb25lbnQpIGNvbHVtbnMhOiBUYWJsZUNvbHVtbnM7XHJcblx0QFZpZXdDaGlsZChPdmVybGF5UGFuZWwpIG9wITogT3ZlcmxheVBhbmVsO1xyXG5cdEBWaWV3Q2hpbGQoVGFibGUpIHRhYmxlUmVmITogVGFibGU7XHJcblx0QElucHV0KCkga2ViYWJNZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHRASW5wdXQoKSBleHBhbmRhYmxlRmllbGRzITogc3RyaW5nXHJcblxyXG5cdGRhdGEgPSBpbnB1dC5yZXF1aXJlZDxhbnlbXT4oKTtcclxuXHRjaGVja2JveFNlbGVjdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XHJcblx0aGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdHBhZ2VTaXplID0gaW5wdXQ8KHR5cGVvZiBwYWdlT3B0aW9ucylbbnVtYmVyXT4oMTApO1xyXG5cdHByb3h5ID0gaW5wdXQ8UHJveHlUeXBlcz4oUHJveHlUeXBlcy5OYXRpdmUpO1xyXG5cdHNob3dGb290ZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dEFsaWduID0gaW5wdXQ8QWxpZ25UeXBlcz4oJ2xlZnQnKTtcclxuXHRzZWxlY3Rpb25Nb2RlID0gaW5wdXQ8U2VsZWN0aW9uVHlwZXM+KCk7XHJcblx0c2hvd1NlYXJjaFRvb2wgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRzaG93RXhwb3J0VG9vbCA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdGV4cG9ydEZpbGVOYW1lID0gaW5wdXQ8c3RyaW5nPignJyk7XHJcblx0bm9EYXRhRm91bmRMYWJlbCA9IGlucHV0PHN0cmluZz4oJ05vIERhdGEgRm91bmQnKTtcclxuXHR0YWJsZUhlYWRlciA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdHNob3dUYWJsZUhlYWRlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRpc0ZpcnN0Um93U2VsZWN0ZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0ZGF0YUtleSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdHNlbGVjdGVkUm93c0lucHV0ID0gaW5wdXQ8YW55PihbXSk7XHJcblx0aXNMYXp5ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHRvdGFsUmVjb3JkcyA9IGlucHV0PG51bWJlcj4oMCk7XHJcblx0cGFnaW5hdG9yID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0cGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbyA9IGlucHV0PHN0cmluZz4oJ2JvZHknKTsgLy8gJ2JvZHknfCAnbXlEaXYnXHJcblxyXG5cdGlzU2hvd05vRGF0YUZvdW5kTWVzc2FnZSA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xyXG5cdC8qKlxyXG5cdCAqIEBzZWUge0BsaW5rIEV4cG9ydE9wdGlvbnN9XHJcblx0ICovXHJcblx0ZXhwb3J0Q29uZmlnID0gaW5wdXQ8RXhwb3J0T3B0aW9ucz4oKTtcclxuXHJcblx0ZXhwb3J0Rm9ybSE6IEZvcm1Hcm91cDxFeHBvcnRGb3JtPjtcclxuXHRleHBvcnRUeXBlT3B0aW9ucyA9IFtcclxuXHRcdHsga2V5OiBFeHBvcnRUeXBlLkV4Y2VsLCBsYWJlbDogJ0V4Y2VsJywgZmlsZUV4dGVuc2lvbjogJy54bHN4JyB9LFxyXG5cdFx0eyBrZXk6IEV4cG9ydFR5cGUuQ3N2LCBsYWJlbDogJ0NzdicsIGZpbGVFeHRlbnNpb246ICcuY3N2JyB9XHJcblx0XTtcclxuXHJcblx0ZmlsdGVyVGV4dCE6IHN0cmluZztcclxuXHRpc0FsbFNlbGVjdGVkID0gdHJ1ZTtcclxuXHRzZWxlY3RlZFJvd3M6IGFueTtcclxuXHRwYWdlT3B0aW9ucyA9IHBhZ2VPcHRpb25zO1xyXG5cdGV4cG9ydENvbHVtbnM6IEFycmF5PHsgdGl0bGU6IHN0cmluZzsgZGF0YUtleTogc3RyaW5nIH0+ID0gW107XHJcblx0aXNDb2x1bW5FeHBhbmRNb2RlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzUmVzaXphYmxlQ29sdW1ucyA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRpc1NvcnRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuXHRcdHByaXZhdGUgZmI6IE5vbk51bGxhYmxlRm9ybUJ1aWxkZXIsXHJcblx0XHRwcml2YXRlIHByaW1lbmdDb25maWc6IFByaW1lTkdDb25maWcsXHJcblx0XHRwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuXHRcdHByaXZhdGUgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSxcclxuXHRcdHByaXZhdGUgc2VsZWN0aW9uR3JvdXBTZXJ2aWNlOiBTZWxlY3Rpb25Hcm91cFNlcnZpY2VcclxuXHQpIHtcclxuXHRcdHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih0cmFubGF0aW9ucyk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuaXNGaXJzdFJvd1NlbGVjdGVkKCkgJiYgdGhpcy5kYXRhKCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuZGF0YSgpWzBdO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0aW9uRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkUm93c0lucHV0KCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5wdXQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuZXhwb3J0Q29uZmlnKCkpIHtcclxuXHRcdFx0XHR0aGlzLmNyZWF0ZUV4cG9ydEZvcm0oKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGlzSW5pdGlhbExvYWQgPSB0cnVlO1xyXG5cclxuXHRuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcblx0XHRpZiAoY2hhbmdlc1snZGF0YSddICYmIGNoYW5nZXNbJ2RhdGEnXS5jdXJyZW50VmFsdWUgIT09IGNoYW5nZXNbJ2RhdGEnXS5wcmV2aW91c1ZhbHVlKSB7XHJcblx0XHRcdGlmICh0aGlzLmlzSW5pdGlhbExvYWQpIHtcclxuXHRcdFx0XHR0aGlzLmlzSW5pdGlhbExvYWQgPSBmYWxzZTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGNvbnN0IGN1cnJlbnREYXRhID0gY2hhbmdlc1snZGF0YSddLmN1cnJlbnRWYWx1ZTtcclxuXHRcdFx0aWYgKHRoaXMuaXNTaG93Tm9EYXRhRm91bmRNZXNzYWdlKCkgJiYgIWN1cnJlbnREYXRhPy5sZW5ndGgpIHtcclxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcblx0XHRcdFx0XHRzZXZlcml0eTogJ2luZm8nLFxyXG5cdFx0XHRcdFx0c3VtbWFyeTogdGhpcy50cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnbWVzc2FnZXMubm9EYXRhVG9EaXNwbGF5JyksXHJcblx0XHRcdFx0XHRrZXk6ICd0b2FzdC1yb290J1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGNyZWF0ZUV4cG9ydEZvcm0oKTogdm9pZCB7XHJcblx0XHRjb25zdCB7IGV4cG9ydExhYmVsIH0gPSB0aGlzLmV4cG9ydENvbmZpZygpITtcclxuXHJcblx0XHR0aGlzLmV4cG9ydEZvcm0gPSB0aGlzLmZiLmdyb3VwPEV4cG9ydEZvcm0+KHtcclxuXHRcdFx0ZXhwb3J0VHlwZTogdGhpcy5mYi5jb250cm9sKEV4cG9ydFR5cGUuRXhjZWwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG5cdFx0XHRleHBvcnRMYWJlbDogdGhpcy5mYi5jb250cm9sKGV4cG9ydExhYmVsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuXHRcdFx0Y29sdW1uczogdGhpcy5mYi5hcnJheTxGb3JtR3JvdXA8Q29sRm9ybT4+KFtdKVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5jb2x1bW5zLl9yZXN1bHRzXHJcblx0XHRcdC5maWx0ZXIoKGNvbCkgPT4gY29sLnR5cGUoKSAhPT0gJ29wZXJhdGlvbnMnKVxyXG5cdFx0XHQuZmlsdGVyKChjb2wpID0+IHtcclxuXHRcdFx0XHRjb25zdCBleHBvcnRDb25maWcgPSB0aGlzLmV4cG9ydENvbmZpZygpO1xyXG5cdFx0XHRcdGNvbnN0IGV4Y2x1ZGVkRmllbGRzID0gZXhwb3J0Q29uZmlnPy5leGNsdWRlZEZpZWxkcyA/PyBbXTtcclxuXHJcblx0XHRcdFx0cmV0dXJuICFleGNsdWRlZEZpZWxkcy5pbmNsdWRlcyhjb2wuZmllbGQoKSk7XHJcblx0XHRcdH0pXHJcblx0XHRcdC5mb3JFYWNoKChjb2wpID0+IHtcclxuXHRcdFx0XHRjb25zdCBjb2xHcm91cCA9IHRoaXMuZmIuZ3JvdXA8Q29sRm9ybT4oe1xyXG5cdFx0XHRcdFx0Y2hlY2tlZDogdGhpcy5mYi5jb250cm9sKHRydWUpLFxyXG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZmIuY29udHJvbChjb2wuaGVhZGVyKCkpLFxyXG5cdFx0XHRcdFx0ZGF0YUtleTogdGhpcy5mYi5jb250cm9sKGNvbC5maWVsZCgpKVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHR0aGlzLmV4cG9ydEZvcm0uY29udHJvbHMuY29sdW1ucy5wdXNoKGNvbEdyb3VwKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5leHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodCkgPT4gKHRoaXMuaXNBbGxTZWxlY3RlZCA9IHQuZXZlcnkoKGEpID0+IGEuY2hlY2tlZCkpKTtcclxuXHR9XHJcblxyXG5cdGdldCBob3N0VXJsKCk6IHN0cmluZyB7XHJcblx0XHRyZXR1cm4gYCR7Z2xvYmFsVGhpcy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7Z2xvYmFsVGhpcy5sb2NhdGlvbi5ob3N0fS9odG1sL2A7XHJcblx0fVxyXG5cclxuXHRhc3luYyBleHBvcnQoKSB7XHJcblx0XHRjb25zdCB7IGV4cG9ydFR5cGUsIGV4cG9ydExhYmVsLCBjb2x1bW5zIH0gPSB0aGlzLmV4cG9ydEZvcm0udmFsdWU7XHJcblx0XHRjb25zdCB7IHJvdXRlLCBwYXJhbXMsIGNvbHVtbkZpZWxkVmFsdWVNYXAsIGRhdGVDb2x1bW5Gb3JtYXRNYXAsIGNvbXB1dGVkQ29sdW1uTWFwIH0gPSB0aGlzLmV4cG9ydENvbmZpZygpITtcclxuXHJcblx0XHRjb25zdCBjaGVja2VkQ29sdW1ucyA9IGNvbHVtbnMhLmZpbHRlcigodCkgPT4gdC5jaGVja2VkKTtcclxuXHRcdGNvbnN0IGZpbGVFeHRlbnNpb24gPSB0aGlzLmV4cG9ydFR5cGVPcHRpb25zLmZpbmQoKHQpID0+IHQua2V5ID09PSBleHBvcnRUeXBlKT8uZmlsZUV4dGVuc2lvbjtcclxuXHJcblx0XHRsZXQgY29sdW1uRmllbGRWYWx1ZU1hcE9iajogQ29sdW1uRmllbGRWYWx1ZU1hcCB8IHVuZGVmaW5lZDtcclxuXHJcblx0XHRpZiAoY29sdW1uRmllbGRWYWx1ZU1hcCkge1xyXG5cdFx0XHRjb25zdCB0ZW1wT2JqID0ge30gYXMgQ29sdW1uRmllbGRWYWx1ZU1hcDtcclxuXHJcblx0XHRcdGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHRcdGZyb20oT2JqZWN0LmVudHJpZXMoY29sdW1uRmllbGRWYWx1ZU1hcCkpLnBpcGUoXHJcblx0XHRcdFx0XHRjb25jYXRNYXAoKFtmaWVsZE5hbWUsIHZhbHVlXSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAoXHJcblx0XHRcdFx0XHRcdFx0IXRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpW2Ake3ZhbHVlLmdyb3VwTmFtZX1+JHt2YWx1ZS5wYXJlbnRTZWxlY3Rpb25LZXkgPz8gJ0FMTCd9YF1cclxuXHRcdFx0XHRcdFx0KSB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuZmV0Y2hFbnVtKHZhbHVlLmdyb3VwTmFtZSwgdmFsdWUucGFyZW50U2VsZWN0aW9uS2V5KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0Y29uc3Qga2V5ID0gdmFsdWUuZ3JvdXBOYW1lICsgJ34nICsgKHZhbHVlLnBhcmVudFNlbGVjdGlvbktleSA/PyAnQUxMJyk7XHJcblxyXG5cdFx0XHRcdFx0XHRyZXR1cm4gaW50ZXJ2YWwoMTApLnBpcGUoXHJcblx0XHRcdFx0XHRcdFx0ZmlsdGVyKCgpID0+ICF0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5pc0xvYWRpbmcoa2V5KSksXHJcblx0XHRcdFx0XHRcdFx0dGFrZSgxKSxcclxuXHRcdFx0XHRcdFx0XHRtYXAoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSB0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5zZWxlY3Rpb25Hcm91cHMoKVtrZXldO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNlbGVjdGlvbkdyb3VwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRlbXBPYmpbZmllbGROYW1lXSA9IHNlbGVjdGlvbkdyb3VwLnNlbGVjdGlvbkl0ZW1zLnJlZHVjZSgoYWNjOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LCBpdGVtKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0YWNjW2l0ZW0uc2VsZWN0aW9uS2V5XSA9IGl0ZW0uc2VsZWN0aW9uRGlzcGxheTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0sIHt9KSBhcyBhbnk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdH0pLFxyXG5cdFx0XHRcdFx0dG9BcnJheSgpLFxyXG5cdFx0XHRcdFx0ZmluYWxpemUoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb2x1bW5GaWVsZFZhbHVlTWFwT2JqID0gdGVtcE9iajtcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KVxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHJlcXVlc3Q6IEV4cG9ydFJlcXVlc3QgPSB7XHJcblx0XHRcdHJvdXRlOiByb3V0ZSEsXHJcblx0XHRcdHBhcmFtczogcGFyYW1zISxcclxuXHRcdFx0ZXhwb3J0VHlwZTogZXhwb3J0VHlwZSEsXHJcblx0XHRcdGV4cG9ydExhYmVsOiBleHBvcnRMYWJlbCEsXHJcblx0XHRcdGNvbXB1dGVkQ29sdW1uTWFwOiBjb21wdXRlZENvbHVtbk1hcCEsXHJcblx0XHRcdGRhdGVDb2x1bW5Gb3JtYXRNYXA6IGRhdGVDb2x1bW5Gb3JtYXRNYXAhLFxyXG5cdFx0XHRjb2x1bW5GaWVsZFZhbHVlTWFwOiBjb2x1bW5GaWVsZFZhbHVlTWFwT2JqISxcclxuXHRcdFx0aGVhZGVyTmFtZXM6IGNoZWNrZWRDb2x1bW5zLm1hcCgoY29sKSA9PiBjb2wudGl0bGUhKSxcclxuXHRcdFx0b3V0cHV0RmllbGRzOiBjaGVja2VkQ29sdW1ucy5tYXAoKGNvbCkgPT4gY29sLmRhdGFLZXkhKVxyXG5cdFx0fTtcclxuXHJcblx0XHRjb25zdCByZXNwb25zZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxyXG5cdFx0XHR0aGlzLmh0dHAucG9zdDx7IHN1Y2Nlc3M6IGJvb2xlYW47IHVybDogc3RyaW5nIH0+KEFQSV9DT05GSUdTLmFwaSArICcvYmF0Y2gtZXhwb3J0ZXJzL2V4cG9ydCcsIHJlcXVlc3QpLnBpcGUoXHJcblx0XHRcdFx0c3dpdGNoTWFwKChyZXMpID0+XHJcblx0XHRcdFx0XHR0aGlzLmh0dHAuZ2V0KEFQSV9DT05GSUdTLmFwaSArICcvYnVja2V0LW9iamVjdHMvZG93bmxvYWQnLCB7XHJcblx0XHRcdFx0XHRcdHBhcmFtczogeyB1cmw6IHJlcy51cmwgfSxcclxuXHRcdFx0XHRcdFx0cmVzcG9uc2VUeXBlOiAnYmxvYidcclxuXHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0KSxcclxuXHRcdFx0XHRjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKGVycm9yLnN0YXR1cyA9PT0gNTA0KSB7XHJcblx0XHRcdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7dGhpcy5ob3N0VXJsfW1uZy8jL21uZy9jb250cm9sLW1hbmFnZW1lbnQvZXhwb3J0LXJlcXVlc3RzYDtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0hhdGEgb2x1xZ90dTonLCBlcnJvcik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRyZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0KVxyXG5cdFx0KTtcclxuXHJcblx0XHRzYXZlQXMocmVzcG9uc2UsIGAke2V4cG9ydExhYmVsfS0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfSR7ZmlsZUV4dGVuc2lvbn1gKTtcclxuXHR9XHJcblxyXG5cdG9uU2VsZWN0QWxsKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuZXhwb3J0Rm9ybS5jb250cm9scy5jb2x1bW5zLmF0KGkpO1xyXG5cdFx0XHRmb3JtR3JvdXAuY29udHJvbHMuY2hlY2tlZC5zZXRWYWx1ZSh2YWx1ZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHR0b2dnbGVFeHBvcnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB0aGlzLm9wLnRvZ2dsZShldmVudCk7XHJcblxyXG5cdGhhbmRsZUxhenlMb2FkRXZlbnQoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0Y29uc3QgbmV3RXZlbnREYXRhID0ge1xyXG5cdFx0XHRwYWdlcjoge1xyXG5cdFx0XHRcdHBhZ2VTaXplOiBldmVudC5yb3dzLFxyXG5cdFx0XHRcdHBhZ2VOdW1iZXI6IGV2ZW50LmZpcnN0IC8gZXZlbnQucm93cyArIDFcclxuXHRcdFx0fSxcclxuXHRcdFx0c29ydDogZXZlbnQubXVsdGlTb3J0TWV0YSxcclxuXHRcdFx0ZmlsdGVyOiBldmVudC5maWx0ZXJzXHJcblx0XHR9O1xyXG5cdFx0dGhpcy5sYXp5TG9hZEV2ZW50LmVtaXQobmV3RXZlbnREYXRhKTtcclxuXHR9XHJcblxyXG5cdGNsZWFyKCk6IHZvaWQge1xyXG5cdFx0dGhpcy50YWJsZVJlZi52YWx1ZSA9IFtdO1xyXG5cdFx0dGhpcy50YWJsZVJlZi5jbGVhcigpO1xyXG5cdFx0dGhpcy5vcD8uaGlkZSgpO1xyXG5cdH1cclxufVxyXG4iLCI8cC10YWJsZVxyXG5cdCNyZWZcclxuXHRbdmFsdWVdPVwiZGF0YSgpXCJcclxuXHRbZGF0YUtleV09XCJkYXRhS2V5KClcIlxyXG5cdFtjb2x1bW5zXT1cImNvbHVtbnMuX3Jlc3VsdHNcIlxyXG5cdFtyb3dzXT1cInBhZ2VTaXplKClcIlxyXG5cdFtyb3dIb3Zlcl09XCJ0cnVlXCJcclxuXHRbcGFnaW5hdG9yXT1cInBhZ2luYXRvcigpXCJcclxuXHRbbGF6eV09XCJpc0xhenkoKVwiXHJcblx0W2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuXHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3JkcygpXCJcclxuXHRbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwLCAxMDBdXCJcclxuXHRbZmlsdGVyRGVsYXldPVwiMFwiXHJcblx0c29ydE1vZGU9XCJtdWx0aXBsZVwiXHJcblx0WyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXHJcblx0KG9uUGFnZSk9XCJvblBhZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG5cdChvbkxhenlMb2FkKT1cImhhbmRsZUxhenlMb2FkRXZlbnQoJGV2ZW50KVwiXHJcblx0KHNlbGVjdGlvbkNoYW5nZSk9XCJzZWxlY3Rpb25FdmVudC5lbWl0KHNlbGVjdGVkUm93cylcIlxyXG5cdFtzaG93Q3VycmVudFBhZ2VSZXBvcnRdPVwidHJ1ZVwiXHJcblx0W3NlbGVjdGlvbk1vZGVdPVwic2VsZWN0aW9uTW9kZSgpXCJcclxuXHRbY29sdW1uUmVzaXplTW9kZV09XCJpc0NvbHVtbkV4cGFuZE1vZGUoKSA/ICdleHBhbmQnOiAnJ1wiXHJcblx0W3Jlc2l6YWJsZUNvbHVtbnNdPVwiaXNSZXNpemFibGVDb2x1bW5zKClcIlxyXG5cdGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJUb3BsYW0gOiB7dG90YWxSZWNvcmRzfSBrYXnEsXQgfCBTYXlmYSA6IHtjdXJyZW50UGFnZX0gLyB7dG90YWxQYWdlc31cIlxyXG5cdHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiXHJcblx0W3BhZ2luYXRvckRyb3Bkb3duQXBwZW5kVG9dPVwicGFnaW5hdG9yRHJvcGRvd25BcHBlbmRUbygpXCI+XHJcblx0PCEtLUBpZiAodGFibGVIZWFkZXIoKSB8fCBzaG93U2VhcmNoVG9vbCgpIHx8IHNob3dFeHBvcnRUb29sKCkpIHtcclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IHNwYWNlLWJldHdlZW5cIj5cclxuXHRcdFx0XHQ8ZGl2IHN0eWxlPVwiZmxleDogYXV0b1wiPlxyXG5cdFx0XHRcdFx0QGlmICh0YWJsZUhlYWRlcigpLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgdGFibGVIZWFkZXIoKSB9fVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IHN0eWxlPVwiZmxleDogYXV0b1wiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChmYWxzZSkge1xyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLXRleHRcclxuXHRcdFx0XHRcdFx0XHRcdGljb249XCJTRUFSQ0hcIlxyXG5cdFx0XHRcdFx0XHRcdFx0aWNvblBvcz1cImxlZnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJBcmFtYVwiXHJcblx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbF09XCJmaWx0ZXJUZXh0XCJcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwibXItMVwiXHJcblx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJyZWYuZmlsdGVyR2xvYmFsKCRldmVudC50YXJnZXQudmFsdWUsICdjb250YWlucycpXCI+XHJcblx0XHRcdFx0XHRcdFx0PC9hcmlsLXRleHQ+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0QGlmIChmYWxzZSkge1xyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdFx0XHRcdGljb249XCJGSUxFX0VYQ0VMXCJcclxuXHRcdFx0XHRcdFx0XHRcdGNvbG9yPVwicHJpbWFyeVwiXHJcblx0XHRcdFx0XHRcdFx0XHRwVG9vbHRpcD1cIlhMU1wiXHJcblx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIlxyXG5cdFx0XHRcdFx0XHRcdFx0KGNsaWNrRXZlbnQpPVwiZXhjZWxFeHBvcnQoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cIm1yLTFcIj5cclxuXHRcdFx0XHRcdFx0XHQ8L2FyaWwtYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdDxhcmlsLWJ1dHRvblxyXG5cdFx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtXCJcclxuXHRcdFx0XHRcdFx0XHRcdGljb249XCJGSUxFX1BERlwiXHJcblx0XHRcdFx0XHRcdFx0XHRjb2xvcj1cInByaW1hcnlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0cFRvb2x0aXA9XCJQREZcIlxyXG5cdFx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCJcclxuXHRcdFx0XHRcdFx0XHRcdChjbGlja0V2ZW50KT1cImV4cG9ydFBkZigpXCI+XHJcblx0XHRcdFx0XHRcdFx0PC9hcmlsLWJ1dHRvbj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRAaWYgKGRhdGEoKSAmJiBrZWJhYk1lbnVJdGVtcy5sZW5ndGggPiAwICkge1xyXG5cdFx0XHRcdFx0XHRcdDxkaXYgdG9vbHMgc3R5bGU9XCJwYWRkaW5nOiA0cHg7bWFyZ2luLWxlZnQ6IDRweDtib3JkZXI6MXB4IHNvbGlkICM2MzY2ZjE7Ym9yZGVyLXJhZGl1czogNnB4O2JhY2tncm91bmQtY29sb3I6ICM2MzY2ZjE7IGNvbG9yOiB3aGl0ZTtcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRbYXR0ci5yb2xlXT1cIidub25lJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgbXItMSBoZWFkZXItaWNvbiBwaS1lbGxpcHNpcy12XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0KGNsaWNrKT1cImJ1bGtPcGVyYXRpb25zLnRvZ2dsZSgkZXZlbnQpO1wiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdDxwLW1lbnVcclxuXHRcdFx0XHRcdFx0XHRcdFx0I2J1bGtPcGVyYXRpb25zXHJcblx0XHRcdFx0XHRcdFx0XHRcdFtwb3B1cF09XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W21vZGVsXT1cImtlYmFiTWVudUl0ZW1zXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0c3R5bGVDbGFzcz1cInotaW5kZXg6IDk5OTg4OTk7XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0YXBwZW5kVG89XCJib2R5XCI+PC9wLW1lbnU+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0fS0tPlxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcblx0XHQ8dHI+XHJcblx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdDx0aD5cclxuXHRcdFx0XHRcdEBpZiAoaGVhZGVyQ2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUhlYWRlckNoZWNrYm94PjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdDwvdGg+XHJcblx0XHRcdH1cclxuXHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHQ8dGg+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj7EsMWfbGVtbGVyPC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cclxuXHRcdFx0XHRcdEBpZiAoaXNSZXNpemFibGVDb2x1bW5zKCkpIHtcclxuXHRcdFx0XHRcdFx0PHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sdW1uLmZpZWxkKClcIiBbbmdTdHlsZV09XCJ7J3dpZHRoJzogY29sdW1uLndpZHRoKCkgPyBjb2x1bW4ud2lkdGgoKSA6ICdhdXRvJ31cIiBwUmVzaXphYmxlQ29sdW1uPlxyXG5cdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0e3sgY29sdW1uLmhlYWRlcigpIH19XHJcblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAaWYgKGNvbHVtbi5pc1Nob3dIZWFkZXJUb29sdGlwKCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogZ3JlZW47IHBhZGRpbmctdG9wOiA0cHg7IHBhZGRpbmctbGVmdDogNHB4XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGkgcGktaW5mby1jaXJjbGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi50b29sdGlwVGVtcGxhdGUoKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0b29sdGlwUG9zaXRpb249XCJ0b3BcIj48L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0QGlmICghaXNMYXp5KCkpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8cC1zb3J0SWNvbiBbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIj48L3Atc29ydEljb24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0QGVsc2UgaWYgKGlzU29ydGFibGUoKSl7XHJcblx0XHRcdFx0XHRcdDx0aCBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbHVtbi5maWVsZCgpXCIgW25nU3R5bGVdPVwieyd3aWR0aCc6IGNvbHVtbi53aWR0aCgpID8gY29sdW1uLndpZHRoKCkgOiAnYXV0byd9XCIgIHN0eWxlPVwibWluLXdpZHRoOjE3MHB4XCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyBjb2x1bW4uaGVhZGVyKCkgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiBncmVlbjsgcGFkZGluZy10b3A6IDRweDsgcGFkZGluZy1sZWZ0OiA0cHhcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBUZW1wbGF0ZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8cC1zb3J0SWNvbiBbZmllbGRdPVwiY29sdW1uLmZpZWxkKClcIj48L3Atc29ydEljb24+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC90aD5cclxuXHRcdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQ8dGggW25nU3R5bGVdPVwieyd3aWR0aCc6IGNvbHVtbi53aWR0aCgpID8gY29sdW1uLndpZHRoKCkgOiAnYXV0byd9XCIgIHN0eWxlPVwibWluLXdpZHRoOjE3MHB4XCI+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0XHR7eyBjb2x1bW4uaGVhZGVyKCkgfX1cclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImNvbG9yOiBncmVlbjsgcGFkZGluZy10b3A6IDRweDsgcGFkZGluZy1sZWZ0OiA0cHhcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1pbmZvLWNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRbcFRvb2x0aXBdPVwiY29sdW1uLnRvb2x0aXBUZW1wbGF0ZSgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDwvdGg+XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWl0ZW0gbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcblx0XHRAaWYgKHNlbGVjdGlvbk1vZGUoKSkge1xyXG5cdFx0XHQ8dHIgW3BTZWxlY3RhYmxlUm93XT1cIml0ZW1cIj5cclxuXHRcdFx0XHRAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcblx0XHRcdFx0XHQ8dGQgW25nU3R5bGVdPVwieyAndGV4dC1hbGlnbic6IGNvbHVtbi50eXBlKCkgPT09ICdvcGVyYXRpb25zJyA/ICdjZW50ZXInIDogY29sdW1uLnRBbGlnbigpIHx8IHRBbGlnbigpIH1cIj5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlIG5nRm9yIFtuZ0Zvck9mXT1cIltpdGVtXVwiIFtuZ0ZvclRlbXBsYXRlXT1cImNvbHVtbi50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0PC90cj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8dHIgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IGl0ZW0/LnJvd0NvbG9yID8gaXRlbT8ucm93Q29sb3IgOiAnI2ZmZicgfVwiPlxyXG5cdFx0XHRcdEBpZiAoY2hlY2tib3hTZWxlY3Rpb24oKSkge1xyXG5cdFx0XHRcdFx0PHRkPlxyXG5cdFx0XHRcdFx0XHQ8cC10YWJsZUNoZWNrYm94IFt2YWx1ZV09XCJpdGVtXCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcblx0XHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdFx0PHRkIFtuZ1N0eWxlXT1cInsgJ3RleHQtYWxpZ24nOiBjb2x1bW4udHlwZSgpID09PSAnb3BlcmF0aW9ucycgPyAnY2VudGVyJyA6IGNvbHVtbi50QWxpZ24oKSB8fCB0QWxpZ24oKSB9XCI+XHJcblx0XHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJbaXRlbV1cIiBbbmdGb3JUZW1wbGF0ZV09XCJjb2x1bW4udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PC90ZD5cclxuXHRcdFx0XHR9XHJcblx0XHRcdDwvdHI+XHJcblx0XHR9XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuXHJcblx0QGlmIChzaG93Rm9vdGVyKCkpIHtcclxuXHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJzdW1tYXJ5XCI+XHJcblx0XHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG5cdFx0PC9uZy10ZW1wbGF0ZT5cclxuXHR9XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJlbXB0eW1lc3NhZ2VcIj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5fcmVzdWx0cy5sZW5ndGhcIj57eyBub0RhdGFGb3VuZExhYmVsKCkgfX08L3RkPlxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG48L3AtdGFibGU+XHJcblxyXG48cC1vdmVybGF5UGFuZWwgc3R5bGVDbGFzcz1cImV4cG9ydC1vdmVybGF5LXBhbmVsXCI+XHJcblx0QGlmIChleHBvcnRGb3JtKSB7XHJcblx0XHQ8YXJpbC1mb3JtIFtmb3JtR3JvdXBdPVwiZXhwb3J0Rm9ybVwiIGNsYXNzPVwidy0yMHJlbVwiPlxyXG5cdFx0XHQ8YXJpbC1maWVsZCBbbGFiZWxdPVwiJ0V4cG9ydCBUaXBpJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXJhZGlvLWJ1dHRvbiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRUeXBlXCIgW29wdGlvbnNdPVwiZXhwb3J0VHlwZU9wdGlvbnNcIiAvPlxyXG5cdFx0XHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdFx0XHQ8YXJpbC1maWVsZCBbbGFiZWxdPVwiJ0Rvc3lhIMSwc21pJ1wiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiPlxyXG5cdFx0XHRcdDxhcmlsLXRleHQgY2xhc3M9XCJ3LWZ1bGxcIiBmb3JtQ29udHJvbE5hbWU9XCJleHBvcnRMYWJlbFwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHJcblx0XHRcdDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cImNvbHVtbnNcIj5cclxuXHRcdFx0XHQ8cC1vcmRlckxpc3RcclxuXHRcdFx0XHRcdCNvcmRlckxpc3RSZWZcclxuXHRcdFx0XHRcdGNsYXNzPVwiY29sLTEyXCJcclxuXHRcdFx0XHRcdFt2YWx1ZV09XCJleHBvcnRGb3JtLmNvbnRyb2xzLmNvbHVtbnMuY29udHJvbHNcIlxyXG5cdFx0XHRcdFx0W2xpc3RTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogJzIwcmVtJyB9XCJcclxuXHRcdFx0XHRcdGZpbHRlckJ5PVwidmFsdWUudGl0bGVcIj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJmaWx0ZXJcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcblx0XHRcdFx0XHRcdFx0PGFyaWwtY2hlY2tib3hcclxuXHRcdFx0XHRcdFx0XHRcdFtsYWJlbF09XCInJ1wiXHJcblx0XHRcdFx0XHRcdFx0XHRbbmdNb2RlbF09XCJpc0FsbFNlbGVjdGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiXHJcblx0XHRcdFx0XHRcdFx0XHQobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdEFsbCgkZXZlbnQpXCIgLz5cclxuXHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInAtb3JkZXJsaXN0LWZpbHRlclwiIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCInZmlsdGVyJ1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdFx0XHRcdCNmaWx0ZXJcclxuXHRcdFx0XHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2xlPVwidGV4dGJveFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdChrZXl1cCk9XCJvcmRlckxpc3RSZWYub25GaWx0ZXJLZXl1cCgkZXZlbnQpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0W2Rpc2FibGVkXT1cIm9yZGVyTGlzdFJlZi5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicC1vcmRlcmxpc3QtZmlsdGVyLWlucHV0IHAtaW5wdXR0ZXh0IHAtY29tcG9uZW50XCIgLz5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdFx0PG5nLXRlbXBsYXRlIGxldC1jb2wgcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG5cdFx0XHRcdFx0XHQ8YXJpbC1jaGVja2JveCBbbGFiZWxdPVwiY29sLnZhbHVlLnRpdGxlXCIgW2Zvcm1Db250cm9sXT1cImNvbC5jb250cm9scy5jaGVja2VkXCIgLz5cclxuXHRcdFx0XHRcdDwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9wLW9yZGVyTGlzdD5cclxuXHRcdFx0PC9uZy1jb250YWluZXI+XHJcblxyXG5cdFx0XHQ8YXJpbC1idXR0b24gY2xhc3M9XCJjb2wtMTJcIiBsYWJlbD1cIkV4cG9ydFwiIGNvbG9yPVwicHJpbWFyeVwiIChjbGlja0V2ZW50KT1cImV4cG9ydCgpXCIgLz5cclxuXHRcdDwvYXJpbC1mb3JtPlxyXG5cdH1cclxuPC9wLW92ZXJsYXlQYW5lbD5cclxuIl19
@@ -74,11 +74,11 @@ export class ExpandTableComponent {
74
74
  this.tableRef.clear();
75
75
  }
76
76
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandTableComponent, deps: [{ token: i1.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ExpandTableComponent, selector: "aril-expand-table", inputs: { kebabMenuItems: { classPropertyName: "kebabMenuItems", publicName: "kebabMenuItems", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, colspan: { classPropertyName: "colspan", publicName: "colspan", isSignal: true, isRequired: true, transformFunction: null }, checkboxSelection: { classPropertyName: "checkboxSelection", publicName: "checkboxSelection", isSignal: true, isRequired: false, transformFunction: null }, headerCheckboxSelection: { classPropertyName: "headerCheckboxSelection", publicName: "headerCheckboxSelection", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, proxy: { classPropertyName: "proxy", publicName: "proxy", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, tAlign: { classPropertyName: "tAlign", publicName: "tAlign", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showSearchTool: { classPropertyName: "showSearchTool", publicName: "showSearchTool", isSignal: true, isRequired: false, transformFunction: null }, showExportTool: { classPropertyName: "showExportTool", publicName: "showExportTool", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, noDataFoundLabel: { classPropertyName: "noDataFoundLabel", publicName: "noDataFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, tableHeader: { classPropertyName: "tableHeader", publicName: "tableHeader", isSignal: true, isRequired: false, transformFunction: null }, showTableHeader: { classPropertyName: "showTableHeader", publicName: "showTableHeader", isSignal: true, isRequired: false, transformFunction: null }, isFirstRowSelected: { classPropertyName: "isFirstRowSelected", publicName: "isFirstRowSelected", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: true, transformFunction: null }, selectedRowsInput: { classPropertyName: "selectedRowsInput", publicName: "selectedRowsInput", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "isLazy", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageEvent: "onPageEvent", selectionEvent: "selectionEvent", lazyLoadEvent: "lazyLoadEvent" }, queries: [{ propertyName: "columns", predicate: ExpandTableColumnComponent }, { propertyName: "expandAreas", predicate: TableExpandAreaComponent }], viewQueries: [{ propertyName: "tableRef", first: true, predicate: Table, descendants: true }], ngImport: i0, template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"true\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\">\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t<th>#</th>\r\n\t\t\t@for (column of columns; track $index) { @if (column.type() === 'operations') {\r\n\t\t\t<th>\r\n\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t</th>\r\n\t\t\t} @else {\r\n\t\t\t<th [pSortableColumn]=\"column.field()\">\r\n\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\tstyle=\"color: var(--primary-color); padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\tclass=\"pi pi-question-circle\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if(!isLazy()){\r\n\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</th>\r\n\t\t\t} }\r\n\t\t</tr>\r\n\t</ng-template>\r\n\t<ng-template pTemplate=\"body\" let-expandItem let-columns=\"columns\" let-expanded=\"expanded\">\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tpButton\r\n\t\t\t\t\tpRipple\r\n\t\t\t\t\t[pRowToggler]=\"expandItem\"\r\n\t\t\t\t\tclass=\"p-button-text p-button-rounded p-button-plain\"\r\n\t\t\t\t\t[icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\r\n\t\t\t</td>\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t</td>\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"rowexpansion\" let-columns=\"columns\" let-expandItem>\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"colspan()\">\r\n\t\t\t\t<div class=\"p-3\">\r\n\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"expandAreas._results[0].template\"></ng-template>\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t<ng-template pTemplate=\"summary\">\r\n\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n", dependencies: [{ kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i2.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }] }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ExpandTableComponent, selector: "aril-expand-table", inputs: { kebabMenuItems: { classPropertyName: "kebabMenuItems", publicName: "kebabMenuItems", isSignal: false, isRequired: false, transformFunction: null }, checkExpandableFieldsArray: { classPropertyName: "checkExpandableFieldsArray", publicName: "checkExpandableFieldsArray", isSignal: false, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, colspan: { classPropertyName: "colspan", publicName: "colspan", isSignal: true, isRequired: true, transformFunction: null }, checkboxSelection: { classPropertyName: "checkboxSelection", publicName: "checkboxSelection", isSignal: true, isRequired: false, transformFunction: null }, headerCheckboxSelection: { classPropertyName: "headerCheckboxSelection", publicName: "headerCheckboxSelection", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, proxy: { classPropertyName: "proxy", publicName: "proxy", isSignal: true, isRequired: false, transformFunction: null }, showFooter: { classPropertyName: "showFooter", publicName: "showFooter", isSignal: true, isRequired: false, transformFunction: null }, tAlign: { classPropertyName: "tAlign", publicName: "tAlign", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showSearchTool: { classPropertyName: "showSearchTool", publicName: "showSearchTool", isSignal: true, isRequired: false, transformFunction: null }, showExportTool: { classPropertyName: "showExportTool", publicName: "showExportTool", isSignal: true, isRequired: false, transformFunction: null }, exportFileName: { classPropertyName: "exportFileName", publicName: "exportFileName", isSignal: true, isRequired: false, transformFunction: null }, noDataFoundLabel: { classPropertyName: "noDataFoundLabel", publicName: "noDataFoundLabel", isSignal: true, isRequired: false, transformFunction: null }, tableHeader: { classPropertyName: "tableHeader", publicName: "tableHeader", isSignal: true, isRequired: false, transformFunction: null }, showTableHeader: { classPropertyName: "showTableHeader", publicName: "showTableHeader", isSignal: true, isRequired: false, transformFunction: null }, isFirstRowSelected: { classPropertyName: "isFirstRowSelected", publicName: "isFirstRowSelected", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: true, transformFunction: null }, selectedRowsInput: { classPropertyName: "selectedRowsInput", publicName: "selectedRowsInput", isSignal: true, isRequired: false, transformFunction: null }, isLazy: { classPropertyName: "isLazy", publicName: "isLazy", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onPageEvent: "onPageEvent", selectionEvent: "selectionEvent", lazyLoadEvent: "lazyLoadEvent" }, queries: [{ propertyName: "columns", predicate: ExpandTableColumnComponent }, { propertyName: "expandAreas", predicate: TableExpandAreaComponent }], viewQueries: [{ propertyName: "tableRef", first: true, predicate: Table, descendants: true }], ngImport: i0, template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"true\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\">\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t<th>#</th>\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t<th [pSortableColumn]=\"column.field()\">\r\n\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--primary-color); padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-question-circle\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\t<ng-template pTemplate=\"body\" let-expandItem let-columns=\"columns\" let-expanded=\"expanded\">\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t\t@if (checkExpandableFieldsArray) {\r\n\t\t\t\t\t@if (expandItem[checkExpandableFieldsArray].length) {\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tpButton\r\n\t\t\t\t\t\t\tpRipple\r\n\t\t\t\t\t\t\t[pRowToggler]=\"expandItem\"\r\n\t\t\t\t\t\t\tclass=\"p-button-text p-button-rounded p-button-plain\"\r\n\t\t\t\t\t\t\t[icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\r\n\t\t\t\t\t}\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tpButton\r\n\t\t\t\t\t\tpRipple\r\n\t\t\t\t\t\t[pRowToggler]=\"expandItem\"\r\n\t\t\t\t\t\tclass=\"p-button-text p-button-rounded p-button-plain\"\r\n\t\t\t\t\t\t[icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\r\n\t\t\t\t}\r\n\t\t\t</td>\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t</td>\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\t<ng-template pTemplate=\"rowexpansion\" let-columns=\"columns\" let-expandItem>\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"colspan()\">\r\n\t\t\t\t<div class=\"p-3\">\r\n\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"expandAreas._results[0].template\"></ng-template>\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n", dependencies: [{ kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i2.RowToggler, selector: "[pRowToggler]", inputs: ["pRowToggler", "pRowTogglerDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "directive", type: i3.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }] }); }
78
78
  }
79
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ExpandTableComponent, decorators: [{
80
80
  type: Component,
81
- args: [{ selector: 'aril-expand-table', template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"true\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\">\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t<th>#</th>\r\n\t\t\t@for (column of columns; track $index) { @if (column.type() === 'operations') {\r\n\t\t\t<th>\r\n\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t</th>\r\n\t\t\t} @else {\r\n\t\t\t<th [pSortableColumn]=\"column.field()\">\r\n\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\tstyle=\"color: var(--primary-color); padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\tclass=\"pi pi-question-circle\"\r\n\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if(!isLazy()){\r\n\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</th>\r\n\t\t\t} }\r\n\t\t</tr>\r\n\t</ng-template>\r\n\t<ng-template pTemplate=\"body\" let-expandItem let-columns=\"columns\" let-expanded=\"expanded\">\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t\t<button\r\n\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\tpButton\r\n\t\t\t\t\tpRipple\r\n\t\t\t\t\t[pRowToggler]=\"expandItem\"\r\n\t\t\t\t\tclass=\"p-button-text p-button-rounded p-button-plain\"\r\n\t\t\t\t\t[icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\r\n\t\t\t</td>\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t</td>\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t<ng-template pTemplate=\"rowexpansion\" let-columns=\"columns\" let-expandItem>\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"colspan()\">\r\n\t\t\t\t<div class=\"p-3\">\r\n\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"expandAreas._results[0].template\"></ng-template>\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t<ng-template pTemplate=\"summary\">\r\n\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n" }]
81
+ args: [{ selector: 'aril-expand-table', template: "<p-table\r\n\t#ref\r\n\t[value]=\"data()\"\r\n\t[dataKey]=\"dataKey()\"\r\n\t[columns]=\"columns._results\"\r\n\t[rows]=\"pageSize()\"\r\n\t[rowHover]=\"true\"\r\n\t[paginator]=\"true\"\r\n\t[lazy]=\"isLazy()\"\r\n\t[lazyLoadOnInit]=\"false\"\r\n\t[totalRecords]=\"totalRecords()\"\r\n\t[rowsPerPageOptions]=\"[10, 20, 50, 100]\"\r\n\t[filterDelay]=\"0\"\r\n\tsortMode=\"multiple\"\r\n\t(onPage)=\"onPageEvent.emit($event)\"\r\n\t(onLazyLoad)=\"handleLazyLoadEvent($event)\"\r\n\t[showCurrentPageReport]=\"true\"\r\n\tcurrentPageReportTemplate=\"Toplam : {totalRecords} kay\u0131t | Sayfa : {currentPage} / {totalPages}\"\r\n\tstyleClass=\"p-datatable-sm\">\r\n\t<ng-template pTemplate=\"header\" let-columns>\r\n\t\t<tr>\r\n\t\t\t<th>#</th>\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t@if (column.type() === 'operations') {\r\n\t\t\t\t\t<th>\r\n\t\t\t\t\t\t<div class=\"flex justify-content-center\">\u0130\u015Flemler</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t<th [pSortableColumn]=\"column.field()\">\r\n\t\t\t\t\t\t<div class=\"flex justify-content-between align-items-center gap-2\">\r\n\t\t\t\t\t\t\t{{ column.header() }}\r\n\t\t\t\t\t\t\t<div class=\"flex\">\r\n\t\t\t\t\t\t\t\t@if (column.isShowHeaderTooltip()) {\r\n\t\t\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\t\t\tstyle=\"color: var(--primary-color); padding-top: 4px; padding-left: 4px\"\r\n\t\t\t\t\t\t\t\t\t\tclass=\"pi pi-question-circle\"\r\n\t\t\t\t\t\t\t\t\t\t[pTooltip]=\"column.tooltipTemplate()\"\r\n\t\t\t\t\t\t\t\t\t\ttooltipPosition=\"top\"></i>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (!isLazy()) {\r\n\t\t\t\t\t\t\t\t\t<p-sortIcon [field]=\"column.field()\"></p-sortIcon>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</th>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\t<ng-template pTemplate=\"body\" let-expandItem let-columns=\"columns\" let-expanded=\"expanded\">\r\n\t\t<tr>\r\n\t\t\t<td>\r\n\t\t\t\t@if (checkExpandableFieldsArray) {\r\n\t\t\t\t\t@if (expandItem[checkExpandableFieldsArray].length) {\r\n\t\t\t\t\t\t<button\r\n\t\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\t\tpButton\r\n\t\t\t\t\t\t\tpRipple\r\n\t\t\t\t\t\t\t[pRowToggler]=\"expandItem\"\r\n\t\t\t\t\t\t\tclass=\"p-button-text p-button-rounded p-button-plain\"\r\n\t\t\t\t\t\t\t[icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\r\n\t\t\t\t\t}\r\n\t\t\t\t} @else {\r\n\t\t\t\t\t<button\r\n\t\t\t\t\t\ttype=\"button\"\r\n\t\t\t\t\t\tpButton\r\n\t\t\t\t\t\tpRipple\r\n\t\t\t\t\t\t[pRowToggler]=\"expandItem\"\r\n\t\t\t\t\t\tclass=\"p-button-text p-button-rounded p-button-plain\"\r\n\t\t\t\t\t\t[icon]=\"expanded ? 'pi pi-chevron-down' : 'pi pi-chevron-right'\"></button>\r\n\t\t\t\t}\r\n\t\t\t</td>\r\n\t\t\t@for (column of columns; track $index) {\r\n\t\t\t\t<td [ngStyle]=\"{ 'text-align': column.type() === 'operations' ? 'center' : column.tAlign() || tAlign() }\">\r\n\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"column.template\"></ng-template>\r\n\t\t\t\t</td>\r\n\t\t\t}\r\n\t\t</tr>\r\n\t</ng-template>\r\n\t<ng-template pTemplate=\"rowexpansion\" let-columns=\"columns\" let-expandItem>\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"colspan()\">\r\n\t\t\t\t<div class=\"p-3\">\r\n\t\t\t\t\t<ng-template ngFor [ngForOf]=\"[expandItem]\" [ngForTemplate]=\"expandAreas._results[0].template\"></ng-template>\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n\r\n\t@if (showFooter()) {\r\n\t\t<ng-template pTemplate=\"summary\">\r\n\t\t\t<ng-content select=\"[footer]\"></ng-content>\r\n\t\t</ng-template>\r\n\t}\r\n\r\n\t<ng-template pTemplate=\"emptymessage\">\r\n\t\t<tr>\r\n\t\t\t<td [attr.colspan]=\"columns._results.length\">{{ noDataFoundLabel() }}</td>\r\n\t\t</tr>\r\n\t</ng-template>\r\n</p-table>\r\n" }]
82
82
  }], ctorParameters: () => [{ type: i1.PrimeNGConfig }], propDecorators: { onPageEvent: [{
83
83
  type: Output
84
84
  }], selectionEvent: [{
@@ -96,5 +96,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
96
96
  args: [Table]
97
97
  }], kebabMenuItems: [{
98
98
  type: Input
99
+ }], checkExpandableFieldsArray: [{
100
+ type: Input
99
101
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS1leHBhbmQvc3JjL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdGFibGUtZXhwYW5kL3NyYy90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQWMsMEJBQTBCLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFlLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFFdEY7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBVSxDQUFDO0FBYy9DLE1BQU0sT0FBTyxvQkFBb0I7SUFtQ2hDLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbEN0QyxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUs1RCxtQkFBYyxHQUFlLEVBQUUsQ0FBQztRQUV6QyxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBUyxDQUFD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LFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNzQyxPQUFPO3NCQUFuRCxlQUFlO3VCQUFDLDBCQUEwQjtnQkFDQSxXQUFXO3NCQUFyRCxlQUFlO3VCQUFDLHdCQUF3QjtnQkFFdkIsUUFBUTtzQkFBekIsU0FBUzt1QkFBQyxLQUFLO2dCQUNQLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZHJlbiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIGVmZmVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtLCBQcmltZU5HQ29uZmlnIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5cclxuaW1wb3J0IHsgUHJveHlUeXBlcyB9IGZyb20gJ2FyaWwvaHR0cCc7XHJcblxyXG5pbXBvcnQgeyB0cmFubGF0aW9ucyB9IGZyb20gJy4vaTE4bic7XHJcbmltcG9ydCB7IEFsaWduVHlwZXMsIEV4cGFuZFRhYmxlQ29sdW1uQ29tcG9uZW50LCBUYWJsZUNvbHVtbnMgfSBmcm9tICcuL3RhYmxlLWNvbHVtbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBFeHBhbmRBcmVhcywgVGFibGVFeHBhbmRBcmVhQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1leHBhbmQtYXJlYS5jb21wb25lbnQnO1xyXG5cclxuLyogVE9ETyA6XHJcbiAqIHNlcnZlci1zaWRlLXByb3h5IChQcm94eVR5cGVzLlNlcnZlclNpZGUpXHJcbiAqIHNlYXJjaCAmIGNvbHVtIGZpbHRlciAmIHNvcnRcclxuICogcGFnaW5hdGlvbiBvcGVyYXRpb25cclxuICogUXVlcnkgU2lnbmFsc1xyXG4gKi9cclxuY29uc3QgcGFnZU9wdGlvbnMgPSBbMTAsIDIwLCA1MCwgMTAwXSBhcyBjb25zdDtcclxuXHJcbnR5cGUgU2VsZWN0aW9uVHlwZXMgPSAnc2luZ2xlJyB8ICdtdWx0aXBsZSc7XHJcblxyXG5pbnRlcmZhY2UgSUtlYmFiTWVudUl0ZW0ge1xyXG5cdGljb246IHN0cmluZztcclxuXHRsYWJlbDogc3RyaW5nO1xyXG5cdG9uQ2xpY2s6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdhcmlsLWV4cGFuZC10YWJsZScsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZFRhYmxlQ29tcG9uZW50IHtcclxuXHRAT3V0cHV0KCkgb25QYWdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIHNlbGVjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBsYXp5TG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBDb250ZW50Q2hpbGRyZW4oRXhwYW5kVGFibGVDb2x1bW5Db21wb25lbnQpIGNvbHVtbnMhOiBUYWJsZUNvbHVtbnM7XHJcblx0QENvbnRlbnRDaGlsZHJlbihUYWJsZUV4cGFuZEFyZWFDb21wb25lbnQpIGV4cGFuZEFyZWFzITogRXhwYW5kQXJlYXM7XHJcblxyXG5cdEBWaWV3Q2hpbGQoVGFibGUpIHRhYmxlUmVmITogVGFibGU7XHJcblx0QElucHV0KCkga2ViYWJNZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcblx0ZGF0YSA9IGlucHV0LnJlcXVpcmVkPGFueVtdPigpO1xyXG5cdGNvbHNwYW4gPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcblx0Y2hlY2tib3hTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdGhlYWRlckNoZWNrYm94U2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuXHRwYWdlU2l6ZSA9IGlucHV0PCh0eXBlb2YgcGFnZU9wdGlvbnMpW251bWJlcl0+KDEwKTtcclxuXHRwcm94eSA9IGlucHV0PFByb3h5VHlwZXM+KFByb3h5VHlwZXMuTmF0aXZlKTtcclxuXHRzaG93Rm9vdGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHRBbGlnbiA9IGlucHV0PEFsaWduVHlwZXM+KCdsZWZ0Jyk7XHJcblx0c2VsZWN0aW9uTW9kZSA9IGlucHV0PFNlbGVjdGlvblR5cGVzPigpO1xyXG5cdHNob3dTZWFyY2hUb29sID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0c2hvd0V4cG9ydFRvb2wgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRleHBvcnRGaWxlTmFtZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdG5vRGF0YUZvdW5kTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdObyBEYXRhIEZvdW5kJyk7XHJcblx0dGFibGVIZWFkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRzaG93VGFibGVIZWFkZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aXNGaXJzdFJvd1NlbGVjdGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGRhdGFLZXkgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcblx0c2VsZWN0ZWRSb3dzSW5wdXQgPSBpbnB1dDxhbnk+KFtdKTtcclxuXHRpc0xhenkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dG90YWxSZWNvcmRzID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHJcblx0ZmlsdGVyVGV4dCE6IHN0cmluZztcclxuXHRzZWxlY3RlZFJvd3M6IGFueTtcclxuXHRwYWdlT3B0aW9ucyA9IHBhZ2VPcHRpb25zO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHByaW1lbmdDb25maWc6IFByaW1lTkdDb25maWcpIHtcclxuXHRcdHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih0cmFubGF0aW9ucyk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuaXNGaXJzdFJvd1NlbGVjdGVkKCkgJiYgdGhpcy5kYXRhKCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuZGF0YSgpWzBdO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0aW9uRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkUm93c0lucHV0KCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5wdXQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVMYXp5TG9hZEV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG5ld0V2ZW50RGF0YSA9IHtcclxuXHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRwYWdlU2l6ZTogZXZlbnQucm93cyxcclxuXHRcdFx0XHRwYWdlTnVtYmVyOiBldmVudC5maXJzdCAvIGV2ZW50LnJvd3MgKyAxXHJcblx0XHRcdH0sXHJcblx0XHRcdHNvcnQ6IGV2ZW50Lm11bHRpU29ydE1ldGEsXHJcblx0XHRcdGZpbHRlcjogZXZlbnQuZmlsdGVyc1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5sYXp5TG9hZEV2ZW50LmVtaXQobmV3RXZlbnREYXRhKTtcclxuXHR9XHJcblxyXG5cdGNsZWFyKCkge1xyXG5cdFx0dGhpcy50YWJsZVJlZi52YWx1ZSA9IFtdO1xyXG5cdFx0dGhpcy50YWJsZVJlZi5jbGVhcigpO1xyXG5cdH1cclxufVxyXG4iLCI8cC10YWJsZVxyXG5cdCNyZWZcclxuXHRbdmFsdWVdPVwiZGF0YSgpXCJcclxuXHRbZGF0YUtleV09XCJkYXRhS2V5KClcIlxyXG5cdFtjb2x1bW5zXT1cImNvbHVtbnMuX3Jlc3VsdHNcIlxyXG5cdFtyb3dzXT1cInBhZ2VTaXplKClcIlxyXG5cdFtyb3dIb3Zlcl09XCJ0cnVlXCJcclxuXHRbcGFnaW5hdG9yXT1cInRydWVcIlxyXG5cdFtsYXp5XT1cImlzTGF6eSgpXCJcclxuXHRbbGF6eUxvYWRPbkluaXRdPVwiZmFsc2VcIlxyXG5cdFt0b3RhbFJlY29yZHNdPVwidG90YWxSZWNvcmRzKClcIlxyXG5cdFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwiWzEwLCAyMCwgNTAsIDEwMF1cIlxyXG5cdFtmaWx0ZXJEZWxheV09XCIwXCJcclxuXHRzb3J0TW9kZT1cIm11bHRpcGxlXCJcclxuXHQob25QYWdlKT1cIm9uUGFnZUV2ZW50LmVtaXQoJGV2ZW50KVwiXHJcblx0KG9uTGF6eUxvYWQpPVwiaGFuZGxlTGF6eUxvYWRFdmVudCgkZXZlbnQpXCJcclxuXHRbc2hvd0N1cnJlbnRQYWdlUmVwb3J0XT1cInRydWVcIlxyXG5cdGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJUb3BsYW0gOiB7dG90YWxSZWNvcmRzfSBrYXnEsXQgfCBTYXlmYSA6IHtjdXJyZW50UGFnZX0gLyB7dG90YWxQYWdlc31cIlxyXG5cdHN0eWxlQ2xhc3M9XCJwLWRhdGF0YWJsZS1zbVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPiM8L3RoPlxyXG5cdFx0XHRAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7IEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdDx0aD5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+xLDFn2xlbWxlcjwvZGl2PlxyXG5cdFx0XHQ8L3RoPlxyXG5cdFx0XHR9IEBlbHNlIHtcclxuXHRcdFx0PHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sdW1uLmZpZWxkKClcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuXHRcdFx0XHRcdHt7IGNvbHVtbi5oZWFkZXIoKSB9fVxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXhcIj5cclxuXHRcdFx0XHRcdFx0QGlmIChjb2x1bW4uaXNTaG93SGVhZGVyVG9vbHRpcCgpKSB7XHJcblx0XHRcdFx0XHRcdDxpXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS1jb2xvcik7IHBhZGRpbmctdG9wOiA0cHg7IHBhZGRpbmctbGVmdDogNHB4XCJcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cInBpIHBpLXF1ZXN0aW9uLWNpcmNsZVwiXHJcblx0XHRcdFx0XHRcdFx0W3BUb29sdGlwXT1cImNvbHVtbi50b29sdGlwVGVtcGxhdGUoKVwiXHJcblx0XHRcdFx0XHRcdFx0dG9vbHRpcFBvc2l0aW9uPVwidG9wXCI+PC9pPlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdEBpZighaXNMYXp5KCkpe1xyXG5cdFx0XHRcdFx0XHRcdDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiPjwvcC1zb3J0SWNvbj5cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvdGg+XHJcblx0XHRcdH0gfVxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWV4cGFuZEl0ZW0gbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdHR5cGU9XCJidXR0b25cIlxyXG5cdFx0XHRcdFx0cEJ1dHRvblxyXG5cdFx0XHRcdFx0cFJpcHBsZVxyXG5cdFx0XHRcdFx0W3BSb3dUb2dnbGVyXT1cImV4cGFuZEl0ZW1cIlxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tcGxhaW5cIlxyXG5cdFx0XHRcdFx0W2ljb25dPVwiZXhwYW5kZWQgPyAncGkgcGktY2hldnJvbi1kb3duJyA6ICdwaSBwaS1jaGV2cm9uLXJpZ2h0J1wiPjwvYnV0dG9uPlxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0XHRAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcblx0XHRcdDx0ZCBbbmdTdHlsZV09XCJ7ICd0ZXh0LWFsaWduJzogY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnID8gJ2NlbnRlcicgOiBjb2x1bW4udEFsaWduKCkgfHwgdEFsaWduKCkgfVwiPlxyXG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJbZXhwYW5kSXRlbV1cIiBbbmdGb3JUZW1wbGF0ZV09XCJjb2x1bW4udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0XHR9XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyb3dleHBhbnNpb25cIiAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LWV4cGFuZEl0ZW0+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHNwYW4oKVwiPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwLTNcIj5cclxuXHRcdFx0XHRcdDxuZy10ZW1wbGF0ZSBuZ0ZvciBbbmdGb3JPZl09XCJbZXhwYW5kSXRlbV1cIiBbbmdGb3JUZW1wbGF0ZV09XCJleHBhbmRBcmVhcy5fcmVzdWx0c1swXS50ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdDwvdGQ+XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblxyXG5cdEBpZiAoc2hvd0Zvb3RlcigpKSB7XHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInN1bW1hcnlcIj5cclxuXHRcdDxuZy1jb250ZW50IHNlbGVjdD1cIltmb290ZXJdXCI+PC9uZy1jb250ZW50PlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblx0fVxyXG5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZW1wdHltZXNzYWdlXCI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMuX3Jlc3VsdHMubGVuZ3RoXCI+e3sgbm9EYXRhRm91bmRMYWJlbCgpIH19PC90ZD5cclxuXHRcdDwvdHI+XHJcblx0PC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG4iXX0=
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC91aS90YWJsZS1leHBhbmQvc3JjL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdGFibGUtZXhwYW5kL3NyYy90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsSCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQWMsMEJBQTBCLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUFlLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7QUFFdEY7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBVSxDQUFDO0FBYy9DLE1BQU0sT0FBTyxvQkFBb0I7SUFvQ2hDLFlBQW9CLGFBQTRCO1FBQTVCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbkN0QyxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3pELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUQsa0JBQWEsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUs1RCxtQkFBYyxHQUFlLEVBQUUsQ0FBQztRQUd6QyxTQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBUyxDQUFD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LFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNzQyxPQUFPO3NCQUFuRCxlQUFlO3VCQUFDLDBCQUEwQjtnQkFDQSxXQUFXO3NCQUFyRCxlQUFlO3VCQUFDLHdCQUF3QjtnQkFFdkIsUUFBUTtzQkFBekIsU0FBUzt1QkFBQyxLQUFLO2dCQUNQLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csMEJBQTBCO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkLCBlZmZlY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSwgUHJpbWVOR0NvbmZpZyB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuXHJcbmltcG9ydCB7IFByb3h5VHlwZXMgfSBmcm9tICdhcmlsL2h0dHAnO1xyXG5cclxuaW1wb3J0IHsgdHJhbmxhdGlvbnMgfSBmcm9tICcuL2kxOG4nO1xyXG5pbXBvcnQgeyBBbGlnblR5cGVzLCBFeHBhbmRUYWJsZUNvbHVtbkNvbXBvbmVudCwgVGFibGVDb2x1bW5zIH0gZnJvbSAnLi90YWJsZS1jb2x1bW4uY29tcG9uZW50JztcclxuaW1wb3J0IHsgRXhwYW5kQXJlYXMsIFRhYmxlRXhwYW5kQXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtZXhwYW5kLWFyZWEuY29tcG9uZW50JztcclxuXHJcbi8qIFRPRE8gOlxyXG4gKiBzZXJ2ZXItc2lkZS1wcm94eSAoUHJveHlUeXBlcy5TZXJ2ZXJTaWRlKVxyXG4gKiBzZWFyY2ggJiBjb2x1bSBmaWx0ZXIgJiBzb3J0XHJcbiAqIHBhZ2luYXRpb24gb3BlcmF0aW9uXHJcbiAqIFF1ZXJ5IFNpZ25hbHNcclxuICovXHJcbmNvbnN0IHBhZ2VPcHRpb25zID0gWzEwLCAyMCwgNTAsIDEwMF0gYXMgY29uc3Q7XHJcblxyXG50eXBlIFNlbGVjdGlvblR5cGVzID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xyXG5cclxuaW50ZXJmYWNlIElLZWJhYk1lbnVJdGVtIHtcclxuXHRpY29uOiBzdHJpbmc7XHJcblx0bGFiZWw6IHN0cmluZztcclxuXHRvbkNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC1leHBhbmQtdGFibGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4cGFuZFRhYmxlQ29tcG9uZW50IHtcclxuXHRAT3V0cHV0KCkgb25QYWdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblx0QE91dHB1dCgpIHNlbGVjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBPdXRwdXQoKSBsYXp5TG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cdEBDb250ZW50Q2hpbGRyZW4oRXhwYW5kVGFibGVDb2x1bW5Db21wb25lbnQpIGNvbHVtbnMhOiBUYWJsZUNvbHVtbnM7XHJcblx0QENvbnRlbnRDaGlsZHJlbihUYWJsZUV4cGFuZEFyZWFDb21wb25lbnQpIGV4cGFuZEFyZWFzITogRXhwYW5kQXJlYXM7XHJcblxyXG5cdEBWaWV3Q2hpbGQoVGFibGUpIHRhYmxlUmVmITogVGFibGU7XHJcblx0QElucHV0KCkga2ViYWJNZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHRASW5wdXQoKSBjaGVja0V4cGFuZGFibGVGaWVsZHNBcnJheSE6IHN0cmluZztcclxuXHJcblx0ZGF0YSA9IGlucHV0LnJlcXVpcmVkPGFueVtdPigpO1xyXG5cdGNvbHNwYW4gPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcblx0Y2hlY2tib3hTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPigpO1xyXG5cdGhlYWRlckNoZWNrYm94U2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oKTtcclxuXHRwYWdlU2l6ZSA9IGlucHV0PCh0eXBlb2YgcGFnZU9wdGlvbnMpW251bWJlcl0+KDEwKTtcclxuXHRwcm94eSA9IGlucHV0PFByb3h5VHlwZXM+KFByb3h5VHlwZXMuTmF0aXZlKTtcclxuXHRzaG93Rm9vdGVyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHRBbGlnbiA9IGlucHV0PEFsaWduVHlwZXM+KCdsZWZ0Jyk7XHJcblx0c2VsZWN0aW9uTW9kZSA9IGlucHV0PFNlbGVjdGlvblR5cGVzPigpO1xyXG5cdHNob3dTZWFyY2hUb29sID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XHJcblx0c2hvd0V4cG9ydFRvb2wgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcclxuXHRleHBvcnRGaWxlTmFtZSA9IGlucHV0PHN0cmluZz4oJycpO1xyXG5cdG5vRGF0YUZvdW5kTGFiZWwgPSBpbnB1dDxzdHJpbmc+KCdObyBEYXRhIEZvdW5kJyk7XHJcblx0dGFibGVIZWFkZXIgPSBpbnB1dDxzdHJpbmc+KCcnKTtcclxuXHRzaG93VGFibGVIZWFkZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0aXNGaXJzdFJvd1NlbGVjdGVkID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGRhdGFLZXkgPSBpbnB1dC5yZXF1aXJlZDxzdHJpbmc+KCk7XHJcblx0c2VsZWN0ZWRSb3dzSW5wdXQgPSBpbnB1dDxhbnk+KFtdKTtcclxuXHRpc0xhenkgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0dG90YWxSZWNvcmRzID0gaW5wdXQ8bnVtYmVyPigwKTtcclxuXHJcblx0ZmlsdGVyVGV4dCE6IHN0cmluZztcclxuXHRzZWxlY3RlZFJvd3M6IGFueTtcclxuXHRwYWdlT3B0aW9ucyA9IHBhZ2VPcHRpb25zO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHByaW1lbmdDb25maWc6IFByaW1lTkdDb25maWcpIHtcclxuXHRcdHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih0cmFubGF0aW9ucyk7XHJcblxyXG5cdFx0ZWZmZWN0KCgpID0+IHtcclxuXHRcdFx0aWYgKHRoaXMuaXNGaXJzdFJvd1NlbGVjdGVkKCkgJiYgdGhpcy5kYXRhKCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuZGF0YSgpWzBdO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0aW9uRXZlbnQuZW1pdCh0aGlzLnNlbGVjdGVkUm93cyk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnNlbGVjdGVkUm93c0lucHV0KCkpIHtcclxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuc2VsZWN0ZWRSb3dzSW5wdXQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRoYW5kbGVMYXp5TG9hZEV2ZW50KGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuXHRcdGNvbnN0IG5ld0V2ZW50RGF0YSA9IHtcclxuXHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRwYWdlU2l6ZTogZXZlbnQucm93cyxcclxuXHRcdFx0XHRwYWdlTnVtYmVyOiBldmVudC5maXJzdCAvIGV2ZW50LnJvd3MgKyAxXHJcblx0XHRcdH0sXHJcblx0XHRcdHNvcnQ6IGV2ZW50Lm11bHRpU29ydE1ldGEsXHJcblx0XHRcdGZpbHRlcjogZXZlbnQuZmlsdGVyc1xyXG5cdFx0fTtcclxuXHRcdHRoaXMubGF6eUxvYWRFdmVudC5lbWl0KG5ld0V2ZW50RGF0YSk7XHJcblx0fVxyXG5cclxuXHRjbGVhcigpIHtcclxuXHRcdHRoaXMudGFibGVSZWYudmFsdWUgPSBbXTtcclxuXHRcdHRoaXMudGFibGVSZWYuY2xlYXIoKTtcclxuXHR9XHJcbn1cclxuIiwiPHAtdGFibGVcclxuXHQjcmVmXHJcblx0W3ZhbHVlXT1cImRhdGEoKVwiXHJcblx0W2RhdGFLZXldPVwiZGF0YUtleSgpXCJcclxuXHRbY29sdW1uc109XCJjb2x1bW5zLl9yZXN1bHRzXCJcclxuXHRbcm93c109XCJwYWdlU2l6ZSgpXCJcclxuXHRbcm93SG92ZXJdPVwidHJ1ZVwiXHJcblx0W3BhZ2luYXRvcl09XCJ0cnVlXCJcclxuXHRbbGF6eV09XCJpc0xhenkoKVwiXHJcblx0W2xhenlMb2FkT25Jbml0XT1cImZhbHNlXCJcclxuXHRbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3JkcygpXCJcclxuXHRbcm93c1BlclBhZ2VPcHRpb25zXT1cIlsxMCwgMjAsIDUwLCAxMDBdXCJcclxuXHRbZmlsdGVyRGVsYXldPVwiMFwiXHJcblx0c29ydE1vZGU9XCJtdWx0aXBsZVwiXHJcblx0KG9uUGFnZSk9XCJvblBhZ2VFdmVudC5lbWl0KCRldmVudClcIlxyXG5cdChvbkxhenlMb2FkKT1cImhhbmRsZUxhenlMb2FkRXZlbnQoJGV2ZW50KVwiXHJcblx0W3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuXHRjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlPVwiVG9wbGFtIDoge3RvdGFsUmVjb3Jkc30ga2F5xLF0IHwgU2F5ZmEgOiB7Y3VycmVudFBhZ2V9IC8ge3RvdGFsUGFnZXN9XCJcclxuXHRzdHlsZUNsYXNzPVwicC1kYXRhdGFibGUtc21cIj5cclxuXHQ8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aD4jPC90aD5cclxuXHRcdFx0QGZvciAoY29sdW1uIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCkge1xyXG5cdFx0XHRcdEBpZiAoY29sdW1uLnR5cGUoKSA9PT0gJ29wZXJhdGlvbnMnKSB7XHJcblx0XHRcdFx0XHQ8dGg+XHJcblx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIj7EsMWfbGVtbGVyPC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0PHRoIFtwU29ydGFibGVDb2x1bW5dPVwiY29sdW1uLmZpZWxkKClcIj5cclxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcblx0XHRcdFx0XHRcdFx0e3sgY29sdW1uLmhlYWRlcigpIH19XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdEBpZiAoY29sdW1uLmlzU2hvd0hlYWRlclRvb2x0aXAoKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlPVwiY29sb3I6IHZhcigtLXByaW1hcnktY29sb3IpOyBwYWRkaW5nLXRvcDogNHB4OyBwYWRkaW5nLWxlZnQ6IDRweFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwaSBwaS1xdWVzdGlvbi1jaXJjbGVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFtwVG9vbHRpcF09XCJjb2x1bW4udG9vbHRpcFRlbXBsYXRlKClcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRvb2x0aXBQb3NpdGlvbj1cInRvcFwiPjwvaT5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdEBpZiAoIWlzTGF6eSgpKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2x1bW4uZmllbGQoKVwiPjwvcC1zb3J0SWNvbj5cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L3RoPlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LWV4cGFuZEl0ZW0gbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCIgbGV0LWV4cGFuZGVkPVwiZXhwYW5kZWRcIj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHRcdEBpZiAoY2hlY2tFeHBhbmRhYmxlRmllbGRzQXJyYXkpIHtcclxuXHRcdFx0XHRcdEBpZiAoZXhwYW5kSXRlbVtjaGVja0V4cGFuZGFibGVGaWVsZHNBcnJheV0ubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdDxidXR0b25cclxuXHRcdFx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdFx0XHRwQnV0dG9uXHJcblx0XHRcdFx0XHRcdFx0cFJpcHBsZVxyXG5cdFx0XHRcdFx0XHRcdFtwUm93VG9nZ2xlcl09XCJleHBhbmRJdGVtXCJcclxuXHRcdFx0XHRcdFx0XHRjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1wbGFpblwiXHJcblx0XHRcdFx0XHRcdFx0W2ljb25dPVwiZXhwYW5kZWQgPyAncGkgcGktY2hldnJvbi1kb3duJyA6ICdwaSBwaS1jaGV2cm9uLXJpZ2h0J1wiPjwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gQGVsc2Uge1xyXG5cdFx0XHRcdFx0PGJ1dHRvblxyXG5cdFx0XHRcdFx0XHR0eXBlPVwiYnV0dG9uXCJcclxuXHRcdFx0XHRcdFx0cEJ1dHRvblxyXG5cdFx0XHRcdFx0XHRwUmlwcGxlXHJcblx0XHRcdFx0XHRcdFtwUm93VG9nZ2xlcl09XCJleHBhbmRJdGVtXCJcclxuXHRcdFx0XHRcdFx0Y2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tcGxhaW5cIlxyXG5cdFx0XHRcdFx0XHRbaWNvbl09XCJleHBhbmRlZCA/ICdwaSBwaS1jaGV2cm9uLWRvd24nIDogJ3BpIHBpLWNoZXZyb24tcmlnaHQnXCI+PC9idXR0b24+XHJcblx0XHRcdFx0fVxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0XHRAZm9yIChjb2x1bW4gb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcblx0XHRcdFx0PHRkIFtuZ1N0eWxlXT1cInsgJ3RleHQtYWxpZ24nOiBjb2x1bW4udHlwZSgpID09PSAnb3BlcmF0aW9ucycgPyAnY2VudGVyJyA6IGNvbHVtbi50QWxpZ24oKSB8fCB0QWxpZ24oKSB9XCI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiW2V4cGFuZEl0ZW1dXCIgW25nRm9yVGVtcGxhdGVdPVwiY29sdW1uLnRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHQ8L3RkPlxyXG5cdFx0XHR9XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJvd2V4cGFuc2lvblwiIGxldC1jb2x1bW5zPVwiY29sdW1uc1wiIGxldC1leHBhbmRJdGVtPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2xzcGFuKClcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicC0zXCI+XHJcblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgbmdGb3IgW25nRm9yT2ZdPVwiW2V4cGFuZEl0ZW1dXCIgW25nRm9yVGVtcGxhdGVdPVwiZXhwYW5kQXJlYXMuX3Jlc3VsdHNbMF0udGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3RkPlxyXG5cdFx0PC90cj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cclxuXHRAaWYgKHNob3dGb290ZXIoKSkge1xyXG5cdFx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInN1bW1hcnlcIj5cclxuXHRcdFx0PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Zvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdH1cclxuXHJcblx0PG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQgW2F0dHIuY29sc3Bhbl09XCJjb2x1bW5zLl9yZXN1bHRzLmxlbmd0aFwiPnt7IG5vRGF0YUZvdW5kTGFiZWwoKSB9fTwvdGQ+XHJcblx0XHQ8L3RyPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcbjwvcC10YWJsZT5cclxuIl19