@hitsoft/abp.kadooglu 1.0.11 → 1.0.13

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.
Files changed (34) hide show
  1. package/esm2020/lib/hit-components/hit-carrier-person/hit-carrier-person-form/hit-carrier-person-form.component.mjs +4 -3
  2. package/esm2020/lib/hit-components/hit-entry-weighing/hit-entry-weighing-form/hit-entry-weighing-form.component.mjs +278 -109
  3. package/esm2020/lib/hit-components/hit-entry-weighing/hit-entry-weighing-list/hit-entry-weighing-list.component.mjs +40 -29
  4. package/esm2020/lib/hit-components/hit-factory-entry/hit-factory-entry-form/hit-factory-entry-form.component.mjs +52 -6
  5. package/esm2020/lib/hit-components/hit-factory-entry/hit-factory-entry-list/hit-factory-entry-list.component.mjs +3 -3
  6. package/esm2020/lib/hit-components/hit-knt-item-esl/hit-knt-item-esl-form/hit-knt-item-esl-form.component.mjs +4 -4
  7. package/esm2020/lib/hit-components/hit-vehicle-type/hit-vehicle-type-form/hit-vehicle-type-form.component.mjs +1 -1
  8. package/esm2020/lib/hit-proxy/hit-carrier-person/models.mjs +1 -1
  9. package/esm2020/lib/hit-proxy/hit-entry-weighing/hit-entry-weighing.service.mjs +2 -2
  10. package/esm2020/lib/hit-proxy/hit-entry-weighing/models.mjs +1 -1
  11. package/esm2020/lib/hit-proxy/hit-factory-entry/models.mjs +1 -1
  12. package/esm2020/lib/hit-proxy/hit-purchase-delivery-note/hit-purchase-delivery-note.service.mjs +4 -1
  13. package/esm2020/lib/hit-proxy/hit-purchase-delivery-note/models.mjs +1 -1
  14. package/esm2020/lib/hit-proxy/hit-stock-transfer/hit-stock-transfer.service.mjs +4 -1
  15. package/esm2020/lib/hit-proxy/hit-stock-transfer/models.mjs +1 -1
  16. package/esm2020/lib/services/scale-signalr.service.mjs +4 -1
  17. package/esm2020/lib/shared/hit-modal/hit-modal.component.mjs +68 -16
  18. package/fesm2015/hitsoft-abp.kadooglu.mjs +456 -166
  19. package/fesm2015/hitsoft-abp.kadooglu.mjs.map +1 -1
  20. package/fesm2020/hitsoft-abp.kadooglu.mjs +444 -160
  21. package/fesm2020/hitsoft-abp.kadooglu.mjs.map +1 -1
  22. package/lib/hit-components/hit-entry-weighing/hit-entry-weighing-form/hit-entry-weighing-form.component.d.ts +20 -7
  23. package/lib/hit-components/hit-entry-weighing/hit-entry-weighing-list/hit-entry-weighing-list.component.d.ts +8 -1
  24. package/lib/hit-components/hit-factory-entry/hit-factory-entry-form/hit-factory-entry-form.component.d.ts +2 -0
  25. package/lib/hit-proxy/hit-carrier-person/models.d.ts +2 -0
  26. package/lib/hit-proxy/hit-entry-weighing/models.d.ts +5 -0
  27. package/lib/hit-proxy/hit-factory-entry/models.d.ts +13 -4
  28. package/lib/hit-proxy/hit-purchase-delivery-note/hit-purchase-delivery-note.service.d.ts +1 -0
  29. package/lib/hit-proxy/hit-purchase-delivery-note/models.d.ts +6 -0
  30. package/lib/hit-proxy/hit-stock-transfer/hit-stock-transfer.service.d.ts +1 -0
  31. package/lib/hit-proxy/hit-stock-transfer/models.d.ts +2 -0
  32. package/lib/services/scale-signalr.service.d.ts +2 -0
  33. package/lib/shared/hit-modal/hit-modal.component.d.ts +25 -2
  34. package/package.json +1 -1
@@ -23,6 +23,7 @@ export class HitModalComponent {
23
23
  this.showDateFilter = false;
24
24
  this.defaultDateFrom = null;
25
25
  this.defaultDateTo = null;
26
+ this.tabs = [];
26
27
  this.selected = new EventEmitter();
27
28
  this.data = [];
28
29
  this.openModal = false;
@@ -30,6 +31,9 @@ export class HitModalComponent {
30
31
  this.textDisplay = '';
31
32
  this.filterDateFrom = null;
32
33
  this.filterDateTo = null;
34
+ // Tab mode state
35
+ this.activeTabIndex = 0;
36
+ this.tabStates = [];
33
37
  }
34
38
  /** Pre-populate display text (e.g. in edit mode). Setter ensures reactive updates. */
35
39
  set editingData(val) {
@@ -46,9 +50,39 @@ export class HitModalComponent {
46
50
  }
47
51
  clickForOpenModal() {
48
52
  this.openModal = true;
49
- this.filterDateFrom = this.defaultDateFrom ?? null;
50
- this.filterDateTo = this.defaultDateTo ?? null;
51
- this.loadData();
53
+ if (this.tabs.length > 0) {
54
+ this.activeTabIndex = 0;
55
+ this.tabStates = this.tabs.map(tab => ({
56
+ data: [],
57
+ isLoading: false,
58
+ isLoaded: false,
59
+ filterDateFrom: tab.defaultDateFrom ?? null,
60
+ filterDateTo: tab.defaultDateTo ?? null,
61
+ }));
62
+ }
63
+ else {
64
+ this.filterDateFrom = this.defaultDateFrom ?? null;
65
+ this.filterDateTo = this.defaultDateTo ?? null;
66
+ this.loadData();
67
+ }
68
+ }
69
+ onTabClick(index) {
70
+ this.activeTabIndex = index;
71
+ if (!this.tabStates[index].isLoaded && !this.tabStates[index].isLoading) {
72
+ this.loadTabData(index);
73
+ }
74
+ }
75
+ loadTabData(index) {
76
+ const tab = this.tabs[index];
77
+ const state = this.tabStates[index];
78
+ state.isLoading = true;
79
+ const params = tab.showDateFilter
80
+ ? { dateFrom: this.toDateStr(state.filterDateFrom), dateTo: this.toDateStr(state.filterDateTo) }
81
+ : undefined;
82
+ tab.loadFn(params).subscribe({
83
+ next: (result) => { state.data = result; state.isLoading = false; state.isLoaded = true; },
84
+ error: () => { state.data = []; state.isLoading = false; state.isLoaded = true; },
85
+ });
52
86
  }
53
87
  loadData() {
54
88
  if (this.loadFn) {
@@ -75,35 +109,49 @@ export class HitModalComponent {
75
109
  onDateFilterChanged() {
76
110
  this.loadData();
77
111
  }
78
- onToolbarPreparing(e) {
79
- if (!this.showDateFilter)
112
+ onToolbarPreparing(e, tabIndex) {
113
+ const useTabs = this.tabs.length > 0 && tabIndex !== undefined;
114
+ const showFilter = useTabs ? this.tabs[tabIndex].showDateFilter : this.showDateFilter;
115
+ if (!showFilter)
80
116
  return;
81
117
  e.toolbarOptions.items.unshift({
82
118
  location: 'before',
83
119
  widget: 'dxDateBox',
84
120
  options: {
85
- value: this.filterDateFrom,
121
+ value: useTabs ? this.tabStates[tabIndex].filterDateFrom : this.filterDateFrom,
86
122
  type: 'date',
87
123
  displayFormat: 'dd.MM.yyyy',
88
124
  width: 140,
89
125
  label: this.localizationService.instant('Kadooglu::StartDate'),
90
126
  onValueChanged: (args) => {
91
- this.filterDateFrom = args.value;
92
- this.onDateFilterChanged();
127
+ if (useTabs) {
128
+ this.tabStates[tabIndex].filterDateFrom = args.value;
129
+ this.loadTabData(tabIndex);
130
+ }
131
+ else {
132
+ this.filterDateFrom = args.value;
133
+ this.onDateFilterChanged();
134
+ }
93
135
  },
94
136
  },
95
137
  }, {
96
138
  location: 'before',
97
139
  widget: 'dxDateBox',
98
140
  options: {
99
- value: this.filterDateTo,
141
+ value: useTabs ? this.tabStates[tabIndex].filterDateTo : this.filterDateTo,
100
142
  type: 'date',
101
143
  displayFormat: 'dd.MM.yyyy',
102
144
  width: 140,
103
145
  label: this.localizationService.instant('Kadooglu::EndDate'),
104
146
  onValueChanged: (args) => {
105
- this.filterDateTo = args.value;
106
- this.onDateFilterChanged();
147
+ if (useTabs) {
148
+ this.tabStates[tabIndex].filterDateTo = args.value;
149
+ this.loadTabData(tabIndex);
150
+ }
151
+ else {
152
+ this.filterDateTo = args.value;
153
+ this.onDateFilterChanged();
154
+ }
107
155
  },
108
156
  },
109
157
  });
@@ -118,14 +166,16 @@ export class HitModalComponent {
118
166
  const selectedData = this.dxdataInstance?.instance.getSelectedRowsData() ?? [];
119
167
  const selectedKeys = this.dxdataInstance?.instance.getSelectedRowKeys() ?? [];
120
168
  if (selectedKeys.length > 0) {
121
- this.textDisplay = selectedData[0]?.[this.displayName] ?? '';
169
+ const dn = this.tabs.length > 0 ? this.tabs[this.activeTabIndex].displayName : this.displayName;
170
+ this.textDisplay = selectedData[0]?.[dn] ?? '';
122
171
  this.selected.emit(selectedData[0]);
123
172
  }
124
173
  }
125
174
  setTitleOnDoubleClick(e) {
126
175
  this.openModal = false;
127
176
  if (e?.data) {
128
- this.textDisplay = e.data[this.displayName] ?? '';
177
+ const dn = this.tabs.length > 0 ? this.tabs[this.activeTabIndex].displayName : this.displayName;
178
+ this.textDisplay = e.data[dn] ?? '';
129
179
  this.selected.emit(e.data);
130
180
  }
131
181
  }
@@ -135,10 +185,10 @@ export class HitModalComponent {
135
185
  }
136
186
  }
137
187
  HitModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitModalComponent, deps: [{ token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
138
- HitModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitModalComponent, selector: "hit-lookup-select", inputs: { displayName: "displayName", keyExpr: "keyExpr", modalSize: "modalSize", getFn: "getFn", loadFn: "loadFn", columns: "columns", isVisible: "isVisible", disabled: "disabled", readOnly: "readOnly", showDateFilter: "showDateFilter", defaultDateFrom: "defaultDateFrom", defaultDateTo: "defaultDateTo", editingData: "editingData" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "dxdataInstance", first: true, predicate: ["dxdataInstance"], descendants: true }], ngImport: i0, template: "<div class=\"hit-lookup-group\">\r\n <dx-text-box\r\n [ngModel]=\"textDisplay\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"true\"\r\n maxlength=\"64\">\r\n </dx-text-box>\r\n <div class=\"hit-lookup-actions\" *ngIf=\"isVisible && !readOnly\">\r\n <button\r\n class=\"hit-lookup-btn hit-lookup-btn-clear\"\r\n type=\"button\"\r\n *ngIf=\"textDisplay\"\r\n (click)=\"clearValue()\"\r\n [disabled]=\"disabled\"\r\n title=\"Temizle\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n <button\r\n class=\"hit-lookup-btn\"\r\n type=\"button\"\r\n (click)=\"clickForOpenModal()\"\r\n [disabled]=\"disabled\"\r\n title=\"Ara\">\r\n <i class=\"fa fa-search\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"openModal\" [options]=\"{ size: modalSize }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'AbpUi::Search' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <!-- Loading overlay -->\r\n <div *ngIf=\"isLoading\" class=\"d-flex flex-column align-items-center justify-content-center\" style=\"height: 55vh;\">\r\n <div class=\"spinner-border text-primary mb-3\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n <span class=\"text-muted\">Veriler y\u00FCkleniyor...</span>\r\n </div>\r\n <dx-data-grid\r\n *ngIf=\"!isLoading\"\r\n #dxdataInstance\r\n [columns]=\"columns\"\r\n [dataSource]=\"data\"\r\n [keyExpr]=\"keyExpr\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [focusedRowEnabled]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n style=\"height: 55vh;\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event)\"\r\n (onRowDblClick)=\"setTitleOnDoubleClick($event)\">\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[50, 100, 200]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"button\" (click)=\"setTitle()\">\r\n {{ 'AbpUi::Select' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", styles: ["@charset \"UTF-8\";hit-lookup-select{display:block}hit-lookup-select .hit-lookup-group{display:flex;align-items:stretch;width:100%}hit-lookup-select .hit-lookup-group dx-text-box{flex:1 1 auto;min-width:0}hit-lookup-select .hit-lookup-group dx-text-box .dx-textbox{height:100%}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;height:36px}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor-input{font-weight:600}hit-lookup-select .hit-lookup-group .hit-lookup-actions{display:flex;flex-shrink:0}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid #0d6efd;background:transparent;color:#0d6efd;font-size:.85rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;border-radius:0;outline:none}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:hover:not(:disabled){background-color:#0d6efd;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:active:not(:disabled){background-color:#0b5ed7;border-color:#0b5ed7;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:disabled{opacity:.5;cursor:not-allowed}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear{border-color:#dc3545;color:#dc3545;font-size:.75rem;width:30px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear:hover:not(:disabled){background-color:#dc3545;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i4.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i4.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i5.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i6.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i6.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i6.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i5.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], encapsulation: i0.ViewEncapsulation.None });
188
+ HitModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitModalComponent, selector: "hit-lookup-select", inputs: { displayName: "displayName", keyExpr: "keyExpr", modalSize: "modalSize", getFn: "getFn", loadFn: "loadFn", columns: "columns", isVisible: "isVisible", disabled: "disabled", readOnly: "readOnly", showDateFilter: "showDateFilter", defaultDateFrom: "defaultDateFrom", defaultDateTo: "defaultDateTo", tabs: "tabs", editingData: "editingData" }, outputs: { selected: "selected" }, viewQueries: [{ propertyName: "dxdataInstance", first: true, predicate: ["dxdataInstance"], descendants: true }], ngImport: i0, template: "<div class=\"hit-lookup-group\">\r\n <dx-text-box\r\n [ngModel]=\"textDisplay\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"true\"\r\n maxlength=\"64\">\r\n </dx-text-box>\r\n <div class=\"hit-lookup-actions\" *ngIf=\"isVisible && !readOnly\">\r\n <button\r\n class=\"hit-lookup-btn hit-lookup-btn-clear\"\r\n type=\"button\"\r\n *ngIf=\"textDisplay\"\r\n (click)=\"clearValue()\"\r\n [disabled]=\"disabled\"\r\n title=\"Temizle\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n <button\r\n class=\"hit-lookup-btn\"\r\n type=\"button\"\r\n (click)=\"clickForOpenModal()\"\r\n [disabled]=\"disabled\"\r\n title=\"Ara\">\r\n <i class=\"fa fa-search\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"openModal\" [options]=\"{ size: modalSize }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'AbpUi::Search' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n\r\n <!-- TABS MODE -->\r\n <ng-container *ngIf=\"tabs.length > 0\">\r\n <ul class=\"nav nav-tabs mb-2\">\r\n <li class=\"nav-item\" *ngFor=\"let tab of tabs; let i = index\">\r\n <button\r\n class=\"nav-link\"\r\n [class.active]=\"activeTabIndex === i\"\r\n type=\"button\"\r\n (click)=\"onTabClick(i)\">\r\n {{ tab.title }}\r\n </button>\r\n </li>\r\n </ul>\r\n\r\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\r\n <ng-container *ngIf=\"activeTabIndex === i\">\r\n <!-- Hen\u00FCz t\u0131klanmad\u0131 -->\r\n <div\r\n *ngIf=\"!tabStates[i]?.isLoaded && !tabStates[i]?.isLoading\"\r\n class=\"d-flex align-items-center justify-content-center text-muted\"\r\n style=\"height: 55vh;\">\r\n {{ 'Kadooglu::ClickTabToLoad' | abpLocalization }}\r\n </div>\r\n <!-- Y\u00FCkleniyor -->\r\n <div\r\n *ngIf=\"tabStates[i]?.isLoading\"\r\n class=\"d-flex flex-column align-items-center justify-content-center\"\r\n style=\"height: 55vh;\">\r\n <div class=\"spinner-border text-primary mb-3\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n <span class=\"text-muted\">Veriler y\u00FCkleniyor...</span>\r\n </div>\r\n <!-- Grid -->\r\n <dx-data-grid\r\n *ngIf=\"tabStates[i]?.isLoaded && !tabStates[i]?.isLoading\"\r\n #dxdataInstance\r\n [columns]=\"tab.columns\"\r\n [dataSource]=\"tabStates[i].data\"\r\n [keyExpr]=\"tab.keyExpr ?? 'code'\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [focusedRowEnabled]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n style=\"height: 55vh;\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event, i)\"\r\n (onRowDblClick)=\"setTitleOnDoubleClick($event)\">\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[50, 100, 200]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- SINGLE MODE -->\r\n <ng-container *ngIf=\"!tabs.length\">\r\n <!-- Loading overlay -->\r\n <div *ngIf=\"isLoading\" class=\"d-flex flex-column align-items-center justify-content-center\" style=\"height: 55vh;\">\r\n <div class=\"spinner-border text-primary mb-3\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n <span class=\"text-muted\">Veriler y\u00FCkleniyor...</span>\r\n </div>\r\n <dx-data-grid\r\n *ngIf=\"!isLoading\"\r\n #dxdataInstance\r\n [columns]=\"columns\"\r\n [dataSource]=\"data\"\r\n [keyExpr]=\"keyExpr\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [focusedRowEnabled]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n style=\"height: 55vh;\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event)\"\r\n (onRowDblClick)=\"setTitleOnDoubleClick($event)\">\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[50, 100, 200]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </ng-container>\r\n\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"button\" (click)=\"setTitle()\">\r\n {{ 'AbpUi::Select' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", styles: ["@charset \"UTF-8\";hit-lookup-select{display:block}hit-lookup-select .hit-lookup-group{display:flex;align-items:stretch;width:100%}hit-lookup-select .hit-lookup-group dx-text-box{flex:1 1 auto;min-width:0}hit-lookup-select .hit-lookup-group dx-text-box .dx-textbox{height:100%}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;height:36px}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor-input{font-weight:600}hit-lookup-select .hit-lookup-group .hit-lookup-actions{display:flex;flex-shrink:0}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid #0d6efd;background:transparent;color:#0d6efd;font-size:.85rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;border-radius:0;outline:none}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:hover:not(:disabled){background-color:#0d6efd;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:active:not(:disabled){background-color:#0b5ed7;border-color:#0b5ed7;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:disabled{opacity:.5;cursor:not-allowed}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear{border-color:#dc3545;color:#dc3545;font-size:.75rem;width:30px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear:hover:not(:disabled){background-color:#dc3545;color:#fff}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i4.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i4.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i5.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExporting", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i6.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i6.DxoFilterPanelComponent, selector: "dxo-filter-panel", inputs: ["customizeText", "filterEnabled", "texts", "visible"], outputs: ["filterEnabledChange"] }, { kind: "component", type: i6.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i6.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "label", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i6.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i6.DxoScrollingComponent, selector: "dxo-scrolling", inputs: ["columnRenderingMode", "mode", "preloadEnabled", "renderAsync", "rowRenderingMode", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative"] }, { kind: "component", type: i6.DxoSelectionComponent, selector: "dxo-selection", inputs: ["allowSelectAll", "deferred", "mode", "selectAllMode", "showCheckBoxesMode", "recursive"] }, { kind: "component", type: i6.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "component", type: i5.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }], encapsulation: i0.ViewEncapsulation.None });
139
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitModalComponent, decorators: [{
140
190
  type: Component,
141
- args: [{ selector: 'hit-lookup-select', encapsulation: ViewEncapsulation.None, template: "<div class=\"hit-lookup-group\">\r\n <dx-text-box\r\n [ngModel]=\"textDisplay\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"true\"\r\n maxlength=\"64\">\r\n </dx-text-box>\r\n <div class=\"hit-lookup-actions\" *ngIf=\"isVisible && !readOnly\">\r\n <button\r\n class=\"hit-lookup-btn hit-lookup-btn-clear\"\r\n type=\"button\"\r\n *ngIf=\"textDisplay\"\r\n (click)=\"clearValue()\"\r\n [disabled]=\"disabled\"\r\n title=\"Temizle\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n <button\r\n class=\"hit-lookup-btn\"\r\n type=\"button\"\r\n (click)=\"clickForOpenModal()\"\r\n [disabled]=\"disabled\"\r\n title=\"Ara\">\r\n <i class=\"fa fa-search\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"openModal\" [options]=\"{ size: modalSize }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'AbpUi::Search' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n <!-- Loading overlay -->\r\n <div *ngIf=\"isLoading\" class=\"d-flex flex-column align-items-center justify-content-center\" style=\"height: 55vh;\">\r\n <div class=\"spinner-border text-primary mb-3\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n <span class=\"text-muted\">Veriler y\u00FCkleniyor...</span>\r\n </div>\r\n <dx-data-grid\r\n *ngIf=\"!isLoading\"\r\n #dxdataInstance\r\n [columns]=\"columns\"\r\n [dataSource]=\"data\"\r\n [keyExpr]=\"keyExpr\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [focusedRowEnabled]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n style=\"height: 55vh;\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event)\"\r\n (onRowDblClick)=\"setTitleOnDoubleClick($event)\">\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[50, 100, 200]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"button\" (click)=\"setTitle()\">\r\n {{ 'AbpUi::Select' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", styles: ["@charset \"UTF-8\";hit-lookup-select{display:block}hit-lookup-select .hit-lookup-group{display:flex;align-items:stretch;width:100%}hit-lookup-select .hit-lookup-group dx-text-box{flex:1 1 auto;min-width:0}hit-lookup-select .hit-lookup-group dx-text-box .dx-textbox{height:100%}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;height:36px}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor-input{font-weight:600}hit-lookup-select .hit-lookup-group .hit-lookup-actions{display:flex;flex-shrink:0}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid #0d6efd;background:transparent;color:#0d6efd;font-size:.85rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;border-radius:0;outline:none}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:hover:not(:disabled){background-color:#0d6efd;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:active:not(:disabled){background-color:#0b5ed7;border-color:#0b5ed7;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:disabled{opacity:.5;cursor:not-allowed}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear{border-color:#dc3545;color:#dc3545;font-size:.75rem;width:30px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear:hover:not(:disabled){background-color:#dc3545;color:#fff}\n"] }]
191
+ args: [{ selector: 'hit-lookup-select', encapsulation: ViewEncapsulation.None, template: "<div class=\"hit-lookup-group\">\r\n <dx-text-box\r\n [ngModel]=\"textDisplay\"\r\n [disabled]=\"disabled\"\r\n [readOnly]=\"true\"\r\n maxlength=\"64\">\r\n </dx-text-box>\r\n <div class=\"hit-lookup-actions\" *ngIf=\"isVisible && !readOnly\">\r\n <button\r\n class=\"hit-lookup-btn hit-lookup-btn-clear\"\r\n type=\"button\"\r\n *ngIf=\"textDisplay\"\r\n (click)=\"clearValue()\"\r\n [disabled]=\"disabled\"\r\n title=\"Temizle\">\r\n <i class=\"fa fa-times\"></i>\r\n </button>\r\n <button\r\n class=\"hit-lookup-btn\"\r\n type=\"button\"\r\n (click)=\"clickForOpenModal()\"\r\n [disabled]=\"disabled\"\r\n title=\"Ara\">\r\n <i class=\"fa fa-search\"></i>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<abp-modal [(visible)]=\"openModal\" [options]=\"{ size: modalSize }\">\r\n <ng-template #abpHeader>\r\n <h3>{{ 'AbpUi::Search' | abpLocalization }}</h3>\r\n </ng-template>\r\n <ng-template #abpBody>\r\n\r\n <!-- TABS MODE -->\r\n <ng-container *ngIf=\"tabs.length > 0\">\r\n <ul class=\"nav nav-tabs mb-2\">\r\n <li class=\"nav-item\" *ngFor=\"let tab of tabs; let i = index\">\r\n <button\r\n class=\"nav-link\"\r\n [class.active]=\"activeTabIndex === i\"\r\n type=\"button\"\r\n (click)=\"onTabClick(i)\">\r\n {{ tab.title }}\r\n </button>\r\n </li>\r\n </ul>\r\n\r\n <ng-container *ngFor=\"let tab of tabs; let i = index\">\r\n <ng-container *ngIf=\"activeTabIndex === i\">\r\n <!-- Hen\u00FCz t\u0131klanmad\u0131 -->\r\n <div\r\n *ngIf=\"!tabStates[i]?.isLoaded && !tabStates[i]?.isLoading\"\r\n class=\"d-flex align-items-center justify-content-center text-muted\"\r\n style=\"height: 55vh;\">\r\n {{ 'Kadooglu::ClickTabToLoad' | abpLocalization }}\r\n </div>\r\n <!-- Y\u00FCkleniyor -->\r\n <div\r\n *ngIf=\"tabStates[i]?.isLoading\"\r\n class=\"d-flex flex-column align-items-center justify-content-center\"\r\n style=\"height: 55vh;\">\r\n <div class=\"spinner-border text-primary mb-3\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n <span class=\"text-muted\">Veriler y\u00FCkleniyor...</span>\r\n </div>\r\n <!-- Grid -->\r\n <dx-data-grid\r\n *ngIf=\"tabStates[i]?.isLoaded && !tabStates[i]?.isLoading\"\r\n #dxdataInstance\r\n [columns]=\"tab.columns\"\r\n [dataSource]=\"tabStates[i].data\"\r\n [keyExpr]=\"tab.keyExpr ?? 'code'\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [focusedRowEnabled]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n style=\"height: 55vh;\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event, i)\"\r\n (onRowDblClick)=\"setTitleOnDoubleClick($event)\">\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[50, 100, 200]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- SINGLE MODE -->\r\n <ng-container *ngIf=\"!tabs.length\">\r\n <!-- Loading overlay -->\r\n <div *ngIf=\"isLoading\" class=\"d-flex flex-column align-items-center justify-content-center\" style=\"height: 55vh;\">\r\n <div class=\"spinner-border text-primary mb-3\" style=\"width: 3rem; height: 3rem;\" role=\"status\">\r\n <span class=\"visually-hidden\">Y\u00FCkleniyor...</span>\r\n </div>\r\n <span class=\"text-muted\">Veriler y\u00FCkleniyor...</span>\r\n </div>\r\n <dx-data-grid\r\n *ngIf=\"!isLoading\"\r\n #dxdataInstance\r\n [columns]=\"columns\"\r\n [dataSource]=\"data\"\r\n [keyExpr]=\"keyExpr\"\r\n [showRowLines]=\"true\"\r\n [showBorders]=\"true\"\r\n [hoverStateEnabled]=\"true\"\r\n [repaintChangesOnly]=\"true\"\r\n [allowColumnResizing]=\"true\"\r\n columnResizingMode=\"widget\"\r\n [allowColumnReordering]=\"true\"\r\n [columnAutoWidth]=\"true\"\r\n [focusedRowEnabled]=\"true\"\r\n [columnHidingEnabled]=\"true\"\r\n style=\"height: 55vh;\"\r\n (onToolbarPreparing)=\"onToolbarPreparing($event)\"\r\n (onRowDblClick)=\"setTitleOnDoubleClick($event)\">\r\n <dxo-pager\r\n [visible]=\"true\"\r\n [showInfo]=\"true\"\r\n [allowedPageSizes]=\"[50, 100, 200]\"\r\n [showNavigationButtons]=\"true\"\r\n [showPageSizeSelector]=\"true\">\r\n </dxo-pager>\r\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\r\n <dxo-header-filter [allowSearch]=\"true\" [visible]=\"true\"></dxo-header-filter>\r\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\r\n <dxo-filter-panel [visible]=\"true\"></dxo-filter-panel>\r\n <dxo-sorting mode=\"single\"></dxo-sorting>\r\n <dxo-scrolling mode=\"horizontal\" showScrollbar=\"always\"></dxo-scrolling>\r\n <dxo-selection mode=\"single\"></dxo-selection>\r\n </dx-data-grid>\r\n </ng-container>\r\n\r\n </ng-template>\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpUi::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" buttonType=\"button\" (click)=\"setTitle()\">\r\n {{ 'AbpUi::Select' | abpLocalization }}\r\n </abp-button>\r\n </ng-template>\r\n</abp-modal>\r\n", styles: ["@charset \"UTF-8\";hit-lookup-select{display:block}hit-lookup-select .hit-lookup-group{display:flex;align-items:stretch;width:100%}hit-lookup-select .hit-lookup-group dx-text-box{flex:1 1 auto;min-width:0}hit-lookup-select .hit-lookup-group dx-text-box .dx-textbox{height:100%}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;height:36px}hit-lookup-select .hit-lookup-group dx-text-box .dx-texteditor-input{font-weight:600}hit-lookup-select .hit-lookup-group .hit-lookup-actions{display:flex;flex-shrink:0}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid #0d6efd;background:transparent;color:#0d6efd;font-size:.85rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;border-radius:0;outline:none}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:hover:not(:disabled){background-color:#0d6efd;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:active:not(:disabled){background-color:#0b5ed7;border-color:#0b5ed7;color:#fff}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:disabled{opacity:.5;cursor:not-allowed}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear{border-color:#dc3545;color:#dc3545;font-size:.75rem;width:30px}hit-lookup-select .hit-lookup-group .hit-lookup-actions .hit-lookup-btn.hit-lookup-btn-clear:hover:not(:disabled){background-color:#dc3545;color:#fff}\n"] }]
142
192
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; }, propDecorators: { dxdataInstance: [{
143
193
  type: ViewChild,
144
194
  args: ['dxdataInstance', { static: false }]
@@ -166,9 +216,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
166
216
  type: Input
167
217
  }], defaultDateTo: [{
168
218
  type: Input
219
+ }], tabs: [{
220
+ type: Input
169
221
  }], editingData: [{
170
222
  type: Input
171
223
  }], selected: [{
172
224
  type: Output
173
225
  }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1L3NyYy9saWIvc2hhcmVkL2hpdC1tb2RhbC9oaXQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUvc3JjL2xpYi9zaGFyZWQvaGl0LW1vZGFsL2hpdC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBV3ZCLE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFFbkQsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsWUFBTyxHQUFHLE1BQU0sQ0FBQztRQUNqQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzFCLG1GQUFtRjtRQUMxRSxVQUFLLEdBQVUsRUFBRSxDQUFDO1FBQzNCLDZHQUE2RztRQUNwRyxXQUFNLEdBQWlELElBQUksQ0FBQztRQUM1RCxZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLG9CQUFlLEdBQWdCLElBQUksQ0FBQztRQUNwQyxrQkFBYSxHQUFnQixJQUFJLENBQUM7UUFnQmpDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTdDLFNBQUksR0FBVSxFQUFFLENBQUM7UUFDakIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixjQUFTLEdBQUcsS0FBSyxD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O2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBSUYsV0FBVztzQkFEZCxLQUFLO2dCQWFJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2hpdC1sb29rdXAtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LW1vZGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oaXQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0TW9kYWxDb21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2R4ZGF0YUluc3RhbmNlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGR4ZGF0YUluc3RhbmNlOiBEeERhdGFHcmlkQ29tcG9uZW50O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGxvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UpIHt9XHJcblxyXG4gIEBJbnB1dCgpIGRpc3BsYXlOYW1lID0gJyc7XHJcbiAgQElucHV0KCkga2V5RXhwciA9ICdjb2RlJztcclxuICBASW5wdXQoKSBtb2RhbFNpemUgPSAneGwnO1xyXG4gIC8qKiBEYXRhIGFycmF5IHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUgbG9va3VwIG1vZGFsIGdyaWQgKGVhZ2VyIC8gcHJlLWxvYWRlZCkuICovXHJcbiAgQElucHV0KCkgZ2V0Rm46IGFueVtdID0gW107XHJcbiAgLyoqIEZ1bmN0aW9uIHJldHVybmluZyBPYnNlcnZhYmxlIOKAlCBjYWxsZWQgbGF6aWx5IHdoZW4gdGhlIG1vZGFsIG9wZW5zLiBPcHRpb25hbGx5IHJlY2VpdmVzIGZpbHRlciBwYXJhbXMuICovXHJcbiAgQElucHV0KCkgbG9hZEZuOiAoKHBhcmFtcz86IGFueSkgPT4gT2JzZXJ2YWJsZTxhbnlbXT4pIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgY29sdW1uczogYW55W10gPSBbXTtcclxuICBASW5wdXQoKSBpc1Zpc2libGUgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVhZE9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93RGF0ZUZpbHRlciA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHREYXRlRnJvbTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHREYXRlVG86IERhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIFByZS1wb3B1bGF0ZSBkaXNwbGF5IHRleHQgKGUuZy4gaW4gZWRpdCBtb2RlKS4gU2V0dGVyIGVuc3VyZXMgcmVhY3RpdmUgdXBkYXRlcy4gKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBlZGl0aW5nRGF0YSh2YWw6IGFueSkge1xyXG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnRleHREaXNwbGF5ID0gJyc7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLnRleHREaXNwbGF5ID0gdmFsO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlOYW1lICYmIHZhbFt0aGlzLmRpc3BsYXlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudGV4dERpc3BsYXkgPSB2YWxbdGhpcy5kaXNwbGF5TmFtZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgZGF0YTogYW55W10gPSBbXTtcclxuICBvcGVuTW9kYWwgPSBmYWxzZTtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICB0ZXh0RGlzcGxheSA9ICcnO1xyXG4gIGZpbHRlckRhdGVGcm9tOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgZmlsdGVyRGF0ZVRvOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNsaWNrRm9yT3Blbk1vZGFsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuTW9kYWwgPSB0cnVlO1xyXG4gICAgdGhpcy5maWx0ZXJEYXRlRnJvbSA9IHRoaXMuZGVmYXVsdERhdGVGcm9tID8/IG51bGw7XHJcbiAgICB0aGlzLmZpbHRlckRhdGVUbyA9IHRoaXMuZGVmYXVsdERhdGVUbyA/PyBudWxsO1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZERhdGEoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5sb2FkRm4pIHtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5zaG93RGF0ZUZpbHRlclxyXG4gICAgICAgID8geyBkYXRlRnJvbTogdGhpcy50b0RhdGVTdHIodGhpcy5maWx0ZXJEYXRlRnJvbSksIGRhdGVUbzogdGhpcy50b0RhdGVTdHIodGhpcy5maWx0ZXJEYXRlVG8pIH1cclxuICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgICAgdGhpcy5sb2FkRm4ocGFyYW1zKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5kYXRhID0gdGhpcy5nZXRGbjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGF0ZUZpbHRlckNoYW5nZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWREYXRhKCk7XHJcbiAgfVxyXG5cclxuICBvblRvb2xiYXJQcmVwYXJpbmcoZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2hvd0RhdGVGaWx0ZXIpIHJldHVybjtcclxuICAgIGUudG9vbGJhck9wdGlvbnMuaXRlbXMudW5zaGlmdChcclxuICAgICAge1xyXG4gICAgICAgIGxvY2F0aW9uOiAnYmVmb3JlJyxcclxuICAgICAgICB3aWRnZXQ6ICdkeERhdGVCb3gnLFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlckRhdGVGcm9tLFxyXG4gICAgICAgICAgdHlwZTogJ2RhdGUnLFxyXG4gICAgICAgICAgZGlzcGxheUZvcm1hdDogJ2RkLk1NLnl5eXknLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlN0YXJ0RGF0ZScpLFxyXG4gICAgICAgICAgb25WYWx1ZUNoYW5nZWQ6IChhcmdzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRlRnJvbSA9IGFyZ3MudmFsdWU7XHJcbiAgICAgICAgICAgIHRoaXMub25EYXRlRmlsdGVyQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbG9jYXRpb246ICdiZWZvcmUnLFxyXG4gICAgICAgIHdpZGdldDogJ2R4RGF0ZUJveCcsXHJcbiAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyRGF0ZVRvLFxyXG4gICAgICAgICAgdHlwZTogJ2RhdGUnLFxyXG4gICAgICAgICAgZGlzcGxheUZvcm1hdDogJ2RkLk1NLnl5eXknLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OkVuZERhdGUnKSxcclxuICAgICAgICAgIG9uVmFsdWVDaGFuZ2VkOiAoYXJnczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRGF0ZVRvID0gYXJncy52YWx1ZTtcclxuICAgICAgICAgICAgdGhpcy5vbkRhdGVGaWx0ZXJDaGFuZ2VkKCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0RhdGVTdHIoZGF0ZTogRGF0ZSB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbCA9IGZhbHNlO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5keGRhdGFJbnN0YW5jZT8uaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dzRGF0YSgpID8/IFtdO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5keGRhdGFJbnN0YW5jZT8uaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dLZXlzKCkgPz8gW107XHJcbiAgICBpZiAoc2VsZWN0ZWRLZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy50ZXh0RGlzcGxheSA9IHNlbGVjdGVkRGF0YVswXT8uW3RoaXMuZGlzcGxheU5hbWVdID8/ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoc2VsZWN0ZWREYXRhWzBdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldFRpdGxlT25Eb3VibGVDbGljayhlOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub3Blbk1vZGFsID0gZmFsc2U7XHJcbiAgICBpZiAoZT8uZGF0YSkge1xyXG4gICAgICB0aGlzLnRleHREaXNwbGF5ID0gZS5kYXRhW3RoaXMuZGlzcGxheU5hbWVdID8/ICcnO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkLmVtaXQoZS5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsZWFyVmFsdWUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRleHREaXNwbGF5ID0gJyc7XHJcbiAgICB0aGlzLnNlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJoaXQtbG9va3VwLWdyb3VwXCI+XHJcbiAgPGR4LXRleHQtYm94XHJcbiAgICBbbmdNb2RlbF09XCJ0ZXh0RGlzcGxheVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW3JlYWRPbmx5XT1cInRydWVcIlxyXG4gICAgbWF4bGVuZ3RoPVwiNjRcIj5cclxuICA8L2R4LXRleHQtYm94PlxyXG4gIDxkaXYgY2xhc3M9XCJoaXQtbG9va3VwLWFjdGlvbnNcIiAqbmdJZj1cImlzVmlzaWJsZSAmJiAhcmVhZE9ubHlcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgY2xhc3M9XCJoaXQtbG9va3VwLWJ0biBoaXQtbG9va3VwLWJ0bi1jbGVhclwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAqbmdJZj1cInRleHREaXNwbGF5XCJcclxuICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWUoKVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIHRpdGxlPVwiVGVtaXpsZVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiaGl0LWxvb2t1cC1idG5cIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgKGNsaWNrKT1cImNsaWNrRm9yT3Blbk1vZGFsKClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICB0aXRsZT1cIkFyYVwiPlxyXG4gICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaFwiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJvcGVuTW9kYWxcIiBbb3B0aW9uc109XCJ7IHNpemU6IG1vZGFsU2l6ZSB9XCI+XHJcbiAgPG5nLXRlbXBsYXRlICNhYnBIZWFkZXI+XHJcbiAgICA8aDM+e3sgJ0FicFVpOjpTZWFyY2gnIHwgYWJwTG9jYWxpemF0aW9uIH19PC9oMz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgIDwhLS0gTG9hZGluZyBvdmVybGF5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDU1dmg7XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnkgbWItM1wiIHN0eWxlPVwid2lkdGg6IDNyZW07IGhlaWdodDogM3JlbTtcIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Zw7xrbGVuaXlvci4uLjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZFwiPlZlcmlsZXIgecO8a2xlbml5b3IuLi48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkeC1kYXRhLWdyaWRcclxuICAgICAgKm5nSWY9XCIhaXNMb2FkaW5nXCJcclxuICAgICAgI2R4ZGF0YUluc3RhbmNlXHJcbiAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICBbZGF0YVNvdXJjZV09XCJkYXRhXCJcclxuICAgICAgW2tleUV4cHJdPVwia2V5RXhwclwiXHJcbiAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCJcclxuICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCJcclxuICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCJcclxuICAgICAgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCJcclxuICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgW2ZvY3VzZWRSb3dFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgc3R5bGU9XCJoZWlnaHQ6IDU1dmg7XCJcclxuICAgICAgKG9uVG9vbGJhclByZXBhcmluZyk9XCJvblRvb2xiYXJQcmVwYXJpbmcoJGV2ZW50KVwiXHJcbiAgICAgIChvblJvd0RibENsaWNrKT1cInNldFRpdGxlT25Eb3VibGVDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgIDxkeG8tcGFnZXJcclxuICAgICAgICBbdmlzaWJsZV09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0luZm9dPVwidHJ1ZVwiXHJcbiAgICAgICAgW2FsbG93ZWRQYWdlU2l6ZXNdPVwiWzUwLCAxMDAsIDIwMF1cIlxyXG4gICAgICAgIFtzaG93TmF2aWdhdGlvbkJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgPC9keG8tcGFnZXI+XHJcbiAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCI1MFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgPGR4by1maWx0ZXItcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1wYW5lbD5cclxuICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zZWxlY3Rpb24+XHJcbiAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldFRpdGxlKClcIj5cclxuICAgICAge3sgJ0FicFVpOjpTZWxlY3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2FicC1idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcbiJdfQ==
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2thZG9vZ2x1L3NyYy9saWIvc2hhcmVkL2hpdC1tb2RhbC9oaXQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Fkb29nbHUvc3JjL2xpYi9zaGFyZWQvaGl0LW1vZGFsL2hpdC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7O0FBOEJ2QixNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQW9CLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBRW5ELGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxNQUFNLENBQUM7UUFDakIsY0FBUyxHQUFHLElBQUksQ0FBQztRQUMxQixtRkFBbUY7UUFDMUUsVUFBSyxHQUFVLEVBQUUsQ0FBQztRQUMzQiw2R0FBNkc7UUFDcEcsV0FBTSxHQUFpRCxJQUFJLENBQUM7UUFDNUQsWUFBTyxHQUFVLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixvQkFBZSxHQUFnQixJQUFJLENBQUM7UUFDcEMsa0JBQWEsR0FBZ0IsSUFBSSxDQUFDO1FBQ2xDLFNBQUksR0FBZ0IsRUFBRSxDQUFDO1FBZ0J0QixhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUU3QyxTQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ2pCLGNBQVMsR0FBRyxLQUFL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QUM1QjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7OEdBN0xVLGlCQUFpQjtrR0FBakIsaUJBQWlCLDRpQkNyQzlCLDhsTkFpS0E7MkZENUhhLGlCQUFpQjtrQkFON0IsU0FBUzsrQkFDRSxtQkFBbUIsaUJBR2QsaUJBQWlCLENBQUMsSUFBSTswR0FHVyxjQUFjO3NCQUE3RCxTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJckMsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUYsV0FBVztzQkFEZCxLQUFLO2dCQWFJLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IER4RGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cFRhYiB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBsb2FkRm46IChwYXJhbXM/OiBhbnkpID0+IE9ic2VydmFibGU8YW55W10+O1xyXG4gIGNvbHVtbnM6IGFueVtdO1xyXG4gIGtleUV4cHI/OiBzdHJpbmc7XHJcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcclxuICBzaG93RGF0ZUZpbHRlcj86IGJvb2xlYW47XHJcbiAgZGVmYXVsdERhdGVGcm9tPzogRGF0ZSB8IG51bGw7XHJcbiAgZGVmYXVsdERhdGVUbz86IERhdGUgfCBudWxsO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTG9va3VwVGFiU3RhdGUge1xyXG4gIGRhdGE6IGFueVtdO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcclxuICBpc0xvYWRlZDogYm9vbGVhbjtcclxuICBmaWx0ZXJEYXRlRnJvbTogRGF0ZSB8IG51bGw7XHJcbiAgZmlsdGVyRGF0ZVRvOiBEYXRlIHwgbnVsbDtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoaXQtbG9va3VwLXNlbGVjdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGl0LW1vZGFsLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdE1vZGFsQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdkeGRhdGFJbnN0YW5jZScsIHsgc3RhdGljOiBmYWxzZSB9KSBkeGRhdGFJbnN0YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlKSB7fVxyXG5cclxuICBASW5wdXQoKSBkaXNwbGF5TmFtZSA9ICcnO1xyXG4gIEBJbnB1dCgpIGtleUV4cHIgPSAnY29kZSc7XHJcbiAgQElucHV0KCkgbW9kYWxTaXplID0gJ3hsJztcclxuICAvKiogRGF0YSBhcnJheSB0aGF0IHdpbGwgYmUgc2hvd24gaW4gdGhlIGxvb2t1cCBtb2RhbCBncmlkIChlYWdlciAvIHByZS1sb2FkZWQpLiAqL1xyXG4gIEBJbnB1dCgpIGdldEZuOiBhbnlbXSA9IFtdO1xyXG4gIC8qKiBGdW5jdGlvbiByZXR1cm5pbmcgT2JzZXJ2YWJsZSDigJQgY2FsbGVkIGxhemlseSB3aGVuIHRoZSBtb2RhbCBvcGVucy4gT3B0aW9uYWxseSByZWNlaXZlcyBmaWx0ZXIgcGFyYW1zLiAqL1xyXG4gIEBJbnB1dCgpIGxvYWRGbjogKChwYXJhbXM/OiBhbnkpID0+IE9ic2VydmFibGU8YW55W10+KSB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGNvbHVtbnM6IGFueVtdID0gW107XHJcbiAgQElucHV0KCkgaXNWaXNpYmxlID0gdHJ1ZTtcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHJlYWRPbmx5ID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc2hvd0RhdGVGaWx0ZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWZhdWx0RGF0ZUZyb206IERhdGUgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBkZWZhdWx0RGF0ZVRvOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgdGFiczogTG9va3VwVGFiW10gPSBbXTtcclxuXHJcbiAgLyoqIFByZS1wb3B1bGF0ZSBkaXNwbGF5IHRleHQgKGUuZy4gaW4gZWRpdCBtb2RlKS4gU2V0dGVyIGVuc3VyZXMgcmVhY3RpdmUgdXBkYXRlcy4gKi9cclxuICBASW5wdXQoKVxyXG4gIHNldCBlZGl0aW5nRGF0YSh2YWw6IGFueSkge1xyXG4gICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnRleHREaXNwbGF5ID0gJyc7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xyXG4gICAgICB0aGlzLnRleHREaXNwbGF5ID0gdmFsO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmRpc3BsYXlOYW1lICYmIHZhbFt0aGlzLmRpc3BsYXlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMudGV4dERpc3BsYXkgPSB2YWxbdGhpcy5kaXNwbGF5TmFtZV07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgZGF0YTogYW55W10gPSBbXTtcclxuICBvcGVuTW9kYWwgPSBmYWxzZTtcclxuICBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICB0ZXh0RGlzcGxheSA9ICcnO1xyXG4gIGZpbHRlckRhdGVGcm9tOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgZmlsdGVyRGF0ZVRvOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vIFRhYiBtb2RlIHN0YXRlXHJcbiAgYWN0aXZlVGFiSW5kZXggPSAwO1xyXG4gIHRhYlN0YXRlczogTG9va3VwVGFiU3RhdGVbXSA9IFtdO1xyXG5cclxuICBjbGlja0Zvck9wZW5Nb2RhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3Blbk1vZGFsID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gMDtcclxuICAgICAgdGhpcy50YWJTdGF0ZXMgPSB0aGlzLnRhYnMubWFwKHRhYiA9PiAoe1xyXG4gICAgICAgIGRhdGE6IFtdLFxyXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgaXNMb2FkZWQ6IGZhbHNlLFxyXG4gICAgICAgIGZpbHRlckRhdGVGcm9tOiB0YWIuZGVmYXVsdERhdGVGcm9tID8/IG51bGwsXHJcbiAgICAgICAgZmlsdGVyRGF0ZVRvOiB0YWIuZGVmYXVsdERhdGVUbyA/PyBudWxsLFxyXG4gICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpbHRlckRhdGVGcm9tID0gdGhpcy5kZWZhdWx0RGF0ZUZyb20gPz8gbnVsbDtcclxuICAgICAgdGhpcy5maWx0ZXJEYXRlVG8gPSB0aGlzLmRlZmF1bHREYXRlVG8gPz8gbnVsbDtcclxuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25UYWJDbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmFjdGl2ZVRhYkluZGV4ID0gaW5kZXg7XHJcbiAgICBpZiAoIXRoaXMudGFiU3RhdGVzW2luZGV4XS5pc0xvYWRlZCAmJiAhdGhpcy50YWJTdGF0ZXNbaW5kZXhdLmlzTG9hZGluZykge1xyXG4gICAgICB0aGlzLmxvYWRUYWJEYXRhKGluZGV4KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFRhYkRhdGEoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgY29uc3QgdGFiID0gdGhpcy50YWJzW2luZGV4XTtcclxuICAgIGNvbnN0IHN0YXRlID0gdGhpcy50YWJTdGF0ZXNbaW5kZXhdO1xyXG4gICAgc3RhdGUuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHRhYi5zaG93RGF0ZUZpbHRlclxyXG4gICAgICA/IHsgZGF0ZUZyb206IHRoaXMudG9EYXRlU3RyKHN0YXRlLmZpbHRlckRhdGVGcm9tKSwgZGF0ZVRvOiB0aGlzLnRvRGF0ZVN0cihzdGF0ZS5maWx0ZXJEYXRlVG8pIH1cclxuICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICB0YWIubG9hZEZuKHBhcmFtcykuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3VsdCkgPT4geyBzdGF0ZS5kYXRhID0gcmVzdWx0OyBzdGF0ZS5pc0xvYWRpbmcgPSBmYWxzZTsgc3RhdGUuaXNMb2FkZWQgPSB0cnVlOyB9LFxyXG4gICAgICBlcnJvcjogKCkgICAgICAgPT4geyBzdGF0ZS5kYXRhID0gW107ICAgIHN0YXRlLmlzTG9hZGluZyA9IGZhbHNlOyBzdGF0ZS5pc0xvYWRlZCA9IHRydWU7IH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWREYXRhKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMubG9hZEZuKSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5kYXRhID0gW107XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuc2hvd0RhdGVGaWx0ZXJcclxuICAgICAgICA/IHsgZGF0ZUZyb206IHRoaXMudG9EYXRlU3RyKHRoaXMuZmlsdGVyRGF0ZUZyb20pLCBkYXRlVG86IHRoaXMudG9EYXRlU3RyKHRoaXMuZmlsdGVyRGF0ZVRvKSB9XHJcbiAgICAgICAgOiB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMubG9hZEZuKHBhcmFtcykuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZ2V0Rm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkRhdGVGaWx0ZXJDaGFuZ2VkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkRGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgb25Ub29sYmFyUHJlcGFyaW5nKGU6IGFueSwgdGFiSW5kZXg/OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IHVzZVRhYnMgPSB0aGlzLnRhYnMubGVuZ3RoID4gMCAmJiB0YWJJbmRleCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgY29uc3Qgc2hvd0ZpbHRlciA9IHVzZVRhYnMgPyB0aGlzLnRhYnNbdGFiSW5kZXghXS5zaG93RGF0ZUZpbHRlciA6IHRoaXMuc2hvd0RhdGVGaWx0ZXI7XHJcbiAgICBpZiAoIXNob3dGaWx0ZXIpIHJldHVybjtcclxuXHJcbiAgICBlLnRvb2xiYXJPcHRpb25zLml0ZW1zLnVuc2hpZnQoXHJcbiAgICAgIHtcclxuICAgICAgICBsb2NhdGlvbjogJ2JlZm9yZScsXHJcbiAgICAgICAgd2lkZ2V0OiAnZHhEYXRlQm94JyxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICB2YWx1ZTogdXNlVGFicyA/IHRoaXMudGFiU3RhdGVzW3RhYkluZGV4IV0uZmlsdGVyRGF0ZUZyb20gOiB0aGlzLmZpbHRlckRhdGVGcm9tLFxyXG4gICAgICAgICAgdHlwZTogJ2RhdGUnLFxyXG4gICAgICAgICAgZGlzcGxheUZvcm1hdDogJ2RkLk1NLnl5eXknLFxyXG4gICAgICAgICAgd2lkdGg6IDE0MCxcclxuICAgICAgICAgIGxhYmVsOiB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuaW5zdGFudCgnS2Fkb29nbHU6OlN0YXJ0RGF0ZScpLFxyXG4gICAgICAgICAgb25WYWx1ZUNoYW5nZWQ6IChhcmdzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHVzZVRhYnMpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRhYlN0YXRlc1t0YWJJbmRleCFdLmZpbHRlckRhdGVGcm9tID0gYXJncy52YWx1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRUYWJEYXRhKHRhYkluZGV4ISk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRlRnJvbSA9IGFyZ3MudmFsdWU7XHJcbiAgICAgICAgICAgICAgdGhpcy5vbkRhdGVGaWx0ZXJDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGxvY2F0aW9uOiAnYmVmb3JlJyxcclxuICAgICAgICB3aWRnZXQ6ICdkeERhdGVCb3gnLFxyXG4gICAgICAgIG9wdGlvbnM6IHtcclxuICAgICAgICAgIHZhbHVlOiB1c2VUYWJzID8gdGhpcy50YWJTdGF0ZXNbdGFiSW5kZXghXS5maWx0ZXJEYXRlVG8gOiB0aGlzLmZpbHRlckRhdGVUbyxcclxuICAgICAgICAgIHR5cGU6ICdkYXRlJyxcclxuICAgICAgICAgIGRpc3BsYXlGb3JtYXQ6ICdkZC5NTS55eXl5JyxcclxuICAgICAgICAgIHdpZHRoOiAxNDAsXHJcbiAgICAgICAgICBsYWJlbDogdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLmluc3RhbnQoJ0thZG9vZ2x1OjpFbmREYXRlJyksXHJcbiAgICAgICAgICBvblZhbHVlQ2hhbmdlZDogKGFyZ3M6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodXNlVGFicykge1xyXG4gICAgICAgICAgICAgIHRoaXMudGFiU3RhdGVzW3RhYkluZGV4IV0uZmlsdGVyRGF0ZVRvID0gYXJncy52YWx1ZTtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRUYWJEYXRhKHRhYkluZGV4ISk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRlVG8gPSBhcmdzLnZhbHVlO1xyXG4gICAgICAgICAgICAgIHRoaXMub25EYXRlRmlsdGVyQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b0RhdGVTdHIoZGF0ZTogRGF0ZSB8IG51bGwpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGlmICghZGF0ZSkgcmV0dXJuIG51bGw7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoZGF0ZSkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wZW5Nb2RhbCA9IGZhbHNlO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWREYXRhID0gdGhpcy5keGRhdGFJbnN0YW5jZT8uaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dzRGF0YSgpID8/IFtdO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRLZXlzID0gdGhpcy5keGRhdGFJbnN0YW5jZT8uaW5zdGFuY2UuZ2V0U2VsZWN0ZWRSb3dLZXlzKCkgPz8gW107XHJcbiAgICBpZiAoc2VsZWN0ZWRLZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZG4gPSB0aGlzLnRhYnMubGVuZ3RoID4gMCA/IHRoaXMudGFic1t0aGlzLmFjdGl2ZVRhYkluZGV4XS5kaXNwbGF5TmFtZSA6IHRoaXMuZGlzcGxheU5hbWU7XHJcbiAgICAgIHRoaXMudGV4dERpc3BsYXkgPSBzZWxlY3RlZERhdGFbMF0/Lltkbl0gPz8gJyc7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZW1pdChzZWxlY3RlZERhdGFbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGVPbkRvdWJsZUNsaWNrKGU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuTW9kYWwgPSBmYWxzZTtcclxuICAgIGlmIChlPy5kYXRhKSB7XHJcbiAgICAgIGNvbnN0IGRuID0gdGhpcy50YWJzLmxlbmd0aCA+IDAgPyB0aGlzLnRhYnNbdGhpcy5hY3RpdmVUYWJJbmRleF0uZGlzcGxheU5hbWUgOiB0aGlzLmRpc3BsYXlOYW1lO1xyXG4gICAgICB0aGlzLnRleHREaXNwbGF5ID0gZS5kYXRhW2RuXSA/PyAnJztcclxuICAgICAgdGhpcy5zZWxlY3RlZC5lbWl0KGUuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbGVhclZhbHVlKCk6IHZvaWQge1xyXG4gICAgdGhpcy50ZXh0RGlzcGxheSA9ICcnO1xyXG4gICAgdGhpcy5zZWxlY3RlZC5lbWl0KG51bGwpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaGl0LWxvb2t1cC1ncm91cFwiPlxyXG4gIDxkeC10ZXh0LWJveFxyXG4gICAgW25nTW9kZWxdPVwidGV4dERpc3BsYXlcIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFtyZWFkT25seV09XCJ0cnVlXCJcclxuICAgIG1heGxlbmd0aD1cIjY0XCI+XHJcbiAgPC9keC10ZXh0LWJveD5cclxuICA8ZGl2IGNsYXNzPVwiaGl0LWxvb2t1cC1hY3Rpb25zXCIgKm5nSWY9XCJpc1Zpc2libGUgJiYgIXJlYWRPbmx5XCI+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIGNsYXNzPVwiaGl0LWxvb2t1cC1idG4gaGl0LWxvb2t1cC1idG4tY2xlYXJcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgKm5nSWY9XCJ0ZXh0RGlzcGxheVwiXHJcbiAgICAgIChjbGljayk9XCJjbGVhclZhbHVlKClcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICB0aXRsZT1cIlRlbWl6bGVcIj5cclxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiPjwvaT5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICBjbGFzcz1cImhpdC1sb29rdXAtYnRuXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIChjbGljayk9XCJjbGlja0Zvck9wZW5Nb2RhbCgpXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgdGl0bGU9XCJBcmFcIj5cclxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2hcIj48L2k+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48YWJwLW1vZGFsIFsodmlzaWJsZSldPVwib3Blbk1vZGFsXCIgW29wdGlvbnNdPVwieyBzaXplOiBtb2RhbFNpemUgfVwiPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgPGgzPnt7ICdBYnBVaTo6U2VhcmNoJyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuICA8bmctdGVtcGxhdGUgI2FicEJvZHk+XHJcblxyXG4gICAgPCEtLSBUQUJTIE1PREUgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFicy5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtdGFicyBtYi0yXCI+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwibmF2LWl0ZW1cIiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgY2xhc3M9XCJuYXYtbGlua1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlVGFiSW5kZXggPT09IGlcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVGFiQ2xpY2soaSlcIj5cclxuICAgICAgICAgICAge3sgdGFiLnRpdGxlIH19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICA8L3VsPlxyXG5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiSW5kZXggPT09IGlcIj5cclxuICAgICAgICAgIDwhLS0gSGVuw7x6IHTEsWtsYW5tYWTEsSAtLT5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCIhdGFiU3RhdGVzW2ldPy5pc0xvYWRlZCAmJiAhdGFiU3RhdGVzW2ldPy5pc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciB0ZXh0LW11dGVkXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDU1dmg7XCI+XHJcbiAgICAgICAgICAgIHt7ICdLYWRvb2dsdTo6Q2xpY2tUYWJUb0xvYWQnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0gWcO8a2xlbml5b3IgLS0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICpuZ0lmPVwidGFiU3RhdGVzW2ldPy5pc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgIHN0eWxlPVwiaGVpZ2h0OiA1NXZoO1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5IG1iLTNcIiBzdHlsZT1cIndpZHRoOiAzcmVtOyBoZWlnaHQ6IDNyZW07XCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+WcO8a2xlbml5b3IuLi48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbXV0ZWRcIj5WZXJpbGVyIHnDvGtsZW5peW9yLi4uPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8IS0tIEdyaWQgLS0+XHJcbiAgICAgICAgICA8ZHgtZGF0YS1ncmlkXHJcbiAgICAgICAgICAgICpuZ0lmPVwidGFiU3RhdGVzW2ldPy5pc0xvYWRlZCAmJiAhdGFiU3RhdGVzW2ldPy5pc0xvYWRpbmdcIlxyXG4gICAgICAgICAgICAjZHhkYXRhSW5zdGFuY2VcclxuICAgICAgICAgICAgW2NvbHVtbnNdPVwidGFiLmNvbHVtbnNcIlxyXG4gICAgICAgICAgICBbZGF0YVNvdXJjZV09XCJ0YWJTdGF0ZXNbaV0uZGF0YVwiXHJcbiAgICAgICAgICAgIFtrZXlFeHByXT1cInRhYi5rZXlFeHByID8/ICdjb2RlJ1wiXHJcbiAgICAgICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtzaG93Qm9yZGVyc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2hvdmVyU3RhdGVFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICBbYWxsb3dDb2x1bW5SZXNpemluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgY29sdW1uUmVzaXppbmdNb2RlPVwid2lkZ2V0XCJcclxuICAgICAgICAgICAgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2ZvY3VzZWRSb3dFbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJoZWlnaHQ6IDU1dmg7XCJcclxuICAgICAgICAgICAgKG9uVG9vbGJhclByZXBhcmluZyk9XCJvblRvb2xiYXJQcmVwYXJpbmcoJGV2ZW50LCBpKVwiXHJcbiAgICAgICAgICAgIChvblJvd0RibENsaWNrKT1cInNldFRpdGxlT25Eb3VibGVDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDxkeG8tcGFnZXJcclxuICAgICAgICAgICAgICBbdmlzaWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbc2hvd0luZm9dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW2FsbG93ZWRQYWdlU2l6ZXNdPVwiWzUwLCAxMDAsIDIwMF1cIlxyXG4gICAgICAgICAgICAgIFtzaG93TmF2aWdhdGlvbkJ1dHRvbnNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICAgICAgPC9keG8tcGFnZXI+XHJcbiAgICAgICAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCI1MFwiPjwvZHhvLXBhZ2luZz5cclxuICAgICAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgICAgIDxkeG8tZmlsdGVyLXJvdyBbdmlzaWJsZV09XCJ0cnVlXCI+PC9keG8tZmlsdGVyLXJvdz5cclxuICAgICAgICAgICAgPGR4by1maWx0ZXItcGFuZWwgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1wYW5lbD5cclxuICAgICAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgICAgICA8ZHhvLXNjcm9sbGluZyBtb2RlPVwiaG9yaXpvbnRhbFwiIHNob3dTY3JvbGxiYXI9XCJhbHdheXNcIj48L2R4by1zY3JvbGxpbmc+XHJcbiAgICAgICAgICAgIDxkeG8tc2VsZWN0aW9uIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zZWxlY3Rpb24+XHJcbiAgICAgICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICA8IS0tIFNJTkdMRSBNT0RFIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWJzLmxlbmd0aFwiPlxyXG4gICAgICA8IS0tIExvYWRpbmcgb3ZlcmxheSAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCIgc3R5bGU9XCJoZWlnaHQ6IDU1dmg7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHRleHQtcHJpbWFyeSBtYi0zXCIgc3R5bGU9XCJ3aWR0aDogM3JlbTsgaGVpZ2h0OiAzcmVtO1wiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+WcO8a2xlbml5b3IuLi48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+VmVyaWxlciB5w7xrbGVuaXlvci4uLjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkeC1kYXRhLWdyaWRcclxuICAgICAgICAqbmdJZj1cIiFpc0xvYWRpbmdcIlxyXG4gICAgICAgICNkeGRhdGFJbnN0YW5jZVxyXG4gICAgICAgIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxyXG4gICAgICAgIFtkYXRhU291cmNlXT1cImRhdGFcIlxyXG4gICAgICAgIFtrZXlFeHByXT1cImtleUV4cHJcIlxyXG4gICAgICAgIFtzaG93Um93TGluZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dCb3JkZXJzXT1cInRydWVcIlxyXG4gICAgICAgIFtob3ZlclN0YXRlRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbcmVwYWludENoYW5nZXNPbmx5XT1cInRydWVcIlxyXG4gICAgICAgIFthbGxvd0NvbHVtblJlc2l6aW5nXT1cInRydWVcIlxyXG4gICAgICAgIGNvbHVtblJlc2l6aW5nTW9kZT1cIndpZGdldFwiXHJcbiAgICAgICAgW2FsbG93Q29sdW1uUmVvcmRlcmluZ109XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uQXV0b1dpZHRoXT1cInRydWVcIlxyXG4gICAgICAgIFtmb2N1c2VkUm93RW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBbY29sdW1uSGlkaW5nRW5hYmxlZF09XCJ0cnVlXCJcclxuICAgICAgICBzdHlsZT1cImhlaWdodDogNTV2aDtcIlxyXG4gICAgICAgIChvblRvb2xiYXJQcmVwYXJpbmcpPVwib25Ub29sYmFyUHJlcGFyaW5nKCRldmVudClcIlxyXG4gICAgICAgIChvblJvd0RibENsaWNrKT1cInNldFRpdGxlT25Eb3VibGVDbGljaygkZXZlbnQpXCI+XHJcbiAgICAgICAgPGR4by1wYWdlclxyXG4gICAgICAgICAgW3Zpc2libGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbc2hvd0luZm9dPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbYWxsb3dlZFBhZ2VTaXplc109XCJbNTAsIDEwMCwgMjAwXVwiXHJcbiAgICAgICAgICBbc2hvd05hdmlnYXRpb25CdXR0b25zXT1cInRydWVcIlxyXG4gICAgICAgICAgW3Nob3dQYWdlU2l6ZVNlbGVjdG9yXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4by1wYWdlcj5cclxuICAgICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XHJcbiAgICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFthbGxvd1NlYXJjaF09XCJ0cnVlXCIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XHJcbiAgICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxyXG4gICAgICAgIDxkeG8tZmlsdGVyLXBhbmVsIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcGFuZWw+XHJcbiAgICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJzaW5nbGVcIj48L2R4by1zb3J0aW5nPlxyXG4gICAgICAgIDxkeG8tc2Nyb2xsaW5nIG1vZGU9XCJob3Jpem9udGFsXCIgc2hvd1Njcm9sbGJhcj1cImFsd2F5c1wiPjwvZHhvLXNjcm9sbGluZz5cclxuICAgICAgICA8ZHhvLXNlbGVjdGlvbiBtb2RlPVwic2luZ2xlXCI+PC9keG8tc2VsZWN0aW9uPlxyXG4gICAgICA8L2R4LWRhdGEtZ3JpZD5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8L25nLXRlbXBsYXRlPlxyXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGFicENsb3NlPlxyXG4gICAgICB7eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIiBidXR0b25UeXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNldFRpdGxlKClcIj5cclxuICAgICAge3sgJ0FicFVpOjpTZWxlY3QnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICA8L2FicC1idXR0b24+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9hYnAtbW9kYWw+XHJcbiJdfQ==