valtech-components 2.0.359 → 2.0.360

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.
@@ -1,5 +1,6 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, Input } from '@angular/core';
2
+ import { Component, HostListener, inject, Input } from '@angular/core';
3
+ import { LangService } from '../../../services/lang-provider/lang-provider.service';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  /**
@@ -8,7 +9,16 @@ import * as i1 from "@angular/common";
8
9
  * Displays an image with various display options (bordered, shaded, dark, etc).
9
10
  * Now includes a container wrapper for better flexbox support and alignment options.
10
11
  *
11
- * @example
12
+ * NEW: Optional preview mode with full-screen zoom capabilities:
13
+ * - Click to open full-screen preview (when previewMode is enabled)
14
+ * - Pinch-to-zoom on mobile devices
15
+ * - Mouse wheel zoom on desktop
16
+ * - Pan/drag to navigate zoomed images
17
+ * - Zoom controls with buttons
18
+ * - Keyboard shortcuts (Esc to close, +/- to zoom, 0 to reset)
19
+ * - Touch-friendly interface with gesture support
20
+ *
21
+ * @example Basic usage:
12
22
  * <val-image [props]="{
13
23
  * src: 'url',
14
24
  * alt: 'desc',
@@ -19,11 +29,41 @@ import * as i1 from "@angular/common";
19
29
  * caption: 'Image description'
20
30
  * }"></val-image>
21
31
  *
22
- * @input props: ImageMetadata - Configuration for the image (src, alt, size, mode, alignment, caption, etc.)
32
+ * @example With preview mode:
33
+ * <val-image [props]="{
34
+ * src: 'url',
35
+ * alt: 'desc',
36
+ * previewMode: true,
37
+ * bordered: true,
38
+ * alignment: 'center'
39
+ * }"></val-image>
40
+ *
41
+ * @input props: ImageMetadata - Configuration for the image (src, alt, size, mode, alignment, caption, previewMode, etc.)
23
42
  */
24
43
  export class ImageComponent {
25
44
  constructor() {
26
45
  this.available = true;
46
+ // Preview mode properties
47
+ this.isPreviewOpen = false;
48
+ this.zoomLevel = 1;
49
+ this.minZoom = 0.5;
50
+ this.maxZoom = 5;
51
+ this.panX = 0;
52
+ this.panY = 0;
53
+ // Touch and mouse interaction properties
54
+ this.isDragging = false;
55
+ this.lastPanX = 0;
56
+ this.lastPanY = 0;
57
+ this.startX = 0;
58
+ this.startY = 0;
59
+ // Touch gesture properties
60
+ this.initialDistance = 0;
61
+ this.initialZoom = 1;
62
+ this.touches = [];
63
+ // Lang service
64
+ this.langService = inject(LangService);
65
+ // Math for template
66
+ this.Math = Math;
27
67
  }
28
68
  ngOnInit() {
29
69
  // Set default values
@@ -42,8 +82,144 @@ export class ImageComponent {
42
82
  this.available = true;
43
83
  }, 100);
44
84
  }
85
+ // Preview mode methods
86
+ openPreview() {
87
+ if (!this.props.previewMode)
88
+ return;
89
+ this.isPreviewOpen = true;
90
+ this.resetZoom();
91
+ document.body.style.overflow = 'hidden'; // Prevent background scrolling
92
+ }
93
+ closePreview() {
94
+ this.isPreviewOpen = false;
95
+ document.body.style.overflow = ''; // Restore scrolling
96
+ }
97
+ // Zoom methods
98
+ zoomIn() {
99
+ if (this.zoomLevel < this.maxZoom) {
100
+ this.zoomLevel = Math.min(this.zoomLevel * 1.2, this.maxZoom);
101
+ }
102
+ }
103
+ zoomOut() {
104
+ if (this.zoomLevel > this.minZoom) {
105
+ this.zoomLevel = Math.max(this.zoomLevel / 1.2, this.minZoom);
106
+ // Reset pan if zoomed out to 1x or less
107
+ if (this.zoomLevel <= 1) {
108
+ this.panX = 0;
109
+ this.panY = 0;
110
+ }
111
+ }
112
+ }
113
+ resetZoom() {
114
+ this.zoomLevel = 1;
115
+ this.panX = 0;
116
+ this.panY = 0;
117
+ }
118
+ // Mouse events
119
+ onMouseDown(event) {
120
+ if (this.zoomLevel <= 1)
121
+ return;
122
+ this.isDragging = true;
123
+ this.startX = event.clientX - this.panX;
124
+ this.startY = event.clientY - this.panY;
125
+ event.preventDefault();
126
+ }
127
+ onMouseMove(event) {
128
+ if (!this.isDragging || this.zoomLevel <= 1)
129
+ return;
130
+ this.panX = event.clientX - this.startX;
131
+ this.panY = event.clientY - this.startY;
132
+ event.preventDefault();
133
+ }
134
+ onMouseUp(event) {
135
+ this.isDragging = false;
136
+ }
137
+ // Touch events for mobile
138
+ onTouchStart(event) {
139
+ event.preventDefault();
140
+ this.touches = Array.from(event.touches);
141
+ if (this.touches.length === 1) {
142
+ // Single touch - start dragging
143
+ if (this.zoomLevel > 1) {
144
+ this.isDragging = true;
145
+ this.startX = this.touches[0].clientX - this.panX;
146
+ this.startY = this.touches[0].clientY - this.panY;
147
+ }
148
+ }
149
+ else if (this.touches.length === 2) {
150
+ // Two touches - start pinch zoom
151
+ this.isDragging = false;
152
+ this.initialDistance = this.getDistance(this.touches[0], this.touches[1]);
153
+ this.initialZoom = this.zoomLevel;
154
+ }
155
+ }
156
+ onTouchMove(event) {
157
+ event.preventDefault();
158
+ this.touches = Array.from(event.touches);
159
+ if (this.touches.length === 1 && this.isDragging && this.zoomLevel > 1) {
160
+ // Single touch - drag
161
+ this.panX = this.touches[0].clientX - this.startX;
162
+ this.panY = this.touches[0].clientY - this.startY;
163
+ }
164
+ else if (this.touches.length === 2) {
165
+ // Two touches - pinch zoom
166
+ const currentDistance = this.getDistance(this.touches[0], this.touches[1]);
167
+ const scale = currentDistance / this.initialDistance;
168
+ this.zoomLevel = Math.min(Math.max(this.initialZoom * scale, this.minZoom), this.maxZoom);
169
+ // Reset pan if zoomed out to 1x or less
170
+ if (this.zoomLevel <= 1) {
171
+ this.panX = 0;
172
+ this.panY = 0;
173
+ }
174
+ }
175
+ }
176
+ onTouchEnd(event) {
177
+ this.isDragging = false;
178
+ this.touches = Array.from(event.touches);
179
+ }
180
+ // Mouse wheel zoom
181
+ onWheel(event) {
182
+ event.preventDefault();
183
+ const delta = event.deltaY > 0 ? -1 : 1;
184
+ const zoomFactor = 1 + delta * 0.1;
185
+ this.zoomLevel = Math.min(Math.max(this.zoomLevel * zoomFactor, this.minZoom), this.maxZoom);
186
+ // Reset pan if zoomed out to 1x or less
187
+ if (this.zoomLevel <= 1) {
188
+ this.panX = 0;
189
+ this.panY = 0;
190
+ }
191
+ }
192
+ // Helper methods
193
+ getDistance(touch1, touch2) {
194
+ const dx = touch1.clientX - touch2.clientX;
195
+ const dy = touch1.clientY - touch2.clientY;
196
+ return Math.sqrt(dx * dx + dy * dy);
197
+ }
198
+ // Keyboard shortcuts
199
+ onKeyDown(event) {
200
+ if (!this.isPreviewOpen)
201
+ return;
202
+ switch (event.key) {
203
+ case 'Escape':
204
+ this.closePreview();
205
+ break;
206
+ case '+':
207
+ case '=':
208
+ event.preventDefault();
209
+ this.zoomIn();
210
+ break;
211
+ case '-':
212
+ event.preventDefault();
213
+ this.zoomOut();
214
+ break;
215
+ case '0':
216
+ event.preventDefault();
217
+ this.resetZoom();
218
+ break;
219
+ }
220
+ }
45
221
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ImageComponent, isStandalone: true, selector: "val-image", inputs: { props: "props" }, ngImport: i0, template: `
222
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ImageComponent, isStandalone: true, selector: "val-image", inputs: { props: "props" }, host: { listeners: { "document:keydown": "onKeyDown($event)" } }, ngImport: i0, template: `
47
223
  <figure
48
224
  class="val-image-container"
49
225
  [class]="props.containerClass"
@@ -60,7 +236,11 @@ export class ImageComponent {
60
236
  @if (props.src.includes('--')) {
61
237
  <img
62
238
  class="val-image"
63
- [ngClass]="[props.mode, !props.width ? props.size : '']"
239
+ [ngClass]="[
240
+ props.mode,
241
+ !props.width ? props.size : '',
242
+ props.previewMode ? 'val-image--preview-enabled' : '',
243
+ ]"
64
244
  [ngStyle]="{
65
245
  content: 'var(' + props.src + ')',
66
246
  }"
@@ -73,11 +253,16 @@ export class ImageComponent {
73
253
  [style.width.rem]="props.width"
74
254
  [style.max-width.rem]="props.width"
75
255
  [style.height.px]="props.height"
256
+ (click)="props.previewMode ? openPreview() : null"
76
257
  />
77
258
  } @else {
78
259
  <img
79
260
  class="val-image"
80
- [ngClass]="[props.mode, !props.width ? props.size : '']"
261
+ [ngClass]="[
262
+ props.mode,
263
+ !props.width ? props.size : '',
264
+ props.previewMode ? 'val-image--preview-enabled' : '',
265
+ ]"
81
266
  [class.bordered]="props.bordered"
82
267
  [class.shaded]="props.shaded"
83
268
  [class.dark]="props.dark"
@@ -88,6 +273,7 @@ export class ImageComponent {
88
273
  [style.width.rem]="props.width"
89
274
  [style.max-width.rem]="props.width"
90
275
  [style.height.px]="props.height"
276
+ (click)="props.previewMode ? openPreview() : null"
91
277
  />
92
278
  }
93
279
  </div>
@@ -105,7 +291,78 @@ export class ImageComponent {
105
291
  </figcaption>
106
292
  }
107
293
  </figure>
108
- `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.center{margin:0 auto}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}@media (max-width: 768px){.val-image .val-image-wrapper.small{width:40%}.val-image .val-image-wrapper.medium{width:60%}.val-image .val-image-wrapper.large{width:80%}.val-image .val-image-wrapper.xlarge{width:100%}}.val-image.small{width:30%}.val-image.medium{width:50%}.val-image.large{width:70%}.val-image.xlarge{width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
294
+
295
+ <!-- Modal de previsualización -->
296
+ @if (isPreviewOpen) {
297
+ <div class="val-image-preview-modal" (click)="closePreview()">
298
+ <div class="val-image-preview-container">
299
+ <!-- Botón de cerrar -->
300
+ <button
301
+ class="val-image-preview-close"
302
+ (click)="closePreview()"
303
+ [attr.aria-label]="langService.getText('ImageComponent', 'close')"
304
+ >
305
+ <span>&times;</span>
306
+ </button>
307
+
308
+ <!-- Controles de zoom -->
309
+ <div class="val-image-preview-controls">
310
+ <button
311
+ class="val-image-preview-zoom-btn"
312
+ (click)="zoomOut()"
313
+ [disabled]="zoomLevel <= minZoom"
314
+ [attr.aria-label]="langService.getText('ImageComponent', 'zoomOut')"
315
+ >
316
+ <span>−</span>
317
+ </button>
318
+ <span class="val-image-preview-zoom-level">{{ Math.round(zoomLevel * 100) }}%</span>
319
+ <button
320
+ class="val-image-preview-zoom-btn"
321
+ (click)="zoomIn()"
322
+ [disabled]="zoomLevel >= maxZoom"
323
+ [attr.aria-label]="langService.getText('ImageComponent', 'zoomIn')"
324
+ >
325
+ <span>+</span>
326
+ </button>
327
+ <button
328
+ class="val-image-preview-reset-btn"
329
+ (click)="resetZoom()"
330
+ [attr.aria-label]="langService.getText('ImageComponent', 'resetZoom')"
331
+ >
332
+ <span>⌂</span>
333
+ </button>
334
+ </div>
335
+
336
+ <!-- Imagen ampliada -->
337
+ <div
338
+ class="val-image-preview-viewport"
339
+ (click)="$event.stopPropagation()"
340
+ (touchstart)="onTouchStart($event)"
341
+ (touchmove)="onTouchMove($event)"
342
+ (touchend)="onTouchEnd($event)"
343
+ (wheel)="onWheel($event)"
344
+ (mousedown)="onMouseDown($event)"
345
+ (mousemove)="onMouseMove($event)"
346
+ (mouseup)="onMouseUp($event)"
347
+ (mouseleave)="onMouseUp($event)"
348
+ >
349
+ <img
350
+ #previewImage
351
+ class="val-image-preview-img"
352
+ [src]="props.src.includes('--') ? null : props.src"
353
+ [ngStyle]="{
354
+ content: props.src.includes('--') ? 'var(' + props.src + ')' : null,
355
+ transform: 'scale(' + zoomLevel + ') translate(' + panX + 'px, ' + panY + 'px)',
356
+ cursor: isDragging ? 'grabbing' : zoomLevel > 1 ? 'grab' : 'default',
357
+ }"
358
+ [alt]="props.alt"
359
+ draggable="false"
360
+ />
361
+ </div>
362
+ </div>
363
+ </div>
364
+ }
365
+ `, isInline: true, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.center{margin:0 auto}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}@media (max-width: 768px){.val-image .val-image-wrapper.small{width:40%}.val-image .val-image-wrapper.medium{width:60%}.val-image .val-image-wrapper.large{width:80%}.val-image .val-image-wrapper.xlarge{width:100%}}.val-image.small{width:30%}.val-image.medium{width:50%}.val-image.large{width:70%}.val-image.xlarge{width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}.val-image--preview-enabled{cursor:pointer;transition:opacity .2s ease,transform .2s ease}.val-image--preview-enabled:hover{opacity:.9;transform:scale(1.02)}.val-image-preview-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000f2;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:10000;display:flex;align-items:center;justify-content:center;animation:fadeIn .3s ease-out}.val-image-preview-container{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.val-image-preview-close{position:absolute;top:20px;right:20px;z-index:10001;background:#ffffff1a;border:none;color:#fff;width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:24px;font-weight:700;transition:background .2s ease}.val-image-preview-close:hover{background:#fff3}.val-image-preview-close span{line-height:1}.val-image-preview-controls{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:10001;display:flex;align-items:center;gap:10px;background:#000000b3;padding:10px 20px;border-radius:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.val-image-preview-zoom-btn,.val-image-preview-reset-btn{background:#ffffff1a;border:none;color:#fff;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:20px;font-weight:700;transition:all .2s ease}.val-image-preview-zoom-btn:hover:not(:disabled),.val-image-preview-reset-btn:hover:not(:disabled){background:#fff3;transform:scale(1.1)}.val-image-preview-zoom-btn:disabled,.val-image-preview-reset-btn:disabled{opacity:.4;cursor:not-allowed}.val-image-preview-zoom-btn span,.val-image-preview-reset-btn span{line-height:1}.val-image-preview-zoom-level{color:#fff;font-size:14px;font-weight:600;min-width:50px;text-align:center}.val-image-preview-viewport{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;touch-action:none}.val-image-preview-img{max-width:90vw;max-height:90vh;object-fit:contain;transition:transform .1s ease-out;transform-origin:center center;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width: 768px){.val-image-preview-close{top:10px;right:10px;width:40px;height:40px;font-size:20px}.val-image-preview-controls{bottom:10px;padding:8px 16px}.val-image-preview-zoom-btn,.val-image-preview-reset-btn{width:35px;height:35px;font-size:18px}.val-image-preview-zoom-level{font-size:12px;min-width:40px}.val-image-preview-img{max-width:95vw;max-height:85vh}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
109
366
  }
110
367
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ImageComponent, decorators: [{
111
368
  type: Component,
@@ -126,7 +383,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
126
383
  @if (props.src.includes('--')) {
127
384
  <img
128
385
  class="val-image"
129
- [ngClass]="[props.mode, !props.width ? props.size : '']"
386
+ [ngClass]="[
387
+ props.mode,
388
+ !props.width ? props.size : '',
389
+ props.previewMode ? 'val-image--preview-enabled' : '',
390
+ ]"
130
391
  [ngStyle]="{
131
392
  content: 'var(' + props.src + ')',
132
393
  }"
@@ -139,11 +400,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
139
400
  [style.width.rem]="props.width"
140
401
  [style.max-width.rem]="props.width"
141
402
  [style.height.px]="props.height"
403
+ (click)="props.previewMode ? openPreview() : null"
142
404
  />
143
405
  } @else {
144
406
  <img
145
407
  class="val-image"
146
- [ngClass]="[props.mode, !props.width ? props.size : '']"
408
+ [ngClass]="[
409
+ props.mode,
410
+ !props.width ? props.size : '',
411
+ props.previewMode ? 'val-image--preview-enabled' : '',
412
+ ]"
147
413
  [class.bordered]="props.bordered"
148
414
  [class.shaded]="props.shaded"
149
415
  [class.dark]="props.dark"
@@ -154,6 +420,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
154
420
  [style.width.rem]="props.width"
155
421
  [style.max-width.rem]="props.width"
156
422
  [style.height.px]="props.height"
423
+ (click)="props.previewMode ? openPreview() : null"
157
424
  />
158
425
  }
159
426
  </div>
@@ -171,8 +438,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
171
438
  </figcaption>
172
439
  }
173
440
  </figure>
174
- `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.center{margin:0 auto}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}@media (max-width: 768px){.val-image .val-image-wrapper.small{width:40%}.val-image .val-image-wrapper.medium{width:60%}.val-image .val-image-wrapper.large{width:80%}.val-image .val-image-wrapper.xlarge{width:100%}}.val-image.small{width:30%}.val-image.medium{width:50%}.val-image.large{width:70%}.val-image.xlarge{width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}\n"] }]
441
+
442
+ <!-- Modal de previsualización -->
443
+ @if (isPreviewOpen) {
444
+ <div class="val-image-preview-modal" (click)="closePreview()">
445
+ <div class="val-image-preview-container">
446
+ <!-- Botón de cerrar -->
447
+ <button
448
+ class="val-image-preview-close"
449
+ (click)="closePreview()"
450
+ [attr.aria-label]="langService.getText('ImageComponent', 'close')"
451
+ >
452
+ <span>&times;</span>
453
+ </button>
454
+
455
+ <!-- Controles de zoom -->
456
+ <div class="val-image-preview-controls">
457
+ <button
458
+ class="val-image-preview-zoom-btn"
459
+ (click)="zoomOut()"
460
+ [disabled]="zoomLevel <= minZoom"
461
+ [attr.aria-label]="langService.getText('ImageComponent', 'zoomOut')"
462
+ >
463
+ <span>−</span>
464
+ </button>
465
+ <span class="val-image-preview-zoom-level">{{ Math.round(zoomLevel * 100) }}%</span>
466
+ <button
467
+ class="val-image-preview-zoom-btn"
468
+ (click)="zoomIn()"
469
+ [disabled]="zoomLevel >= maxZoom"
470
+ [attr.aria-label]="langService.getText('ImageComponent', 'zoomIn')"
471
+ >
472
+ <span>+</span>
473
+ </button>
474
+ <button
475
+ class="val-image-preview-reset-btn"
476
+ (click)="resetZoom()"
477
+ [attr.aria-label]="langService.getText('ImageComponent', 'resetZoom')"
478
+ >
479
+ <span>⌂</span>
480
+ </button>
481
+ </div>
482
+
483
+ <!-- Imagen ampliada -->
484
+ <div
485
+ class="val-image-preview-viewport"
486
+ (click)="$event.stopPropagation()"
487
+ (touchstart)="onTouchStart($event)"
488
+ (touchmove)="onTouchMove($event)"
489
+ (touchend)="onTouchEnd($event)"
490
+ (wheel)="onWheel($event)"
491
+ (mousedown)="onMouseDown($event)"
492
+ (mousemove)="onMouseMove($event)"
493
+ (mouseup)="onMouseUp($event)"
494
+ (mouseleave)="onMouseUp($event)"
495
+ >
496
+ <img
497
+ #previewImage
498
+ class="val-image-preview-img"
499
+ [src]="props.src.includes('--') ? null : props.src"
500
+ [ngStyle]="{
501
+ content: props.src.includes('--') ? 'var(' + props.src + ')' : null,
502
+ transform: 'scale(' + zoomLevel + ') translate(' + panX + 'px, ' + panY + 'px)',
503
+ cursor: isDragging ? 'grabbing' : zoomLevel > 1 ? 'grab' : 'default',
504
+ }"
505
+ [alt]="props.alt"
506
+ draggable="false"
507
+ />
508
+ </div>
509
+ </div>
510
+ </div>
511
+ }
512
+ `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.val-image-container{margin:0;padding:0;max-width:100%}.val-image-container--left{margin-right:auto;text-align:left}.val-image-container--center{margin-left:auto;margin-right:auto;text-align:center}.val-image-container--right{margin-left:auto;text-align:right}.val-image-wrapper{display:inline-block;position:relative}.val-image{width:100%;height:auto;display:block;opacity:1;max-width:100%}.val-image.center{margin:0 auto}.val-image.rounded{border-radius:.5rem}.val-image.circular{border-radius:50%;aspect-ratio:1;object-fit:cover}.val-image.box{border-radius:0}.val-image.bordered{border:.0625rem solid var(--ion-color-medium)}.val-image.shaded{box-shadow:.1875rem .625rem .5rem #1219541a}@media (prefers-color-scheme: dark){.val-image.dark{filter:invert(1)}}.val-image.limited{max-width:100%}@media (max-width: 768px){.val-image .val-image-wrapper.small{width:40%}.val-image .val-image-wrapper.medium{width:60%}.val-image .val-image-wrapper.large{width:80%}.val-image .val-image-wrapper.xlarge{width:100%}}.val-image.small{width:30%}.val-image.medium{width:50%}.val-image.large{width:70%}.val-image.xlarge{width:100%}.val-image-caption{margin-top:.5rem;color:var(--ion-color-medium-shade, #666);font-style:italic;line-height:1.4}.val-image-caption--small{font-size:.75rem}.val-image-caption--medium{font-size:.875rem}.val-image-caption--large{font-size:1rem}.val-image.visible{animation:appearance ease-in 1s forwards}@keyframes appearance{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.val-image-container{flex-shrink:0;align-self:flex-start}.flexbox-container .val-image-container--left{align-self:flex-start}.flexbox-container .val-image-container--center{align-self:center}.flexbox-container .val-image-container--right{align-self:flex-end}.val-image--preview-enabled{cursor:pointer;transition:opacity .2s ease,transform .2s ease}.val-image--preview-enabled:hover{opacity:.9;transform:scale(1.02)}.val-image-preview-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000f2;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:10000;display:flex;align-items:center;justify-content:center;animation:fadeIn .3s ease-out}.val-image-preview-container{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.val-image-preview-close{position:absolute;top:20px;right:20px;z-index:10001;background:#ffffff1a;border:none;color:#fff;width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:24px;font-weight:700;transition:background .2s ease}.val-image-preview-close:hover{background:#fff3}.val-image-preview-close span{line-height:1}.val-image-preview-controls{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:10001;display:flex;align-items:center;gap:10px;background:#000000b3;padding:10px 20px;border-radius:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.val-image-preview-zoom-btn,.val-image-preview-reset-btn{background:#ffffff1a;border:none;color:#fff;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:20px;font-weight:700;transition:all .2s ease}.val-image-preview-zoom-btn:hover:not(:disabled),.val-image-preview-reset-btn:hover:not(:disabled){background:#fff3;transform:scale(1.1)}.val-image-preview-zoom-btn:disabled,.val-image-preview-reset-btn:disabled{opacity:.4;cursor:not-allowed}.val-image-preview-zoom-btn span,.val-image-preview-reset-btn span{line-height:1}.val-image-preview-zoom-level{color:#fff;font-size:14px;font-weight:600;min-width:50px;text-align:center}.val-image-preview-viewport{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;touch-action:none}.val-image-preview-img{max-width:90vw;max-height:90vh;object-fit:contain;transition:transform .1s ease-out;transform-origin:center center;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media (max-width: 768px){.val-image-preview-close{top:10px;right:10px;width:40px;height:40px;font-size:20px}.val-image-preview-controls{bottom:10px;padding:8px 16px}.val-image-preview-zoom-btn,.val-image-preview-reset-btn{width:35px;height:35px;font-size:18px}.val-image-preview-zoom-level{font-size:12px;min-width:40px}.val-image-preview-img{max-width:95vw;max-height:85vh}}\n"] }]
175
513
  }], ctorParameters: () => [], propDecorators: { props: [{
176
514
  type: Input
515
+ }], onKeyDown: [{
516
+ type: HostListener,
517
+ args: ['document:keydown', ['$event']]
177
518
  }] } });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7QUF3RXpEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFNLE9BQU8sY0FBYztJQU16QjtRQUZBLGNBQVMsR0FBWSxJQUFJLENBQUM7SUFFWCxDQUFDO0lBRWhCLFFBQVE7UUFDTixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDcEMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzsrR0F6QlUsY0FBYzttR0FBZCxjQUFjLGlHQXBGZjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4RFQsdXpJQS9EUyxZQUFZOzs0RkFxRlgsY0FBYztrQkF4RjFCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThEVDt3REF3QkQsS0FBSztzQkFESixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtaW1hZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmlndXJlXG4gICAgICBjbGFzcz1cInZhbC1pbWFnZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNvbnRhaW5lckNsYXNzXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWxlZnQnOiBwcm9wcy5hbGlnbm1lbnQgPT09ICdsZWZ0JyxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWNlbnRlcic6IHByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcicgfHwgIXByb3BzLmFsaWdubWVudCxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLXJpZ2h0JzogcHJvcHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgICAgfVwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIGRpc3BsYXk6IHByb3BzLmZsZXggPyAnZmxleCcgOiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtaW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICBAaWYgKHByb3BzLnNyYy5pbmNsdWRlcygnLS0nKSkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltwcm9wcy5tb2RlLCAhcHJvcHMud2lkdGggPyBwcm9wcy5zaXplIDogJyddXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgY29udGVudDogJ3ZhcignICsgcHJvcHMuc3JjICsgJyknLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgICAgICAgW2NsYXNzLnNoYWRlZF09XCJwcm9wcy5zaGFkZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmRhcmtdPVwicHJvcHMuZGFya1wiXG4gICAgICAgICAgICBbY2xhc3MubGltaXRlZF09XCJwcm9wcy5saW1pdGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5jZW50ZXJdPVwicHJvcHMuYWxpZ25tZW50ID09PSAnY2VudGVyJ1wiXG4gICAgICAgICAgICBbYWx0XT1cInByb3BzLmFsdFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBjbGFzcz1cInZhbC1pbWFnZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJbcHJvcHMubW9kZSwgIXByb3BzLndpZHRoID8gcHJvcHMuc2l6ZSA6ICcnXVwiXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgICAgICAgW2NsYXNzLnNoYWRlZF09XCJwcm9wcy5zaGFkZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmRhcmtdPVwicHJvcHMuZGFya1wiXG4gICAgICAgICAgICBbY2xhc3MubGltaXRlZF09XCJwcm9wcy5saW1pdGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5jZW50ZXJdPVwicHJvcHMuYWxpZ25tZW50ID09PSAnY2VudGVyJ1wiXG4gICAgICAgICAgICBbc3JjXT1cInByb3BzLnNyY1wiXG4gICAgICAgICAgICBbYWx0XT1cInByb3BzLmFsdFwiXG4gICAgICAgICAgICBbc3R5bGUud2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucmVtXT1cInByb3BzLndpZHRoXCJcbiAgICAgICAgICAgIFtzdHlsZS5oZWlnaHQucHhdPVwicHJvcHMuaGVpZ2h0XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChwcm9wcy5jYXB0aW9uKSB7XG4gICAgICAgIDxmaWdjYXB0aW9uXG4gICAgICAgICAgY2xhc3M9XCJ2YWwtaW1hZ2UtY2FwdGlvblwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ3ZhbC1pbWFnZS1jYXB0aW9uLS1zbWFsbCc6IHByb3BzLmNhcHRpb25TaXplID09PSAnc21hbGwnLFxuICAgICAgICAgICAgJ3ZhbC1pbWFnZS1jYXB0aW9uLS1tZWRpdW0nOiBwcm9wcy5jYXB0aW9uU2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLmNhcHRpb25TaXplLFxuICAgICAgICAgICAgJ3ZhbC1pbWFnZS1jYXB0aW9uLS1sYXJnZSc6IHByb3BzLmNhcHRpb25TaXplID09PSAnbGFyZ2UnLFxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvcHMuY2FwdGlvbiB9fVxuICAgICAgICA8L2ZpZ2NhcHRpb24+XG4gICAgICB9XG4gICAgPC9maWd1cmU+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtaW1hZ2VcbiAqXG4gKiBEaXNwbGF5cyBhbiBpbWFnZSB3aXRoIHZhcmlvdXMgZGlzcGxheSBvcHRpb25zIChib3JkZXJlZCwgc2hhZGVkLCBkYXJrLCBldGMpLlxuICogTm93IGluY2x1ZGVzIGEgY29udGFpbmVyIHdyYXBwZXIgZm9yIGJldHRlciBmbGV4Ym94IHN1cHBvcnQgYW5kIGFsaWdubWVudCBvcHRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWltYWdlIFtwcm9wc109XCJ7XG4gKiAgIHNyYzogJ3VybCcsXG4gKiAgIGFsdDogJ2Rlc2MnLFxuICogICB3aWR0aDogMTAwLFxuICogICBoZWlnaHQ6IDEwMCxcbiAqICAgYm9yZGVyZWQ6IHRydWUsXG4gKiAgIGFsaWdubWVudDogJ2NlbnRlcicsXG4gKiAgIGNhcHRpb246ICdJbWFnZSBkZXNjcmlwdGlvbidcbiAqIH1cIj48L3ZhbC1pbWFnZT5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IEltYWdlTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW1hZ2UgKHNyYywgYWx0LCBzaXplLCBtb2RlLCBhbGlnbm1lbnQsIGNhcHRpb24sIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHByb3BzITogSW1hZ2VNZXRhZGF0YTtcblxuICBhdmFpbGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBTZXQgZGVmYXVsdCB2YWx1ZXNcbiAgICBpZiAoIXRoaXMucHJvcHMuYWxpZ25tZW50KSB7XG4gICAgICB0aGlzLnByb3BzLmFsaWdubWVudCA9ICdjZW50ZXInO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucHJvcHMuY2FwdGlvblNpemUpIHtcbiAgICAgIHRoaXMucHJvcHMuY2FwdGlvblNpemUgPSAnbWVkaXVtJztcbiAgICB9XG4gICAgaWYgKCF0aGlzLnByb3BzLm1vZGUpIHtcbiAgICAgIHRoaXMucHJvcHMubW9kZSA9ICdib3gnO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRvVmlzaWJsZSgpIHtcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmF2YWlsYWJsZSA9IHRydWU7XG4gICAgfSwgMTAwKTtcbiAgfVxufVxuIl19
519
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGVjaC1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9pbWFnZS9pbWFnZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOzs7QUF5SnBGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQ0c7QUFDSCxNQUFNLE9BQU8sY0FBYztJQWdDekI7UUE1QkEsY0FBUyxHQUFZLElBQUksQ0FBQztRQUUxQiwwQkFBMEI7UUFDMUIsa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0IsY0FBUyxHQUFXLENBQUMsQ0FBQztRQUN0QixZQUFPLEdBQVcsR0FBRyxDQUFDO1FBQ3RCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFDcEIsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBRWpCLHlDQUF5QztRQUN6QyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBQzVCLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFDckIsYUFBUSxHQUFXLENBQUMsQ0FBQztRQUNyQixXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBVyxDQUFDLENBQUM7UUFFbkIsMkJBQTJCO1FBQzNCLG9CQUFlLEdBQVcsQ0FBQyxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ3hCLFlBQU8sR0FBWSxFQUFFLENBQUM7UUFFdEIsZUFBZTtRQUNmLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcs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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0lULG80TkFoSlMsWUFBWTs7NEZBd0xYLGNBQWM7a0JBM0wxQixTQUFTOytCQUNFLFdBQVcsY0FDVCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErSVQ7d0RBMENELEtBQUs7c0JBREosS0FBSztnQkF1TE4sU0FBUztzQkFEUixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSG9zdExpc3RlbmVyLCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExhbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbGFuZy1wcm92aWRlci9sYW5nLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW1hZ2VNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtaW1hZ2UnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZmlndXJlXG4gICAgICBjbGFzcz1cInZhbC1pbWFnZS1jb250YWluZXJcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNvbnRhaW5lckNsYXNzXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWxlZnQnOiBwcm9wcy5hbGlnbm1lbnQgPT09ICdsZWZ0JyxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLWNlbnRlcic6IHByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcicgfHwgIXByb3BzLmFsaWdubWVudCxcbiAgICAgICAgJ3ZhbC1pbWFnZS1jb250YWluZXItLXJpZ2h0JzogcHJvcHMuYWxpZ25tZW50ID09PSAncmlnaHQnLFxuICAgICAgfVwiXG4gICAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAgIGRpc3BsYXk6IHByb3BzLmZsZXggPyAnZmxleCcgOiAnaW5saW5lLWJsb2NrJyxcbiAgICAgIH1cIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtaW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICBAaWYgKHByb3BzLnNyYy5pbmNsdWRlcygnLS0nKSkge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICAgcHJvcHMubW9kZSxcbiAgICAgICAgICAgICAgIXByb3BzLndpZHRoID8gcHJvcHMuc2l6ZSA6ICcnLFxuICAgICAgICAgICAgICBwcm9wcy5wcmV2aWV3TW9kZSA/ICd2YWwtaW1hZ2UtLXByZXZpZXctZW5hYmxlZCcgOiAnJyxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgICBjb250ZW50OiAndmFyKCcgKyBwcm9wcy5zcmMgKyAnKScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXJlZF09XCJwcm9wcy5ib3JkZXJlZFwiXG4gICAgICAgICAgICBbY2xhc3Muc2hhZGVkXT1cInByb3BzLnNoYWRlZFwiXG4gICAgICAgICAgICBbY2xhc3MuZGFya109XCJwcm9wcy5kYXJrXCJcbiAgICAgICAgICAgIFtjbGFzcy5saW1pdGVkXT1cInByb3BzLmxpbWl0ZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmNlbnRlcl09XCJwcm9wcy5hbGlnbm1lbnQgPT09ICdjZW50ZXInXCJcbiAgICAgICAgICAgIFthbHRdPVwicHJvcHMuYWx0XCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5yZW1dPVwicHJvcHMud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLm1heC13aWR0aC5yZW1dPVwicHJvcHMud2lkdGhcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJwcm9wcy5oZWlnaHRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInByb3BzLnByZXZpZXdNb2RlID8gb3BlblByZXZpZXcoKSA6IG51bGxcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIltcbiAgICAgICAgICAgICAgcHJvcHMubW9kZSxcbiAgICAgICAgICAgICAgIXByb3BzLndpZHRoID8gcHJvcHMuc2l6ZSA6ICcnLFxuICAgICAgICAgICAgICBwcm9wcy5wcmV2aWV3TW9kZSA/ICd2YWwtaW1hZ2UtLXByZXZpZXctZW5hYmxlZCcgOiAnJyxcbiAgICAgICAgICAgIF1cIlxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5zaGFkZWRdPVwicHJvcHMuc2hhZGVkXCJcbiAgICAgICAgICAgIFtjbGFzcy5kYXJrXT1cInByb3BzLmRhcmtcIlxuICAgICAgICAgICAgW2NsYXNzLmxpbWl0ZWRdPVwicHJvcHMubGltaXRlZFwiXG4gICAgICAgICAgICBbY2xhc3MuY2VudGVyXT1cInByb3BzLmFsaWdubWVudCA9PT0gJ2NlbnRlcidcIlxuICAgICAgICAgICAgW3NyY109XCJwcm9wcy5zcmNcIlxuICAgICAgICAgICAgW2FsdF09XCJwcm9wcy5hbHRcIlxuICAgICAgICAgICAgW3N0eWxlLndpZHRoLnJlbV09XCJwcm9wcy53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUubWF4LXdpZHRoLnJlbV09XCJwcm9wcy53aWR0aFwiXG4gICAgICAgICAgICBbc3R5bGUuaGVpZ2h0LnB4XT1cInByb3BzLmhlaWdodFwiXG4gICAgICAgICAgICAoY2xpY2spPVwicHJvcHMucHJldmlld01vZGUgPyBvcGVuUHJldmlldygpIDogbnVsbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBpZiAocHJvcHMuY2FwdGlvbikge1xuICAgICAgICA8ZmlnY2FwdGlvblxuICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlLWNhcHRpb25cIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICd2YWwtaW1hZ2UtY2FwdGlvbi0tc21hbGwnOiBwcm9wcy5jYXB0aW9uU2l6ZSA9PT0gJ3NtYWxsJyxcbiAgICAgICAgICAgICd2YWwtaW1hZ2UtY2FwdGlvbi0tbWVkaXVtJzogcHJvcHMuY2FwdGlvblNpemUgPT09ICdtZWRpdW0nIHx8ICFwcm9wcy5jYXB0aW9uU2l6ZSxcbiAgICAgICAgICAgICd2YWwtaW1hZ2UtY2FwdGlvbi0tbGFyZ2UnOiBwcm9wcy5jYXB0aW9uU2l6ZSA9PT0gJ2xhcmdlJyxcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb3BzLmNhcHRpb24gfX1cbiAgICAgICAgPC9maWdjYXB0aW9uPlxuICAgICAgfVxuICAgIDwvZmlndXJlPlxuXG4gICAgPCEtLSBNb2RhbCBkZSBwcmV2aXN1YWxpemFjacOzbiAtLT5cbiAgICBAaWYgKGlzUHJldmlld09wZW4pIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJ2YWwtaW1hZ2UtcHJldmlldy1tb2RhbFwiIChjbGljayk9XCJjbG9zZVByZXZpZXcoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctY29udGFpbmVyXCI+XG4gICAgICAgICAgPCEtLSBCb3TDs24gZGUgY2VycmFyIC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctY2xvc2VcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlUHJldmlldygpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFuZ1NlcnZpY2UuZ2V0VGV4dCgnSW1hZ2VDb21wb25lbnQnLCAnY2xvc2UnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4+JnRpbWVzOzwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDwhLS0gQ29udHJvbGVzIGRlIHpvb20gLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbC1pbWFnZS1wcmV2aWV3LWNvbnRyb2xzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctem9vbS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiem9vbU91dCgpXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInpvb21MZXZlbCA8PSBtaW5ab29tXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJsYW5nU2VydmljZS5nZXRUZXh0KCdJbWFnZUNvbXBvbmVudCcsICd6b29tT3V0JylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj7iiJI8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctem9vbS1sZXZlbFwiPnt7IE1hdGgucm91bmQoem9vbUxldmVsICogMTAwKSB9fSU8L3NwYW4+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctem9vbS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiem9vbUluKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiem9vbUxldmVsID49IG1heFpvb21cIlxuICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImxhbmdTZXJ2aWNlLmdldFRleHQoJ0ltYWdlQ29tcG9uZW50JywgJ3pvb21JbicpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW4+Kzwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cInZhbC1pbWFnZS1wcmV2aWV3LXJlc2V0LWJ0blwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZXNldFpvb20oKVwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFuZ1NlcnZpY2UuZ2V0VGV4dCgnSW1hZ2VDb21wb25lbnQnLCAncmVzZXRab29tJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3Bhbj7ijII8L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gSW1hZ2VuIGFtcGxpYWRhIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidmFsLWltYWdlLXByZXZpZXctdmlld3BvcnRcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgICAgICAodG91Y2hzdGFydCk9XCJvblRvdWNoU3RhcnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAodG91Y2htb3ZlKT1cIm9uVG91Y2hNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgKHRvdWNoZW5kKT1cIm9uVG91Y2hFbmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAod2hlZWwpPVwib25XaGVlbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChtb3VzZWRvd24pPVwib25Nb3VzZURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAobW91c2Vtb3ZlKT1cIm9uTW91c2VNb3ZlKCRldmVudClcIlxuICAgICAgICAgICAgKG1vdXNldXApPVwib25Nb3VzZVVwKCRldmVudClcIlxuICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZVVwKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgI3ByZXZpZXdJbWFnZVxuICAgICAgICAgICAgICBjbGFzcz1cInZhbC1pbWFnZS1wcmV2aWV3LWltZ1wiXG4gICAgICAgICAgICAgIFtzcmNdPVwicHJvcHMuc3JjLmluY2x1ZGVzKCctLScpID8gbnVsbCA6IHByb3BzLnNyY1wiXG4gICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICAgICAgICAgICBjb250ZW50OiBwcm9wcy5zcmMuaW5jbHVkZXMoJy0tJykgPyAndmFyKCcgKyBwcm9wcy5zcmMgKyAnKScgOiBudWxsLFxuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlKCcgKyB6b29tTGV2ZWwgKyAnKSB0cmFuc2xhdGUoJyArIHBhblggKyAncHgsICcgKyBwYW5ZICsgJ3B4KScsXG4gICAgICAgICAgICAgICAgY3Vyc29yOiBpc0RyYWdnaW5nID8gJ2dyYWJiaW5nJyA6IHpvb21MZXZlbCA+IDEgPyAnZ3JhYicgOiAnZGVmYXVsdCcsXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICBbYWx0XT1cInByb3BzLmFsdFwiXG4gICAgICAgICAgICAgIGRyYWdnYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9pbWFnZS5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWltYWdlXG4gKlxuICogRGlzcGxheXMgYW4gaW1hZ2Ugd2l0aCB2YXJpb3VzIGRpc3BsYXkgb3B0aW9ucyAoYm9yZGVyZWQsIHNoYWRlZCwgZGFyaywgZXRjKS5cbiAqIE5vdyBpbmNsdWRlcyBhIGNvbnRhaW5lciB3cmFwcGVyIGZvciBiZXR0ZXIgZmxleGJveCBzdXBwb3J0IGFuZCBhbGlnbm1lbnQgb3B0aW9ucy5cbiAqXG4gKiBORVc6IE9wdGlvbmFsIHByZXZpZXcgbW9kZSB3aXRoIGZ1bGwtc2NyZWVuIHpvb20gY2FwYWJpbGl0aWVzOlxuICogLSBDbGljayB0byBvcGVuIGZ1bGwtc2NyZWVuIHByZXZpZXcgKHdoZW4gcHJldmlld01vZGUgaXMgZW5hYmxlZClcbiAqIC0gUGluY2gtdG8tem9vbSBvbiBtb2JpbGUgZGV2aWNlc1xuICogLSBNb3VzZSB3aGVlbCB6b29tIG9uIGRlc2t0b3BcbiAqIC0gUGFuL2RyYWcgdG8gbmF2aWdhdGUgem9vbWVkIGltYWdlc1xuICogLSBab29tIGNvbnRyb2xzIHdpdGggYnV0dG9uc1xuICogLSBLZXlib2FyZCBzaG9ydGN1dHMgKEVzYyB0byBjbG9zZSwgKy8tIHRvIHpvb20sIDAgdG8gcmVzZXQpXG4gKiAtIFRvdWNoLWZyaWVuZGx5IGludGVyZmFjZSB3aXRoIGdlc3R1cmUgc3VwcG9ydFxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlOlxuICogPHZhbC1pbWFnZSBbcHJvcHNdPVwie1xuICogICBzcmM6ICd1cmwnLFxuICogICBhbHQ6ICdkZXNjJyxcbiAqICAgd2lkdGg6IDEwMCxcbiAqICAgaGVpZ2h0OiAxMDAsXG4gKiAgIGJvcmRlcmVkOiB0cnVlLFxuICogICBhbGlnbm1lbnQ6ICdjZW50ZXInLFxuICogICBjYXB0aW9uOiAnSW1hZ2UgZGVzY3JpcHRpb24nXG4gKiB9XCI+PC92YWwtaW1hZ2U+XG4gKlxuICogQGV4YW1wbGUgV2l0aCBwcmV2aWV3IG1vZGU6XG4gKiA8dmFsLWltYWdlIFtwcm9wc109XCJ7XG4gKiAgIHNyYzogJ3VybCcsXG4gKiAgIGFsdDogJ2Rlc2MnLFxuICogICBwcmV2aWV3TW9kZTogdHJ1ZSxcbiAqICAgYm9yZGVyZWQ6IHRydWUsXG4gKiAgIGFsaWdubWVudDogJ2NlbnRlcidcbiAqIH1cIj48L3ZhbC1pbWFnZT5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IEltYWdlTWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgaW1hZ2UgKHNyYywgYWx0LCBzaXplLCBtb2RlLCBhbGlnbm1lbnQsIGNhcHRpb24sIHByZXZpZXdNb2RlLCBldGMuKVxuICovXG5leHBvcnQgY2xhc3MgSW1hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBwcm9wcyE6IEltYWdlTWV0YWRhdGE7XG5cbiAgYXZhaWxhYmxlOiBib29sZWFuID0gdHJ1ZTtcblxuICAvLyBQcmV2aWV3IG1vZGUgcHJvcGVydGllc1xuICBpc1ByZXZpZXdPcGVuOiBib29sZWFuID0gZmFsc2U7XG4gIHpvb21MZXZlbDogbnVtYmVyID0gMTtcbiAgbWluWm9vbTogbnVtYmVyID0gMC41O1xuICBtYXhab29tOiBudW1iZXIgPSA1O1xuICBwYW5YOiBudW1iZXIgPSAwO1xuICBwYW5ZOiBudW1iZXIgPSAwO1xuXG4gIC8vIFRvdWNoIGFuZCBtb3VzZSBpbnRlcmFjdGlvbiBwcm9wZXJ0aWVzXG4gIGlzRHJhZ2dpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgbGFzdFBhblg6IG51bWJlciA9IDA7XG4gIGxhc3RQYW5ZOiBudW1iZXIgPSAwO1xuICBzdGFydFg6IG51bWJlciA9IDA7XG4gIHN0YXJ0WTogbnVtYmVyID0gMDtcblxuICAvLyBUb3VjaCBnZXN0dXJlIHByb3BlcnRpZXNcbiAgaW5pdGlhbERpc3RhbmNlOiBudW1iZXIgPSAwO1xuICBpbml0aWFsWm9vbTogbnVtYmVyID0gMTtcbiAgdG91Y2hlczogVG91Y2hbXSA9IFtdO1xuXG4gIC8vIExhbmcgc2VydmljZVxuICBsYW5nU2VydmljZSA9IGluamVjdChMYW5nU2VydmljZSk7XG5cbiAgLy8gTWF0aCBmb3IgdGVtcGxhdGVcbiAgTWF0aCA9IE1hdGg7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIFNldCBkZWZhdWx0IHZhbHVlc1xuICAgIGlmICghdGhpcy5wcm9wcy5hbGlnbm1lbnQpIHtcbiAgICAgIHRoaXMucHJvcHMuYWxpZ25tZW50ID0gJ2NlbnRlcic7XG4gICAgfVxuICAgIGlmICghdGhpcy5wcm9wcy5jYXB0aW9uU2l6ZSkge1xuICAgICAgdGhpcy5wcm9wcy5jYXB0aW9uU2l6ZSA9ICdtZWRpdW0nO1xuICAgIH1cbiAgICBpZiAoIXRoaXMucHJvcHMubW9kZSkge1xuICAgICAgdGhpcy5wcm9wcy5tb2RlID0gJ2JveCc7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVG9WaXNpYmxlKCkge1xuICAgIHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuYXZhaWxhYmxlID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgLy8gUHJldmlldyBtb2RlIG1ldGhvZHNcbiAgb3BlblByZXZpZXcoKSB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnByZXZpZXdNb2RlKSByZXR1cm47XG4gICAgdGhpcy5pc1ByZXZpZXdPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnJlc2V0Wm9vbSgpO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJzsgLy8gUHJldmVudCBiYWNrZ3JvdW5kIHNjcm9sbGluZ1xuICB9XG5cbiAgY2xvc2VQcmV2aWV3KCkge1xuICAgIHRoaXMuaXNQcmV2aWV3T3BlbiA9IGZhbHNlO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnJzsgLy8gUmVzdG9yZSBzY3JvbGxpbmdcbiAgfVxuXG4gIC8vIFpvb20gbWV0aG9kc1xuICB6b29tSW4oKSB7XG4gICAgaWYgKHRoaXMuem9vbUxldmVsIDwgdGhpcy5tYXhab29tKSB7XG4gICAgICB0aGlzLnpvb21MZXZlbCA9IE1hdGgubWluKHRoaXMuem9vbUxldmVsICogMS4yLCB0aGlzLm1heFpvb20pO1xuICAgIH1cbiAgfVxuXG4gIHpvb21PdXQoKSB7XG4gICAgaWYgKHRoaXMuem9vbUxldmVsID4gdGhpcy5taW5ab29tKSB7XG4gICAgICB0aGlzLnpvb21MZXZlbCA9IE1hdGgubWF4KHRoaXMuem9vbUxldmVsIC8gMS4yLCB0aGlzLm1pblpvb20pO1xuICAgICAgLy8gUmVzZXQgcGFuIGlmIHpvb21lZCBvdXQgdG8gMXggb3IgbGVzc1xuICAgICAgaWYgKHRoaXMuem9vbUxldmVsIDw9IDEpIHtcbiAgICAgICAgdGhpcy5wYW5YID0gMDtcbiAgICAgICAgdGhpcy5wYW5ZID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXNldFpvb20oKSB7XG4gICAgdGhpcy56b29tTGV2ZWwgPSAxO1xuICAgIHRoaXMucGFuWCA9IDA7XG4gICAgdGhpcy5wYW5ZID0gMDtcbiAgfVxuXG4gIC8vIE1vdXNlIGV2ZW50c1xuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgIGlmICh0aGlzLnpvb21MZXZlbCA8PSAxKSByZXR1cm47XG5cbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgIHRoaXMuc3RhcnRYID0gZXZlbnQuY2xpZW50WCAtIHRoaXMucGFuWDtcbiAgICB0aGlzLnN0YXJ0WSA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLnBhblk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcgfHwgdGhpcy56b29tTGV2ZWwgPD0gMSkgcmV0dXJuO1xuXG4gICAgdGhpcy5wYW5YID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuc3RhcnRYO1xuICAgIHRoaXMucGFuWSA9IGV2ZW50LmNsaWVudFkgLSB0aGlzLnN0YXJ0WTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgb25Nb3VzZVVwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBUb3VjaCBldmVudHMgZm9yIG1vYmlsZVxuICBvblRvdWNoU3RhcnQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMudG91Y2hlcyA9IEFycmF5LmZyb20oZXZlbnQudG91Y2hlcyk7XG5cbiAgICBpZiAodGhpcy50b3VjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gU2luZ2xlIHRvdWNoIC0gc3RhcnQgZHJhZ2dpbmdcbiAgICAgIGlmICh0aGlzLnpvb21MZXZlbCA+IDEpIHtcbiAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zdGFydFggPSB0aGlzLnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMucGFuWDtcbiAgICAgICAgdGhpcy5zdGFydFkgPSB0aGlzLnRvdWNoZXNbMF0uY2xpZW50WSAtIHRoaXMucGFuWTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudG91Y2hlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIC8vIFR3byB0b3VjaGVzIC0gc3RhcnQgcGluY2ggem9vbVxuICAgICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLmluaXRpYWxEaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UodGhpcy50b3VjaGVzWzBdLCB0aGlzLnRvdWNoZXNbMV0pO1xuICAgICAgdGhpcy5pbml0aWFsWm9vbSA9IHRoaXMuem9vbUxldmVsO1xuICAgIH1cbiAgfVxuXG4gIG9uVG91Y2hNb3ZlKGV2ZW50OiBUb3VjaEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB0aGlzLnRvdWNoZXMgPSBBcnJheS5mcm9tKGV2ZW50LnRvdWNoZXMpO1xuXG4gICAgaWYgKHRoaXMudG91Y2hlcy5sZW5ndGggPT09IDEgJiYgdGhpcy5pc0RyYWdnaW5nICYmIHRoaXMuem9vbUxldmVsID4gMSkge1xuICAgICAgLy8gU2luZ2xlIHRvdWNoIC0gZHJhZ1xuICAgICAgdGhpcy5wYW5YID0gdGhpcy50b3VjaGVzWzBdLmNsaWVudFggLSB0aGlzLnN0YXJ0WDtcbiAgICAgIHRoaXMucGFuWSA9IHRoaXMudG91Y2hlc1swXS5jbGllbnRZIC0gdGhpcy5zdGFydFk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRvdWNoZXMubGVuZ3RoID09PSAyKSB7XG4gICAgICAvLyBUd28gdG91Y2hlcyAtIHBpbmNoIHpvb21cbiAgICAgIGNvbnN0IGN1cnJlbnREaXN0YW5jZSA9IHRoaXMuZ2V0RGlzdGFuY2UodGhpcy50b3VjaGVzWzBdLCB0aGlzLnRvdWNoZXNbMV0pO1xuICAgICAgY29uc3Qgc2NhbGUgPSBjdXJyZW50RGlzdGFuY2UgLyB0aGlzLmluaXRpYWxEaXN0YW5jZTtcbiAgICAgIHRoaXMuem9vbUxldmVsID0gTWF0aC5taW4oTWF0aC5tYXgodGhpcy5pbml0aWFsWm9vbSAqIHNjYWxlLCB0aGlzLm1pblpvb20pLCB0aGlzLm1heFpvb20pO1xuXG4gICAgICAvLyBSZXNldCBwYW4gaWYgem9vbWVkIG91dCB0byAxeCBvciBsZXNzXG4gICAgICBpZiAodGhpcy56b29tTGV2ZWwgPD0gMSkge1xuICAgICAgICB0aGlzLnBhblggPSAwO1xuICAgICAgICB0aGlzLnBhblkgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uVG91Y2hFbmQoZXZlbnQ6IFRvdWNoRXZlbnQpIHtcbiAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnRvdWNoZXMgPSBBcnJheS5mcm9tKGV2ZW50LnRvdWNoZXMpO1xuICB9XG5cbiAgLy8gTW91c2Ugd2hlZWwgem9vbVxuICBvbldoZWVsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGRlbHRhID0gZXZlbnQuZGVsdGFZID4gMCA/IC0xIDogMTtcbiAgICBjb25zdCB6b29tRmFjdG9yID0gMSArIGRlbHRhICogMC4xO1xuXG4gICAgdGhpcy56b29tTGV2ZWwgPSBNYXRoLm1pbihNYXRoLm1heCh0aGlzLnpvb21MZXZlbCAqIHpvb21GYWN0b3IsIHRoaXMubWluWm9vbSksIHRoaXMubWF4Wm9vbSk7XG5cbiAgICAvLyBSZXNldCBwYW4gaWYgem9vbWVkIG91dCB0byAxeCBvciBsZXNzXG4gICAgaWYgKHRoaXMuem9vbUxldmVsIDw9IDEpIHtcbiAgICAgIHRoaXMucGFuWCA9IDA7XG4gICAgICB0aGlzLnBhblkgPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhlbHBlciBtZXRob2RzXG4gIHByaXZhdGUgZ2V0RGlzdGFuY2UodG91Y2gxOiBUb3VjaCwgdG91Y2gyOiBUb3VjaCk6IG51bWJlciB7XG4gICAgY29uc3QgZHggPSB0b3VjaDEuY2xpZW50WCAtIHRvdWNoMi5jbGllbnRYO1xuICAgIGNvbnN0IGR5ID0gdG91Y2gxLmNsaWVudFkgLSB0b3VjaDIuY2xpZW50WTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KTtcbiAgfVxuXG4gIC8vIEtleWJvYXJkIHNob3J0Y3V0c1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlzUHJldmlld09wZW4pIHJldHVybjtcblxuICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICB0aGlzLmNsb3NlUHJldmlldygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJysnOlxuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuem9vbUluKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLSc6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuem9vbU91dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzAnOlxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnJlc2V0Wm9vbSgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL2ltYWdlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3BzIGZvciB2YWwtaW1hZ2UgY29tcG9uZW50LlxuICpcbiAqIEBwcm9wZXJ0eSBzcmMgLSBUaGUgaW1hZ2Ugc291cmNlIFVSTC5cbiAqIEBwcm9wZXJ0eSBhbHQgLSBUaGUgYWx0IHRleHQgZm9yIHRoZSBpbWFnZS5cbiAqIEBwcm9wZXJ0eSBtb2RlIC0gVGhlIGRpc3BsYXkgbW9kZSAoJ3JvdW5kZWQnIHwgJ2NpcmN1bGFyJyB8ICdib3gnKS5cbiAqIEBwcm9wZXJ0eSBzaGFkZWQgLSBXaGV0aGVyIHRoZSBpbWFnZSBoYXMgYSBzaGFkZWQgZWZmZWN0LlxuICogQHByb3BlcnR5IGJvcmRlcmVkIC0gV2hldGhlciB0aGUgaW1hZ2UgaGFzIGEgYm9yZGVyLlxuICogQHByb3BlcnR5IGxpbWl0ZWQgLSBXaGV0aGVyIHRoZSBpbWFnZSBpcyBsaW1pdGVkIGluIHNpemUgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBkYXJrIC0gV2hldGhlciB0aGUgaW1hZ2UgdXNlcyBhIGRhcmsgc3R5bGUgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBzaXplIC0gVGhlIGltYWdlIHNpemUgKCdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJykuXG4gKiBAcHJvcGVydHkgd2lkdGggLSBUaGUgaW1hZ2Ugd2lkdGggaW4gcHggKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBoZWlnaHQgLSBUaGUgaW1hZ2UgaGVpZ2h0IGluIHB4IChvcHRpb25hbCkuXG4gKiBAcHJvcGVydHkgYWxpZ25tZW50IC0gVGhlIGFsaWdubWVudCBvZiB0aGUgaW1hZ2UgY29udGFpbmVyICgnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpLlxuICogQHByb3BlcnR5IGNhcHRpb24gLSBPcHRpb25hbCBjYXB0aW9uIHRleHQgYmVsb3cgdGhlIGltYWdlLlxuICogQHByb3BlcnR5IGNhcHRpb25TaXplIC0gU2l6ZSBvZiB0aGUgY2FwdGlvbiB0ZXh0ICgnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnKS5cbiAqIEBwcm9wZXJ0eSBjb250YWluZXJDbGFzcyAtIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgZm9yIHRoZSBjb250YWluZXIuXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlTWV0YWRhdGEgPSB7XG4gIHNyYzogc3RyaW5nO1xuICBhbHQ6IHN0cmluZztcbiAgbW9kZTogJ3JvdW5kZWQnIHwgJ2NpcmN1bGFyJyB8ICdib3gnO1xuICBzaGFkZWQ6IGJvb2xlYW47XG4gIGJvcmRlcmVkOiBib29sZWFuO1xuICBsaW1pdGVkPzogYm9vbGVhbjtcbiAgZGFyaz86IGJvb2xlYW47XG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgYWxpZ25tZW50PzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICBjYXB0aW9uPzogc3RyaW5nO1xuICBjYXB0aW9uU2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG4gIGNvbnRhaW5lckNsYXNzPzogc3RyaW5nO1xuICBmbGV4PzogYm9vbGVhbjsgLy8gT3B0aW9uYWwgcHJvcGVydHkgdG8gY29udHJvbCBmbGV4IGRpc3BsYXlcbn07XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0ZWNoLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2F0b21zL2ltYWdlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb3BzIGZvciB2YWwtaW1hZ2UgY29tcG9uZW50LlxuICpcbiAqIEBwcm9wZXJ0eSBzcmMgLSBUaGUgaW1hZ2Ugc291cmNlIFVSTC5cbiAqIEBwcm9wZXJ0eSBhbHQgLSBUaGUgYWx0IHRleHQgZm9yIHRoZSBpbWFnZS5cbiAqIEBwcm9wZXJ0eSBtb2RlIC0gVGhlIGRpc3BsYXkgbW9kZSAoJ3JvdW5kZWQnIHwgJ2NpcmN1bGFyJyB8ICdib3gnKS5cbiAqIEBwcm9wZXJ0eSBzaGFkZWQgLSBXaGV0aGVyIHRoZSBpbWFnZSBoYXMgYSBzaGFkZWQgZWZmZWN0LlxuICogQHByb3BlcnR5IGJvcmRlcmVkIC0gV2hldGhlciB0aGUgaW1hZ2UgaGFzIGEgYm9yZGVyLlxuICogQHByb3BlcnR5IGxpbWl0ZWQgLSBXaGV0aGVyIHRoZSBpbWFnZSBpcyBsaW1pdGVkIGluIHNpemUgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBkYXJrIC0gV2hldGhlciB0aGUgaW1hZ2UgdXNlcyBhIGRhcmsgc3R5bGUgKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBzaXplIC0gVGhlIGltYWdlIHNpemUgKCdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJykuXG4gKiBAcHJvcGVydHkgd2lkdGggLSBUaGUgaW1hZ2Ugd2lkdGggaW4gcHggKG9wdGlvbmFsKS5cbiAqIEBwcm9wZXJ0eSBoZWlnaHQgLSBUaGUgaW1hZ2UgaGVpZ2h0IGluIHB4IChvcHRpb25hbCkuXG4gKiBAcHJvcGVydHkgYWxpZ25tZW50IC0gVGhlIGFsaWdubWVudCBvZiB0aGUgaW1hZ2UgY29udGFpbmVyICgnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcpLlxuICogQHByb3BlcnR5IGNhcHRpb24gLSBPcHRpb25hbCBjYXB0aW9uIHRleHQgYmVsb3cgdGhlIGltYWdlLlxuICogQHByb3BlcnR5IGNhcHRpb25TaXplIC0gU2l6ZSBvZiB0aGUgY2FwdGlvbiB0ZXh0ICgnc21hbGwnIHwgJ21lZGl1bScgfCAnbGFyZ2UnKS5cbiAqIEBwcm9wZXJ0eSBjb250YWluZXJDbGFzcyAtIEFkZGl0aW9uYWwgQ1NTIGNsYXNzZXMgZm9yIHRoZSBjb250YWluZXIuXG4gKiBAcHJvcGVydHkgcHJldmlld01vZGUgLSBFbmFibGUgZnVsbC1zY3JlZW4gcHJldmlldyB3aXRoIHpvb20gY2FwYWJpbGl0aWVzIChvcHRpb25hbCkuXG4gKi9cbmV4cG9ydCB0eXBlIEltYWdlTWV0YWRhdGEgPSB7XG4gIHNyYzogc3RyaW5nO1xuICBhbHQ6IHN0cmluZztcbiAgbW9kZTogJ3JvdW5kZWQnIHwgJ2NpcmN1bGFyJyB8ICdib3gnO1xuICBzaGFkZWQ6IGJvb2xlYW47XG4gIGJvcmRlcmVkOiBib29sZWFuO1xuICBsaW1pdGVkPzogYm9vbGVhbjtcbiAgZGFyaz86IGJvb2xlYW47XG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgfCAneGxhcmdlJztcbiAgd2lkdGg/OiBudW1iZXI7XG4gIGhlaWdodD86IG51bWJlcjtcbiAgYWxpZ25tZW50PzogJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnO1xuICBjYXB0aW9uPzogc3RyaW5nO1xuICBjYXB0aW9uU2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSc7XG4gIGNvbnRhaW5lckNsYXNzPzogc3RyaW5nO1xuICBmbGV4PzogYm9vbGVhbjsgLy8gT3B0aW9uYWwgcHJvcGVydHkgdG8gY29udHJvbCBmbGV4IGRpc3BsYXlcbiAgcHJldmlld01vZGU/OiBib29sZWFuOyAvLyBFbmFibGUgZnVsbC1zY3JlZW4gaW1hZ2UgcHJldmlldyB3aXRoIHpvb21cbn07XG4iXX0=