@nlabs/lex 1.51.6 → 1.52.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.
@@ -5,8 +5,8 @@
5
5
  import { execa } from 'execa';
6
6
  import { existsSync, lstatSync, readdirSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
7
7
  import { sync as globSync } from 'glob';
8
- import { extname as pathExtname, join as pathJoin, resolve as pathResolve, dirname } from 'path';
9
- import { LexConfig, getTypeScriptConfigPath } from '../../LexConfig.js';
8
+ import { extname as pathExtname, join as pathJoin, relative as pathRelative, resolve as pathResolve, dirname } from 'path';
9
+ import { LexConfig } from '../../LexConfig.js';
10
10
  import { checkLinkedModules, copyConfiguredFiles, copyFiles, createSpinner, getFilesByExt, removeFiles } from '../../utils/app.js';
11
11
  import { getDirName, resolveBinaryPath } from '../../utils/file.js';
12
12
  import { log } from '../../utils/log.js';
@@ -34,13 +34,11 @@ export const compile = async (cmd, callback = ()=>({}))=>{
34
34
  const outputDir = outputPath || outputFullPath;
35
35
  const sourceDir = sourcePath ? pathResolve(process.cwd(), `./${sourcePath}`) : sourceFullPath || '';
36
36
  const dirName = getDirName();
37
- const dirPath = pathResolve(dirName, '../..');
38
37
  checkLinkedModules();
39
38
  if (remove) {
40
39
  await removeFiles(outputDir);
41
40
  }
42
41
  if (useTypescript) {
43
- LexConfig.checkCompileTypescriptConfig();
44
42
  const typescriptPath = resolveBinaryPath('tsc', 'typescript');
45
43
  if (!typescriptPath) {
46
44
  log(`\n${cliName} Error: TypeScript binary not found in Lex's node_modules or monorepo root`, 'error', quiet);
@@ -49,32 +47,83 @@ export const compile = async (cmd, callback = ()=>({}))=>{
49
47
  }
50
48
  const typescriptOptions = config ? [
51
49
  '-p',
52
- config
53
- ] : [
54
- '-p',
55
- getTypeScriptConfigPath('tsconfig.build.json')
56
- ];
57
- spinner.start('Static type checking with Typescript...');
50
+ config,
51
+ '--emitDeclarationOnly',
52
+ '--skipLibCheck'
53
+ ] // User provided custom config, but still only emit declarations
54
+ : (()=>{
55
+ const globOptions = {
56
+ absolute: true,
57
+ cwd: sourceDir,
58
+ dot: false,
59
+ nodir: true
60
+ };
61
+ const tsFiles = globSync('**/!(*.spec|*.test|*.integration).ts', globOptions);
62
+ const tsxFiles = globSync('**/!(*.spec|*.test|*.integration).tsx', globOptions);
63
+ const allSourceFiles = [
64
+ ...tsFiles,
65
+ ...tsxFiles
66
+ ];
67
+ return [
68
+ ...LexConfig.getTypeScriptDeclarationFlags(),
69
+ ...allSourceFiles
70
+ ];
71
+ })();
72
+ spinner.start('Generating TypeScript declarations...');
58
73
  try {
59
- await execa(typescriptPath, typescriptOptions, {
60
- encoding: 'utf8'
74
+ const result = await execa(typescriptPath, typescriptOptions, {
75
+ all: true,
76
+ cwd: process.cwd(),
77
+ encoding: 'utf8',
78
+ reject: false
61
79
  });
62
- spinner.succeed('Successfully completed type checking!');
80
+ if (result.exitCode !== 0) {
81
+ const hasDeclarations = result.all?.includes('Writing') || result.all?.includes('Declaration') || false;
82
+ const errorOutput = result.stderr || result.stdout || result.all || 'Unknown error';
83
+ if (!hasDeclarations) {
84
+ log(`\n${cliName} Error: TypeScript declaration generation failed`, 'error', quiet);
85
+ log(`\nExit Code: ${result.exitCode}`, 'error', quiet);
86
+ log(`\nTypeScript Command: ${typescriptPath} ${typescriptOptions.join(' ')}`, 'error', quiet);
87
+ log(`\nError Output:\n${errorOutput}`, 'error', quiet);
88
+ const errorLines = errorOutput.split('\n').filter((line)=>line.includes('error TS') || line.includes('Error:') || line.trim().startsWith('src/') || line.trim().startsWith('TS'));
89
+ if (errorLines.length > 0) {
90
+ log('\nKey Errors:', 'error', quiet);
91
+ errorLines.slice(0, 10).forEach((line)=>{
92
+ log(` ${line}`, 'error', quiet);
93
+ });
94
+ if (errorLines.length > 10) {
95
+ log(` ... and ${errorLines.length - 10} more errors`, 'error', quiet);
96
+ }
97
+ }
98
+ spinner.fail('TypeScript declaration generation failed.');
99
+ } else {
100
+ log(`\n${cliName} Warning: TypeScript declaration generation completed with errors`, 'warn', quiet);
101
+ if (!quiet && errorOutput) {
102
+ log(`\nWarnings:\n${errorOutput}`, 'warn', quiet);
103
+ }
104
+ spinner.succeed('TypeScript declarations generated (with warnings).');
105
+ }
106
+ } else {
107
+ spinner.succeed('Successfully generated TypeScript declarations!');
108
+ }
63
109
  } catch (error) {
64
- log(`\n${cliName} Error: ${error.message}`, 'error', quiet);
65
- spinner.fail('Type checking failed.');
66
- callback(1);
67
- return 1;
110
+ log(`\n${cliName} Error: TypeScript declaration generation exception`, 'error', quiet);
111
+ log(`\nError: ${error.message}`, 'error', quiet);
112
+ if (error instanceof Error && error.stack) {
113
+ log(`\nStack:\n${error.stack}`, 'error', quiet);
114
+ }
115
+ spinner.fail('TypeScript declaration generation had issues, continuing...');
68
116
  }
69
117
  }
70
118
  const globOptions = {
119
+ absolute: true,
71
120
  cwd: sourceDir,
72
121
  dot: false,
73
122
  nodir: true,
74
123
  nosort: true
75
124
  };
76
- const tsFiles = globSync(`${sourceDir}/**/!(*.spec|*.test|*.integration).ts*`, globOptions);
77
- const jsFiles = globSync(`${sourceDir}/**/!(*.spec|*.test|*.integration).js`, globOptions);
125
+ const tsFiles = globSync('**/!(*.spec|*.test|*.integration).ts*', globOptions);
126
+ const jsFiles = globSync('**/!(*.spec|*.test|*.integration).js', globOptions);
78
127
  const sourceFiles = [
79
128
  ...tsFiles,
80
129
  ...jsFiles
@@ -159,13 +208,19 @@ export const compile = async (cmd, callback = ()=>({}))=>{
159
208
  return 1;
160
209
  }
161
210
  }
211
+ if (sourceFiles.length === 0) {
212
+ log(`\n${cliName} Warning: No source files found to compile in ${sourceDir}`, 'warn', quiet);
213
+ spinner.succeed('No files to compile.');
214
+ callback(0);
215
+ return 0;
216
+ }
162
217
  spinner.start(watch ? 'Watching for changes...' : 'Compiling with SWC...');
163
218
  try {
164
- // Compile each file with SWC
165
219
  for (const file of sourceFiles){
166
- const sourcePath = pathResolve(sourceDir, file);
167
- const outputPath = pathResolve(outputDir, file.replace(/\.(ts|tsx)$/, '.js'));
168
- // Ensure output directory exists
220
+ const fileRelativeToSource = pathRelative(sourceDir, pathResolve(sourceDir, file));
221
+ const sourcePath = pathResolve(sourceDir, fileRelativeToSource);
222
+ const outputFile = fileRelativeToSource.replace(/\.(ts|tsx)$/, '.js');
223
+ const outputPath = pathResolve(outputDir, outputFile);
169
224
  const outputDirPath = dirname(outputPath);
170
225
  if (!existsSync(outputDirPath)) {
171
226
  mkdirSync(outputDirPath, {
@@ -174,18 +229,19 @@ export const compile = async (cmd, callback = ()=>({}))=>{
174
229
  }
175
230
  const sourceCode = readFileSync(sourcePath, 'utf8');
176
231
  const isTSX = file.endsWith('.tsx');
177
- // Merge SWC config with command-specific overrides
178
232
  const swcOptions = {
179
233
  filename: file,
180
234
  ...swcConfig,
181
235
  jsc: {
182
236
  ...swcConfig?.jsc,
183
237
  parser: {
238
+ comments: false,
184
239
  decorators: swcConfig?.jsc?.parser?.decorators ?? true,
185
240
  dynamicImport: swcConfig?.jsc?.parser?.dynamicImport ?? true,
186
241
  syntax: 'typescript',
187
242
  tsx: isTSX
188
243
  },
244
+ preserveAllComments: false,
189
245
  target: swcConfig?.jsc?.target ?? 'es2020',
190
246
  transform: isTSX ? {
191
247
  ...swcConfig?.jsc?.transform,
@@ -195,19 +251,30 @@ export const compile = async (cmd, callback = ()=>({}))=>{
195
251
  }
196
252
  } : swcConfig?.jsc?.transform
197
253
  },
254
+ minify: false,
198
255
  module: {
199
256
  ...swcConfig?.module,
200
257
  type: format === 'cjs' ? 'commonjs' : swcConfig?.module?.type || 'es6'
201
- }
258
+ },
259
+ sourceMaps: swcConfig?.sourceMaps || 'inline'
202
260
  };
203
261
  const result = await transform(sourceCode, swcOptions);
204
262
  writeFileSync(outputPath, result.code);
205
263
  }
206
264
  spinner.succeed('Compile completed successfully!');
207
265
  } catch (error) {
208
- log(`\n${cliName} Error: ${error.message}`, 'error', quiet);
266
+ log(`\n${cliName} Error: SWC compilation failed`, 'error', quiet);
267
+ log(`\nError: ${error.message}`, 'error', quiet);
268
+ if (error instanceof Error) {
269
+ if (error.stack) {
270
+ log(`\nStack Trace:\n${error.stack}`, 'error', quiet);
271
+ }
272
+ if ('filename' in error || 'file' in error) {
273
+ log(`\nFile: ${error.filename || error.file}`, 'error', quiet);
274
+ }
275
+ }
209
276
  if (!quiet) {
210
- console.error(error);
277
+ console.error('\nFull Error Details:', error);
211
278
  }
212
279
  spinner.fail('Code compiling failed.');
213
280
  callback(1);
@@ -225,4 +292,4 @@ export const compile = async (cmd, callback = ()=>({}))=>{
225
292
  return 0;
226
293
  };
227
294
 
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb21waWxlL2NvbXBpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dHJhbnNmb3JtfSBmcm9tICdAc3djL2NvcmUnO1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCBsc3RhdFN5bmMsIHJlYWRkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMsIG1rZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZSwgZGlybmFtZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnLCBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aH0gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2hlY2tMaW5rZWRNb2R1bGVzLCBjb3B5Q29uZmlndXJlZEZpbGVzLCBjb3B5RmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGdldEZpbGVzQnlFeHQsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGhhc0ZpbGVUeXBlID0gKHN0YXJ0UGF0aDogc3RyaW5nLCBleHQ6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gIGlmKCFleGlzdHNTeW5jKHN0YXJ0UGF0aCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBmaWxlczogc3RyaW5nW10gPSByZWFkZGlyU3luYyhzdGFydFBhdGgpO1xuXG4gIHJldHVybiBmaWxlcy5zb21lKChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZTogc3RyaW5nID0gcGF0aEpvaW4oc3RhcnRQYXRoLCBmaWxlKTtcbiAgICBjb25zdCBmaWxlRXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShmaWxlbmFtZSk7XG4gICAgY29uc3Qgc3RhdCA9IGxzdGF0U3luYyhmaWxlbmFtZSk7XG5cbiAgICBpZihzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHJldHVybiBoYXNGaWxlVHlwZShmaWxlbmFtZSwgZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXh0LmluY2x1ZGVzKGZpbGVFeHQpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21waWxlID0gYXN5bmMgKGNtZDogYW55LCBjYWxsYmFjazogYW55ID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgY29uZmlnLFxuICAgIGZvcm1hdCA9ICdlc20nLFxuICAgIG91dHB1dFBhdGgsXG4gICAgcXVpZXQsXG4gICAgcmVtb3ZlLFxuICAgIHNvdXJjZVBhdGgsXG4gICAgd2F0Y2hcbiAgfSA9IGNtZDtcblxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgbG9nKGAke2NsaU5hbWV9IGNvbXBpbGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGgsIHN3Yzogc3djQ29uZmlnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IG91dHB1dERpcjogc3RyaW5nID0gb3V0cHV0UGF0aCB8fCBvdXRwdXRGdWxsUGF0aDtcbiAgY29uc3Qgc291cmNlRGlyOiBzdHJpbmcgPSBzb3VyY2VQYXRoID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgYC4vJHtzb3VyY2VQYXRofWApIDogc291cmNlRnVsbFBhdGggfHwgJyc7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gIGNvbnN0IGRpclBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLicpO1xuXG4gIGNoZWNrTGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgTGV4Q29uZmlnLmNoZWNrQ29tcGlsZVR5cGVzY3JpcHRDb25maWcoKTtcblxuICAgIGNvbnN0IHR5cGVzY3JpcHRQYXRoOiBzdHJpbmcgPSByZXNvbHZlQmluYXJ5UGF0aCgndHNjJywgJ3R5cGVzY3JpcHQnKTtcblxuICAgIGlmKCF0eXBlc2NyaXB0UGF0aCkge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBUeXBlU2NyaXB0IGJpbmFyeSBub3QgZm91bmQgaW4gTGV4J3Mgbm9kZV9tb2R1bGVzIG9yIG1vbm9yZXBvIHJvb3RgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBsb2coJ1BsZWFzZSByZWluc3RhbGwgTGV4IG9yIGNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLicsICdpbmZvJywgcXVpZXQpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgY29uc3QgdHlwZXNjcmlwdE9wdGlvbnM6IHN0cmluZ1tdID0gY29uZmlnID9cbiAgICAgIFsnLXAnLCBjb25maWddIDpcbiAgICAgIFsnLXAnLCBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcuYnVpbGQuanNvbicpXTtcblxuICAgIHNwaW5uZXIuc3RhcnQoJ1N0YXRpYyB0eXBlIGNoZWNraW5nIHdpdGggVHlwZXNjcmlwdC4uLicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHR5cGVzY3JpcHRQYXRoLCB0eXBlc2NyaXB0T3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcblxuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY29tcGxldGVkIHR5cGUgY2hlY2tpbmchJyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ1R5cGUgY2hlY2tpbmcgZmFpbGVkLicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGdsb2JPcHRpb25zID0ge1xuICAgIGN3ZDogc291cmNlRGlyLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikudHMqYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke3NvdXJjZURpcn0vKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb24pLmpzYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBzb3VyY2VGaWxlczogc3RyaW5nW10gPSBbLi4udHNGaWxlcywgLi4uanNGaWxlc107XG5cbiAgY29uc3QgY3NzRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmNzcycsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKGNzc0ZpbGVzLmxlbmd0aCkge1xuICAgIGNvbnN0IHBvc3Rjc3NQYXRoOiBzdHJpbmcgPSByZXNvbHZlQmluYXJ5UGF0aCgncG9zdGNzcycsICdwb3N0Y3NzLWNsaScpO1xuXG4gICAgaWYoIXBvc3Rjc3NQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFBvc3RDU1MgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3N0Y3NzT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgICBgJHtzb3VyY2VEaXJ9LyoqLyoqLmNzc2AsXG4gICAgICAnLS1iYXNlJyxcbiAgICAgIHNvdXJjZURpcixcbiAgICAgICctLWRpcicsXG4gICAgICBvdXRwdXREaXIsXG4gICAgICAnLS1jb25maWcnLFxuICAgICAgcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uL3Bvc3Rjc3MuY29uZmlnLmpzJylcbiAgICBdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHBvc3Rjc3NQYXRoLCBwb3N0Y3NzT3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IGZvcm1hdHRlZCAke2Nzc0ZpbGVzLmxlbmd0aH0gY3NzIGZpbGVzIWApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgZm9ybWF0dGluZyBjc3MuJyk7XG5cbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZ2lmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmdpZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBqcGdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuanBnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHBuZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5wbmcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgc3ZnRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnN2ZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBpbWFnZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi5naWZGaWxlcywgLi4uanBnRmlsZXMsIC4uLnBuZ0ZpbGVzLCAuLi5zdmdGaWxlc107XG5cbiAgaWYoaW1hZ2VGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGltYWdlRmlsZXMsICdpbWFnZScsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBpbWFnZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCB0dGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcudHRmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IG90ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5vdGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmYyRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYyJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGZvbnRGaWxlczogc3RyaW5nW10gPSBbLi4udHRmRmlsZXMsIC4uLm90ZkZpbGVzLCAuLi53b2ZmRmlsZXMsIC4uLndvZmYyRmlsZXNdO1xuXG4gIGlmKGZvbnRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGZvbnRGaWxlcywgJ2ZvbnQnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgZm9udHMgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBtZEZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5tZCcsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKG1kRmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhtZEZpbGVzLCAnZG9jdW1lbnRzJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGRvY3MgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBTV0MuLi4nKTtcblxuICB0cnkge1xuICAgIC8vIENvbXBpbGUgZWFjaCBmaWxlIHdpdGggU1dDXG4gICAgZm9yKGNvbnN0IGZpbGUgb2Ygc291cmNlRmlsZXMpIHtcbiAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBwYXRoUmVzb2x2ZShzb3VyY2VEaXIsIGZpbGUpO1xuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IHBhdGhSZXNvbHZlKG91dHB1dERpciwgZmlsZS5yZXBsYWNlKC9cXC4odHN8dHN4KSQvLCAnLmpzJykpO1xuXG4gICAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yeSBleGlzdHNcbiAgICAgIGNvbnN0IG91dHB1dERpclBhdGggPSBkaXJuYW1lKG91dHB1dFBhdGgpO1xuICAgICAgaWYoIWV4aXN0c1N5bmMob3V0cHV0RGlyUGF0aCkpIHtcbiAgICAgICAgbWtkaXJTeW5jKG91dHB1dERpclBhdGgsIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc291cmNlQ29kZSA9IHJlYWRGaWxlU3luYyhzb3VyY2VQYXRoLCAndXRmOCcpO1xuXG4gICAgICBjb25zdCBpc1RTWCA9IGZpbGUuZW5kc1dpdGgoJy50c3gnKTtcblxuICAgICAgLy8gTWVyZ2UgU1dDIGNvbmZpZyB3aXRoIGNvbW1hbmQtc3BlY2lmaWMgb3ZlcnJpZGVzXG4gICAgICBjb25zdCBzd2NPcHRpb25zID0ge1xuICAgICAgICBmaWxlbmFtZTogZmlsZSxcbiAgICAgICAgLi4uc3djQ29uZmlnLFxuICAgICAgICBqc2M6IHtcbiAgICAgICAgICAuLi5zd2NDb25maWc/LmpzYyxcbiAgICAgICAgICBwYXJzZXI6IHtcbiAgICAgICAgICAgIGRlY29yYXRvcnM6IHN3Y0NvbmZpZz8uanNjPy5wYXJzZXI/LmRlY29yYXRvcnMgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGR5bmFtaWNJbXBvcnQ6IHN3Y0NvbmZpZz8uanNjPy5wYXJzZXI/LmR5bmFtaWNJbXBvcnQgPz8gdHJ1ZSxcbiAgICAgICAgICAgIHN5bnRheDogJ3R5cGVzY3JpcHQnIGFzIGNvbnN0LFxuICAgICAgICAgICAgdHN4OiBpc1RTWFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGFyZ2V0OiBzd2NDb25maWc/LmpzYz8udGFyZ2V0ID8/ICdlczIwMjAnLFxuICAgICAgICAgIHRyYW5zZm9ybTogaXNUU1ggPyB7XG4gICAgICAgICAgICAuLi5zd2NDb25maWc/LmpzYz8udHJhbnNmb3JtLFxuICAgICAgICAgICAgcmVhY3Q6IHtcbiAgICAgICAgICAgICAgcnVudGltZTogJ2F1dG9tYXRpYycgYXMgY29uc3QsXG4gICAgICAgICAgICAgIC4uLnN3Y0NvbmZpZz8uanNjPy50cmFuc2Zvcm0/LnJlYWN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSA6IHN3Y0NvbmZpZz8uanNjPy50cmFuc2Zvcm1cbiAgICAgICAgfSxcbiAgICAgICAgbW9kdWxlOiB7XG4gICAgICAgICAgLi4uc3djQ29uZmlnPy5tb2R1bGUsXG4gICAgICAgICAgdHlwZTogZm9ybWF0ID09PSAnY2pzJyA/ICdjb21tb25qcycgYXMgY29uc3QgOiAoc3djQ29uZmlnPy5tb2R1bGU/LnR5cGUgYXMgJ2VzNicgfHwgJ2VzNicpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybShzb3VyY2VDb2RlLCBzd2NPcHRpb25zKTtcblxuICAgICAgd3JpdGVGaWxlU3luYyhvdXRwdXRQYXRoLCByZXN1bHQuY29kZSk7XG4gICAgfVxuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBjb21waWxpbmcgZmFpbGVkLicpO1xuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGNvcHlDb25maWd1cmVkRmlsZXMoc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZywgcXVpZXQpO1xuICB9IGNhdGNoKGNvcHlFcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlczogJHtjb3B5RXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sIm5hbWVzIjpbInRyYW5zZm9ybSIsImV4ZWNhIiwiZXhpc3RzU3luYyIsImxzdGF0U3luYyIsInJlYWRkaXJTeW5jIiwicmVhZEZpbGVTeW5jIiwid3JpdGVGaWxlU3luYyIsIm1rZGlyU3luYyIsInN5bmMiLCJnbG9iU3luYyIsImV4dG5hbWUiLCJwYXRoRXh0bmFtZSIsImpvaW4iLCJwYXRoSm9pbiIsInJlc29sdmUiLCJwYXRoUmVzb2x2ZSIsImRpcm5hbWUiLCJMZXhDb25maWciLCJnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCIsImNoZWNrTGlua2VkTW9kdWxlcyIsImNvcHlDb25maWd1cmVkRmlsZXMiLCJjb3B5RmlsZXMiLCJjcmVhdGVTcGlubmVyIiwiZ2V0RmlsZXNCeUV4dCIsInJlbW92ZUZpbGVzIiwiZ2V0RGlyTmFtZSIsInJlc29sdmVCaW5hcnlQYXRoIiwibG9nIiwiaGFzRmlsZVR5cGUiLCJzdGFydFBhdGgiLCJleHQiLCJmaWxlcyIsInNvbWUiLCJmaWxlIiwiZmlsZW5hbWUiLCJmaWxlRXh0Iiwic3RhdCIsImlzRGlyZWN0b3J5IiwiaW5jbHVkZXMiLCJjb21waWxlIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwiY29uZmlnIiwiZm9ybWF0Iiwib3V0cHV0UGF0aCIsInF1aWV0IiwicmVtb3ZlIiwic291cmNlUGF0aCIsIndhdGNoIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwib3V0cHV0RnVsbFBhdGgiLCJzb3VyY2VGdWxsUGF0aCIsInN3YyIsInN3Y0NvbmZpZyIsInVzZVR5cGVzY3JpcHQiLCJvdXRwdXREaXIiLCJzb3VyY2VEaXIiLCJwcm9jZXNzIiwiY3dkIiwiZGlyTmFtZSIsImRpclBhdGgiLCJjaGVja0NvbXBpbGVUeXBlc2NyaXB0Q29uZmlnIiwidHlwZXNjcmlwdFBhdGgiLCJ0eXBlc2NyaXB0T3B0aW9ucyIsInN0YXJ0IiwiZW5jb2RpbmciLCJzdWNjZWVkIiwiZXJyb3IiLCJtZXNzYWdlIiwiZmFpbCIsImdsb2JPcHRpb25zIiwiZG90Iiwibm9kaXIiLCJub3NvcnQiLCJ0c0ZpbGVzIiwianNGaWxlcyIsInNvdXJjZUZpbGVzIiwiY3NzRmlsZXMiLCJsZW5ndGgiLCJwb3N0Y3NzUGF0aCIsInBvc3Rjc3NPcHRpb25zIiwiZ2lmRmlsZXMiLCJqcGdGaWxlcyIsInBuZ0ZpbGVzIiwic3ZnRmlsZXMiLCJpbWFnZUZpbGVzIiwidHRmRmlsZXMiLCJvdGZGaWxlcyIsIndvZmZGaWxlcyIsIndvZmYyRmlsZXMiLCJmb250RmlsZXMiLCJtZEZpbGVzIiwicmVwbGFjZSIsIm91dHB1dERpclBhdGgiLCJyZWN1cnNpdmUiLCJzb3VyY2VDb2RlIiwiaXNUU1giLCJlbmRzV2l0aCIsInN3Y09wdGlvbnMiLCJqc2MiLCJwYXJzZXIiLCJkZWNvcmF0b3JzIiwiZHluYW1pY0ltcG9ydCIsInN5bnRheCIsInRzeCIsInRhcmdldCIsInJlYWN0IiwicnVudGltZSIsIm1vZHVsZSIsInR5cGUiLCJyZXN1bHQiLCJjb2RlIiwiY29u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
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb21waWxlL2NvbXBpbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7dHJhbnNmb3JtfSBmcm9tICdAc3djL2NvcmUnO1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtleGlzdHNTeW5jLCBsc3RhdFN5bmMsIHJlYWRkaXJTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMsIG1rZGlyU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7ZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlLCBkaXJuYW1lfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NoZWNrTGlua2VkTW9kdWxlcywgY29weUNvbmZpZ3VyZWRGaWxlcywgY29weUZpbGVzLCBjcmVhdGVTcGlubmVyLCBnZXRGaWxlc0J5RXh0LCByZW1vdmVGaWxlc30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7Z2V0RGlyTmFtZSwgcmVzb2x2ZUJpbmFyeVBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBoYXNGaWxlVHlwZSA9IChzdGFydFBhdGg6IHN0cmluZywgZXh0OiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICBpZighZXhpc3RzU3luYyhzdGFydFBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gcmVhZGRpclN5bmMoc3RhcnRQYXRoKTtcblxuICByZXR1cm4gZmlsZXMuc29tZSgoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZmlsZW5hbWU6IHN0cmluZyA9IHBhdGhKb2luKHN0YXJ0UGF0aCwgZmlsZSk7XG4gICAgY29uc3QgZmlsZUV4dDogc3RyaW5nID0gcGF0aEV4dG5hbWUoZmlsZW5hbWUpO1xuICAgIGNvbnN0IHN0YXQgPSBsc3RhdFN5bmMoZmlsZW5hbWUpO1xuXG4gICAgaWYoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICByZXR1cm4gaGFzRmlsZVR5cGUoZmlsZW5hbWUsIGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dC5pbmNsdWRlcyhmaWxlRXh0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcGlsZSA9IGFzeW5jIChjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBmb3JtYXQgPSAnZXNtJyxcbiAgICBvdXRwdXRQYXRoLFxuICAgIHF1aWV0LFxuICAgIHJlbW92ZSxcbiAgICBzb3VyY2VQYXRoLFxuICAgIHdhdGNoXG4gIH0gPSBjbWQ7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSBjb21waWxpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHNvdXJjZUZ1bGxQYXRoLCBzd2M6IHN3Y0NvbmZpZywgdXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBvdXRwdXREaXI6IHN0cmluZyA9IG91dHB1dFBhdGggfHwgb3V0cHV0RnVsbFBhdGg7XG4gIGNvbnN0IHNvdXJjZURpcjogc3RyaW5nID0gc291cmNlUGF0aCA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGAuLyR7c291cmNlUGF0aH1gKSA6IHNvdXJjZUZ1bGxQYXRoIHx8ICcnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIGNoZWNrTGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgdHlwZXNjcmlwdFBhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCd0c2MnLCAndHlwZXNjcmlwdCcpO1xuXG4gICAgaWYoIXR5cGVzY3JpcHRQYXRoKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWdcbiAgICAgID8gWyctcCcsIGNvbmZpZywgJy0tZW1pdERlY2xhcmF0aW9uT25seScsICctLXNraXBMaWJDaGVjayddIC8vIFVzZXIgcHJvdmlkZWQgY3VzdG9tIGNvbmZpZywgYnV0IHN0aWxsIG9ubHkgZW1pdCBkZWNsYXJhdGlvbnNcbiAgICAgIDogKCgpID0+IHtcbiAgICAgICAgY29uc3QgZ2xvYk9wdGlvbnMgPSB7XG4gICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgY3dkOiBzb3VyY2VEaXIsXG4gICAgICAgICAgZG90OiBmYWxzZSxcbiAgICAgICAgICBub2RpcjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB0c0ZpbGVzID0gZ2xvYlN5bmMoJyoqLyEoKi5zcGVjfCoudGVzdHwqLmludGVncmF0aW9uKS50cycsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgdHN4RmlsZXMgPSBnbG9iU3luYygnKiovISgqLnNwZWN8Ki50ZXN0fCouaW50ZWdyYXRpb24pLnRzeCcsIGdsb2JPcHRpb25zKTtcbiAgICAgICAgY29uc3QgYWxsU291cmNlRmlsZXMgPSBbLi4udHNGaWxlcywgLi4udHN4RmlsZXNdO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uTGV4Q29uZmlnLmdldFR5cGVTY3JpcHREZWNsYXJhdGlvbkZsYWdzKCksXG4gICAgICAgICAgLi4uYWxsU291cmNlRmlsZXNcbiAgICAgICAgXTtcbiAgICAgIH0pKCk7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdHZW5lcmF0aW5nIFR5cGVTY3JpcHQgZGVjbGFyYXRpb25zLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXhlY2EodHlwZXNjcmlwdFBhdGgsIHR5cGVzY3JpcHRPcHRpb25zLCB7XG4gICAgICAgIGFsbDogdHJ1ZSxcbiAgICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICByZWplY3Q6IGZhbHNlXG4gICAgICB9KTtcblxuICAgICAgaWYocmVzdWx0LmV4aXRDb2RlICE9PSAwKSB7XG4gICAgICAgIGNvbnN0IGhhc0RlY2xhcmF0aW9ucyA9IHJlc3VsdC5hbGw/LmluY2x1ZGVzKCdXcml0aW5nJykgfHwgcmVzdWx0LmFsbD8uaW5jbHVkZXMoJ0RlY2xhcmF0aW9uJykgfHwgZmFsc2U7XG4gICAgICAgIGNvbnN0IGVycm9yT3V0cHV0ID0gcmVzdWx0LnN0ZGVyciB8fCByZXN1bHQuc3Rkb3V0IHx8IHJlc3VsdC5hbGwgfHwgJ1Vua25vd24gZXJyb3InO1xuXG4gICAgICAgIGlmKCFoYXNEZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgbG9nKGBcXG5FeGl0IENvZGU6ICR7cmVzdWx0LmV4aXRDb2RlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBsb2coYFxcblR5cGVTY3JpcHQgQ29tbWFuZDogJHt0eXBlc2NyaXB0UGF0aH0gJHt0eXBlc2NyaXB0T3B0aW9ucy5qb2luKCcgJyl9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGxvZyhgXFxuRXJyb3IgT3V0cHV0OlxcbiR7ZXJyb3JPdXRwdXR9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAgICAgY29uc3QgZXJyb3JMaW5lcyA9IGVycm9yT3V0cHV0LnNwbGl0KCdcXG4nKS5maWx0ZXIoKGxpbmUpID0+XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdlcnJvciBUUycpIHx8XG4gICAgICAgICAgICBsaW5lLmluY2x1ZGVzKCdFcnJvcjonKSB8fFxuICAgICAgICAgICAgbGluZS50cmltKCkuc3RhcnRzV2l0aCgnc3JjLycpIHx8XG4gICAgICAgICAgICBsaW5lLnRyaW0oKS5zdGFydHNXaXRoKCdUUycpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmKGVycm9yTGluZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbG9nKCdcXG5LZXkgRXJyb3JzOicsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgICAgICAgZXJyb3JMaW5lcy5zbGljZSgwLCAxMCkuZm9yRWFjaCgobGluZSkgPT4ge1xuICAgICAgICAgICAgICBsb2coYCAgJHtsaW5lfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZihlcnJvckxpbmVzLmxlbmd0aCA+IDEwKSB7XG4gICAgICAgICAgICAgIGxvZyhgICAuLi4gYW5kICR7ZXJyb3JMaW5lcy5sZW5ndGggLSAxMH0gbW9yZSBlcnJvcnNgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc3Bpbm5lci5mYWlsKCdUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gZmFpbGVkLicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBUeXBlU2NyaXB0IGRlY2xhcmF0aW9uIGdlbmVyYXRpb24gY29tcGxldGVkIHdpdGggZXJyb3JzYCwgJ3dhcm4nLCBxdWlldCk7XG5cbiAgICAgICAgICBpZighcXVpZXQgJiYgZXJyb3JPdXRwdXQpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuV2FybmluZ3M6XFxuJHtlcnJvck91dHB1dH1gLCAnd2FybicsIHF1aWV0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ1R5cGVTY3JpcHQgZGVjbGFyYXRpb25zIGdlbmVyYXRlZCAod2l0aCB3YXJuaW5ncykuJyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZCBUeXBlU2NyaXB0IGRlY2xhcmF0aW9ucyEnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFR5cGVTY3JpcHQgZGVjbGFyYXRpb24gZ2VuZXJhdGlvbiBleGNlcHRpb25gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBsb2coYFxcbkVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBpZihlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2s6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBnZW5lcmF0aW9uIGhhZCBpc3N1ZXMsIGNvbnRpbnVpbmcuLi4nKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnbG9iT3B0aW9ucyA9IHtcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICBjd2Q6IHNvdXJjZURpcixcbiAgICBkb3Q6IGZhbHNlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIG5vc29ydDogdHJ1ZVxuICB9O1xuICBjb25zdCB0c0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikudHMqJywgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqKi8hKCouc3BlY3wqLnRlc3R8Ki5pbnRlZ3JhdGlvbikuanMnLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IHNvdXJjZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi50c0ZpbGVzLCAuLi5qc0ZpbGVzXTtcblxuICBjb25zdCBjc3NGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuY3NzJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYoY3NzRmlsZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgcG9zdGNzc1BhdGg6IHN0cmluZyA9IHJlc29sdmVCaW5hcnlQYXRoKCdwb3N0Y3NzJywgJ3Bvc3Rjc3MtY2xpJyk7XG5cbiAgICBpZighcG9zdGNzc1BhdGgpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogUG9zdENTUyBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgbG9nKCdQbGVhc2UgcmVpbnN0YWxsIExleCBvciBjaGVjayB5b3VyIGluc3RhbGxhdGlvbi4nLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc3Rjc3NPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAgIGAke3NvdXJjZURpcn0vKiovKiouY3NzYCxcbiAgICAgICctLWJhc2UnLFxuICAgICAgc291cmNlRGlyLFxuICAgICAgJy0tZGlyJyxcbiAgICAgIG91dHB1dERpcixcbiAgICAgICctLWNvbmZpZycsXG4gICAgICBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vcG9zdGNzcy5jb25maWcuanMnKVxuICAgIF07XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EocG9zdGNzc1BhdGgsIHBvc3Rjc3NPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgZm9ybWF0dGVkICR7Y3NzRmlsZXMubGVuZ3RofSBjc3MgZmlsZXMhYCk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBnaWZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuZ2lmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGpwZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5qcGcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgcG5nRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnBuZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBzdmdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuc3ZnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGltYWdlRmlsZXM6IHN0cmluZ1tdID0gWy4uLmdpZkZpbGVzLCAuLi5qcGdGaWxlcywgLi4ucG5nRmlsZXMsIC4uLnN2Z0ZpbGVzXTtcblxuICBpZihpbWFnZUZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoaW1hZ2VGaWxlcywgJ2ltYWdlJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGltYWdlcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHR0ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy50dGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgb3RmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm90ZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCB3b2ZmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZjJGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcud29mZjInLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgZm9udEZpbGVzOiBzdHJpbmdbXSA9IFsuLi50dGZGaWxlcywgLi4ub3RmRmlsZXMsIC4uLndvZmZGaWxlcywgLi4ud29mZjJGaWxlc107XG5cbiAgaWYoZm9udEZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoZm9udEZpbGVzLCAnZm9udCcsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBmb250cyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG1kRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm1kJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYobWRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKG1kRmlsZXMsICdkb2N1bWVudHMnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgZG9jcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGlmKHNvdXJjZUZpbGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBXYXJuaW5nOiBObyBzb3VyY2UgZmlsZXMgZm91bmQgdG8gY29tcGlsZSBpbiAke3NvdXJjZURpcn1gLCAnd2FybicsIHF1aWV0KTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ05vIGZpbGVzIHRvIGNvbXBpbGUuJyk7XG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBTV0MuLi4nKTtcblxuICB0cnkge1xuICAgIGZvcihjb25zdCBmaWxlIG9mIHNvdXJjZUZpbGVzKSB7XG4gICAgICBjb25zdCBmaWxlUmVsYXRpdmVUb1NvdXJjZSA9IHBhdGhSZWxhdGl2ZShzb3VyY2VEaXIsIHBhdGhSZXNvbHZlKHNvdXJjZURpciwgZmlsZSkpO1xuICAgICAgY29uc3Qgc291cmNlUGF0aCA9IHBhdGhSZXNvbHZlKHNvdXJjZURpciwgZmlsZVJlbGF0aXZlVG9Tb3VyY2UpO1xuICAgICAgY29uc3Qgb3V0cHV0RmlsZSA9IGZpbGVSZWxhdGl2ZVRvU291cmNlLnJlcGxhY2UoL1xcLih0c3x0c3gpJC8sICcuanMnKTtcbiAgICAgIGNvbnN0IG91dHB1dFBhdGggPSBwYXRoUmVzb2x2ZShvdXRwdXREaXIsIG91dHB1dEZpbGUpO1xuICAgICAgY29uc3Qgb3V0cHV0RGlyUGF0aCA9IGRpcm5hbWUob3V0cHV0UGF0aCk7XG5cbiAgICAgIGlmKCFleGlzdHNTeW5jKG91dHB1dERpclBhdGgpKSB7XG4gICAgICAgIG1rZGlyU3luYyhvdXRwdXREaXJQYXRoLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSByZWFkRmlsZVN5bmMoc291cmNlUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IGlzVFNYID0gZmlsZS5lbmRzV2l0aCgnLnRzeCcpO1xuICAgICAgY29uc3Qgc3djT3B0aW9ucyA9IHtcbiAgICAgICAgZmlsZW5hbWU6IGZpbGUsXG4gICAgICAgIC4uLnN3Y0NvbmZpZyxcbiAgICAgICAganNjOiB7XG4gICAgICAgICAgLi4uc3djQ29uZmlnPy5qc2MsXG4gICAgICAgICAgcGFyc2VyOiB7XG4gICAgICAgICAgICBjb21tZW50czogZmFsc2UsXG4gICAgICAgICAgICBkZWNvcmF0b3JzOiBzd2NDb25maWc/LmpzYz8ucGFyc2VyPy5kZWNvcmF0b3JzID8/IHRydWUsXG4gICAgICAgICAgICBkeW5hbWljSW1wb3J0OiBzd2NDb25maWc/LmpzYz8ucGFyc2VyPy5keW5hbWljSW1wb3J0ID8/IHRydWUsXG4gICAgICAgICAgICBzeW50YXg6ICd0eXBlc2NyaXB0JyBhcyBjb25zdCxcbiAgICAgICAgICAgIHRzeDogaXNUU1hcbiAgICAgICAgICB9LFxuICAgICAgICAgIHByZXNlcnZlQWxsQ29tbWVudHM6IGZhbHNlLFxuICAgICAgICAgIHRhcmdldDogc3djQ29uZmlnPy5qc2M/LnRhcmdldCA/PyAnZXMyMDIwJyxcbiAgICAgICAgICB0cmFuc2Zvcm06IGlzVFNYID8ge1xuICAgICAgICAgICAgLi4uc3djQ29uZmlnPy5qc2M/LnRyYW5zZm9ybSxcbiAgICAgICAgICAgIHJlYWN0OiB7XG4gICAgICAgICAgICAgIHJ1bnRpbWU6ICdhdXRvbWF0aWMnIGFzIGNvbnN0LFxuICAgICAgICAgICAgICAuLi5zd2NDb25maWc/LmpzYz8udHJhbnNmb3JtPy5yZWFjdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gOiBzd2NDb25maWc/LmpzYz8udHJhbnNmb3JtXG4gICAgICAgIH0sXG4gICAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAgIG1vZHVsZToge1xuICAgICAgICAgIC4uLnN3Y0NvbmZpZz8ubW9kdWxlLFxuICAgICAgICAgIHR5cGU6IGZvcm1hdCA9PT0gJ2NqcycgPyAnY29tbW9uanMnIGFzIGNvbnN0IDogKHN3Y0NvbmZpZz8ubW9kdWxlPy50eXBlIGFzICdlczYnIHx8ICdlczYnKVxuICAgICAgICB9LFxuICAgICAgICBzb3VyY2VNYXBzOiBzd2NDb25maWc/LnNvdXJjZU1hcHMgfHwgJ2lubGluZSdcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybShzb3VyY2VDb2RlLCBzd2NPcHRpb25zKTtcblxuICAgICAgd3JpdGVGaWxlU3luYyhvdXRwdXRQYXRoLCByZXN1bHQuY29kZSk7XG4gICAgfVxuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFNXQyBjb21waWxhdGlvbiBmYWlsZWRgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgbG9nKGBcXG5FcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGlmKGVycm9yLnN0YWNrKSB7XG4gICAgICAgIGxvZyhgXFxuU3RhY2sgVHJhY2U6XFxuJHtlcnJvci5zdGFja31gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGlmKCdmaWxlbmFtZScgaW4gZXJyb3IgfHwgJ2ZpbGUnIGluIGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuRmlsZTogJHsoZXJyb3IgYXMgYW55KS5maWxlbmFtZSB8fCAoZXJyb3IgYXMgYW55KS5maWxlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1xcbkZ1bGwgRXJyb3IgRGV0YWlsczonLCBlcnJvcik7XG4gICAgfVxuXG4gICAgc3Bpbm5lci5mYWlsKCdDb2RlIGNvbXBpbGluZyBmYWlsZWQuJyk7XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY29weUNvbmZpZ3VyZWRGaWxlcyhzcGlubmVyLCBMZXhDb25maWcuY29uZmlnLCBxdWlldCk7XG4gIH0gY2F0Y2goY29weUVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gY29weSBjb25maWd1cmVkIGZpbGVzOiAke2NvcHlFcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlcy4nKTtcblxuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTsiXSwibmFtZXMiOlsidHJhbnNmb3JtIiwiZXhlY2EiLCJleGlzdHNTeW5jIiwibHN0YXRTeW5jIiwicmVhZGRpclN5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwibWtkaXJTeW5jIiwic3luYyIsImdsb2JTeW5jIiwiZXh0bmFtZSIsInBhdGhFeHRuYW1lIiwiam9pbiIsInBhdGhKb2luIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJkaXJuYW1lIiwiTGV4Q29uZmlnIiwiY2hlY2tMaW5rZWRNb2R1bGVzIiwiY29weUNvbmZpZ3VyZWRGaWxlcyIsImNvcHlGaWxlcyIsImNyZWF0ZVNwaW5uZXIiLCJnZXRGaWxlc0J5RXh0IiwicmVtb3ZlRmlsZXMiLCJnZXREaXJOYW1lIiwicmVzb2x2ZUJpbmFyeVBhdGgiLCJsb2ciLCJoYXNGaWxlVHlwZSIsInN0YXJ0UGF0aCIsImV4dCIsImZpbGVzIiwic29tZSIsImZpbGUiLCJmaWxlbmFtZSIsImZpbGVFeHQiLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJpbmNsdWRlcyIsImNvbXBpbGUiLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJjb25maWciLCJmb3JtYXQiLCJvdXRwdXRQYXRoIiwicXVpZXQiLCJyZW1vdmUiLCJzb3VyY2VQYXRoIiwid2F0Y2giLCJzcGlubmVyIiwicGFyc2VDb25maWciLCJvdXRwdXRGdWxsUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwic3djIiwic3djQ29uZmlnIiwidXNlVHlwZXNjcmlwdCIsIm91dHB1dERpciIsInNvdXJjZURpciIsInByb2Nlc3MiLCJjd2QiLCJkaXJOYW1lIiwidHlwZXNjcmlwdFBhdGgiLCJ0eXBlc2NyaXB0T3B0aW9ucyIsImdsb2JPcHRpb25zIiwiYWJzb2x1dGUiLCJkb3QiLCJub2RpciIsInRzRmlsZXMiLCJ0c3hGaWxlcyIsImFsbFNvdXJjZUZpbGVzIiwiZ2V0VHlwZVNjcmlwdERlY2xhcmF0aW9uRmxhZ3MiLCJzdGFydCIsInJlc3VsdCIsImFsbCIsImVuY29kaW5nIiwicmVqZWN0IiwiZXhpdENvZGUiLCJoYXNEZWNsYXJhdGlvbnMiLCJlcnJvck91dHB1dCIsInN0ZGVyciIsInN0ZG91dCIsImVycm9yTGluZXMiLCJzcGxpdCIsImZpbHRlciIsImxpbmUiLCJ0cmltIiwic3RhcnRzV2l0aCIsImxlbmd0aCIsInNsaWNlIiwiZm9yRWFjaCIsImZhaWwiLCJzdWNjZWVkIiwiZXJyb3IiLCJtZXNzYWdlIiwiRXJyb3IiLCJzdGFjayIsIm5vc29ydCIsImpzRmlsZXMiLCJzb3VyY2VGaWxlcyIsImNzc0ZpbGVzIiwicG9zdGNzc1BhdGgiLCJwb3N0Y3NzT3B0aW9ucyIsImdpZkZpbGVzIiwianBnRmlsZXMiLCJwbmdGaWxlcyIsInN2Z0ZpbGVzIiwiaW1hZ2VGaWxlcyIsInR0ZkZpbGVzIiwib3RmRmlsZXMiLCJ3b2ZmRmlsZXMiLCJ3b2ZmMkZpbGVzIiwiZm9udEZpbGVzIiwibWRGaWxlcyIsImZpbGVSZWxhdGl2ZVRvU291cmNlIiwib3V0cHV0RmlsZSIsInJlcGxhY2UiLCJvdXRwdXREaXJQYXRoIiwicmVjdXJzaXZlIiwic291cmNlQ29kZSIsImlzVFNYIiwiZW5kc1dpdGgiLCJzd2NPcHRpb25zIiwianNjIiwicGFyc2VyIiwiY29tbWVudHMiLCJkZWNvcmF0b3JzIiwiZHluYW1pY0ltcG9ydCIsInN5bnRheCIsInRzeCIsInByZXNlcnZlQWxsQ29tbWVudHMiLCJ0YXJnZXQiLCJyZWFjdCIsInJ1bnRpbWUiLCJtaW5pZnkiLCJtb2R1bGUiLCJ0eXBlIiwic291cmNlTWFwcyIsImNvZGUiLCJjb25zb2xlIiwiY29weUVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxT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
@@ -44,4 +44,4 @@ export const config = async (type, cmd, callback = ()=>({}))=>{
44
44
  return Promise.resolve(0);
45
45
  };
46
46
 
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENvbmZpZ09wdGlvbnMsIGNhbGxiYWNrOiBDb25maWdDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBqc29uLCBxdWlldH0gPSBjbWQ7XG4gIGNvbnN0IHZhbGlkVHlwZXM6IHN0cmluZ1tdID0gWydhcHAnLCAnamVzdCcsICd3ZWJwYWNrJ107XG5cbiAgaWYoIXZhbGlkVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IE9wdGlvbiBmb3IgJHt0eXBlfSBub3QgZm91bmQuIENvbmZpZ3VyYXRpb25zIG9ubHkgYXZhaWxhYmxlIGZvciBhcHAsIGplc3QsIGFuZCB3ZWJwYWNrLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICB9XG5cbiAgbG9nKGAke2NsaU5hbWV9IGdlbmVyYXRpbmcgY29uZmlndXJhdGlvbiBmb3IgJHtzdGFydENhc2UodHlwZSl9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IGNvbmZpZ09wdGlvbnM7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdhcHAnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IExleENvbmZpZy5jb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdqZXN0JzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uLy4uL2plc3QuY29uZmlnLm1qcycpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2VicGFjayc6XG4gICAgICBjb25maWdPcHRpb25zID0gaW1wb3J0KCcuLi8uLi8uLi93ZWJwYWNrLmNvbmZpZy5qcycpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCBqc29uT3V0cHV0OiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb25maWdPcHRpb25zLCBudWxsLCAyKTtcblxuICBpZihqc29uKSB7XG4gICAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gICAgc3Bpbm5lci5zdGFydCgnQ3JlYXRpbmcgSlNPTiBvdXRwdXQuLi4nKTtcblxuICAgIHdyaXRlRmlsZVN5bmMoanNvbiwganNvbk91dHB1dCk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBzYXZlZCBKU09OIG91dHB1dCB0byAke3BhdGhSZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBqc29uKX1gKTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDApO1xufTsiXSwibmFtZXMiOlsid3JpdGVGaWxlU3luYyIsInN0YXJ0Q2FzZSIsInJlbGF0aXZlIiwicGF0aFJlbGF0aXZlIiwiTGV4Q29uZmlnIiwiY3JlYXRlU3Bpbm5lciIsImxvZyIsImNvbmZpZyIsInR5cGUiLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJqc29uIiwicXVpZXQiLCJ2YWxpZFR5cGVzIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhcnNlQ29uZmlnIiwiY29uZmlnT3B0aW9ucyIsImpzb25PdXRwdXQiLCJKU09OIiwic3RyaW5naWZ5Iiwic3Bpbm5lciIsInN0YXJ0Iiwic3VjY2VlZCIsInByb2Nlc3MiLCJjd2QiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLGFBQWEsUUFBTyxLQUFLO0FBQ2pDLE9BQU9DLGVBQWUsc0JBQXNCO0FBQzVDLFNBQVFDLFlBQVlDLFlBQVksUUFBTyxPQUFPO0FBRTlDLFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxRQUFPLHFCQUFxQjtBQUNqRCxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBVXZDLE9BQU8sTUFBTUMsU0FBUyxPQUFPQyxNQUFjQyxLQUFvQkMsV0FBMkIsSUFBTyxDQUFBLENBQUMsQ0FBQSxDQUFFO0lBQ2xHLE1BQU0sRUFBQ0MsVUFBVSxLQUFLLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFDLEdBQUdKO0lBQ3ZDLE1BQU1LLGFBQXVCO1FBQUM7UUFBTztRQUFRO0tBQVU7SUFFdkQsSUFBRyxDQUFDQSxXQUFXQyxRQUFRLENBQUNQLE9BQU87UUFDN0JGLElBQUksQ0FBQyxFQUFFLEVBQUVLLFFBQVEsbUJBQW1CLEVBQUVILEtBQUsscUVBQXFFLENBQUMsRUFBRSxTQUFTSztRQUM1SEgsU0FBUztRQUNULE9BQU9NLFFBQVFDLE9BQU8sQ0FBQztJQUN6QjtJQUVBWCxJQUFJLEdBQUdLLFFBQVEsOEJBQThCLEVBQUVWLFVBQVVPLE1BQU0sR0FBRyxDQUFDLEVBQUUsUUFBUUs7SUFFN0UsTUFBTVQsVUFBVWMsV0FBVyxDQUFDVDtJQUU1QixJQUFJVTtJQUVKLE9BQU9YO1FBQ0wsS0FBSztZQUNIVyxnQkFBZ0JmLFVBQVVHLE1BQU07WUFDaEM7UUFDRixLQUFLO1lBQ0hZLGdCQUFnQixNQUFNLENBQUM7WUFDdkI7UUFDRixLQUFLO1lBQ0hBLGdCQUFnQixNQUFNLENBQUM7WUFDdkI7SUFDSjtJQUVBLE1BQU1DLGFBQXFCQyxLQUFLQyxTQUFTLENBQUNILGVBQWUsTUFBTTtJQUUvRCxJQUFHUCxNQUFNO1FBQ1AsTUFBTVcsVUFBVWxCLGNBQWNRO1FBRTlCVSxRQUFRQyxLQUFLLENBQUM7UUFFZHhCLGNBQWNZLE1BQU1RO1FBRXBCRyxRQUFRRSxPQUFPLENBQUMsQ0FBQyxrQ0FBa0MsRUFBRXRCLGFBQWF1QixRQUFRQyxHQUFHLElBQUlmLE9BQU87SUFDMUY7SUFFQUYsU0FBUztJQUNULE9BQU9NLFFBQVFDLE9BQU8sQ0FBQztBQUN6QixFQUFFIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGFzeW5jIChcbiAgdHlwZTogc3RyaW5nLFxuICBjbWQ6IENvbmZpZ09wdGlvbnMsXG4gIGNhbGxiYWNrOiBDb25maWdDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGpzb24sIHF1aWV0fSA9IGNtZDtcbiAgY29uc3QgdmFsaWRUeXBlczogc3RyaW5nW10gPSBbJ2FwcCcsICdqZXN0JywgJ3dlYnBhY2snXTtcblxuICBpZighdmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogT3B0aW9uIGZvciAke3R5cGV9IG5vdCBmb3VuZC4gQ29uZmlndXJhdGlvbnMgb25seSBhdmFpbGFibGUgZm9yIGFwcCwgamVzdCwgYW5kIHdlYnBhY2suYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gIH1cblxuICBsb2coYCR7Y2xpTmFtZX0gZ2VuZXJhdGluZyBjb25maWd1cmF0aW9uIGZvciAke3N0YXJ0Q2FzZSh0eXBlKX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBsZXQgY29uZmlnT3B0aW9ucztcblxuICBzd2l0Y2godHlwZSkge1xuICAgIGNhc2UgJ2FwcCc6XG4gICAgICBjb25maWdPcHRpb25zID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2plc3QnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IGltcG9ydCgnLi4vLi4vLi4vamVzdC5jb25maWcubWpzJyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd3ZWJwYWNrJzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uLy4uL3dlYnBhY2suY29uZmlnLmpzJyk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGNvbnN0IGpzb25PdXRwdXQ6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZ09wdGlvbnMsIG51bGwsIDIpO1xuXG4gIGlmKGpzb24pIHtcbiAgICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgICBzcGlubmVyLnN0YXJ0KCdDcmVhdGluZyBKU09OIG91dHB1dC4uLicpO1xuXG4gICAgd3JpdGVGaWxlU3luYyhqc29uLCBqc29uT3V0cHV0KTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IHNhdmVkIEpTT04gb3V0cHV0IHRvICR7cGF0aFJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGpzb24pfWApO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59OyJdLCJuYW1lcyI6WyJ3cml0ZUZpbGVTeW5jIiwic3RhcnRDYXNlIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJMZXhDb25maWciLCJjcmVhdGVTcGlubmVyIiwibG9nIiwiY29uZmlnIiwidHlwZSIsImNtZCIsImNhbGxiYWNrIiwiY2xpTmFtZSIsImpzb24iLCJxdWlldCIsInZhbGlkVHlwZXMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicGFyc2VDb25maWciLCJjb25maWdPcHRpb25zIiwianNvbk91dHB1dCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzcGlubmVyIiwic3RhcnQiLCJzdWNjZWVkIiwicHJvY2VzcyIsImN3ZCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsYUFBYSxRQUFPLEtBQUs7QUFDakMsT0FBT0MsZUFBZSxzQkFBc0I7QUFDNUMsU0FBUUMsWUFBWUMsWUFBWSxRQUFPLE9BQU87QUFFOUMsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyxhQUFhLFFBQU8scUJBQXFCO0FBQ2pELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFVdkMsT0FBTyxNQUFNQyxTQUFTLE9BQ3BCQyxNQUNBQyxLQUNBQyxXQUEyQixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFFckMsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUMsR0FBR0o7SUFDdkMsTUFBTUssYUFBdUI7UUFBQztRQUFPO1FBQVE7S0FBVTtJQUV2RCxJQUFHLENBQUNBLFdBQVdDLFFBQVEsQ0FBQ1AsT0FBTztRQUM3QkYsSUFBSSxDQUFDLEVBQUUsRUFBRUssUUFBUSxtQkFBbUIsRUFBRUgsS0FBSyxxRUFBcUUsQ0FBQyxFQUFFLFNBQVNLO1FBQzVISCxTQUFTO1FBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0lBQ3pCO0lBRUFYLElBQUksR0FBR0ssUUFBUSw4QkFBOEIsRUFBRVYsVUFBVU8sTUFBTSxHQUFHLENBQUMsRUFBRSxRQUFRSztJQUU3RSxNQUFNVCxVQUFVYyxXQUFXLENBQUNUO0lBRTVCLElBQUlVO0lBRUosT0FBT1g7UUFDTCxLQUFLO1lBQ0hXLGdCQUFnQmYsVUFBVUcsTUFBTTtZQUNoQztRQUNGLEtBQUs7WUFDSFksZ0JBQWdCLE1BQU0sQ0FBQztZQUN2QjtRQUNGLEtBQUs7WUFDSEEsZ0JBQWdCLE1BQU0sQ0FBQztZQUN2QjtJQUNKO0lBRUEsTUFBTUMsYUFBcUJDLEtBQUtDLFNBQVMsQ0FBQ0gsZUFBZSxNQUFNO0lBRS9ELElBQUdQLE1BQU07UUFDUCxNQUFNVyxVQUFVbEIsY0FBY1E7UUFFOUJVLFFBQVFDLEtBQUssQ0FBQztRQUVkeEIsY0FBY1ksTUFBTVE7UUFFcEJHLFFBQVFFLE9BQU8sQ0FBQyxDQUFDLGtDQUFrQyxFQUFFdEIsYUFBYXVCLFFBQVFDLEdBQUcsSUFBSWYsT0FBTztJQUMxRjtJQUVBRixTQUFTO0lBQ1QsT0FBT00sUUFBUUMsT0FBTyxDQUFDO0FBQ3pCLEVBQUUifQ==
@@ -36,4 +36,4 @@ export const copy = (from, to, cmd, callback = ()=>({}))=>{
36
36
  return Promise.resolve(0);
37
37
  };
38
38
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb3B5L2NvcHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jfSBmcm9tICdmcyc7XG5cbmltcG9ydCB7Y29weUZpbGVTeW5jLCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luY30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDb3B5Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjb3B5ID0gKFxuICBmcm9tOiBzdHJpbmcsXG4gIHRvOiBzdHJpbmcsXG4gIGNtZDogQ29weU9wdGlvbnMsXG4gIGNhbGxiYWNrOiBDb3B5Q2FsbGJhY2sgPSAoKSA9PiAoe30pXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBxdWlldH0gPSBjbWQ7XG5cbiAgLy8gRGlzcGxheSBtZXNzYWdlXG4gIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGlmKCFleGlzdHNTeW5jKGZyb20pKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBQYXRoIG5vdCBmb3VuZCwgXCIke2Zyb219XCIuLi5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhmcm9tKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZGlyZWN0b3J5XG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY29weSBcIiR7ZnJvbX1cIi4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZmlsZVxuICAgICAgY29weUZpbGVTeW5jKGZyb20sIHRvKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjb3B5IFwiJHtmcm9tfVwiICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59OyJdLCJuYW1lcyI6WyJleGlzdHNTeW5jIiwibHN0YXRTeW5jIiwiY29weUZpbGVTeW5jIiwiY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMiLCJsb2ciLCJjb3B5IiwiZnJvbSIsInRvIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwicXVpZXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImlzRGlyZWN0b3J5IiwiZXJyb3IiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLEVBQUVDLFNBQVMsUUFBTyxLQUFLO0FBRXpDLFNBQVFDLFlBQVksRUFBRUMsdUJBQXVCLFFBQU8scUJBQXFCO0FBQ3pFLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFTdkMsT0FBTyxNQUFNQyxPQUFPLENBQ2xCQyxNQUNBQyxJQUNBQyxLQUNBQyxXQUF5QixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFFbkMsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsS0FBSyxFQUFDLEdBQUdIO0lBRWpDLGtCQUFrQjtJQUNsQkosSUFBSSxHQUFHTSxRQUFRLFVBQVUsRUFBRUgsR0FBRyxJQUFJLENBQUMsRUFBRSxRQUFRSTtJQUU3QyxJQUFHLENBQUNYLFdBQVdNLE9BQU87UUFDcEJGLElBQUksQ0FBQyxFQUFFLEVBQUVNLFFBQVEseUJBQXlCLEVBQUVKLEtBQUssSUFBSSxDQUFDLEVBQUUsU0FBU0s7UUFDakVGLFNBQVM7UUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7SUFDekI7SUFFQSxJQUFHWixVQUFVSyxNQUFNUSxXQUFXLElBQUk7UUFDaEMsSUFBSTtZQUNGLGlCQUFpQjtZQUNqQlgsd0JBQXdCRyxNQUFNQztRQUNoQyxFQUFFLE9BQU1RLE9BQU87WUFDYlgsSUFBSSxDQUFDLEVBQUUsRUFBRU0sUUFBUSxxQkFBcUIsRUFBRUosS0FBSyxHQUFHLEVBQUVTLE1BQU1DLE9BQU8sRUFBRSxFQUFFLFNBQVNMO1lBQzVFRixTQUFTO1lBQ1QsT0FBT0csUUFBUUMsT0FBTyxDQUFDO1FBQ3pCO0lBQ0YsT0FBTztRQUNMLElBQUk7WUFDRixZQUFZO1lBQ1pYLGFBQWFJLE1BQU1DO1FBQ3JCLEVBQUUsT0FBTVEsT0FBTztZQUNiWCxJQUFJLENBQUMsRUFBRSxFQUFFTSxRQUFRLHFCQUFxQixFQUFFSixLQUFLLEVBQUUsRUFBRVMsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU0w7WUFDM0VGLFNBQVM7WUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7UUFDekI7SUFDRjtJQUVBSixTQUFTO0lBQ1QsT0FBT0csUUFBUUMsT0FBTyxDQUFDO0FBQ3pCLEVBQUUifQ==
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb3B5L2NvcHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jfSBmcm9tICdmcyc7XG5cbmltcG9ydCB7Y29weUZpbGVTeW5jLCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luY30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDb3B5Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNvcHkgPSAoXG4gIGZyb206IHN0cmluZyxcbiAgdG86IHN0cmluZyxcbiAgY21kOiBDb3B5T3B0aW9ucyxcbiAgY2FsbGJhY2s6IENvcHlDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIHF1aWV0fSA9IGNtZDtcblxuICAvLyBEaXNwbGF5IG1lc3NhZ2VcbiAgbG9nKGAke2NsaU5hbWV9IGNvcHlpbmcgXCIke3RvfVwiLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgaWYoIWV4aXN0c1N5bmMoZnJvbSkpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFBhdGggbm90IGZvdW5kLCBcIiR7ZnJvbX1cIi4uLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICB9XG5cbiAgaWYobHN0YXRTeW5jKGZyb20pLmlzRGlyZWN0b3J5KCkpIHtcbiAgICB0cnkge1xuICAgICAgLy8gQ29weSBkaXJlY3RvcnlcbiAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKGZyb20sIHRvKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjb3B5IFwiJHtmcm9tfVwiLiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0cnkge1xuICAgICAgLy8gQ29weSBmaWxlXG4gICAgICBjb3B5RmlsZVN5bmMoZnJvbSwgdG8pO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNvcHkgXCIke2Zyb219XCIgJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjaygwKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgwKTtcbn07Il0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJsc3RhdFN5bmMiLCJjb3B5RmlsZVN5bmMiLCJjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyIsImxvZyIsImNvcHkiLCJmcm9tIiwidG8iLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJxdWlldCIsIlByb21pc2UiLCJyZXNvbHZlIiwiaXNEaXJlY3RvcnkiLCJlcnJvciIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsU0FBUyxRQUFPLEtBQUs7QUFFekMsU0FBUUMsWUFBWSxFQUFFQyx1QkFBdUIsUUFBTyxxQkFBcUI7QUFDekUsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQVN2QyxPQUFPLE1BQU1DLE9BQU8sQ0FDbEJDLE1BQ0FDLElBQ0FDLEtBQ0FDLFdBQXlCLElBQU8sQ0FBQSxDQUFDLENBQUEsQ0FBRTtJQUVuQyxNQUFNLEVBQUNDLFVBQVUsS0FBSyxFQUFFQyxLQUFLLEVBQUMsR0FBR0g7SUFFakMsa0JBQWtCO0lBQ2xCSixJQUFJLEdBQUdNLFFBQVEsVUFBVSxFQUFFSCxHQUFHLElBQUksQ0FBQyxFQUFFLFFBQVFJO0lBRTdDLElBQUcsQ0FBQ1gsV0FBV00sT0FBTztRQUNwQkYsSUFBSSxDQUFDLEVBQUUsRUFBRU0sUUFBUSx5QkFBeUIsRUFBRUosS0FBSyxJQUFJLENBQUMsRUFBRSxTQUFTSztRQUNqRUYsU0FBUztRQUNULE9BQU9HLFFBQVFDLE9BQU8sQ0FBQztJQUN6QjtJQUVBLElBQUdaLFVBQVVLLE1BQU1RLFdBQVcsSUFBSTtRQUNoQyxJQUFJO1lBQ0YsaUJBQWlCO1lBQ2pCWCx3QkFBd0JHLE1BQU1DO1FBQ2hDLEVBQUUsT0FBTVEsT0FBTztZQUNiWCxJQUFJLENBQUMsRUFBRSxFQUFFTSxRQUFRLHFCQUFxQixFQUFFSixLQUFLLEdBQUcsRUFBRVMsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU0w7WUFDNUVGLFNBQVM7WUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7UUFDekI7SUFDRixPQUFPO1FBQ0wsSUFBSTtZQUNGLFlBQVk7WUFDWlgsYUFBYUksTUFBTUM7UUFDckIsRUFBRSxPQUFNUSxPQUFPO1lBQ2JYLElBQUksQ0FBQyxFQUFFLEVBQUVNLFFBQVEscUJBQXFCLEVBQUVKLEtBQUssRUFBRSxFQUFFUyxNQUFNQyxPQUFPLEVBQUUsRUFBRSxTQUFTTDtZQUMzRUYsU0FBUztZQUNULE9BQU9HLFFBQVFDLE9BQU8sQ0FBQztRQUN6QjtJQUNGO0lBRUFKLFNBQVM7SUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7QUFDekIsRUFBRSJ9
@@ -200,4 +200,4 @@ export const create = async (type, cmd, callback = ()=>({}))=>{
200
200
  return 0;
201
201
  };
202
202
 
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUvY3JlYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENyZWF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBvdXRwdXRGaWxlID0gJycsIG91dHB1dE5hbWUgPSAnJywgcXVpZXR9ID0gY21kO1xuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG4gIGxvZyhgJHtjbGlOYW1lfSBjcmVhdGluZyAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQsIGZhbHNlKTtcbiAgY29uc3Qge291dHB1dFBhdGggPSAnJywgc291cmNlUGF0aCA9ICcnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0c2NvbmZpZy5qc29uIGV4aXN0c1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGNvbnN0IHtjb25maWd9ID0gTGV4Q29uZmlnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnY2hhbmdlbG9nJzoge1xuICAgICAgY29uc3Qgc3RhdHVzQ2hhbmdlbG9nOiBudW1iZXIgPSBhd2FpdCBjcmVhdGVDaGFuZ2Vsb2coe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSwgcXVpZXR9KTtcbiAgICAgIGNhbGxiYWNrKHN0YXR1c0NoYW5nZWxvZyk7XG4gICAgICByZXR1cm4gc3RhdHVzQ2hhbmdlbG9nO1xuICAgIH1cbiAgICBjYXNlICdzdG9yZSc6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBzdG9yZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31TdG9yZWA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoc3RvcmVQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHN0b3JlIGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlU3RvcmUnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVN0b3JlYCwgc3RvcmVQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgc3RvcmVUZXN0UGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZVRlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlVGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHN0b3JlRmlsZVBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZSR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZUZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlRmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHtzdG9yZVBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd0c2NvbmZpZyc6IHtcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZmlsZVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJ3RzY29uZmlnLmpzb24nLCB0cnVlKTtcblxuICAgICAgLy8gR2V0IHRzY29uZmlnIHRlbXBsYXRlXG4gICAgICBjb25zdCB0ZW1wbGF0ZVBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLi90c2NvbmZpZy50ZW1wbGF0ZS5qc29uJyk7XG4gICAgICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKHRlbXBsYXRlUGF0aCwgJ3V0ZjgnKTtcblxuICAgICAgLy8gVXBkYXRlIExleCB0c2NvbmZpZyB0ZW1wbGF0ZSB3aXRoIHNvdXJjZSBhbmQgb3V0cHV0IGRpcmVjdG9yaWVzXG4gICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC8uXFwvc3JjL2csIHNvdXJjZVBhdGgpO1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL2xpYi9nLCBvdXRwdXRQYXRoKTtcblxuICAgICAgLy8gU2F2ZSBuZXcgdHNjb25maWcgdG8gYXBwXG4gICAgICBjb25zdCBkZXN0UGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi90c2NvbmZpZy5qc29uJyk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGRlc3RQYXRoLCBkYXRhLCAndXRmOCcpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3ZpZXcnOiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRGaWxlbmFtZXMoe1xuICAgICAgICBjbGlOYW1lLFxuICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICBxdWlldCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgfSk7XG5cbiAgICAgIGlmKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHtuYW1lQ2FwcywgdGVtcGxhdGVQYXRoLCB0ZW1wbGF0ZVJlYWN0fSA9IHJlc3VsdDtcbiAgICAgIGNvbnN0IHZpZXdQYXRoOiBzdHJpbmcgPSBgJHtjd2R9LyR7bmFtZUNhcHN9Vmlld2A7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmKCFleGlzdHNTeW5jKHZpZXdQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHZpZXcgZmlsZXNcbiAgICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsICcuLy5TYW1wbGVWaWV3JyksIGN3ZCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgZGlyZWN0b3J5XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtjd2R9Ly5TYW1wbGVWaWV3YCwgdmlld1BhdGgpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIENTU1xuICAgICAgICAgIGNvbnN0IHZpZXdTdHlsZVBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke291dHB1dE5hbWV9Vmlldy5jc3NgO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L3NhbXBsZVZpZXcuY3NzYCwgdmlld1N0eWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdTdHlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgdmlld1Rlc3RQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9TYW1wbGVWaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9LnR4dGAsIHZpZXdUZXN0UGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdUZXN0UGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHNvdXJjZSBmaWxlXG4gICAgICAgICAgY29uc3Qgdmlld0ZpbGVQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3JHt0ZW1wbGF0ZVJlYWN0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vU2FtcGxlVmlldyR7dGVtcGxhdGVSZWFjdH0udHh0YCwgdmlld0ZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld0ZpbGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiBEaXJlY3RvcnksICR7dmlld1BhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2c2NvZGUnOiB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy52c2NvZGUnLCB0cnVlKTtcblxuICAgICAgLy8gQ29weSB2c2NvZGUgY29uZmlndXJhdGlvblxuICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uLy52c2NvZGUnKSwgY3dkKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICdkYXRhbGF5ZXInOiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRGaWxlbmFtZXMoe1xuICAgICAgICAgIGNsaU5hbWUsXG4gICAgICAgICAgbmFtZTogb3V0cHV0TmFtZSxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVzZVR5cGVzY3JpcHRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYoIXJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge25hbWVDYXBzLCB0ZW1wbGF0ZUV4dCwgdGVtcGxhdGVQYXRofSA9IHJlc3VsdDtcbiAgICAgICAgY29uc3QgZGF0YUxheWVyUGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfURhdGFMYXllcmA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoZGF0YUxheWVyUGF0aCkpIHtcbiAgICAgICAgICAvLyBDcmVhdGUgZGF0YSBsYXllciBkaXJlY3RvcnlcbiAgICAgICAgICBjb25zdCBmcyA9IGF3YWl0IGltcG9ydCgnZnMnKTtcbiAgICAgICAgICBmcy5ta2RpclN5bmMoZGF0YUxheWVyUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgICAgICAgLy8gQ29weSBhbmQgcmVuYW1lIG1haW4gZGF0YSBsYXllciBmaWxlXG4gICAgICAgICAgY29uc3Qgc291cmNlRmlsZSA9IHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgYC4vRGF0YUxheWVyJHt0ZW1wbGF0ZUV4dH0udHh0YCk7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0RmlsZSA9IGAke2RhdGFMYXllclBhdGh9LyR7bmFtZUNhcHN9RGF0YUxheWVyJHt0ZW1wbGF0ZUV4dH1gO1xuXG4gICAgICAgICAgaWYoZXhpc3RzU3luYyhzb3VyY2VGaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhzb3VyY2VGaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL0RhdGFMYXllci9nLCBuYW1lQ2Fwcyk7XG4gICAgICAgICAgICB3cml0ZUZpbGVTeW5jKHRhcmdldEZpbGUsIHVwZGF0ZWRDb250ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb3B5IGFuZCByZW5hbWUgdGVzdCBmaWxlXG4gICAgICAgICAgY29uc3Qgc291cmNlVGVzdEZpbGUgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsIGAuL0RhdGFMYXllci50ZXN0JHt0ZW1wbGF0ZUV4dH0udHh0YCk7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0VGVzdEZpbGUgPSBgJHtkYXRhTGF5ZXJQYXRofS8ke25hbWVDYXBzfURhdGFMYXllci50ZXN0JHt0ZW1wbGF0ZUV4dH1gO1xuXG4gICAgICAgICAgaWYoZXhpc3RzU3luYyhzb3VyY2VUZXN0RmlsZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RDb250ZW50ID0gcmVhZEZpbGVTeW5jKHNvdXJjZVRlc3RGaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RDb250ZW50ID0gdGVzdENvbnRlbnQucmVwbGFjZSgvRGF0YUxheWVyL2csIG5hbWVDYXBzKTtcbiAgICAgICAgICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0VGVzdEZpbGUsIHVwZGF0ZWRUZXN0Q29udGVudCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IFN1Y2Nlc3M6IENyZWF0ZWQgJHtuYW1lQ2Fwc31EYXRhTGF5ZXIgd2l0aCB0ZXN0IGZpbGVzLmAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke2RhdGFMYXllclBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJyZW5hbWVTeW5jIiwid3JpdGVGaWxlU3luYyIsInJlc29sdmUiLCJwYXRoUmVzb2x2ZSIsImNyZWF0ZUNoYW5nZWxvZyIsIkxleENvbmZpZyIsImNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jIiwiZ2V0RmlsZW5hbWVzIiwicmVtb3ZlRmlsZXMiLCJ1cGRhdGVUZW1wbGF0ZU5hbWUiLCJnZXREaXJOYW1lIiwibG9nIiwiY3JlYXRlIiwidHlwZSIsImNtZCIsImNhbGxiYWNrIiwiY2xpTmFtZSIsIm91dHB1dEZpbGUiLCJvdXRwdXROYW1lIiwicXVpZXQiLCJjd2QiLCJwcm9jZXNzIiwicGFyc2VDb25maWciLCJvdXRwdXRQYXRoIiwic291cmNlUGF0aCIsInVzZVR5cGVzY3JpcHQiLCJjb25maWciLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJkaXJOYW1lIiwic3RhdHVzQ2hhbmdlbG9nIiwicmVzdWx0IiwibmFtZSIsIm5hbWVDYXBzIiwidGVtcGxhdGVFeHQiLCJ0ZW1wbGF0ZVBhdGgiLCJzdG9yZVBhdGgiLCJzdG9yZVRlc3RQYXRoIiwic3RvcmVGaWxlUGF0aCIsImVycm9yIiwibWVzc2FnZSIsImRhdGEiLCJyZXBsYWNlIiwiZGVzdFBhdGgiLCJ0ZW1wbGF0ZVJlYWN0Iiwidmlld1BhdGgiLCJ2aWV3U3R5bGVQYXRoIiwidmlld1Rlc3RQYXRoIiwidmlld0ZpbGVQYXRoIiwiZGF0YUxheWVyUGF0aCIsImZzIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwic291cmNlRmlsZSIsInRhcmdldEZpbGUiLCJjb250ZW50IiwidXBkYXRlZENvbnRlbnQiLCJzb3VyY2VUZXN0RmlsZSIsInRhcmdldFRlc3RGaWxlIiwidGVzdENvbnRlbnQiLCJ1cGRhdGVkVGVzdENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxVQUFVLEVBQUVDLGFBQWEsUUFBTyxLQUFLO0FBQ3ZFLFNBQVFDLFdBQVdDLFdBQVcsUUFBTyxPQUFPO0FBRTVDLFNBQVFDLGVBQWUsUUFBTyw0QkFBNEI7QUFDMUQsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyx1QkFBdUIsRUFBRUMsWUFBWSxFQUFFQyxXQUFXLEVBQUVDLGtCQUFrQixRQUFPLHFCQUFxQjtBQUMxRyxTQUFRQyxVQUFVLFFBQU8sc0JBQXNCO0FBQy9DLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFXdkMsT0FBTyxNQUFNQyxTQUFTLE9BQU9DLE1BQWNDLEtBQW9CQyxXQUEyQixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFDbEcsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsYUFBYSxFQUFFLEVBQUVDLGFBQWEsRUFBRSxFQUFFQyxLQUFLLEVBQUMsR0FBR0w7SUFDbkUsTUFBTU0sTUFBY0MsUUFBUUQsR0FBRztJQUMvQlQsSUFBSSxHQUFHSyxRQUFRLFVBQVUsRUFBRUgsS0FBSyxHQUFHLENBQUMsRUFBRSxRQUFRTTtJQUU5QywyQkFBMkI7SUFDM0IsTUFBTWQsVUFBVWlCLFdBQVcsQ0FBQ1IsS0FBSztJQUNqQyxNQUFNLEVBQUNTLGFBQWEsRUFBRSxFQUFFQyxhQUFhLEVBQUUsRUFBRUMsYUFBYSxFQUFDLEdBQUdwQixVQUFVcUIsTUFBTTtJQUUxRSxJQUFHRCxlQUFlO1FBQ2hCLGlDQUFpQztRQUNqQ3BCLFVBQVVzQixxQkFBcUI7SUFDakM7SUFFQSxNQUFNLEVBQUNELE1BQU0sRUFBQyxHQUFHckI7SUFDakIsTUFBTXVCLFVBQVVsQjtJQUVoQixPQUFPRztRQUNMLEtBQUs7WUFBYTtnQkFDaEIsTUFBTWdCLGtCQUEwQixNQUFNekIsZ0JBQWdCO29CQUFDWTtvQkFBU1U7b0JBQVFUO29CQUFZRTtnQkFBSztnQkFDekZKLFNBQVNjO2dCQUNULE9BQU9BO1lBQ1Q7UUFDQSxLQUFLO1lBQVM7Z0JBQ1osSUFBSTtvQkFDRixNQUFNQyxTQUFTdkIsYUFBYTt3QkFDMUJTO3dCQUNBZSxNQUFNYjt3QkFDTkM7d0JBQ0FOO3dCQUNBWTtvQkFDRjtvQkFFQSxJQUFHLENBQUNLLFFBQVE7d0JBQ1YsT0FBTztvQkFDVDtvQkFFQSxNQUFNLEVBQUNFLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxZQUFZLEVBQUMsR0FBR0o7b0JBQzlDLE1BQU1LLFlBQW9CLEdBQUdmLElBQUksQ0FBQyxFQUFFWSxTQUFTLEtBQUssQ0FBQztvQkFFbkQsSUFBRyxDQUFDbEMsV0FBV3FDLFlBQVk7d0JBQzNCLG1CQUFtQjt3QkFDakI3Qix3QkFBd0JILFlBQVl5QixTQUFTTSxjQUFjLG1CQUFtQmQ7d0JBRTlFLG1CQUFtQjt3QkFDbkJwQixXQUFXLEdBQUdvQixJQUFJLGFBQWEsQ0FBQyxFQUFFZTt3QkFFbEMsY0FBYzt3QkFDZCxNQUFNQyxnQkFBd0IsR0FBR0QsVUFBVSxDQUFDLEVBQUVILFNBQVMsVUFBVSxFQUFFQyxhQUFhO3dCQUNoRmpDLFdBQVcsR0FBR21DLFVBQVUsaUJBQWlCLEVBQUVGLFlBQVksSUFBSSxDQUFDLEVBQUVHO3dCQUU5RCxnQ0FBZ0M7d0JBQ2hDM0IsbUJBQW1CMkIsZUFBZWxCLFlBQVljO3dCQUU5QyxxQkFBcUI7d0JBQ3JCLE1BQU1LLGdCQUF3QixHQUFHRixVQUFVLENBQUMsRUFBRUgsU0FBUyxLQUFLLEVBQUVDLGFBQWE7d0JBQzNFakMsV0FBVyxHQUFHbUMsVUFBVSxZQUFZLEVBQUVGLFlBQVksSUFBSSxDQUFDLEVBQUVJO3dCQUV6RCxnQ0FBZ0M7d0JBQ2hDNUIsbUJBQW1CNEIsZUFBZW5CLFlBQVljO29CQUNoRCxPQUFPO3dCQUNMckIsSUFBSSxDQUFDLEVBQUUsRUFBRUssUUFBUSwwQkFBMEIsRUFBRUgsS0FBSyxhQUFhLEVBQUVzQixVQUFVLGdCQUFnQixDQUFDLEVBQUUsU0FBU2hCO3dCQUN2R0osU0FBUzt3QkFDVCxPQUFPO29CQUNUO2dCQUNGLEVBQUUsT0FBTXVCLE9BQU87b0JBQ2IzQixJQUFJLENBQUMsRUFBRSxFQUFFSyxRQUFRLDBCQUEwQixFQUFFSCxLQUFLLEVBQUUsRUFBRXlCLE1BQU1DLE9BQU8sRUFBRSxFQUFFLFNBQVNwQjtvQkFDaEZKLFNBQVM7b0JBQ1QsT0FBTztnQkFDVDtnQkFDQTtZQUNGO1FBQ0EsS0FBSztZQUFZO2dCQUNqQix1QkFBdUI7Z0JBQ3JCLE1BQU1QLFlBQVksaUJBQWlCO2dCQUVuQyx3QkFBd0I7Z0JBQ3hCLE1BQU0wQixlQUF1Qi9CLFlBQVl5QixTQUFTO2dCQUNsRCxJQUFJWSxPQUFlekMsYUFBYW1DLGNBQWM7Z0JBRTlDLGtFQUFrRTtnQkFDbEVNLE9BQU9BLEtBQUtDLE9BQU8sQ0FBQyxXQUFXakI7Z0JBQy9CZ0IsT0FBT0EsS0FBS0MsT0FBTyxDQUFDLFdBQVdsQjtnQkFFL0IsMkJBQTJCO2dCQUMzQixNQUFNbUIsV0FBbUJ2QyxZQUFZaUIsS0FBSztnQkFDMUNuQixjQUFjeUMsVUFBVUYsTUFBTTtnQkFDOUI7WUFDRjtRQUNBLEtBQUs7WUFBUTtnQkFDWCxNQUFNVixTQUFTdkIsYUFBYTtvQkFDMUJTO29CQUNBZSxNQUFNYjtvQkFDTkM7b0JBQ0FOO29CQUNBWTtnQkFDRjtnQkFFQSxJQUFHLENBQUNLLFFBQVE7b0JBQ1YsT0FBTztnQkFDVDtnQkFFQSxNQUFNLEVBQUNFLFFBQVEsRUFBRUUsWUFBWSxFQUFFUyxhQUFhLEVBQUMsR0FBR2I7Z0JBQ2hELE1BQU1jLFdBQW1CLEdBQUd4QixJQUFJLENBQUMsRUFBRVksU0FBUyxJQUFJLENBQUM7Z0JBRWpELElBQUk7b0JBQ0YsSUFBRyxDQUFDbEMsV0FBVzhDLFdBQVc7d0JBQzFCLGtCQUFrQjt3QkFDaEJ0Qyx3QkFBd0JILFlBQVl5QixTQUFTTSxjQUFjLGtCQUFrQmQ7d0JBRTdFLG1CQUFtQjt3QkFDbkJwQixXQUFXLEdBQUdvQixJQUFJLFlBQVksQ0FBQyxFQUFFd0I7d0JBRWpDLGFBQWE7d0JBQ2IsTUFBTUMsZ0JBQXdCLEdBQUdELFNBQVMsQ0FBQyxFQUFFMUIsV0FBVyxRQUFRLENBQUM7d0JBQ2pFbEIsV0FBVyxHQUFHNEMsU0FBUyxlQUFlLENBQUMsRUFBRUM7d0JBRXpDLCtCQUErQjt3QkFDL0JwQyxtQkFBbUJvQyxlQUFlM0IsWUFBWWM7d0JBRTlDLGNBQWM7d0JBQ2QsTUFBTWMsZUFBdUIsR0FBR0YsU0FBUyxDQUFDLEVBQUVaLFNBQVMsU0FBUyxFQUFFVyxlQUFlO3dCQUMvRTNDLFdBQVcsR0FBRzRDLFNBQVMsZ0JBQWdCLEVBQUVELGNBQWMsSUFBSSxDQUFDLEVBQUVHO3dCQUU5RCwrQkFBK0I7d0JBQy9CckMsbUJBQW1CcUMsY0FBYzVCLFlBQVljO3dCQUU3QyxxQkFBcUI7d0JBQ3JCLE1BQU1lLGVBQXVCLEdBQUdILFNBQVMsQ0FBQyxFQUFFWixTQUFTLElBQUksRUFBRVcsZUFBZTt3QkFDMUUzQyxXQUFXLEdBQUc0QyxTQUFTLFdBQVcsRUFBRUQsY0FBYyxJQUFJLENBQUMsRUFBRUk7d0JBRXpELCtCQUErQjt3QkFDL0J0QyxtQkFBbUJzQyxjQUFjN0IsWUFBWWM7b0JBQy9DLE9BQU87d0JBQ0xyQixJQUFJLENBQUMsRUFBRSxFQUFFSyxRQUFRLDBCQUEwQixFQUFFSCxLQUFLLGFBQWEsRUFBRStCLFNBQVMsZ0JBQWdCLENBQUMsRUFBRSxTQUFTekI7d0JBQ3RHSixTQUFTO3dCQUNULE9BQU87b0JBQ1Q7Z0JBQ0YsRUFBRSxPQUFNdUIsT0FBTztvQkFDYjNCLElBQUksQ0FBQyxFQUFFLEVBQUVLLFFBQVEsMEJBQTBCLEVBQUVILEtBQUssRUFBRSxFQUFFeUIsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU3BCO29CQUNoRkosU0FBUztvQkFDVCxPQUFPO2dCQUNUO2dCQUNBO1lBQ0Y7UUFDQSxLQUFLO1lBQVU7Z0JBQ2YsNEJBQTRCO2dCQUMxQixNQUFNUCxZQUFZLFdBQVc7Z0JBRTdCLDRCQUE0QjtnQkFDNUJGLHdCQUF3QkgsWUFBWXlCLFNBQVMscUJBQXFCUjtnQkFDbEU7WUFDRjtRQUNBLEtBQUs7WUFBYTtnQkFDaEIsSUFBSTtvQkFDRixNQUFNVSxTQUFTdkIsYUFBYTt3QkFDMUJTO3dCQUNBZSxNQUFNYjt3QkFDTkM7d0JBQ0FOO3dCQUNBWTtvQkFDRjtvQkFFQSxJQUFHLENBQUNLLFFBQVE7d0JBQ1YsT0FBTztvQkFDVDtvQkFFQSxNQUFNLEVBQUNFLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxZQUFZLEVBQUMsR0FBR0o7b0JBQzlDLE1BQU1rQixnQkFBd0IsR0FBRzVCLElBQUksQ0FBQyxFQUFFWSxTQUFTLFNBQVMsQ0FBQztvQkFFM0QsSUFBRyxDQUFDbEMsV0FBV2tELGdCQUFnQjt3QkFDN0IsOEJBQThCO3dCQUM5QixNQUFNQyxLQUFLLE1BQU0sTUFBTSxDQUFDO3dCQUN4QkEsR0FBR0MsU0FBUyxDQUFDRixlQUFlOzRCQUFDRyxXQUFXO3dCQUFJO3dCQUU1Qyx1Q0FBdUM7d0JBQ3ZDLE1BQU1DLGFBQWFqRCxZQUFZeUIsU0FBU00sY0FBYyxDQUFDLFdBQVcsRUFBRUQsWUFBWSxJQUFJLENBQUM7d0JBQ3JGLE1BQU1vQixhQUFhLEdBQUdMLGNBQWMsQ0FBQyxFQUFFaEIsU0FBUyxTQUFTLEVBQUVDLGFBQWE7d0JBRXhFLElBQUduQyxXQUFXc0QsYUFBYTs0QkFDekIsTUFBTUUsVUFBVXZELGFBQWFxRCxZQUFZOzRCQUN6QyxNQUFNRyxpQkFBaUJELFFBQVFiLE9BQU8sQ0FBQyxjQUFjVDs0QkFDckQvQixjQUFjb0QsWUFBWUU7d0JBQzVCO3dCQUVBLDRCQUE0Qjt3QkFDNUIsTUFBTUMsaUJBQWlCckQsWUFBWXlCLFNBQVNNLGNBQWMsQ0FBQyxnQkFBZ0IsRUFBRUQsWUFBWSxJQUFJLENBQUM7d0JBQzlGLE1BQU13QixpQkFBaUIsR0FBR1QsY0FBYyxDQUFDLEVBQUVoQixTQUFTLGNBQWMsRUFBRUMsYUFBYTt3QkFFakYsSUFBR25DLFdBQVcwRCxpQkFBaUI7NEJBQzdCLE1BQU1FLGNBQWMzRCxhQUFheUQsZ0JBQWdCOzRCQUNqRCxNQUFNRyxxQkFBcUJELFlBQVlqQixPQUFPLENBQUMsY0FBY1Q7NEJBQzdEL0IsY0FBY3dELGdCQUFnQkU7d0JBQ2hDO3dCQUVBaEQsSUFBSSxDQUFDLEVBQUUsRUFBRUssUUFBUSxrQkFBa0IsRUFBRWdCLFNBQVMsMEJBQTBCLENBQUMsRUFBRSxRQUFRYjtvQkFDckYsT0FBTzt3QkFDTFIsSUFBSSxDQUFDLEVBQUUsRUFBRUssUUFBUSwwQkFBMEIsRUFBRUgsS0FBSyxhQUFhLEVBQUVtQyxjQUFjLGdCQUFnQixDQUFDLEVBQUUsU0FBUzdCO3dCQUMzR0osU0FBUzt3QkFDVCxPQUFPO29CQUNUO2dCQUNGLEVBQUUsT0FBTXVCLE9BQU87b0JBQ2IzQixJQUFJLENBQUMsRUFBRSxFQUFFSyxRQUFRLDBCQUEwQixFQUFFSCxLQUFLLEVBQUUsRUFBRXlCLE1BQU1DLE9BQU8sRUFBRSxFQUFFLFNBQVNwQjtvQkFDaEZKLFNBQVM7b0JBQ1QsT0FBTztnQkFDVDtnQkFDQTtZQUNGO0lBQ0Y7SUFFQUEsU0FBUztJQUNULE9BQU87QUFDVCxFQUFFIn0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUvY3JlYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZSA9IGFzeW5jIChcbiAgdHlwZTogc3RyaW5nLFxuICBjbWQ6IENyZWF0ZU9wdGlvbnMsXG4gIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSlcbik6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIG91dHB1dEZpbGUgPSAnJywgb3V0cHV0TmFtZSA9ICcnLCBxdWlldH0gPSBjbWQ7XG4gIGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcbiAgbG9nKGAke2NsaU5hbWV9IGNyZWF0aW5nICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBHZXQgY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCwgZmFsc2UpO1xuICBjb25zdCB7b3V0cHV0UGF0aCA9ICcnLCBzb3VyY2VQYXRoID0gJycsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgY29uc3Qge2NvbmZpZ30gPSBMZXhDb25maWc7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdjaGFuZ2Vsb2cnOiB7XG4gICAgICBjb25zdCBzdGF0dXNDaGFuZ2Vsb2c6IG51bWJlciA9IGF3YWl0IGNyZWF0ZUNoYW5nZWxvZyh7Y2xpTmFtZSwgY29uZmlnLCBvdXRwdXRGaWxlLCBxdWlldH0pO1xuICAgICAgY2FsbGJhY2soc3RhdHVzQ2hhbmdlbG9nKTtcbiAgICAgIHJldHVybiBzdGF0dXNDaGFuZ2Vsb2c7XG4gICAgfVxuICAgIGNhc2UgJ3N0b3JlJzoge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0RmlsZW5hbWVzKHtcbiAgICAgICAgICBjbGlOYW1lLFxuICAgICAgICAgIG5hbWU6IG91dHB1dE5hbWUsXG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1c2VUeXBlc2NyaXB0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKCFyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtuYW1lQ2FwcywgdGVtcGxhdGVFeHQsIHRlbXBsYXRlUGF0aH0gPSByZXN1bHQ7XG4gICAgICAgIGNvbnN0IHN0b3JlUGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfVN0b3JlYDtcblxuICAgICAgICBpZighZXhpc3RzU3luYyhzdG9yZVBhdGgpKSB7XG4gICAgICAgIC8vIENvcHkgc3RvcmUgZmlsZXNcbiAgICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsICcuLy5TYW1wbGVTdG9yZScpLCBjd2QpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIGRpcmVjdG9yeVxuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7Y3dkfS8uU2FtcGxlU3RvcmVgLCBzdG9yZVBhdGgpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHRlc3RcbiAgICAgICAgICBjb25zdCBzdG9yZVRlc3RQYXRoOiBzdHJpbmcgPSBgJHtzdG9yZVBhdGh9LyR7bmFtZUNhcHN9U3RvcmUudGVzdCR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUudGVzdCR7dGVtcGxhdGVFeHR9LnR4dGAsIHN0b3JlVGVzdFBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHN0b3JlIG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUoc3RvcmVUZXN0UGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHNvdXJjZSBmaWxlXG4gICAgICAgICAgY29uc3Qgc3RvcmVGaWxlUGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlJHt0ZW1wbGF0ZUV4dH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7c3RvcmVQYXRofS9TYW1wbGVTdG9yZSR7dGVtcGxhdGVFeHR9LnR4dGAsIHN0b3JlRmlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHN0b3JlIG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUoc3RvcmVGaWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke3N0b3JlUGF0aH0gYWxyZWFkeSBleGlzdHMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3RzY29uZmlnJzoge1xuICAgIC8vIFJlbW92ZSBleGlzdGluZyBmaWxlXG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygndHNjb25maWcuanNvbicsIHRydWUpO1xuXG4gICAgICAvLyBHZXQgdHNjb25maWcgdGVtcGxhdGVcbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uL3RzY29uZmlnLnRlbXBsYXRlLmpzb24nKTtcbiAgICAgIGxldCBkYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmModGVtcGxhdGVQYXRoLCAndXRmOCcpO1xuXG4gICAgICAvLyBVcGRhdGUgTGV4IHRzY29uZmlnIHRlbXBsYXRlIHdpdGggc291cmNlIGFuZCBvdXRwdXQgZGlyZWN0b3JpZXNcbiAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoLy5cXC9zcmMvZywgc291cmNlUGF0aCk7XG4gICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC8uXFwvbGliL2csIG91dHB1dFBhdGgpO1xuXG4gICAgICAvLyBTYXZlIG5ldyB0c2NvbmZpZyB0byBhcHBcbiAgICAgIGNvbnN0IGRlc3RQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoZGVzdFBhdGgsIGRhdGEsICd1dGY4Jyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndmlldyc6IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgIGNsaU5hbWUsXG4gICAgICAgIG5hbWU6IG91dHB1dE5hbWUsXG4gICAgICAgIHF1aWV0LFxuICAgICAgICB0eXBlLFxuICAgICAgICB1c2VUeXBlc2NyaXB0XG4gICAgICB9KTtcblxuICAgICAgaWYoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge25hbWVDYXBzLCB0ZW1wbGF0ZVBhdGgsIHRlbXBsYXRlUmVhY3R9ID0gcmVzdWx0O1xuICAgICAgY29uc3Qgdmlld1BhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31WaWV3YDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYoIWV4aXN0c1N5bmModmlld1BhdGgpKSB7XG4gICAgICAgIC8vIENvcHkgdmlldyBmaWxlc1xuICAgICAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgJy4vLlNhbXBsZVZpZXcnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVZpZXdgLCB2aWV3UGF0aCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgQ1NTXG4gICAgICAgICAgY29uc3Qgdmlld1N0eWxlUGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7b3V0cHV0TmFtZX1WaWV3LmNzc2A7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vc2FtcGxlVmlldy5jc3NgLCB2aWV3U3R5bGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld1N0eWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHRlc3RcbiAgICAgICAgICBjb25zdCB2aWV3VGVzdFBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke25hbWVDYXBzfVZpZXcudGVzdCR7dGVtcGxhdGVSZWFjdH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L1NhbXBsZVZpZXcudGVzdCR7dGVtcGxhdGVSZWFjdH0udHh0YCwgdmlld1Rlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld1Rlc3RQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgc291cmNlIGZpbGVcbiAgICAgICAgICBjb25zdCB2aWV3RmlsZVBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke25hbWVDYXBzfVZpZXcke3RlbXBsYXRlUmVhY3R9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9TYW1wbGVWaWV3JHt0ZW1wbGF0ZVJlYWN0fS50eHRgLCB2aWV3RmlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3RmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHt2aWV3UGF0aH0gYWxyZWFkeSBleGlzdHMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3ZzY29kZSc6IHtcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygnLnZzY29kZScsIHRydWUpO1xuXG4gICAgICAvLyBDb3B5IHZzY29kZSBjb25maWd1cmF0aW9uXG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vLnZzY29kZScpLCBjd2QpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ2RhdGFsYXllcic6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBkYXRhTGF5ZXJQYXRoOiBzdHJpbmcgPSBgJHtjd2R9LyR7bmFtZUNhcHN9RGF0YUxheWVyYDtcblxuICAgICAgICBpZighZXhpc3RzU3luYyhkYXRhTGF5ZXJQYXRoKSkge1xuICAgICAgICAgIC8vIENyZWF0ZSBkYXRhIGxheWVyIGRpcmVjdG9yeVxuICAgICAgICAgIGNvbnN0IGZzID0gYXdhaXQgaW1wb3J0KCdmcycpO1xuICAgICAgICAgIGZzLm1rZGlyU3luYyhkYXRhTGF5ZXJQYXRoLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG5cbiAgICAgICAgICAvLyBDb3B5IGFuZCByZW5hbWUgbWFpbiBkYXRhIGxheWVyIGZpbGVcbiAgICAgICAgICBjb25zdCBzb3VyY2VGaWxlID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCBgLi9EYXRhTGF5ZXIke3RlbXBsYXRlRXh0fS50eHRgKTtcbiAgICAgICAgICBjb25zdCB0YXJnZXRGaWxlID0gYCR7ZGF0YUxheWVyUGF0aH0vJHtuYW1lQ2Fwc31EYXRhTGF5ZXIke3RlbXBsYXRlRXh0fWA7XG5cbiAgICAgICAgICBpZihleGlzdHNTeW5jKHNvdXJjZUZpbGUpKSB7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKHNvdXJjZUZpbGUsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkQ29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgvRGF0YUxheWVyL2csIG5hbWVDYXBzKTtcbiAgICAgICAgICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0RmlsZSwgdXBkYXRlZENvbnRlbnQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENvcHkgYW5kIHJlbmFtZSB0ZXN0IGZpbGVcbiAgICAgICAgICBjb25zdCBzb3VyY2VUZXN0RmlsZSA9IHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgYC4vRGF0YUxheWVyLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgKTtcbiAgICAgICAgICBjb25zdCB0YXJnZXRUZXN0RmlsZSA9IGAke2RhdGFMYXllclBhdGh9LyR7bmFtZUNhcHN9RGF0YUxheWVyLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG5cbiAgICAgICAgICBpZihleGlzdHNTeW5jKHNvdXJjZVRlc3RGaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgdGVzdENvbnRlbnQgPSByZWFkRmlsZVN5bmMoc291cmNlVGVzdEZpbGUsICd1dGY4Jyk7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVGVzdENvbnRlbnQgPSB0ZXN0Q29udGVudC5yZXBsYWNlKC9EYXRhTGF5ZXIvZywgbmFtZUNhcHMpO1xuICAgICAgICAgICAgd3JpdGVGaWxlU3luYyh0YXJnZXRUZXN0RmlsZSwgdXBkYXRlZFRlc3RDb250ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gU3VjY2VzczogQ3JlYXRlZCAke25hbWVDYXBzfURhdGFMYXllciB3aXRoIHRlc3QgZmlsZXMuYCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiBEaXJlY3RvcnksICR7ZGF0YUxheWVyUGF0aH0gYWxyZWFkeSBleGlzdHMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTsiXSwibmFtZXMiOlsiZXhpc3RzU3luYyIsInJlYWRGaWxlU3luYyIsInJlbmFtZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiY3JlYXRlQ2hhbmdlbG9nIiwiTGV4Q29uZmlnIiwiY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMiLCJnZXRGaWxlbmFtZXMiLCJyZW1vdmVGaWxlcyIsInVwZGF0ZVRlbXBsYXRlTmFtZSIsImdldERpck5hbWUiLCJsb2ciLCJjcmVhdGUiLCJ0eXBlIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwib3V0cHV0RmlsZSIsIm91dHB1dE5hbWUiLCJxdWlldCIsImN3ZCIsInByb2Nlc3MiLCJwYXJzZUNvbmZpZyIsIm91dHB1dFBhdGgiLCJzb3VyY2VQYXRoIiwidXNlVHlwZXNjcmlwdCIsImNvbmZpZyIsImNoZWNrVHlwZXNjcmlwdENvbmZpZyIsImRpck5hbWUiLCJzdGF0dXNDaGFuZ2Vsb2ciLCJyZXN1bHQiLCJuYW1lIiwibmFtZUNhcHMiLCJ0ZW1wbGF0ZUV4dCIsInRlbXBsYXRlUGF0aCIsInN0b3JlUGF0aCIsInN0b3JlVGVzdFBhdGgiLCJzdG9yZUZpbGVQYXRoIiwiZXJyb3IiLCJtZXNzYWdlIiwiZGF0YSIsInJlcGxhY2UiLCJkZXN0UGF0aCIsInRlbXBsYXRlUmVhY3QiLCJ2aWV3UGF0aCIsInZpZXdTdHlsZVBhdGgiLCJ2aWV3VGVzdFBhdGgiLCJ2aWV3RmlsZVBhdGgiLCJkYXRhTGF5ZXJQYXRoIiwiZnMiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJzb3VyY2VGaWxlIiwidGFyZ2V0RmlsZSIsImNvbnRlbnQiLCJ1cGRhdGVkQ29udGVudCIsInNvdXJjZVRlc3RGaWxlIiwidGFyZ2V0VGVzdEZpbGUiLCJ0ZXN0Q29udGVudCIsInVwZGF0ZWRUZXN0Q29udGVudCJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsVUFBVSxFQUFFQyxZQUFZLEVBQUVDLFVBQVUsRUFBRUMsYUFBYSxRQUFPLEtBQUs7QUFDdkUsU0FBUUMsV0FBV0MsV0FBVyxRQUFPLE9BQU87QUFFNUMsU0FBUUMsZUFBZSxRQUFPLDRCQUE0QjtBQUMxRCxTQUFRQyxTQUFTLFFBQU8scUJBQXFCO0FBQzdDLFNBQVFDLHVCQUF1QixFQUFFQyxZQUFZLEVBQUVDLFdBQVcsRUFBRUMsa0JBQWtCLFFBQU8scUJBQXFCO0FBQzFHLFNBQVFDLFVBQVUsUUFBTyxzQkFBc0I7QUFDL0MsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQVd2QyxPQUFPLE1BQU1DLFNBQVMsT0FDcEJDLE1BQ0FDLEtBQ0FDLFdBQTJCLElBQU8sQ0FBQSxDQUFDLENBQUEsQ0FBRTtJQUVyQyxNQUFNLEVBQUNDLFVBQVUsS0FBSyxFQUFFQyxhQUFhLEVBQUUsRUFBRUMsYUFBYSxFQUFFLEVBQUVDLEtBQUssRUFBQyxHQUFHTDtJQUNuRSxNQUFNTSxNQUFjQyxRQUFRRCxHQUFHO0lBQy9CVCxJQUFJLEdBQUdLLFFBQVEsVUFBVSxFQUFFSCxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVFNO0lBRTlDLDJCQUEyQjtJQUMzQixNQUFNZCxVQUFVaUIsV0FBVyxDQUFDUixLQUFLO0lBQ2pDLE1BQU0sRUFBQ1MsYUFBYSxFQUFFLEVBQUVDLGFBQWEsRUFBRSxFQUFFQyxhQUFhLEVBQUMsR0FBR3BCLFVBQVVxQixNQUFNO0lBRTFFLElBQUdELGVBQWU7UUFDaEIsaUNBQWlDO1FBQ2pDcEIsVUFBVXNCLHFCQUFxQjtJQUNqQztJQUVBLE1BQU0sRUFBQ0QsTUFBTSxFQUFDLEdB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