@cichol/logger 6.2.0 → 6.3.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/dists/index.js +23 -35
- package/package.json +4 -4
package/dists/index.js
CHANGED
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
import _Object$fromEntries from 'core-js-pure/features/object/from-entries.js';
|
|
2
|
-
import _filterInstanceProperty from 'core-js-pure/features/instance/filter.js';
|
|
3
|
-
import _mapInstanceProperty from 'core-js-pure/features/instance/map.js';
|
|
4
|
-
import _trimInstanceProperty from 'core-js-pure/features/instance/trim.js';
|
|
5
|
-
import _Reflect$construct from 'core-js-pure/features/reflect/construct.js';
|
|
6
1
|
import { STATUS_CODES, IncomingMessage, ServerResponse } from 'http';
|
|
7
2
|
import { PassThrough } from 'stream';
|
|
8
3
|
import { promisify } from 'util';
|
|
9
4
|
import morgan from 'morgan';
|
|
10
5
|
import * as winston from 'winston';
|
|
11
6
|
import { format } from 'winston';
|
|
12
|
-
import _findInstanceProperty from 'core-js-pure/features/instance/find.js';
|
|
13
|
-
import _Reflect$apply from 'core-js-pure/features/reflect/apply.js';
|
|
14
7
|
import { bgRgb24, rgb24, bold, blue, gray, underline, red, magenta, green } from '@std/fmt/colors';
|
|
15
8
|
import rTracer from 'cls-rtracer';
|
|
16
9
|
import { DateTime } from 'luxon';
|
|
17
|
-
import _Map from 'core-js-pure/features/map/index.js';
|
|
18
10
|
import process, { version, env } from 'process';
|
|
19
|
-
import _Symbol$for from 'core-js-pure/features/symbol/for.js';
|
|
20
|
-
import _indexOfInstanceProperty from 'core-js-pure/features/instance/index-of.js';
|
|
21
|
-
import _sliceInstanceProperty from 'core-js-pure/features/instance/slice.js';
|
|
22
|
-
import _startsWithInstanceProperty from 'core-js-pure/features/instance/starts-with.js';
|
|
23
11
|
import _includesInstanceProperty from 'core-js-pure/features/instance/includes.js';
|
|
24
|
-
import _lastIndexOfInstanceProperty from 'core-js-pure/features/instance/last-index-of.js';
|
|
25
12
|
import path from 'path';
|
|
26
13
|
import { highlight } from 'cli-highlight';
|
|
27
14
|
import { format as format$1 } from '@std/fmt/bytes';
|
|
@@ -46,10 +33,12 @@ const LoggingLevel = {
|
|
|
46
33
|
Debug: 5
|
|
47
34
|
};
|
|
48
35
|
|
|
36
|
+
// Third-party modules.
|
|
37
|
+
|
|
49
38
|
// Type definitions.
|
|
50
39
|
|
|
51
40
|
// Constants.
|
|
52
|
-
const colorizerMap = new
|
|
41
|
+
const colorizerMap = new Map();
|
|
53
42
|
|
|
54
43
|
// Helpers.
|
|
55
44
|
function createScheme(options) {
|
|
@@ -121,7 +110,7 @@ function decorateLabel(label, scheme) {
|
|
|
121
110
|
// Constants.
|
|
122
111
|
const rootPath = process.cwd();
|
|
123
112
|
const conjunction = ` ${blue('──')} `;
|
|
124
|
-
const splat =
|
|
113
|
+
const splat = Symbol.for('splat');
|
|
125
114
|
|
|
126
115
|
// Handler metadata.
|
|
127
116
|
const name$8 = 'error';
|
|
@@ -129,14 +118,14 @@ const level$8 = LoggingLevel.Error;
|
|
|
129
118
|
const label$8 = decorateLabel('ERROR', ColorScheme.Critical);
|
|
130
119
|
function simplifyDataURI(dataURI) {
|
|
131
120
|
const [, actualContent] = dataURI.split(':');
|
|
132
|
-
const pivot =
|
|
133
|
-
const mimeIndicator =
|
|
134
|
-
const contentPrefix =
|
|
135
|
-
const contentSuffix =
|
|
121
|
+
const pivot = actualContent.indexOf(',') + 1;
|
|
122
|
+
const mimeIndicator = actualContent.slice(0, pivot);
|
|
123
|
+
const contentPrefix = actualContent.slice(pivot, pivot + 4);
|
|
124
|
+
const contentSuffix = actualContent.slice(-4);
|
|
136
125
|
return `data:${mimeIndicator + contentPrefix}...${contentSuffix}`;
|
|
137
126
|
}
|
|
138
127
|
function isDataURI(filename) {
|
|
139
|
-
return
|
|
128
|
+
return filename.startsWith('data:');
|
|
140
129
|
}
|
|
141
130
|
function isAbsoluteOrDataURI(filename) {
|
|
142
131
|
return path.isAbsolute(filename) || isDataURI(filename);
|
|
@@ -146,14 +135,13 @@ function mapLocationOfErrorThrown(filename) {
|
|
|
146
135
|
if (isDataURI(filename)) {
|
|
147
136
|
target = gray(simplifyDataURI(filename));
|
|
148
137
|
} else if (_includesInstanceProperty(target).call(target, 'node_modules')) {
|
|
149
|
-
target = gray(
|
|
138
|
+
target = gray(target.slice(target.lastIndexOf('node_modules'))).replace(/node_modules[\\/]((?:@[^\\/]+[\\/])?[^\\/]+)(.*)/, (_, moduleName, trailing) => `node_modules${path.sep}${bold(underline(moduleName))}${gray(trailing)}`);
|
|
150
139
|
} else {
|
|
151
140
|
target = `${gray(path.dirname(target) + path.sep)}${bold(underline(path.basename(target)))}`;
|
|
152
141
|
}
|
|
153
142
|
return target;
|
|
154
143
|
}
|
|
155
144
|
function handle$2(data) {
|
|
156
|
-
var _context, _context2, _context3;
|
|
157
145
|
const {
|
|
158
146
|
[splat]: [error] = []
|
|
159
147
|
} = data;
|
|
@@ -165,7 +153,7 @@ function handle$2(data) {
|
|
|
165
153
|
message,
|
|
166
154
|
stack: rawStack = ''
|
|
167
155
|
} = error;
|
|
168
|
-
const stack =
|
|
156
|
+
const stack = rawStack.slice(errorName.length + message.length + 3).split('\n').map(line => line.replace(/^\s+at /g, '')).map(line => isAbsoluteOrDataURI(line) ? `<anonymous>${conjunction}${mapLocationOfErrorThrown(line)}` : line).map(line => line.replace(/^(.+) \((.+)\)$/, (_, contextName, rawLocation) => {
|
|
169
157
|
let location = '';
|
|
170
158
|
switch (true) {
|
|
171
159
|
case rawLocation === '<anonymous>':
|
|
@@ -178,9 +166,9 @@ function handle$2(data) {
|
|
|
178
166
|
location = gray(simplifyDataURI(rawLocation));
|
|
179
167
|
break;
|
|
180
168
|
}
|
|
181
|
-
case
|
|
169
|
+
case rawLocation.startsWith('node:'):
|
|
182
170
|
{
|
|
183
|
-
const [filename, occurredLine] =
|
|
171
|
+
const [filename, occurredLine] = rawLocation.slice(5).split(':');
|
|
184
172
|
location = gray(`https://github.com/${bold(underline('nodejs'))}/node/blob/${version}/lib/${filename}.js#L${occurredLine}`);
|
|
185
173
|
break;
|
|
186
174
|
}
|
|
@@ -358,12 +346,12 @@ var DebugHandler = /*#__PURE__*/Object.freeze({
|
|
|
358
346
|
// Handler implementations.
|
|
359
347
|
const handlers = [FatalHandler, ErrorHandler, WarningHandler, NoticeHandler, InfoHandler, HttpHandler, QueryHandler, VerboseHandler, DebugHandler];
|
|
360
348
|
|
|
349
|
+
// Third-party modules.
|
|
361
350
|
var formatForCLI = format.printf(data => {
|
|
362
|
-
var _context, _context2;
|
|
363
351
|
const timestamp = gray(DateTime.now().toISO({
|
|
364
352
|
includeOffset: true
|
|
365
353
|
}));
|
|
366
|
-
const handler =
|
|
354
|
+
const handler = handlers.find(({
|
|
367
355
|
name
|
|
368
356
|
}) => name === data.level);
|
|
369
357
|
const fallback = {
|
|
@@ -376,8 +364,8 @@ var formatForCLI = format.printf(data => {
|
|
|
376
364
|
const {
|
|
377
365
|
label,
|
|
378
366
|
payload
|
|
379
|
-
} =
|
|
380
|
-
const extraFingerprint =
|
|
367
|
+
} = Reflect.apply(performHandle, undefined, [data]) ?? fallback;
|
|
368
|
+
const extraFingerprint = [['Request-ID', rTracer.id()], ['Transaction-ID', data.transactionId]].filter(([, idValue]) => idValue).map(([kind, idValue]) => `${kind} = ${idValue}`).join(' | ');
|
|
381
369
|
return `${label} ${timestamp}${extraFingerprint ? ` (${extraFingerprint})` : ''}\n${payload}`;
|
|
382
370
|
});
|
|
383
371
|
|
|
@@ -453,7 +441,7 @@ function formatForMorgan(tokens, request, response) {
|
|
|
453
441
|
}
|
|
454
442
|
var formatForMorgan$1 = executionMode === ExecutionMode.DevelopmentMode ? formatForMorgan : morgan.combined;
|
|
455
443
|
|
|
456
|
-
|
|
444
|
+
// Node.js built-in APIs.
|
|
457
445
|
|
|
458
446
|
// Type definitions.
|
|
459
447
|
|
|
@@ -464,10 +452,10 @@ const {
|
|
|
464
452
|
class Logger {
|
|
465
453
|
static #instance;
|
|
466
454
|
#logger = winston.createLogger({
|
|
467
|
-
levels:
|
|
455
|
+
levels: Object.fromEntries(handlers.map(({
|
|
468
456
|
name,
|
|
469
457
|
level
|
|
470
|
-
}) => [name, level])
|
|
458
|
+
}) => [name, level]).filter(([, level]) => typeof level === 'number')),
|
|
471
459
|
level: executionMode === ExecutionMode.ProductionMode ? 'http' : 'verbose',
|
|
472
460
|
transports: [new ConsoleTransport({
|
|
473
461
|
format: formatForCLI
|
|
@@ -478,7 +466,7 @@ class Logger {
|
|
|
478
466
|
stream: new PassThrough({
|
|
479
467
|
objectMode: true
|
|
480
468
|
}).on('data', data => {
|
|
481
|
-
this.log('http',
|
|
469
|
+
this.log('http', data.trim());
|
|
482
470
|
})
|
|
483
471
|
});
|
|
484
472
|
constructor() {
|
|
@@ -536,7 +524,7 @@ class Logger {
|
|
|
536
524
|
}
|
|
537
525
|
}
|
|
538
526
|
}
|
|
539
|
-
var logger =
|
|
527
|
+
var logger = Reflect.construct(Logger, [], Logger);
|
|
540
528
|
|
|
541
529
|
export { logger as default };
|
|
542
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvaGVscGVycy9sb2dnaW5nLWxldmVsLnRzIiwiLi4vc291cmNlcy9oZWxwZXJzL2NvbG9yLXNjaGVtZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9sYWJlbC1kZWNvcmF0b3IudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2Vycm9yLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9mYXRhbC50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvd2FybmluZy50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvbm90aWNlLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9pbmZvLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9odHRwLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9xdWVyeS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvdmVyYm9zZS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvZGVidWcudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2luZGV4LnRzIiwiLi4vc291cmNlcy9mb3JtYXR0ZXJzL2NvbW1hbmQtbGluZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9jb25zdGFudHMudHMiLCIuLi9zb3VyY2VzL2Zvcm1hdHRlcnMvbW9yZ2FuLnRzIiwiLi4vc291cmNlcy9jbGFzc2VzL2xvZ2dlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBMb2dnaW5nTGV2ZWwgPSB7XG5cdC8vIENyaXRpY2FsIGxldmVscy4gKEl0IHdpbGwgY3Jhc2ggdGhlIHByb2Nlc3MpXG5cdEZhdGFsOiAwLFxuXHRFcnJvcjogMSxcblxuXHQvLyBXYXJuaW5nIGxldmVscy4gKEl0IGp1c3QgcmVwb3J0IHdhcm5pbmcgaW5mb3JtYXRpb24sIG5vdCBjcmFzaCB0aGUgcHJvY2Vzcylcblx0V2FybmluZzogMixcblxuXHQvLyBSZWd1bGFyIGxldmVsIGFuZCBhbGlhc2VzLlxuXHROb3RpY2U6IDMsXG5cdEluZm86IDMsXG5cblx0Ly8gTWF5YmUgc2Vuc2l0aXZlIGxldmVscy4gKEluIGdlbmVyYWwsIGRvZXMgbm90IHVzZWZ1bClcblx0SHR0cDogNCxcblx0UXVlcnk6IDQsXG5cblx0Ly8gTG91ZCBsZXZlbHMuXG5cdFZlcmJvc2U6IDUsXG5cdERlYnVnOiA1LFxufSBhcyBjb25zdFxuXG50eXBlIExvZ2dpbmdMZXZlbCA9IHR5cGVvZiBMb2dnaW5nTGV2ZWxba2V5b2YgdHlwZW9mIExvZ2dpbmdMZXZlbF1cblxuZXhwb3J0IGRlZmF1bHQgTG9nZ2luZ0xldmVsXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmdSZ2IyNCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG50eXBlIENvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gc3RyaW5nXG5cbi8vIENvbnN0YW50cy5cbmNvbnN0IGNvbG9yaXplck1hcCA9IG5ldyBNYXA8bnVtYmVyLCBDb2xvcml6ZXI+KClcblxuLy8gSGVscGVycy5cbmZ1bmN0aW9uIGNyZWF0ZVNjaGVtZShvcHRpb25zOiB7IGJhY2tncm91bmQ6IENvbG9yVmFsdWUsIGZvcmVncm91bmQ6IENvbG9yVmFsdWUgfSk6IG51bWJlciB7XG5cdGNvbnN0IG5leHRJbmRleCA9IGNvbG9yaXplck1hcC5zaXplXG5cdGNvbnN0IGNvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gYmdSZ2IyNChyZ2IyNChzdHJpbmcsIG9wdGlvbnMuZm9yZWdyb3VuZCksIG9wdGlvbnMuYmFja2dyb3VuZClcblxuXHRjb2xvcml6ZXJNYXAuc2V0KG5leHRJbmRleCwgY29sb3JpemVyKVxuXG5cdHJldHVybiBuZXh0SW5kZXhcbn1cblxuLy8gQ29sb3IgZGVmaW5pdGlvbnMuXG5jb25zdCBDb2xvclZhbHVlID0ge1xuXHQvLyBCYXNpYyBjb2xvcnMuXG5cdFdoaXRlOiAweEZGRkZGRixcblx0R3JheTogMHg4MDgwODAsXG5cdEJsYWNrOiAweDAwMDAwMCxcblxuXHQvLyBTcGVjaWFsaXplZCBjb2xvcnMuXG5cdENyaXRpY2FsOiAweEQ2MzAzMSxcblx0V2FybmluZzogMHhGRENCNkUsXG5cdFJlZ3VsYXI6IDB4MDk4NEUzLFxuXHRIdHRwOiAweDZBQjA0Qyxcblx0UXVlcnk6IDB4Mzk5QUYzLFxufSBhcyBjb25zdFxuXG50eXBlIENvbG9yVmFsdWUgPSB0eXBlb2YgQ29sb3JWYWx1ZVtrZXlvZiB0eXBlb2YgQ29sb3JWYWx1ZV1cblxuY29uc3QgQ29sb3JTY2hlbWUgPSB7XG5cdENyaXRpY2FsOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQ3JpdGljYWwsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0V2FybmluZzogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLldhcm5pbmcsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UmVndWxhcjogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLlJlZ3VsYXIsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5XaGl0ZSxcblx0fSksXG5cblx0SHR0cDogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLkh0dHAsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UXVlcnk6IGNyZWF0ZVNjaGVtZSh7XG5cdFx0YmFja2dyb3VuZDogQ29sb3JWYWx1ZS5RdWVyeSxcblx0XHRmb3JlZ3JvdW5kOiBDb2xvclZhbHVlLkJsYWNrLFxuXHR9KSxcblxuXHRMb3VkOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQmxhY2ssXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5HcmF5LFxuXHR9KSxcbn0gYXMgY29uc3RcblxudHlwZSBDb2xvclNjaGVtZSA9IHR5cGVvZiBDb2xvclNjaGVtZVtrZXlvZiB0eXBlb2YgQ29sb3JTY2hlbWVdXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFsa09mKGNvbG9yU2V0OiBDb2xvclNjaGVtZSk6IENvbG9yaXplciB7XG5cdHJldHVybiBjb2xvcml6ZXJNYXAuZ2V0KGNvbG9yU2V0KSA/PyAoKHN0cmluZzogc3RyaW5nKSA9PiBzdHJpbmcpXG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU2NoZW1lXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYm9sZCB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBDb2xvclNjaGVtZSwgeyBnZXRDaGFsa09mIH0gZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuXG4vLyBDb25zdGFudHMuXG5jb25zdCB7IGlzVFRZIH0gPSBwcm9jZXNzLnN0ZG91dFxuY29uc3QgaXNOb3RPbkNMSSA9ICFpc1RUWVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWNvcmF0ZUxhYmVsPFQgZXh0ZW5kcyBzdHJpbmc+KGxhYmVsOiBULCBzY2hlbWU6IENvbG9yU2NoZW1lKTogVCB7XG5cdGlmIChpc05vdE9uQ0xJKSByZXR1cm4gbGFiZWxcblxuXHRjb25zdCBjb2xvcml6ZSA9IGdldENoYWxrT2Yoc2NoZW1lKVxuXHRjb25zdCBkZWNvcmF0ZWRMYWJlbCA9IGJvbGQoY29sb3JpemUoYCAke2xhYmVsfSBgKSlcblxuXHRyZXR1cm4gZGVjb3JhdGVkTGFiZWwgYXMgVFxufVxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBwcm9jZXNzLCB7IHZlcnNpb24gfSBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmx1ZSwgZ3JheSwgYm9sZCwgdW5kZXJsaW5lIH0gZnJvbSAnQHN0ZC9mbXQvY29sb3JzJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTG9nZ2luZ0RhdGEgPSB7IGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9ICYgUmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+XG50eXBlIEhhbmRsZWREYXRhID0geyBsYWJlbDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcgfVxuXG4vLyBDb25zdGFudHMuXG5jb25zdCByb290UGF0aCA9IHByb2Nlc3MuY3dkKClcbmNvbnN0IGNvbmp1bmN0aW9uID0gYCAke2JsdWUoJ+KUgOKUgCcpfSBgXG5jb25zdCBzcGxhdDogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbC5mb3IoJ3NwbGF0JylcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2Vycm9yJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkVycm9yXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdFUlJPUicsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5mdW5jdGlvbiBzaW1wbGlmeURhdGFVUkkoZGF0YVVSSTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgWyAsIGFjdHVhbENvbnRlbnQgXSA9IGRhdGFVUkkuc3BsaXQoJzonKVxuXHRjb25zdCBwaXZvdCA9IGFjdHVhbENvbnRlbnQuaW5kZXhPZignLCcpICsgMVxuXHRjb25zdCBtaW1lSW5kaWNhdG9yID0gYWN0dWFsQ29udGVudC5zbGljZSgwLCBwaXZvdClcblx0Y29uc3QgY29udGVudFByZWZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UocGl2b3QsIHBpdm90ICsgNClcblx0Y29uc3QgY29udGVudFN1ZmZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UoLTQpXG5cblx0cmV0dXJuIGBkYXRhOiR7bWltZUluZGljYXRvciArIGNvbnRlbnRQcmVmaXh9Li4uJHtjb250ZW50U3VmZml4fWBcbn1cblxuZnVuY3Rpb24gaXNEYXRhVVJJKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoJ2RhdGE6Jylcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZU9yRGF0YVVSSShmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBwYXRoLmlzQWJzb2x1dGUoZmlsZW5hbWUpIHx8IGlzRGF0YVVSSShmaWxlbmFtZSlcbn1cblxuZnVuY3Rpb24gbWFwTG9jYXRpb25PZkVycm9yVGhyb3duKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0ID0gcGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpXG5cblx0aWYgKGlzRGF0YVVSSShmaWxlbmFtZSkpIHtcblx0XHR0YXJnZXQgPSBncmF5KHNpbXBsaWZ5RGF0YVVSSShmaWxlbmFtZSkpXG5cdH0gZWxzZSBpZiAodGFyZ2V0LmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSkge1xuXHRcdHRhcmdldCA9IGdyYXkoXG5cdFx0XHR0YXJnZXQuc2xpY2UodGFyZ2V0Lmxhc3RJbmRleE9mKCdub2RlX21vZHVsZXMnKSksXG5cdFx0KS5yZXBsYWNlKFxuXHRcdFx0L25vZGVfbW9kdWxlc1tcXFxcL10oKD86QFteXFxcXC9dK1tcXFxcL10pP1teXFxcXC9dKykoLiopLyxcblx0XHRcdChfLCBtb2R1bGVOYW1lOiBzdHJpbmcsIHRyYWlsaW5nOiBzdHJpbmcpID0+IChcblx0XHRcdFx0YG5vZGVfbW9kdWxlcyR7cGF0aC5zZXB9JHtib2xkKHVuZGVybGluZShtb2R1bGVOYW1lKSl9JHtncmF5KHRyYWlsaW5nKX1gXG5cdFx0XHQpLFxuXHRcdClcblx0fSBlbHNlIHtcblx0XHR0YXJnZXQgPSBgJHtncmF5KHBhdGguZGlybmFtZSh0YXJnZXQpICsgcGF0aC5zZXApfSR7Ym9sZCh1bmRlcmxpbmUocGF0aC5iYXNlbmFtZSh0YXJnZXQpKSl9YFxuXHR9XG5cblx0cmV0dXJuIHRhcmdldFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHsgW3NwbGF0XTogWyBlcnJvciBdID0gW10gfSA9IGRhdGEgYXMgYW55XG5cblx0aWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdH1cblxuXHRjb25zdCB7IG5hbWU6IGVycm9yTmFtZSwgbWVzc2FnZSwgc3RhY2s6IHJhd1N0YWNrID0gJycgfSA9IGVycm9yXG5cblx0Y29uc3Qgc3RhY2sgPSByYXdTdGFja1xuXHRcdC5zbGljZShlcnJvck5hbWUubGVuZ3RoICsgbWVzc2FnZS5sZW5ndGggKyAzKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9eXFxzK2F0IC9nLCAnJykpXG5cdFx0Lm1hcChsaW5lID0+IChpc0Fic29sdXRlT3JEYXRhVVJJKGxpbmUpID8gYDxhbm9ueW1vdXM+JHtjb25qdW5jdGlvbn0ke21hcExvY2F0aW9uT2ZFcnJvclRocm93bihsaW5lKX1gIDogbGluZSkpXG5cdFx0Lm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXiguKykgXFwoKC4rKVxcKSQvLCAoXywgY29udGV4dE5hbWU6IHN0cmluZywgcmF3TG9jYXRpb246IHN0cmluZykgPT4ge1xuXHRcdFx0bGV0IGxvY2F0aW9uID0gJydcblxuXHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRjYXNlIChyYXdMb2NhdGlvbiA9PT0gJzxhbm9ueW1vdXM+Jyk6IHtcblx0XHRcdFx0bG9jYXRpb24gPSBncmF5KHJhd0xvY2F0aW9uKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKGlzRGF0YVVSSShyYXdMb2NhdGlvbikpOiB7XG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShzaW1wbGlmeURhdGFVUkkocmF3TG9jYXRpb24pKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKHJhd0xvY2F0aW9uLnN0YXJ0c1dpdGgoJ25vZGU6JykpOiB7XG5cdFx0XHRcdGNvbnN0IFsgZmlsZW5hbWUsIG9jY3VycmVkTGluZSBdID0gcmF3TG9jYXRpb24uc2xpY2UoNSkuc3BsaXQoJzonKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShgaHR0cHM6Ly9naXRodWIuY29tLyR7Ym9sZCh1bmRlcmxpbmUoJ25vZGVqcycpKX0vbm9kZS9ibG9iLyR7dmVyc2lvbn0vbGliLyR7ZmlsZW5hbWV9LmpzI0wke29jY3VycmVkTGluZX1gKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0Y29uc3QgWyBmaWxlbmFtZSwgb2NjdXJyZWRMaW5lLCBvY2N1cnJlZENvbHVtbiBdID0gcmF3TG9jYXRpb24uc3BsaXQoJzonKVxuXG5cdFx0XHRcdGlmICghcGF0aC5pc0Fic29sdXRlKGZpbGVuYW1lKSkgYnJlYWtcblxuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSBtYXBMb2NhdGlvbk9mRXJyb3JUaHJvd24ocGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpKVxuXHRcdFx0XHRjb25zdCB0cmFpbGluZyA9IGdyYXkoYDoke29jY3VycmVkTGluZX06JHtvY2N1cnJlZENvbHVtbn1gKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gdGFyZ2V0ICsgdHJhaWxpbmdcblx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGAke2NvbnRleHROYW1lfSR7Y29uanVuY3Rpb259JHtsb2NhdGlvbn1gXG5cdFx0fSkpXG5cdFx0LmpvaW4oJ1xcbicpXG5cblx0Y29uc3QgZGVjb3JhdGVkTGFiZWwgPSBkZWNvcmF0ZUxhYmVsKGVycm9yTmFtZSwgQ29sb3JTY2hlbWUuQ3JpdGljYWwpXG5cdGNvbnN0IHBheWxvYWQgPSBgJHttZXNzYWdlfVxcblxcbiR7c3RhY2t9XFxuYFxuXG5cdHJldHVybiB7IGxhYmVsOiBkZWNvcmF0ZWRMYWJlbCwgcGF5bG9hZCB9XG59XG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2ZhdGFsJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkZhdGFsXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdGQVRBTCcsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5leHBvcnQgeyBkZWZhdWx0IH0gZnJvbSAnI2hhbmRsZXJzL2Vycm9yJyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtZXhwb3J0c1xuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd3YXJuaW5nJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLldhcm5pbmdcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1dBUk5JTkcnLCBDb2xvclNjaGVtZS5XYXJuaW5nKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ25vdGljZSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5Ob3RpY2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ05PVElDRScsIENvbG9yU2NoZW1lLlJlZ3VsYXIpXG5cbmV4cG9ydCBkZWZhdWx0IG51bGxcbiIsIi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBIYW5kbGVyIG1ldGFkYXRhLlxuZXhwb3J0IGNvbnN0IG5hbWUgPSAnaW5mbydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5JbmZvXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdJTkZPJywgQ29sb3JTY2hlbWUuUmVndWxhcilcblxuZXhwb3J0IGRlZmF1bHQgbnVsbFxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdodHRwJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkh0dHBcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ0hUVFAnLCBDb2xvclNjaGVtZS5IdHRwKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIaWdobGlnaHQuanNcbmltcG9ydCB7IGhpZ2hsaWdodCB9IGZyb20gJ2NsaS1oaWdobGlnaHQnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdxdWVyeSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5RdWVyeVxuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnUVVFUlknLCBDb2xvclNjaGVtZS5RdWVyeSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGFuZGxlKGRhdGE6IExvZ2dpbmdEYXRhKTogSGFuZGxlZERhdGEgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4geyBsYWJlbCwgcGF5bG9hZDogaGlnaGxpZ2h0KGRhdGEubWVzc2FnZSwgeyBsYW5ndWFnZTogJ3NxbCcgfSkgfVxufVxuIiwiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB7IGdyYXkgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd2ZXJib3NlJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLlZlcmJvc2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1ZFUkJPU0UnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiB7IGxhYmVsLCBwYXlsb2FkOiBncmF5KGRhdGEubWVzc2FnZSkgfVxufVxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdkZWJ1ZydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5EZWJ1Z1xuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnREVCVUcnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIYW5kbGVyIGltcGxlbWVudGF0aW9ucy5cbmltcG9ydCAqIGFzIEZhdGFsSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvZmF0YWwnXG5pbXBvcnQgKiBhcyBFcnJvckhhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL2Vycm9yJ1xuaW1wb3J0ICogYXMgV2FybmluZ0hhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL3dhcm5pbmcnXG5pbXBvcnQgKiBhcyBOb3RpY2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9ub3RpY2UnXG5pbXBvcnQgKiBhcyBJbmZvSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvaW5mbydcbmltcG9ydCAqIGFzIEh0dHBIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9odHRwJ1xuaW1wb3J0ICogYXMgUXVlcnlIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9xdWVyeSdcbmltcG9ydCAqIGFzIFZlcmJvc2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy92ZXJib3NlJ1xuaW1wb3J0ICogYXMgRGVidWdIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9kZWJ1ZydcblxuY29uc3QgaGFuZGxlcnMgPSBbXG5cdEZhdGFsSGFuZGxlcixcblx0RXJyb3JIYW5kbGVyLFxuXHRXYXJuaW5nSGFuZGxlcixcblx0Tm90aWNlSGFuZGxlcixcblx0SW5mb0hhbmRsZXIsXG5cdEh0dHBIYW5kbGVyLFxuXHRRdWVyeUhhbmRsZXIsXG5cdFZlcmJvc2VIYW5kbGVyLFxuXHREZWJ1Z0hhbmRsZXIsXG5dXG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbE5hbWUgPSAodHlwZW9mIGhhbmRsZXJzIGV4dGVuZHMgKGluZmVyIFQpW10gPyBUIDogbmV2ZXIpWyduYW1lJ11cbmV4cG9ydCBkZWZhdWx0IGhhbmRsZXJzXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgZ3JheSB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcbmltcG9ydCByVHJhY2VyIGZyb20gJ2Nscy1ydHJhY2VyJ1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbidcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3dpbnN0b24nXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0LnByaW50ZihkYXRhID0+IHtcblx0Y29uc3QgdGltZXN0YW1wID0gZ3JheShEYXRlVGltZS5ub3coKS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IHRydWUgfSkpXG5cdGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gZGF0YS5sZXZlbClcblx0Y29uc3QgZmFsbGJhY2sgPSB7IGxhYmVsOiBoYW5kbGVyPy5sYWJlbCwgcGF5bG9hZDogZGF0YS5tZXNzYWdlIH1cblx0Y29uc3QgcGVyZm9ybUhhbmRsZSA9IGhhbmRsZXI/LmRlZmF1bHQgPz8gKCgpOiB0eXBlb2YgZmFsbGJhY2sgPT4gZmFsbGJhY2spXG5cblx0Ly8gRXhlY3V0ZSBoYW5kbGVyIGFuZCB0aGVuLCBnZXQgZGVjb3JhdGVkIHBheWxvYWQuXG5cdGNvbnN0IHsgbGFiZWwsIHBheWxvYWQgfSA9IFJlZmxlY3QuYXBwbHkocGVyZm9ybUhhbmRsZSwgdW5kZWZpbmVkLCBbIGRhdGEgXSkgPz8gZmFsbGJhY2tcblxuXHRjb25zdCBleHRyYUZpbmdlcnByaW50ID0gW1xuXHRcdFsgJ1JlcXVlc3QtSUQnLCByVHJhY2VyLmlkKCkgXSxcblx0XHRbICdUcmFuc2FjdGlvbi1JRCcsIGRhdGEudHJhbnNhY3Rpb25JZCBdLFxuXHRdXG5cdFx0LmZpbHRlcigoWyAsIGlkVmFsdWUgXSkgPT4gaWRWYWx1ZSlcblx0XHQubWFwKChbIGtpbmQsIGlkVmFsdWUgXSkgPT4gYCR7a2luZH0gPSAke2lkVmFsdWV9YClcblx0XHQuam9pbignIHwgJylcblxuXHRyZXR1cm4gYCR7bGFiZWwgYXMgc3RyaW5nfSAke3RpbWVzdGFtcH0ke2V4dHJhRmluZ2VycHJpbnQgPyBgICgke2V4dHJhRmluZ2VycHJpbnR9KWAgOiAnJ31cXG4ke3BheWxvYWQgYXMgc3RyaW5nfWBcbn0pXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgY2x1c3RlciBmcm9tICdjbHVzdGVyJ1xuaW1wb3J0IHsgZW52IGFzIGVudmlyb25tZW50cyB9IGZyb20gJ3Byb2Nlc3MnXG5pbXBvcnQgeyBpc01haW5UaHJlYWQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBjb25zdCBFeGVjdXRpb25Nb2RlID0ge1xuXHREZXZlbG9wbWVudE1vZGU6ICdkZXZlbG9wbWVudCcsXG5cdFByb2R1Y3Rpb25Nb2RlOiAncHJvZHVjdGlvbicsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBDbHVzdGVyaW5nTW9kZSA9IHtcblx0TWFzdGVyUHJvY2VzczogMCxcblx0V29ya2VyUHJvY2VzczogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFRocmVhZGluZ01vZGUgPSB7XG5cdE1haW5UaHJlYWQ6IDAsXG5cdFdvcmtlclRocmVhZDogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgRXhlY3V0aW9uTW9kZSA9IHR5cGVvZiBFeGVjdXRpb25Nb2RlW2tleW9mIHR5cGVvZiBFeGVjdXRpb25Nb2RlXVxuZXhwb3J0IHR5cGUgQ2x1c3RlcmluZ01vZGUgPSB0eXBlb2YgQ2x1c3RlcmluZ01vZGVba2V5b2YgdHlwZW9mIENsdXN0ZXJpbmdNb2RlXVxuZXhwb3J0IHR5cGUgVGhyZWFkaW5nTW9kZSA9IHR5cGVvZiBUaHJlYWRpbmdNb2RlW2tleW9mIHR5cGVvZiBUaHJlYWRpbmdNb2RlXVxuXG4vLyBFeHBvcnRpbmdzLlxuZXhwb3J0IGNvbnN0IGV4ZWN1dGlvbk1vZGUgPSBlbnZpcm9ubWVudHMuTk9ERV9FTlYgYXMgRXhlY3V0aW9uTW9kZSA/PyBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZVxuXG5leHBvcnQgY29uc3QgY2x1c3RlcmluZ01vZGU6IENsdXN0ZXJpbmdNb2RlID0gY2x1c3Rlci5pc1ByaW1hcnkgPz8gY2x1c3Rlci5pc01hc3RlclxuXHQ/IENsdXN0ZXJpbmdNb2RlLk1hc3RlclByb2Nlc3Ncblx0OiBDbHVzdGVyaW5nTW9kZS5Xb3JrZXJQcm9jZXNzXG5cbmV4cG9ydCBjb25zdCB0aHJlYWRpbmdNb2RlOiBUaHJlYWRpbmdNb2RlID0gaXNNYWluVGhyZWFkXG5cdD8gVGhyZWFkaW5nTW9kZS5NYWluVGhyZWFkXG5cdDogVGhyZWFkaW5nTW9kZS5Xb3JrZXJUaHJlYWRcbiIsIi8vIE5vZGUuanMgYnVpbHQtaW4gQVBJcy5cbmltcG9ydCB7XG5cdFNUQVRVU19DT0RFUyxcblx0SW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LFxuXHRTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ2h0dHAnXG5cbi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgbW9yZ2FuLCB7IHR5cGUgVG9rZW5JbmRleGVyIH0gZnJvbSAnbW9yZ2FuJ1xuaW1wb3J0IHsgZ3JlZW4sIG1hZ2VudGEsIHJlZCwgZ3JheSwgYm9sZCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5pbXBvcnQgeyBmb3JtYXQgYXMgcHJldHR5Qnl0ZXMgfSBmcm9tICdAc3RkL2ZtdC9ieXRlcydcbmltcG9ydCB7IGZvcm1hdCBhcyBwcmV0dHlNcyB9IGZyb20gJ0BzdGQvZm10L2R1cmF0aW9uJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IHsgRXhlY3V0aW9uTW9kZSwgZXhlY3V0aW9uTW9kZSB9IGZyb20gJyNoZWxwZXJzL2NvbnN0YW50cydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmRlY2xhcmUgbW9kdWxlICdtb3JnYW4nIHtcblx0Y29uc3QgY29tYmluZWQ6IG1vcmdhbi5Gb3JtYXRGblxufVxuXG4vLyBIZWxwZXJzLlxuZnVuY3Rpb24gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGU6IGtleW9mIHR5cGVvZiBTVEFUVVNfQ09ERVMpOiBzdHJpbmcge1xuXHRjb25zdCBncm91cE9mQ29kZSA9IE1hdGguZmxvb3IoTnVtYmVyKHN0YXR1c0NvZGUpIC8gMTAwKSAqIDEwMFxuXHRjb25zdCBiYXNlTWVzc2FnZSA9IGAke3N0YXR1c0NvZGV9ICR7U1RBVFVTX0NPREVTW3N0YXR1c0NvZGVdIGFzIHN0cmluZ31gXG5cblx0c3dpdGNoIChncm91cE9mQ29kZSkge1xuXHRjYXNlIDIwMDoge1xuXHRcdHJldHVybiBncmVlbihiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGNhc2UgMzAwOiB7XG5cdFx0cmV0dXJuIG1hZ2VudGEoYmFzZU1lc3NhZ2UpXG5cdH1cblx0Y2FzZSA0MDA6XG5cdGNhc2UgNTAwOiB7XG5cdFx0cmV0dXJuIHJlZChiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGRlZmF1bHQ6IHtcblx0XHRyZXR1cm4gZ3JheShiYXNlTWVzc2FnZSlcblx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEZvck1vcmdhbih0b2tlbnM6IFRva2VuSW5kZXhlciwgcmVxdWVzdDogSHR0cFJlcXVlc3QsIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpOiBzdHJpbmcge1xuXHRmdW5jdGlvbiBfKHRva2VuOiBzdHJpbmcsIC4uLnN1YkFyZ3M6IGFueVtdKTogc3RyaW5nIHwgdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcblx0XHRyZXR1cm4gdG9rZW5zW3Rva2VuXShyZXF1ZXN0LCByZXNwb25zZSwgLi4uc3ViQXJncylcblx0fVxuXG5cdC8vIFJhdyB2YWx1ZXMuXG5cdGNvbnN0IG1ldGhvZCA9IF8oJ21ldGhvZCcpXG5cdGNvbnN0IFVSTCA9IF8oJ3VybCcpXG5cdGNvbnN0IGh0dHBWZXJzaW9uID0gYEhUVFAvJHtfKCdodHRwLXZlcnNpb24nKSBhcyBzdHJpbmd9YFxuXHRjb25zdCBzdGF0dXNDb2RlID0gTnVtYmVyKF8oJ3N0YXR1cycpKVxuXHRjb25zdCBjb250ZW50TGVuZ3RoID0gTnVtYmVyKF8oJ3JlcycsICdjb250ZW50LWxlbmd0aCcpID8/IC0xKVxuXHRjb25zdCByZXNwb25zZVRpbWUgPSBOdW1iZXIoXygncmVzcG9uc2UtdGltZScpID8/IC0xKVxuXG5cdC8vIERlY29yYXRlZCB2YWx1ZXMuXG5cdGNvbnN0ICRtZXRob2QgPSBib2xkKG1ldGhvZCA/PyAnJylcblx0Y29uc3QgJHZlcnNpb24gPSByZ2IyNChodHRwVmVyc2lvbiwgMHg2MkIxRkYpXG5cdGNvbnN0ICRzdGF0dXNDb2RlID0gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGUpXG5cdGNvbnN0ICRjb250ZW50TGVuZ3RoID0gY29udGVudExlbmd0aCA+PSAwID8gcHJldHR5Qnl0ZXMoY29udGVudExlbmd0aCkgOiAnPyBCJ1xuXHRjb25zdCAkcmVzcG9uc2VUaW1lID0gcmVzcG9uc2VUaW1lID49IDAgPyBwcmV0dHlNcyhyZXNwb25zZVRpbWUsIHsgaWdub3JlWmVybzogdHJ1ZSB9KSA6ICcnXG5cblx0Ly8gQWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cblx0Y29uc3QgbWV0YWRhdGEgPSBgKCR7JGNvbnRlbnRMZW5ndGh9LCAkeyRyZXNwb25zZVRpbWV9KWBcblxuXHRyZXR1cm4gW1xuXHRcdGDihpIgJHskbWV0aG9kfSAke1VSTCBhcyBzdHJpbmd9ICR7JHZlcnNpb259YCxcblx0XHRg4oaQICR7JHZlcnNpb259ICR7JHN0YXR1c0NvZGV9ICR7bWV0YWRhdGF9YCxcblx0XS5qb2luKCdcXG4nKVxufVxuXG5leHBvcnQgZGVmYXVsdCBleGVjdXRpb25Nb2RlID09PSBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZSA/IGZvcm1hdEZvck1vcmdhbiA6IG1vcmdhbi5jb21iaW5lZFxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHsgSW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LCBTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHsgUGFzc1Rocm91Z2ggfSBmcm9tICdzdHJlYW0nXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nXG5pbXBvcnQgKiBhcyB3aW5zdG9uIGZyb20gJ3dpbnN0b24nXG5pbXBvcnQgdHlwZSB7IGxldmVsIGFzIExvZ2dpbmdMZXZlbCwgTG9nZ2VyIGFzIEJhc2VMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuXG4vLyBGb3JtYXR0ZXJzLlxuaW1wb3J0IGZvcm1hdEZvckNMSSBmcm9tICcjZm9ybWF0dGVycy9jb21tYW5kLWxpbmUnXG5pbXBvcnQgZm9ybWF0Rm9yTW9yZ2FuIGZyb20gJyNmb3JtYXR0ZXJzL21vcmdhbidcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB7IEV4ZWN1dGlvbk1vZGUsIGV4ZWN1dGlvbk1vZGUgfSBmcm9tICcjaGVscGVycy9jb25zdGFudHMnXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IHR5cGUgeyBMb2dnaW5nTGV2ZWxOYW1lIH0gZnJvbSAnI2hhbmRsZXJzL2luZGV4J1xuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTW9yZ2FuID0gKHJlcTogSHR0cFJlcXVlc3QsIHJlczogSHR0cFJlc3BvbnNlLCBuZXh0OiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZFxuXG4vLyBUcmFuc3BvcnRzLlxuY29uc3QgeyBDb25zb2xlOiBDb25zb2xlVHJhbnNwb3J0IH0gPSB3aW5zdG9uLnRyYW5zcG9ydHNcblxuY2xhc3MgTG9nZ2VyIHtcblx0c3RhdGljICNpbnN0YW5jZT86IExvZ2dlclxuXG5cdCNsb2dnZXI6IEJhc2VMb2dnZXIgPSB3aW5zdG9uLmNyZWF0ZUxvZ2dlcih7XG5cdFx0bGV2ZWxzOiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRoYW5kbGVyc1xuXHRcdFx0XHQubWFwKCh7IG5hbWUsIGxldmVsIH0pID0+IFsgbmFtZSwgbGV2ZWwgXSBhcyBjb25zdClcblx0XHRcdFx0LmZpbHRlcigoWyAsIGxldmVsIF0pID0+IHR5cGVvZiBsZXZlbCA9PT0gJ251bWJlcicpLFxuXHRcdCksXG5cblx0XHRsZXZlbDogKGV4ZWN1dGlvbk1vZGUgPT09IEV4ZWN1dGlvbk1vZGUuUHJvZHVjdGlvbk1vZGUgPyAnaHR0cCcgOiAndmVyYm9zZScpLFxuXG5cdFx0dHJhbnNwb3J0czogW1xuXHRcdFx0bmV3IENvbnNvbGVUcmFuc3BvcnQoeyBmb3JtYXQ6IGZvcm1hdEZvckNMSSB9KSxcblx0XHRdLFxuXG5cdFx0ZXhpdE9uRXJyb3I6IGZhbHNlLFxuXHR9KVxuXG5cdCNtb3JnYW46IE1vcmdhbiA9IG1vcmdhbihmb3JtYXRGb3JNb3JnYW4sIHtcblx0XHRzdHJlYW06IG5ldyBQYXNzVGhyb3VnaCh7IG9iamVjdE1vZGU6IHRydWUgfSkub24oJ2RhdGEnLCAoZGF0YTogc3RyaW5nKSA9PiB7XG5cdFx0XHR0aGlzLmxvZygnaHR0cCcsIGRhdGEudHJpbSgpKVxuXHRcdH0pLFxuXHR9KVxuXG5cdHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKG5ldy50YXJnZXQgIT09IExvZ2dlcikge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgaXMgbm90IGluaGVyaXRhYmxlJylcblx0XHR9XG5cblx0XHRpZiAoTG9nZ2VyLiNpbnN0YW5jZSkge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgY2Fubm90IGJlIGNvbnN0cnVjdGVkIGluIGRpcmVjdGx5Jylcblx0XHR9XG5cblx0XHRMb2dnZXIuI2luc3RhbmNlID0gdGhpc1xuXHR9XG5cblx0LyoqXG5cdCAqIExvZ2dpbmcgbWVzc2FnZSB3aXRoIHNwZWNpZmljIGxldmVsLlxuXHQgKlxuXHQgKiBAcGFyYW0gbGV2ZWxcblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBtZXRhZGF0YS5cblx0ICovXG5cdHB1YmxpYyBsb2cobGV2ZWw6IExvZ2dpbmdMZXZlbE5hbWUsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZFxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIEhUVFAgSS9PLlxuXHQgKlxuXHQgKiBAcGFyYW0gcmVxdWVzdCBOb2RlLmpzIGJ1aWx0LWluIGBJbmNvbWluZ01lc3NhZ2VgIGluc3RhbmNlIGZyb20gYGh0dHBgIG1vZHVsZS5cblx0ICogQHBhcmFtIHJlc3BvbnNlIE5vZGUuanMgYnVpbHQtaW4gYFNlcnZlclJlc3BvbnNlYCBpbnN0YW5jZSBmcm9tIGBodHRwYCBtb2R1bGUuXG5cdCAqL1xuXHRwdWJsaWMgbG9nKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LCByZXNwb25zZTogSHR0cFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPlxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIGVycm9ycyBpbiBkZXRhaWwuXG5cdCAqXG5cdCAqIEBwYXJhbSBlcnJvclxuXHQgKi9cblx0cHVibGljIGxvZyhlcnJvcjogRXJyb3IpOiB2b2lkXG5cblx0cHVibGljIGxvZyguLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbG9nZ2VyID0gdGhpcy4jbG9nZ2VyXG5cdFx0Y29uc3QgZm9ybWF0ID0gdGhpcy4jbW9yZ2FuXG5cblx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRjYXNlIChhcmdzLmxlbmd0aCA+PSAyICYmIGFyZ3NbMF0gaW5zdGFuY2VvZiBIdHRwUmVxdWVzdCAmJiBhcmdzWzFdIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKToge1xuXHRcdFx0Y29uc3QgWyByZXF1ZXN0LCByZXNwb25zZSBdID0gYXJncyBhcyBbIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgXVxuXG5cdFx0XHRyZXR1cm4gcHJvbWlzaWZ5KGZvcm1hdCkocmVxdWVzdCwgcmVzcG9uc2UpXG5cdFx0fVxuXG5cdFx0Y2FzZSAoYXJncy5sZW5ndGggPj0gMSAmJiBhcmdzWzBdIGluc3RhbmNlb2YgRXJyb3IpOiB7XG5cdFx0XHRjb25zdCBbIGVycm9yLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgRXJyb3IsIC4uLnVua25vd25bXSBdXG5cblx0XHRcdGxvZ2dlci5sb2coJ2Vycm9yJywgZXJyb3IubWVzc2FnZSwgZXJyb3IsIC4uLmRhdGEpXG5cblx0XHRcdHJldHVybiB1bmRlZmluZWRcblx0XHR9XG5cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRjb25zdCBbIGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgdHlwZW9mIExvZ2dpbmdMZXZlbCwgc3RyaW5nLCAuLi51bmtub3duW10gXVxuXG5cdFx0XHRsb2dnZXIubG9nKGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhKVxuXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWZsZWN0LmNvbnN0cnVjdChMb2dnZXIsIFtdLCBMb2dnZXIpIGFzIExvZ2dlclxuIl0sIm5hbWVzIjpbIkxvZ2dpbmdMZXZlbCIsIkZhdGFsIiwiRXJyb3IiLCJXYXJuaW5nIiwiTm90aWNlIiwiSW5mbyIsIkh0dHAiLCJRdWVyeSIsIlZlcmJvc2UiLCJEZWJ1ZyIsImNvbG9yaXplck1hcCIsIl9NYXAiLCJjcmVhdGVTY2hlbWUiLCJvcHRpb25zIiwibmV4dEluZGV4Iiwic2l6ZSIsImNvbG9yaXplciIsInN0cmluZyIsImJnUmdiMjQiLCJyZ2IyNCIsImZvcmVncm91bmQiLCJiYWNrZ3JvdW5kIiwic2V0IiwiQ29sb3JWYWx1ZSIsIldoaXRlIiwiR3JheSIsIkJsYWNrIiwiQ3JpdGljYWwiLCJSZWd1bGFyIiwiQ29sb3JTY2hlbWUiLCJMb3VkIiwiZ2V0Q2hhbGtPZiIsImNvbG9yU2V0IiwiZ2V0IiwiaXNUVFkiLCJwcm9jZXNzIiwic3Rkb3V0IiwiaXNOb3RPbkNMSSIsImRlY29yYXRlTGFiZWwiLCJsYWJlbCIsInNjaGVtZSIsImNvbG9yaXplIiwiZGVjb3JhdGVkTGFiZWwiLCJib2xkIiwicm9vdFBhdGgiLCJjd2QiLCJjb25qdW5jdGlvbiIsImJsdWUiLCJzcGxhdCIsIl9TeW1ib2wkZm9yIiwibmFtZSIsImxldmVsIiwic2ltcGxpZnlEYXRhVVJJIiwiZGF0YVVSSSIsImFjdHVhbENvbnRlbnQiLCJzcGxpdCIsInBpdm90IiwiX2luZGV4T2ZJbnN0YW5jZVByb3BlcnR5IiwiY2FsbCIsIm1pbWVJbmRpY2F0b3IiLCJfc2xpY2VJbnN0YW5jZVByb3BlcnR5IiwiY29udGVudFByZWZpeCIsImNvbnRlbnRTdWZmaXgiLCJpc0RhdGFVUkkiLCJmaWxlbmFtZSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImlzQWJzb2x1dGVPckRhdGFVUkkiLCJwYXRoIiwiaXNBYnNvbHV0ZSIsIm1hcExvY2F0aW9uT2ZFcnJvclRocm93biIsInRhcmdldCIsInJlbGF0aXZlIiwiZ3JheSIsIl9pbmNsdWRlc0luc3RhbmNlUHJvcGVydHkiLCJfbGFzdEluZGV4T2ZJbnN0YW5jZVByb3BlcnR5IiwicmVwbGFjZSIsIl8iLCJtb2R1bGVOYW1lIiwidHJhaWxpbmciLCJzZXAiLCJ1bmRlcmxpbmUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJoYW5kbGUiLCJkYXRhIiwiX2NvbnRleHQiLCJfY29udGV4dDIiLCJfY29udGV4dDMiLCJlcnJvciIsInVuZGVmaW5lZCIsImVycm9yTmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInJhd1N0YWNrIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJsZW5ndGgiLCJsaW5lIiwiY29udGV4dE5hbWUiLCJyYXdMb2NhdGlvbiIsImxvY2F0aW9uIiwib2NjdXJyZWRMaW5lIiwidmVyc2lvbiIsIm9jY3VycmVkQ29sdW1uIiwiam9pbiIsInBheWxvYWQiLCJoaWdobGlnaHQiLCJsYW5ndWFnZSIsImhhbmRsZXJzIiwiRmF0YWxIYW5kbGVyIiwiRXJyb3JIYW5kbGVyIiwiV2FybmluZ0hhbmRsZXIiLCJOb3RpY2VIYW5kbGVyIiwiSW5mb0hhbmRsZXIiLCJIdHRwSGFuZGxlciIsIlF1ZXJ5SGFuZGxlciIsIlZlcmJvc2VIYW5kbGVyIiwiRGVidWdIYW5kbGVyIiwiZm9ybWF0IiwicHJpbnRmIiwidGltZXN0YW1wIiwiRGF0ZVRpbWUiLCJub3ciLCJ0b0lTTyIsImluY2x1ZGVPZmZzZXQiLCJoYW5kbGVyIiwiX2ZpbmRJbnN0YW5jZVByb3BlcnR5IiwiZmFsbGJhY2siLCJwZXJmb3JtSGFuZGxlIiwiZGVmYXVsdCIsIl9SZWZsZWN0JGFwcGx5IiwiZXh0cmFGaW5nZXJwcmludCIsIl9maWx0ZXJJbnN0YW5jZVByb3BlcnR5IiwiclRyYWNlciIsImlkIiwidHJhbnNhY3Rpb25JZCIsImlkVmFsdWUiLCJraW5kIiwiRXhlY3V0aW9uTW9kZSIsIkRldmVsb3BtZW50TW9kZSIsIlByb2R1Y3Rpb25Nb2RlIiwiQ2x1c3RlcmluZ01vZGUiLCJNYXN0ZXJQcm9jZXNzIiwiV29ya2VyUHJvY2VzcyIsImV4ZWN1dGlvbk1vZGUiLCJlbnZpcm9ubWVudHMiLCJOT0RFX0VOViIsImNsdXN0ZXIiLCJpc1ByaW1hcnkiLCJpc01hc3RlciIsImRlY29yYXRlU3RhdHVzQ29kZSIsInN0YXR1c0NvZGUiLCJncm91cE9mQ29kZSIsIk1hdGgiLCJmbG9vciIsIk51bWJlciIsImJhc2VNZXNzYWdlIiwiU1RBVFVTX0NPREVTIiwiZ3JlZW4iLCJtYWdlbnRhIiwicmVkIiwiZm9ybWF0Rm9yTW9yZ2FuIiwidG9rZW5zIiwicmVxdWVzdCIsInJlc3BvbnNlIiwidG9rZW4iLCJzdWJBcmdzIiwibWV0aG9kIiwiVVJMIiwiaHR0cFZlcnNpb24iLCJjb250ZW50TGVuZ3RoIiwicmVzcG9uc2VUaW1lIiwiJG1ldGhvZCIsIiR2ZXJzaW9uIiwiJHN0YXR1c0NvZGUiLCIkY29udGVudExlbmd0aCIsInByZXR0eUJ5dGVzIiwiJHJlc3BvbnNlVGltZSIsInByZXR0eU1zIiwiaWdub3JlWmVybyIsIm1ldGFkYXRhIiwibW9yZ2FuIiwiY29tYmluZWQiLCJDb25zb2xlIiwiQ29uc29sZVRyYW5zcG9ydCIsIndpbnN0b24iLCJ0cmFuc3BvcnRzIiwiTG9nZ2VyIiwiY3JlYXRlTG9nZ2VyIiwibGV2ZWxzIiwiX09iamVjdCRmcm9tRW50cmllcyIsImZvcm1hdEZvckNMSSIsImV4aXRPbkVycm9yIiwic3RyZWFtIiwiUGFzc1Rocm91Z2giLCJvYmplY3RNb2RlIiwib24iLCJsb2ciLCJfdHJpbUluc3RhbmNlUHJvcGVydHkiLCJjb25zdHJ1Y3RvciIsIm5ldyIsIlJlZmVyZW5jZUVycm9yIiwiYXJncyIsImxvZ2dlciIsIkh0dHBSZXF1ZXN0IiwiSHR0cFJlc3BvbnNlIiwicHJvbWlzaWZ5IiwiX1JlZmxlY3QkY29uc3RydWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBTUEsWUFBWSxHQUFHO0FBQ3BCO0FBQ0FDLEVBQUFBLEtBQUssRUFBRSxDQUFDO0FBQ1JDLEVBQUFBLEtBQUssRUFBRSxDQUFDO0FBRVI7QUFDQUMsRUFBQUEsT0FBTyxFQUFFLENBQUM7QUFFVjtBQUNBQyxFQUFBQSxNQUFNLEVBQUUsQ0FBQztBQUNUQyxFQUFBQSxJQUFJLEVBQUUsQ0FBQztBQUVQO0FBQ0FDLEVBQUFBLElBQUksRUFBRSxD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
|
|
530
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvaGVscGVycy9sb2dnaW5nLWxldmVsLnRzIiwiLi4vc291cmNlcy9oZWxwZXJzL2NvbG9yLXNjaGVtZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9sYWJlbC1kZWNvcmF0b3IudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2Vycm9yLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9mYXRhbC50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvd2FybmluZy50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvbm90aWNlLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9pbmZvLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9odHRwLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9xdWVyeS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvdmVyYm9zZS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvZGVidWcudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2luZGV4LnRzIiwiLi4vc291cmNlcy9mb3JtYXR0ZXJzL2NvbW1hbmQtbGluZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9jb25zdGFudHMudHMiLCIuLi9zb3VyY2VzL2Zvcm1hdHRlcnMvbW9yZ2FuLnRzIiwiLi4vc291cmNlcy9jbGFzc2VzL2xvZ2dlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBMb2dnaW5nTGV2ZWwgPSB7XG5cdC8vIENyaXRpY2FsIGxldmVscy4gKEl0IHdpbGwgY3Jhc2ggdGhlIHByb2Nlc3MpXG5cdEZhdGFsOiAwLFxuXHRFcnJvcjogMSxcblxuXHQvLyBXYXJuaW5nIGxldmVscy4gKEl0IGp1c3QgcmVwb3J0IHdhcm5pbmcgaW5mb3JtYXRpb24sIG5vdCBjcmFzaCB0aGUgcHJvY2Vzcylcblx0V2FybmluZzogMixcblxuXHQvLyBSZWd1bGFyIGxldmVsIGFuZCBhbGlhc2VzLlxuXHROb3RpY2U6IDMsXG5cdEluZm86IDMsXG5cblx0Ly8gTWF5YmUgc2Vuc2l0aXZlIGxldmVscy4gKEluIGdlbmVyYWwsIGRvZXMgbm90IHVzZWZ1bClcblx0SHR0cDogNCxcblx0UXVlcnk6IDQsXG5cblx0Ly8gTG91ZCBsZXZlbHMuXG5cdFZlcmJvc2U6IDUsXG5cdERlYnVnOiA1LFxufSBhcyBjb25zdFxuXG50eXBlIExvZ2dpbmdMZXZlbCA9IHR5cGVvZiBMb2dnaW5nTGV2ZWxba2V5b2YgdHlwZW9mIExvZ2dpbmdMZXZlbF1cblxuZXhwb3J0IGRlZmF1bHQgTG9nZ2luZ0xldmVsXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmdSZ2IyNCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG50eXBlIENvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gc3RyaW5nXG5cbi8vIENvbnN0YW50cy5cbmNvbnN0IGNvbG9yaXplck1hcCA9IG5ldyBNYXA8bnVtYmVyLCBDb2xvcml6ZXI+KClcblxuLy8gSGVscGVycy5cbmZ1bmN0aW9uIGNyZWF0ZVNjaGVtZShvcHRpb25zOiB7IGJhY2tncm91bmQ6IENvbG9yVmFsdWUsIGZvcmVncm91bmQ6IENvbG9yVmFsdWUgfSk6IG51bWJlciB7XG5cdGNvbnN0IG5leHRJbmRleCA9IGNvbG9yaXplck1hcC5zaXplXG5cdGNvbnN0IGNvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gYmdSZ2IyNChyZ2IyNChzdHJpbmcsIG9wdGlvbnMuZm9yZWdyb3VuZCksIG9wdGlvbnMuYmFja2dyb3VuZClcblxuXHRjb2xvcml6ZXJNYXAuc2V0KG5leHRJbmRleCwgY29sb3JpemVyKVxuXG5cdHJldHVybiBuZXh0SW5kZXhcbn1cblxuLy8gQ29sb3IgZGVmaW5pdGlvbnMuXG5jb25zdCBDb2xvclZhbHVlID0ge1xuXHQvLyBCYXNpYyBjb2xvcnMuXG5cdFdoaXRlOiAweEZGRkZGRixcblx0R3JheTogMHg4MDgwODAsXG5cdEJsYWNrOiAweDAwMDAwMCxcblxuXHQvLyBTcGVjaWFsaXplZCBjb2xvcnMuXG5cdENyaXRpY2FsOiAweEQ2MzAzMSxcblx0V2FybmluZzogMHhGRENCNkUsXG5cdFJlZ3VsYXI6IDB4MDk4NEUzLFxuXHRIdHRwOiAweDZBQjA0Qyxcblx0UXVlcnk6IDB4Mzk5QUYzLFxufSBhcyBjb25zdFxuXG50eXBlIENvbG9yVmFsdWUgPSB0eXBlb2YgQ29sb3JWYWx1ZVtrZXlvZiB0eXBlb2YgQ29sb3JWYWx1ZV1cblxuY29uc3QgQ29sb3JTY2hlbWUgPSB7XG5cdENyaXRpY2FsOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQ3JpdGljYWwsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0V2FybmluZzogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLldhcm5pbmcsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UmVndWxhcjogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLlJlZ3VsYXIsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5XaGl0ZSxcblx0fSksXG5cblx0SHR0cDogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLkh0dHAsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UXVlcnk6IGNyZWF0ZVNjaGVtZSh7XG5cdFx0YmFja2dyb3VuZDogQ29sb3JWYWx1ZS5RdWVyeSxcblx0XHRmb3JlZ3JvdW5kOiBDb2xvclZhbHVlLkJsYWNrLFxuXHR9KSxcblxuXHRMb3VkOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQmxhY2ssXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5HcmF5LFxuXHR9KSxcbn0gYXMgY29uc3RcblxudHlwZSBDb2xvclNjaGVtZSA9IHR5cGVvZiBDb2xvclNjaGVtZVtrZXlvZiB0eXBlb2YgQ29sb3JTY2hlbWVdXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFsa09mKGNvbG9yU2V0OiBDb2xvclNjaGVtZSk6IENvbG9yaXplciB7XG5cdHJldHVybiBjb2xvcml6ZXJNYXAuZ2V0KGNvbG9yU2V0KSA/PyAoKHN0cmluZzogc3RyaW5nKSA9PiBzdHJpbmcpXG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU2NoZW1lXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYm9sZCB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBDb2xvclNjaGVtZSwgeyBnZXRDaGFsa09mIH0gZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuXG4vLyBDb25zdGFudHMuXG5jb25zdCB7IGlzVFRZIH0gPSBwcm9jZXNzLnN0ZG91dFxuY29uc3QgaXNOb3RPbkNMSSA9ICFpc1RUWVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWNvcmF0ZUxhYmVsPFQgZXh0ZW5kcyBzdHJpbmc+KGxhYmVsOiBULCBzY2hlbWU6IENvbG9yU2NoZW1lKTogVCB7XG5cdGlmIChpc05vdE9uQ0xJKSByZXR1cm4gbGFiZWxcblxuXHRjb25zdCBjb2xvcml6ZSA9IGdldENoYWxrT2Yoc2NoZW1lKVxuXHRjb25zdCBkZWNvcmF0ZWRMYWJlbCA9IGJvbGQoY29sb3JpemUoYCAke2xhYmVsfSBgKSlcblxuXHRyZXR1cm4gZGVjb3JhdGVkTGFiZWwgYXMgVFxufVxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBwcm9jZXNzLCB7IHZlcnNpb24gfSBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmx1ZSwgZ3JheSwgYm9sZCwgdW5kZXJsaW5lIH0gZnJvbSAnQHN0ZC9mbXQvY29sb3JzJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTG9nZ2luZ0RhdGEgPSB7IGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9ICYgUmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+XG50eXBlIEhhbmRsZWREYXRhID0geyBsYWJlbDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcgfVxuXG4vLyBDb25zdGFudHMuXG5jb25zdCByb290UGF0aCA9IHByb2Nlc3MuY3dkKClcbmNvbnN0IGNvbmp1bmN0aW9uID0gYCAke2JsdWUoJ+KUgOKUgCcpfSBgXG5jb25zdCBzcGxhdDogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbC5mb3IoJ3NwbGF0JylcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2Vycm9yJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkVycm9yXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdFUlJPUicsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5mdW5jdGlvbiBzaW1wbGlmeURhdGFVUkkoZGF0YVVSSTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgWyAsIGFjdHVhbENvbnRlbnQgXSA9IGRhdGFVUkkuc3BsaXQoJzonKVxuXHRjb25zdCBwaXZvdCA9IGFjdHVhbENvbnRlbnQuaW5kZXhPZignLCcpICsgMVxuXHRjb25zdCBtaW1lSW5kaWNhdG9yID0gYWN0dWFsQ29udGVudC5zbGljZSgwLCBwaXZvdClcblx0Y29uc3QgY29udGVudFByZWZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UocGl2b3QsIHBpdm90ICsgNClcblx0Y29uc3QgY29udGVudFN1ZmZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UoLTQpXG5cblx0cmV0dXJuIGBkYXRhOiR7bWltZUluZGljYXRvciArIGNvbnRlbnRQcmVmaXh9Li4uJHtjb250ZW50U3VmZml4fWBcbn1cblxuZnVuY3Rpb24gaXNEYXRhVVJJKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoJ2RhdGE6Jylcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZU9yRGF0YVVSSShmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBwYXRoLmlzQWJzb2x1dGUoZmlsZW5hbWUpIHx8IGlzRGF0YVVSSShmaWxlbmFtZSlcbn1cblxuZnVuY3Rpb24gbWFwTG9jYXRpb25PZkVycm9yVGhyb3duKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0ID0gcGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpXG5cblx0aWYgKGlzRGF0YVVSSShmaWxlbmFtZSkpIHtcblx0XHR0YXJnZXQgPSBncmF5KHNpbXBsaWZ5RGF0YVVSSShmaWxlbmFtZSkpXG5cdH0gZWxzZSBpZiAodGFyZ2V0LmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSkge1xuXHRcdHRhcmdldCA9IGdyYXkoXG5cdFx0XHR0YXJnZXQuc2xpY2UodGFyZ2V0Lmxhc3RJbmRleE9mKCdub2RlX21vZHVsZXMnKSksXG5cdFx0KS5yZXBsYWNlKFxuXHRcdFx0L25vZGVfbW9kdWxlc1tcXFxcL10oKD86QFteXFxcXC9dK1tcXFxcL10pP1teXFxcXC9dKykoLiopLyxcblx0XHRcdChfLCBtb2R1bGVOYW1lOiBzdHJpbmcsIHRyYWlsaW5nOiBzdHJpbmcpID0+IChcblx0XHRcdFx0YG5vZGVfbW9kdWxlcyR7cGF0aC5zZXB9JHtib2xkKHVuZGVybGluZShtb2R1bGVOYW1lKSl9JHtncmF5KHRyYWlsaW5nKX1gXG5cdFx0XHQpLFxuXHRcdClcblx0fSBlbHNlIHtcblx0XHR0YXJnZXQgPSBgJHtncmF5KHBhdGguZGlybmFtZSh0YXJnZXQpICsgcGF0aC5zZXApfSR7Ym9sZCh1bmRlcmxpbmUocGF0aC5iYXNlbmFtZSh0YXJnZXQpKSl9YFxuXHR9XG5cblx0cmV0dXJuIHRhcmdldFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHsgW3NwbGF0XTogWyBlcnJvciBdID0gW10gfSA9IGRhdGEgYXMgYW55XG5cblx0aWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdH1cblxuXHRjb25zdCB7IG5hbWU6IGVycm9yTmFtZSwgbWVzc2FnZSwgc3RhY2s6IHJhd1N0YWNrID0gJycgfSA9IGVycm9yXG5cblx0Y29uc3Qgc3RhY2sgPSByYXdTdGFja1xuXHRcdC5zbGljZShlcnJvck5hbWUubGVuZ3RoICsgbWVzc2FnZS5sZW5ndGggKyAzKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9eXFxzK2F0IC9nLCAnJykpXG5cdFx0Lm1hcChsaW5lID0+IChpc0Fic29sdXRlT3JEYXRhVVJJKGxpbmUpID8gYDxhbm9ueW1vdXM+JHtjb25qdW5jdGlvbn0ke21hcExvY2F0aW9uT2ZFcnJvclRocm93bihsaW5lKX1gIDogbGluZSkpXG5cdFx0Lm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXiguKykgXFwoKC4rKVxcKSQvLCAoXywgY29udGV4dE5hbWU6IHN0cmluZywgcmF3TG9jYXRpb246IHN0cmluZykgPT4ge1xuXHRcdFx0bGV0IGxvY2F0aW9uID0gJydcblxuXHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRjYXNlIChyYXdMb2NhdGlvbiA9PT0gJzxhbm9ueW1vdXM+Jyk6IHtcblx0XHRcdFx0bG9jYXRpb24gPSBncmF5KHJhd0xvY2F0aW9uKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKGlzRGF0YVVSSShyYXdMb2NhdGlvbikpOiB7XG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShzaW1wbGlmeURhdGFVUkkocmF3TG9jYXRpb24pKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKHJhd0xvY2F0aW9uLnN0YXJ0c1dpdGgoJ25vZGU6JykpOiB7XG5cdFx0XHRcdGNvbnN0IFsgZmlsZW5hbWUsIG9jY3VycmVkTGluZSBdID0gcmF3TG9jYXRpb24uc2xpY2UoNSkuc3BsaXQoJzonKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShgaHR0cHM6Ly9naXRodWIuY29tLyR7Ym9sZCh1bmRlcmxpbmUoJ25vZGVqcycpKX0vbm9kZS9ibG9iLyR7dmVyc2lvbn0vbGliLyR7ZmlsZW5hbWV9LmpzI0wke29jY3VycmVkTGluZX1gKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0Y29uc3QgWyBmaWxlbmFtZSwgb2NjdXJyZWRMaW5lLCBvY2N1cnJlZENvbHVtbiBdID0gcmF3TG9jYXRpb24uc3BsaXQoJzonKVxuXG5cdFx0XHRcdGlmICghcGF0aC5pc0Fic29sdXRlKGZpbGVuYW1lKSkgYnJlYWtcblxuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSBtYXBMb2NhdGlvbk9mRXJyb3JUaHJvd24ocGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpKVxuXHRcdFx0XHRjb25zdCB0cmFpbGluZyA9IGdyYXkoYDoke29jY3VycmVkTGluZX06JHtvY2N1cnJlZENvbHVtbn1gKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gdGFyZ2V0ICsgdHJhaWxpbmdcblx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGAke2NvbnRleHROYW1lfSR7Y29uanVuY3Rpb259JHtsb2NhdGlvbn1gXG5cdFx0fSkpXG5cdFx0LmpvaW4oJ1xcbicpXG5cblx0Y29uc3QgZGVjb3JhdGVkTGFiZWwgPSBkZWNvcmF0ZUxhYmVsKGVycm9yTmFtZSwgQ29sb3JTY2hlbWUuQ3JpdGljYWwpXG5cdGNvbnN0IHBheWxvYWQgPSBgJHttZXNzYWdlfVxcblxcbiR7c3RhY2t9XFxuYFxuXG5cdHJldHVybiB7IGxhYmVsOiBkZWNvcmF0ZWRMYWJlbCwgcGF5bG9hZCB9XG59XG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2ZhdGFsJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkZhdGFsXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdGQVRBTCcsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5leHBvcnQgeyBkZWZhdWx0IH0gZnJvbSAnI2hhbmRsZXJzL2Vycm9yJyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtZXhwb3J0c1xuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd3YXJuaW5nJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLldhcm5pbmdcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1dBUk5JTkcnLCBDb2xvclNjaGVtZS5XYXJuaW5nKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ25vdGljZSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5Ob3RpY2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ05PVElDRScsIENvbG9yU2NoZW1lLlJlZ3VsYXIpXG5cbmV4cG9ydCBkZWZhdWx0IG51bGxcbiIsIi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBIYW5kbGVyIG1ldGFkYXRhLlxuZXhwb3J0IGNvbnN0IG5hbWUgPSAnaW5mbydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5JbmZvXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdJTkZPJywgQ29sb3JTY2hlbWUuUmVndWxhcilcblxuZXhwb3J0IGRlZmF1bHQgbnVsbFxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdodHRwJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkh0dHBcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ0hUVFAnLCBDb2xvclNjaGVtZS5IdHRwKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIaWdobGlnaHQuanNcbmltcG9ydCB7IGhpZ2hsaWdodCB9IGZyb20gJ2NsaS1oaWdobGlnaHQnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdxdWVyeSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5RdWVyeVxuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnUVVFUlknLCBDb2xvclNjaGVtZS5RdWVyeSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGFuZGxlKGRhdGE6IExvZ2dpbmdEYXRhKTogSGFuZGxlZERhdGEgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4geyBsYWJlbCwgcGF5bG9hZDogaGlnaGxpZ2h0KGRhdGEubWVzc2FnZSwgeyBsYW5ndWFnZTogJ3NxbCcgfSkgfVxufVxuIiwiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB7IGdyYXkgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd2ZXJib3NlJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLlZlcmJvc2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1ZFUkJPU0UnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiB7IGxhYmVsLCBwYXlsb2FkOiBncmF5KGRhdGEubWVzc2FnZSkgfVxufVxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdkZWJ1ZydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5EZWJ1Z1xuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnREVCVUcnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIYW5kbGVyIGltcGxlbWVudGF0aW9ucy5cbmltcG9ydCAqIGFzIEZhdGFsSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvZmF0YWwnXG5pbXBvcnQgKiBhcyBFcnJvckhhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL2Vycm9yJ1xuaW1wb3J0ICogYXMgV2FybmluZ0hhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL3dhcm5pbmcnXG5pbXBvcnQgKiBhcyBOb3RpY2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9ub3RpY2UnXG5pbXBvcnQgKiBhcyBJbmZvSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvaW5mbydcbmltcG9ydCAqIGFzIEh0dHBIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9odHRwJ1xuaW1wb3J0ICogYXMgUXVlcnlIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9xdWVyeSdcbmltcG9ydCAqIGFzIFZlcmJvc2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy92ZXJib3NlJ1xuaW1wb3J0ICogYXMgRGVidWdIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9kZWJ1ZydcblxuY29uc3QgaGFuZGxlcnMgPSBbXG5cdEZhdGFsSGFuZGxlcixcblx0RXJyb3JIYW5kbGVyLFxuXHRXYXJuaW5nSGFuZGxlcixcblx0Tm90aWNlSGFuZGxlcixcblx0SW5mb0hhbmRsZXIsXG5cdEh0dHBIYW5kbGVyLFxuXHRRdWVyeUhhbmRsZXIsXG5cdFZlcmJvc2VIYW5kbGVyLFxuXHREZWJ1Z0hhbmRsZXIsXG5dXG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbE5hbWUgPSAodHlwZW9mIGhhbmRsZXJzIGV4dGVuZHMgKGluZmVyIFQpW10gPyBUIDogbmV2ZXIpWyduYW1lJ11cbmV4cG9ydCBkZWZhdWx0IGhhbmRsZXJzXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgZ3JheSB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcbmltcG9ydCByVHJhY2VyIGZyb20gJ2Nscy1ydHJhY2VyJ1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbidcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3dpbnN0b24nXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0LnByaW50ZihkYXRhID0+IHtcblx0Y29uc3QgdGltZXN0YW1wID0gZ3JheShEYXRlVGltZS5ub3coKS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IHRydWUgfSkpXG5cdGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gZGF0YS5sZXZlbClcblx0Y29uc3QgZmFsbGJhY2sgPSB7IGxhYmVsOiBoYW5kbGVyPy5sYWJlbCwgcGF5bG9hZDogZGF0YS5tZXNzYWdlIH1cblx0Y29uc3QgcGVyZm9ybUhhbmRsZSA9IGhhbmRsZXI/LmRlZmF1bHQgPz8gKCgpOiB0eXBlb2YgZmFsbGJhY2sgPT4gZmFsbGJhY2spXG5cblx0Ly8gRXhlY3V0ZSBoYW5kbGVyIGFuZCB0aGVuLCBnZXQgZGVjb3JhdGVkIHBheWxvYWQuXG5cdGNvbnN0IHsgbGFiZWwsIHBheWxvYWQgfSA9IFJlZmxlY3QuYXBwbHkocGVyZm9ybUhhbmRsZSwgdW5kZWZpbmVkLCBbIGRhdGEgXSkgPz8gZmFsbGJhY2tcblxuXHRjb25zdCBleHRyYUZpbmdlcnByaW50ID0gW1xuXHRcdFsgJ1JlcXVlc3QtSUQnLCByVHJhY2VyLmlkKCkgXSxcblx0XHRbICdUcmFuc2FjdGlvbi1JRCcsIGRhdGEudHJhbnNhY3Rpb25JZCBdLFxuXHRdXG5cdFx0LmZpbHRlcigoWyAsIGlkVmFsdWUgXSkgPT4gaWRWYWx1ZSlcblx0XHQubWFwKChbIGtpbmQsIGlkVmFsdWUgXSkgPT4gYCR7a2luZH0gPSAke2lkVmFsdWV9YClcblx0XHQuam9pbignIHwgJylcblxuXHRyZXR1cm4gYCR7bGFiZWwgYXMgc3RyaW5nfSAke3RpbWVzdGFtcH0ke2V4dHJhRmluZ2VycHJpbnQgPyBgICgke2V4dHJhRmluZ2VycHJpbnR9KWAgOiAnJ31cXG4ke3BheWxvYWQgYXMgc3RyaW5nfWBcbn0pXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgY2x1c3RlciBmcm9tICdjbHVzdGVyJ1xuaW1wb3J0IHsgZW52IGFzIGVudmlyb25tZW50cyB9IGZyb20gJ3Byb2Nlc3MnXG5pbXBvcnQgeyBpc01haW5UaHJlYWQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBjb25zdCBFeGVjdXRpb25Nb2RlID0ge1xuXHREZXZlbG9wbWVudE1vZGU6ICdkZXZlbG9wbWVudCcsXG5cdFByb2R1Y3Rpb25Nb2RlOiAncHJvZHVjdGlvbicsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBDbHVzdGVyaW5nTW9kZSA9IHtcblx0TWFzdGVyUHJvY2VzczogMCxcblx0V29ya2VyUHJvY2VzczogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFRocmVhZGluZ01vZGUgPSB7XG5cdE1haW5UaHJlYWQ6IDAsXG5cdFdvcmtlclRocmVhZDogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgRXhlY3V0aW9uTW9kZSA9IHR5cGVvZiBFeGVjdXRpb25Nb2RlW2tleW9mIHR5cGVvZiBFeGVjdXRpb25Nb2RlXVxuZXhwb3J0IHR5cGUgQ2x1c3RlcmluZ01vZGUgPSB0eXBlb2YgQ2x1c3RlcmluZ01vZGVba2V5b2YgdHlwZW9mIENsdXN0ZXJpbmdNb2RlXVxuZXhwb3J0IHR5cGUgVGhyZWFkaW5nTW9kZSA9IHR5cGVvZiBUaHJlYWRpbmdNb2RlW2tleW9mIHR5cGVvZiBUaHJlYWRpbmdNb2RlXVxuXG4vLyBFeHBvcnRpbmdzLlxuZXhwb3J0IGNvbnN0IGV4ZWN1dGlvbk1vZGUgPSBlbnZpcm9ubWVudHMuTk9ERV9FTlYgYXMgRXhlY3V0aW9uTW9kZSA/PyBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZVxuXG5leHBvcnQgY29uc3QgY2x1c3RlcmluZ01vZGU6IENsdXN0ZXJpbmdNb2RlID0gY2x1c3Rlci5pc1ByaW1hcnkgPz8gY2x1c3Rlci5pc01hc3RlclxuXHQ/IENsdXN0ZXJpbmdNb2RlLk1hc3RlclByb2Nlc3Ncblx0OiBDbHVzdGVyaW5nTW9kZS5Xb3JrZXJQcm9jZXNzXG5cbmV4cG9ydCBjb25zdCB0aHJlYWRpbmdNb2RlOiBUaHJlYWRpbmdNb2RlID0gaXNNYWluVGhyZWFkXG5cdD8gVGhyZWFkaW5nTW9kZS5NYWluVGhyZWFkXG5cdDogVGhyZWFkaW5nTW9kZS5Xb3JrZXJUaHJlYWRcbiIsIi8vIE5vZGUuanMgYnVpbHQtaW4gQVBJcy5cbmltcG9ydCB7XG5cdFNUQVRVU19DT0RFUyxcblx0SW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LFxuXHRTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ2h0dHAnXG5cbi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgbW9yZ2FuLCB7IHR5cGUgVG9rZW5JbmRleGVyIH0gZnJvbSAnbW9yZ2FuJ1xuaW1wb3J0IHsgZ3JlZW4sIG1hZ2VudGEsIHJlZCwgZ3JheSwgYm9sZCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5pbXBvcnQgeyBmb3JtYXQgYXMgcHJldHR5Qnl0ZXMgfSBmcm9tICdAc3RkL2ZtdC9ieXRlcydcbmltcG9ydCB7IGZvcm1hdCBhcyBwcmV0dHlNcyB9IGZyb20gJ0BzdGQvZm10L2R1cmF0aW9uJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IHsgRXhlY3V0aW9uTW9kZSwgZXhlY3V0aW9uTW9kZSB9IGZyb20gJyNoZWxwZXJzL2NvbnN0YW50cydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmRlY2xhcmUgbW9kdWxlICdtb3JnYW4nIHtcblx0Y29uc3QgY29tYmluZWQ6IG1vcmdhbi5Gb3JtYXRGblxufVxuXG4vLyBIZWxwZXJzLlxuZnVuY3Rpb24gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGU6IGtleW9mIHR5cGVvZiBTVEFUVVNfQ09ERVMpOiBzdHJpbmcge1xuXHRjb25zdCBncm91cE9mQ29kZSA9IE1hdGguZmxvb3IoTnVtYmVyKHN0YXR1c0NvZGUpIC8gMTAwKSAqIDEwMFxuXHRjb25zdCBiYXNlTWVzc2FnZSA9IGAke3N0YXR1c0NvZGV9ICR7U1RBVFVTX0NPREVTW3N0YXR1c0NvZGVdIGFzIHN0cmluZ31gXG5cblx0c3dpdGNoIChncm91cE9mQ29kZSkge1xuXHRjYXNlIDIwMDoge1xuXHRcdHJldHVybiBncmVlbihiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGNhc2UgMzAwOiB7XG5cdFx0cmV0dXJuIG1hZ2VudGEoYmFzZU1lc3NhZ2UpXG5cdH1cblx0Y2FzZSA0MDA6XG5cdGNhc2UgNTAwOiB7XG5cdFx0cmV0dXJuIHJlZChiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGRlZmF1bHQ6IHtcblx0XHRyZXR1cm4gZ3JheShiYXNlTWVzc2FnZSlcblx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEZvck1vcmdhbih0b2tlbnM6IFRva2VuSW5kZXhlciwgcmVxdWVzdDogSHR0cFJlcXVlc3QsIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpOiBzdHJpbmcge1xuXHRmdW5jdGlvbiBfKHRva2VuOiBzdHJpbmcsIC4uLnN1YkFyZ3M6IGFueVtdKTogc3RyaW5nIHwgdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcblx0XHRyZXR1cm4gdG9rZW5zW3Rva2VuXShyZXF1ZXN0LCByZXNwb25zZSwgLi4uc3ViQXJncylcblx0fVxuXG5cdC8vIFJhdyB2YWx1ZXMuXG5cdGNvbnN0IG1ldGhvZCA9IF8oJ21ldGhvZCcpXG5cdGNvbnN0IFVSTCA9IF8oJ3VybCcpXG5cdGNvbnN0IGh0dHBWZXJzaW9uID0gYEhUVFAvJHtfKCdodHRwLXZlcnNpb24nKSBhcyBzdHJpbmd9YFxuXHRjb25zdCBzdGF0dXNDb2RlID0gTnVtYmVyKF8oJ3N0YXR1cycpKVxuXHRjb25zdCBjb250ZW50TGVuZ3RoID0gTnVtYmVyKF8oJ3JlcycsICdjb250ZW50LWxlbmd0aCcpID8/IC0xKVxuXHRjb25zdCByZXNwb25zZVRpbWUgPSBOdW1iZXIoXygncmVzcG9uc2UtdGltZScpID8/IC0xKVxuXG5cdC8vIERlY29yYXRlZCB2YWx1ZXMuXG5cdGNvbnN0ICRtZXRob2QgPSBib2xkKG1ldGhvZCA/PyAnJylcblx0Y29uc3QgJHZlcnNpb24gPSByZ2IyNChodHRwVmVyc2lvbiwgMHg2MkIxRkYpXG5cdGNvbnN0ICRzdGF0dXNDb2RlID0gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGUpXG5cdGNvbnN0ICRjb250ZW50TGVuZ3RoID0gY29udGVudExlbmd0aCA+PSAwID8gcHJldHR5Qnl0ZXMoY29udGVudExlbmd0aCkgOiAnPyBCJ1xuXHRjb25zdCAkcmVzcG9uc2VUaW1lID0gcmVzcG9uc2VUaW1lID49IDAgPyBwcmV0dHlNcyhyZXNwb25zZVRpbWUsIHsgaWdub3JlWmVybzogdHJ1ZSB9KSA6ICcnXG5cblx0Ly8gQWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cblx0Y29uc3QgbWV0YWRhdGEgPSBgKCR7JGNvbnRlbnRMZW5ndGh9LCAkeyRyZXNwb25zZVRpbWV9KWBcblxuXHRyZXR1cm4gW1xuXHRcdGDihpIgJHskbWV0aG9kfSAke1VSTCBhcyBzdHJpbmd9ICR7JHZlcnNpb259YCxcblx0XHRg4oaQICR7JHZlcnNpb259ICR7JHN0YXR1c0NvZGV9ICR7bWV0YWRhdGF9YCxcblx0XS5qb2luKCdcXG4nKVxufVxuXG5leHBvcnQgZGVmYXVsdCBleGVjdXRpb25Nb2RlID09PSBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZSA/IGZvcm1hdEZvck1vcmdhbiA6IG1vcmdhbi5jb21iaW5lZFxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHsgSW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LCBTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHsgUGFzc1Rocm91Z2ggfSBmcm9tICdzdHJlYW0nXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nXG5pbXBvcnQgKiBhcyB3aW5zdG9uIGZyb20gJ3dpbnN0b24nXG5pbXBvcnQgdHlwZSB7IGxldmVsIGFzIExvZ2dpbmdMZXZlbCwgTG9nZ2VyIGFzIEJhc2VMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuXG4vLyBGb3JtYXR0ZXJzLlxuaW1wb3J0IGZvcm1hdEZvckNMSSBmcm9tICcjZm9ybWF0dGVycy9jb21tYW5kLWxpbmUnXG5pbXBvcnQgZm9ybWF0Rm9yTW9yZ2FuIGZyb20gJyNmb3JtYXR0ZXJzL21vcmdhbidcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB7IEV4ZWN1dGlvbk1vZGUsIGV4ZWN1dGlvbk1vZGUgfSBmcm9tICcjaGVscGVycy9jb25zdGFudHMnXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IHR5cGUgeyBMb2dnaW5nTGV2ZWxOYW1lIH0gZnJvbSAnI2hhbmRsZXJzL2luZGV4J1xuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTW9yZ2FuID0gKHJlcTogSHR0cFJlcXVlc3QsIHJlczogSHR0cFJlc3BvbnNlLCBuZXh0OiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZFxuXG4vLyBUcmFuc3BvcnRzLlxuY29uc3QgeyBDb25zb2xlOiBDb25zb2xlVHJhbnNwb3J0IH0gPSB3aW5zdG9uLnRyYW5zcG9ydHNcblxuY2xhc3MgTG9nZ2VyIHtcblx0c3RhdGljICNpbnN0YW5jZT86IExvZ2dlclxuXG5cdCNsb2dnZXI6IEJhc2VMb2dnZXIgPSB3aW5zdG9uLmNyZWF0ZUxvZ2dlcih7XG5cdFx0bGV2ZWxzOiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRoYW5kbGVyc1xuXHRcdFx0XHQubWFwKCh7IG5hbWUsIGxldmVsIH0pID0+IFsgbmFtZSwgbGV2ZWwgXSBhcyBjb25zdClcblx0XHRcdFx0LmZpbHRlcigoWyAsIGxldmVsIF0pID0+IHR5cGVvZiBsZXZlbCA9PT0gJ251bWJlcicpLFxuXHRcdCksXG5cblx0XHRsZXZlbDogKGV4ZWN1dGlvbk1vZGUgPT09IEV4ZWN1dGlvbk1vZGUuUHJvZHVjdGlvbk1vZGUgPyAnaHR0cCcgOiAndmVyYm9zZScpLFxuXG5cdFx0dHJhbnNwb3J0czogW1xuXHRcdFx0bmV3IENvbnNvbGVUcmFuc3BvcnQoeyBmb3JtYXQ6IGZvcm1hdEZvckNMSSB9KSxcblx0XHRdLFxuXG5cdFx0ZXhpdE9uRXJyb3I6IGZhbHNlLFxuXHR9KVxuXG5cdCNtb3JnYW46IE1vcmdhbiA9IG1vcmdhbihmb3JtYXRGb3JNb3JnYW4sIHtcblx0XHRzdHJlYW06IG5ldyBQYXNzVGhyb3VnaCh7IG9iamVjdE1vZGU6IHRydWUgfSkub24oJ2RhdGEnLCAoZGF0YTogc3RyaW5nKSA9PiB7XG5cdFx0XHR0aGlzLmxvZygnaHR0cCcsIGRhdGEudHJpbSgpKVxuXHRcdH0pLFxuXHR9KVxuXG5cdHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKG5ldy50YXJnZXQgIT09IExvZ2dlcikge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgaXMgbm90IGluaGVyaXRhYmxlJylcblx0XHR9XG5cblx0XHRpZiAoTG9nZ2VyLiNpbnN0YW5jZSkge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgY2Fubm90IGJlIGNvbnN0cnVjdGVkIGluIGRpcmVjdGx5Jylcblx0XHR9XG5cblx0XHRMb2dnZXIuI2luc3RhbmNlID0gdGhpc1xuXHR9XG5cblx0LyoqXG5cdCAqIExvZ2dpbmcgbWVzc2FnZSB3aXRoIHNwZWNpZmljIGxldmVsLlxuXHQgKlxuXHQgKiBAcGFyYW0gbGV2ZWxcblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBtZXRhZGF0YS5cblx0ICovXG5cdHB1YmxpYyBsb2cobGV2ZWw6IExvZ2dpbmdMZXZlbE5hbWUsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZFxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIEhUVFAgSS9PLlxuXHQgKlxuXHQgKiBAcGFyYW0gcmVxdWVzdCBOb2RlLmpzIGJ1aWx0LWluIGBJbmNvbWluZ01lc3NhZ2VgIGluc3RhbmNlIGZyb20gYGh0dHBgIG1vZHVsZS5cblx0ICogQHBhcmFtIHJlc3BvbnNlIE5vZGUuanMgYnVpbHQtaW4gYFNlcnZlclJlc3BvbnNlYCBpbnN0YW5jZSBmcm9tIGBodHRwYCBtb2R1bGUuXG5cdCAqL1xuXHRwdWJsaWMgbG9nKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LCByZXNwb25zZTogSHR0cFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPlxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIGVycm9ycyBpbiBkZXRhaWwuXG5cdCAqXG5cdCAqIEBwYXJhbSBlcnJvclxuXHQgKi9cblx0cHVibGljIGxvZyhlcnJvcjogRXJyb3IpOiB2b2lkXG5cblx0cHVibGljIGxvZyguLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbG9nZ2VyID0gdGhpcy4jbG9nZ2VyXG5cdFx0Y29uc3QgZm9ybWF0ID0gdGhpcy4jbW9yZ2FuXG5cblx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRjYXNlIChhcmdzLmxlbmd0aCA+PSAyICYmIGFyZ3NbMF0gaW5zdGFuY2VvZiBIdHRwUmVxdWVzdCAmJiBhcmdzWzFdIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKToge1xuXHRcdFx0Y29uc3QgWyByZXF1ZXN0LCByZXNwb25zZSBdID0gYXJncyBhcyBbIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgXVxuXG5cdFx0XHRyZXR1cm4gcHJvbWlzaWZ5KGZvcm1hdCkocmVxdWVzdCwgcmVzcG9uc2UpXG5cdFx0fVxuXG5cdFx0Y2FzZSAoYXJncy5sZW5ndGggPj0gMSAmJiBhcmdzWzBdIGluc3RhbmNlb2YgRXJyb3IpOiB7XG5cdFx0XHRjb25zdCBbIGVycm9yLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgRXJyb3IsIC4uLnVua25vd25bXSBdXG5cblx0XHRcdGxvZ2dlci5sb2coJ2Vycm9yJywgZXJyb3IubWVzc2FnZSwgZXJyb3IsIC4uLmRhdGEpXG5cblx0XHRcdHJldHVybiB1bmRlZmluZWRcblx0XHR9XG5cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRjb25zdCBbIGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgdHlwZW9mIExvZ2dpbmdMZXZlbCwgc3RyaW5nLCAuLi51bmtub3duW10gXVxuXG5cdFx0XHRsb2dnZXIubG9nKGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhKVxuXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWZsZWN0LmNvbnN0cnVjdChMb2dnZXIsIFtdLCBMb2dnZXIpIGFzIExvZ2dlclxuIl0sIm5hbWVzIjpbIm5hbWUiLCJsZXZlbCIsImxhYmVsIiwiaGFuZGxlIiwiZW52aXJvbm1lbnRzIiwicHJldHR5Qnl0ZXMiLCJwcmV0dHlNcyIs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cichol/logger",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.3.0",
|
|
4
4
|
"description": "A logger based on `winston` for personal projects.",
|
|
5
5
|
"homepage": "https://github.com/morrighan/packages",
|
|
6
6
|
"bugs": {
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"directory": "packages/logger"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@babel/runtime-corejs3": "^
|
|
32
|
+
"@babel/runtime-corejs3": "^8.0.0",
|
|
33
33
|
"@std/fmt": "npm:@jsr/std__fmt@^1.0.10",
|
|
34
34
|
"cli-highlight": "^2.1.11",
|
|
35
35
|
"cls-rtracer": "^2.6.4",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"winston": "^3.19.0"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
|
42
|
-
"node": "^24.
|
|
43
|
-
"npm": "^
|
|
42
|
+
"node": "^24.18.0",
|
|
43
|
+
"npm": "^12.0.0"
|
|
44
44
|
},
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"registry": "https://registry.npmjs.org/",
|