cloud-ide-element 0.0.1 → 1.0.2

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 (50) hide show
  1. package/README.md +271 -24
  2. package/esm2022/lib/components/confirmation-modal/confirmation-modal.component.mjs +182 -0
  3. package/esm2022/lib/components/data-grid/data-grid.component.mjs +1363 -0
  4. package/esm2022/lib/components/data-grid/data-grid.types.mjs +37 -0
  5. package/esm2022/lib/components/dropdown/dropdown.component.mjs +396 -0
  6. package/esm2022/lib/components/global-notifications/global-notifications.component.mjs +30 -0
  7. package/esm2022/lib/components/json-editor/json-editor.component.mjs +521 -0
  8. package/esm2022/lib/components/skeleton-loader/skeleton-loader.component.mjs +33 -0
  9. package/esm2022/lib/components/toast-notification/toast-notification.component.mjs +152 -0
  10. package/esm2022/lib/elements/button/cide-ele-button.component.mjs +249 -0
  11. package/esm2022/lib/elements/file-input/file-input.component.mjs +83 -0
  12. package/esm2022/lib/elements/icon/icon.component.mjs +5 -3
  13. package/esm2022/lib/elements/input/input.component.mjs +34 -20
  14. package/esm2022/lib/elements/select/select.component.mjs +471 -0
  15. package/esm2022/lib/elements/tab/cide-ele-tab.component.mjs +74 -0
  16. package/esm2022/lib/elements/textarea/textarea.component.mjs +157 -0
  17. package/esm2022/lib/services/confirmation.service.mjs +151 -0
  18. package/esm2022/lib/services/dropdown-manager.service.mjs +93 -0
  19. package/esm2022/lib/services/notification.service.mjs +196 -0
  20. package/esm2022/lib/utils/directives/resizer/resizer.directive.mjs +231 -0
  21. package/esm2022/lib/utils/directives/tooltip/tooltip.directive.mjs +294 -0
  22. package/esm2022/lib/utils/services/elements/elements.service.mjs +9 -7
  23. package/esm2022/public-api.mjs +23 -2
  24. package/fesm2022/cloud-ide-element.mjs +4646 -47
  25. package/fesm2022/cloud-ide-element.mjs.map +1 -1
  26. package/lib/components/confirmation-modal/confirmation-modal.component.d.ts +16 -0
  27. package/lib/components/data-grid/data-grid.component.d.ts +244 -0
  28. package/lib/components/data-grid/data-grid.types.d.ts +146 -0
  29. package/lib/components/dropdown/dropdown.component.d.ts +75 -0
  30. package/lib/components/global-notifications/global-notifications.component.d.ts +5 -0
  31. package/lib/components/json-editor/json-editor.component.d.ts +116 -0
  32. package/lib/components/skeleton-loader/skeleton-loader.component.d.ts +11 -0
  33. package/lib/components/toast-notification/toast-notification.component.d.ts +13 -0
  34. package/lib/elements/button/cide-ele-button.component.d.ts +85 -0
  35. package/lib/elements/file-input/file-input.component.d.ts +25 -0
  36. package/lib/elements/input/input.component.d.ts +7 -4
  37. package/lib/elements/select/select.component.d.ts +91 -0
  38. package/lib/elements/tab/cide-ele-tab.component.d.ts +26 -0
  39. package/lib/elements/textarea/textarea.component.d.ts +47 -0
  40. package/lib/services/confirmation.service.d.ts +65 -0
  41. package/lib/services/dropdown-manager.service.d.ts +22 -0
  42. package/lib/services/notification.service.d.ts +81 -0
  43. package/lib/utils/directives/resizer/resizer.directive.d.ts +44 -0
  44. package/lib/utils/directives/tooltip/tooltip.directive.d.ts +43 -0
  45. package/package.json +30 -4
  46. package/public-api.d.ts +18 -1
  47. package/src/lib/assets/css/cide-ele-style.scss +85 -0
  48. package/src/lib/assets/css/cide-ele-variable.scss +336 -0
  49. package/esm2022/lib/elements/button/button.component.mjs +0 -60
  50. package/lib/elements/button/button.component.d.ts +0 -27
@@ -0,0 +1,294 @@
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class TooltipDirective {
4
+ constructor(el, renderer) {
5
+ this.el = el;
6
+ this.renderer = renderer;
7
+ this.cideEleTooltip = '';
8
+ this.tooltipColor = '';
9
+ this.tooltipBg = '';
10
+ this.tooltipPlacement = 'top';
11
+ this.tooltipType = 'default';
12
+ this.tooltipDelay = 300; // ms
13
+ this.tooltipDir = 'top'; // Alias for tooltipPlacement for backward compatibility
14
+ this.tooltipShowArrow = false;
15
+ this.tooltipMultiline = false;
16
+ this.tooltipMaxWidth = '200px';
17
+ this.tooltipInteractive = false;
18
+ this.tooltipClass = '';
19
+ this.tooltipElement = null;
20
+ this.visible = false;
21
+ this.showTimeout = null;
22
+ this.hideTimeout = null;
23
+ this.hideDelay = 150; // ms
24
+ this.interactiveMouseLeaveHandler = null;
25
+ }
26
+ ngOnInit() {
27
+ // Use tooltipDir as fallback if provided and tooltipPlacement is default
28
+ if (this.tooltipDir && this.tooltipPlacement === 'top') {
29
+ this.tooltipPlacement = this.tooltipDir;
30
+ }
31
+ // If user hasn't provided custom colors and is using a predefined type,
32
+ // we'll leave colors empty to use CSS class colors
33
+ if (this.tooltipType !== 'default' && !this.tooltipColor && !this.tooltipBg) {
34
+ this.tooltipColor = '';
35
+ this.tooltipBg = '';
36
+ }
37
+ }
38
+ onMouseEnter() {
39
+ this.clearTimeouts();
40
+ this.showTimeout = window.setTimeout(() => {
41
+ this.show();
42
+ }, this.tooltipDelay);
43
+ }
44
+ onFocus() {
45
+ this.clearTimeouts();
46
+ this.showTimeout = window.setTimeout(() => {
47
+ this.show();
48
+ }, this.tooltipDelay);
49
+ }
50
+ onMouseLeave() {
51
+ this.clearTimeouts();
52
+ // Don't hide immediately if interactive
53
+ if (!this.tooltipInteractive) {
54
+ this.hide();
55
+ }
56
+ else {
57
+ // For interactive tooltips, delay hiding to allow user to move to tooltip
58
+ this.hideTimeout = window.setTimeout(() => {
59
+ this.hide();
60
+ }, this.hideDelay);
61
+ }
62
+ }
63
+ onBlur() {
64
+ this.clearTimeouts();
65
+ this.hide();
66
+ }
67
+ onClick() {
68
+ if (this.visible && !this.tooltipInteractive) {
69
+ this.hide();
70
+ }
71
+ }
72
+ ngOnDestroy() {
73
+ this.clearTimeouts();
74
+ this.destroyTooltip();
75
+ }
76
+ clearTimeouts() {
77
+ if (this.showTimeout) {
78
+ clearTimeout(this.showTimeout);
79
+ this.showTimeout = null;
80
+ }
81
+ if (this.hideTimeout) {
82
+ clearTimeout(this.hideTimeout);
83
+ this.hideTimeout = null;
84
+ }
85
+ }
86
+ show() {
87
+ if (!this.cideEleTooltip || this.visible)
88
+ return;
89
+ this.createTooltip();
90
+ this.styleTooltip();
91
+ this.positionTooltip();
92
+ // Add animation with requestAnimationFrame for smoother transition
93
+ requestAnimationFrame(() => {
94
+ if (this.tooltipElement) {
95
+ this.renderer.addClass(this.tooltipElement, 'tooltip-visible');
96
+ // Show arrow if enabled
97
+ if (this.tooltipShowArrow) {
98
+ this.renderer.addClass(this.tooltipElement, 'tooltip-arrow-visible');
99
+ }
100
+ }
101
+ });
102
+ this.visible = true;
103
+ // Add mouseleave event listener if interactive
104
+ if (this.tooltipInteractive && this.tooltipElement) {
105
+ this.interactiveMouseLeaveHandler = () => {
106
+ this.clearTimeouts();
107
+ this.hide();
108
+ };
109
+ this.tooltipElement.addEventListener('mouseleave', this.interactiveMouseLeaveHandler);
110
+ // Also add mouseenter to cancel any pending hide
111
+ this.tooltipElement.addEventListener('mouseenter', () => {
112
+ this.clearTimeouts();
113
+ });
114
+ }
115
+ }
116
+ hide() {
117
+ if (!this.visible || !this.tooltipElement)
118
+ return;
119
+ this.renderer.removeClass(this.tooltipElement, 'tooltip-visible');
120
+ this.renderer.removeClass(this.tooltipElement, 'tooltip-arrow-visible');
121
+ // Use timeout for smoother hide animation
122
+ setTimeout(() => {
123
+ if (!this.visible) { // Double-check in case tooltip was reshown
124
+ this.destroyTooltip();
125
+ }
126
+ }, this.hideDelay);
127
+ this.visible = false;
128
+ }
129
+ createTooltip() {
130
+ this.destroyTooltip();
131
+ this.tooltipElement = this.renderer.createElement('div');
132
+ this.renderer.addClass(this.tooltipElement, 'tooltip');
133
+ // Add placement class for arrow
134
+ this.renderer.addClass(this.tooltipElement, `tooltip-${this.tooltipPlacement}`);
135
+ // Add type class if using a predefined type
136
+ if (this.tooltipType !== 'default') {
137
+ this.renderer.addClass(this.tooltipElement, `tooltip-${this.tooltipType}`);
138
+ }
139
+ // Add multiline class if enabled
140
+ if (this.tooltipMultiline) {
141
+ this.renderer.addClass(this.tooltipElement, 'tooltip-multiline');
142
+ }
143
+ // Add interactive class if enabled
144
+ if (this.tooltipInteractive) {
145
+ this.renderer.addClass(this.tooltipElement, 'tooltip-interactive');
146
+ }
147
+ // Add custom classes if provided
148
+ if (this.tooltipClass) {
149
+ const classes = this.tooltipClass.split(' ');
150
+ classes.forEach(className => {
151
+ if (className.trim()) {
152
+ this.renderer.addClass(this.tooltipElement, className.trim());
153
+ }
154
+ });
155
+ }
156
+ // Create HTML content if multiline
157
+ if (this.tooltipMultiline) {
158
+ this.renderer.setProperty(this.tooltipElement, 'innerHTML', this.cideEleTooltip);
159
+ }
160
+ else {
161
+ const textNode = this.renderer.createText(this.cideEleTooltip);
162
+ this.renderer.appendChild(this.tooltipElement, textNode);
163
+ }
164
+ this.renderer.appendChild(document.body, this.tooltipElement);
165
+ }
166
+ styleTooltip() {
167
+ if (!this.tooltipElement)
168
+ return;
169
+ // Set custom CSS variables for the tooltip colors if provided
170
+ if (this.tooltipColor) {
171
+ this.renderer.setStyle(this.tooltipElement, '--tooltip-color', this.tooltipColor);
172
+ }
173
+ if (this.tooltipBg) {
174
+ this.renderer.setStyle(this.tooltipElement, '--tooltip-bg', this.tooltipBg);
175
+ }
176
+ // Set custom max width if provided
177
+ if (this.tooltipMaxWidth && this.tooltipMultiline) {
178
+ this.renderer.setStyle(this.tooltipElement, '--tooltip-max-width', this.tooltipMaxWidth);
179
+ }
180
+ }
181
+ positionTooltip() {
182
+ if (!this.tooltipElement)
183
+ return;
184
+ const hostRect = this.el.nativeElement.getBoundingClientRect();
185
+ const tooltipRect = this.tooltipElement.getBoundingClientRect();
186
+ // Account for page scroll
187
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
188
+ const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
189
+ let top = 0;
190
+ let left = 0;
191
+ // Calculate position based on placement
192
+ switch (this.tooltipPlacement) {
193
+ case 'top':
194
+ top = hostRect.top + scrollTop - tooltipRect.height - 6;
195
+ left = hostRect.left + scrollLeft + (hostRect.width / 2) - (tooltipRect.width / 2);
196
+ break;
197
+ case 'bottom':
198
+ top = hostRect.bottom + scrollTop + 6;
199
+ left = hostRect.left + scrollLeft + (hostRect.width / 2) - (tooltipRect.width / 2);
200
+ break;
201
+ case 'left':
202
+ top = hostRect.top + scrollTop + (hostRect.height / 2) - (tooltipRect.height / 2);
203
+ left = hostRect.left + scrollLeft - tooltipRect.width - 6;
204
+ break;
205
+ case 'right':
206
+ top = hostRect.top + scrollTop + (hostRect.height / 2) - (tooltipRect.height / 2);
207
+ left = hostRect.right + scrollLeft + 6;
208
+ break;
209
+ }
210
+ // Adjust if tooltip would be outside viewport
211
+ const viewportWidth = window.innerWidth;
212
+ const viewportHeight = window.innerHeight;
213
+ // Top boundary check
214
+ if (top < scrollTop + 4) {
215
+ top = scrollTop + 4;
216
+ }
217
+ else if (top + tooltipRect.height > scrollTop + viewportHeight - 4) {
218
+ top = scrollTop + viewportHeight - tooltipRect.height - 4;
219
+ }
220
+ // Left boundary check
221
+ if (left < scrollLeft + 4) {
222
+ left = scrollLeft + 4;
223
+ }
224
+ else if (left + tooltipRect.width > scrollLeft + viewportWidth - 4) {
225
+ left = scrollLeft + viewportWidth - tooltipRect.width - 4;
226
+ }
227
+ this.renderer.setStyle(this.tooltipElement, 'position', 'absolute');
228
+ this.renderer.setStyle(this.tooltipElement, 'top', `${top}px`);
229
+ this.renderer.setStyle(this.tooltipElement, 'left', `${left}px`);
230
+ }
231
+ destroyTooltip() {
232
+ if (this.tooltipElement) {
233
+ // Remove event listeners for interactive tooltips using the stored reference
234
+ if (this.tooltipInteractive && this.interactiveMouseLeaveHandler) {
235
+ this.tooltipElement.removeEventListener('mouseleave', this.interactiveMouseLeaveHandler);
236
+ this.interactiveMouseLeaveHandler = null;
237
+ }
238
+ const parent = this.tooltipElement.parentNode;
239
+ if (parent) {
240
+ this.renderer.removeChild(parent, this.tooltipElement);
241
+ }
242
+ this.tooltipElement = null;
243
+ }
244
+ }
245
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TooltipDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
246
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: TooltipDirective, isStandalone: true, selector: "[cideEleTooltip]", inputs: { cideEleTooltip: "cideEleTooltip", tooltipColor: "tooltipColor", tooltipBg: "tooltipBg", tooltipPlacement: "tooltipPlacement", tooltipType: "tooltipType", tooltipDelay: "tooltipDelay", tooltipDir: "tooltipDir", tooltipShowArrow: "tooltipShowArrow", tooltipMultiline: "tooltipMultiline", tooltipMaxWidth: "tooltipMaxWidth", tooltipInteractive: "tooltipInteractive", tooltipClass: "tooltipClass" }, host: { listeners: { "mouseenter": "onMouseEnter()", "focus": "onFocus()", "mouseleave": "onMouseLeave()", "blur": "onBlur()", "click": "onClick()" } }, ngImport: i0 }); }
247
+ }
248
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: TooltipDirective, decorators: [{
249
+ type: Directive,
250
+ args: [{
251
+ selector: '[cideEleTooltip]',
252
+ standalone: true
253
+ }]
254
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { cideEleTooltip: [{
255
+ type: Input
256
+ }], tooltipColor: [{
257
+ type: Input
258
+ }], tooltipBg: [{
259
+ type: Input
260
+ }], tooltipPlacement: [{
261
+ type: Input
262
+ }], tooltipType: [{
263
+ type: Input
264
+ }], tooltipDelay: [{
265
+ type: Input
266
+ }], tooltipDir: [{
267
+ type: Input
268
+ }], tooltipShowArrow: [{
269
+ type: Input
270
+ }], tooltipMultiline: [{
271
+ type: Input
272
+ }], tooltipMaxWidth: [{
273
+ type: Input
274
+ }], tooltipInteractive: [{
275
+ type: Input
276
+ }], tooltipClass: [{
277
+ type: Input
278
+ }], onMouseEnter: [{
279
+ type: HostListener,
280
+ args: ['mouseenter']
281
+ }], onFocus: [{
282
+ type: HostListener,
283
+ args: ['focus']
284
+ }], onMouseLeave: [{
285
+ type: HostListener,
286
+ args: ['mouseleave']
287
+ }], onBlur: [{
288
+ type: HostListener,
289
+ args: ['blur']
290
+ }], onClick: [{
291
+ type: HostListener,
292
+ args: ['click']
293
+ }] } });
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbG91ZC1pZGUtZWxlbWVudC9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sZUFBZSxDQUFDOztBQVN6RyxNQUFNLE9BQU8sZ0JBQWdCO0lBcUIzQixZQUFvQixFQUFjLEVBQVUsUUFBbUI7UUFBM0MsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFwQnRELG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdkIscUJBQWdCLEdBQXFCLEtBQUssQ0FBQztRQUMzQyxnQkFBVyxHQUFnQixTQUFTLENBQUM7UUFDckMsaUJBQVksR0FBVyxHQUFHLENBQUMsQ0FBQyxLQUFLO1FBQ2pDLGVBQVUsR0FBcUIsS0FBSyxDQUFDLENBQUMsd0RBQXdEO1FBQzlGLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUNsQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsb0JBQWUsR0FBVyxPQUFPLENBQUM7UUFDbEMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBRTNCLG1CQUFjLEdBQXVCLElBQUksQ0FBQztRQUMxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGdCQUFXLEdBQWtCLElBQUksQ0FBQztRQUNsQyxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFDbEMsY0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEtBQUs7UUFDdEIsaUNBQTRCLEdBQXdCLElBQUksQ0FBQztJQUVDLENBQUM7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Z0JBZ0IxQixNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTTtnQkFPcEIsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCB0eXBlIFRvb2x0aXBQbGFjZW1lbnQgPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcclxuZXhwb3J0IHR5cGUgVG9vbHRpcFR5cGUgPSAnZGVmYXVsdCcgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZXJyb3InIHwgJ2luZm8nIHwgJ2xpZ2h0JyB8ICdkYXJrJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2NpZGVFbGVUb29sdGlwXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVG9vbHRpcERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBjaWRlRWxlVG9vbHRpcDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgdG9vbHRpcENvbG9yOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSB0b29sdGlwQmc6IHN0cmluZyA9ICcnO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBQbGFjZW1lbnQ6IFRvb2x0aXBQbGFjZW1lbnQgPSAndG9wJztcclxuICBASW5wdXQoKSB0b29sdGlwVHlwZTogVG9vbHRpcFR5cGUgPSAnZGVmYXVsdCc7XHJcbiAgQElucHV0KCkgdG9vbHRpcERlbGF5OiBudW1iZXIgPSAzMDA7IC8vIG1zXHJcbiAgQElucHV0KCkgdG9vbHRpcERpcjogVG9vbHRpcFBsYWNlbWVudCA9ICd0b3AnOyAvLyBBbGlhcyBmb3IgdG9vbHRpcFBsYWNlbWVudCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eVxyXG4gIEBJbnB1dCgpIHRvb2x0aXBTaG93QXJyb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0b29sdGlwTXVsdGlsaW5lOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgdG9vbHRpcE1heFdpZHRoOiBzdHJpbmcgPSAnMjAwcHgnO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBJbnRlcmFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXBDbGFzczogc3RyaW5nID0gJyc7XHJcbiAgXHJcbiAgcHJpdmF0ZSB0b29sdGlwRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHZpc2libGUgPSBmYWxzZTtcclxuICBwcml2YXRlIHNob3dUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGhpZGVUaW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIGhpZGVEZWxheSA9IDE1MDsgLy8gbXNcclxuICBwcml2YXRlIGludGVyYWN0aXZlTW91c2VMZWF2ZUhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gVXNlIHRvb2x0aXBEaXIgYXMgZmFsbGJhY2sgaWYgcHJvdmlkZWQgYW5kIHRvb2x0aXBQbGFjZW1lbnQgaXMgZGVmYXVsdFxyXG4gICAgaWYgKHRoaXMudG9vbHRpcERpciAmJiB0aGlzLnRvb2x0aXBQbGFjZW1lbnQgPT09ICd0b3AnKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcFBsYWNlbWVudCA9IHRoaXMudG9vbHRpcERpcjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBJZiB1c2VyIGhhc24ndCBwcm92aWRlZCBjdXN0b20gY29sb3JzIGFuZCBpcyB1c2luZyBhIHByZWRlZmluZWQgdHlwZSxcclxuICAgIC8vIHdlJ2xsIGxlYXZlIGNvbG9ycyBlbXB0eSB0byB1c2UgQ1NTIGNsYXNzIGNvbG9yc1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcFR5cGUgIT09ICdkZWZhdWx0JyAmJiAhdGhpcy50b29sdGlwQ29sb3IgJiYgIXRoaXMudG9vbHRpcEJnKSB7XHJcbiAgICAgIHRoaXMudG9vbHRpcENvbG9yID0gJyc7XHJcbiAgICAgIHRoaXMudG9vbHRpcEJnID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdtb3VzZWVudGVyJylcclxuICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyVGltZW91dHMoKTtcclxuICAgIHRoaXMuc2hvd1RpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgfSwgdGhpcy50b29sdGlwRGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZm9jdXMnKVxyXG4gIG9uRm9jdXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyVGltZW91dHMoKTtcclxuICAgIHRoaXMuc2hvd1RpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2hvdygpO1xyXG4gICAgfSwgdGhpcy50b29sdGlwRGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXHJcbiAgb25Nb3VzZUxlYXZlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhclRpbWVvdXRzKCk7XHJcbiAgICBcclxuICAgIC8vIERvbid0IGhpZGUgaW1tZWRpYXRlbHkgaWYgaW50ZXJhY3RpdmVcclxuICAgIGlmICghdGhpcy50b29sdGlwSW50ZXJhY3RpdmUpIHtcclxuICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBGb3IgaW50ZXJhY3RpdmUgdG9vbHRpcHMsIGRlbGF5IGhpZGluZyB0byBhbGxvdyB1c2VyIHRvIG1vdmUgdG8gdG9vbHRpcFxyXG4gICAgICB0aGlzLmhpZGVUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGlkZSgpO1xyXG4gICAgICB9LCB0aGlzLmhpZGVEZWxheSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdibHVyJylcclxuICBvbkJsdXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyVGltZW91dHMoKTtcclxuICAgIHRoaXMuaGlkZSgpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxyXG4gIG9uQ2xpY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aXNpYmxlICYmICF0aGlzLnRvb2x0aXBJbnRlcmFjdGl2ZSkge1xyXG4gICAgICB0aGlzLmhpZGUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jbGVhclRpbWVvdXRzKCk7XHJcbiAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsZWFyVGltZW91dHMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zaG93VGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5zaG93VGltZW91dCk7XHJcbiAgICAgIHRoaXMuc2hvd1RpbWVvdXQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaGlkZVRpbWVvdXQpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVvdXQpO1xyXG4gICAgICB0aGlzLmhpZGVUaW1lb3V0ID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2hvdygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5jaWRlRWxlVG9vbHRpcCB8fCB0aGlzLnZpc2libGUpIHJldHVybjtcclxuICAgIFxyXG4gICAgdGhpcy5jcmVhdGVUb29sdGlwKCk7XHJcbiAgICB0aGlzLnN0eWxlVG9vbHRpcCgpO1xyXG4gICAgdGhpcy5wb3NpdGlvblRvb2x0aXAoKTtcclxuICAgIFxyXG4gICAgLy8gQWRkIGFuaW1hdGlvbiB3aXRoIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3Igc21vb3RoZXIgdHJhbnNpdGlvblxyXG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMudG9vbHRpcEVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcEVsZW1lbnQsICd0b29sdGlwLXZpc2libGUnKTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBTaG93IGFycm93IGlmIGVuYWJsZWRcclxuICAgICAgICBpZiAodGhpcy50b29sdGlwU2hvd0Fycm93KSB7XHJcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcEVsZW1lbnQsICd0b29sdGlwLWFycm93LXZpc2libGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xyXG5cclxuICAgIC8vIEFkZCBtb3VzZWxlYXZlIGV2ZW50IGxpc3RlbmVyIGlmIGludGVyYWN0aXZlXHJcbiAgICBpZiAodGhpcy50b29sdGlwSW50ZXJhY3RpdmUgJiYgdGhpcy50b29sdGlwRWxlbWVudCkge1xyXG4gICAgICB0aGlzLmludGVyYWN0aXZlTW91c2VMZWF2ZUhhbmRsZXIgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXRzKCk7XHJcbiAgICAgICAgdGhpcy5oaWRlKCk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMuaW50ZXJhY3RpdmVNb3VzZUxlYXZlSGFuZGxlcik7XHJcbiAgICAgIFxyXG4gICAgICAvLyBBbHNvIGFkZCBtb3VzZWVudGVyIHRvIGNhbmNlbCBhbnkgcGVuZGluZyBoaWRlXHJcbiAgICAgIHRoaXMudG9vbHRpcEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VlbnRlcicsICgpID0+IHtcclxuICAgICAgICB0aGlzLmNsZWFyVGltZW91dHMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhpZGUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCAhdGhpcy50b29sdGlwRWxlbWVudCkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy50b29sdGlwRWxlbWVudCwgJ3Rvb2x0aXAtdmlzaWJsZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLnRvb2x0aXBFbGVtZW50LCAndG9vbHRpcC1hcnJvdy12aXNpYmxlJyk7XHJcbiAgICBcclxuICAgIC8vIFVzZSB0aW1lb3V0IGZvciBzbW9vdGhlciBoaWRlIGFuaW1hdGlvblxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7IC8vIERvdWJsZS1jaGVjayBpbiBjYXNlIHRvb2x0aXAgd2FzIHJlc2hvd25cclxuICAgICAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XHJcbiAgICAgIH1cclxuICAgIH0sIHRoaXMuaGlkZURlbGF5KTtcclxuICAgIFxyXG4gICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRvb2x0aXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3lUb29sdGlwKCk7XHJcblxyXG4gICAgdGhpcy50b29sdGlwRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcEVsZW1lbnQsICd0b29sdGlwJyk7XHJcbiAgICBcclxuICAgIC8vIEFkZCBwbGFjZW1lbnQgY2xhc3MgZm9yIGFycm93XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcEVsZW1lbnQsIGB0b29sdGlwLSR7dGhpcy50b29sdGlwUGxhY2VtZW50fWApO1xyXG4gICAgXHJcbiAgICAvLyBBZGQgdHlwZSBjbGFzcyBpZiB1c2luZyBhIHByZWRlZmluZWQgdHlwZVxyXG4gICAgaWYgKHRoaXMudG9vbHRpcFR5cGUgIT09ICdkZWZhdWx0Jykge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMudG9vbHRpcEVsZW1lbnQsIGB0b29sdGlwLSR7dGhpcy50b29sdGlwVHlwZX1gKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gQWRkIG11bHRpbGluZSBjbGFzcyBpZiBlbmFibGVkXHJcbiAgICBpZiAodGhpcy50b29sdGlwTXVsdGlsaW5lKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwRWxlbWVudCwgJ3Rvb2x0aXAtbXVsdGlsaW5lJyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIEFkZCBpbnRlcmFjdGl2ZSBjbGFzcyBpZiBlbmFibGVkXHJcbiAgICBpZiAodGhpcy50b29sdGlwSW50ZXJhY3RpdmUpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnRvb2x0aXBFbGVtZW50LCAndG9vbHRpcC1pbnRlcmFjdGl2ZScpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBBZGQgY3VzdG9tIGNsYXNzZXMgaWYgcHJvdmlkZWRcclxuICAgIGlmICh0aGlzLnRvb2x0aXBDbGFzcykge1xyXG4gICAgICBjb25zdCBjbGFzc2VzID0gdGhpcy50b29sdGlwQ2xhc3Muc3BsaXQoJyAnKTtcclxuICAgICAgY2xhc3Nlcy5mb3JFYWNoKGNsYXNzTmFtZSA9PiB7XHJcbiAgICAgICAgaWYgKGNsYXNzTmFtZS50cmltKCkpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy50b29sdGlwRWxlbWVudCwgY2xhc3NOYW1lLnRyaW0oKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDcmVhdGUgSFRNTCBjb250ZW50IGlmIG11bHRpbGluZVxyXG4gICAgaWYgKHRoaXMudG9vbHRpcE11bHRpbGluZSkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMudG9vbHRpcEVsZW1lbnQsICdpbm5lckhUTUwnLCB0aGlzLmNpZGVFbGVUb29sdGlwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHRleHROb2RlID0gdGhpcy5yZW5kZXJlci5jcmVhdGVUZXh0KHRoaXMuY2lkZUVsZVRvb2x0aXApO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMudG9vbHRpcEVsZW1lbnQsIHRleHROb2RlKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLnRvb2x0aXBFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3R5bGVUb29sdGlwKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnRvb2x0aXBFbGVtZW50KSByZXR1cm47XHJcblxyXG4gICAgLy8gU2V0IGN1c3RvbSBDU1MgdmFyaWFibGVzIGZvciB0aGUgdG9vbHRpcCBjb2xvcnMgaWYgcHJvdmlkZWRcclxuICAgIGlmICh0aGlzLnRvb2x0aXBDb2xvcikge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsICctLXRvb2x0aXAtY29sb3InLCB0aGlzLnRvb2x0aXBDb2xvcik7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICh0aGlzLnRvb2x0aXBCZykge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMudG9vbHRpcEVsZW1lbnQsICctLXRvb2x0aXAtYmcnLCB0aGlzLnRvb2x0aXBCZyk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIFNldCBjdXN0b20gbWF4IHdpZHRoIGlmIHByb3ZpZGVkXHJcbiAgICBpZiAodGhpcy50b29sdGlwTWF4V2lkdGggJiYgdGhpcy50b29sdGlwTXVsdGlsaW5lKSB7XHJcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJy0tdG9vbHRpcC1tYXgtd2lkdGgnLCB0aGlzLnRvb2x0aXBNYXhXaWR0aCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvc2l0aW9uVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy50b29sdGlwRWxlbWVudCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGhvc3RSZWN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgY29uc3QgdG9vbHRpcFJlY3QgPSB0aGlzLnRvb2x0aXBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgXHJcbiAgICAvLyBBY2NvdW50IGZvciBwYWdlIHNjcm9sbFxyXG4gICAgY29uc3Qgc2Nyb2xsTGVmdCA9IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcclxuICAgIGNvbnN0IHNjcm9sbFRvcCA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wO1xyXG4gICAgXHJcbiAgICBsZXQgdG9wID0gMDtcclxuICAgIGxldCBsZWZ0ID0gMDtcclxuICAgIFxyXG4gICAgLy8gQ2FsY3VsYXRlIHBvc2l0aW9uIGJhc2VkIG9uIHBsYWNlbWVudFxyXG4gICAgc3dpdGNoICh0aGlzLnRvb2x0aXBQbGFjZW1lbnQpIHtcclxuICAgICAgY2FzZSAndG9wJzpcclxuICAgICAgICB0b3AgPSBob3N0UmVjdC50b3AgKyBzY3JvbGxUb3AgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSA2O1xyXG4gICAgICAgIGxlZnQgPSBob3N0UmVjdC5sZWZ0ICsgc2Nyb2xsTGVmdCArIChob3N0UmVjdC53aWR0aCAvIDIpIC0gKHRvb2x0aXBSZWN0LndpZHRoIC8gMik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgICAgdG9wID0gaG9zdFJlY3QuYm90dG9tICsgc2Nyb2xsVG9wICsgNjtcclxuICAgICAgICBsZWZ0ID0gaG9zdFJlY3QubGVmdCArIHNjcm9sbExlZnQgKyAoaG9zdFJlY3Qud2lkdGggLyAyKSAtICh0b29sdGlwUmVjdC53aWR0aCAvIDIpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICB0b3AgPSBob3N0UmVjdC50b3AgKyBzY3JvbGxUb3AgKyAoaG9zdFJlY3QuaGVpZ2h0IC8gMikgLSAodG9vbHRpcFJlY3QuaGVpZ2h0IC8gMik7XHJcbiAgICAgICAgbGVmdCA9IGhvc3RSZWN0LmxlZnQgKyBzY3JvbGxMZWZ0IC0gdG9vbHRpcFJlY3Qud2lkdGggLSA2O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgICAgdG9wID0gaG9zdFJlY3QudG9wICsgc2Nyb2xsVG9wICsgKGhvc3RSZWN0LmhlaWdodCAvIDIpIC0gKHRvb2x0aXBSZWN0LmhlaWdodCAvIDIpO1xyXG4gICAgICAgIGxlZnQgPSBob3N0UmVjdC5yaWdodCArIHNjcm9sbExlZnQgKyA2O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBBZGp1c3QgaWYgdG9vbHRpcCB3b3VsZCBiZSBvdXRzaWRlIHZpZXdwb3J0XHJcbiAgICBjb25zdCB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcclxuICAgIFxyXG4gICAgLy8gVG9wIGJvdW5kYXJ5IGNoZWNrXHJcbiAgICBpZiAodG9wIDwgc2Nyb2xsVG9wICsgNCkge1xyXG4gICAgICB0b3AgPSBzY3JvbGxUb3AgKyA0O1xyXG4gICAgfSBlbHNlIGlmICh0b3AgKyB0b29sdGlwUmVjdC5oZWlnaHQgPiBzY3JvbGxUb3AgKyB2aWV3cG9ydEhlaWdodCAtIDQpIHtcclxuICAgICAgdG9wID0gc2Nyb2xsVG9wICsgdmlld3BvcnRIZWlnaHQgLSB0b29sdGlwUmVjdC5oZWlnaHQgLSA0O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBMZWZ0IGJvdW5kYXJ5IGNoZWNrXHJcbiAgICBpZiAobGVmdCA8IHNjcm9sbExlZnQgKyA0KSB7XHJcbiAgICAgIGxlZnQgPSBzY3JvbGxMZWZ0ICsgNDtcclxuICAgIH0gZWxzZSBpZiAobGVmdCArIHRvb2x0aXBSZWN0LndpZHRoID4gc2Nyb2xsTGVmdCArIHZpZXdwb3J0V2lkdGggLSA0KSB7XHJcbiAgICAgIGxlZnQgPSBzY3JvbGxMZWZ0ICsgdmlld3BvcnRXaWR0aCAtIHRvb2x0aXBSZWN0LndpZHRoIC0gNDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXBFbGVtZW50LCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy50b29sdGlwRWxlbWVudCwgJ3RvcCcsIGAke3RvcH1weGApO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnRvb2x0aXBFbGVtZW50LCAnbGVmdCcsIGAke2xlZnR9cHhgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZGVzdHJveVRvb2x0aXAoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy50b29sdGlwRWxlbWVudCkge1xyXG4gICAgICAvLyBSZW1vdmUgZXZlbnQgbGlzdGVuZXJzIGZvciBpbnRlcmFjdGl2ZSB0b29sdGlwcyB1c2luZyB0aGUgc3RvcmVkIHJlZmVyZW5jZVxyXG4gICAgICBpZiAodGhpcy50b29sdGlwSW50ZXJhY3RpdmUgJiYgdGhpcy5pbnRlcmFjdGl2ZU1vdXNlTGVhdmVIYW5kbGVyKSB7XHJcbiAgICAgICAgdGhpcy50b29sdGlwRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgdGhpcy5pbnRlcmFjdGl2ZU1vdXNlTGVhdmVIYW5kbGVyKTtcclxuICAgICAgICB0aGlzLmludGVyYWN0aXZlTW91c2VMZWF2ZUhhbmRsZXIgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnRvb2x0aXBFbGVtZW50LnBhcmVudE5vZGU7XHJcbiAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNoaWxkKHBhcmVudCwgdGhpcy50b29sdGlwRWxlbWVudCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50b29sdGlwRWxlbWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -13,12 +13,14 @@ export class CideElementsService {
13
13
  resolve(cide_element_data);
14
14
  }
15
15
  else {
16
- const subscription = this.is_cide_element_data_updated?.subscribe((is_cide_element_data_updated) => {
17
- if (is_cide_element_data_updated) {
18
- const cide_element_data = this.cide_element_data[body?.sype_key];
19
- if (cide_element_data) {
20
- subscription?.unsubscribe();
21
- resolve(cide_element_data);
16
+ const subscription = this.is_cide_element_data_updated?.subscribe({
17
+ next: (is_cide_element_data_updated) => {
18
+ if (is_cide_element_data_updated) {
19
+ const cide_element_data = this.cide_element_data[body?.sype_key];
20
+ if (cide_element_data) {
21
+ subscription?.unsubscribe();
22
+ resolve(cide_element_data);
23
+ }
22
24
  }
23
25
  }
24
26
  });
@@ -34,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
34
36
  providedIn: 'root'
35
37
  }]
36
38
  }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1lbGVtZW50L3NyYy9saWIvdXRpbHMvc2VydmljZXMvZWxlbWVudHMvZWxlbWVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3ZDLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFJRSxzQkFBaUIsR0FBaUMsRUFBRSxDQUFDO1FBQ3JELGlDQUE0QixHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQW1CckY7SUFsQkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUEyQjtRQUM5QyxPQUFPLElBQUksT0FBTyxDQUFZLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pFLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLENBQUMsQ0FBQyw0QkFBcUMsRUFBRSxFQUFFO29CQUMxRyxJQUFJLDRCQUE0QixFQUFFLENBQUM7d0JBQ2pDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQzt3QkFDakUsSUFBSSxpQkFBaUIsRUFBRSxDQUFDOzRCQUN0QixZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7NEJBQzVCLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUM3QixDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQXBCVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHZXRFbGVtZW50RGF0YVJlcXVlc3QsIElDb3JlU3lwZSB9IGZyb20gJ2Nsb3VkLWlkZS1sbXMtbW9kZWwnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENpZGVFbGVtZW50c1NlcnZpY2Uge1xyXG4gIGNpZGVfZWxlbWVudF9kYXRhOiB7IFtrZXk6IHN0cmluZ106IElDb3JlU3lwZSB9ID0ge307XHJcbiAgaXNfY2lkZV9lbGVtZW50X2RhdGFfdXBkYXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XHJcbiAgYXN5bmMgZ2V0RWxlbWVudERhdGEoYm9keTogR2V0RWxlbWVudERhdGFSZXF1ZXN0KTogUHJvbWlzZTxJQ29yZVN5cGU+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxJQ29yZVN5cGU+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNpZGVfZWxlbWVudF9kYXRhID0gdGhpcy5jaWRlX2VsZW1lbnRfZGF0YVtib2R5Py5zeXBlX2tleV07XHJcbiAgICAgIGlmIChjaWRlX2VsZW1lbnRfZGF0YSkge1xyXG4gICAgICAgIHJlc29sdmUoY2lkZV9lbGVtZW50X2RhdGEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMuaXNfY2lkZV9lbGVtZW50X2RhdGFfdXBkYXRlZD8uc3Vic2NyaWJlKChpc19jaWRlX2VsZW1lbnRfZGF0YV91cGRhdGVkOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXNfY2lkZV9lbGVtZW50X2RhdGFfdXBkYXRlZCkge1xyXG4gICAgICAgICAgICBjb25zdCBjaWRlX2VsZW1lbnRfZGF0YSA9IHRoaXMuY2lkZV9lbGVtZW50X2RhdGFbYm9keT8uc3lwZV9rZXldO1xyXG4gICAgICAgICAgICBpZiAoY2lkZV9lbGVtZW50X2RhdGEpIHtcclxuICAgICAgICAgICAgICBzdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZShjaWRlX2VsZW1lbnRfZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxufVxyXG4iXX0=
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1lbGVtZW50L3NyYy9saWIvdXRpbHMvc2VydmljZXMvZWxlbWVudHMvZWxlbWVudHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS3ZDLE1BQU0sT0FBTyxtQkFBbUI7SUFIaEM7UUFJRSxzQkFBaUIsR0FBaUMsRUFBRSxDQUFDO1FBQ3JELGlDQUE0QixHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQXFCckY7SUFwQkMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUEyQjtRQUM5QyxPQUFPLElBQUksT0FBTyxDQUFZLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pFLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxTQUFTLENBQUM7b0JBQ2hFLElBQUksRUFBRSxDQUFDLDRCQUFxQyxFQUFFLEVBQUU7d0JBQzlDLElBQUksNEJBQTRCLEVBQUUsQ0FBQzs0QkFDakMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDOzRCQUNqRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7Z0NBQ3RCLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztnQ0FDNUIsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUM7NEJBQzdCLENBQUM7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OEdBdEJVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEdldEVsZW1lbnREYXRhUmVxdWVzdCwgSUNvcmVTeXBlIH0gZnJvbSAnY2xvdWQtaWRlLWxtcy1tb2RlbCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2lkZUVsZW1lbnRzU2VydmljZSB7XHJcbiAgY2lkZV9lbGVtZW50X2RhdGE6IHsgW2tleTogc3RyaW5nXTogSUNvcmVTeXBlIH0gPSB7fTtcclxuICBpc19jaWRlX2VsZW1lbnRfZGF0YV91cGRhdGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuICBhc3luYyBnZXRFbGVtZW50RGF0YShib2R5OiBHZXRFbGVtZW50RGF0YVJlcXVlc3QpOiBQcm9taXNlPElDb3JlU3lwZT4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPElDb3JlU3lwZT4oKHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3QgY2lkZV9lbGVtZW50X2RhdGEgPSB0aGlzLmNpZGVfZWxlbWVudF9kYXRhW2JvZHk/LnN5cGVfa2V5XTtcclxuICAgICAgaWYgKGNpZGVfZWxlbWVudF9kYXRhKSB7XHJcbiAgICAgICAgcmVzb2x2ZShjaWRlX2VsZW1lbnRfZGF0YSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gdGhpcy5pc19jaWRlX2VsZW1lbnRfZGF0YV91cGRhdGVkPy5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGlzX2NpZGVfZWxlbWVudF9kYXRhX3VwZGF0ZWQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKGlzX2NpZGVfZWxlbWVudF9kYXRhX3VwZGF0ZWQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBjaWRlX2VsZW1lbnRfZGF0YSA9IHRoaXMuY2lkZV9lbGVtZW50X2RhdGFbYm9keT8uc3lwZV9rZXldO1xyXG4gICAgICAgICAgICAgIGlmIChjaWRlX2VsZW1lbnRfZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShjaWRlX2VsZW1lbnRfZGF0YSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -3,8 +3,29 @@
3
3
  * Here we can add what need to be exported from library
4
4
  */
5
5
  export * from './lib/elements/input/input.component';
6
- export * from './lib/elements/button/button.component';
6
+ export * from './lib/elements/button/cide-ele-button.component';
7
7
  export * from './lib/elements/spinner/spinner.component';
8
8
  export * from './lib/elements/icon/icon.component';
9
+ export * from './lib/elements/select/select.component';
10
+ export * from './lib/elements/tab/cide-ele-tab.component';
11
+ export * from './lib/elements/file-input/file-input.component';
12
+ export * from './lib/elements/textarea/textarea.component';
9
13
  export * from './lib/utils/services/elements/elements.service';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1lbGVtZW50L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxnREFBZ0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjbG91ZC1pZGUtZWxlbWVudFxyXG4gKiBIZXJlIHdlIGNhbiBhZGQgd2hhdCBuZWVkIHRvIGJlIGV4cG9ydGVkIGZyb20gbGlicmFyeVxyXG4gKi9cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsZW1lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsZW1lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxlbWVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsZW1lbnRzL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9zZXJ2aWNlcy9lbGVtZW50cy9lbGVtZW50cy5zZXJ2aWNlJztcclxuXHJcbiJdfQ==
14
+ export * from './lib/utils/directives/resizer/resizer.directive';
15
+ export * from './lib/utils/directives/tooltip/tooltip.directive';
16
+ export * from './lib/components/skeleton-loader/skeleton-loader.component';
17
+ // Data Grid Component and Types
18
+ export * from './lib/components/data-grid/data-grid.component';
19
+ export * from './lib/components/data-grid/data-grid.types';
20
+ // Dropdown Component and Service
21
+ export * from './lib/components/dropdown/dropdown.component';
22
+ export * from './lib/services/dropdown-manager.service';
23
+ // Confirmation and Notification System
24
+ export * from './lib/services/confirmation.service';
25
+ export * from './lib/services/notification.service';
26
+ export * from './lib/components/confirmation-modal/confirmation-modal.component';
27
+ export * from './lib/components/toast-notification/toast-notification.component';
28
+ export * from './lib/components/global-notifications/global-notifications.component';
29
+ // JSON Editor Component
30
+ export * from './lib/components/json-editor/json-editor.component';
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nsb3VkLWlkZS1lbGVtZW50L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsZ0RBQWdELENBQUM7QUFDL0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLDREQUE0RCxDQUFDO0FBRTNFLGdDQUFnQztBQUNoQyxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsNENBQTRDLENBQUM7QUFFM0QsaUNBQWlDO0FBQ2pDLGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyx5Q0FBeUMsQ0FBQztBQUV4RCx1Q0FBdUM7QUFDdkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0VBQWtFLENBQUM7QUFDakYsY0FBYyxrRUFBa0UsQ0FBQztBQUNqRixjQUFjLHNFQUFzRSxDQUFDO0FBRXJGLHdCQUF3QjtBQUN4QixjQUFjLG9EQUFvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBjbG91ZC1pZGUtZWxlbWVudFxuICogSGVyZSB3ZSBjYW4gYWRkIHdoYXQgbmVlZCB0byBiZSBleHBvcnRlZCBmcm9tIGxpYnJhcnlcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbGVtZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxlbWVudHMvYnV0dG9uL2NpZGUtZWxlLWJ1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxlbWVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbGVtZW50cy9pY29uL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsZW1lbnRzL3NlbGVjdC9zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsZW1lbnRzL3RhYi9jaWRlLWVsZS10YWIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2VsZW1lbnRzL2ZpbGUtaW5wdXQvZmlsZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWxlbWVudHMvdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3NlcnZpY2VzL2VsZW1lbnRzL2VsZW1lbnRzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMvZGlyZWN0aXZlcy9yZXNpemVyL3Jlc2l6ZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2RpcmVjdGl2ZXMvdG9vbHRpcC90b29sdGlwLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NrZWxldG9uLWxvYWRlci9za2VsZXRvbi1sb2FkZXIuY29tcG9uZW50JztcblxuLy8gRGF0YSBHcmlkIENvbXBvbmVudCBhbmQgVHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZGF0YS1ncmlkL2RhdGEtZ3JpZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kYXRhLWdyaWQvZGF0YS1ncmlkLnR5cGVzJztcblxuLy8gRHJvcGRvd24gQ29tcG9uZW50IGFuZCBTZXJ2aWNlXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9kcm9wZG93bi1tYW5hZ2VyLnNlcnZpY2UnO1xuXG4vLyBDb25maXJtYXRpb24gYW5kIE5vdGlmaWNhdGlvbiBTeXN0ZW1cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY29uZmlybWF0aW9uLW1vZGFsL2NvbmZpcm1hdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90b2FzdC1ub3RpZmljYXRpb24vdG9hc3Qtbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2dsb2JhbC1ub3RpZmljYXRpb25zL2dsb2JhbC1ub3RpZmljYXRpb25zLmNvbXBvbmVudCc7XG5cbi8vIEpTT04gRWRpdG9yIENvbXBvbmVudFxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9qc29uLWVkaXRvci9qc29uLWVkaXRvci5jb21wb25lbnQnO1xuXG4iXX0=