ctt-babylon 0.26.25 → 0.26.26
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.
- package/esm2022/lib/components/core/babylon-booking-banner/babylon-booking-banner.component.mjs +2 -2
- package/esm2022/lib/components/core/babylon-global-badge/babylon-global-badge.component.mjs +3 -3
- package/esm2022/lib/components/core/babylon-list-img/babylon-list-img.component.mjs +8 -5
- package/esm2022/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.mjs +9 -3
- package/esm2022/lib/components/core/babylon-sli-c3-txt-img-cta/babylon-sli-c3-txt-img-cta.component.mjs +2 -2
- package/esm2022/lib/components/external/core/c4-me-txt-svg-cta/c4-me-txt-svg-cta.component.mjs +13 -13
- package/esm2022/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.mjs +53 -35
- package/esm2022/lib/components/external/core/modulo-menu-home/modulo-menu-home.component.mjs +10 -10
- package/esm2022/lib/components/external/core/top-c2-img-txt/top-c2-img-txt.component.mjs +3 -3
- package/esm2022/lib/directives/babylon-galleries/babylon-light-gallery.directive.mjs +5 -3
- package/esm2022/lib/directives/sliders/slick-init.directive.mjs +35 -19
- package/esm2022/lib/directives/sliders/swiper-init.directive.mjs +3 -3
- package/fesm2022/ctt-babylon.mjs +2 -2
- package/fesm2022/ctt-babylon.mjs.map +1 -1
- package/lib/components/core/babylon-list-img/babylon-list-img.component.d.ts +1 -0
- package/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.d.ts +4 -2
- package/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.d.ts +1 -1
- package/lib/directives/sliders/slick-init.directive.d.ts +2 -1
- package/lib/directives/sliders/swiper-init.directive.d.ts +1 -1
- package/package.json +1 -1
package/esm2022/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Component, Inject, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { Component, Inject, Input, ViewEncapsulation, } from '@angular/core';
|
|
3
3
|
import { BabylonLightGalleryDirective } from '../../../../directives/babylon-galleries/babylon-light-gallery.directive';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
import * as i1 from "@angular/platform-browser";
|
|
@@ -8,27 +8,27 @@ const DEFAULT_SECTIONS_NAV = {
|
|
|
8
8
|
id: 'sections-nav',
|
|
9
9
|
title: '',
|
|
10
10
|
subtitle: '',
|
|
11
|
-
items: []
|
|
11
|
+
items: [],
|
|
12
12
|
};
|
|
13
13
|
const DEFAULT_ROOMS_NAV = {
|
|
14
14
|
id: 'rooms-nav',
|
|
15
15
|
title: '',
|
|
16
16
|
subtitle: '',
|
|
17
|
-
items: []
|
|
17
|
+
items: [],
|
|
18
18
|
};
|
|
19
19
|
const DEFAULT_CONTENT = {
|
|
20
20
|
bodyClass: '',
|
|
21
21
|
header: {
|
|
22
22
|
title: '',
|
|
23
|
-
buttons: []
|
|
23
|
+
buttons: [],
|
|
24
24
|
},
|
|
25
25
|
sectionsNav: DEFAULT_SECTIONS_NAV,
|
|
26
26
|
roomsNav: DEFAULT_ROOMS_NAV,
|
|
27
27
|
galleryItems: [],
|
|
28
28
|
video: {
|
|
29
29
|
title: '',
|
|
30
|
-
youtubeId: ''
|
|
31
|
-
}
|
|
30
|
+
youtubeId: '',
|
|
31
|
+
},
|
|
32
32
|
};
|
|
33
33
|
export class LisC3FilImgTxComponent {
|
|
34
34
|
constructor(document, renderer, sanitizer) {
|
|
@@ -45,7 +45,8 @@ export class LisC3FilImgTxComponent {
|
|
|
45
45
|
this.openNavId = null;
|
|
46
46
|
this.videoOpen = false;
|
|
47
47
|
this.bodyClasses = [];
|
|
48
|
-
this.bodyClasses =
|
|
48
|
+
this.bodyClasses =
|
|
49
|
+
this.data.bodyClass?.split(' ').filter(Boolean) ?? [];
|
|
49
50
|
this.safeVideoUrl = this.buildSafeVideoUrl();
|
|
50
51
|
}
|
|
51
52
|
ngOnInit() {
|
|
@@ -53,8 +54,8 @@ export class LisC3FilImgTxComponent {
|
|
|
53
54
|
this.remapContent();
|
|
54
55
|
}
|
|
55
56
|
ngOnDestroy() {
|
|
56
|
-
this.bodyClasses.forEach((cls) => this.renderer
|
|
57
|
-
this.renderer
|
|
57
|
+
this.bodyClasses.forEach((cls) => this.renderer?.removeClass(this.document.body, cls));
|
|
58
|
+
this.renderer?.removeClass(this.document.body, 'noscroll');
|
|
58
59
|
}
|
|
59
60
|
ngOnChanges(changes) {
|
|
60
61
|
if (changes['filters'] || changes['images'] || changes['title']) {
|
|
@@ -123,7 +124,7 @@ export class LisC3FilImgTxComponent {
|
|
|
123
124
|
}, {});
|
|
124
125
|
return {
|
|
125
126
|
...baseClasses,
|
|
126
|
-
hide: !this.isItemVisible(item)
|
|
127
|
+
hide: !this.isItemVisible(item),
|
|
127
128
|
};
|
|
128
129
|
}
|
|
129
130
|
buildSafeVideoUrl() {
|
|
@@ -145,16 +146,16 @@ export class LisC3FilImgTxComponent {
|
|
|
145
146
|
'iv_load_policy=3',
|
|
146
147
|
'autohide=0',
|
|
147
148
|
'rel=0',
|
|
148
|
-
'playsinline=1'
|
|
149
|
+
'playsinline=1',
|
|
149
150
|
].join('&');
|
|
150
151
|
return this.sanitizer.bypassSecurityTrustResourceUrl(`https://www.youtube.com/embed/${id}?${params}`);
|
|
151
152
|
}
|
|
152
153
|
updateScrollLock() {
|
|
153
154
|
if (this.openNavId || this.videoOpen) {
|
|
154
|
-
this.renderer
|
|
155
|
+
this.renderer?.addClass(this.document.body, 'noscroll');
|
|
155
156
|
}
|
|
156
157
|
else {
|
|
157
|
-
this.renderer
|
|
158
|
+
this.renderer?.removeClass(this.document.body, 'noscroll');
|
|
158
159
|
}
|
|
159
160
|
}
|
|
160
161
|
remapContent() {
|
|
@@ -171,16 +172,19 @@ export class LisC3FilImgTxComponent {
|
|
|
171
172
|
if (!filters?.length)
|
|
172
173
|
return [];
|
|
173
174
|
const normalized = [...filters]
|
|
174
|
-
.sort((a, b) => (a.order ?? 0) -
|
|
175
|
+
.sort((a, b) => (a.order ?? 0) -
|
|
176
|
+
(b.order ?? 0))
|
|
175
177
|
.map((filter, index) => ({
|
|
176
|
-
id: typeof filter.id === 'number'
|
|
178
|
+
id: typeof filter.id === 'number'
|
|
179
|
+
? filter.id
|
|
180
|
+
: index,
|
|
177
181
|
text: filter.text ??
|
|
178
182
|
filter.name ??
|
|
179
183
|
'',
|
|
180
184
|
rooms: !!filter.rooms,
|
|
181
185
|
room: !!filter.room,
|
|
182
186
|
all: !!filter.all,
|
|
183
|
-
multimedia: filter.multimedia
|
|
187
|
+
multimedia: filter.multimedia,
|
|
184
188
|
}));
|
|
185
189
|
return normalized;
|
|
186
190
|
}
|
|
@@ -192,33 +196,33 @@ export class LisC3FilImgTxComponent {
|
|
|
192
196
|
return {
|
|
193
197
|
text: filter.text ?? 'Habitaciones',
|
|
194
198
|
subnav: DEFAULT_ROOMS_NAV.id,
|
|
195
|
-
type: 'subnav'
|
|
199
|
+
type: 'subnav',
|
|
196
200
|
};
|
|
197
201
|
}
|
|
198
202
|
return {
|
|
199
203
|
text: filter.text ?? '',
|
|
200
204
|
pointer: filter.all ? 'all' : String(filter.id),
|
|
201
|
-
type: 'filter'
|
|
205
|
+
type: 'filter',
|
|
202
206
|
};
|
|
203
207
|
});
|
|
204
208
|
if (!roomsParent && filters.some((f) => !!f.room)) {
|
|
205
209
|
items.push({
|
|
206
210
|
text: 'Habitaciones',
|
|
207
211
|
subnav: DEFAULT_ROOMS_NAV.id,
|
|
208
|
-
type: 'subnav'
|
|
212
|
+
type: 'subnav',
|
|
209
213
|
});
|
|
210
214
|
}
|
|
211
215
|
if (this.data.video?.youtubeId) {
|
|
212
216
|
items.push({
|
|
213
217
|
text: 'Video',
|
|
214
|
-
type: 'video'
|
|
218
|
+
type: 'video',
|
|
215
219
|
});
|
|
216
220
|
}
|
|
217
221
|
const nav = {
|
|
218
222
|
id: DEFAULT_SECTIONS_NAV.id,
|
|
219
223
|
title: DEFAULT_SECTIONS_NAV.title,
|
|
220
224
|
subtitle: DEFAULT_SECTIONS_NAV.subtitle,
|
|
221
|
-
items
|
|
225
|
+
items,
|
|
222
226
|
};
|
|
223
227
|
return nav;
|
|
224
228
|
}
|
|
@@ -229,7 +233,7 @@ export class LisC3FilImgTxComponent {
|
|
|
229
233
|
id: DEFAULT_ROOMS_NAV.id,
|
|
230
234
|
title: DEFAULT_ROOMS_NAV.title,
|
|
231
235
|
subtitle: DEFAULT_ROOMS_NAV.subtitle,
|
|
232
|
-
items: []
|
|
236
|
+
items: [],
|
|
233
237
|
};
|
|
234
238
|
return emptyNav;
|
|
235
239
|
}
|
|
@@ -238,49 +242,63 @@ export class LisC3FilImgTxComponent {
|
|
|
238
242
|
{
|
|
239
243
|
text: allRoomsLabel,
|
|
240
244
|
pointer: 'rooms',
|
|
241
|
-
type: 'filter'
|
|
245
|
+
type: 'filter',
|
|
242
246
|
},
|
|
243
247
|
...roomFilters.map((filter) => ({
|
|
244
248
|
text: filter.text ?? '',
|
|
245
249
|
pointer: String(filter.id),
|
|
246
|
-
type: 'filter'
|
|
247
|
-
}))
|
|
250
|
+
type: 'filter',
|
|
251
|
+
})),
|
|
248
252
|
];
|
|
249
253
|
const nav = {
|
|
250
254
|
id: DEFAULT_ROOMS_NAV.id,
|
|
251
255
|
title: DEFAULT_ROOMS_NAV.title,
|
|
252
256
|
subtitle: DEFAULT_ROOMS_NAV.subtitle,
|
|
253
|
-
items
|
|
257
|
+
items,
|
|
254
258
|
};
|
|
255
259
|
return nav;
|
|
256
260
|
}
|
|
257
261
|
buildGalleryItems(filters, imagesOverride) {
|
|
258
|
-
const images = imagesOverride ??
|
|
262
|
+
const images = imagesOverride ??
|
|
263
|
+
this.images ??
|
|
264
|
+
filters.flatMap((f) => f.multimedia ?? []);
|
|
259
265
|
if (!images.length) {
|
|
260
266
|
return [];
|
|
261
267
|
}
|
|
262
268
|
const mapped = images.map((item) => {
|
|
263
269
|
const filterId = typeof item.filter === 'number' ? item.filter : null;
|
|
264
|
-
const filterMeta = filterId != null
|
|
265
|
-
|
|
270
|
+
const filterMeta = filterId != null
|
|
271
|
+
? filters.find((f) => f.id === filterId)
|
|
272
|
+
: undefined;
|
|
273
|
+
const src = item.img?.src ??
|
|
274
|
+
item.img?.img?.src ??
|
|
275
|
+
item.path?.webp ??
|
|
276
|
+
item.path?.original ??
|
|
277
|
+
'';
|
|
266
278
|
return {
|
|
267
279
|
href: src,
|
|
268
|
-
classes: [
|
|
280
|
+
classes: [
|
|
281
|
+
'gallery-content-element',
|
|
282
|
+
...(filterMeta?.room ? ['rooms'] : []),
|
|
283
|
+
],
|
|
269
284
|
dataSection: filterId != null ? String(filterId) : '',
|
|
270
285
|
lightbox: 'all',
|
|
271
286
|
titleAttr: item.title ?? '',
|
|
272
287
|
infoText: item.title ?? '',
|
|
273
|
-
backgroundImage: src
|
|
288
|
+
backgroundImage: src,
|
|
274
289
|
};
|
|
275
290
|
});
|
|
276
291
|
return mapped;
|
|
277
292
|
}
|
|
278
293
|
buildHeaderButtons() {
|
|
279
294
|
const buttons = [
|
|
280
|
-
{ text: 'Categorías', subnav: DEFAULT_SECTIONS_NAV.id }
|
|
295
|
+
{ text: 'Categorías', subnav: DEFAULT_SECTIONS_NAV.id },
|
|
281
296
|
];
|
|
282
297
|
if (this.hasRoomsNav) {
|
|
283
|
-
buttons.push({
|
|
298
|
+
buttons.push({
|
|
299
|
+
text: 'Habitaciones',
|
|
300
|
+
subnav: DEFAULT_ROOMS_NAV.id,
|
|
301
|
+
});
|
|
284
302
|
}
|
|
285
303
|
return buttons;
|
|
286
304
|
}
|
|
@@ -306,7 +324,7 @@ export class LisC3FilImgTxComponent {
|
|
|
306
324
|
}
|
|
307
325
|
return {
|
|
308
326
|
filters: filtersInput.filters,
|
|
309
|
-
images: filtersInput.images ?? imagesInput
|
|
327
|
+
images: filtersInput.images ?? imagesInput,
|
|
310
328
|
};
|
|
311
329
|
}
|
|
312
330
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LisC3FilImgTxComponent, deps: [{ token: DOCUMENT }, { token: i0.Renderer2 }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -325,4 +343,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
325
343
|
}], images: [{
|
|
326
344
|
type: Input
|
|
327
345
|
}] } });
|
|
328
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWMzLWZpbC1pbWctdHguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS9saXMtYzMtZmlsLWltZy10eC9saXMtYzMtZmlsLWltZy10eC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jMy1maWwtaW1nLXR4L2xpcy1jMy1maWwtaW1nLXR4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBSU4sS0FBSyxFQUdMLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQWF2QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7OztBQUl4SCxNQUFNLG9CQUFvQixHQUFxQjtJQUM3QyxFQUFFLEVBQUUsY0FBYztJQUNsQixLQUFLLEVBQUUsRUFBRTtJQUNULFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBcUI7SUFDMUMsRUFBRSxFQUFFLFdBQVc7SUFDZixLQUFLLEVBQUUsRUFBRTtJQUNULFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFLEVBQUU7Q0FDVixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQXlCO0lBQzVDLFNBQVMsRUFBRSxFQUFFO0lBQ2IsTUFBTSxFQUFFO1FBQ04sS0FBSyxFQUFFLEVBQUU7UUFDVCxPQUFPLEVBQUUsRUFBRTtLQUNaO0lBQ0QsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxRQUFRLEVBQUUs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QUFTLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO1NBQ3BEO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9CLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUN2RDtRQUNELE9BQU87WUFDTCxPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87WUFDN0IsTUFBTSxFQUFFLFlBQVksQ0FBQyxNQUFNLElBQUksV0FBVztTQUMzQyxDQUFDO0lBQ0osQ0FBQzsrR0F0WFUsc0JBQXNCLGtCQTBDdkIsUUFBUTttR0ExQ1Asc0JBQXNCLG9LQ2pFbkMsbW1xQkF5VkEscXUrMUJEN1JZLFlBQVksNkhBQUUsNEJBQTRCOzs0RkFLekMsc0JBQXNCO2tCQVJsQyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsNEJBQTRCLENBQUMsaUJBR3RDLGlCQUFpQixDQUFDLFFBQVE7OzBCQTRDdEMsTUFBTTsyQkFBQyxRQUFROzRGQXpDVCxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQXlCRyxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5qZWN0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZVJlc291cmNlVXJsIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge1xuICBMaXNDM0ZpbEltZ1R4Q29udGVudCxcbiAgTGlzQzNGaWxJbWdUeEJ1dHRvbixcbiAgTGlzQzNGaWxJbWdUeEdhbGxlcnlJdGVtLFxuICBMaXNDM0ZpbEltZ1R4TmF2LFxuICBMaXNDM0ZpbEltZ1R4TmF2SXRlbVxufSBmcm9tICcuL2xpcy1jMy1maWwtaW1nLXR4LmludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgQmFieWxvbkdhbGxlcnlGaWx0ZXIsXG4gIEJhYnlsb25HYWxsZXJ5SXRlbVxufSBmcm9tICcuLi8uLi8uLi9jb3JlL2JhYnlsb24tZ2FsbGVyeS9iYWJ5bG9uLWdhbGxlcnkuY29tcG9uZW50JztcbmltcG9ydCB7IEJhYnlsb25MaWdodEdhbGxlcnlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2JhYnlsb24tZ2FsbGVyaWVzL2JhYnlsb24tbGlnaHQtZ2FsbGVyeS5kaXJlY3RpdmUnO1xuXG50eXBlIEZpbHRlclR5cGUgPSAnc2VjdGlvbnMnIHwgJ3Jvb21zJztcblxuY29uc3QgREVGQVVMVF9TRUNUSU9OU19OQVY6IExpc0MzRmlsSW1nVHhOYXYgPSB7XG4gIGlkOiAnc2VjdGlvbnMtbmF2JyxcbiAgdGl0bGU6ICcnLFxuICBzdWJ0aXRsZTogJycsXG4gIGl0ZW1zOiBbXVxufTtcblxuY29uc3QgREVGQVVMVF9ST09NU19OQVY6IExpc0MzRmlsSW1nVHhOYXYgPSB7XG4gIGlkOiAncm9vbXMtbmF2JyxcbiAgdGl0bGU6ICcnLFxuICBzdWJ0aXRsZTogJycsXG4gIGl0ZW1zOiBbXVxufTtcblxuY29uc3QgREVGQVVMVF9DT05URU5UOiBMaXNDM0ZpbEltZ1R4Q29udGVudCA9IHtcbiAgYm9keUNsYXNzOiAnJyxcbiAgaGVhZGVyOiB7XG4gICAgdGl0bGU6ICcnLFxuICAgIGJ1dHRvbnM6IFtdXG4gIH0sXG4gIHNlY3Rpb25zTmF2OiBERUZBVUxUX1NFQ1RJT05TX05BVixcbiAgcm9vbXNOYXY6IERFRkFVTFRfUk9PTVNfTkFWLFxuICBnYWxsZXJ5SXRlbXM6IFtdLFxuICB2aWRlbzoge1xuICAgIHRpdGxlOiAnJyxcbiAgICB5b3V0dWJlSWQ6ICcnXG4gIH1cbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpcy1jMy1maWwtaW1nLXR4JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQmFieWxvbkxpZ2h0R2FsbGVyeURpcmVjdGl2ZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9saXMtYzMtZmlsLWltZy10eC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9saXMtYzMtZmlsLWltZy10eC5jb21wb25lbnQuc2NzcycsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIExpc0MzRmlsSW1nVHhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpbHRlcnM/OlxuICAgIHwgQXJyYXk8XG4gICAgICAgIHwgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgfCB7XG4gICAgICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICAgICAgYWxsPzogYm9vbGVhbjtcbiAgICAgICAgICAgIHJvb20/OiBib29sZWFuO1xuICAgICAgICAgICAgcm9vbXM/OiBib29sZWFuO1xuICAgICAgICAgICAgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgIH1cbiAgICAgID5cbiAgICB8IHtcbiAgICAgICAgZmlsdGVycz86IEFycmF5PFxuICAgICAgICAgIHwgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgYWxsPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgcm9vbT86IGJvb2xlYW47XG4gICAgICAgICAgICAgIHJvb21zPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgICAgICBvcmRlcj86IG51bWJlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgPjtcbiAgICAgICAgaW1hZ2VzPzogQmFieWxvbkdhbGxlcnlJdGVtW107XG4gICAgICB9O1xuICBASW5wdXQoKSBpbWFnZXM/OiBCYWJ5bG9uR2FsbGVyeUl0ZW1bXTtcblxuICBkYXRhOiBMaXNDM0ZpbEltZ1R4Q29udGVudCA9IERFRkFVTFRfQ09OVEVOVDtcbiAgaGVhZGVyQnV0dG9uczogTGlzQzNGaWxJbWdUeEJ1dHRvbltdID0gW107XG4gIHNlY3Rpb25zTmF2OiBMaXNDM0ZpbEltZ1R4TmF2ID0gREVGQVVMVF9TRUNUSU9OU19OQVY7XG4gIHJvb21zTmF2OiBMaXNDM0ZpbEltZ1R4TmF2ID0gREVGQVVMVF9ST09NU19OQVY7XG4gIGdhbGxlcnlJdGVtczogTGlzQzNGaWxJbWdUeEdhbGxlcnlJdGVtW10gPSBbXTtcbiAgYWN0aXZlRmlsdGVyID0gJ2FsbCc7XG4gIGFjdGl2ZUZpbHRlclR5cGU6IEZpbHRlclR5cGUgPSAnc2VjdGlvbnMnO1xuICBwcml2YXRlIG9wZW5OYXZJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHZpZGVvT3BlbiA9IGZhbHNlO1xuICBwcml2YXRlIGJvZHlDbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICBzYWZlVmlkZW9Vcmw6IFNhZmVSZXNvdXJjZVVybDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzYW5pdGl6ZXI6IERvbVNhbml0aXplclxuICApIHtcbiAgICB0aGlzLmJvZHlDbGFzc2VzID0gdGhpcy5kYXRhLmJvZHlDbGFzcz8uc3BsaXQoJyAnKS5maWx0ZXIoQm9vbGVhbikgPz8gW107XG4gICAgdGhpcy5zYWZlVmlkZW9VcmwgPSB0aGlzLmJ1aWxkU2FmZVZpZGVvVXJsKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmJvZHlDbGFzc2VzLmZvckVhY2goKGNscykgPT4gdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksIGNscykpO1xuICAgIHRoaXMucmVtYXBDb250ZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmJvZHlDbGFzc2VzLmZvckVhY2goKGNscykgPT4gdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksIGNscykpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCAnbm9zY3JvbGwnKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddIHx8IGNoYW5nZXNbJ2ltYWdlcyddIHx8IGNoYW5nZXNbJ3RpdGxlJ10pIHtcbiAgICAgIHRoaXMucmVtYXBDb250ZW50KCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGhlYWRlclRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGUgPz8gdGhpcy5kYXRhLmhlYWRlci50aXRsZTtcbiAgfVxuXG4gIGdldCBoYXNSb29tc05hdigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb29tc05hdi5pdGVtcy5sZW5ndGggPiAxO1xuICB9XG5cbiAgZ2V0IGZpbHRlcmVkR2FsbGVyeUl0ZW1zKCk6IExpc0MzRmlsSW1nVHhHYWxsZXJ5SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy5nYWxsZXJ5SXRlbXMuZmlsdGVyKChpdGVtKSA9PiB0aGlzLmlzSXRlbVZpc2libGUoaXRlbSkpO1xuICB9XG5cbiAgc2V0RmlsdGVyKHBvaW50ZXI6IHN0cmluZywgdHlwZTogRmlsdGVyVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gcG9pbnRlcjtcbiAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSB0eXBlO1xuICAgIGlmICh0aGlzLm9wZW5OYXZJZCkge1xuICAgICAgdGhpcy5jbG9zZU5hdigpO1xuICAgIH1cbiAgfVxuXG4gIGlzQWN0aXZlRmlsdGVyKHBvaW50ZXI6IHN0cmluZywgdHlwZTogRmlsdGVyVHlwZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZUZpbHRlciA9PT0gcG9pbnRlciAmJiB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPT09IHR5cGU7XG4gIH1cblxuICB0b2dnbGVOYXYobmF2OiBMaXNDM0ZpbEltZ1R4TmF2KTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3Blbk5hdklkID09PSBuYXYuaWQpIHtcbiAgICAgIHRoaXMuY2xvc2VOYXYoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuTmF2SWQgPSBuYXYuaWQ7XG4gICAgICB0aGlzLnVwZGF0ZVNjcm9sbExvY2soKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZU5hdigpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5OYXZJZCA9IG51bGw7XG4gICAgdGhpcy51cGRhdGVTY3JvbGxMb2NrKCk7XG4gIH1cblxuICBpc05hdk9wZW4oaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wZW5OYXZJZCA9PT0gaWQ7XG4gIH1cblxuICBvcGVuVmlkZW8oKTogdm9pZCB7XG4gICAgdGhpcy52aWRlb09wZW4gPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlU2Nyb2xsTG9jaygpO1xuICB9XG5cbiAgY2xvc2VWaWRlbygpOiB2b2lkIHtcbiAgICB0aGlzLnZpZGVvT3BlbiA9IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlU2Nyb2xsTG9jaygpO1xuICB9XG5cbiAgaXNJdGVtVmlzaWJsZShpdGVtOiBMaXNDM0ZpbEltZ1R4R2FsbGVyeUl0ZW0pOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIgPT09ICdhbGwnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIgPT09ICdyb29tcycpIHtcbiAgICAgIHJldHVybiBpdGVtLmNsYXNzZXMuaW5jbHVkZXMoJ3Jvb21zJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyVHlwZSA9PT0gJ3Jvb21zJykge1xuICAgICAgcmV0dXJuIGl0ZW0uZGF0YVNlY3Rpb24gPT09IHRoaXMuYWN0aXZlRmlsdGVyO1xuICAgIH1cblxuICAgIHJldHVybiBpdGVtLmRhdGFTZWN0aW9uID09PSB0aGlzLmFjdGl2ZUZpbHRlcjtcbiAgfVxuXG4gIGdldEl0ZW1DbGFzc2VzKGl0ZW06IExpc0MzRmlsSW1nVHhHYWxsZXJ5SXRlbSk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IGl0ZW0uY2xhc3Nlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIGNscykgPT4ge1xuICAgICAgYWNjW2Nsc10gPSB0cnVlO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJhc2VDbGFzc2VzLFxuICAgICAgaGlkZTogIXRoaXMuaXNJdGVtVmlzaWJsZShpdGVtKVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU2FmZVZpZGVvVXJsKCk6IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgY29uc3QgaWQgPSB0aGlzLmRhdGEudmlkZW8ueW91dHViZUlkO1xuICAgIGlmICghaWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJycpO1xuICAgIH1cbiAgICBjb25zdCBwYXJhbXMgPSBbXG4gICAgICBgcGxheWxpc3Q9JHtpZH1gLFxuICAgICAgJ3ZlcnNpb249MycsXG4gICAgICAnYXV0b3BsYXk9MCcsXG4gICAgICAnbXV0ZT0wJyxcbiAgICAgICdjb250cm9scz0xJyxcbiAgICAgICdzaG93aW5mbz0xJyxcbiAgICAgICdtb2Rlc3RicmFuZGluZz0wJyxcbiAgICAgICdsb29wPTAnLFxuICAgICAgJ2ZzPTEnLFxuICAgICAgJ2NjX2xvYWRfcG9saWN5PTEnLFxuICAgICAgJ2l2X2xvYWRfcG9saWN5PTMnLFxuICAgICAgJ2F1dG9oaWRlPTAnLFxuICAgICAgJ3JlbD0wJyxcbiAgICAgICdwbGF5c2lubGluZT0xJ1xuICAgIF0uam9pbignJicpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7aWR9PyR7cGFyYW1zfWApO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxMb2NrKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wZW5OYXZJZCB8fCB0aGlzLnZpZGVvT3Blbikge1xuICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRvY3VtZW50LmJvZHksICdub3Njcm9sbCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ25vc2Nyb2xsJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1hcENvbnRlbnQoKTogdm9pZCB7XG4gICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuZXh0cmFjdFBheWxvYWQodGhpcy5maWx0ZXJzLCB0aGlzLmltYWdlcyk7XG4gICAgY29uc3QgbWFwcGVkRmlsdGVycyA9IHRoaXMubm9ybWFsaXplRmlsdGVycyhwYXlsb2FkLmZpbHRlcnMpO1xuICAgIHRoaXMuc2VjdGlvbnNOYXYgPSB0aGlzLmJ1aWxkU2VjdGlvbnNOYXYobWFwcGVkRmlsdGVycyk7XG4gICAgdGhpcy5yb29tc05hdiA9IHRoaXMuYnVpbGRSb29tc05hdihtYXBwZWRGaWx0ZXJzKTtcbiAgICB0aGlzLmhlYWRlckJ1dHRvbnMgPSB0aGlzLmJ1aWxkSGVhZGVyQnV0dG9ucygpO1xuICAgIHRoaXMuZ2FsbGVyeUl0ZW1zID0gdGhpcy5idWlsZEdhbGxlcnlJdGVtcyhtYXBwZWRGaWx0ZXJzLCBwYXlsb2FkLmltYWdlcyk7XG4gICAgdGhpcy5zZXREZWZhdWx0RmlsdGVyKG1hcHBlZEZpbHRlcnMpO1xuICAgIHRoaXMuc2FmZVZpZGVvVXJsID0gdGhpcy5idWlsZFNhZmVWaWRlb1VybCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVGaWx0ZXJzKFxuICAgIGZpbHRlcnM/OiBBcnJheTxCYWJ5bG9uR2FsbGVyeUZpbHRlciB8IHsgbmFtZT86IHN0cmluZzsgYWxsPzogYm9vbGVhbjsgcm9vbT86IGJvb2xlYW47IHJvb21zPzogYm9vbGVhbjsgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdOyBvcmRlcj86IG51bWJlciB9PlxuICApOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdIHtcbiAgICBpZiAoIWZpbHRlcnM/Lmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBbLi4uZmlsdGVyc11cbiAgICAgIC5zb3J0KChhLCBiKSA9PiAoKGEgYXMgeyBvcmRlcj86IG51bWJlciB9KS5vcmRlciA/PyAwKSAtICgoYiBhcyB7IG9yZGVyPzogbnVtYmVyIH0pLm9yZGVyID8/IDApKVxuICAgICAgLm1hcCgoZmlsdGVyLCBpbmRleCkgPT4gKHtcbiAgICAgICAgaWQ6IHR5cGVvZiAoZmlsdGVyIGFzIEJhYnlsb25HYWxsZXJ5RmlsdGVyKS5pZCA9PT0gJ251bWJlcicgPyAoZmlsdGVyIGFzIEJhYnlsb25HYWxsZXJ5RmlsdGVyKS5pZCA6IGluZGV4LFxuICAgICAgICB0ZXh0OlxuICAgICAgICAgIChmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLnRleHQgPz9cbiAgICAgICAgICAoZmlsdGVyIGFzIHsgbmFtZT86IHN0cmluZyB9KS5uYW1lID8/XG4gICAgICAgICAgJycsXG4gICAgICAgIHJvb21zOiAhIShmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLnJvb21zLFxuICAgICAgICByb29tOiAhIShmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLnJvb20sXG4gICAgICAgIGFsbDogISEoZmlsdGVyIGFzIEJhYnlsb25HYWxsZXJ5RmlsdGVyKS5hbGwsXG4gICAgICAgIG11bHRpbWVkaWE6IChmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLm11bHRpbWVkaWFcbiAgICAgIH0pKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTZWN0aW9uc05hdihmaWx0ZXJzOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdKTogTGlzQzNGaWxJbWdUeE5hdiB7XG4gICAgY29uc3Qgcm9vbXNQYXJlbnQgPSBmaWx0ZXJzLmZpbmQoKGYpID0+ICEhZi5yb29tcyk7XG4gICAgY29uc3Qgc2VjdGlvbkZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlcigoZikgPT4gIWYucm9vbSk7XG4gICAgY29uc3QgaXRlbXM6IExpc0MzRmlsSW1nVHhOYXZJdGVtW10gPSBzZWN0aW9uRmlsdGVycy5tYXAoKGZpbHRlcikgPT4ge1xuICAgICAgaWYgKGZpbHRlci5yb29tcykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRleHQ6IGZpbHRlci50ZXh0ID8/ICdIYWJpdGFjaW9uZXMnLFxuICAgICAgICAgIHN1Ym5hdjogREVGQVVMVF9ST09NU19OQVYuaWQsXG4gICAgICAgICAgdHlwZTogJ3N1Ym5hdidcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRleHQ6IGZpbHRlci50ZXh0ID8/ICcnLFxuICAgICAgICBwb2ludGVyOiBmaWx0ZXIuYWxsID8gJ2FsbCcgOiBTdHJpbmcoZmlsdGVyLmlkKSxcbiAgICAgICAgdHlwZTogJ2ZpbHRlcidcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBpZiAoIXJvb21zUGFyZW50ICYmIGZpbHRlcnMuc29tZSgoZikgPT4gISFmLnJvb20pKSB7XG4gICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgdGV4dDogJ0hhYml0YWNpb25lcycsXG4gICAgICAgIHN1Ym5hdjogREVGQVVMVF9ST09NU19OQVYuaWQsXG4gICAgICAgIHR5cGU6ICdzdWJuYXYnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhLnZpZGVvPy55b3V0dWJlSWQpIHtcbiAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICB0ZXh0OiAnVmlkZW8nLFxuICAgICAgICB0eXBlOiAndmlkZW8nXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBuYXYgPSB7XG4gICAgICBpZDogREVGQVVMVF9TRUNUSU9OU19OQVYuaWQsXG4gICAgICB0aXRsZTogREVGQVVMVF9TRUNUSU9OU19OQVYudGl0bGUsXG4gICAgICBzdWJ0aXRsZTogREVGQVVMVF9TRUNUSU9OU19OQVYuc3VidGl0bGUsXG4gICAgICBpdGVtc1xuICAgIH07XG4gICAgcmV0dXJuIG5hdjtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRSb29tc05hdihmaWx0ZXJzOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdKTogTGlzQzNGaWxJbWdUeE5hdiB7XG4gICAgY29uc3Qgcm9vbUZpbHRlcnMgPSBmaWx0ZXJzLmZpbHRlcigoZikgPT4gISFmLnJvb20pO1xuICAgIGlmICghcm9vbUZpbHRlcnMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBlbXB0eU5hdiA9IHtcbiAgICAgICAgaWQ6IERFRkFVTFRfUk9PTVNfTkFWLmlkLFxuICAgICAgICB0aXRsZTogREVGQVVMVF9ST09NU19OQVYudGl0bGUsXG4gICAgICAgIHN1YnRpdGxlOiBERUZBVUxUX1JPT01TX05BVi5zdWJ0aXRsZSxcbiAgICAgICAgaXRlbXM6IFtdXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGVtcHR5TmF2O1xuICAgIH1cbiAgICBjb25zdCBhbGxSb29tc0xhYmVsID1cbiAgICAgICdUb2RhcyBsYXMgaGFiaXRhY2lvbmVzJztcbiAgICBjb25zdCBpdGVtczogTGlzQzNGaWxJbWdUeE5hdkl0ZW1bXSA9IFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogYWxsUm9vbXNMYWJlbCxcbiAgICAgICAgcG9pbnRlcjogJ3Jvb21zJyxcbiAgICAgICAgdHlwZTogJ2ZpbHRlcidcbiAgICAgIH0sXG4gICAgICAuLi5yb29tRmlsdGVycy5tYXAoXG4gICAgICAgIChmaWx0ZXIpOiBMaXNDM0ZpbEltZ1R4TmF2SXRlbSA9PiAoe1xuICAgICAgICAgIHRleHQ6IGZpbHRlci50ZXh0ID8/ICcnLFxuICAgICAgICAgIHBvaW50ZXI6IFN0cmluZyhmaWx0ZXIuaWQpLFxuICAgICAgICAgIHR5cGU6ICdmaWx0ZXInXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgXTtcblxuICAgIGNvbnN0IG5hdiA9IHtcbiAgICAgIGlkOiBERUZBVUxUX1JPT01TX05BVi5pZCxcbiAgICAgIHRpdGxlOiBERUZBVUxUX1JPT01TX05BVi50aXRsZSxcbiAgICAgIHN1YnRpdGxlOiBERUZBVUxUX1JPT01TX05BVi5zdWJ0aXRsZSxcbiAgICAgIGl0ZW1zXG4gICAgfTtcbiAgICByZXR1cm4gbmF2O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEdhbGxlcnlJdGVtcyhmaWx0ZXJzOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdLCBpbWFnZXNPdmVycmlkZT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdKTogTGlzQzNGaWxJbWdUeEdhbGxlcnlJdGVtW10ge1xuICAgIGNvbnN0IGltYWdlcyA9IGltYWdlc092ZXJyaWRlID8/IHRoaXMuaW1hZ2VzID8/IGZpbHRlcnMuZmxhdE1hcCgoZikgPT4gZi5tdWx0aW1lZGlhID8/IFtdKTtcbiAgICBpZiAoIWltYWdlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3QgbWFwcGVkID0gaW1hZ2VzLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3QgZmlsdGVySWQgPSB0eXBlb2YgaXRlbS5maWx0ZXIgPT09ICdudW1iZXInID8gaXRlbS5maWx0ZXIgOiBudWxsO1xuICAgICAgY29uc3QgZmlsdGVyTWV0YSA9IGZpbHRlcklkICE9IG51bGwgPyBmaWx0ZXJzLmZpbmQoKGYpID0+IGYuaWQgPT09IGZpbHRlcklkKSA6IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHNyYyA9IGl0ZW0uaW1nPy5zcmMgPz8gaXRlbS5pbWc/LmltZz8uc3JjID8/IGl0ZW0ucGF0aD8ud2VicCA/PyBpdGVtLnBhdGg/Lm9yaWdpbmFsID8/ICcnO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaHJlZjogc3JjLFxuICAgICAgICBjbGFzc2VzOiBbJ2dhbGxlcnktY29udGVudC1lbGVtZW50JywgLi4uKGZpbHRlck1ldGE/LnJvb20gPyBbJ3Jvb21zJ10gOiBbXSldLFxuICAgICAgICBkYXRhU2VjdGlvbjogZmlsdGVySWQgIT0gbnVsbCA/IFN0cmluZyhmaWx0ZXJJZCkgOiAnJyxcbiAgICAgICAgbGlnaHRib3g6ICdhbGwnLFxuICAgICAgICB0aXRsZUF0dHI6IGl0ZW0udGl0bGUgPz8gJycsXG4gICAgICAgIGluZm9UZXh0OiBpdGVtLnRpdGxlID8/ICcnLFxuICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6IHNyY1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gbWFwcGVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEhlYWRlckJ1dHRvbnMoKTogTGlzQzNGaWxJbWdUeEJ1dHRvbltdIHtcbiAgICBjb25zdCBidXR0b25zOiBMaXNDM0ZpbEltZ1R4QnV0dG9uW10gPSBbXG4gICAgICB7IHRleHQ6ICdDYXRlZ29yw61hcycsIHN1Ym5hdjogREVGQVVMVF9TRUNUSU9OU19OQVYuaWQgfVxuICAgIF07XG4gICAgaWYgKHRoaXMuaGFzUm9vbXNOYXYpIHtcbiAgICAgIGJ1dHRvbnMucHVzaCh7IHRleHQ6ICdIYWJpdGFjaW9uZXMnLCBzdWJuYXY6IERFRkFVTFRfUk9PTVNfTkFWLmlkIH0pO1xuICAgIH1cbiAgICByZXR1cm4gYnV0dG9ucztcbiAgfVxuXG4gIHByaXZhdGUgc2V0RGVmYXVsdEZpbHRlcihmaWx0ZXJzOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdKTogdm9pZCB7XG4gICAgY29uc3QgYWxsRmlsdGVyID0gZmlsdGVycy5maW5kKChmKSA9PiAhIWYuYWxsKTtcbiAgICBpZiAoYWxsRmlsdGVyKSB7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlciA9ICdhbGwnO1xuICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJUeXBlID0gJ3NlY3Rpb25zJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFNlY3Rpb24gPSBmaWx0ZXJzLmZpbmQoKGYpID0+ICFmLnJvb20gJiYgIWYucm9vbXMpO1xuICAgIGlmIChmaXJzdFNlY3Rpb24pIHtcbiAgICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gU3RyaW5nKGZpcnN0U2VjdGlvbi5pZCk7XG4gICAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSAnc2VjdGlvbnMnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFBheWxvYWQoXG4gICAgZmlsdGVyc0lucHV0OlxuICAgICAgfCBBcnJheTxcbiAgICAgICAgICB8IEJhYnlsb25HYWxsZXJ5RmlsdGVyXG4gICAgICAgICAgfCB7XG4gICAgICAgICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgIGFsbD86IGJvb2xlYW47XG4gICAgICAgICAgICAgIHJvb20/OiBib29sZWFuO1xuICAgICAgICAgICAgICByb29tcz86IGJvb2xlYW47XG4gICAgICAgICAgICAgIG11bHRpbWVkaWE/OiBCYWJ5bG9uR2FsbGVyeUl0ZW1bXTtcbiAgICAgICAgICAgICAgb3JkZXI/OiBudW1iZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgIHwge1xuICAgICAgICAgIGZpbHRlcnM/OiBBcnJheTxcbiAgICAgICAgICAgIHwgQmFieWxvbkdhbGxlcnlGaWx0ZXJcbiAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgYWxsPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICByb29tPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICByb29tcz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgICAgICAgIG9yZGVyPzogbnVtYmVyO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgPjtcbiAgICAgICAgICBpbWFnZXM/OiBCYWJ5bG9uR2FsbGVyeUl0ZW1bXTtcbiAgICAgICAgfVxuICAgICAgfCB1bmRlZmluZWQsXG4gICAgaW1hZ2VzSW5wdXQ/OiBCYWJ5bG9uR2FsbGVyeUl0ZW1bXVxuICApOiB7IGZpbHRlcnM/OiBBcnJheTxCYWJ5bG9uR2FsbGVyeUZpbHRlciB8IHsgbmFtZT86IHN0cmluZzsgYWxsPzogYm9vbGVhbjsgcm9vbT86IGJvb2xlYW47IHJvb21zPzogYm9vbGVhbjsgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdOyBvcmRlcj86IG51bWJlciB9PjsgaW1hZ2VzPzogQmFieWxvbkdhbGxlcnlJdGVtW10gfSB7XG4gICAgaWYgKCFmaWx0ZXJzSW5wdXQpIHtcbiAgICAgIHJldHVybiB7IGZpbHRlcnM6IHVuZGVmaW5lZCwgaW1hZ2VzOiBpbWFnZXNJbnB1dCB9O1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJzSW5wdXQpKSB7XG4gICAgICByZXR1cm4geyBmaWx0ZXJzOiBmaWx0ZXJzSW5wdXQsIGltYWdlczogaW1hZ2VzSW5wdXQgfTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbHRlcnM6IGZpbHRlcnNJbnB1dC5maWx0ZXJzLFxuICAgICAgaW1hZ2VzOiBmaWx0ZXJzSW5wdXQuaW1hZ2VzID8/IGltYWdlc0lucHV0XG4gICAgfTtcbiAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJnYWxsZXJ5LXBhZ2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmlnLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtZ2FsbGVyeS1wYWdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1wYWdlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWdhbGxlcnktaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImdhbGxlcnktaGVhZGVyLXRpdGxlXCI+e3sgaGVhZGVyVGl0bGUgfX08L2gxPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1oZWFkZXItbmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1nYWxsZXJ5LW5hdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnYWxsZXJ5LW5hdi1idG5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLW5hdi1idG5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24gb2YgaGVhZGVyQnV0dG9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBidXR0b24uc3VibmF2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWJ0bnMtZWxlbWVudCBqcy1nYWxsZXJ5LXN1Ym5hdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXN1Ym5hdl09XCJidXR0b24uc3VibmF2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTmF2KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zdWJuYXYgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zTmF2LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VjdGlvbnNOYXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByb29tc05hdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVOYXYoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnN1Ym5hdiA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnNOYXYuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWN0aW9uc05hdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJvb21zTmF2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1idG5zLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYnRucy1lbGVtZW50LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBidXR0b24udGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bnMtZWxlbWVudC1pY29uIGljb24tbWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwic2VjdGlvbnNOYXYuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2IGRlc2t0b3AtdW53cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuOiBpc05hdk9wZW4oc2VjdGlvbnNOYXYuaWQpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1jbG9zZSBidG4tY2xvc2UgaWNvbi1jbG9zZSBqcy1jbG9zZS1nYWxsZXJ5LW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlTmF2KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZU5hdigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1uYXYtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1uYXYtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5hdi1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWN0aW9uc05hdi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuYXYtaGVhZGVyLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VjdGlvbnNOYXYuc3VidGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2Ygc2VjdGlvbnNOYXYuaXRlbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGl0ZW0udGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnR5cGUgPT09ICdmaWx0ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1lbGVtZW50IGpzLWdhbGxlcnktZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcG9pbnRlcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9pbnRlciEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wb2ludGVyISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN0aW9ucydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb25zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid3JhcC1uYXYtZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN0aW9ucydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1lbGVtZW50LXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50eXBlID09PSAnc3VibmF2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2LWVsZW1lbnQganMtZ2FsbGVyeS1zdWJuYXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1zdWJuYXZdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3VibmF2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZU5hdihyb29tc05hdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTmF2KHJvb21zTmF2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndyYXAtbmF2LWVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWVsZW1lbnQtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1lbGVtZW50IGpzLWdhbGxlcnktdmlkZW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5WaWRlbygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib3BlblZpZGVvKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3cmFwLW5hdi1lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1lbGVtZW50LXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwicm9vbXNOYXYuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuOiBpc05hdk9wZW4ocm9vbXNOYXYuaWQpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1jbG9zZSBidG4tY2xvc2UgaWNvbi1jbG9zZSBqcy1jbG9zZS1nYWxsZXJ5LW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlTmF2KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZU5hdigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1uYXYtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1uYXYtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5hdi1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb29tc05hdi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuYXYtaGVhZGVyLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm9vbXNOYXYuc3VidGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2Ygcm9vbXNOYXYuaXRlbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGl0ZW0ucG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2LWVsZW1lbnQganMtZ2FsbGVyeS1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wb2ludGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9pbnRlciEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb29tcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wb2ludGVyISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid3JhcC1uYXYtZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5hdi1lbGVtZW50LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktcGFnZS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndyYXAtZ2FsbGVyeS1jb250ZW50IGNzX2xpZ2h0Z2FsbGVyeVwiXG4gICAgICAgICAgICAgICAgICAgIEJhYnlsb25MaWdodEdhbGxlcnlcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRHYWxsZXJ5SXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtLmhyZWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXNlY3Rpb25dPVwiaXRlbS5kYXRhU2VjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1saWdodGJveF09XCJpdGVtLmxpZ2h0Ym94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlQXR0clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNzX2xpZ2h0Ym94X2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWdhbGxlcnktZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1lbGVtZW50LWltZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmJhY2tncm91bmRJbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LWltZy1waG90byByZXNwb25zaXZlLXJlc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1maWxlbmFtZT1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYmFja2dyb3VuZEltYWdlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5iYWNrZ3JvdW5kSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLmluZm9UZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktZWxlbWVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1lbGVtZW50LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVsZW1lbnQtaW5mby10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaW5mb1RleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE1IDE5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PVwiMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi45NDM0NCAwLjk4OTY4N0wyLjk5NjQzIDAuOTU0Njg3QzMuNjk0NzggMC41MTcyNTEgNC40NzI2NCAwLjIyMjAyMSA1LjI4NTM3IDAuMDg1OTM3NEM2LjA5ODA5IC0wLjA1MDE0NTkgNi45Mjk2OCAtMC4wMjQ0MDQzIDcuNzMyNDMgMC4xNjE2ODZDOC41MzU4MiAwLjM0NzA0NSA5LjI5Mzk5IDAuNjkxMzQxIDkuOTYyMjQgMS4xNzQyOEMxMC42MzA1IDEuNjU3MjMgMTEuMTk1MyAyLjI2OTA1IDExLjYyMzQgMi45NzM2OUMxMi4zNTc5IDQuMTg3MTQgMTIuNjYwOSA1LjYxMzEgMTIuNDgzNCA3LjAyMDM1QzEyLjMwNTkgOC40Mjc2IDExLjY1ODIgOS43MzM2MyAxMC42NDU0IDEwLjcyNjdMMTQuMDM2NCAxNi4zNDA3QzE0LjE4MjkgMTYuNTg0NiAxNC4yMzA3IDE2Ljg3NTIgMTQuMTY5OSAxNy4xNTMxQzE0LjEwOTEgMTcuNDMxMSAxMy45NDQ0IDE3LjY3NTMgMTMuNzA5NCAxNy44MzU3TDEyLjk4NTQgMTguMjcxN0MxMi44MTE1IDE4LjM3NTQgMTIuNjEyOSAxOC40MzAzIDEyLjQxMDQgMTguNDMwN0MxMi4yMTczIDE4LjQzMTcgMTIuMDI3MyAxOC4zODI0IDExLjg1OSAxOC4yODc4QzExLjY5MDYgMTguMTkzMSAxMS41NDk5IDE4LjA1NjIgMTEuNDUwNCAxNy44OTA3TDguMDc0NDQgMTIuMjg0N0M3LjQ2MDE3IDEyLjQ4MDcgNi44MTkyMSAxMi41ODAyIDYuMTc0NDMgMTIuNTc5N0M1LjY3NTQ2IDEyLjU3OTIgNS4xNzgzMSAxMi41MTk1IDQuNjkzNDQgMTIuNDAxN0MzLjkwMDIzIDEyLjIwNjUgMy4xNTM1OSAxMS44NTU5IDIuNDk2NyAxMS4zNzAzQzEuODM5ODEgMTAuODg0OCAxLjI4NTcxIDEwLjI3MzggMC44NjY0MzUgOS41NzI2OUMwLjAzODE2NSA4LjE1MDQ5IC0wLjIwODE4MyA2LjQ2MzE0IDAuMTc4OTEyIDQuODYzNTFDMC41NjYwMDggMy4yNjM4NyAxLjU1NjU3IDEuODc1ODQgMi45NDM0NCAwLjk4OTY4N1pNMi43NDM0MyA4LjQyMDY5QzMuMDE0OTQgOC44NzU0MSAzLjM3NDM3IDkuMjcxNDUgMy44MDA3IDkuNTg1NjZDNC4yMjcwMyA5Ljg5OTg4IDQuNzExNzIgMTAuMTI2IDUuMjI2NDQgMTAuMjUwN0M2LjI3NzM5IDEwLjUwMzIgNy4zODU1OSAxMC4zMjggOC4zMDc0NCA5Ljc2MzY5QzkuMjMyODQgOS4xOTg2NSA5Ljg5ODU3IDguMjkxOTggMTAuMTYwNiA3LjIzOTg0QzEwLjQyMjYgNi4xODc3IDEwLjI1OTggNS4wNzQ3MSA5LjcwNzQ0IDQuMTQxNjlDOS40MzIxMSAzLjY4NTgxIDkuMDY4MjQgMy4yODk3MiA4LjYzNzMyIDIuOTc2NzhDOC4yMDYzOSAyLjY2Mzg1IDcuNzE3MTMgMi40NDA0MiA3LjE5ODQ0IDIuMzE5NjlDNi40MTUwMSAyLjE0MTI1IDUuNTk2NDcgMi4xOTYxOCA0Ljg0MzkxIDIuNDc3NzFDNC4wOTEzNSAyLjc1OTIzIDMuNDM3NzQgMy4yNTUwMiAyLjk2Mzc4IDMuOTAzODRDMi40ODk4MiA0LjU1MjY2IDIuMjE2MjkgNS4zMjYwOSAyLjE3Njk1IDYuMTI4NjJDMi4xMzc2MiA2LjkzMTE1IDIuMzM0MiA3LjcyNzYzIDIuNzQyNDMgOC40MTk2OUwyLjc0MzQzIDguNDIwNjlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMzkzOTM5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuQGlmIChkYXRhLnZpZGVvPy55b3V0dWJlSWQpIHtcbiAgICA8YXNpZGUgY2xhc3M9XCJnYWxsZXJ5LXN1Ym5hdiB2aWRlb1wiIFtuZ0NsYXNzXT1cInsgb3BlbjogdmlkZW9PcGVuIH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtZ2FsbGVyeS1zdWJuYXZcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LXN1Ym5hdi1jbG9zZSBidG4tY2xvc2UgaWNvbi1jbG9zZSBqcy1jbG9zZS1nYWxsZXJ5LW1lbnUgdmlkZW9cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlVmlkZW8oKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNsb3NlVmlkZW8oKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktc3VibmF2LXZpZGVvXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2aWRlby10aXRsZVwiPnt7IGRhdGEudmlkZW8udGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtdmlkZW8tZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZ2FsbGVyeS12aWRlb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aWRlby1lbGVtZW50LW1lZGlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXVybF09XCJkYXRhLnZpZGVvLnlvdXR1YmVJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh2aWRlb09wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzYWZlVmlkZW9VcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3c9XCJhdXRvcGxheTsgZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hbGxvd2Z1bGxzY3JlZW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lmcmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbn1cbiJdfQ==
|
|
346
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzLWMzLWZpbC1pbWctdHguY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2NvbXBvbmVudHMvZXh0ZXJuYWwvY29yZS9saXMtYzMtZmlsLWltZy10eC9saXMtYzMtZmlsLWltZy10eC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9leHRlcm5hbC9jb3JlL2xpcy1jMy1maWwtaW1nLXR4L2xpcy1jMy1maWwtaW1nLXR4LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUNILFNBQVMsRUFDVCxNQUFNLEVBQ04sS0FBSyxFQU1MLGlCQUFpQixHQUNwQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7OztBQWV4SCxNQUFNLG9CQUFvQixHQUFxQjtJQUMzQyxFQUFFLEVBQUUsY0FBYztJQUNsQixLQUFLLEVBQUUsRUFBRTtJQUNULFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFLEVBQUU7Q0FDWixDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBcUI7SUFDeEMsRUFBRSxFQUFFLFdBQVc7SUFDZixLQUFLLEVBQUUsRUFBRTtJQUNULFFBQVEsRUFBRSxFQUFFO0lBQ1osS0FBSyxFQUFFLEVBQUU7Q0FDWixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQXlCO0lBQzFDLFNBQVMsRUFBRSxFQUFFO0lBQ2IsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLEVBQUU7UUFDVCxPQUFPLEVBQUUsRUFBRTtLQUNkO0lBQ0QsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxRQUFRLEVBQUUs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QUNmLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUN0RDtRQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUM3QixPQUFPLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7U0FDekQ7UUFDRCxPQUFPO1lBQ0gsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPO1lBQzdCLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxJQUFJLFdBQVc7U0FDN0MsQ0FBQztJQUNOLENBQUM7K0dBdmJRLHNCQUFzQixrQkEwQ25CLFFBQVE7bUdBMUNYLHNCQUFzQixvS0NqRW5DLG1tcUJBeVZBLHF1KzFCRDdSYyxZQUFZLDZIQUFFLDRCQUE0Qjs7NEZBSzNDLHNCQUFzQjtrQkFSbEMsU0FBUzsrQkFDSSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLDRCQUE0QixDQUFDLGlCQUd0QyxpQkFBaUIsQ0FBQyxRQUFROzswQkE0Q3BDLE1BQU07MkJBQUMsUUFBUTs0RkF6Q1gsS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkF5QkcsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IEJhYnlsb25MaWdodEdhbGxlcnlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi8uLi9kaXJlY3RpdmVzL2JhYnlsb24tZ2FsbGVyaWVzL2JhYnlsb24tbGlnaHQtZ2FsbGVyeS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uR2FsbGVyeUZpbHRlcixcbiAgICBCYWJ5bG9uR2FsbGVyeUl0ZW0sXG59IGZyb20gJy4uLy4uLy4uL2NvcmUvYmFieWxvbi1nYWxsZXJ5L2JhYnlsb24tZ2FsbGVyeS5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgICBMaXNDM0ZpbEltZ1R4QnV0dG9uLFxuICAgIExpc0MzRmlsSW1nVHhDb250ZW50LFxuICAgIExpc0MzRmlsSW1nVHhHYWxsZXJ5SXRlbSxcbiAgICBMaXNDM0ZpbEltZ1R4TmF2LFxuICAgIExpc0MzRmlsSW1nVHhOYXZJdGVtLFxufSBmcm9tICcuL2xpcy1jMy1maWwtaW1nLXR4LmludGVyZmFjZXMnO1xuXG50eXBlIEZpbHRlclR5cGUgPSAnc2VjdGlvbnMnIHwgJ3Jvb21zJztcblxuY29uc3QgREVGQVVMVF9TRUNUSU9OU19OQVY6IExpc0MzRmlsSW1nVHhOYXYgPSB7XG4gICAgaWQ6ICdzZWN0aW9ucy1uYXYnLFxuICAgIHRpdGxlOiAnJyxcbiAgICBzdWJ0aXRsZTogJycsXG4gICAgaXRlbXM6IFtdLFxufTtcblxuY29uc3QgREVGQVVMVF9ST09NU19OQVY6IExpc0MzRmlsSW1nVHhOYXYgPSB7XG4gICAgaWQ6ICdyb29tcy1uYXYnLFxuICAgIHRpdGxlOiAnJyxcbiAgICBzdWJ0aXRsZTogJycsXG4gICAgaXRlbXM6IFtdLFxufTtcblxuY29uc3QgREVGQVVMVF9DT05URU5UOiBMaXNDM0ZpbEltZ1R4Q29udGVudCA9IHtcbiAgICBib2R5Q2xhc3M6ICcnLFxuICAgIGhlYWRlcjoge1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGJ1dHRvbnM6IFtdLFxuICAgIH0sXG4gICAgc2VjdGlvbnNOYXY6IERFRkFVTFRfU0VDVElPTlNfTkFWLFxuICAgIHJvb21zTmF2OiBERUZBVUxUX1JPT01TX05BVixcbiAgICBnYWxsZXJ5SXRlbXM6IFtdLFxuICAgIHZpZGVvOiB7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgeW91dHViZUlkOiAnJyxcbiAgICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaXMtYzMtZmlsLWltZy10eCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYWJ5bG9uTGlnaHRHYWxsZXJ5RGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vbGlzLWMzLWZpbC1pbWctdHguY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9saXMtYzMtZmlsLWltZy10eC5jb21wb25lbnQuc2NzcycsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uRW11bGF0ZWQsXG59KVxuZXhwb3J0IGNsYXNzIExpc0MzRmlsSW1nVHhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSB0aXRsZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWx0ZXJzPzpcbiAgICAgICAgfCBBcnJheTxcbiAgICAgICAgICAgICAgfCBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgYWxsPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgcm9vbT86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgIHJvb21zPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICA+XG4gICAgICAgIHwge1xuICAgICAgICAgICAgICBmaWx0ZXJzPzogQXJyYXk8XG4gICAgICAgICAgICAgICAgICB8IEJhYnlsb25HYWxsZXJ5RmlsdGVyXG4gICAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGw/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbT86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICByb29tcz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPzogQmFieWxvbkdhbGxlcnlJdGVtW107XG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlcj86IG51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+O1xuICAgICAgICAgICAgICBpbWFnZXM/OiBCYWJ5bG9uR2FsbGVyeUl0ZW1bXTtcbiAgICAgICAgICB9O1xuICAgIEBJbnB1dCgpIGltYWdlcz86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuXG4gICAgZGF0YTogTGlzQzNGaWxJbWdUeENvbnRlbnQgPSBERUZBVUxUX0NPTlRFTlQ7XG4gICAgaGVhZGVyQnV0dG9uczogTGlzQzNGaWxJbWdUeEJ1dHRvbltdID0gW107XG4gICAgc2VjdGlvbnNOYXY6IExpc0MzRmlsSW1nVHhOYXYgPSBERUZBVUxUX1NFQ1RJT05TX05BVjtcbiAgICByb29tc05hdjogTGlzQzNGaWxJbWdUeE5hdiA9IERFRkFVTFRfUk9PTVNfTkFWO1xuICAgIGdhbGxlcnlJdGVtczogTGlzQzNGaWxJbWdUeEdhbGxlcnlJdGVtW10gPSBbXTtcbiAgICBhY3RpdmVGaWx0ZXIgPSAnYWxsJztcbiAgICBhY3RpdmVGaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlID0gJ3NlY3Rpb25zJztcbiAgICBwcml2YXRlIG9wZW5OYXZJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgdmlkZW9PcGVuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBib2R5Q2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBzYWZlVmlkZW9Vcmw6IFNhZmVSZXNvdXJjZVVybDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYm9keUNsYXNzZXMgPVxuICAgICAgICAgICAgdGhpcy5kYXRhLmJvZHlDbGFzcz8uc3BsaXQoJyAnKS5maWx0ZXIoQm9vbGVhbikgPz8gW107XG4gICAgICAgIHRoaXMuc2FmZVZpZGVvVXJsID0gdGhpcy5idWlsZFNhZmVWaWRlb1VybCgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJvZHlDbGFzc2VzLmZvckVhY2goKGNscykgPT5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCBjbHMpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVtYXBDb250ZW50KCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYm9keUNsYXNzZXMuZm9yRWFjaCgoY2xzKSA9PlxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcj8ucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCBjbHMpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMucmVuZGVyZXI/LnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ25vc2Nyb2xsJyk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1snZmlsdGVycyddIHx8IGNoYW5nZXNbJ2ltYWdlcyddIHx8IGNoYW5nZXNbJ3RpdGxlJ10pIHtcbiAgICAgICAgICAgIHRoaXMucmVtYXBDb250ZW50KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgaGVhZGVyVGl0bGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGUgPz8gdGhpcy5kYXRhLmhlYWRlci50aXRsZTtcbiAgICB9XG5cbiAgICBnZXQgaGFzUm9vbXNOYXYoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJvb21zTmF2Lml0ZW1zLmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgZ2V0IGZpbHRlcmVkR2FsbGVyeUl0ZW1zKCk6IExpc0MzRmlsSW1nVHhHYWxsZXJ5SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2FsbGVyeUl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5pc0l0ZW1WaXNpYmxlKGl0ZW0pKTtcbiAgICB9XG5cbiAgICBzZXRGaWx0ZXIocG9pbnRlcjogc3RyaW5nLCB0eXBlOiBGaWx0ZXJUeXBlKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gcG9pbnRlcjtcbiAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXJUeXBlID0gdHlwZTtcbiAgICAgICAgaWYgKHRoaXMub3Blbk5hdklkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTmF2KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0FjdGl2ZUZpbHRlcihwb2ludGVyOiBzdHJpbmcsIHR5cGU6IEZpbHRlclR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlRmlsdGVyID09PSBwb2ludGVyICYmIHRoaXMuYWN0aXZlRmlsdGVyVHlwZSA9PT0gdHlwZTtcbiAgICB9XG5cbiAgICB0b2dnbGVOYXYobmF2OiBMaXNDM0ZpbEltZ1R4TmF2KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5OYXZJZCA9PT0gbmF2LmlkKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlTmF2KCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5OYXZJZCA9IG5hdi5pZDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsTG9jaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VOYXYoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3Blbk5hdklkID0gbnVsbDtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxMb2NrKCk7XG4gICAgfVxuXG4gICAgaXNOYXZPcGVuKGlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3Blbk5hdklkID09PSBpZDtcbiAgICB9XG5cbiAgICBvcGVuVmlkZW8oKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlkZW9PcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxMb2NrKCk7XG4gICAgfVxuXG4gICAgY2xvc2VWaWRlbygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWRlb09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxMb2NrKCk7XG4gICAgfVxuXG4gICAgaXNJdGVtVmlzaWJsZShpdGVtOiBMaXNDM0ZpbEltZ1R4R2FsbGVyeUl0ZW0pOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aXZlRmlsdGVyID09PSAnYWxsJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXIgPT09ICdyb29tcycpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtLmNsYXNzZXMuaW5jbHVkZXMoJ3Jvb21zJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVGaWx0ZXJUeXBlID09PSAncm9vbXMnKSB7XG4gICAgICAgICAgICByZXR1cm4gaXRlbS5kYXRhU2VjdGlvbiA9PT0gdGhpcy5hY3RpdmVGaWx0ZXI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbS5kYXRhU2VjdGlvbiA9PT0gdGhpcy5hY3RpdmVGaWx0ZXI7XG4gICAgfVxuXG4gICAgZ2V0SXRlbUNsYXNzZXMoaXRlbTogTGlzQzNGaWxJbWdUeEdhbGxlcnlJdGVtKTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4ge1xuICAgICAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IGl0ZW0uY2xhc3Nlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KFxuICAgICAgICAgICAgKGFjYywgY2xzKSA9PiB7XG4gICAgICAgICAgICAgICAgYWNjW2Nsc10gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge31cbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmJhc2VDbGFzc2VzLFxuICAgICAgICAgICAgaGlkZTogIXRoaXMuaXNJdGVtVmlzaWJsZShpdGVtKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkU2FmZVZpZGVvVXJsKCk6IFNhZmVSZXNvdXJjZVVybCB7XG4gICAgICAgIGNvbnN0IGlkID0gdGhpcy5kYXRhLnZpZGVvLnlvdXR1YmVJZDtcbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFyYW1zID0gW1xuICAgICAgICAgICAgYHBsYXlsaXN0PSR7aWR9YCxcbiAgICAgICAgICAgICd2ZXJzaW9uPTMnLFxuICAgICAgICAgICAgJ2F1dG9wbGF5PTAnLFxuICAgICAgICAgICAgJ211dGU9MCcsXG4gICAgICAgICAgICAnY29udHJvbHM9MScsXG4gICAgICAgICAgICAnc2hvd2luZm89MScsXG4gICAgICAgICAgICAnbW9kZXN0YnJhbmRpbmc9MCcsXG4gICAgICAgICAgICAnbG9vcD0wJyxcbiAgICAgICAgICAgICdmcz0xJyxcbiAgICAgICAgICAgICdjY19sb2FkX3BvbGljeT0xJyxcbiAgICAgICAgICAgICdpdl9sb2FkX3BvbGljeT0zJyxcbiAgICAgICAgICAgICdhdXRvaGlkZT0wJyxcbiAgICAgICAgICAgICdyZWw9MCcsXG4gICAgICAgICAgICAncGxheXNpbmxpbmU9MScsXG4gICAgICAgIF0uam9pbignJicpO1xuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKFxuICAgICAgICAgICAgYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7aWR9PyR7cGFyYW1zfWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVNjcm9sbExvY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5OYXZJZCB8fCB0aGlzLnZpZGVvT3Blbikge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlcj8uYWRkQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCAnbm9zY3JvbGwnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXI/LnJlbW92ZUNsYXNzKHRoaXMuZG9jdW1lbnQuYm9keSwgJ25vc2Nyb2xsJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbWFwQ29udGVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGF5bG9hZCA9IHRoaXMuZXh0cmFjdFBheWxvYWQodGhpcy5maWx0ZXJzLCB0aGlzLmltYWdlcyk7XG4gICAgICAgIGNvbnN0IG1hcHBlZEZpbHRlcnMgPSB0aGlzLm5vcm1hbGl6ZUZpbHRlcnMocGF5bG9hZC5maWx0ZXJzKTtcbiAgICAgICAgdGhpcy5zZWN0aW9uc05hdiA9IHRoaXMuYnVpbGRTZWN0aW9uc05hdihtYXBwZWRGaWx0ZXJzKTtcbiAgICAgICAgdGhpcy5yb29tc05hdiA9IHRoaXMuYnVpbGRSb29tc05hdihtYXBwZWRGaWx0ZXJzKTtcbiAgICAgICAgdGhpcy5oZWFkZXJCdXR0b25zID0gdGhpcy5idWlsZEhlYWRlckJ1dHRvbnMoKTtcbiAgICAgICAgdGhpcy5nYWxsZXJ5SXRlbXMgPSB0aGlzLmJ1aWxkR2FsbGVyeUl0ZW1zKFxuICAgICAgICAgICAgbWFwcGVkRmlsdGVycyxcbiAgICAgICAgICAgIHBheWxvYWQuaW1hZ2VzXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEZpbHRlcihtYXBwZWRGaWx0ZXJzKTtcbiAgICAgICAgdGhpcy5zYWZlVmlkZW9VcmwgPSB0aGlzLmJ1aWxkU2FmZVZpZGVvVXJsKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVGaWx0ZXJzKFxuICAgICAgICBmaWx0ZXJzPzogQXJyYXk8XG4gICAgICAgICAgICB8IEJhYnlsb25HYWxsZXJ5RmlsdGVyXG4gICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICBhbGw/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgcm9vbT86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICByb29tcz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICBtdWx0aW1lZGlhPzogQmFieWxvbkdhbGxlcnlJdGVtW107XG4gICAgICAgICAgICAgICAgICBvcmRlcj86IG51bWJlcjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICA+XG4gICAgKTogQmFieWxvbkdhbGxlcnlGaWx0ZXJbXSB7XG4gICAgICAgIGlmICghZmlsdGVycz8ubGVuZ3RoKSByZXR1cm4gW107XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBbLi4uZmlsdGVyc11cbiAgICAgICAgICAgIC5zb3J0KFxuICAgICAgICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgICAoKGEgYXMgeyBvcmRlcj86IG51bWJlciB9KS5vcmRlciA/PyAwKSAtXG4gICAgICAgICAgICAgICAgICAgICgoYiBhcyB7IG9yZGVyPzogbnVtYmVyIH0pLm9yZGVyID8/IDApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChmaWx0ZXIsIGluZGV4KSA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgKGZpbHRlciBhcyBCYWJ5bG9uR2FsbGVyeUZpbHRlcikuaWQgPT09ICdudW1iZXInXG4gICAgICAgICAgICAgICAgICAgICAgICA/IChmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLmlkXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGluZGV4LFxuICAgICAgICAgICAgICAgIHRleHQ6XG4gICAgICAgICAgICAgICAgICAgIChmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLnRleHQgPz9cbiAgICAgICAgICAgICAgICAgICAgKGZpbHRlciBhcyB7IG5hbWU/OiBzdHJpbmcgfSkubmFtZSA/P1xuICAgICAgICAgICAgICAgICAgICAnJyxcbiAgICAgICAgICAgICAgICByb29tczogISEoZmlsdGVyIGFzIEJhYnlsb25HYWxsZXJ5RmlsdGVyKS5yb29tcyxcbiAgICAgICAgICAgICAgICByb29tOiAhIShmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLnJvb20sXG4gICAgICAgICAgICAgICAgYWxsOiAhIShmaWx0ZXIgYXMgQmFieWxvbkdhbGxlcnlGaWx0ZXIpLmFsbCxcbiAgICAgICAgICAgICAgICBtdWx0aW1lZGlhOiAoZmlsdGVyIGFzIEJhYnlsb25HYWxsZXJ5RmlsdGVyKS5tdWx0aW1lZGlhLFxuICAgICAgICAgICAgfSkpO1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkU2VjdGlvbnNOYXYoXG4gICAgICAgIGZpbHRlcnM6IEJhYnlsb25HYWxsZXJ5RmlsdGVyW11cbiAgICApOiBMaXNDM0ZpbEltZ1R4TmF2IHtcbiAgICAgICAgY29uc3Qgcm9vbXNQYXJlbnQgPSBmaWx0ZXJzLmZpbmQoKGYpID0+ICEhZi5yb29tcyk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25GaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGYpID0+ICFmLnJvb20pO1xuICAgICAgICBjb25zdCBpdGVtczogTGlzQzNGaWxJbWdUeE5hdkl0ZW1bXSA9IHNlY3Rpb25GaWx0ZXJzLm1hcCgoZmlsdGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoZmlsdGVyLnJvb21zKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZmlsdGVyLnRleHQgPz8gJ0hhYml0YWNpb25lcycsXG4gICAgICAgICAgICAgICAgICAgIHN1Ym5hdjogREVGQVVMVF9ST09NU19OQVYuaWQsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdWJuYXYnLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHRleHQ6IGZpbHRlci50ZXh0ID8/ICcnLFxuICAgICAgICAgICAgICAgIHBvaW50ZXI6IGZpbHRlci5hbGwgPyAnYWxsJyA6IFN0cmluZyhmaWx0ZXIuaWQpLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdmaWx0ZXInLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyb29tc1BhcmVudCAmJiBmaWx0ZXJzLnNvbWUoKGYpID0+ICEhZi5yb29tKSkge1xuICAgICAgICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgICAgICAgICAgdGV4dDogJ0hhYml0YWNpb25lcycsXG4gICAgICAgICAgICAgICAgc3VibmF2OiBERUZBVUxUX1JPT01TX05BVi5pZCxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3VibmF2JyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGF0YS52aWRlbz8ueW91dHViZUlkKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0ZXh0OiAnVmlkZW8nLFxuICAgICAgICAgICAgICAgIHR5cGU6ICd2aWRlbycsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5hdiA9IHtcbiAgICAgICAgICAgIGlkOiBERUZBVUxUX1NFQ1RJT05TX05BVi5pZCxcbiAgICAgICAgICAgIHRpdGxlOiBERUZBVUxUX1NFQ1RJT05TX05BVi50aXRsZSxcbiAgICAgICAgICAgIHN1YnRpdGxlOiBERUZBVUxUX1NFQ1RJT05TX05BVi5zdWJ0aXRsZSxcbiAgICAgICAgICAgIGl0ZW1zLFxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gbmF2O1xuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRSb29tc05hdihmaWx0ZXJzOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdKTogTGlzQzNGaWxJbWdUeE5hdiB7XG4gICAgICAgIGNvbnN0IHJvb21GaWx0ZXJzID0gZmlsdGVycy5maWx0ZXIoKGYpID0+ICEhZi5yb29tKTtcbiAgICAgICAgaWYgKCFyb29tRmlsdGVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVtcHR5TmF2ID0ge1xuICAgICAgICAgICAgICAgIGlkOiBERUZBVUxUX1JPT01TX05BVi5pZCxcbiAgICAgICAgICAgICAgICB0aXRsZTogREVGQVVMVF9ST09NU19OQVYudGl0bGUsXG4gICAgICAgICAgICAgICAgc3VidGl0bGU6IERFRkFVTFRfUk9PTVNfTkFWLnN1YnRpdGxlLFxuICAgICAgICAgICAgICAgIGl0ZW1zOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gZW1wdHlOYXY7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxsUm9vbXNMYWJlbCA9ICdUb2RhcyBsYXMgaGFiaXRhY2lvbmVzJztcbiAgICAgICAgY29uc3QgaXRlbXM6IExpc0MzRmlsSW1nVHhOYXZJdGVtW10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdGV4dDogYWxsUm9vbXNMYWJlbCxcbiAgICAgICAgICAgICAgICBwb2ludGVyOiAncm9vbXMnLFxuICAgICAgICAgICAgICAgIHR5cGU6ICdmaWx0ZXInLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC4uLnJvb21GaWx0ZXJzLm1hcChcbiAgICAgICAgICAgICAgICAoZmlsdGVyKTogTGlzQzNGaWxJbWdUeE5hdkl0ZW0gPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogZmlsdGVyLnRleHQgPz8gJycsXG4gICAgICAgICAgICAgICAgICAgIHBvaW50ZXI6IFN0cmluZyhmaWx0ZXIuaWQpLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnZmlsdGVyJyxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKSxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBuYXYgPSB7XG4gICAgICAgICAgICBpZDogREVGQVVMVF9ST09NU19OQVYuaWQsXG4gICAgICAgICAgICB0aXRsZTogREVGQVVMVF9ST09NU19OQVYudGl0bGUsXG4gICAgICAgICAgICBzdWJ0aXRsZTogREVGQVVMVF9ST09NU19OQVYuc3VidGl0bGUsXG4gICAgICAgICAgICBpdGVtcyxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG5hdjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkR2FsbGVyeUl0ZW1zKFxuICAgICAgICBmaWx0ZXJzOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdLFxuICAgICAgICBpbWFnZXNPdmVycmlkZT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdXG4gICAgKTogTGlzQzNGaWxJbWdUeEdhbGxlcnlJdGVtW10ge1xuICAgICAgICBjb25zdCBpbWFnZXMgPVxuICAgICAgICAgICAgaW1hZ2VzT3ZlcnJpZGUgPz9cbiAgICAgICAgICAgIHRoaXMuaW1hZ2VzID8/XG4gICAgICAgICAgICBmaWx0ZXJzLmZsYXRNYXAoKGYpID0+IGYubXVsdGltZWRpYSA/PyBbXSk7XG4gICAgICAgIGlmICghaW1hZ2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IGltYWdlcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcklkID1cbiAgICAgICAgICAgICAgICB0eXBlb2YgaXRlbS5maWx0ZXIgPT09ICdudW1iZXInID8gaXRlbS5maWx0ZXIgOiBudWxsO1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyTWV0YSA9XG4gICAgICAgICAgICAgICAgZmlsdGVySWQgIT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IGZpbHRlcnMuZmluZCgoZikgPT4gZi5pZCA9PT0gZmlsdGVySWQpXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3Qgc3JjID1cbiAgICAgICAgICAgICAgICBpdGVtLmltZz8uc3JjID8/XG4gICAgICAgICAgICAgICAgaXRlbS5pbWc/LmltZz8uc3JjID8/XG4gICAgICAgICAgICAgICAgaXRlbS5wYXRoPy53ZWJwID8/XG4gICAgICAgICAgICAgICAgaXRlbS5wYXRoPy5vcmlnaW5hbCA/P1xuICAgICAgICAgICAgICAgICcnO1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBocmVmOiBzcmMsXG4gICAgICAgICAgICAgICAgY2xhc3NlczogW1xuICAgICAgICAgICAgICAgICAgICAnZ2FsbGVyeS1jb250ZW50LWVsZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAuLi4oZmlsdGVyTWV0YT8ucm9vbSA/IFsncm9vbXMnXSA6IFtdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGRhdGFTZWN0aW9uOiBmaWx0ZXJJZCAhPSBudWxsID8gU3RyaW5nKGZpbHRlcklkKSA6ICcnLFxuICAgICAgICAgICAgICAgIGxpZ2h0Ym94OiAnYWxsJyxcbiAgICAgICAgICAgICAgICB0aXRsZUF0dHI6IGl0ZW0udGl0bGUgPz8gJycsXG4gICAgICAgICAgICAgICAgaW5mb1RleHQ6IGl0ZW0udGl0bGUgPz8gJycsXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiBzcmMsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG1hcHBlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkSGVhZGVyQnV0dG9ucygpOiBMaXNDM0ZpbEltZ1R4QnV0dG9uW10ge1xuICAgICAgICBjb25zdCBidXR0b25zOiBMaXNDM0ZpbEltZ1R4QnV0dG9uW10gPSBbXG4gICAgICAgICAgICB7IHRleHQ6ICdDYXRlZ29yw61hcycsIHN1Ym5hdjogREVGQVVMVF9TRUNUSU9OU19OQVYuaWQgfSxcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKHRoaXMuaGFzUm9vbXNOYXYpIHtcbiAgICAgICAgICAgIGJ1dHRvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgdGV4dDogJ0hhYml0YWNpb25lcycsXG4gICAgICAgICAgICAgICAgc3VibmF2OiBERUZBVUxUX1JPT01TX05BVi5pZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBidXR0b25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdEZpbHRlcihmaWx0ZXJzOiBCYWJ5bG9uR2FsbGVyeUZpbHRlcltdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGFsbEZpbHRlciA9IGZpbHRlcnMuZmluZCgoZikgPT4gISFmLmFsbCk7XG4gICAgICAgIGlmIChhbGxGaWx0ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVyID0gJ2FsbCc7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUZpbHRlclR5cGUgPSAnc2VjdGlvbnMnO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlyc3RTZWN0aW9uID0gZmlsdGVycy5maW5kKChmKSA9PiAhZi5yb29tICYmICFmLnJvb21zKTtcbiAgICAgICAgaWYgKGZpcnN0U2VjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVGaWx0ZXIgPSBTdHJpbmcoZmlyc3RTZWN0aW9uLmlkKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRmlsdGVyVHlwZSA9ICdzZWN0aW9ucyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGV4dHJhY3RQYXlsb2FkKFxuICAgICAgICBmaWx0ZXJzSW5wdXQ6XG4gICAgICAgICAgICB8IEFycmF5PFxuICAgICAgICAgICAgICAgICAgfCBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvb20/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgcm9vbXM/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI/OiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBmaWx0ZXJzPzogQXJyYXk8XG4gICAgICAgICAgICAgICAgICAgICAgfCBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tcz86IGJvb2xlYW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyPzogbnVtYmVyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPjtcbiAgICAgICAgICAgICAgICAgIGltYWdlcz86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IHVuZGVmaW5lZCxcbiAgICAgICAgaW1hZ2VzSW5wdXQ/OiBCYWJ5bG9uR2FsbGVyeUl0ZW1bXVxuICAgICk6IHtcbiAgICAgICAgZmlsdGVycz86IEFycmF5PFxuICAgICAgICAgICAgfCBCYWJ5bG9uR2FsbGVyeUZpbHRlclxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBuYW1lPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgYWxsPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgIHJvb20/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgcm9vbXM/OiBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgbXVsdGltZWRpYT86IEJhYnlsb25HYWxsZXJ5SXRlbVtdO1xuICAgICAgICAgICAgICAgICAgb3JkZXI/OiBudW1iZXI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgPjtcbiAgICAgICAgaW1hZ2VzPzogQmFieWxvbkdhbGxlcnlJdGVtW107XG4gICAgfSB7XG4gICAgICAgIGlmICghZmlsdGVyc0lucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4geyBmaWx0ZXJzOiB1bmRlZmluZWQsIGltYWdlczogaW1hZ2VzSW5wdXQgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShmaWx0ZXJzSW5wdXQpKSB7XG4gICAgICAgICAgICByZXR1cm4geyBmaWx0ZXJzOiBmaWx0ZXJzSW5wdXQsIGltYWdlczogaW1hZ2VzSW5wdXQgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsdGVyczogZmlsdGVyc0lucHV0LmZpbHRlcnMsXG4gICAgICAgICAgICBpbWFnZXM6IGZpbHRlcnNJbnB1dC5pbWFnZXMgPz8gaW1hZ2VzSW5wdXQsXG4gICAgICAgIH07XG4gICAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJnYWxsZXJ5LXBhZ2VcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYmlnLXdyYXBwZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtZ2FsbGVyeS1wYWdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1wYWdlLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWdhbGxlcnktaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImdhbGxlcnktaGVhZGVyLXRpdGxlXCI+e3sgaGVhZGVyVGl0bGUgfX08L2gxPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1oZWFkZXItbmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1nYWxsZXJ5LW5hdlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnYWxsZXJ5LW5hdi1idG5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLW5hdi1idG5zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24gb2YgaGVhZGVyQnV0dG9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBidXR0b24uc3VibmF2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWJ0bnMtZWxlbWVudCBqcy1nYWxsZXJ5LXN1Ym5hdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXN1Ym5hdl09XCJidXR0b24uc3VibmF2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTmF2KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zdWJuYXYgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zTmF2LmlkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gc2VjdGlvbnNOYXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByb29tc05hdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVOYXYoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLnN1Ym5hdiA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnNOYXYuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBzZWN0aW9uc05hdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHJvb21zTmF2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1idG5zLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYnRucy1lbGVtZW50LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBidXR0b24udGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bnMtZWxlbWVudC1pY29uIGljb24tbWVudVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwic2VjdGlvbnNOYXYuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2IGRlc2t0b3AtdW53cmFwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuOiBpc05hdk9wZW4oc2VjdGlvbnNOYXYuaWQpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1jbG9zZSBidG4tY2xvc2UgaWNvbi1jbG9zZSBqcy1jbG9zZS1nYWxsZXJ5LW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlTmF2KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZU5hdigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1uYXYtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1uYXYtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5hdi1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzZWN0aW9uc05hdi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuYXYtaGVhZGVyLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc2VjdGlvbnNOYXYuc3VidGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2Ygc2VjdGlvbnNOYXYuaXRlbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGl0ZW0udGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLnR5cGUgPT09ICdmaWx0ZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1lbGVtZW50IGpzLWdhbGxlcnktZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcG9pbnRlcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wb2ludGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9pbnRlciEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbnMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wb2ludGVyISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN0aW9ucydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb25zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid3JhcC1uYXYtZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZUZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWN0aW9ucydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1lbGVtZW50LXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50eXBlID09PSAnc3VibmF2J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2LWVsZW1lbnQganMtZ2FsbGVyeS1zdWJuYXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1zdWJuYXZdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3VibmF2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZU5hdihyb29tc05hdilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlTmF2KHJvb21zTmF2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndyYXAtbmF2LWVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibmF2LWVsZW1lbnQtdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0udGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1lbGVtZW50IGpzLWdhbGxlcnktdmlkZW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5WaWRlbygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwib3BlblZpZGVvKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ3cmFwLW5hdi1lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5hdi1lbGVtZW50LXRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLnRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwicm9vbXNOYXYuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBvcGVuOiBpc05hdk9wZW4ocm9vbXNOYXYuaWQpIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LW5hdi1jbG9zZSBidG4tY2xvc2UgaWNvbi1jbG9zZSBqcy1jbG9zZS1nYWxsZXJ5LW1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlTmF2KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZU5hdigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1uYXYtYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktbmF2LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1uYXYtaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5hdi1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb29tc05hdi50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJuYXYtaGVhZGVyLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm9vbXNOYXYuc3VidGl0bGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0gb2Ygcm9vbXNOYXYuaXRlbXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrIGl0ZW0ucG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImdhbGxlcnktbmF2LWVsZW1lbnQganMtZ2FsbGVyeS1maWx0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1wb2ludGVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ucG9pbnRlciEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb29tcydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5wb2ludGVyISxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsdGVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vbXMnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwid3JhcC1uYXYtZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVGaWx0ZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnBvaW50ZXIhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb21zJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm5hdi1lbGVtZW50LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS50ZXh0IH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktcGFnZS1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIndyYXAtZ2FsbGVyeS1jb250ZW50IGNzX2xpZ2h0Z2FsbGVyeVwiXG4gICAgICAgICAgICAgICAgICAgIEJhYnlsb25MaWdodEdhbGxlcnlcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZmlsdGVyZWRHYWxsZXJ5SXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHJlZl09XCJpdGVtLmhyZWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldEl0ZW1DbGFzc2VzKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXNlY3Rpb25dPVwiaXRlbS5kYXRhU2VjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1saWdodGJveF09XCJpdGVtLmxpZ2h0Ym94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJpdGVtLnRpdGxlQXR0clwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNzX2xpZ2h0Ym94X2l0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWdhbGxlcnktZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2FsbGVyeS1lbGVtZW50LWltZ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpdGVtLmJhY2tncm91bmRJbWFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWd1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LWltZy1waG90byByZXNwb25zaXZlLXJlc2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1maWxlbmFtZT1cIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VybCgnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYmFja2dyb3VuZEltYWdlICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaXRlbS5iYWNrZ3JvdW5kSW1hZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsdF09XCJpdGVtLmluZm9UZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1ub25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktZWxlbWVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1lbGVtZW50LWluZm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImVsZW1lbnQtaW5mby10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uaW5mb1RleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE1IDE5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5PVwiMC41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi45NDM0NCAwLjk4OTY4N0wyLjk5NjQzIDAuOTU0Njg3QzMuNjk0NzggMC41MTcyNTEgNC40NzI2NCAwLjIyMjAyMSA1LjI4NTM3IDAuMDg1OTM3NEM2LjA5ODA5IC0wLjA1MDE0NTkgNi45Mjk2OCAtMC4wMjQ0MDQzIDcuNzMyNDMgMC4xNjE2ODZDOC41MzU4MiAwLjM0NzA0NSA5LjI5Mzk5IDAuNjkxMzQxIDkuOTYyMjQgMS4xNzQyOEMxMC42MzA1IDEuNjU3MjMgMTEuMTk1MyAyLjI2OTA1IDExLjYyMzQgMi45NzM2OUMxMi4zNTc5IDQuMTg3MTQgMTIuNjYwOSA1LjYxMzEgMTIuNDgzNCA3LjAyMDM1QzEyLjMwNTkgOC40Mjc2IDExLjY1ODIgOS43MzM2MyAxMC42NDU0IDEwLjcyNjdMMTQuMDM2NCAxNi4zNDA3QzE0LjE4MjkgMTYuNTg0NiAxNC4yMzA3IDE2Ljg3NTIgMTQuMTY5OSAxNy4xNTMxQzE0LjEwOTEgMTcuNDMxMSAxMy45NDQ0IDE3LjY3NTMgMTMuNzA5NCAxNy44MzU3TDEyLjk4NTQgMTguMjcxN0MxMi44MTE1IDE4LjM3NTQgMTIuNjEyOSAxOC40MzAzIDEyLjQxMDQgMTguNDMwN0MxMi4yMTczIDE4LjQzMTcgMTIuMDI3MyAxOC4zODI0IDExLjg1OSAxOC4yODc4QzExLjY5MDYgMTguMTkzMSAxMS41NDk5IDE4LjA1NjIgMTEuNDUwNCAxNy44OTA3TDguMDc0NDQgMTIuMjg0N0M3LjQ2MDE3IDEyLjQ4MDcgNi44MTkyMSAxMi41ODAyIDYuMTc0NDMgMTIuNTc5N0M1LjY3NTQ2IDEyLjU3OTIgNS4xNzgzMSAxMi41MTk1IDQuNjkzNDQgMTIuNDAxN0MzLjkwMDIzIDEyLjIwNjUgMy4xNTM1OSAxMS44NTU5IDIuNDk2NyAxMS4zNzAzQzEuODM5ODEgMTAuODg0OCAxLjI4NTcxIDEwLjI3MzggMC44NjY0MzUgOS41NzI2OUMwLjAzODE2NSA4LjE1MDQ5IC0wLjIwODE4MyA2LjQ2MzE0IDAuMTc4OTEyIDQuODYzNTFDMC41NjYwMDggMy4yNjM4NyAxLjU1NjU3IDEuODc1ODQgMi45NDM0NCAwLjk4OTY4N1pNMi43NDM0MyA4LjQyMDY5QzMuMDE0OTQgOC44NzU0MSAzLjM3NDM3IDkuMjcxNDUgMy44MDA3IDkuNTg1NjZDNC4yMjcwMyA5Ljg5OTg4IDQuNzExNzIgMTAuMTI2IDUuMjI2NDQgMTAuMjUwN0M2LjI3NzM5IDEwLjUwMzIgNy4zODU1OSAxMC4zMjggOC4zMDc0NCA5Ljc2MzY5QzkuMjMyODQgOS4xOTg2NSA5Ljg5ODU3IDguMjkxOTggMTAuMTYwNiA3LjIzOTg0QzEwLjQyMjYgNi4xODc3IDEwLjI1OTggNS4wNzQ3MSA5LjcwNzQ0IDQuMTQxNjlDOS40MzIxMSAzLjY4NTgxIDkuMDY4MjQgMy4yODk3MiA4LjYzNzMyIDIuOTc2NzhDOC4yMDYzOSAyLjY2Mzg1IDcuNzE3MTMgMi40NDA0MiA3LjE5ODQ0IDIuMzE5NjlDNi40MTUwMSAyLjE0MTI1IDUuNTk2NDcgMi4xOTYxOCA0Ljg0MzkxIDIuNDc3NzFDNC4wOTEzNSAyLjc1OTIzIDMuNDM3NzQgMy4yNTUwMiAyLjk2Mzc4IDMuOTAzODRDMi40ODk4MiA0LjU1MjY2IDIuMjE2MjkgNS4zMjYwOSAyLjE3Njk1IDYuMTI4NjJDMi4xMzc2MiA2LjkzMTE1IDIuMzM0MiA3LjcyNzYzIDIuNzQyNDMgOC40MTk2OUwyLjc0MzQzIDguNDIwNjlaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMzkzOTM5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuQGlmIChkYXRhLnZpZGVvPy55b3V0dWJlSWQpIHtcbiAgICA8YXNpZGUgY2xhc3M9XCJnYWxsZXJ5LXN1Ym5hdiB2aWRlb1wiIFtuZ0NsYXNzXT1cInsgb3BlbjogdmlkZW9PcGVuIH1cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtZ2FsbGVyeS1zdWJuYXZcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJnYWxsZXJ5LXN1Ym5hdi1jbG9zZSBidG4tY2xvc2UgaWNvbi1jbG9zZSBqcy1jbG9zZS1nYWxsZXJ5LW1lbnUgdmlkZW9cIlxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlVmlkZW8oKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cImNsb3NlVmlkZW8oKVwiXG4gICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdhbGxlcnktc3VibmF2LXZpZGVvXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ2aWRlby10aXRsZVwiPnt7IGRhdGEudmlkZW8udGl0bGUgfX08L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZpZGVvLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXAtdmlkZW8tZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZpZ3VyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZ2FsbGVyeS12aWRlb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2aWRlby1lbGVtZW50LW1lZGlhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXVybF09XCJkYXRhLnZpZGVvLnlvdXR1YmVJZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmICh2aWRlb09wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NyY109XCJzYWZlVmlkZW9VcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3c9XCJhdXRvcGxheTsgZnVsbHNjcmVlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hbGxvd2Z1bGxzY3JlZW5dPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lmcmFtZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZ3VyZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9hc2lkZT5cbn1cbiJdfQ==
|