mis-crystal-design-system 17.0.2 → 17.0.4

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 (80) hide show
  1. package/analytics/analytics.service.d.ts +1 -1
  2. package/async-search-dropdown/async-dropdown.component.d.ts +4 -1
  3. package/esm2022/analytics/analytics.service.mjs +3 -3
  4. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +27 -9
  5. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +2 -1
  6. package/esm2022/filter/filter-panel/filter-panel.component.mjs +22 -22
  7. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +29 -15
  8. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +5 -5
  9. package/esm2022/slider/slider.component.mjs +2 -2
  10. package/esm2022/table/actions-cell/actions-cell.component.mjs +389 -0
  11. package/esm2022/table/public_api.mjs +5 -3
  12. package/esm2022/table/sort-icons.directive.mjs +139 -0
  13. package/esm2022/table/table.component.mjs +286 -109
  14. package/esm2022/table/table.module.mjs +41 -6
  15. package/esm2022/toast/public_api.mjs +3 -1
  16. package/esm2022/toast/toast.component.mjs +73 -16
  17. package/esm2022/toast/toast.constants.mjs +7 -0
  18. package/esm2022/toast/toast.data.service.mjs +1 -1
  19. package/esm2022/toast/toast.interface.mjs +2 -0
  20. package/esm2022/toast/toast.service.mjs +14 -7
  21. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  22. package/fesm2022/mis-crystal-design-system-analytics.mjs +2 -2
  23. package/fesm2022/mis-crystal-design-system-analytics.mjs.map +1 -1
  24. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +26 -8
  25. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  26. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  27. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  28. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  29. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  30. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +1 -0
  31. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  32. package/fesm2022/mis-crystal-design-system-drawer.mjs.map +1 -1
  33. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  34. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  35. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  36. package/fesm2022/mis-crystal-design-system-filter.mjs +21 -21
  37. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  38. package/fesm2022/mis-crystal-design-system-input-stepper.mjs +28 -14
  39. package/fesm2022/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  40. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  41. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  42. package/fesm2022/mis-crystal-design-system-menu.mjs.map +1 -1
  43. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  44. package/fesm2022/mis-crystal-design-system-modal.mjs.map +1 -1
  45. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  46. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +4 -4
  47. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  48. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  49. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  50. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  51. package/fesm2022/mis-crystal-design-system-slider.mjs +2 -2
  52. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  53. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -1
  54. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  55. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  56. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  57. package/fesm2022/mis-crystal-design-system-table.mjs +1143 -411
  58. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  59. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  60. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  61. package/fesm2022/mis-crystal-design-system-toast.mjs +93 -22
  62. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  63. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  64. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -1
  65. package/fesm2022/mis-crystal-design-system-widgets.mjs.map +1 -1
  66. package/filter/filter-panel/filter-panel.component.d.ts +4 -3
  67. package/input-stepper/input-stepper/input-stepper.component.d.ts +5 -1
  68. package/package.json +13 -13
  69. package/table/actions-cell/actions-cell.component.d.ts +45 -0
  70. package/table/filter/filter.component.d.ts +1 -1
  71. package/table/public_api.d.ts +4 -2
  72. package/table/sort-icons.directive.d.ts +36 -0
  73. package/table/table.component.d.ts +56 -10
  74. package/table/table.module.d.ts +8 -4
  75. package/toast/public_api.d.ts +2 -0
  76. package/toast/toast.component.d.ts +13 -1
  77. package/toast/toast.constants.d.ts +5 -0
  78. package/toast/toast.data.service.d.ts +3 -2
  79. package/toast/toast.interface.d.ts +6 -0
  80. package/toast/toast.service.d.ts +2 -1
@@ -0,0 +1,389 @@
1
+ import { Component, EventEmitter, Input, Output, HostListener, ViewChild } from "@angular/core";
2
+ import { ConnectionPositionPair, OverlayConfig } from "@angular/cdk/overlay";
3
+ import { TemplatePortal } from "@angular/cdk/portal";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/cdk/overlay";
6
+ import * as i2 from "@angular/common";
7
+ import * as i3 from "mis-crystal-design-system/checkbox";
8
+ const _c0 = ["dropdownMenu"];
9
+ const _c1 = ["dropdownTrigger"];
10
+ const _c2 = a0 => ({ disabled: a0 });
11
+ function ActionsCellComponent_div_1_div_1_Template(rf, ctx) { if (rf & 1) {
12
+ const _r1 = i0.ɵɵgetCurrentView();
13
+ i0.ɵɵelementStart(0, "div", 10);
14
+ i0.ɵɵlistener("click", function ActionsCellComponent_div_1_div_1_Template_div_click_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onActionClick(item_r2, $event)); });
15
+ i0.ɵɵelement(1, "img", 11);
16
+ i0.ɵɵelementEnd();
17
+ } if (rf & 2) {
18
+ const item_r2 = ctx.$implicit;
19
+ const ctx_r2 = i0.ɵɵnextContext(2);
20
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c2, ctx_r2.isDisabled(item_r2)));
21
+ i0.ɵɵadvance();
22
+ i0.ɵɵproperty("src", item_r2.icon, i0.ɵɵsanitizeUrl)("alt", item_r2.label);
23
+ } }
24
+ function ActionsCellComponent_div_1_Template(rf, ctx) { if (rf & 1) {
25
+ i0.ɵɵelementStart(0, "div", 8);
26
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_1_div_1_Template, 2, 5, "div", 9);
27
+ i0.ɵɵelementEnd();
28
+ } if (rf & 2) {
29
+ const ctx_r2 = i0.ɵɵnextContext();
30
+ i0.ɵɵadvance();
31
+ i0.ɵɵproperty("ngForOf", ctx_r2.actionItems)("ngForTrackBy", ctx_r2.trackByAction);
32
+ } }
33
+ function ActionsCellComponent_div_2_Template(rf, ctx) { if (rf & 1) {
34
+ const _r4 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "div", 12)(1, "div", 13, 1);
36
+ i0.ɵɵlistener("click", function ActionsCellComponent_div_2_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleDropdown($event)); });
37
+ i0.ɵɵnamespaceSVG();
38
+ i0.ɵɵelementStart(3, "svg", 14);
39
+ i0.ɵɵelement(4, "circle", 15)(5, "circle", 16)(6, "circle", 17);
40
+ i0.ɵɵelementEnd()()();
41
+ } }
42
+ function ActionsCellComponent_div_3_Template(rf, ctx) { if (rf & 1) {
43
+ const _r5 = i0.ɵɵgetCurrentView();
44
+ i0.ɵɵelementStart(0, "div", 18)(1, "mis-checkbox", 19);
45
+ i0.ɵɵlistener("valueChange", function ActionsCellComponent_div_3_Template_mis_checkbox_valueChange_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onClick($event)); });
46
+ i0.ɵɵelementEnd()();
47
+ } if (rf & 2) {
48
+ const ctx_r2 = i0.ɵɵnextContext();
49
+ i0.ɵɵadvance();
50
+ i0.ɵɵproperty("checked", ctx_r2.currentState)("disabled", ctx_r2.disable ? ctx_r2.disable(ctx_r2.currentState) : false);
51
+ } }
52
+ function ActionsCellComponent_div_4__svg_svg_2_Template(rf, ctx) { if (rf & 1) {
53
+ i0.ɵɵnamespaceSVG();
54
+ i0.ɵɵelementStart(0, "svg", 23);
55
+ i0.ɵɵelement(1, "path", 24);
56
+ i0.ɵɵelementEnd();
57
+ } }
58
+ function ActionsCellComponent_div_4__svg_svg_3_Template(rf, ctx) { if (rf & 1) {
59
+ i0.ɵɵnamespaceSVG();
60
+ i0.ɵɵelementStart(0, "svg", 23);
61
+ i0.ɵɵelement(1, "path", 25);
62
+ i0.ɵɵelementEnd();
63
+ } }
64
+ function ActionsCellComponent_div_4_Template(rf, ctx) { if (rf & 1) {
65
+ const _r6 = i0.ɵɵgetCurrentView();
66
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 21);
67
+ i0.ɵɵlistener("click", function ActionsCellComponent_div_4_Template_div_click_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onClick($event)); });
68
+ i0.ɵɵtemplate(2, ActionsCellComponent_div_4__svg_svg_2_Template, 2, 0, "svg", 22)(3, ActionsCellComponent_div_4__svg_svg_3_Template, 2, 0, "svg", 22);
69
+ i0.ɵɵelementEnd()();
70
+ } if (rf & 2) {
71
+ const ctx_r2 = i0.ɵɵnextContext();
72
+ i0.ɵɵadvance();
73
+ i0.ɵɵproperty("title", ctx_r2.currentState ? "Expand" : "Collapse");
74
+ i0.ɵɵadvance();
75
+ i0.ɵɵproperty("ngIf", ctx_r2.currentState);
76
+ i0.ɵɵadvance();
77
+ i0.ɵɵproperty("ngIf", !ctx_r2.currentState);
78
+ } }
79
+ function ActionsCellComponent_ng_template_5_div_1_ng_container_1_span_1_Template(rf, ctx) { if (rf & 1) {
80
+ i0.ɵɵelementStart(0, "span", 36);
81
+ i0.ɵɵelement(1, "img", 37);
82
+ i0.ɵɵelementEnd();
83
+ } if (rf & 2) {
84
+ const item_r8 = i0.ɵɵnextContext(2).$implicit;
85
+ i0.ɵɵadvance();
86
+ i0.ɵɵproperty("src", item_r8.icon, i0.ɵɵsanitizeUrl);
87
+ } }
88
+ function ActionsCellComponent_ng_template_5_div_1_ng_container_1_div_7_div_1_span_1_Template(rf, ctx) { if (rf & 1) {
89
+ i0.ɵɵelementStart(0, "span", 36);
90
+ i0.ɵɵelement(1, "img", 37);
91
+ i0.ɵɵelementEnd();
92
+ } if (rf & 2) {
93
+ const child_r10 = i0.ɵɵnextContext().$implicit;
94
+ i0.ɵɵadvance();
95
+ i0.ɵɵproperty("src", child_r10.icon, i0.ɵɵsanitizeUrl);
96
+ } }
97
+ function ActionsCellComponent_ng_template_5_div_1_ng_container_1_div_7_div_1_Template(rf, ctx) { if (rf & 1) {
98
+ const _r9 = i0.ɵɵgetCurrentView();
99
+ i0.ɵɵelementStart(0, "div", 28);
100
+ i0.ɵɵlistener("click", function ActionsCellComponent_ng_template_5_div_1_ng_container_1_div_7_div_1_Template_div_click_0_listener($event) { const child_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick(child_r10, $event)); });
101
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_5_div_1_ng_container_1_div_7_div_1_span_1_Template, 2, 1, "span", 30);
102
+ i0.ɵɵelementStart(2, "span", 31);
103
+ i0.ɵɵtext(3);
104
+ i0.ɵɵelementEnd()();
105
+ } if (rf & 2) {
106
+ const child_r10 = ctx.$implicit;
107
+ const ctx_r2 = i0.ɵɵnextContext(5);
108
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c2, ctx_r2.isDisabled(child_r10)));
109
+ i0.ɵɵadvance();
110
+ i0.ɵɵproperty("ngIf", child_r10.icon);
111
+ i0.ɵɵadvance(2);
112
+ i0.ɵɵtextInterpolate(child_r10.label);
113
+ } }
114
+ function ActionsCellComponent_ng_template_5_div_1_ng_container_1_div_7_Template(rf, ctx) { if (rf & 1) {
115
+ i0.ɵɵelementStart(0, "div", 38);
116
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_5_div_1_ng_container_1_div_7_div_1_Template, 4, 5, "div", 27);
117
+ i0.ɵɵelementEnd();
118
+ } if (rf & 2) {
119
+ const item_r8 = i0.ɵɵnextContext(2).$implicit;
120
+ i0.ɵɵadvance();
121
+ i0.ɵɵproperty("ngForOf", item_r8.children);
122
+ } }
123
+ function ActionsCellComponent_ng_template_5_div_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
124
+ i0.ɵɵelementContainerStart(0);
125
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_5_div_1_ng_container_1_span_1_Template, 2, 1, "span", 30);
126
+ i0.ɵɵelementStart(2, "span", 31);
127
+ i0.ɵɵtext(3);
128
+ i0.ɵɵelementEnd();
129
+ i0.ɵɵelementStart(4, "span", 32);
130
+ i0.ɵɵnamespaceSVG();
131
+ i0.ɵɵelementStart(5, "svg", 33);
132
+ i0.ɵɵelement(6, "path", 34);
133
+ i0.ɵɵelementEnd()();
134
+ i0.ɵɵtemplate(7, ActionsCellComponent_ng_template_5_div_1_ng_container_1_div_7_Template, 2, 1, "div", 35);
135
+ i0.ɵɵelementContainerEnd();
136
+ } if (rf & 2) {
137
+ const item_r8 = i0.ɵɵnextContext().$implicit;
138
+ i0.ɵɵadvance();
139
+ i0.ɵɵproperty("ngIf", item_r8.icon);
140
+ i0.ɵɵadvance(2);
141
+ i0.ɵɵtextInterpolate(item_r8.label);
142
+ i0.ɵɵadvance(4);
143
+ i0.ɵɵproperty("ngIf", item_r8.showSubmenu);
144
+ } }
145
+ function ActionsCellComponent_ng_template_5_div_1_ng_template_2_span_0_Template(rf, ctx) { if (rf & 1) {
146
+ i0.ɵɵelementStart(0, "span", 36);
147
+ i0.ɵɵelement(1, "img", 37);
148
+ i0.ɵɵelementEnd();
149
+ } if (rf & 2) {
150
+ const item_r8 = i0.ɵɵnextContext(2).$implicit;
151
+ i0.ɵɵadvance();
152
+ i0.ɵɵproperty("src", item_r8.icon, i0.ɵɵsanitizeUrl);
153
+ } }
154
+ function ActionsCellComponent_ng_template_5_div_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
155
+ i0.ɵɵtemplate(0, ActionsCellComponent_ng_template_5_div_1_ng_template_2_span_0_Template, 2, 1, "span", 30);
156
+ i0.ɵɵelementStart(1, "span", 31);
157
+ i0.ɵɵtext(2);
158
+ i0.ɵɵelementEnd();
159
+ } if (rf & 2) {
160
+ const item_r8 = i0.ɵɵnextContext().$implicit;
161
+ i0.ɵɵproperty("ngIf", item_r8.icon);
162
+ i0.ɵɵadvance(2);
163
+ i0.ɵɵtextInterpolate(item_r8.label);
164
+ } }
165
+ function ActionsCellComponent_ng_template_5_div_1_Template(rf, ctx) { if (rf & 1) {
166
+ const _r7 = i0.ɵɵgetCurrentView();
167
+ i0.ɵɵelementStart(0, "div", 28);
168
+ i0.ɵɵlistener("click", function ActionsCellComponent_ng_template_5_div_1_Template_div_click_0_listener($event) { const item_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick(item_r8, $event)); });
169
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_5_div_1_ng_container_1_Template, 8, 3, "ng-container", 29)(2, ActionsCellComponent_ng_template_5_div_1_ng_template_2_Template, 3, 2, "ng-template", null, 2, i0.ɵɵtemplateRefExtractor);
170
+ i0.ɵɵelementEnd();
171
+ } if (rf & 2) {
172
+ const item_r8 = ctx.$implicit;
173
+ const noChildren_r11 = i0.ɵɵreference(3);
174
+ const ctx_r2 = i0.ɵɵnextContext(2);
175
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c2, ctx_r2.isDisabled(item_r8)));
176
+ i0.ɵɵadvance();
177
+ i0.ɵɵproperty("ngIf", item_r8.children == null ? null : item_r8.children.length)("ngIfElse", noChildren_r11);
178
+ } }
179
+ function ActionsCellComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
180
+ i0.ɵɵelementStart(0, "div", 26);
181
+ i0.ɵɵtemplate(1, ActionsCellComponent_ng_template_5_div_1_Template, 4, 5, "div", 27);
182
+ i0.ɵɵelementEnd();
183
+ } if (rf & 2) {
184
+ const ctx_r2 = i0.ɵɵnextContext();
185
+ i0.ɵɵadvance();
186
+ i0.ɵɵproperty("ngForOf", ctx_r2.actionItems);
187
+ } }
188
+ export class ActionsCellComponent {
189
+ constructor(overlay, viewContainerRef) {
190
+ this.overlay = overlay;
191
+ this.viewContainerRef = viewContainerRef;
192
+ this.actionClick = new EventEmitter();
193
+ this.isDropdownOpen = false;
194
+ this.actionItems = [];
195
+ this.actionType = "inline";
196
+ this.currentState = false;
197
+ this._style = {};
198
+ this.containerStyle = {};
199
+ this.overlayRef = null;
200
+ }
201
+ ngOnInit() {
202
+ if (this.config) {
203
+ this.actionItems = this.config.actionItems;
204
+ this.actionType = this.config.actionType;
205
+ this._style = this.config.style;
206
+ this.action = this.config.action;
207
+ this.disable = this.config.disable;
208
+ this.processStyle();
209
+ }
210
+ if (this.cellData !== null) {
211
+ const defaultStates = {
212
+ 'checkbox': false,
213
+ 'row-collapse': true,
214
+ };
215
+ if (this.actionType in defaultStates) {
216
+ this.currentState = typeof this.cellData === 'boolean' ? this.cellData : defaultStates[this.actionType];
217
+ }
218
+ else {
219
+ this.data = this.cellData;
220
+ }
221
+ }
222
+ }
223
+ ngOnDestroy() {
224
+ this.closeDropdown();
225
+ }
226
+ processStyle() {
227
+ // Remove width from style to avoid conflicts with table column width
228
+ const { width, ...restStyle } = this._style;
229
+ this.containerStyle = restStyle;
230
+ }
231
+ onActionClick(item, event) {
232
+ event.stopPropagation();
233
+ // Check permissions before executing action
234
+ if (this.isDisabled(item))
235
+ return;
236
+ // Execute action only if permitted
237
+ if (item.action) {
238
+ item.action(this.data);
239
+ }
240
+ this.actionClick.emit({ item });
241
+ }
242
+ trackByAction(index, item) {
243
+ return item.value;
244
+ }
245
+ isSvgFile(iconPath) {
246
+ if (!iconPath)
247
+ return false;
248
+ return iconPath.toLowerCase().includes(".svg") || iconPath.toLowerCase().includes("assets/icons/");
249
+ }
250
+ onDocumentClick() {
251
+ if (this.isDropdownOpen) {
252
+ this.closeDropdown();
253
+ }
254
+ }
255
+ toggleDropdown(event) {
256
+ event.stopPropagation();
257
+ if (this.isDropdownOpen) {
258
+ this.closeDropdown();
259
+ }
260
+ else {
261
+ this.openDropdown();
262
+ }
263
+ }
264
+ openDropdown() {
265
+ if (!this.dropdownTrigger || !this.dropdownMenu)
266
+ return;
267
+ // Close all submenus when opening main menu
268
+ this.actionItems.forEach((item) => (item.showSubmenu = false));
269
+ const positions = this.getDropdownPositions();
270
+ const overlayConfig = new OverlayConfig({
271
+ hasBackdrop: true,
272
+ backdropClass: 'cdk-overlay-transparent-backdrop',
273
+ positionStrategy: this.overlay
274
+ .position()
275
+ .flexibleConnectedTo(this.dropdownTrigger)
276
+ .withPositions(positions)
277
+ .withPush(true),
278
+ scrollStrategy: this.overlay.scrollStrategies.reposition()
279
+ });
280
+ this.overlayRef = this.overlay.create(overlayConfig);
281
+ const portal = new TemplatePortal(this.dropdownMenu, this.viewContainerRef);
282
+ this.overlayRef.attach(portal);
283
+ this.overlayRef.backdropClick().subscribe(() => {
284
+ this.closeDropdown();
285
+ });
286
+ this.isDropdownOpen = true;
287
+ }
288
+ closeDropdown() {
289
+ if (this.overlayRef) {
290
+ this.overlayRef.dispose();
291
+ this.overlayRef = null;
292
+ }
293
+ this.isDropdownOpen = false;
294
+ }
295
+ getDropdownPositions() {
296
+ // Use CDK Overlay's flexible positioning - it will automatically choose the best position
297
+ return [
298
+ // Primary position: below and aligned to end (right)
299
+ new ConnectionPositionPair({ originX: 'end', originY: 'bottom' }, { overlayX: 'end', overlayY: 'top' }, 0, 4),
300
+ // Fallback position: above and aligned to end (right)
301
+ new ConnectionPositionPair({ originX: 'end', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }, 0, -4),
302
+ // Fallback position: below and aligned to start (left)
303
+ new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4),
304
+ // Fallback position: above and aligned to start (left)
305
+ new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4)
306
+ ];
307
+ }
308
+ onDropdownItemClick(item, event) {
309
+ event.stopPropagation();
310
+ if (this.isDisabled(item))
311
+ return;
312
+ if (item?.children?.length) {
313
+ // Toggle submenu
314
+ item.showSubmenu = !item.showSubmenu;
315
+ // Optionally close other submenus
316
+ this.actionItems.forEach((i) => {
317
+ if (i !== item)
318
+ i.showSubmenu = false;
319
+ });
320
+ }
321
+ else {
322
+ // Handle action
323
+ if (item.action)
324
+ item.action(this.data);
325
+ this.actionClick.emit({ item, data: this.data });
326
+ this.closeDropdown(); // Only close if action was executed
327
+ }
328
+ }
329
+ onClick(event) {
330
+ this.currentState = !this.currentState;
331
+ this.actionClick.emit({
332
+ actionType: this.actionType,
333
+ value: this.currentState
334
+ });
335
+ }
336
+ isDisabled(item) {
337
+ if (typeof item.disable === "function") {
338
+ return item.disable(this.data);
339
+ }
340
+ return false;
341
+ }
342
+ static { this.ɵfac = function ActionsCellComponent_Factory(t) { return new (t || ActionsCellComponent)(i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef)); }; }
343
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionsCellComponent, selectors: [["mis-actions-cell"]], viewQuery: function ActionsCellComponent_Query(rf, ctx) { if (rf & 1) {
344
+ i0.ɵɵviewQuery(_c0, 5);
345
+ i0.ɵɵviewQuery(_c1, 5);
346
+ } if (rf & 2) {
347
+ let _t;
348
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownMenu = _t.first);
349
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dropdownTrigger = _t.first);
350
+ } }, hostBindings: function ActionsCellComponent_HostBindings(rf, ctx) { if (rf & 1) {
351
+ i0.ɵɵlistener("click", function ActionsCellComponent_click_HostBindingHandler() { return ctx.onDocumentClick(); }, false, i0.ɵɵresolveDocument);
352
+ } }, inputs: { cellData: "cellData", config: "config" }, outputs: { actionClick: "actionClick" }, decls: 7, vars: 5, consts: [["dropdownMenu", ""], ["dropdownTrigger", ""], ["noChildren", ""], [1, "actions-cell-container", 3, "ngStyle"], ["class", "inline-actions", 4, "ngIf"], ["class", "dropdown-actions", 4, "ngIf"], ["class", "checkbox-actions", 4, "ngIf"], ["class", "collapse-toggle-action", 4, "ngIf"], [1, "inline-actions"], ["class", "action-item", 3, "ngClass", "click", 4, "ngFor", "ngForOf", "ngForTrackBy"], [1, "action-item", 3, "click", "ngClass"], [1, "action-icon-svg", 3, "src", "alt"], [1, "dropdown-actions"], ["title", "More actions", 1, "dropdown-trigger", 3, "click"], ["width", "20", "height", "20", "viewBox", "0 0 20 20", "fill", "none"], ["cx", "10", "cy", "4", "r", "2", "fill", "#333"], ["cx", "10", "cy", "10", "r", "2", "fill", "#333"], ["cx", "10", "cy", "16", "r", "2", "fill", "#333"], [1, "checkbox-actions"], [3, "valueChange", "checked", "disabled"], [1, "collapse-toggle-action"], [1, "collapse-icon", 3, "click", "title"], ["width", "20", "height", "20", "viewBox", "0 0 24 24", 4, "ngIf"], ["width", "20", "height", "20", "viewBox", "0 0 24 24"], ["d", "M7 10l5 5 5-5", "stroke", "#0D1321", "stroke-width", "2", "fill", "none", "stroke-linecap", "round", "stroke-linejoin", "round"], ["d", "M7 14l5-5 5 5", "stroke", "#0D1321", "stroke-width", "2", "fill", "none", "stroke-linecap", "round", "stroke-linejoin", "round"], [1, "dropdown-menu-overlay"], ["class", "dropdown-menu-item", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "dropdown-menu-item", 3, "click", "ngClass"], [4, "ngIf", "ngIfElse"], ["class", "dropdown-icon", 4, "ngIf"], [1, "dropdown-label"], [1, "submenu-arrow"], ["width", "20", "height", "20", "viewBox", "0 0 24 24", "fill", "none"], ["d", "M9 6L15 12L9 18", "stroke", "#0D1321", "stroke-width", "2", "stroke-linecap", "round", "stroke-linejoin", "round"], ["class", "dropdown-submenu", 4, "ngIf"], [1, "dropdown-icon"], [3, "src"], [1, "dropdown-submenu"]], template: function ActionsCellComponent_Template(rf, ctx) { if (rf & 1) {
353
+ i0.ɵɵelementStart(0, "div", 3);
354
+ i0.ɵɵtemplate(1, ActionsCellComponent_div_1_Template, 2, 2, "div", 4)(2, ActionsCellComponent_div_2_Template, 7, 0, "div", 5)(3, ActionsCellComponent_div_3_Template, 2, 2, "div", 6);
355
+ i0.ɵɵelementEnd();
356
+ i0.ɵɵtemplate(4, ActionsCellComponent_div_4_Template, 4, 3, "div", 7)(5, ActionsCellComponent_ng_template_5_Template, 2, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
357
+ } if (rf & 2) {
358
+ i0.ɵɵproperty("ngStyle", ctx.containerStyle);
359
+ i0.ɵɵadvance();
360
+ i0.ɵɵproperty("ngIf", ctx.actionType === "inline");
361
+ i0.ɵɵadvance();
362
+ i0.ɵɵproperty("ngIf", ctx.actionType === "dropdown");
363
+ i0.ɵɵadvance();
364
+ i0.ɵɵproperty("ngIf", ctx.actionType === "checkbox");
365
+ i0.ɵɵadvance();
366
+ i0.ɵɵproperty("ngIf", ctx.actionType === "row-collapse");
367
+ } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgStyle, i3.CheckboxComponent], styles: [".actions-cell-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:relative;box-sizing:border-box}.inline-actions[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;flex-wrap:nowrap;padding:4px 0;flex-direction:row}.action-item[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;height:20px;border-radius:4px;cursor:pointer;transition:all .2s ease;background-color:transparent;border:none;outline:none;flex-shrink:0;min-height:20px}.action-item[_ngcontent-%COMP%]:hover:not(.disabled){background-color:#0000000a;transform:scale(1.05)}.action-item[_ngcontent-%COMP%]:active:not(.disabled){transform:scale(.95)}.action-item.disabled[_ngcontent-%COMP%]{opacity:.5;cursor:not-allowed}.action-item.disabled[_ngcontent-%COMP%]:hover{background-color:transparent;transform:none}.action-icon[_ngcontent-%COMP%]{font-size:16px;color:#666;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.action-icon-svg[_ngcontent-%COMP%]{width:18px;height:18px;object-fit:contain;filter:brightness(0) saturate(100%) invert(40%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(.6) contrast(1);flex-shrink:0}.action-icon-svg[_ngcontent-%COMP%]:hover{filter:brightness(0) saturate(100%) invert(0%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(0) contrast(1)}.dropdown-trigger[_ngcontent-%COMP%]{cursor:pointer;display:flex;align-items:center;justify-content:center}.dropdown-actions[_ngcontent-%COMP%]{position:relative}.dropdown-menu-overlay[_ngcontent-%COMP%]{width:232px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1000}.dropdown-menu-item.disabled[_ngcontent-%COMP%]{color:#aaa;cursor:not-allowed}.dropdown-menu-item[_ngcontent-%COMP%]:hover:not(.disabled), .dropdown-menu-item.has-submenu[_ngcontent-%COMP%]:hover{background:#f5f5f5}.dropdown-menu-item[_ngcontent-%COMP%]{display:flex;align-items:center;padding:10px 18px;cursor:pointer;font-size:14px;position:relative}.dropdown-menu-item[_ngcontent-%COMP%] .dropdown-label[_ngcontent-%COMP%]{flex:1;margin-left:8px}.dropdown-menu-item[_ngcontent-%COMP%] .submenu-arrow[_ngcontent-%COMP%]{margin-left:auto;width:16px;height:16px}.dropdown-submenu[_ngcontent-%COMP%]{position:absolute;top:0;min-width:132px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1001}.dropdown-submenu[_ngcontent-%COMP%]{left:100%;margin-left:4px}.submenu-arrow[_ngcontent-%COMP%]{display:flex;align-items:center;margin-left:auto;z-index:9999}.dropdown-icon[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.dropdown-menu-item.disabled[_ngcontent-%COMP%]{color:#181f33;filter:grayscale(100%) opacity(.3);cursor:not-allowed}.checkbox-actions[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}"] }); }
368
+ }
369
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionsCellComponent, [{
370
+ type: Component,
371
+ args: [{ selector: "mis-actions-cell", template: "<div class=\"actions-cell-container\" [ngStyle]=\"containerStyle\">\n <!-- Inline Actions -->\n <div *ngIf=\"actionType === 'inline'\" class=\"inline-actions\">\n <div\n *ngFor=\"let item of actionItems; trackBy: trackByAction\"\n class=\"action-item\"\n [ngClass]=\"{ disabled: isDisabled(item) }\"\n (click)=\"onActionClick(item, $event)\"\n >\n <img [src]=\"item.icon\" [alt]=\"item.label\" class=\"action-icon-svg\" />\n </div>\n </div>\n\n <!-- Dropdown Actions -->\n <div *ngIf=\"actionType === 'dropdown'\" class=\"dropdown-actions\">\n <div #dropdownTrigger class=\"dropdown-trigger\" (click)=\"toggleDropdown($event)\" title=\"More actions\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\n <circle cx=\"10\" cy=\"4\" r=\"2\" fill=\"#333\" />\n <circle cx=\"10\" cy=\"10\" r=\"2\" fill=\"#333\" />\n <circle cx=\"10\" cy=\"16\" r=\"2\" fill=\"#333\" />\n </svg>\n </div>\n </div>\n\n <!-- Checkbox Actions -->\n <div *ngIf=\"actionType === 'checkbox'\" class=\"checkbox-actions\">\n <mis-checkbox [checked]=\"currentState\" (valueChange)=\"onClick($event)\" [disabled]=\"disable ? disable(currentState) : false\"> </mis-checkbox>\n </div>\n</div>\n\n<!-- Collapse / Expand Actions -->\n<div *ngIf=\"actionType === 'row-collapse'\" class=\"collapse-toggle-action\">\n <div class=\"collapse-icon\" (click)=\"onClick($event)\" [title]=\"currentState ? 'Expand' : 'Collapse'\">\n <svg *ngIf=\"currentState\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\">\n <path d=\"M7 10l5 5 5-5\" stroke=\"#0D1321\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n <svg *ngIf=\"!currentState\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\">\n <path d=\"M7 14l5-5 5 5\" stroke=\"#0D1321\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </div>\n</div>\n\n<!-- CDK Overlay Template for Dropdown Menu -->\n<ng-template #dropdownMenu>\n <div class=\"dropdown-menu-overlay\">\n <div\n class=\"dropdown-menu-item\"\n *ngFor=\"let item of actionItems\"\n (click)=\"onDropdownItemClick(item, $event)\"\n [ngClass]=\"{ disabled: isDisabled(item) }\"\n >\n <ng-container *ngIf=\"item.children?.length; else noChildren\">\n <span class=\"dropdown-icon\" *ngIf=\"item.icon\">\n <img [src]=\"item.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ item.label }}</span>\n <span class=\"submenu-arrow\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M9 6L15 12L9 18\" stroke=\"#0D1321\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n\n <!-- DYNAMIC SUBMENU -->\n <div class=\"dropdown-submenu\" *ngIf=\"item.showSubmenu\">\n <div\n class=\"dropdown-menu-item\"\n *ngFor=\"let child of item.children\"\n [ngClass]=\"{ disabled: isDisabled(child) }\"\n (click)=\"onDropdownItemClick(child, $event)\"\n >\n <span class=\"dropdown-icon\" *ngIf=\"child.icon\">\n <img [src]=\"child.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ child.label }}</span>\n </div>\n </div>\n </ng-container>\n\n <ng-template #noChildren>\n <span class=\"dropdown-icon\" *ngIf=\"item.icon\">\n <img [src]=\"item.icon\" />\n </span>\n <span class=\"dropdown-label\">{{ item.label }}</span>\n </ng-template>\n </div>\n </div>\n</ng-template>\n", styles: [".actions-cell-container{display:flex;align-items:center;justify-content:center;width:100%;height:100%;position:relative;box-sizing:border-box}.inline-actions{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;flex-wrap:nowrap;padding:4px 0;flex-direction:row}.action-item{display:flex;align-items:center;justify-content:center;height:20px;border-radius:4px;cursor:pointer;transition:all .2s ease;background-color:transparent;border:none;outline:none;flex-shrink:0;min-height:20px}.action-item:hover:not(.disabled){background-color:#0000000a;transform:scale(1.05)}.action-item:active:not(.disabled){transform:scale(.95)}.action-item.disabled{opacity:.5;cursor:not-allowed}.action-item.disabled:hover{background-color:transparent;transform:none}.action-icon{font-size:16px;color:#666;display:flex;align-items:center;justify-content:center;width:100%;height:100%}.action-icon-svg{width:18px;height:18px;object-fit:contain;filter:brightness(0) saturate(100%) invert(40%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(.6) contrast(1);flex-shrink:0}.action-icon-svg:hover{filter:brightness(0) saturate(100%) invert(0%) sepia(0%) saturate(0%) hue-rotate(0deg) brightness(0) contrast(1)}.dropdown-trigger{cursor:pointer;display:flex;align-items:center;justify-content:center}.dropdown-actions{position:relative}.dropdown-menu-overlay{width:232px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1000}.dropdown-menu-item.disabled{color:#aaa;cursor:not-allowed}.dropdown-menu-item:hover:not(.disabled),.dropdown-menu-item.has-submenu:hover{background:#f5f5f5}.dropdown-menu-item{display:flex;align-items:center;padding:10px 18px;cursor:pointer;font-size:14px;position:relative}.dropdown-menu-item .dropdown-label{flex:1;margin-left:8px}.dropdown-menu-item .submenu-arrow{margin-left:auto;width:16px;height:16px}.dropdown-submenu{position:absolute;top:0;min-width:132px;background:#fff;border-radius:12px;box-shadow:0 4px 24px #0000001f;padding:8px 0;z-index:1001}.dropdown-submenu{left:100%;margin-left:4px}.submenu-arrow{display:flex;align-items:center;margin-left:auto;z-index:9999}.dropdown-icon{display:flex;justify-content:center;align-items:center}.dropdown-menu-item.disabled{color:#181f33;filter:grayscale(100%) opacity(.3);cursor:not-allowed}.checkbox-actions{display:flex;align-items:center;justify-content:center;width:100%;height:100%}\n"] }]
372
+ }], () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }], { cellData: [{
373
+ type: Input
374
+ }], config: [{
375
+ type: Input
376
+ }], actionClick: [{
377
+ type: Output
378
+ }], dropdownMenu: [{
379
+ type: ViewChild,
380
+ args: ['dropdownMenu', { static: false }]
381
+ }], dropdownTrigger: [{
382
+ type: ViewChild,
383
+ args: ['dropdownTrigger', { static: false }]
384
+ }], onDocumentClick: [{
385
+ type: HostListener,
386
+ args: ["document:click"]
387
+ }] }); })();
388
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionsCellComponent, { className: "ActionsCellComponent" }); })();
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvdGFibGUvYWN0aW9ucy1jZWxsL2FjdGlvbnMtY2VsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBYyxTQUFTLEVBQTBFLE1BQU0sZUFBZSxDQUFDO0FBQzVMLE9BQU8sRUFBRSxzQkFBc0IsRUFBVyxhQUFhLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7Ozs7SUNDakQsK0JBS0M7SUFEQyxvTkFBUyxxQ0FBMkIsS0FBQztJQUVyQywwQkFBb0U7SUFDdEUsaUJBQU07Ozs7SUFKSixnRkFBMEM7SUFHckMsY0FBaUI7SUFBQyxBQUFsQixvREFBaUIsc0JBQW1COzs7SUFQN0MsOEJBQTREO0lBQzFELDJFQUtDO0lBR0gsaUJBQU07OztJQVBlLGNBQWdCO0lBQUEsQUFBaEIsNENBQWdCLHNDQUFzQjs7OztJQVd6RCxBQURGLCtCQUFnRSxpQkFDdUM7SUFBdEQsbUxBQVMsNkJBQXNCLEtBQUM7O0lBQzdFLCtCQUE0RDtJQUcxRCxBQURBLEFBREEsNkJBQTJDLGlCQUNDLGlCQUNBO0lBR2xELEFBREUsQUFERSxpQkFBTSxFQUNGLEVBQ0Y7Ozs7SUFJSixBQURGLCtCQUFnRSx1QkFDOEQ7SUFBckYsd01BQWUsc0JBQWUsS0FBQztJQUN4RSxBQUQrSCxpQkFBZSxFQUN4STs7O0lBRFUsY0FBd0I7SUFBaUMsQUFBekQsNkNBQXdCLDBFQUFxRjs7OztJQU8zSCwrQkFBcUU7SUFDbkUsMkJBQXVIO0lBQ3pILGlCQUFNOzs7O0lBQ04sK0JBQXNFO0lBQ3BFLDJCQUF1SDtJQUN6SCxpQkFBTTs7OztJQU5SLEFBREYsK0JBQTBFLGNBQzRCO0lBQXpFLG1MQUFTLHNCQUFlLEtBQUM7SUFJbEQsQUFIQSxpRkFBcUUsb0VBR0M7SUFJMUUsQUFERSxpQkFBTSxFQUNGOzs7SUFSaUQsY0FBOEM7SUFBOUMsbUVBQThDO0lBQzNGLGNBQWtCO0lBQWxCLDBDQUFrQjtJQUdsQixjQUFtQjtJQUFuQiwyQ0FBbUI7OztJQWdCckIsZ0NBQThDO0lBQzVDLDBCQUF5QjtJQUMzQixpQkFBTzs7O0lBREEsY0FBaUI7SUFBakIsb0RBQWlCOzs7SUFpQnBCLGdDQUErQztJQUM3QywwQkFBMEI7SUFDNUIsaUJBQU87OztJQURBLGNBQWtCO0lBQWxCLHNEQUFrQjs7OztJQVAzQiwrQkFLQztJQURDLHlQQUFTLDZDQUFrQyxLQUFDO0lBRTVDLHVIQUErQztJQUcvQyxnQ0FBNkI7SUFBQSxZQUFpQjtJQUNoRCxBQURnRCxpQkFBTyxFQUNqRDs7OztJQVBKLGtGQUEyQztJQUdkLGNBQWdCO0lBQWhCLHFDQUFnQjtJQUdoQixlQUFpQjtJQUFqQixxQ0FBaUI7OztJQVZsRCwrQkFBdUQ7SUFDckQsK0dBS0M7SUFNSCxpQkFBTTs7O0lBVGdCLGNBQWdCO0lBQWhCLDBDQUFnQjs7O0lBZnhDLDZCQUE2RDtJQUMzRCwyR0FBOEM7SUFHOUMsZ0NBQTZCO0lBQUEsWUFBZ0I7SUFBQSxpQkFBTztJQUNwRCxnQ0FBNEI7O0lBQzFCLCtCQUE0RDtJQUMxRCwyQkFBNkc7SUFFakgsQUFERSxpQkFBTSxFQUNEO0lBR1AseUdBQXVEOzs7O0lBWDFCLGNBQWU7SUFBZixtQ0FBZTtJQUdmLGVBQWdCO0lBQWhCLG1DQUFnQjtJQVFkLGVBQXNCO0lBQXRCLDBDQUFzQjs7O0lBZ0JyRCxnQ0FBOEM7SUFDNUMsMEJBQXlCO0lBQzNCLGlCQUFPOzs7SUFEQSxjQUFpQjtJQUFqQixvREFBaUI7OztJQUR4QiwwR0FBOEM7SUFHOUMsZ0NBQTZCO0lBQUEsWUFBZ0I7SUFBQSxpQkFBTzs7O0lBSHZCLG1DQUFlO0lBR2YsZUFBZ0I7SUFBaEIsbUNBQWdCOzs7O0lBckNqRCwrQkFLQztJQUZDLDROQUFTLDJDQUFpQyxLQUFDO0lBOEIzQyxBQTNCQSw0R0FBNkQsNkhBMkJwQztJQU0zQixpQkFBTTs7Ozs7SUFuQ0osZ0ZBQTBDO0lBRTNCLGNBQTZCO0lBQUEsQUFBN0IsZ0ZBQTZCLDRCQUFlOzs7SUFQL0QsK0JBQW1DO0lBQ2pDLG9GQUtDO0lBbUNILGlCQUFNOzs7SUF0Q2UsY0FBYztJQUFkLDRDQUFjOztBRHJDckMsTUFBTSxPQUFPLG9CQUFvQjtJQW9CL0IsWUFDVSxPQUFnQixFQUNoQixnQkFBa0M7UUFEbEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBbEJsQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF1RSxDQUFDO1FBS2hILG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQUMvQixlQUFVLEdBQXdELFFBQVEsQ0FBQztRQUkzRSxpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUN0QixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ3pCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLGVBQVUsR0FBc0IsSUFBSSxDQUFDO0lBSzFDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNqQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ25DLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtRQUVELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7WUFDMUIsTUFBTSxhQUFhLEdBQTRCO2dCQUM3QyxVQUFVLEVBQUUsS0FBSztnQkFDakIsY0FBYyxFQUFFLElBQUk7YUFDckIsQ0FBQztZQUNGLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxhQUFhLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6RztpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLHFFQUFxRTtRQUNyRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUM1QyxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWdCLEVBQUUsS0FBWTtRQUMxQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsNENBQTRDO1FBQzVDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPO1FBRWxDLG1DQUFtQztRQUNuQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWEsRUFBRSxJQUFnQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxRQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE9BQU8sUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFHRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWTtRQUN6QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFeEQsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVwRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU5QyxNQUFNLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUN0QyxXQUFXLEVBQUUsSUFBSTtZQUNqQixhQUFhLEVBQUUsa0NBQWtDO1lBQ2pELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPO2lCQUMzQixRQUFRLEVBQUU7aUJBQ1YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztpQkFDekMsYUFBYSxDQUFDLFNBQVMsQ0FBQztpQkFDeEIsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQixjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUU7U0FDM0QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztJQUM3QixDQUFDO0lBRU8sYUFBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsMEZBQTBGO1FBQzFGLE9BQU87WUFDTCxxREFBcUQ7WUFDckQsSUFBSSxzQkFBc0IsQ0FDeEIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFDckMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFDcEMsQ0FBQyxFQUFFLENBQUMsQ0FDTDtZQUNELHNEQUFzRDtZQUN0RCxJQUFJLHNCQUFzQixDQUN4QixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUNsQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUN2QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ047WUFDRCx1REFBdUQ7WUFDdkQsSUFBSSxzQkFBc0IsQ0FDeEIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFDdkMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFDdEMsQ0FBQyxFQUFFLENBQUMsQ0FDTDtZQUNELHVEQUF1RDtZQUN2RCxJQUFJLHNCQUFzQixDQUN4QixFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUNwQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUN6QyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQ047U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELG1CQUFtQixDQUFDLElBQVMsRUFBRSxLQUFZO1FBQ3pDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTztRQUVsQyxJQUFJLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO1lBQzFCLGlCQUFpQjtZQUNqQixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNyQyxrQ0FBa0M7WUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLEtBQUssSUFBSTtvQkFBRSxDQUFDLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN4QyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxnQkFBZ0I7WUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTTtnQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsb0NBQW9DO1NBQzNEO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3BCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFnQjtRQUN6QixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUU7WUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztxRkF2TVUsb0JBQW9CO29FQUFwQixvQkFBb0I7Ozs7Ozs7O1lBQXBCLHlGQUFBLHFCQUFpQixpQ0FBRzs7WUNWakMsOEJBQStEO1lBeUI3RCxBQVhBLEFBWkEscUVBQTRELHdEQVlJLHdEQVdBO1lBR2xFLGlCQUFNO1lBZU4sQUFaQSxxRUFBMEUseUdBWS9DOztZQTNDUyw0Q0FBMEI7WUFFdEQsY0FBNkI7WUFBN0Isa0RBQTZCO1lBWTdCLGNBQStCO1lBQS9CLG9EQUErQjtZQVcvQixjQUErQjtZQUEvQixvREFBK0I7WUFNakMsY0FBbUM7WUFBbkMsd0RBQW1DOzs7aUZEckI1QixvQkFBb0I7Y0FMaEMsU0FBUzsyQkFDRSxrQkFBa0I7dUVBS25CLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxNQUFNO2tCQUFkLEtBQUs7WUFFSSxXQUFXO2tCQUFwQixNQUFNO1lBRXVDLFlBQVk7a0JBQXpELFNBQVM7bUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNLLGVBQWU7a0JBQS9ELFNBQVM7bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBMkUvQyxlQUFlO2tCQURkLFlBQVk7bUJBQUMsZ0JBQWdCOztrRkFqRm5CLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEhvc3RMaXN0ZW5lciwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7IEFjdGlvbkl0ZW0gfSBmcm9tIFwiLi4vdGFibGUuY29tcG9uZW50XCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJtaXMtYWN0aW9ucy1jZWxsXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsOiBcIi4vYWN0aW9ucy1jZWxsLmNvbXBvbmVudC5jc3NcIlxufSlcbmV4cG9ydCBjbGFzcyBBY3Rpb25zQ2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY2VsbERhdGE7XG4gIEBJbnB1dCgpIGNvbmZpZztcblxuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaXRlbT86IEFjdGlvbkl0ZW07IGRhdGE/OiBhbnksIGFjdGlvblR5cGU/OiBzdHJpbmcsIHZhbHVlPzogYW55IH0+KCk7XG5cbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25NZW51JywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duTWVudTogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnZHJvcGRvd25UcmlnZ2VyJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRyb3Bkb3duVHJpZ2dlcjogRWxlbWVudFJlZjtcblxuICBpc0Ryb3Bkb3duT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBhY3Rpb25JdGVtczogQWN0aW9uSXRlbVtdID0gW107XG4gIGFjdGlvblR5cGU6IFwiaW5saW5lXCIgfCBcImRyb3Bkb3duXCIgfCBcImNoZWNrYm94XCIgfCBcInJvdy1jb2xsYXBzZVwiID0gXCJpbmxpbmVcIjtcbiAgYWN0aW9uPzogKGRhdGE6IGFueSkgPT4gdm9pZDtcbiAgZGF0YTogYW55O1xuICBkaXNhYmxlOiAoZGF0YTogYW55KSA9PiBib29sZWFuO1xuICBjdXJyZW50U3RhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3R5bGU6IGFueSA9IHt9O1xuICBjb250YWluZXJTdHlsZTogYW55ID0ge307XG4gIHByaXZhdGUgb3ZlcmxheVJlZjogT3ZlcmxheVJlZiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZykge1xuICAgICAgdGhpcy5hY3Rpb25JdGVtcyA9IHRoaXMuY29uZmlnLmFjdGlvbkl0ZW1zO1xuICAgICAgdGhpcy5hY3Rpb25UeXBlID0gdGhpcy5jb25maWcuYWN0aW9uVHlwZTtcbiAgICAgIHRoaXMuX3N0eWxlID0gdGhpcy5jb25maWcuc3R5bGU7XG4gICAgICB0aGlzLmFjdGlvbiA9IHRoaXMuY29uZmlnLmFjdGlvbjtcbiAgICAgIHRoaXMuZGlzYWJsZSA9IHRoaXMuY29uZmlnLmRpc2FibGU7XG4gICAgICB0aGlzLnByb2Nlc3NTdHlsZSgpO1xuICAgIH1cbiAgXG4gICAgaWYgKHRoaXMuY2VsbERhdGEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRTdGF0ZXM6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge1xuICAgICAgICAnY2hlY2tib3gnOiBmYWxzZSxcbiAgICAgICAgJ3Jvdy1jb2xsYXBzZSc6IHRydWUsXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuYWN0aW9uVHlwZSBpbiBkZWZhdWx0U3RhdGVzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0YXRlID0gdHlwZW9mIHRoaXMuY2VsbERhdGEgPT09ICdib29sZWFuJyA/IHRoaXMuY2VsbERhdGEgOiBkZWZhdWx0U3RhdGVzW3RoaXMuYWN0aW9uVHlwZV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLmNlbGxEYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3R5bGUoKTogdm9pZCB7XG4gICAgLy8gUmVtb3ZlIHdpZHRoIGZyb20gc3R5bGUgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGFibGUgY29sdW1uIHdpZHRoXG4gICAgY29uc3QgeyB3aWR0aCwgLi4ucmVzdFN0eWxlIH0gPSB0aGlzLl9zdHlsZTtcbiAgICB0aGlzLmNvbnRhaW5lclN0eWxlID0gcmVzdFN0eWxlO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhpdGVtOiBBY3Rpb25JdGVtLCBldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIENoZWNrIHBlcm1pc3Npb25zIGJlZm9yZSBleGVjdXRpbmcgYWN0aW9uXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgLy8gRXhlY3V0ZSBhY3Rpb24gb25seSBpZiBwZXJtaXR0ZWRcbiAgICBpZiAoaXRlbS5hY3Rpb24pIHtcbiAgICAgIGl0ZW0uYWN0aW9uKHRoaXMuZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5hY3Rpb25DbGljay5lbWl0KHsgaXRlbSB9KTtcbiAgfVxuXG4gIHRyYWNrQnlBY3Rpb24oaW5kZXg6IG51bWJlciwgaXRlbTogQWN0aW9uSXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGl0ZW0udmFsdWU7XG4gIH1cblxuICBpc1N2Z0ZpbGUoaWNvblBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghaWNvblBhdGgpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcIi5zdmdcIikgfHwgaWNvblBhdGgudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImFzc2V0cy9pY29ucy9cIik7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKFwiZG9jdW1lbnQ6Y2xpY2tcIilcbiAgb25Eb2N1bWVudENsaWNrKCkge1xuICAgIGlmICh0aGlzLmlzRHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBcbiAgICBpZiAodGhpcy5pc0Ryb3Bkb3duT3Blbikge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRyb3Bkb3duVHJpZ2dlciB8fCAhdGhpcy5kcm9wZG93bk1lbnUpIHJldHVybjtcblxuICAgIC8vIENsb3NlIGFsbCBzdWJtZW51cyB3aGVuIG9wZW5pbmcgbWFpbiBtZW51XG4gICAgdGhpcy5hY3Rpb25JdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IChpdGVtLnNob3dTdWJtZW51ID0gZmFsc2UpKTtcblxuICAgIGNvbnN0IHBvc2l0aW9ucyA9IHRoaXMuZ2V0RHJvcGRvd25Qb3NpdGlvbnMoKTtcbiAgICBcbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZHJvcGRvd25UcmlnZ2VyKVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpXG4gICAgICAgIC53aXRoUHVzaCh0cnVlKSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25NZW51LCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcblxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc0Ryb3Bkb3duT3BlbiA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMub3ZlcmxheVJlZiA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuaXNEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RHJvcGRvd25Qb3NpdGlvbnMoKTogQ29ubmVjdGlvblBvc2l0aW9uUGFpcltdIHtcbiAgICAvLyBVc2UgQ0RLIE92ZXJsYXkncyBmbGV4aWJsZSBwb3NpdGlvbmluZyAtIGl0IHdpbGwgYXV0b21hdGljYWxseSBjaG9vc2UgdGhlIGJlc3QgcG9zaXRpb25cbiAgICByZXR1cm4gW1xuICAgICAgLy8gUHJpbWFyeSBwb3NpdGlvbjogYmVsb3cgYW5kIGFsaWduZWQgdG8gZW5kIChyaWdodClcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgICAgIDAsIDRcbiAgICAgICksXG4gICAgICAvLyBGYWxsYmFjayBwb3NpdGlvbjogYWJvdmUgYW5kIGFsaWduZWQgdG8gZW5kIChyaWdodClcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdib3R0b20nIH0sXG4gICAgICAgIDAsIC00XG4gICAgICApLFxuICAgICAgLy8gRmFsbGJhY2sgcG9zaXRpb246IGJlbG93IGFuZCBhbGlnbmVkIHRvIHN0YXJ0IChsZWZ0KVxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgIHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2JvdHRvbScgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgICAgIDAsIDRcbiAgICAgICksXG4gICAgICAvLyBGYWxsYmFjayBwb3NpdGlvbjogYWJvdmUgYW5kIGFsaWduZWQgdG8gc3RhcnQgKGxlZnQpXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgMCwgLTRcbiAgICAgIClcbiAgICBdO1xuICB9XG5cbiAgb25Ecm9wZG93bkl0ZW1DbGljayhpdGVtOiBhbnksIGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZChpdGVtKSkgcmV0dXJuO1xuXG4gICAgaWYgKGl0ZW0/LmNoaWxkcmVuPy5sZW5ndGgpIHtcbiAgICAgIC8vIFRvZ2dsZSBzdWJtZW51XG4gICAgICBpdGVtLnNob3dTdWJtZW51ID0gIWl0ZW0uc2hvd1N1Ym1lbnU7XG4gICAgICAvLyBPcHRpb25hbGx5IGNsb3NlIG90aGVyIHN1Ym1lbnVzXG4gICAgICB0aGlzLmFjdGlvbkl0ZW1zLmZvckVhY2goKGk6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaSAhPT0gaXRlbSkgaS5zaG93U3VibWVudSA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEhhbmRsZSBhY3Rpb25cbiAgICAgIGlmIChpdGVtLmFjdGlvbikgaXRlbS5hY3Rpb24odGhpcy5kYXRhKTtcbiAgICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIGRhdGE6IHRoaXMuZGF0YSB9KTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpOyAvLyBPbmx5IGNsb3NlIGlmIGFjdGlvbiB3YXMgZXhlY3V0ZWRcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBhbnkpOiB2b2lke1xuICAgIHRoaXMuY3VycmVudFN0YXRlID0gIXRoaXMuY3VycmVudFN0YXRlO1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdCh7IFxuICAgICAgYWN0aW9uVHlwZTogdGhpcy5hY3Rpb25UeXBlLFxuICAgICAgdmFsdWU6IHRoaXMuY3VycmVudFN0YXRlXG4gICAgfSk7XG4gIH1cblxuICBpc0Rpc2FibGVkKGl0ZW06IEFjdGlvbkl0ZW0pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0uZGlzYWJsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm4gaXRlbS5kaXNhYmxlKHRoaXMuZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBcbn1cbiIsIjxkaXYgY2xhc3M9XCJhY3Rpb25zLWNlbGwtY29udGFpbmVyXCIgW25nU3R5bGVdPVwiY29udGFpbmVyU3R5bGVcIj5cbiAgPCEtLSBJbmxpbmUgQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdpbmxpbmUnXCIgY2xhc3M9XCJpbmxpbmUtYWN0aW9uc1wiPlxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGlvbkl0ZW1zOyB0cmFja0J5OiB0cmFja0J5QWN0aW9uXCJcbiAgICAgIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIlxuICAgICAgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogaXNEaXNhYmxlZChpdGVtKSB9XCJcbiAgICAgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKGl0ZW0sICRldmVudClcIlxuICAgID5cbiAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiBbYWx0XT1cIml0ZW0ubGFiZWxcIiBjbGFzcz1cImFjdGlvbi1pY29uLXN2Z1wiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gRHJvcGRvd24gQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdkcm9wZG93bidcIiBjbGFzcz1cImRyb3Bkb3duLWFjdGlvbnNcIj5cbiAgICA8ZGl2ICNkcm9wZG93blRyaWdnZXIgY2xhc3M9XCJkcm9wZG93bi10cmlnZ2VyXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKCRldmVudClcIiB0aXRsZT1cIk1vcmUgYWN0aW9uc1wiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCI0XCIgcj1cIjJcIiBmaWxsPVwiIzMzM1wiIC8+XG4gICAgICAgIDxjaXJjbGUgY3g9XCIxMFwiIGN5PVwiMTBcIiByPVwiMlwiIGZpbGw9XCIjMzMzXCIgLz5cbiAgICAgICAgPGNpcmNsZSBjeD1cIjEwXCIgY3k9XCIxNlwiIHI9XCIyXCIgZmlsbD1cIiMzMzNcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gQ2hlY2tib3ggQWN0aW9ucyAtLT5cbiAgPGRpdiAqbmdJZj1cImFjdGlvblR5cGUgPT09ICdjaGVja2JveCdcIiBjbGFzcz1cImNoZWNrYm94LWFjdGlvbnNcIj5cbiAgICA8bWlzLWNoZWNrYm94IFtjaGVja2VkXT1cImN1cnJlbnRTdGF0ZVwiICh2YWx1ZUNoYW5nZSk9XCJvbkNsaWNrKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZSA/IGRpc2FibGUoY3VycmVudFN0YXRlKSA6IGZhbHNlXCI+IDwvbWlzLWNoZWNrYm94PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48IS0tIENvbGxhcHNlIC8gRXhwYW5kIEFjdGlvbnMgLS0+XG48ZGl2ICpuZ0lmPVwiYWN0aW9uVHlwZSA9PT0gJ3Jvdy1jb2xsYXBzZSdcIiBjbGFzcz1cImNvbGxhcHNlLXRvZ2dsZS1hY3Rpb25cIj5cbiAgPGRpdiBjbGFzcz1cImNvbGxhcHNlLWljb25cIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCIgW3RpdGxlXT1cImN1cnJlbnRTdGF0ZSA/ICdFeHBhbmQnIDogJ0NvbGxhcHNlJ1wiPlxuICAgIDxzdmcgKm5nSWY9XCJjdXJyZW50U3RhdGVcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICA8cGF0aCBkPVwiTTcgMTBsNSA1IDUtNVwiIHN0cm9rZT1cIiMwRDEzMjFcIiBzdHJva2Utd2lkdGg9XCIyXCIgZmlsbD1cIm5vbmVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgIDwvc3ZnPlxuICAgIDxzdmcgKm5nSWY9XCIhY3VycmVudFN0YXRlXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgPHBhdGggZD1cIk03IDE0bDUtNSA1IDVcIiBzdHJva2U9XCIjMEQxMzIxXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICA8L3N2Zz5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBDREsgT3ZlcmxheSBUZW1wbGF0ZSBmb3IgRHJvcGRvd24gTWVudSAtLT5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25NZW51PlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudS1vdmVybGF5XCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJkcm9wZG93bi1tZW51LWl0ZW1cIlxuICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aW9uSXRlbXNcIlxuICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25JdGVtQ2xpY2soaXRlbSwgJGV2ZW50KVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc0Rpc2FibGVkKGl0ZW0pIH1cIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmNoaWxkcmVuPy5sZW5ndGg7IGVsc2Ugbm9DaGlsZHJlblwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWljb25cIiAqbmdJZj1cIml0ZW0uaWNvblwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24tbGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInN1Ym1lbnUtYXJyb3dcIj5cbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgPHBhdGggZD1cIk05IDZMMTUgMTJMOSAxOFwiIHN0cm9rZT1cIiMwRDEzMjFcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgIDwhLS0gRFlOQU1JQyBTVUJNRU5VIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tc3VibWVudVwiICpuZ0lmPVwiaXRlbS5zaG93U3VibWVudVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tbWVudS1pdGVtXCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLmNoaWxkcmVuXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzRGlzYWJsZWQoY2hpbGQpIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRHJvcGRvd25JdGVtQ2xpY2soY2hpbGQsICRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcGRvd24taWNvblwiICpuZ0lmPVwiY2hpbGQuaWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2hpbGQuaWNvblwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgY2hpbGQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9DaGlsZHJlbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaXRlbS5pY29uXCIgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLWxhYmVsXCI+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -1,6 +1,8 @@
1
- export { TableComponent } from "./table.component";
1
+ export * from './table.component';
2
+ export * from './table.module';
3
+ export * from './sort-icons.directive';
2
4
  export { SubTableComponent } from "./sub-table/sub-table.component";
3
5
  export { CustomTableCellDirective } from "./custom-table-cell.directive";
4
- export { TableModule } from "./table.module";
5
6
  export { TableFilterComponent } from "./filter/filter.component";
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFRhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4vdGFibGUuY29tcG9uZW50XCI7XG5leHBvcnQgeyBTdWJUYWJsZUNvbXBvbmVudCB9IGZyb20gXCIuL3N1Yi10YWJsZS9zdWItdGFibGUuY29tcG9uZW50XCI7XG5leHBvcnQgeyBDdXN0b21UYWJsZUNlbGxEaXJlY3RpdmUgfSBmcm9tIFwiLi9jdXN0b20tdGFibGUtY2VsbC5kaXJlY3RpdmVcIjtcbmV4cG9ydCB7IFRhYmxlTW9kdWxlIH0gZnJvbSBcIi4vdGFibGUubW9kdWxlXCI7XG5leHBvcnQgeyBUYWJsZUNvbmZpZywgUGFnaW5hdGlvbkNvbmZpZywgUm93Q29uZmlnLCBDb2xIZWFkZXJDb25maWcsIENvbENvbmZpZyB9IGZyb20gXCIuL3RhYmxlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgU3ViVGFibGVDb25maWcsIFN1YlRhYmxlQ29sQ29uZmlnLCBTdWJUYWJsZUNvbEhlYWRlckNvbmZpZywgU3ViVGFibGVSb3dDb25maWcgfSBmcm9tIFwiLi9zdWItdGFibGUvc3ViLXRhYmxlLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgVGFibGVGaWx0ZXJDb21wb25lbnQgfSBmcm9tIFwiLi9maWx0ZXIvZmlsdGVyLmNvbXBvbmVudFwiO1xuZXhwb3J0IHsgRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcbiJdfQ==
7
+ export { ActionsCellComponent } from "./actions-cell/actions-cell.component";
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3RhYmxlL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFHekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RhYmxlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NvcnQtaWNvbnMuZGlyZWN0aXZlJztcbmV4cG9ydCB7IFN1YlRhYmxlQ29tcG9uZW50IH0gZnJvbSBcIi4vc3ViLXRhYmxlL3N1Yi10YWJsZS5jb21wb25lbnRcIjtcbmV4cG9ydCB7IEN1c3RvbVRhYmxlQ2VsbERpcmVjdGl2ZSB9IGZyb20gXCIuL2N1c3RvbS10YWJsZS1jZWxsLmRpcmVjdGl2ZVwiO1xuZXhwb3J0IHsgVGFibGVDb25maWcsIFBhZ2luYXRpb25Db25maWcsIFJvd0NvbmZpZywgQ29sSGVhZGVyQ29uZmlnLCBDb2xDb25maWcgfSBmcm9tIFwiLi90YWJsZS5jb21wb25lbnRcIjtcbmV4cG9ydCB7IFN1YlRhYmxlQ29uZmlnLCBTdWJUYWJsZUNvbENvbmZpZywgU3ViVGFibGVDb2xIZWFkZXJDb25maWcsIFN1YlRhYmxlUm93Q29uZmlnIH0gZnJvbSBcIi4vc3ViLXRhYmxlL3N1Yi10YWJsZS5jb21wb25lbnRcIjtcbmV4cG9ydCB7IFRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSBcIi4vZmlsdGVyL2ZpbHRlci5jb21wb25lbnRcIjtcbmV4cG9ydCB7IEZpbHRlciB9IGZyb20gXCIuL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50XCI7XG5leHBvcnQgeyBBY3Rpb25zQ2VsbENvbXBvbmVudCB9IGZyb20gXCIuL2FjdGlvbnMtY2VsbC9hY3Rpb25zLWNlbGwuY29tcG9uZW50XCI7Il19