css-to-tailwind-react 0.3.1 → 0.3.4

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.
@@ -49,7 +49,7 @@ async function transformFiles(files, options) {
49
49
  results.stylesConverted += rule.declarations.length;
50
50
  }
51
51
  }
52
- else if (rule.fullyConverted && rule.className) {
52
+ else if (rule.className && rule.convertedClasses.length > 0) {
53
53
  const existing = cssClassMap[rule.className];
54
54
  if (existing) {
55
55
  mergeRuleIntoClassInfo(existing, rule);
@@ -57,11 +57,13 @@ async function transformFiles(files, options) {
57
57
  else {
58
58
  cssClassMap[rule.className] = buildClassInfoFromRule(rule, file.path);
59
59
  }
60
- results.stylesConverted += rule.declarations.length;
61
- }
62
- else if (rule.partialConversion) {
63
- results.stylesConverted += rule.convertedClasses.length;
64
- logger_1.logger.verbose(` Rule .${rule.className}: partial conversion (${rule.convertedClasses.length}/${rule.declarations.length} declarations)`);
60
+ if (rule.fullyConverted) {
61
+ results.stylesConverted += rule.declarations.length;
62
+ }
63
+ else {
64
+ results.stylesConverted += rule.convertedClasses.length;
65
+ logger_1.logger.verbose(` Rule .${rule.className}: partial conversion (${rule.convertedClasses.length}/${rule.declarations.length} declarations)`);
66
+ }
65
67
  }
66
68
  });
67
69
  cssFileResults.set(file.path, {
@@ -255,7 +257,7 @@ function buildClassInfoFromRule(rule, sourceFile) {
255
257
  originalSelector: rule.selector
256
258
  })),
257
259
  sourceFile,
258
- fullyConvertible: true
260
+ fullyConvertible: rule.fullyConverted
259
261
  };
260
262
  }
261
263
  function mergeRuleIntoClassInfo(info, rule) {
@@ -280,32 +282,58 @@ function replaceClassNameReferences(code, classMap) {
280
282
  let replacements = 0;
281
283
  let modifiedCode = code;
282
284
  Object.entries(classMap).forEach(([oldClass, info]) => {
283
- if (!info.fullyConvertible) {
285
+ if (info.utilities.length === 0) {
284
286
  return;
285
287
  }
286
288
  const tailwindClassString = assembleTailwindClasses(info);
287
- const pattern1 = new RegExp(`className="${oldClass}"`, 'g');
288
- if (pattern1.test(modifiedCode)) {
289
- modifiedCode = modifiedCode.replace(pattern1, `className="${tailwindClassString}"`);
290
- hasChanges = true;
291
- replacements++;
292
- logger_1.logger.verbose(`Replaced className="${oldClass}" with "${tailwindClassString}"`);
293
- }
294
- const pattern2 = new RegExp(`className=\\{"${oldClass}"\\}`, 'g');
295
- if (pattern2.test(modifiedCode)) {
296
- modifiedCode = modifiedCode.replace(pattern2, `className="${tailwindClassString}"`);
297
- hasChanges = true;
298
- replacements++;
299
- logger_1.logger.verbose(`Replaced className={"${oldClass}"} with "${tailwindClassString}"`);
289
+ if (info.fullyConvertible) {
290
+ const pattern1 = new RegExp(`className="${oldClass}"`, 'g');
291
+ if (pattern1.test(modifiedCode)) {
292
+ modifiedCode = modifiedCode.replace(pattern1, `className="${tailwindClassString}"`);
293
+ hasChanges = true;
294
+ replacements++;
295
+ logger_1.logger.verbose(`Replaced className="${oldClass}" with "${tailwindClassString}"`);
296
+ }
297
+ const pattern2 = new RegExp(`className=\\{"${oldClass}"\\}`, 'g');
298
+ if (pattern2.test(modifiedCode)) {
299
+ modifiedCode = modifiedCode.replace(pattern2, `className="${tailwindClassString}"`);
300
+ hasChanges = true;
301
+ replacements++;
302
+ logger_1.logger.verbose(`Replaced className={"${oldClass}"} with "${tailwindClassString}"`);
303
+ }
304
+ const pattern3 = new RegExp(`className=\\{\`\\s*${oldClass}\\s*\`\\}`, 'g');
305
+ if (pattern3.test(modifiedCode)) {
306
+ modifiedCode = modifiedCode.replace(pattern3, `className="${tailwindClassString}"`);
307
+ hasChanges = true;
308
+ replacements++;
309
+ logger_1.logger.verbose(`Replaced className={\`${oldClass}\`} with "${tailwindClassString}"`);
310
+ }
300
311
  }
301
- const pattern3 = new RegExp(`className=\\{\`\\s*${oldClass}\\s*\`\\}`, 'g');
302
- if (pattern3.test(modifiedCode)) {
303
- modifiedCode = modifiedCode.replace(pattern3, `className="${tailwindClassString}"`);
304
- hasChanges = true;
305
- replacements++;
306
- logger_1.logger.verbose(`Replaced className={\`${oldClass}\`} with "${tailwindClassString}"`);
312
+ else {
313
+ const combinedClassString = `${oldClass} ${tailwindClassString}`;
314
+ const pattern1 = new RegExp(`className="${oldClass}"`, 'g');
315
+ if (pattern1.test(modifiedCode)) {
316
+ modifiedCode = modifiedCode.replace(pattern1, `className="${combinedClassString}"`);
317
+ hasChanges = true;
318
+ replacements++;
319
+ logger_1.logger.verbose(`Appended to className="${oldClass}" → "${combinedClassString}"`);
320
+ }
321
+ const pattern2 = new RegExp(`className=\\{"${oldClass}"\\}`, 'g');
322
+ if (pattern2.test(modifiedCode)) {
323
+ modifiedCode = modifiedCode.replace(pattern2, `className="${combinedClassString}"`);
324
+ hasChanges = true;
325
+ replacements++;
326
+ logger_1.logger.verbose(`Appended to className={"${oldClass}"} → "${combinedClassString}"`);
327
+ }
328
+ const pattern3 = new RegExp(`className=\\{\`\\s*${oldClass}\\s*\`\\}`, 'g');
329
+ if (pattern3.test(modifiedCode)) {
330
+ modifiedCode = modifiedCode.replace(pattern3, `className="${combinedClassString}"`);
331
+ hasChanges = true;
332
+ replacements++;
333
+ logger_1.logger.verbose(`Appended to className={\`${oldClass}\`} → "${combinedClassString}"`);
334
+ }
307
335
  }
308
336
  });
309
337
  return { code: modifiedCode, hasChanges, replacements };
310
338
  }
311
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF5REEsd0NBZ1JDO0FBelVELDRDQUFvQjtBQUNwQixnREFBd0I7QUFFeEIscURBQWtEO0FBQ2xELDJDQUF3QztBQUN4QywyQ0FBcUU7QUFDckUsNkNBQTBDO0FBRTFDLDJDQUF3QztBQUN4QyxtRUFBa0U7QUFDbEUsK0RBSWtDO0FBQ2xDLHlFQUEwRTtBQUMxRSwrREFLa0M7QUFvQzNCLEtBQUssVUFBVSxjQUFjLENBQ2xDLEtBQW9CLEVBQ3BCLE9BQXlCO0lBRXpCLE1BQU0sT0FBTyxHQUFxQjtRQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDMUIsYUFBYSxFQUFFLENBQUM7UUFDaEIsZUFBZSxFQUFFLENBQUM7UUFDbEIsZUFBZSxFQUFFLENBQUM7UUFDbEIsUUFBUSxFQUFFLENBQUM7S0FDWixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSwrQkFBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE1BQU0sVUFBVSxHQUFHLElBQUksdUJBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU5RCxJQUFBLHlDQUFvQixHQUFFLENBQUM7SUFFdkIsTUFBTSxXQUFXLEdBQWdCLEVBQUUsQ0FBQztJQUNwQyxNQUFNLGtCQUFrQixHQUFjLEVBQUUsQ0FBQztJQUN6QyxNQUFNLGNB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SCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFNjYW5uZWRGaWxlIH0gZnJvbSAnLi9zY2FubmVyJztcbmltcG9ydCB7IFRhaWx3aW5kTWFwcGVyIH0gZnJvbSAnLi90YWlsd2luZE1hcHBlcic7XG5pbXBvcnQgeyBKU1hQYXJzZXIgfSBmcm9tICcuL2pzeFBhcnNlcic7XG5pbXBvcnQgeyBDU1NQYXJzZXIsIENTU1J1bGUsIFV0aWxpdHlXaXRoVmFyaWFudCB9IGZyb20gJy4vY3NzUGFyc2VyJztcbmltcG9ydCB7IEZpbGVXcml0ZXIgfSBmcm9tICcuL2ZpbGVXcml0ZXInO1xuaW1wb3J0IHsgVGFpbHdpbmRDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL3V0aWxzL2xvZ2dlcic7XG5pbXBvcnQgeyBjbGVhckJyZWFrcG9pbnRDYWNoZSB9IGZyb20gJy4vdXRpbHMvYnJlYWtwb2ludFJlc29sdmVyJztcbmltcG9ydCB7IFxuICBhc3NlbWJsZVV0aWxpdGllcywgXG4gIG1lcmdlVXRpbGl0aWVzLFxuICBub3JtYWxpemVWYXJpYW50T3JkZXIgXG59IGZyb20gJy4vdXRpbHMvdmFyaWFudEFzc2VtYmxlcic7XG5pbXBvcnQgeyB0cmFuc2Zvcm1EZXNjZW5kYW50U2VsZWN0b3JzIH0gZnJvbSAnLi9qc3hEZXNjZW5kYW50VHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgXG4gIFV0aWxpdHlXaXRoTWV0YSwgXG4gIFJlc29sdmVkVXRpbGl0eSwgXG4gIHJlc29sdmVDb25mbGljdHMsIFxuICByZXNvbHZlZFV0aWxpdGllc1RvU3RyaW5ncyBcbn0gZnJvbSAnLi91dGlscy9jb25mbGljdFJlc29sdmVyJztcbmltcG9ydCB7IFNwZWNpZmljaXR5LCBaRVJPX1NQRUNJRklDSVRZIH0gZnJvbSAnLi91dGlscy9zcGVjaWZpY2l0eUNhbGN1bGF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybU9wdGlvbnMge1xuICBkcnlSdW46IGJvb2xlYW47XG4gIGRlbGV0ZUNzczogYm9vbGVhbjtcbiAgc2tpcEV4dGVybmFsOiBib29sZWFuO1xuICBza2lwSW5saW5lOiBib29sZWFuO1xuICBza2lwSW50ZXJuYWw6IGJvb2xlYW47XG4gIHRhaWx3aW5kQ29uZmlnOiBUYWlsd2luZENvbmZpZyB8IG51bGw7XG4gIHByb2plY3RSb290OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmb3JtUmVzdWx0cyB7XG4gIGZpbGVzU2Nhbm5lZDogbnVtYmVyO1xuICBmaWxlc01vZGlmaWVkOiBudW1iZXI7XG4gIHN0eWxlc0NvbnZlcnRlZDogbnVtYmVyO1xuICBjbGFzc2VzUmVwbGFjZWQ6IG51bWJlcjtcbiAgd2FybmluZ3M6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENsYXNzSW5mbyB7XG4gIHV0aWxpdGllczogVXRpbGl0eVdpdGhNZXRhW107XG4gIHNvdXJjZUZpbGU6IHN0cmluZztcbiAgZnVsbHlDb252ZXJ0aWJsZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENTU0NsYXNzTWFwIHtcbiAgW2NsYXNzTmFtZTogc3RyaW5nXTogQ2xhc3NJbmZvO1xufVxuXG5pbnRlcmZhY2UgQ29sbGVjdGVkUnVsZXMge1xuICBzaW1wbGVSdWxlczogQ1NTUnVsZVtdO1xuICBkZXNjZW5kYW50UnVsZXM6IENTU1J1bGVbXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVzKFxuICBmaWxlczogU2Nhbm5lZEZpbGVbXSxcbiAgb3B0aW9uczogVHJhbnNmb3JtT3B0aW9uc1xuKTogUHJvbWlzZTxUcmFuc2Zvcm1SZXN1bHRzPiB7XG4gIGNvbnN0IHJlc3VsdHM6IFRyYW5zZm9ybVJlc3VsdHMgPSB7XG4gICAgZmlsZXNTY2FubmVkOiBmaWxlcy5sZW5ndGgsXG4gICAgZmlsZXNNb2RpZmllZDogMCxcbiAgICBzdHlsZXNDb252ZXJ0ZWQ6IDAsXG4gICAgY2xhc3Nlc1JlcGxhY2VkOiAwLFxuICAgIHdhcm5pbmdzOiAwXG4gIH07XG5cbiAgY29uc3QgbWFwcGVyID0gbmV3IFRhaWx3aW5kTWFwcGVyKG9wdGlvbnMudGFpbHdpbmRDb25maWcgfHwge30pO1xuICBjb25zdCBqc3hQYXJzZXIgPSBuZXcgSlNYUGFyc2VyKG1hcHBlcik7XG4gIGNvbnN0IHNjcmVlbnMgPSBvcHRpb25zLnRhaWx3aW5kQ29uZmlnPy50aGVtZT8uc2NyZWVucztcbiAgY29uc3QgY3NzUGFyc2VyID0gbmV3IENTU1BhcnNlcihtYXBwZXIsIHNjcmVlbnMpO1xuICBjb25zdCBmaWxlV3JpdGVyID0gbmV3IEZpbGVXcml0ZXIoeyBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuIH0pO1xuXG4gIGNsZWFyQnJlYWtwb2ludENhY2hlKCk7XG5cbiAgY29uc3QgY3NzQ2xhc3NNYXA6IENTU0NsYXNzTWFwID0ge307XG4gIGNvbnN0IGFsbERlc2NlbmRhbnRSdWxlczogQ1NTUnVsZVtdID0gW107XG4gIGNvbnN0IGNzc0ZpbGVSZXN1bHRzOiBNYXA8c3RyaW5nLCB7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIG5ld0NvbnRlbnQ6IHN0cmluZztcbiAgICBydWxlczogQ1NTUnVsZVtdO1xuICAgIGNhbkRlbGV0ZTogYm9vbGVhbjtcbiAgICBoYXNDaGFuZ2VzOiBib29sZWFuO1xuICAgIGZ1bGx5Q29udmVydGlibGU6IGJvb2xlYW47XG4gIH0+ID0gbmV3IE1hcCgpO1xuXG4gIGxvZ2dlci5pbmZvKCdcXG7wn5SNIFBoYXNlIDE6IEFuYWx5emluZyBmaWxlcy4uLicpO1xuXG4gIGlmICghb3B0aW9ucy5za2lwRXh0ZXJuYWwpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnY3NzJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZS5wYXRoLCAndXRmLTgnKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3NzUGFyc2VyLnBhcnNlKGNvbnRlbnQsIGZpbGUucGF0aCk7XG5cbiAgICAgICAgY29uc3QgdG90YWxSdWxlcyA9IHJlc3VsdC5ydWxlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGZ1bGx5Q29udmVydGVkUnVsZXMgPSByZXN1bHQucnVsZXMuZmlsdGVyKHIgPT4gci5mdWxseUNvbnZlcnRlZCkubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXJ0aWFsbHlDb252ZXJ0ZWRSdWxlcyA9IHJlc3VsdC5ydWxlcy5maWx0ZXIociA9PiByLnBhcnRpYWxDb252ZXJzaW9uKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGZ1bGx5Q29udmVydGlibGUgPSB0b3RhbFJ1bGVzID4gMCAmJiB0b3RhbFJ1bGVzID09PSBmdWxseUNvbnZlcnRlZFJ1bGVzICYmIHBhcnRpYWxseUNvbnZlcnRlZFJ1bGVzID09PSAwO1xuXG4gICAgICAgIHJlc3VsdC5ydWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICAgIGlmIChydWxlLmlzRGVzY2VuZGFudCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGFsbERlc2NlbmRhbnRSdWxlcy5wdXNoKHJ1bGUpO1xuICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmRlY2xhcmF0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChydWxlLmZ1bGx5Q29udmVydGVkICYmIHJ1bGUuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBleGlzdGluZyA9IGNzc0NsYXNzTWFwW3J1bGUuY2xhc3NOYW1lXTtcbiAgICAgICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgICAgICBtZXJnZVJ1bGVJbnRvQ2xhc3NJbmZvKGV4aXN0aW5nLCBydWxlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNzc0NsYXNzTWFwW3J1bGUuY2xhc3NOYW1lXSA9IGJ1aWxkQ2xhc3NJbmZvRnJvbVJ1bGUocnVsZSwgZmlsZS5wYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdHMuc3R5bGVzQ29udmVydGVkICs9IHJ1bGUuZGVjbGFyYXRpb25zLmxlbmd0aDtcbiAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUucGFydGlhbENvbnZlcnNpb24pIHtcbiAgICAgICAgICAgIHJlc3VsdHMuc3R5bGVzQ29udmVydGVkICs9IHJ1bGUuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGg7XG4gICAgICAgICAgICBsb2dnZXIudmVyYm9zZShgICBSdWxlIC4ke3J1bGUuY2xhc3NOYW1lfTogcGFydGlhbCBjb252ZXJzaW9uICgke3J1bGUuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGh9LyR7cnVsZS5kZWNsYXJhdGlvbnMubGVuZ3RofSBkZWNsYXJhdGlvbnMpYCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjc3NGaWxlUmVzdWx0cy5zZXQoZmlsZS5wYXRoLCB7XG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBuZXdDb250ZW50OiByZXN1bHQuY3NzLFxuICAgICAgICAgIHJ1bGVzOiByZXN1bHQucnVsZXMsXG4gICAgICAgICAgY2FuRGVsZXRlOiByZXN1bHQuY2FuRGVsZXRlLFxuICAgICAgICAgIGhhc0NoYW5nZXM6IHJlc3VsdC5oYXNDaGFuZ2VzLFxuICAgICAgICAgIGZ1bGx5Q29udmVydGlibGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVzdWx0cy53YXJuaW5ncyArPSByZXN1bHQud2FybmluZ3MubGVuZ3RoO1xuXG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGBBbmFseXplZCAke2ZpbGUucGF0aH06YCk7XG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGAgIC0gVG90YWwgcnVsZXM6ICR7dG90YWxSdWxlc31gKTtcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYCAgLSBGdWxseSBjb252ZXJ0ZWQgcnVsZXM6ICR7ZnVsbHlDb252ZXJ0ZWRSdWxlc31gKTtcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYCAgLSBQYXJ0aWFsbHkgY29udmVydGVkIHJ1bGVzOiAke3BhcnRpYWxseUNvbnZlcnRlZFJ1bGVzfWApO1xuICAgICAgICBsb2dnZXIudmVyYm9zZShgICAtIEZ1bGx5IGNvbnZlcnRpYmxlOiAke2Z1bGx5Q29udmVydGlibGV9YCk7XG5cbiAgICAgICAgcmVzdWx0Lndhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiB7XG4gICAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYOKaoO+4jyAgJHtmaWxlLnBhdGh9OiAke3dhcm5pbmd9YCk7XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBhbmFseXplICR7ZmlsZS5wYXRofTpgLCBlcnJvcik7XG4gICAgICAgIHJlc3VsdHMud2FybmluZ3MrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2dnZXIuaW5mbygnXFxu4pqb77iPICBQaGFzZSAyOiBUcmFuc2Zvcm1pbmcgUmVhY3QgY29tcG9uZW50cy4uLicpO1xuXG4gIGNvbnN0IGpzeEZpbGVSZXN1bHRzOiBNYXA8c3RyaW5nLCB7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIG5ld0NvbnRlbnQ6IHN0cmluZztcbiAgICBoYXNDaGFuZ2VzOiBib29sZWFuO1xuICB9PiA9IG5ldyBNYXAoKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnanN4JykpIHtcbiAgICB0cnkge1xuICAgICAgbGV0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZS5wYXRoLCAndXRmLTgnKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQ29udGVudCA9IGNvbnRlbnQ7XG4gICAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgbGV0IGZpbGVXYXJuaW5nczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgaWYgKCFvcHRpb25zLnNraXBJbmxpbmUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBqc3hSZXN1bHQgPSBqc3hQYXJzZXIucGFyc2UoY29udGVudCwgZmlsZS5wYXRoKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoanN4UmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBqc3hSZXN1bHQuY29kZTtcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICAgICAgcmVzdWx0cy5zdHlsZXNDb252ZXJ0ZWQgKz0ganN4UmVzdWx0LnRyYW5zZm9ybWF0aW9ucy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChzdW0sIHQpID0+IHN1bSArIHQuY2xhc3Nlcy5sZW5ndGgsIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaCguLi5qc3hSZXN1bHQud2FybmluZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIHBhcnNlIEpTWCBpbmxpbmUgc3R5bGVzIGluICR7ZmlsZS5wYXRofTogJHtlcnJvcn1gKTtcbiAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaChgSlNYIHBhcnNlIGVycm9yOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghb3B0aW9ucy5za2lwSW50ZXJuYWwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBpbnRlcm5hbFJlc3VsdCA9IGF3YWl0IGNzc1BhcnNlci5wYXJzZUludGVybmFsQ1NTKGNvbnRlbnQsIGZpbGUucGF0aCk7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGludGVybmFsUmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBpbnRlcm5hbFJlc3VsdC5odG1sO1xuICAgICAgICAgICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGludGVybmFsUmVzdWx0LnJ1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgICAgICAgIGlmIChydWxlLmlzRGVzY2VuZGFudCkge1xuICAgICAgICAgICAgICAgIGlmIChydWxlLmNvbnZlcnRlZENsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgYWxsRGVzY2VuZGFudFJ1bGVzLnB1c2gocnVsZSk7XG4gICAgICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmRlY2xhcmF0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGggPiAwICYmIHJ1bGUuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBjc3NDbGFzc01hcFtydWxlLmNsYXNzTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZVJ1bGVJbnRvQ2xhc3NJbmZvKGV4aXN0aW5nLCBydWxlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY3NzQ2xhc3NNYXBbcnVsZS5jbGFzc05hbWVdID0gYnVpbGRDbGFzc0luZm9Gcm9tUnVsZShydWxlLCBmaWxlLnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmRlY2xhcmF0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaCguLi5pbnRlcm5hbFJlc3VsdC53YXJuaW5ncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ2dlci53YXJuKGBGYWlsZWQgdG8gcGFyc2UgaW50ZXJuYWwgQ1NTIGluICR7ZmlsZS5wYXRofTogJHtlcnJvcn1gKTtcbiAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaChgSW50ZXJuYWwgQ1NTIHBhcnNlIGVycm9yOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGpzeEZpbGVSZXN1bHRzLnNldChmaWxlLnBhdGgsIHtcbiAgICAgICAgY29udGVudDogb3JpZ2luYWxDb250ZW50LFxuICAgICAgICBuZXdDb250ZW50OiBjb250ZW50LFxuICAgICAgICBoYXNDaGFuZ2VzXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0cy53YXJuaW5ncyArPSBmaWxlV2FybmluZ3MubGVuZ3RoO1xuXG4gICAgICBmaWxlV2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHtcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYOKaoO+4jyAgJHtmaWxlLnBhdGh9OiAke3dhcm5pbmd9YCk7XG4gICAgICB9KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBwcm9jZXNzICR7ZmlsZS5wYXRofTpgLCBlcnJvcik7XG4gICAgICByZXN1bHRzLndhcm5pbmdzKys7XG4gICAgfVxuICB9XG5cbiAgaWYgKE9iamVjdC5rZXlzKGNzc0NsYXNzTWFwKS5sZW5ndGggPiAwKSB7XG4gICAgbG9nZ2VyLmluZm8oJ1xcbvCflIQgUGhhc2UgMzogUmVwbGFjaW5nIGNsYXNzTmFtZSByZWZlcmVuY2VzLi4uJyk7XG5cbiAgICBmb3IgKGNvbnN0IFtmaWxlUGF0aCwgZmlsZVJlc3VsdF0gb2YganN4RmlsZVJlc3VsdHMpIHtcbiAgICAgIGxldCBjb250ZW50ID0gZmlsZVJlc3VsdC5uZXdDb250ZW50O1xuICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmaWxlUmVzdWx0Lmhhc0NoYW5nZXM7XG5cbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50UmVzdWx0ID0gcmVwbGFjZUNsYXNzTmFtZVJlZmVyZW5jZXMoY29udGVudCwgY3NzQ2xhc3NNYXApO1xuICAgICAgaWYgKHJlcGxhY2VtZW50UmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgICAgY29udGVudCA9IHJlcGxhY2VtZW50UmVzdWx0LmNvZGU7XG4gICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICByZXN1bHRzLmNsYXNzZXNSZXBsYWNlZCArPSByZXBsYWNlbWVudFJlc3VsdC5yZXBsYWNlbWVudHM7XG4gICAgICAgIFxuICAgICAgICBsb2dnZXIudmVyYm9zZShgUmVwbGFjZWQgJHtyZXBsYWNlbWVudFJlc3VsdC5yZXBsYWNlbWVudHN9IGNsYXNzIHJlZmVyZW5jZXMgaW4gJHtwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKX1gKTtcbiAgICAgIH1cblxuICAgICAganN4RmlsZVJlc3VsdHMuc2V0KGZpbGVQYXRoLCB7XG4gICAgICAgIC4uLmZpbGVSZXN1bHQsXG4gICAgICAgIG5ld0NvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIGhhc0NoYW5nZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhbGxEZXNjZW5kYW50UnVsZXMubGVuZ3RoID4gMCkge1xuICAgIGxvZ2dlci5pbmZvKCdcXG7wn4yzIFBoYXNlIDMuNTogQXBwbHlpbmcgZGVzY2VuZGFudCBzZWxlY3RvciBydWxlcy4uLicpO1xuXG4gICAgZm9yIChjb25zdCBbZmlsZVBhdGgsIGZpbGVSZXN1bHRdIG9mIGpzeEZpbGVSZXN1bHRzKSB7XG4gICAgICBsZXQgY29udGVudCA9IGZpbGVSZXN1bHQubmV3Q29udGVudDtcbiAgICAgIGxldCBoYXNDaGFuZ2VzID0gZmlsZVJlc3VsdC5oYXNDaGFuZ2VzO1xuXG4gICAgICBjb25zdCBkZXNjZW5kYW50UmVzdWx0ID0gdHJhbnNmb3JtRGVzY2VuZGFudFNlbGVjdG9ycyhjb250ZW50LCBhbGxEZXNjZW5kYW50UnVsZXMpO1xuICAgICAgaWYgKGRlc2NlbmRhbnRSZXN1bHQuaGFzQ2hhbmdlcykge1xuICAgICAgICBjb250ZW50ID0gZGVzY2VuZGFudFJlc3VsdC5jb2RlO1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmVzdWx0cy5jbGFzc2VzUmVwbGFjZWQgKz0gZGVzY2VuZGFudFJlc3VsdC50cmFuc2Zvcm1hdGlvbnM7XG4gICAgICAgIFxuICAgICAgICBsb2dnZXIudmVyYm9zZShgQXBwbGllZCAke2Rlc2NlbmRhbnRSZXN1bHQudHJhbnNmb3JtYXRpb25zfSBkZXNjZW5kYW50IHRyYW5zZm9ybWF0aW9ucyBpbiAke3BhdGguYmFzZW5hbWUoZmlsZVBhdGgpfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzY2VuZGFudFJlc3VsdC53YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdHMud2FybmluZ3MgKz0gZGVzY2VuZGFudFJlc3VsdC53YXJuaW5ncy5sZW5ndGg7XG4gICAgICAgIGRlc2NlbmRhbnRSZXN1bHQud2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHtcbiAgICAgICAgICBsb2dnZXIudmVyYm9zZShg4pqg77iPICAke2ZpbGVQYXRofTogJHt3YXJuaW5nfWApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAganN4RmlsZVJlc3VsdHMuc2V0KGZpbGVQYXRoLCB7XG4gICAgICAgIC4uLmZpbGVSZXN1bHQsXG4gICAgICAgIG5ld0NvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIGhhc0NoYW5nZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxvZ2dlci5pbmZvKCdcXG7wn5K+IFBoYXNlIDQ6IFdyaXRpbmcgY2hhbmdlcy4uLicpO1xuXG4gIGZvciAoY29uc3QgW2ZpbGVQYXRoLCBmaWxlUmVzdWx0XSBvZiBqc3hGaWxlUmVzdWx0cykge1xuICAgIGlmIChmaWxlUmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBmaWxlV3JpdGVyLndyaXRlRmlsZShmaWxlUGF0aCwgZmlsZVJlc3VsdC5uZXdDb250ZW50LCBmaWxlUmVzdWx0LmNvbnRlbnQpO1xuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgcmVzdWx0cy5maWxlc01vZGlmaWVkKys7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFvcHRpb25zLnNraXBFeHRlcm5hbCkge1xuICAgIGZvciAoY29uc3QgW2ZpbGVQYXRoLCBmaWxlUmVzdWx0XSBvZiBjc3NGaWxlUmVzdWx0cykge1xuICAgICAgaWYgKCFmaWxlUmVzdWx0Lmhhc0NoYW5nZXMpIGNvbnRpbnVlO1xuXG4gICAgICBpZiAoZmlsZVJlc3VsdC5jYW5EZWxldGUgJiYgb3B0aW9ucy5kZWxldGVDc3MpIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGZpbGVXcml0ZXIuZGVsZXRlRmlsZShmaWxlUGF0aCk7XG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgcmVzdWx0cy5maWxlc01vZGlmaWVkKys7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYPCfl5HvuI8gIERlbGV0ZWQgJHtwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKX0gKGFsbCBydWxlcyBjb252ZXJ0ZWQpYCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmlsZVJlc3VsdC5jYW5EZWxldGUgJiYgIW9wdGlvbnMuZGVsZXRlQ3NzKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKGDihLnvuI8gICR7cGF0aC5iYXNlbmFtZShmaWxlUGF0aCl9IGlzIG5vdyBlbXB0eSAodXNlIC0tZGVsZXRlLWNzcyB0byByZW1vdmUpYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVSZXN1bHQuZnVsbHlDb252ZXJ0aWJsZSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZmlsZVdyaXRlci53cml0ZUZpbGUoZmlsZVBhdGgsIGZpbGVSZXN1bHQubmV3Q29udGVudCwgZmlsZVJlc3VsdC5jb250ZW50KTtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICByZXN1bHRzLmZpbGVzTW9kaWZpZWQrKztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGZpbGVXcml0ZXIud3JpdGVGaWxlKGZpbGVQYXRoLCBmaWxlUmVzdWx0Lm5ld0NvbnRlbnQsIGZpbGVSZXN1bHQuY29udGVudCk7XG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgcmVzdWx0cy5maWxlc01vZGlmaWVkKys7XG4gICAgICAgICAgY29uc3QgY29udmVydGVkQ291bnQgPSBmaWxlUmVzdWx0LnJ1bGVzLmZpbHRlcihyID0+IHIuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGggPiAwKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgdG90YWxDb3VudCA9IGZpbGVSZXN1bHQucnVsZXMubGVuZ3RoO1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGDwn5OdICR7cGF0aC5iYXNlbmFtZShmaWxlUGF0aCl9OiBjb252ZXJ0ZWQgJHtjb252ZXJ0ZWRDb3VudH0vJHt0b3RhbENvdW50fSBydWxlcyAodW5jb252ZXJ0ZWQgcHJvcGVydGllcyBrZXB0KWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ2xhc3NJbmZvRnJvbVJ1bGUocnVsZTogQ1NTUnVsZSwgc291cmNlRmlsZTogc3RyaW5nKTogQ2xhc3NJbmZvIHtcbiAgcmV0dXJuIHtcbiAgICB1dGlsaXRpZXM6IHJ1bGUudXRpbGl0aWVzLm1hcCh1ID0+ICh7XG4gICAgICB2YWx1ZTogdS52YWx1ZSxcbiAgICAgIHZhcmlhbnRzOiBub3JtYWxpemVWYXJpYW50T3JkZXIoWy4uLnUudmFyaWFudHNdKSxcbiAgICAgIGNzc1Byb3BlcnR5OiB1LmNzc1Byb3BlcnR5LFxuICAgICAgc3BlY2lmaWNpdHk6IHUuc3BlY2lmaWNpdHksXG4gICAgICBzb3VyY2VPcmRlcjogdS5zb3VyY2VPcmRlcixcbiAgICAgIG9yaWdpbmFsU2VsZWN0b3I6IHJ1bGUuc2VsZWN0b3JcbiAgICB9KSksXG4gICAgc291cmNlRmlsZSxcbiAgICBmdWxseUNvbnZlcnRpYmxlOiB0cnVlXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlUnVsZUludG9DbGFzc0luZm8oaW5mbzogQ2xhc3NJbmZvLCBydWxlOiBDU1NSdWxlKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdXRpbGl0eSBvZiBydWxlLnV0aWxpdGllcykge1xuICAgIGNvbnN0IHV0aWxpdHlXaXRoTWV0YTogVXRpbGl0eVdpdGhNZXRhID0ge1xuICAgICAgdmFsdWU6IHV0aWxpdHkudmFsdWUsXG4gICAgICB2YXJpYW50czogbm9ybWFsaXplVmFyaWFudE9yZGVyKFsuLi51dGlsaXR5LnZhcmlhbnRzXSksXG4gICAgICBjc3NQcm9wZXJ0eTogdXRpbGl0eS5jc3NQcm9wZXJ0eSxcbiAgICAgIHNwZWNpZmljaXR5OiB1dGlsaXR5LnNwZWNpZmljaXR5LFxuICAgICAgc291cmNlT3JkZXI6IHV0aWxpdHkuc291cmNlT3JkZXIsXG4gICAgICBvcmlnaW5hbFNlbGVjdG9yOiBydWxlLnNlbGVjdG9yXG4gICAgfTtcbiAgICBcbiAgICBpbmZvLnV0aWxpdGllcy5wdXNoKHV0aWxpdHlXaXRoTWV0YSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZW1ibGVUYWlsd2luZENsYXNzZXMoaW5mbzogQ2xhc3NJbmZvKTogc3RyaW5nIHtcbiAgY29uc3QgeyByZXNvbHZlZCB9ID0gcmVzb2x2ZUNvbmZsaWN0cyhpbmZvLnV0aWxpdGllcywgZmFsc2UpO1xuICByZXR1cm4gcmVzb2x2ZWRVdGlsaXRpZXNUb1N0cmluZ3MocmVzb2x2ZWQpLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNsYXNzTmFtZVJlZmVyZW5jZXMoXG4gIGNvZGU6IHN0cmluZywgXG4gIGNsYXNzTWFwOiBDU1NDbGFzc01hcFxuKTogeyBcbiAgY29kZTogc3RyaW5nOyBcbiAgaGFzQ2hhbmdlczogYm9vbGVhbjsgXG4gIHJlcGxhY2VtZW50czogbnVtYmVyIFxufSB7XG4gIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gIGxldCByZXBsYWNlbWVudHMgPSAwO1xuICBsZXQgbW9kaWZpZWRDb2RlID0gY29kZTtcblxuICBPYmplY3QuZW50cmllcyhjbGFzc01hcCkuZm9yRWFjaCgoW29sZENsYXNzLCBpbmZvXSkgPT4ge1xuICAgIGlmICghaW5mby5mdWxseUNvbnZlcnRpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdGFpbHdpbmRDbGFzc1N0cmluZyA9IGFzc2VtYmxlVGFpbHdpbmRDbGFzc2VzKGluZm8pO1xuICAgIFxuICAgIGNvbnN0IHBhdHRlcm4xID0gbmV3IFJlZ0V4cChgY2xhc3NOYW1lPVwiJHtvbGRDbGFzc31cImAsICdnJyk7XG4gICAgaWYgKHBhdHRlcm4xLnRlc3QobW9kaWZpZWRDb2RlKSkge1xuICAgICAgbW9kaWZpZWRDb2RlID0gbW9kaWZpZWRDb2RlLnJlcGxhY2UocGF0dGVybjEsIGBjbGFzc05hbWU9XCIke3RhaWx3aW5kQ2xhc3NTdHJpbmd9XCJgKTtcbiAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgcmVwbGFjZW1lbnRzKys7XG4gICAgICBsb2dnZXIudmVyYm9zZShgUmVwbGFjZWQgY2xhc3NOYW1lPVwiJHtvbGRDbGFzc31cIiB3aXRoIFwiJHt0YWlsd2luZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF0dGVybjIgPSBuZXcgUmVnRXhwKGBjbGFzc05hbWU9XFxcXHtcIiR7b2xkQ2xhc3N9XCJcXFxcfWAsICdnJyk7XG4gICAgaWYgKHBhdHRlcm4yLnRlc3QobW9kaWZpZWRDb2RlKSkge1xuICAgICAgbW9kaWZpZWRDb2RlID0gbW9kaWZpZWRDb2RlLnJlcGxhY2UocGF0dGVybjIsIGBjbGFzc05hbWU9XCIke3RhaWx3aW5kQ2xhc3NTdHJpbmd9XCJgKTtcbiAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgcmVwbGFjZW1lbnRzKys7XG4gICAgICBsb2dnZXIudmVyYm9zZShgUmVwbGFjZWQgY2xhc3NOYW1lPXtcIiR7b2xkQ2xhc3N9XCJ9IHdpdGggXCIke3RhaWx3aW5kQ2xhc3NTdHJpbmd9XCJgKTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXR0ZXJuMyA9IG5ldyBSZWdFeHAoYGNsYXNzTmFtZT1cXFxce1xcYFxcXFxzKiR7b2xkQ2xhc3N9XFxcXHMqXFxgXFxcXH1gLCAnZycpO1xuICAgIGlmIChwYXR0ZXJuMy50ZXN0KG1vZGlmaWVkQ29kZSkpIHtcbiAgICAgIG1vZGlmaWVkQ29kZSA9IG1vZGlmaWVkQ29kZS5yZXBsYWNlKHBhdHRlcm4zLCBgY2xhc3NOYW1lPVwiJHt0YWlsd2luZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgIHJlcGxhY2VtZW50cysrO1xuICAgICAgbG9nZ2VyLnZlcmJvc2UoYFJlcGxhY2VkIGNsYXNzTmFtZT17XFxgJHtvbGRDbGFzc31cXGB9IHdpdGggXCIke3RhaWx3aW5kQ2xhc3NTdHJpbmd9XCJgKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB7IGNvZGU6IG1vZGlmaWVkQ29kZSwgaGFzQ2hhbmdlcywgcmVwbGFjZW1lbnRzIH07XG59Il19
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF5REEsd0NBa1JDO0FBM1VELDRDQUFvQjtBQUNwQixnREFBd0I7QUFFeEIscURBQWtEO0FBQ2xELDJDQUF3QztBQUN4QywyQ0FBcUU7QUFDckUsNkNBQTBDO0FBRTFDLDJDQUF3QztBQUN4QyxtRUFBa0U7QUFDbEUsK0RBSWtDO0FBQ2xDLHlFQUEwRTtBQUMxRSwrREFLa0M7QUFvQzNCLEtBQUssVUFBVSxjQUFjLENBQ2xDLEtBQW9CLEVBQ3BCLE9BQXlCO0lBRXpCLE1BQU0sT0FBTyxHQUFxQjtRQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDMUIsYUFBYSxFQUFFLENBQUM7UUFDaEIsZUFBZSxFQUFFLENBQUM7UUFDbEIsZUFBZSxFQUFFLENBQUM7UUFDbEIsUUFBUSxFQUFFLENBQUM7S0FDWixDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSwrQkFBYyxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDLENBQUM7SUFDaEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUN2RCxNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELE1BQU0sVUFBVSxHQUFHLElBQUksdUJBQVUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUU5RCxJQUFBLHlDQUFvQixHQUFFLENBQUM7SUFFdkIsTUFBTSxXQUFXLEdBQWdCLEVBQUUsQ0FBQztJQUNwQyxNQUFNLGtCQUFrQixHQUFjLEVBQUUsQ0FBQztJQUN6QyxNQUFNLGNB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QyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsWUFBWSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGNBQWMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO2dCQUNwRixVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUNsQixZQUFZLEVBQUUsQ0FBQztnQkFDZixlQUFNLENBQUMsT0FBTyxDQUFDLDRCQUE0QixRQUFRLFVBQVUsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUM7QUFDMUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFNjYW5uZWRGaWxlIH0gZnJvbSAnLi9zY2FubmVyJztcbmltcG9ydCB7IFRhaWx3aW5kTWFwcGVyIH0gZnJvbSAnLi90YWlsd2luZE1hcHBlcic7XG5pbXBvcnQgeyBKU1hQYXJzZXIgfSBmcm9tICcuL2pzeFBhcnNlcic7XG5pbXBvcnQgeyBDU1NQYXJzZXIsIENTU1J1bGUsIFV0aWxpdHlXaXRoVmFyaWFudCB9IGZyb20gJy4vY3NzUGFyc2VyJztcbmltcG9ydCB7IEZpbGVXcml0ZXIgfSBmcm9tICcuL2ZpbGVXcml0ZXInO1xuaW1wb3J0IHsgVGFpbHdpbmRDb25maWcgfSBmcm9tICcuL3V0aWxzL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL3V0aWxzL2xvZ2dlcic7XG5pbXBvcnQgeyBjbGVhckJyZWFrcG9pbnRDYWNoZSB9IGZyb20gJy4vdXRpbHMvYnJlYWtwb2ludFJlc29sdmVyJztcbmltcG9ydCB7IFxuICBhc3NlbWJsZVV0aWxpdGllcywgXG4gIG1lcmdlVXRpbGl0aWVzLFxuICBub3JtYWxpemVWYXJpYW50T3JkZXIgXG59IGZyb20gJy4vdXRpbHMvdmFyaWFudEFzc2VtYmxlcic7XG5pbXBvcnQgeyB0cmFuc2Zvcm1EZXNjZW5kYW50U2VsZWN0b3JzIH0gZnJvbSAnLi9qc3hEZXNjZW5kYW50VHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgXG4gIFV0aWxpdHlXaXRoTWV0YSwgXG4gIFJlc29sdmVkVXRpbGl0eSwgXG4gIHJlc29sdmVDb25mbGljdHMsIFxuICByZXNvbHZlZFV0aWxpdGllc1RvU3RyaW5ncyBcbn0gZnJvbSAnLi91dGlscy9jb25mbGljdFJlc29sdmVyJztcbmltcG9ydCB7IFNwZWNpZmljaXR5LCBaRVJPX1NQRUNJRklDSVRZIH0gZnJvbSAnLi91dGlscy9zcGVjaWZpY2l0eUNhbGN1bGF0b3InO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZm9ybU9wdGlvbnMge1xuICBkcnlSdW46IGJvb2xlYW47XG4gIGRlbGV0ZUNzczogYm9vbGVhbjtcbiAgc2tpcEV4dGVybmFsOiBib29sZWFuO1xuICBza2lwSW5saW5lOiBib29sZWFuO1xuICBza2lwSW50ZXJuYWw6IGJvb2xlYW47XG4gIHRhaWx3aW5kQ29uZmlnOiBUYWlsd2luZENvbmZpZyB8IG51bGw7XG4gIHByb2plY3RSb290OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmb3JtUmVzdWx0cyB7XG4gIGZpbGVzU2Nhbm5lZDogbnVtYmVyO1xuICBmaWxlc01vZGlmaWVkOiBudW1iZXI7XG4gIHN0eWxlc0NvbnZlcnRlZDogbnVtYmVyO1xuICBjbGFzc2VzUmVwbGFjZWQ6IG51bWJlcjtcbiAgd2FybmluZ3M6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENsYXNzSW5mbyB7XG4gIHV0aWxpdGllczogVXRpbGl0eVdpdGhNZXRhW107XG4gIHNvdXJjZUZpbGU6IHN0cmluZztcbiAgZnVsbHlDb252ZXJ0aWJsZTogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENTU0NsYXNzTWFwIHtcbiAgW2NsYXNzTmFtZTogc3RyaW5nXTogQ2xhc3NJbmZvO1xufVxuXG5pbnRlcmZhY2UgQ29sbGVjdGVkUnVsZXMge1xuICBzaW1wbGVSdWxlczogQ1NTUnVsZVtdO1xuICBkZXNjZW5kYW50UnVsZXM6IENTU1J1bGVbXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHRyYW5zZm9ybUZpbGVzKFxuICBmaWxlczogU2Nhbm5lZEZpbGVbXSxcbiAgb3B0aW9uczogVHJhbnNmb3JtT3B0aW9uc1xuKTogUHJvbWlzZTxUcmFuc2Zvcm1SZXN1bHRzPiB7XG4gIGNvbnN0IHJlc3VsdHM6IFRyYW5zZm9ybVJlc3VsdHMgPSB7XG4gICAgZmlsZXNTY2FubmVkOiBmaWxlcy5sZW5ndGgsXG4gICAgZmlsZXNNb2RpZmllZDogMCxcbiAgICBzdHlsZXNDb252ZXJ0ZWQ6IDAsXG4gICAgY2xhc3Nlc1JlcGxhY2VkOiAwLFxuICAgIHdhcm5pbmdzOiAwXG4gIH07XG5cbiAgY29uc3QgbWFwcGVyID0gbmV3IFRhaWx3aW5kTWFwcGVyKG9wdGlvbnMudGFpbHdpbmRDb25maWcgfHwge30pO1xuICBjb25zdCBqc3hQYXJzZXIgPSBuZXcgSlNYUGFyc2VyKG1hcHBlcik7XG4gIGNvbnN0IHNjcmVlbnMgPSBvcHRpb25zLnRhaWx3aW5kQ29uZmlnPy50aGVtZT8uc2NyZWVucztcbiAgY29uc3QgY3NzUGFyc2VyID0gbmV3IENTU1BhcnNlcihtYXBwZXIsIHNjcmVlbnMpO1xuICBjb25zdCBmaWxlV3JpdGVyID0gbmV3IEZpbGVXcml0ZXIoeyBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuIH0pO1xuXG4gIGNsZWFyQnJlYWtwb2ludENhY2hlKCk7XG5cbiAgY29uc3QgY3NzQ2xhc3NNYXA6IENTU0NsYXNzTWFwID0ge307XG4gIGNvbnN0IGFsbERlc2NlbmRhbnRSdWxlczogQ1NTUnVsZVtdID0gW107XG4gIGNvbnN0IGNzc0ZpbGVSZXN1bHRzOiBNYXA8c3RyaW5nLCB7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIG5ld0NvbnRlbnQ6IHN0cmluZztcbiAgICBydWxlczogQ1NTUnVsZVtdO1xuICAgIGNhbkRlbGV0ZTogYm9vbGVhbjtcbiAgICBoYXNDaGFuZ2VzOiBib29sZWFuO1xuICAgIGZ1bGx5Q29udmVydGlibGU6IGJvb2xlYW47XG4gIH0+ID0gbmV3IE1hcCgpO1xuXG4gIGxvZ2dlci5pbmZvKCdcXG7wn5SNIFBoYXNlIDE6IEFuYWx5emluZyBmaWxlcy4uLicpO1xuXG4gIGlmICghb3B0aW9ucy5za2lwRXh0ZXJuYWwpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnY3NzJykpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZS5wYXRoLCAndXRmLTgnKTtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3NzUGFyc2VyLnBhcnNlKGNvbnRlbnQsIGZpbGUucGF0aCk7XG5cbiAgICAgICAgY29uc3QgdG90YWxSdWxlcyA9IHJlc3VsdC5ydWxlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGZ1bGx5Q29udmVydGVkUnVsZXMgPSByZXN1bHQucnVsZXMuZmlsdGVyKHIgPT4gci5mdWxseUNvbnZlcnRlZCkubGVuZ3RoO1xuICAgICAgICBjb25zdCBwYXJ0aWFsbHlDb252ZXJ0ZWRSdWxlcyA9IHJlc3VsdC5ydWxlcy5maWx0ZXIociA9PiByLnBhcnRpYWxDb252ZXJzaW9uKS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGZ1bGx5Q29udmVydGlibGUgPSB0b3RhbFJ1bGVzID4gMCAmJiB0b3RhbFJ1bGVzID09PSBmdWxseUNvbnZlcnRlZFJ1bGVzICYmIHBhcnRpYWxseUNvbnZlcnRlZFJ1bGVzID09PSAwO1xuXG4gICAgICAgIHJlc3VsdC5ydWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgICAgICAgIGlmIChydWxlLmlzRGVzY2VuZGFudCkge1xuICAgICAgICAgICAgaWYgKHJ1bGUuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGFsbERlc2NlbmRhbnRSdWxlcy5wdXNoKHJ1bGUpO1xuICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmRlY2xhcmF0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChydWxlLmNsYXNzTmFtZSAmJiBydWxlLmNvbnZlcnRlZENsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBjc3NDbGFzc01hcFtydWxlLmNsYXNzTmFtZV07XG4gICAgICAgICAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgICAgICAgbWVyZ2VSdWxlSW50b0NsYXNzSW5mbyhleGlzdGluZywgcnVsZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjc3NDbGFzc01hcFtydWxlLmNsYXNzTmFtZV0gPSBidWlsZENsYXNzSW5mb0Zyb21SdWxlKHJ1bGUsIGZpbGUucGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5mdWxseUNvbnZlcnRlZCkge1xuICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmRlY2xhcmF0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmNvbnZlcnRlZENsYXNzZXMubGVuZ3RoO1xuICAgICAgICAgICAgICBsb2dnZXIudmVyYm9zZShgICBSdWxlIC4ke3J1bGUuY2xhc3NOYW1lfTogcGFydGlhbCBjb252ZXJzaW9uICgke3J1bGUuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGh9LyR7cnVsZS5kZWNsYXJhdGlvbnMubGVuZ3RofSBkZWNsYXJhdGlvbnMpYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBjc3NGaWxlUmVzdWx0cy5zZXQoZmlsZS5wYXRoLCB7XG4gICAgICAgICAgY29udGVudCxcbiAgICAgICAgICBuZXdDb250ZW50OiByZXN1bHQuY3NzLFxuICAgICAgICAgIHJ1bGVzOiByZXN1bHQucnVsZXMsXG4gICAgICAgICAgY2FuRGVsZXRlOiByZXN1bHQuY2FuRGVsZXRlLFxuICAgICAgICAgIGhhc0NoYW5nZXM6IHJlc3VsdC5oYXNDaGFuZ2VzLFxuICAgICAgICAgIGZ1bGx5Q29udmVydGlibGVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVzdWx0cy53YXJuaW5ncyArPSByZXN1bHQud2FybmluZ3MubGVuZ3RoO1xuXG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGBBbmFseXplZCAke2ZpbGUucGF0aH06YCk7XG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGAgIC0gVG90YWwgcnVsZXM6ICR7dG90YWxSdWxlc31gKTtcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYCAgLSBGdWxseSBjb252ZXJ0ZWQgcnVsZXM6ICR7ZnVsbHlDb252ZXJ0ZWRSdWxlc31gKTtcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYCAgLSBQYXJ0aWFsbHkgY29udmVydGVkIHJ1bGVzOiAke3BhcnRpYWxseUNvbnZlcnRlZFJ1bGVzfWApO1xuICAgICAgICBsb2dnZXIudmVyYm9zZShgICAtIEZ1bGx5IGNvbnZlcnRpYmxlOiAke2Z1bGx5Q29udmVydGlibGV9YCk7XG5cbiAgICAgICAgcmVzdWx0Lndhcm5pbmdzLmZvckVhY2god2FybmluZyA9PiB7XG4gICAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYOKaoO+4jyAgJHtmaWxlLnBhdGh9OiAke3dhcm5pbmd9YCk7XG4gICAgICAgIH0pO1xuXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBhbmFseXplICR7ZmlsZS5wYXRofTpgLCBlcnJvcik7XG4gICAgICAgIHJlc3VsdHMud2FybmluZ3MrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2dnZXIuaW5mbygnXFxu4pqb77iPICBQaGFzZSAyOiBUcmFuc2Zvcm1pbmcgUmVhY3QgY29tcG9uZW50cy4uLicpO1xuXG4gIGNvbnN0IGpzeEZpbGVSZXN1bHRzOiBNYXA8c3RyaW5nLCB7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIG5ld0NvbnRlbnQ6IHN0cmluZztcbiAgICBoYXNDaGFuZ2VzOiBib29sZWFuO1xuICB9PiA9IG5ldyBNYXAoKTtcblxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMuZmlsdGVyKGYgPT4gZi50eXBlID09PSAnanN4JykpIHtcbiAgICB0cnkge1xuICAgICAgbGV0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZS5wYXRoLCAndXRmLTgnKTtcbiAgICAgIGNvbnN0IG9yaWdpbmFsQ29udGVudCA9IGNvbnRlbnQ7XG4gICAgICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgbGV0IGZpbGVXYXJuaW5nczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgaWYgKCFvcHRpb25zLnNraXBJbmxpbmUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBqc3hSZXN1bHQgPSBqc3hQYXJzZXIucGFyc2UoY29udGVudCwgZmlsZS5wYXRoKTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoanN4UmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBqc3hSZXN1bHQuY29kZTtcbiAgICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICAgICAgcmVzdWx0cy5zdHlsZXNDb252ZXJ0ZWQgKz0ganN4UmVzdWx0LnRyYW5zZm9ybWF0aW9ucy5yZWR1Y2UoXG4gICAgICAgICAgICAgIChzdW0sIHQpID0+IHN1bSArIHQuY2xhc3Nlcy5sZW5ndGgsIDBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaCguLi5qc3hSZXN1bHQud2FybmluZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIHBhcnNlIEpTWCBpbmxpbmUgc3R5bGVzIGluICR7ZmlsZS5wYXRofTogJHtlcnJvcn1gKTtcbiAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaChgSlNYIHBhcnNlIGVycm9yOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghb3B0aW9ucy5za2lwSW50ZXJuYWwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBpbnRlcm5hbFJlc3VsdCA9IGF3YWl0IGNzc1BhcnNlci5wYXJzZUludGVybmFsQ1NTKGNvbnRlbnQsIGZpbGUucGF0aCk7XG4gICAgICAgICAgXG4gICAgICAgICAgaWYgKGludGVybmFsUmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgICAgICAgIGNvbnRlbnQgPSBpbnRlcm5hbFJlc3VsdC5odG1sO1xuICAgICAgICAgICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGludGVybmFsUmVzdWx0LnJ1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgICAgICAgICAgIGlmIChydWxlLmlzRGVzY2VuZGFudCkge1xuICAgICAgICAgICAgICAgIGlmIChydWxlLmNvbnZlcnRlZENsYXNzZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgYWxsRGVzY2VuZGFudFJ1bGVzLnB1c2gocnVsZSk7XG4gICAgICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmRlY2xhcmF0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJ1bGUuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGggPiAwICYmIHJ1bGUuY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBjc3NDbGFzc01hcFtydWxlLmNsYXNzTmFtZV07XG4gICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZVJ1bGVJbnRvQ2xhc3NJbmZvKGV4aXN0aW5nLCBydWxlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgY3NzQ2xhc3NNYXBbcnVsZS5jbGFzc05hbWVdID0gYnVpbGRDbGFzc0luZm9Gcm9tUnVsZShydWxlLCBmaWxlLnBhdGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHRzLnN0eWxlc0NvbnZlcnRlZCArPSBydWxlLmRlY2xhcmF0aW9ucy5sZW5ndGg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaCguLi5pbnRlcm5hbFJlc3VsdC53YXJuaW5ncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ2dlci53YXJuKGBGYWlsZWQgdG8gcGFyc2UgaW50ZXJuYWwgQ1NTIGluICR7ZmlsZS5wYXRofTogJHtlcnJvcn1gKTtcbiAgICAgICAgICBmaWxlV2FybmluZ3MucHVzaChgSW50ZXJuYWwgQ1NTIHBhcnNlIGVycm9yOiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGpzeEZpbGVSZXN1bHRzLnNldChmaWxlLnBhdGgsIHtcbiAgICAgICAgY29udGVudDogb3JpZ2luYWxDb250ZW50LFxuICAgICAgICBuZXdDb250ZW50OiBjb250ZW50LFxuICAgICAgICBoYXNDaGFuZ2VzXG4gICAgICB9KTtcblxuICAgICAgcmVzdWx0cy53YXJuaW5ncyArPSBmaWxlV2FybmluZ3MubGVuZ3RoO1xuXG4gICAgICBmaWxlV2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHtcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYOKaoO+4jyAgJHtmaWxlLnBhdGh9OiAke3dhcm5pbmd9YCk7XG4gICAgICB9KTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBwcm9jZXNzICR7ZmlsZS5wYXRofTpgLCBlcnJvcik7XG4gICAgICByZXN1bHRzLndhcm5pbmdzKys7XG4gICAgfVxuICB9XG5cbiAgaWYgKE9iamVjdC5rZXlzKGNzc0NsYXNzTWFwKS5sZW5ndGggPiAwKSB7XG4gICAgbG9nZ2VyLmluZm8oJ1xcbvCflIQgUGhhc2UgMzogUmVwbGFjaW5nIGNsYXNzTmFtZSByZWZlcmVuY2VzLi4uJyk7XG5cbiAgICBmb3IgKGNvbnN0IFtmaWxlUGF0aCwgZmlsZVJlc3VsdF0gb2YganN4RmlsZVJlc3VsdHMpIHtcbiAgICAgIGxldCBjb250ZW50ID0gZmlsZVJlc3VsdC5uZXdDb250ZW50O1xuICAgICAgbGV0IGhhc0NoYW5nZXMgPSBmaWxlUmVzdWx0Lmhhc0NoYW5nZXM7XG5cbiAgICAgIGNvbnN0IHJlcGxhY2VtZW50UmVzdWx0ID0gcmVwbGFjZUNsYXNzTmFtZVJlZmVyZW5jZXMoY29udGVudCwgY3NzQ2xhc3NNYXApO1xuICAgICAgaWYgKHJlcGxhY2VtZW50UmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgICAgY29udGVudCA9IHJlcGxhY2VtZW50UmVzdWx0LmNvZGU7XG4gICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICByZXN1bHRzLmNsYXNzZXNSZXBsYWNlZCArPSByZXBsYWNlbWVudFJlc3VsdC5yZXBsYWNlbWVudHM7XG4gICAgICAgIFxuICAgICAgICBsb2dnZXIudmVyYm9zZShgUmVwbGFjZWQgJHtyZXBsYWNlbWVudFJlc3VsdC5yZXBsYWNlbWVudHN9IGNsYXNzIHJlZmVyZW5jZXMgaW4gJHtwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKX1gKTtcbiAgICAgIH1cblxuICAgICAganN4RmlsZVJlc3VsdHMuc2V0KGZpbGVQYXRoLCB7XG4gICAgICAgIC4uLmZpbGVSZXN1bHQsXG4gICAgICAgIG5ld0NvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIGhhc0NoYW5nZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhbGxEZXNjZW5kYW50UnVsZXMubGVuZ3RoID4gMCkge1xuICAgIGxvZ2dlci5pbmZvKCdcXG7wn4yzIFBoYXNlIDMuNTogQXBwbHlpbmcgZGVzY2VuZGFudCBzZWxlY3RvciBydWxlcy4uLicpO1xuXG4gICAgZm9yIChjb25zdCBbZmlsZVBhdGgsIGZpbGVSZXN1bHRdIG9mIGpzeEZpbGVSZXN1bHRzKSB7XG4gICAgICBsZXQgY29udGVudCA9IGZpbGVSZXN1bHQubmV3Q29udGVudDtcbiAgICAgIGxldCBoYXNDaGFuZ2VzID0gZmlsZVJlc3VsdC5oYXNDaGFuZ2VzO1xuXG4gICAgICBjb25zdCBkZXNjZW5kYW50UmVzdWx0ID0gdHJhbnNmb3JtRGVzY2VuZGFudFNlbGVjdG9ycyhjb250ZW50LCBhbGxEZXNjZW5kYW50UnVsZXMpO1xuICAgICAgaWYgKGRlc2NlbmRhbnRSZXN1bHQuaGFzQ2hhbmdlcykge1xuICAgICAgICBjb250ZW50ID0gZGVzY2VuZGFudFJlc3VsdC5jb2RlO1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmVzdWx0cy5jbGFzc2VzUmVwbGFjZWQgKz0gZGVzY2VuZGFudFJlc3VsdC50cmFuc2Zvcm1hdGlvbnM7XG4gICAgICAgIFxuICAgICAgICBsb2dnZXIudmVyYm9zZShgQXBwbGllZCAke2Rlc2NlbmRhbnRSZXN1bHQudHJhbnNmb3JtYXRpb25zfSBkZXNjZW5kYW50IHRyYW5zZm9ybWF0aW9ucyBpbiAke3BhdGguYmFzZW5hbWUoZmlsZVBhdGgpfWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGVzY2VuZGFudFJlc3VsdC53YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdHMud2FybmluZ3MgKz0gZGVzY2VuZGFudFJlc3VsdC53YXJuaW5ncy5sZW5ndGg7XG4gICAgICAgIGRlc2NlbmRhbnRSZXN1bHQud2FybmluZ3MuZm9yRWFjaCh3YXJuaW5nID0+IHtcbiAgICAgICAgICBsb2dnZXIudmVyYm9zZShg4pqg77iPICAke2ZpbGVQYXRofTogJHt3YXJuaW5nfWApO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAganN4RmlsZVJlc3VsdHMuc2V0KGZpbGVQYXRoLCB7XG4gICAgICAgIC4uLmZpbGVSZXN1bHQsXG4gICAgICAgIG5ld0NvbnRlbnQ6IGNvbnRlbnQsXG4gICAgICAgIGhhc0NoYW5nZXNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxvZ2dlci5pbmZvKCdcXG7wn5K+IFBoYXNlIDQ6IFdyaXRpbmcgY2hhbmdlcy4uLicpO1xuXG4gIGZvciAoY29uc3QgW2ZpbGVQYXRoLCBmaWxlUmVzdWx0XSBvZiBqc3hGaWxlUmVzdWx0cykge1xuICAgIGlmIChmaWxlUmVzdWx0Lmhhc0NoYW5nZXMpIHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCBmaWxlV3JpdGVyLndyaXRlRmlsZShmaWxlUGF0aCwgZmlsZVJlc3VsdC5uZXdDb250ZW50LCBmaWxlUmVzdWx0LmNvbnRlbnQpO1xuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgcmVzdWx0cy5maWxlc01vZGlmaWVkKys7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFvcHRpb25zLnNraXBFeHRlcm5hbCkge1xuICAgIGZvciAoY29uc3QgW2ZpbGVQYXRoLCBmaWxlUmVzdWx0XSBvZiBjc3NGaWxlUmVzdWx0cykge1xuICAgICAgaWYgKCFmaWxlUmVzdWx0Lmhhc0NoYW5nZXMpIGNvbnRpbnVlO1xuXG4gICAgICBpZiAoZmlsZVJlc3VsdC5jYW5EZWxldGUgJiYgb3B0aW9ucy5kZWxldGVDc3MpIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGZpbGVXcml0ZXIuZGVsZXRlRmlsZShmaWxlUGF0aCk7XG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgcmVzdWx0cy5maWxlc01vZGlmaWVkKys7XG4gICAgICAgICAgbG9nZ2VyLmluZm8oYPCfl5HvuI8gIERlbGV0ZWQgJHtwYXRoLmJhc2VuYW1lKGZpbGVQYXRoKX0gKGFsbCBydWxlcyBjb252ZXJ0ZWQpYCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZmlsZVJlc3VsdC5jYW5EZWxldGUgJiYgIW9wdGlvbnMuZGVsZXRlQ3NzKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKGDihLnvuI8gICR7cGF0aC5iYXNlbmFtZShmaWxlUGF0aCl9IGlzIG5vdyBlbXB0eSAodXNlIC0tZGVsZXRlLWNzcyB0byByZW1vdmUpYCk7XG4gICAgICB9IGVsc2UgaWYgKGZpbGVSZXN1bHQuZnVsbHlDb252ZXJ0aWJsZSkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZmlsZVdyaXRlci53cml0ZUZpbGUoZmlsZVBhdGgsIGZpbGVSZXN1bHQubmV3Q29udGVudCwgZmlsZVJlc3VsdC5jb250ZW50KTtcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICByZXN1bHRzLmZpbGVzTW9kaWZpZWQrKztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGZpbGVXcml0ZXIud3JpdGVGaWxlKGZpbGVQYXRoLCBmaWxlUmVzdWx0Lm5ld0NvbnRlbnQsIGZpbGVSZXN1bHQuY29udGVudCk7XG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgcmVzdWx0cy5maWxlc01vZGlmaWVkKys7XG4gICAgICAgICAgY29uc3QgY29udmVydGVkQ291bnQgPSBmaWxlUmVzdWx0LnJ1bGVzLmZpbHRlcihyID0+IHIuY29udmVydGVkQ2xhc3Nlcy5sZW5ndGggPiAwKS5sZW5ndGg7XG4gICAgICAgICAgY29uc3QgdG90YWxDb3VudCA9IGZpbGVSZXN1bHQucnVsZXMubGVuZ3RoO1xuICAgICAgICAgIGxvZ2dlci5pbmZvKGDwn5OdICR7cGF0aC5iYXNlbmFtZShmaWxlUGF0aCl9OiBjb252ZXJ0ZWQgJHtjb252ZXJ0ZWRDb3VudH0vJHt0b3RhbENvdW50fSBydWxlcyAodW5jb252ZXJ0ZWQgcHJvcGVydGllcyBrZXB0KWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ2xhc3NJbmZvRnJvbVJ1bGUocnVsZTogQ1NTUnVsZSwgc291cmNlRmlsZTogc3RyaW5nKTogQ2xhc3NJbmZvIHtcbiAgcmV0dXJuIHtcbiAgICB1dGlsaXRpZXM6IHJ1bGUudXRpbGl0aWVzLm1hcCh1ID0+ICh7XG4gICAgICB2YWx1ZTogdS52YWx1ZSxcbiAgICAgIHZhcmlhbnRzOiBub3JtYWxpemVWYXJpYW50T3JkZXIoWy4uLnUudmFyaWFudHNdKSxcbiAgICAgIGNzc1Byb3BlcnR5OiB1LmNzc1Byb3BlcnR5LFxuICAgICAgc3BlY2lmaWNpdHk6IHUuc3BlY2lmaWNpdHksXG4gICAgICBzb3VyY2VPcmRlcjogdS5zb3VyY2VPcmRlcixcbiAgICAgIG9yaWdpbmFsU2VsZWN0b3I6IHJ1bGUuc2VsZWN0b3JcbiAgICB9KSksXG4gICAgc291cmNlRmlsZSxcbiAgICBmdWxseUNvbnZlcnRpYmxlOiBydWxlLmZ1bGx5Q29udmVydGVkXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlUnVsZUludG9DbGFzc0luZm8oaW5mbzogQ2xhc3NJbmZvLCBydWxlOiBDU1NSdWxlKTogdm9pZCB7XG4gIGZvciAoY29uc3QgdXRpbGl0eSBvZiBydWxlLnV0aWxpdGllcykge1xuICAgIGNvbnN0IHV0aWxpdHlXaXRoTWV0YTogVXRpbGl0eVdpdGhNZXRhID0ge1xuICAgICAgdmFsdWU6IHV0aWxpdHkudmFsdWUsXG4gICAgICB2YXJpYW50czogbm9ybWFsaXplVmFyaWFudE9yZGVyKFsuLi51dGlsaXR5LnZhcmlhbnRzXSksXG4gICAgICBjc3NQcm9wZXJ0eTogdXRpbGl0eS5jc3NQcm9wZXJ0eSxcbiAgICAgIHNwZWNpZmljaXR5OiB1dGlsaXR5LnNwZWNpZmljaXR5LFxuICAgICAgc291cmNlT3JkZXI6IHV0aWxpdHkuc291cmNlT3JkZXIsXG4gICAgICBvcmlnaW5hbFNlbGVjdG9yOiBydWxlLnNlbGVjdG9yXG4gICAgfTtcbiAgICBcbiAgICBpbmZvLnV0aWxpdGllcy5wdXNoKHV0aWxpdHlXaXRoTWV0YSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZW1ibGVUYWlsd2luZENsYXNzZXMoaW5mbzogQ2xhc3NJbmZvKTogc3RyaW5nIHtcbiAgY29uc3QgeyByZXNvbHZlZCB9ID0gcmVzb2x2ZUNvbmZsaWN0cyhpbmZvLnV0aWxpdGllcywgZmFsc2UpO1xuICByZXR1cm4gcmVzb2x2ZWRVdGlsaXRpZXNUb1N0cmluZ3MocmVzb2x2ZWQpLmpvaW4oJyAnKTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUNsYXNzTmFtZVJlZmVyZW5jZXMoXG4gIGNvZGU6IHN0cmluZywgXG4gIGNsYXNzTWFwOiBDU1NDbGFzc01hcFxuKTogeyBcbiAgY29kZTogc3RyaW5nOyBcbiAgaGFzQ2hhbmdlczogYm9vbGVhbjsgXG4gIHJlcGxhY2VtZW50czogbnVtYmVyIFxufSB7XG4gIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG4gIGxldCByZXBsYWNlbWVudHMgPSAwO1xuICBsZXQgbW9kaWZpZWRDb2RlID0gY29kZTtcblxuICBPYmplY3QuZW50cmllcyhjbGFzc01hcCkuZm9yRWFjaCgoW29sZENsYXNzLCBpbmZvXSkgPT4ge1xuICAgIGlmIChpbmZvLnV0aWxpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB0YWlsd2luZENsYXNzU3RyaW5nID0gYXNzZW1ibGVUYWlsd2luZENsYXNzZXMoaW5mbyk7XG4gICAgXG4gICAgaWYgKGluZm8uZnVsbHlDb252ZXJ0aWJsZSkge1xuICAgICAgY29uc3QgcGF0dGVybjEgPSBuZXcgUmVnRXhwKGBjbGFzc05hbWU9XCIke29sZENsYXNzfVwiYCwgJ2cnKTtcbiAgICAgIGlmIChwYXR0ZXJuMS50ZXN0KG1vZGlmaWVkQ29kZSkpIHtcbiAgICAgICAgbW9kaWZpZWRDb2RlID0gbW9kaWZpZWRDb2RlLnJlcGxhY2UocGF0dGVybjEsIGBjbGFzc05hbWU9XCIke3RhaWx3aW5kQ2xhc3NTdHJpbmd9XCJgKTtcbiAgICAgICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgIHJlcGxhY2VtZW50cysrO1xuICAgICAgICBsb2dnZXIudmVyYm9zZShgUmVwbGFjZWQgY2xhc3NOYW1lPVwiJHtvbGRDbGFzc31cIiB3aXRoIFwiJHt0YWlsd2luZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhdHRlcm4yID0gbmV3IFJlZ0V4cChgY2xhc3NOYW1lPVxcXFx7XCIke29sZENsYXNzfVwiXFxcXH1gLCAnZycpO1xuICAgICAgaWYgKHBhdHRlcm4yLnRlc3QobW9kaWZpZWRDb2RlKSkge1xuICAgICAgICBtb2RpZmllZENvZGUgPSBtb2RpZmllZENvZGUucmVwbGFjZShwYXR0ZXJuMiwgYGNsYXNzTmFtZT1cIiR7dGFpbHdpbmRDbGFzc1N0cmluZ31cImApO1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmVwbGFjZW1lbnRzKys7XG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGBSZXBsYWNlZCBjbGFzc05hbWU9e1wiJHtvbGRDbGFzc31cIn0gd2l0aCBcIiR7dGFpbHdpbmRDbGFzc1N0cmluZ31cImApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwYXR0ZXJuMyA9IG5ldyBSZWdFeHAoYGNsYXNzTmFtZT1cXFxce1xcYFxcXFxzKiR7b2xkQ2xhc3N9XFxcXHMqXFxgXFxcXH1gLCAnZycpO1xuICAgICAgaWYgKHBhdHRlcm4zLnRlc3QobW9kaWZpZWRDb2RlKSkge1xuICAgICAgICBtb2RpZmllZENvZGUgPSBtb2RpZmllZENvZGUucmVwbGFjZShwYXR0ZXJuMywgYGNsYXNzTmFtZT1cIiR7dGFpbHdpbmRDbGFzc1N0cmluZ31cImApO1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmVwbGFjZW1lbnRzKys7XG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGBSZXBsYWNlZCBjbGFzc05hbWU9e1xcYCR7b2xkQ2xhc3N9XFxgfSB3aXRoIFwiJHt0YWlsd2luZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbWJpbmVkQ2xhc3NTdHJpbmcgPSBgJHtvbGRDbGFzc30gJHt0YWlsd2luZENsYXNzU3RyaW5nfWA7XG4gICAgICBcbiAgICAgIGNvbnN0IHBhdHRlcm4xID0gbmV3IFJlZ0V4cChgY2xhc3NOYW1lPVwiJHtvbGRDbGFzc31cImAsICdnJyk7XG4gICAgICBpZiAocGF0dGVybjEudGVzdChtb2RpZmllZENvZGUpKSB7XG4gICAgICAgIG1vZGlmaWVkQ29kZSA9IG1vZGlmaWVkQ29kZS5yZXBsYWNlKHBhdHRlcm4xLCBgY2xhc3NOYW1lPVwiJHtjb21iaW5lZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICByZXBsYWNlbWVudHMrKztcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYEFwcGVuZGVkIHRvIGNsYXNzTmFtZT1cIiR7b2xkQ2xhc3N9XCIg4oaSIFwiJHtjb21iaW5lZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhdHRlcm4yID0gbmV3IFJlZ0V4cChgY2xhc3NOYW1lPVxcXFx7XCIke29sZENsYXNzfVwiXFxcXH1gLCAnZycpO1xuICAgICAgaWYgKHBhdHRlcm4yLnRlc3QobW9kaWZpZWRDb2RlKSkge1xuICAgICAgICBtb2RpZmllZENvZGUgPSBtb2RpZmllZENvZGUucmVwbGFjZShwYXR0ZXJuMiwgYGNsYXNzTmFtZT1cIiR7Y29tYmluZWRDbGFzc1N0cmluZ31cImApO1xuICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgcmVwbGFjZW1lbnRzKys7XG4gICAgICAgIGxvZ2dlci52ZXJib3NlKGBBcHBlbmRlZCB0byBjbGFzc05hbWU9e1wiJHtvbGRDbGFzc31cIn0g4oaSIFwiJHtjb21iaW5lZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBhdHRlcm4zID0gbmV3IFJlZ0V4cChgY2xhc3NOYW1lPVxcXFx7XFxgXFxcXHMqJHtvbGRDbGFzc31cXFxccypcXGBcXFxcfWAsICdnJyk7XG4gICAgICBpZiAocGF0dGVybjMudGVzdChtb2RpZmllZENvZGUpKSB7XG4gICAgICAgIG1vZGlmaWVkQ29kZSA9IG1vZGlmaWVkQ29kZS5yZXBsYWNlKHBhdHRlcm4zLCBgY2xhc3NOYW1lPVwiJHtjb21iaW5lZENsYXNzU3RyaW5nfVwiYCk7XG4gICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICByZXBsYWNlbWVudHMrKztcbiAgICAgICAgbG9nZ2VyLnZlcmJvc2UoYEFwcGVuZGVkIHRvIGNsYXNzTmFtZT17XFxgJHtvbGRDbGFzc31cXGB9IOKGkiBcIiR7Y29tYmluZWRDbGFzc1N0cmluZ31cImApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogbW9kaWZpZWRDb2RlLCBoYXNDaGFuZ2VzLCByZXBsYWNlbWVudHMgfTtcbn0iXX0=
@@ -12,6 +12,7 @@ exports.propertiesConflict = propertiesConflict;
12
12
  const PROPERTY_PREFIX_MAP = {
13
13
  'color': ['text-'],
14
14
  'background-color': ['bg-'],
15
+ 'background': ['bg-'],
15
16
  'font-size': ['text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl', 'text-2xl', 'text-3xl', 'text-4xl', 'text-5xl', 'text-6xl', 'text-7xl', 'text-8xl', 'text-9xl', 'text-'],
16
17
  'font-weight': ['font-thin', 'font-extralight', 'font-light', 'font-normal', 'font-medium', 'font-semibold', 'font-bold', 'font-extrabold', 'font-black'],
17
18
  'display': ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'grid', 'inline-grid', 'hidden', 'contents', 'table', 'table-cell', 'table-row', 'flow-root'],
@@ -75,7 +76,14 @@ const PROPERTY_PREFIX_MAP = {
75
76
  'flex-grow': ['grow-', 'grow'],
76
77
  'flex-shrink': ['shrink-', 'shrink'],
77
78
  'flex-basis': ['basis-'],
78
- 'word-break': ['break-normal', 'break-all', 'break-words', 'break-keep']
79
+ 'word-break': ['break-normal', 'break-all', 'break-words', 'break-keep'],
80
+ 'grid-template-columns': ['grid-cols-'],
81
+ 'grid-template-rows': ['grid-rows-'],
82
+ 'grid-column': ['col-span-', 'col-start-', 'col-end-', 'col-'],
83
+ 'grid-row': ['row-span-', 'row-start-', 'row-end-', 'row-'],
84
+ 'place-items': ['place-items-'],
85
+ 'place-content': ['place-content-'],
86
+ 'place-self': ['place-self-']
79
87
  };
80
88
  const UTILITY_TO_PROPERTY_MAP = {
81
89
  'block': 'display',
@@ -219,7 +227,20 @@ const PREFIX_PROPERTY_MAP = {
219
227
  'object-': 'object-position',
220
228
  'basis-': 'flex-basis',
221
229
  'grow-': 'flex-grow',
222
- 'shrink-': 'flex-shrink'
230
+ 'shrink-': 'flex-shrink',
231
+ 'grid-cols-': 'grid-template-columns',
232
+ 'grid-rows-': 'grid-template-rows',
233
+ 'col-span-': 'grid-column',
234
+ 'col-start-': 'grid-column',
235
+ 'col-end-': 'grid-column',
236
+ 'col-': 'grid-column',
237
+ 'row-span-': 'grid-row',
238
+ 'row-start-': 'grid-row',
239
+ 'row-end-': 'grid-row',
240
+ 'row-': 'grid-row',
241
+ 'place-items-': 'place-items',
242
+ 'place-content-': 'place-content',
243
+ 'place-self-': 'place-self'
223
244
  };
224
245
  const FONT_SIZE_UTILITIES = new Set([
225
246
  'text-xs', 'text-sm', 'text-base', 'text-lg', 'text-xl',
@@ -262,6 +283,20 @@ function getPropertyForUtility(utility) {
262
283
  if (strippedUtility.startsWith('tracking-') && !LETTER_SPACING_UTILITIES.has(strippedUtility)) {
263
284
  return 'letter-spacing';
264
285
  }
286
+ if (/^border-[trbl]-\[/.test(strippedUtility)) {
287
+ const value = strippedUtility.match(/^border-[trbl]-\[(.+)\]$/)?.[1] || '';
288
+ if (value.startsWith('#') || value.startsWith('rgb') || value.startsWith('hsl') ||
289
+ value.startsWith('var(') || /^[a-z]/i.test(value)) {
290
+ return 'border-color';
291
+ }
292
+ }
293
+ if (strippedUtility.startsWith('border-') && strippedUtility.includes('[')) {
294
+ const value = strippedUtility.match(/^border-\[(.+)\]$/)?.[1] || '';
295
+ if (value.startsWith('#') || value.startsWith('rgb') || value.startsWith('hsl') ||
296
+ value.startsWith('var(') || /^[a-z]/i.test(value)) {
297
+ return 'border-color';
298
+ }
299
+ }
265
300
  const sortedPrefixes = Object.keys(PREFIX_PROPERTY_MAP).sort((a, b) => b.length - a.length);
266
301
  for (const prefix of sortedPrefixes) {
267
302
  if (strippedUtility.startsWith(prefix)) {
@@ -329,7 +364,7 @@ exports.PROPERTY_CONFLICT_GROUPS = {
329
364
  'font-size': ['font-size'],
330
365
  'font-weight': ['font-weight'],
331
366
  'color': ['color'],
332
- 'background-color': ['background-color'],
367
+ 'background-color': ['background-color', 'background'],
333
368
  'border-radius': ['border-radius'],
334
369
  'border-width': ['border-width', 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width'],
335
370
  'border-color': ['border-color', 'border-top-color', 'border-right-color', 'border-bottom-color', 'border-left-color'],
@@ -346,7 +381,14 @@ exports.PROPERTY_CONFLICT_GROUPS = {
346
381
  'aspect-ratio': ['aspect-ratio'],
347
382
  'object-fit': ['object-fit'],
348
383
  'object-position': ['object-position'],
349
- 'word-break': ['word-break']
384
+ 'word-break': ['word-break'],
385
+ 'grid-template-columns': ['grid-template-columns'],
386
+ 'grid-template-rows': ['grid-template-rows'],
387
+ 'grid-column': ['grid-column', 'grid-column-start', 'grid-column-end'],
388
+ 'grid-row': ['grid-row', 'grid-row-start', 'grid-row-end'],
389
+ 'place-items': ['place-items'],
390
+ 'place-content': ['place-content'],
391
+ 'place-self': ['place-self']
350
392
  };
351
393
  function getConflictGroup(property) {
352
394
  for (const [groupName, properties] of Object.entries(exports.PROPERTY_CONFLICT_GROUPS)) {
@@ -401,4 +443,4 @@ function propertiesConflict(prop1, prop2) {
401
443
  }
402
444
  return prop1 === prop2;
403
445
  }
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBd09BLHNEQTRDQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsa0RBR0M7QUFFRCx3REFHQztBQUVELDhEQWNDO0FBd0NELDRDQU9DO0FBRUQsZ0RBdURDO0FBcGJELE1BQU0sbUJBQW1CLEdBQTZCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMzQixXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDO0lBQy9LLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQztJQUN6SixTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUM7SUFDbkssVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQztJQUNqRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDZixRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDaEIsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFD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ZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcbiAgJ2NvbG9yJzogWyd0ZXh0LSddLFxuICAnYmFja2dyb3VuZC1jb2xvcic6IFsnYmctJ10sXG4gICdmb250LXNpemUnOiBbJ3RleHQteHMnLCAndGV4dC1zbScsICd0ZXh0LWJhc2UnLCAndGV4dC1sZycsICd0ZXh0LXhsJywgJ3RleHQtMnhsJywgJ3RleHQtM3hsJywgJ3RleHQtNHhsJywgJ3RleHQtNXhsJywgJ3RleHQtNnhsJywgJ3RleHQtN3hsJywgJ3RleHQtOHhsJywgJ3RleHQtOXhsJywgJ3RleHQtJ10sXG4gICdmb250LXdlaWdodCc6IFsnZm9udC10aGluJywgJ2ZvbnQtZXh0cmFsaWdodCcsICdmb250LWxpZ2h0JywgJ2ZvbnQtbm9ybWFsJywgJ2ZvbnQtbWVkaXVtJywgJ2ZvbnQtc2VtaWJvbGQnLCAnZm9udC1ib2xkJywgJ2ZvbnQtZXh0cmFib2xkJywgJ2ZvbnQtYmxhY2snXSxcbiAgJ2Rpc3BsYXknOiBbJ2Jsb2NrJywgJ2lubGluZS1ibG9jaycsICdpbmxpbmUnLCAnZmxleCcsICdpbmxpbmUtZmxleCcsICdncmlkJywgJ2lubGluZS1ncmlkJywgJ2hpZGRlbicsICdjb250ZW50cycsICd0YWJsZScsICd0YWJsZS1jZWxsJywgJ3RhYmxlLXJvdycsICdmbG93LXJvb3QnXSxcbiAgJ3Bvc2l0aW9uJzogWydzdGF0aWMnLCAnZml4ZWQnLCAnYWJzb2x1dGUnLCAncmVsYXRpdmUnLCAnc3RpY2t5J10sXG4gICd3aWR0aCc6IFsndy0nXSxcbiAgJ2hlaWdodCc6IFsnaC0nXSxcbiAgJ21pbi13aWR0aCc6IFsnbWluLXctJ10sXG4gICdtYXgtd2lkdGgnOiBbJ21heC13LSddLFxuICAnbWluLWhlaWdodCc6IFsnbWluLWgtJ10sXG4gICdtYXgtaGVpZ2h0JzogWydtYXgtaC0nXSxcbiAgJ21hcmdpbic6IFsnbS0nXSxcbiAgJ21hcmdpbi10b3AnOiBbJ210LSddLFxuICAnbWFyZ2luLXJpZ2h0JzogWydtci0nXSxcbiAgJ21hcmdpbi1ib3R0b20nOiBbJ21iLSddLFxuICAnbWFyZ2luLWxlZnQnOiBbJ21sLSddLFxuICAnbWFyZ2luLXgnOiBbJ214LSddLFxuICAnbWFyZ2luLXknOiBbJ215LSddLFxuICAncGFkZGluZyc6IFsncC0nXSxcbiAgJ3BhZGRpbmctdG9wJzogWydwdC0nXSxcbiAgJ3BhZGRpbmctcmlnaHQnOiBbJ3ByLSddLFxuICAncGFkZGluZy1ib3R0b20nOiBbJ3BiLSddLFxuICAncGFkZGluZy1sZWZ0JzogWydwbC0nXSxcbiAgJ3BhZGRpbmcteCc6IFsncHgtJ10sXG4gICdwYWRkaW5nLXknOiBbJ3B5LSddLFxuICAnZ2FwJzogWydnYXAtJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydyb3VuZGVkLScsICdyb3VuZGVkJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci0nLCAnYm9yZGVyLXQtJywgJ2JvcmRlci1yLScsICdib3JkZXItYi0nLCAnYm9yZGVyLWwtJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci0nXSxcbiAgJ2JvcmRlci1zdHlsZSc6IFsnYm9yZGVyLXNvbGlkJywgJ2JvcmRlci1kYXNoZWQnLCAnYm9yZGVyLWRvdHRlZCcsICdib3JkZXItZG91YmxlJywgJ2JvcmRlci1oaWRkZW4nLCAnYm9yZGVyLW5vbmUnXSxcbiAgJ2ZsZXgtZGlyZWN0aW9uJzogWydmbGV4LXJvdycsICdmbGV4LWNvbCcsICdmbGV4LXJvdy1yZXZlcnNlJywgJ2ZsZXgtY29sLXJldmVyc2UnXSxcbiAgJ2ZsZXgtd3JhcCc6IFsnZmxleC13cmFwJywgJ2ZsZXgtbm93cmFwJywgJ2ZsZXgtd3JhcC1yZXZlcnNlJ10sXG4gICdqdXN0aWZ5LWNvbnRlbnQnOiBbJ2p1c3RpZnktJ10sXG4gICdhbGlnbi1pdGVtcyc6IFsnaXRlbXMtJ10sXG4gICdhbGlnbi1jb250ZW50JzogWydjb250ZW50LSddLFxuICAnYWxpZ24tc2VsZic6IFsnc2VsZi0nXSxcbiAgJ3RleHQtYWxpZ24nOiBbJ3RleHQtbGVmdCcsICd0ZXh0LWNlbnRlcicsICd0ZXh0LXJpZ2h0JywgJ3RleHQtanVzdGlmeScsICd0ZXh0LXN0YXJ0JywgJ3RleHQtZW5kJ10sXG4gICd0ZXh0LWRlY29yYXRpb24nOiBbJ3VuZGVybGluZScsICdsaW5lLXRocm91Z2gnLCAnbm8tdW5kZXJsaW5lJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndXBwZXJjYXNlJywgJ2xvd2VyY2FzZScsICdjYXBpdGFsaXplJywgJ25vcm1hbC1jYXNlJ10sXG4gICdsZXR0ZXItc3BhY2luZyc6IFsndHJhY2tpbmctJ10sXG4gICdsaW5lLWhlaWdodCc6IFsnbGVhZGluZy0nXSxcbiAgJ292ZXJmbG93JzogWydvdmVyZmxvdy0nXSxcbiAgJ292ZXJmbG93LXgnOiBbJ292ZXJmbG93LXgtJ10sXG4gICdvdmVyZmxvdy15JzogWydvdmVyZmxvdy15LSddLFxuICAnei1pbmRleCc6IFsnei0nXSxcbiAgJ29wYWNpdHknOiBbJ29wYWNpdHktJ10sXG4gICdjdXJzb3InOiBbJ2N1cnNvci0nXSxcbiAgJ3BvaW50ZXItZXZlbnRzJzogWydwb2ludGVyLWV2ZW50cy0nXSxcbiAgJ3VzZXItc2VsZWN0JzogWydzZWxlY3QtJ10sXG4gICdib3gtc2hhZG93JzogWydzaGFkb3ctJ10sXG4gICd0cmFuc2l0aW9uJzogWyd0cmFuc2l0aW9uLSddLFxuICAndHJhbnNmb3JtJzogWydzY2FsZS0nLCAncm90YXRlLScsICd0cmFuc2xhdGUtJywgJ3NrZXctJ10sXG4gICd0b3AnOiBbJ3RvcC0nXSxcbiAgJ3JpZ2h0JzogWydyaWdodC0nXSxcbiAgJ2JvdHRvbSc6IFsnYm90dG9tLSddLFxuICAnbGVmdCc6IFsnbGVmdC0nXSxcbiAgJ2luc2V0JzogWydpbnNldC0nXSxcbiAgJ2FzcGVjdC1yYXRpbyc6IFsnYXNwZWN0LSddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWNvbnRhaW4nLCAnb2JqZWN0LWNvdmVyJywgJ29iamVjdC1maWxsJywgJ29iamVjdC1ub25lJywgJ29iamVjdC1zY2FsZS1kb3duJ10sXG4gICdvYmplY3QtcG9zaXRpb24nOiBbJ29iamVjdC0nXSxcbiAgJ2ZsZXgnOiBbJ2ZsZXgtMScsICdmbGV4LWF1dG8nLCAnZmxleC1pbml0aWFsJywgJ2ZsZXgtbm9uZSddLFxuICAnZmxleC1ncm93JzogWydncm93LScsICdncm93J10sXG4gICdmbGV4LXNocmluayc6IFsnc2hyaW5rLScsICdzaHJpbmsnXSxcbiAgJ2ZsZXgtYmFzaXMnOiBbJ2Jhc2lzLSddLFxuICAnd29yZC1icmVhayc6IFsnYnJlYWstbm9ybWFsJywgJ2JyZWFrLWFsbCcsICdicmVhay13b3JkcycsICdicmVhay1rZWVwJ11cbn07XG5cbmNvbnN0IFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUtYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUnOiAnZGlzcGxheScsXG4gICdmbGV4JzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWZsZXgnOiAnZGlzcGxheScsXG4gICdncmlkJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWdyaWQnOiAnZGlzcGxheScsXG4gICdoaWRkZW4nOiAnZGlzcGxheScsXG4gICdjb250ZW50cyc6ICdkaXNwbGF5JyxcbiAgJ2Zsb3ctcm9vdCc6ICdkaXNwbGF5JyxcbiAgJ3N0YXRpYyc6ICdwb3NpdGlvbicsXG4gICdmaXhlZCc6ICdwb3NpdGlvbicsXG4gICdhYnNvbHV0ZSc6ICdwb3NpdGlvbicsXG4gICdyZWxhdGl2ZSc6ICdwb3NpdGlvbicsXG4gICdzdGlja3knOiAncG9zaXRpb24nLFxuICAnZmxleC1yb3cnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1yb3ctcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWNvbC1yZXZlcnNlJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC1ub3dyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtd3JhcC1yZXZlcnNlJzogJ2ZsZXgtd3JhcCcsXG4gICdmbGV4LTEnOiAnZmxleCcsXG4gICdmbGV4LWF1dG8nOiAnZmxleCcsXG4gICdmbGV4LWluaXRpYWwnOiAnZmxleCcsXG4gICdmbGV4LW5vbmUnOiAnZmxleCcsXG4gICdncm93JzogJ2ZsZXgtZ3JvdycsXG4gICdncm93LTAnOiAnZmxleC1ncm93JyxcbiAgJ3Nocmluayc6ICdmbGV4LXNocmluaycsXG4gICdzaHJpbmstMCc6ICdmbGV4LXNocmluaycsXG4gICd0ZXh0LWxlZnQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWNlbnRlcic6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtcmlnaHQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWp1c3RpZnknOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXN0YXJ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1lbmQnOiAndGV4dC1hbGlnbicsXG4gICdmb250LXRoaW4nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbGlnaHQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ub3JtYWwnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1tZWRpdW0nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1zZW1pYm9sZCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ibGFjayc6ICdmb250LXdlaWdodCcsXG4gICdyb3VuZGVkJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1ub25lJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1zbSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbWQnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWxnJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC14bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtMnhsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC0zeGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWZ1bGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICd1bmRlcmxpbmUnOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ2xpbmUtdGhyb3VnaCc6ICd0ZXh0LWRlY29yYXRpb24nLFxuICAnbm8tdW5kZXJsaW5lJzogJ3RleHQtZGVjb3JhdGlvbicsXG4gICd1cHBlcmNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbG93ZXJjYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2NhcGl0YWxpemUnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbm9ybWFsLWNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnYm9yZGVyLXNvbGlkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZGFzaGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG90dGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG91YmxlJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItaGlkZGVuJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItbm9uZSc6ICdib3JkZXItc3R5bGUnLFxuICAnb2JqZWN0LWNvbnRhaW4nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY292ZXInOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtZmlsbCc6ICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1ub25lJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LXNjYWxlLWRvd24nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY2VudGVyJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtYm90dG9tJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0JzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1sZWZ0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnYnJlYWstbm9ybWFsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstYWxsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstd29yZHMnOiAnd29yZC1icmVhaycsXG4gICdicmVhay1rZWVwJzogJ3dvcmQtYnJlYWsnLFxuICAnYXNwZWN0LXNxdWFyZSc6ICdhc3BlY3QtcmF0aW8nLFxuICAnYXNwZWN0LXZpZGVvJzogJ2FzcGVjdC1yYXRpbycsXG4gICdhc3BlY3QtYXV0byc6ICdhc3BlY3QtcmF0aW8nXG59O1xuXG5jb25zdCBQUkVGSVhfUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAndGV4dC0nOiAnY29sb3InLFxuICAnYmctJzogJ2JhY2tncm91bmQtY29sb3InLFxuICAndy0nOiAnd2lkdGgnLFxuICAnaC0nOiAnaGVpZ2h0JyxcbiAgJ21pbi13LSc6ICdtaW4td2lkdGgnLFxuICAnbWF4LXctJzogJ21heC13aWR0aCcsXG4gICdtaW4taC0nOiAnbWluLWhlaWdodCcsXG4gICdtYXgtaC0nOiAnbWF4LWhlaWdodCcsXG4gICdtLSc6ICdtYXJnaW4nLFxuICAnbXQtJzogJ21hcmdpbi10b3AnLFxuICAnbXItJzogJ21hcmdpbi1yaWdodCcsXG4gICdtYi0nOiAnbWFyZ2luLWJvdHRvbScsXG4gICdtbC0nOiAnbWFyZ2luLWxlZnQnLFxuICAnbXgtJzogJ21hcmdpbi14JyxcbiAgJ215LSc6ICdtYXJnaW4teScsXG4gICdwLSc6ICdwYWRkaW5nJyxcbiAgJ3B0LSc6ICdwYWRkaW5nLXRvcCcsXG4gICdwci0nOiAncGFkZGluZy1yaWdodCcsXG4gICdwYi0nOiAncGFkZGluZy1ib3R0b20nLFxuICAncGwtJzogJ3BhZGRpbmctbGVmdCcsXG4gICdweC0nOiAncGFkZGluZy14JyxcbiAgJ3B5LSc6ICdwYWRkaW5nLXknLFxuICAnZ2FwLSc6ICdnYXAnLFxuICAncm91bmRlZC0nOiAnYm9yZGVyLXJhZGl1cycsXG4gICdqdXN0aWZ5LSc6ICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAnaXRlbXMtJzogJ2FsaWduLWl0ZW1zJyxcbiAgJ2NvbnRlbnQtJzogJ2FsaWduLWNvbnRlbnQnLFxuICAnc2VsZi0nOiAnYWxpZ24tc2VsZicsXG4gICdvdmVyZmxvdy0nOiAnb3ZlcmZsb3cnLFxuICAnb3ZlcmZsb3cteC0nOiAnb3ZlcmZsb3cteCcsXG4gICdvdmVyZmxvdy15LSc6ICdvdmVyZmxvdy15JyxcbiAgJ3otJzogJ3otaW5kZXgnLFxuICAnb3BhY2l0eS0nOiAnb3BhY2l0eScsXG4gICdjdXJzb3ItJzogJ2N1cnNvcicsXG4gICdzaGFkb3ctJzogJ2JveC1zaGFkb3cnLFxuICAnYm9yZGVyLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLXQtJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItci0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1iLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLWwtJzogJ2JvcmRlci13aWR0aCcsXG4gICd0b3AtJzogJ3RvcCcsXG4gICdyaWdodC0nOiAncmlnaHQnLFxuICAnYm90dG9tLSc6ICdib3R0b20nLFxuICAnbGVmdC0nOiAnbGVmdCcsXG4gICdpbnNldC0nOiAnaW5zZXQnLFxuICAndHJhY2tpbmctJzogJ2xldHRlci1zcGFjaW5nJyxcbiAgJ2xlYWRpbmctJzogJ2xpbmUtaGVpZ2h0JyxcbiAgJ2FzcGVjdC0nOiAnYXNwZWN0LXJhdGlvJyxcbiAgJ29iamVjdC0nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ2Jhc2lzLSc6ICdmbGV4LWJhc2lzJyxcbiAgJ2dyb3ctJzogJ2ZsZXgtZ3JvdycsXG4gICdzaHJpbmstJzogJ2ZsZXgtc2hyaW5rJ1xufTtcblxuY29uc3QgRk9OVF9TSVpFX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAndGV4dC14cycsICd0ZXh0LXNtJywgJ3RleHQtYmFzZScsICd0ZXh0LWxnJywgJ3RleHQteGwnLFxuICAndGV4dC0yeGwnLCAndGV4dC0zeGwnLCAndGV4dC00eGwnLCAndGV4dC01eGwnLCAndGV4dC02eGwnLFxuICAndGV4dC03eGwnLCAndGV4dC04eGwnLCAndGV4dC05eGwnXG5dKTtcblxuY29uc3QgTElORV9IRUlHSFRfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICdsZWFkaW5nLW5vbmUnLCAnbGVhZGluZy10aWdodCcsICdsZWFkaW5nLXNudWcnLCAnbGVhZGluZy1ub3JtYWwnLFxuICAnbGVhZGluZy1yZWxheGVkJywgJ2xlYWRpbmctbG9vc2UnLCAnbGVhZGluZy0zJywgJ2xlYWRpbmctNCcsICdsZWFkaW5nLTUnLFxuICAnbGVhZGluZy02JywgJ2xlYWRpbmctNycsICdsZWFkaW5nLTgnLCAnbGVhZGluZy05JywgJ2xlYWRpbmctMTAnXG5dKTtcblxuY29uc3QgTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICd0cmFja2luZy10aWdodGVyJywgJ3RyYWNraW5nLXRpZ2h0JywgJ3RyYWNraW5nLW5vcm1hbCcsXG4gICd0cmFja2luZy13aWRlJywgJ3RyYWNraW5nLXdpZGVyJywgJ3RyYWNraW5nLXdpZGVzdCdcbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlGb3JVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmlwcGVkVXRpbGl0eSA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIFxuICBpZiAoVVRJTElUWV9UT19QUk9QRVJUWV9NQVBbc3RyaXBwZWRVdGlsaXR5XSkge1xuICAgIHJldHVybiBVVElMSVRZX1RPX1BST1BFUlRZX01BUFtzdHJpcHBlZFV0aWxpdHldO1xuICB9XG4gIFxuICBpZiAoRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgfVxuXG4gIGlmIChMSU5FX0hFSUdIVF9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xpbmUtaGVpZ2h0JztcbiAgfVxuXG4gIGlmIChMRVRURVJfU1BBQ0lOR19VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xldHRlci1zcGFjaW5nJztcbiAgfVxuICBcbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0ZXh0LScpICYmICFGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZFV0aWxpdHkuc2xpY2UoNSk7XG4gICAgaWYgKC9eXFxkLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgICB9XG4gICAgcmV0dXJuICdjb2xvcic7XG4gIH1cblxuICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgoJ2xlYWRpbmctJykgJiYgIUxJTkVfSEVJR0hUX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnbGluZS1oZWlnaHQnO1xuICB9XG5cbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0cmFja2luZy0nKSAmJiAhTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsZXR0ZXItc3BhY2luZyc7XG4gIH1cbiAgXG4gIGNvbnN0IHNvcnRlZFByZWZpeGVzID0gT2JqZWN0LmtleXMoUFJFRklYX1BST1BFUlRZX01BUCkuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG4gIFxuICBmb3IgKGNvbnN0IHByZWZpeCBvZiBzb3J0ZWRQcmVmaXhlcykge1xuICAgIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gUFJFRklYX1BST1BFUlRZX01BUFtwcmVmaXhdO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gc3RyaXBWYXJpYW50cyh1dGlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IHV0aWxpdHkuc3BsaXQoJzonKTtcbiAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0Rm9udFNpemVVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIHJldHVybiBGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgKFxuICAgIHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RleHQtJykgJiYgL15cXGQvLnRlc3Qoc3RyaXBwZWQuc2xpY2UoNSkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRDb2xvclV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgXG4gIGlmIChGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZC5zdGFydHNXaXRoKCd0ZXh0LScpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZC5zbGljZSg1KTtcbiAgICBpZiAoL15cXGQvLnRlc3QodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lSGVpZ2h0VXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICByZXR1cm4gTElORV9IRUlHSFRfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgc3RyaXBwZWQuc3RhcnRzV2l0aCgnbGVhZGluZy0nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGV0dGVyU3BhY2luZ1V0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIExFVFRFUl9TUEFDSU5HX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RyYWNraW5nLScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydGllc0ZvclV0aWxpdGllcyh1dGlsaXRpZXM6IHN0cmluZ1tdKTogTWFwPHN0cmluZywgc3RyaW5nW10+IHtcbiAgY29uc3QgcHJvcGVydHlNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XG4gIFxuICBmb3IgKGNvbnN0IHV0aWxpdHkgb2YgdXRpbGl0aWVzKSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBnZXRQcm9wZXJ0eUZvclV0aWxpdHkodXRpbGl0eSk7XG4gICAgXG4gICAgaWYgKCFwcm9wZXJ0eU1hcC5oYXMocHJvcGVydHkpKSB7XG4gICAgICBwcm9wZXJ0eU1hcC5zZXQocHJvcGVydHksIFtdKTtcbiAgICB9XG4gICAgXG4gICAgcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5KSEucHVzaCh1dGlsaXR5KTtcbiAgfVxuICBcbiAgcmV0dXJuIHByb3BlcnR5TWFwO1xufVxuXG5leHBvcnQgY29uc3QgUFJPUEVSVFlfQ09ORkxJQ1RfR1JPVVBTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gICdkaXNwbGF5JzogWydkaXNwbGF5J10sXG4gICdwb3NpdGlvbic6IFsncG9zaXRpb24nXSxcbiAgJ3dpZHRoJzogWyd3aWR0aCcsICdtaW4td2lkdGgnLCAnbWF4LXdpZHRoJ10sXG4gICdoZWlnaHQnOiBbJ2hlaWdodCcsICdtaW4taGVpZ2h0JywgJ21heC1oZWlnaHQnXSxcbiAgJ21hcmdpbic6IFsnbWFyZ2luJywgJ21hcmdpbi10b3AnLCAnbWFyZ2luLXJpZ2h0JywgJ21hcmdpbi1ib3R0b20nLCAnbWFyZ2luLWxlZnQnLCAnbWFyZ2luLXgnLCAnbWFyZ2luLXknXSxcbiAgJ3BhZGRpbmcnOiBbJ3BhZGRpbmcnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1yaWdodCcsICdwYWRkaW5nLWJvdHRvbScsICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy14JywgJ3BhZGRpbmcteSddLFxuICAnZmxleC1kaXJlY3Rpb24nOiBbJ2ZsZXgtZGlyZWN0aW9uJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCddLFxuICAnZmxleCc6IFsnZmxleCcsICdmbGV4LWdyb3cnLCAnZmxleC1zaHJpbmsnLCAnZmxleC1iYXNpcyddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LWNvbnRlbnQnXSxcbiAgJ2FsaWduLWl0ZW1zJzogWydhbGlnbi1pdGVtcyddLFxuICAnYWxpZ24tY29udGVudCc6IFsnYWxpZ24tY29udGVudCddLFxuICAnYWxpZ24tc2VsZic6IFsnYWxpZ24tc2VsZiddLFxuICAndGV4dC1hbGlnbic6IFsndGV4dC1hbGlnbiddLFxuICAnZm9udC1zaXplJzogWydmb250LXNpemUnXSxcbiAgJ2ZvbnQtd2VpZ2h0JzogWydmb250LXdlaWdodCddLFxuICAnY29sb3InOiBbJ2NvbG9yJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiYWNrZ3JvdW5kLWNvbG9yJ10sXG4gICdib3JkZXItcmFkaXVzJzogWydib3JkZXItcmFkaXVzJ10sXG4gICdib3JkZXItd2lkdGgnOiBbJ2JvcmRlci13aWR0aCcsICdib3JkZXItdG9wLXdpZHRoJywgJ2JvcmRlci1yaWdodC13aWR0aCcsICdib3JkZXItYm90dG9tLXdpZHRoJywgJ2JvcmRlci1sZWZ0LXdpZHRoJ10sXG4gICdib3JkZXItY29sb3InOiBbJ2JvcmRlci1jb2xvcicsICdib3JkZXItdG9wLWNvbG9yJywgJ2JvcmRlci1yaWdodC1jb2xvcicsICdib3JkZXItYm90dG9tLWNvbG9yJywgJ2JvcmRlci1sZWZ0LWNvbG9yJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zdHlsZSddLFxuICAnb3ZlcmZsb3cnOiBbJ292ZXJmbG93JywgJ292ZXJmbG93LXgnLCAnb3ZlcmZsb3cteSddLFxuICAnei1pbmRleCc6IFsnei1pbmRleCddLFxuICAnb3BhY2l0eSc6IFsnb3BhY2l0eSddLFxuICAnZ2FwJzogWydnYXAnXSxcbiAgJ2luc2V0JzogWydpbnNldCcsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXSxcbiAgJ3RleHQtZGVjb3JhdGlvbic6IFsndGV4dC1kZWNvcmF0aW9uJ10sXG4gICd0ZXh0LXRyYW5zZm9ybSc6IFsndGV4dC10cmFuc2Zvcm0nXSxcbiAgJ2xldHRlci1zcGFjaW5nJzogWydsZXR0ZXItc3BhY2luZyddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xpbmUtaGVpZ2h0J10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC1yYXRpbyddLFxuICAnb2JqZWN0LWZpdCc6IFsnb2JqZWN0LWZpdCddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtcG9zaXRpb24nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ3dvcmQtYnJlYWsnXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZsaWN0R3JvdXAocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIHByb3BlcnRpZXNdIG9mIE9iamVjdC5lbnRyaWVzKFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUykpIHtcbiAgICBpZiAocHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBncm91cE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0NvbmZsaWN0KHByb3AxOiBzdHJpbmcsIHByb3AyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZ3JvdXAxID0gZ2V0Q29uZmxpY3RHcm91cChwcm9wMSk7XG4gIGNvbnN0IGdyb3VwMiA9IGdldENvbmZsaWN0R3JvdXAocHJvcDIpO1xuICBcbiAgaWYgKGdyb3VwMSAmJiBncm91cDIgJiYgZ3JvdXAxID09PSBncm91cDIpIHtcbiAgICBpZiAocHJvcDEgPT09IHByb3AyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZ3JvdXAgPSBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFNbZ3JvdXAxXTtcbiAgICBcbiAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGdyb3VwMSA9PT0gJ21hcmdpbicgfHwgZ3JvdXAxID09PSAncGFkZGluZycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gZ3JvdXAxIHx8IHByb3AyID09PSBncm91cDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdpbnNldCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2luc2V0JyB8fCBwcm9wMiA9PT0gJ2luc2V0Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgaWYgKHByb3AxID09PSAnYm9yZGVyLXdpZHRoJyB8fCBwcm9wMiA9PT0gJ2JvcmRlci13aWR0aCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwMSA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2JvcmRlci1jb2xvcicgfHwgcHJvcDIgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChncm91cDEgPT09ICdvdmVyZmxvdycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ292ZXJmbG93JyB8fCBwcm9wMiA9PT0gJ292ZXJmbG93Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnZmxleCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2ZsZXgnIHx8IHByb3AyID09PSAnZmxleCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59XG4iXX0=
446
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHlNYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvcHJvcGVydHlNYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNlBBLHNEQTREQztBQU9ELHNEQUtDO0FBRUQsZ0RBZ0JDO0FBRUQsa0RBR0M7QUFFRCx3REFHQztBQUVELDhEQWNDO0FBK0NELDRDQU9DO0FBRUQsZ0RBdURDO0FBaGVELE1BQU0sbUJBQW1CLEdBQTZCO0lBQ3BELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUNsQixrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUMzQixZQUFZLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDckIsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztJQUMvSyxhQUFhLEVBQUUsQ0FBQyxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUM7SUFDekosU0FBUyxFQUFFLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDO0lBQ25LLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7SUFDakUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2YsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFD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SSxLQUFLLEtBQUssT0FBTyxJQUFJLEtBQUssS0FBSyxPQUFPLEVBQUUsQ0FBQztnQkFDM0MsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLGNBQWMsRUFBRSxDQUFDO1lBQzlCLElBQUksS0FBSyxLQUFLLGNBQWMsSUFBSSxLQUFLLEtBQUssY0FBYyxFQUFFLENBQUM7Z0JBQ3pELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLE1BQU0sS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUM5QixJQUFJLEtBQUssS0FBSyxjQUFjLElBQUksS0FBSyxLQUFLLGNBQWMsRUFBRSxDQUFDO2dCQUN6RCxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDMUIsSUFBSSxLQUFLLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLElBQUksS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssS0FBSyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sS0FBSyxLQUFLLEtBQUssQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgUFJPUEVSVFlfUFJFRklYX01BUDogUmVjb3JkPHN0cmluZywgc3RyaW5nW10+ID0ge1xuICAnY29sb3InOiBbJ3RleHQtJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiZy0nXSxcbiAgJ2JhY2tncm91bmQnOiBbJ2JnLSddLFxuICAnZm9udC1zaXplJzogWyd0ZXh0LXhzJywgJ3RleHQtc20nLCAndGV4dC1iYXNlJywgJ3RleHQtbGcnLCAndGV4dC14bCcsICd0ZXh0LTJ4bCcsICd0ZXh0LTN4bCcsICd0ZXh0LTR4bCcsICd0ZXh0LTV4bCcsICd0ZXh0LTZ4bCcsICd0ZXh0LTd4bCcsICd0ZXh0LTh4bCcsICd0ZXh0LTl4bCcsICd0ZXh0LSddLFxuICAnZm9udC13ZWlnaHQnOiBbJ2ZvbnQtdGhpbicsICdmb250LWV4dHJhbGlnaHQnLCAnZm9udC1saWdodCcsICdmb250LW5vcm1hbCcsICdmb250LW1lZGl1bScsICdmb250LXNlbWlib2xkJywgJ2ZvbnQtYm9sZCcsICdmb250LWV4dHJhYm9sZCcsICdmb250LWJsYWNrJ10sXG4gICdkaXNwbGF5JzogWydibG9jaycsICdpbmxpbmUtYmxvY2snLCAnaW5saW5lJywgJ2ZsZXgnLCAnaW5saW5lLWZsZXgnLCAnZ3JpZCcsICdpbmxpbmUtZ3JpZCcsICdoaWRkZW4nLCAnY29udGVudHMnLCAndGFibGUnLCAndGFibGUtY2VsbCcsICd0YWJsZS1yb3cnLCAnZmxvdy1yb290J10sXG4gICdwb3NpdGlvbic6IFsnc3RhdGljJywgJ2ZpeGVkJywgJ2Fic29sdXRlJywgJ3JlbGF0aXZlJywgJ3N0aWNreSddLFxuICAnd2lkdGgnOiBbJ3ctJ10sXG4gICdoZWlnaHQnOiBbJ2gtJ10sXG4gICdtaW4td2lkdGgnOiBbJ21pbi13LSddLFxuICAnbWF4LXdpZHRoJzogWydtYXgtdy0nXSxcbiAgJ21pbi1oZWlnaHQnOiBbJ21pbi1oLSddLFxuICAnbWF4LWhlaWdodCc6IFsnbWF4LWgtJ10sXG4gICdtYXJnaW4nOiBbJ20tJ10sXG4gICdtYXJnaW4tdG9wJzogWydtdC0nXSxcbiAgJ21hcmdpbi1yaWdodCc6IFsnbXItJ10sXG4gICdtYXJnaW4tYm90dG9tJzogWydtYi0nXSxcbiAgJ21hcmdpbi1sZWZ0JzogWydtbC0nXSxcbiAgJ21hcmdpbi14JzogWydteC0nXSxcbiAgJ21hcmdpbi15JzogWydteS0nXSxcbiAgJ3BhZGRpbmcnOiBbJ3AtJ10sXG4gICdwYWRkaW5nLXRvcCc6IFsncHQtJ10sXG4gICdwYWRkaW5nLXJpZ2h0JzogWydwci0nXSxcbiAgJ3BhZGRpbmctYm90dG9tJzogWydwYi0nXSxcbiAgJ3BhZGRpbmctbGVmdCc6IFsncGwtJ10sXG4gICdwYWRkaW5nLXgnOiBbJ3B4LSddLFxuICAncGFkZGluZy15JzogWydweS0nXSxcbiAgJ2dhcCc6IFsnZ2FwLSddLFxuICAnYm9yZGVyLXJhZGl1cyc6IFsncm91bmRlZC0nLCAncm91bmRlZCddLFxuICAnYm9yZGVyLXdpZHRoJzogWydib3JkZXItJywgJ2JvcmRlci10LScsICdib3JkZXItci0nLCAnYm9yZGVyLWItJywgJ2JvcmRlci1sLSddLFxuICAnYm9yZGVyLWNvbG9yJzogWydib3JkZXItJ10sXG4gICdib3JkZXItc3R5bGUnOiBbJ2JvcmRlci1zb2xpZCcsICdib3JkZXItZGFzaGVkJywgJ2JvcmRlci1kb3R0ZWQnLCAnYm9yZGVyLWRvdWJsZScsICdib3JkZXItaGlkZGVuJywgJ2JvcmRlci1ub25lJ10sXG4gICdmbGV4LWRpcmVjdGlvbic6IFsnZmxleC1yb3cnLCAnZmxleC1jb2wnLCAnZmxleC1yb3ctcmV2ZXJzZScsICdmbGV4LWNvbC1yZXZlcnNlJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCcsICdmbGV4LW5vd3JhcCcsICdmbGV4LXdyYXAtcmV2ZXJzZSddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LSddLFxuICAnYWxpZ24taXRlbXMnOiBbJ2l0ZW1zLSddLFxuICAnYWxpZ24tY29udGVudCc6IFsnY29udGVudC0nXSxcbiAgJ2FsaWduLXNlbGYnOiBbJ3NlbGYtJ10sXG4gICd0ZXh0LWFsaWduJzogWyd0ZXh0LWxlZnQnLCAndGV4dC1jZW50ZXInLCAndGV4dC1yaWdodCcsICd0ZXh0LWp1c3RpZnknLCAndGV4dC1zdGFydCcsICd0ZXh0LWVuZCddLFxuICAndGV4dC1kZWNvcmF0aW9uJzogWyd1bmRlcmxpbmUnLCAnbGluZS10aHJvdWdoJywgJ25vLXVuZGVybGluZSddLFxuICAndGV4dC10cmFuc2Zvcm0nOiBbJ3VwcGVyY2FzZScsICdsb3dlcmNhc2UnLCAnY2FwaXRhbGl6ZScsICdub3JtYWwtY2FzZSddLFxuICAnbGV0dGVyLXNwYWNpbmcnOiBbJ3RyYWNraW5nLSddLFxuICAnbGluZS1oZWlnaHQnOiBbJ2xlYWRpbmctJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3ctJ10sXG4gICdvdmVyZmxvdy14JzogWydvdmVyZmxvdy14LSddLFxuICAnb3ZlcmZsb3cteSc6IFsnb3ZlcmZsb3cteS0nXSxcbiAgJ3otaW5kZXgnOiBbJ3otJ10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5LSddLFxuICAnY3Vyc29yJzogWydjdXJzb3ItJ10sXG4gICdwb2ludGVyLWV2ZW50cyc6IFsncG9pbnRlci1ldmVudHMtJ10sXG4gICd1c2VyLXNlbGVjdCc6IFsnc2VsZWN0LSddLFxuICAnYm94LXNoYWRvdyc6IFsnc2hhZG93LSddLFxuICAndHJhbnNpdGlvbic6IFsndHJhbnNpdGlvbi0nXSxcbiAgJ3RyYW5zZm9ybSc6IFsnc2NhbGUtJywgJ3JvdGF0ZS0nLCAndHJhbnNsYXRlLScsICdza2V3LSddLFxuICAndG9wJzogWyd0b3AtJ10sXG4gICdyaWdodCc6IFsncmlnaHQtJ10sXG4gICdib3R0b20nOiBbJ2JvdHRvbS0nXSxcbiAgJ2xlZnQnOiBbJ2xlZnQtJ10sXG4gICdpbnNldCc6IFsnaW5zZXQtJ10sXG4gICdhc3BlY3QtcmF0aW8nOiBbJ2FzcGVjdC0nXSxcbiAgJ29iamVjdC1maXQnOiBbJ29iamVjdC1jb250YWluJywgJ29iamVjdC1jb3ZlcicsICdvYmplY3QtZmlsbCcsICdvYmplY3Qtbm9uZScsICdvYmplY3Qtc2NhbGUtZG93biddLFxuICAnb2JqZWN0LXBvc2l0aW9uJzogWydvYmplY3QtJ10sXG4gICdmbGV4JzogWydmbGV4LTEnLCAnZmxleC1hdXRvJywgJ2ZsZXgtaW5pdGlhbCcsICdmbGV4LW5vbmUnXSxcbiAgJ2ZsZXgtZ3Jvdyc6IFsnZ3Jvdy0nLCAnZ3JvdyddLFxuICAnZmxleC1zaHJpbmsnOiBbJ3Nocmluay0nLCAnc2hyaW5rJ10sXG4gICdmbGV4LWJhc2lzJzogWydiYXNpcy0nXSxcbiAgJ3dvcmQtYnJlYWsnOiBbJ2JyZWFrLW5vcm1hbCcsICdicmVhay1hbGwnLCAnYnJlYWstd29yZHMnLCAnYnJlYWsta2VlcCddLFxuICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzogWydncmlkLWNvbHMtJ10sXG4gICdncmlkLXRlbXBsYXRlLXJvd3MnOiBbJ2dyaWQtcm93cy0nXSxcbiAgJ2dyaWQtY29sdW1uJzogWydjb2wtc3Bhbi0nLCAnY29sLXN0YXJ0LScsICdjb2wtZW5kLScsICdjb2wtJ10sXG4gICdncmlkLXJvdyc6IFsncm93LXNwYW4tJywgJ3Jvdy1zdGFydC0nLCAncm93LWVuZC0nLCAncm93LSddLFxuICAncGxhY2UtaXRlbXMnOiBbJ3BsYWNlLWl0ZW1zLSddLFxuICAncGxhY2UtY29udGVudCc6IFsncGxhY2UtY29udGVudC0nXSxcbiAgJ3BsYWNlLXNlbGYnOiBbJ3BsYWNlLXNlbGYtJ11cbn07XG5cbmNvbnN0IFVUSUxJVFlfVE9fUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUtYmxvY2snOiAnZGlzcGxheScsXG4gICdpbmxpbmUnOiAnZGlzcGxheScsXG4gICdmbGV4JzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWZsZXgnOiAnZGlzcGxheScsXG4gICdncmlkJzogJ2Rpc3BsYXknLFxuICAnaW5saW5lLWdyaWQnOiAnZGlzcGxheScsXG4gICdoaWRkZW4nOiAnZGlzcGxheScsXG4gICdjb250ZW50cyc6ICdkaXNwbGF5JyxcbiAgJ2Zsb3ctcm9vdCc6ICdkaXNwbGF5JyxcbiAgJ3N0YXRpYyc6ICdwb3NpdGlvbicsXG4gICdmaXhlZCc6ICdwb3NpdGlvbicsXG4gICdhYnNvbHV0ZSc6ICdwb3NpdGlvbicsXG4gICdyZWxhdGl2ZSc6ICdwb3NpdGlvbicsXG4gICdzdGlja3knOiAncG9zaXRpb24nLFxuICAnZmxleC1yb3cnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1jb2wnOiAnZmxleC1kaXJlY3Rpb24nLFxuICAnZmxleC1yb3ctcmV2ZXJzZSc6ICdmbGV4LWRpcmVjdGlvbicsXG4gICdmbGV4LWNvbC1yZXZlcnNlJzogJ2ZsZXgtZGlyZWN0aW9uJyxcbiAgJ2ZsZXgtd3JhcCc6ICdmbGV4LXdyYXAnLFxuICAnZmxleC1ub3dyYXAnOiAnZmxleC13cmFwJyxcbiAgJ2ZsZXgtd3JhcC1yZXZlcnNlJzogJ2ZsZXgtd3JhcCcsXG4gICdmbGV4LTEnOiAnZmxleCcsXG4gICdmbGV4LWF1dG8nOiAnZmxleCcsXG4gICdmbGV4LWluaXRpYWwnOiAnZmxleCcsXG4gICdmbGV4LW5vbmUnOiAnZmxleCcsXG4gICdncm93JzogJ2ZsZXgtZ3JvdycsXG4gICdncm93LTAnOiAnZmxleC1ncm93JyxcbiAgJ3Nocmluayc6ICdmbGV4LXNocmluaycsXG4gICdzaHJpbmstMCc6ICdmbGV4LXNocmluaycsXG4gICd0ZXh0LWxlZnQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWNlbnRlcic6ICd0ZXh0LWFsaWduJyxcbiAgJ3RleHQtcmlnaHQnOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LWp1c3RpZnknOiAndGV4dC1hbGlnbicsXG4gICd0ZXh0LXN0YXJ0JzogJ3RleHQtYWxpZ24nLFxuICAndGV4dC1lbmQnOiAndGV4dC1hbGlnbicsXG4gICdmb250LXRoaW4nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWxpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ2ZvbnQtbGlnaHQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ub3JtYWwnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1tZWRpdW0nOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1zZW1pYm9sZCc6ICdmb250LXdlaWdodCcsXG4gICdmb250LWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1leHRyYWJvbGQnOiAnZm9udC13ZWlnaHQnLFxuICAnZm9udC1ibGFjayc6ICdmb250LXdlaWdodCcsXG4gICdyb3VuZGVkJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1ub25lJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC1zbSc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtbWQnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWxnJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC14bCc6ICdib3JkZXItcmFkaXVzJyxcbiAgJ3JvdW5kZWQtMnhsJzogJ2JvcmRlci1yYWRpdXMnLFxuICAncm91bmRlZC0zeGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICdyb3VuZGVkLWZ1bGwnOiAnYm9yZGVyLXJhZGl1cycsXG4gICd1bmRlcmxpbmUnOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgJ2xpbmUtdGhyb3VnaCc6ICd0ZXh0LWRlY29yYXRpb24nLFxuICAnbm8tdW5kZXJsaW5lJzogJ3RleHQtZGVjb3JhdGlvbicsXG4gICd1cHBlcmNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbG93ZXJjYXNlJzogJ3RleHQtdHJhbnNmb3JtJyxcbiAgJ2NhcGl0YWxpemUnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnbm9ybWFsLWNhc2UnOiAndGV4dC10cmFuc2Zvcm0nLFxuICAnYm9yZGVyLXNvbGlkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZGFzaGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG90dGVkJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItZG91YmxlJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItaGlkZGVuJzogJ2JvcmRlci1zdHlsZScsXG4gICdib3JkZXItbm9uZSc6ICdib3JkZXItc3R5bGUnLFxuICAnb2JqZWN0LWNvbnRhaW4nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY292ZXInOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtZmlsbCc6ICdvYmplY3QtZml0JyxcbiAgJ29iamVjdC1ub25lJzogJ29iamVjdC1maXQnLFxuICAnb2JqZWN0LXNjYWxlLWRvd24nOiAnb2JqZWN0LWZpdCcsXG4gICdvYmplY3QtY2VudGVyJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtdG9wJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtYm90dG9tJzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdCc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0JzogJ29iamVjdC1wb3NpdGlvbicsXG4gICdvYmplY3QtbGVmdC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1yaWdodC10b3AnOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ29iamVjdC1sZWZ0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnb2JqZWN0LXJpZ2h0LWJvdHRvbSc6ICdvYmplY3QtcG9zaXRpb24nLFxuICAnYnJlYWstbm9ybWFsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstYWxsJzogJ3dvcmQtYnJlYWsnLFxuICAnYnJlYWstd29yZHMnOiAnd29yZC1icmVhaycsXG4gICdicmVhay1rZWVwJzogJ3dvcmQtYnJlYWsnLFxuICAnYXNwZWN0LXNxdWFyZSc6ICdhc3BlY3QtcmF0aW8nLFxuICAnYXNwZWN0LXZpZGVvJzogJ2FzcGVjdC1yYXRpbycsXG4gICdhc3BlY3QtYXV0byc6ICdhc3BlY3QtcmF0aW8nXG59O1xuXG5jb25zdCBQUkVGSVhfUFJPUEVSVFlfTUFQOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAndGV4dC0nOiAnY29sb3InLFxuICAnYmctJzogJ2JhY2tncm91bmQtY29sb3InLFxuICAndy0nOiAnd2lkdGgnLFxuICAnaC0nOiAnaGVpZ2h0JyxcbiAgJ21pbi13LSc6ICdtaW4td2lkdGgnLFxuICAnbWF4LXctJzogJ21heC13aWR0aCcsXG4gICdtaW4taC0nOiAnbWluLWhlaWdodCcsXG4gICdtYXgtaC0nOiAnbWF4LWhlaWdodCcsXG4gICdtLSc6ICdtYXJnaW4nLFxuICAnbXQtJzogJ21hcmdpbi10b3AnLFxuICAnbXItJzogJ21hcmdpbi1yaWdodCcsXG4gICdtYi0nOiAnbWFyZ2luLWJvdHRvbScsXG4gICdtbC0nOiAnbWFyZ2luLWxlZnQnLFxuICAnbXgtJzogJ21hcmdpbi14JyxcbiAgJ215LSc6ICdtYXJnaW4teScsXG4gICdwLSc6ICdwYWRkaW5nJyxcbiAgJ3B0LSc6ICdwYWRkaW5nLXRvcCcsXG4gICdwci0nOiAncGFkZGluZy1yaWdodCcsXG4gICdwYi0nOiAncGFkZGluZy1ib3R0b20nLFxuICAncGwtJzogJ3BhZGRpbmctbGVmdCcsXG4gICdweC0nOiAncGFkZGluZy14JyxcbiAgJ3B5LSc6ICdwYWRkaW5nLXknLFxuICAnZ2FwLSc6ICdnYXAnLFxuICAncm91bmRlZC0nOiAnYm9yZGVyLXJhZGl1cycsXG4gICdqdXN0aWZ5LSc6ICdqdXN0aWZ5LWNvbnRlbnQnLFxuICAnaXRlbXMtJzogJ2FsaWduLWl0ZW1zJyxcbiAgJ2NvbnRlbnQtJzogJ2FsaWduLWNvbnRlbnQnLFxuICAnc2VsZi0nOiAnYWxpZ24tc2VsZicsXG4gICdvdmVyZmxvdy0nOiAnb3ZlcmZsb3cnLFxuICAnb3ZlcmZsb3cteC0nOiAnb3ZlcmZsb3cteCcsXG4gICdvdmVyZmxvdy15LSc6ICdvdmVyZmxvdy15JyxcbiAgJ3otJzogJ3otaW5kZXgnLFxuICAnb3BhY2l0eS0nOiAnb3BhY2l0eScsXG4gICdjdXJzb3ItJzogJ2N1cnNvcicsXG4gICdzaGFkb3ctJzogJ2JveC1zaGFkb3cnLFxuICAnYm9yZGVyLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLXQtJzogJ2JvcmRlci13aWR0aCcsXG4gICdib3JkZXItci0nOiAnYm9yZGVyLXdpZHRoJyxcbiAgJ2JvcmRlci1iLSc6ICdib3JkZXItd2lkdGgnLFxuICAnYm9yZGVyLWwtJzogJ2JvcmRlci13aWR0aCcsXG4gICd0b3AtJzogJ3RvcCcsXG4gICdyaWdodC0nOiAncmlnaHQnLFxuICAnYm90dG9tLSc6ICdib3R0b20nLFxuICAnbGVmdC0nOiAnbGVmdCcsXG4gICdpbnNldC0nOiAnaW5zZXQnLFxuICAndHJhY2tpbmctJzogJ2xldHRlci1zcGFjaW5nJyxcbiAgJ2xlYWRpbmctJzogJ2xpbmUtaGVpZ2h0JyxcbiAgJ2FzcGVjdC0nOiAnYXNwZWN0LXJhdGlvJyxcbiAgJ29iamVjdC0nOiAnb2JqZWN0LXBvc2l0aW9uJyxcbiAgJ2Jhc2lzLSc6ICdmbGV4LWJhc2lzJyxcbiAgJ2dyb3ctJzogJ2ZsZXgtZ3JvdycsXG4gICdzaHJpbmstJzogJ2ZsZXgtc2hyaW5rJyxcbiAgJ2dyaWQtY29scy0nOiAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJyxcbiAgJ2dyaWQtcm93cy0nOiAnZ3JpZC10ZW1wbGF0ZS1yb3dzJyxcbiAgJ2NvbC1zcGFuLSc6ICdncmlkLWNvbHVtbicsXG4gICdjb2wtc3RhcnQtJzogJ2dyaWQtY29sdW1uJyxcbiAgJ2NvbC1lbmQtJzogJ2dyaWQtY29sdW1uJyxcbiAgJ2NvbC0nOiAnZ3JpZC1jb2x1bW4nLFxuICAncm93LXNwYW4tJzogJ2dyaWQtcm93JyxcbiAgJ3Jvdy1zdGFydC0nOiAnZ3JpZC1yb3cnLFxuICAncm93LWVuZC0nOiAnZ3JpZC1yb3cnLFxuICAncm93LSc6ICdncmlkLXJvdycsXG4gICdwbGFjZS1pdGVtcy0nOiAncGxhY2UtaXRlbXMnLFxuICAncGxhY2UtY29udGVudC0nOiAncGxhY2UtY29udGVudCcsXG4gICdwbGFjZS1zZWxmLSc6ICdwbGFjZS1zZWxmJ1xufTtcblxuY29uc3QgRk9OVF9TSVpFX1VUSUxJVElFUyA9IG5ldyBTZXQoW1xuICAndGV4dC14cycsICd0ZXh0LXNtJywgJ3RleHQtYmFzZScsICd0ZXh0LWxnJywgJ3RleHQteGwnLFxuICAndGV4dC0yeGwnLCAndGV4dC0zeGwnLCAndGV4dC00eGwnLCAndGV4dC01eGwnLCAndGV4dC02eGwnLFxuICAndGV4dC03eGwnLCAndGV4dC04eGwnLCAndGV4dC05eGwnXG5dKTtcblxuY29uc3QgTElORV9IRUlHSFRfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICdsZWFkaW5nLW5vbmUnLCAnbGVhZGluZy10aWdodCcsICdsZWFkaW5nLXNudWcnLCAnbGVhZGluZy1ub3JtYWwnLFxuICAnbGVhZGluZy1yZWxheGVkJywgJ2xlYWRpbmctbG9vc2UnLCAnbGVhZGluZy0zJywgJ2xlYWRpbmctNCcsICdsZWFkaW5nLTUnLFxuICAnbGVhZGluZy02JywgJ2xlYWRpbmctNycsICdsZWFkaW5nLTgnLCAnbGVhZGluZy05JywgJ2xlYWRpbmctMTAnXG5dKTtcblxuY29uc3QgTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTID0gbmV3IFNldChbXG4gICd0cmFja2luZy10aWdodGVyJywgJ3RyYWNraW5nLXRpZ2h0JywgJ3RyYWNraW5nLW5vcm1hbCcsXG4gICd0cmFja2luZy13aWRlJywgJ3RyYWNraW5nLXdpZGVyJywgJ3RyYWNraW5nLXdpZGVzdCdcbl0pO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydHlGb3JVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmlwcGVkVXRpbGl0eSA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIFxuICBpZiAoVVRJTElUWV9UT19QUk9QRVJUWV9NQVBbc3RyaXBwZWRVdGlsaXR5XSkge1xuICAgIHJldHVybiBVVElMSVRZX1RPX1BST1BFUlRZX01BUFtzdHJpcHBlZFV0aWxpdHldO1xuICB9XG4gIFxuICBpZiAoRk9OVF9TSVpFX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgfVxuXG4gIGlmIChMSU5FX0hFSUdIVF9VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xpbmUtaGVpZ2h0JztcbiAgfVxuXG4gIGlmIChMRVRURVJfU1BBQ0lOR19VVElMSVRJRVMuaGFzKHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICByZXR1cm4gJ2xldHRlci1zcGFjaW5nJztcbiAgfVxuICBcbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0ZXh0LScpICYmICFGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZFV0aWxpdHkuc2xpY2UoNSk7XG4gICAgaWYgKC9eXFxkLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZS5zdGFydHNXaXRoKCdbJykpIHtcbiAgICAgIHJldHVybiAnZm9udC1zaXplJztcbiAgICB9XG4gICAgcmV0dXJuICdjb2xvcic7XG4gIH1cblxuICBpZiAoc3RyaXBwZWRVdGlsaXR5LnN0YXJ0c1dpdGgoJ2xlYWRpbmctJykgJiYgIUxJTkVfSEVJR0hUX1VUSUxJVElFUy5oYXMoc3RyaXBwZWRVdGlsaXR5KSkge1xuICAgIHJldHVybiAnbGluZS1oZWlnaHQnO1xuICB9XG5cbiAgaWYgKHN0cmlwcGVkVXRpbGl0eS5zdGFydHNXaXRoKCd0cmFja2luZy0nKSAmJiAhTEVUVEVSX1NQQUNJTkdfVVRJTElUSUVTLmhhcyhzdHJpcHBlZFV0aWxpdHkpKSB7XG4gICAgcmV0dXJuICdsZXR0ZXItc3BhY2luZyc7XG4gIH1cbiAgXG4gIGlmICgvXmJvcmRlci1bdHJibF0tXFxbLy50ZXN0KHN0cmlwcGVkVXRpbGl0eSkpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHN0cmlwcGVkVXRpbGl0eS5tYXRjaCgvXmJvcmRlci1bdHJibF0tXFxbKC4rKVxcXSQvKT8uWzFdIHx8ICcnO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcjJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgncmdiJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgnaHNsJykgfHwgXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoJ3ZhcignKSB8fCAvXlthLXpdL2kudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnYm9yZGVyLWNvbG9yJztcbiAgICB9XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aCgnYm9yZGVyLScpICYmIHN0cmlwcGVkVXRpbGl0eS5pbmNsdWRlcygnWycpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZFV0aWxpdHkubWF0Y2goL15ib3JkZXItXFxbKC4rKVxcXSQvKT8uWzFdIHx8ICcnO1xuICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCcjJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgncmdiJykgfHwgdmFsdWUuc3RhcnRzV2l0aCgnaHNsJykgfHwgXG4gICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoJ3ZhcignKSB8fCAvXlthLXpdL2kudGVzdCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiAnYm9yZGVyLWNvbG9yJztcbiAgICB9XG4gIH1cbiAgXG4gIGNvbnN0IHNvcnRlZFByZWZpeGVzID0gT2JqZWN0LmtleXMoUFJFRklYX1BST1BFUlRZX01BUCkuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aCk7XG4gIFxuICBmb3IgKGNvbnN0IHByZWZpeCBvZiBzb3J0ZWRQcmVmaXhlcykge1xuICAgIGlmIChzdHJpcHBlZFV0aWxpdHkuc3RhcnRzV2l0aChwcmVmaXgpKSB7XG4gICAgICByZXR1cm4gUFJFRklYX1BST1BFUlRZX01BUFtwcmVmaXhdO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuICd1bmtub3duJztcbn1cblxuZnVuY3Rpb24gc3RyaXBWYXJpYW50cyh1dGlsaXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0cyA9IHV0aWxpdHkuc3BsaXQoJzonKTtcbiAgcmV0dXJuIHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNUZXh0Rm9udFNpemVVdGlsaXR5KHV0aWxpdHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBjb25zdCBzdHJpcHBlZCA9IHN0cmlwVmFyaWFudHModXRpbGl0eSk7XG4gIHJldHVybiBGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgKFxuICAgIHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RleHQtJykgJiYgL15cXGQvLnRlc3Qoc3RyaXBwZWQuc2xpY2UoNSkpXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1RleHRDb2xvclV0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgXG4gIGlmIChGT05UX1NJWkVfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgXG4gIGlmIChzdHJpcHBlZC5zdGFydHNXaXRoKCd0ZXh0LScpKSB7XG4gICAgY29uc3QgdmFsdWUgPSBzdHJpcHBlZC5zbGljZSg1KTtcbiAgICBpZiAoL15cXGQvLnRlc3QodmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoJ1snKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5lSGVpZ2h0VXRpbGl0eSh1dGlsaXR5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSBzdHJpcFZhcmlhbnRzKHV0aWxpdHkpO1xuICByZXR1cm4gTElORV9IRUlHSFRfVVRJTElUSUVTLmhhcyhzdHJpcHBlZCkgfHwgc3RyaXBwZWQuc3RhcnRzV2l0aCgnbGVhZGluZy0nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGV0dGVyU3BhY2luZ1V0aWxpdHkodXRpbGl0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHN0cmlwcGVkID0gc3RyaXBWYXJpYW50cyh1dGlsaXR5KTtcbiAgcmV0dXJuIExFVFRFUl9TUEFDSU5HX1VUSUxJVElFUy5oYXMoc3RyaXBwZWQpIHx8IHN0cmlwcGVkLnN0YXJ0c1dpdGgoJ3RyYWNraW5nLScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHJvcGVydGllc0ZvclV0aWxpdGllcyh1dGlsaXRpZXM6IHN0cmluZ1tdKTogTWFwPHN0cmluZywgc3RyaW5nW10+IHtcbiAgY29uc3QgcHJvcGVydHlNYXAgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nW10+KCk7XG4gIFxuICBmb3IgKGNvbnN0IHV0aWxpdHkgb2YgdXRpbGl0aWVzKSB7XG4gICAgY29uc3QgcHJvcGVydHkgPSBnZXRQcm9wZXJ0eUZvclV0aWxpdHkodXRpbGl0eSk7XG4gICAgXG4gICAgaWYgKCFwcm9wZXJ0eU1hcC5oYXMocHJvcGVydHkpKSB7XG4gICAgICBwcm9wZXJ0eU1hcC5zZXQocHJvcGVydHksIFtdKTtcbiAgICB9XG4gICAgXG4gICAgcHJvcGVydHlNYXAuZ2V0KHByb3BlcnR5KSEucHVzaCh1dGlsaXR5KTtcbiAgfVxuICBcbiAgcmV0dXJuIHByb3BlcnR5TWFwO1xufVxuXG5leHBvcnQgY29uc3QgUFJPUEVSVFlfQ09ORkxJQ1RfR1JPVVBTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7XG4gICdkaXNwbGF5JzogWydkaXNwbGF5J10sXG4gICdwb3NpdGlvbic6IFsncG9zaXRpb24nXSxcbiAgJ3dpZHRoJzogWyd3aWR0aCcsICdtaW4td2lkdGgnLCAnbWF4LXdpZHRoJ10sXG4gICdoZWlnaHQnOiBbJ2hlaWdodCcsICdtaW4taGVpZ2h0JywgJ21heC1oZWlnaHQnXSxcbiAgJ21hcmdpbic6IFsnbWFyZ2luJywgJ21hcmdpbi10b3AnLCAnbWFyZ2luLXJpZ2h0JywgJ21hcmdpbi1ib3R0b20nLCAnbWFyZ2luLWxlZnQnLCAnbWFyZ2luLXgnLCAnbWFyZ2luLXknXSxcbiAgJ3BhZGRpbmcnOiBbJ3BhZGRpbmcnLCAncGFkZGluZy10b3AnLCAncGFkZGluZy1yaWdodCcsICdwYWRkaW5nLWJvdHRvbScsICdwYWRkaW5nLWxlZnQnLCAncGFkZGluZy14JywgJ3BhZGRpbmcteSddLFxuICAnZmxleC1kaXJlY3Rpb24nOiBbJ2ZsZXgtZGlyZWN0aW9uJ10sXG4gICdmbGV4LXdyYXAnOiBbJ2ZsZXgtd3JhcCddLFxuICAnZmxleCc6IFsnZmxleCcsICdmbGV4LWdyb3cnLCAnZmxleC1zaHJpbmsnLCAnZmxleC1iYXNpcyddLFxuICAnanVzdGlmeS1jb250ZW50JzogWydqdXN0aWZ5LWNvbnRlbnQnXSxcbiAgJ2FsaWduLWl0ZW1zJzogWydhbGlnbi1pdGVtcyddLFxuICAnYWxpZ24tY29udGVudCc6IFsnYWxpZ24tY29udGVudCddLFxuICAnYWxpZ24tc2VsZic6IFsnYWxpZ24tc2VsZiddLFxuICAndGV4dC1hbGlnbic6IFsndGV4dC1hbGlnbiddLFxuICAnZm9udC1zaXplJzogWydmb250LXNpemUnXSxcbiAgJ2ZvbnQtd2VpZ2h0JzogWydmb250LXdlaWdodCddLFxuICAnY29sb3InOiBbJ2NvbG9yJ10sXG4gICdiYWNrZ3JvdW5kLWNvbG9yJzogWydiYWNrZ3JvdW5kLWNvbG9yJywgJ2JhY2tncm91bmQnXSxcbiAgJ2JvcmRlci1yYWRpdXMnOiBbJ2JvcmRlci1yYWRpdXMnXSxcbiAgJ2JvcmRlci13aWR0aCc6IFsnYm9yZGVyLXdpZHRoJywgJ2JvcmRlci10b3Atd2lkdGgnLCAnYm9yZGVyLXJpZ2h0LXdpZHRoJywgJ2JvcmRlci1ib3R0b20td2lkdGgnLCAnYm9yZGVyLWxlZnQtd2lkdGgnXSxcbiAgJ2JvcmRlci1jb2xvcic6IFsnYm9yZGVyLWNvbG9yJywgJ2JvcmRlci10b3AtY29sb3InLCAnYm9yZGVyLXJpZ2h0LWNvbG9yJywgJ2JvcmRlci1ib3R0b20tY29sb3InLCAnYm9yZGVyLWxlZnQtY29sb3InXSxcbiAgJ2JvcmRlci1zdHlsZSc6IFsnYm9yZGVyLXN0eWxlJ10sXG4gICdvdmVyZmxvdyc6IFsnb3ZlcmZsb3cnLCAnb3ZlcmZsb3cteCcsICdvdmVyZmxvdy15J10sXG4gICd6LWluZGV4JzogWyd6LWluZGV4J10sXG4gICdvcGFjaXR5JzogWydvcGFjaXR5J10sXG4gICdnYXAnOiBbJ2dhcCddLFxuICAnaW5zZXQnOiBbJ2luc2V0JywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICAndGV4dC1kZWNvcmF0aW9uJzogWyd0ZXh0LWRlY29yYXRpb24nXSxcbiAgJ3RleHQtdHJhbnNmb3JtJzogWyd0ZXh0LXRyYW5zZm9ybSddLFxuICAnbGV0dGVyLXNwYWNpbmcnOiBbJ2xldHRlci1zcGFjaW5nJ10sXG4gICdsaW5lLWhlaWdodCc6IFsnbGluZS1oZWlnaHQnXSxcbiAgJ2FzcGVjdC1yYXRpbyc6IFsnYXNwZWN0LXJhdGlvJ10sXG4gICdvYmplY3QtZml0JzogWydvYmplY3QtZml0J10sXG4gICdvYmplY3QtcG9zaXRpb24nOiBbJ29iamVjdC1wb3NpdGlvbiddLFxuICAnd29yZC1icmVhayc6IFsnd29yZC1icmVhayddLFxuICAnZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zJzogWydncmlkLXRlbXBsYXRlLWNvbHVtbnMnXSxcbiAgJ2dyaWQtdGVtcGxhdGUtcm93cyc6IFsnZ3JpZC10ZW1wbGF0ZS1yb3dzJ10sXG4gICdncmlkLWNvbHVtbic6IFsnZ3JpZC1jb2x1bW4nLCAnZ3JpZC1jb2x1bW4tc3RhcnQnLCAnZ3JpZC1jb2x1bW4tZW5kJ10sXG4gICdncmlkLXJvdyc6IFsnZ3JpZC1yb3cnLCAnZ3JpZC1yb3ctc3RhcnQnLCAnZ3JpZC1yb3ctZW5kJ10sXG4gICdwbGFjZS1pdGVtcyc6IFsncGxhY2UtaXRlbXMnXSxcbiAgJ3BsYWNlLWNvbnRlbnQnOiBbJ3BsYWNlLWNvbnRlbnQnXSxcbiAgJ3BsYWNlLXNlbGYnOiBbJ3BsYWNlLXNlbGYnXVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZsaWN0R3JvdXAocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBmb3IgKGNvbnN0IFtncm91cE5hbWUsIHByb3BlcnRpZXNdIG9mIE9iamVjdC5lbnRyaWVzKFBST1BFUlRZX0NPTkZMSUNUX0dST1VQUykpIHtcbiAgICBpZiAocHJvcGVydGllcy5pbmNsdWRlcyhwcm9wZXJ0eSkpIHtcbiAgICAgIHJldHVybiBncm91cE5hbWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydGllc0NvbmZsaWN0KHByb3AxOiBzdHJpbmcsIHByb3AyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgY29uc3QgZ3JvdXAxID0gZ2V0Q29uZmxpY3RHcm91cChwcm9wMSk7XG4gIGNvbnN0IGdyb3VwMiA9IGdldENvbmZsaWN0R3JvdXAocHJvcDIpO1xuICBcbiAgaWYgKGdyb3VwMSAmJiBncm91cDIgJiYgZ3JvdXAxID09PSBncm91cDIpIHtcbiAgICBpZiAocHJvcDEgPT09IHByb3AyKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgY29uc3QgZ3JvdXAgPSBQUk9QRVJUWV9DT05GTElDVF9HUk9VUFNbZ3JvdXAxXTtcbiAgICBcbiAgICBpZiAoZ3JvdXAubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgaWYgKGdyb3VwMSA9PT0gJ21hcmdpbicgfHwgZ3JvdXAxID09PSAncGFkZGluZycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gZ3JvdXAxIHx8IHByb3AyID09PSBncm91cDEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChncm91cDEgPT09ICdpbnNldCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2luc2V0JyB8fCBwcm9wMiA9PT0gJ2luc2V0Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnYm9yZGVyLXdpZHRoJykge1xuICAgICAgaWYgKHByb3AxID09PSAnYm9yZGVyLXdpZHRoJyB8fCBwcm9wMiA9PT0gJ2JvcmRlci13aWR0aCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGdyb3VwMSA9PT0gJ2JvcmRlci1jb2xvcicpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2JvcmRlci1jb2xvcicgfHwgcHJvcDIgPT09ICdib3JkZXItY29sb3InKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChncm91cDEgPT09ICdvdmVyZmxvdycpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ292ZXJmbG93JyB8fCBwcm9wMiA9PT0gJ292ZXJmbG93Jykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZ3JvdXAxID09PSAnZmxleCcpIHtcbiAgICAgIGlmIChwcm9wMSA9PT0gJ2ZsZXgnIHx8IHByb3AyID09PSAnZmxleCcpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG4gIH1cbiAgXG4gIHJldHVybiBwcm9wMSA9PT0gcHJvcDI7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "css-to-tailwind-react",
3
- "version": "0.3.1",
3
+ "version": "0.3.4",
4
4
  "description": "Convert traditional CSS (inline, internal, and external) into Tailwind CSS utility classes for React-based frameworks",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",