@nlabs/lex 1.55.2 → 1.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -161,7 +161,7 @@ export const test = async (options, args, filesOrCallback, callbackParam)=>{
161
161
  } else {
162
162
  // No Vitest config file exists in the project
163
163
  // Check if there's a Vitest config in lex.config.cjs
164
- projectVitestConfig = LexConfig.config.vitest;
164
+ projectVitestConfig = LexConfig.config.vitest || null;
165
165
  const lexDir = LexConfig.getLexDir();
166
166
  const lexVitestConfig = pathResolve(lexDir, 'vitest.config.mjs');
167
167
  if (debug) {
@@ -426,4 +426,4 @@ Please provide:
426
426
  };
427
427
  export default test;
428
428
 
429
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZXN0L3Rlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtyZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi4vYWkvYWkuanMnO1xuXG5jb25zdCBkZXRlY3RFU00gPSAoY3dkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aFJlc29sdmUoY3dkLCAncGFja2FnZS5qc29uJyk7XG5cbiAgaWYoZXhpc3RzU3luYyhwYWNrYWdlSnNvblBhdGgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uQ29udGVudCA9IHJlYWRGaWxlU3luYyhwYWNrYWdlSnNvblBhdGgsICd1dGY4Jyk7XG4gICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25Db250ZW50KTtcbiAgICAgIHJldHVybiBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJztcbiAgICB9IGNhdGNoKF9lcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE9wdGlvbnMge1xuICByZWFkb25seSBhbmFseXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWlEZWJ1Zz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFpR2VuZXJhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBhaUFuYWx5emU/OiBib29sZWFuO1xuICByZWFkb25seSBiYWlsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2hhbmdlZFNpbmNlPzogc3RyaW5nO1xuICByZWFkb25seSBjaT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsZWFyQ2FjaGU/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xsZWN0Q292ZXJhZ2VGcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xvcnM/OiBib29sZWFuO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVidWdUZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRldGVjdE9wZW5IYW5kbGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudj86IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3JPbkRlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBleHBhbmQ/OiBib29sZWFuO1xuICByZWFkb25seSBmb3JjZUV4aXQ/OiBib29sZWFuO1xuICByZWFkb25seSBnZW5lcmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGpzb24/OiBib29sZWFuO1xuICByZWFkb25seSBsYXN0Q29tbWl0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbGlzdFRlc3RzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbG9nSGVhcFVzYWdlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWF4V29ya2Vycz86IHN0cmluZztcbiAgcmVhZG9ubHkgbm9TdGFja1RyYWNlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm90aWZ5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgb25seUNoYW5nZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBwYXNzV2l0aE5vVGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlbW92ZUNhY2hlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcnVuSW5CYW5kPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc2V0dXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNob3dDb25maWc/OiBib29sZWFuO1xuICByZWFkb25seSBzaWxlbnQ/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXN0TG9jYXRpb25JblJlc3VsdHM/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXN0TmFtZVBhdHRlcm4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRlc3RQYXRoUGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgdXBkYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlU3RkZXJyPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmVyYm9zZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdhdGNoPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaEFsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFRlc3RDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmNvbnN0IGRlZmF1bHRFeGl0ID0gKChjb2RlPzogbnVtYmVyKSA9PiB7XG4gIGlmKHByb2Nlc3MuZW52LlZJVEVTVCB8fCBwcm9jZXNzLmVudi5WSVRFU1RfV09SS0VSX0lEIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIG5ldmVyO1xuICB9XG5cbiAgcHJvY2Vzcy5leGl0KGNvZGUpO1xufSkgYXMgdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuZXhwb3J0IGNvbnN0IGdldFRlc3RGaWxlUGF0dGVybnMgPSAodGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBkZWZhdWx0UGF0dGVybnMgPSBbJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJywgJyoqLyouaW50ZWdyYXRpb24uKiddO1xuXG4gIGlmKCF0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICByZXR1cm4gZGVmYXVsdFBhdHRlcm5zO1xuICB9XG5cbiAgcmV0dXJuIFt0ZXN0UGF0aFBhdHRlcm5dO1xufTtcblxuY29uc3QgZmluZFVuY292ZXJlZFNvdXJjZUZpbGVzID0gKCk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBnbG9iU3luYygnc3JjLyoqLyoue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovbGliLyoqJywgJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJ11cbiAgfSk7XG5cbiAgY29uc3QgdGVzdEZpbGVzID0gZ2xvYlN5bmMoJyoqLyoue3Rlc3Qsc3BlY30ue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovbGliLyoqJ11cbiAgfSk7XG5cbiAgcmV0dXJuIHNvdXJjZUZpbGVzLmZpbHRlcigoc291cmNlRmlsZSkgPT4ge1xuICAgIGNvbnN0IGJhc2VOYW1lID0gc291cmNlRmlsZS5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpO1xuICAgIHJldHVybiAhdGVzdEZpbGVzLnNvbWUoKHRlc3RGaWxlKSA9PiB0ZXN0RmlsZS5pbmNsdWRlcyhiYXNlTmFtZSkpO1xuICB9KTtcbn07XG5cbmNvbnN0IHByb2Nlc3NUZXN0UmVzdWx0cyA9IChvdXRwdXRGaWxlPzogc3RyaW5nKTogYW55ID0+IHtcbiAgaWYoIW91dHB1dEZpbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhvdXRwdXRGaWxlLCAndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRlc3QgPSBhc3luYyAoXG4gIG9wdGlvbnM6IFRlc3RPcHRpb25zLFxuICBhcmdzPzogc3RyaW5nW10sXG4gIGZpbGVzT3JDYWxsYmFjaz86IHN0cmluZ1tdIHwgVGVzdENhbGxiYWNrLFxuICBjYWxsYmFja1BhcmFtPzogVGVzdENhbGxiYWNrXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAvLyBCYWNrd2FyZC1jb21wYXQgYXJndW1lbnQgbm9ybWFsaXphdGlvbjogYWxsb3cgY2FsbGJhY2sgYXMgdGhpcmQgcGFyYW1cbiAgbGV0IGZpbGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGNhbGxiYWNrOiBUZXN0Q2FsbGJhY2sgPSBkZWZhdWx0RXhpdDtcblxuICBpZih0eXBlb2YgZmlsZXNPckNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBmaWxlc09yQ2FsbGJhY2sgYXMgVGVzdENhbGxiYWNrO1xuICB9IGVsc2Uge1xuICAgIGZpbGVzID0gZmlsZXNPckNhbGxiYWNrIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNhbGxiYWNrID0gY2FsbGJhY2tQYXJhbSB8fCBkZWZhdWx0RXhpdDtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5hbHl6ZSA9IGZhbHNlLFxuICAgIGFpQW5hbHl6ZSA9IGZhbHNlLFxuICAgIGFpRGVidWcgPSBmYWxzZSxcbiAgICBhaUdlbmVyYXRlID0gZmFsc2UsXG4gICAgYmFpbCxcbiAgICBjaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3IsXG4gICAgY2hhbmdlZFNpbmNlLFxuICAgIGNpLFxuICAgIGNsZWFyQ2FjaGUsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbGxlY3RDb3ZlcmFnZUZyb20sXG4gICAgY29sb3JzLFxuICAgIGNvbmZpZyxcbiAgICBkZWJ1ZyA9IGZhbHNlLFxuICAgIGRlYnVnVGVzdHMgPSBmYWxzZSxcbiAgICBkZXRlY3RPcGVuSGFuZGxlcyxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBlbnYsXG4gICAgZXJyb3JPbkRlcHJlY2F0ZWQsXG4gICAgZXhwYW5kLFxuICAgIGZvcmNlRXhpdCxcbiAgICBnZW5lcmF0ZSA9IGZhbHNlLFxuICAgIGpzb24sXG4gICAgbGFzdENvbW1pdCxcbiAgICBsaXN0VGVzdHMsXG4gICAgbG9nSGVhcFVzYWdlLFxuICAgIG1heFdvcmtlcnMsXG4gICAgbm9TdGFja1RyYWNlLFxuICAgIG5vdGlmeSxcbiAgICBvbmx5Q2hhbmdlZCxcbiAgICBvdXRwdXRGaWxlLFxuICAgIHBhc3NXaXRoTm9UZXN0cyxcbiAgICBxdWlldCxcbiAgICByZW1vdmVDYWNoZSxcbiAgICBydW5JbkJhbmQsXG4gICAgc2V0dXAsXG4gICAgc2hvd0NvbmZpZyxcbiAgICBzaWxlbnQsXG4gICAgdGVzdExvY2F0aW9uSW5SZXN1bHRzLFxuICAgIHRlc3ROYW1lUGF0dGVybixcbiAgICB0ZXN0UGF0aFBhdHRlcm4sXG4gICAgdXBkYXRlLFxuICAgIHVzZVN0ZGVycixcbiAgICB2ZXJib3NlLFxuICAgIHdhdGNoLFxuICAgIHdhdGNoQWxsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHVzZUdlbmVyYXRlID0gZ2VuZXJhdGUgfHwgYWlHZW5lcmF0ZTtcbiAgY29uc3QgdXNlQW5hbHl6ZSA9IGFuYWx5emUgfHwgYWlBbmFseXplO1xuICBjb25zdCB1c2VEZWJ1ZyA9IGRlYnVnVGVzdHMgfHwgYWlEZWJ1ZztcblxuICBsb2coYCR7Y2xpTmFtZX0gdGVzdGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcob3B0aW9ucyk7XG5cbiAgY29uc3Qge3VzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgdGVzdENvbmZpZ1BhdGggPSBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyh0ZXN0Q29uZmlnUGF0aCkpIHtcbiAgICAgIGxvZygnVXNpbmcgdHNjb25maWcudGVzdC5qc29uIGZvciB0ZXN0aW5nLi4uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIExleENvbmZpZy5jaGVja1Rlc3RUeXBlc2NyaXB0Q29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgaWYodXNlR2VuZXJhdGUpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgY29kZSB0byBnZW5lcmF0ZSB0ZXN0IGNhc2VzLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdW5jb3ZlcmVkRmlsZXMgPSBmaW5kVW5jb3ZlcmVkU291cmNlRmlsZXMoKTtcblxuICAgICAgaWYodW5jb3ZlcmVkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB0YXJnZXRGaWxlID0gdW5jb3ZlcmVkRmlsZXNbMF07XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBmaWxlOiB0YXJnZXRGaWxlLFxuICAgICAgICAgIHByb21wdDogYEdlbmVyYXRlIFZpdGVzdCB1bml0IHRlc3RzIGZvciB0aGlzIGZpbGU6ICR7dGFyZ2V0RmlsZX1cXG5cXG4ke3JlYWRGaWxlU3luYyh0YXJnZXRGaWxlLCAndXRmLTgnKX1cXG5cXG5QbGVhc2UgY3JlYXRlIGNvbXByZWhlbnNpdmUgdGVzdHMgdGhhdCBjb3ZlciB0aGUgbWFpbiBmdW5jdGlvbmFsaXR5LiBJbmNsdWRlIHRlc3QgZml4dHVyZXMgYW5kIG1vY2tzIHdoZXJlIG5lY2Vzc2FyeS5gLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHRhc2s6ICd0ZXN0J1xuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoYEFJIHRlc3QgZ2VuZXJhdGlvbiBzdWdnZXN0aW9ucyBwcm92aWRlZCBmb3IgJHt0YXJnZXRGaWxlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdBbGwgc291cmNlIGZpbGVzIGFwcGVhciB0byBoYXZlIGNvcnJlc3BvbmRpbmcgdGVzdCBmaWxlcycpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgdGVzdCBzdWdnZXN0aW9ucycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIHRlc3QgZ2VuZXJhdGlvbiBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Vml0ZXN0QmluID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy8uYmluL3ZpdGVzdCcpO1xuICBsZXQgdml0ZXN0UGF0aDogc3RyaW5nO1xuXG4gIGlmKGV4aXN0c1N5bmMocHJvamVjdFZpdGVzdEJpbikpIHtcbiAgICB2aXRlc3RQYXRoID0gcHJvamVjdFZpdGVzdEJpbjtcbiAgfSBlbHNlIHtcbiAgICB2aXRlc3RQYXRoID0gcmVzb2x2ZUJpbmFyeVBhdGgoJ3ZpdGVzdCcpO1xuICB9XG5cbiAgaWYoIXZpdGVzdFBhdGgpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFZpdGVzdCBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBsZXQgdml0ZXN0Q29uZmlnRmlsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgcHJvamVjdFZpdGVzdENvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICBpZihjb25maWcpIHtcbiAgICB2aXRlc3RDb25maWdGaWxlID0gY29uZmlnO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3RWaXRlc3RDb25maWdQYXRocyA9IFtcbiAgICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICd2aXRlc3QuY29uZmlnLnRzJyksXG4gICAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAndml0ZXN0LmNvbmZpZy5tdHMnKSxcbiAgICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICd2aXRlc3QuY29uZmlnLmpzJyksXG4gICAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAndml0ZXN0LmNvbmZpZy5tanMnKSxcbiAgICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICd2aXRlc3QuY29uZmlnLmNqcycpXG4gICAgXTtcbiAgICBjb25zdCBleGlzdGluZ0NvbmZpZ1BhdGggPSBwcm9qZWN0Vml0ZXN0Q29uZmlnUGF0aHMuZmluZCgoY29uZmlnUGF0aCkgPT4gZXhpc3RzU3luYyhjb25maWdQYXRoKSk7XG5cbiAgICBpZihleGlzdGluZ0NvbmZpZ1BhdGgpIHtcbiAgICAgIHZpdGVzdENvbmZpZ0ZpbGUgPSBleGlzdGluZ0NvbmZpZ1BhdGg7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coYFVzaW5nIHByb2plY3QgVml0ZXN0IGNvbmZpZyBmaWxlOiAke3ZpdGVzdENvbmZpZ0ZpbGV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIFZpdGVzdCBjb25maWcgZmlsZSBleGlzdHMgaW4gdGhlIHByb2plY3RcbiAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBWaXRlc3QgY29uZmlnIGluIGxleC5jb25maWcuY2pzXG4gICAgICBwcm9qZWN0Vml0ZXN0Q29uZmlnID0gTGV4Q29uZmlnLmNvbmZpZy52aXRlc3Q7XG5cbiAgICAgIGNvbnN0IGxleERpciA9IExleENvbmZpZy5nZXRMZXhEaXIoKTtcbiAgICAgIGNvbnN0IGxleFZpdGVzdENvbmZpZyA9IHBhdGhSZXNvbHZlKGxleERpciwgJ3ZpdGVzdC5jb25maWcubWpzJyk7XG5cbiAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgIGxvZyhgTG9va2luZyBmb3IgVml0ZXN0IGNvbmZpZyBhdDogJHtsZXhWaXRlc3RDb25maWd9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIGxvZyhgRmlsZSBleGlzdHM6ICR7ZXhpc3RzU3luYyhsZXhWaXRlc3RDb25maWcpfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgfVxuXG4gICAgICBpZihleGlzdHNTeW5jKGxleFZpdGVzdENvbmZpZykpIHtcbiAgICAgICAgdml0ZXN0Q29uZmlnRmlsZSA9IGxleFZpdGVzdENvbmZpZztcbiAgICAgICAgaWYocHJvamVjdFZpdGVzdENvbmZpZyAmJiBPYmplY3Qua2V5cyhwcm9qZWN0Vml0ZXN0Q29uZmlnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgICAgIGxvZyhgVXNpbmcgTGV4IFZpdGVzdCBjb25maWcgd2l0aCBwcm9qZWN0IFZpdGVzdCBjb25maWcgZnJvbSBsZXguY29uZmlnLmNqczogJHt2aXRlc3RDb25maWdGaWxlfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmKGRlYnVnKSB7XG4gICAgICAgICAgbG9nKGBVc2luZyBMZXggVml0ZXN0IGNvbmZpZyAobm8gcHJvamVjdCBWaXRlc3QgY29uZmlnIGZvdW5kKTogJHt2aXRlc3RDb25maWdGaWxlfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgIGxvZygnTm8gVml0ZXN0IGNvbmZpZyBmb3VuZCBpbiBwcm9qZWN0IG9yIExleCcsICd3YXJuJywgcXVpZXQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYoc2hvd0NvbmZpZykge1xuICAgIGlmKHZpdGVzdENvbmZpZ0ZpbGUpIHtcbiAgICAgIGNvbnN0IHJlc29sdmVkQ29uZmlnID0gYXdhaXQgaW1wb3J0KHZpdGVzdENvbmZpZ0ZpbGUpO1xuICAgICAgbG9nKEpTT04uc3RyaW5naWZ5KHJlc29sdmVkQ29uZmlnLmRlZmF1bHQgPz8gcmVzb2x2ZWRDb25maWcsIG51bGwsIDIpLCAnaW5mbycsIHF1aWV0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKEpTT04uc3RyaW5naWZ5KHt0ZXN0OiBwcm9qZWN0Vml0ZXN0Q29uZmlnID8/IHt9fSwgbnVsbCwgMiksICdpbmZvJywgcXVpZXQpO1xuICAgIH1cbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGNvbnN0IHZpdGVzdFNldHVwRmlsZTogc3RyaW5nID0gc2V0dXAgfHwgcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3ZpdGVzdC5zZXR1cC5qcycpO1xuICBjb25zdCB2aXRlc3RBcmdzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB2aXRlc3RPcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCByZXBvcnRlcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgZmlsdGVyczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgd2F0Y2hNb2RlID0gQm9vbGVhbih3YXRjaCB8fCB3YXRjaEFsbCk7XG4gIGNvbnN0IGxpc3RNb2RlID0gQm9vbGVhbihsaXN0VGVzdHMpO1xuXG4gIGlmKGxpc3RNb2RlKSB7XG4gICAgdml0ZXN0QXJncy5wdXNoKCdsaXN0Jyk7XG4gIH0gZWxzZSBpZih3YXRjaE1vZGUpIHtcbiAgICB2aXRlc3RBcmdzLnB1c2goJ3dhdGNoJyk7XG4gIH0gZWxzZSB7XG4gICAgdml0ZXN0QXJncy5wdXNoKCdydW4nKTtcbiAgfVxuXG4gIGNvbnN0IGlzRVNNID0gZGV0ZWN0RVNNKHByb2Nlc3MuY3dkKCkpO1xuICBsZXQgbm9kZU9wdGlvbnMgPSBwcm9jZXNzLmVudi5OT0RFX09QVElPTlMgfHwgJyc7XG4gIGlmKGlzRVNNKSB7XG4gICAgaWYoIW5vZGVPcHRpb25zLmluY2x1ZGVzKCctLWV4cGVyaW1lbnRhbC12bS1tb2R1bGVzJykpIHtcbiAgICAgIG5vZGVPcHRpb25zID0gYCR7bm9kZU9wdGlvbnN9IC0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXNgLnRyaW0oKTtcbiAgICB9XG4gICAgbG9nKCdFU00gcHJvamVjdCBkZXRlY3RlZCwgdXNpbmcgLS1leHBlcmltZW50YWwtdm0tbW9kdWxlcyBpbiBOT0RFX09QVElPTlMnLCAnaW5mbycsIHF1aWV0KTtcbiAgfVxuXG4gIGlmKHZpdGVzdENvbmZpZ0ZpbGUpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tY29uZmlnJywgdml0ZXN0Q29uZmlnRmlsZSk7XG4gIH1cblxuICBpZihiYWlsKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWJhaWwnLCAnMScpO1xuICB9XG5cbiAgaWYoY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWNoYW5nZWQnKTtcbiAgfVxuXG4gIGlmKGNoYW5nZWRTaW5jZSkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1jaGFuZ2VkJywgY2hhbmdlZFNpbmNlKTtcbiAgfVxuXG4gIGlmKGNpKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLXJ1bicpO1xuICB9XG5cbiAgaWYoY29sbGVjdENvdmVyYWdlRnJvbSkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1jb3ZlcmFnZScsICctLWNvdmVyYWdlLmluY2x1ZGUnLCBjb2xsZWN0Q292ZXJhZ2VGcm9tKTtcbiAgfVxuXG4gIGlmKGRlYnVnKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWluc3BlY3QnKTtcbiAgfVxuXG4gIGlmKGRldGVjdE9wZW5IYW5kbGVzKSB7XG4gICAgcmVwb3J0ZXJzLmFkZCgnaGFuZ2luZy1wcm9jZXNzJyk7XG4gIH1cblxuICBjb25zdCBlbnZpcm9ubWVudE5hbWUgPSBlbnZpcm9ubWVudCB8fCBlbnY7XG4gIGlmKGVudmlyb25tZW50TmFtZSkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1lbnZpcm9ubWVudCcsIGVudmlyb25tZW50TmFtZSk7XG4gIH1cblxuICBpZihlcnJvck9uRGVwcmVjYXRlZCkge1xuICAgIGxvZygnVml0ZXN0IGRvZXMgbm90IHN1cHBvcnQgLS1lcnJvck9uRGVwcmVjYXRlZDsgb3B0aW9uIGlnbm9yZWQuJywgJ3dhcm4nLCBxdWlldCk7XG4gIH1cblxuICBpZihleHBhbmQpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tZXhwYW5kU25hcHNob3REaWZmJyk7XG4gIH1cblxuICBpZihmb3JjZUV4aXQpIHtcbiAgICBsb2coJ1ZpdGVzdCBkb2VzIG5vdCBzdXBwb3J0IC0tZm9yY2VFeGl0OyBvcHRpb24gaWdub3JlZC4nLCAnd2FybicsIHF1aWV0KTtcbiAgfVxuXG4gIGlmKGxhc3RDb21taXQpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tY2hhbmdlZCcpO1xuICB9XG5cbiAgaWYobG9nSGVhcFVzYWdlKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWxvZ0hlYXBVc2FnZScpO1xuICB9XG5cbiAgaWYobWF4V29ya2Vycykge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1tYXhXb3JrZXJzJywgbWF4V29ya2Vycyk7XG4gIH1cblxuICBpZihub1N0YWNrVHJhY2UpIHtcbiAgICBsb2coJ1ZpdGVzdCBkb2VzIG5vdCBzdXBwb3J0IC0tbm9TdGFja1RyYWNlOyBvcHRpb24gaWdub3JlZC4nLCAnd2FybicsIHF1aWV0KTtcbiAgfVxuXG4gIGlmKG5vdGlmeSkge1xuICAgIGxvZygnVml0ZXN0IGRvZXMgbm90IHN1cHBvcnQgLS1ub3RpZnk7IG9wdGlvbiBpZ25vcmVkLicsICd3YXJuJywgcXVpZXQpO1xuICB9XG5cbiAgaWYob25seUNoYW5nZWQpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tY2hhbmdlZCcpO1xuICB9XG5cbiAgbGV0IHRlbXBPdXRwdXRGaWxlID0gb3V0cHV0RmlsZTtcbiAgY29uc3Qgc2hvdWxkV3JpdGVKc29uID0ganNvbiB8fCB1c2VBbmFseXplIHx8IHVzZURlYnVnIHx8IEJvb2xlYW4ob3V0cHV0RmlsZSk7XG5cbiAgaWYoc2hvdWxkV3JpdGVKc29uKSB7XG4gICAgdGVtcE91dHB1dEZpbGUgPSBvdXRwdXRGaWxlIHx8ICcubGV4LXRlc3QtcmVzdWx0cy5qc29uJztcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tb3V0cHV0RmlsZScsIHRlbXBPdXRwdXRGaWxlKTtcbiAgICByZXBvcnRlcnMuYWRkKCdqc29uJyk7XG4gIH1cblxuICBpZihwYXNzV2l0aE5vVGVzdHMpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tcGFzc1dpdGhOb1Rlc3RzJyk7XG4gIH1cblxuICBpZihydW5JbkJhbmQpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tbm8tZmlsZS1wYXJhbGxlbGlzbScsICctLW1heFdvcmtlcnMnLCAnMScpO1xuICB9XG5cbiAgaWYoc2lsZW50KSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLXNpbGVudCcpO1xuICB9XG5cbiAgaWYodGVzdExvY2F0aW9uSW5SZXN1bHRzKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWluY2x1ZGVUYXNrTG9jYXRpb24nKTtcbiAgfVxuXG4gIGlmKHRlc3ROYW1lUGF0dGVybikge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS10ZXN0TmFtZVBhdHRlcm4nLCB0ZXN0TmFtZVBhdHRlcm4pO1xuICB9XG5cbiAgaWYodGVzdFBhdGhQYXR0ZXJuKSB7XG4gICAgZmlsdGVycy5wdXNoKHRlc3RQYXRoUGF0dGVybik7XG4gIH1cblxuICBpZih1c2VTdGRlcnIpIHtcbiAgICBsb2coJ1ZpdGVzdCBkb2VzIG5vdCBzdXBwb3J0IC0tdXNlU3RkZXJyOyBvcHRpb24gaWdub3JlZC4nLCAnd2FybicsIHF1aWV0KTtcbiAgfVxuXG4gIGlmKHZlcmJvc2UpIHtcbiAgICByZXBvcnRlcnMuYWRkKCd2ZXJib3NlJyk7XG4gIH1cblxuICBpZihyZW1vdmVDYWNoZSB8fCBjbGVhckNhY2hlKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWNsZWFyQ2FjaGUnKTtcbiAgfVxuXG4gIGlmKHVwZGF0ZSkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS11cGRhdGUnKTtcbiAgfVxuXG4gIGlmKHdhdGNoKSB7XG4gICAgZmlsdGVycy5wdXNoKHdhdGNoKTtcbiAgfVxuXG4gIGlmKGFyZ3MpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goLi4uYXJncyk7XG4gIH1cblxuICBpZihmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgZmlsdGVycy5wdXNoKC4uLmZpbGVzKTtcbiAgfVxuXG4gIGlmKHJlcG9ydGVycy5zaXplID4gMCkge1xuICAgIGNvbnN0IHJlcG9ydGVyTGlzdCA9IEFycmF5LmZyb20ocmVwb3J0ZXJzKTtcbiAgICBpZihyZXBvcnRlckxpc3QuaW5jbHVkZXMoJ2pzb24nKSAmJiAhcmVwb3J0ZXJMaXN0LmluY2x1ZGVzKCd2ZXJib3NlJykpIHtcbiAgICAgIC8vIEtlZXAgY29uc29sZSBvdXRwdXQgd2hpbGUgd3JpdGluZyBKU09OIHJlc3VsdHMuXG4gICAgICByZXBvcnRlckxpc3QudW5zaGlmdCgnZGVmYXVsdCcpO1xuICAgIH1cbiAgICByZXBvcnRlckxpc3QuZm9yRWFjaCgocmVwb3J0ZXIpID0+IHZpdGVzdE9wdGlvbnMucHVzaCgnLS1yZXBvcnRlcicsIHJlcG9ydGVyKSk7XG4gIH1cblxuICBjb25zdCBmaW5hbEFyZ3MgPSBbLi4udml0ZXN0QXJncywgLi4udml0ZXN0T3B0aW9ucywgLi4uZmlsdGVyc107XG5cbiAgaWYoZGVidWcpIHtcbiAgICBsb2coYFZpdGVzdCBvcHRpb25zOiAke2ZpbmFsQXJncy5qb2luKCcgJyl9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgbG9nKGBOT0RFX09QVElPTlM6ICR7bm9kZU9wdGlvbnN9YCwgJ2luZm8nLCBxdWlldCk7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgTk9ERV9PUFRJT05TOiBub2RlT3B0aW9uc1xuICAgIH07XG5cbiAgICBpZihjb2xvcnMpIHtcbiAgICAgIGVudi5GT1JDRV9DT0xPUiA9ICcxJztcbiAgICB9XG5cbiAgICBpZihjaSkge1xuICAgICAgZW52LkNJID0gJ3RydWUnO1xuICAgIH1cblxuICAgIGlmKHZpdGVzdFNldHVwRmlsZSAmJiBleGlzdHNTeW5jKHZpdGVzdFNldHVwRmlsZSkpIHtcbiAgICAgIGVudi5MRVhfVklURVNUX1NFVFVQID0gdml0ZXN0U2V0dXBGaWxlO1xuICAgIH1cblxuICAgIGF3YWl0IGV4ZWNhKHZpdGVzdFBhdGgsIGZpbmFsQXJncywge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIGVudixcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICB9KTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnVGVzdGluZyBjb21wbGV0ZWQhJyk7XG5cbiAgICBpZih1c2VBbmFseXplKSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGVzdCBjb3ZlcmFnZSBhbmQgc3VnZ2VzdGluZyBpbXByb3ZlbWVudHMuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdGVzdFJlc3VsdHMgPSBwcm9jZXNzVGVzdFJlc3VsdHModGVtcE91dHB1dEZpbGUpO1xuICAgICAgICBjb25zdCBmaWxlUGF0dGVybnMgPSBnZXRUZXN0RmlsZVBhdHRlcm5zKHRlc3RQYXRoUGF0dGVybik7XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBwcm9tcHQ6IGBBbmFseXplIHRoZXNlIFZpdGVzdCB0ZXN0IHJlc3VsdHMgYW5kIHN1Z2dlc3QgdGVzdCBjb3ZlcmFnZSBpbXByb3ZlbWVudHM6XG5cbiR7SlNPTi5zdHJpbmdpZnkodGVzdFJlc3VsdHMsIG51bGwsIDIpfVxuXG5UZXN0IHBhdHRlcm5zOiAke2ZpbGVQYXR0ZXJucy5qb2luKCcsICcpfVxuXG5QbGVhc2UgcHJvdmlkZTpcbjEuIEFuYWx5c2lzIG9mIGN1cnJlbnQgY292ZXJhZ2UgZ2Fwc1xuMi4gU3VnZ2VzdGlvbnMgZm9yIGltcHJvdmluZyB0ZXN0IGNhc2VzXG4zLiBSZWNvbW1lbmRhdGlvbnMgZm9yIGFkZGl0aW9uYWwgaW50ZWdyYXRpb24gdGVzdCBzY2VuYXJpb3NcbjQuIEJlc3QgcHJhY3RpY2VzIGZvciBpbmNyZWFzaW5nIHRlc3QgZWZmZWN0aXZlbmVzc2AsXG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgdGFzazogJ29wdGltaXplJ1xuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIHRlc3QgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSB0ZXN0IGFuYWx5c2lzJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgY29uc29sZS5lcnJvcignQUkgYW5hbHlzaXMgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2hlY2sgZm9yIHVuaXQgdGVzdCBlcnJvcnMgYW5kL29yIGNvdmVyYWdlLmAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnVGVzdGluZyBmYWlsZWQhJyk7XG5cbiAgICBpZih1c2VEZWJ1Zykge1xuICAgICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIHRlc3QgZmFpbHVyZXMuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdGVzdFJlc3VsdHMgPSBwcm9jZXNzVGVzdFJlc3VsdHModGVtcE91dHB1dEZpbGUpO1xuXG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIGNvbnRleHQ6IHRydWUsXG4gICAgICAgICAgcHJvbXB0OiBgRGVidWcgdGhlc2UgZmFpbGVkIFZpdGVzdCB0ZXN0cyBhbmQgc3VnZ2VzdCBmaXhlczpcblxuJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlLCBudWxsLCAyKX1cblxuVGVzdCByZXN1bHRzOiAke0pTT04uc3RyaW5naWZ5KHRlc3RSZXN1bHRzLCBudWxsLCAyKX1cblxuUGxlYXNlIHByb3ZpZGU6XG4xLiBBbmFseXNpcyBvZiB3aHkgdGhlIHRlc3RzIGFyZSBmYWlsaW5nXG4yLiBTcGVjaWZpYyBzdWdnZXN0aW9ucyB0byBmaXggZWFjaCBmYWlsaW5nIHRlc3RcbjMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGVzdCBmaXh0dXJlcyBvciBtb2Nrc1xuNC4gQ29kZSBleGFtcGxlcyBmb3Igc29sdXRpb25zYCxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0YXNrOiAnaGVscCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdBSSBkZWJ1Z2dpbmcgYXNzaXN0YW5jZSBjb21wbGV0ZScpO1xuICAgICAgfSBjYXRjaChhaUVycm9yKSB7XG4gICAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIGRlYnVnZ2luZyBhc3Npc3RhbmNlJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgY29uc29sZS5lcnJvcignQUkgZGVidWdnaW5nIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRlc3Q7XG4iXSwibmFtZXMiOlsiZXhlY2EiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwic3luYyIsImdsb2JTeW5jIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwiTGV4Q29uZmlnIiwiZ2V0VHlwZVNjcmlwdENvbmZpZ1BhdGgiLCJjcmVhdGVTcGlubmVyIiwicmVzb2x2ZUJpbmFyeVBhdGgiLCJsb2ciLCJhaUZ1bmN0aW9uIiwiZGV0ZWN0RVNNIiwiY3dkIiwicGFja2FnZUpzb25QYXRoIiwicGFja2FnZUpzb25Db250ZW50IiwicGFja2FnZUpzb24iLCJKU09OIiwicGFyc2UiLCJ0eXBlIiwiX2Vycm9yIiwiZGVmYXVsdEV4aXQiLCJjb2RlIiwicHJvY2VzcyIsImVudiIsIlZJVEVTVCIsIlZJVEVTVF9XT1JLRVJfSUQiLCJOT0RFX0VOViIsInVuZGVmaW5lZCIsImV4aXQiLCJnZXRUZXN0RmlsZVBhdHRlcm5zIiwidGVzdFBhdGhQYXR0ZXJuIiwiZGVmYXVsdFBhdHRlcm5zIiwiZmluZFVuY292ZXJlZFNvdXJjZUZpbGVzIiwic291cmNlRmlsZXMiLCJpZ25vcmUiLCJ0ZXN0RmlsZXMiLCJmaWx0ZXIiLCJzb3VyY2VGaWxlIiwiYmFzZU5hbWUiLCJyZXBsYWNlIiwic29tZSIsInRlc3RGaWxlIiwiaW5jbHVkZXMiLCJwcm9jZXNzVGVzdFJlc3VsdHMiLCJvdXRwdXRGaWxlIiwiY29udGVudCIsInRlc3QiLCJvcHRpb25zIiwiYXJncyIsImZpbGVzT3JDYWxsYmFjayIsImNhbGxiYWNrUGFyYW0iLCJmaWxlcyIsImNhbGxiYWNrIiwiYW5hbHl6ZSIsImFpQW5hbHl6ZSIsImFpRGVidWciLCJhaUdlbmVyYXRlIiwiYmFpbCIsImNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvciIsImNoYW5nZWRTaW5jZSIsImNpIiwiY2xlYXJDYWNoZSIsImNsaU5hbWUiLCJjb2xsZWN0Q292ZXJhZ2VGcm9tIiwiY29sb3JzIiwiY29uZmlnIiwiZGVidWciLCJkZWJ1Z1Rlc3RzIiwiZGV0ZWN0T3BlbkhhbmRsZXMiLCJlbnZpcm9ubWVudCIsImVycm9yT25EZXByZWNhdGVkIiwiZXhwYW5kIiwiZm9yY2VFeGl0IiwiZ2VuZXJhdGUiLCJqc29uIiwibGFzdENvbW1pdCIsImxpc3RUZXN0cyIsImxvZ0hlYXBVc2FnZSIsIm1heFdvcmtlcnMiLCJub1N0YWNrVHJhY2UiLCJub3RpZnkiLCJvbmx5Q2hhbmdlZCIsInBhc3NXaXRoTm9UZXN0cyIsInF1aWV0IiwicmVtb3ZlQ2FjaGUiLCJydW5JbkJhbmQiLCJzZXR1cCIsInNob3dDb25maWciLCJzaWxlbnQiLCJ0ZXN0TG9jYXRpb25JblJlc3VsdHMiLCJ0ZXN0TmFtZVBhdHRlcm4iLCJ1cGRhdGUiLCJ1c2VTdGRlcnIiLCJ2ZXJib3NlIiwid2F0Y2giLCJ3YXRjaEFsbCIsInVzZUdlbmVyYXRlIiwidXNlQW5hbHl6ZSIsInVzZURlYnVnIiwic3Bpbm5lciIsInBhcnNlQ29uZmlnIiwidXNlVHlwZXNjcmlwdCIsInRlc3RDb25maWdQYXRoIiwiY2hlY2tUZXN0VHlwZXNjcmlwdENvbmZpZyIsInN0YXJ0IiwidW5jb3ZlcmVkRmlsZXMiLCJsZW5ndGgiLCJ0YXJnZXRGaWxlIiwiY29udGV4dCIsImZpbGUiLCJwcm9tcHQiLCJ0YXNrIiwic3VjY2VlZCIsImFpRXJyb3IiLCJmYWlsIiwiY29uc29sZSIsImVycm9yIiwicHJvamVjdFZpdGVzdEJpbiIsInZpdGVzdFBhdGgiLCJ2aXRlc3RDb25maWdGaWxlIiwicHJvamVjdFZpdGVzdENvbmZpZyIsInByb2plY3RWaXRlc3RDb25maWdQYXRocyIsImV4aXN0aW5nQ29uZmlnUGF0aCIsImZpbmQiLCJjb25maWdQYXRoIiwidml0ZXN0IiwibGV4RGlyIiwiZ2V0TGV4RGlyIiwibGV4Vml0ZXN0Q29uZmlnIiwiT2JqZWN0Iiwia2V5cyIsInJlc29sdmVkQ29uZmlnIiwic3RyaW5naWZ5IiwiZGVmYXVsdCIsInZpdGVzdFNldHVwRmlsZSIsInZpdGVzdEFyZ3MiLCJ2aXRlc3RPcHRpb25zIiwicmVwb3J0ZXJzIiwiU2V0IiwiZmlsdGVycyIsIndhdGNoTW9kZSIsIkJvb2xlYW4iLCJsaXN0TW9kZSIsInB1c2giLCJpc0VTTSIsIm5vZGVPcHRpb25zIiwiTk9ERV9PUFRJT05TIiwidHJpbSIsImFkZCIsImVudmlyb25tZW50TmFtZSIsInRlbXBPdXRwdXRGaWxlIiwic2hvdWxkV3JpdGVKc29uIiwic2l6ZSIsInJlcG9ydGVyTGlzdCIsIkFycmF5IiwiZnJvbSIsInVuc2hpZnQiLCJmb3JFYWNoIiwicmVwb3J0ZXIiLCJmaW5hbEFyZ3MiLCJqb2luIiwiRk9SQ0VfQ09MT1IiLCJDSSIsIkxFWF9WSVRFU1RfU0VUVVAiLCJlbmNvZGluZyIsInN0ZGlvIiwidGVzdFJlc3VsdHMiLCJmaWxlUGF0dGVybnMiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxLQUFLLFFBQU8sUUFBUTtBQUM1QixTQUFRQyxVQUFVLEVBQUVDLFlBQVksUUFBTyxLQUFLO0FBQzVDLFNBQVFDLFFBQVFDLFFBQVEsUUFBTyxPQUFPO0FBQ3RDLFNBQVFDLFdBQVdDLFdBQVcsUUFBTyxPQUFPO0FBRTVDLFNBQVFDLFNBQVMsRUFBRUMsdUJBQXVCLFFBQU8scUJBQXFCO0FBQ3RFLFNBQVFDLGFBQWEsUUFBTyxxQkFBcUI7QUFDakQsU0FBUUMsaUJBQWlCLFFBQU8sc0JBQXNCO0FBQ3RELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFDdkMsU0FBUUMsVUFBVSxRQUFPLGNBQWM7QUFFdkMsTUFBTUMsWUFBWSxDQUFDQztJQUNqQixNQUFNQyxrQkFBa0JULFlBQVlRLEtBQUs7SUFFekMsSUFBR2IsV0FBV2Msa0JBQWtCO1FBQzlCLElBQUk7WUFDRixNQUFNQyxxQkFBcUJkLGFBQWFhLGlCQUFpQjtZQUN6RCxNQUFNRSxjQUFjQyxLQUFLQyxLQUFLLENBQUNIO1lBQy9CLE9BQU9DLFlBQVlHLElBQUksS0FBSztRQUM5QixFQUFFLE9BQU1DLFFBQVE7WUFDZCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU87QUFDVDtBQXFEQSxNQUFNQyxjQUFlLENBQUNDO0lBQ3BCLElBQUdDLFFBQVFDLEdBQUcsQ0FBQ0MsTUFBTSxJQUFJRixRQUFRQyxHQUFHLENBQUNFLGdCQUFnQixJQUFJSCxRQUFRQyxHQUFHLENBQUNHLFFBQVEsS0FBSyxRQUFRO1FBQ3hGLE9BQU9DO0lBQ1Q7SUFFQUwsUUFBUU0sSUFBSSxDQUFDUDtBQUNmO0FBRUEsT0FBTyxNQUFNUSxzQkFBc0IsQ0FBQ0M7SUFDbEMsTUFBTUMsa0JBQWtCO1FBQUM7UUFBZTtRQUFlO0tBQXFCO0lBRTVFLElBQUcs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
429
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy90ZXN0L3Rlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtyZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi4vYWkvYWkuanMnO1xuXG5jb25zdCBkZXRlY3RFU00gPSAoY3dkOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcGF0aFJlc29sdmUoY3dkLCAncGFja2FnZS5qc29uJyk7XG5cbiAgaWYoZXhpc3RzU3luYyhwYWNrYWdlSnNvblBhdGgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uQ29udGVudCA9IHJlYWRGaWxlU3luYyhwYWNrYWdlSnNvblBhdGgsICd1dGY4Jyk7XG4gICAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25Db250ZW50KTtcbiAgICAgIHJldHVybiBwYWNrYWdlSnNvbi50eXBlID09PSAnbW9kdWxlJztcbiAgICB9IGNhdGNoKF9lcnJvcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE9wdGlvbnMge1xuICByZWFkb25seSBhbmFseXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWlEZWJ1Zz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFpR2VuZXJhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBhaUFuYWx5emU/OiBib29sZWFuO1xuICByZWFkb25seSBiYWlsPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2hhbmdlZFNpbmNlPzogc3RyaW5nO1xuICByZWFkb25seSBjaT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNsZWFyQ2FjaGU/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xsZWN0Q292ZXJhZ2VGcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xvcnM/OiBib29sZWFuO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVidWdUZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRldGVjdE9wZW5IYW5kbGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGVudj86IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3JPbkRlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBleHBhbmQ/OiBib29sZWFuO1xuICByZWFkb25seSBmb3JjZUV4aXQ/OiBib29sZWFuO1xuICByZWFkb25seSBnZW5lcmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGpzb24/OiBib29sZWFuO1xuICByZWFkb25seSBsYXN0Q29tbWl0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbGlzdFRlc3RzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbG9nSGVhcFVzYWdlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWF4V29ya2Vycz86IHN0cmluZztcbiAgcmVhZG9ubHkgbm9TdGFja1RyYWNlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm90aWZ5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgb25seUNoYW5nZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBwYXNzV2l0aE5vVGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlbW92ZUNhY2hlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcnVuSW5CYW5kPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc2V0dXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNob3dDb25maWc/OiBib29sZWFuO1xuICByZWFkb25seSBzaWxlbnQ/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXN0TG9jYXRpb25JblJlc3VsdHM/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXN0TmFtZVBhdHRlcm4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRlc3RQYXRoUGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgdXBkYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlU3RkZXJyPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmVyYm9zZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdhdGNoPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaEFsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFRlc3RDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmNvbnN0IGRlZmF1bHRFeGl0ID0gKChjb2RlPzogbnVtYmVyKSA9PiB7XG4gIGlmKHByb2Nlc3MuZW52LlZJVEVTVCB8fCBwcm9jZXNzLmVudi5WSVRFU1RfV09SS0VSX0lEIHx8IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkIGFzIG5ldmVyO1xuICB9XG5cbiAgcHJvY2Vzcy5leGl0KGNvZGUpO1xufSkgYXMgdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuZXhwb3J0IGNvbnN0IGdldFRlc3RGaWxlUGF0dGVybnMgPSAodGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBkZWZhdWx0UGF0dGVybnMgPSBbJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJywgJyoqLyouaW50ZWdyYXRpb24uKiddO1xuXG4gIGlmKCF0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICByZXR1cm4gZGVmYXVsdFBhdHRlcm5zO1xuICB9XG5cbiAgcmV0dXJuIFt0ZXN0UGF0aFBhdHRlcm5dO1xufTtcblxuY29uc3QgZmluZFVuY292ZXJlZFNvdXJjZUZpbGVzID0gKCk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBnbG9iU3luYygnc3JjLyoqLyoue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovbGliLyoqJywgJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJ11cbiAgfSk7XG5cbiAgY29uc3QgdGVzdEZpbGVzID0gZ2xvYlN5bmMoJyoqLyoue3Rlc3Qsc3BlY30ue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovbGliLyoqJ11cbiAgfSk7XG5cbiAgcmV0dXJuIHNvdXJjZUZpbGVzLmZpbHRlcigoc291cmNlRmlsZSkgPT4ge1xuICAgIGNvbnN0IGJhc2VOYW1lID0gc291cmNlRmlsZS5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpO1xuICAgIHJldHVybiAhdGVzdEZpbGVzLnNvbWUoKHRlc3RGaWxlKSA9PiB0ZXN0RmlsZS5pbmNsdWRlcyhiYXNlTmFtZSkpO1xuICB9KTtcbn07XG5cbmNvbnN0IHByb2Nlc3NUZXN0UmVzdWx0cyA9IChvdXRwdXRGaWxlPzogc3RyaW5nKTogYW55ID0+IHtcbiAgaWYoIW91dHB1dEZpbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhvdXRwdXRGaWxlLCAndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRlc3QgPSBhc3luYyAoXG4gIG9wdGlvbnM6IFRlc3RPcHRpb25zLFxuICBhcmdzPzogc3RyaW5nW10sXG4gIGZpbGVzT3JDYWxsYmFjaz86IHN0cmluZ1tdIHwgVGVzdENhbGxiYWNrLFxuICBjYWxsYmFja1BhcmFtPzogVGVzdENhbGxiYWNrXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAvLyBCYWNrd2FyZC1jb21wYXQgYXJndW1lbnQgbm9ybWFsaXphdGlvbjogYWxsb3cgY2FsbGJhY2sgYXMgdGhpcmQgcGFyYW1cbiAgbGV0IGZpbGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgbGV0IGNhbGxiYWNrOiBUZXN0Q2FsbGJhY2sgPSBkZWZhdWx0RXhpdDtcblxuICBpZih0eXBlb2YgZmlsZXNPckNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBmaWxlc09yQ2FsbGJhY2sgYXMgVGVzdENhbGxiYWNrO1xuICB9IGVsc2Uge1xuICAgIGZpbGVzID0gZmlsZXNPckNhbGxiYWNrIGFzIHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGNhbGxiYWNrID0gY2FsbGJhY2tQYXJhbSB8fCBkZWZhdWx0RXhpdDtcbiAgfVxuICBjb25zdCB7XG4gICAgYW5hbHl6ZSA9IGZhbHNlLFxuICAgIGFpQW5hbHl6ZSA9IGZhbHNlLFxuICAgIGFpRGVidWcgPSBmYWxzZSxcbiAgICBhaUdlbmVyYXRlID0gZmFsc2UsXG4gICAgYmFpbCxcbiAgICBjaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3IsXG4gICAgY2hhbmdlZFNpbmNlLFxuICAgIGNpLFxuICAgIGNsZWFyQ2FjaGUsXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbGxlY3RDb3ZlcmFnZUZyb20sXG4gICAgY29sb3JzLFxuICAgIGNvbmZpZyxcbiAgICBkZWJ1ZyA9IGZhbHNlLFxuICAgIGRlYnVnVGVzdHMgPSBmYWxzZSxcbiAgICBkZXRlY3RPcGVuSGFuZGxlcyxcbiAgICBlbnZpcm9ubWVudCxcbiAgICBlbnYsXG4gICAgZXJyb3JPbkRlcHJlY2F0ZWQsXG4gICAgZXhwYW5kLFxuICAgIGZvcmNlRXhpdCxcbiAgICBnZW5lcmF0ZSA9IGZhbHNlLFxuICAgIGpzb24sXG4gICAgbGFzdENvbW1pdCxcbiAgICBsaXN0VGVzdHMsXG4gICAgbG9nSGVhcFVzYWdlLFxuICAgIG1heFdvcmtlcnMsXG4gICAgbm9TdGFja1RyYWNlLFxuICAgIG5vdGlmeSxcbiAgICBvbmx5Q2hhbmdlZCxcbiAgICBvdXRwdXRGaWxlLFxuICAgIHBhc3NXaXRoTm9UZXN0cyxcbiAgICBxdWlldCxcbiAgICByZW1vdmVDYWNoZSxcbiAgICBydW5JbkJhbmQsXG4gICAgc2V0dXAsXG4gICAgc2hvd0NvbmZpZyxcbiAgICBzaWxlbnQsXG4gICAgdGVzdExvY2F0aW9uSW5SZXN1bHRzLFxuICAgIHRlc3ROYW1lUGF0dGVybixcbiAgICB0ZXN0UGF0aFBhdHRlcm4sXG4gICAgdXBkYXRlLFxuICAgIHVzZVN0ZGVycixcbiAgICB2ZXJib3NlLFxuICAgIHdhdGNoLFxuICAgIHdhdGNoQWxsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHVzZUdlbmVyYXRlID0gZ2VuZXJhdGUgfHwgYWlHZW5lcmF0ZTtcbiAgY29uc3QgdXNlQW5hbHl6ZSA9IGFuYWx5emUgfHwgYWlBbmFseXplO1xuICBjb25zdCB1c2VEZWJ1ZyA9IGRlYnVnVGVzdHMgfHwgYWlEZWJ1ZztcblxuICBsb2coYCR7Y2xpTmFtZX0gdGVzdGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcob3B0aW9ucyk7XG5cbiAgY29uc3Qge3VzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgY29uc3QgdGVzdENvbmZpZ1BhdGggPSBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyh0ZXN0Q29uZmlnUGF0aCkpIHtcbiAgICAgIGxvZygnVXNpbmcgdHNjb25maWcudGVzdC5qc29uIGZvciB0ZXN0aW5nLi4uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIExleENvbmZpZy5jaGVja1Rlc3RUeXBlc2NyaXB0Q29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgaWYodXNlR2VuZXJhdGUpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgY29kZSB0byBnZW5lcmF0ZSB0ZXN0IGNhc2VzLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdW5jb3ZlcmVkRmlsZXMgPSBmaW5kVW5jb3ZlcmVkU291cmNlRmlsZXMoKTtcblxuICAgICAgaWYodW5jb3ZlcmVkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB0YXJnZXRGaWxlID0gdW5jb3ZlcmVkRmlsZXNbMF07XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBmaWxlOiB0YXJnZXRGaWxlLFxuICAgICAgICAgIHByb21wdDogYEdlbmVyYXRlIFZpdGVzdCB1bml0IHRlc3RzIGZvciB0aGlzIGZpbGU6ICR7dGFyZ2V0RmlsZX1cXG5cXG4ke3JlYWRGaWxlU3luYyh0YXJnZXRGaWxlLCAndXRmLTgnKX1cXG5cXG5QbGVhc2UgY3JlYXRlIGNvbXByZWhlbnNpdmUgdGVzdHMgdGhhdCBjb3ZlciB0aGUgbWFpbiBmdW5jdGlvbmFsaXR5LiBJbmNsdWRlIHRlc3QgZml4dHVyZXMgYW5kIG1vY2tzIHdoZXJlIG5lY2Vzc2FyeS5gLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHRhc2s6ICd0ZXN0J1xuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoYEFJIHRlc3QgZ2VuZXJhdGlvbiBzdWdnZXN0aW9ucyBwcm92aWRlZCBmb3IgJHt0YXJnZXRGaWxlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdBbGwgc291cmNlIGZpbGVzIGFwcGVhciB0byBoYXZlIGNvcnJlc3BvbmRpbmcgdGVzdCBmaWxlcycpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgdGVzdCBzdWdnZXN0aW9ucycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIHRlc3QgZ2VuZXJhdGlvbiBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Vml0ZXN0QmluID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ25vZGVfbW9kdWxlcy8uYmluL3ZpdGVzdCcpO1xuICBsZXQgdml0ZXN0UGF0aDogc3RyaW5nO1xuXG4gIGlmKGV4aXN0c1N5bmMocHJvamVjdFZpdGVzdEJpbikpIHtcbiAgICB2aXRlc3RQYXRoID0gcHJvamVjdFZpdGVzdEJpbjtcbiAgfSBlbHNlIHtcbiAgICB2aXRlc3RQYXRoID0gcmVzb2x2ZUJpbmFyeVBhdGgoJ3ZpdGVzdCcpO1xuICB9XG5cbiAgaWYoIXZpdGVzdFBhdGgpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFZpdGVzdCBiaW5hcnkgbm90IGZvdW5kIGluIExleCdzIG5vZGVfbW9kdWxlcyBvciBtb25vcmVwbyByb290YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGxvZygnUGxlYXNlIHJlaW5zdGFsbCBMZXggb3IgY2hlY2sgeW91ciBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBsZXQgdml0ZXN0Q29uZmlnRmlsZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBsZXQgcHJvamVjdFZpdGVzdENvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsID0gbnVsbDtcblxuICBpZihjb25maWcpIHtcbiAgICB2aXRlc3RDb25maWdGaWxlID0gY29uZmlnO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3RWaXRlc3RDb25maWdQYXRocyA9IFtcbiAgICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICd2aXRlc3QuY29uZmlnLnRzJyksXG4gICAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAndml0ZXN0LmNvbmZpZy5tdHMnKSxcbiAgICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICd2aXRlc3QuY29uZmlnLmpzJyksXG4gICAgICBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAndml0ZXN0LmNvbmZpZy5tanMnKSxcbiAgICAgIHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICd2aXRlc3QuY29uZmlnLmNqcycpXG4gICAgXTtcbiAgICBjb25zdCBleGlzdGluZ0NvbmZpZ1BhdGggPSBwcm9qZWN0Vml0ZXN0Q29uZmlnUGF0aHMuZmluZCgoY29uZmlnUGF0aCkgPT4gZXhpc3RzU3luYyhjb25maWdQYXRoKSk7XG5cbiAgICBpZihleGlzdGluZ0NvbmZpZ1BhdGgpIHtcbiAgICAgIHZpdGVzdENvbmZpZ0ZpbGUgPSBleGlzdGluZ0NvbmZpZ1BhdGg7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coYFVzaW5nIHByb2plY3QgVml0ZXN0IGNvbmZpZyBmaWxlOiAke3ZpdGVzdENvbmZpZ0ZpbGV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE5vIFZpdGVzdCBjb25maWcgZmlsZSBleGlzdHMgaW4gdGhlIHByb2plY3RcbiAgICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgYSBWaXRlc3QgY29uZmlnIGluIGxleC5jb25maWcuY2pzXG4gICAgICBwcm9qZWN0Vml0ZXN0Q29uZmlnID0gTGV4Q29uZmlnLmNvbmZpZy52aXRlc3QgfHwgbnVsbDtcblxuICAgICAgY29uc3QgbGV4RGlyID0gTGV4Q29uZmlnLmdldExleERpcigpO1xuICAgICAgY29uc3QgbGV4Vml0ZXN0Q29uZmlnID0gcGF0aFJlc29sdmUobGV4RGlyLCAndml0ZXN0LmNvbmZpZy5tanMnKTtcblxuICAgICAgaWYoZGVidWcpIHtcbiAgICAgICAgbG9nKGBMb29raW5nIGZvciBWaXRlc3QgY29uZmlnIGF0OiAke2xleFZpdGVzdENvbmZpZ31gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgbG9nKGBGaWxlIGV4aXN0czogJHtleGlzdHNTeW5jKGxleFZpdGVzdENvbmZpZyl9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGlmKGV4aXN0c1N5bmMobGV4Vml0ZXN0Q29uZmlnKSkge1xuICAgICAgICB2aXRlc3RDb25maWdGaWxlID0gbGV4Vml0ZXN0Q29uZmlnO1xuICAgICAgICBpZihwcm9qZWN0Vml0ZXN0Q29uZmlnICYmIE9iamVjdC5rZXlzKHByb2plY3RWaXRlc3RDb25maWcpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgbG9nKGBVc2luZyBMZXggVml0ZXN0IGNvbmZpZyB3aXRoIHByb2plY3QgVml0ZXN0IGNvbmZpZyBmcm9tIGxleC5jb25maWcuY2pzOiAke3ZpdGVzdENvbmZpZ0ZpbGV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYoZGVidWcpIHtcbiAgICAgICAgICBsb2coYFVzaW5nIExleCBWaXRlc3QgY29uZmlnIChubyBwcm9qZWN0IFZpdGVzdCBjb25maWcgZm91bmQpOiAke3ZpdGVzdENvbmZpZ0ZpbGV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgbG9nKCdObyBWaXRlc3QgY29uZmlnIGZvdW5kIGluIHByb2plY3Qgb3IgTGV4JywgJ3dhcm4nLCBxdWlldCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZihzaG93Q29uZmlnKSB7XG4gICAgaWYodml0ZXN0Q29uZmlnRmlsZSkge1xuICAgICAgY29uc3QgcmVzb2x2ZWRDb25maWcgPSBhd2FpdCBpbXBvcnQodml0ZXN0Q29uZmlnRmlsZSk7XG4gICAgICBsb2coSlNPTi5zdHJpbmdpZnkocmVzb2x2ZWRDb25maWcuZGVmYXVsdCA/PyByZXNvbHZlZENvbmZpZywgbnVsbCwgMiksICdpbmZvJywgcXVpZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2coSlNPTi5zdHJpbmdpZnkoe3Rlc3Q6IHByb2plY3RWaXRlc3RDb25maWcgPz8ge319LCBudWxsLCAyKSwgJ2luZm8nLCBxdWlldCk7XG4gICAgfVxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgY29uc3Qgdml0ZXN0U2V0dXBGaWxlOiBzdHJpbmcgPSBzZXR1cCB8fCBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAndml0ZXN0LnNldHVwLmpzJyk7XG4gIGNvbnN0IHZpdGVzdEFyZ3M6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHZpdGVzdE9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIGNvbnN0IHJlcG9ydGVycyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCB3YXRjaE1vZGUgPSBCb29sZWFuKHdhdGNoIHx8IHdhdGNoQWxsKTtcbiAgY29uc3QgbGlzdE1vZGUgPSBCb29sZWFuKGxpc3RUZXN0cyk7XG5cbiAgaWYobGlzdE1vZGUpIHtcbiAgICB2aXRlc3RBcmdzLnB1c2goJ2xpc3QnKTtcbiAgfSBlbHNlIGlmKHdhdGNoTW9kZSkge1xuICAgIHZpdGVzdEFyZ3MucHVzaCgnd2F0Y2gnKTtcbiAgfSBlbHNlIHtcbiAgICB2aXRlc3RBcmdzLnB1c2goJ3J1bicpO1xuICB9XG5cbiAgY29uc3QgaXNFU00gPSBkZXRlY3RFU00ocHJvY2Vzcy5jd2QoKSk7XG4gIGxldCBub2RlT3B0aW9ucyA9IHByb2Nlc3MuZW52Lk5PREVfT1BUSU9OUyB8fCAnJztcbiAgaWYoaXNFU00pIHtcbiAgICBpZighbm9kZU9wdGlvbnMuaW5jbHVkZXMoJy0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXMnKSkge1xuICAgICAgbm9kZU9wdGlvbnMgPSBgJHtub2RlT3B0aW9uc30gLS1leHBlcmltZW50YWwtdm0tbW9kdWxlc2AudHJpbSgpO1xuICAgIH1cbiAgICBsb2coJ0VTTSBwcm9qZWN0IGRldGVjdGVkLCB1c2luZyAtLWV4cGVyaW1lbnRhbC12bS1tb2R1bGVzIGluIE5PREVfT1BUSU9OUycsICdpbmZvJywgcXVpZXQpO1xuICB9XG5cbiAgaWYodml0ZXN0Q29uZmlnRmlsZSkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1jb25maWcnLCB2aXRlc3RDb25maWdGaWxlKTtcbiAgfVxuXG4gIGlmKGJhaWwpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tYmFpbCcsICcxJyk7XG4gIH1cblxuICBpZihjaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3IpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tY2hhbmdlZCcpO1xuICB9XG5cbiAgaWYoY2hhbmdlZFNpbmNlKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWNoYW5nZWQnLCBjaGFuZ2VkU2luY2UpO1xuICB9XG5cbiAgaWYoY2kpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tcnVuJyk7XG4gIH1cblxuICBpZihjb2xsZWN0Q292ZXJhZ2VGcm9tKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWNvdmVyYWdlJywgJy0tY292ZXJhZ2UuaW5jbHVkZScsIGNvbGxlY3RDb3ZlcmFnZUZyb20pO1xuICB9XG5cbiAgaWYoZGVidWcpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0taW5zcGVjdCcpO1xuICB9XG5cbiAgaWYoZGV0ZWN0T3BlbkhhbmRsZXMpIHtcbiAgICByZXBvcnRlcnMuYWRkKCdoYW5naW5nLXByb2Nlc3MnKTtcbiAgfVxuXG4gIGNvbnN0IGVudmlyb25tZW50TmFtZSA9IGVudmlyb25tZW50IHx8IGVudjtcbiAgaWYoZW52aXJvbm1lbnROYW1lKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLWVudmlyb25tZW50JywgZW52aXJvbm1lbnROYW1lKTtcbiAgfVxuXG4gIGlmKGVycm9yT25EZXByZWNhdGVkKSB7XG4gICAgbG9nKCdWaXRlc3QgZG9lcyBub3Qgc3VwcG9ydCAtLWVycm9yT25EZXByZWNhdGVkOyBvcHRpb24gaWdub3JlZC4nLCAnd2FybicsIHF1aWV0KTtcbiAgfVxuXG4gIGlmKGV4cGFuZCkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1leHBhbmRTbmFwc2hvdERpZmYnKTtcbiAgfVxuXG4gIGlmKGZvcmNlRXhpdCkge1xuICAgIGxvZygnVml0ZXN0IGRvZXMgbm90IHN1cHBvcnQgLS1mb3JjZUV4aXQ7IG9wdGlvbiBpZ25vcmVkLicsICd3YXJuJywgcXVpZXQpO1xuICB9XG5cbiAgaWYobGFzdENvbW1pdCkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1jaGFuZ2VkJyk7XG4gIH1cblxuICBpZihsb2dIZWFwVXNhZ2UpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tbG9nSGVhcFVzYWdlJyk7XG4gIH1cblxuICBpZihtYXhXb3JrZXJzKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLW1heFdvcmtlcnMnLCBtYXhXb3JrZXJzKTtcbiAgfVxuXG4gIGlmKG5vU3RhY2tUcmFjZSkge1xuICAgIGxvZygnVml0ZXN0IGRvZXMgbm90IHN1cHBvcnQgLS1ub1N0YWNrVHJhY2U7IG9wdGlvbiBpZ25vcmVkLicsICd3YXJuJywgcXVpZXQpO1xuICB9XG5cbiAgaWYobm90aWZ5KSB7XG4gICAgbG9nKCdWaXRlc3QgZG9lcyBub3Qgc3VwcG9ydCAtLW5vdGlmeTsgb3B0aW9uIGlnbm9yZWQuJywgJ3dhcm4nLCBxdWlldCk7XG4gIH1cblxuICBpZihvbmx5Q2hhbmdlZCkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1jaGFuZ2VkJyk7XG4gIH1cblxuICBsZXQgdGVtcE91dHB1dEZpbGUgPSBvdXRwdXRGaWxlO1xuICBjb25zdCBzaG91bGRXcml0ZUpzb24gPSBqc29uIHx8IHVzZUFuYWx5emUgfHwgdXNlRGVidWcgfHwgQm9vbGVhbihvdXRwdXRGaWxlKTtcblxuICBpZihzaG91bGRXcml0ZUpzb24pIHtcbiAgICB0ZW1wT3V0cHV0RmlsZSA9IG91dHB1dEZpbGUgfHwgJy5sZXgtdGVzdC1yZXN1bHRzLmpzb24nO1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1vdXRwdXRGaWxlJywgdGVtcE91dHB1dEZpbGUpO1xuICAgIHJlcG9ydGVycy5hZGQoJ2pzb24nKTtcbiAgfVxuXG4gIGlmKHBhc3NXaXRoTm9UZXN0cykge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1wYXNzV2l0aE5vVGVzdHMnKTtcbiAgfVxuXG4gIGlmKHJ1bkluQmFuZCkge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCgnLS1uby1maWxlLXBhcmFsbGVsaXNtJywgJy0tbWF4V29ya2VycycsICcxJyk7XG4gIH1cblxuICBpZihzaWxlbnQpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tc2lsZW50Jyk7XG4gIH1cblxuICBpZih0ZXN0TG9jYXRpb25JblJlc3VsdHMpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0taW5jbHVkZVRhc2tMb2NhdGlvbicpO1xuICB9XG5cbiAgaWYodGVzdE5hbWVQYXR0ZXJuKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLXRlc3ROYW1lUGF0dGVybicsIHRlc3ROYW1lUGF0dGVybik7XG4gIH1cblxuICBpZih0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICBmaWx0ZXJzLnB1c2godGVzdFBhdGhQYXR0ZXJuKTtcbiAgfVxuXG4gIGlmKHVzZVN0ZGVycikge1xuICAgIGxvZygnVml0ZXN0IGRvZXMgbm90IHN1cHBvcnQgLS11c2VTdGRlcnI7IG9wdGlvbiBpZ25vcmVkLicsICd3YXJuJywgcXVpZXQpO1xuICB9XG5cbiAgaWYodmVyYm9zZSkge1xuICAgIHJlcG9ydGVycy5hZGQoJ3ZlcmJvc2UnKTtcbiAgfVxuXG4gIGlmKHJlbW92ZUNhY2hlIHx8IGNsZWFyQ2FjaGUpIHtcbiAgICB2aXRlc3RPcHRpb25zLnB1c2goJy0tY2xlYXJDYWNoZScpO1xuICB9XG5cbiAgaWYodXBkYXRlKSB7XG4gICAgdml0ZXN0T3B0aW9ucy5wdXNoKCctLXVwZGF0ZScpO1xuICB9XG5cbiAgaWYod2F0Y2gpIHtcbiAgICBmaWx0ZXJzLnB1c2god2F0Y2gpO1xuICB9XG5cbiAgaWYoYXJncykge1xuICAgIHZpdGVzdE9wdGlvbnMucHVzaCguLi5hcmdzKTtcbiAgfVxuXG4gIGlmKGZpbGVzICYmIGZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICBmaWx0ZXJzLnB1c2goLi4uZmlsZXMpO1xuICB9XG5cbiAgaWYocmVwb3J0ZXJzLnNpemUgPiAwKSB7XG4gICAgY29uc3QgcmVwb3J0ZXJMaXN0ID0gQXJyYXkuZnJvbShyZXBvcnRlcnMpO1xuICAgIGlmKHJlcG9ydGVyTGlzdC5pbmNsdWRlcygnanNvbicpICYmICFyZXBvcnRlckxpc3QuaW5jbHVkZXMoJ3ZlcmJvc2UnKSkge1xuICAgICAgLy8gS2VlcCBjb25zb2xlIG91dHB1dCB3aGlsZSB3cml0aW5nIEpTT04gcmVzdWx0cy5cbiAgICAgIHJlcG9ydGVyTGlzdC51bnNoaWZ0KCdkZWZhdWx0Jyk7XG4gICAgfVxuICAgIHJlcG9ydGVyTGlzdC5mb3JFYWNoKChyZXBvcnRlcikgPT4gdml0ZXN0T3B0aW9ucy5wdXNoKCctLXJlcG9ydGVyJywgcmVwb3J0ZXIpKTtcbiAgfVxuXG4gIGNvbnN0IGZpbmFsQXJncyA9IFsuLi52aXRlc3RBcmdzLCAuLi52aXRlc3RPcHRpb25zLCAuLi5maWx0ZXJzXTtcblxuICBpZihkZWJ1Zykge1xuICAgIGxvZyhgVml0ZXN0IG9wdGlvbnM6ICR7ZmluYWxBcmdzLmpvaW4oJyAnKX1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICBsb2coYE5PREVfT1BUSU9OUzogJHtub2RlT3B0aW9uc31gLCAnaW5mbycsIHF1aWV0KTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZW52OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgLi4ucHJvY2Vzcy5lbnYsXG4gICAgICBOT0RFX09QVElPTlM6IG5vZGVPcHRpb25zXG4gICAgfTtcblxuICAgIGlmKGNvbG9ycykge1xuICAgICAgZW52LkZPUkNFX0NPTE9SID0gJzEnO1xuICAgIH1cblxuICAgIGlmKGNpKSB7XG4gICAgICBlbnYuQ0kgPSAndHJ1ZSc7XG4gICAgfVxuXG4gICAgaWYodml0ZXN0U2V0dXBGaWxlICYmIGV4aXN0c1N5bmModml0ZXN0U2V0dXBGaWxlKSkge1xuICAgICAgZW52LkxFWF9WSVRFU1RfU0VUVVAgPSB2aXRlc3RTZXR1cEZpbGU7XG4gICAgfVxuXG4gICAgYXdhaXQgZXhlY2Eodml0ZXN0UGF0aCwgZmluYWxBcmdzLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgZW52LFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdUZXN0aW5nIGNvbXBsZXRlZCEnKTtcblxuICAgIGlmKHVzZUFuYWx5emUpIHtcbiAgICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyB0ZXN0IGNvdmVyYWdlIGFuZCBzdWdnZXN0aW5nIGltcHJvdmVtZW50cy4uLicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ZXN0UmVzdWx0cyA9IHByb2Nlc3NUZXN0UmVzdWx0cyh0ZW1wT3V0cHV0RmlsZSk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJucyA9IGdldFRlc3RGaWxlUGF0dGVybnModGVzdFBhdGhQYXR0ZXJuKTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHByb21wdDogYEFuYWx5emUgdGhlc2UgVml0ZXN0IHRlc3QgcmVzdWx0cyBhbmQgc3VnZ2VzdCB0ZXN0IGNvdmVyYWdlIGltcHJvdmVtZW50czpcblxuJHtKU09OLnN0cmluZ2lmeSh0ZXN0UmVzdWx0cywgbnVsbCwgMil9XG5cblRlc3QgcGF0dGVybnM6ICR7ZmlsZVBhdHRlcm5zLmpvaW4oJywgJyl9XG5cblBsZWFzZSBwcm92aWRlOlxuMS4gQW5hbHlzaXMgb2YgY3VycmVudCBjb3ZlcmFnZSBnYXBzXG4yLiBTdWdnZXN0aW9ucyBmb3IgaW1wcm92aW5nIHRlc3QgY2FzZXNcbjMuIFJlY29tbWVuZGF0aW9ucyBmb3IgYWRkaXRpb25hbCBpbnRlZ3JhdGlvbiB0ZXN0IHNjZW5hcmlvc1xuNC4gQmVzdCBwcmFjdGljZXMgZm9yIGluY3JlYXNpbmcgdGVzdCBlZmZlY3RpdmVuZXNzYCxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0YXNrOiAnb3B0aW1pemUnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgdGVzdCBhbmFseXNpcyBjb21wbGV0ZScpO1xuICAgICAgfSBjYXRjaChhaUVycm9yKSB7XG4gICAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIHRlc3QgYW5hbHlzaXMnKTtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdBSSBhbmFseXNpcyBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDaGVjayBmb3IgdW5pdCB0ZXN0IGVycm9ycyBhbmQvb3IgY292ZXJhZ2UuYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgc3Bpbm5lci5mYWlsKCdUZXN0aW5nIGZhaWxlZCEnKTtcblxuICAgIGlmKHVzZURlYnVnKSB7XG4gICAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgdGVzdCBmYWlsdXJlcy4uLicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ZXN0UmVzdWx0cyA9IHByb2Nlc3NUZXN0UmVzdWx0cyh0ZW1wT3V0cHV0RmlsZSk7XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBwcm9tcHQ6IGBEZWJ1ZyB0aGVzZSBmYWlsZWQgVml0ZXN0IHRlc3RzIGFuZCBzdWdnZXN0IGZpeGVzOlxuXG4ke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UsIG51bGwsIDIpfVxuXG5UZXN0IHJlc3VsdHM6ICR7SlNPTi5zdHJpbmdpZnkodGVzdFJlc3VsdHMsIG51bGwsIDIpfVxuXG5QbGVhc2UgcHJvdmlkZTpcbjEuIEFuYWx5c2lzIG9mIHdoeSB0aGUgdGVzdHMgYXJlIGZhaWxpbmdcbjIuIFNwZWNpZmljIHN1Z2dlc3Rpb25zIHRvIGZpeCBlYWNoIGZhaWxpbmcgdGVzdFxuMy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0ZXN0IGZpeHR1cmVzIG9yIG1vY2tzXG40LiBDb2RlIGV4YW1wbGVzIGZvciBzb2x1dGlvbnNgLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHRhc2s6ICdoZWxwJ1xuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIGRlYnVnZ2luZyBhc3Npc3RhbmNlIGNvbXBsZXRlJyk7XG4gICAgICB9IGNhdGNoKGFpRXJyb3IpIHtcbiAgICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgZGVidWdnaW5nIGFzc2lzdGFuY2UnKTtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdBSSBkZWJ1Z2dpbmcgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdGVzdDtcbiJdLCJuYW1lcyI6WyJleGVjYSIsImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJzeW5jIiwiZ2xvYlN5bmMiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJMZXhDb25maWciLCJnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCIsImNyZWF0ZVNwaW5uZXIiLCJyZXNvbHZlQmluYXJ5UGF0aCIsImxvZyIsImFpRnVuY3Rpb24iLCJkZXRlY3RFU00iLCJjd2QiLCJwYWNrYWdlSnNvblBhdGgiLCJwYWNrYWdlSnNvbkNvbnRlbnQiLCJwYWNrYWdlSnNvbiIsIkpTT04iLCJwYXJzZSIsInR5cGUiLCJfZXJyb3IiLCJkZWZhdWx0RXhpdCIsImNvZGUiLCJwcm9jZXNzIiwiZW52IiwiVklURVNUIiwiVklURVNUX1dPUktFUl9JRCIsIk5PREVfRU5WIiwidW5kZWZpbmVkIiwiZXhpdCIsImdldFRlc3RGaWxlUGF0dGVybnMiLCJ0ZXN0UGF0aFBhdHRlcm4iLCJkZWZhdWx0UGF0dGVybnMiLCJmaW5kVW5jb3ZlcmVkU291cmNlRmlsZXMiLCJzb3VyY2VGaWxlcyIsImlnbm9yZSIsInRlc3RGaWxlcyIsImZpbHRlciIsInNvdXJjZUZpbGUiLCJiYXNlTmFtZSIsInJlcGxhY2UiLCJzb21lIiwidGVzdEZpbGUiLCJpbmNsdWRlcyIsInByb2Nlc3NUZXN0UmVzdWx0cyIsIm91dHB1dEZpbGUiLCJjb250ZW50IiwidGVzdCIsIm9wdGlvbnMiLCJhcmdzIiwiZmlsZXNPckNhbGxiYWNrIiwiY2FsbGJhY2tQYXJhbSIsImZpbGVzIiwiY2FsbGJhY2siLCJhbmFseXplIiwiYWlBbmFseXplIiwiYWlEZWJ1ZyIsImFpR2VuZXJhdGUiLCJiYWlsIiwiY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yIiwiY2hhbmdlZFNpbmNlIiwiY2kiLCJjbGVhckNhY2hlIiwiY2xpTmFtZSIsImNvbGxlY3RDb3ZlcmFnZUZyb20iLCJjb2xvcnMiLCJjb25maWciLCJkZWJ1ZyIsImRlYnVnVGVzdHMiLCJkZXRlY3RPcGVuSGFuZGxlcyIsImVudmlyb25tZW50IiwiZXJyb3JPbkRlcHJlY2F0ZWQiLCJleHBhbmQiLCJmb3JjZUV4aXQiLCJnZW5lcmF0ZSIsImpzb24iLCJsYXN0Q29tbWl0IiwibGlzdFRlc3RzIiwibG9nSGVhcFVzYWdlIiwibWF4V29ya2VycyIsIm5vU3RhY2tUcmFjZSIsIm5vdGlmeSIsIm9ubHlDaGFuZ2VkIiwicGFzc1dpdGhOb1Rlc3RzIiwicXVpZXQiLCJyZW1vdmVDYWNoZSIsInJ1bkluQmFuZCIsInNldHVwIiwic2hvd0NvbmZpZyIsInNpbGVudCIsInRlc3RMb2NhdGlvbkluUmVzdWx0cyIsInRlc3ROYW1lUGF0dGVybiIsInVwZGF0ZSIsInVzZVN0ZGVyciIsInZlcmJvc2UiLCJ3YXRjaCIsIndhdGNoQWxsIiwidXNlR2VuZXJhdGUiLCJ1c2VBbmFseXplIiwidXNlRGVidWciLCJzcGlubmVyIiwicGFyc2VDb25maWciLCJ1c2VUeXBlc2NyaXB0IiwidGVzdENvbmZpZ1BhdGgiLCJjaGVja1Rlc3RUeXBlc2NyaXB0Q29uZmlnIiwic3RhcnQiLCJ1bmNvdmVyZWRGaWxlcyIsImxlbmd0aCIsInRhcmdldEZpbGUiLCJjb250ZXh0IiwiZmlsZSIsInByb21wdCIsInRhc2siLCJzdWNjZWVkIiwiYWlFcnJvciIsImZhaWwiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9qZWN0Vml0ZXN0QmluIiwidml0ZXN0UGF0aCIsInZpdGVzdENvbmZpZ0ZpbGUiLCJwcm9qZWN0Vml0ZXN0Q29uZmlnIiwicHJvamVjdFZpdGVzdENvbmZpZ1BhdGhzIiwiZXhpc3RpbmdDb25maWdQYXRoIiwiZmluZCIsImNvbmZpZ1BhdGgiLCJ2aXRlc3QiLCJsZXhEaXIiLCJnZXRMZXhEaXIiLCJsZXhWaXRlc3RDb25maWciLCJPYmplY3QiLCJrZXlzIiwicmVzb2x2ZWRDb25maWciLCJzdHJpbmdpZnkiLCJkZWZhdWx0Iiwidml0ZXN0U2V0dXBGaWxlIiwidml0ZXN0QXJncyIsInZpdGVzdE9wdGlvbnMiLCJyZXBvcnRlcnMiLCJTZXQiLCJmaWx0ZXJzIiwid2F0Y2hNb2RlIiwiQm9vbGVhbiIsImxpc3RNb2RlIiwicHVzaCIsImlzRVNNIiwibm9kZU9wdGlvbnMiLCJOT0RFX09QVElPTlMiLCJ0cmltIiwiYWRkIiwiZW52aXJvbm1lbnROYW1lIiwidGVtcE91dHB1dEZpbGUiLCJzaG91bGRXcml0ZUpzb24iLCJzaXplIiwicmVwb3J0ZXJMaXN0IiwiQXJyYXkiLCJmcm9tIiwidW5zaGlmdCIsImZvckVhY2giLCJyZXBvcnRlciIsImZpbmFsQXJncyIsImpvaW4iLCJGT1JDRV9DT0xPUiIsIkNJIiwiTEVYX1ZJVEVTVF9TRVRVUCIsImVuY29kaW5nIiwic3RkaW8iLCJ0ZXN0UmVzdWx0cyIsImZpbGVQYXR0ZXJucyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLEtBQUssUUFBTyxRQUFRO0FBQzVCLFNBQVFDLFVBQVUsRUFBRUMsWUFBWSxRQUFPLEtBQUs7QUFDNUMsU0FBUUMsUUFBUUMsUUFBUSxRQUFPLE9BQU87QUFDdEMsU0FBUUMsV0FBV0MsV0FBVyxRQUFPLE9BQU87QUFFNUMsU0FBUUMsU0FBUyxFQUFFQyx1QkFBdUIsUUFBTyxxQkFBcUI7QUFDdEUsU0FBUUMsYUFBYSxRQUFPLHFCQUFxQjtBQUNqRCxTQUFRQyxpQkFBaUIsUUFBTyxzQkFBc0I7QUFDdEQsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQUN2QyxTQUFRQyxVQUFVLFFBQU8sY0FBYztBQUV2QyxNQUFNQyxZQUFZLENBQUNDO0lBQ2pCLE1BQU1DLGtCQUFrQlQsWUFBWVEsS0FBSztJQUV6QyxJQUFHYixXQUFXYyxrQkFBa0I7UUFDOUIsSUFBSTtZQUNGLE1BQU1DLHFCQUFxQmQsYUFBYWEsaUJBQWlCO1lBQ3pELE1BQU1FLGNBQWNDLEtBQUtDLEtBQUssQ0FBQ0g7WUFDL0IsT0FBT0MsWUFBWUcsSUFBSSxLQUFLO1FBQzlCLEVBQUUsT0FBTUMsUUFBUTtZQUNkLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBTztBQUNUO0FBcURBLE1BQU1DLGNBQWUsQ0FBQ0M7SUFDcEIsSUFBR0MsUUFBUUMsR0FBRyxDQUFDQyxNQUFNLElBQUlGLFFBQVFDLEdBQUcsQ0FBQ0UsZ0JBQWdCLElBQUlILFFBQVFDLEdBQUcsQ0FBQ0csUUFBUSxLQUFLLFFBQVE7UUFDeEYsT0FBT0M7SUFDVDtJQUVBTCxRQUFRTSxJQUFJLENBQUNQO0FBQ2Y7QUFFQSxPQUFPLE1BQU1RLHNCQUFzQixDQUFDQztJQUNsQyxNQUFNQyxrQkFBa0I7UUFBQztRQUFlO1FBQWU7S0FBcUI7SUFF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
@@ -6,7 +6,7 @@ export declare const packages: {
6
6
  vitest: string;
7
7
  webpack: string;
8
8
  };
9
- export declare const jsonVersions: (lexPackages: any) => {};
9
+ export declare const jsonVersions: (lexPackages: Record<string, string>) => Record<string, string>;
10
10
  export interface VersionsCmd {
11
11
  readonly json?: boolean;
12
12
  }
@@ -15,7 +15,7 @@ export const packages = {
15
15
  webpack: parseVersion(packageJson?.dependencies?.webpack)
16
16
  };
17
17
  export const jsonVersions = (lexPackages)=>Object.keys(lexPackages).reduce((list, key)=>{
18
- list[key] = packages[key];
18
+ list[key] = lexPackages[key] || 'N/A';
19
19
  return list;
20
20
  }, {});
21
21
  export const versions = (cmd, callback)=>{
@@ -36,4 +36,4 @@ export const versions = (cmd, callback)=>{
36
36
  return Promise.resolve(0);
37
37
  };
38
38
 
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcblxuaW1wb3J0IHtnZXRMZXhQYWNrYWdlSnNvblBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmNvbnN0IHBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVmVyc2lvbiA9IChwYWNrYWdlVmVyc2lvbjogc3RyaW5nKTogc3RyaW5nID0+IHBhY2thZ2VWZXJzaW9uPy5yZXBsYWNlKC9cXF4vZywgJycpIHx8ICdOL0EnO1xuXG5leHBvcnQgY29uc3QgcGFja2FnZXMgPSB7XG4gIGxleDogcGFja2FnZUpzb24udmVyc2lvbixcbiAgc3djOiBwYXJzZVZlcnNpb24ocGFja2FnZUpzb24/LmRlcGVuZGVuY2llcz8uWydAc3djL2NvcmUnXSksXG4gIHR5cGVzY3JpcHQ6IHBhcnNlVmVyc2lvbihwYWNrYWdlSnNvbj8uZGVwZW5kZW5jaWVzPy50eXBlc2NyaXB0KSxcbiAgdml0ZXN0OiBwYXJzZVZlcnNpb24ocGFja2FnZUpzb24/LmRlcGVuZGVuY2llcz8udml0ZXN0KSxcbiAgd2VicGFjazogcGFyc2VWZXJzaW9uKHBhY2thZ2VKc29uPy5kZXBlbmRlbmNpZXM/LndlYnBhY2spXG59O1xuXG5leHBvcnQgY29uc3QganNvblZlcnNpb25zID0gKGxleFBhY2thZ2VzKSA9PiBPYmplY3Qua2V5cyhsZXhQYWNrYWdlcykucmVkdWNlKChsaXN0LCBrZXkpID0+IHtcbiAgbGlzdFtrZXldID0gcGFja2FnZXNba2V5XTtcbiAgcmV0dXJuIGxpc3Q7XG59LCB7fSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbnNDbWQge1xuICByZWFkb25seSBqc29uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IHZlcnNpb25zID0gKGNtZDogVmVyc2lvbnNDbWQsIGNhbGxiYWNrOiAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBpZihjbWQuanNvbikge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGpzb25WZXJzaW9ucyhwYWNrYWdlcykpKTtcbiAgfSBlbHNlIHtcbiAgICBsb2coJ1ZlcnNpb25zOicsICdpbmZvJywgZmFsc2UpO1xuICAgIGxvZyhgICBMZXg6ICR7cGFja2FnZXMubGV4fWAsICdpbmZvJywgZmFsc2UpO1xuICAgIGxvZygnICAtLS0tLS0tLS0tJywgJ25vdGUnLCBmYWxzZSk7XG4gICAgbG9nKGAgIFNXQzogJHtwYWNrYWdlcy5zd2N9YCwgJ2luZm8nLCBmYWxzZSk7XG4gICAgbG9nKGAgIFZpdGVzdDogJHtwYWNrYWdlcy52aXRlc3R9YCwgJ2luZm8nLCBmYWxzZSk7XG4gICAgbG9nKGAgIFR5cGVzY3JpcHQ6ICR7cGFja2FnZXMudHlwZXNjcmlwdH1gLCAnaW5mbycsIGZhbHNlKTtcbiAgICBsb2coYCAgV2VicGFjazogJHtwYWNrYWdlcy53ZWJwYWNrfWAsICdpbmZvJywgZmFsc2UpO1xuICB9XG5cbiAgaWYoY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjaygwKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sIm5hbWVzIjpbInJlYWRGaWxlU3luYyIsImdldExleFBhY2thZ2VKc29uUGF0aCIsImxvZyIsInBhY2thZ2VQYXRoIiwicGFja2FnZUpzb24iLCJKU09OIiwicGFyc2UiLCJwYXJzZVZlcnNpb24iLCJwYWNrYWdlVmVyc2lvbiIsInJlcGxhY2UiLCJwYWNrYWdlcyIsImxleCIsInZlcnNpb24iLCJzd2MiLCJkZXBlbmRlbmNpZXMiLCJ0eXBlc2NyaXB0Iiwidml0ZXN0Iiwid2VicGFjayIsImpzb25WZXJzaW9ucyIsImxleFBhY2thZ2VzIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsImxpc3QiLCJrZXkiLCJ2ZXJzaW9ucyIsImNtZCIsImNhbGxiYWNrIiwianNvbiIsImNvbnNvbGUiLCJzdHJpbmdpZnkiLCJQcm9taXNlIiwicmVzb2x2ZSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsWUFBWSxRQUFPLEtBQUs7QUFFaEMsU0FBUUMscUJBQXFCLFFBQU8sc0JBQXNCO0FBQzFELFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFFdkMsTUFBTUMsY0FBY0Y7QUFDcEIsTUFBTUcsY0FBY0MsS0FBS0MsS0FBSyxDQUFDTixhQUFhRyxhQUFhO0FBRXpELE9BQU8sTUFBTUksZUFBZSxDQUFDQyxpQkFBbUNBLGdCQUFnQkMsUUFBUSxPQUFPLE9BQU8sTUFBTTtBQUU1RyxPQUFPLE1BQU1DLFdBQVc7SUFDdEJDLEtBQUtQLFlBQVlRLE9BQU87SUFDeEJDLEtBQUtOLGFBQWFILGFBQWFVLGNBQWMsQ0FBQyxZQUFZO0lBQzFEQyxZQUFZUixhQUFhSCxhQUFhVSxjQUFjQztJQUNwREMsUUFBUVQsYUFBYUgsYUFBYVUsY0FBY0U7SUFDaERDLFNBQVNWLGFBQWFILGFBQWFVLGNBQWNHO0FBQ25ELEVBQUU7QUFFRixPQUFPLE1BQU1DLGVBQWUsQ0FBQ0MsY0FBZ0JDLE9BQU9DLElBQUksQ0FBQ0YsYUFBYUcsTUFBTSxDQUFDLENBQUNDLE1BQU1DO1FBQ2xGRCxJQUFJLENBQUNDLElBQUksR0FBR2QsUUFBUSxDQUFDYyxJQUFJO1FBQ3pCLE9BQU9EO0lBQ1QsR0FBRyxDQUFDLEdBQUc7QUFNUCxPQUFPLE1BQU1FLFdBQVcsQ0FBQ0MsS0FBa0JDO0lBQ3pDLElBQUdELElBQUlFLElBQUksRUFBRTtRQUNYQyxRQUFRM0IsR0FBRyxDQUFDRyxLQUFLeUIsU0FBUyxDQUFDWixhQUFhUjtJQUMxQyxPQUFPO1FBQ0xSLElBQUksYUFBYSxRQUFRO1FBQ3pCQSxJQUFJLENBQUMsT0FBTyxFQUFFUSxTQUFTQyxHQUFHLEVBQUUsRUFBRSxRQUFRO1FBQ3RDVCxJQUFJLGdCQUFnQixRQUFRO1FBQzVCQSxJQUFJLENBQUMsT0FBTyxFQUFFUSxTQUFTRyxHQUFHLEVBQUUsRUFBRSxRQUFRO1FBQ3RDWCxJQUFJLENBQUMsVUFBVSxFQUFFUSxTQUFTTSxNQUFNLEVBQUUsRUFBRSxRQUFRO1FBQzVDZCxJQUFJLENBQUMsY0FBYyxFQUFFUSxTQUFTSyxVQUFVLEVBQUUsRUFBRSxRQUFRO1FBQ3BEYixJQUFJLENBQUMsV0FBVyxFQUFFUSxTQUFTTyxPQUFPLEVBQUUsRUFBRSxRQUFRO0lBQ2hEO0lBRUEsSUFBR1UsVUFBVTtRQUNYQSxTQUFTO0lBQ1g7SUFFQSxPQUFPSSxRQUFRQyxPQUFPLENBQUM7QUFDekIsRUFBRSJ9
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy92ZXJzaW9ucy92ZXJzaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcblxuaW1wb3J0IHtnZXRMZXhQYWNrYWdlSnNvblBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmNvbnN0IHBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVmVyc2lvbiA9IChwYWNrYWdlVmVyc2lvbjogc3RyaW5nKTogc3RyaW5nID0+IHBhY2thZ2VWZXJzaW9uPy5yZXBsYWNlKC9cXF4vZywgJycpIHx8ICdOL0EnO1xuXG5leHBvcnQgY29uc3QgcGFja2FnZXMgPSB7XG4gIGxleDogcGFja2FnZUpzb24udmVyc2lvbixcbiAgc3djOiBwYXJzZVZlcnNpb24ocGFja2FnZUpzb24/LmRlcGVuZGVuY2llcz8uWydAc3djL2NvcmUnXSksXG4gIHR5cGVzY3JpcHQ6IHBhcnNlVmVyc2lvbihwYWNrYWdlSnNvbj8uZGVwZW5kZW5jaWVzPy50eXBlc2NyaXB0KSxcbiAgdml0ZXN0OiBwYXJzZVZlcnNpb24ocGFja2FnZUpzb24/LmRlcGVuZGVuY2llcz8udml0ZXN0KSxcbiAgd2VicGFjazogcGFyc2VWZXJzaW9uKHBhY2thZ2VKc29uPy5kZXBlbmRlbmNpZXM/LndlYnBhY2spXG59O1xuXG5leHBvcnQgY29uc3QganNvblZlcnNpb25zID0gKGxleFBhY2thZ2VzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSA9PiBPYmplY3Qua2V5cyhsZXhQYWNrYWdlcykucmVkdWNlKChsaXN0LCBrZXkpID0+IHtcbiAgbGlzdFtrZXldID0gbGV4UGFja2FnZXNba2V5XSB8fCAnTi9BJztcbiAgcmV0dXJuIGxpc3Q7XG59LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTtcblxuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uc0NtZCB7XG4gIHJlYWRvbmx5IGpzb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgdmVyc2lvbnMgPSAoY21kOiBWZXJzaW9uc0NtZCwgY2FsbGJhY2s6IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZCk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGlmKGNtZC5qc29uKSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoanNvblZlcnNpb25zKHBhY2thZ2VzKSkpO1xuICB9IGVsc2Uge1xuICAgIGxvZygnVmVyc2lvbnM6JywgJ2luZm8nLCBmYWxzZSk7XG4gICAgbG9nKGAgIExleDogJHtwYWNrYWdlcy5sZXh9YCwgJ2luZm8nLCBmYWxzZSk7XG4gICAgbG9nKCcgIC0tLS0tLS0tLS0nLCAnbm90ZScsIGZhbHNlKTtcbiAgICBsb2coYCAgU1dDOiAke3BhY2thZ2VzLnN3Y31gLCAnaW5mbycsIGZhbHNlKTtcbiAgICBsb2coYCAgVml0ZXN0OiAke3BhY2thZ2VzLnZpdGVzdH1gLCAnaW5mbycsIGZhbHNlKTtcbiAgICBsb2coYCAgVHlwZXNjcmlwdDogJHtwYWNrYWdlcy50eXBlc2NyaXB0fWAsICdpbmZvJywgZmFsc2UpO1xuICAgIGxvZyhgICBXZWJwYWNrOiAke3BhY2thZ2VzLndlYnBhY2t9YCwgJ2luZm8nLCBmYWxzZSk7XG4gIH1cblxuICBpZihjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrKDApO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgwKTtcbn07XG4iXSwibmFtZXMiOlsicmVhZEZpbGVTeW5jIiwiZ2V0TGV4UGFja2FnZUpzb25QYXRoIiwibG9nIiwicGFja2FnZVBhdGgiLCJwYWNrYWdlSnNvbiIsIkpTT04iLCJwYXJzZSIsInBhcnNlVmVyc2lvbiIsInBhY2thZ2VWZXJzaW9uIiwicmVwbGFjZSIsInBhY2thZ2VzIiwibGV4IiwidmVyc2lvbiIsInN3YyIsImRlcGVuZGVuY2llcyIsInR5cGVzY3JpcHQiLCJ2aXRlc3QiLCJ3ZWJwYWNrIiwianNvblZlcnNpb25zIiwibGV4UGFja2FnZXMiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwibGlzdCIsImtleSIsInZlcnNpb25zIiwiY21kIiwiY2FsbGJhY2siLCJqc29uIiwiY29uc29sZSIsInN0cmluZ2lmeSIsIlByb21pc2UiLCJyZXNvbHZlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxZQUFZLFFBQU8sS0FBSztBQUVoQyxTQUFRQyxxQkFBcUIsUUFBTyxzQkFBc0I7QUFDMUQsU0FBUUMsR0FBRyxRQUFPLHFCQUFxQjtBQUV2QyxNQUFNQyxjQUFjRjtBQUNwQixNQUFNRyxjQUFjQyxLQUFLQyxLQUFLLENBQUNOLGFBQWFHLGFBQWE7QUFFekQsT0FBTyxNQUFNSSxlQUFlLENBQUNDLGlCQUFtQ0EsZ0JBQWdCQyxRQUFRLE9BQU8sT0FBTyxNQUFNO0FBRTVHLE9BQU8sTUFBTUMsV0FBVztJQUN0QkMsS0FBS1AsWUFBWVEsT0FBTztJQUN4QkMsS0FBS04sYUFBYUgsYUFBYVUsY0FBYyxDQUFDLFlBQVk7SUFDMURDLFlBQVlSLGFBQWFILGFBQWFVLGNBQWNDO0lBQ3BEQyxRQUFRVCxhQUFhSCxhQUFhVSxjQUFjRTtJQUNoREMsU0FBU1YsYUFBYUgsYUFBYVUsY0FBY0c7QUFDbkQsRUFBRTtBQUVGLE9BQU8sTUFBTUMsZUFBZSxDQUFDQyxjQUF3Q0MsT0FBT0MsSUFBSSxDQUFDRixhQUFhRyxNQUFNLENBQUMsQ0FBQ0MsTUFBTUM7UUFDMUdELElBQUksQ0FBQ0MsSUFBSSxHQUFHTCxXQUFXLENBQUNLLElBQUksSUFBSTtRQUNoQyxPQUFPRDtJQUNULEdBQUcsQ0FBQyxHQUE2QjtBQU1qQyxPQUFPLE1BQU1FLFdBQVcsQ0FBQ0MsS0FBa0JDO0lBQ3pDLElBQUdELElBQUlFLElBQUksRUFBRTtRQUNYQyxRQUFRM0IsR0FBRyxDQUFDRyxLQUFLeUIsU0FBUyxDQUFDWixhQUFhUjtJQUMxQyxPQUFPO1FBQ0xSLElBQUksYUFBYSxRQUFRO1FBQ3pCQSxJQUFJLENBQUMsT0FBTyxFQUFFUSxTQUFTQyxHQUFHLEVBQUUsRUFBRSxRQUFRO1FBQ3RDVCxJQUFJLGdCQUFnQixRQUFRO1FBQzVCQSxJQUFJLENBQUMsT0FBTyxFQUFFUSxTQUFTRyxHQUFHLEVBQUUsRUFBRSxRQUFRO1FBQ3RDWCxJQUFJLENBQUMsVUFBVSxFQUFFUSxTQUFTTSxNQUFNLEVBQUUsRUFBRSxRQUFRO1FBQzVDZCxJQUFJLENBQUMsY0FBYyxFQUFFUSxTQUFTSyxVQUFVLEVBQUUsRUFBRSxRQUFRO1FBQ3BEYixJQUFJLENBQUMsV0FBVyxFQUFFUSxTQUFTTyxPQUFPLEVBQUUsRUFBRSxRQUFRO0lBQ2hEO0lBRUEsSUFBR1UsVUFBVTtRQUNYQSxTQUFTO0lBQ1g7SUFFQSxPQUFPSSxRQUFRQyxPQUFPLENBQUM7QUFDekIsRUFBRSJ9
@@ -1,6 +1,11 @@
1
- export declare const createChangelog: ({ cliName, config, outputFile, quiet }: {
2
- cliName: any;
3
- config: any;
4
- outputFile?: string;
5
- quiet: any;
6
- }) => Promise<number>;
1
+ interface ChangelogConfig {
2
+ readonly gitUrl?: string;
3
+ }
4
+ interface ChangelogOptions {
5
+ readonly cliName?: string;
6
+ readonly config?: ChangelogConfig;
7
+ readonly outputFile?: string;
8
+ readonly quiet?: boolean;
9
+ }
10
+ export declare const createChangelog: ({ cliName, config, outputFile, quiet }: ChangelogOptions) => Promise<number>;
11
+ export {};
@@ -10,7 +10,7 @@ import { DateTime } from 'luxon';
10
10
  import { join as pathJoin } from 'path';
11
11
  import { createSpinner } from '../utils/app.js';
12
12
  import { log } from '../utils/log.js';
13
- export const createChangelog = async ({ cliName, config, outputFile = 'changelog.tmp.md', quiet })=>{
13
+ export const createChangelog = async ({ cliName, config = {}, outputFile = 'changelog.tmp.md', quiet })=>{
14
14
  const spinner = createSpinner(quiet);
15
15
  const gitOptions = [
16
16
  'log',
@@ -60,7 +60,7 @@ export const createChangelog = async ({ cliName, config, outputFile = 'changelog
60
60
  const matches = formatLine.match(headerPattern);
61
61
  if (matches) {
62
62
  const itemType = capitalize(matches[1]);
63
- const itemScope = matches[2];
63
+ const itemScope = matches[2] || 'General';
64
64
  const itemDetails = matches[3];
65
65
  const details = {
66
66
  authorEmail,
@@ -110,7 +110,7 @@ export const createChangelog = async ({ cliName, config, outputFile = 'changelog
110
110
  let hash = `#${hashShort}`;
111
111
  if (!isEmpty(gitUrl)) {
112
112
  let commitPath = 'commits';
113
- if (gitUrl.includes('github.com')) {
113
+ if (gitUrl && gitUrl.includes('github.com')) {
114
114
  commitPath = 'commit';
115
115
  }
116
116
  hash = `[#${hashShort}](${gitUrl}/${commitPath}/${hashFull})`;
@@ -132,8 +132,8 @@ export const createChangelog = async ({ cliName, config, outputFile = 'changelog
132
132
  // Stop spinner
133
133
  spinner.fail('Failed generating change log!');
134
134
  // Kill process
135
- return error.status;
135
+ return 1;
136
136
  }
137
137
  };
138
138
 
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcmVhdGUvY2hhbmdlbG9nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJ2xvZGFzaC9jYXBpdGFsaXplLmpzJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UuanMnO1xuaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHtqb2luIGFzIHBhdGhKb2lufSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDaGFuZ2Vsb2cgPSBhc3luYyAoe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSA9ICdjaGFuZ2Vsb2cudG1wLm1kJywgcXVpZXR9KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGNvbnN0IGdpdE9wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICdsb2cnLFxuICAgICctMycsXG4gICAgJy0tcHJldHR5PWZvcm1hdDp7XCJhdXRob3JOYW1lXCI6IFwiJWFuXCIsIFwiYXV0aG9yRW1haWxcIjogXCIlYWVcIiwgXCJoYXNoU2hvcnRcIjogXCIlaFwiLCBcImhhc2hGdWxsXCI6IFwiJUhcIiwgXCJ0YWdcIjogXCIlRFwiLCBcImRhdGVcIjogJWN0LCBcInN1YmplY3RcIjogXCIlc1wiLFwiY29tbWVudHNcIjogXCIlYlwifVtsZXhfYnJlYWtdJ1xuICBdO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZ2l0ID0gYXdhaXQgZXhlY2EoJ2dpdCcsIGdpdE9wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG5cbiAgICBjb25zdCB7c3Rkb3V0fSA9IGdpdDtcbiAgICBjb25zdCBlbnRyaWVzOiBzdHJpbmdbXSA9IHN0ZG91dC5zcGxpdCgnW2xleF9icmVha10nKS5maWx0ZXIoKGl0ZW0pID0+ICEhaXRlbSk7XG4gICAgY29uc3QgZ2l0SnNvbiA9IEpTT04ucGFyc2UoXG4gICAgICAoYFske2VudHJpZXMuam9pbignLCcpfV1gKS5yZXBsYWNlKC9cIlteXCJdKig/OlwiXCJbXlwiXSopKlwiL2csIChtYXRjaCkgPT4gbWF0Y2gucmVwbGFjZSgvXFxuL2csICdbbGV4X2JyZWFrXScpKVxuICAgICk7XG4gICAgY29uc3QgY29tbWl0Q29udGVudCA9IHt9O1xuICAgIGxldCB2ZXJzaW9uOiBzdHJpbmcgPSAnVW5yZWxlYXNlZCc7XG5cbiAgICBnaXRKc29uLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHtjb21tZW50cywgYXV0aG9yRW1haWwsIGF1dGhvck5hbWUsIGRhdGUsIGhhc2hGdWxsLCBoYXNoU2hvcnQsIHRhZ30gPSBpdGVtO1xuICAgICAgY29uc3QgZm9ybWF0RGF0ZTogc3RyaW5nID0gRGF0ZVRpbWUuZnJvbU1pbGxpcyhkYXRlKS50b0Zvcm1hdCgnREREJyk7XG5cbiAgICAgIGlmKCFpc0VtcHR5KHRhZykpIHtcbiAgICAgICAgY29uc3QgcmVmcyA9IHRhZy5zcGxpdCgnLCAnKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFZlcnNpb246IHN0cmluZyA9IHJlZnMucmVkdWNlKChyZWY6IHN0cmluZywgdGFnSXRlbTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHVwZGF0ZWRSZWY6IHN0cmluZyA9IHJlZjtcblxuICAgICAgICAgIGlmKHVwZGF0ZWRSZWYgPT09ICcnICYmIHRhZ0l0ZW0uaW5jbHVkZXMoJ3RhZzogdicpKSB7XG4gICAgICAgICAgICB1cGRhdGVkUmVmID0gdGFnSXRlbS5yZXBsYWNlKCd0YWc6IHYnLCAnJykudHJpbSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cGRhdGVkUmVmO1xuICAgICAgICB9LCAnJyk7XG5cbiAgICAgICAgaWYoIWlzRW1wdHkodXBkYXRlZFZlcnNpb24pKSB7XG4gICAgICAgICAgdmVyc2lvbiA9IHVwZGF0ZWRWZXJzaW9uO1xuICAgICAgICAgIGNvbW1pdENvbnRlbnRbdmVyc2lvbl0gPSB7ZGF0ZTogZm9ybWF0RGF0ZSwgdmVyc2lvbjogdXBkYXRlZFZlcnNpb259O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmKCFjb21taXRDb250ZW50W3ZlcnNpb25dKSB7XG4gICAgICAgIGNvbW1pdENvbnRlbnRbdmVyc2lvbl0gPSB7bGlzdDoge319O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdWJqZWN0TGluZXM6IHN0cmluZ1tdID0gY29tbWVudHMuc3BsaXQoJ1tsZXhfYnJlYWtdJyk7XG4gICAgICBjb25zdCB0b3BpY3MgPSB7fTtcblxuXG4gICAgICBmb3IobGV0IGlkeDogbnVtYmVyID0gMCwgbGVuOiBudW1iZXIgPSBzdWJqZWN0TGluZXMubGVuZ3RoOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgICAgIGNvbnN0IG5leHRMaW5lOiBzdHJpbmcgPSBzdWJqZWN0TGluZXNbaWR4XTtcbiAgICAgICAgY29uc3QgZm9ybWF0TGluZTogc3RyaW5nID0gbmV4dExpbmUudHJpbSgpO1xuICAgICAgICBjb25zdCBoZWFkZXJQYXR0ZXJuOiBSZWdFeHAgPSAvXihcXHcqKSg/OlxcKChbXFx3JC5cXC0gKl0qKVxcKSk/OiAoLiopJC87XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBmb3JtYXRMaW5lLm1hdGNoKGhlYWRlclBhdHRlcm4pO1xuXG4gICAgICAgIGlmKG1hdGNoZXMpIHtcbiAgICAgICAgICBjb25zdCBpdGVtVHlwZTogc3RyaW5nID0gY2FwaXRhbGl6ZShtYXRjaGVzWzFdKTtcbiAgICAgICAgICBjb25zdCBpdGVtU2NvcGU6IHN0cmluZyA9IG1hdGNoZXNbMl07XG4gICAgICAgICAgY29uc3QgaXRlbURldGFpbHM6IHN0cmluZyA9IG1hdGNoZXNbM107XG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHtcbiAgICAgICAgICAgIGF1dGhvckVtYWlsLFxuICAgICAgICAgICAgYXV0aG9yTmFtZSxcbiAgICAgICAgICAgIGRldGFpbHM6IGl0ZW1EZXRhaWxzLFxuICAgICAgICAgICAgaGFzaEZ1bGwsXG4gICAgICAgICAgICBoYXNoU2hvcnQsXG4gICAgICAgICAgICB0eXBlOiBpdGVtVHlwZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZighdG9waWNzW2l0ZW1TY29wZV0pIHtcbiAgICAgICAgICAgIHRvcGljc1tpdGVtU2NvcGVdID0ge1tpdGVtVHlwZV06IFtkZXRhaWxzXX07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvcGljc1tpdGVtU2NvcGVdW2l0ZW1UeXBlXS5wdXNoKGRldGFpbHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb21taXRDb250ZW50W3ZlcnNpb25dID0gbWVyZ2UoY29tbWl0Q29udGVudFt2ZXJzaW9uXSwge2xpc3Q6IHRvcGljc30pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybWF0TG9nOiBzdHJpbmcgPSBPYmplY3Qua2V5cyhjb21taXRDb250ZW50KS5yZWR1Y2UoKGNvbnRlbnQ6IHN0cmluZywgdmVyc2lvbktleTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7ZGF0ZSwgbGlzdCA9IHt9LCB2ZXJzaW9ufSA9IGNvbW1pdENvbnRlbnRbdmVyc2lvbktleV07XG4gICAgICBjb25zdCBmb3JtYXRTY29wZXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMobGlzdCk7XG4gICAgICBsZXQgdXBkYXRlZENvbnRlbnQ6IHN0cmluZyA9IGNvbnRlbnQ7XG5cbiAgICAgIGNvbnN0IHZlcnNpb25MYWJlbDogc3RyaW5nID0gdmVyc2lvbiA/IHZlcnNpb24gOiAnVW5yZWxlYXNlZCc7XG4gICAgICBjb25zdCBoZWFkZXJMYWJlbHM6IHN0cmluZ1tdID0gW3ZlcnNpb25MYWJlbF07XG4gICAgICBpZihkYXRlKSB7XG4gICAgICAgIGhlYWRlckxhYmVscy5wdXNoKGAoJHtkYXRlfSlgKTtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYFxcbiMjICR7aGVhZGVyTGFiZWxzLmpvaW4oJyAnKX1cXG5gO1xuXG4gICAgICBmb3JtYXRTY29wZXMuZm9yRWFjaCgoc2NvcGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYFxcbiMjIyAke3Njb3BlTmFtZX1cXG5cXG5gO1xuXG4gICAgICAgIC8vIEdldCB0aGUgdG9waWMgbmFtZVxuICAgICAgICBjb25zdCBpdGVtTGlzdCA9IGxpc3Rbc2NvcGVOYW1lXTtcbiAgICAgICAgY29uc3QgaXRlbU5hbWVzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGl0ZW1MaXN0KTtcblxuICAgICAgICBpdGVtTmFtZXMuZm9yRWFjaCgoaXRlbU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHVwZGF0ZWRDb250ZW50ICs9IGAqICR7aXRlbU5hbWV9XFxuYDtcblxuICAgICAgICAgIGl0ZW1MaXN0W2l0ZW1OYW1lXS5mb3JFYWNoKChjaGFuZ2VzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7YXV0aG9yRW1haWwsIGF1dGhvck5hbWUsIGRldGFpbHMsIGhhc2hGdWxsLCBoYXNoU2hvcnR9ID0gY2hhbmdlcztcbiAgICAgICAgICAgIGNvbnN0IHtnaXRVcmx9ID0gY29uZmlnO1xuICAgICAgICAgICAgbGV0IGhhc2g6IHN0cmluZyA9IGAjJHtoYXNoU2hvcnR9YDtcblxuICAgICAgICAgICAgaWYoIWlzRW1wdHkoZ2l0VXJsKSkge1xuICAgICAgICAgICAgICBsZXQgY29tbWl0UGF0aDogc3RyaW5nID0gJ2NvbW1pdHMnO1xuXG4gICAgICAgICAgICAgIGlmKGdpdFVybC5pbmNsdWRlcygnZ2l0aHViLmNvbScpKSB7XG4gICAgICAgICAgICAgICAgY29tbWl0UGF0aCA9ICdjb21taXQnO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaGFzaCA9IGBbIyR7aGFzaFNob3J0fV0oJHtnaXRVcmx9LyR7Y29tbWl0UGF0aH0vJHtoYXNoRnVsbH0pYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYCAgKiAke2RldGFpbHN9IChbJHthdXRob3JOYW1lfV0obWFpbHRvOiR7YXV0aG9yRW1haWx9KSBpbiAke2hhc2h9KVxcbmA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB1cGRhdGVkQ29udGVudDtcbiAgICB9LCAnIyBDaGFuZ2VzXFxuJyk7XG5cbiAgICBjb25zdCBsb2dGaWxlOiBzdHJpbmcgPSBwYXRoSm9pbihwcm9jZXNzLmN3ZCgpLCBvdXRwdXRGaWxlKTtcbiAgICB3cml0ZUZpbGVTeW5jKGxvZ0ZpbGUsIGZvcm1hdExvZyk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKCdHaXQgY2hhbmdlIGxvZyBjb21wbGV0ZSEnKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgZ2VuZXJhdGluZyBjaGFuZ2UgbG9nIScpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgcmV0dXJuIGVycm9yLnN0YXR1cztcbiAgfVxufTsiXSwibmFtZXMiOlsiZXhlY2EiLCJ3cml0ZUZpbGVTeW5jIiwiY2FwaXRhbGl6ZSIsImlzRW1wdHkiLCJtZXJnZSIsIkRhdGVUaW1lIiwiam9pbiIsInBhdGhKb2luIiwiY3JlYXRlU3Bpbm5lciIsImxvZyIsImNyZWF0ZUNoYW5nZWxvZyIsImNsaU5hbWUiLCJjb25maWciLCJvdXRwdXRGaWxlIiwicXVpZXQiLCJzcGlubmVyIiwiZ2l0T3B0aW9ucyIsImdpdCIsImVuY29kaW5nIiwic3Rkb3V0IiwiZW50cmllcyIsInNwbGl0IiwiZmlsdGVyIiwiaXRlbSIsImdpdEpzb24iLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwibWF0Y2giLCJjb21taXRDb250ZW50IiwidmVyc2lvbiIsImZvckVhY2giLCJjb21tZW50cyIsImF1dGhvckVtYWlsIiwiYXV0aG9yTmFtZSIsImRhdGUiLCJoYXNoRnVsbCIsImhhc2hTaG9ydCIsInRhZyIsImZvcm1hdERhdGUiLCJmcm9tTWlsbGlzIiwidG9Gb3JtYXQiLCJyZWZzIiwidXBkYXRlZFZlcnNpb24iLCJyZWR1Y2UiLCJyZWYiLCJ0YWdJdGVtIiwidXBkYXRlZFJlZiIsImluY2x1ZGVzIiwidHJpbSIsImxpc3QiLCJzdWJqZWN0TGluZXMiLCJ0b3BpY3MiLCJpZHgiLCJsZW4iLCJsZW5ndGgiLCJuZXh0TGluZSIsImZvcm1hdExpbmUiLCJoZWFkZXJQYXR0ZXJuIiwibWF0Y2hlcyIsIml0ZW1UeXBlIiwiaXRlbVNjb3BlIiwiaXRlbURldGFpbHMiLCJkZXRhaWxzIiwidHlwZSIsInB1c2giLCJmb3JtYXRMb2ciLCJPYmplY3QiLCJrZXlzIiwiY29udGVudCIsInZlcnNpb25LZXkiLCJmb3JtYXRTY29wZXMiLCJ1cGRhdGVkQ29udGVudCIsInZlcnNpb25MYWJlbCIsImhlYWRlckxhYmVscyIsInNjb3BlTmFtZSIsIml0ZW1MaXN0IiwiaXRlbU5hbWVzIiwiaXRlbU5hbWUiLCJjaGFuZ2VzIiwiZ2l0VXJsIiwiaGFzaCIsImNvbW1pdFBhdGgiLCJsb2dGaWxlIiwicHJvY2VzcyIsImN3ZCIsInN1Y2NlZWQiLCJlcnJvciIsIm1lc3NhZ2UiLCJmYWlsIiwic3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxLQUFLLFFBQU8sUUFBUTtBQUM1QixTQUFRQyxhQUFhLFFBQU8sS0FBSztBQUNqQyxPQUFPQyxnQkFBZ0IsdUJBQXVCO0FBQzlDLE9BQU9DLGFBQWEsb0JBQW9CO0FBQ3hDLE9BQU9DLFdBQVcsa0JBQWtCO0FBQ3BDLFNBQVFDLFFBQVEsUUFBTyxRQUFRO0FBQy9CLFNBQVFDLFFBQVFDLFFBQVEsUUFBTyxPQUFPO0FBRXRDLFNBQVFDLGFBQWEsUUFBTyxrQkFBa0I7QUFDOUMsU0FBUUMsR0FBRyxRQUFPLGtCQUFrQjtBQUVwQyxPQUFPLE1BQU1DLGtCQUFrQixPQUFPLEVBQUNDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxhQUFhLGtCQUFrQixFQUFFQyxLQUFLLEVBQUM7SUFDN0YsTUFBTUMsVUFBVVAsY0FBY007SUFFOUIsTUFBTUUsYUFBdUI7UUFDM0I7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxJQUFJO1FBQ0YsTUFBTUMsTUFBTSxNQUFNakIsTUFBTSxPQUFPZ0IsWUFBWTtZQUFDRSxVQUFVO1FBQU07UUFFNUQsTUFBTSxFQUFDQyxNQUFNLEVBQUMsR0FBR0Y7UUFDakIsTUFBTUcsVUFBb0JELE9BQU9FLEtBQUssQ0FBQyxlQUFlQyxNQUFNLENBQUMsQ0FBQ0MsT0FBUyxDQUFDLENBQUNBO1FBQ3pFLE1BQU1DLFVBQVVDLEtBQUtDLEtBQUssQ0FDeEIsQUFBQyxDQUFDLENBQUMsRUFBRU4sUUFBUWQsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUVxQixPQUFPLENBQUMsd0JBQXdCLENBQUNDLFFBQVVBLE1BQU1ELE9BQU8sQ0FBQyxPQUFPO1FBRTdGLE1BQU1FLGdCQUFnQixDQUFDO1FBQ3ZCLElBQUlDLFVBQWtCO1FBRXRCTixRQUFRTyxPQUFPLENBQUMsQ0FBQ1I7WUFDZixNQUFNLEVBQUNTLFFBQVEsRUFBRUMsV0FBVyxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUVDLEdBQUcsRUFBQyxHQUFHZjtZQUM1RSxNQUFNZ0IsYUFBcUJsQyxTQUFTbUMsVUFBVSxDQUFDTCxNQUFNTSxRQUFRLENBQUM7WUFFOUQsSUFBRyxDQUFDdEMsUUFBUW1DLE1BQU07Z0JBQ2hCLE1BQU1JLE9BQU9KLElBQUlqQixLQUFLLENBQUM7Z0JBQ3ZCLE1BQU1zQixpQkFBeUJELEtBQUtFLE1BQU0sQ0FBQyxDQUFDQyxLQUFhQztvQkFDdkQsSUFBSUMsYUFBcUJGO29CQUV6QixJQUFHRSxlQUFlLE1BQU1ELFFBQVFFLFFBQVEsQ0FBQyxXQUFXO3dCQUNsREQsYUFBYUQsUUFBUW5CLE9BQU8sQ0FBQyxVQUFVLElBQUlzQixJQUFJO29CQUNqRDtvQkFFQSxPQUFPRjtnQkFDVCxHQUFHO2dCQUVILElBQUcsQ0FBQzVDLFFBQVF3QyxpQkFBaUI7b0JBQzNCYixVQUFVYTtvQkFDVmQsYUFBYSxDQUFDQyxRQUFRLEdBQUc7d0JBQUNLLE1BQU1JO3dCQUFZVCxTQUFTYTtvQkFBYztnQkFDckU7WUFDRjtZQUVBLElBQUcsQ0FBQ2QsYUFBYSxDQUFDQyxRQUFRLEVBQUU7Z0JBQzFCRCxhQUFhLENBQUNDLFFBQVEsR0FBRztvQkFBQ29CLE1BQU0sQ0FBQztnQkFBQztZQUNwQztZQUVBLE1BQU1DLGVBQXlCbkIsU0FBU1gsS0FBSyxDQUFDO1lBQzlDLE1BQU0rQixTQUFTLENBQUM7WUFHaEIsSUFBSSxJQUFJQyxNQUFjLEdBQUdDLE1BQWNILGFBQWFJLE1BQU0sRUFBRUYsTUFBTUMsS0FBS0QsTUFBTztnQkFDNUUsTUFBTUcsV0FBbUJMLFlBQVksQ0FBQ0UsSUFBSTtnQkFDMUMsTUFBTUksYUFBcUJELFNBQVNQLElBQUk7Z0JBQ3hDLE1BQU1TLGdCQUF3QjtnQkFDOUIsTUFBTUMsVUFBVUYsV0FBVzdCLEtBQUssQ0FBQzhCO2dCQUVqQyxJQUFHQyxTQUFTO29CQUNWLE1BQU1DLFdBQW1CMUQsV0FBV3lELE9BQU8sQ0FBQyxFQUFFO29CQUM5QyxNQUFNRSxZQUFvQkYsT0FBTyxDQUFDLEVBQUU7b0JBQ3BDLE1BQU1HLGNBQXNCSCxPQUFPLENBQUMsRUFBRTtvQkFDdEMsTUFBTUksVUFBVTt3QkFDZDlCO3dCQUNBQzt3QkFDQTZCLFNBQVNEO3dCQUNUMUI7d0JBQ0FDO3dCQUNBMkIsTUFBTUo7b0JBQ1I7b0JBRUEsSUFBRyxDQUFDUixNQUFNLENBQUNTLFVBQVUsRUFBRTt3QkFDckJULE1BQU0sQ0FBQ1MsVUFBVSxHQUFHOzRCQUFDLENBQUNELFNBQVMsRUFBRTtnQ0FBQ0c7NkJBQVE7d0JBQUE7b0JBQzVDLE9BQU87d0JBQ0xYLE1BQU0sQ0FBQ1MsVUFBVSxDQUFDRCxTQUFTLENBQUNLLElBQUksQ0FBQ0Y7b0JBQ25DO2dCQUNGO1lBQ0Y7WUFFQWxDLGFBQWEsQ0FBQ0MsUUFBUSxHQUFHMUIsTUFBTXlCLGFBQWEsQ0FBQ0MsUUFBUSxFQUFFO2dCQUFDb0IsTUFBTUU7WUFBTTtRQUN0RTtRQUVBLE1BQU1jLFlBQW9CQyxPQUFPQyxJQUFJLENBQUN2QyxlQUFlZSxNQUFNLENBQUMsQ0FBQ3lCLFNBQWlCQztZQUM1RSxNQUFNLEVBQUNuQyxJQUFJLEVBQUVlLE9BQU8sQ0FBQyxDQUFDLEVBQUVwQixPQUFPLEVBQUMsR0FBR0QsYUFBYSxDQUFDeUMsV0FBVztZQUM1RCxNQUFNQyxlQUF5QkosT0FBT0MsSUFBSSxDQUFDbEI7WUFDM0MsSUFBSXNCLGlCQUF5Qkg7WUFFN0IsTUFBTUksZUFBdUIzQyxVQUFVQSxVQUFVO1lBQ2pELE1BQU00QyxlQUF5QjtnQkFBQ0Q7YUFBYTtZQUM3QyxJQUFHdEMsTUFBTTtnQkFDUHVDLGFBQWFULElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTlCLEtBQUssQ0FBQyxDQUFDO1lBQy9CO1lBRUFxQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUVFLGFBQWFwRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFcERpRSxhQUFheEMsT0FBTyxDQUFDLENBQUM0QztnQkFDcEJILGtCQUFrQixDQUFDLE1BQU0sRUFBRUcsVUFBVSxJQUFJLENBQUM7Z0JBRTFDLHFCQUFxQjtnQkFDckIsTUFBTUMsV0FBVzFCLElBQUksQ0FBQ3lCLFVBQVU7Z0JBQ2hDLE1BQU1FLFlBQXNCVixPQUFPQyxJQUFJLENBQUNRO2dCQUV4Q0MsVUFBVTlDLE9BQU8sQ0FBQyxDQUFDK0M7b0JBQ2pCTixrQkFBa0IsQ0FBQyxFQUFFLEVBQUVNLFNBQVMsRUFBRSxDQUFDO29CQUVuQ0YsUUFBUSxDQUFDRSxTQUFTLENBQUMvQyxPQUFPLENBQUMsQ0FBQ2dEO3dCQUMxQixNQUFNLEVBQUM5QyxXQUFXLEVBQUVDLFVBQVUsRUFBRTZCLE9BQU8sRUFBRTNCLFFBQVEsRUFBRUMsU0FBUyxFQUFDLEdBQUcwQzt3QkFDaEUsTUFBTSxFQUFDQyxNQUFNLEVBQUMsR0FBR3BFO3dCQUNqQixJQUFJcUUsT0FBZSxDQUFDLENBQUMsRUFBRTVDLFdBQVc7d0JBRWxDLElBQUcsQ0FBQ2xDLFFBQVE2RSxTQUFTOzRCQUNuQixJQUFJRSxhQUFxQjs0QkFFekIsSUFBR0YsT0FBT2hDLFFBQVEsQ0FBQyxlQUFlO2dDQUNoQ2tDLGFBQWE7NEJBQ2Y7NEJBRUFELE9BQU8sQ0FBQyxFQUFFLEVBQUU1QyxVQUFVLEVBQUUsRUFBRTJDLE9BQU8sQ0FBQyxFQUFFRSxXQUFXLENBQUMsRUFBRTlDLFNBQVMsQ0FBQyxDQUFDO3dCQUMvRDt3QkFFQW9DLGtCQUFrQixDQUFDLElBQUksRUFBRVQsUUFBUSxHQUFHLEVBQUU3QixXQUFXLFNBQVMsRUFBRUQsWUFBWSxLQUFLLEVBQUVnRCxLQUFLLEdBQUcsQ0FBQztvQkFDMUY7Z0JBQ0Y7WUFDRjtZQUVBLE9BQU9UO1FBQ1QsR0FBRztRQUVILE1BQU1XLFVBQWtCNUUsU0FBUzZFLFFBQVFDLEdBQUcsSUFBSXhFO1FBQ2hEWixjQUFja0YsU0FBU2pCO1FBQ3ZCbkQsUUFBUXVFLE9BQU8sQ0FBQztRQUVoQixlQUFlO1FBQ2YsT0FBTztJQUNULEVBQUUsT0FBTUMsT0FBTztRQUNiLHdCQUF3QjtRQUN4QjlFLElBQUksQ0FBQyxFQUFFLEVBQUVFLFFBQVEsUUFBUSxFQUFFNEUsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBUzFFO1FBRXJELGVBQWU7UUFDZkMsUUFBUTBFLElBQUksQ0FBQztRQUViLGVBQWU7UUFDZixPQUFPRixNQUFNRyxNQUFNO0lBQ3JCO0FBQ0YsRUFBRSJ9
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcmVhdGUvY2hhbmdlbG9nLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJ2xvZGFzaC9jYXBpdGFsaXplLmpzJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UuanMnO1xuaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHtqb2luIGFzIHBhdGhKb2lufSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dDb25maWcge1xuICByZWFkb25seSBnaXRVcmw/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZmlnPzogQ2hhbmdlbG9nQ29uZmlnO1xuICByZWFkb25seSBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dFbnRyeSB7XG4gIHJlYWRvbmx5IGF1dGhvckVtYWlsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGF1dGhvck5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY29tbWVudHM6IHN0cmluZztcbiAgcmVhZG9ubHkgZGF0ZTogbnVtYmVyO1xuICByZWFkb25seSBoYXNoRnVsbDogc3RyaW5nO1xuICByZWFkb25seSBoYXNoU2hvcnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgdGFnOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGFuZ2Vsb2dJdGVtRGV0YWlscyB7XG4gIHJlYWRvbmx5IGF1dGhvckVtYWlsOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGF1dGhvck5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZGV0YWlsczogc3RyaW5nO1xuICByZWFkb25seSBoYXNoRnVsbDogc3RyaW5nO1xuICByZWFkb25seSBoYXNoU2hvcnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2hhbmdlbG9nVmVyc2lvbkVudHJ5IHtcbiAgcmVhZG9ubHkgZGF0ZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgbGlzdD86IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIENoYW5nZWxvZ0l0ZW1EZXRhaWxzW10+Pjtcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNoYW5nZWxvZyA9IGFzeW5jICh7Y2xpTmFtZSwgY29uZmlnID0ge30sIG91dHB1dEZpbGUgPSAnY2hhbmdlbG9nLnRtcC5tZCcsIHF1aWV0fTogQ2hhbmdlbG9nT3B0aW9ucyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBjb25zdCBnaXRPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAnbG9nJyxcbiAgICAnLTMnLFxuICAgICctLXByZXR0eT1mb3JtYXQ6e1wiYXV0aG9yTmFtZVwiOiBcIiVhblwiLCBcImF1dGhvckVtYWlsXCI6IFwiJWFlXCIsIFwiaGFzaFNob3J0XCI6IFwiJWhcIiwgXCJoYXNoRnVsbFwiOiBcIiVIXCIsIFwidGFnXCI6IFwiJURcIiwgXCJkYXRlXCI6ICVjdCwgXCJzdWJqZWN0XCI6IFwiJXNcIixcImNvbW1lbnRzXCI6IFwiJWJcIn1bbGV4X2JyZWFrXSdcbiAgXTtcblxuICB0cnkge1xuICAgIGNvbnN0IGdpdCA9IGF3YWl0IGV4ZWNhKCdnaXQnLCBnaXRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgY29uc3Qge3N0ZG91dH0gPSBnaXQ7XG4gICAgY29uc3QgZW50cmllczogc3RyaW5nW10gPSBzdGRvdXQuc3BsaXQoJ1tsZXhfYnJlYWtdJykuZmlsdGVyKChpdGVtKSA9PiAhIWl0ZW0pO1xuICAgIGNvbnN0IGdpdEpzb24gPSBKU09OLnBhcnNlKFxuICAgICAgKGBbJHtlbnRyaWVzLmpvaW4oJywnKX1dYCkucmVwbGFjZSgvXCJbXlwiXSooPzpcIlwiW15cIl0qKSpcIi9nLCAobWF0Y2gpID0+IG1hdGNoLnJlcGxhY2UoL1xcbi9nLCAnW2xleF9icmVha10nKSlcbiAgICApIGFzIENoYW5nZWxvZ0VudHJ5W107XG4gICAgY29uc3QgY29tbWl0Q29udGVudDogUmVjb3JkPHN0cmluZywgQ2hhbmdlbG9nVmVyc2lvbkVudHJ5PiA9IHt9O1xuICAgIGxldCB2ZXJzaW9uOiBzdHJpbmcgPSAnVW5yZWxlYXNlZCc7XG5cbiAgICBnaXRKc29uLmZvckVhY2goKGl0ZW06IENoYW5nZWxvZ0VudHJ5KSA9PiB7XG4gICAgICBjb25zdCB7Y29tbWVudHMsIGF1dGhvckVtYWlsLCBhdXRob3JOYW1lLCBkYXRlLCBoYXNoRnVsbCwgaGFzaFNob3J0LCB0YWd9ID0gaXRlbTtcbiAgICAgIGNvbnN0IGZvcm1hdERhdGU6IHN0cmluZyA9IERhdGVUaW1lLmZyb21NaWxsaXMoZGF0ZSkudG9Gb3JtYXQoJ0RERCcpO1xuXG4gICAgICBpZighaXNFbXB0eSh0YWcpKSB7XG4gICAgICAgIGNvbnN0IHJlZnMgPSB0YWcuc3BsaXQoJywgJyk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWRWZXJzaW9uOiBzdHJpbmcgPSByZWZzLnJlZHVjZSgocmVmOiBzdHJpbmcsIHRhZ0l0ZW06IHN0cmluZykgPT4ge1xuICAgICAgICAgIGxldCB1cGRhdGVkUmVmOiBzdHJpbmcgPSByZWY7XG5cbiAgICAgICAgICBpZih1cGRhdGVkUmVmID09PSAnJyAmJiB0YWdJdGVtLmluY2x1ZGVzKCd0YWc6IHYnKSkge1xuICAgICAgICAgICAgdXBkYXRlZFJlZiA9IHRhZ0l0ZW0ucmVwbGFjZSgndGFnOiB2JywgJycpLnRyaW0oKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdXBkYXRlZFJlZjtcbiAgICAgICAgfSwgJycpO1xuXG4gICAgICAgIGlmKCFpc0VtcHR5KHVwZGF0ZWRWZXJzaW9uKSkge1xuICAgICAgICAgIHZlcnNpb24gPSB1cGRhdGVkVmVyc2lvbjtcbiAgICAgICAgICBjb21taXRDb250ZW50W3ZlcnNpb25dID0ge2RhdGU6IGZvcm1hdERhdGUsIHZlcnNpb246IHVwZGF0ZWRWZXJzaW9ufTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZighY29tbWl0Q29udGVudFt2ZXJzaW9uXSkge1xuICAgICAgICBjb21taXRDb250ZW50W3ZlcnNpb25dID0ge2xpc3Q6IHt9fTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3ViamVjdExpbmVzOiBzdHJpbmdbXSA9IGNvbW1lbnRzLnNwbGl0KCdbbGV4X2JyZWFrXScpO1xuICAgICAgY29uc3QgdG9waWNzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBDaGFuZ2Vsb2dJdGVtRGV0YWlsc1tdPj4gPSB7fTtcblxuXG4gICAgICBmb3IobGV0IGlkeDogbnVtYmVyID0gMCwgbGVuOiBudW1iZXIgPSBzdWJqZWN0TGluZXMubGVuZ3RoOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgICAgIGNvbnN0IG5leHRMaW5lOiBzdHJpbmcgPSBzdWJqZWN0TGluZXNbaWR4XTtcbiAgICAgICAgY29uc3QgZm9ybWF0TGluZTogc3RyaW5nID0gbmV4dExpbmUudHJpbSgpO1xuICAgICAgICBjb25zdCBoZWFkZXJQYXR0ZXJuOiBSZWdFeHAgPSAvXihcXHcqKSg/OlxcKChbXFx3JC5cXC0gKl0qKVxcKSk/OiAoLiopJC87XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBmb3JtYXRMaW5lLm1hdGNoKGhlYWRlclBhdHRlcm4pO1xuXG4gICAgICAgIGlmKG1hdGNoZXMpIHtcbiAgICAgICAgICBjb25zdCBpdGVtVHlwZTogc3RyaW5nID0gY2FwaXRhbGl6ZShtYXRjaGVzWzFdKTtcbiAgICAgICAgICBjb25zdCBpdGVtU2NvcGU6IHN0cmluZyA9IG1hdGNoZXNbMl0gfHwgJ0dlbmVyYWwnO1xuICAgICAgICAgIGNvbnN0IGl0ZW1EZXRhaWxzOiBzdHJpbmcgPSBtYXRjaGVzWzNdO1xuICAgICAgICAgIGNvbnN0IGRldGFpbHMgPSB7XG4gICAgICAgICAgICBhdXRob3JFbWFpbCxcbiAgICAgICAgICAgIGF1dGhvck5hbWUsXG4gICAgICAgICAgICBkZXRhaWxzOiBpdGVtRGV0YWlscyxcbiAgICAgICAgICAgIGhhc2hGdWxsLFxuICAgICAgICAgICAgaGFzaFNob3J0LFxuICAgICAgICAgICAgdHlwZTogaXRlbVR5cGVcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYoIXRvcGljc1tpdGVtU2NvcGVdKSB7XG4gICAgICAgICAgICB0b3BpY3NbaXRlbVNjb3BlXSA9IHtbaXRlbVR5cGVdOiBbZGV0YWlsc119O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b3BpY3NbaXRlbVNjb3BlXVtpdGVtVHlwZV0ucHVzaChkZXRhaWxzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29tbWl0Q29udGVudFt2ZXJzaW9uXSA9IG1lcmdlKGNvbW1pdENvbnRlbnRbdmVyc2lvbl0sIHtsaXN0OiB0b3BpY3N9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGZvcm1hdExvZzogc3RyaW5nID0gT2JqZWN0LmtleXMoY29tbWl0Q29udGVudCkucmVkdWNlKChjb250ZW50OiBzdHJpbmcsIHZlcnNpb25LZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qge2RhdGUsIGxpc3QgPSB7fSwgdmVyc2lvbn0gPSBjb21taXRDb250ZW50W3ZlcnNpb25LZXldO1xuICAgICAgY29uc3QgZm9ybWF0U2NvcGVzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGxpc3QpO1xuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50OiBzdHJpbmcgPSBjb250ZW50O1xuXG4gICAgICBjb25zdCB2ZXJzaW9uTGFiZWw6IHN0cmluZyA9IHZlcnNpb24gPyB2ZXJzaW9uIDogJ1VucmVsZWFzZWQnO1xuICAgICAgY29uc3QgaGVhZGVyTGFiZWxzOiBzdHJpbmdbXSA9IFt2ZXJzaW9uTGFiZWxdO1xuICAgICAgaWYoZGF0ZSkge1xuICAgICAgICBoZWFkZXJMYWJlbHMucHVzaChgKCR7ZGF0ZX0pYCk7XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZWRDb250ZW50ICs9IGBcXG4jIyAke2hlYWRlckxhYmVscy5qb2luKCcgJyl9XFxuYDtcblxuICAgICAgZm9ybWF0U2NvcGVzLmZvckVhY2goKHNjb3BlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHVwZGF0ZWRDb250ZW50ICs9IGBcXG4jIyMgJHtzY29wZU5hbWV9XFxuXFxuYDtcblxuICAgICAgICAvLyBHZXQgdGhlIHRvcGljIG5hbWVcbiAgICAgICAgY29uc3QgaXRlbUxpc3QgPSBsaXN0W3Njb3BlTmFtZV07XG4gICAgICAgIGNvbnN0IGl0ZW1OYW1lczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhpdGVtTGlzdCk7XG5cbiAgICAgICAgaXRlbU5hbWVzLmZvckVhY2goKGl0ZW1OYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB1cGRhdGVkQ29udGVudCArPSBgKiAke2l0ZW1OYW1lfVxcbmA7XG5cbiAgICAgICAgICBpdGVtTGlzdFtpdGVtTmFtZV0uZm9yRWFjaCgoY2hhbmdlczogQ2hhbmdlbG9nSXRlbURldGFpbHMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHthdXRob3JFbWFpbCwgYXV0aG9yTmFtZSwgZGV0YWlscywgaGFzaEZ1bGwsIGhhc2hTaG9ydH0gPSBjaGFuZ2VzO1xuICAgICAgICAgICAgY29uc3Qge2dpdFVybH0gPSBjb25maWc7XG4gICAgICAgICAgICBsZXQgaGFzaDogc3RyaW5nID0gYCMke2hhc2hTaG9ydH1gO1xuXG4gICAgICAgICAgICBpZighaXNFbXB0eShnaXRVcmwpKSB7XG4gICAgICAgICAgICAgIGxldCBjb21taXRQYXRoOiBzdHJpbmcgPSAnY29tbWl0cyc7XG5cbiAgICAgICAgICAgICAgaWYoZ2l0VXJsICYmIGdpdFVybC5pbmNsdWRlcygnZ2l0aHViLmNvbScpKSB7XG4gICAgICAgICAgICAgICAgY29tbWl0UGF0aCA9ICdjb21taXQnO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaGFzaCA9IGBbIyR7aGFzaFNob3J0fV0oJHtnaXRVcmx9LyR7Y29tbWl0UGF0aH0vJHtoYXNoRnVsbH0pYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYCAgKiAke2RldGFpbHN9IChbJHthdXRob3JOYW1lfV0obWFpbHRvOiR7YXV0aG9yRW1haWx9KSBpbiAke2hhc2h9KVxcbmA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB1cGRhdGVkQ29udGVudDtcbiAgICB9LCAnIyBDaGFuZ2VzXFxuJyk7XG5cbiAgICBjb25zdCBsb2dGaWxlOiBzdHJpbmcgPSBwYXRoSm9pbihwcm9jZXNzLmN3ZCgpLCBvdXRwdXRGaWxlKTtcbiAgICB3cml0ZUZpbGVTeW5jKGxvZ0ZpbGUsIGZvcm1hdExvZyk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKCdHaXQgY2hhbmdlIGxvZyBjb21wbGV0ZSEnKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgZ2VuZXJhdGluZyBjaGFuZ2UgbG9nIScpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiZXhlY2EiLCJ3cml0ZUZpbGVTeW5jIiwiY2FwaXRhbGl6ZSIsImlzRW1wdHkiLCJtZXJnZSIsIkRhdGVUaW1lIiwiam9pbiIsInBhdGhKb2luIiwiY3JlYXRlU3Bpbm5lciIsImxvZyIsImNyZWF0ZUNoYW5nZWxvZyIsImNsaU5hbWUiLCJjb25maWciLCJvdXRwdXRGaWxlIiwicXVpZXQiLCJzcGlubmVyIiwiZ2l0T3B0aW9ucyIsImdpdCIsImVuY29kaW5nIiwic3Rkb3V0IiwiZW50cmllcyIsInNwbGl0IiwiZmlsdGVyIiwiaXRlbSIsImdpdEpzb24iLCJKU09OIiwicGFyc2UiLCJyZXBsYWNlIiwibWF0Y2giLCJjb21taXRDb250ZW50IiwidmVyc2lvbiIsImZvckVhY2giLCJjb21tZW50cyIsImF1dGhvckVtYWlsIiwiYXV0aG9yTmFtZSIsImRhdGUiLCJoYXNoRnVsbCIsImhhc2hTaG9ydCIsInRhZyIsImZvcm1hdERhdGUiLCJmcm9tTWlsbGlzIiwidG9Gb3JtYXQiLCJyZWZzIiwidXBkYXRlZFZlcnNpb24iLCJyZWR1Y2UiLCJyZWYiLCJ0YWdJdGVtIiwidXBkYXRlZFJlZiIsImluY2x1ZGVzIiwidHJpbSIsImxpc3QiLCJzdWJqZWN0TGluZXMiLCJ0b3BpY3MiLCJpZHgiLCJsZW4iLCJsZW5ndGgiLCJuZXh0TGluZSIsImZvcm1hdExpbmUiLCJoZWFkZXJQYXR0ZXJuIiwibWF0Y2hlcyIsIml0ZW1UeXBlIiwiaXRlbVNjb3BlIiwiaXRlbURldGFpbHMiLCJkZXRhaWxzIiwidHlwZSIsInB1c2giLCJmb3JtYXRMb2ciLCJPYmplY3QiLCJrZXlzIiwiY29udGVudCIsInZlcnNpb25LZXkiLCJmb3JtYXRTY29wZXMiLCJ1cGRhdGVkQ29udGVudCIsInZlcnNpb25MYWJlbCIsImhlYWRlckxhYmVscyIsInNjb3BlTmFtZSIsIml0ZW1MaXN0IiwiaXRlbU5hbWVzIiwiaXRlbU5hbWUiLCJjaGFuZ2VzIiwiZ2l0VXJsIiwiaGFzaCIsImNvbW1pdFBhdGgiLCJsb2dGaWxlIiwicHJvY2VzcyIsImN3ZCIsInN1Y2NlZWQiLCJlcnJvciIsIm1lc3NhZ2UiLCJmYWlsIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxLQUFLLFFBQU8sUUFBUTtBQUM1QixTQUFRQyxhQUFhLFFBQU8sS0FBSztBQUNqQyxPQUFPQyxnQkFBZ0IsdUJBQXVCO0FBQzlDLE9BQU9DLGFBQWEsb0JBQW9CO0FBQ3hDLE9BQU9DLFdBQVcsa0JBQWtCO0FBQ3BDLFNBQVFDLFFBQVEsUUFBTyxRQUFRO0FBQy9CLFNBQVFDLFFBQVFDLFFBQVEsUUFBTyxPQUFPO0FBRXRDLFNBQVFDLGFBQWEsUUFBTyxrQkFBa0I7QUFDOUMsU0FBUUMsR0FBRyxRQUFPLGtCQUFrQjtBQXNDcEMsT0FBTyxNQUFNQyxrQkFBa0IsT0FBTyxFQUFDQyxPQUFPLEVBQUVDLFNBQVMsQ0FBQyxDQUFDLEVBQUVDLGFBQWEsa0JBQWtCLEVBQUVDLEtBQUssRUFBbUI7SUFDcEgsTUFBTUMsVUFBVVAsY0FBY007SUFFOUIsTUFBTUUsYUFBdUI7UUFDM0I7UUFDQTtRQUNBO0tBQ0Q7SUFFRCxJQUFJO1FBQ0YsTUFBTUMsTUFBTSxNQUFNakIsTUFBTSxPQUFPZ0IsWUFBWTtZQUFDRSxVQUFVO1FBQU07UUFFNUQsTUFBTSxFQUFDQyxNQUFNLEVBQUMsR0FBR0Y7UUFDakIsTUFBTUcsVUFBb0JELE9BQU9FLEtBQUssQ0FBQyxlQUFlQyxNQUFNLENBQUMsQ0FBQ0MsT0FBUyxDQUFDLENBQUNBO1FBQ3pFLE1BQU1D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
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -27,16 +27,16 @@ export interface Spinner {
27
27
  export declare const createSpinner: (quiet?: boolean) => Spinner;
28
28
  export declare const createProgressBar: (percentage: number) => string;
29
29
  export declare const handleWebpackProgress: (output: string, spinner: Spinner, quiet: boolean, emoji: string, action: string) => void;
30
- export declare const copyFiles: (files: string[], typeName: string, spinner: any, config: LexConfigType) => Promise<void>;
31
- export declare const copyConfiguredFiles: (spinner: any, config: LexConfigType, quiet: boolean) => Promise<void>;
30
+ export declare const copyFiles: (files: string[], typeName: string, spinner: Spinner, config: LexConfigType) => Promise<void>;
31
+ export declare const copyConfiguredFiles: (spinner: Spinner, config: LexConfigType, quiet: boolean) => Promise<void>;
32
32
  export declare const copyFileSync: (source: string, target: string) => void;
33
33
  export declare const copyFolderRecursiveSync: (source: string, target: string) => void;
34
34
  export declare const getPackageJson: (packagePath?: string) => any;
35
35
  export declare const getFilesByExt: (ext: string, config: LexConfigType) => string[];
36
- export declare const removeConflictModules: (moduleList: object) => object;
36
+ export declare const removeConflictModules: (moduleList: Record<string, unknown>) => Record<string, unknown>;
37
37
  export declare const removeFiles: (fileName: string, isRelative?: boolean) => Promise<unknown>;
38
38
  export declare const removeModules: () => Promise<unknown>;
39
- export declare const setPackageJson: (json: any, packagePath?: string) => void;
39
+ export declare const setPackageJson: (json: unknown, packagePath?: string) => void;
40
40
  export interface LinkedModuleType {
41
41
  readonly name: string;
42
42
  readonly path: string;
package/lib/utils/app.js CHANGED
@@ -12,13 +12,13 @@ import { rimrafSync } from 'rimraf';
12
12
  import { log } from './log.js';
13
13
  export const getFilenames = (props)=>{
14
14
  const { callback, cliName, name, quiet, type, useTypescript } = props;
15
- let nameCaps;
15
+ let nameCaps = '';
16
16
  const itemTypes = [
17
17
  'stores',
18
18
  'views'
19
19
  ];
20
20
  if (!name) {
21
- if (itemTypes.includes(type)) {
21
+ if (type && itemTypes.includes(type)) {
22
22
  log(`\n${cliName} Error: ${type} name is required. Please use 'lex -h' for options.`, 'error', quiet);
23
23
  callback?.(1);
24
24
  return undefined;
@@ -88,7 +88,7 @@ export const copyFiles = async (files, typeName, spinner, config)=>{
88
88
  const { outputFullPath, sourceFullPath } = config;
89
89
  const items = files.map((fileName)=>({
90
90
  from: fileName,
91
- to: pathResolve(outputFullPath, pathRelative(sourceFullPath, fileName))
91
+ to: pathResolve(outputFullPath || process.cwd(), pathRelative(sourceFullPath || process.cwd(), fileName))
92
92
  }));
93
93
  try {
94
94
  spinner.start(`Copying ${typeName} files...`);
@@ -108,7 +108,7 @@ export const copyFiles = async (files, typeName, spinner, config)=>{
108
108
  } catch (error) {
109
109
  spinner.fail(`Copying of ${typeName} files failed.`);
110
110
  log(`Error: ${error.message}`, 'error');
111
- log(error, 'error');
111
+ log(String(error), 'error');
112
112
  }
113
113
  };
114
114
  export const copyConfiguredFiles = async (spinner, config, quiet)=>{
@@ -135,7 +135,7 @@ export const copyConfiguredFiles = async (spinner, config, quiet)=>{
135
135
  }
136
136
  const copyPromises = matchingFiles.map((sourceFile)=>{
137
137
  const relativePath = pathRelative(baseDir, sourceFile);
138
- const destPath = pathResolve(outputFullPath, relativePath);
138
+ const destPath = pathResolve(outputFullPath || process.cwd(), relativePath);
139
139
  const destDir = pathResolve(destPath, '..');
140
140
  mkdirSync(destDir, {
141
141
  recursive: true
@@ -298,4 +298,4 @@ export const updateTemplateName = (filePath, replace, replaceCaps)=>{
298
298
  writeFileSync(filePath, data, 'utf8');
299
299
  };
300
300
 
301
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hcHAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IGJveGVuIGZyb20gJ2JveGVuJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQge2NvcHlGaWxlLCBleGlzdHNTeW5jLCBsc3RhdFN5bmMsIG1rZGlyU3luYywgcmVhZGRpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCB7YmFzZW5hbWUgYXMgcGF0aEJhc2VuYW1lLCBqb2luIGFzIHBhdGhKb2luLCByZWxhdGl2ZSBhcyBwYXRoUmVsYXRpdmUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtyaW1yYWZTeW5jfSBmcm9tICdyaW1yYWYnO1xuXG5pbXBvcnQge2xvZ30gZnJvbSAnLi9sb2cuanMnO1xuXG5pbXBvcnQgdHlwZSB7TGV4Q29uZmlnVHlwZX0gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEZpbGVuYW1lc1Byb3BzIHtcbiAgcmVhZG9ubHkgY2FsbGJhY2s/OiAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlVHlwZXNjcmlwdD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBGaWxlbmFtZXNSZXN1bHQge1xuICBuYW1lQ2Fwczogc3RyaW5nO1xuICB0ZW1wbGF0ZUV4dDogc3RyaW5nO1xuICB0ZW1wbGF0ZVBhdGg6IHN0cmluZztcbiAgdGVtcGxhdGVSZWFjdDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RmlsZW5hbWVzID0gKHByb3BzOiBHZXRGaWxlbmFtZXNQcm9wcyk6IEZpbGVuYW1lc1Jlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHtjYWxsYmFjaywgY2xpTmFtZSwgbmFtZSwgcXVpZXQsIHR5cGUsIHVzZVR5cGVzY3JpcHR9ID0gcHJvcHM7XG5cbiAgbGV0IG5hbWVDYXBzOiBzdHJpbmc7XG4gIGNvbnN0IGl0ZW1UeXBlczogc3RyaW5nW10gPSBbJ3N0b3JlcycsICd2aWV3cyddO1xuXG4gIGlmKCFuYW1lKSB7XG4gICAgaWYoaXRlbVR5cGVzLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7dHlwZX0gbmFtZSBpcyByZXF1aXJlZC4gUGxlYXNlIHVzZSAnbGV4IC1oJyBmb3Igb3B0aW9ucy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaz8uKDEpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbmFtZUNhcHMgPSBgJHtuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7bmFtZS5zdWJzdHIoMSl9YDtcbiAgfVxuXG4gIGxvZyhgJHtjbGlOYW1lfSBhZGRpbmcgJHtuYW1lfSAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgbGV0IHRlbXBsYXRlUGF0aDogc3RyaW5nO1xuICBsZXQgdGVtcGxhdGVFeHQ6IHN0cmluZztcbiAgbGV0IHRlbXBsYXRlUmVhY3Q6IHN0cmluZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy90eXBlc2NyaXB0JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcudHMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLnRzeCc7XG4gIH0gZWxzZSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy9mbG93JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcuanMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLmpzJztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZUNhcHMsXG4gICAgdGVtcGxhdGVFeHQsXG4gICAgdGVtcGxhdGVQYXRoLFxuICAgIHRlbXBsYXRlUmVhY3RcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Bpbm5lciB7XG4gIGZhaWw6ICh0ZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xuICBzdGFydDogKHRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHN1Y2NlZWQ6ICh0ZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xuICB0ZXh0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU3Bpbm5lciA9IChxdWlldCA9IGZhbHNlKTogU3Bpbm5lciA9PiB7XG4gIGlmKHF1aWV0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZhaWw6ICgpID0+IHt9LFxuICAgICAgc3RhcnQ6ICgpID0+IHt9LFxuICAgICAgc3VjY2VlZDogKCkgPT4ge31cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG9yYSh7Y29sb3I6ICd5ZWxsb3cnfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUHJvZ3Jlc3NCYXIgPSAocGVyY2VudGFnZTogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgd2lkdGggPSAyMDtcbiAgY29uc3QgZmlsbGVkID0gTWF0aC5yb3VuZCgocGVyY2VudGFnZSAvIDEwMCkgKiB3aWR0aCk7XG4gIGNvbnN0IGVtcHR5ID0gd2lkdGggLSBmaWxsZWQ7XG5cbiAgY29uc3QgZmlsbGVkQmFyID0gY2hhbGsuY3lhbign4paIJykucmVwZWF0KGZpbGxlZCk7XG4gIGNvbnN0IGVtcHR5QmFyID0gY2hhbGsuZ3JheSgn4paRJykucmVwZWF0KGVtcHR5KTtcblxuICByZXR1cm4gZmlsbGVkQmFyICsgZW1wdHlCYXI7XG59O1xuXG5leHBvcnQgY29uc3QgaGFuZGxlV2VicGFja1Byb2dyZXNzID0gKFxuICBvdXRwdXQ6IHN0cmluZyxcbiAgc3Bpbm5lcjogU3Bpbm5lcixcbiAgcXVpZXQ6IGJvb2xlYW4sXG4gIGVtb2ppOiBzdHJpbmcsXG4gIGFjdGlvbjogc3RyaW5nXG4pOiB2b2lkID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBwcm9ncmVzc01hdGNoID0gb3V0cHV0Lm1hdGNoKC9cXFt3ZWJwYWNrXFwuUHJvZ3Jlc3NcXF0gKFxcZCspJS8pO1xuICBpZihwcm9ncmVzc01hdGNoKSB7XG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBwYXJzZUludChwcm9ncmVzc01hdGNoWzFdKTtcbiAgICBjb25zdCBwcm9ncmVzc0JhciA9IGNyZWF0ZVByb2dyZXNzQmFyKHByb2dyZXNzKTtcbiAgICBzcGlubmVyLnRleHQgPSBgJHtlbW9qaX0gJHthY3Rpb259OiAke3Byb2dyZXNzQmFyfSAke3Byb2dyZXNzfSVgO1xuICB9IGVsc2UgaWYob3V0cHV0LmluY2x1ZGVzKCdbd2VicGFjay5Qcm9ncmVzc10nKSkge1xuICAgIGNvbnN0IGdlbmVyYWxQcm9ncmVzc01hdGNoID0gb3V0cHV0Lm1hdGNoKC8oXFxkKyklLyk7XG4gICAgaWYoZ2VuZXJhbFByb2dyZXNzTWF0Y2gpIHtcbiAgICAgIGNvbnN0IHByb2dyZXNzID0gcGFyc2VJbnQoZ2VuZXJhbFByb2dyZXNzTWF0Y2hbMV0pO1xuICAgICAgY29uc3QgcHJvZ3Jlc3NCYXIgPSBjcmVhdGVQcm9ncmVzc0Jhcihwcm9ncmVzcyk7XG4gICAgICBzcGlubmVyLnRleHQgPSBgJHtlbW9qaX0gJHthY3Rpb259OiAke3Byb2dyZXNzQmFyfSAke3Byb2dyZXNzfSVgO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlcyA9IGFzeW5jIChmaWxlczogc3RyaW5nW10sIHR5cGVOYW1lOiBzdHJpbmcsIHNwaW5uZXIsIGNvbmZpZzogTGV4Q29uZmlnVHlwZSkgPT4ge1xuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHNvdXJjZUZ1bGxQYXRofSA9IGNvbmZpZztcbiAgY29uc3QgaXRlbXMgPSBmaWxlcy5tYXAoKGZpbGVOYW1lOiBzdHJpbmcpID0+ICh7XG4gICAgZnJvbTogZmlsZU5hbWUsXG4gICAgdG86IHBhdGhSZXNvbHZlKG91dHB1dEZ1bGxQYXRoLCBwYXRoUmVsYXRpdmUoc291cmNlRnVsbFBhdGgsIGZpbGVOYW1lKSlcbiAgfSkpO1xuXG4gIHRyeSB7XG4gICAgc3Bpbm5lci5zdGFydChgQ29weWluZyAke3R5cGVOYW1lfSBmaWxlcy4uLmApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGl0ZW1zLm1hcCgoe2Zyb20sIHRvfSkgPT4gbmV3IFByb21pc2UoXG4gICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIG1rZGlyU3luYyhwYXRoUmVzb2x2ZSh0bywgJy4uJyksIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuIGNvcHlGaWxlKGZyb20sIHRvLCAoY29weUVycm9yKSA9PiB7XG4gICAgICAgICAgaWYoY29weUVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICkpKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBjb3BpZWQgJHtmaWxlcy5sZW5ndGh9ICR7dHlwZU5hbWV9IGZpbGVzIWApO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgc3Bpbm5lci5mYWlsKGBDb3B5aW5nIG9mICR7dHlwZU5hbWV9IGZpbGVzIGZhaWxlZC5gKTtcbiAgICBsb2coYEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJyk7XG4gICAgbG9nKGVycm9yLCAnZXJyb3InKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlDb25maWd1cmVkRmlsZXMgPSBhc3luYyAoc3Bpbm5lciwgY29uZmlnOiBMZXhDb25maWdUeXBlLCBxdWlldDogYm9vbGVhbikgPT4ge1xuICBjb25zdCB7Y29weUZpbGVzOiBjb3B5RmlsZXNDb25maWcsIG91dHB1dEZ1bGxQYXRoLCBzb3VyY2VGdWxsUGF0aCwgc291cmNlUGF0aH0gPSBjb25maWc7XG4gIGlmKCFjb3B5RmlsZXNDb25maWcgfHwgY29weUZpbGVzQ29uZmlnLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgc3Bpbm5lci5zdGFydCgnQ29weWluZyBjb25maWd1cmVkIGZpbGVzLi4uJyk7XG4gICAgbGV0IHRvdGFsQ29waWVkID0gMDtcblxuICAgIGNvbnN0IGJhc2VEaXIgPSBzb3VyY2VGdWxsUGF0aCB8fCAoc291cmNlUGF0aCA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIHNvdXJjZVBhdGgpIDogcHJvY2Vzcy5jd2QoKSk7XG4gICAgY29uc3QgYWxsQ29weVByb21pc2VzOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcblxuICAgIGZvcihjb25zdCBwYXR0ZXJuIG9mIGNvcHlGaWxlc0NvbmZpZykge1xuICAgICAgY29uc3QgcmVzb2x2ZWRQYXR0ZXJuID0gcGF0aFJlc29sdmUoYmFzZURpciwgcGF0dGVybik7XG4gICAgICBjb25zdCBtYXRjaGluZ0ZpbGVzID0gZ2xvYlN5bmMocmVzb2x2ZWRQYXR0ZXJuLCB7XG4gICAgICAgIGFic29sdXRlOiB0cnVlLFxuICAgICAgICBub2RpcjogdHJ1ZVxuICAgICAgfSk7XG5cbiAgICAgIGlmKG1hdGNoaW5nRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGxvZyhgV2FybmluZzogTm8gZmlsZXMgZm91bmQgbWF0Y2hpbmcgcGF0dGVybjogJHtwYXR0ZXJufWAsICd3YXJuJywgcXVpZXQpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb3B5UHJvbWlzZXMgPSBtYXRjaGluZ0ZpbGVzLm1hcCgoc291cmNlRmlsZSkgPT4ge1xuICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoUmVsYXRpdmUoYmFzZURpciwgc291cmNlRmlsZSk7XG4gICAgICAgIGNvbnN0IGRlc3RQYXRoID0gcGF0aFJlc29sdmUob3V0cHV0RnVsbFBhdGgsIHJlbGF0aXZlUGF0aCk7XG4gICAgICAgIGNvbnN0IGRlc3REaXIgPSBwYXRoUmVzb2x2ZShkZXN0UGF0aCwgJy4uJyk7XG4gICAgICAgIG1rZGlyU3luYyhkZXN0RGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb3B5RmlsZShzb3VyY2VGaWxlLCBkZXN0UGF0aCwgKGNvcHlFcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYoY29weUVycm9yKSB7XG4gICAgICAgICAgICAgIHJlamVjdChjb3B5RXJyb3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgYWxsQ29weVByb21pc2VzLnB1c2goLi4uY29weVByb21pc2VzKTtcbiAgICAgIHRvdGFsQ29waWVkICs9IG1hdGNoaW5nRmlsZXMubGVuZ3RoO1xuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKGFsbENvcHlQcm9taXNlcyk7XG5cbiAgICBpZih0b3RhbENvcGllZCA+IDApIHtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IGNvcGllZCAke3RvdGFsQ29waWVkfSBjb25maWd1cmVkIGZpbGVzIWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ05vIGNvbmZpZ3VyZWQgZmlsZXMgdG8gY29weScpO1xuICAgIH1cbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGNvcHkgY29uZmlndXJlZCBmaWxlcycpO1xuICAgIGxvZyhgRXJyb3IgY29weWluZyBjb25maWd1cmVkIGZpbGVzOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZpbGVTeW5jID0gKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZykgPT4ge1xuICBsZXQgdGFyZ2V0RmlsZTogc3RyaW5nID0gdGFyZ2V0O1xuXG4gIGlmKGV4aXN0c1N5bmModGFyZ2V0KSkge1xuICAgIGlmKGxzdGF0U3luYyh0YXJnZXQpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIHRhcmdldEZpbGUgPSBwYXRoSm9pbih0YXJnZXQsIHBhdGhCYXNlbmFtZShzb3VyY2UpKTtcbiAgICB9XG4gIH1cblxuICB3cml0ZUZpbGVTeW5jKHRhcmdldEZpbGUsIHJlYWRGaWxlU3luYyhzb3VyY2UpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyA9IChzb3VyY2U6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgbGV0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0IHRhcmdldEZvbGRlcjogc3RyaW5nID0gcGF0aEpvaW4odGFyZ2V0LCBwYXRoQmFzZW5hbWUoc291cmNlKSk7XG5cbiAgaWYoIWV4aXN0c1N5bmModGFyZ2V0Rm9sZGVyKSkge1xuICAgIG1rZGlyU3luYyh0YXJnZXRGb2xkZXIpO1xuICB9XG5cbiAgaWYobHN0YXRTeW5jKHNvdXJjZSkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVzID0gcmVhZGRpclN5bmMoc291cmNlKTtcbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGN1clNvdXJjZTogc3RyaW5nID0gcGF0aEpvaW4oc291cmNlLCBmaWxlKTtcblxuICAgICAgaWYobHN0YXRTeW5jKGN1clNvdXJjZSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhjdXJTb3VyY2UsIHRhcmdldEZvbGRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3B5RmlsZVN5bmMoY3VyU291cmNlLCB0YXJnZXRGb2xkZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGFja2FnZUpzb24gPSAocGFja2FnZVBhdGg/OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZm9ybWF0UGF0aDogc3RyaW5nID0gcGFja2FnZVBhdGggfHwgYCR7cHJvY2Vzcy5jd2QoKX0vcGFja2FnZS5qc29uYDtcbiAgY29uc3QgcGFja2FnZURhdGE6IHN0cmluZyA9IHJlYWRGaWxlU3luYyhmb3JtYXRQYXRoKS50b1N0cmluZygpO1xuXG4gIHJldHVybiBKU09OLnBhcnNlKHBhY2thZ2VEYXRhKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlc0J5RXh0ID0gKGV4dDogc3RyaW5nLCBjb25maWc6IExleENvbmZpZ1R5cGUpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IHtzb3VyY2VGdWxsUGF0aH0gPSBjb25maWc7XG4gIHJldHVybiBnbG9iU3luYyhgKiovKioke2V4dH1gLCB7XG4gICAgYWJzb2x1dGU6IHRydWUsXG4gICAgY3dkOiBzb3VyY2VGdWxsUGF0aCxcbiAgICBub2RpcjogdHJ1ZVxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVDb25mbGljdE1vZHVsZXMgPSAobW9kdWxlTGlzdDogb2JqZWN0KSA9PiB7XG4gIGNvbnN0IHVwZGF0ZWRMaXN0OiBvYmplY3QgPSB7Li4ubW9kdWxlTGlzdH07XG5cbiAgT2JqZWN0LmtleXModXBkYXRlZExpc3QpLmZvckVhY2goKG1vZHVsZU5hbWU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlZ2V4OiBSZWdFeHAgPSBuZXcgUmVnRXhwKCdeKD8hQHR5cGVzLykuKj8odml0ZXN0fHdlYnBhY2spLiokJywgJ2dpJyk7XG4gICAgaWYocmVnZXgudGVzdChtb2R1bGVOYW1lKSkge1xuICAgICAgZGVsZXRlIHVwZGF0ZWRMaXN0W21vZHVsZU5hbWVdO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHVwZGF0ZWRMaXN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUZpbGVzID0gKGZpbGVOYW1lOiBzdHJpbmcsIGlzUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gaXNSZWxhdGl2ZSA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGZpbGVOYW1lKSA6IGZpbGVOYW1lO1xuXG4gIHRyeSB7XG4gICAgcmltcmFmU3luYyhmaWxlUGF0aCk7XG4gICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVNb2R1bGVzID0gKCkgPT4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICB0cnkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL25vZGVfbW9kdWxlcycsIHRydWUpO1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL3lhcm4ubG9jaycsIHRydWUpO1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL3BhY2thZ2UtbG9jay5qc29uJywgdHJ1ZSk7XG5cbiAgICByZXNvbHZlKG51bGwpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBzZXRQYWNrYWdlSnNvbiA9IChqc29uLCBwYWNrYWdlUGF0aD86IHN0cmluZykgPT4ge1xuICBpZighanNvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG5cbiAgd3JpdGVGaWxlU3luYyhmb3JtYXRQYXRoLCBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKSk7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZE1vZHVsZVR5cGUge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGxpbmtlZE1vZHVsZXMgPSAoc3RhcnRQYXRoPzogc3RyaW5nKTogTGlua2VkTW9kdWxlVHlwZVtdID0+IHtcbiAgY29uc3Qgd29ya2luZ1BhdGg6IHN0cmluZyA9IHN0YXJ0UGF0aCB8fCBwcm9jZXNzLmN3ZCgpO1xuICBsZXQgbW9kdWxlUGF0aDogc3RyaW5nO1xuICBsZXQgcHJlZml4OiBzdHJpbmc7XG5cbiAgaWYod29ya2luZ1BhdGguaW5jbHVkZXMoJ0AnKSkge1xuICAgIHByZWZpeCA9IGBAJHt3b3JraW5nUGF0aC5zcGxpdCgnQCcpLnBvcCgpfWA7XG4gICAgbW9kdWxlUGF0aCA9IHdvcmtpbmdQYXRoO1xuICB9IGVsc2Uge1xuICAgIG1vZHVsZVBhdGggPSBwYXRoSm9pbih3b3JraW5nUGF0aCwgJ25vZGVfbW9kdWxlcycpO1xuICB9XG5cbiAgY29uc3QgZm91bmRQYXRoczogc3RyaW5nW10gPSBnbG9iU3luYygnKicsIHtcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICBjd2Q6IG1vZHVsZVBhdGgsXG4gICAgbm9kaXI6IGZhbHNlXG4gIH0pO1xuXG4gIHJldHVybiBmb3VuZFBhdGhzLnJlZHVjZSgobGlzdDogTGlua2VkTW9kdWxlVHlwZVtdLCBmb3VuZFBhdGg6IHN0cmluZykgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdGF0cyA9IGxzdGF0U3luYyhmb3VuZFBhdGgpO1xuXG4gICAgICBpZihzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGNvbnN0IGRlZXBMaXN0OiBMaW5rZWRNb2R1bGVUeXBlW10gPSBsaW5rZWRNb2R1bGVzKGZvdW5kUGF0aCk7XG4gICAgICAgIGxpc3QucHVzaCguLi5kZWVwTGlzdCk7XG4gICAgICB9IGVsc2UgaWYoc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgICAgICBjb25zdCBtb2R1bGVOYW1lczogc3RyaW5nW10gPSAoW3ByZWZpeCwgcGF0aEJhc2VuYW1lKGZvdW5kUGF0aCldKS5maWx0ZXIoKGl0ZW06IHN0cmluZykgPT4gIWlzRW1wdHkoaXRlbSkpO1xuICAgICAgICBsaXN0LnB1c2goe25hbWU6IGAke21vZHVsZU5hbWVzLmpvaW4oJy8nKX1gLCBwYXRoOiBmb3VuZFBhdGh9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cbiAgfSwgW10pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrTGlua2VkTW9kdWxlcyA9ICgpID0+IHtcbiAgY29uc3QgbGlua2VkID0gbGlua2VkTW9kdWxlcygpO1xuXG4gIGlmKGxpbmtlZC5sZW5ndGgpIHtcbiAgICBjb25zdCBtc2dNb2R1bGU6IHN0cmluZyA9IGxpbmtlZC5sZW5ndGggPiAxID8gJ01vZHVsZXMnIDogJ01vZHVsZSc7XG4gICAgY29uc3QgbGlua2VkTXNnOiBzdHJpbmcgPSBsaW5rZWQucmVkdWNlKFxuICAgICAgKG1zZzogc3RyaW5nLCBsaW5rZWRNb2R1bGU6IExpbmtlZE1vZHVsZVR5cGUpID0+XG4gICAgICAgIGAke21zZ31cXG4gKiAke2xpbmtlZE1vZHVsZS5uYW1lfWAsXG4gICAgICBgTGlua2VkICR7bXNnTW9kdWxlfTpgXG4gICAgKTtcblxuICAgIGxvZyhib3hlbihsaW5rZWRNc2csIHtkaW1Cb3JkZXI6IHRydWUsIHBhZGRpbmc6IDF9KSwgJ3dhcm4nKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRlbXBsYXRlTmFtZSA9IChmaWxlUGF0aDogc3RyaW5nLCByZXBsYWNlOiBzdHJpbmcsIHJlcGxhY2VDYXBzOiBzdHJpbmcpID0+IHtcbiAgbGV0IGRhdGE6IHN0cmluZyA9IHJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgZGF0YSA9IGRhdGEucmVwbGFjZSgvc2FtcGxlL2csIHJlcGxhY2UpO1xuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9TYW1wbGUvZywgcmVwbGFjZUNhcHMpO1xuICB3cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBkYXRhLCAndXRmOCcpO1xufTtcbiJdLCJuYW1lcyI6WyJib3hlbiIsImNoYWxrIiwiY29weUZpbGUiLCJleGlzdHNTeW5jIiwibHN0YXRTeW5jIiwibWtkaXJTeW5jIiwicmVhZGRpclN5bmMiLCJyZWFkRmlsZVN5bmMiLCJ3cml0ZUZpbGVTeW5jIiwic3luYyIsImdsb2JTeW5jIiwiaXNFbXB0eSIsIm9yYSIsImJhc2VuYW1lIiwicGF0aEJhc2VuYW1lIiwiam9pbiIsInBhdGhKb2luIiwicmVsYXRpdmUiLCJwYXRoUmVsYXRpdmUiLCJyZXNvbHZlIiwicGF0aFJlc29sdmUiLCJyaW1yYWZTeW5jIiwibG9nIiwiZ2V0RmlsZW5hbWVzIiwicHJvcHMiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJuYW1lIiwicXVpZXQiLCJ0eXBlIiwidXNlVHlwZXNjcmlwdCIsIm5hbWVDYXBzIiwiaXRlbVR5cGVzIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInN1YnN0ciIsInRlbXBsYXRlUGF0aCIsInRlbXBsYXRlRXh0IiwidGVtcGxhdGVSZWFjdCIsImNyZWF0ZVNwaW5uZXIiLCJmYWlsIiwic3RhcnQiLCJzdWNjZWVkIiwiY29sb3IiLCJjcmVhdGVQcm9ncmVzc0JhciIsInBlcmNlbnRhZ2UiLCJ3aWR0aCIsImZpbGxlZCIsIk1hdGgiLCJyb3VuZCIsImVtcHR5IiwiZmlsbGVkQmFyIiwiY3lhbiIsInJlcGVhdCIsImVtcHR5QmFyIiwiZ3JheSIsImhhbmRsZVdlYnBhY2tQcm9ncmVzcyIsIm91dHB1dCIsInNwaW5uZXIiLCJlbW9qaSIsImFjdGlvbiIsInByb2dyZXNzTWF0Y2giLCJtYXRjaCIsInByb2dyZXNzIiwicGFyc2VJbnQiLCJwcm9ncmVzc0JhciIsInRleHQiLCJnZW5lcmFsUHJvZ3Jlc3NNYXRjaCIsImNvcHlGaWxlcyIsImZpbGVzIiwidHlwZU5hbWUiLCJjb25maWciLCJvdXRwdXRGdWxsUGF0aCIsInNvdXJjZUZ1bGxQYXRoIiwiaXRlbXMiLCJtYXAiLCJmaWxlTmFtZSIsImZyb20iLCJ0byIsIlByb21pc2UiLCJhbGwiLCJyZWplY3QiLCJyZWN1cnNpdmUiLCJjb3B5RXJyb3IiLCJsZW5ndGgiLCJlcnJvciIsIm1lc3NhZ2UiLCJjb3B5Q29uZmlndXJlZEZpbGVzIiwiY29weUZpbGVzQ29uZmlnIiwic291cmNlUGF0aCIsInRvdGFsQ29waWVkIiwiYmFzZURpciIsInByb2Nlc3MiLCJjd2QiLCJhbGxDb3B5UHJvbWlzZXMiLCJwYXR0ZXJuIiwicmVzb2x2ZWRQYXR0ZXJuIiwibWF0Y2hpbmdGaWxlcyIsImFic29sdXRlIiwibm9kaXIiLCJjb3B5UHJvbWlzZXMiLCJzb3VyY2VGaWxlIiwicmVsYXRpdmVQYXRoIiwiZGVzdFBhdGgiLCJkZXN0RGlyIiwicHVzaCIsImNvcHlGaWxlU3luYyIsInNvdXJjZSIsInRhcmdldCIsInRhcmdldEZpbGUiLCJpc0RpcmVjdG9yeSIsImNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jIiwidGFyZ2V0Rm9sZGVyIiwiZm9yRWFjaCIsImZpbGUiLCJjdXJTb3VyY2UiLCJnZXRQYWNrYWdlSnNvbiIsInBhY2thZ2VQYXRoIiwiZm9ybWF0UGF0aCIsInBhY2thZ2VEYXRhIiwidG9TdHJpbmciLCJKU09OIiwicGFyc2UiLCJnZXRGaWxlc0J5RXh0IiwiZXh0IiwicmVtb3ZlQ29uZmxpY3RNb2R1bGVzIiwibW9kdWxlTGlzdCIsInVwZGF0ZWRMaXN0IiwiT2JqZWN0Iiwia2V5cyIsIm1vZHVsZU5hbWUiLCJyZWdleCIsIlJlZ0V4cCIsInRlc3QiLCJyZW1vdmVGaWxlcyIsImlzUmVsYXRpdmUiLCJmaWxlUGF0aCIsInJlbW92ZU1vZHVsZXMiLCJzZXRQYWNrYWdlSnNvbiIsImpzb24iLCJzdHJpbmdpZnkiLCJsaW5rZWRNb2R1bGVzIiwic3RhcnRQYXRoIiwid29ya2luZ1BhdGgiLCJtb2R1bGVQYXRoIiwicHJlZml4Iiwic3BsaXQiLCJwb3AiLCJmb3VuZFBhdGhzIiwicmVkdWNlIiwibGlzdCIsImZvdW5kUGF0aCIsInN0YXRzIiwiZGVlcExpc3QiLCJpc1N5bWJvbGljTGluayIsIm1vZHVsZU5hbWVzIiwiZmlsdGVyIiwiaXRlbSIsInBhdGgiLCJjaGVja0xpbmtlZE1vZHVsZXMiLCJsaW5rZWQiLCJtc2dNb2R1bGUiLCJsaW5rZWRNc2ciLCJtc2ciLCJsaW5rZWRNb2R1bGUiLCJkaW1Cb3JkZXIiLCJwYWRkaW5nIiwidXBkYXRlVGVtcGxhdGVOYW1lIiwicmVwbGFjZSIsInJlcGxhY2VDYXBzIiwiZGF0YSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQsT0FBT0EsV0FBVyxRQUFRO0FBQzFCLE9BQU9DLFdBQVcsUUFBUTtBQUMxQixTQUFRQyxRQUFRLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUVDLFdBQVcsRUFBRUMsWUFBWSxFQUFFQyxhQUFhLFFBQU8sS0FBSztBQUN4RyxTQUFRQyxRQUFRQyxRQUFRLFFBQU8sT0FBTztBQUN0QyxPQUFPQyxhQUFhLG9CQUFvQjtBQUN4QyxPQUFPQyxTQUFTLE1BQU07QUFDdEIsU0FBUUMsWUFBWUMsWUFB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
301
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hcHAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cblxuaW1wb3J0IGJveGVuIGZyb20gJ2JveGVuJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQge2NvcHlGaWxlLCBleGlzdHNTeW5jLCBsc3RhdFN5bmMsIG1rZGlyU3luYywgcmVhZGRpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCB7YmFzZW5hbWUgYXMgcGF0aEJhc2VuYW1lLCBqb2luIGFzIHBhdGhKb2luLCByZWxhdGl2ZSBhcyBwYXRoUmVsYXRpdmUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtyaW1yYWZTeW5jfSBmcm9tICdyaW1yYWYnO1xuXG5pbXBvcnQge2xvZ30gZnJvbSAnLi9sb2cuanMnO1xuXG5pbXBvcnQgdHlwZSB7TGV4Q29uZmlnVHlwZX0gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcblxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEZpbGVuYW1lc1Byb3BzIHtcbiAgcmVhZG9ubHkgY2FsbGJhY2s/OiAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdHlwZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlVHlwZXNjcmlwdD86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBGaWxlbmFtZXNSZXN1bHQge1xuICBuYW1lQ2Fwczogc3RyaW5nO1xuICB0ZW1wbGF0ZUV4dDogc3RyaW5nO1xuICB0ZW1wbGF0ZVBhdGg6IHN0cmluZztcbiAgdGVtcGxhdGVSZWFjdDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RmlsZW5hbWVzID0gKHByb3BzOiBHZXRGaWxlbmFtZXNQcm9wcyk6IEZpbGVuYW1lc1Jlc3VsdCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHtjYWxsYmFjaywgY2xpTmFtZSwgbmFtZSwgcXVpZXQsIHR5cGUsIHVzZVR5cGVzY3JpcHR9ID0gcHJvcHM7XG5cbiAgbGV0IG5hbWVDYXBzID0gJyc7XG4gIGNvbnN0IGl0ZW1UeXBlczogc3RyaW5nW10gPSBbJ3N0b3JlcycsICd2aWV3cyddO1xuXG4gIGlmKCFuYW1lKSB7XG4gICAgaWYodHlwZSAmJiBpdGVtVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHt0eXBlfSBuYW1lIGlzIHJlcXVpcmVkLiBQbGVhc2UgdXNlICdsZXggLWgnIGZvciBvcHRpb25zLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrPy4oMSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBuYW1lQ2FwcyA9IGAke25hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtuYW1lLnN1YnN0cigxKX1gO1xuICB9XG5cbiAgbG9nKGAke2NsaU5hbWV9IGFkZGluZyAke25hbWV9ICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBsZXQgdGVtcGxhdGVQYXRoOiBzdHJpbmc7XG4gIGxldCB0ZW1wbGF0ZUV4dDogc3RyaW5nO1xuICBsZXQgdGVtcGxhdGVSZWFjdDogc3RyaW5nO1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICB0ZW1wbGF0ZVBhdGggPSAnLi4vLi4vdGVtcGxhdGVzL3R5cGVzY3JpcHQnO1xuICAgIHRlbXBsYXRlRXh0ID0gJy50cyc7XG4gICAgdGVtcGxhdGVSZWFjdCA9ICcudHN4JztcbiAgfSBlbHNlIHtcbiAgICB0ZW1wbGF0ZVBhdGggPSAnLi4vLi4vdGVtcGxhdGVzL2Zsb3cnO1xuICAgIHRlbXBsYXRlRXh0ID0gJy5qcyc7XG4gICAgdGVtcGxhdGVSZWFjdCA9ICcuanMnO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lQ2FwcyxcbiAgICB0ZW1wbGF0ZUV4dCxcbiAgICB0ZW1wbGF0ZVBhdGgsXG4gICAgdGVtcGxhdGVSZWFjdFxuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTcGlubmVyIHtcbiAgZmFpbDogKHRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHN0YXJ0OiAodGV4dD86IHN0cmluZykgPT4gdm9pZDtcbiAgc3VjY2VlZDogKHRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTcGlubmVyID0gKHF1aWV0ID0gZmFsc2UpOiBTcGlubmVyID0+IHtcbiAgaWYocXVpZXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZmFpbDogKCkgPT4ge30sXG4gICAgICBzdGFydDogKCkgPT4ge30sXG4gICAgICBzdWNjZWVkOiAoKSA9PiB7fVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gb3JhKHtjb2xvcjogJ3llbGxvdyd9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQcm9ncmVzc0JhciA9IChwZXJjZW50YWdlOiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB3aWR0aCA9IDIwO1xuICBjb25zdCBmaWxsZWQgPSBNYXRoLnJvdW5kKChwZXJjZW50YWdlIC8gMTAwKSAqIHdpZHRoKTtcbiAgY29uc3QgZW1wdHkgPSB3aWR0aCAtIGZpbGxlZDtcblxuICBjb25zdCBmaWxsZWRCYXIgPSBjaGFsay5jeWFuKCfilognKS5yZXBlYXQoZmlsbGVkKTtcbiAgY29uc3QgZW1wdHlCYXIgPSBjaGFsay5ncmF5KCfilpEnKS5yZXBlYXQoZW1wdHkpO1xuXG4gIHJldHVybiBmaWxsZWRCYXIgKyBlbXB0eUJhcjtcbn07XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVXZWJwYWNrUHJvZ3Jlc3MgPSAoXG4gIG91dHB1dDogc3RyaW5nLFxuICBzcGlubmVyOiBTcGlubmVyLFxuICBxdWlldDogYm9vbGVhbixcbiAgZW1vamk6IHN0cmluZyxcbiAgYWN0aW9uOiBzdHJpbmdcbik6IHZvaWQgPT4ge1xuICBpZihxdWlldCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHByb2dyZXNzTWF0Y2ggPSBvdXRwdXQubWF0Y2goL1xcW3dlYnBhY2tcXC5Qcm9ncmVzc1xcXSAoXFxkKyklLyk7XG4gIGlmKHByb2dyZXNzTWF0Y2gpIHtcbiAgICBjb25zdCBwcm9ncmVzcyA9IHBhcnNlSW50KHByb2dyZXNzTWF0Y2hbMV0pO1xuICAgIGNvbnN0IHByb2dyZXNzQmFyID0gY3JlYXRlUHJvZ3Jlc3NCYXIocHJvZ3Jlc3MpO1xuICAgIHNwaW5uZXIudGV4dCA9IGAke2Vtb2ppfSAke2FjdGlvbn06ICR7cHJvZ3Jlc3NCYXJ9ICR7cHJvZ3Jlc3N9JWA7XG4gIH0gZWxzZSBpZihvdXRwdXQuaW5jbHVkZXMoJ1t3ZWJwYWNrLlByb2dyZXNzXScpKSB7XG4gICAgY29uc3QgZ2VuZXJhbFByb2dyZXNzTWF0Y2ggPSBvdXRwdXQubWF0Y2goLyhcXGQrKSUvKTtcbiAgICBpZihnZW5lcmFsUHJvZ3Jlc3NNYXRjaCkge1xuICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBwYXJzZUludChnZW5lcmFsUHJvZ3Jlc3NNYXRjaFsxXSk7XG4gICAgICBjb25zdCBwcm9ncmVzc0JhciA9IGNyZWF0ZVByb2dyZXNzQmFyKHByb2dyZXNzKTtcbiAgICAgIHNwaW5uZXIudGV4dCA9IGAke2Vtb2ppfSAke2FjdGlvbn06ICR7cHJvZ3Jlc3NCYXJ9ICR7cHJvZ3Jlc3N9JWA7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZpbGVzID0gYXN5bmMgKGZpbGVzOiBzdHJpbmdbXSwgdHlwZU5hbWU6IHN0cmluZywgc3Bpbm5lcjogU3Bpbm5lciwgY29uZmlnOiBMZXhDb25maWdUeXBlKSA9PiB7XG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGh9ID0gY29uZmlnO1xuICBjb25zdCBpdGVtcyA9IGZpbGVzLm1hcCgoZmlsZU5hbWU6IHN0cmluZykgPT4gKHtcbiAgICBmcm9tOiBmaWxlTmFtZSxcbiAgICB0bzogcGF0aFJlc29sdmUob3V0cHV0RnVsbFBhdGggfHwgcHJvY2Vzcy5jd2QoKSwgcGF0aFJlbGF0aXZlKHNvdXJjZUZ1bGxQYXRoIHx8IHByb2Nlc3MuY3dkKCksIGZpbGVOYW1lKSlcbiAgfSkpO1xuXG4gIHRyeSB7XG4gICAgc3Bpbm5lci5zdGFydChgQ29weWluZyAke3R5cGVOYW1lfSBmaWxlcy4uLmApO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGl0ZW1zLm1hcCgoe2Zyb20sIHRvfSkgPT4gbmV3IFByb21pc2UoXG4gICAgICAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIG1rZGlyU3luYyhwYXRoUmVzb2x2ZSh0bywgJy4uJyksIHtyZWN1cnNpdmU6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuIGNvcHlGaWxlKGZyb20sIHRvLCAoY29weUVycm9yKSA9PiB7XG4gICAgICAgICAgaWYoY29weUVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICkpKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBjb3BpZWQgJHtmaWxlcy5sZW5ndGh9ICR7dHlwZU5hbWV9IGZpbGVzIWApO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgc3Bpbm5lci5mYWlsKGBDb3B5aW5nIG9mICR7dHlwZU5hbWV9IGZpbGVzIGZhaWxlZC5gKTtcbiAgICBsb2coYEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJyk7XG4gICAgbG9nKFN0cmluZyhlcnJvciksICdlcnJvcicpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29weUNvbmZpZ3VyZWRGaWxlcyA9IGFzeW5jIChzcGlubmVyOiBTcGlubmVyLCBjb25maWc6IExleENvbmZpZ1R5cGUsIHF1aWV0OiBib29sZWFuKSA9PiB7XG4gIGNvbnN0IHtjb3B5RmlsZXM6IGNvcHlGaWxlc0NvbmZpZywgb3V0cHV0RnVsbFBhdGgsIHNvdXJjZUZ1bGxQYXRoLCBzb3VyY2VQYXRofSA9IGNvbmZpZztcbiAgaWYoIWNvcHlGaWxlc0NvbmZpZyB8fCBjb3B5RmlsZXNDb25maWcubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBzcGlubmVyLnN0YXJ0KCdDb3B5aW5nIGNvbmZpZ3VyZWQgZmlsZXMuLi4nKTtcbiAgICBsZXQgdG90YWxDb3BpZWQgPSAwO1xuXG4gICAgY29uc3QgYmFzZURpciA9IHNvdXJjZUZ1bGxQYXRoIHx8IChzb3VyY2VQYXRoID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgc291cmNlUGF0aCkgOiBwcm9jZXNzLmN3ZCgpKTtcbiAgICBjb25zdCBhbGxDb3B5UHJvbWlzZXM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuXG4gICAgZm9yKGNvbnN0IHBhdHRlcm4gb2YgY29weUZpbGVzQ29uZmlnKSB7XG4gICAgICBjb25zdCByZXNvbHZlZFBhdHRlcm4gPSBwYXRoUmVzb2x2ZShiYXNlRGlyLCBwYXR0ZXJuKTtcbiAgICAgIGNvbnN0IG1hdGNoaW5nRmlsZXMgPSBnbG9iU3luYyhyZXNvbHZlZFBhdHRlcm4sIHtcbiAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgIG5vZGlyOiB0cnVlXG4gICAgICB9KTtcblxuICAgICAgaWYobWF0Y2hpbmdGaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgbG9nKGBXYXJuaW5nOiBObyBmaWxlcyBmb3VuZCBtYXRjaGluZyBwYXR0ZXJuOiAke3BhdHRlcm59YCwgJ3dhcm4nLCBxdWlldCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvcHlQcm9taXNlcyA9IG1hdGNoaW5nRmlsZXMubWFwKChzb3VyY2VGaWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGhSZWxhdGl2ZShiYXNlRGlyLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgY29uc3QgZGVzdFBhdGggPSBwYXRoUmVzb2x2ZShvdXRwdXRGdWxsUGF0aCB8fCBwcm9jZXNzLmN3ZCgpLCByZWxhdGl2ZVBhdGgpO1xuICAgICAgICBjb25zdCBkZXN0RGlyID0gcGF0aFJlc29sdmUoZGVzdFBhdGgsICcuLicpO1xuICAgICAgICBta2RpclN5bmMoZGVzdERpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgY29weUZpbGUoc291cmNlRmlsZSwgZGVzdFBhdGgsIChjb3B5RXJyb3IpID0+IHtcbiAgICAgICAgICAgIGlmKGNvcHlFcnJvcikge1xuICAgICAgICAgICAgICByZWplY3QoY29weUVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGFsbENvcHlQcm9taXNlcy5wdXNoKC4uLmNvcHlQcm9taXNlcyk7XG4gICAgICB0b3RhbENvcGllZCArPSBtYXRjaGluZ0ZpbGVzLmxlbmd0aDtcbiAgICB9XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChhbGxDb3B5UHJvbWlzZXMpO1xuXG4gICAgaWYodG90YWxDb3BpZWQgPiAwKSB7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBjb3BpZWQgJHt0b3RhbENvcGllZH0gY29uZmlndXJlZCBmaWxlcyFgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdObyBjb25maWd1cmVkIGZpbGVzIHRvIGNvcHknKTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjb3B5IGNvbmZpZ3VyZWQgZmlsZXMnKTtcbiAgICBsb2coYEVycm9yIGNvcHlpbmcgY29uZmlndXJlZCBmaWxlczogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlGaWxlU3luYyA9IChzb3VyY2U6IHN0cmluZywgdGFyZ2V0OiBzdHJpbmcpID0+IHtcbiAgbGV0IHRhcmdldEZpbGU6IHN0cmluZyA9IHRhcmdldDtcblxuICBpZihleGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICBpZihsc3RhdFN5bmModGFyZ2V0KS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0YXJnZXRGaWxlID0gcGF0aEpvaW4odGFyZ2V0LCBwYXRoQmFzZW5hbWUoc291cmNlKSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVGaWxlU3luYyh0YXJnZXRGaWxlLCByZWFkRmlsZVN5bmMoc291cmNlKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMgPSAoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGxldCBmaWxlczogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCB0YXJnZXRGb2xkZXI6IHN0cmluZyA9IHBhdGhKb2luKHRhcmdldCwgcGF0aEJhc2VuYW1lKHNvdXJjZSkpO1xuXG4gIGlmKCFleGlzdHNTeW5jKHRhcmdldEZvbGRlcikpIHtcbiAgICBta2RpclN5bmModGFyZ2V0Rm9sZGVyKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhzb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlcyA9IHJlYWRkaXJTeW5jKHNvdXJjZSk7XG4gICAgZmlsZXMuZm9yRWFjaCgoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBjdXJTb3VyY2U6IHN0cmluZyA9IHBhdGhKb2luKHNvdXJjZSwgZmlsZSk7XG5cbiAgICAgIGlmKGxzdGF0U3luYyhjdXJTb3VyY2UpLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMoY3VyU291cmNlLCB0YXJnZXRGb2xkZXIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29weUZpbGVTeW5jKGN1clNvdXJjZSwgdGFyZ2V0Rm9sZGVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFBhY2thZ2VKc29uID0gKHBhY2thZ2VQYXRoPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG4gIGNvbnN0IHBhY2thZ2VEYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoZm9ybWF0UGF0aCkudG9TdHJpbmcoKTtcblxuICByZXR1cm4gSlNPTi5wYXJzZShwYWNrYWdlRGF0YSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZXNCeUV4dCA9IChleHQ6IHN0cmluZywgY29uZmlnOiBMZXhDb25maWdUeXBlKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gY29uZmlnO1xuICByZXR1cm4gZ2xvYlN5bmMoYCoqLyoqJHtleHR9YCwge1xuICAgIGFic29sdXRlOiB0cnVlLFxuICAgIGN3ZDogc291cmNlRnVsbFBhdGgsXG4gICAgbm9kaXI6IHRydWVcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlQ29uZmxpY3RNb2R1bGVzID0gKG1vZHVsZUxpc3Q6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gIGNvbnN0IHVwZGF0ZWRMaXN0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHsuLi5tb2R1bGVMaXN0fTtcblxuICBPYmplY3Qua2V5cyh1cGRhdGVkTGlzdCkuZm9yRWFjaCgobW9kdWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVnZXg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ14oPyFAdHlwZXMvKS4qPyh2aXRlc3R8d2VicGFjaykuKiQnLCAnZ2knKTtcbiAgICBpZihyZWdleC50ZXN0KG1vZHVsZU5hbWUpKSB7XG4gICAgICBkZWxldGUgdXBkYXRlZExpc3RbbW9kdWxlTmFtZV07XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gdXBkYXRlZExpc3Q7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlRmlsZXMgPSAoZmlsZU5hbWU6IHN0cmluZywgaXNSZWxhdGl2ZTogYm9vbGVhbiA9IGZhbHNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIGNvbnN0IGZpbGVQYXRoOiBzdHJpbmcgPSBpc1JlbGF0aXZlID8gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZmlsZU5hbWUpIDogZmlsZU5hbWU7XG5cbiAgdHJ5IHtcbiAgICByaW1yYWZTeW5jKGZpbGVQYXRoKTtcbiAgICByZXR1cm4gcmVzb2x2ZShudWxsKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZU1vZHVsZXMgPSAoKSA9PiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIHRyeSB7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4vbm9kZV9tb2R1bGVzJywgdHJ1ZSk7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4veWFybi5sb2NrJywgdHJ1ZSk7XG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4vcGFja2FnZS1sb2NrLmpzb24nLCB0cnVlKTtcblxuICAgIHJlc29sdmUobnVsbCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZWplY3QoZXJyb3IpO1xuICB9XG59KTtcblxuZXhwb3J0IGNvbnN0IHNldFBhY2thZ2VKc29uID0gKGpzb246IHVua25vd24sIHBhY2thZ2VQYXRoPzogc3RyaW5nKSA9PiB7XG4gIGlmKCFqc29uKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0UGF0aDogc3RyaW5nID0gcGFja2FnZVBhdGggfHwgYCR7cHJvY2Vzcy5jd2QoKX0vcGFja2FnZS5qc29uYDtcblxuICB3cml0ZUZpbGVTeW5jKGZvcm1hdFBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2VkTW9kdWxlVHlwZSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgbGlua2VkTW9kdWxlcyA9IChzdGFydFBhdGg/OiBzdHJpbmcpOiBMaW5rZWRNb2R1bGVUeXBlW10gPT4ge1xuICBjb25zdCB3b3JraW5nUGF0aDogc3RyaW5nID0gc3RhcnRQYXRoIHx8IHByb2Nlc3MuY3dkKCk7XG4gIGxldCBtb2R1bGVQYXRoOiBzdHJpbmc7XG4gIGxldCBwcmVmaXg6IHN0cmluZztcblxuICBpZih3b3JraW5nUGF0aC5pbmNsdWRlcygnQCcpKSB7XG4gICAgcHJlZml4ID0gYEAke3dvcmtpbmdQYXRoLnNwbGl0KCdAJykucG9wKCl9YDtcbiAgICBtb2R1bGVQYXRoID0gd29ya2luZ1BhdGg7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlUGF0aCA9IHBhdGhKb2luKHdvcmtpbmdQYXRoLCAnbm9kZV9tb2R1bGVzJyk7XG4gIH1cblxuICBjb25zdCBmb3VuZFBhdGhzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKCcqJywge1xuICAgIGFic29sdXRlOiB0cnVlLFxuICAgIGN3ZDogbW9kdWxlUGF0aCxcbiAgICBub2RpcjogZmFsc2VcbiAgfSk7XG5cbiAgcmV0dXJuIGZvdW5kUGF0aHMucmVkdWNlKChsaXN0OiBMaW5rZWRNb2R1bGVUeXBlW10sIGZvdW5kUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gbHN0YXRTeW5jKGZvdW5kUGF0aCk7XG5cbiAgICAgIGlmKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29uc3QgZGVlcExpc3Q6IExpbmtlZE1vZHVsZVR5cGVbXSA9IGxpbmtlZE1vZHVsZXMoZm91bmRQYXRoKTtcbiAgICAgICAgbGlzdC5wdXNoKC4uLmRlZXBMaXN0KTtcbiAgICAgIH0gZWxzZSBpZihzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWVzOiBzdHJpbmdbXSA9IChbcHJlZml4LCBwYXRoQmFzZW5hbWUoZm91bmRQYXRoKV0pLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiAhaXNFbXB0eShpdGVtKSk7XG4gICAgICAgIGxpc3QucHVzaCh7bmFtZTogYCR7bW9kdWxlTmFtZXMuam9pbignLycpfWAsIHBhdGg6IGZvdW5kUGF0aH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9IGNhdGNoe1xuICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuICB9LCBbXSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tMaW5rZWRNb2R1bGVzID0gKCkgPT4ge1xuICBjb25zdCBsaW5rZWQgPSBsaW5rZWRNb2R1bGVzKCk7XG5cbiAgaWYobGlua2VkLmxlbmd0aCkge1xuICAgIGNvbnN0IG1zZ01vZHVsZTogc3RyaW5nID0gbGlua2VkLmxlbmd0aCA+IDEgPyAnTW9kdWxlcycgOiAnTW9kdWxlJztcbiAgICBjb25zdCBsaW5rZWRNc2c6IHN0cmluZyA9IGxpbmtlZC5yZWR1Y2UoXG4gICAgICAobXNnOiBzdHJpbmcsIGxpbmtlZE1vZHVsZTogTGlua2VkTW9kdWxlVHlwZSkgPT5cbiAgICAgICAgYCR7bXNnfVxcbiAqICR7bGlua2VkTW9kdWxlLm5hbWV9YCxcbiAgICAgIGBMaW5rZWQgJHttc2dNb2R1bGV9OmBcbiAgICApO1xuXG4gICAgbG9nKGJveGVuKGxpbmtlZE1zZywge2RpbUJvcmRlcjogdHJ1ZSwgcGFkZGluZzogMX0pLCAnd2FybicpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGVtcGxhdGVOYW1lID0gKGZpbGVQYXRoOiBzdHJpbmcsIHJlcGxhY2U6IHN0cmluZywgcmVwbGFjZUNhcHM6IHN0cmluZykgPT4ge1xuICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9zYW1wbGUvZywgcmVwbGFjZSk7XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1NhbXBsZS9nLCByZXBsYWNlQ2Fwcyk7XG4gIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGRhdGEsICd1dGY4Jyk7XG59O1xuIl0sIm5hbWVzIjpbImJveGVuIiwiY2hhbGsiLCJjb3B5RmlsZSIsImV4aXN0c1N5bmMiLCJsc3RhdFN5bmMiLCJta2RpclN5bmMiLCJyZWFkZGlyU3luYyIsInJlYWRGaWxlU3luYyIsIndyaXRlRmlsZVN5bmMiLCJzeW5jIiwiZ2xvYlN5bmMiLCJpc0VtcHR5Iiwib3JhIiwiYmFzZW5hbWUiLCJwYXRoQmFzZW5hbWUiLCJqb2luIiwicGF0aEpvaW4iLCJyZWxhdGl2ZSIsInBhdGhSZWxhdGl2ZSIsInJlc29sdmUiLCJwYXRoUmVzb2x2ZSIsInJpbXJhZlN5bmMiLCJsb2ciLCJnZXRGaWxlbmFtZXMiLCJwcm9wcyIsImNhbGxiYWNrIiwiY2xpTmFtZSIsIm5hbWUiLCJxdWlldCIsInR5cGUiLCJ1c2VUeXBlc2NyaXB0IiwibmFtZUNhcHMiLCJpdGVtVHlwZXMiLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3Vic3RyIiwidGVtcGxhdGVQYXRoIiwidGVtcGxhdGVFeHQiLCJ0ZW1wbGF0ZVJlYWN0IiwiY3JlYXRlU3Bpbm5lciIsImZhaWwiLCJzdGFydCIsInN1Y2NlZWQiLCJjb2xvciIsImNyZWF0ZVByb2dyZXNzQmFyIiwicGVyY2VudGFnZSIsIndpZHRoIiwiZmlsbGVkIiwiTWF0aCIsInJvdW5kIiwiZW1wdHkiLCJmaWxsZWRCYXIiLCJjeWFuIiwicmVwZWF0IiwiZW1wdHlCYXIiLCJncmF5IiwiaGFuZGxlV2VicGFja1Byb2dyZXNzIiwib3V0cHV0Iiwic3Bpbm5lciIsImVtb2ppIiwiYWN0aW9uIiwicHJvZ3Jlc3NNYXRjaCIsIm1hdGNoIiwicHJvZ3Jlc3MiLCJwYXJzZUludCIsInByb2dyZXNzQmFyIiwidGV4dCIsImdlbmVyYWxQcm9ncmVzc01hdGNoIiwiY29weUZpbGVzIiwiZmlsZXMiLCJ0eXBlTmFtZSIsImNvbmZpZyIsIm91dHB1dEZ1bGxQYXRoIiwic291cmNlRnVsbFBhdGgiLCJpdGVtcyIsIm1hcCIsImZpbGVOYW1lIiwiZnJvbSIsInRvIiwicHJvY2VzcyIsImN3ZCIsIlByb21pc2UiLCJhbGwiLCJyZWplY3QiLCJyZWN1cnNpdmUiLCJjb3B5RXJyb3IiLCJsZW5ndGgiLCJlcnJvciIsIm1lc3NhZ2UiLCJTdHJpbmciLCJjb3B5Q29uZmlndXJlZEZpbGVzIiwiY29weUZpbGVzQ29uZmlnIiwic291cmNlUGF0aCIsInRvdGFsQ29waWVkIiwiYmFzZURpciIsImFsbENvcHlQcm9taXNlcyIsInBhdHRlcm4iLCJyZXNvbHZlZFBhdHRlcm4iLCJtYXRjaGluZ0ZpbGVzIiwiYWJzb2x1dGUiLCJub2RpciIsImNvcHlQcm9taXNlcyIsInNvdXJjZUZpbGUiLCJyZWxhdGl2ZVBhdGgiLCJkZXN0UGF0aCIsImRlc3REaXIiLCJwdXNoIiwiY29weUZpbGVTeW5jIiwic291cmNlIiwidGFyZ2V0IiwidGFyZ2V0RmlsZSIsImlzRGlyZWN0b3J5IiwiY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMiLCJ0YXJnZXRGb2xkZXIiLCJmb3JFYWNoIiwiZmlsZSIsImN1clNvdXJjZSIsImdldFBhY2thZ2VKc29uIiwicGFja2FnZVBhdGgiLCJmb3JtYXRQYXRoIiwicGFja2FnZURhdGEiLCJ0b1N0cmluZyIsIkpTT04iLCJwYXJzZSIsImdldEZpbGVzQnlFeHQiLCJleHQiLCJyZW1vdmVDb25mbGljdE1vZHVsZXMiLCJtb2R1bGVMaXN0IiwidXBkYXRlZExpc3QiLCJPYmplY3QiLCJrZXlzIiwibW9kdWxlTmFtZSIsInJlZ2V4IiwiUmVnRXhwIiwidGVzdCIsInJlbW92ZUZpbGVzIiwiaXNSZWxhdGl2ZSIsImZpbGVQYXRoIiwicmVtb3ZlTW9kdWxlcyIsInNldFBhY2thZ2VKc29uIiwianNvbiIsInN0cmluZ2lmeSIsImxpbmtlZE1vZHVsZXMiLCJzdGFydFBhdGgiLCJ3b3JraW5nUGF0aCIsIm1vZHVsZVBhdGgiLCJwcmVmaXgiLCJzcGxpdCIsInBvcCIsImZvdW5kUGF0aHMiLCJyZWR1Y2UiLCJsaXN0IiwiZm91bmRQYXRoIiwic3RhdHMiLCJkZWVwTGlzdCIsImlzU3ltYm9saWNMaW5rIiwibW9kdWxlTmFtZXMiLCJmaWx0ZXIiLCJpdGVtIiwicGF0aCIsImNoZWNrTGlua2VkTW9kdWxlcyIsImxpbmtlZCIsIm1zZ01vZHVsZSIsImxpbmtlZE1zZyIsIm1zZyIsImxpbmtlZE1vZHVsZSIsImRpbUJvcmRlciIsInBhZGRpbmciLCJ1cGRhdGVUZW1wbGF0ZU5hbWUiLCJyZXBsYWNlIiwicmVwbGFjZUNhcHMiLCJkYXRhIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FFRCxPQUFPQSxXQUFXLFFBQVE7QUFDMUIsT0FBT0MsV0FBVyxRQUFRO0FBQzFCLFNBQVFDLFFBQVEsRUFBRUMsVUFBVSxFQUFFQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsV0FB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
@@ -1,9 +1,17 @@
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ *
5
+ * PostCSS 8-compatible version of postcss-for plugin
6
+ * Original: https://github.com/antyakushev/postcss-for
7
+ */
8
+ import postcss from 'postcss';
1
9
  interface PostcssForOptions {
2
10
  nested?: boolean;
3
11
  }
4
12
  declare const postcssFor: {
5
13
  (opts?: PostcssForOptions): {
6
- Once(root: any): void;
14
+ Once(root: postcss.Root): void;
7
15
  postcssPlugin: string;
8
16
  };
9
17
  postcss: boolean;