valtech-components 2.0.56 → 2.0.57

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.
@@ -25,160 +25,158 @@ export class ItemListComponent {
25
25
  }
26
26
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemListComponent, deps: [{ token: i1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
27
27
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ItemListComponent, isStandalone: true, selector: "val-item-list", inputs: { props: "props" }, outputs: { onClick: "onClick", onActionClick: "onActionClick" }, ngImport: i0, template: `
28
- <div>
29
- <ion-list
30
- [inset]="props.rounded"
31
- [class.shadowed]="props.shadowed"
32
- [class.bordered]="props.bordered"
33
- [style.borderColor]="this.color()"
34
- >
28
+ <ion-list
29
+ [inset]="props.rounded"
30
+ [class.shadowed]="props.shadowed"
31
+ [class.bordered]="props.bordered"
32
+ [style.borderColor]="this.color()"
33
+ >
35
34
  @if (props.title) {
36
35
  <ion-list-header>
37
36
  <ion-label>{{ props.title }}</ion-label>
38
37
  </ion-list-header>
39
38
  }
40
- @for (item of props.items; track item.text) {
41
- @if (item.mode == 'justext') {
42
- <ion-item
43
- [lines]="item.lines"
44
- [button]="item.clickable"
45
- [disabled]="item.disabled"
46
- (click)="clickHandler(item.token)"
47
- >
48
- @if (item.unreadIndicator) {
49
- <div class="unread-indicator-wrapper" slot="start">
50
- <div class="unread-indicator"></div>
51
- </div>
39
+ @for (item of props.items; track item.text) {
40
+ @if (item.mode == 'justext') {
41
+ <ion-item
42
+ [lines]="item.lines"
43
+ [button]="item.clickable"
44
+ [disabled]="item.disabled"
45
+ (click)="clickHandler(item.token)"
46
+ >
47
+ @if (item.unreadIndicator) {
48
+ <div class="unread-indicator-wrapper" slot="start">
49
+ <div class="unread-indicator"></div>
50
+ </div>
51
+ }
52
+
53
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
54
+ <h2>{{ item.text }}</h2>
55
+
56
+ @if (item.comments) {
57
+ <ion-note color="medium"> {{ item.comments }} </ion-note>
52
58
  }
59
+ </ion-label>
53
60
 
54
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
55
- <h2>{{ item.text }}</h2>
61
+ @if (item.endNote) {
62
+ <ion-note slot="end">{{ item.endNote }}</ion-note>
63
+ }
64
+ </ion-item>
65
+ }
56
66
 
57
- @if (item.comments) {
58
- <ion-note color="medium"> {{ item.comments }} </ion-note>
59
- }
60
- </ion-label>
67
+ @if (item.mode == 'actionable') {
68
+ <ion-item [lines]="item.lines" [button]="item.clickable" [disabled]="item.disabled">
69
+ @if (item.unreadIndicator) {
70
+ <div class="unread-indicator-wrapper" slot="start">
71
+ <div class="unread-indicator"></div>
72
+ </div>
73
+ }
61
74
 
62
- @if (item.endNote) {
63
- <ion-note slot="end">{{ item.endNote }}</ion-note>
64
- }
65
- </ion-item>
66
- }
67
-
68
- @if (item.mode == 'actionable') {
69
- <ion-item [lines]="item.lines" [button]="item.clickable" [disabled]="item.disabled">
70
- @if (item.unreadIndicator) {
71
- <div class="unread-indicator-wrapper" slot="start">
72
- <div class="unread-indicator"></div>
73
- </div>
74
- }
75
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
76
+ <h2>{{ item.text }}</h2>
75
77
 
76
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
77
- <h2>{{ item.text }}</h2>
78
-
79
- @if (item.comments) {
80
- <ion-note color="medium"> {{ item.comments }} </ion-note>
81
- }
82
- </ion-label>
83
-
84
- @if (item.actions) {
85
- @for (action of item.actions; track action.token) {
86
- <ion-button
87
- fill="outline"
88
- color="dark"
89
- slot="end"
90
- [disabled]="action.state === states.WORKING"
91
- (click)="onActionClickHandler(action.token)"
92
- >
93
- @if (action.state !== states.WORKING) {
94
- @if (action.icon) {
95
- <ion-icon aria-hidden="true" [name]="action.icon" size="medium" slot="start"></ion-icon>
96
- }
97
-
98
- {{ action.description }}
78
+ @if (item.comments) {
79
+ <ion-note color="medium"> {{ item.comments }} </ion-note>
80
+ }
81
+ </ion-label>
82
+
83
+ @if (item.actions) {
84
+ @for (action of item.actions; track action.token) {
85
+ <ion-button
86
+ fill="outline"
87
+ color="dark"
88
+ slot="end"
89
+ [disabled]="action.state === states.WORKING"
90
+ (click)="onActionClickHandler(action.token)"
91
+ >
92
+ @if (action.state !== states.WORKING) {
93
+ @if (action.icon) {
94
+ <ion-icon aria-hidden="true" [name]="action.icon" size="medium" slot="start"></ion-icon>
99
95
  }
100
96
 
101
- @if (action.state === states.WORKING) {
102
- <ion-spinner class="action-spinner" name="circular"></ion-spinner>
103
- }
104
- </ion-button>
105
- }
106
- }
107
- </ion-item>
108
- }
109
-
110
- @if (item.mode == 'route') {
111
- <ion-item
112
- [lines]="item.lines"
113
- [button]="item.clickable"
114
- [disabled]="item.disabled"
115
- (click)="clickHandler(item.token)"
116
- [routerLink]="item.routerLink"
117
- >
118
- @if (item.unreadIndicator) {
119
- <div class="unread-indicator-wrapper" slot="start">
120
- <div class="unread-indicator"></div>
121
- </div>
97
+ {{ action.description }}
98
+ }
99
+
100
+ @if (action.state === states.WORKING) {
101
+ <ion-spinner class="action-spinner" name="circular"></ion-spinner>
102
+ }
103
+ </ion-button>
122
104
  }
105
+ }
106
+ </ion-item>
107
+ }
123
108
 
124
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
125
- <h2>{{ item.text }}</h2>
126
-
127
- @if (item.comments) {
128
- <ion-note color="medium"> {{ item.comments }} </ion-note>
129
- }
130
- </ion-label>
131
- </ion-item>
132
- }
133
-
134
- @if (item.mode == 'subtitule') {
135
- <ion-item
136
- [lines]="item.lines"
137
- [button]="item.clickable"
138
- [disabled]="item.disabled"
139
- (click)="clickHandler(item.token)"
140
- >
141
- @if (item.unreadIndicator) {
142
- <div class="unread-indicator-wrapper" slot="start">
143
- <div class="unread-indicator"></div>
144
- </div>
109
+ @if (item.mode == 'route') {
110
+ <ion-item
111
+ [lines]="item.lines"
112
+ [button]="item.clickable"
113
+ [disabled]="item.disabled"
114
+ (click)="clickHandler(item.token)"
115
+ [routerLink]="item.routerLink"
116
+ >
117
+ @if (item.unreadIndicator) {
118
+ <div class="unread-indicator-wrapper" slot="start">
119
+ <div class="unread-indicator"></div>
120
+ </div>
121
+ }
122
+
123
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
124
+ <h2>{{ item.text }}</h2>
125
+
126
+ @if (item.comments) {
127
+ <ion-note color="medium"> {{ item.comments }} </ion-note>
145
128
  }
129
+ </ion-label>
130
+ </ion-item>
131
+ }
132
+
133
+ @if (item.mode == 'subtitule') {
134
+ <ion-item
135
+ [lines]="item.lines"
136
+ [button]="item.clickable"
137
+ [disabled]="item.disabled"
138
+ (click)="clickHandler(item.token)"
139
+ >
140
+ @if (item.unreadIndicator) {
141
+ <div class="unread-indicator-wrapper" slot="start">
142
+ <div class="unread-indicator"></div>
143
+ </div>
144
+ }
145
+
146
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
147
+ <h1>{{ item.text }}</h1>
148
+ <p>{{ item.subtitle }}</p>
149
+ </ion-label>
150
+ </ion-item>
151
+ }
146
152
 
147
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
148
- <h1>{{ item.text }}</h1>
149
- <p>{{ item.subtitle }}</p>
150
- </ion-label>
151
- </ion-item>
152
- }
153
-
154
- @if (item.mode == 'avatar') {
155
- <ion-item
156
- [lines]="item.lines"
157
- [button]="item.clickable"
158
- [disabled]="item.disabled"
159
- (click)="clickHandler(item.token)"
160
- >
161
- <ion-avatar aria-hidden="true" slot="start">
162
- <img alt="" [src]="item.image" />
163
- </ion-avatar>
164
- <ion-label>{{ item.text }}</ion-label>
165
- </ion-item>
166
- }
167
-
168
- @if (item.mode == 'icon') {
169
- <ion-item
170
- [lines]="item.lines"
171
- [button]="item.clickable"
172
- [disabled]="item.disabled"
173
- (click)="clickHandler(item.token)"
174
- >
175
- <ion-icon aria-hidden="true" [name]="item.icon" size="medium" slot="start"></ion-icon>
176
- <ion-label>{{ item.text }}</ion-label>
177
- </ion-item>
178
- }
153
+ @if (item.mode == 'avatar') {
154
+ <ion-item
155
+ [lines]="item.lines"
156
+ [button]="item.clickable"
157
+ [disabled]="item.disabled"
158
+ (click)="clickHandler(item.token)"
159
+ >
160
+ <ion-avatar aria-hidden="true" slot="start">
161
+ <img alt="" [src]="item.image" />
162
+ </ion-avatar>
163
+ <ion-label>{{ item.text }}</ion-label>
164
+ </ion-item>
179
165
  }
180
- </ion-list>
181
- </div>
166
+
167
+ @if (item.mode == 'icon') {
168
+ <ion-item
169
+ [lines]="item.lines"
170
+ [button]="item.clickable"
171
+ [disabled]="item.disabled"
172
+ (click)="clickHandler(item.token)"
173
+ >
174
+ <ion-icon aria-hidden="true" [name]="item.icon" size="medium" slot="start"></ion-icon>
175
+ <ion-label>{{ item.text }}</ion-label>
176
+ </ion-item>
177
+ }
178
+ }
179
+ </ion-list>
182
180
  `, isInline: true, styles: ["ion-label{font-family:var(--ion-default-font),Arial,sans-serif}ion-note{font-family:var(--ion-default-font),Arial,sans-serif;font-weight:400}ion-button{font-family:var(--ion-default-font),Arial,sans-serif}.shadowed{box-shadow:.1875rem .625rem .5rem #1219541a}.bordered{border:1px solid}.unread-indicator{background:var(--ion-color-primary);width:.625rem;height:.625rem;border-radius:100%;position:absolute;inset-inline-start:.75rem;top:.75rem}.action-spinner{width:3.125rem;height:1rem}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonAvatar, selector: "ion-avatar" }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }] }); }
183
181
  }
184
182
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItemListComponent, decorators: [{
@@ -197,160 +195,158 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
197
195
  IonButton,
198
196
  IonSpinner,
199
197
  ], template: `
200
- <div>
201
- <ion-list
202
- [inset]="props.rounded"
203
- [class.shadowed]="props.shadowed"
204
- [class.bordered]="props.bordered"
205
- [style.borderColor]="this.color()"
206
- >
198
+ <ion-list
199
+ [inset]="props.rounded"
200
+ [class.shadowed]="props.shadowed"
201
+ [class.bordered]="props.bordered"
202
+ [style.borderColor]="this.color()"
203
+ >
207
204
  @if (props.title) {
208
205
  <ion-list-header>
209
206
  <ion-label>{{ props.title }}</ion-label>
210
207
  </ion-list-header>
211
208
  }
212
- @for (item of props.items; track item.text) {
213
- @if (item.mode == 'justext') {
214
- <ion-item
215
- [lines]="item.lines"
216
- [button]="item.clickable"
217
- [disabled]="item.disabled"
218
- (click)="clickHandler(item.token)"
219
- >
220
- @if (item.unreadIndicator) {
221
- <div class="unread-indicator-wrapper" slot="start">
222
- <div class="unread-indicator"></div>
223
- </div>
209
+ @for (item of props.items; track item.text) {
210
+ @if (item.mode == 'justext') {
211
+ <ion-item
212
+ [lines]="item.lines"
213
+ [button]="item.clickable"
214
+ [disabled]="item.disabled"
215
+ (click)="clickHandler(item.token)"
216
+ >
217
+ @if (item.unreadIndicator) {
218
+ <div class="unread-indicator-wrapper" slot="start">
219
+ <div class="unread-indicator"></div>
220
+ </div>
221
+ }
222
+
223
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
224
+ <h2>{{ item.text }}</h2>
225
+
226
+ @if (item.comments) {
227
+ <ion-note color="medium"> {{ item.comments }} </ion-note>
224
228
  }
229
+ </ion-label>
225
230
 
226
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
227
- <h2>{{ item.text }}</h2>
231
+ @if (item.endNote) {
232
+ <ion-note slot="end">{{ item.endNote }}</ion-note>
233
+ }
234
+ </ion-item>
235
+ }
228
236
 
229
- @if (item.comments) {
230
- <ion-note color="medium"> {{ item.comments }} </ion-note>
231
- }
232
- </ion-label>
237
+ @if (item.mode == 'actionable') {
238
+ <ion-item [lines]="item.lines" [button]="item.clickable" [disabled]="item.disabled">
239
+ @if (item.unreadIndicator) {
240
+ <div class="unread-indicator-wrapper" slot="start">
241
+ <div class="unread-indicator"></div>
242
+ </div>
243
+ }
233
244
 
234
- @if (item.endNote) {
235
- <ion-note slot="end">{{ item.endNote }}</ion-note>
236
- }
237
- </ion-item>
238
- }
239
-
240
- @if (item.mode == 'actionable') {
241
- <ion-item [lines]="item.lines" [button]="item.clickable" [disabled]="item.disabled">
242
- @if (item.unreadIndicator) {
243
- <div class="unread-indicator-wrapper" slot="start">
244
- <div class="unread-indicator"></div>
245
- </div>
246
- }
245
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
246
+ <h2>{{ item.text }}</h2>
247
247
 
248
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
249
- <h2>{{ item.text }}</h2>
250
-
251
- @if (item.comments) {
252
- <ion-note color="medium"> {{ item.comments }} </ion-note>
253
- }
254
- </ion-label>
255
-
256
- @if (item.actions) {
257
- @for (action of item.actions; track action.token) {
258
- <ion-button
259
- fill="outline"
260
- color="dark"
261
- slot="end"
262
- [disabled]="action.state === states.WORKING"
263
- (click)="onActionClickHandler(action.token)"
264
- >
265
- @if (action.state !== states.WORKING) {
266
- @if (action.icon) {
267
- <ion-icon aria-hidden="true" [name]="action.icon" size="medium" slot="start"></ion-icon>
268
- }
269
-
270
- {{ action.description }}
248
+ @if (item.comments) {
249
+ <ion-note color="medium"> {{ item.comments }} </ion-note>
250
+ }
251
+ </ion-label>
252
+
253
+ @if (item.actions) {
254
+ @for (action of item.actions; track action.token) {
255
+ <ion-button
256
+ fill="outline"
257
+ color="dark"
258
+ slot="end"
259
+ [disabled]="action.state === states.WORKING"
260
+ (click)="onActionClickHandler(action.token)"
261
+ >
262
+ @if (action.state !== states.WORKING) {
263
+ @if (action.icon) {
264
+ <ion-icon aria-hidden="true" [name]="action.icon" size="medium" slot="start"></ion-icon>
271
265
  }
272
266
 
273
- @if (action.state === states.WORKING) {
274
- <ion-spinner class="action-spinner" name="circular"></ion-spinner>
275
- }
276
- </ion-button>
277
- }
278
- }
279
- </ion-item>
280
- }
281
-
282
- @if (item.mode == 'route') {
283
- <ion-item
284
- [lines]="item.lines"
285
- [button]="item.clickable"
286
- [disabled]="item.disabled"
287
- (click)="clickHandler(item.token)"
288
- [routerLink]="item.routerLink"
289
- >
290
- @if (item.unreadIndicator) {
291
- <div class="unread-indicator-wrapper" slot="start">
292
- <div class="unread-indicator"></div>
293
- </div>
267
+ {{ action.description }}
268
+ }
269
+
270
+ @if (action.state === states.WORKING) {
271
+ <ion-spinner class="action-spinner" name="circular"></ion-spinner>
272
+ }
273
+ </ion-button>
294
274
  }
275
+ }
276
+ </ion-item>
277
+ }
295
278
 
296
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
297
- <h2>{{ item.text }}</h2>
298
-
299
- @if (item.comments) {
300
- <ion-note color="medium"> {{ item.comments }} </ion-note>
301
- }
302
- </ion-label>
303
- </ion-item>
304
- }
305
-
306
- @if (item.mode == 'subtitule') {
307
- <ion-item
308
- [lines]="item.lines"
309
- [button]="item.clickable"
310
- [disabled]="item.disabled"
311
- (click)="clickHandler(item.token)"
312
- >
313
- @if (item.unreadIndicator) {
314
- <div class="unread-indicator-wrapper" slot="start">
315
- <div class="unread-indicator"></div>
316
- </div>
279
+ @if (item.mode == 'route') {
280
+ <ion-item
281
+ [lines]="item.lines"
282
+ [button]="item.clickable"
283
+ [disabled]="item.disabled"
284
+ (click)="clickHandler(item.token)"
285
+ [routerLink]="item.routerLink"
286
+ >
287
+ @if (item.unreadIndicator) {
288
+ <div class="unread-indicator-wrapper" slot="start">
289
+ <div class="unread-indicator"></div>
290
+ </div>
291
+ }
292
+
293
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
294
+ <h2>{{ item.text }}</h2>
295
+
296
+ @if (item.comments) {
297
+ <ion-note color="medium"> {{ item.comments }} </ion-note>
317
298
  }
299
+ </ion-label>
300
+ </ion-item>
301
+ }
302
+
303
+ @if (item.mode == 'subtitule') {
304
+ <ion-item
305
+ [lines]="item.lines"
306
+ [button]="item.clickable"
307
+ [disabled]="item.disabled"
308
+ (click)="clickHandler(item.token)"
309
+ >
310
+ @if (item.unreadIndicator) {
311
+ <div class="unread-indicator-wrapper" slot="start">
312
+ <div class="unread-indicator"></div>
313
+ </div>
314
+ }
315
+
316
+ <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
317
+ <h1>{{ item.text }}</h1>
318
+ <p>{{ item.subtitle }}</p>
319
+ </ion-label>
320
+ </ion-item>
321
+ }
318
322
 
319
- <ion-label [ngClass]="{ 'ion-text-nowrap': item.ellipsis }">
320
- <h1>{{ item.text }}</h1>
321
- <p>{{ item.subtitle }}</p>
322
- </ion-label>
323
- </ion-item>
324
- }
325
-
326
- @if (item.mode == 'avatar') {
327
- <ion-item
328
- [lines]="item.lines"
329
- [button]="item.clickable"
330
- [disabled]="item.disabled"
331
- (click)="clickHandler(item.token)"
332
- >
333
- <ion-avatar aria-hidden="true" slot="start">
334
- <img alt="" [src]="item.image" />
335
- </ion-avatar>
336
- <ion-label>{{ item.text }}</ion-label>
337
- </ion-item>
338
- }
339
-
340
- @if (item.mode == 'icon') {
341
- <ion-item
342
- [lines]="item.lines"
343
- [button]="item.clickable"
344
- [disabled]="item.disabled"
345
- (click)="clickHandler(item.token)"
346
- >
347
- <ion-icon aria-hidden="true" [name]="item.icon" size="medium" slot="start"></ion-icon>
348
- <ion-label>{{ item.text }}</ion-label>
349
- </ion-item>
350
- }
323
+ @if (item.mode == 'avatar') {
324
+ <ion-item
325
+ [lines]="item.lines"
326
+ [button]="item.clickable"
327
+ [disabled]="item.disabled"
328
+ (click)="clickHandler(item.token)"
329
+ >
330
+ <ion-avatar aria-hidden="true" slot="start">
331
+ <img alt="" [src]="item.image" />
332
+ </ion-avatar>
333
+ <ion-label>{{ item.text }}</ion-label>
334
+ </ion-item>
351
335
  }
352
- </ion-list>
353
- </div>
336
+
337
+ @if (item.mode == 'icon') {
338
+ <ion-item
339
+ [lines]="item.lines"
340
+ [button]="item.clickable"
341
+ [disabled]="item.disabled"
342
+ (click)="clickHandler(item.token)"
343
+ >
344
+ <ion-icon aria-hidden="true" [name]="item.icon" size="medium" slot="start"></ion-icon>
345
+ <ion-label>{{ item.text }}</ion-label>
346
+ </ion-item>
347
+ }
348
+ }
349
+ </ion-list>
354
350
  `, styles: ["ion-label{font-family:var(--ion-default-font),Arial,sans-serif}ion-note{font-family:var(--ion-default-font),Arial,sans-serif;font-weight:400}ion-button{font-family:var(--ion-default-font),Arial,sans-serif}.shadowed{box-shadow:.1875rem .625rem .5rem #1219541a}.bordered{border:1px solid}.unread-indicator{background:var(--ion-color-primary);width:.625rem;height:.625rem;border-radius:100%;position:absolute;inset-inline-start:.75rem;top:.75rem}.action-spinner{width:3.125rem;height:1rem}\n"] }]
355
351
  }], ctorParameters: () => [{ type: i1.IconService }], propDecorators: { props: [{
356
352
  type: Input
@@ -359,4 +355,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
359
355
  }], onActionClick: [{
360
356
  type: Output
361
357
  }] } });
362
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2l0ZW0tbGlzdC9pdGVtLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLGFBQWEsRUFDYixPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQWtMOUMsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUFZLElBQWlCO1FBWjdCLFdBQU0sR0FBRyxlQUFlLENBQUM7UUFDekIsaUJBQVksR0FBRyxTQUFTLENBQUM7UUFNekIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHckMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRVgsQ0FBQztJQUVqQyxRQUFRLEtBQUksQ0FBQztJQUViLFlBQVksQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdELENBQUM7K0dBM0JVLGlCQUFpQjttR0FBakIsaUJBQWlCLHNLQTlKbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkpULGtqQkF4S0MsVUFBVSxvT0FFVixPQUFPLG9GQUNQLE9BQU8seUZBQ1AsYUFBYSxnR0FDYixRQUFRLDZGQUNSLE9BQU8sZ0ZBQ1AsT0FBTywwTkFDUCxTQUFTLHVEQUNULE9BQU8sMkpBQ1AsU0FBUyxvUEFDVCxVQUFVOzs0RkFnS0QsaUJBQWlCO2tCQS9LN0IsU0FBUzsrQkFDRSxlQUFlLGNBQ2IsSUFBSSxXQUNQO3dCQUNQLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixRQUFRO3dCQUNSLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxTQUFTO3dCQUNULE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxVQUFVO3FCQUNYLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkpUO2dGQVFELEtBQUs7c0JBREosS0FBSztnQkFJTixPQUFPO3NCQUROLE1BQU07Z0JBSVAsYUFBYTtzQkFEWixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7XG4gIElvbkF2YXRhcixcbiAgSW9uQnV0dG9uLFxuICBJb25JY29uLFxuICBJb25JdGVtLFxuICBJb25MYWJlbCxcbiAgSW9uTGlzdCxcbiAgSW9uTGlzdEhlYWRlcixcbiAgSW9uTm90ZSxcbiAgSW9uU3Bpbm5lcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJY29uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ljb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgcmVzb2x2ZUNvbG9yIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL3N0eWxlcyc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBMaXN0TWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWl0ZW0tbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE5nU3R5bGUsXG4gICAgTmdDbGFzcyxcbiAgICBJb25MaXN0LFxuICAgIElvbkxpc3RIZWFkZXIsXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uTm90ZSxcbiAgICBJb25JdGVtLFxuICAgIElvbkF2YXRhcixcbiAgICBJb25JY29uLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25TcGlubmVyLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXY+XG4gICAgICA8aW9uLWxpc3RcbiAgICAgICAgW2luc2V0XT1cInByb3BzLnJvdW5kZWRcIlxuICAgICAgICBbY2xhc3Muc2hhZG93ZWRdPVwicHJvcHMuc2hhZG93ZWRcIlxuICAgICAgICBbY2xhc3MuYm9yZGVyZWRdPVwicHJvcHMuYm9yZGVyZWRcIlxuICAgICAgICBbc3R5bGUuYm9yZGVyQ29sb3JdPVwidGhpcy5jb2xvcigpXCJcbiAgICAgID5cbiAgICAgIEBpZiAocHJvcHMudGl0bGUpIHtcbiAgICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWxhYmVsPnt7IHByb3BzLnRpdGxlIH19PC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgfVxuICAgICAgICBAZm9yIChpdGVtIG9mIHByb3BzLml0ZW1zOyB0cmFjayBpdGVtLnRleHQpIHtcbiAgICAgICAgICBAaWYgKGl0ZW0ubW9kZSA9PSAnanVzdGV4dCcpIHtcbiAgICAgICAgICAgIDxpb24taXRlbVxuICAgICAgICAgICAgICBbbGluZXNdPVwiaXRlbS5saW5lc1wiXG4gICAgICAgICAgICAgIFtidXR0b25dPVwiaXRlbS5jbGlja2FibGVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoaXRlbS50b2tlbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0udW5yZWFkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3Itd3JhcHBlclwiIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgW25nQ2xhc3NdPVwieyAnaW9uLXRleHQtbm93cmFwJzogaXRlbS5lbGxpcHNpcyB9XCI+XG4gICAgICAgICAgICAgICAgPGgyPnt7IGl0ZW0udGV4dCB9fTwvaDI+XG5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjb2xvcj1cIm1lZGl1bVwiPiB7eyBpdGVtLmNvbW1lbnRzIH19IDwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgICAgICAgICBAaWYgKGl0ZW0uZW5kTm90ZSkge1xuICAgICAgICAgICAgICAgIDxpb24tbm90ZSBzbG90PVwiZW5kXCI+e3sgaXRlbS5lbmROb3RlIH19PC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBAaWYgKGl0ZW0ubW9kZSA9PSAnYWN0aW9uYWJsZScpIHtcbiAgICAgICAgICAgIDxpb24taXRlbSBbbGluZXNdPVwiaXRlbS5saW5lc1wiIFtidXR0b25dPVwiaXRlbS5jbGlja2FibGVcIiBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0udW5yZWFkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3Itd3JhcHBlclwiIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgW25nQ2xhc3NdPVwieyAnaW9uLXRleHQtbm93cmFwJzogaXRlbS5lbGxpcHNpcyB9XCI+XG4gICAgICAgICAgICAgICAgPGgyPnt7IGl0ZW0udGV4dCB9fTwvaDI+XG5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjb2xvcj1cIm1lZGl1bVwiPiB7eyBpdGVtLmNvbW1lbnRzIH19IDwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cblxuICAgICAgICAgICAgICBAaWYgKGl0ZW0uYWN0aW9ucykge1xuICAgICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBpdGVtLmFjdGlvbnM7IHRyYWNrIGFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgICBzbG90PVwiZW5kXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFjdGlvbi5zdGF0ZSA9PT0gc3RhdGVzLldPUktJTkdcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25DbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aW9uLnN0YXRlICE9PSBzdGF0ZXMuV09SS0lORykge1xuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aW9uLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmFtZV09XCJhY3Rpb24uaWNvblwiIHNpemU9XCJtZWRpdW1cIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChhY3Rpb24uc3RhdGUgPT09IHN0YXRlcy5XT1JLSU5HKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIGNsYXNzPVwiYWN0aW9uLXNwaW5uZXJcIiBuYW1lPVwiY2lyY3VsYXJcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoaXRlbS5tb2RlID09ICdyb3V0ZScpIHtcbiAgICAgICAgICAgIDxpb24taXRlbVxuICAgICAgICAgICAgICBbbGluZXNdPVwiaXRlbS5saW5lc1wiXG4gICAgICAgICAgICAgIFtidXR0b25dPVwiaXRlbS5jbGlja2FibGVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoaXRlbS50b2tlbilcIlxuICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlckxpbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0udW5yZWFkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3Itd3JhcHBlclwiIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgW25nQ2xhc3NdPVwieyAnaW9uLXRleHQtbm93cmFwJzogaXRlbS5lbGxpcHNpcyB9XCI+XG4gICAgICAgICAgICAgICAgPGgyPnt7IGl0ZW0udGV4dCB9fTwvaDI+XG5cbiAgICAgICAgICAgICAgICBAaWYgKGl0ZW0uY29tbWVudHMpIHtcbiAgICAgICAgICAgICAgICAgIDxpb24tbm90ZSBjb2xvcj1cIm1lZGl1bVwiPiB7eyBpdGVtLmNvbW1lbnRzIH19IDwvaW9uLW5vdGU+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChpdGVtLm1vZGUgPT0gJ3N1YnRpdHVsZScpIHtcbiAgICAgICAgICAgIDxpb24taXRlbVxuICAgICAgICAgICAgICBbbGluZXNdPVwiaXRlbS5saW5lc1wiXG4gICAgICAgICAgICAgIFtidXR0b25dPVwiaXRlbS5jbGlja2FibGVcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoaXRlbS50b2tlbilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBAaWYgKGl0ZW0udW5yZWFkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3Itd3JhcHBlclwiIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3JcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIDxpb24tbGFiZWwgW25nQ2xhc3NdPVwieyAnaW9uLXRleHQtbm93cmFwJzogaXRlbS5lbGxpcHNpcyB9XCI+XG4gICAgICAgICAgICAgICAgPGgxPnt7IGl0ZW0udGV4dCB9fTwvaDE+XG4gICAgICAgICAgICAgICAgPHA+e3sgaXRlbS5zdWJ0aXRsZSB9fTwvcD5cbiAgICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoaXRlbS5tb2RlID09ICdhdmF0YXInKSB7XG4gICAgICAgICAgICA8aW9uLWl0ZW1cbiAgICAgICAgICAgICAgW2xpbmVzXT1cIml0ZW0ubGluZXNcIlxuICAgICAgICAgICAgICBbYnV0dG9uXT1cIml0ZW0uY2xpY2thYmxlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGl0ZW0udG9rZW4pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1hdmF0YXIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc2xvdD1cInN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBbc3JjXT1cIml0ZW0uaW1hZ2VcIiAvPlxuICAgICAgICAgICAgICA8L2lvbi1hdmF0YXI+XG4gICAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgaXRlbS50ZXh0IH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAoaXRlbS5tb2RlID09ICdpY29uJykge1xuICAgICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICAgIFtsaW5lc109XCJpdGVtLmxpbmVzXCJcbiAgICAgICAgICAgICAgW2J1dHRvbl09XCJpdGVtLmNsaWNrYWJsZVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrSGFuZGxlcihpdGVtLnRva2VuKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmFtZV09XCJpdGVtLmljb25cIiBzaXplPVwibWVkaXVtXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBpdGVtLnRleHQgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L2lvbi1saXN0PlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9pdGVtLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSXRlbUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG4gIGRlZmF1bHRDb2xvciA9ICdwcmltYXJ5JztcblxuICBASW5wdXQoKVxuICBwcm9wczogTGlzdE1ldGFkYXRhO1xuXG4gIEBPdXRwdXQoKVxuICBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG9uQWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihpY29uOiBJY29uU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vbkNsaWNrLmVtaXQodG9rZW4pO1xuICB9XG5cbiAgb25BY3Rpb25DbGlja0hhbmRsZXIodG9rZW4/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2suZW1pdCh0b2tlbik7XG4gIH1cblxuICBjb2xvcigpIHtcbiAgICByZXR1cm4gcmVzb2x2ZUNvbG9yKHRoaXMucHJvcHMuY29sb3IgfHwgdGhpcy5kZWZhdWx0Q29sb3IpO1xuICB9XG59XG4iXX0=
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2l0ZW0tbGlzdC9pdGVtLWxpc3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxFQUNQLE9BQU8sRUFDUCxRQUFRLEVBQ1IsT0FBTyxFQUNQLGFBQWEsRUFDYixPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0sMkJBQTJCLENBQUM7QUFFbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQWdMOUMsTUFBTSxPQUFPLGlCQUFpQjtJQWE1QixZQUFZLElBQWlCO1FBWjdCLFdBQU0sR0FBRyxlQUFlLENBQUM7UUFDekIsaUJBQVksR0FBRyxTQUFTLENBQUM7UUFNekIsWUFBTyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHckMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBRVgsQ0FBQztJQUVqQyxRQUFRLEtBQUksQ0FBQztJQUViLFlBQVksQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxLQUFjO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdELENBQUM7K0dBM0JVLGlCQUFpQjttR0FBakIsaUJBQWlCLHNLQTVKbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlKVCxrakJBdEtDLFVBQVUsb09BRVYsT0FBTyxvRkFDUCxPQUFPLHlGQUNQLGFBQWEsZ0dBQ2IsUUFBUSw2RkFDUixPQUFPLGdGQUNQLE9BQU8sME5BQ1AsU0FBUyx1REFDVCxPQUFPLDJKQUNQLFNBQVMsb1BBQ1QsVUFBVTs7NEZBOEpELGlCQUFpQjtrQkE3SzdCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUDt3QkFDUCxVQUFVO3dCQUNWLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsUUFBUTt3QkFDUixPQUFPO3dCQUNQLE9BQU87d0JBQ1AsU0FBUzt3QkFDVCxPQUFPO3dCQUNQLFNBQVM7d0JBQ1QsVUFBVTtxQkFDWCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5SlQ7Z0ZBUUQsS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ1N0eWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlckxpbmsgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgSW9uQXZhdGFyLFxuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25MaXN0SGVhZGVyLFxuICBJb25Ob3RlLFxuICBJb25TcGlubmVyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaWNvbnMuc2VydmljZSc7XG5pbXBvcnQgeyByZXNvbHZlQ29sb3IgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvc3R5bGVzJztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IExpc3RNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtaXRlbS1saXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmssXG4gICAgTmdTdHlsZSxcbiAgICBOZ0NsYXNzLFxuICAgIElvbkxpc3QsXG4gICAgSW9uTGlzdEhlYWRlcixcbiAgICBJb25MYWJlbCxcbiAgICBJb25Ob3RlLFxuICAgIElvbkl0ZW0sXG4gICAgSW9uQXZhdGFyLFxuICAgIElvbkljb24sXG4gICAgSW9uQnV0dG9uLFxuICAgIElvblNwaW5uZXIsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1saXN0XG4gICAgICBbaW5zZXRdPVwicHJvcHMucm91bmRlZFwiXG4gICAgICBbY2xhc3Muc2hhZG93ZWRdPVwicHJvcHMuc2hhZG93ZWRcIlxuICAgICAgW2NsYXNzLmJvcmRlcmVkXT1cInByb3BzLmJvcmRlcmVkXCJcbiAgICAgIFtzdHlsZS5ib3JkZXJDb2xvcl09XCJ0aGlzLmNvbG9yKClcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMudGl0bGUpIHtcbiAgICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgICA8aW9uLWxhYmVsPnt7IHByb3BzLnRpdGxlIH19PC9pb24tbGFiZWw+XG4gICAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgfVxuICAgICAgQGZvciAoaXRlbSBvZiBwcm9wcy5pdGVtczsgdHJhY2sgaXRlbS50ZXh0KSB7XG4gICAgICAgIEBpZiAoaXRlbS5tb2RlID09ICdqdXN0ZXh0Jykge1xuICAgICAgICAgIDxpb24taXRlbVxuICAgICAgICAgICAgW2xpbmVzXT1cIml0ZW0ubGluZXNcIlxuICAgICAgICAgICAgW2J1dHRvbl09XCJpdGVtLmNsaWNrYWJsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGl0ZW0udG9rZW4pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGl0ZW0udW5yZWFkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1bnJlYWQtaW5kaWNhdG9yLXdyYXBwZXJcIiBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidW5yZWFkLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGlvbi1sYWJlbCBbbmdDbGFzc109XCJ7ICdpb24tdGV4dC1ub3dyYXAnOiBpdGVtLmVsbGlwc2lzIH1cIj5cbiAgICAgICAgICAgICAgPGgyPnt7IGl0ZW0udGV4dCB9fTwvaDI+XG5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1ub3RlIGNvbG9yPVwibWVkaXVtXCI+IHt7IGl0ZW0uY29tbWVudHMgfX0gPC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tbGFiZWw+XG5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5lbmROb3RlKSB7XG4gICAgICAgICAgICAgIDxpb24tbm90ZSBzbG90PVwiZW5kXCI+e3sgaXRlbS5lbmROb3RlIH19PC9pb24tbm90ZT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChpdGVtLm1vZGUgPT0gJ2FjdGlvbmFibGUnKSB7XG4gICAgICAgICAgPGlvbi1pdGVtIFtsaW5lc109XCJpdGVtLmxpbmVzXCIgW2J1dHRvbl09XCJpdGVtLmNsaWNrYWJsZVwiIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCI+XG4gICAgICAgICAgICBAaWYgKGl0ZW0udW5yZWFkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1bnJlYWQtaW5kaWNhdG9yLXdyYXBwZXJcIiBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidW5yZWFkLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGlvbi1sYWJlbCBbbmdDbGFzc109XCJ7ICdpb24tdGV4dC1ub3dyYXAnOiBpdGVtLmVsbGlwc2lzIH1cIj5cbiAgICAgICAgICAgICAgPGgyPnt7IGl0ZW0udGV4dCB9fTwvaDI+XG5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1ub3RlIGNvbG9yPVwibWVkaXVtXCI+IHt7IGl0ZW0uY29tbWVudHMgfX0gPC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tbGFiZWw+XG5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5hY3Rpb25zKSB7XG4gICAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBpdGVtLmFjdGlvbnM7IHRyYWNrIGFjdGlvbi50b2tlbikge1xuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICAgICAgICBjb2xvcj1cImRhcmtcIlxuICAgICAgICAgICAgICAgICAgc2xvdD1cImVuZFwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLnN0YXRlID09PSBzdGF0ZXMuV09SS0lOR1wiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25DbGlja0hhbmRsZXIoYWN0aW9uLnRva2VuKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgQGlmIChhY3Rpb24uc3RhdGUgIT09IHN0YXRlcy5XT1JLSU5HKSB7XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aW9uLmljb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gYXJpYS1oaWRkZW49XCJ0cnVlXCIgW25hbWVdPVwiYWN0aW9uLmljb25cIiBzaXplPVwibWVkaXVtXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHt7IGFjdGlvbi5kZXNjcmlwdGlvbiB9fVxuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbi5zdGF0ZSA9PT0gc3RhdGVzLldPUktJTkcpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIGNsYXNzPVwiYWN0aW9uLXNwaW5uZXJcIiBuYW1lPVwiY2lyY3VsYXJcIj48L2lvbi1zcGlubmVyPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGl0ZW0ubW9kZSA9PSAncm91dGUnKSB7XG4gICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICBbbGluZXNdPVwiaXRlbS5saW5lc1wiXG4gICAgICAgICAgICBbYnV0dG9uXT1cIml0ZW0uY2xpY2thYmxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoaXRlbS50b2tlbilcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGl0ZW0udW5yZWFkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1bnJlYWQtaW5kaWNhdG9yLXdyYXBwZXJcIiBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidW5yZWFkLWluZGljYXRvclwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgPGlvbi1sYWJlbCBbbmdDbGFzc109XCJ7ICdpb24tdGV4dC1ub3dyYXAnOiBpdGVtLmVsbGlwc2lzIH1cIj5cbiAgICAgICAgICAgICAgPGgyPnt7IGl0ZW0udGV4dCB9fTwvaDI+XG5cbiAgICAgICAgICAgICAgQGlmIChpdGVtLmNvbW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgPGlvbi1ub3RlIGNvbG9yPVwibWVkaXVtXCI+IHt7IGl0ZW0uY29tbWVudHMgfX0gPC9pb24tbm90ZT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoaXRlbS5tb2RlID09ICdzdWJ0aXR1bGUnKSB7XG4gICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICBbbGluZXNdPVwiaXRlbS5saW5lc1wiXG4gICAgICAgICAgICBbYnV0dG9uXT1cIml0ZW0uY2xpY2thYmxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoaXRlbS50b2tlbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIEBpZiAoaXRlbS51bnJlYWRJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVucmVhZC1pbmRpY2F0b3Itd3JhcHBlclwiIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1bnJlYWQtaW5kaWNhdG9yXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA8aW9uLWxhYmVsIFtuZ0NsYXNzXT1cInsgJ2lvbi10ZXh0LW5vd3JhcCc6IGl0ZW0uZWxsaXBzaXMgfVwiPlxuICAgICAgICAgICAgICA8aDE+e3sgaXRlbS50ZXh0IH19PC9oMT5cbiAgICAgICAgICAgICAgPHA+e3sgaXRlbS5zdWJ0aXRsZSB9fTwvcD5cbiAgICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLWl0ZW0+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKGl0ZW0ubW9kZSA9PSAnYXZhdGFyJykge1xuICAgICAgICAgIDxpb24taXRlbVxuICAgICAgICAgICAgW2xpbmVzXT1cIml0ZW0ubGluZXNcIlxuICAgICAgICAgICAgW2J1dHRvbl09XCJpdGVtLmNsaWNrYWJsZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tIYW5kbGVyKGl0ZW0udG9rZW4pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW9uLWF2YXRhciBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwic3RhcnRcIj5cbiAgICAgICAgICAgICAgPGltZyBhbHQ9XCJcIiBbc3JjXT1cIml0ZW0uaW1hZ2VcIiAvPlxuICAgICAgICAgICAgPC9pb24tYXZhdGFyPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD57eyBpdGVtLnRleHQgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChpdGVtLm1vZGUgPT0gJ2ljb24nKSB7XG4gICAgICAgICAgPGlvbi1pdGVtXG4gICAgICAgICAgICBbbGluZXNdPVwiaXRlbS5saW5lc1wiXG4gICAgICAgICAgICBbYnV0dG9uXT1cIml0ZW0uY2xpY2thYmxlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGlja0hhbmRsZXIoaXRlbS50b2tlbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpb24taWNvbiBhcmlhLWhpZGRlbj1cInRydWVcIiBbbmFtZV09XCJpdGVtLmljb25cIiBzaXplPVwibWVkaXVtXCIgc2xvdD1cInN0YXJ0XCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgaXRlbS50ZXh0IH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24taXRlbT5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvaW9uLWxpc3Q+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2l0ZW0tbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBJdGVtTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHN0YXRlcyA9IENvbXBvbmVudFN0YXRlcztcbiAgZGVmYXVsdENvbG9yID0gJ3ByaW1hcnknO1xuXG4gIEBJbnB1dCgpXG4gIHByb3BzOiBMaXN0TWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAT3V0cHV0KClcbiAgb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKGljb246IEljb25TZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBjbGlja0hhbmRsZXIodG9rZW4/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh0b2tlbik7XG4gIH1cblxuICBvbkFjdGlvbkNsaWNrSGFuZGxlcih0b2tlbj86IHN0cmluZykge1xuICAgIHRoaXMub25BY3Rpb25DbGljay5lbWl0KHRva2VuKTtcbiAgfVxuXG4gIGNvbG9yKCkge1xuICAgIHJldHVybiByZXNvbHZlQ29sb3IodGhpcy5wcm9wcy5jb2xvciB8fCB0aGlzLmRlZmF1bHRDb2xvcik7XG4gIH1cbn1cbiJdfQ==