ag-psd 14.3.11 → 14.4.0
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/CHANGELOG.md +7 -0
- package/README.md +12 -2
- package/README_PSD.md +729 -0
- package/TODO +4 -0
- package/dist/abr.js +45 -45
- package/dist/additionalInfo.js +638 -620
- package/dist/bundle.js +1294 -1237
- package/dist/csh.js +14 -14
- package/dist/descriptor.d.ts +7 -3
- package/dist/descriptor.js +119 -114
- package/dist/effectsHelpers.js +160 -140
- package/dist/engineData.js +4 -4
- package/dist/helpers.js +11 -11
- package/dist/imageResources.js +175 -170
- package/dist/index.js +15 -11
- package/dist/initializeCanvas.js +14 -6
- package/dist/jpeg.d.ts +1 -0
- package/dist/jpeg.js +1023 -0
- package/dist/psd.d.ts +3 -0
- package/dist/psd.js +1 -1
- package/dist/psdReader.js +77 -72
- package/dist/psdWriter.js +45 -45
- package/dist/text.js +2 -2
- package/dist/utf8.js +2 -2
- package/dist-es/abr.js +4 -4
- package/dist-es/additionalInfo.js +36 -18
- package/dist-es/descriptor.d.ts +7 -3
- package/dist-es/descriptor.js +30 -25
- package/dist-es/effectsHelpers.js +40 -20
- package/dist-es/engineData.js +4 -4
- package/dist-es/helpers.js +9 -9
- package/dist-es/imageResources.js +15 -10
- package/dist-es/initializeCanvas.js +14 -6
- package/dist-es/jpeg.d.ts +1 -0
- package/dist-es/jpeg.js +1019 -0
- package/dist-es/psd.d.ts +3 -0
- package/dist-es/psd.js +1 -1
- package/dist-es/psdReader.js +65 -60
- package/dist-es/psdWriter.js +34 -34
- package/dist-es/text.js +2 -2
- package/dist-es/utf8.js +2 -2
- package/package.json +4 -4
- package/tsconfig.json +1 -0
package/dist/descriptor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.strokeStyleLineAlignment = exports.strokeStyleLineJoinType = exports.strokeStyleLineCapType = exports.FrFl = exports.FStl = exports.ClrS = exports.GrdT = exports.IGSr = exports.BETE = exports.BESs = exports.bvlT = exports.BESl = exports.BlnM = exports.warpStyle = exports.Annt = exports.Ornt = exports.textGridding = exports.unitsValue = exports.unitsPercent = exports.unitsAngle = exports.parseUnitsToNumber = exports.parseUnitsOrNumber = exports.parseUnits = exports.parsePercentOrAngle = exports.parsePercent = exports.parseAngle = exports.writeVersionAndDescriptor = exports.readVersionAndDescriptor = exports.writeDescriptorStructure = exports.readDescriptorStructure = exports.readAsciiStringOrClassId = exports.setLogErrors = void 0;
|
|
3
|
+
exports.strokeStyleLineAlignment = exports.strokeStyleLineJoinType = exports.strokeStyleLineCapType = exports.FrFl = exports.FStl = exports.ClrS = exports.gradientInterpolationMethodType = exports.GrdT = exports.IGSr = exports.BETE = exports.BESs = exports.bvlT = exports.BESl = exports.BlnM = exports.warpStyle = exports.Annt = exports.Ornt = exports.textGridding = exports.unitsValue = exports.unitsPercent = exports.unitsAngle = exports.parseUnitsToNumber = exports.parseUnitsOrNumber = exports.parseUnits = exports.parsePercentOrAngle = exports.parsePercent = exports.parseAngle = exports.writeVersionAndDescriptor = exports.readVersionAndDescriptor = exports.writeDescriptorStructure = exports.readDescriptorStructure = exports.readAsciiStringOrClassId = exports.setLogErrors = void 0;
|
|
4
4
|
var helpers_1 = require("./helpers");
|
|
5
5
|
var psdReader_1 = require("./psdReader");
|
|
6
6
|
var psdWriter_1 = require("./psdWriter");
|
|
@@ -112,7 +112,7 @@ var typeToField = {
|
|
|
112
112
|
'strokeStyleLineCapType', 'strokeStyleLineJoinType', 'strokeStyleLineAlignment',
|
|
113
113
|
'strokeStyleBlendMode', 'PntT', 'Styl', 'lookupType', 'LUTFormat', 'dataOrder',
|
|
114
114
|
'tableOrder', 'enableCompCore', 'enableCompCoreGPU', 'compCoreSupport', 'compCoreGPUSupport', 'Engn',
|
|
115
|
-
'enableCompCoreThreads',
|
|
115
|
+
'enableCompCoreThreads', 'gs99',
|
|
116
116
|
],
|
|
117
117
|
'bool': [
|
|
118
118
|
'PstS', 'printSixteenBit', 'masterFXSwitch', 'enab', 'uglg', 'antialiasGloss',
|
|
@@ -203,21 +203,21 @@ function getTypeByKey(key, value, root) {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
function readAsciiStringOrClassId(reader) {
|
|
206
|
-
var length = psdReader_1.readInt32(reader);
|
|
207
|
-
return psdReader_1.readAsciiString(reader, length || 4);
|
|
206
|
+
var length = (0, psdReader_1.readInt32)(reader);
|
|
207
|
+
return (0, psdReader_1.readAsciiString)(reader, length || 4);
|
|
208
208
|
}
|
|
209
209
|
exports.readAsciiStringOrClassId = readAsciiStringOrClassId;
|
|
210
210
|
function writeAsciiStringOrClassId(writer, value) {
|
|
211
211
|
if (value.length === 4 && value !== 'warp') {
|
|
212
212
|
// write classId
|
|
213
|
-
psdWriter_1.writeInt32(writer, 0);
|
|
214
|
-
psdWriter_1.writeSignature(writer, value);
|
|
213
|
+
(0, psdWriter_1.writeInt32)(writer, 0);
|
|
214
|
+
(0, psdWriter_1.writeSignature)(writer, value);
|
|
215
215
|
}
|
|
216
216
|
else {
|
|
217
217
|
// write ascii string
|
|
218
|
-
psdWriter_1.writeInt32(writer, value.length);
|
|
218
|
+
(0, psdWriter_1.writeInt32)(writer, value.length);
|
|
219
219
|
for (var i = 0; i < value.length; i++) {
|
|
220
|
-
psdWriter_1.writeUint8(writer, value.charCodeAt(i));
|
|
220
|
+
(0, psdWriter_1.writeUint8)(writer, value.charCodeAt(i));
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
}
|
|
@@ -225,10 +225,10 @@ function readDescriptorStructure(reader) {
|
|
|
225
225
|
var object = {};
|
|
226
226
|
// object.__struct =
|
|
227
227
|
readClassStructure(reader);
|
|
228
|
-
var itemsCount = psdReader_1.readUint32(reader);
|
|
228
|
+
var itemsCount = (0, psdReader_1.readUint32)(reader);
|
|
229
229
|
for (var i = 0; i < itemsCount; i++) {
|
|
230
230
|
var key = readAsciiStringOrClassId(reader);
|
|
231
|
-
var type = psdReader_1.readSignature(reader);
|
|
231
|
+
var type = (0, psdReader_1.readSignature)(reader);
|
|
232
232
|
// console.log(`> '${key}' '${type}'`);
|
|
233
233
|
var data = readOSType(reader, type);
|
|
234
234
|
// if (!getTypeByKey(key, data)) console.log(`> '${key}' '${type}'`, data);
|
|
@@ -242,10 +242,10 @@ function writeDescriptorStructure(writer, name, classId, value, root) {
|
|
|
242
242
|
if (logErrors && !classId)
|
|
243
243
|
console.log('Missing classId for: ', name, classId, value);
|
|
244
244
|
// write class structure
|
|
245
|
-
psdWriter_1.writeUnicodeStringWithPadding(writer, name);
|
|
245
|
+
(0, psdWriter_1.writeUnicodeStringWithPadding)(writer, name);
|
|
246
246
|
writeAsciiStringOrClassId(writer, classId);
|
|
247
247
|
var keys = Object.keys(value);
|
|
248
|
-
psdWriter_1.writeUint32(writer, keys.length);
|
|
248
|
+
(0, psdWriter_1.writeUint32)(writer, keys.length);
|
|
249
249
|
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
250
250
|
var key = keys_1[_i];
|
|
251
251
|
var type = getTypeByKey(key, value[key], root);
|
|
@@ -282,10 +282,10 @@ function writeDescriptorStructure(writer, name, classId, value, root) {
|
|
|
282
282
|
// TODO: other color spaces
|
|
283
283
|
}
|
|
284
284
|
writeAsciiStringOrClassId(writer, key);
|
|
285
|
-
psdWriter_1.writeSignature(writer, type || 'long');
|
|
285
|
+
(0, psdWriter_1.writeSignature)(writer, type || 'long');
|
|
286
286
|
writeOSType(writer, type || 'long', value[key], key, extType, root);
|
|
287
287
|
if (logErrors && !type)
|
|
288
|
-
console.log("Missing descriptor field type for: '"
|
|
288
|
+
console.log("Missing descriptor field type for: '".concat(key, "' in"), value);
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
291
|
exports.writeDescriptorStructure = writeDescriptorStructure;
|
|
@@ -297,87 +297,87 @@ function readOSType(reader, type) {
|
|
|
297
297
|
case 'GlbO': // GlobalObject same as Descriptor
|
|
298
298
|
return readDescriptorStructure(reader);
|
|
299
299
|
case 'VlLs': { // List
|
|
300
|
-
var length_1 = psdReader_1.readInt32(reader);
|
|
300
|
+
var length_1 = (0, psdReader_1.readInt32)(reader);
|
|
301
301
|
var items = [];
|
|
302
302
|
for (var i = 0; i < length_1; i++) {
|
|
303
|
-
var type_1 = psdReader_1.readSignature(reader);
|
|
303
|
+
var type_1 = (0, psdReader_1.readSignature)(reader);
|
|
304
304
|
// console.log(' >', type);
|
|
305
305
|
items.push(readOSType(reader, type_1));
|
|
306
306
|
}
|
|
307
307
|
return items;
|
|
308
308
|
}
|
|
309
309
|
case 'doub': // Double
|
|
310
|
-
return psdReader_1.readFloat64(reader);
|
|
310
|
+
return (0, psdReader_1.readFloat64)(reader);
|
|
311
311
|
case 'UntF': { // Unit double
|
|
312
|
-
var units = psdReader_1.readSignature(reader);
|
|
313
|
-
var value = psdReader_1.readFloat64(reader);
|
|
312
|
+
var units = (0, psdReader_1.readSignature)(reader);
|
|
313
|
+
var value = (0, psdReader_1.readFloat64)(reader);
|
|
314
314
|
if (!unitsMap[units])
|
|
315
|
-
throw new Error("Invalid units: "
|
|
315
|
+
throw new Error("Invalid units: ".concat(units));
|
|
316
316
|
return { units: unitsMap[units], value: value };
|
|
317
317
|
}
|
|
318
318
|
case 'UnFl': { // Unit float
|
|
319
|
-
var units = psdReader_1.readSignature(reader);
|
|
320
|
-
var value = psdReader_1.readFloat32(reader);
|
|
319
|
+
var units = (0, psdReader_1.readSignature)(reader);
|
|
320
|
+
var value = (0, psdReader_1.readFloat32)(reader);
|
|
321
321
|
if (!unitsMap[units])
|
|
322
|
-
throw new Error("Invalid units: "
|
|
322
|
+
throw new Error("Invalid units: ".concat(units));
|
|
323
323
|
return { units: unitsMap[units], value: value };
|
|
324
324
|
}
|
|
325
325
|
case 'TEXT': // String
|
|
326
|
-
return psdReader_1.readUnicodeString(reader);
|
|
326
|
+
return (0, psdReader_1.readUnicodeString)(reader);
|
|
327
327
|
case 'enum': { // Enumerated
|
|
328
328
|
var type_2 = readAsciiStringOrClassId(reader);
|
|
329
329
|
var value = readAsciiStringOrClassId(reader);
|
|
330
|
-
return type_2
|
|
330
|
+
return "".concat(type_2, ".").concat(value);
|
|
331
331
|
}
|
|
332
332
|
case 'long': // Integer
|
|
333
|
-
return psdReader_1.readInt32(reader);
|
|
333
|
+
return (0, psdReader_1.readInt32)(reader);
|
|
334
334
|
case 'comp': { // Large Integer
|
|
335
|
-
var low = psdReader_1.readUint32(reader);
|
|
336
|
-
var high = psdReader_1.readUint32(reader);
|
|
335
|
+
var low = (0, psdReader_1.readUint32)(reader);
|
|
336
|
+
var high = (0, psdReader_1.readUint32)(reader);
|
|
337
337
|
return { low: low, high: high };
|
|
338
338
|
}
|
|
339
339
|
case 'bool': // Boolean
|
|
340
|
-
return !!psdReader_1.readUint8(reader);
|
|
340
|
+
return !!(0, psdReader_1.readUint8)(reader);
|
|
341
341
|
case 'type': // Class
|
|
342
342
|
case 'GlbC': // Class
|
|
343
343
|
return readClassStructure(reader);
|
|
344
344
|
case 'alis': { // Alias
|
|
345
|
-
var length_2 = psdReader_1.readInt32(reader);
|
|
346
|
-
return psdReader_1.readAsciiString(reader, length_2);
|
|
345
|
+
var length_2 = (0, psdReader_1.readInt32)(reader);
|
|
346
|
+
return (0, psdReader_1.readAsciiString)(reader, length_2);
|
|
347
347
|
}
|
|
348
348
|
case 'tdta': { // Raw Data
|
|
349
|
-
var length_3 = psdReader_1.readInt32(reader);
|
|
350
|
-
return psdReader_1.readBytes(reader, length_3);
|
|
349
|
+
var length_3 = (0, psdReader_1.readInt32)(reader);
|
|
350
|
+
return (0, psdReader_1.readBytes)(reader, length_3);
|
|
351
351
|
}
|
|
352
352
|
case 'ObAr': { // Object array
|
|
353
|
-
psdReader_1.readInt32(reader); // version: 16
|
|
354
|
-
psdReader_1.readUnicodeString(reader); // name: ''
|
|
353
|
+
(0, psdReader_1.readInt32)(reader); // version: 16
|
|
354
|
+
(0, psdReader_1.readUnicodeString)(reader); // name: ''
|
|
355
355
|
readAsciiStringOrClassId(reader); // 'rationalPoint'
|
|
356
|
-
var length_4 = psdReader_1.readInt32(reader);
|
|
356
|
+
var length_4 = (0, psdReader_1.readInt32)(reader);
|
|
357
357
|
var items = [];
|
|
358
358
|
for (var i = 0; i < length_4; i++) {
|
|
359
359
|
var type1 = readAsciiStringOrClassId(reader); // type Hrzn | Vrtc
|
|
360
|
-
psdReader_1.readSignature(reader); // UnFl
|
|
361
|
-
psdReader_1.readSignature(reader); // units ? '#Pxl'
|
|
362
|
-
var valuesCount = psdReader_1.readInt32(reader);
|
|
360
|
+
(0, psdReader_1.readSignature)(reader); // UnFl
|
|
361
|
+
(0, psdReader_1.readSignature)(reader); // units ? '#Pxl'
|
|
362
|
+
var valuesCount = (0, psdReader_1.readInt32)(reader);
|
|
363
363
|
var values = [];
|
|
364
364
|
for (var j = 0; j < valuesCount; j++) {
|
|
365
|
-
values.push(psdReader_1.readFloat64(reader));
|
|
365
|
+
values.push((0, psdReader_1.readFloat64)(reader));
|
|
366
366
|
}
|
|
367
367
|
items.push({ type: type1, values: values });
|
|
368
368
|
}
|
|
369
369
|
return items;
|
|
370
370
|
}
|
|
371
371
|
case 'Pth ': { // File path
|
|
372
|
-
/*const length =*/ psdReader_1.readInt32(reader);
|
|
373
|
-
var sig = psdReader_1.readSignature(reader);
|
|
374
|
-
/*const pathSize =*/ psdReader_1.readInt32LE(reader);
|
|
375
|
-
var charsCount = psdReader_1.readInt32LE(reader);
|
|
376
|
-
var path = psdReader_1.readUnicodeStringWithLength(reader, charsCount);
|
|
372
|
+
/*const length =*/ (0, psdReader_1.readInt32)(reader);
|
|
373
|
+
var sig = (0, psdReader_1.readSignature)(reader);
|
|
374
|
+
/*const pathSize =*/ (0, psdReader_1.readInt32LE)(reader);
|
|
375
|
+
var charsCount = (0, psdReader_1.readInt32LE)(reader);
|
|
376
|
+
var path = (0, psdReader_1.readUnicodeStringWithLength)(reader, charsCount);
|
|
377
377
|
return { sig: sig, path: path };
|
|
378
378
|
}
|
|
379
379
|
default:
|
|
380
|
-
throw new Error("Invalid TySh descriptor OSType: "
|
|
380
|
+
throw new Error("Invalid TySh descriptor OSType: ".concat(type, " at ").concat(reader.offset.toString(16)));
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
var ObArTypes = {
|
|
@@ -393,36 +393,36 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
393
393
|
case 'Objc': // Descriptor
|
|
394
394
|
case 'GlbO': // GlobalObject same as Descriptor
|
|
395
395
|
if (!extType)
|
|
396
|
-
throw new Error("Missing ext type for: '"
|
|
396
|
+
throw new Error("Missing ext type for: '".concat(key, "' (").concat(JSON.stringify(value), ")"));
|
|
397
397
|
writeDescriptorStructure(writer, extType.name, extType.classID, value, root);
|
|
398
398
|
break;
|
|
399
399
|
case 'VlLs': // List
|
|
400
|
-
psdWriter_1.writeInt32(writer, value.length);
|
|
400
|
+
(0, psdWriter_1.writeInt32)(writer, value.length);
|
|
401
401
|
for (var i = 0; i < value.length; i++) {
|
|
402
402
|
var type_3 = fieldToArrayType[key];
|
|
403
|
-
psdWriter_1.writeSignature(writer, type_3 || 'long');
|
|
403
|
+
(0, psdWriter_1.writeSignature)(writer, type_3 || 'long');
|
|
404
404
|
writeOSType(writer, type_3 || 'long', value[i], '', fieldToArrayExtType[key], root);
|
|
405
405
|
if (logErrors && !type_3)
|
|
406
|
-
console.log("Missing descriptor array type for: '"
|
|
406
|
+
console.log("Missing descriptor array type for: '".concat(key, "' in"), value);
|
|
407
407
|
}
|
|
408
408
|
break;
|
|
409
409
|
case 'doub': // Double
|
|
410
|
-
psdWriter_1.writeFloat64(writer, value);
|
|
410
|
+
(0, psdWriter_1.writeFloat64)(writer, value);
|
|
411
411
|
break;
|
|
412
412
|
case 'UntF': // Unit double
|
|
413
413
|
if (!unitsMapRev[value.units])
|
|
414
|
-
throw new Error("Invalid units: "
|
|
415
|
-
psdWriter_1.writeSignature(writer, unitsMapRev[value.units]);
|
|
416
|
-
psdWriter_1.writeFloat64(writer, value.value);
|
|
414
|
+
throw new Error("Invalid units: ".concat(value.units, " in ").concat(key));
|
|
415
|
+
(0, psdWriter_1.writeSignature)(writer, unitsMapRev[value.units]);
|
|
416
|
+
(0, psdWriter_1.writeFloat64)(writer, value.value);
|
|
417
417
|
break;
|
|
418
418
|
case 'UnFl': // Unit float
|
|
419
419
|
if (!unitsMapRev[value.units])
|
|
420
|
-
throw new Error("Invalid units: "
|
|
421
|
-
psdWriter_1.writeSignature(writer, unitsMapRev[value.units]);
|
|
422
|
-
psdWriter_1.writeFloat32(writer, value.value);
|
|
420
|
+
throw new Error("Invalid units: ".concat(value.units, " in ").concat(key));
|
|
421
|
+
(0, psdWriter_1.writeSignature)(writer, unitsMapRev[value.units]);
|
|
422
|
+
(0, psdWriter_1.writeFloat32)(writer, value.value);
|
|
423
423
|
break;
|
|
424
424
|
case 'TEXT': // String
|
|
425
|
-
psdWriter_1.writeUnicodeStringWithPadding(writer, value);
|
|
425
|
+
(0, psdWriter_1.writeUnicodeStringWithPadding)(writer, value);
|
|
426
426
|
break;
|
|
427
427
|
case 'enum': { // Enumerated
|
|
428
428
|
var _a = value.split('.'), _type = _a[0], val = _a[1];
|
|
@@ -431,12 +431,12 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
431
431
|
break;
|
|
432
432
|
}
|
|
433
433
|
case 'long': // Integer
|
|
434
|
-
psdWriter_1.writeInt32(writer, value);
|
|
434
|
+
(0, psdWriter_1.writeInt32)(writer, value);
|
|
435
435
|
break;
|
|
436
436
|
// case 'comp': // Large Integer
|
|
437
437
|
// writeLargeInteger(reader);
|
|
438
438
|
case 'bool': // Boolean
|
|
439
|
-
psdWriter_1.writeUint8(writer, value ? 1 : 0);
|
|
439
|
+
(0, psdWriter_1.writeUint8)(writer, value ? 1 : 0);
|
|
440
440
|
break;
|
|
441
441
|
// case 'type': // Class
|
|
442
442
|
// case 'GlbC': // Class
|
|
@@ -444,24 +444,24 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
444
444
|
// case 'alis': // Alias
|
|
445
445
|
// writeAliasStructure(reader);
|
|
446
446
|
case 'tdta': // Raw Data
|
|
447
|
-
psdWriter_1.writeInt32(writer, value.byteLength);
|
|
448
|
-
psdWriter_1.writeBytes(writer, value);
|
|
447
|
+
(0, psdWriter_1.writeInt32)(writer, value.byteLength);
|
|
448
|
+
(0, psdWriter_1.writeBytes)(writer, value);
|
|
449
449
|
break;
|
|
450
450
|
case 'ObAr': { // Object array
|
|
451
|
-
psdWriter_1.writeInt32(writer, 16); // version
|
|
452
|
-
psdWriter_1.writeUnicodeStringWithPadding(writer, ''); // name
|
|
451
|
+
(0, psdWriter_1.writeInt32)(writer, 16); // version
|
|
452
|
+
(0, psdWriter_1.writeUnicodeStringWithPadding)(writer, ''); // name
|
|
453
453
|
var type_4 = ObArTypes[key];
|
|
454
454
|
if (!type_4)
|
|
455
|
-
throw new Error("Not implemented ObArType for: "
|
|
455
|
+
throw new Error("Not implemented ObArType for: ".concat(key));
|
|
456
456
|
writeAsciiStringOrClassId(writer, type_4);
|
|
457
|
-
psdWriter_1.writeInt32(writer, value.length);
|
|
457
|
+
(0, psdWriter_1.writeInt32)(writer, value.length);
|
|
458
458
|
for (var i = 0; i < value.length; i++) {
|
|
459
459
|
writeAsciiStringOrClassId(writer, value[i].type); // Hrzn | Vrtc
|
|
460
|
-
psdWriter_1.writeSignature(writer, 'UnFl');
|
|
461
|
-
psdWriter_1.writeSignature(writer, '#Pxl');
|
|
462
|
-
psdWriter_1.writeInt32(writer, value[i].values.length);
|
|
460
|
+
(0, psdWriter_1.writeSignature)(writer, 'UnFl');
|
|
461
|
+
(0, psdWriter_1.writeSignature)(writer, '#Pxl');
|
|
462
|
+
(0, psdWriter_1.writeInt32)(writer, value[i].values.length);
|
|
463
463
|
for (var j = 0; j < value[i].values.length; j++) {
|
|
464
|
-
psdWriter_1.writeFloat64(writer, value[i].values[j]);
|
|
464
|
+
(0, psdWriter_1.writeFloat64)(writer, value[i].values[j]);
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
467
|
break;
|
|
@@ -469,14 +469,14 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
469
469
|
// case 'Pth ': // File path
|
|
470
470
|
// writeFilePath(reader);
|
|
471
471
|
default:
|
|
472
|
-
throw new Error("Not implemented descriptor OSType: "
|
|
472
|
+
throw new Error("Not implemented descriptor OSType: ".concat(type));
|
|
473
473
|
}
|
|
474
474
|
}
|
|
475
475
|
function readReferenceStructure(reader) {
|
|
476
|
-
var itemsCount = psdReader_1.readInt32(reader);
|
|
476
|
+
var itemsCount = (0, psdReader_1.readInt32)(reader);
|
|
477
477
|
var items = [];
|
|
478
478
|
for (var i = 0; i < itemsCount; i++) {
|
|
479
|
-
var type = psdReader_1.readSignature(reader);
|
|
479
|
+
var type = (0, psdReader_1.readSignature)(reader);
|
|
480
480
|
switch (type) {
|
|
481
481
|
case 'prop': { // Property
|
|
482
482
|
readClassStructure(reader);
|
|
@@ -491,34 +491,34 @@ function readReferenceStructure(reader) {
|
|
|
491
491
|
readClassStructure(reader);
|
|
492
492
|
var typeID = readAsciiStringOrClassId(reader);
|
|
493
493
|
var value = readAsciiStringOrClassId(reader);
|
|
494
|
-
items.push(typeID
|
|
494
|
+
items.push("".concat(typeID, ".").concat(value));
|
|
495
495
|
break;
|
|
496
496
|
}
|
|
497
497
|
case 'rele': { // Offset
|
|
498
498
|
// const { name, classID } =
|
|
499
499
|
readClassStructure(reader);
|
|
500
|
-
items.push(psdReader_1.readUint32(reader));
|
|
500
|
+
items.push((0, psdReader_1.readUint32)(reader));
|
|
501
501
|
break;
|
|
502
502
|
}
|
|
503
503
|
case 'Idnt': // Identifier
|
|
504
|
-
items.push(psdReader_1.readInt32(reader));
|
|
504
|
+
items.push((0, psdReader_1.readInt32)(reader));
|
|
505
505
|
break;
|
|
506
506
|
case 'indx': // Index
|
|
507
|
-
items.push(psdReader_1.readInt32(reader));
|
|
507
|
+
items.push((0, psdReader_1.readInt32)(reader));
|
|
508
508
|
break;
|
|
509
509
|
case 'name': { // Name
|
|
510
510
|
readClassStructure(reader);
|
|
511
|
-
items.push(psdReader_1.readUnicodeString(reader));
|
|
511
|
+
items.push((0, psdReader_1.readUnicodeString)(reader));
|
|
512
512
|
break;
|
|
513
513
|
}
|
|
514
514
|
default:
|
|
515
|
-
throw new Error("Invalid descriptor reference type: "
|
|
515
|
+
throw new Error("Invalid descriptor reference type: ".concat(type));
|
|
516
516
|
}
|
|
517
517
|
}
|
|
518
518
|
return items;
|
|
519
519
|
}
|
|
520
520
|
function writeReferenceStructure(writer, _key, items) {
|
|
521
|
-
psdWriter_1.writeInt32(writer, items.length);
|
|
521
|
+
(0, psdWriter_1.writeInt32)(writer, items.length);
|
|
522
522
|
for (var i = 0; i < items.length; i++) {
|
|
523
523
|
var value = items[i];
|
|
524
524
|
var type = 'unknown';
|
|
@@ -530,7 +530,7 @@ function writeReferenceStructure(writer, _key, items) {
|
|
|
530
530
|
type = 'name';
|
|
531
531
|
}
|
|
532
532
|
}
|
|
533
|
-
psdWriter_1.writeSignature(writer, type);
|
|
533
|
+
(0, psdWriter_1.writeSignature)(writer, type);
|
|
534
534
|
switch (type) {
|
|
535
535
|
// case 'prop': // Property
|
|
536
536
|
// case 'Clss': // Class
|
|
@@ -546,29 +546,29 @@ function writeReferenceStructure(writer, _key, items) {
|
|
|
546
546
|
// case 'indx': // Index
|
|
547
547
|
case 'name': { // Name
|
|
548
548
|
writeClassStructure(writer, '\0', 'Lyr ');
|
|
549
|
-
psdWriter_1.writeUnicodeString(writer, value + '\0');
|
|
549
|
+
(0, psdWriter_1.writeUnicodeString)(writer, value + '\0');
|
|
550
550
|
break;
|
|
551
551
|
}
|
|
552
552
|
default:
|
|
553
|
-
throw new Error("Invalid descriptor reference type: "
|
|
553
|
+
throw new Error("Invalid descriptor reference type: ".concat(type));
|
|
554
554
|
}
|
|
555
555
|
}
|
|
556
556
|
return items;
|
|
557
557
|
}
|
|
558
558
|
function readClassStructure(reader) {
|
|
559
|
-
var name = psdReader_1.readUnicodeString(reader);
|
|
559
|
+
var name = (0, psdReader_1.readUnicodeString)(reader);
|
|
560
560
|
var classID = readAsciiStringOrClassId(reader);
|
|
561
561
|
// console.log({ name, classID });
|
|
562
562
|
return { name: name, classID: classID };
|
|
563
563
|
}
|
|
564
564
|
function writeClassStructure(writer, name, classID) {
|
|
565
|
-
psdWriter_1.writeUnicodeString(writer, name);
|
|
565
|
+
(0, psdWriter_1.writeUnicodeString)(writer, name);
|
|
566
566
|
writeAsciiStringOrClassId(writer, classID);
|
|
567
567
|
}
|
|
568
568
|
function readVersionAndDescriptor(reader) {
|
|
569
|
-
var version = psdReader_1.readUint32(reader);
|
|
569
|
+
var version = (0, psdReader_1.readUint32)(reader);
|
|
570
570
|
if (version !== 16)
|
|
571
|
-
throw new Error("Invalid descriptor version: "
|
|
571
|
+
throw new Error("Invalid descriptor version: ".concat(version));
|
|
572
572
|
var desc = readDescriptorStructure(reader);
|
|
573
573
|
// console.log(require('util').inspect(desc, false, 99, true));
|
|
574
574
|
return desc;
|
|
@@ -576,7 +576,7 @@ function readVersionAndDescriptor(reader) {
|
|
|
576
576
|
exports.readVersionAndDescriptor = readVersionAndDescriptor;
|
|
577
577
|
function writeVersionAndDescriptor(writer, name, classID, descriptor, root) {
|
|
578
578
|
if (root === void 0) { root = ''; }
|
|
579
|
-
psdWriter_1.writeUint32(writer, 16); // version
|
|
579
|
+
(0, psdWriter_1.writeUint32)(writer, 16); // version
|
|
580
580
|
writeDescriptorStructure(writer, name, classID, descriptor, root);
|
|
581
581
|
}
|
|
582
582
|
exports.writeVersionAndDescriptor = writeVersionAndDescriptor;
|
|
@@ -584,7 +584,7 @@ function parseAngle(x) {
|
|
|
584
584
|
if (x === undefined)
|
|
585
585
|
return 0;
|
|
586
586
|
if (x.units !== 'Angle')
|
|
587
|
-
throw new Error("Invalid units: "
|
|
587
|
+
throw new Error("Invalid units: ".concat(x.units));
|
|
588
588
|
return x.value;
|
|
589
589
|
}
|
|
590
590
|
exports.parseAngle = parseAngle;
|
|
@@ -592,7 +592,7 @@ function parsePercent(x) {
|
|
|
592
592
|
if (x === undefined)
|
|
593
593
|
return 1;
|
|
594
594
|
if (x.units !== 'Percent')
|
|
595
|
-
throw new Error("Invalid units: "
|
|
595
|
+
throw new Error("Invalid units: ".concat(x.units));
|
|
596
596
|
return x.value / 100;
|
|
597
597
|
}
|
|
598
598
|
exports.parsePercent = parsePercent;
|
|
@@ -603,14 +603,14 @@ function parsePercentOrAngle(x) {
|
|
|
603
603
|
return x.value / 100;
|
|
604
604
|
if (x.units === 'Angle')
|
|
605
605
|
return x.value / 360;
|
|
606
|
-
throw new Error("Invalid units: "
|
|
606
|
+
throw new Error("Invalid units: ".concat(x.units));
|
|
607
607
|
}
|
|
608
608
|
exports.parsePercentOrAngle = parsePercentOrAngle;
|
|
609
609
|
function parseUnits(_a) {
|
|
610
610
|
var units = _a.units, value = _a.value;
|
|
611
611
|
if (units !== 'Pixels' && units !== 'Millimeters' && units !== 'Points' && units !== 'None' &&
|
|
612
612
|
units !== 'Picas' && units !== 'Inches' && units !== 'Centimeters' && units !== 'Density') {
|
|
613
|
-
throw new Error("Invalid units: "
|
|
613
|
+
throw new Error("Invalid units: ".concat(JSON.stringify({ units: units, value: value })));
|
|
614
614
|
}
|
|
615
615
|
return { value: value, units: units };
|
|
616
616
|
}
|
|
@@ -625,7 +625,7 @@ exports.parseUnitsOrNumber = parseUnitsOrNumber;
|
|
|
625
625
|
function parseUnitsToNumber(_a, expectedUnits) {
|
|
626
626
|
var units = _a.units, value = _a.value;
|
|
627
627
|
if (units !== expectedUnits)
|
|
628
|
-
throw new Error("Invalid units: "
|
|
628
|
+
throw new Error("Invalid units: ".concat(JSON.stringify({ units: units, value: value })));
|
|
629
629
|
return value;
|
|
630
630
|
}
|
|
631
631
|
exports.parseUnitsToNumber = parseUnitsToNumber;
|
|
@@ -641,26 +641,26 @@ function unitsValue(x, key) {
|
|
|
641
641
|
if (x == null)
|
|
642
642
|
return { units: 'Pixels', value: 0 };
|
|
643
643
|
if (typeof x !== 'object')
|
|
644
|
-
throw new Error("Invalid value: "
|
|
644
|
+
throw new Error("Invalid value: ".concat(JSON.stringify(x), " (key: ").concat(key, ") (should have value and units)"));
|
|
645
645
|
var units = x.units, value = x.value;
|
|
646
646
|
if (typeof value !== 'number')
|
|
647
|
-
throw new Error("Invalid value in "
|
|
647
|
+
throw new Error("Invalid value in ".concat(JSON.stringify(x), " (key: ").concat(key, ")"));
|
|
648
648
|
if (units !== 'Pixels' && units !== 'Millimeters' && units !== 'Points' && units !== 'None' &&
|
|
649
649
|
units !== 'Picas' && units !== 'Inches' && units !== 'Centimeters' && units !== 'Density') {
|
|
650
|
-
throw new Error("Invalid units in "
|
|
650
|
+
throw new Error("Invalid units in ".concat(JSON.stringify(x), " (key: ").concat(key, ")"));
|
|
651
651
|
}
|
|
652
652
|
return { units: units, value: value };
|
|
653
653
|
}
|
|
654
654
|
exports.unitsValue = unitsValue;
|
|
655
|
-
exports.textGridding = helpers_1.createEnum('textGridding', 'none', {
|
|
655
|
+
exports.textGridding = (0, helpers_1.createEnum)('textGridding', 'none', {
|
|
656
656
|
none: 'None',
|
|
657
657
|
round: 'Rnd ',
|
|
658
658
|
});
|
|
659
|
-
exports.Ornt = helpers_1.createEnum('Ornt', 'horizontal', {
|
|
659
|
+
exports.Ornt = (0, helpers_1.createEnum)('Ornt', 'horizontal', {
|
|
660
660
|
horizontal: 'Hrzn',
|
|
661
661
|
vertical: 'Vrtc',
|
|
662
662
|
});
|
|
663
|
-
exports.Annt = helpers_1.createEnum('Annt', 'sharp', {
|
|
663
|
+
exports.Annt = (0, helpers_1.createEnum)('Annt', 'sharp', {
|
|
664
664
|
none: 'Anno',
|
|
665
665
|
sharp: 'antiAliasSharp',
|
|
666
666
|
crisp: 'AnCr',
|
|
@@ -669,7 +669,7 @@ exports.Annt = helpers_1.createEnum('Annt', 'sharp', {
|
|
|
669
669
|
platform: 'antiAliasPlatformGray',
|
|
670
670
|
platformLCD: 'antiAliasPlatformLCD',
|
|
671
671
|
});
|
|
672
|
-
exports.warpStyle = helpers_1.createEnum('warpStyle', 'none', {
|
|
672
|
+
exports.warpStyle = (0, helpers_1.createEnum)('warpStyle', 'none', {
|
|
673
673
|
none: 'warpNone',
|
|
674
674
|
arc: 'warpArc',
|
|
675
675
|
arcLower: 'warpArcLower',
|
|
@@ -688,7 +688,7 @@ exports.warpStyle = helpers_1.createEnum('warpStyle', 'none', {
|
|
|
688
688
|
twist: 'warpTwist',
|
|
689
689
|
custom: 'warpCustom',
|
|
690
690
|
});
|
|
691
|
-
exports.BlnM = helpers_1.createEnum('BlnM', 'normal', {
|
|
691
|
+
exports.BlnM = (0, helpers_1.createEnum)('BlnM', 'normal', {
|
|
692
692
|
'normal': 'Nrml',
|
|
693
693
|
'dissolve': 'Dslv',
|
|
694
694
|
'darken': 'Drkn',
|
|
@@ -721,66 +721,71 @@ exports.BlnM = helpers_1.createEnum('BlnM', 'normal', {
|
|
|
721
721
|
'height': 'Hght',
|
|
722
722
|
'subtraction': 'Sbtr', // 2nd version of subtract ?
|
|
723
723
|
});
|
|
724
|
-
exports.BESl = helpers_1.createEnum('BESl', 'inner bevel', {
|
|
724
|
+
exports.BESl = (0, helpers_1.createEnum)('BESl', 'inner bevel', {
|
|
725
725
|
'inner bevel': 'InrB',
|
|
726
726
|
'outer bevel': 'OtrB',
|
|
727
727
|
'emboss': 'Embs',
|
|
728
728
|
'pillow emboss': 'PlEb',
|
|
729
729
|
'stroke emboss': 'strokeEmboss',
|
|
730
730
|
});
|
|
731
|
-
exports.bvlT = helpers_1.createEnum('bvlT', 'smooth', {
|
|
731
|
+
exports.bvlT = (0, helpers_1.createEnum)('bvlT', 'smooth', {
|
|
732
732
|
'smooth': 'SfBL',
|
|
733
733
|
'chisel hard': 'PrBL',
|
|
734
734
|
'chisel soft': 'Slmt',
|
|
735
735
|
});
|
|
736
|
-
exports.BESs = helpers_1.createEnum('BESs', 'up', {
|
|
736
|
+
exports.BESs = (0, helpers_1.createEnum)('BESs', 'up', {
|
|
737
737
|
up: 'In ',
|
|
738
738
|
down: 'Out ',
|
|
739
739
|
});
|
|
740
|
-
exports.BETE = helpers_1.createEnum('BETE', 'softer', {
|
|
740
|
+
exports.BETE = (0, helpers_1.createEnum)('BETE', 'softer', {
|
|
741
741
|
softer: 'SfBL',
|
|
742
742
|
precise: 'PrBL',
|
|
743
743
|
});
|
|
744
|
-
exports.IGSr = helpers_1.createEnum('IGSr', 'edge', {
|
|
744
|
+
exports.IGSr = (0, helpers_1.createEnum)('IGSr', 'edge', {
|
|
745
745
|
edge: 'SrcE',
|
|
746
746
|
center: 'SrcC',
|
|
747
747
|
});
|
|
748
|
-
exports.GrdT = helpers_1.createEnum('GrdT', 'linear', {
|
|
748
|
+
exports.GrdT = (0, helpers_1.createEnum)('GrdT', 'linear', {
|
|
749
749
|
linear: 'Lnr ',
|
|
750
750
|
radial: 'Rdl ',
|
|
751
751
|
angle: 'Angl',
|
|
752
752
|
reflected: 'Rflc',
|
|
753
753
|
diamond: 'Dmnd',
|
|
754
754
|
});
|
|
755
|
-
exports.
|
|
755
|
+
exports.gradientInterpolationMethodType = (0, helpers_1.createEnum)('gradientInterpolationMethodType', 'perceptual', {
|
|
756
|
+
perceptual: 'Perc',
|
|
757
|
+
linear: 'Lnr',
|
|
758
|
+
classic: 'Gcls',
|
|
759
|
+
});
|
|
760
|
+
exports.ClrS = (0, helpers_1.createEnum)('ClrS', 'rgb', {
|
|
756
761
|
rgb: 'RGBC',
|
|
757
762
|
hsb: 'HSBl',
|
|
758
763
|
lab: 'LbCl',
|
|
759
764
|
});
|
|
760
|
-
exports.FStl = helpers_1.createEnum('FStl', 'outside', {
|
|
765
|
+
exports.FStl = (0, helpers_1.createEnum)('FStl', 'outside', {
|
|
761
766
|
outside: 'OutF',
|
|
762
767
|
center: 'CtrF',
|
|
763
768
|
inside: 'InsF'
|
|
764
769
|
});
|
|
765
|
-
exports.FrFl = helpers_1.createEnum('FrFl', 'color', {
|
|
770
|
+
exports.FrFl = (0, helpers_1.createEnum)('FrFl', 'color', {
|
|
766
771
|
color: 'SClr',
|
|
767
772
|
gradient: 'GrFl',
|
|
768
773
|
pattern: 'Ptrn',
|
|
769
774
|
});
|
|
770
|
-
exports.strokeStyleLineCapType = helpers_1.createEnum('strokeStyleLineCapType', 'butt', {
|
|
775
|
+
exports.strokeStyleLineCapType = (0, helpers_1.createEnum)('strokeStyleLineCapType', 'butt', {
|
|
771
776
|
butt: 'strokeStyleButtCap',
|
|
772
777
|
round: 'strokeStyleRoundCap',
|
|
773
778
|
square: 'strokeStyleSquareCap',
|
|
774
779
|
});
|
|
775
|
-
exports.strokeStyleLineJoinType = helpers_1.createEnum('strokeStyleLineJoinType', 'miter', {
|
|
780
|
+
exports.strokeStyleLineJoinType = (0, helpers_1.createEnum)('strokeStyleLineJoinType', 'miter', {
|
|
776
781
|
miter: 'strokeStyleMiterJoin',
|
|
777
782
|
round: 'strokeStyleRoundJoin',
|
|
778
783
|
bevel: 'strokeStyleBevelJoin',
|
|
779
784
|
});
|
|
780
|
-
exports.strokeStyleLineAlignment = helpers_1.createEnum('strokeStyleLineAlignment', 'inside', {
|
|
785
|
+
exports.strokeStyleLineAlignment = (0, helpers_1.createEnum)('strokeStyleLineAlignment', 'inside', {
|
|
781
786
|
inside: 'strokeStyleAlignInside',
|
|
782
787
|
center: 'strokeStyleAlignCenter',
|
|
783
788
|
outside: 'strokeStyleAlignOutside',
|
|
784
789
|
});
|
|
785
790
|
|
|
786
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVDO0FBS3ZDLHlDQUdxQjtBQUNyQix5Q0FHcUI7QUFNckIsU0FBUyxNQUFNLENBQUMsR0FBUztJQUN4QixJQUFNLE1BQU0sR0FBUyxFQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUF0QixDQUFzQixDQUFDLENBQUM7SUFDeEQsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDO0FBRUQsSUFBTSxRQUFRLEdBQVM7SUFDdEIsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsVUFBVTtJQUNsQixNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxhQUFhO0lBQ3JCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLGFBQWE7Q0FDckIsQ0FBQztBQUVGLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFFdEIsU0FBZ0IsWUFBWSxDQUFDLEtBQWM7SUFDMUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUNuQixDQUFDO0FBRkQsb0NBRUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUM5QyxPQUFPLEVBQUUsSUFBSSxNQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsSUFBTSxjQUFjLEdBQWdCO0lBQ25DLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLENBQUM7SUFDbkQsOERBQThEO0lBQzlELGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQztJQUN0RCxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUM7SUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzVCLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUNqQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMx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Q0FDZixDQUFDLENBQUM7QUFFVSxRQUFBLElBQUksR0FBRyxvQkFBVSxDQUF3QixNQUFNLEVBQUUsS0FBSyxFQUFFO0lBQ3BFLEdBQUcsRUFBRSxNQUFNO0lBQ1gsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsTUFBTTtDQUNYLENBQUMsQ0FBQztBQUVVLFFBQUEsSUFBSSxHQUFHLG9CQUFVLENBQWtDLE1BQU0sRUFBRSxTQUFTLEVBQUU7SUFDbEYsT0FBTyxFQUFFLE1BQU07SUFDZixNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxNQUFNO0NBQ2QsQ0FBQyxDQUFDO0FBRVUsUUFBQSxJQUFJLEdBQUcsb0JBQVUsQ0FBbUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUNqRixLQUFLLEVBQUUsTUFBTTtJQUNiLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLE9BQU8sRUFBRSxNQUFNO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsUUFBQSxzQkFBc0IsR0FBRyxvQkFBVSxDQUFjLHdCQUF3QixFQUFFLE1BQU0sRUFBRTtJQUMvRixJQUFJLEVBQUUsb0JBQW9CO0lBQzFCLEtBQUssRUFBRSxxQkFBcUI7SUFDNUIsTUFBTSxFQUFFLHNCQUFzQjtDQUM5QixDQUFDLENBQUM7QUFFVSxRQUFBLHVCQUF1QixHQUFHLG9CQUFVLENBQWUseUJBQXlCLEVBQUUsT0FBTyxFQUFFO0lBQ25HLEtBQUssRUFBRSxzQkFBc0I7SUFDN0IsS0FBSyxFQUFFLHNCQUFzQjtJQUM3QixLQUFLLEVBQUUsc0JBQXNCO0NBQzdCLENBQUMsQ0FBQztBQUVVLFFBQUEsd0JBQXdCLEdBQUcsb0JBQVUsQ0FBZ0IsMEJBQTBCLEVBQUUsUUFBUSxFQUFFO0lBQ3ZHLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsTUFBTSxFQUFFLHdCQUF3QjtJQUNoQyxPQUFPLEVBQUUseUJBQXlCO0NBQ2xDLENBQUMsQ0FBQyIsImZpbGUiOiJkZXNjcmlwdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRW51bSB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7XHJcblx0QW50aUFsaWFzLCBCZXZlbERpcmVjdGlvbiwgQmV2ZWxTdHlsZSwgQmV2ZWxUZWNobmlxdWUsIEJsZW5kTW9kZSwgR2xvd1NvdXJjZSwgR2xvd1RlY2huaXF1ZSwgR3JhZGllbnRTdHlsZSxcclxuXHRMaW5lQWxpZ25tZW50LCBMaW5lQ2FwVHlwZSwgTGluZUpvaW5UeXBlLCBPcmllbnRhdGlvbiwgVGV4dEdyaWRkaW5nLCBVbml0cywgVW5pdHNWYWx1ZSwgV2FycFN0eWxlXHJcbn0gZnJvbSAnLi9wc2QnO1xyXG5pbXBvcnQge1xyXG5cdFBzZFJlYWRlciwgcmVhZFNpZ25hdHVyZSwgcmVhZFVuaWNvZGVTdHJpbmcsIHJlYWRVaW50MzIsIHJlYWRVaW50OCwgcmVhZEZsb2F0NjQsXHJcblx0cmVhZEJ5dGVzLCByZWFkQXNjaWlTdHJpbmcsIHJlYWRJbnQzMiwgcmVhZEZsb2F0MzIsIHJlYWRJbnQzMkxFLCByZWFkVW5pY29kZVN0cmluZ1dpdGhMZW5ndGhcclxufSBmcm9tICcuL3BzZFJlYWRlcic7XHJcbmltcG9ydCB7XHJcblx0UHNkV3JpdGVyLCB3cml0ZVNpZ25hdHVyZSwgd3JpdGVCeXRlcywgd3JpdGVVaW50MzIsIHdyaXRlRmxvYXQ2NCwgd3JpdGVVaW50OCxcclxuXHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZywgd3JpdGVJbnQzMiwgd3JpdGVGbG9hdDMyLCB3cml0ZVVuaWNvZGVTdHJpbmdcclxufSBmcm9tICcuL3BzZFdyaXRlcic7XHJcblxyXG5pbnRlcmZhY2UgRGljdCB7IFtrZXk6IHN0cmluZ106IHN0cmluZzsgfVxyXG5pbnRlcmZhY2UgTmFtZUNsYXNzSUQgeyBuYW1lOiBzdHJpbmc7IGNsYXNzSUQ6IHN0cmluZzsgfVxyXG5pbnRlcmZhY2UgRXh0VHlwZURpY3QgeyBba2V5OiBzdHJpbmddOiBOYW1lQ2xhc3NJRDsgfVxyXG5cclxuZnVuY3Rpb24gcmV2TWFwKG1hcDogRGljdCkge1xyXG5cdGNvbnN0IHJlc3VsdDogRGljdCA9IHt9O1xyXG5cdE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChrZXkgPT4gcmVzdWx0W21hcFtrZXldXSA9IGtleSk7XHJcblx0cmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuY29uc3QgdW5pdHNNYXA6IERpY3QgPSB7XHJcblx0JyNBbmcnOiAnQW5nbGUnLFxyXG5cdCcjUnNsJzogJ0RlbnNpdHknLFxyXG5cdCcjUmx0JzogJ0Rpc3RhbmNlJyxcclxuXHQnI05uZSc6ICdOb25lJyxcclxuXHQnI1ByYyc6ICdQZXJjZW50JyxcclxuXHQnI1B4bCc6ICdQaXhlbHMnLFxyXG5cdCcjTWxtJzogJ01pbGxpbWV0ZXJzJyxcclxuXHQnI1BudCc6ICdQb2ludHMnLFxyXG5cdCdSclBpJzogJ1BpY2FzJyxcclxuXHQnUnJJbic6ICdJbmNoZXMnLFxyXG5cdCdSckNtJzogJ0NlbnRpbWV0ZXJzJyxcclxufTtcclxuXHJcbmNvbnN0IHVuaXRzTWFwUmV2ID0gcmV2TWFwKHVuaXRzTWFwKTtcclxubGV0IGxvZ0Vycm9ycyA9IGZhbHNlO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHNldExvZ0Vycm9ycyh2YWx1ZTogYm9vbGVhbikge1xyXG5cdGxvZ0Vycm9ycyA9IHZhbHVlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYWtlVHlwZShuYW1lOiBzdHJpbmcsIGNsYXNzSUQ6IHN0cmluZykge1xyXG5cdHJldHVybiB7IG5hbWUsIGNsYXNzSUQgfTtcclxufVxyXG5cclxuY29uc3QgZmllbGRUb0V4dFR5cGU6IEV4dFR5cGVEaWN0ID0ge1xyXG5cdHN0cm9rZVN0eWxlQ29udGVudDogbWFrZVR5cGUoJycsICdzb2xpZENvbG9yTGF5ZXInKSxcclxuXHQvLyBwcmludFByb29mU2V0dXA6IG1ha2VUeXBlKCfmoKHmoLforr7nva4nLCAncHJvb2ZTZXR1cCcpLCAvLyBURVNUSU5HXHJcblx0cHJpbnRQcm9vZlNldHVwOiBtYWtlVHlwZSgnUHJvb2YgU2V0dXAnLCAncHJvb2ZTZXR1cCcpLFxyXG5cdHBhdHRlcm5GaWxsOiBtYWtlVHlwZSgnJywgJ3BhdHRlcm5GaWxsJyksXHJcblx0R3JhZDogbWFrZVR5cGUoJ0dyYWRpZW50JywgJ0dyZG4nKSxcclxuXHRlYmJsOiBtYWtlVHlwZSgnJywgJ2ViYmwnKSxcclxuXHRTb0ZpOiBtYWtlVHlwZSgnJywgJ1NvRmknKSxcclxuXHRHckZsOiBtYWtlVHlwZSgnJywgJ0dyRmwnKSxcclxuXHRzZHdDOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHRoZ2xDOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHQnQ2xyICc6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdCd0aW50Q29sb3InOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHRPZnN0OiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRDaEZYOiBtYWtlVHlwZSgnJywgJ0NoRlgnKSxcclxuXHRNcGdTOiBtYWtlVHlwZSgnJywgJ1NocEMnKSxcclxuXHREclNoOiBtYWtlVHlwZSgnJywgJ0RyU2gnKSxcclxuXHRJclNoOiBtYWtlVHlwZSgnJywgJ0lyU2gnKSxcclxuXHRPckdsOiBtYWtlVHlwZSgnJywgJ09yR2wnKSxcclxuXHRJckdsOiBtYWtlVHlwZSgnJywgJ0lyR2wnKSxcclxuXHRUcm5TOiBtYWtlVHlwZSgnJywgJ1NocEMnKSxcclxuXHRQdHJuOiBtYWtlVHlwZSgnJywgJ1B0cm4nKSxcclxuXHRGckZYOiBtYWtlVHlwZSgnJywgJ0ZyRlgnKSxcclxuXHRwaGFzZTogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0ZnJhbWVTdGVwOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRkdXJhdGlvbjogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0Ym91bmRzOiBtYWtlVHlwZSgnJywgJ1JjdG4nKSxcclxuXHRjdXN0b21FbnZlbG9wZVdhcnA6IG1ha2VUeXBlKCcnLCAnY3VzdG9tRW52ZWxvcGVXYXJwJyksXHJcblx0d2FycDogbWFrZVR5cGUoJycsICd3YXJwJyksXHJcblx0J1N6ICAnOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRvcmlnaW46IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdGF1dG9FeHBhbmRPZmZzZXQ6IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdGtleU9yaWdpblNoYXBlQkJveDogbWFrZVR5cGUoJycsICd1bml0UmVjdCcpLFxyXG5cdFZyc246IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG5cdHBzVmVyc2lvbjogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0ZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZENvbG9yOiBtYWtlVHlwZSgnJywgJ1JHQkMnKSxcclxuXHRhcnRib2FyZFJlY3Q6IG1ha2VUeXBlKCcnLCAnY2xhc3NGbG9hdFJlY3QnKSxcclxuXHRrZXlPcmlnaW5SUmVjdFJhZGlpOiBtYWtlVHlwZSgnJywgJ3JhZGlpJyksXHJcblx0a2V5T3JpZ2luQm94Q29ybmVyczogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyQTogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyQjogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyQzogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0cmVjdGFuZ2xlQ29ybmVyRDogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0Y29tcEluZm86IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG5cdFRybmY6IG1ha2VUeXBlKCdUcmFuc2Zvcm0nLCAnVHJuZicpLFxyXG5cdHF1aWx0V2FycDogbWFrZVR5cGUoJycsICdxdWlsdFdhcnAnKSxcclxuXHRnZW5lcmF0b3JTZXR0aW5nczogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0Y3JlbWE6IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG59O1xyXG5cclxuY29uc3QgZmllbGRUb0FycmF5RXh0VHlwZTogRXh0VHlwZURpY3QgPSB7XHJcblx0J0NydiAnOiBtYWtlVHlwZSgnJywgJ0NyUHQnKSxcclxuXHRDbHJzOiBtYWtlVHlwZSgnJywgJ0NscnQnKSxcclxuXHRUcm5zOiBtYWtlVHlwZSgnJywgJ1RyblMnKSxcclxuXHRrZXlEZXNjcmlwdG9yTGlzdDogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0c29saWRGaWxsTXVsdGk6IG1ha2VUeXBlKCcnLCAnU29GaScpLFxyXG5cdGdyYWRpZW50RmlsbE11bHRpOiBtYWtlVHlwZSgnJywgJ0dyRmwnKSxcclxuXHRkcm9wU2hhZG93TXVsdGk6IG1ha2VUeXBlKCcnLCAnRHJTaCcpLFxyXG5cdGlubmVyU2hhZG93TXVsdGk6IG1ha2VUeXBlKCcnLCAnSXJTaCcpLFxyXG5cdGZyYW1lRlhNdWx0aTogbWFrZVR5cGUoJycsICdGckZYJyksXHJcbn07XHJcblxyXG5jb25zdCB0eXBlVG9GaWVsZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXTsgfSA9IHtcclxuXHQnVEVYVCc6IFtcclxuXHRcdCdUeHQgJywgJ3ByaW50ZXJOYW1lJywgJ05tICAnLCAnSWRudCcsICdibGFja0FuZFdoaXRlUHJlc2V0RmlsZU5hbWUnLCAnTFVUM0RGaWxlTmFtZScsXHJcblx0XHQncHJlc2V0RmlsZU5hbWUnLCAnY3VydmVzUHJlc2V0RmlsZU5hbWUnLCAnbWl4ZXJQcmVzZXRGaWxlTmFtZScsICdwbGFjZWQnLCAnZGVzY3JpcHRpb24nLCAncmVhc29uJyxcclxuXHRcdCdhcnRib2FyZFByZXNldE5hbWUnLCAnanNvbicsXHJcblx0XSxcclxuXHQndGR0YSc6IFsnRW5naW5lRGF0YScsICdMVVQzREZpbGVEYXRhJ10sXHJcblx0J2xvbmcnOiBbXHJcblx0XHQnVGV4dEluZGV4JywgJ1JuZFMnLCAnTWRwbicsICdTbXRoJywgJ0xjdG4nLCAnc3Ryb2tlU3R5bGVWZXJzaW9uJywgJ0xhSUQnLCAnVnJzbicsICdDbnQgJyxcclxuXHRcdCdCcmdoJywgJ0NudHInLCAnbWVhbnMnLCAndmlicmFuY2UnLCAnU3RydCcsICdid1ByZXNldEtpbmQnLCAncHJlc2V0S2luZCcsICdjb21wJywgJ2NvbXBJRCcsICdvcmlnaW5hbENvbXBJRCcsXHJcblx0XHQnY3VydmVzUHJlc2V0S2luZCcsICdtaXhlclByZXNldEtpbmQnLCAndU9yZGVyJywgJ3ZPcmRlcicsICdQZ05tJywgJ3RvdGFsUGFnZXMnLCAnQ3JvcCcsXHJcblx0XHQnbnVtZXJhdG9yJywgJ2Rlbm9taW5hdG9yJywgJ2ZyYW1lQ291bnQnLCAnQW5udCcsICdrZXlPcmlnaW5UeXBlJywgJ3VuaXRWYWx1ZVF1YWRWZXJzaW9uJyxcclxuXHRcdCdrZXlPcmlnaW5JbmRleCcsICdtYWpvcicsICdtaW5vcicsICdmaXgnLCAnZG9jRGVmYXVsdE5ld0FydGJvYXJkQmFja2dyb3VuZFR5cGUnLCAnYXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZScsXHJcblx0XHQnbnVtTW9kaWZ5aW5nRlgnLCAnZGVmb3JtTnVtUm93cycsICdkZWZvcm1OdW1Db2xzJyxcclxuXHRdLFxyXG5cdCdlbnVtJzogW1xyXG5cdFx0J3RleHRHcmlkZGluZycsICdPcm50JywgJ3dhcnBTdHlsZScsICd3YXJwUm90YXRlJywgJ0ludGUnLCAnQmx0bicsICdDbHJTJyxcclxuXHRcdCdzZHdNJywgJ2hnbE0nLCAnYnZsVCcsICdidmxTJywgJ2J2bEQnLCAnTWQgICcsICdnbHdTJywgJ0dyZEYnLCAnR2x3VCcsXHJcblx0XHQnc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZScsICdzdHJva2VTdHlsZUxpbmVKb2luVHlwZScsICdzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQnLFxyXG5cdFx0J3N0cm9rZVN0eWxlQmxlbmRNb2RlJywgJ1BudFQnLCAnU3R5bCcsICdsb29rdXBUeXBlJywgJ0xVVEZvcm1hdCcsICdkYXRhT3JkZXInLFxyXG5cdFx0J3RhYmxlT3JkZXInLCAnZW5hYmxlQ29tcENvcmUnLCAnZW5hYmxlQ29tcENvcmVHUFUnLCAnY29tcENvcmVTdXBwb3J0JywgJ2NvbXBDb3JlR1BVU3VwcG9ydCcsICdFbmduJyxcclxuXHRcdCdlbmFibGVDb21wQ29yZVRocmVhZHMnLFxyXG5cdF0sXHJcblx0J2Jvb2wnOiBbXHJcblx0XHQnUHN0UycsICdwcmludFNpeHRlZW5CaXQnLCAnbWFzdGVyRlhTd2l0Y2gnLCAnZW5hYicsICd1Z2xnJywgJ2FudGlhbGlhc0dsb3NzJyxcclxuXHRcdCd1c2VTaGFwZScsICd1c2VUZXh0dXJlJywgJ21hc3RlckZYU3dpdGNoJywgJ3VnbGcnLCAnYW50aWFsaWFzR2xvc3MnLCAndXNlU2hhcGUnLFxyXG5cdFx0J3VzZVRleHR1cmUnLCAnQWxnbicsICdSdnJzJywgJ0R0aHInLCAnSW52cicsICdWY3RDJywgJ1NoVHInLCAnbGF5ZXJDb25jZWFscycsXHJcblx0XHQnc3Ryb2tlRW5hYmxlZCcsICdmaWxsRW5hYmxlZCcsICdzdHJva2VTdHlsZVNjYWxlTG9jaycsICdzdHJva2VTdHlsZVN0cm9rZUFkanVzdCcsXHJcblx0XHQnaGFyZFByb29mJywgJ01wQmwnLCAncGFwZXJXaGl0ZScsICd1c2VMZWdhY3knLCAnQXV0bycsICdMYWIgJywgJ3VzZVRpbnQnLCAna2V5U2hhcGVJbnZhbGlkYXRlZCcsXHJcblx0XHQnYXV0b0V4cGFuZEVuYWJsZWQnLCAnYXV0b05lc3RFbmFibGVkJywgJ2F1dG9Qb3NpdGlvbkVuYWJsZWQnLCAnc2hyaW5rd3JhcE9uU2F2ZUVuYWJsZWQnLFxyXG5cdFx0J3ByZXNlbnQnLCAnc2hvd0luRGlhbG9nJywgJ292ZXJwcmludCcsXHJcblx0XSxcclxuXHQnZG91Yic6IFtcclxuXHRcdCd3YXJwVmFsdWUnLCAnd2FycFBlcnNwZWN0aXZlJywgJ3dhcnBQZXJzcGVjdGl2ZU90aGVyJywgJ0ludHInLCAnV2R0aCcsICdIZ2h0JyxcclxuXHRcdCdzdHJva2VTdHlsZU1pdGVyTGltaXQnLCAnc3Ryb2tlU3R5bGVSZXNvbHV0aW9uJywgJ2xheWVyVGltZScsICdrZXlPcmlnaW5SZXNvbHV0aW9uJyxcclxuXHRcdCd4eCcsICd4eScsICd5eCcsICd5eScsICd0eCcsICd0eScsXHJcblx0XSxcclxuXHQnVW50Ric6IFtcclxuXHRcdCdTY2wgJywgJ3Nkd08nLCAnaGdsTycsICdsYWdsJywgJ0xhbGQnLCAnc3JnUicsICdibHVyJywgJ1NmdG4nLCAnT3BjdCcsICdEc3RuJywgJ0FuZ2wnLFxyXG5cdFx0J0NrbXQnLCAnTm9zZScsICdJbnByJywgJ1NoZE4nLCAnc3Ryb2tlU3R5bGVMaW5lV2lkdGgnLCAnc3Ryb2tlU3R5bGVMaW5lRGFzaE9mZnNldCcsXHJcblx0XHQnc3Ryb2tlU3R5bGVPcGFjaXR5JywgJ0ggICAnLCAnVG9wICcsICdMZWZ0JywgJ0J0b20nLCAnUmdodCcsICdSc2x0JyxcclxuXHRcdCd0b3BSaWdodCcsICd0b3BMZWZ0JywgJ2JvdHRvbUxlZnQnLCAnYm90dG9tUmlnaHQnLFxyXG5cdF0sXHJcblx0J1ZsTHMnOiBbXHJcblx0XHQnQ3J2ICcsICdDbHJzJywgJ01ubSAnLCAnTXhtICcsICdUcm5zJywgJ3BhdGhMaXN0JywgJ3N0cm9rZVN0eWxlTGluZURhc2hTZXQnLCAnRnJMcycsXHJcblx0XHQnTGFTdCcsICdUcm5mJywgJ25vbkFmZmluZVRyYW5zZm9ybScsICdrZXlEZXNjcmlwdG9yTGlzdCcsICdndWlkZUluZGVjZXMnLCAnZ3JhZGllbnRGaWxsTXVsdGknLFxyXG5cdFx0J3NvbGlkRmlsbE11bHRpJywgJ2ZyYW1lRlhNdWx0aScsICdpbm5lclNoYWRvd011bHRpJywgJ2Ryb3BTaGFkb3dNdWx0aScsXHJcblx0XSxcclxuXHQnT2JBcic6IFsnbWVzaFBvaW50cycsICdxdWlsdFNsaWNlWCcsICdxdWlsdFNsaWNlWSddLFxyXG5cdCdvYmogJzogWydudWxsJ10sXHJcbn07XHJcblxyXG5jb25zdCBjaGFubmVscyA9IFtcclxuXHQnUmQgICcsICdHcm4gJywgJ0JsICAnLCAnWWxsdycsICdZbHcgJywgJ0N5biAnLCAnTWdudCcsICdCbGNrJywgJ0dyeSAnLCAnTG1uYycsICdBICAgJywgJ0IgICAnLFxyXG5dO1xyXG5cclxuY29uc3QgZmllbGRUb0FycmF5VHlwZTogRGljdCA9IHtcclxuXHQnTW5tICc6ICdsb25nJyxcclxuXHQnTXhtICc6ICdsb25nJyxcclxuXHQnRnJMcyc6ICdsb25nJyxcclxuXHQnc3Ryb2tlU3R5bGVMaW5lRGFzaFNldCc6ICdVbnRGJyxcclxuXHQnVHJuZic6ICdkb3ViJyxcclxuXHQnbm9uQWZmaW5lVHJhbnNmb3JtJzogJ2RvdWInLFxyXG5cdCdrZXlEZXNjcmlwdG9yTGlzdCc6ICdPYmpjJyxcclxuXHQnZ3JhZGllbnRGaWxsTXVsdGknOiAnT2JqYycsXHJcblx0J3NvbGlkRmlsbE11bHRpJzogJ09iamMnLFxyXG5cdCdmcmFtZUZYTXVsdGknOiAnT2JqYycsXHJcblx0J2lubmVyU2hhZG93TXVsdGknOiAnT2JqYycsXHJcblx0J2Ryb3BTaGFkb3dNdWx0aSc6ICdPYmpjJyxcclxufTtcclxuXHJcbmNvbnN0IGZpZWxkVG9UeXBlOiBEaWN0ID0ge307XHJcblxyXG5mb3IgKGNvbnN0IHR5cGUgb2YgT2JqZWN0LmtleXModHlwZVRvRmllbGQpKSB7XHJcblx0Zm9yIChjb25zdCBmaWVsZCBvZiB0eXBlVG9GaWVsZFt0eXBlXSkge1xyXG5cdFx0ZmllbGRUb1R5cGVbZmllbGRdID0gdHlwZTtcclxuXHR9XHJcbn1cclxuXHJcbmZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LmtleXMoZmllbGRUb0V4dFR5cGUpKSB7XHJcblx0aWYgKCFmaWVsZFRvVHlwZVtmaWVsZF0pIGZpZWxkVG9UeXBlW2ZpZWxkXSA9ICdPYmpjJztcclxufVxyXG5cclxuZm9yIChjb25zdCBmaWVsZCBvZiBPYmplY3Qua2V5cyhmaWVsZFRvQXJyYXlFeHRUeXBlKSkge1xyXG5cdGZpZWxkVG9BcnJheVR5cGVbZmllbGRdID0gJ09iamMnO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRUeXBlQnlLZXkoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHJvb3Q6IHN0cmluZykge1xyXG5cdGlmIChrZXkgPT09ICdTeiAgJykge1xyXG5cdFx0cmV0dXJuICgnV2R0aCcgaW4gdmFsdWUpID8gJ09iamMnIDogKCgndW5pdHMnIGluIHZhbHVlKSA/ICdVbnRGJyA6ICdkb3ViJyk7XHJcblx0fSBlbHNlIGlmIChrZXkgPT09ICdUeXBlJykge1xyXG5cdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyAnZW51bScgOiAnbG9uZyc7XHJcblx0fSBlbHNlIGlmIChrZXkgPT09ICdBbnRBJykge1xyXG5cdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyAnZW51bScgOiAnYm9vbCc7XHJcblx0fSBlbHNlIGlmIChrZXkgPT09ICdIcnpuJyB8fCBrZXkgPT09ICdWcnRjJyB8fCBrZXkgPT09ICdUb3AgJyB8fCBrZXkgPT09ICdMZWZ0JyB8fCBrZXkgPT09ICdCdG9tJyB8fCBrZXkgPT09ICdSZ2h0Jykge1xyXG5cdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyAnZG91YicgOiAnVW50Ric7XHJcblx0fSBlbHNlIGlmIChrZXkgPT09ICdWcnNuJykge1xyXG5cdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgPyAnbG9uZycgOiAnT2JqYyc7XHJcblx0fSBlbHNlIGlmIChrZXkgPT09ICdSZCAgJyB8fCBrZXkgPT09ICdHcm4gJyB8fCBrZXkgPT09ICdCbCAgJykge1xyXG5cdFx0cmV0dXJuIHJvb3QgPT09ICdhcnRkJyA/ICdsb25nJyA6ICdkb3ViJztcclxuXHR9IGVsc2UgaWYgKGtleSA9PT0gJ1RybmYnKSB7XHJcblx0XHRyZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAnVmxMcycgOiAnT2JqYyc7XHJcblx0fSBlbHNlIHtcclxuXHRcdHJldHVybiBmaWVsZFRvVHlwZVtrZXldO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXI6IFBzZFJlYWRlcikge1xyXG5cdGNvbnN0IGxlbmd0aCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdHJldHVybiByZWFkQXNjaWlTdHJpbmcocmVhZGVyLCBsZW5ndGggfHwgNCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyOiBQc2RXcml0ZXIsIHZhbHVlOiBzdHJpbmcpIHtcclxuXHRpZiAodmFsdWUubGVuZ3RoID09PSA0ICYmIHZhbHVlICE9PSAnd2FycCcpIHtcclxuXHRcdC8vIHdyaXRlIGNsYXNzSWRcclxuXHRcdHdyaXRlSW50MzIod3JpdGVyLCAwKTtcclxuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdmFsdWUpO1xyXG5cdH0gZWxzZSB7XHJcblx0XHQvLyB3cml0ZSBhc2NpaSBzdHJpbmdcclxuXHRcdHdyaXRlSW50MzIod3JpdGVyLCB2YWx1ZS5sZW5ndGgpO1xyXG5cclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIHZhbHVlLmNoYXJDb2RlQXQoaSkpO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlYWREZXNjcmlwdG9yU3RydWN0dXJlKHJlYWRlcjogUHNkUmVhZGVyKSB7XHJcblx0Y29uc3Qgb2JqZWN0OiBhbnkgPSB7fTtcclxuXHQvLyBvYmplY3QuX19zdHJ1Y3QgPVxyXG5cdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdGNvbnN0IGl0ZW1zQ291bnQgPSByZWFkVWludDMyKHJlYWRlcik7XHJcblxyXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXNDb3VudDsgaSsrKSB7XHJcblx0XHRjb25zdCBrZXkgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHRcdGNvbnN0IHR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhgPiAnJHtrZXl9JyAnJHt0eXBlfSdgKTtcclxuXHRcdGNvbnN0IGRhdGEgPSByZWFkT1NUeXBlKHJlYWRlciwgdHlwZSk7XHJcblx0XHQvLyBpZiAoIWdldFR5cGVCeUtleShrZXksIGRhdGEpKSBjb25zb2xlLmxvZyhgPiAnJHtrZXl9JyAnJHt0eXBlfSdgLCBkYXRhKTtcclxuXHRcdG9iamVjdFtrZXldID0gZGF0YTtcclxuXHR9XHJcblx0Ly8gY29uc29sZS5sb2coJy8vJywgc3RydWN0KTtcclxuXHRyZXR1cm4gb2JqZWN0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVEZXNjcmlwdG9yU3RydWN0dXJlKHdyaXRlcjogUHNkV3JpdGVyLCBuYW1lOiBzdHJpbmcsIGNsYXNzSWQ6IHN0cmluZywgdmFsdWU6IGFueSwgcm9vdDogc3RyaW5nKSB7XHJcblx0aWYgKGxvZ0Vycm9ycyAmJiAhY2xhc3NJZCkgY29uc29sZS5sb2coJ01pc3NpbmcgY2xhc3NJZCBmb3I6ICcsIG5hbWUsIGNsYXNzSWQsIHZhbHVlKTtcclxuXHJcblx0Ly8gd3JpdGUgY2xhc3Mgc3RydWN0dXJlXHJcblx0d3JpdGVVbmljb2RlU3RyaW5nV2l0aFBhZGRpbmcod3JpdGVyLCBuYW1lKTtcclxuXHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgY2xhc3NJZCk7XHJcblxyXG5cdGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XHJcblx0d3JpdGVVaW50MzIod3JpdGVyLCBrZXlzLmxlbmd0aCk7XHJcblxyXG5cdGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcclxuXHRcdGxldCB0eXBlID0gZ2V0VHlwZUJ5S2V5KGtleSwgdmFsdWVba2V5XSwgcm9vdCk7XHJcblx0XHRsZXQgZXh0VHlwZSA9IGZpZWxkVG9FeHRUeXBlW2tleV07XHJcblxyXG5cdFx0aWYgKChrZXkgPT09ICdTdHJ0JyB8fCBrZXkgPT09ICdCcmdoJykgJiYgJ0ggICAnIGluIHZhbHVlKSB7XHJcblx0XHRcdHR5cGUgPSAnZG91Yic7XHJcblx0XHR9IGVsc2UgaWYgKGNoYW5uZWxzLmluZGV4T2Yoa2V5KSAhPT0gLTEpIHtcclxuXHRcdFx0dHlwZSA9IChjbGFzc0lkID09PSAnUkdCQycgJiYgcm9vdCAhPT0gJ2FydGQnKSA/ICdkb3ViJyA6ICdsb25nJztcclxuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAncHJvZmlsZScpIHtcclxuXHRcdFx0dHlwZSA9IGNsYXNzSWQgPT09ICdwcmludE91dHB1dCcgPyAnVEVYVCcgOiAndGR0YSc7XHJcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ3N0cm9rZVN0eWxlQ29udGVudCcpIHtcclxuXHRcdFx0aWYgKHZhbHVlW2tleV1bJ0NsciAnXSkge1xyXG5cdFx0XHRcdGV4dFR5cGUgPSBtYWtlVHlwZSgnJywgJ3NvbGlkQ29sb3JMYXllcicpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlW2tleV0uR3JhZCkge1xyXG5cdFx0XHRcdGV4dFR5cGUgPSBtYWtlVHlwZSgnJywgJ2dyYWRpZW50TGF5ZXInKTtcclxuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZVtrZXldLlB0cm4pIHtcclxuXHRcdFx0XHRleHRUeXBlID0gbWFrZVR5cGUoJycsICdwYXR0ZXJuTGF5ZXInKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRsb2dFcnJvcnMgJiYgY29uc29sZS5sb2coJ0ludmFsaWQgc3Ryb2tlU3R5bGVDb250ZW50IHZhbHVlJywgdmFsdWVba2V5XSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoa2V5ID09PSAnYm91bmRzJyAmJiByb290ID09PSAncXVpbHRXYXJwJykge1xyXG5cdFx0XHRleHRUeXBlID0gbWFrZVR5cGUoJycsICdjbGFzc0Zsb2F0UmVjdCcpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChleHRUeXBlICYmIGV4dFR5cGUuY2xhc3NJRCA9PT0gJ1JHQkMnKSB7XHJcblx0XHRcdGlmICgnSCAgICcgaW4gdmFsdWVba2V5XSkgZXh0VHlwZSA9IHsgY2xhc3NJRDogJ0hTQkMnLCBuYW1lOiAnJyB9O1xyXG5cdFx0XHQvLyBUT0RPOiBvdGhlciBjb2xvciBzcGFjZXNcclxuXHRcdH1cclxuXHJcblx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwga2V5KTtcclxuXHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdHlwZSB8fCAnbG9uZycpO1xyXG5cdFx0d3JpdGVPU1R5cGUod3JpdGVyLCB0eXBlIHx8ICdsb25nJywgdmFsdWVba2V5XSwga2V5LCBleHRUeXBlLCByb290KTtcclxuXHRcdGlmIChsb2dFcnJvcnMgJiYgIXR5cGUpIGNvbnNvbGUubG9nKGBNaXNzaW5nIGRlc2NyaXB0b3IgZmllbGQgdHlwZSBmb3I6ICcke2tleX0nIGluYCwgdmFsdWUpO1xyXG5cdH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVhZE9TVHlwZShyZWFkZXI6IFBzZFJlYWRlciwgdHlwZTogc3RyaW5nKSB7XHJcblx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRjYXNlICdvYmogJzogLy8gUmVmZXJlbmNlXHJcblx0XHRcdHJldHVybiByZWFkUmVmZXJlbmNlU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRjYXNlICdPYmpjJzogLy8gRGVzY3JpcHRvclxyXG5cdFx0Y2FzZSAnR2xiTyc6IC8vIEdsb2JhbE9iamVjdCBzYW1lIGFzIERlc2NyaXB0b3JcclxuXHRcdFx0cmV0dXJuIHJlYWREZXNjcmlwdG9yU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRjYXNlICdWbExzJzogeyAvLyBMaXN0XHJcblx0XHRcdGNvbnN0IGxlbmd0aCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBpdGVtczogYW55W10gPSBbXTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCB0eXBlID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCcgID4nLCB0eXBlKTtcclxuXHRcdFx0XHRpdGVtcy5wdXNoKHJlYWRPU1R5cGUocmVhZGVyLCB0eXBlKSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBpdGVtcztcclxuXHRcdH1cclxuXHRcdGNhc2UgJ2RvdWInOiAvLyBEb3VibGVcclxuXHRcdFx0cmV0dXJuIHJlYWRGbG9hdDY0KHJlYWRlcik7XHJcblx0XHRjYXNlICdVbnRGJzogeyAvLyBVbml0IGRvdWJsZVxyXG5cdFx0XHRjb25zdCB1bml0cyA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgdmFsdWUgPSByZWFkRmxvYXQ2NChyZWFkZXIpO1xyXG5cdFx0XHRpZiAoIXVuaXRzTWFwW3VuaXRzXSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3VuaXRzfWApO1xyXG5cdFx0XHRyZXR1cm4geyB1bml0czogdW5pdHNNYXBbdW5pdHNdLCB2YWx1ZSB9O1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnVW5GbCc6IHsgLy8gVW5pdCBmbG9hdFxyXG5cdFx0XHRjb25zdCB1bml0cyA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgdmFsdWUgPSByZWFkRmxvYXQzMihyZWFkZXIpO1xyXG5cdFx0XHRpZiAoIXVuaXRzTWFwW3VuaXRzXSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3VuaXRzfWApO1xyXG5cdFx0XHRyZXR1cm4geyB1bml0czogdW5pdHNNYXBbdW5pdHNdLCB2YWx1ZSB9O1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnVEVYVCc6IC8vIFN0cmluZ1xyXG5cdFx0XHRyZXR1cm4gcmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKTtcclxuXHRcdGNhc2UgJ2VudW0nOiB7IC8vIEVudW1lcmF0ZWRcclxuXHRcdFx0Y29uc3QgdHlwZSA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCB2YWx1ZSA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0XHRyZXR1cm4gYCR7dHlwZX0uJHt2YWx1ZX1gO1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnbG9uZyc6IC8vIEludGVnZXJcclxuXHRcdFx0cmV0dXJuIHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnY29tcCc6IHsgLy8gTGFyZ2UgSW50ZWdlclxyXG5cdFx0XHRjb25zdCBsb3cgPSByZWFkVWludDMyKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IGhpZ2ggPSByZWFkVWludDMyKHJlYWRlcik7XHJcblx0XHRcdHJldHVybiB7IGxvdywgaGlnaCB9O1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnYm9vbCc6IC8vIEJvb2xlYW5cclxuXHRcdFx0cmV0dXJuICEhcmVhZFVpbnQ4KHJlYWRlcik7XHJcblx0XHRjYXNlICd0eXBlJzogLy8gQ2xhc3NcclxuXHRcdGNhc2UgJ0dsYkMnOiAvLyBDbGFzc1xyXG5cdFx0XHRyZXR1cm4gcmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRjYXNlICdhbGlzJzogeyAvLyBBbGlhc1xyXG5cdFx0XHRjb25zdCBsZW5ndGggPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0cmV0dXJuIHJlYWRBc2NpaVN0cmluZyhyZWFkZXIsIGxlbmd0aCk7XHJcblx0XHR9XHJcblx0XHRjYXNlICd0ZHRhJzogeyAvLyBSYXcgRGF0YVxyXG5cdFx0XHRjb25zdCBsZW5ndGggPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0cmV0dXJuIHJlYWRCeXRlcyhyZWFkZXIsIGxlbmd0aCk7XHJcblx0XHR9XHJcblx0XHRjYXNlICdPYkFyJzogeyAvLyBPYmplY3QgYXJyYXlcclxuXHRcdFx0cmVhZEludDMyKHJlYWRlcik7IC8vIHZlcnNpb246IDE2XHJcblx0XHRcdHJlYWRVbmljb2RlU3RyaW5nKHJlYWRlcik7IC8vIG5hbWU6ICcnXHJcblx0XHRcdHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpOyAvLyAncmF0aW9uYWxQb2ludCdcclxuXHRcdFx0Y29uc3QgbGVuZ3RoID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IGl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IHR5cGUxID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7IC8vIHR5cGUgSHJ6biB8IFZydGNcclxuXHRcdFx0XHRyZWFkU2lnbmF0dXJlKHJlYWRlcik7IC8vIFVuRmxcclxuXHJcblx0XHRcdFx0cmVhZFNpZ25hdHVyZShyZWFkZXIpOyAvLyB1bml0cyA/ICcjUHhsJ1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlc0NvdW50ID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdFx0Y29uc3QgdmFsdWVzOiBudW1iZXJbXSA9IFtdO1xyXG5cdFx0XHRcdGZvciAobGV0IGogPSAwOyBqIDwgdmFsdWVzQ291bnQ7IGorKykge1xyXG5cdFx0XHRcdFx0dmFsdWVzLnB1c2gocmVhZEZsb2F0NjQocmVhZGVyKSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRpdGVtcy5wdXNoKHsgdHlwZTogdHlwZTEsIHZhbHVlcyB9KTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIGl0ZW1zO1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnUHRoICc6IHsgLy8gRmlsZSBwYXRoXHJcblx0XHRcdC8qY29uc3QgbGVuZ3RoID0qLyByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0Y29uc3Qgc2lnID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cdFx0XHQvKmNvbnN0IHBhdGhTaXplID0qLyByZWFkSW50MzJMRShyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBjaGFyc0NvdW50ID0gcmVhZEludDMyTEUocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgcGF0aCA9IHJlYWRVbmljb2RlU3RyaW5nV2l0aExlbmd0aChyZWFkZXIsIGNoYXJzQ291bnQpO1xyXG5cdFx0XHRyZXR1cm4geyBzaWcsIHBhdGggfTtcclxuXHRcdH1cclxuXHRcdGRlZmF1bHQ6XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBUeVNoIGRlc2NyaXB0b3IgT1NUeXBlOiAke3R5cGV9IGF0ICR7cmVhZGVyLm9mZnNldC50b1N0cmluZygxNil9YCk7XHJcblx0fVxyXG59XHJcblxyXG5jb25zdCBPYkFyVHlwZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkOyB9ID0ge1xyXG5cdG1lc2hQb2ludHM6ICdyYXRpb25hbFBvaW50JyxcclxuXHRxdWlsdFNsaWNlWDogJ1VudEYnLFxyXG5cdHF1aWx0U2xpY2VZOiAnVW50RicsXHJcbn07XHJcblxyXG5mdW5jdGlvbiB3cml0ZU9TVHlwZSh3cml0ZXI6IFBzZFdyaXRlciwgdHlwZTogc3RyaW5nLCB2YWx1ZTogYW55LCBrZXk6IHN0cmluZywgZXh0VHlwZTogTmFtZUNsYXNzSUQgfCB1bmRlZmluZWQsIHJvb3Q6IHN0cmluZykge1xyXG5cdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0Y2FzZSAnb2JqICc6IC8vIFJlZmVyZW5jZVxyXG5cdFx0XHR3cml0ZVJlZmVyZW5jZVN0cnVjdHVyZSh3cml0ZXIsIGtleSwgdmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ09iamMnOiAvLyBEZXNjcmlwdG9yXHJcblx0XHRjYXNlICdHbGJPJzogLy8gR2xvYmFsT2JqZWN0IHNhbWUgYXMgRGVzY3JpcHRvclxyXG5cdFx0XHRpZiAoIWV4dFR5cGUpIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBleHQgdHlwZSBmb3I6ICcke2tleX0nICgke0pTT04uc3RyaW5naWZ5KHZhbHVlKX0pYCk7XHJcblx0XHRcdHdyaXRlRGVzY3JpcHRvclN0cnVjdHVyZSh3cml0ZXIsIGV4dFR5cGUubmFtZSwgZXh0VHlwZS5jbGFzc0lELCB2YWx1ZSwgcm9vdCk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnVmxMcyc6IC8vIExpc3RcclxuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlLmxlbmd0aCk7XHJcblxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0Y29uc3QgdHlwZSA9IGZpZWxkVG9BcnJheVR5cGVba2V5XTtcclxuXHRcdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHR5cGUgfHwgJ2xvbmcnKTtcclxuXHRcdFx0XHR3cml0ZU9TVHlwZSh3cml0ZXIsIHR5cGUgfHwgJ2xvbmcnLCB2YWx1ZVtpXSwgJycsIGZpZWxkVG9BcnJheUV4dFR5cGVba2V5XSwgcm9vdCk7XHJcblx0XHRcdFx0aWYgKGxvZ0Vycm9ycyAmJiAhdHlwZSkgY29uc29sZS5sb2coYE1pc3NpbmcgZGVzY3JpcHRvciBhcnJheSB0eXBlIGZvcjogJyR7a2V5fScgaW5gLCB2YWx1ZSk7XHJcblx0XHRcdH1cclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdkb3ViJzogLy8gRG91YmxlXHJcblx0XHRcdHdyaXRlRmxvYXQ2NCh3cml0ZXIsIHZhbHVlKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdVbnRGJzogLy8gVW5pdCBkb3VibGVcclxuXHRcdFx0aWYgKCF1bml0c01hcFJldlt2YWx1ZS51bml0c10pIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt2YWx1ZS51bml0c30gaW4gJHtrZXl9YCk7XHJcblx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgdW5pdHNNYXBSZXZbdmFsdWUudW5pdHNdKTtcclxuXHRcdFx0d3JpdGVGbG9hdDY0KHdyaXRlciwgdmFsdWUudmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ1VuRmwnOiAvLyBVbml0IGZsb2F0XHJcblx0XHRcdGlmICghdW5pdHNNYXBSZXZbdmFsdWUudW5pdHNdKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7dmFsdWUudW5pdHN9IGluICR7a2V5fWApO1xyXG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHVuaXRzTWFwUmV2W3ZhbHVlLnVuaXRzXSk7XHJcblx0XHRcdHdyaXRlRmxvYXQzMih3cml0ZXIsIHZhbHVlLnZhbHVlKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdURVhUJzogLy8gU3RyaW5nXHJcblx0XHRcdHdyaXRlVW5pY29kZVN0cmluZ1dpdGhQYWRkaW5nKHdyaXRlciwgdmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ2VudW0nOiB7IC8vIEVudW1lcmF0ZWRcclxuXHRcdFx0Y29uc3QgW190eXBlLCB2YWxdID0gdmFsdWUuc3BsaXQoJy4nKTtcclxuXHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIF90eXBlKTtcclxuXHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIHZhbCk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnbG9uZyc6IC8vIEludGVnZXJcclxuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHQvLyBjYXNlICdjb21wJzogLy8gTGFyZ2UgSW50ZWdlclxyXG5cdFx0Ly8gXHR3cml0ZUxhcmdlSW50ZWdlcihyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnYm9vbCc6IC8vIEJvb2xlYW5cclxuXHRcdFx0d3JpdGVVaW50OCh3cml0ZXIsIHZhbHVlID8gMSA6IDApO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdC8vIGNhc2UgJ3R5cGUnOiAvLyBDbGFzc1xyXG5cdFx0Ly8gY2FzZSAnR2xiQyc6IC8vIENsYXNzXHJcblx0XHQvLyBcdHdyaXRlQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdC8vIGNhc2UgJ2FsaXMnOiAvLyBBbGlhc1xyXG5cdFx0Ly8gXHR3cml0ZUFsaWFzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRjYXNlICd0ZHRhJzogLy8gUmF3IERhdGFcclxuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIHZhbHVlLmJ5dGVMZW5ndGgpO1xyXG5cdFx0XHR3cml0ZUJ5dGVzKHdyaXRlciwgdmFsdWUpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ09iQXInOiB7IC8vIE9iamVjdCBhcnJheVxyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgMTYpOyAvLyB2ZXJzaW9uXHJcblx0XHRcdHdyaXRlVW5pY29kZVN0cmluZ1dpdGhQYWRkaW5nKHdyaXRlciwgJycpOyAvLyBuYW1lXHJcblx0XHRcdGNvbnN0IHR5cGUgPSBPYkFyVHlwZXNba2V5XTtcclxuXHRcdFx0aWYgKCF0eXBlKSB0aHJvdyBuZXcgRXJyb3IoYE5vdCBpbXBsZW1lbnRlZCBPYkFyVHlwZSBmb3I6ICR7a2V5fWApO1xyXG5cdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgdHlwZSk7XHJcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCB2YWx1ZS5sZW5ndGgpO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCB2YWx1ZVtpXS50eXBlKTsgLy8gSHJ6biB8IFZydGNcclxuXHRcdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsICdVbkZsJyk7XHJcblx0XHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnI1B4bCcpO1xyXG5cdFx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCB2YWx1ZVtpXS52YWx1ZXMubGVuZ3RoKTtcclxuXHJcblx0XHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCB2YWx1ZVtpXS52YWx1ZXMubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdHdyaXRlRmxvYXQ2NCh3cml0ZXIsIHZhbHVlW2ldLnZhbHVlc1tqXSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0fVxyXG5cdFx0Ly8gY2FzZSAnUHRoICc6IC8vIEZpbGUgcGF0aFxyXG5cdFx0Ly8gXHR3cml0ZUZpbGVQYXRoKHJlYWRlcik7XHJcblx0XHRkZWZhdWx0OlxyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYE5vdCBpbXBsZW1lbnRlZCBkZXNjcmlwdG9yIE9TVHlwZTogJHt0eXBlfWApO1xyXG5cdH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVhZFJlZmVyZW5jZVN0cnVjdHVyZShyZWFkZXI6IFBzZFJlYWRlcikge1xyXG5cdGNvbnN0IGl0ZW1zQ291bnQgPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRjb25zdCBpdGVtczogYW55W10gPSBbXTtcclxuXHJcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtc0NvdW50OyBpKyspIHtcclxuXHRcdGNvbnN0IHR5cGUgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblxyXG5cdFx0c3dpdGNoICh0eXBlKSB7XHJcblx0XHRcdGNhc2UgJ3Byb3AnOiB7IC8vIFByb3BlcnR5XHJcblx0XHRcdFx0cmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRcdFx0Y29uc3Qga2V5SUQgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHRcdFx0XHRpdGVtcy5wdXNoKGtleUlEKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRjYXNlICdDbHNzJzogLy8gQ2xhc3NcclxuXHRcdFx0XHRpdGVtcy5wdXNoKHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnRW5tcic6IHsgLy8gRW51bWVyYXRlZCBSZWZlcmVuY2VcclxuXHRcdFx0XHRyZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdFx0XHRjb25zdCB0eXBlSUQgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHRcdFx0XHRjb25zdCB2YWx1ZSA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdFx0XHRcdGl0ZW1zLnB1c2goYCR7dHlwZUlEfS4ke3ZhbHVlfWApO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNhc2UgJ3JlbGUnOiB7IC8vIE9mZnNldFxyXG5cdFx0XHRcdC8vIGNvbnN0IHsgbmFtZSwgY2xhc3NJRCB9ID1cclxuXHRcdFx0XHRyZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdFx0XHRpdGVtcy5wdXNoKHJlYWRVaW50MzIocmVhZGVyKSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Y2FzZSAnSWRudCc6IC8vIElkZW50aWZpZXJcclxuXHRcdFx0XHRpdGVtcy5wdXNoKHJlYWRJbnQzMihyZWFkZXIpKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0Y2FzZSAnaW5keCc6IC8vIEluZGV4XHJcblx0XHRcdFx0aXRlbXMucHVzaChyZWFkSW50MzIocmVhZGVyKSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgJ25hbWUnOiB7IC8vIE5hbWVcclxuXHRcdFx0XHRyZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRcdFx0XHRpdGVtcy5wdXNoKHJlYWRVbmljb2RlU3RyaW5nKHJlYWRlcikpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlc2NyaXB0b3IgcmVmZXJlbmNlIHR5cGU6ICR7dHlwZX1gKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiBpdGVtcztcclxufVxyXG5cclxuZnVuY3Rpb24gd3JpdGVSZWZlcmVuY2VTdHJ1Y3R1cmUod3JpdGVyOiBQc2RXcml0ZXIsIF9rZXk6IHN0cmluZywgaXRlbXM6IGFueVtdKSB7XHJcblx0d3JpdGVJbnQzMih3cml0ZXIsIGl0ZW1zLmxlbmd0aCk7XHJcblxyXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdGNvbnN0IHZhbHVlID0gaXRlbXNbaV07XHJcblx0XHRsZXQgdHlwZSA9ICd1bmtub3duJztcclxuXHJcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG5cdFx0XHRpZiAoL15bYS16XStcXC5bYS16XSskL2kudGVzdCh2YWx1ZSkpIHtcclxuXHRcdFx0XHR0eXBlID0gJ0VubXInO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHR5cGUgPSAnbmFtZSc7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHR5cGUpO1xyXG5cclxuXHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHQvLyBjYXNlICdwcm9wJzogLy8gUHJvcGVydHlcclxuXHRcdFx0Ly8gY2FzZSAnQ2xzcyc6IC8vIENsYXNzXHJcblx0XHRcdGNhc2UgJ0VubXInOiB7IC8vIEVudW1lcmF0ZWQgUmVmZXJlbmNlXHJcblx0XHRcdFx0Y29uc3QgW3R5cGVJRCwgZW51bVZhbHVlXSA9IHZhbHVlLnNwbGl0KCcuJyk7XHJcblx0XHRcdFx0d3JpdGVDbGFzc1N0cnVjdHVyZSh3cml0ZXIsICdcXDAnLCB0eXBlSUQpO1xyXG5cdFx0XHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCB0eXBlSUQpO1xyXG5cdFx0XHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBlbnVtVmFsdWUpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8vIGNhc2UgJ3JlbGUnOiAvLyBPZmZzZXRcclxuXHRcdFx0Ly8gY2FzZSAnSWRudCc6IC8vIElkZW50aWZpZXJcclxuXHRcdFx0Ly8gY2FzZSAnaW5keCc6IC8vIEluZGV4XHJcblx0XHRcdGNhc2UgJ25hbWUnOiB7IC8vIE5hbWVcclxuXHRcdFx0XHR3cml0ZUNsYXNzU3RydWN0dXJlKHdyaXRlciwgJ1xcMCcsICdMeXIgJyk7XHJcblx0XHRcdFx0d3JpdGVVbmljb2RlU3RyaW5nKHdyaXRlciwgdmFsdWUgKyAnXFwwJyk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGVzY3JpcHRvciByZWZlcmVuY2UgdHlwZTogJHt0eXBlfWApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyOiBQc2RSZWFkZXIpIHtcclxuXHRjb25zdCBuYW1lID0gcmVhZFVuaWNvZGVTdHJpbmcocmVhZGVyKTtcclxuXHRjb25zdCBjbGFzc0lEID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0Ly8gY29uc29sZS5sb2coeyBuYW1lLCBjbGFzc0lEIH0pO1xyXG5cdHJldHVybiB7IG5hbWUsIGNsYXNzSUQgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gd3JpdGVDbGFzc1N0cnVjdHVyZSh3cml0ZXI6IFBzZFdyaXRlciwgbmFtZTogc3RyaW5nLCBjbGFzc0lEOiBzdHJpbmcpIHtcclxuXHR3cml0ZVVuaWNvZGVTdHJpbmcod3JpdGVyLCBuYW1lKTtcclxuXHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgY2xhc3NJRCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZWFkVmVyc2lvbkFuZERlc2NyaXB0b3IocmVhZGVyOiBQc2RSZWFkZXIpIHtcclxuXHRjb25zdCB2ZXJzaW9uID0gcmVhZFVpbnQzMihyZWFkZXIpO1xyXG5cdGlmICh2ZXJzaW9uICE9PSAxNikgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlc2NyaXB0b3IgdmVyc2lvbjogJHt2ZXJzaW9ufWApO1xyXG5cdGNvbnN0IGRlc2MgPSByZWFkRGVzY3JpcHRvclN0cnVjdHVyZShyZWFkZXIpO1xyXG5cdC8vIGNvbnNvbGUubG9nKHJlcXVpcmUoJ3V0aWwnKS5pbnNwZWN0KGRlc2MsIGZhbHNlLCA5OSwgdHJ1ZSkpO1xyXG5cdHJldHVybiBkZXNjO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVWZXJzaW9uQW5kRGVzY3JpcHRvcih3cml0ZXI6IFBzZFdyaXRlciwgbmFtZTogc3RyaW5nLCBjbGFzc0lEOiBzdHJpbmcsIGRlc2NyaXB0b3I6IGFueSwgcm9vdCA9ICcnKSB7XHJcblx0d3JpdGVVaW50MzIod3JpdGVyLCAxNik7IC8vIHZlcnNpb25cclxuXHR3cml0ZURlc2NyaXB0b3JTdHJ1Y3R1cmUod3JpdGVyLCBuYW1lLCBjbGFzc0lELCBkZXNjcmlwdG9yLCByb290KTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclVuaXRzID0gJ0FuZ2xlJyB8ICdEZW5zaXR5JyB8ICdEaXN0YW5jZScgfCAnTm9uZScgfCAnUGVyY2VudCcgfCAnUGl4ZWxzJyB8XHJcblx0J01pbGxpbWV0ZXJzJyB8ICdQb2ludHMnIHwgJ1BpY2FzJyB8ICdJbmNoZXMnIHwgJ0NlbnRpbWV0ZXJzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRvclVuaXRzVmFsdWUge1xyXG5cdHVuaXRzOiBEZXNjcmlwdG9yVW5pdHM7XHJcblx0dmFsdWU6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvckNvbG9yID0ge1xyXG5cdCdSZCAgJzogbnVtYmVyO1xyXG5cdCdHcm4gJzogbnVtYmVyO1xyXG5cdCdCbCAgJzogbnVtYmVyO1xyXG59IHwge1xyXG5cdCdIICAgJzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0U3RydDogbnVtYmVyO1xyXG5cdEJyZ2g6IG51bWJlcjtcclxufSB8IHtcclxuXHQnQ3luICc6IG51bWJlcjtcclxuXHRNZ250OiBudW1iZXI7XHJcblx0J1lsdyAnOiBudW1iZXI7XHJcblx0QmxjazogbnVtYmVyO1xyXG59IHwge1xyXG5cdCdHcnkgJzogbnVtYmVyO1xyXG59IHwge1xyXG5cdExtbmM6IG51bWJlcjtcclxuXHQnQSAgICc6IG51bWJlcjtcclxuXHQnQiAgICc6IG51bWJlcjtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzY2lwdG9yUGF0dGVybiB7XHJcblx0J05tICAnOiBzdHJpbmc7XHJcblx0SWRudDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBEZXNjaXB0b3JHcmFkaWVudCA9IHtcclxuXHQnTm0gICc6IHN0cmluZztcclxuXHRHcmRGOiAnR3JkRi5Dc3RTJztcclxuXHRJbnRyOiBudW1iZXI7XHJcblx0Q2xyczoge1xyXG5cdFx0J0NsciAnOiBEZXNjcmlwdG9yQ29sb3I7XHJcblx0XHRUeXBlOiAnQ2xyeS5Vc3JTJztcclxuXHRcdExjdG46IG51bWJlcjtcclxuXHRcdE1kcG46IG51bWJlcjtcclxuXHR9W107XHJcblx0VHJuczoge1xyXG5cdFx0T3BjdDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRMY3RuOiBudW1iZXI7XHJcblx0XHRNZHBuOiBudW1iZXI7XHJcblx0fVtdO1xyXG59IHwge1xyXG5cdEdyZEY6ICdHcmRGLkNsTnMnO1xyXG5cdFNtdGg6IG51bWJlcjtcclxuXHQnTm0gICc6IHN0cmluZztcclxuXHRDbHJTOiBzdHJpbmc7XHJcblx0Um5kUzogbnVtYmVyO1xyXG5cdFZjdEM/OiBib29sZWFuO1xyXG5cdFNoVHI/OiBib29sZWFuO1xyXG5cdCdNbm0gJzogbnVtYmVyW107XHJcblx0J014bSAnOiBudW1iZXJbXTtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRvckNvbG9yQ29udGVudCB7XHJcblx0J0NsciAnOiBEZXNjcmlwdG9yQ29sb3I7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRvckdyYWRpZW50Q29udGVudCB7XHJcblx0R3JhZDogRGVzY2lwdG9yR3JhZGllbnQ7XHJcblx0VHlwZTogc3RyaW5nO1xyXG5cdER0aHI/OiBib29sZWFuO1xyXG5cdFJ2cnM/OiBib29sZWFuO1xyXG5cdEFuZ2w/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHQnU2NsICc/OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRBbGduPzogYm9vbGVhbjtcclxuXHRPZnN0PzogeyBIcnpuOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTsgVnJ0YzogRGVzY3JpcHRvclVuaXRzVmFsdWU7IH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRvclBhdHRlcm5Db250ZW50IHtcclxuXHRQdHJuOiBEZXNjaXB0b3JQYXR0ZXJuO1xyXG5cdExua2Q/OiBib29sZWFuO1xyXG5cdHBoYXNlPzogeyBIcnpuOiBudW1iZXI7IFZydGM6IG51bWJlcjsgfTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvclZlY3RvckNvbnRlbnQgPSBEZXNjcmlwdG9yQ29sb3JDb250ZW50IHwgRGVzY3JpcHRvckdyYWRpZW50Q29udGVudCB8IERlc2NyaXB0b3JQYXR0ZXJuQ29udGVudDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3Ryb2tlRGVzY3JpcHRvciB7XHJcblx0c3Ryb2tlU3R5bGVWZXJzaW9uOiBudW1iZXI7XHJcblx0c3Ryb2tlRW5hYmxlZDogYm9vbGVhbjtcclxuXHRmaWxsRW5hYmxlZDogYm9vbGVhbjtcclxuXHRzdHJva2VTdHlsZUxpbmVXaWR0aDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0c3Ryb2tlU3R5bGVMaW5lRGFzaE9mZnNldDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0c3Ryb2tlU3R5bGVNaXRlckxpbWl0OiBudW1iZXI7XHJcblx0c3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZTogc3RyaW5nO1xyXG5cdHN0cm9rZVN0eWxlTGluZUpvaW5UeXBlOiBzdHJpbmc7XHJcblx0c3Ryb2tlU3R5bGVMaW5lQWxpZ25tZW50OiBzdHJpbmc7XHJcblx0c3Ryb2tlU3R5bGVTY2FsZUxvY2s6IGJvb2xlYW47XHJcblx0c3Ryb2tlU3R5bGVTdHJva2VBZGp1c3Q6IGJvb2xlYW47XHJcblx0c3Ryb2tlU3R5bGVMaW5lRGFzaFNldDogRGVzY3JpcHRvclVuaXRzVmFsdWVbXTtcclxuXHRzdHJva2VTdHlsZUJsZW5kTW9kZTogc3RyaW5nO1xyXG5cdHN0cm9rZVN0eWxlT3BhY2l0eTogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0c3Ryb2tlU3R5bGVDb250ZW50OiBEZXNjcmlwdG9yVmVjdG9yQ29udGVudDtcclxuXHRzdHJva2VTdHlsZVJlc29sdXRpb246IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUZXh0RGVzY3JpcHRvciB7XHJcblx0J1R4dCAnOiBzdHJpbmc7XHJcblx0dGV4dEdyaWRkaW5nOiBzdHJpbmc7XHJcblx0T3JudDogc3RyaW5nO1xyXG5cdEFudEE6IHN0cmluZztcclxuXHRUZXh0SW5kZXg6IG51bWJlcjtcclxuXHRFbmdpbmVEYXRhPzogVWludDhBcnJheTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXYXJwRGVzY3JpcHRvciB7XHJcblx0d2FycFN0eWxlOiBzdHJpbmc7XHJcblx0d2FycFZhbHVlOiBudW1iZXI7XHJcblx0d2FycFBlcnNwZWN0aXZlOiBudW1iZXI7XHJcblx0d2FycFBlcnNwZWN0aXZlT3RoZXI6IG51bWJlcjtcclxuXHR3YXJwUm90YXRlOiBzdHJpbmc7XHJcblx0Ym91bmRzPzoge1xyXG5cdFx0J1RvcCAnOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdExlZnQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0QnRvbTogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRSZ2h0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHR9O1xyXG5cdHVPcmRlcjogbnVtYmVyO1xyXG5cdHZPcmRlcjogbnVtYmVyO1xyXG5cdGN1c3RvbUVudmVsb3BlV2FycD86IHtcclxuXHRcdG1lc2hQb2ludHM6IHtcclxuXHRcdFx0dHlwZTogJ0hyem4nIHwgJ1ZydGMnO1xyXG5cdFx0XHR2YWx1ZXM6IG51bWJlcltdO1xyXG5cdFx0fVtdO1xyXG5cdH07XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVpbHRXYXJwRGVzY3JpcHRvciBleHRlbmRzIFdhcnBEZXNjcmlwdG9yIHtcclxuXHRkZWZvcm1OdW1Sb3dzOiBudW1iZXI7XHJcblx0ZGVmb3JtTnVtQ29sczogbnVtYmVyO1xyXG5cdGN1c3RvbUVudmVsb3BlV2FycDoge1xyXG5cdFx0cXVpbHRTbGljZVg6IHtcclxuXHRcdFx0dHlwZTogJ3F1aWx0U2xpY2VYJztcclxuXHRcdFx0dmFsdWVzOiBudW1iZXJbXTtcclxuXHRcdH1bXTtcclxuXHRcdHF1aWx0U2xpY2VZOiB7XHJcblx0XHRcdHR5cGU6ICdxdWlsdFNsaWNlWSc7XHJcblx0XHRcdHZhbHVlczogbnVtYmVyW107XHJcblx0XHR9W107XHJcblx0XHRtZXNoUG9pbnRzOiB7XHJcblx0XHRcdHR5cGU6ICdIcnpuJyB8ICdWcnRjJztcclxuXHRcdFx0dmFsdWVzOiBudW1iZXJbXTtcclxuXHRcdH1bXTtcclxuXHR9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBbmdsZSh4OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSkge1xyXG5cdGlmICh4ID09PSB1bmRlZmluZWQpIHJldHVybiAwO1xyXG5cdGlmICh4LnVuaXRzICE9PSAnQW5nbGUnKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7eC51bml0c31gKTtcclxuXHRyZXR1cm4geC52YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGVyY2VudCh4OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB8IHVuZGVmaW5lZCkge1xyXG5cdGlmICh4ID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xyXG5cdGlmICh4LnVuaXRzICE9PSAnUGVyY2VudCcpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt4LnVuaXRzfWApO1xyXG5cdHJldHVybiB4LnZhbHVlIC8gMTAwO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VQZXJjZW50T3JBbmdsZSh4OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB8IHVuZGVmaW5lZCkge1xyXG5cdGlmICh4ID09PSB1bmRlZmluZWQpIHJldHVybiAxO1xyXG5cdGlmICh4LnVuaXRzID09PSAnUGVyY2VudCcpIHJldHVybiB4LnZhbHVlIC8gMTAwO1xyXG5cdGlmICh4LnVuaXRzID09PSAnQW5nbGUnKSByZXR1cm4geC52YWx1ZSAvIDM2MDtcclxuXHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7eC51bml0c31gKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVW5pdHMoeyB1bml0cywgdmFsdWUgfTogRGVzY3JpcHRvclVuaXRzVmFsdWUpOiBVbml0c1ZhbHVlIHtcclxuXHRpZiAoXHJcblx0XHR1bml0cyAhPT0gJ1BpeGVscycgJiYgdW5pdHMgIT09ICdNaWxsaW1ldGVycycgJiYgdW5pdHMgIT09ICdQb2ludHMnICYmIHVuaXRzICE9PSAnTm9uZScgJiZcclxuXHRcdHVuaXRzICE9PSAnUGljYXMnICYmIHVuaXRzICE9PSAnSW5jaGVzJyAmJiB1bml0cyAhPT0gJ0NlbnRpbWV0ZXJzJyAmJiB1bml0cyAhPT0gJ0RlbnNpdHknXHJcblx0KSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7SlNPTi5zdHJpbmdpZnkoeyB1bml0cywgdmFsdWUgfSl9YCk7XHJcblx0fVxyXG5cdHJldHVybiB7IHZhbHVlLCB1bml0cyB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbml0c09yTnVtYmVyKHZhbHVlOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB8IG51bWJlciwgdW5pdHM6IFVuaXRzID0gJ1BpeGVscycpOiBVbml0c1ZhbHVlIHtcclxuXHRpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHsgdmFsdWUsIHVuaXRzIH07XHJcblx0cmV0dXJuIHBhcnNlVW5pdHModmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVbml0c1RvTnVtYmVyKHsgdW5pdHMsIHZhbHVlIH06IERlc2NyaXB0b3JVbml0c1ZhbHVlLCBleHBlY3RlZFVuaXRzOiBzdHJpbmcpOiBudW1iZXIge1xyXG5cdGlmICh1bml0cyAhPT0gZXhwZWN0ZWRVbml0cykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke0pTT04uc3RyaW5naWZ5KHsgdW5pdHMsIHZhbHVlIH0pfWApO1xyXG5cdHJldHVybiB2YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVuaXRzQW5nbGUodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCk6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHtcclxuXHRyZXR1cm4geyB1bml0czogJ0FuZ2xlJywgdmFsdWU6IHZhbHVlIHx8IDAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVuaXRzUGVyY2VudCh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKTogRGVzY3JpcHRvclVuaXRzVmFsdWUge1xyXG5cdHJldHVybiB7IHVuaXRzOiAnUGVyY2VudCcsIHZhbHVlOiBNYXRoLnJvdW5kKCh2YWx1ZSB8fCAwKSAqIDEwMCkgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHVuaXRzVmFsdWUoeDogVW5pdHNWYWx1ZSB8IHVuZGVmaW5lZCwga2V5OiBzdHJpbmcpOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB7XHJcblx0aWYgKHggPT0gbnVsbCkgcmV0dXJuIHsgdW5pdHM6ICdQaXhlbHMnLCB2YWx1ZTogMCB9O1xyXG5cclxuXHRpZiAodHlwZW9mIHggIT09ICdvYmplY3QnKVxyXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHZhbHVlOiAke0pTT04uc3RyaW5naWZ5KHgpfSAoa2V5OiAke2tleX0pIChzaG91bGQgaGF2ZSB2YWx1ZSBhbmQgdW5pdHMpYCk7XHJcblxyXG5cdGNvbnN0IHsgdW5pdHMsIHZhbHVlIH0gPSB4O1xyXG5cclxuXHRpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJylcclxuXHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2YWx1ZSBpbiAke0pTT04uc3RyaW5naWZ5KHgpfSAoa2V5OiAke2tleX0pYCk7XHJcblxyXG5cdGlmIChcclxuXHRcdHVuaXRzICE9PSAnUGl4ZWxzJyAmJiB1bml0cyAhPT0gJ01pbGxpbWV0ZXJzJyAmJiB1bml0cyAhPT0gJ1BvaW50cycgJiYgdW5pdHMgIT09ICdOb25lJyAmJlxyXG5cdFx0dW5pdHMgIT09ICdQaWNhcycgJiYgdW5pdHMgIT09ICdJbmNoZXMnICYmIHVuaXRzICE9PSAnQ2VudGltZXRlcnMnICYmIHVuaXRzICE9PSAnRGVuc2l0eSdcclxuXHQpIHtcclxuXHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0cyBpbiAke0pTT04uc3RyaW5naWZ5KHgpfSAoa2V5OiAke2tleX0pYCk7XHJcblx0fVxyXG5cclxuXHRyZXR1cm4geyB1bml0cywgdmFsdWUgfTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IHRleHRHcmlkZGluZyA9IGNyZWF0ZUVudW08VGV4dEdyaWRkaW5nPigndGV4dEdyaWRkaW5nJywgJ25vbmUnLCB7XHJcblx0bm9uZTogJ05vbmUnLFxyXG5cdHJvdW5kOiAnUm5kICcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IE9ybnQgPSBjcmVhdGVFbnVtPE9yaWVudGF0aW9uPignT3JudCcsICdob3Jpem9udGFsJywge1xyXG5cdGhvcml6b250YWw6ICdIcnpuJyxcclxuXHR2ZXJ0aWNhbDogJ1ZydGMnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBBbm50ID0gY3JlYXRlRW51bTxBbnRpQWxpYXM+KCdBbm50JywgJ3NoYXJwJywge1xyXG5cdG5vbmU6ICdBbm5vJyxcclxuXHRzaGFycDogJ2FudGlBbGlhc1NoYXJwJyxcclxuXHRjcmlzcDogJ0FuQ3InLFxyXG5cdHN0cm9uZzogJ0FuU3QnLFxyXG5cdHNtb290aDogJ0FuU20nLFxyXG5cdHBsYXRmb3JtOiAnYW50aUFsaWFzUGxhdGZvcm1HcmF5JyxcclxuXHRwbGF0Zm9ybUxDRDogJ2FudGlBbGlhc1BsYXRmb3JtTENEJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3Qgd2FycFN0eWxlID0gY3JlYXRlRW51bTxXYXJwU3R5bGU+KCd3YXJwU3R5bGUnLCAnbm9uZScsIHtcclxuXHRub25lOiAnd2FycE5vbmUnLFxyXG5cdGFyYzogJ3dhcnBBcmMnLFxyXG5cdGFyY0xvd2VyOiAnd2FycEFyY0xvd2VyJyxcclxuXHRhcmNVcHBlcjogJ3dhcnBBcmNVcHBlcicsXHJcblx0YXJjaDogJ3dhcnBBcmNoJyxcclxuXHRidWxnZTogJ3dhcnBCdWxnZScsXHJcblx0c2hlbGxMb3dlcjogJ3dhcnBTaGVsbExvd2VyJyxcclxuXHRzaGVsbFVwcGVyOiAnd2FycFNoZWxsVXBwZXInLFxyXG5cdGZsYWc6ICd3YXJwRmxhZycsXHJcblx0d2F2ZTogJ3dhcnBXYXZlJyxcclxuXHRmaXNoOiAnd2FycEZpc2gnLFxyXG5cdHJpc2U6ICd3YXJwUmlzZScsXHJcblx0ZmlzaGV5ZTogJ3dhcnBGaXNoZXllJyxcclxuXHRpbmZsYXRlOiAnd2FycEluZmxhdGUnLFxyXG5cdHNxdWVlemU6ICd3YXJwU3F1ZWV6ZScsXHJcblx0dHdpc3Q6ICd3YXJwVHdpc3QnLFxyXG5cdGN1c3RvbTogJ3dhcnBDdXN0b20nLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBCbG5NID0gY3JlYXRlRW51bTxCbGVuZE1vZGU+KCdCbG5NJywgJ25vcm1hbCcsIHtcclxuXHQnbm9ybWFsJzogJ05ybWwnLFxyXG5cdCdkaXNzb2x2ZSc6ICdEc2x2JyxcclxuXHQnZGFya2VuJzogJ0Rya24nLFxyXG5cdCdtdWx0aXBseSc6ICdNbHRwJyxcclxuXHQnY29sb3IgYnVybic6ICdDQnJuJyxcclxuXHQnbGluZWFyIGJ1cm4nOiAnbGluZWFyQnVybicsXHJcblx0J2RhcmtlciBjb2xvcic6ICdkYXJrZXJDb2xvcicsXHJcblx0J2xpZ2h0ZW4nOiAnTGdobicsXHJcblx0J3NjcmVlbic6ICdTY3JuJyxcclxuXHQnY29sb3IgZG9kZ2UnOiAnQ0RkZycsXHJcblx0J2xpbmVhciBkb2RnZSc6ICdsaW5lYXJEb2RnZScsXHJcblx0J2xpZ2h0ZXIgY29sb3InOiAnbGlnaHRlckNvbG9yJyxcclxuXHQnb3ZlcmxheSc6ICdPdnJsJyxcclxuXHQnc29mdCBsaWdodCc6ICdTZnRMJyxcclxuXHQnaGFyZCBsaWdodCc6ICdIcmRMJyxcclxuXHQndml2aWQgbGlnaHQnOiAndml2aWRMaWdodCcsXHJcblx0J2xpbmVhciBsaWdodCc6ICdsaW5lYXJMaWdodCcsXHJcblx0J3BpbiBsaWdodCc6ICdwaW5MaWdodCcsXHJcblx0J2hhcmQgbWl4JzogJ2hhcmRNaXgnLFxyXG5cdCdkaWZmZXJlbmNlJzogJ0Rmcm4nLFxyXG5cdCdleGNsdXNpb24nOiAnWGNsdScsXHJcblx0J3N1YnRyYWN0JzogJ2JsZW5kU3VidHJhY3Rpb24nLFxyXG5cdCdkaXZpZGUnOiAnYmxlbmREaXZpZGUnLFxyXG5cdCdodWUnOiAnSCAgICcsXHJcblx0J3NhdHVyYXRpb24nOiAnU3RydCcsXHJcblx0J2NvbG9yJzogJ0NsciAnLFxyXG5cdCdsdW1pbm9zaXR5JzogJ0xtbnMnLFxyXG5cdC8vIHVzZWQgaW4gQUJSXHJcblx0J2xpbmVhciBoZWlnaHQnOiAnbGluZWFySGVpZ2h0JyxcclxuXHQnaGVpZ2h0JzogJ0hnaHQnLFxyXG5cdCdzdWJ0cmFjdGlvbic6ICdTYnRyJywgLy8gMm5kIHZlcnNpb24gb2Ygc3VidHJhY3QgP1xyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBCRVNsID0gY3JlYXRlRW51bTxCZXZlbFN0eWxlPignQkVTbCcsICdpbm5lciBiZXZlbCcsIHtcclxuXHQnaW5uZXIgYmV2ZWwnOiAnSW5yQicsXHJcblx0J291dGVyIGJldmVsJzogJ090ckInLFxyXG5cdCdlbWJvc3MnOiAnRW1icycsXHJcblx0J3BpbGxvdyBlbWJvc3MnOiAnUGxFYicsXHJcblx0J3N0cm9rZSBlbWJvc3MnOiAnc3Ryb2tlRW1ib3NzJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgYnZsVCA9IGNyZWF0ZUVudW08QmV2ZWxUZWNobmlxdWU+KCdidmxUJywgJ3Ntb290aCcsIHtcclxuXHQnc21vb3RoJzogJ1NmQkwnLFxyXG5cdCdjaGlzZWwgaGFyZCc6ICdQckJMJyxcclxuXHQnY2hpc2VsIHNvZnQnOiAnU2xtdCcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJFU3MgPSBjcmVhdGVFbnVtPEJldmVsRGlyZWN0aW9uPignQkVTcycsICd1cCcsIHtcclxuXHR1cDogJ0luICAnLFxyXG5cdGRvd246ICdPdXQgJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQkVURSA9IGNyZWF0ZUVudW08R2xvd1RlY2huaXF1ZT4oJ0JFVEUnLCAnc29mdGVyJywge1xyXG5cdHNvZnRlcjogJ1NmQkwnLFxyXG5cdHByZWNpc2U6ICdQckJMJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgSUdTciA9IGNyZWF0ZUVudW08R2xvd1NvdXJjZT4oJ0lHU3InLCAnZWRnZScsIHtcclxuXHRlZGdlOiAnU3JjRScsXHJcblx0Y2VudGVyOiAnU3JjQycsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEdyZFQgPSBjcmVhdGVFbnVtPEdyYWRpZW50U3R5bGU+KCdHcmRUJywgJ2xpbmVhcicsIHtcclxuXHRsaW5lYXI6ICdMbnIgJyxcclxuXHRyYWRpYWw6ICdSZGwgJyxcclxuXHRhbmdsZTogJ0FuZ2wnLFxyXG5cdHJlZmxlY3RlZDogJ1JmbGMnLFxyXG5cdGRpYW1vbmQ6ICdEbW5kJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQ2xyUyA9IGNyZWF0ZUVudW08J3JnYicgfCAnaHNiJyB8ICdsYWInPignQ2xyUycsICdyZ2InLCB7XHJcblx0cmdiOiAnUkdCQycsXHJcblx0aHNiOiAnSFNCbCcsXHJcblx0bGFiOiAnTGJDbCcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZTdGwgPSBjcmVhdGVFbnVtPCdpbnNpZGUnIHwgJ2NlbnRlcicgfCAnb3V0c2lkZSc+KCdGU3RsJywgJ291dHNpZGUnLCB7XHJcblx0b3V0c2lkZTogJ091dEYnLFxyXG5cdGNlbnRlcjogJ0N0ckYnLFxyXG5cdGluc2lkZTogJ0luc0YnXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEZyRmwgPSBjcmVhdGVFbnVtPCdjb2xvcicgfCAnZ3JhZGllbnQnIHwgJ3BhdHRlcm4nPignRnJGbCcsICdjb2xvcicsIHtcclxuXHRjb2xvcjogJ1NDbHInLFxyXG5cdGdyYWRpZW50OiAnR3JGbCcsXHJcblx0cGF0dGVybjogJ1B0cm4nLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdHJva2VTdHlsZUxpbmVDYXBUeXBlID0gY3JlYXRlRW51bTxMaW5lQ2FwVHlwZT4oJ3N0cm9rZVN0eWxlTGluZUNhcFR5cGUnLCAnYnV0dCcsIHtcclxuXHRidXR0OiAnc3Ryb2tlU3R5bGVCdXR0Q2FwJyxcclxuXHRyb3VuZDogJ3N0cm9rZVN0eWxlUm91bmRDYXAnLFxyXG5cdHNxdWFyZTogJ3N0cm9rZVN0eWxlU3F1YXJlQ2FwJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3Qgc3Ryb2tlU3R5bGVMaW5lSm9pblR5cGUgPSBjcmVhdGVFbnVtPExpbmVKb2luVHlwZT4oJ3N0cm9rZVN0eWxlTGluZUpvaW5UeXBlJywgJ21pdGVyJywge1xyXG5cdG1pdGVyOiAnc3Ryb2tlU3R5bGVNaXRlckpvaW4nLFxyXG5cdHJvdW5kOiAnc3Ryb2tlU3R5bGVSb3VuZEpvaW4nLFxyXG5cdGJldmVsOiAnc3Ryb2tlU3R5bGVCZXZlbEpvaW4nLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQgPSBjcmVhdGVFbnVtPExpbmVBbGlnbm1lbnQ+KCdzdHJva2VTdHlsZUxpbmVBbGlnbm1lbnQnLCAnaW5zaWRlJywge1xyXG5cdGluc2lkZTogJ3N0cm9rZVN0eWxlQWxpZ25JbnNpZGUnLFxyXG5cdGNlbnRlcjogJ3N0cm9rZVN0eWxlQWxpZ25DZW50ZXInLFxyXG5cdG91dHNpZGU6ICdzdHJva2VTdHlsZUFsaWduT3V0c2lkZScsXHJcbn0pO1xyXG4iXSwic291cmNlUm9vdCI6IkM6XFxQcm9qZWN0c1xcZ2l0aHViXFxhZy1wc2RcXHNyYyJ9
|
|
791
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVDO0FBTXZDLHlDQUdxQjtBQUNyQix5Q0FHcUI7QUFNckIsU0FBUyxNQUFNLENBQUMsR0FBUztJQUN4QixJQUFNLE1BQU0sR0FBUyxFQUFFLENBQUM7SUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUF0QixDQUFzQixDQUFDLENBQUM7SUFDeEQsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDO0FBRUQsSUFBTSxRQUFRLEdBQVM7SUFDdEIsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsU0FBUztJQUNqQixNQUFNLEVBQUUsVUFBVTtJQUNsQixNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxhQUFhO0lBQ3JCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLFFBQVE7SUFDaEIsTUFBTSxFQUFFLGFBQWE7Q0FDckIsQ0FBQztBQUVGLElBQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNyQyxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7QUFFdEIsU0FBZ0IsWUFBWSxDQUFDLEtBQWM7SUFDMUMsU0FBUyxHQUFHLEtBQUssQ0FBQztBQUNuQixDQUFDO0FBRkQsb0NBRUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUM5QyxPQUFPLEVBQUUsSUFBSSxNQUFBLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQztBQUMxQixDQUFDO0FBRUQsSUFBTSxjQUFjLEdBQWdCO0lBQ25DLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsaUJBQWlCLENBQUM7SUFDbkQsOERBQThEO0lBQzlELGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLFlBQVksQ0FBQztJQUN0RCxXQUFXLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUM7SUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzVCLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUNqQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMxQixJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQzFCLElBQUksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMx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LE1BQU07SUFDZCxNQUFNLEVBQUUsTUFBTTtDQUNkLENBQUMsQ0FBQztBQUVVLFFBQUEsSUFBSSxHQUFHLElBQUEsb0JBQVUsRUFBbUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUNqRixLQUFLLEVBQUUsTUFBTTtJQUNiLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLE9BQU8sRUFBRSxNQUFNO0NBQ2YsQ0FBQyxDQUFDO0FBRVUsUUFBQSxzQkFBc0IsR0FBRyxJQUFBLG9CQUFVLEVBQWMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFO0lBQy9GLElBQUksRUFBRSxvQkFBb0I7SUFDMUIsS0FBSyxFQUFFLHFCQUFxQjtJQUM1QixNQUFNLEVBQUUsc0JBQXNCO0NBQzlCLENBQUMsQ0FBQztBQUVVLFFBQUEsdUJBQXVCLEdBQUcsSUFBQSxvQkFBVSxFQUFlLHlCQUF5QixFQUFFLE9BQU8sRUFBRTtJQUNuRyxLQUFLLEVBQUUsc0JBQXNCO0lBQzdCLEtBQUssRUFBRSxzQkFBc0I7SUFDN0IsS0FBSyxFQUFFLHNCQUFzQjtDQUM3QixDQUFDLENBQUM7QUFFVSxRQUFBLHdCQUF3QixHQUFHLElBQUEsb0JBQVUsRUFBZ0IsMEJBQTBCLEVBQUUsUUFBUSxFQUFFO0lBQ3ZHLE1BQU0sRUFBRSx3QkFBd0I7SUFDaEMsTUFBTSxFQUFFLHdCQUF3QjtJQUNoQyxPQUFPLEVBQUUseUJBQXlCO0NBQ2xDLENBQUMsQ0FBQyIsImZpbGUiOiJkZXNjcmlwdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlRW51bSB9IGZyb20gJy4vaGVscGVycyc7XHJcbmltcG9ydCB7XHJcblx0QW50aUFsaWFzLCBCZXZlbERpcmVjdGlvbiwgQmV2ZWxTdHlsZSwgQmV2ZWxUZWNobmlxdWUsIEJsZW5kTW9kZSwgR2xvd1NvdXJjZSwgR2xvd1RlY2huaXF1ZSwgR3JhZGllbnRTdHlsZSxcclxuXHRJbnRlcnBvbGF0aW9uTWV0aG9kLCBMaW5lQWxpZ25tZW50LCBMaW5lQ2FwVHlwZSwgTGluZUpvaW5UeXBlLCBPcmllbnRhdGlvbiwgVGV4dEdyaWRkaW5nLCBVbml0cywgVW5pdHNWYWx1ZSxcclxuXHRXYXJwU3R5bGVcclxufSBmcm9tICcuL3BzZCc7XHJcbmltcG9ydCB7XHJcblx0UHNkUmVhZGVyLCByZWFkU2lnbmF0dXJlLCByZWFkVW5pY29kZVN0cmluZywgcmVhZFVpbnQzMiwgcmVhZFVpbnQ4LCByZWFkRmxvYXQ2NCxcclxuXHRyZWFkQnl0ZXMsIHJlYWRBc2NpaVN0cmluZywgcmVhZEludDMyLCByZWFkRmxvYXQzMiwgcmVhZEludDMyTEUsIHJlYWRVbmljb2RlU3RyaW5nV2l0aExlbmd0aFxyXG59IGZyb20gJy4vcHNkUmVhZGVyJztcclxuaW1wb3J0IHtcclxuXHRQc2RXcml0ZXIsIHdyaXRlU2lnbmF0dXJlLCB3cml0ZUJ5dGVzLCB3cml0ZVVpbnQzMiwgd3JpdGVGbG9hdDY0LCB3cml0ZVVpbnQ4LFxyXG5cdHdyaXRlVW5pY29kZVN0cmluZ1dpdGhQYWRkaW5nLCB3cml0ZUludDMyLCB3cml0ZUZsb2F0MzIsIHdyaXRlVW5pY29kZVN0cmluZ1xyXG59IGZyb20gJy4vcHNkV3JpdGVyJztcclxuXHJcbmludGVyZmFjZSBEaWN0IHsgW2tleTogc3RyaW5nXTogc3RyaW5nOyB9XHJcbmludGVyZmFjZSBOYW1lQ2xhc3NJRCB7IG5hbWU6IHN0cmluZzsgY2xhc3NJRDogc3RyaW5nOyB9XHJcbmludGVyZmFjZSBFeHRUeXBlRGljdCB7IFtrZXk6IHN0cmluZ106IE5hbWVDbGFzc0lEOyB9XHJcblxyXG5mdW5jdGlvbiByZXZNYXAobWFwOiBEaWN0KSB7XHJcblx0Y29uc3QgcmVzdWx0OiBEaWN0ID0ge307XHJcblx0T2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGtleSA9PiByZXN1bHRbbWFwW2tleV1dID0ga2V5KTtcclxuXHRyZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5jb25zdCB1bml0c01hcDogRGljdCA9IHtcclxuXHQnI0FuZyc6ICdBbmdsZScsXHJcblx0JyNSc2wnOiAnRGVuc2l0eScsXHJcblx0JyNSbHQnOiAnRGlzdGFuY2UnLFxyXG5cdCcjTm5lJzogJ05vbmUnLFxyXG5cdCcjUHJjJzogJ1BlcmNlbnQnLFxyXG5cdCcjUHhsJzogJ1BpeGVscycsXHJcblx0JyNNbG0nOiAnTWlsbGltZXRlcnMnLFxyXG5cdCcjUG50JzogJ1BvaW50cycsXHJcblx0J1JyUGknOiAnUGljYXMnLFxyXG5cdCdSckluJzogJ0luY2hlcycsXHJcblx0J1JyQ20nOiAnQ2VudGltZXRlcnMnLFxyXG59O1xyXG5cclxuY29uc3QgdW5pdHNNYXBSZXYgPSByZXZNYXAodW5pdHNNYXApO1xyXG5sZXQgbG9nRXJyb3JzID0gZmFsc2U7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0TG9nRXJyb3JzKHZhbHVlOiBib29sZWFuKSB7XHJcblx0bG9nRXJyb3JzID0gdmFsdWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1ha2VUeXBlKG5hbWU6IHN0cmluZywgY2xhc3NJRDogc3RyaW5nKSB7XHJcblx0cmV0dXJuIHsgbmFtZSwgY2xhc3NJRCB9O1xyXG59XHJcblxyXG5jb25zdCBmaWVsZFRvRXh0VHlwZTogRXh0VHlwZURpY3QgPSB7XHJcblx0c3Ryb2tlU3R5bGVDb250ZW50OiBtYWtlVHlwZSgnJywgJ3NvbGlkQ29sb3JMYXllcicpLFxyXG5cdC8vIHByaW50UHJvb2ZTZXR1cDogbWFrZVR5cGUoJ+agoeagt+iuvue9ricsICdwcm9vZlNldHVwJyksIC8vIFRFU1RJTkdcclxuXHRwcmludFByb29mU2V0dXA6IG1ha2VUeXBlKCdQcm9vZiBTZXR1cCcsICdwcm9vZlNldHVwJyksXHJcblx0cGF0dGVybkZpbGw6IG1ha2VUeXBlKCcnLCAncGF0dGVybkZpbGwnKSxcclxuXHRHcmFkOiBtYWtlVHlwZSgnR3JhZGllbnQnLCAnR3JkbicpLFxyXG5cdGViYmw6IG1ha2VUeXBlKCcnLCAnZWJibCcpLFxyXG5cdFNvRmk6IG1ha2VUeXBlKCcnLCAnU29GaScpLFxyXG5cdEdyRmw6IG1ha2VUeXBlKCcnLCAnR3JGbCcpLFxyXG5cdHNkd0M6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdGhnbEM6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdCdDbHIgJzogbWFrZVR5cGUoJycsICdSR0JDJyksXHJcblx0J3RpbnRDb2xvcic6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdE9mc3Q6IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdENoRlg6IG1ha2VUeXBlKCcnLCAnQ2hGWCcpLFxyXG5cdE1wZ1M6IG1ha2VUeXBlKCcnLCAnU2hwQycpLFxyXG5cdERyU2g6IG1ha2VUeXBlKCcnLCAnRHJTaCcpLFxyXG5cdElyU2g6IG1ha2VUeXBlKCcnLCAnSXJTaCcpLFxyXG5cdE9yR2w6IG1ha2VUeXBlKCcnLCAnT3JHbCcpLFxyXG5cdElyR2w6IG1ha2VUeXBlKCcnLCAnSXJHbCcpLFxyXG5cdFRyblM6IG1ha2VUeXBlKCcnLCAnU2hwQycpLFxyXG5cdFB0cm46IG1ha2VUeXBlKCcnLCAnUHRybicpLFxyXG5cdEZyRlg6IG1ha2VUeXBlKCcnLCAnRnJGWCcpLFxyXG5cdHBoYXNlOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRmcmFtZVN0ZXA6IG1ha2VUeXBlKCcnLCAnbnVsbCcpLFxyXG5cdGR1cmF0aW9uOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRib3VuZHM6IG1ha2VUeXBlKCcnLCAnUmN0bicpLFxyXG5cdGN1c3RvbUVudmVsb3BlV2FycDogbWFrZVR5cGUoJycsICdjdXN0b21FbnZlbG9wZVdhcnAnKSxcclxuXHR3YXJwOiBtYWtlVHlwZSgnJywgJ3dhcnAnKSxcclxuXHQnU3ogICc6IG1ha2VUeXBlKCcnLCAnUG50ICcpLFxyXG5cdG9yaWdpbjogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0YXV0b0V4cGFuZE9mZnNldDogbWFrZVR5cGUoJycsICdQbnQgJyksXHJcblx0a2V5T3JpZ2luU2hhcGVCQm94OiBtYWtlVHlwZSgnJywgJ3VuaXRSZWN0JyksXHJcblx0VnJzbjogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0cHNWZXJzaW9uOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kQ29sb3I6IG1ha2VUeXBlKCcnLCAnUkdCQycpLFxyXG5cdGFydGJvYXJkUmVjdDogbWFrZVR5cGUoJycsICdjbGFzc0Zsb2F0UmVjdCcpLFxyXG5cdGtleU9yaWdpblJSZWN0UmFkaWk6IG1ha2VUeXBlKCcnLCAncmFkaWknKSxcclxuXHRrZXlPcmlnaW5Cb3hDb3JuZXJzOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJBOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJCOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJDOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRyZWN0YW5nbGVDb3JuZXJEOiBtYWtlVHlwZSgnJywgJ1BudCAnKSxcclxuXHRjb21wSW5mbzogbWFrZVR5cGUoJycsICdudWxsJyksXHJcblx0VHJuZjogbWFrZVR5cGUoJ1RyYW5zZm9ybScsICdUcm5mJyksXHJcblx0cXVpbHRXYXJwOiBtYWtlVHlwZSgnJywgJ3F1aWx0V2FycCcpLFxyXG5cdGdlbmVyYXRvclNldHRpbmdzOiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRjcmVtYTogbWFrZVR5cGUoJycsICdudWxsJyksXHJcbn07XHJcblxyXG5jb25zdCBmaWVsZFRvQXJyYXlFeHRUeXBlOiBFeHRUeXBlRGljdCA9IHtcclxuXHQnQ3J2ICc6IG1ha2VUeXBlKCcnLCAnQ3JQdCcpLFxyXG5cdENscnM6IG1ha2VUeXBlKCcnLCAnQ2xydCcpLFxyXG5cdFRybnM6IG1ha2VUeXBlKCcnLCAnVHJuUycpLFxyXG5cdGtleURlc2NyaXB0b3JMaXN0OiBtYWtlVHlwZSgnJywgJ251bGwnKSxcclxuXHRzb2xpZEZpbGxNdWx0aTogbWFrZVR5cGUoJycsICdTb0ZpJyksXHJcblx0Z3JhZGllbnRGaWxsTXVsdGk6IG1ha2VUeXBlKCcnLCAnR3JGbCcpLFxyXG5cdGRyb3BTaGFkb3dNdWx0aTogbWFrZVR5cGUoJycsICdEclNoJyksXHJcblx0aW5uZXJTaGFkb3dNdWx0aTogbWFrZVR5cGUoJycsICdJclNoJyksXHJcblx0ZnJhbWVGWE11bHRpOiBtYWtlVHlwZSgnJywgJ0ZyRlgnKSxcclxufTtcclxuXHJcbmNvbnN0IHR5cGVUb0ZpZWxkOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdOyB9ID0ge1xyXG5cdCdURVhUJzogW1xyXG5cdFx0J1R4dCAnLCAncHJpbnRlck5hbWUnLCAnTm0gICcsICdJZG50JywgJ2JsYWNrQW5kV2hpdGVQcmVzZXRGaWxlTmFtZScsICdMVVQzREZpbGVOYW1lJyxcclxuXHRcdCdwcmVzZXRGaWxlTmFtZScsICdjdXJ2ZXNQcmVzZXRGaWxlTmFtZScsICdtaXhlclByZXNldEZpbGVOYW1lJywgJ3BsYWNlZCcsICdkZXNjcmlwdGlvbicsICdyZWFzb24nLFxyXG5cdFx0J2FydGJvYXJkUHJlc2V0TmFtZScsICdqc29uJyxcclxuXHRdLFxyXG5cdCd0ZHRhJzogWydFbmdpbmVEYXRhJywgJ0xVVDNERmlsZURhdGEnXSxcclxuXHQnbG9uZyc6IFtcclxuXHRcdCdUZXh0SW5kZXgnLCAnUm5kUycsICdNZHBuJywgJ1NtdGgnLCAnTGN0bicsICdzdHJva2VTdHlsZVZlcnNpb24nLCAnTGFJRCcsICdWcnNuJywgJ0NudCAnLFxyXG5cdFx0J0JyZ2gnLCAnQ250cicsICdtZWFucycsICd2aWJyYW5jZScsICdTdHJ0JywgJ2J3UHJlc2V0S2luZCcsICdwcmVzZXRLaW5kJywgJ2NvbXAnLCAnY29tcElEJywgJ29yaWdpbmFsQ29tcElEJyxcclxuXHRcdCdjdXJ2ZXNQcmVzZXRLaW5kJywgJ21peGVyUHJlc2V0S2luZCcsICd1T3JkZXInLCAndk9yZGVyJywgJ1BnTm0nLCAndG90YWxQYWdlcycsICdDcm9wJyxcclxuXHRcdCdudW1lcmF0b3InLCAnZGVub21pbmF0b3InLCAnZnJhbWVDb3VudCcsICdBbm50JywgJ2tleU9yaWdpblR5cGUnLCAndW5pdFZhbHVlUXVhZFZlcnNpb24nLFxyXG5cdFx0J2tleU9yaWdpbkluZGV4JywgJ21ham9yJywgJ21pbm9yJywgJ2ZpeCcsICdkb2NEZWZhdWx0TmV3QXJ0Ym9hcmRCYWNrZ3JvdW5kVHlwZScsICdhcnRib2FyZEJhY2tncm91bmRUeXBlJyxcclxuXHRcdCdudW1Nb2RpZnlpbmdGWCcsICdkZWZvcm1OdW1Sb3dzJywgJ2RlZm9ybU51bUNvbHMnLFxyXG5cdF0sXHJcblx0J2VudW0nOiBbXHJcblx0XHQndGV4dEdyaWRkaW5nJywgJ09ybnQnLCAnd2FycFN0eWxlJywgJ3dhcnBSb3RhdGUnLCAnSW50ZScsICdCbHRuJywgJ0NsclMnLFxyXG5cdFx0J3Nkd00nLCAnaGdsTScsICdidmxUJywgJ2J2bFMnLCAnYnZsRCcsICdNZCAgJywgJ2dsd1MnLCAnR3JkRicsICdHbHdUJyxcclxuXHRcdCdzdHJva2VTdHlsZUxpbmVDYXBUeXBlJywgJ3N0cm9rZVN0eWxlTGluZUpvaW5UeXBlJywgJ3N0cm9rZVN0eWxlTGluZUFsaWdubWVudCcsXHJcblx0XHQnc3Ryb2tlU3R5bGVCbGVuZE1vZGUnLCAnUG50VCcsICdTdHlsJywgJ2xvb2t1cFR5cGUnLCAnTFVURm9ybWF0JywgJ2RhdGFPcmRlcicsXHJcblx0XHQndGFibGVPcmRlcicsICdlbmFibGVDb21wQ29yZScsICdlbmFibGVDb21wQ29yZUdQVScsICdjb21wQ29yZVN1cHBvcnQnLCAnY29tcENvcmVHUFVTdXBwb3J0JywgJ0VuZ24nLFxyXG5cdFx0J2VuYWJsZUNvbXBDb3JlVGhyZWFkcycsICdnczk5JyxcclxuXHRdLFxyXG5cdCdib29sJzogW1xyXG5cdFx0J1BzdFMnLCAncHJpbnRTaXh0ZWVuQml0JywgJ21hc3RlckZYU3dpdGNoJywgJ2VuYWInLCAndWdsZycsICdhbnRpYWxpYXNHbG9zcycsXHJcblx0XHQndXNlU2hhcGUnLCAndXNlVGV4dHVyZScsICdtYXN0ZXJGWFN3aXRjaCcsICd1Z2xnJywgJ2FudGlhbGlhc0dsb3NzJywgJ3VzZVNoYXBlJyxcclxuXHRcdCd1c2VUZXh0dXJlJywgJ0FsZ24nLCAnUnZycycsICdEdGhyJywgJ0ludnInLCAnVmN0QycsICdTaFRyJywgJ2xheWVyQ29uY2VhbHMnLFxyXG5cdFx0J3N0cm9rZUVuYWJsZWQnLCAnZmlsbEVuYWJsZWQnLCAnc3Ryb2tlU3R5bGVTY2FsZUxvY2snLCAnc3Ryb2tlU3R5bGVTdHJva2VBZGp1c3QnLFxyXG5cdFx0J2hhcmRQcm9vZicsICdNcEJsJywgJ3BhcGVyV2hpdGUnLCAndXNlTGVnYWN5JywgJ0F1dG8nLCAnTGFiICcsICd1c2VUaW50JywgJ2tleVNoYXBlSW52YWxpZGF0ZWQnLFxyXG5cdFx0J2F1dG9FeHBhbmRFbmFibGVkJywgJ2F1dG9OZXN0RW5hYmxlZCcsICdhdXRvUG9zaXRpb25FbmFibGVkJywgJ3Nocmlua3dyYXBPblNhdmVFbmFibGVkJyxcclxuXHRcdCdwcmVzZW50JywgJ3Nob3dJbkRpYWxvZycsICdvdmVycHJpbnQnLFxyXG5cdF0sXHJcblx0J2RvdWInOiBbXHJcblx0XHQnd2FycFZhbHVlJywgJ3dhcnBQZXJzcGVjdGl2ZScsICd3YXJwUGVyc3BlY3RpdmVPdGhlcicsICdJbnRyJywgJ1dkdGgnLCAnSGdodCcsXHJcblx0XHQnc3Ryb2tlU3R5bGVNaXRlckxpbWl0JywgJ3N0cm9rZVN0eWxlUmVzb2x1dGlvbicsICdsYXllclRpbWUnLCAna2V5T3JpZ2luUmVzb2x1dGlvbicsXHJcblx0XHQneHgnLCAneHknLCAneXgnLCAneXknLCAndHgnLCAndHknLFxyXG5cdF0sXHJcblx0J1VudEYnOiBbXHJcblx0XHQnU2NsICcsICdzZHdPJywgJ2hnbE8nLCAnbGFnbCcsICdMYWxkJywgJ3NyZ1InLCAnYmx1cicsICdTZnRuJywgJ09wY3QnLCAnRHN0bicsICdBbmdsJyxcclxuXHRcdCdDa210JywgJ05vc2UnLCAnSW5wcicsICdTaGROJywgJ3N0cm9rZVN0eWxlTGluZVdpZHRoJywgJ3N0cm9rZVN0eWxlTGluZURhc2hPZmZzZXQnLFxyXG5cdFx0J3N0cm9rZVN0eWxlT3BhY2l0eScsICdIICAgJywgJ1RvcCAnLCAnTGVmdCcsICdCdG9tJywgJ1JnaHQnLCAnUnNsdCcsXHJcblx0XHQndG9wUmlnaHQnLCAndG9wTGVmdCcsICdib3R0b21MZWZ0JywgJ2JvdHRvbVJpZ2h0JyxcclxuXHRdLFxyXG5cdCdWbExzJzogW1xyXG5cdFx0J0NydiAnLCAnQ2xycycsICdNbm0gJywgJ014bSAnLCAnVHJucycsICdwYXRoTGlzdCcsICdzdHJva2VTdHlsZUxpbmVEYXNoU2V0JywgJ0ZyTHMnLFxyXG5cdFx0J0xhU3QnLCAnVHJuZicsICdub25BZmZpbmVUcmFuc2Zvcm0nLCAna2V5RGVzY3JpcHRvckxpc3QnLCAnZ3VpZGVJbmRlY2VzJywgJ2dyYWRpZW50RmlsbE11bHRpJyxcclxuXHRcdCdzb2xpZEZpbGxNdWx0aScsICdmcmFtZUZYTXVsdGknLCAnaW5uZXJTaGFkb3dNdWx0aScsICdkcm9wU2hhZG93TXVsdGknLFxyXG5cdF0sXHJcblx0J09iQXInOiBbJ21lc2hQb2ludHMnLCAncXVpbHRTbGljZVgnLCAncXVpbHRTbGljZVknXSxcclxuXHQnb2JqICc6IFsnbnVsbCddLFxyXG59O1xyXG5cclxuY29uc3QgY2hhbm5lbHMgPSBbXHJcblx0J1JkICAnLCAnR3JuICcsICdCbCAgJywgJ1lsbHcnLCAnWWx3ICcsICdDeW4gJywgJ01nbnQnLCAnQmxjaycsICdHcnkgJywgJ0xtbmMnLCAnQSAgICcsICdCICAgJyxcclxuXTtcclxuXHJcbmNvbnN0IGZpZWxkVG9BcnJheVR5cGU6IERpY3QgPSB7XHJcblx0J01ubSAnOiAnbG9uZycsXHJcblx0J014bSAnOiAnbG9uZycsXHJcblx0J0ZyTHMnOiAnbG9uZycsXHJcblx0J3N0cm9rZVN0eWxlTGluZURhc2hTZXQnOiAnVW50RicsXHJcblx0J1RybmYnOiAnZG91YicsXHJcblx0J25vbkFmZmluZVRyYW5zZm9ybSc6ICdkb3ViJyxcclxuXHQna2V5RGVzY3JpcHRvckxpc3QnOiAnT2JqYycsXHJcblx0J2dyYWRpZW50RmlsbE11bHRpJzogJ09iamMnLFxyXG5cdCdzb2xpZEZpbGxNdWx0aSc6ICdPYmpjJyxcclxuXHQnZnJhbWVGWE11bHRpJzogJ09iamMnLFxyXG5cdCdpbm5lclNoYWRvd011bHRpJzogJ09iamMnLFxyXG5cdCdkcm9wU2hhZG93TXVsdGknOiAnT2JqYycsXHJcbn07XHJcblxyXG5jb25zdCBmaWVsZFRvVHlwZTogRGljdCA9IHt9O1xyXG5cclxuZm9yIChjb25zdCB0eXBlIG9mIE9iamVjdC5rZXlzKHR5cGVUb0ZpZWxkKSkge1xyXG5cdGZvciAoY29uc3QgZmllbGQgb2YgdHlwZVRvRmllbGRbdHlwZV0pIHtcclxuXHRcdGZpZWxkVG9UeXBlW2ZpZWxkXSA9IHR5cGU7XHJcblx0fVxyXG59XHJcblxyXG5mb3IgKGNvbnN0IGZpZWxkIG9mIE9iamVjdC5rZXlzKGZpZWxkVG9FeHRUeXBlKSkge1xyXG5cdGlmICghZmllbGRUb1R5cGVbZmllbGRdKSBmaWVsZFRvVHlwZVtmaWVsZF0gPSAnT2JqYyc7XHJcbn1cclxuXHJcbmZvciAoY29uc3QgZmllbGQgb2YgT2JqZWN0LmtleXMoZmllbGRUb0FycmF5RXh0VHlwZSkpIHtcclxuXHRmaWVsZFRvQXJyYXlUeXBlW2ZpZWxkXSA9ICdPYmpjJztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0VHlwZUJ5S2V5KGtleTogc3RyaW5nLCB2YWx1ZTogYW55LCByb290OiBzdHJpbmcpIHtcclxuXHRpZiAoa2V5ID09PSAnU3ogICcpIHtcclxuXHRcdHJldHVybiAoJ1dkdGgnIGluIHZhbHVlKSA/ICdPYmpjJyA6ICgoJ3VuaXRzJyBpbiB2YWx1ZSkgPyAnVW50RicgOiAnZG91YicpO1xyXG5cdH0gZWxzZSBpZiAoa2V5ID09PSAnVHlwZScpIHtcclxuXHRcdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gJ2VudW0nIDogJ2xvbmcnO1xyXG5cdH0gZWxzZSBpZiAoa2V5ID09PSAnQW50QScpIHtcclxuXHRcdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnID8gJ2VudW0nIDogJ2Jvb2wnO1xyXG5cdH0gZWxzZSBpZiAoa2V5ID09PSAnSHJ6bicgfHwga2V5ID09PSAnVnJ0YycgfHwga2V5ID09PSAnVG9wICcgfHwga2V5ID09PSAnTGVmdCcgfHwga2V5ID09PSAnQnRvbScgfHwga2V5ID09PSAnUmdodCcpIHtcclxuXHRcdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gJ2RvdWInIDogJ1VudEYnO1xyXG5cdH0gZWxzZSBpZiAoa2V5ID09PSAnVnJzbicpIHtcclxuXHRcdHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInID8gJ2xvbmcnIDogJ09iamMnO1xyXG5cdH0gZWxzZSBpZiAoa2V5ID09PSAnUmQgICcgfHwga2V5ID09PSAnR3JuICcgfHwga2V5ID09PSAnQmwgICcpIHtcclxuXHRcdHJldHVybiByb290ID09PSAnYXJ0ZCcgPyAnbG9uZycgOiAnZG91Yic7XHJcblx0fSBlbHNlIGlmIChrZXkgPT09ICdUcm5mJykge1xyXG5cdFx0cmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ1ZsTHMnIDogJ09iamMnO1xyXG5cdH0gZWxzZSB7XHJcblx0XHRyZXR1cm4gZmllbGRUb1R5cGVba2V5XTtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyOiBQc2RSZWFkZXIpIHtcclxuXHRjb25zdCBsZW5ndGggPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRyZXR1cm4gcmVhZEFzY2lpU3RyaW5nKHJlYWRlciwgbGVuZ3RoIHx8IDQpO1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlcjogUHNkV3JpdGVyLCB2YWx1ZTogc3RyaW5nKSB7XHJcblx0aWYgKHZhbHVlLmxlbmd0aCA9PT0gNCAmJiB2YWx1ZSAhPT0gJ3dhcnAnKSB7XHJcblx0XHQvLyB3cml0ZSBjbGFzc0lkXHJcblx0XHR3cml0ZUludDMyKHdyaXRlciwgMCk7XHJcblx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHZhbHVlKTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0Ly8gd3JpdGUgYXNjaWkgc3RyaW5nXHJcblx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUubGVuZ3RoKTtcclxuXHJcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdHdyaXRlVWludDgod3JpdGVyLCB2YWx1ZS5jaGFyQ29kZUF0KGkpKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZWFkRGVzY3JpcHRvclN0cnVjdHVyZShyZWFkZXI6IFBzZFJlYWRlcikge1xyXG5cdGNvbnN0IG9iamVjdDogYW55ID0ge307XHJcblx0Ly8gb2JqZWN0Ll9fc3RydWN0ID1cclxuXHRyZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHRjb25zdCBpdGVtc0NvdW50ID0gcmVhZFVpbnQzMihyZWFkZXIpO1xyXG5cclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zQ291bnQ7IGkrKykge1xyXG5cdFx0Y29uc3Qga2V5ID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRjb25zdCB0eXBlID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coYD4gJyR7a2V5fScgJyR7dHlwZX0nYCk7XHJcblx0XHRjb25zdCBkYXRhID0gcmVhZE9TVHlwZShyZWFkZXIsIHR5cGUpO1xyXG5cdFx0Ly8gaWYgKCFnZXRUeXBlQnlLZXkoa2V5LCBkYXRhKSkgY29uc29sZS5sb2coYD4gJyR7a2V5fScgJyR7dHlwZX0nYCwgZGF0YSk7XHJcblx0XHRvYmplY3Rba2V5XSA9IGRhdGE7XHJcblx0fVxyXG5cdC8vIGNvbnNvbGUubG9nKCcvLycsIHN0cnVjdCk7XHJcblx0cmV0dXJuIG9iamVjdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRGVzY3JpcHRvclN0cnVjdHVyZSh3cml0ZXI6IFBzZFdyaXRlciwgbmFtZTogc3RyaW5nLCBjbGFzc0lkOiBzdHJpbmcsIHZhbHVlOiBhbnksIHJvb3Q6IHN0cmluZykge1xyXG5cdGlmIChsb2dFcnJvcnMgJiYgIWNsYXNzSWQpIGNvbnNvbGUubG9nKCdNaXNzaW5nIGNsYXNzSWQgZm9yOiAnLCBuYW1lLCBjbGFzc0lkLCB2YWx1ZSk7XHJcblxyXG5cdC8vIHdyaXRlIGNsYXNzIHN0cnVjdHVyZVxyXG5cdHdyaXRlVW5pY29kZVN0cmluZ1dpdGhQYWRkaW5nKHdyaXRlciwgbmFtZSk7XHJcblx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIGNsYXNzSWQpO1xyXG5cclxuXHRjb25zdCBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xyXG5cdHdyaXRlVWludDMyKHdyaXRlciwga2V5cy5sZW5ndGgpO1xyXG5cclxuXHRmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XHJcblx0XHRsZXQgdHlwZSA9IGdldFR5cGVCeUtleShrZXksIHZhbHVlW2tleV0sIHJvb3QpO1xyXG5cdFx0bGV0IGV4dFR5cGUgPSBmaWVsZFRvRXh0VHlwZVtrZXldO1xyXG5cclxuXHRcdGlmICgoa2V5ID09PSAnU3RydCcgfHwga2V5ID09PSAnQnJnaCcpICYmICdIICAgJyBpbiB2YWx1ZSkge1xyXG5cdFx0XHR0eXBlID0gJ2RvdWInO1xyXG5cdFx0fSBlbHNlIGlmIChjaGFubmVscy5pbmRleE9mKGtleSkgIT09IC0xKSB7XHJcblx0XHRcdHR5cGUgPSAoY2xhc3NJZCA9PT0gJ1JHQkMnICYmIHJvb3QgIT09ICdhcnRkJykgPyAnZG91YicgOiAnbG9uZyc7XHJcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ3Byb2ZpbGUnKSB7XHJcblx0XHRcdHR5cGUgPSBjbGFzc0lkID09PSAncHJpbnRPdXRwdXQnID8gJ1RFWFQnIDogJ3RkdGEnO1xyXG5cdFx0fSBlbHNlIGlmIChrZXkgPT09ICdzdHJva2VTdHlsZUNvbnRlbnQnKSB7XHJcblx0XHRcdGlmICh2YWx1ZVtrZXldWydDbHIgJ10pIHtcclxuXHRcdFx0XHRleHRUeXBlID0gbWFrZVR5cGUoJycsICdzb2xpZENvbG9yTGF5ZXInKTtcclxuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZVtrZXldLkdyYWQpIHtcclxuXHRcdFx0XHRleHRUeXBlID0gbWFrZVR5cGUoJycsICdncmFkaWVudExheWVyJyk7XHJcblx0XHRcdH0gZWxzZSBpZiAodmFsdWVba2V5XS5QdHJuKSB7XHJcblx0XHRcdFx0ZXh0VHlwZSA9IG1ha2VUeXBlKCcnLCAncGF0dGVybkxheWVyJyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0bG9nRXJyb3JzICYmIGNvbnNvbGUubG9nKCdJbnZhbGlkIHN0cm9rZVN0eWxlQ29udGVudCB2YWx1ZScsIHZhbHVlW2tleV0pO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gJ2JvdW5kcycgJiYgcm9vdCA9PT0gJ3F1aWx0V2FycCcpIHtcclxuXHRcdFx0ZXh0VHlwZSA9IG1ha2VUeXBlKCcnLCAnY2xhc3NGbG9hdFJlY3QnKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoZXh0VHlwZSAmJiBleHRUeXBlLmNsYXNzSUQgPT09ICdSR0JDJykge1xyXG5cdFx0XHRpZiAoJ0ggICAnIGluIHZhbHVlW2tleV0pIGV4dFR5cGUgPSB7IGNsYXNzSUQ6ICdIU0JDJywgbmFtZTogJycgfTtcclxuXHRcdFx0Ly8gVE9ETzogb3RoZXIgY29sb3Igc3BhY2VzXHJcblx0XHR9XHJcblxyXG5cdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIGtleSk7XHJcblx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHR5cGUgfHwgJ2xvbmcnKTtcclxuXHRcdHdyaXRlT1NUeXBlKHdyaXRlciwgdHlwZSB8fCAnbG9uZycsIHZhbHVlW2tleV0sIGtleSwgZXh0VHlwZSwgcm9vdCk7XHJcblx0XHRpZiAobG9nRXJyb3JzICYmICF0eXBlKSBjb25zb2xlLmxvZyhgTWlzc2luZyBkZXNjcmlwdG9yIGZpZWxkIHR5cGUgZm9yOiAnJHtrZXl9JyBpbmAsIHZhbHVlKTtcclxuXHR9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlYWRPU1R5cGUocmVhZGVyOiBQc2RSZWFkZXIsIHR5cGU6IHN0cmluZykge1xyXG5cdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0Y2FzZSAnb2JqICc6IC8vIFJlZmVyZW5jZVxyXG5cdFx0XHRyZXR1cm4gcmVhZFJlZmVyZW5jZVN0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnT2JqYyc6IC8vIERlc2NyaXB0b3JcclxuXHRcdGNhc2UgJ0dsYk8nOiAvLyBHbG9iYWxPYmplY3Qgc2FtZSBhcyBEZXNjcmlwdG9yXHJcblx0XHRcdHJldHVybiByZWFkRGVzY3JpcHRvclN0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnVmxMcyc6IHsgLy8gTGlzdFxyXG5cdFx0XHRjb25zdCBsZW5ndGggPSByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcblxyXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0Y29uc3QgdHlwZSA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygnICA+JywgdHlwZSk7XHJcblx0XHRcdFx0aXRlbXMucHVzaChyZWFkT1NUeXBlKHJlYWRlciwgdHlwZSkpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRyZXR1cm4gaXRlbXM7XHJcblx0XHR9XHJcblx0XHRjYXNlICdkb3ViJzogLy8gRG91YmxlXHJcblx0XHRcdHJldHVybiByZWFkRmxvYXQ2NChyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnVW50Ric6IHsgLy8gVW5pdCBkb3VibGVcclxuXHRcdFx0Y29uc3QgdW5pdHMgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gcmVhZEZsb2F0NjQocmVhZGVyKTtcclxuXHRcdFx0aWYgKCF1bml0c01hcFt1bml0c10pIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt1bml0c31gKTtcclxuXHRcdFx0cmV0dXJuIHsgdW5pdHM6IHVuaXRzTWFwW3VuaXRzXSwgdmFsdWUgfTtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ1VuRmwnOiB7IC8vIFVuaXQgZmxvYXRcclxuXHRcdFx0Y29uc3QgdW5pdHMgPSByZWFkU2lnbmF0dXJlKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IHZhbHVlID0gcmVhZEZsb2F0MzIocmVhZGVyKTtcclxuXHRcdFx0aWYgKCF1bml0c01hcFt1bml0c10pIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHt1bml0c31gKTtcclxuXHRcdFx0cmV0dXJuIHsgdW5pdHM6IHVuaXRzTWFwW3VuaXRzXSwgdmFsdWUgfTtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ1RFWFQnOiAvLyBTdHJpbmdcclxuXHRcdFx0cmV0dXJuIHJlYWRVbmljb2RlU3RyaW5nKHJlYWRlcik7XHJcblx0XHRjYXNlICdlbnVtJzogeyAvLyBFbnVtZXJhdGVkXHJcblx0XHRcdGNvbnN0IHR5cGUgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgdmFsdWUgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHRcdFx0cmV0dXJuIGAke3R5cGV9LiR7dmFsdWV9YDtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ2xvbmcnOiAvLyBJbnRlZ2VyXHJcblx0XHRcdHJldHVybiByZWFkSW50MzIocmVhZGVyKTtcclxuXHRcdGNhc2UgJ2NvbXAnOiB7IC8vIExhcmdlIEludGVnZXJcclxuXHRcdFx0Y29uc3QgbG93ID0gcmVhZFVpbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBoaWdoID0gcmVhZFVpbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRyZXR1cm4geyBsb3csIGhpZ2ggfTtcclxuXHRcdH1cclxuXHRcdGNhc2UgJ2Jvb2wnOiAvLyBCb29sZWFuXHJcblx0XHRcdHJldHVybiAhIXJlYWRVaW50OChyZWFkZXIpO1xyXG5cdFx0Y2FzZSAndHlwZSc6IC8vIENsYXNzXHJcblx0XHRjYXNlICdHbGJDJzogLy8gQ2xhc3NcclxuXHRcdFx0cmV0dXJuIHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0Y2FzZSAnYWxpcyc6IHsgLy8gQWxpYXNcclxuXHRcdFx0Y29uc3QgbGVuZ3RoID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdHJldHVybiByZWFkQXNjaWlTdHJpbmcocmVhZGVyLCBsZW5ndGgpO1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAndGR0YSc6IHsgLy8gUmF3IERhdGFcclxuXHRcdFx0Y29uc3QgbGVuZ3RoID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdHJldHVybiByZWFkQnl0ZXMocmVhZGVyLCBsZW5ndGgpO1xyXG5cdFx0fVxyXG5cdFx0Y2FzZSAnT2JBcic6IHsgLy8gT2JqZWN0IGFycmF5XHJcblx0XHRcdHJlYWRJbnQzMihyZWFkZXIpOyAvLyB2ZXJzaW9uOiAxNlxyXG5cdFx0XHRyZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpOyAvLyBuYW1lOiAnJ1xyXG5cdFx0XHRyZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTsgLy8gJ3JhdGlvbmFsUG9pbnQnXHJcblx0XHRcdGNvbnN0IGxlbmd0aCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRjb25zdCBpdGVtczogYW55W10gPSBbXTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRjb25zdCB0eXBlMSA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpOyAvLyB0eXBlIEhyem4gfCBWcnRjXHJcblx0XHRcdFx0cmVhZFNpZ25hdHVyZShyZWFkZXIpOyAvLyBVbkZsXHJcblxyXG5cdFx0XHRcdHJlYWRTaWduYXR1cmUocmVhZGVyKTsgLy8gdW5pdHMgPyAnI1B4bCdcclxuXHRcdFx0XHRjb25zdCB2YWx1ZXNDb3VudCA9IHJlYWRJbnQzMihyZWFkZXIpO1xyXG5cdFx0XHRcdGNvbnN0IHZhbHVlczogbnVtYmVyW10gPSBbXTtcclxuXHRcdFx0XHRmb3IgKGxldCBqID0gMDsgaiA8IHZhbHVlc0NvdW50OyBqKyspIHtcclxuXHRcdFx0XHRcdHZhbHVlcy5wdXNoKHJlYWRGbG9hdDY0KHJlYWRlcikpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0aXRlbXMucHVzaCh7IHR5cGU6IHR5cGUxLCB2YWx1ZXMgfSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiBpdGVtcztcclxuXHRcdH1cclxuXHRcdGNhc2UgJ1B0aCAnOiB7IC8vIEZpbGUgcGF0aFxyXG5cdFx0XHQvKmNvbnN0IGxlbmd0aCA9Ki8gcmVhZEludDMyKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IHNpZyA9IHJlYWRTaWduYXR1cmUocmVhZGVyKTtcclxuXHRcdFx0Lypjb25zdCBwYXRoU2l6ZSA9Ki8gcmVhZEludDMyTEUocmVhZGVyKTtcclxuXHRcdFx0Y29uc3QgY2hhcnNDb3VudCA9IHJlYWRJbnQzMkxFKHJlYWRlcik7XHJcblx0XHRcdGNvbnN0IHBhdGggPSByZWFkVW5pY29kZVN0cmluZ1dpdGhMZW5ndGgocmVhZGVyLCBjaGFyc0NvdW50KTtcclxuXHRcdFx0cmV0dXJuIHsgc2lnLCBwYXRoIH07XHJcblx0XHR9XHJcblx0XHRkZWZhdWx0OlxyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgVHlTaCBkZXNjcmlwdG9yIE9TVHlwZTogJHt0eXBlfSBhdCAke3JlYWRlci5vZmZzZXQudG9TdHJpbmcoMTYpfWApO1xyXG5cdH1cclxufVxyXG5cclxuY29uc3QgT2JBclR5cGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZDsgfSA9IHtcclxuXHRtZXNoUG9pbnRzOiAncmF0aW9uYWxQb2ludCcsXHJcblx0cXVpbHRTbGljZVg6ICdVbnRGJyxcclxuXHRxdWlsdFNsaWNlWTogJ1VudEYnLFxyXG59O1xyXG5cclxuZnVuY3Rpb24gd3JpdGVPU1R5cGUod3JpdGVyOiBQc2RXcml0ZXIsIHR5cGU6IHN0cmluZywgdmFsdWU6IGFueSwga2V5OiBzdHJpbmcsIGV4dFR5cGU6IE5hbWVDbGFzc0lEIHwgdW5kZWZpbmVkLCByb290OiBzdHJpbmcpIHtcclxuXHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdGNhc2UgJ29iaiAnOiAvLyBSZWZlcmVuY2VcclxuXHRcdFx0d3JpdGVSZWZlcmVuY2VTdHJ1Y3R1cmUod3JpdGVyLCBrZXksIHZhbHVlKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdPYmpjJzogLy8gRGVzY3JpcHRvclxyXG5cdFx0Y2FzZSAnR2xiTyc6IC8vIEdsb2JhbE9iamVjdCBzYW1lIGFzIERlc2NyaXB0b3JcclxuXHRcdFx0aWYgKCFleHRUeXBlKSB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZXh0IHR5cGUgZm9yOiAnJHtrZXl9JyAoJHtKU09OLnN0cmluZ2lmeSh2YWx1ZSl9KWApO1xyXG5cdFx0XHR3cml0ZURlc2NyaXB0b3JTdHJ1Y3R1cmUod3JpdGVyLCBleHRUeXBlLm5hbWUsIGV4dFR5cGUuY2xhc3NJRCwgdmFsdWUsIHJvb3QpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdGNhc2UgJ1ZsTHMnOiAvLyBMaXN0XHJcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCB2YWx1ZS5sZW5ndGgpO1xyXG5cclxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdGNvbnN0IHR5cGUgPSBmaWVsZFRvQXJyYXlUeXBlW2tleV07XHJcblx0XHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB0eXBlIHx8ICdsb25nJyk7XHJcblx0XHRcdFx0d3JpdGVPU1R5cGUod3JpdGVyLCB0eXBlIHx8ICdsb25nJywgdmFsdWVbaV0sICcnLCBmaWVsZFRvQXJyYXlFeHRUeXBlW2tleV0sIHJvb3QpO1xyXG5cdFx0XHRcdGlmIChsb2dFcnJvcnMgJiYgIXR5cGUpIGNvbnNvbGUubG9nKGBNaXNzaW5nIGRlc2NyaXB0b3IgYXJyYXkgdHlwZSBmb3I6ICcke2tleX0nIGluYCwgdmFsdWUpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnZG91Yic6IC8vIERvdWJsZVxyXG5cdFx0XHR3cml0ZUZsb2F0NjQod3JpdGVyLCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnVW50Ric6IC8vIFVuaXQgZG91YmxlXHJcblx0XHRcdGlmICghdW5pdHNNYXBSZXZbdmFsdWUudW5pdHNdKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7dmFsdWUudW5pdHN9IGluICR7a2V5fWApO1xyXG5cdFx0XHR3cml0ZVNpZ25hdHVyZSh3cml0ZXIsIHVuaXRzTWFwUmV2W3ZhbHVlLnVuaXRzXSk7XHJcblx0XHRcdHdyaXRlRmxvYXQ2NCh3cml0ZXIsIHZhbHVlLnZhbHVlKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdVbkZsJzogLy8gVW5pdCBmbG9hdFxyXG5cdFx0XHRpZiAoIXVuaXRzTWFwUmV2W3ZhbHVlLnVuaXRzXSkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3ZhbHVlLnVuaXRzfSBpbiAke2tleX1gKTtcclxuXHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB1bml0c01hcFJldlt2YWx1ZS51bml0c10pO1xyXG5cdFx0XHR3cml0ZUZsb2F0MzIod3JpdGVyLCB2YWx1ZS52YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Y2FzZSAnVEVYVCc6IC8vIFN0cmluZ1xyXG5cdFx0XHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXIsIHZhbHVlKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdlbnVtJzogeyAvLyBFbnVtZXJhdGVkXHJcblx0XHRcdGNvbnN0IFtfdHlwZSwgdmFsXSA9IHZhbHVlLnNwbGl0KCcuJyk7XHJcblx0XHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCBfdHlwZSk7XHJcblx0XHRcdHdyaXRlQXNjaWlTdHJpbmdPckNsYXNzSWQod3JpdGVyLCB2YWwpO1xyXG5cdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHRcdGNhc2UgJ2xvbmcnOiAvLyBJbnRlZ2VyXHJcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCB2YWx1ZSk7XHJcblx0XHRcdGJyZWFrO1xyXG5cdFx0Ly8gY2FzZSAnY29tcCc6IC8vIExhcmdlIEludGVnZXJcclxuXHRcdC8vIFx0d3JpdGVMYXJnZUludGVnZXIocmVhZGVyKTtcclxuXHRcdGNhc2UgJ2Jvb2wnOiAvLyBCb29sZWFuXHJcblx0XHRcdHdyaXRlVWludDgod3JpdGVyLCB2YWx1ZSA/IDEgOiAwKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHQvLyBjYXNlICd0eXBlJzogLy8gQ2xhc3NcclxuXHRcdC8vIGNhc2UgJ0dsYkMnOiAvLyBDbGFzc1xyXG5cdFx0Ly8gXHR3cml0ZUNsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHQvLyBjYXNlICdhbGlzJzogLy8gQWxpYXNcclxuXHRcdC8vIFx0d3JpdGVBbGlhc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0Y2FzZSAndGR0YSc6IC8vIFJhdyBEYXRhXHJcblx0XHRcdHdyaXRlSW50MzIod3JpdGVyLCB2YWx1ZS5ieXRlTGVuZ3RoKTtcclxuXHRcdFx0d3JpdGVCeXRlcyh3cml0ZXIsIHZhbHVlKTtcclxuXHRcdFx0YnJlYWs7XHJcblx0XHRjYXNlICdPYkFyJzogeyAvLyBPYmplY3QgYXJyYXlcclxuXHRcdFx0d3JpdGVJbnQzMih3cml0ZXIsIDE2KTsgLy8gdmVyc2lvblxyXG5cdFx0XHR3cml0ZVVuaWNvZGVTdHJpbmdXaXRoUGFkZGluZyh3cml0ZXIsICcnKTsgLy8gbmFtZVxyXG5cdFx0XHRjb25zdCB0eXBlID0gT2JBclR5cGVzW2tleV07XHJcblx0XHRcdGlmICghdHlwZSkgdGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQgT2JBclR5cGUgZm9yOiAke2tleX1gKTtcclxuXHRcdFx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIHR5cGUpO1xyXG5cdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWUubGVuZ3RoKTtcclxuXHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgdmFsdWVbaV0udHlwZSk7IC8vIEhyem4gfCBWcnRjXHJcblx0XHRcdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCAnVW5GbCcpO1xyXG5cdFx0XHRcdHdyaXRlU2lnbmF0dXJlKHdyaXRlciwgJyNQeGwnKTtcclxuXHRcdFx0XHR3cml0ZUludDMyKHdyaXRlciwgdmFsdWVbaV0udmFsdWVzLmxlbmd0aCk7XHJcblxyXG5cdFx0XHRcdGZvciAobGV0IGogPSAwOyBqIDwgdmFsdWVbaV0udmFsdWVzLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHR3cml0ZUZsb2F0NjQod3JpdGVyLCB2YWx1ZVtpXS52YWx1ZXNbal0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0XHRicmVhaztcclxuXHRcdH1cclxuXHRcdC8vIGNhc2UgJ1B0aCAnOiAvLyBGaWxlIHBhdGhcclxuXHRcdC8vIFx0d3JpdGVGaWxlUGF0aChyZWFkZXIpO1xyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQgZGVzY3JpcHRvciBPU1R5cGU6ICR7dHlwZX1gKTtcclxuXHR9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJlYWRSZWZlcmVuY2VTdHJ1Y3R1cmUocmVhZGVyOiBQc2RSZWFkZXIpIHtcclxuXHRjb25zdCBpdGVtc0NvdW50ID0gcmVhZEludDMyKHJlYWRlcik7XHJcblx0Y29uc3QgaXRlbXM6IGFueVtdID0gW107XHJcblxyXG5cdGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXNDb3VudDsgaSsrKSB7XHJcblx0XHRjb25zdCB0eXBlID0gcmVhZFNpZ25hdHVyZShyZWFkZXIpO1xyXG5cclxuXHRcdHN3aXRjaCAodHlwZSkge1xyXG5cdFx0XHRjYXNlICdwcm9wJzogeyAvLyBQcm9wZXJ0eVxyXG5cdFx0XHRcdHJlYWRDbGFzc1N0cnVjdHVyZShyZWFkZXIpO1xyXG5cdFx0XHRcdGNvbnN0IGtleUlEID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdFx0aXRlbXMucHVzaChrZXlJRCk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdFx0Y2FzZSAnQ2xzcyc6IC8vIENsYXNzXHJcblx0XHRcdFx0aXRlbXMucHVzaChyZWFkQ2xhc3NTdHJ1Y3R1cmUocmVhZGVyKSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgJ0VubXInOiB7IC8vIEVudW1lcmF0ZWQgUmVmZXJlbmNlXHJcblx0XHRcdFx0cmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRcdFx0Y29uc3QgdHlwZUlEID0gcmVhZEFzY2lpU3RyaW5nT3JDbGFzc0lkKHJlYWRlcik7XHJcblx0XHRcdFx0Y29uc3QgdmFsdWUgPSByZWFkQXNjaWlTdHJpbmdPckNsYXNzSWQocmVhZGVyKTtcclxuXHRcdFx0XHRpdGVtcy5wdXNoKGAke3R5cGVJRH0uJHt2YWx1ZX1gKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRjYXNlICdyZWxlJzogeyAvLyBPZmZzZXRcclxuXHRcdFx0XHQvLyBjb25zdCB7IG5hbWUsIGNsYXNzSUQgfSA9XHJcblx0XHRcdFx0cmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRcdFx0aXRlbXMucHVzaChyZWFkVWludDMyKHJlYWRlcikpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGNhc2UgJ0lkbnQnOiAvLyBJZGVudGlmaWVyXHJcblx0XHRcdFx0aXRlbXMucHVzaChyZWFkSW50MzIocmVhZGVyKSk7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdGNhc2UgJ2luZHgnOiAvLyBJbmRleFxyXG5cdFx0XHRcdGl0ZW1zLnB1c2gocmVhZEludDMyKHJlYWRlcikpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHRjYXNlICduYW1lJzogeyAvLyBOYW1lXHJcblx0XHRcdFx0cmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcik7XHJcblx0XHRcdFx0aXRlbXMucHVzaChyZWFkVW5pY29kZVN0cmluZyhyZWFkZXIpKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXNjcmlwdG9yIHJlZmVyZW5jZSB0eXBlOiAke3R5cGV9YCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRyZXR1cm4gaXRlbXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdyaXRlUmVmZXJlbmNlU3RydWN0dXJlKHdyaXRlcjogUHNkV3JpdGVyLCBfa2V5OiBzdHJpbmcsIGl0ZW1zOiBhbnlbXSkge1xyXG5cdHdyaXRlSW50MzIod3JpdGVyLCBpdGVtcy5sZW5ndGgpO1xyXG5cclxuXHRmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRjb25zdCB2YWx1ZSA9IGl0ZW1zW2ldO1xyXG5cdFx0bGV0IHR5cGUgPSAndW5rbm93bic7XHJcblxyXG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcclxuXHRcdFx0aWYgKC9eW2Etel0rXFwuW2Etel0rJC9pLnRlc3QodmFsdWUpKSB7XHJcblx0XHRcdFx0dHlwZSA9ICdFbm1yJztcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0eXBlID0gJ25hbWUnO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0d3JpdGVTaWduYXR1cmUod3JpdGVyLCB0eXBlKTtcclxuXHJcblx0XHRzd2l0Y2ggKHR5cGUpIHtcclxuXHRcdFx0Ly8gY2FzZSAncHJvcCc6IC8vIFByb3BlcnR5XHJcblx0XHRcdC8vIGNhc2UgJ0Nsc3MnOiAvLyBDbGFzc1xyXG5cdFx0XHRjYXNlICdFbm1yJzogeyAvLyBFbnVtZXJhdGVkIFJlZmVyZW5jZVxyXG5cdFx0XHRcdGNvbnN0IFt0eXBlSUQsIGVudW1WYWx1ZV0gPSB2YWx1ZS5zcGxpdCgnLicpO1xyXG5cdFx0XHRcdHdyaXRlQ2xhc3NTdHJ1Y3R1cmUod3JpdGVyLCAnXFwwJywgdHlwZUlEKTtcclxuXHRcdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgdHlwZUlEKTtcclxuXHRcdFx0XHR3cml0ZUFzY2lpU3RyaW5nT3JDbGFzc0lkKHdyaXRlciwgZW51bVZhbHVlKTtcclxuXHRcdFx0XHRicmVhaztcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyBjYXNlICdyZWxlJzogLy8gT2Zmc2V0XHJcblx0XHRcdC8vIGNhc2UgJ0lkbnQnOiAvLyBJZGVudGlmaWVyXHJcblx0XHRcdC8vIGNhc2UgJ2luZHgnOiAvLyBJbmRleFxyXG5cdFx0XHRjYXNlICduYW1lJzogeyAvLyBOYW1lXHJcblx0XHRcdFx0d3JpdGVDbGFzc1N0cnVjdHVyZSh3cml0ZXIsICdcXDAnLCAnTHlyICcpO1xyXG5cdFx0XHRcdHdyaXRlVW5pY29kZVN0cmluZyh3cml0ZXIsIHZhbHVlICsgJ1xcMCcpO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRlc2NyaXB0b3IgcmVmZXJlbmNlIHR5cGU6ICR7dHlwZX1gKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiBpdGVtcztcclxufVxyXG5cclxuZnVuY3Rpb24gcmVhZENsYXNzU3RydWN0dXJlKHJlYWRlcjogUHNkUmVhZGVyKSB7XHJcblx0Y29uc3QgbmFtZSA9IHJlYWRVbmljb2RlU3RyaW5nKHJlYWRlcik7XHJcblx0Y29uc3QgY2xhc3NJRCA9IHJlYWRBc2NpaVN0cmluZ09yQ2xhc3NJZChyZWFkZXIpO1xyXG5cdC8vIGNvbnNvbGUubG9nKHsgbmFtZSwgY2xhc3NJRCB9KTtcclxuXHRyZXR1cm4geyBuYW1lLCBjbGFzc0lEIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdyaXRlQ2xhc3NTdHJ1Y3R1cmUod3JpdGVyOiBQc2RXcml0ZXIsIG5hbWU6IHN0cmluZywgY2xhc3NJRDogc3RyaW5nKSB7XHJcblx0d3JpdGVVbmljb2RlU3RyaW5nKHdyaXRlciwgbmFtZSk7XHJcblx0d3JpdGVBc2NpaVN0cmluZ09yQ2xhc3NJZCh3cml0ZXIsIGNsYXNzSUQpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVhZFZlcnNpb25BbmREZXNjcmlwdG9yKHJlYWRlcjogUHNkUmVhZGVyKSB7XHJcblx0Y29uc3QgdmVyc2lvbiA9IHJlYWRVaW50MzIocmVhZGVyKTtcclxuXHRpZiAodmVyc2lvbiAhPT0gMTYpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXNjcmlwdG9yIHZlcnNpb246ICR7dmVyc2lvbn1gKTtcclxuXHRjb25zdCBkZXNjID0gcmVhZERlc2NyaXB0b3JTdHJ1Y3R1cmUocmVhZGVyKTtcclxuXHQvLyBjb25zb2xlLmxvZyhyZXF1aXJlKCd1dGlsJykuaW5zcGVjdChkZXNjLCBmYWxzZSwgOTksIHRydWUpKTtcclxuXHRyZXR1cm4gZGVzYztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlVmVyc2lvbkFuZERlc2NyaXB0b3Iod3JpdGVyOiBQc2RXcml0ZXIsIG5hbWU6IHN0cmluZywgY2xhc3NJRDogc3RyaW5nLCBkZXNjcmlwdG9yOiBhbnksIHJvb3QgPSAnJykge1xyXG5cdHdyaXRlVWludDMyKHdyaXRlciwgMTYpOyAvLyB2ZXJzaW9uXHJcblx0d3JpdGVEZXNjcmlwdG9yU3RydWN0dXJlKHdyaXRlciwgbmFtZSwgY2xhc3NJRCwgZGVzY3JpcHRvciwgcm9vdCk7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JVbml0cyA9ICdBbmdsZScgfCAnRGVuc2l0eScgfCAnRGlzdGFuY2UnIHwgJ05vbmUnIHwgJ1BlcmNlbnQnIHwgJ1BpeGVscycgfFxyXG5cdCdNaWxsaW1ldGVycycgfCAnUG9pbnRzJyB8ICdQaWNhcycgfCAnSW5jaGVzJyB8ICdDZW50aW1ldGVycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JVbml0c1ZhbHVlIHtcclxuXHR1bml0czogRGVzY3JpcHRvclVuaXRzO1xyXG5cdHZhbHVlOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JDb2xvciA9IHtcclxuXHQnUmQgICc6IG51bWJlcjtcclxuXHQnR3JuICc6IG51bWJlcjtcclxuXHQnQmwgICc6IG51bWJlcjtcclxufSB8IHtcclxuXHQnSCAgICc6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFN0cnQ6IG51bWJlcjtcclxuXHRCcmdoOiBudW1iZXI7XHJcbn0gfCB7XHJcblx0J0N5biAnOiBudW1iZXI7XHJcblx0TWdudDogbnVtYmVyO1xyXG5cdCdZbHcgJzogbnVtYmVyO1xyXG5cdEJsY2s6IG51bWJlcjtcclxufSB8IHtcclxuXHQnR3J5ICc6IG51bWJlcjtcclxufSB8IHtcclxuXHRMbW5jOiBudW1iZXI7XHJcblx0J0EgICAnOiBudW1iZXI7XHJcblx0J0IgICAnOiBudW1iZXI7XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2NpcHRvclBhdHRlcm4ge1xyXG5cdCdObSAgJzogc3RyaW5nO1xyXG5cdElkbnQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGVzY2lwdG9yR3JhZGllbnQgPSB7XHJcblx0J05tICAnOiBzdHJpbmc7XHJcblx0R3JkRjogJ0dyZEYuQ3N0Uyc7XHJcblx0SW50cjogbnVtYmVyO1xyXG5cdENscnM6IHtcclxuXHRcdCdDbHIgJzogRGVzY3JpcHRvckNvbG9yO1xyXG5cdFx0VHlwZTogJ0NscnkuVXNyUyc7XHJcblx0XHRMY3RuOiBudW1iZXI7XHJcblx0XHRNZHBuOiBudW1iZXI7XHJcblx0fVtdO1xyXG5cdFRybnM6IHtcclxuXHRcdE9wY3Q6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0TGN0bjogbnVtYmVyO1xyXG5cdFx0TWRwbjogbnVtYmVyO1xyXG5cdH1bXTtcclxufSB8IHtcclxuXHRHcmRGOiAnR3JkRi5DbE5zJztcclxuXHRTbXRoOiBudW1iZXI7XHJcblx0J05tICAnOiBzdHJpbmc7XHJcblx0Q2xyUzogc3RyaW5nO1xyXG5cdFJuZFM6IG51bWJlcjtcclxuXHRWY3RDPzogYm9vbGVhbjtcclxuXHRTaFRyPzogYm9vbGVhbjtcclxuXHQnTW5tICc6IG51bWJlcltdO1xyXG5cdCdNeG0gJzogbnVtYmVyW107XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JDb2xvckNvbnRlbnQge1xyXG5cdCdDbHIgJzogRGVzY3JpcHRvckNvbG9yO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JHcmFkaWVudENvbnRlbnQge1xyXG5cdEdyYWQ6IERlc2NpcHRvckdyYWRpZW50O1xyXG5cdFR5cGU6IHN0cmluZztcclxuXHREdGhyPzogYm9vbGVhbjtcclxuXHRSdnJzPzogYm9vbGVhbjtcclxuXHRBbmdsPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0J1NjbCAnPzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0QWxnbj86IGJvb2xlYW47XHJcblx0T2ZzdD86IHsgSHJ6bjogRGVzY3JpcHRvclVuaXRzVmFsdWU7IFZydGM6IERlc2NyaXB0b3JVbml0c1ZhbHVlOyB9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERlc2NyaXB0b3JQYXR0ZXJuQ29udGVudCB7XHJcblx0UHRybjogRGVzY2lwdG9yUGF0dGVybjtcclxuXHRMbmtkPzogYm9vbGVhbjtcclxuXHRwaGFzZT86IHsgSHJ6bjogbnVtYmVyOyBWcnRjOiBudW1iZXI7IH07XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIERlc2NyaXB0b3JWZWN0b3JDb250ZW50ID0gRGVzY3JpcHRvckNvbG9yQ29udGVudCB8IERlc2NyaXB0b3JHcmFkaWVudENvbnRlbnQgfCBEZXNjcmlwdG9yUGF0dGVybkNvbnRlbnQ7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN0cm9rZURlc2NyaXB0b3Ige1xyXG5cdHN0cm9rZVN0eWxlVmVyc2lvbjogbnVtYmVyO1xyXG5cdHN0cm9rZUVuYWJsZWQ6IGJvb2xlYW47XHJcblx0ZmlsbEVuYWJsZWQ6IGJvb2xlYW47XHJcblx0c3Ryb2tlU3R5bGVMaW5lV2lkdGg6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdHN0cm9rZVN0eWxlTGluZURhc2hPZmZzZXQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdHN0cm9rZVN0eWxlTWl0ZXJMaW1pdDogbnVtYmVyO1xyXG5cdHN0cm9rZVN0eWxlTGluZUNhcFR5cGU6IHN0cmluZztcclxuXHRzdHJva2VTdHlsZUxpbmVKb2luVHlwZTogc3RyaW5nO1xyXG5cdHN0cm9rZVN0eWxlTGluZUFsaWdubWVudDogc3RyaW5nO1xyXG5cdHN0cm9rZVN0eWxlU2NhbGVMb2NrOiBib29sZWFuO1xyXG5cdHN0cm9rZVN0eWxlU3Ryb2tlQWRqdXN0OiBib29sZWFuO1xyXG5cdHN0cm9rZVN0eWxlTGluZURhc2hTZXQ6IERlc2NyaXB0b3JVbml0c1ZhbHVlW107XHJcblx0c3Ryb2tlU3R5bGVCbGVuZE1vZGU6IHN0cmluZztcclxuXHRzdHJva2VTdHlsZU9wYWNpdHk6IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdHN0cm9rZVN0eWxlQ29udGVudDogRGVzY3JpcHRvclZlY3RvckNvbnRlbnQ7XHJcblx0c3Ryb2tlU3R5bGVSZXNvbHV0aW9uOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGV4dERlc2NyaXB0b3Ige1xyXG5cdCdUeHQgJzogc3RyaW5nO1xyXG5cdHRleHRHcmlkZGluZzogc3RyaW5nO1xyXG5cdE9ybnQ6IHN0cmluZztcclxuXHRBbnRBOiBzdHJpbmc7XHJcblx0VGV4dEluZGV4OiBudW1iZXI7XHJcblx0RW5naW5lRGF0YT86IFVpbnQ4QXJyYXk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2FycERlc2NyaXB0b3Ige1xyXG5cdHdhcnBTdHlsZTogc3RyaW5nO1xyXG5cdHdhcnBWYWx1ZTogbnVtYmVyO1xyXG5cdHdhcnBQZXJzcGVjdGl2ZTogbnVtYmVyO1xyXG5cdHdhcnBQZXJzcGVjdGl2ZU90aGVyOiBudW1iZXI7XHJcblx0d2FycFJvdGF0ZTogc3RyaW5nO1xyXG5cdGJvdW5kcz86IHtcclxuXHRcdCdUb3AgJzogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0XHRMZWZ0OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZTtcclxuXHRcdEJ0b206IERlc2NyaXB0b3JVbml0c1ZhbHVlO1xyXG5cdFx0UmdodDogRGVzY3JpcHRvclVuaXRzVmFsdWU7XHJcblx0fTtcclxuXHR1T3JkZXI6IG51bWJlcjtcclxuXHR2T3JkZXI6IG51bWJlcjtcclxuXHRjdXN0b21FbnZlbG9wZVdhcnA/OiB7XHJcblx0XHRtZXNoUG9pbnRzOiB7XHJcblx0XHRcdHR5cGU6ICdIcnpuJyB8ICdWcnRjJztcclxuXHRcdFx0dmFsdWVzOiBudW1iZXJbXTtcclxuXHRcdH1bXTtcclxuXHR9O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFF1aWx0V2FycERlc2NyaXB0b3IgZXh0ZW5kcyBXYXJwRGVzY3JpcHRvciB7XHJcblx0ZGVmb3JtTnVtUm93czogbnVtYmVyO1xyXG5cdGRlZm9ybU51bUNvbHM6IG51bWJlcjtcclxuXHRjdXN0b21FbnZlbG9wZVdhcnA6IHtcclxuXHRcdHF1aWx0U2xpY2VYOiB7XHJcblx0XHRcdHR5cGU6ICdxdWlsdFNsaWNlWCc7XHJcblx0XHRcdHZhbHVlczogbnVtYmVyW107XHJcblx0XHR9W107XHJcblx0XHRxdWlsdFNsaWNlWToge1xyXG5cdFx0XHR0eXBlOiAncXVpbHRTbGljZVknO1xyXG5cdFx0XHR2YWx1ZXM6IG51bWJlcltdO1xyXG5cdFx0fVtdO1xyXG5cdFx0bWVzaFBvaW50czoge1xyXG5cdFx0XHR0eXBlOiAnSHJ6bicgfCAnVnJ0Yyc7XHJcblx0XHRcdHZhbHVlczogbnVtYmVyW107XHJcblx0XHR9W107XHJcblx0fTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQW5nbGUoeDogRGVzY3JpcHRvclVuaXRzVmFsdWUpIHtcclxuXHRpZiAoeCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMDtcclxuXHRpZiAoeC51bml0cyAhPT0gJ0FuZ2xlJykgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3gudW5pdHN9YCk7XHJcblx0cmV0dXJuIHgudmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBlcmNlbnQoeDogRGVzY3JpcHRvclVuaXRzVmFsdWUgfCB1bmRlZmluZWQpIHtcclxuXHRpZiAoeCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMTtcclxuXHRpZiAoeC51bml0cyAhPT0gJ1BlcmNlbnQnKSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHM6ICR7eC51bml0c31gKTtcclxuXHRyZXR1cm4geC52YWx1ZSAvIDEwMDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUGVyY2VudE9yQW5nbGUoeDogRGVzY3JpcHRvclVuaXRzVmFsdWUgfCB1bmRlZmluZWQpIHtcclxuXHRpZiAoeCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gMTtcclxuXHRpZiAoeC51bml0cyA9PT0gJ1BlcmNlbnQnKSByZXR1cm4geC52YWx1ZSAvIDEwMDtcclxuXHRpZiAoeC51bml0cyA9PT0gJ0FuZ2xlJykgcmV0dXJuIHgudmFsdWUgLyAzNjA7XHJcblx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke3gudW5pdHN9YCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVVuaXRzKHsgdW5pdHMsIHZhbHVlIH06IERlc2NyaXB0b3JVbml0c1ZhbHVlKTogVW5pdHNWYWx1ZSB7XHJcblx0aWYgKFxyXG5cdFx0dW5pdHMgIT09ICdQaXhlbHMnICYmIHVuaXRzICE9PSAnTWlsbGltZXRlcnMnICYmIHVuaXRzICE9PSAnUG9pbnRzJyAmJiB1bml0cyAhPT0gJ05vbmUnICYmXHJcblx0XHR1bml0cyAhPT0gJ1BpY2FzJyAmJiB1bml0cyAhPT0gJ0luY2hlcycgJiYgdW5pdHMgIT09ICdDZW50aW1ldGVycycgJiYgdW5pdHMgIT09ICdEZW5zaXR5J1xyXG5cdCkge1xyXG5cdFx0dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHVuaXRzOiAke0pTT04uc3RyaW5naWZ5KHsgdW5pdHMsIHZhbHVlIH0pfWApO1xyXG5cdH1cclxuXHRyZXR1cm4geyB2YWx1ZSwgdW5pdHMgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVW5pdHNPck51bWJlcih2YWx1ZTogRGVzY3JpcHRvclVuaXRzVmFsdWUgfCBudW1iZXIsIHVuaXRzOiBVbml0cyA9ICdQaXhlbHMnKTogVW5pdHNWYWx1ZSB7XHJcblx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB7IHZhbHVlLCB1bml0cyB9O1xyXG5cdHJldHVybiBwYXJzZVVuaXRzKHZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVW5pdHNUb051bWJlcih7IHVuaXRzLCB2YWx1ZSB9OiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSwgZXhwZWN0ZWRVbml0czogc3RyaW5nKTogbnVtYmVyIHtcclxuXHRpZiAodW5pdHMgIT09IGV4cGVjdGVkVW5pdHMpIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bml0czogJHtKU09OLnN0cmluZ2lmeSh7IHVuaXRzLCB2YWx1ZSB9KX1gKTtcclxuXHRyZXR1cm4gdmFsdWU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1bml0c0FuZ2xlKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBEZXNjcmlwdG9yVW5pdHNWYWx1ZSB7XHJcblx0cmV0dXJuIHsgdW5pdHM6ICdBbmdsZScsIHZhbHVlOiB2YWx1ZSB8fCAwIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1bml0c1BlcmNlbnQodmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCk6IERlc2NyaXB0b3JVbml0c1ZhbHVlIHtcclxuXHRyZXR1cm4geyB1bml0czogJ1BlcmNlbnQnLCB2YWx1ZTogTWF0aC5yb3VuZCgodmFsdWUgfHwgMCkgKiAxMDApIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB1bml0c1ZhbHVlKHg6IFVuaXRzVmFsdWUgfCB1bmRlZmluZWQsIGtleTogc3RyaW5nKTogRGVzY3JpcHRvclVuaXRzVmFsdWUge1xyXG5cdGlmICh4ID09IG51bGwpIHJldHVybiB7IHVuaXRzOiAnUGl4ZWxzJywgdmFsdWU6IDAgfTtcclxuXHJcblx0aWYgKHR5cGVvZiB4ICE9PSAnb2JqZWN0JylcclxuXHRcdHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2YWx1ZTogJHtKU09OLnN0cmluZ2lmeSh4KX0gKGtleTogJHtrZXl9KSAoc2hvdWxkIGhhdmUgdmFsdWUgYW5kIHVuaXRzKWApO1xyXG5cclxuXHRjb25zdCB7IHVuaXRzLCB2YWx1ZSB9ID0geDtcclxuXHJcblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpXHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdmFsdWUgaW4gJHtKU09OLnN0cmluZ2lmeSh4KX0gKGtleTogJHtrZXl9KWApO1xyXG5cclxuXHRpZiAoXHJcblx0XHR1bml0cyAhPT0gJ1BpeGVscycgJiYgdW5pdHMgIT09ICdNaWxsaW1ldGVycycgJiYgdW5pdHMgIT09ICdQb2ludHMnICYmIHVuaXRzICE9PSAnTm9uZScgJiZcclxuXHRcdHVuaXRzICE9PSAnUGljYXMnICYmIHVuaXRzICE9PSAnSW5jaGVzJyAmJiB1bml0cyAhPT0gJ0NlbnRpbWV0ZXJzJyAmJiB1bml0cyAhPT0gJ0RlbnNpdHknXHJcblx0KSB7XHJcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5pdHMgaW4gJHtKU09OLnN0cmluZ2lmeSh4KX0gKGtleTogJHtrZXl9KWApO1xyXG5cdH1cclxuXHJcblx0cmV0dXJuIHsgdW5pdHMsIHZhbHVlIH07XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCB0ZXh0R3JpZGRpbmcgPSBjcmVhdGVFbnVtPFRleHRHcmlkZGluZz4oJ3RleHRHcmlkZGluZycsICdub25lJywge1xyXG5cdG5vbmU6ICdOb25lJyxcclxuXHRyb3VuZDogJ1JuZCAnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBPcm50ID0gY3JlYXRlRW51bTxPcmllbnRhdGlvbj4oJ09ybnQnLCAnaG9yaXpvbnRhbCcsIHtcclxuXHRob3Jpem9udGFsOiAnSHJ6bicsXHJcblx0dmVydGljYWw6ICdWcnRjJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQW5udCA9IGNyZWF0ZUVudW08QW50aUFsaWFzPignQW5udCcsICdzaGFycCcsIHtcclxuXHRub25lOiAnQW5ubycsXHJcblx0c2hhcnA6ICdhbnRpQWxpYXNTaGFycCcsXHJcblx0Y3Jpc3A6ICdBbkNyJyxcclxuXHRzdHJvbmc6ICdBblN0JyxcclxuXHRzbW9vdGg6ICdBblNtJyxcclxuXHRwbGF0Zm9ybTogJ2FudGlBbGlhc1BsYXRmb3JtR3JheScsXHJcblx0cGxhdGZvcm1MQ0Q6ICdhbnRpQWxpYXNQbGF0Zm9ybUxDRCcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHdhcnBTdHlsZSA9IGNyZWF0ZUVudW08V2FycFN0eWxlPignd2FycFN0eWxlJywgJ25vbmUnLCB7XHJcblx0bm9uZTogJ3dhcnBOb25lJyxcclxuXHRhcmM6ICd3YXJwQXJjJyxcclxuXHRhcmNMb3dlcjogJ3dhcnBBcmNMb3dlcicsXHJcblx0YXJjVXBwZXI6ICd3YXJwQXJjVXBwZXInLFxyXG5cdGFyY2g6ICd3YXJwQXJjaCcsXHJcblx0YnVsZ2U6ICd3YXJwQnVsZ2UnLFxyXG5cdHNoZWxsTG93ZXI6ICd3YXJwU2hlbGxMb3dlcicsXHJcblx0c2hlbGxVcHBlcjogJ3dhcnBTaGVsbFVwcGVyJyxcclxuXHRmbGFnOiAnd2FycEZsYWcnLFxyXG5cdHdhdmU6ICd3YXJwV2F2ZScsXHJcblx0ZmlzaDogJ3dhcnBGaXNoJyxcclxuXHRyaXNlOiAnd2FycFJpc2UnLFxyXG5cdGZpc2hleWU6ICd3YXJwRmlzaGV5ZScsXHJcblx0aW5mbGF0ZTogJ3dhcnBJbmZsYXRlJyxcclxuXHRzcXVlZXplOiAnd2FycFNxdWVlemUnLFxyXG5cdHR3aXN0OiAnd2FycFR3aXN0JyxcclxuXHRjdXN0b206ICd3YXJwQ3VzdG9tJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQmxuTSA9IGNyZWF0ZUVudW08QmxlbmRNb2RlPignQmxuTScsICdub3JtYWwnLCB7XHJcblx0J25vcm1hbCc6ICdOcm1sJyxcclxuXHQnZGlzc29sdmUnOiAnRHNsdicsXHJcblx0J2Rhcmtlbic6ICdEcmtuJyxcclxuXHQnbXVsdGlwbHknOiAnTWx0cCcsXHJcblx0J2NvbG9yIGJ1cm4nOiAnQ0JybicsXHJcblx0J2xpbmVhciBidXJuJzogJ2xpbmVhckJ1cm4nLFxyXG5cdCdkYXJrZXIgY29sb3InOiAnZGFya2VyQ29sb3InLFxyXG5cdCdsaWdodGVuJzogJ0xnaG4nLFxyXG5cdCdzY3JlZW4nOiAnU2NybicsXHJcblx0J2NvbG9yIGRvZGdlJzogJ0NEZGcnLFxyXG5cdCdsaW5lYXIgZG9kZ2UnOiAnbGluZWFyRG9kZ2UnLFxyXG5cdCdsaWdodGVyIGNvbG9yJzogJ2xpZ2h0ZXJDb2xvcicsXHJcblx0J292ZXJsYXknOiAnT3ZybCcsXHJcblx0J3NvZnQgbGlnaHQnOiAnU2Z0TCcsXHJcblx0J2hhcmQgbGlnaHQnOiAnSHJkTCcsXHJcblx0J3ZpdmlkIGxpZ2h0JzogJ3ZpdmlkTGlnaHQnLFxyXG5cdCdsaW5lYXIgbGlnaHQnOiAnbGluZWFyTGlnaHQnLFxyXG5cdCdwaW4gbGlnaHQnOiAncGluTGlnaHQnLFxyXG5cdCdoYXJkIG1peCc6ICdoYXJkTWl4JyxcclxuXHQnZGlmZmVyZW5jZSc6ICdEZnJuJyxcclxuXHQnZXhjbHVzaW9uJzogJ1hjbHUnLFxyXG5cdCdzdWJ0cmFjdCc6ICdibGVuZFN1YnRyYWN0aW9uJyxcclxuXHQnZGl2aWRlJzogJ2JsZW5kRGl2aWRlJyxcclxuXHQnaHVlJzogJ0ggICAnLFxyXG5cdCdzYXR1cmF0aW9uJzogJ1N0cnQnLFxyXG5cdCdjb2xvcic6ICdDbHIgJyxcclxuXHQnbHVtaW5vc2l0eSc6ICdMbW5zJyxcclxuXHQvLyB1c2VkIGluIEFCUlxyXG5cdCdsaW5lYXIgaGVpZ2h0JzogJ2xpbmVhckhlaWdodCcsXHJcblx0J2hlaWdodCc6ICdIZ2h0JyxcclxuXHQnc3VidHJhY3Rpb24nOiAnU2J0cicsIC8vIDJuZCB2ZXJzaW9uIG9mIHN1YnRyYWN0ID9cclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgQkVTbCA9IGNyZWF0ZUVudW08QmV2ZWxTdHlsZT4oJ0JFU2wnLCAnaW5uZXIgYmV2ZWwnLCB7XHJcblx0J2lubmVyIGJldmVsJzogJ0luckInLFxyXG5cdCdvdXRlciBiZXZlbCc6ICdPdHJCJyxcclxuXHQnZW1ib3NzJzogJ0VtYnMnLFxyXG5cdCdwaWxsb3cgZW1ib3NzJzogJ1BsRWInLFxyXG5cdCdzdHJva2UgZW1ib3NzJzogJ3N0cm9rZUVtYm9zcycsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGJ2bFQgPSBjcmVhdGVFbnVtPEJldmVsVGVjaG5pcXVlPignYnZsVCcsICdzbW9vdGgnLCB7XHJcblx0J3Ntb290aCc6ICdTZkJMJyxcclxuXHQnY2hpc2VsIGhhcmQnOiAnUHJCTCcsXHJcblx0J2NoaXNlbCBzb2Z0JzogJ1NsbXQnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBCRVNzID0gY3JlYXRlRW51bTxCZXZlbERpcmVjdGlvbj4oJ0JFU3MnLCAndXAnLCB7XHJcblx0dXA6ICdJbiAgJyxcclxuXHRkb3duOiAnT3V0ICcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IEJFVEUgPSBjcmVhdGVFbnVtPEdsb3dUZWNobmlxdWU+KCdCRVRFJywgJ3NvZnRlcicsIHtcclxuXHRzb2Z0ZXI6ICdTZkJMJyxcclxuXHRwcmVjaXNlOiAnUHJCTCcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IElHU3IgPSBjcmVhdGVFbnVtPEdsb3dTb3VyY2U+KCdJR1NyJywgJ2VkZ2UnLCB7XHJcblx0ZWRnZTogJ1NyY0UnLFxyXG5cdGNlbnRlcjogJ1NyY0MnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBHcmRUID0gY3JlYXRlRW51bTxHcmFkaWVudFN0eWxlPignR3JkVCcsICdsaW5lYXInLCB7XHJcblx0bGluZWFyOiAnTG5yICcsXHJcblx0cmFkaWFsOiAnUmRsICcsXHJcblx0YW5nbGU6ICdBbmdsJyxcclxuXHRyZWZsZWN0ZWQ6ICdSZmxjJyxcclxuXHRkaWFtb25kOiAnRG1uZCcsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGdyYWRpZW50SW50ZXJwb2xhdGlvbk1ldGhvZFR5cGUgPSBjcmVhdGVFbnVtPEludGVycG9sYXRpb25NZXRob2Q+KCdncmFkaWVudEludGVycG9sYXRpb25NZXRob2RUeXBlJywgJ3BlcmNlcHR1YWwnLCB7XHJcblx0cGVyY2VwdHVhbDogJ1BlcmMnLFxyXG5cdGxpbmVhcjogJ0xucicsXHJcblx0Y2xhc3NpYzogJ0djbHMnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBDbHJTID0gY3JlYXRlRW51bTwncmdiJyB8ICdoc2InIHwgJ2xhYic+KCdDbHJTJywgJ3JnYicsIHtcclxuXHRyZ2I6ICdSR0JDJyxcclxuXHRoc2I6ICdIU0JsJyxcclxuXHRsYWI6ICdMYkNsJyxcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgRlN0bCA9IGNyZWF0ZUVudW08J2luc2lkZScgfCAnY2VudGVyJyB8ICdvdXRzaWRlJz4oJ0ZTdGwnLCAnb3V0c2lkZScsIHtcclxuXHRvdXRzaWRlOiAnT3V0RicsXHJcblx0Y2VudGVyOiAnQ3RyRicsXHJcblx0aW5zaWRlOiAnSW5zRidcclxufSk7XHJcblxyXG5leHBvcnQgY29uc3QgRnJGbCA9IGNyZWF0ZUVudW08J2NvbG9yJyB8ICdncmFkaWVudCcgfCAncGF0dGVybic+KCdGckZsJywgJ2NvbG9yJywge1xyXG5cdGNvbG9yOiAnU0NscicsXHJcblx0Z3JhZGllbnQ6ICdHckZsJyxcclxuXHRwYXR0ZXJuOiAnUHRybicsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlTGluZUNhcFR5cGUgPSBjcmVhdGVFbnVtPExpbmVDYXBUeXBlPignc3Ryb2tlU3R5bGVMaW5lQ2FwVHlwZScsICdidXR0Jywge1xyXG5cdGJ1dHQ6ICdzdHJva2VTdHlsZUJ1dHRDYXAnLFxyXG5cdHJvdW5kOiAnc3Ryb2tlU3R5bGVSb3VuZENhcCcsXHJcblx0c3F1YXJlOiAnc3Ryb2tlU3R5bGVTcXVhcmVDYXAnLFxyXG59KTtcclxuXHJcbmV4cG9ydCBjb25zdCBzdHJva2VTdHlsZUxpbmVKb2luVHlwZSA9IGNyZWF0ZUVudW08TGluZUpvaW5UeXBlPignc3Ryb2tlU3R5bGVMaW5lSm9pblR5cGUnLCAnbWl0ZXInLCB7XHJcblx0bWl0ZXI6ICdzdHJva2VTdHlsZU1pdGVySm9pbicsXHJcblx0cm91bmQ6ICdzdHJva2VTdHlsZVJvdW5kSm9pbicsXHJcblx0YmV2ZWw6ICdzdHJva2VTdHlsZUJldmVsSm9pbicsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IHN0cm9rZVN0eWxlTGluZUFsaWdubWVudCA9IGNyZWF0ZUVudW08TGluZUFsaWdubWVudD4oJ3N0cm9rZVN0eWxlTGluZUFsaWdubWVudCcsICdpbnNpZGUnLCB7XHJcblx0aW5zaWRlOiAnc3Ryb2tlU3R5bGVBbGlnbkluc2lkZScsXHJcblx0Y2VudGVyOiAnc3Ryb2tlU3R5bGVBbGlnbkNlbnRlcicsXHJcblx0b3V0c2lkZTogJ3N0cm9rZVN0eWxlQWxpZ25PdXRzaWRlJyxcclxufSk7XHJcbiJdLCJzb3VyY2VSb290IjoiQzpcXFByb2plY3RzXFxnaXRodWJcXGFnLXBzZFxcc3JjIn0=
|