monkey-style-guide-v2 0.0.20 → 0.0.22

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 (98) hide show
  1. package/assets/scss/directives/_index.scss +1 -0
  2. package/assets/scss/directives/_popover.scss +81 -0
  3. package/assets/scss/theme.scss +5 -0
  4. package/esm2022/lib/components/accordion/accordion.component.mjs +11 -20
  5. package/esm2022/lib/components/action-bar/action-bar.component.mjs +3 -3
  6. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +1 -1
  7. package/esm2022/lib/components/button/button.component.mjs +6 -2
  8. package/esm2022/lib/components/checkbox/checkbox.component.mjs +9 -13
  9. package/esm2022/lib/components/date-range/date-range.component.mjs +2 -2
  10. package/esm2022/lib/components/form-field/form-field-control.mjs +1 -1
  11. package/esm2022/lib/components/form-field/form-field.component.mjs +15 -18
  12. package/esm2022/lib/components/form-field/form-field.module.mjs +4 -2
  13. package/esm2022/lib/components/icon/icon.component.mjs +4 -4
  14. package/esm2022/lib/components/icon-button/icon-button.component.mjs +2 -2
  15. package/esm2022/lib/components/index.mjs +2 -1
  16. package/esm2022/lib/components/modal/components/confirmation.component.mjs +68 -0
  17. package/esm2022/lib/components/modal/components/default.mjs +1 -6
  18. package/esm2022/lib/components/modal/modal-config.mjs +2 -3
  19. package/esm2022/lib/components/modal/modal-ref.mjs +9 -2
  20. package/esm2022/lib/components/modal/modal.component.mjs +8 -6
  21. package/esm2022/lib/components/modal/modal.module.mjs +4 -1
  22. package/esm2022/lib/components/modal/modal.service.mjs +44 -31
  23. package/esm2022/lib/components/modal/utils.mjs +2 -1
  24. package/esm2022/lib/components/option/option.component.mjs +21 -5
  25. package/esm2022/lib/components/radio-button/index.mjs +7 -0
  26. package/esm2022/lib/components/radio-button/radio-button.component.mjs +190 -0
  27. package/esm2022/lib/components/security-level/security-level.component.mjs +3 -3
  28. package/esm2022/lib/components/select/select.component.mjs +5 -9
  29. package/esm2022/lib/components/status/status.component.mjs +3 -3
  30. package/esm2022/lib/components/table/components/pagination-size/pagination-size.mjs +2 -2
  31. package/esm2022/lib/components/toast/toast.component.mjs +3 -3
  32. package/esm2022/lib/components/tooltip/tooltip/tooltip.component.mjs +3 -3
  33. package/esm2022/lib/components/tooltip/tooltip.directive.mjs +12 -3
  34. package/esm2022/lib/directives/error.mjs +5 -5
  35. package/esm2022/lib/directives/helper.mjs +5 -5
  36. package/esm2022/lib/directives/index.mjs +2 -1
  37. package/esm2022/lib/directives/info.mjs +5 -5
  38. package/esm2022/lib/directives/label.mjs +5 -5
  39. package/esm2022/lib/directives/module.mjs +41 -35
  40. package/esm2022/lib/directives/popover.mjs +380 -0
  41. package/esm2022/lib/directives/prefix.mjs +5 -5
  42. package/esm2022/lib/directives/suffix.mjs +5 -5
  43. package/esm2022/lib/interfaces/breadcrumb.mjs +1 -1
  44. package/esm2022/lib/interfaces/index.mjs +2 -1
  45. package/esm2022/lib/interfaces/popover.mjs +2 -0
  46. package/esm2022/lib/interfaces/toast.mjs +2 -2
  47. package/esm2022/lib/services/dictionary.service.mjs +3 -3
  48. package/esm2022/lib/services/index.mjs +1 -2
  49. package/esm2022/lib/services/toast.service.mjs +8 -5
  50. package/esm2022/lib/tokens/index.mjs +3 -2
  51. package/esm2022/utils/icon.mjs +277 -0
  52. package/esm2022/utils/index.mjs +2 -1
  53. package/fesm2022/monkey-style-guide-v2.mjs +1184 -310
  54. package/fesm2022/monkey-style-guide-v2.mjs.map +1 -1
  55. package/lib/components/accordion/accordion.component.d.ts +0 -3
  56. package/lib/components/breadcrumb/breadcrumb.component.d.ts +4 -4
  57. package/lib/components/button/button.component.d.ts +2 -0
  58. package/lib/components/checkbox/checkbox.component.d.ts +0 -3
  59. package/lib/components/form-field/form-field-control.d.ts +3 -3
  60. package/lib/components/form-field/form-field.component.d.ts +0 -5
  61. package/lib/components/form-field/form-field.module.d.ts +2 -1
  62. package/lib/components/icon/icon.component.d.ts +1 -1
  63. package/lib/components/index.d.ts +1 -0
  64. package/lib/components/modal/components/confirmation.component.d.ts +12 -0
  65. package/lib/components/modal/components/default.d.ts +0 -5
  66. package/lib/components/modal/modal-config.d.ts +10 -6
  67. package/lib/components/modal/modal-ref.d.ts +1 -0
  68. package/lib/components/modal/modal.module.d.ts +10 -9
  69. package/lib/components/modal/modal.service.d.ts +4 -4
  70. package/lib/components/modal/utils.d.ts +3 -1
  71. package/lib/components/option/option.component.d.ts +4 -1
  72. package/lib/components/radio-button/index.d.ts +6 -0
  73. package/lib/components/radio-button/radio-button.component.d.ts +54 -0
  74. package/lib/components/select/select.component.d.ts +0 -3
  75. package/lib/components/toast/toast.component.d.ts +2 -2
  76. package/lib/components/tooltip/tooltip.directive.d.ts +1 -0
  77. package/lib/directives/error.d.ts +3 -3
  78. package/lib/directives/helper.d.ts +3 -3
  79. package/lib/directives/index.d.ts +1 -0
  80. package/lib/directives/info.d.ts +3 -3
  81. package/lib/directives/label.d.ts +3 -3
  82. package/lib/directives/module.d.ts +2 -1
  83. package/lib/directives/popover.d.ts +65 -0
  84. package/lib/directives/prefix.d.ts +3 -3
  85. package/lib/directives/suffix.d.ts +3 -3
  86. package/lib/interfaces/breadcrumb.d.ts +1 -1
  87. package/lib/interfaces/index.d.ts +1 -0
  88. package/lib/interfaces/popover.d.ts +7 -0
  89. package/lib/interfaces/toast.d.ts +5 -5
  90. package/lib/services/index.d.ts +0 -1
  91. package/lib/tokens/index.d.ts +2 -1
  92. package/monkey-style-guide-v2-0.0.22.tgz +0 -0
  93. package/package.json +1 -1
  94. package/utils/icon.d.ts +8 -0
  95. package/utils/index.d.ts +1 -0
  96. package/esm2022/lib/services/icons.service.mjs +0 -56
  97. package/lib/services/icons.service.d.ts +0 -16
  98. package/monkey-style-guide-v2-0.0.20.tgz +0 -0
@@ -0,0 +1,380 @@
1
+ import { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';
2
+ import { ComponentPortal } from '@angular/cdk/portal';
3
+ import { CommonModule, NgTemplateOutlet } from '@angular/common';
4
+ import { booleanAttribute, Component, DestroyRef, Directive, ElementRef, EventEmitter, Inject, inject, Input, NgZone, Optional, Output, TemplateRef, ViewContainerRef } from '@angular/core';
5
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
+ import { NavigationStart, Router } from '@angular/router';
7
+ import { filter } from 'rxjs';
8
+ import { UtilIconComponent } from '../../utils';
9
+ import { MONKEY_POPOVER_OPTIONS } from '../tokens';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ export class MonkeyPopoverContentComponent {
13
+ constructor(host) {
14
+ this.host = host;
15
+ this.onClose = new EventEmitter();
16
+ // not to do
17
+ }
18
+ ngAfterViewInit() {
19
+ setTimeout(() => {
20
+ const focusable = this.host.nativeElement.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
21
+ focusable?.focus();
22
+ });
23
+ }
24
+ isTemplate(value) {
25
+ return value instanceof TemplateRef;
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPopoverContentComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MonkeyPopoverContentComponent, isStandalone: true, selector: "monkey-popover-content", inputs: { title: "title", content: "content", actions: "actions", hideHeader: ["hideHeader", "hideHeader", booleanAttribute], hideClose: ["hideClose", "hideClose", booleanAttribute], hideActions: ["hideActions", "hideActions", booleanAttribute] }, outputs: { onClose: "onClose" }, ngImport: i0, template: `
29
+ <div class="mecx-popover-container">
30
+ @if (!hideHeader) {
31
+ <div class="mecx-popover-header">
32
+ @if (title) {
33
+ <div>
34
+ <ng-container *ngIf="isTemplate(title); else stringTitle">
35
+ <ng-container *ngTemplateOutlet="title"></ng-container>
36
+ </ng-container>
37
+ <ng-template #stringTitle>
38
+ {{ title }}
39
+ </ng-template>
40
+ </div>
41
+ }
42
+
43
+ @if (!hideClose) {
44
+ <util-icon class="mecx-popover-close" name="clear" (click)="onClose.next(null)" />
45
+ }
46
+ </div>
47
+ }
48
+
49
+ <div class="mecx-popover-content" [class.add-radius]="hideHeader">
50
+ <ng-container *ngTemplateOutlet="content"></ng-container>
51
+ </div>
52
+
53
+ @if (!hideActions) {
54
+ <div class="mecx-popover-actions" *ngIf="actions">
55
+ <ng-container *ngIf="isTemplate(actions); else stringActions">
56
+ <ng-container *ngTemplateOutlet="actions"></ng-container>
57
+ </ng-container>
58
+ <ng-template #stringActions>
59
+ <span>{{ actions }}</span>
60
+ </ng-template>
61
+ </div>
62
+ }
63
+ </div>
64
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: UtilIconComponent, selector: "util-icon", inputs: ["name"] }] }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPopoverContentComponent, decorators: [{
67
+ type: Component,
68
+ args: [{
69
+ selector: 'monkey-popover-content',
70
+ standalone: true,
71
+ imports: [CommonModule, NgTemplateOutlet, UtilIconComponent],
72
+ template: `
73
+ <div class="mecx-popover-container">
74
+ @if (!hideHeader) {
75
+ <div class="mecx-popover-header">
76
+ @if (title) {
77
+ <div>
78
+ <ng-container *ngIf="isTemplate(title); else stringTitle">
79
+ <ng-container *ngTemplateOutlet="title"></ng-container>
80
+ </ng-container>
81
+ <ng-template #stringTitle>
82
+ {{ title }}
83
+ </ng-template>
84
+ </div>
85
+ }
86
+
87
+ @if (!hideClose) {
88
+ <util-icon class="mecx-popover-close" name="clear" (click)="onClose.next(null)" />
89
+ }
90
+ </div>
91
+ }
92
+
93
+ <div class="mecx-popover-content" [class.add-radius]="hideHeader">
94
+ <ng-container *ngTemplateOutlet="content"></ng-container>
95
+ </div>
96
+
97
+ @if (!hideActions) {
98
+ <div class="mecx-popover-actions" *ngIf="actions">
99
+ <ng-container *ngIf="isTemplate(actions); else stringActions">
100
+ <ng-container *ngTemplateOutlet="actions"></ng-container>
101
+ </ng-container>
102
+ <ng-template #stringActions>
103
+ <span>{{ actions }}</span>
104
+ </ng-template>
105
+ </div>
106
+ }
107
+ </div>
108
+ `
109
+ }]
110
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { title: [{
111
+ type: Input
112
+ }], content: [{
113
+ type: Input
114
+ }], actions: [{
115
+ type: Input
116
+ }], onClose: [{
117
+ type: Output
118
+ }], hideHeader: [{
119
+ type: Input,
120
+ args: [{ transform: booleanAttribute }]
121
+ }], hideClose: [{
122
+ type: Input,
123
+ args: [{ transform: booleanAttribute }]
124
+ }], hideActions: [{
125
+ type: Input,
126
+ args: [{ transform: booleanAttribute }]
127
+ }] } });
128
+ export class MonkeyPopoverDirective {
129
+ set popover(show) {
130
+ if (this._show === show) {
131
+ return;
132
+ }
133
+ this._show = show;
134
+ if (show) {
135
+ this.createPopover();
136
+ }
137
+ else {
138
+ this.disposePopover();
139
+ }
140
+ }
141
+ get popover() {
142
+ return this._show;
143
+ }
144
+ set target(value) {
145
+ this._target = value;
146
+ }
147
+ get target() {
148
+ return this._target;
149
+ }
150
+ constructor() {
151
+ this._tpl = inject(TemplateRef);
152
+ this._vcr = inject(ViewContainerRef);
153
+ this._el = inject(ElementRef);
154
+ this._zone = inject(NgZone);
155
+ this._overlay = inject(Overlay);
156
+ this._overlayPositionBuilder = inject(OverlayPositionBuilder);
157
+ this._router = inject(Router);
158
+ this._destroyRef = inject(DestroyRef);
159
+ this._show = false;
160
+ this.minwidth = false;
161
+ this.backdrop = true;
162
+ this.watch = false;
163
+ this.dir = 'ltr';
164
+ this.contextmenu = false;
165
+ this._router.events
166
+ .pipe(filter((event) => {
167
+ return event instanceof NavigationStart;
168
+ }), takeUntilDestroyed(this._destroyRef))
169
+ .subscribe(() => {
170
+ this.closePopover();
171
+ });
172
+ }
173
+ ngOnDestroy() {
174
+ this.disposePopover();
175
+ this._resizeObserver?.disconnect();
176
+ }
177
+ closePopover(event) {
178
+ if (this._show) {
179
+ this._show = false;
180
+ this.disposePopover();
181
+ this._zone.run(() => {
182
+ this.closed?.(event);
183
+ });
184
+ }
185
+ }
186
+ disposePopover() {
187
+ this._resizeObserver?.disconnect();
188
+ this._resizeObserver = undefined;
189
+ if (this._overlayRef) {
190
+ this._overlayRef.dispose();
191
+ this._overlayRef = undefined;
192
+ }
193
+ }
194
+ getPositions(dir) {
195
+ const oppositeVertical = {
196
+ top: 'bottom',
197
+ bottom: 'top',
198
+ center: 'center'
199
+ };
200
+ const oppositeHorizontal = {
201
+ start: 'end',
202
+ end: 'start',
203
+ center: 'center'
204
+ };
205
+ const centerY = (pos) => {
206
+ return {
207
+ originX: 'center',
208
+ originY: pos,
209
+ overlayX: 'center',
210
+ overlayY: oppositeVertical[pos]
211
+ };
212
+ };
213
+ const centerX = (pos) => {
214
+ return {
215
+ originX: oppositeHorizontal[pos],
216
+ originY: 'center',
217
+ overlayX: pos,
218
+ overlayY: 'center'
219
+ };
220
+ };
221
+ const ltr = (axis) => {
222
+ return {
223
+ originX: 'start',
224
+ originY: axis,
225
+ overlayX: 'start',
226
+ overlayY: oppositeVertical[axis]
227
+ };
228
+ };
229
+ const rtl = (axis) => {
230
+ return {
231
+ originX: 'end',
232
+ originY: axis,
233
+ overlayX: 'end',
234
+ overlayY: oppositeVertical[axis]
235
+ };
236
+ };
237
+ const side = (axisX, axisY) => {
238
+ return {
239
+ originX: axisX,
240
+ originY: axisY,
241
+ overlayX: oppositeHorizontal[axisX],
242
+ overlayY: axisY
243
+ };
244
+ };
245
+ const cmp = dir ?? this._options?.dir ?? this.dir;
246
+ switch (cmp) {
247
+ case 'ct':
248
+ return [centerY('top'), centerY('bottom'), centerX('start'), centerX('end')];
249
+ case 'cr':
250
+ return [centerX('end'), centerX('start'), centerY('top'), centerY('bottom')];
251
+ case 'cc':
252
+ return [centerX('center')];
253
+ case 'ltr':
254
+ return [ltr('bottom'), ltr('top')];
255
+ case 'rtl':
256
+ return [rtl('bottom'), rtl('top')];
257
+ case 'tltr':
258
+ return [ltr('top'), ltr('bottom')];
259
+ case 'trtl':
260
+ return [rtl('top'), rtl('bottom')];
261
+ case 'rt':
262
+ return [side('end', 'top'), side('end', 'bottom'), ltr('top')];
263
+ case 'rb':
264
+ return [side('end', 'bottom'), side('end', 'top'), ltr('bottom'), rtl('bottom')];
265
+ case 'lt':
266
+ return [side('start', 'top'), side('start', 'bottom'), rtl('top')];
267
+ case 'lb':
268
+ return [side('start', 'bottom'), side('start', 'top'), rtl('bottom')];
269
+ default:
270
+ return [];
271
+ }
272
+ }
273
+ createPopover(origin, options) {
274
+ if (!this.target) {
275
+ // eslint-disable-next-line no-console
276
+ console.error('MonkeyPopoverDirective -> target element is not defined.');
277
+ return;
278
+ }
279
+ const originEl = this.target instanceof HTMLElement ? this.target : this.target.element;
280
+ this._positionStrategy = this._overlayPositionBuilder
281
+ .flexibleConnectedTo(origin ?? originEl)
282
+ .withPush(true)
283
+ .withGrowAfterOpen(true)
284
+ .withPositions(this.getPositions(options?.dir));
285
+ this._overlayRef = this._overlay.create({
286
+ positionStrategy: this._positionStrategy,
287
+ disposeOnNavigation: true,
288
+ direction: 'ltr',
289
+ hasBackdrop: this.backdrop,
290
+ scrollStrategy: this._overlay.scrollStrategies.reposition(),
291
+ backdropClass: 'cdk-overlay-transparent-backdrop',
292
+ width: this._options?.minwidth || this.minwidth ? this.target.offsetWidth - 2 : undefined,
293
+ maxHeight: '95%',
294
+ height: this.height
295
+ });
296
+ this._overlayRef
297
+ .backdropClick()
298
+ .pipe(takeUntilDestroyed(this._destroyRef))
299
+ .subscribe((event) => {
300
+ this.closePopover(event);
301
+ });
302
+ const portal = new ComponentPortal(MonkeyPopoverContentComponent, this._vcr);
303
+ this._componentRef = this._overlayRef.attach(portal);
304
+ this._componentRef.instance.content = this._tpl;
305
+ this._componentRef.instance.title = this.title;
306
+ this._componentRef.instance.actions = this.actions;
307
+ this._componentRef.instance.hideClose = this.hideClose;
308
+ this._componentRef.instance.hideHeader = this.hideHeader;
309
+ this._componentRef.instance.hideActions = this.hideActions;
310
+ if (!this.hideClose || !this.hideHeader) {
311
+ this._componentRef.instance.onClose
312
+ .pipe(takeUntilDestroyed(this._destroyRef))
313
+ .subscribe(() => {
314
+ this.closePopover();
315
+ });
316
+ }
317
+ if (this.watch && 'ResizeObserver' in window) {
318
+ this._resizeObserver = new ResizeObserver(() => {
319
+ this._overlayRef?.updatePosition();
320
+ });
321
+ this._resizeObserver.observe(this._componentRef.location.nativeElement);
322
+ }
323
+ }
324
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPopoverDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
325
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: MonkeyPopoverDirective, selector: "[monkeyPopover]", inputs: { popover: ["monkeyPopover", "popover"], closed: ["monkeyPopoverClosed", "closed"], target: ["monkeyPopoverTarget", "target"], minwidth: ["monkeyPopoverMinwidth", "minwidth"], backdrop: ["monkeyPopoverBackdrop", "backdrop"], watch: ["monkeyPopoverWatch", "watch"], dir: ["monkeyPopoverDir", "dir"], contextmenu: ["monkeyPopoverContextmenu", "contextmenu"], height: ["monkeyPopoverHeight", "height"], title: ["monkeyPopoverTitle", "title"], actions: ["monkeyPopoverActions", "actions"], hideClose: ["monkeyPopoverHideClose", "hideClose", booleanAttribute], hideHeader: ["monkeyPopoverHideHeader", "hideHeader", booleanAttribute], hideActions: ["monkeyPopoverHideActions", "hideActions", booleanAttribute] }, ngImport: i0 }); }
326
+ }
327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPopoverDirective, decorators: [{
328
+ type: Directive,
329
+ args: [{
330
+ selector: '[monkeyPopover]'
331
+ }]
332
+ }], ctorParameters: () => [], propDecorators: { _options: [{
333
+ type: Optional
334
+ }, {
335
+ type: Inject,
336
+ args: [MONKEY_POPOVER_OPTIONS]
337
+ }], popover: [{
338
+ type: Input,
339
+ args: ['monkeyPopover']
340
+ }], closed: [{
341
+ type: Input,
342
+ args: ['monkeyPopoverClosed']
343
+ }], target: [{
344
+ type: Input,
345
+ args: ['monkeyPopoverTarget']
346
+ }], minwidth: [{
347
+ type: Input,
348
+ args: ['monkeyPopoverMinwidth']
349
+ }], backdrop: [{
350
+ type: Input,
351
+ args: ['monkeyPopoverBackdrop']
352
+ }], watch: [{
353
+ type: Input,
354
+ args: ['monkeyPopoverWatch']
355
+ }], dir: [{
356
+ type: Input,
357
+ args: ['monkeyPopoverDir']
358
+ }], contextmenu: [{
359
+ type: Input,
360
+ args: ['monkeyPopoverContextmenu']
361
+ }], height: [{
362
+ type: Input,
363
+ args: ['monkeyPopoverHeight']
364
+ }], title: [{
365
+ type: Input,
366
+ args: ['monkeyPopoverTitle']
367
+ }], actions: [{
368
+ type: Input,
369
+ args: ['monkeyPopoverActions']
370
+ }], hideClose: [{
371
+ type: Input,
372
+ args: [{ alias: 'monkeyPopoverHideClose', transform: booleanAttribute }]
373
+ }], hideHeader: [{
374
+ type: Input,
375
+ args: [{ alias: 'monkeyPopoverHideHeader', transform: booleanAttribute }]
376
+ }], hideActions: [{
377
+ type: Input,
378
+ args: [{ alias: 'monkeyPopoverHideActions', transform: booleanAttribute }]
379
+ }] } });
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS12Mi9zcmMvbGliL2RpcmVjdGl2ZXMvcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsT0FBTyxFQUNQLHNCQUFzQixFQUV2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUVMLGdCQUFnQixFQUNoQixTQUFTLEVBRVQsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixRQUFRLEVBQ1IsTUFBTSxFQUNOLFdBQVcsRUFDWCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQTRDbkQsTUFBTSxPQUFPLDZCQUE2QjtJQWtCeEMsWUFBb0IsSUFBNkI7UUFBN0IsU0FBSSxHQUFKLElBQUksQ0FBeUI7UUFYdkMsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFZckMsWUFBWTtJQUNkLENBQUM7SUFFRCxlQUFlO1FBQ2IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sU0FBUyxHQUFH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IHtcbiAgQ29ubmVjdGVkUG9zaXRpb24sXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5T3JpZ2luLFxuICBPdmVybGF5LFxuICBPdmVybGF5UG9zaXRpb25CdWlsZGVyLFxuICBPdmVybGF5UmVmXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBEZXN0cm95UmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgTW9ua2V5UG9wb3ZlckRpciwgTW9ua2V5UG9wb3Zlck9wdGlvbnMgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1PTktFWV9QT1BPVkVSX09QVElPTlMgfSBmcm9tICcuLi90b2tlbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb25rZXktcG9wb3Zlci1jb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdUZW1wbGF0ZU91dGxldCwgVXRpbEljb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJtZWN4LXBvcG92ZXItY29udGFpbmVyXCI+XG4gICAgICBAaWYgKCFoaWRlSGVhZGVyKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZWN4LXBvcG92ZXItaGVhZGVyXCI+XG4gICAgICAgICAgQGlmICh0aXRsZSkge1xuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGUodGl0bGUpOyBlbHNlIHN0cmluZ1RpdGxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRpdGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3N0cmluZ1RpdGxlPlxuICAgICAgICAgICAgICAgIHt7IHRpdGxlIH19XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKCFoaWRlQ2xvc2UpIHtcbiAgICAgICAgICAgIDx1dGlsLWljb24gY2xhc3M9XCJtZWN4LXBvcG92ZXItY2xvc2VcIiBuYW1lPVwiY2xlYXJcIiAoY2xpY2spPVwib25DbG9zZS5uZXh0KG51bGwpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8ZGl2IGNsYXNzPVwibWVjeC1wb3BvdmVyLWNvbnRlbnRcIiBbY2xhc3MuYWRkLXJhZGl1c109XCJoaWRlSGVhZGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmICghaGlkZUFjdGlvbnMpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1lY3gtcG9wb3Zlci1hY3Rpb25zXCIgKm5nSWY9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGVtcGxhdGUoYWN0aW9ucyk7IGVsc2Ugc3RyaW5nQWN0aW9uc1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3N0cmluZ0FjdGlvbnM+XG4gICAgICAgICAgICA8c3Bhbj57eyBhY3Rpb25zIH19PC9zcGFuPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIE1vbmtleVBvcG92ZXJDb250ZW50Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcblxuICBASW5wdXQoKSBhY3Rpb25zPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KCkgb25DbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgaGlkZUhlYWRlciE6IGJvb2xlYW47XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGhpZGVDbG9zZSE6IGJvb2xlYW47XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGhpZGVBY3Rpb25zITogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgLy8gbm90IHRvIGRvXG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmb2N1c2FibGUgPSB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcbiAgICAgICAgJ2J1dHRvbiwgW2hyZWZdLCBpbnB1dCwgc2VsZWN0LCB0ZXh0YXJlYSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJ1xuICAgICAgKTtcbiAgICAgIGZvY3VzYWJsZT8uZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlzVGVtcGxhdGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZjtcbiAgfVxufVxuXG50eXBlIEhvcml6b250YWxQb3NpdGlvbiA9ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xudHlwZSBWZXJ0aWNhbFBvc2l0aW9uID0gJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbW9ua2V5UG9wb3Zlcl0nXG59KVxuZXhwb3J0IGNsYXNzIE1vbmtleVBvcG92ZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF90cGwgPSBpbmplY3QoVGVtcGxhdGVSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZjciA9IGluamVjdChWaWV3Q29udGFpbmVyUmVmKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9lbCA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF96b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdmVybGF5UG9zaXRpb25CdWlsZGVyID0gaW5qZWN0KE92ZXJsYXlQb3NpdGlvbkJ1aWxkZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgQE9wdGlvbmFsKCkgQEluamVjdChNT05LRVlfUE9QT1ZFUl9PUFRJT05TKSBwcml2YXRlIHJlYWRvbmx5IF9vcHRpb25zPzogTW9ua2V5UG9wb3Zlck9wdGlvbnM7XG5cbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG5cbiAgcHJpdmF0ZSBfY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPE1vbmtleVBvcG92ZXJDb250ZW50Q29tcG9uZW50PjtcblxuICBwcml2YXRlIF9wb3NpdGlvblN0cmF0ZWd5PzogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuXG4gIHByaXZhdGUgX3Jlc2l6ZU9ic2VydmVyPzogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgcHJpdmF0ZSBfc2hvdyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnbW9ua2V5UG9wb3ZlcicpXG4gIHNldCBwb3BvdmVyKHNob3c6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fc2hvdyA9PT0gc2hvdykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zaG93ID0gc2hvdztcbiAgICBpZiAoc2hvdykge1xuICAgICAgdGhpcy5jcmVhdGVQb3BvdmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlzcG9zZVBvcG92ZXIoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgcG9wb3ZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdztcbiAgfVxuXG4gIEBJbnB1dCgnbW9ua2V5UG9wb3ZlckNsb3NlZCcpXG4gIGNsb3NlZD86IChlPzogTW91c2VFdmVudCkgPT4gdm9pZDtcblxuICBwcml2YXRlIF90YXJnZXQ/OiBIVE1MRWxlbWVudDtcblxuICBASW5wdXQoJ21vbmtleVBvcG92ZXJUYXJnZXQnKVxuICBzZXQgdGFyZ2V0KHZhbHVlOiBhbnkgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl90YXJnZXQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCB0YXJnZXQoKTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl90YXJnZXQ7XG4gIH1cblxuICBASW5wdXQoJ21vbmtleVBvcG92ZXJNaW53aWR0aCcpXG4gIG1pbndpZHRoID0gZmFsc2U7XG5cbiAgQElucHV0KCdtb25rZXlQb3BvdmVyQmFja2Ryb3AnKVxuICBiYWNrZHJvcCA9IHRydWU7XG5cbiAgQElucHV0KCdtb25rZXlQb3BvdmVyV2F0Y2gnKVxuICB3YXRjaCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnbW9ua2V5UG9wb3ZlckRpcicpXG4gIGRpcjogTW9ua2V5UG9wb3ZlckRpciA9ICdsdHInO1xuXG4gIEBJbnB1dCgnbW9ua2V5UG9wb3ZlckNvbnRleHRtZW51JylcbiAgY29udGV4dG1lbnUgPSBmYWxzZTtcblxuICBASW5wdXQoJ21vbmtleVBvcG92ZXJIZWlnaHQnKVxuICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgQElucHV0KCdtb25rZXlQb3BvdmVyVGl0bGUnKSB0aXRsZT86IHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+O1xuXG4gIEBJbnB1dCgnbW9ua2V5UG9wb3ZlckFjdGlvbnMnKSBhY3Rpb25zPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dW5rbm93bj47XG5cbiAgQElucHV0KHsgYWxpYXM6ICdtb25rZXlQb3BvdmVySGlkZUNsb3NlJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGhpZGVDbG9zZSE6IGJvb2xlYW47XG5cbiAgQElucHV0KHsgYWxpYXM6ICdtb25rZXlQb3BvdmVySGlkZUhlYWRlcicsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBoaWRlSGVhZGVyITogYm9vbGVhbjtcblxuICBASW5wdXQoeyBhbGlhczogJ21vbmtleVBvcG92ZXJIaWRlQWN0aW9ucycsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBoaWRlQWN0aW9ucyE6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fcm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBOYXZpZ2F0aW9uU3RhcnQgPT4ge1xuICAgICAgICAgIHJldHVybiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydDtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcG9zZVBvcG92ZXIoKTtcbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZVBvcG92ZXIoZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Nob3cpIHtcbiAgICAgIHRoaXMuX3Nob3cgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGlzcG9zZVBvcG92ZXIoKTtcbiAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZWQ/LihldmVudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRpc3Bvc2VQb3BvdmVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xuICAgICAgdGhpcy5fb3ZlcmxheVJlZi5kaXNwb3NlKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb25zKGRpcjogTW9ua2V5UG9wb3ZlckRpcik6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICAgIGNvbnN0IG9wcG9zaXRlVmVydGljYWw6IFJlY29yZDxWZXJ0aWNhbFBvc2l0aW9uLCBWZXJ0aWNhbFBvc2l0aW9uPiA9IHtcbiAgICAgIHRvcDogJ2JvdHRvbScsXG4gICAgICBib3R0b206ICd0b3AnLFxuICAgICAgY2VudGVyOiAnY2VudGVyJ1xuICAgIH07XG5cbiAgICBjb25zdCBvcHBvc2l0ZUhvcml6b250YWw6IFJlY29yZDxIb3Jpem9udGFsUG9zaXRpb24sIEhvcml6b250YWxQb3NpdGlvbj4gPSB7XG4gICAgICBzdGFydDogJ2VuZCcsXG4gICAgICBlbmQ6ICdzdGFydCcsXG4gICAgICBjZW50ZXI6ICdjZW50ZXInXG4gICAgfTtcblxuICAgIGNvbnN0IGNlbnRlclkgPSAocG9zOiBWZXJ0aWNhbFBvc2l0aW9uKTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgICAgIG9yaWdpblk6IHBvcyxcbiAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICBvdmVybGF5WTogb3Bwb3NpdGVWZXJ0aWNhbFtwb3NdXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBjZW50ZXJYID0gKHBvczogSG9yaXpvbnRhbFBvc2l0aW9uKTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogb3Bwb3NpdGVIb3Jpem9udGFsW3Bvc10sXG4gICAgICAgIG9yaWdpblk6ICdjZW50ZXInLFxuICAgICAgICBvdmVybGF5WDogcG9zLFxuICAgICAgICBvdmVybGF5WTogJ2NlbnRlcidcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGNvbnN0IGx0ciA9IChheGlzOiBWZXJ0aWNhbFBvc2l0aW9uKTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luWTogYXhpcyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiBvcHBvc2l0ZVZlcnRpY2FsW2F4aXNdXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBydGwgPSAoYXhpczogVmVydGljYWxQb3NpdGlvbik6IENvbm5lY3RlZFBvc2l0aW9uID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG9yaWdpblg6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiBheGlzLFxuICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgIG92ZXJsYXlZOiBvcHBvc2l0ZVZlcnRpY2FsW2F4aXNdXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBzaWRlID0gKGF4aXNYOiBIb3Jpem9udGFsUG9zaXRpb24sIGF4aXNZOiBWZXJ0aWNhbFBvc2l0aW9uKTogQ29ubmVjdGVkUG9zaXRpb24gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb3JpZ2luWDogYXhpc1gsXG4gICAgICAgIG9yaWdpblk6IGF4aXNZLFxuICAgICAgICBvdmVybGF5WDogb3Bwb3NpdGVIb3Jpem9udGFsW2F4aXNYXSxcbiAgICAgICAgb3ZlcmxheVk6IGF4aXNZXG4gICAgICB9O1xuICAgIH07XG5cbiAgICBjb25zdCBjbXAgPSBkaXIgPz8gdGhpcy5fb3B0aW9ucz8uZGlyID8/IHRoaXMuZGlyO1xuXG4gICAgc3dpdGNoIChjbXApIHtcbiAgICAgIGNhc2UgJ2N0JzpcbiAgICAgICAgcmV0dXJuIFtjZW50ZXJZKCd0b3AnKSwgY2VudGVyWSgnYm90dG9tJyksIGNlbnRlclgoJ3N0YXJ0JyksIGNlbnRlclgoJ2VuZCcpXTtcbiAgICAgIGNhc2UgJ2NyJzpcbiAgICAgICAgcmV0dXJuIFtjZW50ZXJYKCdlbmQnKSwgY2VudGVyWCgnc3RhcnQnKSwgY2VudGVyWSgndG9wJyksIGNlbnRlclkoJ2JvdHRvbScpXTtcbiAgICAgIGNhc2UgJ2NjJzpcbiAgICAgICAgcmV0dXJuIFtjZW50ZXJYKCdjZW50ZXInKV07XG4gICAgICBjYXNlICdsdHInOlxuICAgICAgICByZXR1cm4gW2x0cignYm90dG9tJyksIGx0cigndG9wJyldO1xuICAgICAgY2FzZSAncnRsJzpcbiAgICAgICAgcmV0dXJuIFtydGwoJ2JvdHRvbScpLCBydGwoJ3RvcCcpXTtcbiAgICAgIGNhc2UgJ3RsdHInOlxuICAgICAgICByZXR1cm4gW2x0cigndG9wJyksIGx0cignYm90dG9tJyldO1xuICAgICAgY2FzZSAndHJ0bCc6XG4gICAgICAgIHJldHVybiBbcnRsKCd0b3AnKSwgcnRsKCdib3R0b20nKV07XG4gICAgICBjYXNlICdydCc6XG4gICAgICAgIHJldHVybiBbc2lkZSgnZW5kJywgJ3RvcCcpLCBzaWRlKCdlbmQnLCAnYm90dG9tJyksIGx0cigndG9wJyldO1xuICAgICAgY2FzZSAncmInOlxuICAgICAgICByZXR1cm4gW3NpZGUoJ2VuZCcsICdib3R0b20nKSwgc2lkZSgnZW5kJywgJ3RvcCcpLCBsdHIoJ2JvdHRvbScpLCBydGwoJ2JvdHRvbScpXTtcbiAgICAgIGNhc2UgJ2x0JzpcbiAgICAgICAgcmV0dXJuIFtzaWRlKCdzdGFydCcsICd0b3AnKSwgc2lkZSgnc3RhcnQnLCAnYm90dG9tJyksIHJ0bCgndG9wJyldO1xuICAgICAgY2FzZSAnbGInOlxuICAgICAgICByZXR1cm4gW3NpZGUoJ3N0YXJ0JywgJ2JvdHRvbScpLCBzaWRlKCdzdGFydCcsICd0b3AnKSwgcnRsKCdib3R0b20nKV07XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQb3BvdmVyKFxuICAgIG9yaWdpbj86IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneU9yaWdpbixcbiAgICBvcHRpb25zPzogTW9ua2V5UG9wb3Zlck9wdGlvbnNcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRhcmdldCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ01vbmtleVBvcG92ZXJEaXJlY3RpdmUgLT4gdGFyZ2V0IGVsZW1lbnQgaXMgbm90IGRlZmluZWQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3JpZ2luRWwgPVxuICAgICAgdGhpcy50YXJnZXQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCA/IHRoaXMudGFyZ2V0IDogKHRoaXMudGFyZ2V0IGFzIGFueSkuZWxlbWVudDtcblxuICAgIHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5UG9zaXRpb25CdWlsZGVyXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4gPz8gb3JpZ2luRWwpXG4gICAgICAud2l0aFB1c2godHJ1ZSlcbiAgICAgIC53aXRoR3Jvd0FmdGVyT3Blbih0cnVlKVxuICAgICAgLndpdGhQb3NpdGlvbnModGhpcy5nZXRQb3NpdGlvbnMob3B0aW9ucz8uZGlyISkpO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZiA9IHRoaXMuX292ZXJsYXkuY3JlYXRlKHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX3Bvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICBkaXNwb3NlT25OYXZpZ2F0aW9uOiB0cnVlLFxuICAgICAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgICAgIGhhc0JhY2tkcm9wOiB0aGlzLmJhY2tkcm9wLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgd2lkdGg6IHRoaXMuX29wdGlvbnM/Lm1pbndpZHRoIHx8IHRoaXMubWlud2lkdGggPyB0aGlzLnRhcmdldC5vZmZzZXRXaWR0aCAtIDIgOiB1bmRlZmluZWQsXG4gICAgICBtYXhIZWlnaHQ6ICc5NSUnLFxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodFxuICAgIH0pO1xuXG4gICAgdGhpcy5fb3ZlcmxheVJlZlxuICAgICAgLmJhY2tkcm9wQ2xpY2soKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZVBvcG92ZXIoZXZlbnQpO1xuICAgICAgfSk7XG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKE1vbmtleVBvcG92ZXJDb250ZW50Q29tcG9uZW50LCB0aGlzLl92Y3IpO1xuXG4gICAgdGhpcy5fY29tcG9uZW50UmVmID0gdGhpcy5fb3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuY29udGVudCA9IHRoaXMuX3RwbDtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UudGl0bGUgPSB0aGlzLnRpdGxlIGFzIGFueTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucyBhcyBhbnk7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmhpZGVDbG9zZSA9IHRoaXMuaGlkZUNsb3NlO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlSGVhZGVyID0gdGhpcy5oaWRlSGVhZGVyO1xuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5oaWRlQWN0aW9ucyA9IHRoaXMuaGlkZUFjdGlvbnM7XG4gICAgaWYgKCF0aGlzLmhpZGVDbG9zZSB8fCAhdGhpcy5oaWRlSGVhZGVyKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uub25DbG9zZVxuICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xvc2VQb3BvdmVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLndhdGNoICYmICdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93KSB7XG4gICAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlSZWY/LnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -5,14 +5,14 @@
5
5
  ************************* */
6
6
  import { Directive } from '@angular/core';
7
7
  import * as i0 from "@angular/core";
8
- export class MonkeyPrefix {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MonkeyPrefix, selector: "monkey-prefix", ngImport: i0 }); }
8
+ export class MonkeyPrefixDirective {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPrefixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MonkeyPrefixDirective, selector: "monkey-prefix", ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPrefix, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeyPrefixDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: 'monkey-prefix'
16
16
  }]
17
17
  }] });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvZGlyZWN0aXZlcy9wcmVmaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzFDLE1BQU0sT0FBTyxZQUFZOytHQUFaLFlBQVk7bUdBQVosWUFBWTs7NEZBQVosWUFBWTtrQkFIeEIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgTW9ua2V5IEV4Y2hhbmdlLiBBbGwgUmlnaHRzIFJlc2VydmVkXG4gKiBUaGlzIHN0eWxlIGd1aWRlIHdhcyBkZXZlbG9wZWQgYnkgTW9ua2V5IEV4Y2hhbmdlIFRlYW1cbiAqIE1JVCBMaWNlbmNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbW9ua2V5LXByZWZpeCdcbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5UHJlZml4IHt9XG4iXX0=
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvZGlyZWN0aXZlcy9wcmVmaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzFDLE1BQU0sT0FBTyxxQkFBcUI7K0dBQXJCLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUhqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKiAqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxuICogTUlUIExpY2VuY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdtb25rZXktcHJlZml4J1xufSlcbmV4cG9ydCBjbGFzcyBNb25rZXlQcmVmaXhEaXJlY3RpdmUge31cbiJdfQ==
@@ -5,7 +5,7 @@
5
5
  ************************* */
6
6
  import { Directive, HostListener, Input } from '@angular/core';
7
7
  import * as i0 from "@angular/core";
8
- export class MonkeySuffix {
8
+ export class MonkeySuffixDirective {
9
9
  constructor() {
10
10
  this.hasAction = false;
11
11
  this.action = null;
@@ -22,10 +22,10 @@ export class MonkeySuffix {
22
22
  this.action(event);
23
23
  }
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeySuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MonkeySuffix, selector: "monkey-suffix", inputs: { _hasAction: ["hasAction", "_hasAction"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.has-action": "hasAction" } }, ngImport: i0 }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeySuffixDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: MonkeySuffixDirective, selector: "monkey-suffix", inputs: { _hasAction: ["hasAction", "_hasAction"] }, host: { listeners: { "click": "onClick($event)" }, properties: { "class.has-action": "hasAction" } }, ngImport: i0 }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeySuffix, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MonkeySuffixDirective, decorators: [{
29
29
  type: Directive,
30
30
  args: [{
31
31
  selector: 'monkey-suffix',
@@ -40,4 +40,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
40
40
  type: HostListener,
41
41
  args: ['click', ['$event']]
42
42
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VmZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvZGlyZWN0aXZlcy9zdWZmaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRL0QsTUFBTSxPQUFPLFlBQVk7SUFOekI7UUFZRSxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLFdBQU0sR0FBb0IsSUFBSSxDQUFDO0tBV2hDO0lBbEJDLElBQ0ksVUFBVSxDQUFDLEtBQVM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQU9ELE9BQU8sQ0FBQyxLQUFtQjtRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDOytHQWxCVSxZQUFZO21HQUFaLFlBQVk7OzRGQUFaLFlBQVk7a0JBTnhCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLElBQUksRUFBRTt3QkFDSixvQkFBb0IsRUFBRSxXQUFXO3FCQUNsQztpQkFDRjs4QkFHSyxVQUFVO3NCQURiLEtBQUs7dUJBQUMsV0FBVztnQkFVbEIsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiAqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCBNb25rZXkgRXhjaGFuZ2UuIEFsbCBSaWdodHMgUmVzZXJ2ZWRcbiAqIFRoaXMgc3R5bGUgZ3VpZGUgd2FzIGRldmVsb3BlZCBieSBNb25rZXkgRXhjaGFuZ2UgVGVhbVxuICogTUlUIExpY2VuY2VcbiAqKioqKioqKioqKioqKioqKioqKioqKioqICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdtb25rZXktc3VmZml4JyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuaGFzLWFjdGlvbl0nOiAnaGFzQWN0aW9uJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIE1vbmtleVN1ZmZpeCB7XG4gIEBJbnB1dCgnaGFzQWN0aW9uJylcbiAgc2V0IF9oYXNBY3Rpb24odmFsdWU6ICcnKSB7XG4gICAgdGhpcy5oYXNBY3Rpb24gPSB0cnVlO1xuICB9XG5cbiAgaGFzQWN0aW9uID0gZmFsc2U7XG5cbiAgYWN0aW9uOiBGdW5jdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljayhldmVudDogUG9pbnRlckV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGlvbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGlvbihldmVudCk7XG4gICAgfVxuICB9XG59XG4iXX0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VmZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvZGlyZWN0aXZlcy9zdWZmaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NkJBSTZCO0FBRTdCLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRL0QsTUFBTSxPQUFPLHFCQUFxQjtJQU5sQztRQVlFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsV0FBTSxHQUFvQixJQUFJLENBQUM7S0FXaEM7SUFsQkMsSUFDSSxVQUFVLENBQUMsS0FBUztRQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO0lBT0QsT0FBTyxDQUFDLEtBQW1CO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMxQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7K0dBbEJVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQU5qQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUU7d0JBQ0osb0JBQW9CLEVBQUUsV0FBVztxQkFDbEM7aUJBQ0Y7OEJBR0ssVUFBVTtzQkFEYixLQUFLO3VCQUFDLFdBQVc7Z0JBVWxCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgTW9ua2V5IEV4Y2hhbmdlLiBBbGwgUmlnaHRzIFJlc2VydmVkXG4gKiBUaGlzIHN0eWxlIGd1aWRlIHdhcyBkZXZlbG9wZWQgYnkgTW9ua2V5IEV4Y2hhbmdlIFRlYW1cbiAqIE1JVCBMaWNlbmNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xuXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnbW9ua2V5LXN1ZmZpeCcsXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmhhcy1hY3Rpb25dJzogJ2hhc0FjdGlvbidcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBNb25rZXlTdWZmaXhEaXJlY3RpdmUge1xuICBASW5wdXQoJ2hhc0FjdGlvbicpXG4gIHNldCBfaGFzQWN0aW9uKHZhbHVlOiAnJykge1xuICAgIHRoaXMuaGFzQWN0aW9uID0gdHJ1ZTtcbiAgfVxuXG4gIGhhc0FjdGlvbiA9IGZhbHNlO1xuXG4gIGFjdGlvbjogRnVuY3Rpb24gfCBudWxsID0gbnVsbDtcblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hY3Rpb24pIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hY3Rpb24oZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS12Mi9zcmMvbGliL2ludGVyZmFjZXMvYnJlYWRjcnVtYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCcmVhZGNydW1iIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgY2FsbGJhY2s/OiBGdW5jdGlvbjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS12Mi9zcmMvbGliL2ludGVyZmFjZXMvYnJlYWRjcnVtYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBNb25rZXlCcmVhZGNydW1iIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgcGF0aD86IHN0cmluZztcbiAgY2FsbGJhY2s/OiBGdW5jdGlvbjtcbn1cbiJdfQ==
@@ -1,7 +1,8 @@
1
1
  export * from './alert';
2
2
  export * from './breadcrumb';
3
3
  export * from './button';
4
+ export * from './popover';
4
5
  export * from './sizes';
5
6
  export * from './table';
6
7
  export * from './toast';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbGVydCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWInO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9zaXplcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3QnO1xuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9pbnRlcmZhY2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbGVydCc7XG5leHBvcnQgKiBmcm9tICcuL2JyZWFkY3J1bWInO1xuZXhwb3J0ICogZnJvbSAnLi9idXR0b24nO1xuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyJztcbmV4cG9ydCAqIGZyb20gJy4vc2l6ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3RvYXN0JztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21vbmtleS1zdHlsZS1ndWlkZS12Mi9zcmMvbGliL2ludGVyZmFjZXMvcG9wb3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgTW9ua2V5UG9wb3ZlckRpciA9XG4gIHwgJ3J0bCdcbiAgfCAnbHRyJ1xuICB8ICd0cnRsJ1xuICB8ICd0bHRyJ1xuICB8ICdjdCdcbiAgfCAnY2MnXG4gIHwgJ2NyJ1xuICB8ICdydCdcbiAgfCAncmInXG4gIHwgJ2x0J1xuICB8ICdsYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ua2V5UG9wb3Zlck9wdGlvbnMge1xuICBkaXI/OiBNb25rZXlQb3BvdmVyRGlyO1xuICBtaW53aWR0aD86IGJvb2xlYW47XG4gIGJhY2tkcm9wPzogYm9vbGVhbjtcbiAgY29udGV4dG1lbnU/OiBib29sZWFuO1xufVxuIl19
@@ -1,4 +1,4 @@
1
- export class ToastRef {
1
+ export class MonkeyToastRef {
2
2
  constructor(componentRef) {
3
3
  this.componentRef = componentRef;
4
4
  // not to do
@@ -7,4 +7,4 @@ export class ToastRef {
7
7
  this.componentRef.instance.close();
8
8
  }
9
9
  }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9pbnRlcmZhY2VzL3RvYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQTZCLFlBQWdEO1FBQWhELGlCQUFZLEdBQVosWUFBWSxDQUFvQztRQUMzRSxZQUFZO0lBQ2QsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vbmtleVRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUb2FzdFJlZiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TW9ua2V5VG9hc3RDb21wb25lbnQ+KSB7XG4gICAgLy8gbm90IHRvIGRvXG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbG9zZSgpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFRvYXN0UG9zaXRpb24gPVxuICB8ICd0b3AtY2VudGVyJ1xuICB8ICd0b3AtbGVmdCdcbiAgfCAndG9wLXJpZ2h0J1xuICB8ICdib3R0b20tY2VudGVyJ1xuICB8ICdib3R0b20tbGVmdCdcbiAgfCAnYm90dG9tLXJpZ2h0JztcblxuZXhwb3J0IHR5cGUgVG9hc3RUeXBlID0gJ2RlZmF1bHQnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICdpbmZvJyB8ICdxdWVzdGlvbic7XG5cbmV4cG9ydCB0eXBlIFRvYXN0Q29uZmlnID0ge1xuICB0eXBlPzogVG9hc3RUeXBlO1xuICBpY29uPzogc3RyaW5nO1xuICBpc0Nsb3NhYmxlPzogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwb3NpdGlvbj86IFRvYXN0UG9zaXRpb247XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBrZWVwT3Blbj86IGJvb2xlYW47XG4gIGFjdGlvbkxhYmVsPzogc3RyaW5nO1xuICBhY3Rpb25JY29uPzogc3RyaW5nO1xuICBhY3Rpb24/OiAoKSA9PiB2b2lkO1xuICBjbG9zZU9uQWN0aW9uPzogYm9vbGVhbjtcbn07XG4iXX0=
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktc3R5bGUtZ3VpZGUtdjIvc3JjL2xpYi9pbnRlcmZhY2VzL3RvYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQTZCLFlBQWdEO1FBQWhELGlCQUFZLEdBQVosWUFBWSxDQUFvQztRQUMzRSxZQUFZO0lBQ2QsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vbmtleVRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cyc7XG5cbmV4cG9ydCBjbGFzcyBNb25rZXlUb2FzdFJlZiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50UmVmOiBDb21wb25lbnRSZWY8TW9ua2V5VG9hc3RDb21wb25lbnQ+KSB7XG4gICAgLy8gbm90IHRvIGRvXG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5jbG9zZSgpO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIE1vbmtleVRvYXN0UG9zaXRpb24gPVxuICB8ICd0b3AtY2VudGVyJ1xuICB8ICd0b3AtbGVmdCdcbiAgfCAndG9wLXJpZ2h0J1xuICB8ICdib3R0b20tY2VudGVyJ1xuICB8ICdib3R0b20tbGVmdCdcbiAgfCAnYm90dG9tLXJpZ2h0JztcblxuZXhwb3J0IHR5cGUgTW9ua2V5VG9hc3RUeXBlID0gJ2RlZmF1bHQnIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8ICdpbmZvJyB8ICdxdWVzdGlvbic7XG5cbmV4cG9ydCB0eXBlIFRvYXN0Q29uZmlnID0ge1xuICB0eXBlPzogTW9ua2V5VG9hc3RUeXBlO1xuICBpY29uPzogc3RyaW5nO1xuICBpc0Nsb3NhYmxlPzogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwb3NpdGlvbj86IE1vbmtleVRvYXN0UG9zaXRpb247XG4gIGR1cmF0aW9uPzogbnVtYmVyO1xuICBrZWVwT3Blbj86IGJvb2xlYW47XG4gIGFjdGlvbkxhYmVsPzogc3RyaW5nO1xuICBhY3Rpb25JY29uPzogc3RyaW5nO1xuICBhY3Rpb24/OiAoKSA9PiB2b2lkO1xuICBjbG9zZU9uQWN0aW9uPzogYm9vbGVhbjtcbn07XG4iXX0=
@@ -7,7 +7,7 @@
7
7
  import { DestroyRef, inject, Injectable, LOCALE_ID } from '@angular/core';
8
8
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
9
  import { BehaviorSubject, map } from 'rxjs';
10
- import { MECX_I18N_WRAPPER } from '../tokens';
10
+ import { MONKEY_I18N_WRAPPER } from '../tokens';
11
11
  import * as i0 from "@angular/core";
12
12
  export class MonkeyDictionaryService {
13
13
  constructor() {
@@ -183,7 +183,7 @@ export class MonkeyDictionaryService {
183
183
  }
184
184
  }
185
185
  });
186
- const tokenSubject = inject(MECX_I18N_WRAPPER, { optional: true });
186
+ const tokenSubject = inject(MONKEY_I18N_WRAPPER, { optional: true });
187
187
  tokenSubject?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((value) => {
188
188
  this.handleWrapperValues(value);
189
189
  });
@@ -221,4 +221,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
221
221
  providedIn: 'root'
222
222
  }]
223
223
  }], ctorParameters: () => [] });
224
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvc2VydmljZXMvZGljdGlvbmFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQjs7Ozs2QkFJNkI7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBSzlDLE1BQU0sT0FBTyx1QkFBdUI7SUFnTGxDO1FBL0tRLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFzQztZQUN4RSxPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLDZCQUE2QjtnQkFDM0MsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixZQUFZLEVBQUU7b0JBQ1osWUFBWSxFQUFFLGdCQUFnQjtvQkFDOUIsVUFBVSxFQUFFLGlCQUFpQjtvQkFDN0IsT0FBTyxFQUFFLDZCQUE2QjtvQkFDdEMsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxVQUFVO3dCQUNsQixLQUFLLEVBQUUsU0FBUztxQkFDakI7b0JBQ0QsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO29CQUMzRCxNQUFNLEVBQUU7d0JBQ04sQ0FBQyxFQUFFLFNBQVM7d0JBQ1osQ0FBQyxFQUFFLFdBQVc7d0JBQ2QsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLE1BQU07d0JBQ1QsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLFFBQVE7d0JBQ1gsQ0FBQyxFQUFFLFVBQVU7d0JBQ2IsQ0FBQyxFQUFFLFNBQVM7d0JBQ1osRUFBRSxFQUFFLFVBQVU7d0JBQ2QsRUFBRSxFQUFFLFVBQVU7cUJBQ2Y7b0JBQ0QsZUFBZSxFQUFFO3dCQUNmLE1BQU0sRUFBRSxhQUFhO3dCQUNyQixZQUFZLEVBQUUsaUJBQWlCO3dCQUMvQixZQUFZLEVBQUUsaUJBQWlCO3dCQUMvQixZQUFZLEVBQUUsaUJBQWlCO3dCQUMvQixhQUFhLEVBQUUsaUJBQWlCO3dCQUNoQyxjQUFjLEVBQUUsa0JBQWtCO3dCQUNsQyxZQUFZLEVBQUUsa0JBQWtCO3dCQUNoQyxZQUFZLEVBQUUsa0JBQWtCO3dCQUNoQyxZQUFZLEVBQUUsa0JBQWtCO3dCQUNoQyxhQUFhLEVBQUUsa0JBQWtCO3dCQUNqQyxjQUFjLEVBQUUsbUJBQW1CO3FCQUNwQztpQkFDRjthQUNGO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLFlBQVksRUFBRSw4QkFBOEI7Z0JBQzVDLFNBQVMsRUFBRSxXQUFXO2dCQUN0QixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsWUFBWSxFQUFFO29CQUNaLFlBQVksRUFBRSxpQkFBaUI7b0JBQy9CLFVBQVUsRUFBRSxrQkFBa0I7b0JBQzlCLE9BQU8sRUFBRSwyQkFBMkI7b0JBQ3BDLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsVUFBVTt3QkFDbEIsS0FBSyxFQUFFLFNBQVM7cUJBQ2pCO29CQUNELFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztvQkFDckUsTUFBTSxFQUFFO3dCQUNOLENBQUMsRUFBRSxPQUFPO3dCQUNWLENBQUMsRUFBRSxTQUFTO3dCQUNaLENBQUMsRUFBRSxPQUFPO3dCQUNWLENBQUMsRUFBRSxPQUFPO3dCQUNWLENBQUMsRUFBRSxNQUFNO3dCQUNULENBQUMsRUFBRSxPQUFPO3dCQUNWLENBQUMsRUFBRSxPQUFPO3dCQUNWLENBQUMsRUFBRSxRQUFRO3dCQUNYLENBQUMsRUFBRSxZQUFZO3dCQUNmLENBQUMsRUFBRSxTQUFTO3dCQUNaLEVBQUUsRUFBRSxXQUFXO3dCQUNmLEVBQUUsRUFBRSxXQUFXO3FCQUNoQjtvQkFDRCxlQUFlLEVBQUU7d0JBQ2YsTUFBTSxFQUFFLGVBQWU7d0JBQ3ZCLFlBQVksRUFBRSxpQkFBaUI7d0JBQy9CLFlBQVksRUFBRSxpQkFBaUI7d0JBQy9CLFlBQVksRUFBRSxpQkFBaUI7d0JBQy9CLGFBQWEsRUFBRSxpQkFBaUI7d0JBQ2hDLGNBQWMsRUFBRSxrQkFBa0I7d0JBQ2xDLFlBQVksRUFBRSxrQkFBa0I7d0JBQ2hDLFlBQVksRUFBRSxrQkFBa0I7d0JBQ2hDLFlBQVksRUFBRSxrQkFBa0I7d0JBQ2hDLGFBQWEsRUFBRSxrQkFBa0I7d0JBQ2pDLGNBQWMsRUFBRSxtQkFBbUI7cUJBQ3BDO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLDhCQUE4QjtnQkFDNUMsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixZQUFZLEVBQUU7b0JBQ1osWUFBWSxFQUFFLGlCQUFpQjtvQkFDL0IsVUFBVSxFQUFFLGtCQUFrQjtvQkFDOUIsT0FBTyxFQUFFLDJCQUEyQjtvQkFDcEMsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxVQUFVO3dCQUNsQixLQUFLLEVBQUUsU0FBUztxQkFDakI7b0JBQ0QsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO29CQUNyRSxNQUFNLEVBQUU7d0JBQ04sQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLFNBQVM7d0JBQ1osQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLE1BQU07d0JBQ1QsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLFFBQVE7d0JBQ1gsQ0FBQyxFQUFFLFlBQVk7d0JBQ2YsQ0FBQyxFQUFFLFNBQVM7d0JBQ1osRUFBRSxFQUFFLFdBQVc7d0JBQ2YsRUFBRSxFQUFFLFdBQVc7cUJBQ2hCO29CQUNELGVBQWUsRUFBRTt3QkFDZixNQUFNLEVBQUUsZUFBZTt3QkFDdkIsWUFBWSxFQUFFLGlCQUFpQjt3QkFDL0IsWUFBWSxFQUFFLGlCQUFpQjt3QkFDL0IsWUFBWSxFQUFFLGlCQUFpQjt3QkFDL0IsYUFBYSxFQUFFLGlCQUFpQjt3QkFDaEMsY0FBYyxFQUFFLGtCQUFrQjt3QkFDbEMsWUFBWSxFQUFFLGtCQUFrQjt3QkFDaEMsWUFBWSxFQUFFLGtCQUFrQjt3QkFDaEMsWUFBWSxFQUFFLGtCQUFrQjt3QkFDaEMsYUFBYSxFQUFFLGtCQUFrQjt3QkFDakMsY0FBYyxFQUFFLG1CQUFtQjtxQkFDcEM7aUJBQ0Y7YUFDRjtZQUNELE9BQU8sRUFBRTtnQkFDUCxZQUFZLEVBQUUsa0JBQWtCO2dCQUNoQyxTQUFTLEVBQUUsU0FBUztnQkFDcEIsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLFlBQVksRUFBRTtvQkFDWixZQUFZLEVBQUUsWUFBWTtvQkFDMUIsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLE9BQU8sRUFBRSxvQkFBb0I7b0JBQzdCLE9BQU8sRUFBRTt3QkFDUCxNQUFNLEVBQUUsUUFBUTt3QkFDaEIsS0FBSyxFQUFFLE9BQU87cUJBQ2Y7b0JBQ0QsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO29CQUNyRSxNQUFNLEVBQUU7d0JBQ04sQ0FBQyxFQUFFLFNBQVM7d0JBQ1osQ0FBQyxFQUFFLFVBQVU7d0JBQ2IsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLE9BQU87d0JBQ1YsQ0FBQyxFQUFFLEtBQUs7d0JBQ1IsQ0FBQyxFQUFFLE1BQU07d0JBQ1QsQ0FBQyxFQUFFLE1BQU07d0JBQ1QsQ0FBQyxFQUFFLFFBQVE7d0JBQ1gsQ0FBQyxFQUFFLFdBQVc7d0JBQ2QsQ0FBQyxFQUFFLFNBQVM7d0JBQ1osRUFBRSxFQUFFLFVBQVU7d0JBQ2QsRUFBRSxFQUFFLFVBQVU7cUJBQ2Y7b0JBQ0QsZUFBZSxFQUFFO3dCQUNmLE1BQU0sRUFBRSxRQUFRO3dCQUNoQixZQUFZLEVBQUUsY0FBYzt3QkFDNUIsWUFBWSxFQUFFLGNBQWM7d0JBQzVCLFlBQVksRUFBRSxjQUFjO3dCQUM1QixhQUFhLEVBQUUsZUFBZTt3QkFDOUIsY0FBYyxFQUFFLGdCQUFnQjt3QkFDaEMsWUFBWSxFQUFFLGNBQWM7d0JBQzVCLFlBQVksRUFBRSxjQUFjO3dCQUM1QixZQUFZLEVBQUUsY0FBYzt3QkFDNUIsYUFBYSxFQUFFLGVBQWU7d0JBQzlCLGNBQWMsRUFBRSxnQkFBZ0I7cUJBQ2pDO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFHRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzNFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUFhO1FBQ3ZDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksT0FBTyxDQUFDO1lBQ3pDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFFdEMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsR0FBRyxXQUFXO2dCQUNkLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ1IsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUN0QixHQUFHLFdBQVc7aUJBQ2Y7YUFDRixDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVc7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQWxOVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyoqICoqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXG4gKiBNSVQgTGljZW5jZVxuICoqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbmltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTUVDWF9JMThOX1dSQVBQRVIgfSBmcm9tICcuLi90b2tlbnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNb25rZXlEaWN0aW9uYXJ5U2VydmljZSB7XG4gIHByaXZhdGUgX2xvY2FsZUlkID0gaW5qZWN0KExPQ0FMRV9JRCk7XG5cbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICBwcml2YXRlIF9kYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgYW55Pj4+KHtcbiAgICAncHQtQlInOiB7XG4gICAgICAnTk8tUkVTVUxUUyc6ICdOZW5odW0gcmVzdWx0YWRvIGVuY29udHJhZG8nLFxuICAgICAgJ05PLURBVEEnOiAnU2VtIGRhZG9zJyxcbiAgICAgIExPQURJTkc6ICdDYXJyZWdhbmRvLi4uJyxcbiAgICAgICdEQVRFLVJBTkdFJzoge1xuICAgICAgICAnU1RBUlQtREFURSc6ICdEYXRhIGRlIGluw61jaW8nLFxuICAgICAgICAnRU5ELURBVEUnOiAnRGF0YSBkZSB0w6lybWlubycsXG4gICAgICAgIElOVkFMSUQ6ICdJbnRlcnZhbG8gZGUgZGF0YXMgaW52w6FsaWRvJyxcbiAgICAgICAgQUNUSU9OUzoge1xuICAgICAgICAgIENBTkNFTDogJ0NhbmNlbGFyJyxcbiAgICAgICAgICBBUFBMWTogJ0FwbGljYXInXG4gICAgICAgIH0sXG4gICAgICAgICdXRUVLLURBWVMnOiBbJ0RvbS4nLCAnMsKqJywgJzPCqicsICc0wqonLCAnNcKqJywgJzbCqicsICdTYWIuJ10sXG4gICAgICAgIE1PTlRIUzoge1xuICAgICAgICAgIDA6ICdKYW5laXJvJyxcbiAgICAgICAgICAxOiAnRmV2ZXJlaXJvJyxcbiAgICAgICAgICAyOiAnTWFyw6dvJyxcbiAgICAgICAgICAzOiAnQWJyaWwnLFxuICAgICAgICAgIDQ6ICdNYWlvJyxcbiAgICAgICAgICA1OiAnSnVuaG8nLFxuICAgICAgICAgIDY6ICdKdWxobycsXG4gICAgICAgICAgNzogJ0Fnb3N0bycsXG4gICAgICAgICAgODogJ1NldGVtYnJvJyxcbiAgICAgICAgICA5OiAnT3V0dWJybycsXG4gICAgICAgICAgMTA6ICdOb3ZlbWJybycsXG4gICAgICAgICAgMTE6ICdEZXplbWJybydcbiAgICAgICAgfSxcbiAgICAgICAgJ1FVSUNLLUFDVElPTlMnOiB7XG4gICAgICAgICAgQ1VTVE9NOiAnQ3VzdG9taXphZG8nLFxuICAgICAgICAgIExBU1RfMzBfREFZUzogJ1VsdGltb3MgMzAgZGlhcycsXG4gICAgICAgICAgTEFTVF82MF9EQVlTOiAnVWx0aW1vcyA2MCBkaWFzJyxcbiAgICAgICAgICBMQVNUXzkwX0RBWVM6ICdVbHRpbW9zIDkwIGRpYXMnLFxuICAgICAgICAgIExBU1RfNl9NT05USFM6ICdVbHRpbW9zIDYgbWVzZXMnLFxuICAgICAgICAgIExBU1RfMTJfTU9OVEhTOiAnVWx0aW1vcyAxMiBtZXNlcycsXG4gICAgICAgICAgTkVYVF8zMF9EQVlTOiAnUHLDs3hpbW9zIDMwIGRpYXMnLFxuICAgICAgICAgIE5FWFRfNjBfREFZUzogJ1Byw7N4aW1vcyA2MCBkaWFzJyxcbiAgICAgICAgICBORVhUXzkwX0RBWVM6ICdQcsOzeGltb3MgOTAgZGlhcycsXG4gICAgICAgICAgTkVYVF82X01PTlRIUzogJ1Byw7N4aW1vcyA2IG1lc2VzJyxcbiAgICAgICAgICBORVhUXzEyX01PTlRIUzogJ1Byw7N4aW1vcyAxMiBtZXNlcydcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgJ2VzLUNMJzoge1xuICAgICAgJ05PLVJFU1VMVFMnOiAnTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcycsXG4gICAgICAnTk8tREFUQSc6ICdTaW4gZGF0b3MnLFxuICAgICAgTE9BRElORzogJ0NhcmdhbmRvLi4uJyxcbiAgICAgICdEQVRFLVJBTkdFJzoge1xuICAgICAgICAnU1RBUlQtREFURSc6ICdGZWNoYSBkZSBpbmljaW8nLFxuICAgICAgICAnRU5ELURBVEUnOiAnRmVjaGEgZGUgdGVybWlubycsXG4gICAgICAgIElOVkFMSUQ6ICdSYW5nbyBkZSBmZWNoYXMgbm8gdsOhbGlkbycsXG4gICAgICAgIEFDVElPTlM6IHtcbiAgICAgICAgICBDQU5DRUw6ICdDYW5jZWxhcicsXG4gICAgICAgICAgQVBQTFk6ICdBcGxpY2FyJ1xuICAgICAgICB9LFxuICAgICAgICAnV0VFSy1EQVlTJzogWydEb20uJywgJ0x1bi4nLCAnTWFyLicsICdNacOpLicsICdKdWUuJywgJ1ZpZS4nLCAnU2FiLiddLFxuICAgICAgICBNT05USFM6IHtcbiAgICAgICAgICAwOiAnRW5lcm8nLFxuICAgICAgICAgIDE6ICdGZWJyZXJvJyxcbiAgICAgICAgICAyOiAnTWFyem8nLFxuICAgICAgICAgIDM6ICdBYnJpbCcsXG4gICAgICAgICAgNDogJ01heW8nLFxuICAgICAgICAgIDU6ICdKdW5pbycsXG4gICAgICAgICAgNjogJ0p1bGlvJyxcbiAgICAgICAgICA3OiAnQWdvc3RvJyxcbiAgICAgICAgICA4OiAnU2VwdGllbWJyZScsXG4gICAgICAgICAgOTogJ09jdHVicmUnLFxuICAgICAgICAgIDEwOiAnTm92aWVtYnJlJyxcbiAgICAgICAgICAxMTogJ0RpY2llbWJyZSdcbiAgICAgICAgfSxcbiAgICAgICAgJ1FVSUNLLUFDVElPTlMnOiB7XG4gICAgICAgICAgQ1VTVE9NOiAnUGVyc29uYWxpemFkbycsXG4gICAgICAgICAgTEFTVF8zMF9EQVlTOiAnw5psdGltb3MgMzAgZMOtYXMnLFxuICAgICAgICAgIExBU1RfNjBfREFZUzogJ8OabHRpbW9zIDYwIGTDrWFzJyxcbiAgICAgICAgICBMQVNUXzkwX0RBWVM6ICfDmmx0aW1vcyA5MCBkw61hcycsXG4gICAgICAgICAgTEFTVF82X01PTlRIUzogJ8OabHRpbW9zIDYgbWVzZXMnLFxuICAgICAgICAgIExBU1RfMTJfTU9OVEhTOiAnw5psdGltb3MgMTIgbWVzZXMnLFxuICAgICAgICAgIE5FWFRfMzBfREFZUzogJ1Byw7N4aW1vcyAzMCBkw61hcycsXG4gICAgICAgICAgTkVYVF82MF9EQVlTOiAnUHLDs3hpbW9zIDYwIGTDrWFzJyxcbiAgICAgICAgICBORVhUXzkwX0RBWVM6ICdQcsOzeGltb3MgOTAgZMOtYXMnLFxuICAgICAgICAgIE5FWFRfNl9NT05USFM6ICdQcsOzeGltb3MgNiBtZXNlcycsXG4gICAgICAgICAgTkVYVF8xMl9NT05USFM6ICdQcsOzeGltb3MgMTIgbWVzZXMnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgICdlcy1NWCc6IHtcbiAgICAgICdOTy1SRVNVTFRTJzogJ05vIHNlIGVuY29udHJhcm9uIHJlc3VsdGFkb3MnLFxuICAgICAgJ05PLURBVEEnOiAnU2luIGRhdG9zJyxcbiAgICAgIExPQURJTkc6ICdDYXJnYW5kby4uLicsXG4gICAgICAnREFURS1SQU5HRSc6IHtcbiAgICAgICAgJ1NUQVJULURBVEUnOiAnRmVjaGEgZGUgaW5pY2lvJyxcbiAgICAgICAgJ0VORC1EQVRFJzogJ0ZlY2hhIGRlIHRlcm1pbm8nLFxuICAgICAgICBJTlZBTElEOiAnUmFuZ28gZGUgZmVjaGFzIG5vIHbDoWxpZG8nLFxuICAgICAgICBBQ1RJT05TOiB7XG4gICAgICAgICAgQ0FOQ0VMOiAnQ2FuY2VsYXInLFxuICAgICAgICAgIEFQUExZOiAnQXBsaWNhcidcbiAgICAgICAgfSxcbiAgICAgICAgJ1dFRUstREFZUyc6IFsnRG9tLicsICdMdW4uJywgJ01hci4nLCAnTWnDqS4nLCAnSnVlLicsICdWaWUuJywgJ1NhYi4nXSxcbiAgICAgICAgTU9OVEhTOiB7XG4gICAgICAgICAgMDogJ0VuZXJvJyxcbiAgICAgICAgICAxOiAnRmVicmVybycsXG4gICAgICAgICAgMjogJ01hcnpvJyxcbiAgICAgICAgICAzOiAnQWJyaWwnLFxuICAgICAgICAgIDQ6ICdNYXlvJyxcbiAgICAgICAgICA1OiAnSnVuaW8nLFxuICAgICAgICAgIDY6ICdKdWxpbycsXG4gICAgICAgICAgNzogJ0Fnb3N0bycsXG4gICAgICAgICAgODogJ1NlcHRpZW1icmUnLFxuICAgICAgICAgIDk6ICdPY3R1YnJlJyxcbiAgICAgICAgICAxMDogJ05vdmllbWJyZScsXG4gICAgICAgICAgMTE6ICdEaWNpZW1icmUnXG4gICAgICAgIH0sXG4gICAgICAgICdRVUlDSy1BQ1RJT05TJzoge1xuICAgICAgICAgIENVU1RPTTogJ1BlcnNvbmFsaXphZG8nLFxuICAgICAgICAgIExBU1RfMzBfREFZUzogJ8OabHRpbW9zIDMwIGTDrWFzJyxcbiAgICAgICAgICBMQVNUXzYwX0RBWVM6ICfDmmx0aW1vcyA2MCBkw61hcycsXG4gICAgICAgICAgTEFTVF85MF9EQVlTOiAnw5psdGltb3MgOTAgZMOtYXMnLFxuICAgICAgICAgIExBU1RfNl9NT05USFM6ICfDmmx0aW1vcyA2IG1lc2VzJyxcbiAgICAgICAgICBMQVNUXzEyX01PTlRIUzogJ8OabHRpbW9zIDEyIG1lc2VzJyxcbiAgICAgICAgICBORVhUXzMwX0RBWVM6ICdQcsOzeGltb3MgMzAgZMOtYXMnLFxuICAgICAgICAgIE5FWFRfNjBfREFZUzogJ1Byw7N4aW1vcyA2MCBkw61hcycsXG4gICAgICAgICAgTkVYVF85MF9EQVlTOiAnUHLDs3hpbW9zIDkwIGTDrWFzJyxcbiAgICAgICAgICBORVhUXzZfTU9OVEhTOiAnUHLDs3hpbW9zIDYgbWVzZXMnLFxuICAgICAgICAgIE5FWFRfMTJfTU9OVEhTOiAnUHLDs3hpbW9zIDEyIG1lc2VzJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICAnZW4tVVMnOiB7XG4gICAgICAnTk8tUkVTVUxUUyc6ICdObyByZXN1bHRzIGZvdW5kJyxcbiAgICAgICdOTy1EQVRBJzogJ05vIGRhdGEnLFxuICAgICAgTE9BRElORzogJ0xvYWRpbmcuLi4nLFxuICAgICAgJ0RBVEUtUkFOR0UnOiB7XG4gICAgICAgICdTVEFSVC1EQVRFJzogJ1N0YXJ0IGRhdGUnLFxuICAgICAgICAnRU5ELURBVEUnOiAnRW5kIERhdGUnLFxuICAgICAgICBJTlZBTElEOiAnSW52YWxpZCBkYXRlIHJhbmdlJyxcbiAgICAgICAgQUNUSU9OUzoge1xuICAgICAgICAgIENBTkNFTDogJ0NhbmNlbCcsXG4gICAgICAgICAgQVBQTFk6ICdBcHBseSdcbiAgICAgICAgfSxcbiAgICAgICAgJ1dFRUstREFZUyc6IFsnU3VuLicsICdNb24uJywgJ1R1ZS4nLCAnV2VkLicsICdUaHUuJywgJ0ZyaS4nLCAnU2F0LiddLFxuICAgICAgICBNT05USFM6IHtcbiAgICAgICAgICAwOiAnSmFudWFyeScsXG4gICAgICAgICAgMTogJ0ZlYnJ1YXJ5JyxcbiAgICAgICAgICAyOiAnTWFyY2gnLFxuICAgICAgICAgIDM6ICdBcHJpbCcsXG4gICAgICAgICAgNDogJ01heScsXG4gICAgICAgICAgNTogJ0p1bmUnLFxuICAgICAgICAgIDY6ICdKdWx5JyxcbiAgICAgICAgICA3OiAnQXVndXN0JyxcbiAgICAgICAgICA4OiAnU2VwdGVtYmVyJyxcbiAgICAgICAgICA5OiAnT2N0b2JlcicsXG4gICAgICAgICAgMTA6ICdOb3ZlbWJlcicsXG4gICAgICAgICAgMTE6ICdEZWNlbWJlcidcbiAgICAgICAgfSxcbiAgICAgICAgJ1FVSUNLLUFDVElPTlMnOiB7XG4gICAgICAgICAgQ1VTVE9NOiAnQ3VzdG9tJyxcbiAgICAgICAgICBMQVNUXzMwX0RBWVM6ICdMYXN0IDMwIGRheXMnLFxuICAgICAgICAgIExBU1RfNjBfREFZUzogJ0xhc3QgNjAgZGF5cycsXG4gICAgICAgICAgTEFTVF85MF9EQVlTOiAnTGFzdCA5MCBkYXlzJyxcbiAgICAgICAgICBMQVNUXzZfTU9OVEhTOiAnTGFzdCA2IG1vbnRocycsXG4gICAgICAgICAgTEFTVF8xMl9NT05USFM6ICdMYXN0IDEyIG1vbnRocycsXG4gICAgICAgICAgTkVYVF8zMF9EQVlTOiAnTmV4dCAzMCBkYXlzJyxcbiAgICAgICAgICBORVhUXzYwX0RBWVM6ICdOZXh0IDYwIGRheXMnLFxuICAgICAgICAgIE5FWFRfOTBfREFZUzogJ05leHQgOTAgZGF5cycsXG4gICAgICAgICAgTkVYVF82X01PTlRIUzogJ05leHQgNiBtb250aHMnLFxuICAgICAgICAgIE5FWFRfMTJfTU9OVEhTOiAnTmV4dCAxMiBtb250aHMnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHRva2VuU3ViamVjdCA9IGluamVjdChNRUNYX0kxOE5fV1JBUFBFUiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgICB0b2tlblN1YmplY3Q/LnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZVdyYXBwZXJWYWx1ZXModmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVXcmFwcGVyVmFsdWVzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbG9jYWxlID0gdGhpcy5fbG9jYWxlSWQgfHwgJ3B0LUJSJztcbiAgICAgIGNvbnN0IHdyYXBwZWREYXRhID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICBjb25zdCBjdXJyZW50RGF0YSA9IHRoaXMuX2RhdGEkLnZhbHVlO1xuXG4gICAgICBjb25zdCB1cGRhdGVkID0ge1xuICAgICAgICAuLi5jdXJyZW50RGF0YSxcbiAgICAgICAgW2xvY2FsZV06IHtcbiAgICAgICAgICAuLi5jdXJyZW50RGF0YVtsb2NhbGVdLFxuICAgICAgICAgIC4uLndyYXBwZWREYXRhXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHRoaXMuX2RhdGEkLm5leHQodXBkYXRlZCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgTW9ua2V5RGljdGlvbmFyeVNlcnZpY2UgLSBoYW5kbGVXcmFwcGVyVmFsdWVzIC0+ICR7ZX1gKTtcbiAgICB9XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpIHtcbiAgICBjb25zdCBsb2NhbGUgPSB0aGlzLl9sb2NhbGVJZCB8fCAncHQtQlInO1xuICAgIHJldHVybiB0aGlzLl9kYXRhJC5waXBlKFxuICAgICAgbWFwKChkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBkYXRhW2xvY2FsZV0/LltrZXldID8/IG51bGw7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
224
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGljdGlvbmFyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlLXYyL3NyYy9saWIvc2VydmljZXMvZGljdGlvbmFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQjs7Ozs2QkFJNkI7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBS2hELE1BQU0sT0FBTyx1QkFBdUI7SUFnTGxDO1FBL0tRLGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUIsZ0JBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFakMsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFzQztZQUN4RSxPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLDZCQUE2QjtnQkFDM0MsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixZQUFZLEVBQUU7b0JBQ1osWUFBWSxFQUFFLGdCQUFnQjtvQkFDOUIsVUFBVSxFQUFFLGlCQUFpQjtvQkFDN0IsT0FBTyxFQUFFLDZCQUE2QjtvQkFDdEMsT0FBTyxFQUFFO3dCQUNQLE1BQU0sRUFBRSxVQUFVO3dCQUNsQixLQUFLLEVBQUUsU0FBUztxQkFDakI7b0JBQ0QsV0FBVyxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO29CQUMz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QU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFFdEMsTUFBTSxPQUFPLEdBQUc7Z0JBQ2QsR0FBRyxXQUFXO2dCQUNkLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ1IsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO29CQUN0QixHQUFHLFdBQVc7aUJBQ2Y7YUFDRixDQUFDO1lBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDSCxDQUFDO0lBRUQsR0FBRyxDQUFDLEdBQVc7UUFDYixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNyQixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNYLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQWxOVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyoqICoqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXG4gKiBNSVQgTGljZW5jZVxuICoqKioqKioqKioqKioqKioqKioqKioqKiogKi9cbmltcG9ydCB7IERlc3Ryb3lSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgTE9DQUxFX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTU9OS0VZX0kxOE5fV1JBUFBFUiB9IGZyb20gJy4uL3Rva2Vucyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1vbmtleURpY3Rpb25hcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbG9jYWxlSWQgPSBpbmplY3QoTE9DQUxFX0lEKTtcblxuICBwcml2YXRlIF9kZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIHByaXZhdGUgX2RhdGEkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pj4oe1xuICAgICdwdC1CUic6IHtcbiAgICAgICdOTy1SRVNVTFRTJzogJ05lbmh1bSByZXN1bHRhZG8gZW5jb250cmFkbycsXG4gICAgICAnTk8tREFUQSc6ICdTZW0gZGFkb3MnLFxuICAgICAgTE9BRElORzogJ0NhcnJlZ2FuZG8uLi4nLFxuICAgICAgJ0RBVEUtUkFOR0UnOiB7XG4gICAgICAgICdTVEFSVC1EQVRFJzogJ0RhdGEgZGUgaW7DrWNpbycsXG4gICAgICAgICdFTkQtREFURSc6ICdEYXRhIGRlIHTDqXJtaW5vJyxcbiAgICAgICAgSU5WQUxJRDogJ0ludGVydmFsbyBkZSBkYXRhcyBpbnbDoWxpZG8nLFxuICAgICAgICBBQ1RJT05TOiB7XG4gICAgICAgICAgQ0FOQ0VMOiAnQ2FuY2VsYXInLFxuICAgICAgICAgIEFQUExZOiAnQXBsaWNhcidcbiAgICAgICAgfSxcbiAgICAgICAgJ1dFRUstREFZUyc6IFsnRG9tLicsICcywqonLCAnM8KqJywgJzTCqicsICc1wqonLCAnNsKqJywgJ1NhYi4nXSxcbiAgICAgICAgTU9OVEhTOiB7XG4gICAgICAgICAgMDogJ0phbmVpcm8nLFxuICAgICAgICAgIDE6ICdGZXZlcmVpcm8nLFxuICAgICAgICAgIDI6ICdNYXLDp28nLFxuICAgICAgICAgIDM6ICdBYnJpbCcsXG4gICAgICAgICAgNDogJ01haW8nLFxuICAgICAgICAgIDU6ICdKdW5obycsXG4gICAgICAgICAgNjogJ0p1bGhvJyxcbiAgICAgICAgICA3OiAnQWdvc3RvJyxcbiAgICAgICAgICA4OiAnU2V0ZW1icm8nLFxuICAgICAgICAgIDk6ICdPdXR1YnJvJyxcbiAgICAgICAgICAxMDogJ05vdmVtYnJvJyxcbiAgICAgICAgICAxMTogJ0RlemVtYnJvJ1xuICAgICAgICB9LFxuICAgICAgICAnUVVJQ0stQUNUSU9OUyc6IHtcbiAgICAgICAgICBDVVNUT006ICdDdXN0b21pemFkbycsXG4gICAgICAgICAgTEFTVF8zMF9EQVlTOiAnVWx0aW1vcyAzMCBkaWFzJyxcbiAgICAgICAgICBMQVNUXzYwX0RBWVM6ICdVbHRpbW9zIDYwIGRpYXMnLFxuICAgICAgICAgIExBU1RfOTBfREFZUzogJ1VsdGltb3MgOTAgZGlhcycsXG4gICAgICAgICAgTEFTVF82X01PTlRIUzogJ1VsdGltb3MgNiBtZXNlcycsXG4gICAgICAgICAgTEFTVF8xMl9NT05USFM6ICdVbHRpbW9zIDEyIG1lc2VzJyxcbiAgICAgICAgICBORVhUXzMwX0RBWVM6ICdQcsOzeGltb3MgMzAgZGlhcycsXG4gICAgICAgICAgTkVYVF82MF9EQVlTOiAnUHLDs3hpbW9zIDYwIGRpYXMnLFxuICAgICAgICAgIE5FWFRfOTBfREFZUzogJ1Byw7N4aW1vcyA5MCBkaWFzJyxcbiAgICAgICAgICBORVhUXzZfTU9OVEhTOiAnUHLDs3hpbW9zIDYgbWVzZXMnLFxuICAgICAgICAgIE5FWFRfMTJfTU9OVEhTOiAnUHLDs3hpbW9zIDEyIG1lc2VzJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICAnZXMtQ0wnOiB7XG4gICAgICAnTk8tUkVTVUxUUyc6ICdObyBzZSBlbmNvbnRyYXJvbiByZXN1bHRhZG9zJyxcbiAgICAgICdOTy1EQVRBJzogJ1NpbiBkYXRvcycsXG4gICAgICBMT0FESU5HOiAnQ2FyZ2FuZG8uLi4nLFxuICAgICAgJ0RBVEUtUkFOR0UnOiB7XG4gICAgICAgICdTVEFSVC1EQVRFJzogJ0ZlY2hhIGRlIGluaWNpbycsXG4gICAgICAgICdFTkQtREFURSc6ICdGZWNoYSBkZSB0ZXJtaW5vJyxcbiAgICAgICAgSU5WQUxJRDogJ1JhbmdvIGRlIGZlY2hhcyBubyB2w6FsaWRvJyxcbiAgICAgICAgQUNUSU9OUzoge1xuICAgICAgICAgIENBTkNFTDogJ0NhbmNlbGFyJyxcbiAgICAgICAgICBBUFBMWTogJ0FwbGljYXInXG4gICAgICAgIH0sXG4gICAgICAgICdXRUVLLURBWVMnOiBbJ0RvbS4nLCAnTHVuLicsICdNYXIuJywgJ01pw6kuJywgJ0p1ZS4nLCAnVmllLicsICdTYWIuJ10sXG4gICAgICAgIE1PTlRIUzoge1xuICAgICAgICAgIDA6ICdFbmVybycsXG4gICAgICAgICAgMTogJ0ZlYnJlcm8nLFxuICAgICAgICAgIDI6ICdNYXJ6bycsXG4gICAgICAgICAgMzogJ0FicmlsJyxcbiAgICAgICAgICA0OiAnTWF5bycsXG4gICAgICAgICAgNTogJ0p1bmlvJyxcbiAgICAgICAgICA2OiAnSnVsaW8nLFxuICAgICAgICAgIDc6ICdBZ29zdG8nLFxuICAgICAgICAgIDg6ICdTZXB0aWVtYnJlJyxcbiAgICAgICAgICA5OiAnT2N0dWJyZScsXG4gICAgICAgICAgMTA6ICdOb3ZpZW1icmUnLFxuICAgICAgICAgIDExOiAnRGljaWVtYnJlJ1xuICAgICAgICB9LFxuICAgICAgICAnUVVJQ0stQUNUSU9OUyc6IHtcbiAgICAgICAgICBDVVNUT006ICdQZXJzb25hbGl6YWRvJyxcbiAgICAgICAgICBMQVNUXzMwX0RBWVM6ICfDmmx0aW1vcyAzMCBkw61hcycsXG4gICAgICAgICAgTEFTVF82MF9EQVlTOiAnw5psdGltb3MgNjAgZMOtYXMnLFxuICAgICAgICAgIExBU1RfOTBfREFZUzogJ8OabHRpbW9zIDkwIGTDrWFzJyxcbiAgICAgICAgICBMQVNUXzZfTU9OVEhTOiAnw5psdGltb3MgNiBtZXNlcycsXG4gICAgICAgICAgTEFTVF8xMl9NT05USFM6ICfDmmx0aW1vcyAxMiBtZXNlcycsXG4gICAgICAgICAgTkVYVF8zMF9EQVlTOiAnUHLDs3hpbW9zIDMwIGTDrWFzJyxcbiAgICAgICAgICBORVhUXzYwX0RBWVM6ICdQcsOzeGltb3MgNjAgZMOtYXMnLFxuICAgICAgICAgIE5FWFRfOTBfREFZUzogJ1Byw7N4aW1vcyA5MCBkw61hcycsXG4gICAgICAgICAgTkVYVF82X01PTlRIUzogJ1Byw7N4aW1vcyA2IG1lc2VzJyxcbiAgICAgICAgICBORVhUXzEyX01PTlRIUzogJ1Byw7N4aW1vcyAxMiBtZXNlcydcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgJ2VzLU1YJzoge1xuICAgICAgJ05PLVJFU1VMVFMnOiAnTm8gc2UgZW5jb250cmFyb24gcmVzdWx0YWRvcycsXG4gICAgICAnTk8tREFUQSc6ICdTaW4gZGF0b3MnLFxuICAgICAgTE9BRElORzogJ0NhcmdhbmRvLi4uJyxcbiAgICAgICdEQVRFLVJBTkdFJzoge1xuICAgICAgICAnU1RBUlQtREFURSc6ICdGZWNoYSBkZSBpbmljaW8nLFxuICAgICAgICAnRU5ELURBVEUnOiAnRmVjaGEgZGUgdGVybWlubycsXG4gICAgICAgIElOVkFMSUQ6ICdSYW5nbyBkZSBmZWNoYXMgbm8gdsOhbGlkbycsXG4gICAgICAgIEFDVElPTlM6IHtcbiAgICAgICAgICBDQU5DRUw6ICdDYW5jZWxhcicsXG4gICAgICAgICAgQVBQTFk6ICdBcGxpY2FyJ1xuICAgICAgICB9LFxuICAgICAgICAnV0VFSy1EQVlTJzogWydEb20uJywgJ0x1bi4nLCAnTWFyLicsICdNacOpLicsICdKdWUuJywgJ1ZpZS4nLCAnU2FiLiddLFxuICAgICAgICBNT05USFM6IHtcbiAgICAgICAgICAwOiAnRW5lcm8nLFxuICAgICAgICAgIDE6ICdGZWJyZXJvJyxcbiAgICAgICAgICAyOiAnTWFyem8nLFxuICAgICAgICAgIDM6ICdBYnJpbCcsXG4gICAgICAgICAgNDogJ01heW8nLFxuICAgICAgICAgIDU6ICdKdW5pbycsXG4gICAgICAgICAgNjogJ0p1bGlvJyxcbiAgICAgICAgICA3OiAnQWdvc3RvJyxcbiAgICAgICAgICA4OiAnU2VwdGllbWJyZScsXG4gICAgICAgICAgOTogJ09jdHVicmUnLFxuICAgICAgICAgIDEwOiAnTm92aWVtYnJlJyxcbiAgICAgICAgICAxMTogJ0RpY2llbWJyZSdcbiAgICAgICAgfSxcbiAgICAgICAgJ1FVSUNLLUFDVElPTlMnOiB7XG4gICAgICAgICAgQ1VTVE9NOiAnUGVyc29uYWxpemFkbycsXG4gICAgICAgICAgTEFTVF8zMF9EQVlTOiAnw5psdGltb3MgMzAgZMOtYXMnLFxuICAgICAgICAgIExBU1RfNjBfREFZUzogJ8OabHRpbW9zIDYwIGTDrWFzJyxcbiAgICAgICAgICBMQVNUXzkwX0RBWVM6ICfDmmx0aW1vcyA5MCBkw61hcycsXG4gICAgICAgICAgTEFTVF82X01PTlRIUzogJ8OabHRpbW9zIDYgbWVzZXMnLFxuICAgICAgICAgIExBU1RfMTJfTU9OVEhTOiAnw5psdGltb3MgMTIgbWVzZXMnLFxuICAgICAgICAgIE5FWFRfMzBfREFZUzogJ1Byw7N4aW1vcyAzMCBkw61hcycsXG4gICAgICAgICAgTkVYVF82MF9EQVlTOiAnUHLDs3hpbW9zIDYwIGTDrWFzJyxcbiAgICAgICAgICBORVhUXzkwX0RBWVM6ICdQcsOzeGltb3MgOTAgZMOtYXMnLFxuICAgICAgICAgIE5FWFRfNl9NT05USFM6ICdQcsOzeGltb3MgNiBtZXNlcycsXG4gICAgICAgICAgTkVYVF8xMl9NT05USFM6ICdQcsOzeGltb3MgMTIgbWVzZXMnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgICdlbi1VUyc6IHtcbiAgICAgICdOTy1SRVNVTFRTJzogJ05vIHJlc3VsdHMgZm91bmQnLFxuICAgICAgJ05PLURBVEEnOiAnTm8gZGF0YScsXG4gICAgICBMT0FESU5HOiAnTG9hZGluZy4uLicsXG4gICAgICAnREFURS1SQU5HRSc6IHtcbiAgICAgICAgJ1NUQVJULURBVEUnOiAnU3RhcnQgZGF0ZScsXG4gICAgICAgICdFTkQtREFURSc6ICdFbmQgRGF0ZScsXG4gICAgICAgIElOVkFMSUQ6ICdJbnZhbGlkIGRhdGUgcmFuZ2UnLFxuICAgICAgICBBQ1RJT05TOiB7XG4gICAgICAgICAgQ0FOQ0VMOiAnQ2FuY2VsJyxcbiAgICAgICAgICBBUFBMWTogJ0FwcGx5J1xuICAgICAgICB9LFxuICAgICAgICAnV0VFSy1EQVlTJzogWydTdW4uJywgJ01vbi4nLCAnVHVlLicsICdXZWQuJywgJ1RodS4nLCAnRnJpLicsICdTYXQuJ10sXG4gICAgICAgIE1PTlRIUzoge1xuICAgICAgICAgIDA6ICdKYW51YXJ5JyxcbiAgICAgICAgICAxOiAnRmVicnVhcnknLFxuICAgICAgICAgIDI6ICdNYXJjaCcsXG4gICAgICAgICAgMzogJ0FwcmlsJyxcbiAgICAgICAgICA0OiAnTWF5JyxcbiAgICAgICAgICA1OiAnSnVuZScsXG4gICAgICAgICAgNjogJ0p1bHknLFxuICAgICAgICAgIDc6ICdBdWd1c3QnLFxuICAgICAgICAgIDg6ICdTZXB0ZW1iZXInLFxuICAgICAgICAgIDk6ICdPY3RvYmVyJyxcbiAgICAgICAgICAxMDogJ05vdmVtYmVyJyxcbiAgICAgICAgICAxMTogJ0RlY2VtYmVyJ1xuICAgICAgICB9LFxuICAgICAgICAnUVVJQ0stQUNUSU9OUyc6IHtcbiAgICAgICAgICBDVVNUT006ICdDdXN0b20nLFxuICAgICAgICAgIExBU1RfMzBfREFZUzogJ0xhc3QgMzAgZGF5cycsXG4gICAgICAgICAgTEFTVF82MF9EQVlTOiAnTGFzdCA2MCBkYXlzJyxcbiAgICAgICAgICBMQVNUXzkwX0RBWVM6ICdMYXN0IDkwIGRheXMnLFxuICAgICAgICAgIExBU1RfNl9NT05USFM6ICdMYXN0IDYgbW9udGhzJyxcbiAgICAgICAgICBMQVNUXzEyX01PTlRIUzogJ0xhc3QgMTIgbW9udGhzJyxcbiAgICAgICAgICBORVhUXzMwX0RBWVM6ICdOZXh0IDMwIGRheXMnLFxuICAgICAgICAgIE5FWFRfNjBfREFZUzogJ05leHQgNjAgZGF5cycsXG4gICAgICAgICAgTkVYVF85MF9EQVlTOiAnTmV4dCA5MCBkYXlzJyxcbiAgICAgICAgICBORVhUXzZfTU9OVEhTOiAnTmV4dCA2IG1vbnRocycsXG4gICAgICAgICAgTkVYVF8xMl9NT05USFM6ICdOZXh0IDEyIG1vbnRocydcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgdG9rZW5TdWJqZWN0ID0gaW5qZWN0KE1PTktFWV9JMThOX1dSQVBQRVIsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gICAgdG9rZW5TdWJqZWN0Py5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVXcmFwcGVyVmFsdWVzKHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlV3JhcHBlclZhbHVlcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxvY2FsZSA9IHRoaXMuX2xvY2FsZUlkIHx8ICdwdC1CUic7XG4gICAgICBjb25zdCB3cmFwcGVkRGF0YSA9IEpTT04ucGFyc2UodmFsdWUpO1xuICAgICAgY29uc3QgY3VycmVudERhdGEgPSB0aGlzLl9kYXRhJC52YWx1ZTtcblxuICAgICAgY29uc3QgdXBkYXRlZCA9IHtcbiAgICAgICAgLi4uY3VycmVudERhdGEsXG4gICAgICAgIFtsb2NhbGVdOiB7XG4gICAgICAgICAgLi4uY3VycmVudERhdGFbbG9jYWxlXSxcbiAgICAgICAgICAuLi53cmFwcGVkRGF0YVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kYXRhJC5uZXh0KHVwZGF0ZWQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE1vbmtleURpY3Rpb25hcnlTZXJ2aWNlIC0gaGFuZGxlV3JhcHBlclZhbHVlcyAtPiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0KGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9jYWxlID0gdGhpcy5fbG9jYWxlSWQgfHwgJ3B0LUJSJztcbiAgICByZXR1cm4gdGhpcy5fZGF0YSQucGlwZShcbiAgICAgIG1hcCgoZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gZGF0YVtsb2NhbGVdPy5ba2V5XSA/PyBudWxsO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=