css-to-tailwind-react 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/tailwindMapper.d.ts
CHANGED
|
@@ -37,6 +37,8 @@ export declare class TailwindMapper {
|
|
|
37
37
|
private tokenizeValue;
|
|
38
38
|
convertProperty(property: string, value: string): ConversionResult;
|
|
39
39
|
convertPropertyWithMultiple(property: string, value: string): MultiConversionResult;
|
|
40
|
+
private convertBackgroundShorthand;
|
|
41
|
+
private extractColorFromBackground;
|
|
40
42
|
private convertSpacingShorthand;
|
|
41
43
|
private convertDisplay;
|
|
42
44
|
private convertMargin;
|
package/dist/tailwindMapper.js
CHANGED
|
@@ -215,6 +215,9 @@ class TailwindMapper {
|
|
|
215
215
|
const normalizedProp = property.toLowerCase().trim();
|
|
216
216
|
const normalizedValue = value.toLowerCase().trim();
|
|
217
217
|
logger_1.logger.verbose(`Converting: ${normalizedProp}: ${normalizedValue}`);
|
|
218
|
+
if (normalizedProp.startsWith('--')) {
|
|
219
|
+
return { className: null, skipped: true, reason: `CSS variable declaration: ${property}` };
|
|
220
|
+
}
|
|
218
221
|
if (normalizedProp === 'display') {
|
|
219
222
|
return this.convertDisplay(normalizedValue);
|
|
220
223
|
}
|
|
@@ -271,6 +274,13 @@ class TailwindMapper {
|
|
|
271
274
|
if (normalizedProp === 'background-color') {
|
|
272
275
|
return this.convertBackgroundColor(normalizedValue);
|
|
273
276
|
}
|
|
277
|
+
if (normalizedProp === 'background') {
|
|
278
|
+
const result = this.convertBackgroundShorthand(normalizedValue);
|
|
279
|
+
if (result.classes.length > 0) {
|
|
280
|
+
return { className: result.classes[0], skipped: false };
|
|
281
|
+
}
|
|
282
|
+
return { className: null, skipped: true, reason: result.warnings[0] || `Could not convert background: ${normalizedValue}` };
|
|
283
|
+
}
|
|
274
284
|
if (normalizedProp === 'color') {
|
|
275
285
|
return this.convertTextColor(normalizedValue);
|
|
276
286
|
}
|
|
@@ -323,6 +333,9 @@ class TailwindMapper {
|
|
|
323
333
|
if (normalizedProp === 'flex') {
|
|
324
334
|
return this.convertFlexShorthand(normalizedValue);
|
|
325
335
|
}
|
|
336
|
+
if (normalizedProp === 'background') {
|
|
337
|
+
return this.convertBackgroundShorthand(normalizedValue);
|
|
338
|
+
}
|
|
326
339
|
const result = this.convertProperty(property, value);
|
|
327
340
|
return {
|
|
328
341
|
classes: result.className ? [result.className] : [],
|
|
@@ -330,6 +343,100 @@ class TailwindMapper {
|
|
|
330
343
|
cssProperties: result.className ? [property] : []
|
|
331
344
|
};
|
|
332
345
|
}
|
|
346
|
+
convertBackgroundShorthand(value) {
|
|
347
|
+
const classes = [];
|
|
348
|
+
const warnings = [];
|
|
349
|
+
const cssProperties = [];
|
|
350
|
+
if (value === 'transparent') {
|
|
351
|
+
classes.push('bg-transparent');
|
|
352
|
+
cssProperties.push('background-color');
|
|
353
|
+
return { classes, warnings, cssProperties };
|
|
354
|
+
}
|
|
355
|
+
if (value === 'none') {
|
|
356
|
+
classes.push('bg-none');
|
|
357
|
+
cssProperties.push('background-image');
|
|
358
|
+
return { classes, warnings, cssProperties };
|
|
359
|
+
}
|
|
360
|
+
const colorValue = this.extractColorFromBackground(value);
|
|
361
|
+
if (colorValue) {
|
|
362
|
+
if (colorValue.startsWith('#')) {
|
|
363
|
+
classes.push(`bg-[${colorValue}]`);
|
|
364
|
+
}
|
|
365
|
+
else if (colorValue.startsWith('rgb')) {
|
|
366
|
+
classes.push(`bg-[${colorValue}]`);
|
|
367
|
+
}
|
|
368
|
+
else if (colorValue.startsWith('hsl')) {
|
|
369
|
+
classes.push(`bg-[${colorValue}]`);
|
|
370
|
+
}
|
|
371
|
+
else {
|
|
372
|
+
const colorMap = {
|
|
373
|
+
'white': 'bg-white',
|
|
374
|
+
'black': 'bg-black',
|
|
375
|
+
'red': 'bg-red-500',
|
|
376
|
+
'blue': 'bg-blue-500',
|
|
377
|
+
'green': 'bg-green-500',
|
|
378
|
+
'gray': 'bg-gray-500',
|
|
379
|
+
'transparent': 'bg-transparent'
|
|
380
|
+
};
|
|
381
|
+
if (colorMap[colorValue]) {
|
|
382
|
+
classes.push(colorMap[colorValue]);
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
classes.push(`bg-${colorValue}`);
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
cssProperties.push('background-color');
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
warnings.push(`Cannot extract color from background shorthand: ${value}`);
|
|
392
|
+
}
|
|
393
|
+
return { classes, warnings, cssProperties };
|
|
394
|
+
}
|
|
395
|
+
extractColorFromBackground(value) {
|
|
396
|
+
const tokens = this.tokenizeValue(value);
|
|
397
|
+
for (const token of tokens) {
|
|
398
|
+
if (token.startsWith('#')) {
|
|
399
|
+
return token;
|
|
400
|
+
}
|
|
401
|
+
if (token.startsWith('rgb') || token.startsWith('hsl')) {
|
|
402
|
+
return token;
|
|
403
|
+
}
|
|
404
|
+
if (token.startsWith('url(') || token === 'none') {
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
if (/^(linear-gradient|radial-gradient|conic-gradient|repeating-linear-gradient|repeating-radial-gradient|repeating-conic-gradient)\(/i.test(token)) {
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
if (/^(repeat|no-repeat|repeat-x|repeat-y|space|round)$/i.test(token)) {
|
|
411
|
+
continue;
|
|
412
|
+
}
|
|
413
|
+
if (/^(scroll|fixed|local)$/i.test(token)) {
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
if (/^(center|top|bottom|left|right|\d+%|\d+px)/i.test(token)) {
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
if (/^(cover|contain)$/i.test(token)) {
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
if (/^(border-box|padding-box|content-box)$/i.test(token)) {
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
if (/^(clip|border|padding|content)$/i.test(token)) {
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
if (/^\d/.test(token) && !token.includes('gradient')) {
|
|
429
|
+
continue;
|
|
430
|
+
}
|
|
431
|
+
if (/^(transparent|white|black|red|blue|green|yellow|orange|purple|pink|gray|grey|brown|cyan|magenta|olive|lime|aqua|navy|teal|maroon|silver|fuchsia)$/i.test(token)) {
|
|
432
|
+
return token;
|
|
433
|
+
}
|
|
434
|
+
if (/^(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)$/i.test(token)) {
|
|
435
|
+
return token;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
333
440
|
convertSpacingShorthand(prop, value) {
|
|
334
441
|
const tokens = this.tokenizeValue(value);
|
|
335
442
|
const classes = [];
|
|
@@ -1338,4 +1445,4 @@ class TailwindMapper {
|
|
|
1338
1445
|
}
|
|
1339
1446
|
}
|
|
1340
1447
|
exports.TailwindMapper = TailwindMapper;
|
|
1341
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmRNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGFpbHdpbmRNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQXdDO0FBeUJ4QyxNQUFhLGNBQWM7SUFVekIsWUFBWSxNQUFzQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1FBRWpELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxNQUFN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QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksWUFBWSxRQUFRLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFDakUsZUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLFFBQVEsS0FBSyxLQUFLLE1BQU0sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQ3RFLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUMvQixlQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsUUFBUSxLQUFLLEtBQUssTUFBTSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDM0UsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNuQyxlQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsUUFBUSxLQUFLLEtBQUssTUFBTSxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pGLENBQUM7Z0JBQ0QsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBOWhERCx3Q0E4aERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGFpbHdpbmRDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL3V0aWxzL2xvZ2dlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ1NTUHJvcGVydHkge1xuICBwcm9wZXJ0eTogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNpb25SZXN1bHQge1xuICBjbGFzc05hbWU6IHN0cmluZyB8IG51bGw7XG4gIHNraXBwZWQ6IGJvb2xlYW47XG4gIHJlYXNvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNdWx0aUNvbnZlcnNpb25SZXN1bHQge1xuICBjbGFzc2VzOiBzdHJpbmdbXTtcbiAgd2FybmluZ3M6IHN0cmluZ1tdO1xuICBjc3NQcm9wZXJ0aWVzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFBhcnNlZFNwYWNpbmdWYWx1ZSB7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHB4OiBudW1iZXIgfCBudWxsO1xuICBzcGFjaW5nS2V5OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgVGFpbHdpbmRNYXBwZXIge1xuICBwcml2YXRlIGNvbmZpZzogVGFpbHdpbmRDb25maWc7XG4gIHByaXZhdGUgc3BhY2luZ1NjYWxlOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICBwcml2YXRlIG1heFdpZHRoU2NhbGU6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgZm9udFNpemVTY2FsZTogTWFwPG51bWJlciwgc3RyaW5nPjtcbiAgcHJpdmF0ZSBsaW5lSGVpZ2h0U2NhbGU6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgbGV0dGVyU3BhY2luZ1NjYWxlOiBNYXA8c3RyaW5nLCBzdHJpbmc+O1xuICBwcml2YXRlIHpJbmRleFNjYWxlOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICBwcml2YXRlIG9wYWNpdHlTY2FsZTogTWFwPG51bWJlciwgc3RyaW5nPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFRhaWx3aW5kQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5zcGFjaW5nU2NhbGUgPSB0aGlzLmJ1aWxkU3BhY2luZ1NjYWxlKCk7XG4gICAgdGhpcy5tYXhXaWR0aFNjYWxlID0gdGhpcy5idWlsZE1heFdpZHRoU2NhbGUoKTtcbiAgICB0aGlzLmZvbnRTaXplU2NhbGUgPSB0aGlzLmJ1aWxkRm9udFNpemVTY2FsZSgpO1xuICAgIHRoaXMubGluZUhlaWdodFNjYWxlID0gdGhpcy5idWlsZExpbmVIZWlnaHRTY2FsZSgpO1xuICAgIHRoaXMubGV0dGVyU3BhY2luZ1NjYWxlID0gdGhpcy5idWlsZExldHRlclNwYWNpbmdTY2FsZSgpO1xuICAgIHRoaXMuekluZGV4U2NhbGUgPSB0aGlzLmJ1aWxkWkluZGV4U2NhbGUoKTtcbiAgICB0aGlzLm9wYWNpdHlTY2FsZSA9IHRoaXMuYnVpbGRPcGFjaXR5U2NhbGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTcGFjaW5nU2NhbGUoKTogTWFwPG51bWJlciwgc3RyaW5nPiB7XG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuICAgIGNvbnN0IHNwYWNpbmcgPSB0aGlzLmNvbmZpZy50aGVtZT8uc3BhY2luZyB8fCB7fTtcblxuICAgIE9iamVjdC5lbnRyaWVzKHNwYWNpbmcpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgcmVtTWF0Y2ggPSB2YWx1ZS5tYXRjaCgvKFtcXGQuXSspcmVtLyk7XG4gICAgICBpZiAocmVtTWF0Y2gpIHtcbiAgICAgICAgY29uc3QgcGl4ZWxzID0gcGFyc2VGbG9hdChyZW1NYXRjaFsxXSkgKiAxNjtcbiAgICAgICAgc2NhbGUuc2V0KE1hdGgucm91bmQocGl4ZWxzKSwga2V5KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHhNYXRjaCA9IHZhbHVlLm1hdGNoKC8oW1xcZC5dKylweC8pO1xuICAgICAgaWYgKHB4TWF0Y2gpIHtcbiAgICAgICAgc2NhbGUuc2V0KE1hdGgucm91bmQocGFyc2VGbG9hdChweE1hdGNoWzFdKSksIGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTWF4V2lkdGhTY2FsZSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzY2FsZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgbWF4V2lkdGggPSB0aGlzLmNvbmZpZy50aGVtZT8ubWF4V2lkdGggfHwge307XG5cbiAgICBPYmplY3QuZW50cmllcyhtYXhXaWR0aCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzY2FsZS5zZXQodmFsdWUsIGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzY2FsZS5zZXQoJzEwMCUnLCAnZnVsbCcpO1xuICAgIHNjYWxlLnNldCgnbWluLWNvbnRlbnQnLCAnbWluJyk7XG4gICAgc2NhbGUuc2V0KCdtYXgtY29udGVudCcsICdtYXgnKTtcbiAgICBzY2FsZS5zZXQoJ2ZpdC1jb250ZW50JywgJ2ZpdCcpO1xuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZvbnRTaXplU2NhbGUoKTogTWFwPG51bWJlciwgc3RyaW5nPiB7XG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuICAgIGNvbnN0IGZvbnRTaXplID0gdGhpcy5jb25maWcudGhlbWU/LmZvbnRTaXplIHx8IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoZm9udFNpemUpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgcmVtTWF0Y2ggPSB2YWx1ZS5tYXRjaCgvKFtcXGQuXSspcmVtLyk7XG4gICAgICAgIGlmIChyZW1NYXRjaCkge1xuICAgICAgICAgIHNjYWxlLnNldChNYXRoLnJvdW5kKHBhcnNlRmxvYXQocmVtTWF0Y2hbMV0pICogMTYpLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHB4TWF0Y2ggPSB2YWx1ZS5tYXRjaCgvKFtcXGQuXSspcHgvKTtcbiAgICAgICAgaWYgKHB4TWF0Y2gpIHtcbiAgICAgICAgICBzY2FsZS5zZXQoTWF0aC5yb3VuZChwYXJzZUZsb2F0KHB4TWF0Y2hbMV0pKSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB0eXBlb2YgdmFsdWVbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHJlbU1hdGNoID0gdmFsdWVbMF0ubWF0Y2goLyhbXFxkLl0rKXJlbS8pO1xuICAgICAgICBpZiAocmVtTWF0Y2gpIHtcbiAgICAgICAgICBzY2FsZS5zZXQoTWF0aC5yb3VuZChwYXJzZUZsb2F0KHJlbU1hdGNoWzFdKSAqIDE2KSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBweE1hdGNoID0gdmFsdWVbMF0ubWF0Y2goLyhbXFxkLl0rKXB4Lyk7XG4gICAgICAgIGlmIChweE1hdGNoKSB7XG4gICAgICAgICAgc2NhbGUuc2V0KE1hdGgucm91bmQocGFyc2VGbG9hdChweE1hdGNoWzFdKSksIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaW5lSGVpZ2h0U2NhbGUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGNvbnN0IGxpbmVIZWlnaHQgPSB0aGlzLmNvbmZpZy50aGVtZT8ubGluZUhlaWdodCB8fCB7fTtcblxuICAgIE9iamVjdC5lbnRyaWVzKGxpbmVIZWlnaHQpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc2NhbGUuc2V0KHZhbHVlLCBrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2NhbGUuc2V0KCcxJywgJ25vbmUnKTtcbiAgICBzY2FsZS5zZXQoJzEuMjUnLCAndGlnaHQnKTtcbiAgICBzY2FsZS5zZXQoJzEuMzc1JywgJ3NudWcnKTtcbiAgICBzY2FsZS5zZXQoJzEuNScsICdub3JtYWwnKTtcbiAgICBzY2FsZS5zZXQoJzEuNjI1JywgJ3JlbGF4ZWQnKTtcbiAgICBzY2FsZS5zZXQoJzInLCAnbG9vc2UnKTtcblxuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMZXR0ZXJTcGFjaW5nU2NhbGUoKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICAgIGNvbnN0IGxldHRlclNwYWNpbmcgPSB0aGlzLmNvbmZpZy50aGVtZT8ubGV0dGVyU3BhY2luZyB8fCB7fTtcblxuICAgIE9iamVjdC5lbnRyaWVzKGxldHRlclNwYWNpbmcpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc2NhbGUuc2V0KHZhbHVlLCBrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFpJbmRleFNjYWxlKCk6IE1hcDxudW1iZXIsIHN0cmluZz4ge1xuICAgIGNvbnN0IHNjYWxlID0gbmV3IE1hcDxudW1iZXIsIHN0cmluZz4oKTtcbiAgICBjb25zdCB6SW5kZXggPSB0aGlzLmNvbmZpZy50aGVtZT8uekluZGV4IHx8IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoekluZGV4KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgICAgIGlmICghaXNOYU4obnVtKSkge1xuICAgICAgICAgIHNjYWxlLnNldChudW0sIGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNjYWxlLnNldCgwLCAnMCcpO1xuICAgIHNjYWxlLnNldCgxMCwgJzEwJyk7XG4gICAgc2NhbGUuc2V0KDIwLCAnMjAnKTtcbiAgICBzY2FsZS5zZXQoMzAsICczMCcpO1xuICAgIHNjYWxlLnNldCg0MCwgJzQwJyk7XG4gICAgc2NhbGUuc2V0KDUwLCAnNTAnKTtcblxuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRPcGFjaXR5U2NhbGUoKTogTWFwPG51bWJlciwgc3RyaW5nPiB7XG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuICAgIGNvbnN0IG9wYWNpdHkgPSB0aGlzLmNvbmZpZy50aGVtZT8ub3BhY2l0eSB8fCB7fTtcblxuICAgIE9iamVjdC5lbnRyaWVzKG9wYWNpdHkpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICBjb25zdCBudW0gPSB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gcGFyc2VGbG9hdCh2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgaWYgKCFpc05hTihudW0pKSB7XG4gICAgICAgICAgc2NhbGUuc2V0KE1hdGgucm91bmQobnVtICogMTAwKSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gMTAwOyBpICs9IDUpIHtcbiAgICAgIGlmICghc2NhbGUuaGFzKGkpKSB7XG4gICAgICAgIHNjYWxlLnNldChpLCBTdHJpbmcoaSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHByaXZhdGUgcHhUb1NwYWNpbmcocHg6IG51bWJlcik6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLnNwYWNpbmdTY2FsZS5oYXMocHgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zcGFjaW5nU2NhbGUuZ2V0KHB4KSE7XG4gICAgfVxuXG4gICAgbGV0IGNsb3Nlc3RLZXk6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIGxldCBjbG9zZXN0RGlmZjogbnVtYmVyID0gSW5maW5pdHk7XG4gICAgXG4gICAgdGhpcy5zcGFjaW5nU2NhbGUuZm9yRWFjaCgoXywga2V5KSA9PiB7XG4gICAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoa2V5IC0gcHgpO1xuICAgICAgaWYgKGRpZmYgPCBjbG9zZXN0RGlmZikge1xuICAgICAgICBjbG9zZXN0S2V5ID0ga2V5O1xuICAgICAgICBjbG9zZXN0RGlmZiA9IGRpZmY7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoY2xvc2VzdEtleSAhPT0gbnVsbCAmJiBjbG9zZXN0RGlmZiAvIHB4IDwgMC4yKSB7XG4gICAgICByZXR1cm4gdGhpcy5zcGFjaW5nU2NhbGUuZ2V0KGNsb3Nlc3RLZXkpIHx8IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RQeCh2YWx1ZTogc3RyaW5nKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgY29uc3QgcHhNYXRjaCA9IHZhbHVlLm1hdGNoKC9eKFtcXGQuXSspcHgkLyk7XG4gICAgaWYgKHB4TWF0Y2gpIHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHB4TWF0Y2hbMV0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbU1hdGNoID0gdmFsdWUubWF0Y2goL14oW1xcZC5dKylyZW0kLyk7XG4gICAgaWYgKHJlbU1hdGNoKSB7XG4gICAgICByZXR1cm4gcGFyc2VGbG9hdChyZW1NYXRjaFsxXSkgKiAxNjtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VTcGFjaW5nVmFsdWUodmFsdWU6IHN0cmluZyk6IFBhcnNlZFNwYWNpbmdWYWx1ZSB7XG4gICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeCh2YWx1ZSk7XG4gICAgY29uc3Qgc3BhY2luZ0tleSA9IHB4ICE9PSBudWxsID8gdGhpcy5weFRvU3BhY2luZyhweCkgOiBudWxsO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlLFxuICAgICAgcHgsXG4gICAgICBzcGFjaW5nS2V5XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRTcGFjaW5nVXRpbGl0eShwcmVmaXg6IHN0cmluZywgcGFyc2VkOiBQYXJzZWRTcGFjaW5nVmFsdWUpOiBzdHJpbmcge1xuICAgIGlmIChwYXJzZWQuc3BhY2luZ0tleSkge1xuICAgICAgcmV0dXJuIGAke3ByZWZpeH0tJHtwYXJzZWQuc3BhY2luZ0tleX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7cHJlZml4fS1bJHtwYXJzZWQudmFsdWV9XWA7XG4gIH1cblxuICBwcml2YXRlIHRva2VuaXplVmFsdWUodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB0b2tlbnM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IGN1cnJlbnQgPSAnJztcbiAgICBsZXQgcGFyZW5EZXB0aCA9IDA7XG4gICAgbGV0IGluRnVuY3Rpb24gPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYXIgPSB2YWx1ZVtpXTtcblxuICAgICAgaWYgKGNoYXIgPT09ICcoJykge1xuICAgICAgICBwYXJlbkRlcHRoKys7XG4gICAgICAgIGluRnVuY3Rpb24gPSB0cnVlO1xuICAgICAgICBjdXJyZW50ICs9IGNoYXI7XG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICcpJykge1xuICAgICAgICBwYXJlbkRlcHRoLS07XG4gICAgICAgIGN1cnJlbnQgKz0gY2hhcjtcbiAgICAgICAgaWYgKHBhcmVuRGVwdGggPT09IDApIHtcbiAgICAgICAgICBpbkZ1bmN0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJyAnICYmIHBhcmVuRGVwdGggPT09IDApIHtcbiAgICAgICAgaWYgKGN1cnJlbnQudHJpbSgpKSB7XG4gICAgICAgICAgdG9rZW5zLnB1c2goY3VycmVudC50cmltKCkpO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gY2hhcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY3VycmVudC50cmltKCkpIHtcbiAgICAgIHRva2Vucy5wdXNoKGN1cnJlbnQudHJpbSgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9rZW5zO1xuICB9XG5cbiAgY29udmVydFByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBub3JtYWxpemVkUHJvcCA9IHByb3BlcnR5LnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuXG4gICAgbG9nZ2VyLnZlcmJvc2UoYENvbnZlcnRpbmc6ICR7bm9ybWFsaXplZFByb3B9OiAke25vcm1hbGl6ZWRWYWx1ZX1gKTtcblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2Rpc3BsYXknKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGlzcGxheShub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ3Bvc2l0aW9uJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBub3JtYWxpemVkVmFsdWUsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wLnN0YXJ0c1dpdGgoJ21hcmdpbicpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TWFyZ2luKG5vcm1hbGl6ZWRQcm9wLCBub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcC5zdGFydHNXaXRoKCdwYWRkaW5nJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRQYWRkaW5nKG5vcm1hbGl6ZWRQcm9wLCBub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ21heC13aWR0aCcgfHwgbm9ybWFsaXplZFByb3AgPT09ICdtaW4td2lkdGgnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGltZW5zaW9uQ29uc3RyYWludChub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdtYXgtaGVpZ2h0JyB8fCBub3JtYWxpemVkUHJvcCA9PT0gJ21pbi1oZWlnaHQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGltZW5zaW9uQ29uc3RyYWludChub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICd3aWR0aCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRXaWR0aChub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2hlaWdodCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRIZWlnaHQobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdmb250LXdlaWdodCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGb250V2VpZ2h0KG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnZm9udC1zaXplJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZvbnRTaXplKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAndGV4dC1hbGlnbicpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHRleHQtJHtub3JtYWxpemVkVmFsdWV9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICd0ZXh0LWRlY29yYXRpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VGV4dERlY29yYXRpb24obm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICd0ZXh0LXRyYW5zZm9ybScpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUZXh0VHJhbnNmb3JtKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnbGV0dGVyLXNwYWNpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TGV0dGVyU3BhY2luZyhub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2xpbmUtaGVpZ2h0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydExpbmVIZWlnaHQobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3Auc3RhcnRzV2l0aCgnZmxleCcpIHx8IFxuICAgICAgICBub3JtYWxpemVkUHJvcC5zdGFydHNXaXRoKCdqdXN0aWZ5JykgfHwgXG4gICAgICAgIG5vcm1hbGl6ZWRQcm9wLnN0YXJ0c1dpdGgoJ2FsaWduJykpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGbGV4Ym94KG5vcm1hbGl6ZWRQcm9wLCBub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2dhcCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRHYXAobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdiYWNrZ3JvdW5kLWNvbG9yJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEJhY2tncm91bmRDb2xvcihub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2NvbG9yJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRleHRDb2xvcihub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2JvcmRlci1yYWRpdXMnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0Qm9yZGVyUmFkaXVzKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wLnN0YXJ0c1dpdGgoJ2JvcmRlcicpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0Qm9yZGVyKG5vcm1hbGl6ZWRQcm9wLCBub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2FzcGVjdC1yYXRpbycpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRBc3BlY3RSYXRpbyhub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ292ZXJmbG93JyB8fCBub3JtYWxpemVkUHJvcCA9PT0gJ292ZXJmbG93LXgnIHx8IG5vcm1hbGl6ZWRQcm9wID09PSAnb3ZlcmZsb3cteScpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRPdmVyZmxvdyhub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdvYmplY3QtZml0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydE9iamVjdEZpdChub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ29iamVjdC1wb3NpdGlvbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRPYmplY3RQb3NpdGlvbihub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ29wYWNpdHknKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0T3BhY2l0eShub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ3dvcmQtYnJlYWsnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0V29yZEJyZWFrKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnei1pbmRleCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRaSW5kZXgobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBudWxsLFxuICAgICAgc2tpcHBlZDogdHJ1ZSxcbiAgICAgIHJlYXNvbjogYFVuc3VwcG9ydGVkIHByb3BlcnR5OiAke3Byb3BlcnR5fWBcbiAgICB9O1xuICB9XG5cbiAgY29udmVydFByb3BlcnR5V2l0aE11bHRpcGxlKHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBNdWx0aUNvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcm9wID0gcHJvcGVydHkudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdtYXJnaW4nIHx8IG5vcm1hbGl6ZWRQcm9wID09PSAncGFkZGluZycpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRTcGFjaW5nU2hvcnRoYW5kKG5vcm1hbGl6ZWRQcm9wLCBub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2JvcmRlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRCb3JkZXJTaG9ydGhhbmQobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3Auc3RhcnRzV2l0aCgnYm9yZGVyLScpICYmIFxuICAgICAgICBbJ2JvcmRlci10b3AnLCAnYm9yZGVyLXJpZ2h0JywgJ2JvcmRlci1ib3R0b20nLCAnYm9yZGVyLWxlZnQnXS5pbmNsdWRlcyhub3JtYWxpemVkUHJvcCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnREaXJlY3Rpb25hbEJvcmRlclNob3J0aGFuZChub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdmbGV4Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEZsZXhTaG9ydGhhbmQobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNvbnZlcnRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpO1xuICAgIHJldHVybiB7XG4gICAgICBjbGFzc2VzOiByZXN1bHQuY2xhc3NOYW1lID8gW3Jlc3VsdC5jbGFzc05hbWVdIDogW10sXG4gICAgICB3YXJuaW5nczogcmVzdWx0LnJlYXNvbiA/IFtyZXN1bHQucmVhc29uXSA6IFtdLFxuICAgICAgY3NzUHJvcGVydGllczogcmVzdWx0LmNsYXNzTmFtZSA/IFtwcm9wZXJ0eV0gOiBbXVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRTcGFjaW5nU2hvcnRoYW5kKHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IE11bHRpQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbml6ZVZhbHVlKHZhbHVlKTtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNzc1Byb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgcHJlZml4ID0gcHJvcCA9PT0gJ21hcmdpbicgPyAnbScgOiAncCc7XG4gICAgY29uc3QgcHJvcFByZWZpeCA9IHByb3AgPT09ICdtYXJnaW4nID8gJ21hcmdpbicgOiAncGFkZGluZyc7XG5cbiAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3M6IFsnRW1wdHkgc3BhY2luZyB2YWx1ZSddLCBjc3NQcm9wZXJ0aWVzIH07XG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkVG9rZW5zID0gdG9rZW5zLm1hcCh0ID0+IHRoaXMucGFyc2VTcGFjaW5nVmFsdWUodCkpO1xuXG4gICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlZFRva2Vuc1swXTtcbiAgICAgIGlmIChwYXJzZWQucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1swXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShwcmVmaXgsIHBhcnNlZCkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2gocHJvcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBJbnZhbGlkICR7cHJvcH0gdmFsdWU6ICR7dG9rZW5zWzBdfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMikge1xuICAgICAgY29uc3QgW3ZlcnRpY2FsLCBob3Jpem9udGFsXSA9IHBhcnNlZFRva2VucztcbiAgICAgIFxuICAgICAgaWYgKHZlcnRpY2FsLnB4ICE9PSBudWxsIHx8IC9eLT9cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh0b2tlbnNbMF0pKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmJ1aWxkU3BhY2luZ1V0aWxpdHkoYCR7cHJlZml4fXlgLCB2ZXJ0aWNhbCkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goYCR7cHJvcFByZWZpeH0teWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgSW52YWxpZCAke3Byb3B9IHZlcnRpY2FsIHZhbHVlOiAke3Rva2Vuc1swXX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhvcml6b250YWwucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1sxXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9eGAsIGhvcml6b250YWwpKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKGAke3Byb3BQcmVmaXh9LXhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfSBob3Jpem9udGFsIHZhbHVlOiAke3Rva2Vuc1sxXX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRva2Vucy5sZW5ndGggPT09IDMpIHtcbiAgICAgIGNvbnN0IFt0b3AsIGhvcml6b250YWwsIGJvdHRvbV0gPSBwYXJzZWRUb2tlbnM7XG5cbiAgICAgIGlmICh0b3AucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1swXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9dGAsIHRvcCkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goYCR7cHJvcFByZWZpeH0tdG9wYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBJbnZhbGlkICR7cHJvcH0tdG9wIHZhbHVlOiAke3Rva2Vuc1swXX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGhvcml6b250YWwucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1sxXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9eGAsIGhvcml6b250YWwpKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKGAke3Byb3BQcmVmaXh9LXhgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfSBob3Jpem9udGFsIHZhbHVlOiAke3Rva2Vuc1sxXX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvdHRvbS5weCAhPT0gbnVsbCB8fCAvXi0/XFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodG9rZW5zWzJdKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2godGhpcy5idWlsZFNwYWNpbmdVdGlsaXR5KGAke3ByZWZpeH1iYCwgYm90dG9tKSk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChgJHtwcm9wUHJlZml4fS1ib3R0b21gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfS1ib3R0b20gdmFsdWU6ICR7dG9rZW5zWzJdfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodG9rZW5zLmxlbmd0aCA+PSA0KSB7XG4gICAgICBjb25zdCBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XSA9IHBhcnNlZFRva2VucztcblxuICAgICAgaWYgKHRvcC5weCAhPT0gbnVsbCB8fCAvXi0/XFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodG9rZW5zWzBdKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2godGhpcy5idWlsZFNwYWNpbmdVdGlsaXR5KGAke3ByZWZpeH10YCwgdG9wKSk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChgJHtwcm9wUHJlZml4fS10b3BgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfS10b3AgdmFsdWU6ICR7dG9rZW5zWzBdfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAocmlnaHQucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1sxXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9cmAsIHJpZ2h0KSk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChgJHtwcm9wUHJlZml4fS1yaWdodGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgSW52YWxpZCAke3Byb3B9LXJpZ2h0IHZhbHVlOiAke3Rva2Vuc1sxXX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGJvdHRvbS5weCAhPT0gbnVsbCB8fCAvXi0/XFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodG9rZW5zWzJdKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2godGhpcy5idWlsZFNwYWNpbmdVdGlsaXR5KGAke3ByZWZpeH1iYCwgYm90dG9tKSk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChgJHtwcm9wUHJlZml4fS1ib3R0b21gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfS1ib3R0b20gdmFsdWU6ICR7dG9rZW5zWzJdfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAobGVmdC5weCAhPT0gbnVsbCB8fCAvXi0/XFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodG9rZW5zWzNdKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2godGhpcy5idWlsZFNwYWNpbmdVdGlsaXR5KGAke3ByZWZpeH1sYCwgbGVmdCkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goYCR7cHJvcFByZWZpeH0tbGVmdGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgSW52YWxpZCAke3Byb3B9LWxlZnQgdmFsdWU6ICR7dG9rZW5zWzNdfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnREaXNwbGF5KHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBkaXNwbGF5TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ2ZsZXgnOiAnZmxleCcsXG4gICAgICAnYmxvY2snOiAnYmxvY2snLFxuICAgICAgJ2lubGluZSc6ICdpbmxpbmUnLFxuICAgICAgJ2lubGluZS1ibG9jayc6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgJ2dyaWQnOiAnZ3JpZCcsXG4gICAgICAnaW5saW5lLWZsZXgnOiAnaW5saW5lLWZsZXgnLFxuICAgICAgJ2lubGluZS1ncmlkJzogJ2lubGluZS1ncmlkJyxcbiAgICAgICdub25lJzogJ2hpZGRlbicsXG4gICAgICAnY29udGVudHMnOiAnY29udGVudHMnLFxuICAgICAgJ3RhYmxlJzogJ3RhYmxlJyxcbiAgICAgICd0YWJsZS1jZWxsJzogJ3RhYmxlLWNlbGwnLFxuICAgICAgJ3RhYmxlLXJvdyc6ICd0YWJsZS1yb3cnLFxuICAgICAgJ2Zsb3ctcm9vdCc6ICdmbG93LXJvb3QnXG4gICAgfTtcblxuICAgIGlmIChkaXNwbGF5TWFwW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBkaXNwbGF5TWFwW3ZhbHVlXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVua25vd24gZGlzcGxheSB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRNYXJnaW4ocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3Qgc2lkZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdtYXJnaW4nOiAnbScsXG4gICAgICAnbWFyZ2luLXRvcCc6ICdtdCcsXG4gICAgICAnbWFyZ2luLXJpZ2h0JzogJ21yJyxcbiAgICAgICdtYXJnaW4tYm90dG9tJzogJ21iJyxcbiAgICAgICdtYXJnaW4tbGVmdCc6ICdtbCcsXG4gICAgICAnbWFyZ2luLXgnOiAnbXgnLFxuICAgICAgJ21hcmdpbi15JzogJ215J1xuICAgIH07XG4gICAgY29uc3QgcHJlZml4ID0gc2lkZU1hcFtwcm9wXSB8fCAnbSc7XG4gICAgXG4gICAgY29uc3QgaXNOZWdhdGl2ZSA9IHZhbHVlLnN0YXJ0c1dpdGgoJy0nKTtcbiAgICBjb25zdCBhYnNvbHV0ZVZhbHVlID0gaXNOZWdhdGl2ZSA/IHZhbHVlLnNsaWNlKDEpIDogdmFsdWU7XG4gICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeChhYnNvbHV0ZVZhbHVlKTtcbiAgICBcbiAgICBpZiAodmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LWF1dG9gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBcbiAgICBpZiAocHggPT09IG51bGwpIHtcbiAgICAgIGlmICgvXi0/XFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgTm9uLXBpeGVsIG1hcmdpbiB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc3BhY2luZyA9IHRoaXMucHhUb1NwYWNpbmcocHgpO1xuICAgIGlmICghc3BhY2luZykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogaXNOZWdhdGl2ZSA/IGAtJHtwcmVmaXh9LSR7c3BhY2luZ31gIDogYCR7cHJlZml4fS0ke3NwYWNpbmd9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFBhZGRpbmcocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeCh2YWx1ZSk7XG4gICAgXG4gICAgY29uc3Qgc2lkZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdwYWRkaW5nJzogJ3AnLFxuICAgICAgJ3BhZGRpbmctdG9wJzogJ3B0JyxcbiAgICAgICdwYWRkaW5nLXJpZ2h0JzogJ3ByJyxcbiAgICAgICdwYWRkaW5nLWJvdHRvbSc6ICdwYicsXG4gICAgICAncGFkZGluZy1sZWZ0JzogJ3BsJyxcbiAgICAgICdwYWRkaW5nLXgnOiAncHgnLFxuICAgICAgJ3BhZGRpbmcteSc6ICdweSdcbiAgICB9O1xuICAgIGNvbnN0IHByZWZpeCA9IHNpZGVNYXBbcHJvcF0gfHwgJ3AnO1xuICAgIFxuICAgIGlmIChweCA9PT0gbnVsbCkge1xuICAgICAgaWYgKC9eLT9cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBOb24tcGl4ZWwgcGFkZGluZyB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc3BhY2luZyA9IHRoaXMucHhUb1NwYWNpbmcocHgpO1xuICAgIGlmICghc3BhY2luZykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS0ke3NwYWNpbmd9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydERpbWVuc2lvbkNvbnN0cmFpbnQocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgcHJlZml4TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ21heC13aWR0aCc6ICdtYXgtdycsXG4gICAgICAnbWluLXdpZHRoJzogJ21pbi13JyxcbiAgICAgICdtYXgtaGVpZ2h0JzogJ21heC1oJyxcbiAgICAgICdtaW4taGVpZ2h0JzogJ21pbi1oJ1xuICAgIH07XG4gICAgY29uc3QgcHJlZml4ID0gcHJlZml4TWFwW3Byb3BdO1xuXG4gICAgaWYgKHZhbHVlID09PSAnMTAwJScpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1mdWxsYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnMCcgfHwgdmFsdWUgPT09ICcwcHgnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGAke3ByZWZpeH0tMGAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGAke3ByZWZpeH0tbm9uZWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdtYXgtd2lkdGgnKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICdtaW4tY29udGVudCcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnbWF4LXctbWluJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ21heC1jb250ZW50Jykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdtYXgtdy1tYXgnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSAnZml0LWNvbnRlbnQnKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ21heC13LWZpdCcsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1heFdQcm9zZVNpemVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnNjVjaCc6ICdwcm9zZScsXG4gICAgICAgICc4MGNoJzogJ3Byb3NlLWxnJ1xuICAgICAgfTtcbiAgICAgIGlmIChtYXhXUHJvc2VTaXplc1t2YWx1ZV0pIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgbWF4LXctJHttYXhXUHJvc2VTaXplc1t2YWx1ZV19YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubWF4V2lkdGhTY2FsZS5oYXModmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYG1heC13LSR7dGhpcy5tYXhXaWR0aFNjYWxlLmdldCh2YWx1ZSl9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBweCA9IHRoaXMuZXh0cmFjdFB4KHZhbHVlKTtcbiAgICBpZiAocHggIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNwYWNpbmcgPSB0aGlzLnB4VG9TcGFjaW5nKHB4KTtcbiAgICAgIGlmIChzcGFjaW5nKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS0ke3NwYWNpbmd9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JXxjaHx2d3x2aCk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYENvbXBsZXggJHtwcm9wfSB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRGb250V2VpZ2h0KHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCB3ZWlnaHRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnMTAwJzogJ2ZvbnQtdGhpbicsXG4gICAgICAnMjAwJzogJ2ZvbnQtZXh0cmFsaWdodCcsXG4gICAgICAnMzAwJzogJ2ZvbnQtbGlnaHQnLFxuICAgICAgJzQwMCc6ICdmb250LW5vcm1hbCcsXG4gICAgICAnNTAwJzogJ2ZvbnQtbWVkaXVtJyxcbiAgICAgICc2MDAnOiAnZm9udC1zZW1pYm9sZCcsXG4gICAgICAnNzAwJzogJ2ZvbnQtYm9sZCcsXG4gICAgICAnODAwJzogJ2ZvbnQtZXh0cmFib2xkJyxcbiAgICAgICc5MDAnOiAnZm9udC1ibGFjaycsXG4gICAgICAnbm9ybWFsJzogJ2ZvbnQtbm9ybWFsJyxcbiAgICAgICdib2xkJzogJ2ZvbnQtYm9sZCdcbiAgICB9O1xuXG4gICAgaWYgKHdlaWdodE1hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogd2VpZ2h0TWFwW3ZhbHVlXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVua25vd24gZm9udC13ZWlnaHQ6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Rm9udFNpemUodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHB4ID0gdGhpcy5leHRyYWN0UHgodmFsdWUpO1xuICAgIGlmIChweCAhPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuZm9udFNpemVTY2FsZS5oYXMocHgpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHRleHQtJHt0aGlzLmZvbnRTaXplU2NhbGUuZ2V0KHB4KX1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgXG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB0ZXh0LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdGV4dC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYE5vbi1zdGFuZGFyZCBmb250LXNpemU6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VGV4dERlY29yYXRpb24odmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IGRlY29yYXRpb25NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAndW5kZXJsaW5lJzogJ3VuZGVybGluZScsXG4gICAgICAnbGluZS10aHJvdWdoJzogJ2xpbmUtdGhyb3VnaCcsXG4gICAgICAnbm9uZSc6ICduby11bmRlcmxpbmUnLFxuICAgICAgJ25vLXVuZGVybGluZSc6ICduby11bmRlcmxpbmUnXG4gICAgfTtcblxuICAgIGlmIChkZWNvcmF0aW9uTWFwW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBkZWNvcmF0aW9uTWFwW3ZhbHVlXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBsb2dnZXIud2FybihgVW5zdXBwb3J0ZWQgdGV4dC1kZWNvcmF0aW9uIHZhbHVlOiAke3ZhbHVlfWApO1xuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5zdXBwb3J0ZWQgdGV4dC1kZWNvcmF0aW9uOiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRleHRUcmFuc2Zvcm0odmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHRyYW5zZm9ybU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICd1cHBlcmNhc2UnOiAndXBwZXJjYXNlJyxcbiAgICAgICdsb3dlcmNhc2UnOiAnbG93ZXJjYXNlJyxcbiAgICAgICdjYXBpdGFsaXplJzogJ2NhcGl0YWxpemUnLFxuICAgICAgJ25vbmUnOiAnbm9ybWFsLWNhc2UnLFxuICAgICAgJ2luaXRpYWwnOiAnbm9ybWFsLWNhc2UnXG4gICAgfTtcblxuICAgIGlmICh0cmFuc2Zvcm1NYXBbdmFsdWVdKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IHRyYW5zZm9ybU1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIHRleHQtdHJhbnNmb3JtOiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydExldHRlclNwYWNpbmcodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGlmICh0aGlzLmxldHRlclNwYWNpbmdTY2FsZS5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB0cmFja2luZy0ke3RoaXMubGV0dGVyU3BhY2luZ1NjYWxlLmdldCh2YWx1ZSl9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBrbm93bk1hcHBpbmdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJy0wLjAyNWVtJzogJ3RpZ2h0JyxcbiAgICAgICctMC4wNWVtJzogJ3RpZ2h0ZXInLFxuICAgICAgJzAuMDI1ZW0nOiAnd2lkZScsXG4gICAgICAnMC4wNWVtJzogJ3dpZGVyJyxcbiAgICAgICcwLjFlbSc6ICd3aWRlc3QnLFxuICAgICAgJzBlbSc6ICdub3JtYWwnXG4gICAgfTtcblxuICAgIGlmIChrbm93bk1hcHBpbmdzW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdHJhY2tpbmctJHtrbm93bk1hcHBpbmdzW3ZhbHVlXX1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXi0/XFxkKyhcXC5cXGQrKT8oZW18cHh8cmVtKT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdHJhY2tpbmctWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGxldHRlci1zcGFjaW5nOiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydExpbmVIZWlnaHQodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGlmICh0aGlzLmxpbmVIZWlnaHRTY2FsZS5oYXModmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBsZWFkaW5nLSR7dGhpcy5saW5lSGVpZ2h0U2NhbGUuZ2V0KHZhbHVlKX1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IGtub3duTWFwcGluZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnMSc6ICdub25lJyxcbiAgICAgICcxLjI1JzogJ3RpZ2h0JyxcbiAgICAgICcxLjM3NSc6ICdzbnVnJyxcbiAgICAgICcxLjUnOiAnbm9ybWFsJyxcbiAgICAgICcxLjYyNSc6ICdyZWxheGVkJyxcbiAgICAgICcyJzogJ2xvb3NlJ1xuICAgIH07XG5cbiAgICBpZiAoa25vd25NYXBwaW5nc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGxlYWRpbmctJHtrbm93bk1hcHBpbmdzW3ZhbHVlXX1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGxlYWRpbmctWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtKT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgbGVhZGluZy1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVua25vd24gbGluZS1oZWlnaHQ6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RmxleGJveChwcm9wOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBpZiAocHJvcCA9PT0gJ2ZsZXgtZGlyZWN0aW9uJykge1xuICAgICAgY29uc3QgZGlyTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAncm93JzogJ2ZsZXgtcm93JyxcbiAgICAgICAgJ3Jvdy1yZXZlcnNlJzogJ2ZsZXgtcm93LXJldmVyc2UnLFxuICAgICAgICAnY29sdW1uJzogJ2ZsZXgtY29sJyxcbiAgICAgICAgJ2NvbHVtbi1yZXZlcnNlJzogJ2ZsZXgtY29sLXJldmVyc2UnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBkaXJNYXBbdmFsdWVdIHx8IG51bGwsIHNraXBwZWQ6ICFkaXJNYXBbdmFsdWVdIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdmbGV4LXdyYXAnKSB7XG4gICAgICBjb25zdCB3cmFwTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAgICAgICAnbm93cmFwJzogJ2ZsZXgtbm93cmFwJyxcbiAgICAgICAgJ3dyYXAtcmV2ZXJzZSc6ICdmbGV4LXdyYXAtcmV2ZXJzZSdcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IHdyYXBNYXBbdmFsdWVdIHx8IG51bGwsIHNraXBwZWQ6ICF3cmFwTWFwW3ZhbHVlXSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnanVzdGlmeS1jb250ZW50Jykge1xuICAgICAgY29uc3QganVzdGlmeU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ2ZsZXgtc3RhcnQnOiAnanVzdGlmeS1zdGFydCcsXG4gICAgICAgICdmbGV4LWVuZCc6ICdqdXN0aWZ5LWVuZCcsXG4gICAgICAgICdjZW50ZXInOiAnanVzdGlmeS1jZW50ZXInLFxuICAgICAgICAnc3BhY2UtYmV0d2Vlbic6ICdqdXN0aWZ5LWJldHdlZW4nLFxuICAgICAgICAnc3BhY2UtYXJvdW5kJzogJ2p1c3RpZnktYXJvdW5kJyxcbiAgICAgICAgJ3NwYWNlLWV2ZW5seSc6ICdqdXN0aWZ5LWV2ZW5seSdcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGp1c3RpZnlNYXBbdmFsdWVdIHx8IG51bGwsIHNraXBwZWQ6ICFqdXN0aWZ5TWFwW3ZhbHVlXSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnYWxpZ24taXRlbXMnKSB7XG4gICAgICBjb25zdCBhbGlnbk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ2ZsZXgtc3RhcnQnOiAnaXRlbXMtc3RhcnQnLFxuICAgICAgICAnZmxleC1lbmQnOiAnaXRlbXMtZW5kJyxcbiAgICAgICAgJ2NlbnRlcic6ICdpdGVtcy1jZW50ZXInLFxuICAgICAgICAnYmFzZWxpbmUnOiAnaXRlbXMtYmFzZWxpbmUnLFxuICAgICAgICAnc3RyZXRjaCc6ICdpdGVtcy1zdHJldGNoJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYWxpZ25NYXBbdmFsdWVdIHx8IG51bGwsIHNraXBwZWQ6ICFhbGlnbk1hcFt2YWx1ZV0gfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2FsaWduLWNvbnRlbnQnKSB7XG4gICAgICBjb25zdCBhbGlnbk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ2ZsZXgtc3RhcnQnOiAnY29udGVudC1zdGFydCcsXG4gICAgICAgICdmbGV4LWVuZCc6ICdjb250ZW50LWVuZCcsXG4gICAgICAgICdjZW50ZXInOiAnY29udGVudC1jZW50ZXInLFxuICAgICAgICAnc3BhY2UtYmV0d2Vlbic6ICdjb250ZW50LWJldHdlZW4nLFxuICAgICAgICAnc3BhY2UtYXJvdW5kJzogJ2NvbnRlbnQtYXJvdW5kJyxcbiAgICAgICAgJ3N0cmV0Y2gnOiAnY29udGVudC1zdHJldGNoJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYWxpZ25NYXBbdmFsdWVdIHx8IG51bGwsIHNraXBwZWQ6ICFhbGlnbk1hcFt2YWx1ZV0gfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2FsaWduLXNlbGYnKSB7XG4gICAgICBjb25zdCBhbGlnblNlbGZNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdhdXRvJzogJ3NlbGYtYXV0bycsXG4gICAgICAgICdmbGV4LXN0YXJ0JzogJ3NlbGYtc3RhcnQnLFxuICAgICAgICAnZmxleC1lbmQnOiAnc2VsZi1lbmQnLFxuICAgICAgICAnY2VudGVyJzogJ3NlbGYtY2VudGVyJyxcbiAgICAgICAgJ3N0cmV0Y2gnOiAnc2VsZi1zdHJldGNoJyxcbiAgICAgICAgJ2Jhc2VsaW5lJzogJ3NlbGYtYmFzZWxpbmUnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBhbGlnblNlbGZNYXBbdmFsdWVdIHx8IG51bGwsIHNraXBwZWQ6ICFhbGlnblNlbGZNYXBbdmFsdWVdIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdmbGV4LWdyb3cnKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICcwJykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdncm93LTAnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSAnMScpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnZ3JvdycsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBncm93LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnZmxleC1zaHJpbmsnKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICcwJykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdzaHJpbmstMCcsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT09ICcxJykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdzaHJpbmsnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgc2hyaW5rLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnZmxleC1iYXNpcycpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ2Jhc2lzLWF1dG8nLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSAnMCcgfHwgdmFsdWUgPT09ICcwcHgnKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ2Jhc2lzLTAnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeCh2YWx1ZSk7XG4gICAgICBpZiAocHggIT09IG51bGwpIHtcbiAgICAgICAgY29uc3Qgc3BhY2luZyA9IHRoaXMucHhUb1NwYWNpbmcocHgpO1xuICAgICAgICBpZiAoc3BhY2luZykge1xuICAgICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGJhc2lzLSR7c3BhY2luZ31gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JXx2d3x2aCk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgYmFzaXMtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbnN1cHBvcnRlZCBmbGV4Ym94IHByb3BlcnR5OiAke3Byb3B9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RmxleFNob3J0aGFuZCh2YWx1ZTogc3RyaW5nKTogTXVsdGlDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNzc1Byb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAodmFsdWUgPT09ICcxJykge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmbGV4LTEnKTtcbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnZmxleCcpO1xuICAgICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnYXV0bycpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZmxleC1hdXRvJyk7XG4gICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2ZsZXgnKTtcbiAgICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ25vbmUnKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZsZXgtbm9uZScpO1xuICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdmbGV4Jyk7XG4gICAgICByZXR1cm4geyBjbGFzc2VzLCB3YXJuaW5ncywgY3NzUHJvcGVydGllcyB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdpbml0aWFsJykge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmbGV4LWluaXRpYWwnKTtcbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnZmxleCcpO1xuICAgICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRva2VuaXplVmFsdWUodmFsdWUpO1xuICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBbZ3Jvdywgc2hyaW5rLCBiYXNpc10gPSB0b2tlbnM7XG4gICAgICBcbiAgICAgIGlmIChncm93ID09PSAnMScgJiYgc2hyaW5rID09PSAnMScgJiYgYmFzaXMgPT09ICcwJScpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdmbGV4LTEnKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdmbGV4Jyk7XG4gICAgICB9IGVsc2UgaWYgKGdyb3cgPT09ICcxJyAmJiBzaHJpbmsgPT09ICcxJyAmJiBiYXNpcyA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnZmxleC1hdXRvJyk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnZmxleCcpO1xuICAgICAgfSBlbHNlIGlmIChncm93ID09PSAnMCcgJiYgc2hyaW5rID09PSAnMScgJiYgYmFzaXMgPT09ICdhdXRvJykge1xuICAgICAgICBjbGFzc2VzLnB1c2goJ2ZsZXgtaW5pdGlhbCcpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2ZsZXgnKTtcbiAgICAgIH0gZWxzZSBpZiAoZ3JvdyA9PT0gJzAnICYmIHNocmluayA9PT0gJzAnICYmIGJhc2lzID09PSAnYXV0bycpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdmbGV4LW5vbmUnKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdmbGV4Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc2VzLnB1c2goYGZsZXgtWyR7dmFsdWV9XWApO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2ZsZXgnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMSB8fCB0b2tlbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICBjbGFzc2VzLnB1c2goYGZsZXgtWyR7dmFsdWV9XWApO1xuICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdmbGV4Jyk7XG4gICAgICByZXR1cm4geyBjbGFzc2VzLCB3YXJuaW5ncywgY3NzUHJvcGVydGllcyB9O1xuICAgIH1cblxuICAgIHdhcm5pbmdzLnB1c2goYENvbXBsZXggZmxleCBzaG9ydGhhbmQ6ICR7dmFsdWV9YCk7XG4gICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEdhcCh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeCh2YWx1ZSk7XG4gICAgaWYgKHB4ID09PSBudWxsKSB7XG4gICAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgZ2FwLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBOb24tcGl4ZWwgZ2FwIHZhbHVlOiAke3ZhbHVlfWAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBzcGFjaW5nID0gdGhpcy5weFRvU3BhY2luZyhweCk7XG4gICAgaWYgKCFzcGFjaW5nKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBnYXAtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgZ2FwLSR7c3BhY2luZ31gLCBza2lwcGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0V2lkdGgodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGlmICh2YWx1ZSA9PT0gJzEwMCUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICd3LWZ1bGwnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICc1MCUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICd3LTEvMicsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJzMzLjMzMyUnIHx8IHZhbHVlID09PSAnMzMuMzMlJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy0xLzMnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICc2Ni42NjYlJyB8fCB2YWx1ZSA9PT0gJzY2LjY3JScpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ3ctMi8zJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnMjUlJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy0xLzQnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICc3NSUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICd3LTMvNCcsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICd3LWF1dG8nLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdmaXQtY29udGVudCcpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ3ctZml0Jywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnbWluLWNvbnRlbnQnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICd3LW1pbicsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ21heC1jb250ZW50Jykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy1tYXgnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGNvbnN0IHB4ID0gdGhpcy5leHRyYWN0UHgodmFsdWUpO1xuICAgIGlmIChweCAhPT0gbnVsbCkge1xuICAgICAgY29uc3Qgc3BhY2luZyA9IHRoaXMucHhUb1NwYWNpbmcocHgpO1xuICAgICAgaWYgKHNwYWNpbmcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdy0ke3NwYWNpbmd9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHctWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCV8dncpPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB3LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgQ29tcGxleCB3aWR0aCB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRIZWlnaHQodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGlmICh2YWx1ZSA9PT0gJzEwMCUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdoLWZ1bGwnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICc1MCUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdoLTEvMicsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdoLWF1dG8nLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdmaXQtY29udGVudCcpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ2gtZml0Jywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnbWluLWNvbnRlbnQnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdoLW1pbicsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ21heC1jb250ZW50Jykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnaC1tYXgnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICcxMDB2aCcpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ2gtc2NyZWVuJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBweCA9IHRoaXMuZXh0cmFjdFB4KHZhbHVlKTtcbiAgICBpZiAocHggIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNwYWNpbmcgPSB0aGlzLnB4VG9TcGFjaW5nKHB4KTtcbiAgICAgIGlmIChzcGFjaW5nKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGgtJHtzcGFjaW5nfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBoLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlfHZoKT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgaC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYENvbXBsZXggaGVpZ2h0IHZhbHVlOiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEJhY2tncm91bmRDb2xvcih2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgY29sb3JNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAndHJhbnNwYXJlbnQnOiAnYmctdHJhbnNwYXJlbnQnLFxuICAgICAgJ3doaXRlJzogJ2JnLXdoaXRlJyxcbiAgICAgICdibGFjayc6ICdiZy1ibGFjaycsXG4gICAgICAncmVkJzogJ2JnLXJlZC01MDAnLFxuICAgICAgJ2JsdWUnOiAnYmctYmx1ZS01MDAnLFxuICAgICAgJ2dyZWVuJzogJ2JnLWdyZWVuLTUwMCcsXG4gICAgICAnZ3JheSc6ICdiZy1ncmF5LTUwMCdcbiAgICB9O1xuXG4gICAgaWYgKGNvbG9yTWFwW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBjb2xvck1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgYmctWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ3JnYicpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBiZy1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYENvbXBsZXggYmFja2dyb3VuZC1jb2xvcjogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUZXh0Q29sb3IodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IGNvbG9yTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3RyYW5zcGFyZW50JzogJ3RleHQtdHJhbnNwYXJlbnQnLFxuICAgICAgJ3doaXRlJzogJ3RleHQtd2hpdGUnLFxuICAgICAgJ2JsYWNrJzogJ3RleHQtYmxhY2snLFxuICAgICAgJ3JlZCc6ICd0ZXh0LXJlZC01MDAnLFxuICAgICAgJ2JsdWUnOiAndGV4dC1ibHVlLTUwMCcsXG4gICAgICAnZ3JlZW4nOiAndGV4dC1ncmVlbi01MDAnLFxuICAgICAgJ2dyYXknOiAndGV4dC1ncmF5LTUwMCdcbiAgICB9O1xuXG4gICAgaWYgKGNvbG9yTWFwW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBjb2xvck1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdGV4dC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgncmdiJykpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHRleHQtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBDb21wbGV4IGNvbG9yOiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEJvcmRlclJhZGl1cyh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeCh2YWx1ZSk7XG4gICAgXG4gICAgaWYgKHB4ID09PSBudWxsKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICc1MCUnKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ3JvdW5kZWQtZnVsbCcsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgcm91bmRlZC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgQ29tcGxleCBib3JkZXItcmFkaXVzOiAke3ZhbHVlfWAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByYWRpdXNNYXA6IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7XG4gICAgICAwOiAncm91bmRlZC1ub25lJyxcbiAgICAgIDI6ICdyb3VuZGVkLXNtJyxcbiAgICAgIDQ6ICdyb3VuZGVkJyxcbiAgICAgIDY6ICdyb3VuZGVkLW1kJyxcbiAgICAgIDg6ICdyb3VuZGVkLWxnJyxcbiAgICAgIDEyOiAncm91bmRlZC14bCcsXG4gICAgICAxNjogJ3JvdW5kZWQtMnhsJyxcbiAgICAgIDI0OiAncm91bmRlZC0zeGwnXG4gICAgfTtcblxuICAgIGNvbnN0IGNsb3Nlc3QgPSBPYmplY3Qua2V5cyhyYWRpdXNNYXApXG4gICAgICAubWFwKE51bWJlcilcbiAgICAgIC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IFxuICAgICAgICBNYXRoLmFicyhjdXJyIC0gcHgpIDwgTWF0aC5hYnMocHJldiAtIHB4KSA/IGN1cnIgOiBwcmV2XG4gICAgICApO1xuXG4gICAgaWYgKE1hdGguYWJzKGNsb3Nlc3QgLSBweCkgLyAocHggfHwgMSkgPCAwLjIpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogcmFkaXVzTWFwW2Nsb3Nlc3RdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHJvdW5kZWQtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRCb3JkZXIocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgaWYgKHByb3AgPT09ICdib3JkZXItd2lkdGgnKSB7XG4gICAgICBjb25zdCB3aWR0aE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJzAnOiAnYm9yZGVyLTAnLFxuICAgICAgICAnMXB4JzogJ2JvcmRlcicsXG4gICAgICAgICcycHgnOiAnYm9yZGVyLTInLFxuICAgICAgICAnNHB4JzogJ2JvcmRlci00JyxcbiAgICAgICAgJzhweCc6ICdib3JkZXItOCdcbiAgICAgIH07XG5cbiAgICAgIGlmICh3aWR0aE1hcFt2YWx1ZV0pIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiB3aWR0aE1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgYm9yZGVyLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVua25vd24gYm9yZGVyLXdpZHRoOiAke3ZhbHVlfWAgfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2JvcmRlci1zdHlsZScpIHtcbiAgICAgIGNvbnN0IHN0eWxlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnc29saWQnOiAnJyxcbiAgICAgICAgJ2Rhc2hlZCc6ICdib3JkZXItZGFzaGVkJyxcbiAgICAgICAgJ2RvdHRlZCc6ICdib3JkZXItZG90dGVkJyxcbiAgICAgICAgJ2RvdWJsZSc6ICdib3JkZXItZG91YmxlJyxcbiAgICAgICAgJ2hpZGRlbic6ICdib3JkZXItaGlkZGVuJyxcbiAgICAgICAgJ25vbmUnOiAnYm9yZGVyLW5vbmUnXG4gICAgICB9O1xuXG4gICAgICBpZiAodmFsdWUgPT09ICdzb2xpZCcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoc3R5bGVNYXBbdmFsdWVdKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogc3R5bGVNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVua25vd24gYm9yZGVyLXN0eWxlOiAke3ZhbHVlfWAgfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgYm9yZGVyLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ3JnYicpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGJvcmRlci1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29sb3JNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICd0cmFuc3BhcmVudCc6ICdib3JkZXItdHJhbnNwYXJlbnQnLFxuICAgICAgICAnd2hpdGUnOiAnYm9yZGVyLXdoaXRlJyxcbiAgICAgICAgJ2JsYWNrJzogJ2JvcmRlci1ibGFjaycsXG4gICAgICAgICdyZWQnOiAnYm9yZGVyLXJlZC01MDAnLFxuICAgICAgICAnYmx1ZSc6ICdib3JkZXItYmx1ZS01MDAnLFxuICAgICAgICAnZ3JlZW4nOiAnYm9yZGVyLWdyZWVuLTUwMCcsXG4gICAgICAgICdncmF5JzogJ2JvcmRlci1ncmF5LTUwMCdcbiAgICAgIH07XG5cbiAgICAgIGlmIChjb2xvck1hcFt2YWx1ZV0pIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBjb2xvck1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGJvcmRlci0ke3ZhbHVlfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdib3JkZXItdG9wLXdpZHRoJyB8fCBwcm9wID09PSAnYm9yZGVyLXJpZ2h0LXdpZHRoJyB8fCBcbiAgICAgICAgcHJvcCA9PT0gJ2JvcmRlci1ib3R0b20td2lkdGgnIHx8IHByb3AgPT09ICdib3JkZXItbGVmdC13aWR0aCcpIHtcbiAgICAgIGNvbnN0IHNpZGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdib3JkZXItdG9wLXdpZHRoJzogJ2JvcmRlci10JyxcbiAgICAgICAgJ2JvcmRlci1yaWdodC13aWR0aCc6ICdib3JkZXItcicsXG4gICAgICAgICdib3JkZXItYm90dG9tLXdpZHRoJzogJ2JvcmRlci1iJyxcbiAgICAgICAgJ2JvcmRlci1sZWZ0LXdpZHRoJzogJ2JvcmRlci1sJ1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHNpZGVNYXBbcHJvcF07XG5cbiAgICAgIGNvbnN0IHdpZHRoTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnMCc6IGAke3ByZWZpeH0tMGAsXG4gICAgICAgICcxcHgnOiBwcmVmaXgsXG4gICAgICAgICcycHgnOiBgJHtwcmVmaXh9LTJgLFxuICAgICAgICAnNHB4JzogYCR7cHJlZml4fS00YCxcbiAgICAgICAgJzhweCc6IGAke3ByZWZpeH0tOGBcbiAgICAgIH07XG5cbiAgICAgIGlmICh3aWR0aE1hcFt2YWx1ZV0pIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiB3aWR0aE1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVua25vd24gJHtwcm9wfTogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGJvcmRlciBwcm9wZXJ0eTogJHtwcm9wfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEJvcmRlclNob3J0aGFuZCh2YWx1ZTogc3RyaW5nKTogTXVsdGlDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNzc1Byb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRva2VuaXplVmFsdWUodmFsdWUpO1xuXG4gICAgbGV0IHdpZHRoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc3R5bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGxldCBjb2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfHRoaW58bWVkaXVtfHRoaWNrKT8kLy50ZXN0KHRva2VuKSB8fCBcbiAgICAgICAgICB0b2tlbiA9PT0gJ3RoaW4nIHx8IHRva2VuID09PSAnbWVkaXVtJyB8fCB0b2tlbiA9PT0gJ3RoaWNrJykge1xuICAgICAgICB3aWR0aCA9IHRva2VuO1xuICAgICAgfSBlbHNlIGlmIChbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ2hpZGRlbicsICdub25lJywgJ2dyb292ZScsICdyaWRnZScsICdpbnNldCcsICdvdXRzZXQnXS5pbmNsdWRlcyh0b2tlbikpIHtcbiAgICAgICAgc3R5bGUgPSB0b2tlbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbG9yID0gdG9rZW47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHdpZHRoKSB7XG4gICAgICBjb25zdCB3aWR0aE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJzAnOiAnYm9yZGVyLTAnLFxuICAgICAgICAnMXB4JzogJ2JvcmRlcicsXG4gICAgICAgICcycHgnOiAnYm9yZGVyLTInLFxuICAgICAgICAnNHB4JzogJ2JvcmRlci00JyxcbiAgICAgICAgJzhweCc6ICdib3JkZXItOCcsXG4gICAgICAgICd0aGluJzogJ2JvcmRlcicsXG4gICAgICAgICdtZWRpdW0nOiAnYm9yZGVyLTInLFxuICAgICAgICAndGhpY2snOiAnYm9yZGVyLTQnXG4gICAgICB9O1xuXG4gICAgICBpZiAod2lkdGhNYXBbd2lkdGhdKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh3aWR0aE1hcFt3aWR0aF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGBib3JkZXItWyR7d2lkdGh9XWApO1xuICAgICAgfVxuICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdib3JkZXItd2lkdGgnKTtcbiAgICB9XG5cbiAgICBpZiAoc3R5bGUgJiYgc3R5bGUgIT09ICdzb2xpZCcpIHtcbiAgICAgIGNvbnN0IHN0eWxlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnZGFzaGVkJzogJ2JvcmRlci1kYXNoZWQnLFxuICAgICAgICAnZG90dGVkJzogJ2JvcmRlci1kb3R0ZWQnLFxuICAgICAgICAnZG91YmxlJzogJ2JvcmRlci1kb3VibGUnLFxuICAgICAgICAnaGlkZGVuJzogJ2JvcmRlci1oaWRkZW4nLFxuICAgICAgICAnbm9uZSc6ICdib3JkZXItbm9uZSdcbiAgICAgIH07XG5cbiAgICAgIGlmIChzdHlsZU1hcFtzdHlsZV0pIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHN0eWxlTWFwW3N0eWxlXSk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnYm9yZGVyLXN0eWxlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBVbnN1cHBvcnRlZCBib3JkZXItc3R5bGU6ICR7c3R5bGV9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICBpZiAoY29sb3Iuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChgYm9yZGVyLVske2NvbG9yfV1gKTtcbiAgICAgIH0gZWxzZSBpZiAoY29sb3Iuc3RhcnRzV2l0aCgncmdiJykpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGBib3JkZXItWyR7Y29sb3J9XWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgY29sb3JNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgJ3RyYW5zcGFyZW50JzogJ2JvcmRlci10cmFuc3BhcmVudCcsXG4gICAgICAgICAgJ3doaXRlJzogJ2JvcmRlci13aGl0ZScsXG4gICAgICAgICAgJ2JsYWNrJzogJ2JvcmRlci1ibGFjaydcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoY29sb3JNYXBbY29sb3JdKSB7XG4gICAgICAgICAgY2xhc3Nlcy5wdXNoKGNvbG9yTWFwW2NvbG9yXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2xhc3Nlcy5wdXNoKGBib3JkZXItJHtjb2xvcn1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdib3JkZXItY29sb3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc2VzLCB3YXJuaW5ncywgY3NzUHJvcGVydGllcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RGlyZWN0aW9uYWxCb3JkZXJTaG9ydGhhbmQocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogTXVsdGlDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNzc1Byb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBjb25zdCBzaWRlTWFwOiBSZWNvcmQ8c3RyaW5nLCB7IHByZWZpeDogc3RyaW5nOyB3aWR0aFByb3A6IHN0cmluZzsgY29sb3JQcm9wOiBzdHJpbmcgfT4gPSB7XG4gICAgICAnYm9yZGVyLXRvcCc6IHsgcHJlZml4OiAnYm9yZGVyLXQnLCB3aWR0aFByb3A6ICdib3JkZXItdG9wLXdpZHRoJywgY29sb3JQcm9wOiAnYm9yZGVyLXRvcC1jb2xvcicgfSxcbiAgICAgICdib3JkZXItcmlnaHQnOiB7IHByZWZpeDogJ2JvcmRlci1yJywgd2lkdGhQcm9wOiAnYm9yZGVyLXJpZ2h0LXdpZHRoJywgY29sb3JQcm9wOiAnYm9yZGVyLXJpZ2h0LWNvbG9yJyB9LFxuICAgICAgJ2JvcmRlci1ib3R0b20nOiB7IHByZWZpeDogJ2JvcmRlci1iJywgd2lkdGhQcm9wOiAnYm9yZGVyLWJvdHRvbS13aWR0aCcsIGNvbG9yUHJvcDogJ2JvcmRlci1ib3R0b20tY29sb3InIH0sXG4gICAgICAnYm9yZGVyLWxlZnQnOiB7IHByZWZpeDogJ2JvcmRlci1sJywgd2lkdGhQcm9wOiAnYm9yZGVyLWxlZnQtd2lkdGgnLCBjb2xvclByb3A6ICdib3JkZXItbGVmdC1jb2xvcicgfVxuICAgIH07XG5cbiAgICBjb25zdCBzaWRlID0gc2lkZU1hcFtwcm9wXTtcbiAgICBpZiAoIXNpZGUpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzOiBbYFVua25vd24gZGlyZWN0aW9uYWwgYm9yZGVyOiAke3Byb3B9YF0sIGNzc1Byb3BlcnRpZXMgfTtcbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRva2VuaXplVmFsdWUodmFsdWUpO1xuXG4gICAgbGV0IHdpZHRoOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgc3R5bGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIGxldCBjb2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2Vucykge1xuICAgICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfHRoaW58bWVkaXVtfHRoaWNrKT8kLy50ZXN0KHRva2VuKSB8fCBcbiAgICAgICAgICB0b2tlbiA9PT0gJ3RoaW4nIHx8IHRva2VuID09PSAnbWVkaXVtJyB8fCB0b2tlbiA9PT0gJ3RoaWNrJykge1xuICAgICAgICB3aWR0aCA9IHRva2VuO1xuICAgICAgfSBlbHNlIGlmIChbJ3NvbGlkJywgJ2Rhc2hlZCcsICdkb3R0ZWQnLCAnZG91YmxlJywgJ2hpZGRlbicsICdub25lJ10uaW5jbHVkZXModG9rZW4pKSB7XG4gICAgICAgIHN0eWxlID0gdG9rZW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xvciA9IHRva2VuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3aWR0aCkge1xuICAgICAgY29uc3Qgd2lkdGhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICcwJzogYCR7c2lkZS5wcmVmaXh9LTBgLFxuICAgICAgICAnMXB4Jzogc2lkZS5wcmVmaXgsXG4gICAgICAgICcycHgnOiBgJHtzaWRlLnByZWZpeH0tMmAsXG4gICAgICAgICc0cHgnOiBgJHtzaWRlLnByZWZpeH0tNGAsXG4gICAgICAgICc4cHgnOiBgJHtzaWRlLnByZWZpeH0tOGBcbiAgICAgIH07XG5cbiAgICAgIGlmICh3aWR0aE1hcFt3aWR0aF0pIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHdpZHRoTWFwW3dpZHRoXSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc2VzLnB1c2goYCR7c2lkZS5wcmVmaXh9LVske3dpZHRofV1gKTtcbiAgICAgIH1cbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChzaWRlLndpZHRoUHJvcCk7XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlICYmIHN0eWxlICE9PSAnc29saWQnKSB7XG4gICAgICB3YXJuaW5ncy5wdXNoKGBCb3JkZXIgc3R5bGUgJyR7c3R5bGV9JyBmb3IgJHtwcm9wfSBhcHBsaWVzIHRvIGFsbCBib3JkZXJzYCk7XG4gICAgfVxuXG4gICAgaWYgKGNvbG9yKSB7XG4gICAgICBpZiAoY29sb3Iuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChgJHtzaWRlLnByZWZpeH0tWyR7Y29sb3J9XWApO1xuICAgICAgfSBlbHNlIGlmIChjb2xvci5zdGFydHNXaXRoKCdyZ2InKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goYCR7c2lkZS5wcmVmaXh9LVske2NvbG9yfV1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChgJHtzaWRlLnByZWZpeH0tJHtjb2xvcn1gKTtcbiAgICAgIH1cbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChzaWRlLmNvbG9yUHJvcCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEFzcGVjdFJhdGlvKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCByYXRpb01hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICcxLzEnOiAnYXNwZWN0LXNxdWFyZScsXG4gICAgICAnMTYvOSc6ICdhc3BlY3QtdmlkZW8nLFxuICAgICAgJzQvMyc6ICdhc3BlY3QtWzQvM10nLFxuICAgICAgJzMvNCc6ICdhc3BlY3QtWzMvNF0nLFxuICAgICAgJzIvMyc6ICdhc3BlY3QtWzIvM10nLFxuICAgICAgJzMvMic6ICdhc3BlY3QtWzMvMl0nLFxuICAgICAgJzEvMic6ICdhc3BlY3QtWzEvMl0nLFxuICAgICAgJzIvMSc6ICdhc3BlY3QtWzIvMV0nLFxuICAgICAgJ2F1dG8nOiAnYXNwZWN0LWF1dG8nXG4gICAgfTtcblxuICAgIGlmIChyYXRpb01hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogcmF0aW9NYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGFzcGVjdC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoL15cXGQrXFwvXFxkKyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBhc3BlY3QtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGFzcGVjdC1yYXRpbzogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRPdmVyZmxvdyhwcm9wOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBwcmVmaXhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnb3ZlcmZsb3cnOiAnb3ZlcmZsb3cnLFxuICAgICAgJ292ZXJmbG93LXgnOiAnb3ZlcmZsb3cteCcsXG4gICAgICAnb3ZlcmZsb3cteSc6ICdvdmVyZmxvdy15J1xuICAgIH07XG5cbiAgICBjb25zdCBwcmVmaXggPSBwcmVmaXhNYXBbcHJvcF07XG5cbiAgICBjb25zdCB2YWx1ZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdhdXRvJzogYCR7cHJlZml4fS1hdXRvYCxcbiAgICAgICdoaWRkZW4nOiBgJHtwcmVmaXh9LWhpZGRlbmAsXG4gICAgICAndmlzaWJsZSc6IGAke3ByZWZpeH0tdmlzaWJsZWAsXG4gICAgICAnc2Nyb2xsJzogYCR7cHJlZml4fS1zY3JvbGxgLFxuICAgICAgJ2NsaXAnOiBgJHtwcmVmaXh9LWNsaXBgXG4gICAgfTtcblxuICAgIGlmICh2YWx1ZU1hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogdmFsdWVNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biBvdmVyZmxvdyB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRPYmplY3RGaXQodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IGZpdE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdjb250YWluJzogJ29iamVjdC1jb250YWluJyxcbiAgICAgICdjb3Zlcic6ICdvYmplY3QtY292ZXInLFxuICAgICAgJ2ZpbGwnOiAnb2JqZWN0LWZpbGwnLFxuICAgICAgJ25vbmUnOiAnb2JqZWN0LW5vbmUnLFxuICAgICAgJ3NjYWxlLWRvd24nOiAnb2JqZWN0LXNjYWxlLWRvd24nXG4gICAgfTtcblxuICAgIGlmIChmaXRNYXBbdmFsdWVdKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGZpdE1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIG9iamVjdC1maXQ6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0T2JqZWN0UG9zaXRpb24odmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHBvc2l0aW9uTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ2NlbnRlcic6ICdvYmplY3QtY2VudGVyJyxcbiAgICAgICd0b3AnOiAnb2JqZWN0LXRvcCcsXG4gICAgICAnYm90dG9tJzogJ29iamVjdC1ib3R0b20nLFxuICAgICAgJ2xlZnQnOiAnb2JqZWN0LWxlZnQnLFxuICAgICAgJ3JpZ2h0JzogJ29iamVjdC1yaWdodCcsXG4gICAgICAnY2VudGVyIGNlbnRlcic6ICdvYmplY3QtY2VudGVyJyxcbiAgICAgICdjZW50ZXIgdG9wJzogJ29iamVjdC10b3AnLFxuICAgICAgJ2NlbnRlciBib3R0b20nOiAnb2JqZWN0LWJvdHRvbScsXG4gICAgICAnbGVmdCBjZW50ZXInOiAnb2JqZWN0LWxlZnQnLFxuICAgICAgJ3JpZ2h0IGNlbnRlcic6ICdvYmplY3QtcmlnaHQnLFxuICAgICAgJ2xlZnQgdG9wJzogJ29iamVjdC1sZWZ0LXRvcCcsXG4gICAgICAncmlnaHQgdG9wJzogJ29iamVjdC1yaWdodC10b3AnLFxuICAgICAgJ2xlZnQgYm90dG9tJzogJ29iamVjdC1sZWZ0LWJvdHRvbScsXG4gICAgICAncmlnaHQgYm90dG9tJzogJ29iamVjdC1yaWdodC1ib3R0b20nXG4gICAgfTtcblxuICAgIGlmIChwb3NpdGlvbk1hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogcG9zaXRpb25NYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KCV8cHh8cmVtfGVtKT8oXFxzK1xcZCsoXFwuXFxkKyk/KCV8cHh8cmVtfGVtKT8pPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBvYmplY3QtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIG9iamVjdC1wb3NpdGlvbjogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRPcGFjaXR5KHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBudW1WYWx1ZSA9IHBhcnNlRmxvYXQodmFsdWUpO1xuICAgIGlmIChpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgSW52YWxpZCBvcGFjaXR5IHZhbHVlOiAke3ZhbHVlfWAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBwZXJjZW50VmFsdWUgPSBNYXRoLnJvdW5kKG51bVZhbHVlICogMTAwKTtcblxuICAgIGlmICh0aGlzLm9wYWNpdHlTY2FsZS5oYXMocGVyY2VudFZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgb3BhY2l0eS0ke3RoaXMub3BhY2l0eVNjYWxlLmdldChwZXJjZW50VmFsdWUpfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgb3BhY2l0eS1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFdvcmRCcmVhayh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgYnJlYWtNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnbm9ybWFsJzogJ2JyZWFrLW5vcm1hbCcsXG4gICAgICAnYnJlYWstYWxsJzogJ2JyZWFrLWFsbCcsXG4gICAgICAnYnJlYWstd29yZCc6ICdicmVhay13b3JkcycsXG4gICAgICAna2VlcC1hbGwnOiAnYnJlYWsta2VlcCdcbiAgICB9O1xuXG4gICAgaWYgKGJyZWFrTWFwW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBicmVha01hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIHdvcmQtYnJlYWs6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0WkluZGV4KHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBudW1WYWx1ZSA9IHBhcnNlSW50KHZhbHVlLCAxMCk7XG4gICAgaWYgKGlzTmFOKG51bVZhbHVlKSkge1xuICAgICAgaWYgKHZhbHVlID09PSAnYXV0bycpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnei1hdXRvJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgSW52YWxpZCB6LWluZGV4IHZhbHVlOiAke3ZhbHVlfWAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy56SW5kZXhTY2FsZS5oYXMobnVtVmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB6LSR7dGhpcy56SW5kZXhTY2FsZS5nZXQobnVtVmFsdWUpfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgei1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgfVxuXG4gIGNvbnZlcnRNdWx0aXBsZShwcm9wZXJ0aWVzOiBDU1NQcm9wZXJ0eVtdKTogeyBjbGFzc2VzOiBzdHJpbmdbXTsgd2FybmluZ3M6IHN0cmluZ1tdIH0ge1xuICAgIGNvbnN0IGNsYXNzZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgd2FybmluZ3M6IHN0cmluZ1tdID0gW107XG5cbiAgICBwcm9wZXJ0aWVzLmZvckVhY2goKHsgcHJvcGVydHksIHZhbHVlIH0pID0+IHtcbiAgICAgIGNvbnN0IG11bHRpUmVzdWx0ID0gdGhpcy5jb252ZXJ0UHJvcGVydHlXaXRoTXVsdGlwbGUocHJvcGVydHksIHZhbHVlKTtcbiAgICAgIFxuICAgICAgY2xhc3Nlcy5wdXNoKC4uLm11bHRpUmVzdWx0LmNsYXNzZXMpO1xuICAgICAgd2FybmluZ3MucHVzaCguLi5tdWx0aVJlc3VsdC53YXJuaW5ncyk7XG5cbiAgICAgIGlmIChtdWx0aVJlc3VsdC5jbGFzc2VzLmxlbmd0aCA9PT0gMCAmJiBtdWx0aVJlc3VsdC53YXJuaW5ncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb252ZXJ0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChyZXN1bHQuc2tpcHBlZCkge1xuICAgICAgICAgIHdhcm5pbmdzLnB1c2gocmVzdWx0LnJlYXNvbiB8fCBgU2tpcHBlZDogJHtwcm9wZXJ0eX06ICR7dmFsdWV9YCk7XG4gICAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYFNraXBwZWQ6ICR7cHJvcGVydHl9OiAke3ZhbHVlfSAtICR7cmVzdWx0LnJlYXNvbn1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgY2xhc3Nlcy5wdXNoKHJlc3VsdC5jbGFzc05hbWUpO1xuICAgICAgICAgIGxvZ2dlci52ZXJib3NlKGBDb252ZXJ0ZWQ6ICR7cHJvcGVydHl9OiAke3ZhbHVlfSDihpIgJHtyZXN1bHQuY2xhc3NOYW1lfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobXVsdGlSZXN1bHQuY2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYENvbnZlcnRlZDogJHtwcm9wZXJ0eX06ICR7dmFsdWV9IOKGkiAke211bHRpUmVzdWx0LmNsYXNzZXMuam9pbignLCAnKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBtdWx0aVJlc3VsdC53YXJuaW5ncy5mb3JFYWNoKHcgPT4gbG9nZ2VyLnZlcmJvc2UoYFdhcm5pbmc6ICR7d31gKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4geyBjbGFzc2VzLCB3YXJuaW5ncyB9O1xuICB9XG59XG4iXX0=
|
|
1448
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFpbHdpbmRNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdGFpbHdpbmRNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQXdDO0FBeUJ4QyxNQUFhLGNBQWM7SUFVekIsWUFBWSxNQUFzQjtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztRQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksRUFBRSxDQUFDO1FBRWpELE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVDLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsTUFBTSxNQUFN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Q0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQy9CLGVBQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxRQUFRLEtBQUssS0FBSyxNQUFNLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ25DLGVBQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxRQUFRLEtBQUssS0FBSyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekYsQ0FBQztnQkFDRCxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGVBQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUE3cERELHdDQTZwREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWlsd2luZENvbmZpZyB9IGZyb20gJy4vdXRpbHMvY29uZmlnJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vdXRpbHMvbG9nZ2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBDU1NQcm9wZXJ0eSB7XG4gIHByb3BlcnR5OiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udmVyc2lvblJlc3VsdCB7XG4gIGNsYXNzTmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgc2tpcHBlZDogYm9vbGVhbjtcbiAgcmVhc29uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpQ29udmVyc2lvblJlc3VsdCB7XG4gIGNsYXNzZXM6IHN0cmluZ1tdO1xuICB3YXJuaW5nczogc3RyaW5nW107XG4gIGNzc1Byb3BlcnRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VkU3BhY2luZ1ZhbHVlIHtcbiAgdmFsdWU6IHN0cmluZztcbiAgcHg6IG51bWJlciB8IG51bGw7XG4gIHNwYWNpbmdLZXk6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBUYWlsd2luZE1hcHBlciB7XG4gIHByaXZhdGUgY29uZmlnOiBUYWlsd2luZENvbmZpZztcbiAgcHJpdmF0ZSBzcGFjaW5nU2NhbGU6IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIHByaXZhdGUgbWF4V2lkdGhTY2FsZTogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgcHJpdmF0ZSBmb250U2l6ZVNjYWxlOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuICBwcml2YXRlIGxpbmVIZWlnaHRTY2FsZTogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgcHJpdmF0ZSBsZXR0ZXJTcGFjaW5nU2NhbGU6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgekluZGV4U2NhbGU6IE1hcDxudW1iZXIsIHN0cmluZz47XG4gIHByaXZhdGUgb3BhY2l0eVNjYWxlOiBNYXA8bnVtYmVyLCBzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogVGFpbHdpbmRDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLnNwYWNpbmdTY2FsZSA9IHRoaXMuYnVpbGRTcGFjaW5nU2NhbGUoKTtcbiAgICB0aGlzLm1heFdpZHRoU2NhbGUgPSB0aGlzLmJ1aWxkTWF4V2lkdGhTY2FsZSgpO1xuICAgIHRoaXMuZm9udFNpemVTY2FsZSA9IHRoaXMuYnVpbGRGb250U2l6ZVNjYWxlKCk7XG4gICAgdGhpcy5saW5lSGVpZ2h0U2NhbGUgPSB0aGlzLmJ1aWxkTGluZUhlaWdodFNjYWxlKCk7XG4gICAgdGhpcy5sZXR0ZXJTcGFjaW5nU2NhbGUgPSB0aGlzLmJ1aWxkTGV0dGVyU3BhY2luZ1NjYWxlKCk7XG4gICAgdGhpcy56SW5kZXhTY2FsZSA9IHRoaXMuYnVpbGRaSW5kZXhTY2FsZSgpO1xuICAgIHRoaXMub3BhY2l0eVNjYWxlID0gdGhpcy5idWlsZE9wYWNpdHlTY2FsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNwYWNpbmdTY2FsZSgpOiBNYXA8bnVtYmVyLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzY2FsZSA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gICAgY29uc3Qgc3BhY2luZyA9IHRoaXMuY29uZmlnLnRoZW1lPy5zcGFjaW5nIHx8IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoc3BhY2luZykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCByZW1NYXRjaCA9IHZhbHVlLm1hdGNoKC8oW1xcZC5dKylyZW0vKTtcbiAgICAgIGlmIChyZW1NYXRjaCkge1xuICAgICAgICBjb25zdCBwaXhlbHMgPSBwYXJzZUZsb2F0KHJlbU1hdGNoWzFdKSAqIDE2O1xuICAgICAgICBzY2FsZS5zZXQoTWF0aC5yb3VuZChwaXhlbHMpLCBrZXkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBweE1hdGNoID0gdmFsdWUubWF0Y2goLyhbXFxkLl0rKXB4Lyk7XG4gICAgICBpZiAocHhNYXRjaCkge1xuICAgICAgICBzY2FsZS5zZXQoTWF0aC5yb3VuZChwYXJzZUZsb2F0KHB4TWF0Y2hbMV0pKSwga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBzY2FsZTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRNYXhXaWR0aFNjYWxlKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIGNvbnN0IHNjYWxlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBjb25zdCBtYXhXaWR0aCA9IHRoaXMuY29uZmlnLnRoZW1lPy5tYXhXaWR0aCB8fCB7fTtcblxuICAgIE9iamVjdC5lbnRyaWVzKG1heFdpZHRoKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHNjYWxlLnNldCh2YWx1ZSwga2V5KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNjYWxlLnNldCgnMTAwJScsICdmdWxsJyk7XG4gICAgc2NhbGUuc2V0KCdtaW4tY29udGVudCcsICdtaW4nKTtcbiAgICBzY2FsZS5zZXQoJ21heC1jb250ZW50JywgJ21heCcpO1xuICAgIHNjYWxlLnNldCgnZml0LWNvbnRlbnQnLCAnZml0Jyk7XG5cbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRm9udFNpemVTY2FsZSgpOiBNYXA8bnVtYmVyLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzY2FsZSA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgZm9udFNpemUgPSB0aGlzLmNvbmZpZy50aGVtZT8uZm9udFNpemUgfHwge307XG5cbiAgICBPYmplY3QuZW50cmllcyhmb250U2l6ZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCByZW1NYXRjaCA9IHZhbHVlLm1hdGNoKC8oW1xcZC5dKylyZW0vKTtcbiAgICAgICAgaWYgKHJlbU1hdGNoKSB7XG4gICAgICAgICAgc2NhbGUuc2V0KE1hdGgucm91bmQocGFyc2VGbG9hdChyZW1NYXRjaFsxXSkgKiAxNiksIGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHhNYXRjaCA9IHZhbHVlLm1hdGNoKC8oW1xcZC5dKylweC8pO1xuICAgICAgICBpZiAocHhNYXRjaCkge1xuICAgICAgICAgIHNjYWxlLnNldChNYXRoLnJvdW5kKHBhcnNlRmxvYXQocHhNYXRjaFsxXSkpLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHR5cGVvZiB2YWx1ZVswXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgcmVtTWF0Y2ggPSB2YWx1ZVswXS5tYXRjaCgvKFtcXGQuXSspcmVtLyk7XG4gICAgICAgIGlmIChyZW1NYXRjaCkge1xuICAgICAgICAgIHNjYWxlLnNldChNYXRoLnJvdW5kKHBhcnNlRmxvYXQocmVtTWF0Y2hbMV0pICogMTYpLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHB4TWF0Y2ggPSB2YWx1ZVswXS5tYXRjaCgvKFtcXGQuXSspcHgvKTtcbiAgICAgICAgaWYgKHB4TWF0Y2gpIHtcbiAgICAgICAgICBzY2FsZS5zZXQoTWF0aC5yb3VuZChwYXJzZUZsb2F0KHB4TWF0Y2hbMV0pKSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExpbmVIZWlnaHRTY2FsZSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzY2FsZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgbGluZUhlaWdodCA9IHRoaXMuY29uZmlnLnRoZW1lPy5saW5lSGVpZ2h0IHx8IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMobGluZUhlaWdodCkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzY2FsZS5zZXQodmFsdWUsIGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzY2FsZS5zZXQoJzEnLCAnbm9uZScpO1xuICAgIHNjYWxlLnNldCgnMS4yNScsICd0aWdodCcpO1xuICAgIHNjYWxlLnNldCgnMS4zNzUnLCAnc251ZycpO1xuICAgIHNjYWxlLnNldCgnMS41JywgJ25vcm1hbCcpO1xuICAgIHNjYWxlLnNldCgnMS42MjUnLCAncmVsYXhlZCcpO1xuICAgIHNjYWxlLnNldCgnMicsICdsb29zZScpO1xuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZExldHRlclNwYWNpbmdTY2FsZSgpOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzY2FsZSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgbGV0dGVyU3BhY2luZyA9IHRoaXMuY29uZmlnLnRoZW1lPy5sZXR0ZXJTcGFjaW5nIHx8IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMobGV0dGVyU3BhY2luZykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICBzY2FsZS5zZXQodmFsdWUsIGtleSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2NhbGU7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkWkluZGV4U2NhbGUoKTogTWFwPG51bWJlciwgc3RyaW5nPiB7XG4gICAgY29uc3Qgc2NhbGUgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuICAgIGNvbnN0IHpJbmRleCA9IHRoaXMuY29uZmlnLnRoZW1lPy56SW5kZXggfHwge307XG5cbiAgICBPYmplY3QuZW50cmllcyh6SW5kZXgpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgbnVtID0gcGFyc2VJbnQodmFsdWUsIDEwKTtcbiAgICAgICAgaWYgKCFpc05hTihudW0pKSB7XG4gICAgICAgICAgc2NhbGUuc2V0KG51bSwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2NhbGUuc2V0KDAsICcwJyk7XG4gICAgc2NhbGUuc2V0KDEwLCAnMTAnKTtcbiAgICBzY2FsZS5zZXQoMjAsICcyMCcpO1xuICAgIHNjYWxlLnNldCgzMCwgJzMwJyk7XG4gICAgc2NhbGUuc2V0KDQwLCAnNDAnKTtcbiAgICBzY2FsZS5zZXQoNTAsICc1MCcpO1xuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE9wYWNpdHlTY2FsZSgpOiBNYXA8bnVtYmVyLCBzdHJpbmc+IHtcbiAgICBjb25zdCBzY2FsZSA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gICAgY29uc3Qgb3BhY2l0eSA9IHRoaXMuY29uZmlnLnRoZW1lPy5vcGFjaXR5IHx8IHt9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMob3BhY2l0eSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgIGNvbnN0IG51bSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJzZUZsb2F0KHZhbHVlKSA6IHZhbHVlO1xuICAgICAgICBpZiAoIWlzTmFOKG51bSkpIHtcbiAgICAgICAgICBzY2FsZS5zZXQoTWF0aC5yb3VuZChudW0gKiAxMDApLCBrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSAxMDA7IGkgKz0gNSkge1xuICAgICAgaWYgKCFzY2FsZS5oYXMoaSkpIHtcbiAgICAgICAgc2NhbGUuc2V0KGksIFN0cmluZyhpKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNjYWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBweFRvU3BhY2luZyhweDogbnVtYmVyKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuc3BhY2luZ1NjYWxlLmhhcyhweCkpIHtcbiAgICAgIHJldHVybiB0aGlzLnNwYWNpbmdTY2FsZS5nZXQocHgpITtcbiAgICB9XG5cbiAgICBsZXQgY2xvc2VzdEtleTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IGNsb3Nlc3REaWZmOiBudW1iZXIgPSBJbmZpbml0eTtcbiAgICBcbiAgICB0aGlzLnNwYWNpbmdTY2FsZS5mb3JFYWNoKChfLCBrZXkpID0+IHtcbiAgICAgIGNvbnN0IGRpZmYgPSBNYXRoLmFicyhrZXkgLSBweCk7XG4gICAgICBpZiAoZGlmZiA8IGNsb3Nlc3REaWZmKSB7XG4gICAgICAgIGNsb3Nlc3RLZXkgPSBrZXk7XG4gICAgICAgIGNsb3Nlc3REaWZmID0gZGlmZjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChjbG9zZXN0S2V5ICE9PSBudWxsICYmIGNsb3Nlc3REaWZmIC8gcHggPCAwLjIpIHtcbiAgICAgIHJldHVybiB0aGlzLnNwYWNpbmdTY2FsZS5nZXQoY2xvc2VzdEtleSkgfHwgbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZXh0cmFjdFB4KHZhbHVlOiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCBweE1hdGNoID0gdmFsdWUubWF0Y2goL14oW1xcZC5dKylweCQvKTtcbiAgICBpZiAocHhNYXRjaCkge1xuICAgICAgcmV0dXJuIHBhcnNlRmxvYXQocHhNYXRjaFsxXSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVtTWF0Y2ggPSB2YWx1ZS5tYXRjaCgvXihbXFxkLl0rKXJlbSQvKTtcbiAgICBpZiAocmVtTWF0Y2gpIHtcbiAgICAgIHJldHVybiBwYXJzZUZsb2F0KHJlbU1hdGNoWzFdKSAqIDE2O1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVNwYWNpbmdWYWx1ZSh2YWx1ZTogc3RyaW5nKTogUGFyc2VkU3BhY2luZ1ZhbHVlIHtcbiAgICBjb25zdCBweCA9IHRoaXMuZXh0cmFjdFB4KHZhbHVlKTtcbiAgICBjb25zdCBzcGFjaW5nS2V5ID0gcHggIT09IG51bGwgPyB0aGlzLnB4VG9TcGFjaW5nKHB4KSA6IG51bGw7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWUsXG4gICAgICBweCxcbiAgICAgIHNwYWNpbmdLZXlcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFNwYWNpbmdVdGlsaXR5KHByZWZpeDogc3RyaW5nLCBwYXJzZWQ6IFBhcnNlZFNwYWNpbmdWYWx1ZSk6IHN0cmluZyB7XG4gICAgaWYgKHBhcnNlZC5zcGFjaW5nS2V5KSB7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fS0ke3BhcnNlZC5zcGFjaW5nS2V5fWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtwcmVmaXh9LVske3BhcnNlZC52YWx1ZX1dYDtcbiAgfVxuXG4gIHByaXZhdGUgdG9rZW5pemVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHRva2Vuczogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgY3VycmVudCA9ICcnO1xuICAgIGxldCBwYXJlbkRlcHRoID0gMDtcbiAgICBsZXQgaW5GdW5jdGlvbiA9IGZhbHNlO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hhciA9IHZhbHVlW2ldO1xuXG4gICAgICBpZiAoY2hhciA9PT0gJygnKSB7XG4gICAgICAgIHBhcmVuRGVwdGgrKztcbiAgICAgICAgaW5GdW5jdGlvbiA9IHRydWU7XG4gICAgICAgIGN1cnJlbnQgKz0gY2hhcjtcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJyknKSB7XG4gICAgICAgIHBhcmVuRGVwdGgtLTtcbiAgICAgICAgY3VycmVudCArPSBjaGFyO1xuICAgICAgICBpZiAocGFyZW5EZXB0aCA9PT0gMCkge1xuICAgICAgICAgIGluRnVuY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGFyID09PSAnICcgJiYgcGFyZW5EZXB0aCA9PT0gMCkge1xuICAgICAgICBpZiAoY3VycmVudC50cmltKCkpIHtcbiAgICAgICAgICB0b2tlbnMucHVzaChjdXJyZW50LnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9ICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudCArPSBjaGFyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyZW50LnRyaW0oKSkge1xuICAgICAgdG9rZW5zLnB1c2goY3VycmVudC50cmltKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0b2tlbnM7XG4gIH1cblxuICBjb252ZXJ0UHJvcGVydHkocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQcm9wID0gcHJvcGVydHkudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCk7XG5cbiAgICBsb2dnZXIudmVyYm9zZShgQ29udmVydGluZzogJHtub3JtYWxpemVkUHJvcH06ICR7bm9ybWFsaXplZFZhbHVlfWApO1xuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wLnN0YXJ0c1dpdGgoJy0tJykpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgQ1NTIHZhcmlhYmxlIGRlY2xhcmF0aW9uOiAke3Byb3BlcnR5fWAgfTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdkaXNwbGF5Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydERpc3BsYXkobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdwb3NpdGlvbicpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbm9ybWFsaXplZFZhbHVlLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcC5zdGFydHNXaXRoKCdtYXJnaW4nKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydE1hcmdpbihub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3Auc3RhcnRzV2l0aCgncGFkZGluZycpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0UGFkZGluZyhub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdtYXgtd2lkdGgnIHx8IG5vcm1hbGl6ZWRQcm9wID09PSAnbWluLXdpZHRoJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydERpbWVuc2lvbkNvbnN0cmFpbnQobm9ybWFsaXplZFByb3AsIG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnbWF4LWhlaWdodCcgfHwgbm9ybWFsaXplZFByb3AgPT09ICdtaW4taGVpZ2h0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydERpbWVuc2lvbkNvbnN0cmFpbnQobm9ybWFsaXplZFByb3AsIG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnd2lkdGgnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0V2lkdGgobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdoZWlnaHQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0SGVpZ2h0KG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnZm9udC13ZWlnaHQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0Rm9udFdlaWdodChub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2ZvbnQtc2l6ZScpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGb250U2l6ZShub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ3RleHQtYWxpZ24nKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB0ZXh0LSR7bm9ybWFsaXplZFZhbHVlfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAndGV4dC1kZWNvcmF0aW9uJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFRleHREZWNvcmF0aW9uKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAndGV4dC10cmFuc2Zvcm0nKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0VGV4dFRyYW5zZm9ybShub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ2xldHRlci1zcGFjaW5nJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydExldHRlclNwYWNpbmcobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdsaW5lLWhlaWdodCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRMaW5lSGVpZ2h0KG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wLnN0YXJ0c1dpdGgoJ2ZsZXgnKSB8fCBcbiAgICAgICAgbm9ybWFsaXplZFByb3Auc3RhcnRzV2l0aCgnanVzdGlmeScpIHx8IFxuICAgICAgICBub3JtYWxpemVkUHJvcC5zdGFydHNXaXRoKCdhbGlnbicpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RmxleGJveChub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdnYXAnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0R2FwKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnYmFja2dyb3VuZC1jb2xvcicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRCYWNrZ3JvdW5kQ29sb3Iobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdiYWNrZ3JvdW5kJykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb252ZXJ0QmFja2dyb3VuZFNob3J0aGFuZChub3JtYWxpemVkVmFsdWUpO1xuICAgICAgaWYgKHJlc3VsdC5jbGFzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiByZXN1bHQuY2xhc3Nlc1swXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiByZXN1bHQud2FybmluZ3NbMF0gfHwgYENvdWxkIG5vdCBjb252ZXJ0IGJhY2tncm91bmQ6ICR7bm9ybWFsaXplZFZhbHVlfWAgfTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdjb2xvcicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRUZXh0Q29sb3Iobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdib3JkZXItcmFkaXVzJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEJvcmRlclJhZGl1cyhub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcC5zdGFydHNXaXRoKCdib3JkZXInKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEJvcmRlcihub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdhc3BlY3QtcmF0aW8nKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0QXNwZWN0UmF0aW8obm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdvdmVyZmxvdycgfHwgbm9ybWFsaXplZFByb3AgPT09ICdvdmVyZmxvdy14JyB8fCBub3JtYWxpemVkUHJvcCA9PT0gJ292ZXJmbG93LXknKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0T3ZlcmZsb3cobm9ybWFsaXplZFByb3AsIG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnb2JqZWN0LWZpdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRPYmplY3RGaXQobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdvYmplY3QtcG9zaXRpb24nKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0T2JqZWN0UG9zaXRpb24obm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdvcGFjaXR5Jykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydE9wYWNpdHkobm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICd3b3JkLWJyZWFrJykge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFdvcmRCcmVhayhub3JtYWxpemVkVmFsdWUpO1xuICAgIH1cblxuICAgIGlmIChub3JtYWxpemVkUHJvcCA9PT0gJ3otaW5kZXgnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0WkluZGV4KG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsYXNzTmFtZTogbnVsbCxcbiAgICAgIHNraXBwZWQ6IHRydWUsXG4gICAgICByZWFzb246IGBVbnN1cHBvcnRlZCBwcm9wZXJ0eTogJHtwcm9wZXJ0eX1gXG4gICAgfTtcbiAgfVxuXG4gIGNvbnZlcnRQcm9wZXJ0eVdpdGhNdWx0aXBsZShwcm9wZXJ0eTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogTXVsdGlDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBub3JtYWxpemVkUHJvcCA9IHByb3BlcnR5LnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnbWFyZ2luJyB8fCBub3JtYWxpemVkUHJvcCA9PT0gJ3BhZGRpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U3BhY2luZ1Nob3J0aGFuZChub3JtYWxpemVkUHJvcCwgbm9ybWFsaXplZFZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAobm9ybWFsaXplZFByb3AgPT09ICdib3JkZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0Qm9yZGVyU2hvcnRoYW5kKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wLnN0YXJ0c1dpdGgoJ2JvcmRlci0nKSAmJiBcbiAgICAgICAgWydib3JkZXItdG9wJywgJ2JvcmRlci1yaWdodCcsICdib3JkZXItYm90dG9tJywgJ2JvcmRlci1sZWZ0J10uaW5jbHVkZXMobm9ybWFsaXplZFByb3ApKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0RGlyZWN0aW9uYWxCb3JkZXJTaG9ydGhhbmQobm9ybWFsaXplZFByb3AsIG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnZmxleCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRGbGV4U2hvcnRoYW5kKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5vcm1hbGl6ZWRQcm9wID09PSAnYmFja2dyb3VuZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRCYWNrZ3JvdW5kU2hvcnRoYW5kKG5vcm1hbGl6ZWRWYWx1ZSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb252ZXJ0UHJvcGVydHkocHJvcGVydHksIHZhbHVlKTtcbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NlczogcmVzdWx0LmNsYXNzTmFtZSA/IFtyZXN1bHQuY2xhc3NOYW1lXSA6IFtdLFxuICAgICAgd2FybmluZ3M6IHJlc3VsdC5yZWFzb24gPyBbcmVzdWx0LnJlYXNvbl0gOiBbXSxcbiAgICAgIGNzc1Byb3BlcnRpZXM6IHJlc3VsdC5jbGFzc05hbWUgPyBbcHJvcGVydHldIDogW11cbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0QmFja2dyb3VuZFNob3J0aGFuZCh2YWx1ZTogc3RyaW5nKTogTXVsdGlDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNzc1Byb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICBpZiAodmFsdWUgPT09ICd0cmFuc3BhcmVudCcpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnYmctdHJhbnNwYXJlbnQnKTtcbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnYmFja2dyb3VuZC1jb2xvcicpO1xuICAgICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICdub25lJykge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdiZy1ub25lJyk7XG4gICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2JhY2tncm91bmQtaW1hZ2UnKTtcbiAgICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gICAgfVxuXG4gICAgY29uc3QgY29sb3JWYWx1ZSA9IHRoaXMuZXh0cmFjdENvbG9yRnJvbUJhY2tncm91bmQodmFsdWUpO1xuICAgIFxuICAgIGlmIChjb2xvclZhbHVlKSB7XG4gICAgICBpZiAoY29sb3JWYWx1ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGBiZy1bJHtjb2xvclZhbHVlfV1gKTtcbiAgICAgIH0gZWxzZSBpZiAoY29sb3JWYWx1ZS5zdGFydHNXaXRoKCdyZ2InKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goYGJnLVske2NvbG9yVmFsdWV9XWApO1xuICAgICAgfSBlbHNlIGlmIChjb2xvclZhbHVlLnN0YXJ0c1dpdGgoJ2hzbCcpKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChgYmctWyR7Y29sb3JWYWx1ZX1dYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb2xvck1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgICAnd2hpdGUnOiAnYmctd2hpdGUnLFxuICAgICAgICAgICdibGFjayc6ICdiZy1ibGFjaycsXG4gICAgICAgICAgJ3JlZCc6ICdiZy1yZWQtNTAwJyxcbiAgICAgICAgICAnYmx1ZSc6ICdiZy1ibHVlLTUwMCcsXG4gICAgICAgICAgJ2dyZWVuJzogJ2JnLWdyZWVuLTUwMCcsXG4gICAgICAgICAgJ2dyYXknOiAnYmctZ3JheS01MDAnLFxuICAgICAgICAgICd0cmFuc3BhcmVudCc6ICdiZy10cmFuc3BhcmVudCdcbiAgICAgICAgfTtcbiAgICAgICAgXG4gICAgICAgIGlmIChjb2xvck1hcFtjb2xvclZhbHVlXSkge1xuICAgICAgICAgIGNsYXNzZXMucHVzaChjb2xvck1hcFtjb2xvclZhbHVlXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2xhc3Nlcy5wdXNoKGBiZy0ke2NvbG9yVmFsdWV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnYmFja2dyb3VuZC1jb2xvcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuaW5ncy5wdXNoKGBDYW5ub3QgZXh0cmFjdCBjb2xvciBmcm9tIGJhY2tncm91bmQgc2hvcnRoYW5kOiAke3ZhbHVlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3RDb2xvckZyb21CYWNrZ3JvdW5kKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCB0b2tlbnMgPSB0aGlzLnRva2VuaXplVmFsdWUodmFsdWUpO1xuICAgIFxuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgICBpZiAodG9rZW4uc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRva2VuLnN0YXJ0c1dpdGgoJ3JnYicpIHx8IHRva2VuLnN0YXJ0c1dpdGgoJ2hzbCcpKSB7XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKHRva2VuLnN0YXJ0c1dpdGgoJ3VybCgnKSB8fCB0b2tlbiA9PT0gJ25vbmUnKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoL14obGluZWFyLWdyYWRpZW50fHJhZGlhbC1ncmFkaWVudHxjb25pYy1ncmFkaWVudHxyZXBlYXRpbmctbGluZWFyLWdyYWRpZW50fHJlcGVhdGluZy1yYWRpYWwtZ3JhZGllbnR8cmVwZWF0aW5nLWNvbmljLWdyYWRpZW50KVxcKC9pLnRlc3QodG9rZW4pKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoL14ocmVwZWF0fG5vLXJlcGVhdHxyZXBlYXQteHxyZXBlYXQteXxzcGFjZXxyb3VuZCkkL2kudGVzdCh0b2tlbikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICgvXihzY3JvbGx8Zml4ZWR8bG9jYWwpJC9pLnRlc3QodG9rZW4pKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoL14oY2VudGVyfHRvcHxib3R0b218bGVmdHxyaWdodHxcXGQrJXxcXGQrcHgpL2kudGVzdCh0b2tlbikpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICgvXihjb3Zlcnxjb250YWluKSQvaS50ZXN0KHRva2VuKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKC9eKGJvcmRlci1ib3h8cGFkZGluZy1ib3h8Y29udGVudC1ib3gpJC9pLnRlc3QodG9rZW4pKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAoL14oY2xpcHxib3JkZXJ8cGFkZGluZ3xjb250ZW50KSQvaS50ZXN0KHRva2VuKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKC9eXFxkLy50ZXN0KHRva2VuKSAmJiAhdG9rZW4uaW5jbHVkZXMoJ2dyYWRpZW50JykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBcbiAgICAgIGlmICgvXih0cmFuc3BhcmVudHx3aGl0ZXxibGFja3xyZWR8Ymx1ZXxncmVlbnx5ZWxsb3d8b3JhbmdlfHB1cnBsZXxwaW5rfGdyYXl8Z3JleXxicm93bnxjeWFufG1hZ2VudGF8b2xpdmV8bGltZXxhcXVhfG5hdnl8dGVhbHxtYXJvb258c2lsdmVyfGZ1Y2hzaWEpJC9pLnRlc3QodG9rZW4pKSB7XG4gICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgaWYgKC9eKGFsaWNlYmx1ZXxhbnRpcXVld2hpdGV8YXF1YXxhcXVhbWFyaW5lfGF6dXJlfGJlaWdlfGJpc3F1ZXxibGFuY2hlZGFsbW9uZHxibHVldmlvbGV0fGJ1cmx5d29vZHxjYWRldGJsdWV8Y2hhcnRyZXVzZXxjaG9jb2xhdGV8Y29yYWx8Y29ybmZsb3dlcmJsdWV8Y29ybnNpbGt8Y3JpbXNvbnxkYXJrYmx1ZXxkYXJrY3lhbnxkYXJrZ29sZGVucm9kfGRhcmtncmF5fGRhcmtncmVlbnxkYXJrZ3JleXxkYXJra2hha2l8ZGFya21hZ2VudGF8ZGFya29saXZlZ3JlZW58ZGFya29yYW5nZXxkYXJrb3JjaGlkfGRhcmtyZWR8ZGFya3NhbG1vbnxkYXJrc2VhZ3JlZW58ZGFya3NsYXRlYmx1ZXxkYXJrc2xhdGVncmF5fGRhcmtzbGF0ZWdyZXl8ZGFya3R1cnF1b2lzZXxkYXJrdmlvbGV0fGRlZXBwaW5rfGRlZXBza3libHVlfGRpbWdyYXl8ZGltZ3JleXxkb2RnZXJibHVlfGZpcmVicmlja3xmbG9yYWx3aGl0ZXxmb3Jlc3RncmVlbnxnYWluc2Jvcm98Z2hvc3R3aGl0ZXxnb2xkfGdvbGRlbnJvZHxncmVlbnllbGxvd3xncmV5fGhvbmV5ZGV3fGhvdHBpbmt8aW5kaWFucmVkfGluZGlnb3xpdm9yeXxraGFraXxsYXZlbmRlcnxsYXZlbmRlcmJsdXNofGxhd25ncmVlbnxsZW1vbmNoaWZmb258bGlnaHRibHVlfGxpZ2h0Y29yYWx8bGlnaHRjeWFufGxpZ2h0Z29sZGVucm9keWVsbG93fGxpZ2h0Z3JheXxsaWdodGdyZWVufGxpZ2h0Z3JleXxsaWdodHBpbmt8bGlnaHRzYWxtb258bGlnaHRzZWFncmVlbnxsaWdodHNreWJsdWV8bGlnaHRzbGF0ZWdyYXl8bGlnaHRzbGF0ZWdyZXl8bGlnaHRzdGVlbGJsdWV8bGlnaHR5ZWxsb3d8bGltZWdyZWVufGxpbmVufG1lZGl1bWFxdWFtYXJpbmV8bWVkaXVtYmx1ZXxtZWRpdW1vcmNoaWR8bWVkaXVtcHVycGxlfG1lZGl1bXNlYWdyZWVufG1lZGl1bXNsYXRlYmx1ZXxtZWRpdW1zcHJpbmdncmVlbnxtZWRpdW10dXJxdW9pc2V8bWVkaXVtdmlvbGV0cmVkfG1pZG5pZ2h0Ymx1ZXxtaW50Y3JlYW18bWlzdHlyb3NlfG1vY2Nhc2lufG5hdmFqb3doaXRlfG9sZGxhY2V8b2xpdmVkcmFifG9yYW5nZXJlZHxvcmNoaWR8cGFsZWdvbGRlbnJvZHxwYWxlZ3JlZW58cGFsZXR1cnF1b2lzZXxwYWxldmlvbGV0cmVkfHBhcGF5YXdoaXB8cGVhY2hwdWZmfHBlcnV8cGx1bXxwb3dkZXJibHVlfHJlYmVjY2FwdXJwbGV8cm9zeWJyb3dufHJveWFsYmx1ZXxzYWRkbGVicm93bnxzYWxtb258c2FuZHlicm93bnxzZWFncmVlbnxzZWFzaGVsbHxzaWVubmF8c2t5Ymx1ZXxzbGF0ZWJsdWV8c2xhdGVncmF5fHNsYXRlZ3JleXxzbm93fHNwcmluZ2dyZWVufHN0ZWVsYmx1ZXx0YW58dGhpc3RsZXx0b21hdG98dHVycXVvaXNlfHZpb2xldHx3aGVhdHx3aGl0ZXNtb2tlfHllbGxvd2dyZWVuKSQvaS50ZXN0KHRva2VuKSkge1xuICAgICAgICByZXR1cm4gdG9rZW47XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0U3BhY2luZ1Nob3J0aGFuZChwcm9wOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBNdWx0aUNvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHRva2VucyA9IHRoaXMudG9rZW5pemVWYWx1ZSh2YWx1ZSk7XG4gICAgY29uc3QgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBjc3NQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHByZWZpeCA9IHByb3AgPT09ICdtYXJnaW4nID8gJ20nIDogJ3AnO1xuICAgIGNvbnN0IHByb3BQcmVmaXggPSBwcm9wID09PSAnbWFyZ2luJyA/ICdtYXJnaW4nIDogJ3BhZGRpbmcnO1xuXG4gICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzOiBbJ0VtcHR5IHNwYWNpbmcgdmFsdWUnXSwgY3NzUHJvcGVydGllcyB9O1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZFRva2VucyA9IHRva2Vucy5tYXAodCA9PiB0aGlzLnBhcnNlU3BhY2luZ1ZhbHVlKHQpKTtcblxuICAgIGlmICh0b2tlbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZWRUb2tlbnNbMF07XG4gICAgICBpZiAocGFyc2VkLnB4ICE9PSBudWxsIHx8IC9eLT9cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh0b2tlbnNbMF0pKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmJ1aWxkU3BhY2luZ1V0aWxpdHkocHJlZml4LCBwYXJzZWQpKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKHByb3ApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgSW52YWxpZCAke3Byb3B9IHZhbHVlOiAke3Rva2Vuc1swXX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRva2Vucy5sZW5ndGggPT09IDIpIHtcbiAgICAgIGNvbnN0IFt2ZXJ0aWNhbCwgaG9yaXpvbnRhbF0gPSBwYXJzZWRUb2tlbnM7XG4gICAgICBcbiAgICAgIGlmICh2ZXJ0aWNhbC5weCAhPT0gbnVsbCB8fCAvXi0/XFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodG9rZW5zWzBdKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2godGhpcy5idWlsZFNwYWNpbmdVdGlsaXR5KGAke3ByZWZpeH15YCwgdmVydGljYWwpKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKGAke3Byb3BQcmVmaXh9LXlgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfSB2ZXJ0aWNhbCB2YWx1ZTogJHt0b2tlbnNbMF19YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChob3Jpem9udGFsLnB4ICE9PSBudWxsIHx8IC9eLT9cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh0b2tlbnNbMV0pKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmJ1aWxkU3BhY2luZ1V0aWxpdHkoYCR7cHJlZml4fXhgLCBob3Jpem9udGFsKSk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChgJHtwcm9wUHJlZml4fS14YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBJbnZhbGlkICR7cHJvcH0gaG9yaXpvbnRhbCB2YWx1ZTogJHt0b2tlbnNbMV19YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0b2tlbnMubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBbdG9wLCBob3Jpem9udGFsLCBib3R0b21dID0gcGFyc2VkVG9rZW5zO1xuXG4gICAgICBpZiAodG9wLnB4ICE9PSBudWxsIHx8IC9eLT9cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh0b2tlbnNbMF0pKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmJ1aWxkU3BhY2luZ1V0aWxpdHkoYCR7cHJlZml4fXRgLCB0b3ApKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKGAke3Byb3BQcmVmaXh9LXRvcGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgSW52YWxpZCAke3Byb3B9LXRvcCB2YWx1ZTogJHt0b2tlbnNbMF19YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChob3Jpem9udGFsLnB4ICE9PSBudWxsIHx8IC9eLT9cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh0b2tlbnNbMV0pKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmJ1aWxkU3BhY2luZ1V0aWxpdHkoYCR7cHJlZml4fXhgLCBob3Jpem9udGFsKSk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaChgJHtwcm9wUHJlZml4fS14YCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBJbnZhbGlkICR7cHJvcH0gaG9yaXpvbnRhbCB2YWx1ZTogJHt0b2tlbnNbMV19YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChib3R0b20ucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1syXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9YmAsIGJvdHRvbSkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goYCR7cHJvcFByZWZpeH0tYm90dG9tYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBJbnZhbGlkICR7cHJvcH0tYm90dG9tIHZhbHVlOiAke3Rva2Vuc1syXX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRva2Vucy5sZW5ndGggPj0gNCkge1xuICAgICAgY29uc3QgW3RvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdF0gPSBwYXJzZWRUb2tlbnM7XG5cbiAgICAgIGlmICh0b3AucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1swXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9dGAsIHRvcCkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goYCR7cHJvcFByZWZpeH0tdG9wYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBJbnZhbGlkICR7cHJvcH0tdG9wIHZhbHVlOiAke3Rva2Vuc1swXX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJpZ2h0LnB4ICE9PSBudWxsIHx8IC9eLT9cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh0b2tlbnNbMV0pKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh0aGlzLmJ1aWxkU3BhY2luZ1V0aWxpdHkoYCR7cHJlZml4fXJgLCByaWdodCkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goYCR7cHJvcFByZWZpeH0tcmlnaHRgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfS1yaWdodCB2YWx1ZTogJHt0b2tlbnNbMV19YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChib3R0b20ucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1syXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9YmAsIGJvdHRvbSkpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goYCR7cHJvcFByZWZpeH0tYm90dG9tYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKGBJbnZhbGlkICR7cHJvcH0tYm90dG9tIHZhbHVlOiAke3Rva2Vuc1syXX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxlZnQucHggIT09IG51bGwgfHwgL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHRva2Vuc1szXSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKHRoaXMuYnVpbGRTcGFjaW5nVXRpbGl0eShgJHtwcmVmaXh9bGAsIGxlZnQpKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKGAke3Byb3BQcmVmaXh9LWxlZnRgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEludmFsaWQgJHtwcm9wfS1sZWZ0IHZhbHVlOiAke3Rva2Vuc1szXX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc2VzLCB3YXJuaW5ncywgY3NzUHJvcGVydGllcyB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0RGlzcGxheSh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgZGlzcGxheU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdmbGV4JzogJ2ZsZXgnLFxuICAgICAgJ2Jsb2NrJzogJ2Jsb2NrJyxcbiAgICAgICdpbmxpbmUnOiAnaW5saW5lJyxcbiAgICAgICdpbmxpbmUtYmxvY2snOiAnaW5saW5lLWJsb2NrJyxcbiAgICAgICdncmlkJzogJ2dyaWQnLFxuICAgICAgJ2lubGluZS1mbGV4JzogJ2lubGluZS1mbGV4JyxcbiAgICAgICdpbmxpbmUtZ3JpZCc6ICdpbmxpbmUtZ3JpZCcsXG4gICAgICAnbm9uZSc6ICdoaWRkZW4nLFxuICAgICAgJ2NvbnRlbnRzJzogJ2NvbnRlbnRzJyxcbiAgICAgICd0YWJsZSc6ICd0YWJsZScsXG4gICAgICAndGFibGUtY2VsbCc6ICd0YWJsZS1jZWxsJyxcbiAgICAgICd0YWJsZS1yb3cnOiAndGFibGUtcm93JyxcbiAgICAgICdmbG93LXJvb3QnOiAnZmxvdy1yb290J1xuICAgIH07XG5cbiAgICBpZiAoZGlzcGxheU1hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogZGlzcGxheU1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGRpc3BsYXkgdmFsdWU6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0TWFyZ2luKHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHNpZGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnbWFyZ2luJzogJ20nLFxuICAgICAgJ21hcmdpbi10b3AnOiAnbXQnLFxuICAgICAgJ21hcmdpbi1yaWdodCc6ICdtcicsXG4gICAgICAnbWFyZ2luLWJvdHRvbSc6ICdtYicsXG4gICAgICAnbWFyZ2luLWxlZnQnOiAnbWwnLFxuICAgICAgJ21hcmdpbi14JzogJ214JyxcbiAgICAgICdtYXJnaW4teSc6ICdteSdcbiAgICB9O1xuICAgIGNvbnN0IHByZWZpeCA9IHNpZGVNYXBbcHJvcF0gfHwgJ20nO1xuICAgIFxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB2YWx1ZS5zdGFydHNXaXRoKCctJyk7XG4gICAgY29uc3QgYWJzb2x1dGVWYWx1ZSA9IGlzTmVnYXRpdmUgPyB2YWx1ZS5zbGljZSgxKSA6IHZhbHVlO1xuICAgIGNvbnN0IHB4ID0gdGhpcy5leHRyYWN0UHgoYWJzb2x1dGVWYWx1ZSk7XG4gICAgXG4gICAgaWYgKHZhbHVlID09PSAnYXV0bycpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1hdXRvYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHB4ID09PSBudWxsKSB7XG4gICAgICBpZiAoL14tP1xcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlKT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IGAke3ByZWZpeH0tWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYE5vbi1waXhlbCBtYXJnaW4gdmFsdWU6ICR7dmFsdWV9YCB9O1xuICAgIH1cblxuICAgIGNvbnN0IHNwYWNpbmcgPSB0aGlzLnB4VG9TcGFjaW5nKHB4KTtcbiAgICBpZiAoIXNwYWNpbmcpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IGlzTmVnYXRpdmUgPyBgLSR7cHJlZml4fS0ke3NwYWNpbmd9YCA6IGAke3ByZWZpeH0tJHtzcGFjaW5nfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRQYWRkaW5nKHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHB4ID0gdGhpcy5leHRyYWN0UHgodmFsdWUpO1xuICAgIFxuICAgIGNvbnN0IHNpZGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAncGFkZGluZyc6ICdwJyxcbiAgICAgICdwYWRkaW5nLXRvcCc6ICdwdCcsXG4gICAgICAncGFkZGluZy1yaWdodCc6ICdwcicsXG4gICAgICAncGFkZGluZy1ib3R0b20nOiAncGInLFxuICAgICAgJ3BhZGRpbmctbGVmdCc6ICdwbCcsXG4gICAgICAncGFkZGluZy14JzogJ3B4JyxcbiAgICAgICdwYWRkaW5nLXknOiAncHknXG4gICAgfTtcbiAgICBjb25zdCBwcmVmaXggPSBzaWRlTWFwW3Byb3BdIHx8ICdwJztcbiAgICBcbiAgICBpZiAocHggPT09IG51bGwpIHtcbiAgICAgIGlmICgvXi0/XFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgTm9uLXBpeGVsIHBhZGRpbmcgdmFsdWU6ICR7dmFsdWV9YCB9O1xuICAgIH1cblxuICAgIGNvbnN0IHNwYWNpbmcgPSB0aGlzLnB4VG9TcGFjaW5nKHB4KTtcbiAgICBpZiAoIXNwYWNpbmcpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IGAke3ByZWZpeH0tJHtzcGFjaW5nfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnREaW1lbnNpb25Db25zdHJhaW50KHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHByZWZpeE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdtYXgtd2lkdGgnOiAnbWF4LXcnLFxuICAgICAgJ21pbi13aWR0aCc6ICdtaW4tdycsXG4gICAgICAnbWF4LWhlaWdodCc6ICdtYXgtaCcsXG4gICAgICAnbWluLWhlaWdodCc6ICdtaW4taCdcbiAgICB9O1xuICAgIGNvbnN0IHByZWZpeCA9IHByZWZpeE1hcFtwcm9wXTtcblxuICAgIGlmICh2YWx1ZSA9PT0gJzEwMCUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGAke3ByZWZpeH0tZnVsbGAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJzAnIHx8IHZhbHVlID09PSAnMHB4Jykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LTBgLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgJHtwcmVmaXh9LW5vbmVgLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnbWF4LXdpZHRoJykge1xuICAgICAgaWYgKHZhbHVlID09PSAnbWluLWNvbnRlbnQnKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ21heC13LW1pbicsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT09ICdtYXgtY29udGVudCcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnbWF4LXctbWF4Jywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2ZpdC1jb250ZW50Jykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdtYXgtdy1maXQnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXhXUHJvc2VTaXplczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJzY1Y2gnOiAncHJvc2UnLFxuICAgICAgICAnODBjaCc6ICdwcm9zZS1sZydcbiAgICAgIH07XG4gICAgICBpZiAobWF4V1Byb3NlU2l6ZXNbdmFsdWVdKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYG1heC13LSR7bWF4V1Byb3NlU2l6ZXNbdmFsdWVdfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm1heFdpZHRoU2NhbGUuaGFzKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBtYXgtdy0ke3RoaXMubWF4V2lkdGhTY2FsZS5nZXQodmFsdWUpfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeCh2YWx1ZSk7XG4gICAgaWYgKHB4ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzcGFjaW5nID0gdGhpcy5weFRvU3BhY2luZyhweCk7XG4gICAgICBpZiAoc3BhY2luZykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IGAke3ByZWZpeH0tJHtzcGFjaW5nfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCV8Y2h8dnd8dmgpPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGAke3ByZWZpeH0tWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBDb21wbGV4ICR7cHJvcH0gdmFsdWU6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Rm9udFdlaWdodCh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3Qgd2VpZ2h0TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJzEwMCc6ICdmb250LXRoaW4nLFxuICAgICAgJzIwMCc6ICdmb250LWV4dHJhbGlnaHQnLFxuICAgICAgJzMwMCc6ICdmb250LWxpZ2h0JyxcbiAgICAgICc0MDAnOiAnZm9udC1ub3JtYWwnLFxuICAgICAgJzUwMCc6ICdmb250LW1lZGl1bScsXG4gICAgICAnNjAwJzogJ2ZvbnQtc2VtaWJvbGQnLFxuICAgICAgJzcwMCc6ICdmb250LWJvbGQnLFxuICAgICAgJzgwMCc6ICdmb250LWV4dHJhYm9sZCcsXG4gICAgICAnOTAwJzogJ2ZvbnQtYmxhY2snLFxuICAgICAgJ25vcm1hbCc6ICdmb250LW5vcm1hbCcsXG4gICAgICAnYm9sZCc6ICdmb250LWJvbGQnXG4gICAgfTtcblxuICAgIGlmICh3ZWlnaHRNYXBbdmFsdWVdKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IHdlaWdodE1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGZvbnQtd2VpZ2h0OiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEZvbnRTaXplKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBweCA9IHRoaXMuZXh0cmFjdFB4KHZhbHVlKTtcbiAgICBpZiAocHggIT09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmZvbnRTaXplU2NhbGUuaGFzKHB4KSkge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB0ZXh0LSR7dGhpcy5mb250U2l6ZVNjYWxlLmdldChweCl9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdGV4dC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHRleHQtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBOb24tc3RhbmRhcmQgZm9udC1zaXplOiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFRleHREZWNvcmF0aW9uKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBkZWNvcmF0aW9uTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3VuZGVybGluZSc6ICd1bmRlcmxpbmUnLFxuICAgICAgJ2xpbmUtdGhyb3VnaCc6ICdsaW5lLXRocm91Z2gnLFxuICAgICAgJ25vbmUnOiAnbm8tdW5kZXJsaW5lJyxcbiAgICAgICduby11bmRlcmxpbmUnOiAnbm8tdW5kZXJsaW5lJ1xuICAgIH07XG5cbiAgICBpZiAoZGVjb3JhdGlvbk1hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogZGVjb3JhdGlvbk1hcFt2YWx1ZV0sIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgbG9nZ2VyLndhcm4oYFVuc3VwcG9ydGVkIHRleHQtZGVjb3JhdGlvbiB2YWx1ZTogJHt2YWx1ZX1gKTtcbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVuc3VwcG9ydGVkIHRleHQtZGVjb3JhdGlvbjogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRUZXh0VHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCB0cmFuc2Zvcm1NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAndXBwZXJjYXNlJzogJ3VwcGVyY2FzZScsXG4gICAgICAnbG93ZXJjYXNlJzogJ2xvd2VyY2FzZScsXG4gICAgICAnY2FwaXRhbGl6ZSc6ICdjYXBpdGFsaXplJyxcbiAgICAgICdub25lJzogJ25vcm1hbC1jYXNlJyxcbiAgICAgICdpbml0aWFsJzogJ25vcm1hbC1jYXNlJ1xuICAgIH07XG5cbiAgICBpZiAodHJhbnNmb3JtTWFwW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiB0cmFuc2Zvcm1NYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biB0ZXh0LXRyYW5zZm9ybTogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRMZXR0ZXJTcGFjaW5nKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBpZiAodGhpcy5sZXR0ZXJTcGFjaW5nU2NhbGUuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdHJhY2tpbmctJHt0aGlzLmxldHRlclNwYWNpbmdTY2FsZS5nZXQodmFsdWUpfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3Qga25vd25NYXBwaW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICctMC4wMjVlbSc6ICd0aWdodCcsXG4gICAgICAnLTAuMDVlbSc6ICd0aWdodGVyJyxcbiAgICAgICcwLjAyNWVtJzogJ3dpZGUnLFxuICAgICAgJzAuMDVlbSc6ICd3aWRlcicsXG4gICAgICAnMC4xZW0nOiAnd2lkZXN0JyxcbiAgICAgICcwZW0nOiAnbm9ybWFsJ1xuICAgIH07XG5cbiAgICBpZiAoa25vd25NYXBwaW5nc1t2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHRyYWNraW5nLSR7a25vd25NYXBwaW5nc1t2YWx1ZV19YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoL14tP1xcZCsoXFwuXFxkKyk/KGVtfHB4fHJlbSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHRyYWNraW5nLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biBsZXR0ZXItc3BhY2luZzogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRMaW5lSGVpZ2h0KHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBpZiAodGhpcy5saW5lSGVpZ2h0U2NhbGUuaGFzKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgbGVhZGluZy0ke3RoaXMubGluZUhlaWdodFNjYWxlLmdldCh2YWx1ZSl9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBrbm93bk1hcHBpbmdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJzEnOiAnbm9uZScsXG4gICAgICAnMS4yNSc6ICd0aWdodCcsXG4gICAgICAnMS4zNzUnOiAnc251ZycsXG4gICAgICAnMS41JzogJ25vcm1hbCcsXG4gICAgICAnMS42MjUnOiAncmVsYXhlZCcsXG4gICAgICAnMic6ICdsb29zZSdcbiAgICB9O1xuXG4gICAgaWYgKGtub3duTWFwcGluZ3NbdmFsdWVdKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBsZWFkaW5nLSR7a25vd25NYXBwaW5nc1t2YWx1ZV19YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoL15cXGQrKFxcLlxcZCspPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBsZWFkaW5nLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbSk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGxlYWRpbmctWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGxpbmUtaGVpZ2h0OiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEZsZXhib3gocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgaWYgKHByb3AgPT09ICdmbGV4LWRpcmVjdGlvbicpIHtcbiAgICAgIGNvbnN0IGRpck1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ3Jvdyc6ICdmbGV4LXJvdycsXG4gICAgICAgICdyb3ctcmV2ZXJzZSc6ICdmbGV4LXJvdy1yZXZlcnNlJyxcbiAgICAgICAgJ2NvbHVtbic6ICdmbGV4LWNvbCcsXG4gICAgICAgICdjb2x1bW4tcmV2ZXJzZSc6ICdmbGV4LWNvbC1yZXZlcnNlJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogZGlyTWFwW3ZhbHVlXSB8fCBudWxsLCBza2lwcGVkOiAhZGlyTWFwW3ZhbHVlXSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnZmxleC13cmFwJykge1xuICAgICAgY29uc3Qgd3JhcE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ3dyYXAnOiAnZmxleC13cmFwJyxcbiAgICAgICAgJ25vd3JhcCc6ICdmbGV4LW5vd3JhcCcsXG4gICAgICAgICd3cmFwLXJldmVyc2UnOiAnZmxleC13cmFwLXJldmVyc2UnXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiB3cmFwTWFwW3ZhbHVlXSB8fCBudWxsLCBza2lwcGVkOiAhd3JhcE1hcFt2YWx1ZV0gfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2p1c3RpZnktY29udGVudCcpIHtcbiAgICAgIGNvbnN0IGp1c3RpZnlNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdmbGV4LXN0YXJ0JzogJ2p1c3RpZnktc3RhcnQnLFxuICAgICAgICAnZmxleC1lbmQnOiAnanVzdGlmeS1lbmQnLFxuICAgICAgICAnY2VudGVyJzogJ2p1c3RpZnktY2VudGVyJyxcbiAgICAgICAgJ3NwYWNlLWJldHdlZW4nOiAnanVzdGlmeS1iZXR3ZWVuJyxcbiAgICAgICAgJ3NwYWNlLWFyb3VuZCc6ICdqdXN0aWZ5LWFyb3VuZCcsXG4gICAgICAgICdzcGFjZS1ldmVubHknOiAnanVzdGlmeS1ldmVubHknXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBqdXN0aWZ5TWFwW3ZhbHVlXSB8fCBudWxsLCBza2lwcGVkOiAhanVzdGlmeU1hcFt2YWx1ZV0gfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2FsaWduLWl0ZW1zJykge1xuICAgICAgY29uc3QgYWxpZ25NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdmbGV4LXN0YXJ0JzogJ2l0ZW1zLXN0YXJ0JyxcbiAgICAgICAgJ2ZsZXgtZW5kJzogJ2l0ZW1zLWVuZCcsXG4gICAgICAgICdjZW50ZXInOiAnaXRlbXMtY2VudGVyJyxcbiAgICAgICAgJ2Jhc2VsaW5lJzogJ2l0ZW1zLWJhc2VsaW5lJyxcbiAgICAgICAgJ3N0cmV0Y2gnOiAnaXRlbXMtc3RyZXRjaCdcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGFsaWduTWFwW3ZhbHVlXSB8fCBudWxsLCBza2lwcGVkOiAhYWxpZ25NYXBbdmFsdWVdIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdhbGlnbi1jb250ZW50Jykge1xuICAgICAgY29uc3QgYWxpZ25NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICdmbGV4LXN0YXJ0JzogJ2NvbnRlbnQtc3RhcnQnLFxuICAgICAgICAnZmxleC1lbmQnOiAnY29udGVudC1lbmQnLFxuICAgICAgICAnY2VudGVyJzogJ2NvbnRlbnQtY2VudGVyJyxcbiAgICAgICAgJ3NwYWNlLWJldHdlZW4nOiAnY29udGVudC1iZXR3ZWVuJyxcbiAgICAgICAgJ3NwYWNlLWFyb3VuZCc6ICdjb250ZW50LWFyb3VuZCcsXG4gICAgICAgICdzdHJldGNoJzogJ2NvbnRlbnQtc3RyZXRjaCdcbiAgICAgIH07XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGFsaWduTWFwW3ZhbHVlXSB8fCBudWxsLCBza2lwcGVkOiAhYWxpZ25NYXBbdmFsdWVdIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdhbGlnbi1zZWxmJykge1xuICAgICAgY29uc3QgYWxpZ25TZWxmTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnYXV0byc6ICdzZWxmLWF1dG8nLFxuICAgICAgICAnZmxleC1zdGFydCc6ICdzZWxmLXN0YXJ0JyxcbiAgICAgICAgJ2ZsZXgtZW5kJzogJ3NlbGYtZW5kJyxcbiAgICAgICAgJ2NlbnRlcic6ICdzZWxmLWNlbnRlcicsXG4gICAgICAgICdzdHJldGNoJzogJ3NlbGYtc3RyZXRjaCcsXG4gICAgICAgICdiYXNlbGluZSc6ICdzZWxmLWJhc2VsaW5lJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYWxpZ25TZWxmTWFwW3ZhbHVlXSB8fCBudWxsLCBza2lwcGVkOiAhYWxpZ25TZWxmTWFwW3ZhbHVlXSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnZmxleC1ncm93Jykge1xuICAgICAgaWYgKHZhbHVlID09PSAnMCcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnZ3Jvdy0wJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PT0gJzEnKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ2dyb3cnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgZ3Jvdy1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2ZsZXgtc2hyaW5rJykge1xuICAgICAgaWYgKHZhbHVlID09PSAnMCcpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnc2hyaW5rLTAnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSAnMScpIHtcbiAgICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnc2hyaW5rJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHNocmluay1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAocHJvcCA9PT0gJ2ZsZXgtYmFzaXMnKSB7XG4gICAgICBpZiAodmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdiYXNpcy1hdXRvJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PT0gJzAnIHx8IHZhbHVlID09PSAnMHB4Jykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdiYXNpcy0wJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHB4ID0gdGhpcy5leHRyYWN0UHgodmFsdWUpO1xuICAgICAgaWYgKHB4ICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHNwYWNpbmcgPSB0aGlzLnB4VG9TcGFjaW5nKHB4KTtcbiAgICAgICAgaWYgKHNwYWNpbmcpIHtcbiAgICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBiYXNpcy0ke3NwYWNpbmd9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCV8dnd8dmgpPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGJhc2lzLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5zdXBwb3J0ZWQgZmxleGJveCBwcm9wZXJ0eTogJHtwcm9wfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydEZsZXhTaG9ydGhhbmQodmFsdWU6IHN0cmluZyk6IE11bHRpQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBjc3NQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKHZhbHVlID09PSAnMScpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZmxleC0xJyk7XG4gICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2ZsZXgnKTtcbiAgICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICBjbGFzc2VzLnB1c2goJ2ZsZXgtYXV0bycpO1xuICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdmbGV4Jyk7XG4gICAgICByZXR1cm4geyBjbGFzc2VzLCB3YXJuaW5ncywgY3NzUHJvcGVydGllcyB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdub25lJykge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmbGV4LW5vbmUnKTtcbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnZmxleCcpO1xuICAgICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnaW5pdGlhbCcpIHtcbiAgICAgIGNsYXNzZXMucHVzaCgnZmxleC1pbml0aWFsJyk7XG4gICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2ZsZXgnKTtcbiAgICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbml6ZVZhbHVlKHZhbHVlKTtcbiAgICBpZiAodG9rZW5zLmxlbmd0aCA9PT0gMykge1xuICAgICAgY29uc3QgW2dyb3csIHNocmluaywgYmFzaXNdID0gdG9rZW5zO1xuICAgICAgXG4gICAgICBpZiAoZ3JvdyA9PT0gJzEnICYmIHNocmluayA9PT0gJzEnICYmIGJhc2lzID09PSAnMCUnKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnZmxleC0xJyk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnZmxleCcpO1xuICAgICAgfSBlbHNlIGlmIChncm93ID09PSAnMScgJiYgc2hyaW5rID09PSAnMScgJiYgYmFzaXMgPT09ICdhdXRvJykge1xuICAgICAgICBjbGFzc2VzLnB1c2goJ2ZsZXgtYXV0bycpO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2ZsZXgnKTtcbiAgICAgIH0gZWxzZSBpZiAoZ3JvdyA9PT0gJzAnICYmIHNocmluayA9PT0gJzEnICYmIGJhc2lzID09PSAnYXV0bycpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKCdmbGV4LWluaXRpYWwnKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdmbGV4Jyk7XG4gICAgICB9IGVsc2UgaWYgKGdyb3cgPT09ICcwJyAmJiBzaHJpbmsgPT09ICcwJyAmJiBiYXNpcyA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCgnZmxleC1ub25lJyk7XG4gICAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnZmxleCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGBmbGV4LVske3ZhbHVlfV1gKTtcbiAgICAgICAgY3NzUHJvcGVydGllcy5wdXNoKCdmbGV4Jyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gICAgfVxuXG4gICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDEgfHwgdG9rZW5zLmxlbmd0aCA9PT0gMikge1xuICAgICAgY2xhc3Nlcy5wdXNoKGBmbGV4LVske3ZhbHVlfV1gKTtcbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnZmxleCcpO1xuICAgICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgICB9XG5cbiAgICB3YXJuaW5ncy5wdXNoKGBDb21wbGV4IGZsZXggc2hvcnRoYW5kOiAke3ZhbHVlfWApO1xuICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRHYXAodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHB4ID0gdGhpcy5leHRyYWN0UHgodmFsdWUpO1xuICAgIGlmIChweCA9PT0gbnVsbCkge1xuICAgICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGdhcC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgTm9uLXBpeGVsIGdhcCB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc3BhY2luZyA9IHRoaXMucHhUb1NwYWNpbmcocHgpO1xuICAgIGlmICghc3BhY2luZykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgZ2FwLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGdhcC0ke3NwYWNpbmd9YCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFdpZHRoKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBpZiAodmFsdWUgPT09ICcxMDAlJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy1mdWxsJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnNTAlJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy0xLzInLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICczMy4zMzMlJyB8fCB2YWx1ZSA9PT0gJzMzLjMzJScpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ3ctMS8zJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnNjYuNjY2JScgfHwgdmFsdWUgPT09ICc2Ni42NyUnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICd3LTIvMycsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJzI1JScpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ3ctMS80Jywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnNzUlJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy0zLzQnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy1hdXRvJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnZml0LWNvbnRlbnQnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICd3LWZpdCcsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ21pbi1jb250ZW50Jykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAndy1taW4nLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdtYXgtY29udGVudCcpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ3ctbWF4Jywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBjb25zdCBweCA9IHRoaXMuZXh0cmFjdFB4KHZhbHVlKTtcbiAgICBpZiAocHggIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHNwYWNpbmcgPSB0aGlzLnB4VG9TcGFjaW5nKHB4KTtcbiAgICAgIGlmIChzcGFjaW5nKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHctJHtzcGFjaW5nfWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB3LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXwlfHZ3KT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgdy1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYENvbXBsZXggd2lkdGggdmFsdWU6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0SGVpZ2h0KHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBpZiAodmFsdWUgPT09ICcxMDAlJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnaC1mdWxsJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnNTAlJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnaC0xLzInLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdhdXRvJykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnaC1hdXRvJywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnZml0LWNvbnRlbnQnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdoLWZpdCcsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJ21pbi1jb250ZW50Jykge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiAnaC1taW4nLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICdtYXgtY29udGVudCcpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ2gtbWF4Jywgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnMTAwdmgnKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdoLXNjcmVlbicsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgY29uc3QgcHggPSB0aGlzLmV4dHJhY3RQeCh2YWx1ZSk7XG4gICAgaWYgKHB4ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBzcGFjaW5nID0gdGhpcy5weFRvU3BhY2luZyhweCk7XG4gICAgICBpZiAoc3BhY2luZykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBoLSR7c3BhY2luZ31gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgaC1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW18JXx2aCk/JC8udGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGgtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBDb21wbGV4IGhlaWdodCB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRCYWNrZ3JvdW5kQ29sb3IodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IGNvbG9yTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ3RyYW5zcGFyZW50JzogJ2JnLXRyYW5zcGFyZW50JyxcbiAgICAgICd3aGl0ZSc6ICdiZy13aGl0ZScsXG4gICAgICAnYmxhY2snOiAnYmctYmxhY2snLFxuICAgICAgJ3JlZCc6ICdiZy1yZWQtNTAwJyxcbiAgICAgICdibHVlJzogJ2JnLWJsdWUtNTAwJyxcbiAgICAgICdncmVlbic6ICdiZy1ncmVlbi01MDAnLFxuICAgICAgJ2dyYXknOiAnYmctZ3JheS01MDAnXG4gICAgfTtcblxuICAgIGlmIChjb2xvck1hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogY29sb3JNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGJnLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdyZ2InKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgYmctWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBDb21wbGV4IGJhY2tncm91bmQtY29sb3I6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VGV4dENvbG9yKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBjb2xvck1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICd0cmFuc3BhcmVudCc6ICd0ZXh0LXRyYW5zcGFyZW50JyxcbiAgICAgICd3aGl0ZSc6ICd0ZXh0LXdoaXRlJyxcbiAgICAgICdibGFjayc6ICd0ZXh0LWJsYWNrJyxcbiAgICAgICdyZWQnOiAndGV4dC1yZWQtNTAwJyxcbiAgICAgICdibHVlJzogJ3RleHQtYmx1ZS01MDAnLFxuICAgICAgJ2dyZWVuJzogJ3RleHQtZ3JlZW4tNTAwJyxcbiAgICAgICdncmF5JzogJ3RleHQtZ3JheS01MDAnXG4gICAgfTtcblxuICAgIGlmIChjb2xvck1hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogY29sb3JNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcjJykpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHRleHQtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgoJ3JnYicpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGB0ZXh0LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgQ29tcGxleCBjb2xvcjogJHt2YWx1ZX1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRCb3JkZXJSYWRpdXModmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IHB4ID0gdGhpcy5leHRyYWN0UHgodmFsdWUpO1xuICAgIFxuICAgIGlmIChweCA9PT0gbnVsbCkge1xuICAgICAgaWYgKHZhbHVlID09PSAnNTAlJykge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6ICdyb3VuZGVkLWZ1bGwnLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgICAgaWYgKC9eXFxkKyhcXC5cXGQrKT8ocHh8cmVtfGVtfCUpPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHJvdW5kZWQtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYENvbXBsZXggYm9yZGVyLXJhZGl1czogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmFkaXVzTWFwOiBSZWNvcmQ8bnVtYmVyLCBzdHJpbmc+ID0ge1xuICAgICAgMDogJ3JvdW5kZWQtbm9uZScsXG4gICAgICAyOiAncm91bmRlZC1zbScsXG4gICAgICA0OiAncm91bmRlZCcsXG4gICAgICA2OiAncm91bmRlZC1tZCcsXG4gICAgICA4OiAncm91bmRlZC1sZycsXG4gICAgICAxMjogJ3JvdW5kZWQteGwnLFxuICAgICAgMTY6ICdyb3VuZGVkLTJ4bCcsXG4gICAgICAyNDogJ3JvdW5kZWQtM3hsJ1xuICAgIH07XG5cbiAgICBjb25zdCBjbG9zZXN0ID0gT2JqZWN0LmtleXMocmFkaXVzTWFwKVxuICAgICAgLm1hcChOdW1iZXIpXG4gICAgICAucmVkdWNlKChwcmV2LCBjdXJyKSA9PiBcbiAgICAgICAgTWF0aC5hYnMoY3VyciAtIHB4KSA8IE1hdGguYWJzKHByZXYgLSBweCkgPyBjdXJyIDogcHJldlxuICAgICAgKTtcblxuICAgIGlmIChNYXRoLmFicyhjbG9zZXN0IC0gcHgpIC8gKHB4IHx8IDEpIDwgMC4yKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IHJhZGl1c01hcFtjbG9zZXN0XSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IGByb3VuZGVkLVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Qm9yZGVyKHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGlmIChwcm9wID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgY29uc3Qgd2lkdGhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICcwJzogJ2JvcmRlci0wJyxcbiAgICAgICAgJzFweCc6ICdib3JkZXInLFxuICAgICAgICAnMnB4JzogJ2JvcmRlci0yJyxcbiAgICAgICAgJzRweCc6ICdib3JkZXItNCcsXG4gICAgICAgICc4cHgnOiAnYm9yZGVyLTgnXG4gICAgICB9O1xuXG4gICAgICBpZiAod2lkdGhNYXBbdmFsdWVdKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogd2lkdGhNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW0pPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGJvcmRlci1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGJvcmRlci13aWR0aDogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdib3JkZXItc3R5bGUnKSB7XG4gICAgICBjb25zdCBzdHlsZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ3NvbGlkJzogJycsXG4gICAgICAgICdkYXNoZWQnOiAnYm9yZGVyLWRhc2hlZCcsXG4gICAgICAgICdkb3R0ZWQnOiAnYm9yZGVyLWRvdHRlZCcsXG4gICAgICAgICdkb3VibGUnOiAnYm9yZGVyLWRvdWJsZScsXG4gICAgICAgICdoaWRkZW4nOiAnYm9yZGVyLWhpZGRlbicsXG4gICAgICAgICdub25lJzogJ2JvcmRlci1ub25lJ1xuICAgICAgfTtcblxuICAgICAgaWYgKHZhbHVlID09PSAnc29saWQnKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKHN0eWxlTWFwW3ZhbHVlXSkge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IHN0eWxlTWFwW3ZhbHVlXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duIGJvcmRlci1zdHlsZTogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgaWYgKHByb3AgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICBpZiAodmFsdWUuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYGJvcmRlci1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCdyZ2InKSkge1xuICAgICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBib3JkZXItWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbG9yTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAndHJhbnNwYXJlbnQnOiAnYm9yZGVyLXRyYW5zcGFyZW50JyxcbiAgICAgICAgJ3doaXRlJzogJ2JvcmRlci13aGl0ZScsXG4gICAgICAgICdibGFjayc6ICdib3JkZXItYmxhY2snLFxuICAgICAgICAncmVkJzogJ2JvcmRlci1yZWQtNTAwJyxcbiAgICAgICAgJ2JsdWUnOiAnYm9yZGVyLWJsdWUtNTAwJyxcbiAgICAgICAgJ2dyZWVuJzogJ2JvcmRlci1ncmVlbi01MDAnLFxuICAgICAgICAnZ3JheSc6ICdib3JkZXItZ3JheS01MDAnXG4gICAgICB9O1xuXG4gICAgICBpZiAoY29sb3JNYXBbdmFsdWVdKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogY29sb3JNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBib3JkZXItJHt2YWx1ZX1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIGlmIChwcm9wID09PSAnYm9yZGVyLXRvcC13aWR0aCcgfHwgcHJvcCA9PT0gJ2JvcmRlci1yaWdodC13aWR0aCcgfHwgXG4gICAgICAgIHByb3AgPT09ICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCBwcm9wID09PSAnYm9yZGVyLWxlZnQtd2lkdGgnKSB7XG4gICAgICBjb25zdCBzaWRlTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnYm9yZGVyLXRvcC13aWR0aCc6ICdib3JkZXItdCcsXG4gICAgICAgICdib3JkZXItcmlnaHQtd2lkdGgnOiAnYm9yZGVyLXInLFxuICAgICAgICAnYm9yZGVyLWJvdHRvbS13aWR0aCc6ICdib3JkZXItYicsXG4gICAgICAgICdib3JkZXItbGVmdC13aWR0aCc6ICdib3JkZXItbCdcbiAgICAgIH07XG4gICAgICBjb25zdCBwcmVmaXggPSBzaWRlTWFwW3Byb3BdO1xuXG4gICAgICBjb25zdCB3aWR0aE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJzAnOiBgJHtwcmVmaXh9LTBgLFxuICAgICAgICAnMXB4JzogcHJlZml4LFxuICAgICAgICAnMnB4JzogYCR7cHJlZml4fS0yYCxcbiAgICAgICAgJzRweCc6IGAke3ByZWZpeH0tNGAsXG4gICAgICAgICc4cHgnOiBgJHtwcmVmaXh9LThgXG4gICAgICB9O1xuXG4gICAgICBpZiAod2lkdGhNYXBbdmFsdWVdKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogd2lkdGhNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoL15cXGQrKFxcLlxcZCspPyhweHxyZW18ZW0pPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYCR7cHJlZml4fS1bJHt2YWx1ZX1dYCwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBudWxsLCBza2lwcGVkOiB0cnVlLCByZWFzb246IGBVbmtub3duICR7cHJvcH06ICR7dmFsdWV9YCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biBib3JkZXIgcHJvcGVydHk6ICR7cHJvcH1gIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRCb3JkZXJTaG9ydGhhbmQodmFsdWU6IHN0cmluZyk6IE11bHRpQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBjc3NQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbml6ZVZhbHVlKHZhbHVlKTtcblxuICAgIGxldCB3aWR0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHN0eWxlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXx0aGlufG1lZGl1bXx0aGljayk/JC8udGVzdCh0b2tlbikgfHwgXG4gICAgICAgICAgdG9rZW4gPT09ICd0aGluJyB8fCB0b2tlbiA9PT0gJ21lZGl1bScgfHwgdG9rZW4gPT09ICd0aGljaycpIHtcbiAgICAgICAgd2lkdGggPSB0b2tlbjtcbiAgICAgIH0gZWxzZSBpZiAoWydzb2xpZCcsICdkYXNoZWQnLCAnZG90dGVkJywgJ2RvdWJsZScsICdoaWRkZW4nLCAnbm9uZScsICdncm9vdmUnLCAncmlkZ2UnLCAnaW5zZXQnLCAnb3V0c2V0J10uaW5jbHVkZXModG9rZW4pKSB7XG4gICAgICAgIHN0eWxlID0gdG9rZW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xvciA9IHRva2VuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3aWR0aCkge1xuICAgICAgY29uc3Qgd2lkdGhNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICcwJzogJ2JvcmRlci0wJyxcbiAgICAgICAgJzFweCc6ICdib3JkZXInLFxuICAgICAgICAnMnB4JzogJ2JvcmRlci0yJyxcbiAgICAgICAgJzRweCc6ICdib3JkZXItNCcsXG4gICAgICAgICc4cHgnOiAnYm9yZGVyLTgnLFxuICAgICAgICAndGhpbic6ICdib3JkZXInLFxuICAgICAgICAnbWVkaXVtJzogJ2JvcmRlci0yJyxcbiAgICAgICAgJ3RoaWNrJzogJ2JvcmRlci00J1xuICAgICAgfTtcblxuICAgICAgaWYgKHdpZHRoTWFwW3dpZHRoXSkge1xuICAgICAgICBjbGFzc2VzLnB1c2god2lkdGhNYXBbd2lkdGhdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChgYm9yZGVyLVske3dpZHRofV1gKTtcbiAgICAgIH1cbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnYm9yZGVyLXdpZHRoJyk7XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlICYmIHN0eWxlICE9PSAnc29saWQnKSB7XG4gICAgICBjb25zdCBzdHlsZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICAgJ2Rhc2hlZCc6ICdib3JkZXItZGFzaGVkJyxcbiAgICAgICAgJ2RvdHRlZCc6ICdib3JkZXItZG90dGVkJyxcbiAgICAgICAgJ2RvdWJsZSc6ICdib3JkZXItZG91YmxlJyxcbiAgICAgICAgJ2hpZGRlbic6ICdib3JkZXItaGlkZGVuJyxcbiAgICAgICAgJ25vbmUnOiAnYm9yZGVyLW5vbmUnXG4gICAgICB9O1xuXG4gICAgICBpZiAoc3R5bGVNYXBbc3R5bGVdKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChzdHlsZU1hcFtzdHlsZV0pO1xuICAgICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goJ2JvcmRlci1zdHlsZScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgVW5zdXBwb3J0ZWQgYm9yZGVyLXN0eWxlOiAke3N0eWxlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2xvcikge1xuICAgICAgaWYgKGNvbG9yLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goYGJvcmRlci1bJHtjb2xvcn1dYCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbG9yLnN0YXJ0c1dpdGgoJ3JnYicpKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChgYm9yZGVyLVske2NvbG9yfV1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvbG9yTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICd0cmFuc3BhcmVudCc6ICdib3JkZXItdHJhbnNwYXJlbnQnLFxuICAgICAgICAgICd3aGl0ZSc6ICdib3JkZXItd2hpdGUnLFxuICAgICAgICAgICdibGFjayc6ICdib3JkZXItYmxhY2snXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGNvbG9yTWFwW2NvbG9yXSkge1xuICAgICAgICAgIGNsYXNzZXMucHVzaChjb2xvck1hcFtjb2xvcl0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNsYXNzZXMucHVzaChgYm9yZGVyLSR7Y29sb3J9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNzc1Byb3BlcnRpZXMucHVzaCgnYm9yZGVyLWNvbG9yJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MsIGNzc1Byb3BlcnRpZXMgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydERpcmVjdGlvbmFsQm9yZGVyU2hvcnRoYW5kKHByb3A6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IE11bHRpQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgY2xhc3Nlczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBjc3NQcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgY29uc3Qgc2lkZU1hcDogUmVjb3JkPHN0cmluZywgeyBwcmVmaXg6IHN0cmluZzsgd2lkdGhQcm9wOiBzdHJpbmc7IGNvbG9yUHJvcDogc3RyaW5nIH0+ID0ge1xuICAgICAgJ2JvcmRlci10b3AnOiB7IHByZWZpeDogJ2JvcmRlci10Jywgd2lkdGhQcm9wOiAnYm9yZGVyLXRvcC13aWR0aCcsIGNvbG9yUHJvcDogJ2JvcmRlci10b3AtY29sb3InIH0sXG4gICAgICAnYm9yZGVyLXJpZ2h0JzogeyBwcmVmaXg6ICdib3JkZXItcicsIHdpZHRoUHJvcDogJ2JvcmRlci1yaWdodC13aWR0aCcsIGNvbG9yUHJvcDogJ2JvcmRlci1yaWdodC1jb2xvcicgfSxcbiAgICAgICdib3JkZXItYm90dG9tJzogeyBwcmVmaXg6ICdib3JkZXItYicsIHdpZHRoUHJvcDogJ2JvcmRlci1ib3R0b20td2lkdGgnLCBjb2xvclByb3A6ICdib3JkZXItYm90dG9tLWNvbG9yJyB9LFxuICAgICAgJ2JvcmRlci1sZWZ0JzogeyBwcmVmaXg6ICdib3JkZXItbCcsIHdpZHRoUHJvcDogJ2JvcmRlci1sZWZ0LXdpZHRoJywgY29sb3JQcm9wOiAnYm9yZGVyLWxlZnQtY29sb3InIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgc2lkZSA9IHNpZGVNYXBbcHJvcF07XG4gICAgaWYgKCFzaWRlKSB7XG4gICAgICByZXR1cm4geyBjbGFzc2VzLCB3YXJuaW5nczogW2BVbmtub3duIGRpcmVjdGlvbmFsIGJvcmRlcjogJHtwcm9wfWBdLCBjc3NQcm9wZXJ0aWVzIH07XG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbml6ZVZhbHVlKHZhbHVlKTtcblxuICAgIGxldCB3aWR0aDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgbGV0IHN0eWxlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBsZXQgY29sb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICAgIGlmICgvXlxcZCsoXFwuXFxkKyk/KHB4fHJlbXxlbXx0aGlufG1lZGl1bXx0aGljayk/JC8udGVzdCh0b2tlbikgfHwgXG4gICAgICAgICAgdG9rZW4gPT09ICd0aGluJyB8fCB0b2tlbiA9PT0gJ21lZGl1bScgfHwgdG9rZW4gPT09ICd0aGljaycpIHtcbiAgICAgICAgd2lkdGggPSB0b2tlbjtcbiAgICAgIH0gZWxzZSBpZiAoWydzb2xpZCcsICdkYXNoZWQnLCAnZG90dGVkJywgJ2RvdWJsZScsICdoaWRkZW4nLCAnbm9uZSddLmluY2x1ZGVzKHRva2VuKSkge1xuICAgICAgICBzdHlsZSA9IHRva2VuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29sb3IgPSB0b2tlbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAod2lkdGgpIHtcbiAgICAgIGNvbnN0IHdpZHRoTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAnMCc6IGAke3NpZGUucHJlZml4fS0wYCxcbiAgICAgICAgJzFweCc6IHNpZGUucHJlZml4LFxuICAgICAgICAnMnB4JzogYCR7c2lkZS5wcmVmaXh9LTJgLFxuICAgICAgICAnNHB4JzogYCR7c2lkZS5wcmVmaXh9LTRgLFxuICAgICAgICAnOHB4JzogYCR7c2lkZS5wcmVmaXh9LThgXG4gICAgICB9O1xuXG4gICAgICBpZiAod2lkdGhNYXBbd2lkdGhdKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaCh3aWR0aE1hcFt3aWR0aF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGAke3NpZGUucHJlZml4fS1bJHt3aWR0aH1dYCk7XG4gICAgICB9XG4gICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goc2lkZS53aWR0aFByb3ApO1xuICAgIH1cblxuICAgIGlmIChzdHlsZSAmJiBzdHlsZSAhPT0gJ3NvbGlkJykge1xuICAgICAgd2FybmluZ3MucHVzaChgQm9yZGVyIHN0eWxlICcke3N0eWxlfScgZm9yICR7cHJvcH0gYXBwbGllcyB0byBhbGwgYm9yZGVyc2ApO1xuICAgIH1cblxuICAgIGlmIChjb2xvcikge1xuICAgICAgaWYgKGNvbG9yLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgICAgICBjbGFzc2VzLnB1c2goYCR7c2lkZS5wcmVmaXh9LVske2NvbG9yfV1gKTtcbiAgICAgIH0gZWxzZSBpZiAoY29sb3Iuc3RhcnRzV2l0aCgncmdiJykpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKGAke3NpZGUucHJlZml4fS1bJHtjb2xvcn1dYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGFzc2VzLnB1c2goYCR7c2lkZS5wcmVmaXh9LSR7Y29sb3J9YCk7XG4gICAgICB9XG4gICAgICBjc3NQcm9wZXJ0aWVzLnB1c2goc2lkZS5jb2xvclByb3ApO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzZXMsIHdhcm5pbmdzLCBjc3NQcm9wZXJ0aWVzIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRBc3BlY3RSYXRpbyh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgcmF0aW9NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnMS8xJzogJ2FzcGVjdC1zcXVhcmUnLFxuICAgICAgJzE2LzknOiAnYXNwZWN0LXZpZGVvJyxcbiAgICAgICc0LzMnOiAnYXNwZWN0LVs0LzNdJyxcbiAgICAgICczLzQnOiAnYXNwZWN0LVszLzRdJyxcbiAgICAgICcyLzMnOiAnYXNwZWN0LVsyLzNdJyxcbiAgICAgICczLzInOiAnYXNwZWN0LVszLzJdJyxcbiAgICAgICcxLzInOiAnYXNwZWN0LVsxLzJdJyxcbiAgICAgICcyLzEnOiAnYXNwZWN0LVsyLzFdJyxcbiAgICAgICdhdXRvJzogJ2FzcGVjdC1hdXRvJ1xuICAgIH07XG5cbiAgICBpZiAocmF0aW9NYXBbdmFsdWVdKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IHJhdGlvTWFwW3ZhbHVlXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoL15cXGQrKFxcLlxcZCspPyQvLnRlc3QodmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IGBhc3BlY3QtWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgaWYgKC9eXFxkK1xcL1xcZCskLy50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgYXNwZWN0LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biBhc3BlY3QtcmF0aW86ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0T3ZlcmZsb3cocHJvcDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgcHJlZml4TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ292ZXJmbG93JzogJ292ZXJmbG93JyxcbiAgICAgICdvdmVyZmxvdy14JzogJ292ZXJmbG93LXgnLFxuICAgICAgJ292ZXJmbG93LXknOiAnb3ZlcmZsb3cteSdcbiAgICB9O1xuXG4gICAgY29uc3QgcHJlZml4ID0gcHJlZml4TWFwW3Byb3BdO1xuXG4gICAgY29uc3QgdmFsdWVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnYXV0byc6IGAke3ByZWZpeH0tYXV0b2AsXG4gICAgICAnaGlkZGVuJzogYCR7cHJlZml4fS1oaWRkZW5gLFxuICAgICAgJ3Zpc2libGUnOiBgJHtwcmVmaXh9LXZpc2libGVgLFxuICAgICAgJ3Njcm9sbCc6IGAke3ByZWZpeH0tc2Nyb2xsYCxcbiAgICAgICdjbGlwJzogYCR7cHJlZml4fS1jbGlwYFxuICAgIH07XG5cbiAgICBpZiAodmFsdWVNYXBbdmFsdWVdKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IHZhbHVlTWFwW3ZhbHVlXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYFVua25vd24gb3ZlcmZsb3cgdmFsdWU6ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0T2JqZWN0Rml0KHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBmaXRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnY29udGFpbic6ICdvYmplY3QtY29udGFpbicsXG4gICAgICAnY292ZXInOiAnb2JqZWN0LWNvdmVyJyxcbiAgICAgICdmaWxsJzogJ29iamVjdC1maWxsJyxcbiAgICAgICdub25lJzogJ29iamVjdC1ub25lJyxcbiAgICAgICdzY2FsZS1kb3duJzogJ29iamVjdC1zY2FsZS1kb3duJ1xuICAgIH07XG5cbiAgICBpZiAoZml0TWFwW3ZhbHVlXSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBmaXRNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biBvYmplY3QtZml0OiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydE9iamVjdFBvc2l0aW9uKHZhbHVlOiBzdHJpbmcpOiBDb252ZXJzaW9uUmVzdWx0IHtcbiAgICBjb25zdCBwb3NpdGlvbk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgICdjZW50ZXInOiAnb2JqZWN0LWNlbnRlcicsXG4gICAgICAndG9wJzogJ29iamVjdC10b3AnLFxuICAgICAgJ2JvdHRvbSc6ICdvYmplY3QtYm90dG9tJyxcbiAgICAgICdsZWZ0JzogJ29iamVjdC1sZWZ0JyxcbiAgICAgICdyaWdodCc6ICdvYmplY3QtcmlnaHQnLFxuICAgICAgJ2NlbnRlciBjZW50ZXInOiAnb2JqZWN0LWNlbnRlcicsXG4gICAgICAnY2VudGVyIHRvcCc6ICdvYmplY3QtdG9wJyxcbiAgICAgICdjZW50ZXIgYm90dG9tJzogJ29iamVjdC1ib3R0b20nLFxuICAgICAgJ2xlZnQgY2VudGVyJzogJ29iamVjdC1sZWZ0JyxcbiAgICAgICdyaWdodCBjZW50ZXInOiAnb2JqZWN0LXJpZ2h0JyxcbiAgICAgICdsZWZ0IHRvcCc6ICdvYmplY3QtbGVmdC10b3AnLFxuICAgICAgJ3JpZ2h0IHRvcCc6ICdvYmplY3QtcmlnaHQtdG9wJyxcbiAgICAgICdsZWZ0IGJvdHRvbSc6ICdvYmplY3QtbGVmdC1ib3R0b20nLFxuICAgICAgJ3JpZ2h0IGJvdHRvbSc6ICdvYmplY3QtcmlnaHQtYm90dG9tJ1xuICAgIH07XG5cbiAgICBpZiAocG9zaXRpb25NYXBbdmFsdWVdKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IHBvc2l0aW9uTWFwW3ZhbHVlXSwgc2tpcHBlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBpZiAoL15cXGQrKFxcLlxcZCspPyglfHB4fHJlbXxlbSk/KFxccytcXGQrKFxcLlxcZCspPyglfHB4fHJlbXxlbSk/KT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgb2JqZWN0LVske3ZhbHVlfV1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biBvYmplY3QtcG9zaXRpb246ICR7dmFsdWV9YCB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0T3BhY2l0eSh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICBpZiAoaXNOYU4obnVtVmFsdWUpKSB7XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYEludmFsaWQgb3BhY2l0eSB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgY29uc3QgcGVyY2VudFZhbHVlID0gTWF0aC5yb3VuZChudW1WYWx1ZSAqIDEwMCk7XG5cbiAgICBpZiAodGhpcy5vcGFjaXR5U2NhbGUuaGFzKHBlcmNlbnRWYWx1ZSkpIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYG9wYWNpdHktJHt0aGlzLm9wYWNpdHlTY2FsZS5nZXQocGVyY2VudFZhbHVlKX1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogYG9wYWNpdHktWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRXb3JkQnJlYWsodmFsdWU6IHN0cmluZyk6IENvbnZlcnNpb25SZXN1bHQge1xuICAgIGNvbnN0IGJyZWFrTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgJ25vcm1hbCc6ICdicmVhay1ub3JtYWwnLFxuICAgICAgJ2JyZWFrLWFsbCc6ICdicmVhay1hbGwnLFxuICAgICAgJ2JyZWFrLXdvcmQnOiAnYnJlYWstd29yZHMnLFxuICAgICAgJ2tlZXAtYWxsJzogJ2JyZWFrLWtlZXAnXG4gICAgfTtcblxuICAgIGlmIChicmVha01hcFt2YWx1ZV0pIHtcbiAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogYnJlYWtNYXBbdmFsdWVdLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogbnVsbCwgc2tpcHBlZDogdHJ1ZSwgcmVhc29uOiBgVW5rbm93biB3b3JkLWJyZWFrOiAke3ZhbHVlfWAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydFpJbmRleCh2YWx1ZTogc3RyaW5nKTogQ29udmVyc2lvblJlc3VsdCB7XG4gICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUludCh2YWx1ZSwgMTApO1xuICAgIGlmIChpc05hTihudW1WYWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHJldHVybiB7IGNsYXNzTmFtZTogJ3otYXV0bycsIHNraXBwZWQ6IGZhbHNlIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyBjbGFzc05hbWU6IG51bGwsIHNraXBwZWQ6IHRydWUsIHJlYXNvbjogYEludmFsaWQgei1pbmRleCB2YWx1ZTogJHt2YWx1ZX1gIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuekluZGV4U2NhbGUuaGFzKG51bVZhbHVlKSkge1xuICAgICAgcmV0dXJuIHsgY2xhc3NOYW1lOiBgei0ke3RoaXMuekluZGV4U2NhbGUuZ2V0KG51bVZhbHVlKX1gLCBza2lwcGVkOiBmYWxzZSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IGNsYXNzTmFtZTogYHotWyR7dmFsdWV9XWAsIHNraXBwZWQ6IGZhbHNlIH07XG4gIH1cblxuICBjb252ZXJ0TXVsdGlwbGUocHJvcGVydGllczogQ1NTUHJvcGVydHlbXSk6IHsgY2xhc3Nlczogc3RyaW5nW107IHdhcm5pbmdzOiBzdHJpbmdbXSB9IHtcbiAgICBjb25zdCBjbGFzc2VzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcHJvcGVydGllcy5mb3JFYWNoKCh7IHByb3BlcnR5LCB2YWx1ZSB9KSA9PiB7XG4gICAgICBjb25zdCBtdWx0aVJlc3VsdCA9IHRoaXMuY29udmVydFByb3BlcnR5V2l0aE11bHRpcGxlKHByb3BlcnR5LCB2YWx1ZSk7XG4gICAgICBcbiAgICAgIGNsYXNzZXMucHVzaCguLi5tdWx0aVJlc3VsdC5jbGFzc2VzKTtcbiAgICAgIHdhcm5pbmdzLnB1c2goLi4ubXVsdGlSZXN1bHQud2FybmluZ3MpO1xuXG4gICAgICBpZiAobXVsdGlSZXN1bHQuY2xhc3Nlcy5sZW5ndGggPT09IDAgJiYgbXVsdGlSZXN1bHQud2FybmluZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29udmVydFByb3BlcnR5KHByb3BlcnR5LCB2YWx1ZSk7XG4gICAgICAgIFxuICAgICAgICBpZiAocmVzdWx0LnNraXBwZWQpIHtcbiAgICAgICAgICB3YXJuaW5ncy5wdXNoKHJlc3VsdC5yZWFzb24gfHwgYFNraXBwZWQ6ICR7cHJvcGVydHl9OiAke3ZhbHVlfWApO1xuICAgICAgICAgIGxvZ2dlci52ZXJib3NlKGBTa2lwcGVkOiAke3Byb3BlcnR5fTogJHt2YWx1ZX0gLSAke3Jlc3VsdC5yZWFzb259YCk7XG4gICAgICAgIH0gZWxzZSBpZiAocmVzdWx0LmNsYXNzTmFtZSkge1xuICAgICAgICAgIGNsYXNzZXMucHVzaChyZXN1bHQuY2xhc3NOYW1lKTtcbiAgICAgICAgICBsb2dnZXIudmVyYm9zZShgQ29udmVydGVkOiAke3Byb3BlcnR5fTogJHt2YWx1ZX0g4oaSICR7cmVzdWx0LmNsYXNzTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG11bHRpUmVzdWx0LmNsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGxvZ2dlci52ZXJib3NlKGBDb252ZXJ0ZWQ6ICR7cHJvcGVydHl9OiAke3ZhbHVlfSDihpIgJHttdWx0aVJlc3VsdC5jbGFzc2VzLmpvaW4oJywgJyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgbXVsdGlSZXN1bHQud2FybmluZ3MuZm9yRWFjaCh3ID0+IGxvZ2dlci52ZXJib3NlKGBXYXJuaW5nOiAke3d9YCkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHsgY2xhc3Nlcywgd2FybmluZ3MgfTtcbiAgfVxufVxuIl19
|
|
@@ -12,6 +12,7 @@ exports.propertiesConflict = propertiesConflict;
|
|
|
12
12
|
const PROPERTY_PREFIX_MAP = {
|
|
13
13
|
'color': ['text-'],
|
|
14
14
|
'background-color': ['bg-'],
|
|
15
|
+
'background': ['bg-'],
|
|
15
16
|
'font-size': ['text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl', 'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', 'text-6xl', 'text-7xl', 'text-8xl', 'text-9xl', 'text-'],
|
|
16
17
|
'font-weight': ['font-thin', 'font-extralight', 'font-light', 'font-normal', 'font-medium', 'font-semibold', 'font-bold', 'font-extrabold', 'font-black'],
|
|
17
18
|
'display': ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'grid', 'inline-grid', 'hidden', 'contents', 'table', 'table-cell', 'table-row', 'flow-root'],
|
|
@@ -329,7 +330,7 @@ exports.PROPERTY_CONFLICT_GROUPS = {
|
|
|
329
330
|
'font-size': ['font-size'],
|
|
330
331
|
'font-weight': ['font-weight'],
|
|
331
332
|
'color': ['color'],
|
|
332
|
-
'background-color': ['background-color'],
|
|
333
|
+
'background-color': ['background-color', 'background'],
|
|
333
334
|
'border-radius': ['border-radius'],
|
|
334
335
|
'border-width': ['border-width', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'],
|
|
335
336
|
'border-color': ['border-color', 'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color'],
|
|
@@ -401,4 +402,4 @@ function propertiesConflict(prop1, prop2) {
|
|
|
401
402
|
}
|
|
402
403
|
return prop1 === prop2;
|
|
403
404
|
}
|
|
404
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd09BLHNEQTRDQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsa0RBR0M7QUFFRCx3REFHQztBQUVELDhEQWNDO0FBd0NELDRDQU9DO0FBRUQsZ0RBdURDO0FBcGJELE1BQU0sbUJBQW1CLEdBQTZCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMzQixXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDO0lBQy9LLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQztJQUN6SixTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDbkssVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNqRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDZixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDaEIsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFD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ZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgJ2NvbG9yJzogWyd0ZXh0LSddLFxuICAnYmFja2dyb3VuZC1jb2xvcic6IFsnYmctJ10sXG4gICdmb250LXNpemUnOiBbJ3RleHQteHMnLCAndGV4dC1zbScsICd0ZXh0LWJhc2UnLCAndGV4dC1sZycsICd0ZXh0LXhsJywgJ3RleHQtMnhsJywgJ3RleHQtM3hsJywgJ3RleHQtNHhsJywgJ3RleHQtNXhsJywgJ3RleHQtNnhsJywgJ3RleHQtN3hsJywgJ3RleHQtOHhsJywgJ3RleHQtOXhsJywgJ3RleHQtJ10sXG4gICdmb250LXdlaWdodCc6IFsnZm9udC10aGluJywgJ2ZvbnQtZXh0cmFsaWdodCcsICdmb250LWxpZ2h0JywgJ2ZvbnQtbm9ybWFsJywgJ2ZvbnQtbWVkaXVtJywgJ2ZvbnQtc2VtaWJvbGQnLCAnZm9udC1ib2xkJywgJ2ZvbnQtZXh0cmFib2xkJywgJ2ZvbnQtYmxhY2snXSxcbiAgJ2Rpc3BsYXknOiBbJ2Jsb2NrJywgJ2lubGluZS1ibG9jaycsICdpbmxpbmUnLCAnZmxleCcsICdpbmxpbmUtZmxleCcsICdncmlkJywgJ2lubGluZS1ncmlkJywgJ2hpZGRlbicsICdjb250ZW50cycsICd0YWJsZScsICd0YWJsZS1jZWxsJywgJ3RhYmxlLXJvdycsICdmbG93LXJvb3QnXSxcbiAgJ3Bvc2l0aW9uJzogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICd3aWR0aCc6IFsndy0nXSxcbiAgJ2hlaWdodCc6IFsnaC0nXSxcbiAgJ21pbi13aWR0aCc6IFsnbWluLXctJ10sXG4gICdtYXgtd2lkdGgnOiBbJ21heC13LSddLFxuICAnbWluLWhlaWdodCc6IFsnbWluLWgtJ10sXG4gICdtYXgtaGVpZ2h0JzogWydtYXgtaC0nXSxcbiAgJ21hcmdpbic6IFsnbS0nXSxcbiAgJ21hcmdpbi10b3AnOiBbJ210LSddLFxuICAnbWFyZ2luLXJpZ2h0JzogWydtci0nXSxcbiAgJ21hcmdpbi1ib3R0b20nOiBbJ21iLSddLFxuICAnbWFyZ2luLWxlZnQnOiBbJ21sLSddLFxuICAnbWFyZ2luLXgnOiBbJ214LSddLFxuICAnbWFyZ2luLXknOiBbJ215LSddLFxuICAncGFkZGluZyc6IFsncC0nXSxcbiAgJ3BhZGRpbmctdG9wJzogWydwdC0nXSxcbiAgJ3BhZGRpbmctcmlnaHQnOiBbJ3ByLSddLFxuICAncGFkZGluZy1ib3R0b20nOiBbJ3BiLSddLFxuICAncGFkZGluZy1sZWZ0JzogWydwbC0nXSxcbiAgJ3BhZGRpbmcteCc6IFsncHgtJ10sXG4gICdwYWRkaW5nLXknOiBbJ3B5LSddLFxuICAnZ2FwJzogWydnYXAtJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydyb3VuZGVkLScsICdyb3VuZGVkJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci0nLCAnYm9yZGVyLXQtJywgJ2JvcmRlci1yLScsICdib3JkZXItYi0nLCAnYm9yZGVyLWwtJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci0nXSxcbiAgJ2JvcmRlci1zdHlsZSc6IFsnYm9yZGVyLXNvbGlkJywgJ2JvcmRlci1kYXNoZWQnLCAnYm9yZGVyLWRvdHRlZCcsICdib3JkZXItZG91YmxlJywgJ2JvcmRlci1oaWRkZW4nLCAnYm9yZGVyLW5vbmUnXSxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogWydmbGV4LXJvdycsICdmbGV4LWNvbCcsICdmbGV4LXJvdy1yZXZlcnNlJywgJ2ZsZXgtY29sLXJldmVyc2UnXSxcbiAgJ2ZsZXgtd3JhcCc6IFsnZmxleC13cmFwJywgJ2ZsZXgtbm93cmFwJywgJ2ZsZXgtd3JhcC1yZXZlcnNlJ10sXG4gICdqdXN0aWZ5LWNvbnRlbnQnOiBbJ2p1c3RpZnktJ10sXG4gICdhbGlnbi1pdGVtcyc6IFsnaXRlbXMtJ10sXG4gICdhbGlnbi1jb250ZW50JzogWydjb250ZW50LSddLFxuICAnYWxpZ24tc2VsZic6IFsnc2VsZi0nXSxcbiAgJ3RleHQtYWxpZ24nOiBbJ3RleHQtbGVmdCcsICd0ZXh0LWNlbnRlcicsICd0ZXh0LXJpZ2h0JywgJ3RleHQtanVzdGlmeScsICd0ZXh0LXN0YXJ0JywgJ3RleHQtZW5kJ10sXG4gICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICdsZXR0ZXItc3BhY2luZyc6IFsndHJhY2tpbmctJ10sXG4gICdsaW5lLWhlaWdodCc6IFsnbGVhZGluZy0nXSxcbiAgJ292ZXJmbG93JzogWydvdmVyZmxvdy0nXSxcbiAgJ292ZXJmbG93LXgnOiBbJ292ZXJmbG93LXgtJ10sXG4gICdvdmVyZmxvdy15JzogWydvdmVyZmxvdy15LSddLFxuICAnei1pbmRleCc6IFsnei0nXSxcbiAgJ29wYWNpdHknOiBbJ29wYWNpdHktJ10sXG4gICdjdXJzb3InOiBbJ2N1cnNvci0nXSxcbiAgJ3BvaW50ZXItZXZlbnRzJzogWydwb2ludGVyLWV2ZW50cy0nXSxcbiAgJ3VzZXItc2VsZWN0JzogWydzZWxlY3QtJ10sXG4gICdib3gtc2hhZG93JzogWydzaGFkb3ctJ10sXG4gICd0cmFuc2l0aW9uJzogWyd0cmFuc2l0aW9uLSddLFxuICAndHJhbnNmb3JtJzogWydzY2FsZS0nLCAncm90YXRlLScsICd0cmFuc2xhdGUtJywgJ3NrZXctJ10sXG4gICd0b3AnOiBbJ3RvcC0nXSxcbiAgJ3JpZ2h0JzogWydyaWdodC0nXSxcbiAgJ2JvdHRvbSc6IFsnYm90dG9tLSddLFxuICAnbGVmdCc6IFsnbGVmdC0nXSxcbiAgJ2luc2V0JzogWydpbnNldC0nXSxcbiAgJ2FzcGVjdC1yYXRpbyc6IFsnYXNwZWN0LSddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWNvbnRhaW4nLCAnb2JqZWN0LWNvdmVyJywgJ29iamVjdC1maWxsJywgJ29iamVjdC1ub25lJywgJ29iamVjdC1zY2FsZS1kb3duJ10sXG4gICdvYmplY3QtcG9zaXRpb24nOiBbJ29iamVjdC0nXSxcbiAgJ2ZsZXgnOiBbJ2ZsZXgtMScsICdmbGV4LWF1dG8nLCAnZmxleC1pbml0aWFsJywgJ2ZsZXgtbm9uZSddLFxuICAnZmxleC1ncm93JzogWydncm93LScsICdncm93J10sXG4gICdmbGV4LXNocmluayc6IFsnc2hyaW5rLScsICdzaHJpbmsnXSxcbiAgJ2ZsZXgtYmFzaXMnOiBbJ2Jhc2lzLSddLFxuICAnd29yZC1icmVhayc6IFsnYnJlYWstbm9ybWFsJywgJ2JyZWFrLWFsbCcsICdicmVhay13b3JkcycsICdicmVhay1rZWVwJ11cbn07XG5cbmNvbnN0IFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUtYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUnOiAnZGlzcGxheScsXG4gICdmbGV4JzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWZsZXgnOiAnZGlzcGxheScsXG4gICdncmlkJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWdyaWQnOiAnZGlzcGxheScsXG4gICdoaWRkZW4nOiAnZGlzcGxheScsXG4gICdjb250ZW50cyc6ICdkaXNwbGF5JyxcbiAgJ2Zsb3ctcm9vdCc6ICdkaXNwbGF5JyxcbiAgJ3N0YXRpYyc6ICdwb3NpdGlvbicsXG4gICdmaXhlZCc6ICdwb3NpdGlvbicsXG4gICdhYnNvbHV0ZSc6ICdwb3NpdGlvbicsXG4gICdyZWxhdGl2ZSc6ICdwb3NpdGlvbicsXG4gICdzdGlja3knOiAncG9zaXRpb24nLFxuICAnZmxleC1yb3cnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1yb3ctcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWNvbC1yZXZlcnNlJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC1ub3dyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtd3JhcC1yZXZlcnNlJzogJ2ZsZXgtd3JhcCcsXG4gICdmbGV4LTEnOiAnZmxleCcsXG4gICdmbGV4LWF1dG8nOiAnZmxleCcsXG4gICdmbGV4LWluaXRpYWwnOiAnZmxleCcsXG4gICdmbGV4LW5vbmUnOiAnZmxleCcsXG4gICdncm93JzogJ2ZsZXgtZ3JvdycsXG4gICdncm93LTAnOiAnZmxleC1ncm93JyxcbiAgJ3Nocmluayc6ICdmbGV4LXNocmluaycsXG4gICdzaHJpbmstMCc6ICdmbGV4LXNocmluaycsXG4gICd0ZXh0LWxlZnQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWNlbnRlcic6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtcmlnaHQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWp1c3RpZnknOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXN0YXJ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1lbmQnOiAndGV4dC1hbGlnbicsXG4gICdmb250LXRoaW4nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbGlnaHQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ub3JtYWwnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1tZWRpdW0nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1zZW1pYm9sZCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ibGFjayc6ICdmb250LXdlaWdodCcsXG4gICdyb3VuZGVkJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1ub25lJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1zbSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbWQnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWxnJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC14bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtMnhsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC0zeGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWZ1bGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICd1bmRlcmxpbmUnOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ2xpbmUtdGhyb3VnaCc6ICd0ZXh0LWRlY29yYXRpb24nLFxuICAnbm8tdW5kZXJsaW5lJzogJ3RleHQtZGVjb3JhdGlvbicsXG4gICd1cHBlcmNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbG93ZXJjYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2NhcGl0YWxpemUnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbm9ybWFsLWNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnYm9yZGVyLXNvbGlkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZGFzaGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG90dGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG91YmxlJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItaGlkZGVuJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItbm9uZSc6ICdib3JkZXItc3R5bGUnLFxuICAnb2JqZWN0LWNvbnRhaW4nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY292ZXInOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtZmlsbCc6ICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1ub25lJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LXNjYWxlLWRvd24nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY2VudGVyJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtYm90dG9tJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0JzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1sZWZ0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnYnJlYWstbm9ybWFsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstYWxsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstd29yZHMnOiAnd29yZC1icmVhaycsXG4gICdicmVhay1rZWVwJzogJ3dvcmQtYnJlYWsnLFxuICAnYXNwZWN0LXNxdWFyZSc6ICdhc3BlY3QtcmF0aW8nLFxuICAnYXNwZWN0LXZpZGVvJzogJ2FzcGVjdC1yYXRpbycsXG4gICdhc3BlY3QtYXV0byc6ICdhc3BlY3QtcmF0aW8nXG59O1xuXG5jb25zdCBQUkVGSVhfUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAndGV4dC0nOiAnY29sb3InLFxuICAnYmctJzogJ2JhY2tncm91bmQtY29sb3InLFxuICAndy0nOiAnd2lkdGgnLFxuICAnaC0nOiAnaGVpZ2h0JyxcbiAgJ21pbi13LSc6ICdtaW4td2lkdGgnLFxuICAnbWF4LXctJzogJ21heC13aWR0aCcsXG4gICdtaW4taC0nOiAnbWluLWhlaWdodCcsXG4gICdtYXgtaC0nOiAnbWF4LWhlaWdodCcsXG4gICdtLSc6ICdtYXJnaW4nLFxuICAnbXQtJzogJ21hcmdpbi10b3AnLFxuICAnbXItJzogJ21hcmdpbi1yaWdodCcsXG4gICdtYi0nOiAnbWFyZ2luLWJvdHRvbScsXG4gICdtbC0nOiAnbWFyZ2luLWxlZnQnLFxuICAnbXgtJzogJ21hcmdpbi14JyxcbiAgJ215LSc6ICdtYXJnaW4teScsXG4gICdwLSc6ICdwYWRkaW5nJyxcbiAgJ3B0LSc6ICdwYWRkaW5nLXRvcCcsXG4gICdwci0nOiAncGFkZGluZy1yaWdodCcsXG4gICdwYi0nOiAncGFkZGluZy1ib3R0b20nLFxuICAncGwtJzogJ3BhZGRpbmctbGVmdCcsXG4gICdweC0nOiAncGFkZGluZy14JyxcbiAgJ3B5LSc6ICdwYWRkaW5nLXknLFxuICAnZ2FwLSc6ICdnYXAnLFxuICAncm91bmRlZC0nOiAnYm9yZGVyLXJhZGl1cycsXG4gICdqdXN0aWZ5LSc6ICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAnaXRlbXMtJzogJ2FsaWduLWl0ZW1zJyxcbiAgJ2NvbnRlbnQtJzogJ2FsaWduLWNvbnRlbnQnLFxuICAnc2VsZi0nOiAnYWxpZ24tc2VsZicsXG4gICdvdmVyZmxvdy0nOiAnb3ZlcmZsb3cnLFxuICAnb3ZlcmZsb3cteC0nOiAnb3ZlcmZsb3cteCcsXG4gICdvdmVyZmxvdy15LSc6ICdvdmVyZmxvdy15JyxcbiAgJ3otJzogJ3otaW5kZXgnLFxuICAnb3BhY2l0eS0nOiAnb3BhY2l0eScsXG4gICdjdXJzb3ItJzogJ2N1cnNvcicsXG4gICdzaGFkb3ctJzogJ2JveC1zaGFkb3cnLFxuICAnYm9yZGVyLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLXQtJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItci0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1iLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLWwtJzogJ2JvcmRlci13aWR0aCcsXG4gICd0b3AtJzogJ3RvcCcsXG4gICdyaWdodC0nOiAncmlnaHQnLFxuICAnYm90dG9tLSc6ICdib3R0b20nLFxuICAnbGVmdC0nOiAnbGVmdCcsXG4gICdpbnNldC0nOiAnaW5zZXQnLFxuICAndHJhY2tpbmctJzogJ2xldHRlci1zcGFjaW5nJyxcbiAgJ2xlYWRpbmctJzogJ2xpbmUtaGVpZ2h0JyxcbiAgJ2FzcGVjdC0nOiAnYXNwZWN0LXJhdGlvJyxcbiAgJ29iamVjdC0nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ2Jhc2lzLSc6ICdmbGV4LWJhc2lzJyxcbiAgJ2dyb3ctJzogJ2ZsZXgtZ3JvdycsXG4gICdzaHJpbmstJzogJ2ZsZXgtc2hyaW5rJ1xufTtcblxuY29uc3QgRk9OVF9TSVpFX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAndGV4dC14cycsICd0ZXh0LXNtJywgJ3RleHQtYmFzZScsICd0ZXh0LWxnJywgJ3RleHQteGwnLFxuICAndGV4dC0yeGwnLCAndGV4dC0zeGwnLCAndGV4dC00eGwnLCAndGV4dC01eGwnLCAndGV4dC02eGwnLFxuICAndGV4dC03eGwnLCAndGV4dC04eGwnLCAndGV4dC05eGwnXG5dKTtcblxuY29uc3QgTElORV9IRUlHSFRfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICdsZWFkaW5nLW5vbmUnLCAnbGVhZGluZy10aWdodCcsICdsZWFkaW5nLXNudWcnLCAnbGVhZGluZy1ub3JtYWwnLFxuICAnbGVhZGluZy1yZWxheGVkJywgJ2xlYWRpbmctbG9vc2UnLCAnbGVhZGluZy0zJywgJ2xlYWRpbmctNCcsICdsZWFkaW5nLTUnLFxuICAnbGVhZGluZy02JywgJ2xlYWRpbmctNycsICdsZWFkaW5nLTgnLCAnbGVhZGluZy05JywgJ2xlYWRpbmctMTAnXG5dKTtcblxuY29uc3QgTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICd0cmFja2luZy10aWdodGVyJywgJ3RyYWNraW5nLXRpZ2h0JywgJ3RyYWNraW5nLW5vcm1hbCcsXG4gICd0cmFja2luZy13aWRlJywgJ3RyYWNraW5nLXdpZGVyJywgJ3RyYWNraW5nLXdpZGVzdCdcbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlGb3JVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmlwcGVkVXRpbGl0eSA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIFxuICBpZiAoVVRJTElUWV9UT19QUk9QRVJUWV9NQVBbc3RyaXBwZWRVdGlsaXR5XSkge1xuICAgIHJldHVybiBVVElMSVRZX1RPX1BST1BFUlRZX01BUFtzdHJpcHBlZFV0aWxpdHldO1xuICB9XG4gIFxuICBpZiAoRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgfVxuXG4gIGlmIChMSU5FX0hFSUdIVF9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xpbmUtaGVpZ2h0JztcbiAgfVxuXG4gIGlmIChMRVRURVJfU1BBQ0lOR19VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xldHRlci1zcGFjaW5nJztcbiAgfVxuICBcbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0ZXh0LScpICYmICFGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZFV0aWxpdHkuc2xpY2UoNSk7XG4gICAgaWYgKC9eXFxkLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgICB9XG4gICAgcmV0dXJuICdjb2xvcic7XG4gIH1cblxuICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgoJ2xlYWRpbmctJykgJiYgIUxJTkVfSEVJR0hUX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnbGluZS1oZWlnaHQnO1xuICB9XG5cbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0cmFja2luZy0nKSAmJiAhTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsZXR0ZXItc3BhY2luZyc7XG4gIH1cbiAgXG4gIGNvbnN0IHNvcnRlZFByZWZpeGVzID0gT2JqZWN0LmtleXMoUFJFRklYX1BST1BFUlRZX01BUCkuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG4gIFxuICBmb3IgKGNvbnN0IHByZWZpeCBvZiBzb3J0ZWRQcmVmaXhlcykge1xuICAgIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gUFJFRklYX1BST1BFUlRZX01BUFtwcmVmaXhdO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gc3RyaXBWYXJpYW50cyh1dGlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IHV0aWxpdHkuc3BsaXQoJzonKTtcbiAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0Rm9udFNpemVVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIHJldHVybiBGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgKFxuICAgIHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RleHQtJykgJiYgL15cXGQvLnRlc3Qoc3RyaXBwZWQuc2xpY2UoNSkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRDb2xvclV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgXG4gIGlmIChGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZC5zdGFydHNXaXRoKCd0ZXh0LScpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZC5zbGljZSg1KTtcbiAgICBpZiAoL15cXGQvLnRlc3QodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lSGVpZ2h0VXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICByZXR1cm4gTElORV9IRUlHSFRfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgc3RyaXBwZWQuc3RhcnRzV2l0aCgnbGVhZGluZy0nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGV0dGVyU3BhY2luZ1V0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIExFVFRFUl9TUEFDSU5HX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RyYWNraW5nLScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydGllc0ZvclV0aWxpdGllcyh1dGlsaXRpZXM6IHN0cmluZ1tdKTogTWFwPHN0cmluZywgc3RyaW5nW10+IHtcbiAgY29uc3QgcHJvcGVydHlNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XG4gIFxuICBmb3IgKGNvbnN0IHV0aWxpdHkgb2YgdXRpbGl0aWVzKSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBnZXRQcm9wZXJ0eUZvclV0aWxpdHkodXRpbGl0eSk7XG4gICAgXG4gICAgaWYgKCFwcm9wZXJ0eU1hcC5oYXMocHJvcGVydHkpKSB7XG4gICAgICBwcm9wZXJ0eU1hcC5zZXQocHJvcGVydHksIFtdKTtcbiAgICB9XG4gICAgXG4gICAgcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5KSEucHVzaCh1dGlsaXR5KTtcbiAgfVxuICBcbiAgcmV0dXJuIHByb3BlcnR5TWFwO1xufVxuXG5leHBvcnQgY29uc3QgUFJPUEVSVFlfQ09ORkxJQ1RfR1JPVVBTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gICdkaXNwbGF5JzogWydkaXNwbGF5J10sXG4gICdwb3NpdGlvbic6IFsncG9zaXRpb24nXSxcbiAgJ3dpZHRoJzogWyd3aWR0aCcsICdtaW4td2lkdGgnLCAnbWF4LXdpZHRoJ10sXG4gICdoZWlnaHQnOiBbJ2hlaWdodCcsICdtaW4taGVpZ2h0JywgJ21heC1oZWlnaHQnXSxcbiAgJ21hcmdpbic6IFsnbWFyZ2luJywgJ21hcmdpbi10b3AnLCAnbWFyZ2luLXJpZ2h0JywgJ21hcmdpbi1ib3R0b20nLCAnbWFyZ2luLWxlZnQnLCAnbWFyZ2luLXgnLCAnbWFyZ2luLXknXSxcbiAgJ3BhZGRpbmcnOiBbJ3BhZGRpbmcnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1yaWdodCcsICdwYWRkaW5nLWJvdHRvbScsICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy14JywgJ3BhZGRpbmcteSddLFxuICAnZmxleC1kaXJlY3Rpb24nOiBbJ2ZsZXgtZGlyZWN0aW9uJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCddLFxuICAnZmxleCc6IFsnZmxleCcsICdmbGV4LWdyb3cnLCAnZmxleC1zaHJpbmsnLCAnZmxleC1iYXNpcyddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LWNvbnRlbnQnXSxcbiAgJ2FsaWduLWl0ZW1zJzogWydhbGlnbi1pdGVtcyddLFxuICAnYWxpZ24tY29udGVudCc6IFsnYWxpZ24tY29udGVudCddLFxuICAnYWxpZ24tc2VsZic6IFsnYWxpZ24tc2VsZiddLFxuICAndGV4dC1hbGlnbic6IFsndGV4dC1hbGlnbiddLFxuICAnZm9udC1zaXplJzogWydmb250LXNpemUnXSxcbiAgJ2ZvbnQtd2VpZ2h0JzogWydmb250LXdlaWdodCddLFxuICAnY29sb3InOiBbJ2NvbG9yJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiYWNrZ3JvdW5kLWNvbG9yJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydib3JkZXItcmFkaXVzJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci13aWR0aCcsICdib3JkZXItdG9wLXdpZHRoJywgJ2JvcmRlci1yaWdodC13aWR0aCcsICdib3JkZXItYm90dG9tLXdpZHRoJywgJ2JvcmRlci1sZWZ0LXdpZHRoJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvcicsICdib3JkZXItdG9wLWNvbG9yJywgJ2JvcmRlci1yaWdodC1jb2xvcicsICdib3JkZXItYm90dG9tLWNvbG9yJywgJ2JvcmRlci1sZWZ0LWNvbG9yJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zdHlsZSddLFxuICAnb3ZlcmZsb3cnOiBbJ292ZXJmbG93JywgJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAnei1pbmRleCc6IFsnei1pbmRleCddLFxuICAnb3BhY2l0eSc6IFsnb3BhY2l0eSddLFxuICAnZ2FwJzogWydnYXAnXSxcbiAgJ2luc2V0JzogWydpbnNldCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgJ3RleHQtZGVjb3JhdGlvbic6IFsndGV4dC1kZWNvcmF0aW9uJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndGV4dC10cmFuc2Zvcm0nXSxcbiAgJ2xldHRlci1zcGFjaW5nJzogWydsZXR0ZXItc3BhY2luZyddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xpbmUtaGVpZ2h0J10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC1yYXRpbyddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWZpdCddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtcG9zaXRpb24nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ3dvcmQtYnJlYWsnXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZsaWN0R3JvdXAocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIHByb3BlcnRpZXNdIG9mIE9iamVjdC5lbnRyaWVzKFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUykpIHtcbiAgICBpZiAocHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBncm91cE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0NvbmZsaWN0KHByb3AxOiBzdHJpbmcsIHByb3AyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZ3JvdXAxID0gZ2V0Q29uZmxpY3RHcm91cChwcm9wMSk7XG4gIGNvbnN0IGdyb3VwMiA9IGdldENvbmZsaWN0R3JvdXAocHJvcDIpO1xuICBcbiAgaWYgKGdyb3VwMSAmJiBncm91cDIgJiYgZ3JvdXAxID09PSBncm91cDIpIHtcbiAgICBpZiAocHJvcDEgPT09IHByb3AyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZ3JvdXAgPSBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFNbZ3JvdXAxXTtcbiAgICBcbiAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGdyb3VwMSA9PT0gJ21hcmdpbicgfHwgZ3JvdXAxID09PSAncGFkZGluZycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gZ3JvdXAxIHx8IHByb3AyID09PSBncm91cDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdpbnNldCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2luc2V0JyB8fCBwcm9wMiA9PT0gJ2luc2V0Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgaWYgKHByb3AxID09PSAnYm9yZGVyLXdpZHRoJyB8fCBwcm9wMiA9PT0gJ2JvcmRlci13aWR0aCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwMSA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2JvcmRlci1jb2xvcicgfHwgcHJvcDIgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChncm91cDEgPT09ICdvdmVyZmxvdycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ292ZXJmbG93JyB8fCBwcm9wMiA9PT0gJ292ZXJmbG93Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnZmxleCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2ZsZXgnIHx8IHByb3AyID09PSAnZmxleCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59XG4iXX0=
|
|
405
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeU9BLHNEQTRDQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsa0RBR0M7QUFFRCx3REFHQztBQUVELDhEQWNDO0FBd0NELDRDQU9DO0FBRUQsZ0RBdURDO0FBcmJELE1BQU0sbUJBQW1CLEdBQTZCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMzQixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckIsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztJQUMvSyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUM7SUFDekosU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ25LLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDakUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2YsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2hCLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN2QixXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDdkIsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ3hCLFlBQVksRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUN4QixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDaEIsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3JCLGNBQWMsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN2QixlQUFlLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEIsYUFBYSxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3RCLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNuQixVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDbkIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2pCLGFBQWEsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUN0QixlQUFlLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDeEIsZ0JBQWdCLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDekIsY0FBYyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3ZCLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUNwQixXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDcEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ2YsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQztJQUN4QyxjQUFjLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQy9FLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUMzQixjQUFjLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQztJQUNuSCxnQkFBZ0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLENBQUM7SUFDbEYsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQztJQUM5RCxpQkFBaUIsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUMvQixhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDekIsZUFBZSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQzdCLFlBQVksRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUN2QixZQUFZLEVBQUUsQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQztJQUNsRyxpQkFBaUIsRUFBRSxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDO0lBQ2hFLGdCQUFnQixFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDO0lBQ3pFLGdCQUFnQixFQUFFLENBQUMsV0FBVyxDQUFDO0lBQy9CLGFBQWEsRUFBRSxDQUFDLFVBQVUsQ0FBQztJQUMzQixVQUFVLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDekIsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzdCLFlBQVksRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUM3QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDakIsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ3ZCLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUNyQixnQkFBZ0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ3JDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUMxQixZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDekIsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzdCLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztJQUN6RCxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDZixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDbkIsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNqQixPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDbkIsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQzNCLFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixDQUFDO0lBQ25HLGlCQUFpQixFQUFFLENBQUMsU0FBUyxDQUFDO0lBQzlCLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVcsQ0FBQztJQUM1RCxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQzlCLGFBQWEsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7SUFDcEMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQ3hCLFlBQVksRUFBRSxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQztDQUN6RSxDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBMkI7SUFDdEQsT0FBTyxFQUFFLFNBQVM7SUFDbEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsTUFBTSxFQUFFLFNBQVM7SUFDakIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsTUFBTSxFQUFFLFNBQVM7SUFDakIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsVUFBVSxFQUFFLFNBQVM7SUFDckIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsT0FBTyxFQUFFLFVBQVU7SUFDbkIsVUFBVSxFQUFFLFVBQVU7SUFDdEIsVUFBVSxFQUFFLFVBQVU7SUFDdEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsVUFBVSxFQUFFLGdCQUFnQjtJQUM1QixVQUFVLEVBQUUsZ0JBQWdCO0lBQzVCLGtCQUFrQixFQUFFLGdCQUFnQjtJQUNwQyxrQkFBa0IsRUFBRSxnQkFBZ0I7SUFDcEMsV0FBVyxFQUFFLFdBQVc7SUFDeEIsYUFBYSxFQUFFLFdBQVc7SUFDMUIsbUJBQW1CLEVBQUUsV0FBVztJQUNoQyxRQUFRLEVBQUUsTUFBTTtJQUNoQixXQUFXLEVBQUUsTUFBTTtJQUNuQixjQUFjLEVBQUUsTUFBTTtJQUN0QixXQUFXLEVBQUUsTUFBTTtJQUNuQixNQUFNLEVBQUUsV0FBVztJQUNuQixRQUFRLEVBQUUsV0FBVztJQUNyQixRQUFRLEVBQUUsYUFBYTtJQUN2QixVQUFVLEVBQUUsYUFBYTtJQUN6QixXQUFXLEVBQUUsWUFBWTtJQUN6QixhQUFhLEVBQUUsWUFBWTtJQUMzQixZQUFZLEVBQUUsWUFBWTtJQUMxQixjQUFjLEVBQUUsWUFBWTtJQUM1QixZQUFZLEVBQUUsWUFBWTtJQUMxQixVQUFVLEVBQUUsWUFBWTtJQUN4QixXQUFXLEVBQUUsYUFBYTtJQUMxQixpQkFBaUIsRUFBRSxhQUFhO0lBQ2hDLFlBQVksRUFBRSxhQUFhO0lBQzNCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLGFBQWEsRUFBRSxhQUFhO0lBQzVCLGVBQWUsRUFBRSxhQUFhO0lBQzlCLFdBQVcsRUFBRSxhQUFhO0lBQzFCLGdCQUFnQixFQUFFLGFBQWE7SUFDL0IsWUFBWSxFQUFFLGFBQWE7SUFDM0IsU0FBUyxFQUFFLGVBQWU7SUFDMUIsY0FBYyxFQUFFLGVBQWU7SUFDL0IsWUFBWSxFQUFFLGVBQWU7SUFDN0IsWUFBWSxFQUFFLGVBQWU7SUFDN0IsWUFBWSxFQUFFLGVBQWU7SUFDN0IsWUFBWSxFQUFFLGVBQWU7SUFDN0IsYUFBYSxFQUFFLGVBQWU7SUFDOUIsYUFBYSxFQUFFLGVBQWU7SUFDOUIsY0FBYyxFQUFFLGVBQWU7SUFDL0IsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLGNBQWMsRUFBRSxpQkFBaUI7SUFDakMsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QixXQUFXLEVBQUUsZ0JBQWdCO0lBQzdCLFlBQVksRUFBRSxnQkFBZ0I7SUFDOUIsYUFBYSxFQUFFLGdCQUFnQjtJQUMvQixjQUFjLEVBQUUsY0FBYztJQUM5QixlQUFlLEVBQUUsY0FBYztJQUMvQixlQUFlLEVBQUUsY0FBYztJQUMvQixlQUFlLEVBQUUsY0FBYztJQUMvQixlQUFlLEVBQUUsY0FBYztJQUMvQixhQUFhLEVBQUUsY0FBYztJQUM3QixnQkFBZ0IsRUFBRSxZQUFZO0lBQzlCLGNBQWMsRUFBRSxZQUFZO0lBQzVCLGFBQWEsRUFBRSxZQUFZO0lBQzNCLGFBQWEsRUFBRSxZQUFZO0lBQzNCLG1CQUFtQixFQUFFLFlBQVk7SUFDakMsZUFBZSxFQUFFLGlCQUFpQjtJQUNsQyxZQUFZLEVBQUUsaUJBQWlCO0lBQy9CLGVBQWUsRUFBRSxpQkFBaUI7SUFDbEMsYUFBYSxFQUFFLGlCQUFpQjtJQUNoQyxjQUFjLEVBQUUsaUJBQWlCO0lBQ2pDLGlCQUFpQixFQUFFLGlCQUFpQjtJQUNwQyxrQkFBa0IsRUFBRSxpQkFBaUI7SUFDckMsb0JBQW9CLEVBQUUsaUJBQWlCO0lBQ3ZDLHFCQUFxQixFQUFFLGlCQUFpQjtJQUN4QyxjQUFjLEVBQUUsWUFBWTtJQUM1QixXQUFXLEVBQUUsWUFBWTtJQUN6QixhQUFhLEVBQUUsWUFBWTtJQUMzQixZQUFZLEVBQUUsWUFBWTtJQUMxQixlQUFlLEVBQUUsY0FBYztJQUMvQixjQUFjLEVBQUUsY0FBYztJQUM5QixhQUFhLEVBQUUsY0FBYztDQUM5QixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBMkI7SUFDbEQsT0FBTyxFQUFFLE9BQU87SUFDaEIsS0FBSyxFQUFFLGtCQUFrQjtJQUN6QixJQUFJLEVBQUUsT0FBTztJQUNiLElBQUksRUFBRSxRQUFRO0lBQ2QsUUFBUSxFQUFFLFdBQVc7SUFDckIsUUFBUSxFQUFFLFdBQVc7SUFDckIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsUUFBUSxFQUFFLFlBQVk7SUFDdEIsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsWUFBWTtJQUNuQixLQUFLLEVBQUUsY0FBYztJQUNyQixLQUFLLEVBQUUsZUFBZTtJQUN0QixLQUFLLEVBQUUsYUFBYTtJQUNwQixLQUFLLEVBQUUsVUFBVTtJQUNqQixLQUFLLEVBQUUsVUFBVTtJQUNqQixJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxhQUFhO0lBQ3BCLEtBQUssRUFBRSxlQUFlO0lBQ3RCLEtBQUssRUFBRSxnQkFBZ0I7SUFDdkIsS0FBSyxFQUFFLGNBQWM7SUFDckIsS0FBSyxFQUFFLFdBQVc7SUFDbEIsS0FBSyxFQUFFLFdBQVc7SUFDbEIsTUFBTSxFQUFFLEtBQUs7SUFDYixVQUFVLEVBQUUsZUFBZTtJQUMzQixVQUFVLEVBQUUsaUJBQWlCO0lBQzdCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLFVBQVUsRUFBRSxlQUFlO0lBQzNCLE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFdBQVcsRUFBRSxVQUFVO0lBQ3ZCLGFBQWEsRUFBRSxZQUFZO0lBQzNCLGFBQWEsRUFBRSxZQUFZO0lBQzNCLElBQUksRUFBRSxTQUFTO0lBQ2YsVUFBVSxFQUFFLFNBQVM7SUFDckIsU0FBUyxFQUFFLFFBQVE7SUFDbkIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsU0FBUyxFQUFFLGNBQWM7SUFDekIsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsV0FBVyxFQUFFLGNBQWM7SUFDM0IsTUFBTSxFQUFFLEtBQUs7SUFDYixRQUFRLEVBQUUsT0FBTztJQUNqQixTQUFTLEVBQUUsUUFBUTtJQUNuQixPQUFPLEVBQUUsTUFBTTtJQUNmLFFBQVEsRUFBRSxPQUFPO0lBQ2pCLFdBQVcsRUFBRSxnQkFBZ0I7SUFDN0IsVUFBVSxFQUFFLGFBQWE7SUFDekIsU0FBUyxFQUFFLGNBQWM7SUFDekIsU0FBUyxFQUFFLGlCQUFpQjtJQUM1QixRQUFRLEVBQUUsWUFBWTtJQUN0QixPQUFPLEVBQUUsV0FBVztJQUNwQixTQUFTLEVBQUUsYUFBYTtDQUN6QixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNsQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUztJQUN2RCxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUMxRCxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7Q0FDbkMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztJQUNwQyxjQUFjLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0I7SUFDakUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVztJQUN6RSxXQUFXLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWTtDQUNqRSxDQUFDLENBQUM7QUFFSCxNQUFNLHdCQUF3QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3ZDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLGlCQUFpQjtJQUN2RCxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCO0NBQ3JELENBQUMsQ0FBQztBQUVILFNBQWdCLHFCQUFxQixDQUFDLE9BQWU7SUFDbkQsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRS9DLElBQUksdUJBQXVCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUM3QyxPQUFPLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQzdDLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQy9DLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ2xELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3JGLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxPQUFPLFdBQVcsQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQzFGLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUM5RixPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFNUYsS0FBSyxNQUFNLE1BQU0sSUFBSSxjQUFjLEVBQUUsQ0FBQztRQUNwQyxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE9BQWU7SUFDcEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxPQUFlO0lBQ25ELE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxPQUFPLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUMxQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUM5RCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLE9BQWU7SUFDaEQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRXhDLElBQUksbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQy9DLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLE9BQWU7SUFDakQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE9BQU8scUJBQXFCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUVELFNBQWdCLHNCQUFzQixDQUFDLE9BQWU7SUFDcEQsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sd0JBQXdCLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDcEYsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLFNBQW1CO0lBQzNELE1BQU0sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDO0lBRWhELEtBQUssTUFBTSxPQUFPLElBQUksU0FBUyxFQUFFLENBQUM7UUFDaEMsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUMvQixXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBRUQsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUFFWSxRQUFBLHdCQUF3QixHQUE2QjtJQUNoRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDdEIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ3hCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQzVDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQ2hELFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztJQUMxRyxTQUFTLEVBQUUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQztJQUNsSCxnQkFBZ0IsRUFBRSxDQUFDLGdCQUFnQixDQUFDO0lBQ3BDLFdBQVcsRUFBRSxDQUFDLFdBQVcsQ0FBQztJQUMxQixNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUM7SUFDMUQsaUJBQWlCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztJQUN0QyxhQUFhLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDOUIsZUFBZSxFQUFFLENBQUMsZUFBZSxDQUFDO0lBQ2xDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQztJQUM1QixZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFDNUIsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDO0lBQzFCLGFBQWEsRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUM5QixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFDbEIsa0JBQWtCLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUM7SUFDdEQsZUFBZSxFQUFFLENBQUMsZUFBZSxDQUFDO0lBQ2xDLGNBQWMsRUFBRSxDQUFDLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQztJQUN0SCxjQUFjLEVBQUUsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLENBQUM7SUFDdEgsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQ2hDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsWUFBWSxDQUFDO0lBQ3BELFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUN0QixTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDdEIsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ2QsT0FBTyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQztJQUNwRCxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ3RDLGdCQUFnQixFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDcEMsZ0JBQWdCLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNwQyxhQUFhLEVBQUUsQ0FBQyxhQUFhLENBQUM7SUFDOUIsY0FBYyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQ2hDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQztJQUM1QixpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixDQUFDO0lBQ3RDLFlBQVksRUFBRSxDQUFDLFlBQVksQ0FBQztDQUM3QixDQUFDO0FBRUYsU0FBZ0IsZ0JBQWdCLENBQUMsUUFBZ0I7SUFDL0MsS0FBSyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0NBQXdCLENBQUMsRUFBRSxDQUFDO1FBQy9FLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsS0FBYSxFQUFFLEtBQWE7SUFDN0QsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkMsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLE1BQU0sS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUMxQyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxnQ0FBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRSxDQUFDO2dCQUN6QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDdkIsSUFBSSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxLQUFLLGNBQWMsSUFBSSxLQUFLLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLE1BQU0sS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUM5QixJQUFJLEtBQUssS0FBSyxjQUFjLElBQUksS0FBSyxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUN6RCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxLQUFLLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssS0FBSyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUFJPUEVSVFlfUFJFRklYX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAnY29sb3InOiBbJ3RleHQtJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiZy0nXSxcbiAgJ2JhY2tncm91bmQnOiBbJ2JnLSddLFxuICAnZm9udC1zaXplJzogWyd0ZXh0LXhzJywgJ3RleHQtc20nLCAndGV4dC1iYXNlJywgJ3RleHQtbGcnLCAndGV4dC14bCcsICd0ZXh0LTJ4bCcsICd0ZXh0LTN4bCcsICd0ZXh0LTR4bCcsICd0ZXh0LTV4bCcsICd0ZXh0LTZ4bCcsICd0ZXh0LTd4bCcsICd0ZXh0LTh4bCcsICd0ZXh0LTl4bCcsICd0ZXh0LSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtdGhpbicsICdmb250LWV4dHJhbGlnaHQnLCAnZm9udC1saWdodCcsICdmb250LW5vcm1hbCcsICdmb250LW1lZGl1bScsICdmb250LXNlbWlib2xkJywgJ2ZvbnQtYm9sZCcsICdmb250LWV4dHJhYm9sZCcsICdmb250LWJsYWNrJ10sXG4gICdkaXNwbGF5JzogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdoaWRkZW4nLCAnY29udGVudHMnLCAndGFibGUnLCAndGFibGUtY2VsbCcsICd0YWJsZS1yb3cnLCAnZmxvdy1yb290J10sXG4gICdwb3NpdGlvbic6IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAnd2lkdGgnOiBbJ3ctJ10sXG4gICdoZWlnaHQnOiBbJ2gtJ10sXG4gICdtaW4td2lkdGgnOiBbJ21pbi13LSddLFxuICAnbWF4LXdpZHRoJzogWydtYXgtdy0nXSxcbiAgJ21pbi1oZWlnaHQnOiBbJ21pbi1oLSddLFxuICAnbWF4LWhlaWdodCc6IFsnbWF4LWgtJ10sXG4gICdtYXJnaW4nOiBbJ20tJ10sXG4gICdtYXJnaW4tdG9wJzogWydtdC0nXSxcbiAgJ21hcmdpbi1yaWdodCc6IFsnbXItJ10sXG4gICdtYXJnaW4tYm90dG9tJzogWydtYi0nXSxcbiAgJ21hcmdpbi1sZWZ0JzogWydtbC0nXSxcbiAgJ21hcmdpbi14JzogWydteC0nXSxcbiAgJ21hcmdpbi15JzogWydteS0nXSxcbiAgJ3BhZGRpbmcnOiBbJ3AtJ10sXG4gICdwYWRkaW5nLXRvcCc6IFsncHQtJ10sXG4gICdwYWRkaW5nLXJpZ2h0JzogWydwci0nXSxcbiAgJ3BhZGRpbmctYm90dG9tJzogWydwYi0nXSxcbiAgJ3BhZGRpbmctbGVmdCc6IFsncGwtJ10sXG4gICdwYWRkaW5nLXgnOiBbJ3B4LSddLFxuICAncGFkZGluZy15JzogWydweS0nXSxcbiAgJ2dhcCc6IFsnZ2FwLSddLFxuICAnYm9yZGVyLXJhZGl1cyc6IFsncm91bmRlZC0nLCAncm91bmRlZCddLFxuICAnYm9yZGVyLXdpZHRoJzogWydib3JkZXItJywgJ2JvcmRlci10LScsICdib3JkZXItci0nLCAnYm9yZGVyLWItJywgJ2JvcmRlci1sLSddLFxuICAnYm9yZGVyLWNvbG9yJzogWydib3JkZXItJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zb2xpZCcsICdib3JkZXItZGFzaGVkJywgJ2JvcmRlci1kb3R0ZWQnLCAnYm9yZGVyLWRvdWJsZScsICdib3JkZXItaGlkZGVuJywgJ2JvcmRlci1ub25lJ10sXG4gICdmbGV4LWRpcmVjdGlvbic6IFsnZmxleC1yb3cnLCAnZmxleC1jb2wnLCAnZmxleC1yb3ctcmV2ZXJzZScsICdmbGV4LWNvbC1yZXZlcnNlJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCcsICdmbGV4LW5vd3JhcCcsICdmbGV4LXdyYXAtcmV2ZXJzZSddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LSddLFxuICAnYWxpZ24taXRlbXMnOiBbJ2l0ZW1zLSddLFxuICAnYWxpZ24tY29udGVudCc6IFsnY29udGVudC0nXSxcbiAgJ2FsaWduLXNlbGYnOiBbJ3NlbGYtJ10sXG4gICd0ZXh0LWFsaWduJzogWyd0ZXh0LWxlZnQnLCAndGV4dC1jZW50ZXInLCAndGV4dC1yaWdodCcsICd0ZXh0LWp1c3RpZnknLCAndGV4dC1zdGFydCcsICd0ZXh0LWVuZCddLFxuICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAnbGV0dGVyLXNwYWNpbmcnOiBbJ3RyYWNraW5nLSddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xlYWRpbmctJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3ctJ10sXG4gICdvdmVyZmxvdy14JzogWydvdmVyZmxvdy14LSddLFxuICAnb3ZlcmZsb3cteSc6IFsnb3ZlcmZsb3cteS0nXSxcbiAgJ3otaW5kZXgnOiBbJ3otJ10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5LSddLFxuICAnY3Vyc29yJzogWydjdXJzb3ItJ10sXG4gICdwb2ludGVyLWV2ZW50cyc6IFsncG9pbnRlci1ldmVudHMtJ10sXG4gICd1c2VyLXNlbGVjdCc6IFsnc2VsZWN0LSddLFxuICAnYm94LXNoYWRvdyc6IFsnc2hhZG93LSddLFxuICAndHJhbnNpdGlvbic6IFsndHJhbnNpdGlvbi0nXSxcbiAgJ3RyYW5zZm9ybSc6IFsnc2NhbGUtJywgJ3JvdGF0ZS0nLCAndHJhbnNsYXRlLScsICdza2V3LSddLFxuICAndG9wJzogWyd0b3AtJ10sXG4gICdyaWdodCc6IFsncmlnaHQtJ10sXG4gICdib3R0b20nOiBbJ2JvdHRvbS0nXSxcbiAgJ2xlZnQnOiBbJ2xlZnQtJ10sXG4gICdpbnNldCc6IFsnaW5zZXQtJ10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC0nXSxcbiAgJ29iamVjdC1maXQnOiBbJ29iamVjdC1jb250YWluJywgJ29iamVjdC1jb3ZlcicsICdvYmplY3QtZmlsbCcsICdvYmplY3Qtbm9uZScsICdvYmplY3Qtc2NhbGUtZG93biddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtJ10sXG4gICdmbGV4JzogWydmbGV4LTEnLCAnZmxleC1hdXRvJywgJ2ZsZXgtaW5pdGlhbCcsICdmbGV4LW5vbmUnXSxcbiAgJ2ZsZXgtZ3Jvdyc6IFsnZ3Jvdy0nLCAnZ3JvdyddLFxuICAnZmxleC1zaHJpbmsnOiBbJ3Nocmluay0nLCAnc2hyaW5rJ10sXG4gICdmbGV4LWJhc2lzJzogWydiYXNpcy0nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ2JyZWFrLW5vcm1hbCcsICdicmVhay1hbGwnLCAnYnJlYWstd29yZHMnLCAnYnJlYWsta2VlcCddXG59O1xuXG5jb25zdCBVVElMSVRZX1RPX1BST1BFUlRZX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ2Jsb2NrJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWJsb2NrJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lJzogJ2Rpc3BsYXknLFxuICAnZmxleCc6ICdkaXNwbGF5JyxcbiAgJ2lubGluZS1mbGV4JzogJ2Rpc3BsYXknLFxuICAnZ3JpZCc6ICdkaXNwbGF5JyxcbiAgJ2lubGluZS1ncmlkJzogJ2Rpc3BsYXknLFxuICAnaGlkZGVuJzogJ2Rpc3BsYXknLFxuICAnY29udGVudHMnOiAnZGlzcGxheScsXG4gICdmbG93LXJvb3QnOiAnZGlzcGxheScsXG4gICdzdGF0aWMnOiAncG9zaXRpb24nLFxuICAnZml4ZWQnOiAncG9zaXRpb24nLFxuICAnYWJzb2x1dGUnOiAncG9zaXRpb24nLFxuICAncmVsYXRpdmUnOiAncG9zaXRpb24nLFxuICAnc3RpY2t5JzogJ3Bvc2l0aW9uJyxcbiAgJ2ZsZXgtcm93JzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtY29sJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtcm93LXJldmVyc2UnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wtcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LXdyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtbm93cmFwJzogJ2ZsZXgtd3JhcCcsXG4gICdmbGV4LXdyYXAtcmV2ZXJzZSc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC0xJzogJ2ZsZXgnLFxuICAnZmxleC1hdXRvJzogJ2ZsZXgnLFxuICAnZmxleC1pbml0aWFsJzogJ2ZsZXgnLFxuICAnZmxleC1ub25lJzogJ2ZsZXgnLFxuICAnZ3Jvdyc6ICdmbGV4LWdyb3cnLFxuICAnZ3Jvdy0wJzogJ2ZsZXgtZ3JvdycsXG4gICdzaHJpbmsnOiAnZmxleC1zaHJpbmsnLFxuICAnc2hyaW5rLTAnOiAnZmxleC1zaHJpbmsnLFxuICAndGV4dC1sZWZ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1jZW50ZXInOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXJpZ2h0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1qdXN0aWZ5JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1zdGFydCc6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtZW5kJzogJ3RleHQtYWxpZ24nLFxuICAnZm9udC10aGluJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtZXh0cmFsaWdodCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbm9ybWFsJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbWVkaXVtJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtc2VtaWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ib2xkJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtZXh0cmFib2xkJzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtYmxhY2snOiAnZm9udC13ZWlnaHQnLFxuICAncm91bmRlZCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbm9uZSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtc20nOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLW1kJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1sZyc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQteGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLTJ4bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtM3hsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1mdWxsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAndW5kZXJsaW5lJzogJ3RleHQtZGVjb3JhdGlvbicsXG4gICdsaW5lLXRocm91Z2gnOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ25vLXVuZGVybGluZSc6ICd0ZXh0LWRlY29yYXRpb24nLFxuICAndXBwZXJjYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2xvd2VyY2FzZSc6ICd0ZXh0LXRyYW5zZm9ybScsXG4gICdjYXBpdGFsaXplJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ25vcm1hbC1jYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2JvcmRlci1zb2xpZCc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWRhc2hlZCc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWRvdHRlZCc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWRvdWJsZSc6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLWhpZGRlbic6ICdib3JkZXItc3R5bGUnLFxuICAnYm9yZGVyLW5vbmUnOiAnYm9yZGVyLXN0eWxlJyxcbiAgJ29iamVjdC1jb250YWluJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LWNvdmVyJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LWZpbGwnOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3Qtbm9uZSc6ICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1zY2FsZS1kb3duJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LWNlbnRlcic6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXRvcCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LWxlZnQnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LWxlZnQtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtcmlnaHQtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdC1ib3R0b20nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodC1ib3R0b20nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ2JyZWFrLW5vcm1hbCc6ICd3b3JkLWJyZWFrJyxcbiAgJ2JyZWFrLWFsbCc6ICd3b3JkLWJyZWFrJyxcbiAgJ2JyZWFrLXdvcmRzJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWsta2VlcCc6ICd3b3JkLWJyZWFrJyxcbiAgJ2FzcGVjdC1zcXVhcmUnOiAnYXNwZWN0LXJhdGlvJyxcbiAgJ2FzcGVjdC12aWRlbyc6ICdhc3BlY3QtcmF0aW8nLFxuICAnYXNwZWN0LWF1dG8nOiAnYXNwZWN0LXJhdGlvJ1xufTtcblxuY29uc3QgUFJFRklYX1BST1BFUlRZX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ3RleHQtJzogJ2NvbG9yJyxcbiAgJ2JnLSc6ICdiYWNrZ3JvdW5kLWNvbG9yJyxcbiAgJ3ctJzogJ3dpZHRoJyxcbiAgJ2gtJzogJ2hlaWdodCcsXG4gICdtaW4tdy0nOiAnbWluLXdpZHRoJyxcbiAgJ21heC13LSc6ICdtYXgtd2lkdGgnLFxuICAnbWluLWgtJzogJ21pbi1oZWlnaHQnLFxuICAnbWF4LWgtJzogJ21heC1oZWlnaHQnLFxuICAnbS0nOiAnbWFyZ2luJyxcbiAgJ210LSc6ICdtYXJnaW4tdG9wJyxcbiAgJ21yLSc6ICdtYXJnaW4tcmlnaHQnLFxuICAnbWItJzogJ21hcmdpbi1ib3R0b20nLFxuICAnbWwtJzogJ21hcmdpbi1sZWZ0JyxcbiAgJ214LSc6ICdtYXJnaW4teCcsXG4gICdteS0nOiAnbWFyZ2luLXknLFxuICAncC0nOiAncGFkZGluZycsXG4gICdwdC0nOiAncGFkZGluZy10b3AnLFxuICAncHItJzogJ3BhZGRpbmctcmlnaHQnLFxuICAncGItJzogJ3BhZGRpbmctYm90dG9tJyxcbiAgJ3BsLSc6ICdwYWRkaW5nLWxlZnQnLFxuICAncHgtJzogJ3BhZGRpbmcteCcsXG4gICdweS0nOiAncGFkZGluZy15JyxcbiAgJ2dhcC0nOiAnZ2FwJyxcbiAgJ3JvdW5kZWQtJzogJ2JvcmRlci1yYWRpdXMnLFxuICAnanVzdGlmeS0nOiAnanVzdGlmeS1jb250ZW50JyxcbiAgJ2l0ZW1zLSc6ICdhbGlnbi1pdGVtcycsXG4gICdjb250ZW50LSc6ICdhbGlnbi1jb250ZW50JyxcbiAgJ3NlbGYtJzogJ2FsaWduLXNlbGYnLFxuICAnb3ZlcmZsb3ctJzogJ292ZXJmbG93JyxcbiAgJ292ZXJmbG93LXgtJzogJ292ZXJmbG93LXgnLFxuICAnb3ZlcmZsb3cteS0nOiAnb3ZlcmZsb3cteScsXG4gICd6LSc6ICd6LWluZGV4JyxcbiAgJ29wYWNpdHktJzogJ29wYWNpdHknLFxuICAnY3Vyc29yLSc6ICdjdXJzb3InLFxuICAnc2hhZG93LSc6ICdib3gtc2hhZG93JyxcbiAgJ2JvcmRlci0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci10LSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLXItJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItYi0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1sLSc6ICdib3JkZXItd2lkdGgnLFxuICAndG9wLSc6ICd0b3AnLFxuICAncmlnaHQtJzogJ3JpZ2h0JyxcbiAgJ2JvdHRvbS0nOiAnYm90dG9tJyxcbiAgJ2xlZnQtJzogJ2xlZnQnLFxuICAnaW5zZXQtJzogJ2luc2V0JyxcbiAgJ3RyYWNraW5nLSc6ICdsZXR0ZXItc3BhY2luZycsXG4gICdsZWFkaW5nLSc6ICdsaW5lLWhlaWdodCcsXG4gICdhc3BlY3QtJzogJ2FzcGVjdC1yYXRpbycsXG4gICdvYmplY3QtJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdiYXNpcy0nOiAnZmxleC1iYXNpcycsXG4gICdncm93LSc6ICdmbGV4LWdyb3cnLFxuICAnc2hyaW5rLSc6ICdmbGV4LXNocmluaydcbn07XG5cbmNvbnN0IEZPTlRfU0laRV9VVElMSVRJRVMgPSBuZXcgU2V0KFtcbiAgJ3RleHQteHMnLCAndGV4dC1zbScsICd0ZXh0LWJhc2UnLCAndGV4dC1sZycsICd0ZXh0LXhsJyxcbiAgJ3RleHQtMnhsJywgJ3RleHQtM3hsJywgJ3RleHQtNHhsJywgJ3RleHQtNXhsJywgJ3RleHQtNnhsJyxcbiAgJ3RleHQtN3hsJywgJ3RleHQtOHhsJywgJ3RleHQtOXhsJ1xuXSk7XG5cbmNvbnN0IExJTkVfSEVJR0hUX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAnbGVhZGluZy1ub25lJywgJ2xlYWRpbmctdGlnaHQnLCAnbGVhZGluZy1zbnVnJywgJ2xlYWRpbmctbm9ybWFsJyxcbiAgJ2xlYWRpbmctcmVsYXhlZCcsICdsZWFkaW5nLWxvb3NlJywgJ2xlYWRpbmctMycsICdsZWFkaW5nLTQnLCAnbGVhZGluZy01JyxcbiAgJ2xlYWRpbmctNicsICdsZWFkaW5nLTcnLCAnbGVhZGluZy04JywgJ2xlYWRpbmctOScsICdsZWFkaW5nLTEwJ1xuXSk7XG5cbmNvbnN0IExFVFRFUl9TUEFDSU5HX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAndHJhY2tpbmctdGlnaHRlcicsICd0cmFja2luZy10aWdodCcsICd0cmFja2luZy1ub3JtYWwnLFxuICAndHJhY2tpbmctd2lkZScsICd0cmFja2luZy13aWRlcicsICd0cmFja2luZy13aWRlc3QnXG5dKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5Rm9yVXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBzdHJpcHBlZFV0aWxpdHkgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICBcbiAgaWYgKFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQW3N0cmlwcGVkVXRpbGl0eV0pIHtcbiAgICByZXR1cm4gVVRJTElUWV9UT19QUk9QRVJUWV9NQVBbc3RyaXBwZWRVdGlsaXR5XTtcbiAgfVxuICBcbiAgaWYgKEZPTlRfU0laRV9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2ZvbnQtc2l6ZSc7XG4gIH1cblxuICBpZiAoTElORV9IRUlHSFRfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsaW5lLWhlaWdodCc7XG4gIH1cblxuICBpZiAoTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsZXR0ZXItc3BhY2luZyc7XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aCgndGV4dC0nKSAmJiAhRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIGNvbnN0IHZhbHVlID0gc3RyaXBwZWRVdGlsaXR5LnNsaWNlKDUpO1xuICAgIGlmICgvXlxcZC8udGVzdCh2YWx1ZSkgfHwgdmFsdWUuc3RhcnRzV2l0aCgnWycpKSB7XG4gICAgICByZXR1cm4gJ2ZvbnQtc2l6ZSc7XG4gICAgfVxuICAgIHJldHVybiAnY29sb3InO1xuICB9XG5cbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCdsZWFkaW5nLScpICYmICFMSU5FX0hFSUdIVF9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xpbmUtaGVpZ2h0JztcbiAgfVxuXG4gIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aCgndHJhY2tpbmctJykgJiYgIUxFVFRFUl9TUEFDSU5HX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnbGV0dGVyLXNwYWNpbmcnO1xuICB9XG4gIFxuICBjb25zdCBzb3J0ZWRQcmVmaXhlcyA9IE9iamVjdC5rZXlzKFBSRUZJWF9QUk9QRVJUWV9NQVApLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpO1xuICBcbiAgZm9yIChjb25zdCBwcmVmaXggb2Ygc29ydGVkUHJlZml4ZXMpIHtcbiAgICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgcmV0dXJuIFBSRUZJWF9QUk9QRVJUWV9NQVBbcHJlZml4XTtcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiAndW5rbm93bic7XG59XG5cbmZ1bmN0aW9uIHN0cmlwVmFyaWFudHModXRpbGl0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHMgPSB1dGlsaXR5LnNwbGl0KCc6Jyk7XG4gIHJldHVybiBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dEZvbnRTaXplVXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICByZXR1cm4gRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IChcbiAgICBzdHJpcHBlZC5zdGFydHNXaXRoKCd0ZXh0LScpICYmIC9eXFxkLy50ZXN0KHN0cmlwcGVkLnNsaWNlKDUpKVxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0Q29sb3JVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIFxuICBpZiAoRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIFxuICBpZiAoc3RyaXBwZWQuc3RhcnRzV2l0aCgndGV4dC0nKSkge1xuICAgIGNvbnN0IHZhbHVlID0gc3RyaXBwZWQuc2xpY2UoNSk7XG4gICAgaWYgKC9eXFxkLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGluZUhlaWdodFV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIExJTkVfSEVJR0hUX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ2xlYWRpbmctJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xldHRlclNwYWNpbmdVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIHJldHVybiBMRVRURVJfU1BBQ0lOR19VVElMSVRJRVMuaGFzKHN0cmlwcGVkKSB8fCBzdHJpcHBlZC5zdGFydHNXaXRoKCd0cmFja2luZy0nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnRpZXNGb3JVdGlsaXRpZXModXRpbGl0aWVzOiBzdHJpbmdbXSk6IE1hcDxzdHJpbmcsIHN0cmluZ1tdPiB7XG4gIGNvbnN0IHByb3BlcnR5TWFwID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZ1tdPigpO1xuICBcbiAgZm9yIChjb25zdCB1dGlsaXR5IG9mIHV0aWxpdGllcykge1xuICAgIGNvbnN0IHByb3BlcnR5ID0gZ2V0UHJvcGVydHlGb3JVdGlsaXR5KHV0aWxpdHkpO1xuICAgIFxuICAgIGlmICghcHJvcGVydHlNYXAuaGFzKHByb3BlcnR5KSkge1xuICAgICAgcHJvcGVydHlNYXAuc2V0KHByb3BlcnR5LCBbXSk7XG4gICAgfVxuICAgIFxuICAgIHByb3BlcnR5TWFwLmdldChwcm9wZXJ0eSkhLnB1c2godXRpbGl0eSk7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wZXJ0eU1hcDtcbn1cblxuZXhwb3J0IGNvbnN0IFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUzogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAnZGlzcGxheSc6IFsnZGlzcGxheSddLFxuICAncG9zaXRpb24nOiBbJ3Bvc2l0aW9uJ10sXG4gICd3aWR0aCc6IFsnd2lkdGgnLCAnbWluLXdpZHRoJywgJ21heC13aWR0aCddLFxuICAnaGVpZ2h0JzogWydoZWlnaHQnLCAnbWluLWhlaWdodCcsICdtYXgtaGVpZ2h0J10sXG4gICdtYXJnaW4nOiBbJ21hcmdpbicsICdtYXJnaW4tdG9wJywgJ21hcmdpbi1yaWdodCcsICdtYXJnaW4tYm90dG9tJywgJ21hcmdpbi1sZWZ0JywgJ21hcmdpbi14JywgJ21hcmdpbi15J10sXG4gICdwYWRkaW5nJzogWydwYWRkaW5nJywgJ3BhZGRpbmctdG9wJywgJ3BhZGRpbmctcmlnaHQnLCAncGFkZGluZy1ib3R0b20nLCAncGFkZGluZy1sZWZ0JywgJ3BhZGRpbmcteCcsICdwYWRkaW5nLXknXSxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogWydmbGV4LWRpcmVjdGlvbiddLFxuICAnZmxleC13cmFwJzogWydmbGV4LXdyYXAnXSxcbiAgJ2ZsZXgnOiBbJ2ZsZXgnLCAnZmxleC1ncm93JywgJ2ZsZXgtc2hyaW5rJywgJ2ZsZXgtYmFzaXMnXSxcbiAgJ2p1c3RpZnktY29udGVudCc6IFsnanVzdGlmeS1jb250ZW50J10sXG4gICdhbGlnbi1pdGVtcyc6IFsnYWxpZ24taXRlbXMnXSxcbiAgJ2FsaWduLWNvbnRlbnQnOiBbJ2FsaWduLWNvbnRlbnQnXSxcbiAgJ2FsaWduLXNlbGYnOiBbJ2FsaWduLXNlbGYnXSxcbiAgJ3RleHQtYWxpZ24nOiBbJ3RleHQtYWxpZ24nXSxcbiAgJ2ZvbnQtc2l6ZSc6IFsnZm9udC1zaXplJ10sXG4gICdmb250LXdlaWdodCc6IFsnZm9udC13ZWlnaHQnXSxcbiAgJ2NvbG9yJzogWydjb2xvciddLFxuICAnYmFja2dyb3VuZC1jb2xvcic6IFsnYmFja2dyb3VuZC1jb2xvcicsICdiYWNrZ3JvdW5kJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydib3JkZXItcmFkaXVzJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci13aWR0aCcsICdib3JkZXItdG9wLXdpZHRoJywgJ2JvcmRlci1yaWdodC13aWR0aCcsICdib3JkZXItYm90dG9tLXdpZHRoJywgJ2JvcmRlci1sZWZ0LXdpZHRoJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvcicsICdib3JkZXItdG9wLWNvbG9yJywgJ2JvcmRlci1yaWdodC1jb2xvcicsICdib3JkZXItYm90dG9tLWNvbG9yJywgJ2JvcmRlci1sZWZ0LWNvbG9yJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zdHlsZSddLFxuICAnb3ZlcmZsb3cnOiBbJ292ZXJmbG93JywgJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAnei1pbmRleCc6IFsnei1pbmRleCddLFxuICAnb3BhY2l0eSc6IFsnb3BhY2l0eSddLFxuICAnZ2FwJzogWydnYXAnXSxcbiAgJ2luc2V0JzogWydpbnNldCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgJ3RleHQtZGVjb3JhdGlvbic6IFsndGV4dC1kZWNvcmF0aW9uJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndGV4dC10cmFuc2Zvcm0nXSxcbiAgJ2xldHRlci1zcGFjaW5nJzogWydsZXR0ZXItc3BhY2luZyddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xpbmUtaGVpZ2h0J10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC1yYXRpbyddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWZpdCddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtcG9zaXRpb24nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ3dvcmQtYnJlYWsnXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZsaWN0R3JvdXAocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIHByb3BlcnRpZXNdIG9mIE9iamVjdC5lbnRyaWVzKFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUykpIHtcbiAgICBpZiAocHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBncm91cE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0NvbmZsaWN0KHByb3AxOiBzdHJpbmcsIHByb3AyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZ3JvdXAxID0gZ2V0Q29uZmxpY3RHcm91cChwcm9wMSk7XG4gIGNvbnN0IGdyb3VwMiA9IGdldENvbmZsaWN0R3JvdXAocHJvcDIpO1xuICBcbiAgaWYgKGdyb3VwMSAmJiBncm91cDIgJiYgZ3JvdXAxID09PSBncm91cDIpIHtcbiAgICBpZiAocHJvcDEgPT09IHByb3AyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZ3JvdXAgPSBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFNbZ3JvdXAxXTtcbiAgICBcbiAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGdyb3VwMSA9PT0gJ21hcmdpbicgfHwgZ3JvdXAxID09PSAncGFkZGluZycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gZ3JvdXAxIHx8IHByb3AyID09PSBncm91cDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdpbnNldCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2luc2V0JyB8fCBwcm9wMiA9PT0gJ2luc2V0Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgaWYgKHByb3AxID09PSAnYm9yZGVyLXdpZHRoJyB8fCBwcm9wMiA9PT0gJ2JvcmRlci13aWR0aCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwMSA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2JvcmRlci1jb2xvcicgfHwgcHJvcDIgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChncm91cDEgPT09ICdvdmVyZmxvdycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ292ZXJmbG93JyB8fCBwcm9wMiA9PT0gJ292ZXJmbG93Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnZmxleCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2ZsZXgnIHx8IHByb3AyID09PSAnZmxleCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "css-to-tailwind-react",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Convert traditional CSS (inline, internal, and external) into Tailwind CSS utility classes for React-based frameworks",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|