@angular-devkit/build-angular 17.0.0-next.0 → 17.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/package.json +15 -16
  2. package/src/babel-bazel.d.ts +0 -6
  3. package/src/builders/app-shell/render-worker.js +4 -3
  4. package/src/builders/application/index.js +1 -2
  5. package/src/builders/application/options.d.ts +6 -1
  6. package/src/builders/application/options.js +7 -2
  7. package/src/builders/application/schema.d.ts +5 -8
  8. package/src/builders/application/schema.js +1 -1
  9. package/src/builders/application/schema.json +8 -17
  10. package/src/builders/browser/index.js +4 -3
  11. package/src/builders/browser-esbuild/builder-status-warnings.js +1 -4
  12. package/src/builders/browser-esbuild/index.js +3 -2
  13. package/src/builders/dev-server/load-proxy-config.js +24 -1
  14. package/src/builders/dev-server/vite-server.d.ts +2 -1
  15. package/src/builders/dev-server/vite-server.js +35 -22
  16. package/src/builders/dev-server/webpack-server.js +2 -2
  17. package/src/builders/jest/schema.d.ts +3 -6
  18. package/src/builders/jest/schema.js +1 -1
  19. package/src/builders/jest/schema.json +7 -16
  20. package/src/builders/karma/find-tests-plugin.js +4 -2
  21. package/src/builders/karma/index.js +6 -7
  22. package/src/builders/prerender/render-worker.js +11 -8
  23. package/src/builders/prerender/utils.js +1 -1
  24. package/src/builders/server/index.js +2 -3
  25. package/src/tools/babel/plugins/adjust-static-class-members.js +5 -4
  26. package/src/tools/babel/plugins/adjust-typescript-enums.js +2 -2
  27. package/src/tools/babel/plugins/elide-angular-metadata.js +43 -20
  28. package/src/tools/babel/plugins/pure-toplevel-functions.js +3 -2
  29. package/src/tools/babel/presets/application.js +5 -7
  30. package/src/tools/babel/webpack-loader.js +6 -5
  31. package/src/tools/esbuild/angular/compilation/angular-compilation.js +6 -20
  32. package/src/tools/esbuild/angular/compilation/aot-compilation.js +15 -25
  33. package/src/tools/esbuild/angular/compilation/jit-compilation.js +12 -24
  34. package/src/tools/esbuild/angular/compiler-plugin.js +14 -13
  35. package/src/tools/esbuild/angular/jit-resource-transformer.js +33 -31
  36. package/src/tools/esbuild/application-code-bundle.js +3 -3
  37. package/src/tools/esbuild/bundler-context.js +18 -28
  38. package/src/tools/esbuild/bundler-execution-result.js +5 -3
  39. package/src/tools/esbuild/javascript-transformer-worker.js +3 -3
  40. package/src/tools/esbuild/javascript-transformer.js +15 -28
  41. package/src/tools/esbuild/load-result-cache.js +11 -20
  42. package/src/tools/esbuild/profiling.js +2 -2
  43. package/src/tools/esbuild/stylesheets/less-language.js +2 -2
  44. package/src/tools/esbuild/stylesheets/stylesheet-plugin-factory.js +8 -5
  45. package/src/tools/esbuild/watcher.js +7 -9
  46. package/src/tools/sass/rebasing-importer.js +9 -4
  47. package/src/tools/sass/sass-service-legacy.js +7 -9
  48. package/src/tools/sass/sass-service.js +9 -8
  49. package/src/tools/sass/worker.js +3 -3
  50. package/src/tools/webpack/plugins/any-component-style-budget-checker.js +2 -1
  51. package/src/tools/webpack/plugins/builder-watch-plugin.js +4 -1
  52. package/src/tools/webpack/plugins/common-js-usage-warn-plugin.js +4 -2
  53. package/src/tools/webpack/plugins/css-optimizer-plugin.js +3 -2
  54. package/src/tools/webpack/plugins/dedupe-module-resolve-plugin.js +3 -2
  55. package/src/tools/webpack/plugins/esbuild-executor.js +5 -2
  56. package/src/tools/webpack/plugins/index-html-webpack-plugin.js +3 -1
  57. package/src/tools/webpack/plugins/javascript-optimizer-plugin.js +3 -1
  58. package/src/tools/webpack/plugins/json-stats-plugin.js +2 -1
  59. package/src/tools/webpack/plugins/occurrences-plugin.js +2 -1
  60. package/src/tools/webpack/plugins/remove-hash-plugin.js +2 -1
  61. package/src/tools/webpack/plugins/scripts-webpack-plugin.js +4 -1
  62. package/src/tools/webpack/plugins/service-worker-plugin.js +2 -1
  63. package/src/tools/webpack/plugins/styles-webpack-plugin.js +5 -4
  64. package/src/tools/webpack/plugins/typescript.js +2 -2
  65. package/src/tools/webpack/utils/helpers.js +2 -3
  66. package/src/typings.d.ts +1 -1
  67. package/src/utils/action-executor.js +3 -1
  68. package/src/utils/bundle-calculator.js +4 -1
  69. package/src/utils/i18n-options.js +2 -2
  70. package/src/utils/index-file/augment-index-html.d.ts +1 -0
  71. package/src/utils/index-file/augment-index-html.js +22 -2
  72. package/src/utils/index-file/index-html-generator.d.ts +1 -0
  73. package/src/utils/index-file/index-html-generator.js +5 -2
  74. package/src/utils/index-file/inline-critical-css.js +48 -45
  75. package/src/utils/index-file/inline-fonts.js +5 -6
  76. package/src/utils/process-bundle.js +2 -3
  77. package/src/utils/server-rendering/prerender.js +11 -4
  78. package/src/utils/service-worker.js +4 -2
  79. package/src/utils/spinner.js +7 -13
  80. package/src/utils/webpack-browser-config.js +2 -2
@@ -89,7 +89,7 @@ async function generateI18nBrowserWebpackConfigFromContext(options, context, web
89
89
  }
90
90
  // Update file hashes to include translation file content
91
91
  const i18nHash = Object.values(i18n.locales).reduce((data, locale) => data + locale.files.map((file) => file.integrity || '').join('|'), '');
92
- config.plugins ?? (config.plugins = []);
92
+ config.plugins ??= [];
93
93
  config.plugins.push({
94
94
  apply(compiler) {
95
95
  compiler.hooks.compilation.tap('build-angular', (compilation) => {
@@ -149,4 +149,4 @@ function getIndexInputFile(index) {
149
149
  }
150
150
  }
151
151
  exports.getIndexInputFile = getIndexInputFile;
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VicGFjay1icm93c2VyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3dlYnBhY2stYnJvd3Nlci1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCwyQ0FBNkI7QUFDN0IscUNBQW9EO0FBQ3BELGlEQUFzRDtBQUV0RCx3RkFHdUQ7QUFDdkQsb0NBQW1HO0FBRW5HLDBEQUFzRDtBQUN0RCxpREFBaUU7QUFRMUQsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxhQUFxQixFQUNyQixXQUFtQixFQUNuQixVQUE4QixFQUM5QixXQUFtQixFQUNuQixPQUF1QyxFQUN2Qyx1QkFBZ0QsRUFDaEQsTUFBeUIsRUFDekIsaUJBQTBEO0lBRTFELGdEQUFnRDtJQUNoRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztLQUM5RTtJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsNEJBQVksRUFBQyxZQUFZLENBQUMsQ0FBQztJQUVsRCxNQUFNLFlBQVksR0FBbUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFDMUYsTUFBTSxHQUFHLEdBQWdDO1FBQ3ZDLElBQUksRUFBRSxhQUFhO1FBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDO1FBQ2xELFdBQVc7UUFDWCxVQUFVO1FBQ1YsWUFBWTtRQUNaLFFBQVE7UUFD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dUIsRUFDdkIsT0FBTyxDQUFDLE1BQU0sRUFDZCxpQkFBaUIsQ0FDbEIsQ0FBQztJQUVGLHVFQUF1RTtJQUN2RSw0REFBNEQ7SUFDNUQsTUFBTSxjQUFjLEdBQ2xCLE9BR0QsQ0FBQyxjQUFjLENBQUM7SUFDakIsSUFBSSxjQUFjLEVBQUU7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsTUFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7U0FDckI7UUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLHlDQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7S0FDN0Q7SUFFRCxPQUFPO1FBQ0wsTUFBTTtRQUNOLFdBQVc7UUFDWCxpQkFBaUI7S0FDbEIsQ0FBQztBQUNKLENBQUM7QUF4REQsMEZBd0RDO0FBRUQsU0FBZ0Isa0JBQWtCLENBQUMsS0FBb0M7SUFDckUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdCO1NBQU07UUFDTCxPQUFPLEtBQUssQ0FBQyxNQUFNLElBQUksWUFBWSxDQUFDO0tBQ3JDO0FBQ0gsQ0FBQztBQU5ELGdEQU1DO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsS0FBb0M7SUFDcEUsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNO1FBQ0wsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO0tBQ3BCO0FBQ0gsQ0FBQztBQU5ELDhDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7IEJ1aWxkZXJDb250ZXh0IH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2FyY2hpdGVjdCc7XG5pbXBvcnQgeyBsb2dnaW5nIH0gZnJvbSAnQGFuZ3VsYXItZGV2a2l0L2NvcmUnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24sIGphdmFzY3JpcHQgfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IG1lcmdlIGFzIHdlYnBhY2tNZXJnZSB9IGZyb20gJ3dlYnBhY2stbWVyZ2UnO1xuaW1wb3J0IHsgU2NoZW1hIGFzIEJyb3dzZXJCdWlsZGVyU2NoZW1hIH0gZnJvbSAnLi4vYnVpbGRlcnMvYnJvd3Nlci9zY2hlbWEnO1xuaW1wb3J0IHtcbiAgQnVpbGRlcldhdGNoUGx1Z2luLFxuICBCdWlsZGVyV2F0Y2hlckZhY3RvcnksXG59IGZyb20gJy4uL3Rvb2xzL3dlYnBhY2svcGx1Z2lucy9idWlsZGVyLXdhdGNoLXBsdWdpbic7XG5pbXBvcnQgeyBOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWEsIGRlZmF1bHRQcm9ncmVzcywgbm9ybWFsaXplQnJvd3NlclNjaGVtYSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IFdlYnBhY2tDb25maWdPcHRpb25zIH0gZnJvbSAnLi4vdXRpbHMvYnVpbGQtb3B0aW9ucyc7XG5pbXBvcnQgeyByZWFkVHNjb25maWcgfSBmcm9tICcuLi91dGlscy9yZWFkLXRzY29uZmlnJztcbmltcG9ydCB7IEkxOG5PcHRpb25zLCBjb25maWd1cmVJMThuQnVpbGQgfSBmcm9tICcuL2kxOG4tb3B0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIEJyb3dzZXJXZWJwYWNrQ29uZmlnT3B0aW9ucyA9IFdlYnBhY2tDb25maWdPcHRpb25zPE5vcm1hbGl6ZWRCcm93c2VyQnVpbGRlclNjaGVtYT47XG5cbmV4cG9ydCB0eXBlIFdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yID0gKFxuICBjb25maWd1cmF0aW9uT3B0aW9uczogQnJvd3NlcldlYnBhY2tDb25maWdPcHRpb25zLFxuKSA9PiAoUHJvbWlzZTxDb25maWd1cmF0aW9uPiB8IENvbmZpZ3VyYXRpb24pW107XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVdlYnBhY2tDb25maWcoXG4gIHdvcmtzcGFjZVJvb3Q6IHN0cmluZyxcbiAgcHJvamVjdFJvb3Q6IHN0cmluZyxcbiAgc291cmNlUm9vdDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBwcm9qZWN0TmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWEsXG4gIHdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yOiBXZWJwYWNrUGFydGlhbEdlbmVyYXRvcixcbiAgbG9nZ2VyOiBsb2dnaW5nLkxvZ2dlckFwaSxcbiAgZXh0cmFCdWlsZE9wdGlvbnM6IFBhcnRpYWw8Tm9ybWFsaXplZEJyb3dzZXJCdWlsZGVyU2NoZW1hPixcbik6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAvLyBFbnN1cmUgQnVpbGQgT3B0aW1pemVyIGlzIG9ubHkgdXNlZCB3aXRoIEFPVC5cbiAgaWYgKG9wdGlvbnMuYnVpbGRPcHRpbWl6ZXIgJiYgIW9wdGlvbnMuYW90KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJ2J1aWxkT3B0aW1pemVyJyBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aG91dCAnYW90Jy5gKTtcbiAgfVxuXG4gIGNvbnN0IHRzQ29uZmlnUGF0aCA9IHBhdGgucmVzb2x2ZSh3b3Jrc3BhY2VSb290LCBvcHRpb25zLnRzQ29uZmlnKTtcbiAgY29uc3QgdHNDb25maWcgPSBhd2FpdCByZWFkVHNjb25maWcodHNDb25maWdQYXRoKTtcblxuICBjb25zdCBidWlsZE9wdGlvbnM6IE5vcm1hbGl6ZWRCcm93c2VyQnVpbGRlclNjaGVtYSA9IHsgLi4ub3B0aW9ucywgLi4uZXh0cmFCdWlsZE9wdGlvbnMgfTtcbiAgY29uc3Qgd2NvOiBCcm93c2VyV2VicGFja0NvbmZpZ09wdGlvbnMgPSB7XG4gICAgcm9vdDogd29ya3NwYWNlUm9vdCxcbiAgICBsb2dnZXI6IGxvZ2dlci5jcmVhdGVDaGlsZCgnd2VicGFja0NvbmZpZ09wdGlvbnMnKSxcbiAgICBwcm9qZWN0Um9vdCxcbiAgICBzb3VyY2VSb290LFxuICAgIGJ1aWxkT3B0aW9ucyxcbiAgICB0c0NvbmZpZyxcbiAgICB0c0NvbmZpZ1BhdGgsXG4gICAgcHJvamVjdE5hbWUsXG4gIH07XG5cbiAgd2NvLmJ1aWxkT3B0aW9ucy5wcm9ncmVzcyA9IGRlZmF1bHRQcm9ncmVzcyh3Y28uYnVpbGRPcHRpb25zLnByb2dyZXNzKTtcblxuICBjb25zdCBwYXJ0aWFscyA9IGF3YWl0IFByb21pc2UuYWxsKHdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yKHdjbykpO1xuICBjb25zdCB3ZWJwYWNrQ29uZmlnID0gd2VicGFja01lcmdlKHBhcnRpYWxzKTtcblxuICByZXR1cm4gd2VicGFja0NvbmZpZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlSTE4bkJyb3dzZXJXZWJwYWNrQ29uZmlnRnJvbUNvbnRleHQoXG4gIG9wdGlvbnM6IEJyb3dzZXJCdWlsZGVyU2NoZW1hLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgd2VicGFja1BhcnRpYWxHZW5lcmF0b3I6IFdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yLFxuICBleHRyYUJ1aWxkT3B0aW9uczogUGFydGlhbDxOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWE+ID0ge30sXG4pOiBQcm9taXNlPHtcbiAgY29uZmlnOiBDb25maWd1cmF0aW9uO1xuICBwcm9qZWN0Um9vdDogc3RyaW5nO1xuICBwcm9qZWN0U291cmNlUm9vdD86IHN0cmluZztcbiAgaTE4bjogSTE4bk9wdGlvbnM7XG59PiB7XG4gIGNvbnN0IHsgYnVpbGRPcHRpb25zLCBpMThuIH0gPSBhd2FpdCBjb25maWd1cmVJMThuQnVpbGQoY29udGV4dCwgb3B0aW9ucyk7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGdlbmVyYXRlQnJvd3NlcldlYnBhY2tDb25maWdGcm9tQ29udGV4dChcbiAgICBidWlsZE9wdGlvbnMsXG4gICAgY29udGV4dCxcbiAgICAod2NvKSA9PiB7XG4gICAgICByZXR1cm4gd2VicGFja1BhcnRpYWxHZW5lcmF0b3Iod2NvKTtcbiAgICB9LFxuICAgIGV4dHJhQnVpbGRPcHRpb25zLFxuICApO1xuICBjb25zdCBjb25maWcgPSByZXN1bHQuY29uZmlnO1xuXG4gIGlmIChpMThuLnNob3VsZElubGluZSkge1xuICAgIC8vIFJlbW92ZSBsb2NhbGl6ZSBcInBvbHlmaWxsXCIgaWYgaW4gQU9UIG1vZGVcbiAgICBpZiAoYnVpbGRPcHRpb25zLmFvdCkge1xuICAgICAgaWYgKCFjb25maWcucmVzb2x2ZSkge1xuICAgICAgICBjb25maWcucmVzb2x2ZSA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29uZmlnLnJlc29sdmUuYWxpYXMpKSB7XG4gICAgICAgIGNvbmZpZy5yZXNvbHZlLmFsaWFzLnB1c2goe1xuICAgICAgICAgIG5hbWU6ICdAYW5ndWxhci9sb2NhbGl6ZS9pbml0JyxcbiAgICAgICAgICBhbGlhczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFjb25maWcucmVzb2x2ZS5hbGlhcykge1xuICAgICAgICAgIGNvbmZpZy5yZXNvbHZlLmFsaWFzID0ge307XG4gICAgICAgIH1cbiAgICAgICAgY29uZmlnLnJlc29sdmUuYWxpYXNbJ0Bhbmd1bGFyL2xvY2FsaXplL2luaXQnXSA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBmaWxlIGhhc2hlcyB0byBpbmNsdWRlIHRyYW5zbGF0aW9uIGZpbGUgY29udGVudFxuICAgIGNvbnN0IGkxOG5IYXNoID0gT2JqZWN0LnZhbHVlcyhpMThuLmxvY2FsZXMpLnJlZHVjZShcbiAgICAgIChkYXRhLCBsb2NhbGUpID0+IGRhdGEgKyBsb2NhbGUuZmlsZXMubWFwKChmaWxlKSA9PiBmaWxlLmludGVncml0eSB8fCAnJykuam9pbignfCcpLFxuICAgICAgJycsXG4gICAgKTtcblxuICAgIGNvbmZpZy5wbHVnaW5zID8/PSBbXTtcbiAgICBjb25maWcucGx1Z2lucy5wdXNoKHtcbiAgICAgIGFwcGx5KGNvbXBpbGVyKSB7XG4gICAgICAgIGNvbXBpbGVyLmhvb2tzLmNvbXBpbGF0aW9uLnRhcCgnYnVpbGQtYW5ndWxhcicsIChjb21waWxhdGlvbikgPT4ge1xuICAgICAgICAgIGphdmFzY3JpcHQuSmF2YXNjcmlwdE1vZHVsZXNQbHVnaW4uZ2V0Q29tcGlsYXRpb25Ib29rcyhjb21waWxhdGlvbikuY2h1bmtIYXNoLnRhcChcbiAgICAgICAgICAgICdidWlsZC1hbmd1bGFyJyxcbiAgICAgICAgICAgIChfLCBoYXNoKSA9PiB7XG4gICAgICAgICAgICAgIGhhc2gudXBkYXRlKCckbG9jYWxpemUnICsgaTE4bkhhc2gpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4geyAuLi5yZXN1bHQsIGkxOG4gfTtcbn1cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUJyb3dzZXJXZWJwYWNrQ29uZmlnRnJvbUNvbnRleHQoXG4gIG9wdGlvbnM6IEJyb3dzZXJCdWlsZGVyU2NoZW1hLFxuICBjb250ZXh0OiBCdWlsZGVyQ29udGV4dCxcbiAgd2VicGFja1BhcnRpYWxHZW5lcmF0b3I6IFdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yLFxuICBleHRyYUJ1aWxkT3B0aW9uczogUGFydGlhbDxOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWE+ID0ge30sXG4pOiBQcm9taXNlPHsgY29uZmlnOiBDb25maWd1cmF0aW9uOyBwcm9qZWN0Um9vdDogc3RyaW5nOyBwcm9qZWN0U291cmNlUm9vdD86IHN0cmluZyB9PiB7XG4gIGNvbnN0IHByb2plY3ROYW1lID0gY29udGV4dC50YXJnZXQgJiYgY29udGV4dC50YXJnZXQucHJvamVjdDtcbiAgaWYgKCFwcm9qZWN0TmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGJ1aWxkZXIgcmVxdWlyZXMgYSB0YXJnZXQuJyk7XG4gIH1cblxuICBjb25zdCB3b3Jrc3BhY2VSb290ID0gY29udGV4dC53b3Jrc3BhY2VSb290O1xuICBjb25zdCBwcm9qZWN0TWV0YWRhdGEgPSBhd2FpdCBjb250ZXh0LmdldFByb2plY3RNZXRhZGF0YShwcm9qZWN0TmFtZSk7XG4gIGNvbnN0IHByb2plY3RSb290ID0gcGF0aC5qb2luKHdvcmtzcGFjZVJvb3QsIChwcm9qZWN0TWV0YWRhdGEucm9vdCBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/ICcnKTtcbiAgY29uc3Qgc291cmNlUm9vdCA9IHByb2plY3RNZXRhZGF0YS5zb3VyY2VSb290IGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29uc3QgcHJvamVjdFNvdXJjZVJvb3QgPSBzb3VyY2VSb290ID8gcGF0aC5qb2luKHdvcmtzcGFjZVJvb3QsIHNvdXJjZVJvb3QpIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWRPcHRpb25zID0gbm9ybWFsaXplQnJvd3NlclNjaGVtYShcbiAgICB3b3Jrc3BhY2VSb290LFxuICAgIHByb2plY3RSb290LFxuICAgIHByb2plY3RTb3VyY2VSb290LFxuICAgIG9wdGlvbnMsXG4gICAgcHJvamVjdE1ldGFkYXRhLFxuICAgIGNvbnRleHQubG9nZ2VyLFxuICApO1xuXG4gIGNvbnN0IGNvbmZpZyA9IGF3YWl0IGdlbmVyYXRlV2VicGFja0NvbmZpZyhcbiAgICB3b3Jrc3BhY2VSb290LFxuICAgIHByb2plY3RSb290LFxuICAgIHByb2plY3RTb3VyY2VSb290LFxuICAgIHByb2plY3ROYW1lLFxuICAgIG5vcm1hbGl6ZWRPcHRpb25zLFxuICAgIHdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yLFxuICAgIGNvbnRleHQubG9nZ2VyLFxuICAgIGV4dHJhQnVpbGRPcHRpb25zLFxuICApO1xuXG4gIC8vIElmIGJ1aWxkZXIgd2F0Y2ggc3VwcG9ydCBpcyBwcmVzZW50IGluIHRoZSBjb250ZXh0LCBhZGQgd2F0Y2ggcGx1Z2luXG4gIC8vIFRoaXMgaXMgaW50ZXJuYWwgb25seSBhbmQgY3VycmVudGx5IG9ubHkgdXNlZCBmb3IgdGVzdGluZ1xuICBjb25zdCB3YXRjaGVyRmFjdG9yeSA9IChcbiAgICBjb250ZXh0IGFzIHtcbiAgICAgIHdhdGNoZXJGYWN0b3J5PzogQnVpbGRlcldhdGNoZXJGYWN0b3J5O1xuICAgIH1cbiAgKS53YXRjaGVyRmFjdG9yeTtcbiAgaWYgKHdhdGNoZXJGYWN0b3J5KSB7XG4gICAgaWYgKCFjb25maWcucGx1Z2lucykge1xuICAgICAgY29uZmlnLnBsdWdpbnMgPSBbXTtcbiAgICB9XG4gICAgY29uZmlnLnBsdWdpbnMucHVzaChuZXcgQnVpbGRlcldhdGNoUGx1Z2luKHdhdGNoZXJGYWN0b3J5KSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvbmZpZyxcbiAgICBwcm9qZWN0Um9vdCxcbiAgICBwcm9qZWN0U291cmNlUm9vdCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4T3V0cHV0RmlsZShpbmRleDogQnJvd3NlckJ1aWxkZXJTY2hlbWFbJ2luZGV4J10pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGluZGV4ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXRoLmJhc2VuYW1lKGluZGV4KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW5kZXgub3V0cHV0IHx8ICdpbmRleC5odG1sJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5kZXhJbnB1dEZpbGUoaW5kZXg6IEJyb3dzZXJCdWlsZGVyU2NoZW1hWydpbmRleCddKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGluZGV4LmlucHV0O1xuICB9XG59XG4iXX0=
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VicGFjay1icm93c2VyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXJfZGV2a2l0L2J1aWxkX2FuZ3VsYXIvc3JjL3V0aWxzL3dlYnBhY2stYnJvd3Nlci1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJSCwyQ0FBNkI7QUFDN0IscUNBQW9EO0FBQ3BELGlEQUFzRDtBQUV0RCx3RkFHdUQ7QUFDdkQsb0NBQW1HO0FBRW5HLDBEQUFzRDtBQUN0RCxpREFBaUU7QUFRMUQsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxhQUFxQixFQUNyQixXQUFtQixFQUNuQixVQUE4QixFQUM5QixXQUFtQixFQUNuQixPQUF1QyxFQUN2Qyx1QkFBZ0QsRUFDaEQsTUFBeUIsRUFDekIsaUJBQTBEO0lBRTFELGdEQUFnRDtJQUNoRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkRBQTJELENBQUMsQ0FBQztLQUM5RTtJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsNEJBQVksRUFBQyxZQUFZLENBQUMsQ0FBQztJQUVsRCxNQUFNLFlBQVksR0FBbUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFDMUYsTUFBTSxHQUFHLEdBQWdDO1FBQ3ZDLElBQUksRUFBRSxhQUFhO1FBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDO1FBQ2xELFdBQVc7UUFDWCxVQUFVO1FBQ1YsWUFBWTtRQUNaLFFBQVE7UUFDUixZQUFZO1FBQ1osV0FBVztLQUNaLENBQUM7SUFFRixHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2RSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLGFBQWEsR0FBRyxJQUFBLHFCQUFZLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFN0MsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQXBDRCxzREFvQ0M7QUFFTSxLQUFLLFVBQVUsMkNBQTJDLENBQy9ELE9BQTZCLEVBQzdCLE9BQXVCLEVBQ3ZCLHVCQUFnRCxFQUNoRCxvQkFBNkQsRUFBRTtJQU8vRCxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBQSxpQ0FBa0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUUsTUFBTSxNQUFNLEdBQUcsTUFBTSx1Q0FBdUMsQ0FDMUQsWUFBWSxFQUNaLE9BQU8sRUFDUCxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ04sT0FBTyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDLEVBQ0QsaUJBQWlCLENBQ2xCLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBRTdCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtRQUNyQiw0Q0FBNEM7UUFDNUMsSUFBSSxZQUFZLENBQUMsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNuQixNQUFNLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQzthQUNyQjtZQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7b0JBQ3hCLElBQUksRUFBRSx3QkFBd0I7b0JBQzlCLEtBQUssRUFBRSxLQUFLO2lCQUNiLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRTtvQkFDekIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2lCQUMzQjtnQkFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUN4RDtTQUNGO1FBRUQseURBQXlEO1FBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDakQsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNuRixFQUFFLENBQ0gsQ0FBQztRQUVGLE1BQU0sQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ3RCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxRQUFRO2dCQUNaLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtvQkFDOUQsb0JBQVUsQ0FBQyx1QkFBdUIsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUMvRSxlQUFlLEVBQ2YsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLENBQUM7b0JBQ3RDLENBQUMsQ0FDRixDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQsT0FBTyxFQUFFLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQzdCLENBQUM7QUEvREQsa0dBK0RDO0FBQ00sS0FBSyxVQUFVLHVDQUF1QyxDQUMzRCxPQUE2QixFQUM3QixPQUF1QixFQUN2Qix1QkFBZ0QsRUFDaEQsb0JBQTZELEVBQUU7SUFFL0QsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM3RCxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztLQUNuRDtJQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDNUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUcsZUFBZSxDQUFDLElBQTJCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakcsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLFVBQWdDLENBQUM7SUFDcEUsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFFeEYsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLDhCQUFzQixFQUM5QyxhQUFhLEVBQ2IsV0FBVyxFQUNYLGlCQUFpQixFQUNqQixPQUFPLEVBQ1AsZUFBZSxFQUNmLE9BQU8sQ0FBQyxNQUFNLENBQ2YsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0scUJBQXFCLENBQ3hDLGFBQWEsRUFDYixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLE9BQU8sQ0FBQyxNQUFNLEVBQ2QsaUJBQWlCLENBQ2xCLENBQUM7SUFFRix1RUFBdUU7SUFDdkUsNERBQTREO0lBQzVELE1BQU0sY0FBYyxHQUNsQixPQUdELENBQUMsY0FBYyxDQUFDO0lBQ2pCLElBQUksY0FBYyxFQUFFO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSx5Q0FBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0tBQzdEO0lBRUQsT0FBTztRQUNMLE1BQU07UUFDTixXQUFXO1FBQ1gsaUJBQWlCO0tBQ2xCLENBQUM7QUFDSixDQUFDO0FBeERELDBGQXdEQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLEtBQW9DO0lBQ3JFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM3QjtTQUFNO1FBQ0wsT0FBTyxLQUFLLENBQUMsTUFBTSxJQUFJLFlBQVksQ0FBQztLQUNyQztBQUNILENBQUM7QUFORCxnREFNQztBQUVELFNBQWdCLGlCQUFpQixDQUFDLEtBQW9DO0lBQ3BFLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztLQUNwQjtBQUNILENBQUM7QUFORCw4Q0FNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBCdWlsZGVyQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9hcmNoaXRlY3QnO1xuaW1wb3J0IHsgbG9nZ2luZyB9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9jb3JlJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uLCBqYXZhc2NyaXB0IH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBtZXJnZSBhcyB3ZWJwYWNrTWVyZ2UgfSBmcm9tICd3ZWJwYWNrLW1lcmdlJztcbmltcG9ydCB7IFNjaGVtYSBhcyBCcm93c2VyQnVpbGRlclNjaGVtYSB9IGZyb20gJy4uL2J1aWxkZXJzL2Jyb3dzZXIvc2NoZW1hJztcbmltcG9ydCB7XG4gIEJ1aWxkZXJXYXRjaFBsdWdpbixcbiAgQnVpbGRlcldhdGNoZXJGYWN0b3J5LFxufSBmcm9tICcuLi90b29scy93ZWJwYWNrL3BsdWdpbnMvYnVpbGRlci13YXRjaC1wbHVnaW4nO1xuaW1wb3J0IHsgTm9ybWFsaXplZEJyb3dzZXJCdWlsZGVyU2NoZW1hLCBkZWZhdWx0UHJvZ3Jlc3MsIG5vcm1hbGl6ZUJyb3dzZXJTY2hlbWEgfSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgeyBXZWJwYWNrQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4uL3V0aWxzL2J1aWxkLW9wdGlvbnMnO1xuaW1wb3J0IHsgcmVhZFRzY29uZmlnIH0gZnJvbSAnLi4vdXRpbHMvcmVhZC10c2NvbmZpZyc7XG5pbXBvcnQgeyBJMThuT3B0aW9ucywgY29uZmlndXJlSTE4bkJ1aWxkIH0gZnJvbSAnLi9pMThuLW9wdGlvbnMnO1xuXG5leHBvcnQgdHlwZSBCcm93c2VyV2VicGFja0NvbmZpZ09wdGlvbnMgPSBXZWJwYWNrQ29uZmlnT3B0aW9uczxOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWE+O1xuXG5leHBvcnQgdHlwZSBXZWJwYWNrUGFydGlhbEdlbmVyYXRvciA9IChcbiAgY29uZmlndXJhdGlvbk9wdGlvbnM6IEJyb3dzZXJXZWJwYWNrQ29uZmlnT3B0aW9ucyxcbikgPT4gKFByb21pc2U8Q29uZmlndXJhdGlvbj4gfCBDb25maWd1cmF0aW9uKVtdO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVXZWJwYWNrQ29uZmlnKFxuICB3b3Jrc3BhY2VSb290OiBzdHJpbmcsXG4gIHByb2plY3RSb290OiBzdHJpbmcsXG4gIHNvdXJjZVJvb3Q6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgcHJvamVjdE5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogTm9ybWFsaXplZEJyb3dzZXJCdWlsZGVyU2NoZW1hLFxuICB3ZWJwYWNrUGFydGlhbEdlbmVyYXRvcjogV2VicGFja1BhcnRpYWxHZW5lcmF0b3IsXG4gIGxvZ2dlcjogbG9nZ2luZy5Mb2dnZXJBcGksXG4gIGV4dHJhQnVpbGRPcHRpb25zOiBQYXJ0aWFsPE5vcm1hbGl6ZWRCcm93c2VyQnVpbGRlclNjaGVtYT4sXG4pOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgLy8gRW5zdXJlIEJ1aWxkIE9wdGltaXplciBpcyBvbmx5IHVzZWQgd2l0aCBBT1QuXG4gIGlmIChvcHRpb25zLmJ1aWxkT3B0aW1pemVyICYmICFvcHRpb25zLmFvdCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlICdidWlsZE9wdGltaXplcicgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgJ2FvdCcuYCk7XG4gIH1cblxuICBjb25zdCB0c0NvbmZpZ1BhdGggPSBwYXRoLnJlc29sdmUod29ya3NwYWNlUm9vdCwgb3B0aW9ucy50c0NvbmZpZyk7XG4gIGNvbnN0IHRzQ29uZmlnID0gYXdhaXQgcmVhZFRzY29uZmlnKHRzQ29uZmlnUGF0aCk7XG5cbiAgY29uc3QgYnVpbGRPcHRpb25zOiBOb3JtYWxpemVkQnJvd3NlckJ1aWxkZXJTY2hlbWEgPSB7IC4uLm9wdGlvbnMsIC4uLmV4dHJhQnVpbGRPcHRpb25zIH07XG4gIGNvbnN0IHdjbzogQnJvd3NlcldlYnBhY2tDb25maWdPcHRpb25zID0ge1xuICAgIHJvb3Q6IHdvcmtzcGFjZVJvb3QsXG4gICAgbG9nZ2VyOiBsb2dnZXIuY3JlYXRlQ2hpbGQoJ3dlYnBhY2tDb25maWdPcHRpb25zJyksXG4gICAgcHJvamVjdFJvb3QsXG4gICAgc291cmNlUm9vdCxcbiAgICBidWlsZE9wdGlvbnMsXG4gICAgdHNDb25maWcsXG4gICAgdHNDb25maWdQYXRoLFxuICAgIHByb2plY3ROYW1lLFxuICB9O1xuXG4gIHdjby5idWlsZE9wdGlvbnMucHJvZ3Jlc3MgPSBkZWZhdWx0UHJvZ3Jlc3Mod2NvLmJ1aWxkT3B0aW9ucy5wcm9ncmVzcyk7XG5cbiAgY29uc3QgcGFydGlhbHMgPSBhd2FpdCBQcm9taXNlLmFsbCh3ZWJwYWNrUGFydGlhbEdlbmVyYXRvcih3Y28pKTtcbiAgY29uc3Qgd2VicGFja0NvbmZpZyA9IHdlYnBhY2tNZXJnZShwYXJ0aWFscyk7XG5cbiAgcmV0dXJuIHdlYnBhY2tDb25maWc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUkxOG5Ccm93c2VyV2VicGFja0NvbmZpZ0Zyb21Db250ZXh0KFxuICBvcHRpb25zOiBCcm93c2VyQnVpbGRlclNjaGVtYSxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yOiBXZWJwYWNrUGFydGlhbEdlbmVyYXRvcixcbiAgZXh0cmFCdWlsZE9wdGlvbnM6IFBhcnRpYWw8Tm9ybWFsaXplZEJyb3dzZXJCdWlsZGVyU2NoZW1hPiA9IHt9LFxuKTogUHJvbWlzZTx7XG4gIGNvbmZpZzogQ29uZmlndXJhdGlvbjtcbiAgcHJvamVjdFJvb3Q6IHN0cmluZztcbiAgcHJvamVjdFNvdXJjZVJvb3Q/OiBzdHJpbmc7XG4gIGkxOG46IEkxOG5PcHRpb25zO1xufT4ge1xuICBjb25zdCB7IGJ1aWxkT3B0aW9ucywgaTE4biB9ID0gYXdhaXQgY29uZmlndXJlSTE4bkJ1aWxkKGNvbnRleHQsIG9wdGlvbnMpO1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBnZW5lcmF0ZUJyb3dzZXJXZWJwYWNrQ29uZmlnRnJvbUNvbnRleHQoXG4gICAgYnVpbGRPcHRpb25zLFxuICAgIGNvbnRleHQsXG4gICAgKHdjbykgPT4ge1xuICAgICAgcmV0dXJuIHdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yKHdjbyk7XG4gICAgfSxcbiAgICBleHRyYUJ1aWxkT3B0aW9ucyxcbiAgKTtcbiAgY29uc3QgY29uZmlnID0gcmVzdWx0LmNvbmZpZztcblxuICBpZiAoaTE4bi5zaG91bGRJbmxpbmUpIHtcbiAgICAvLyBSZW1vdmUgbG9jYWxpemUgXCJwb2x5ZmlsbFwiIGlmIGluIEFPVCBtb2RlXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy5hb3QpIHtcbiAgICAgIGlmICghY29uZmlnLnJlc29sdmUpIHtcbiAgICAgICAgY29uZmlnLnJlc29sdmUgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5yZXNvbHZlLmFsaWFzKSkge1xuICAgICAgICBjb25maWcucmVzb2x2ZS5hbGlhcy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiAnQGFuZ3VsYXIvbG9jYWxpemUvaW5pdCcsXG4gICAgICAgICAgYWxpYXM6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghY29uZmlnLnJlc29sdmUuYWxpYXMpIHtcbiAgICAgICAgICBjb25maWcucmVzb2x2ZS5hbGlhcyA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIGNvbmZpZy5yZXNvbHZlLmFsaWFzWydAYW5ndWxhci9sb2NhbGl6ZS9pbml0J10gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgZmlsZSBoYXNoZXMgdG8gaW5jbHVkZSB0cmFuc2xhdGlvbiBmaWxlIGNvbnRlbnRcbiAgICBjb25zdCBpMThuSGFzaCA9IE9iamVjdC52YWx1ZXMoaTE4bi5sb2NhbGVzKS5yZWR1Y2UoXG4gICAgICAoZGF0YSwgbG9jYWxlKSA9PiBkYXRhICsgbG9jYWxlLmZpbGVzLm1hcCgoZmlsZSkgPT4gZmlsZS5pbnRlZ3JpdHkgfHwgJycpLmpvaW4oJ3wnKSxcbiAgICAgICcnLFxuICAgICk7XG5cbiAgICBjb25maWcucGx1Z2lucyA/Pz0gW107XG4gICAgY29uZmlnLnBsdWdpbnMucHVzaCh7XG4gICAgICBhcHBseShjb21waWxlcikge1xuICAgICAgICBjb21waWxlci5ob29rcy5jb21waWxhdGlvbi50YXAoJ2J1aWxkLWFuZ3VsYXInLCAoY29tcGlsYXRpb24pID0+IHtcbiAgICAgICAgICBqYXZhc2NyaXB0LkphdmFzY3JpcHRNb2R1bGVzUGx1Z2luLmdldENvbXBpbGF0aW9uSG9va3MoY29tcGlsYXRpb24pLmNodW5rSGFzaC50YXAoXG4gICAgICAgICAgICAnYnVpbGQtYW5ndWxhcicsXG4gICAgICAgICAgICAoXywgaGFzaCkgPT4ge1xuICAgICAgICAgICAgICBoYXNoLnVwZGF0ZSgnJGxvY2FsaXplJyArIGkxOG5IYXNoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHsgLi4ucmVzdWx0LCBpMThuIH07XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVCcm93c2VyV2VicGFja0NvbmZpZ0Zyb21Db250ZXh0KFxuICBvcHRpb25zOiBCcm93c2VyQnVpbGRlclNjaGVtYSxcbiAgY29udGV4dDogQnVpbGRlckNvbnRleHQsXG4gIHdlYnBhY2tQYXJ0aWFsR2VuZXJhdG9yOiBXZWJwYWNrUGFydGlhbEdlbmVyYXRvcixcbiAgZXh0cmFCdWlsZE9wdGlvbnM6IFBhcnRpYWw8Tm9ybWFsaXplZEJyb3dzZXJCdWlsZGVyU2NoZW1hPiA9IHt9LFxuKTogUHJvbWlzZTx7IGNvbmZpZzogQ29uZmlndXJhdGlvbjsgcHJvamVjdFJvb3Q6IHN0cmluZzsgcHJvamVjdFNvdXJjZVJvb3Q/OiBzdHJpbmcgfT4ge1xuICBjb25zdCBwcm9qZWN0TmFtZSA9IGNvbnRleHQudGFyZ2V0ICYmIGNvbnRleHQudGFyZ2V0LnByb2plY3Q7XG4gIGlmICghcHJvamVjdE5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBidWlsZGVyIHJlcXVpcmVzIGEgdGFyZ2V0LicpO1xuICB9XG5cbiAgY29uc3Qgd29ya3NwYWNlUm9vdCA9IGNvbnRleHQud29ya3NwYWNlUm9vdDtcbiAgY29uc3QgcHJvamVjdE1ldGFkYXRhID0gYXdhaXQgY29udGV4dC5nZXRQcm9qZWN0TWV0YWRhdGEocHJvamVjdE5hbWUpO1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHBhdGguam9pbih3b3Jrc3BhY2VSb290LCAocHJvamVjdE1ldGFkYXRhLnJvb3QgYXMgc3RyaW5nIHwgdW5kZWZpbmVkKSA/PyAnJyk7XG4gIGNvbnN0IHNvdXJjZVJvb3QgPSBwcm9qZWN0TWV0YWRhdGEuc291cmNlUm9vdCBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGNvbnN0IHByb2plY3RTb3VyY2VSb290ID0gc291cmNlUm9vdCA/IHBhdGguam9pbih3b3Jrc3BhY2VSb290LCBzb3VyY2VSb290KSA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBub3JtYWxpemVkT3B0aW9ucyA9IG5vcm1hbGl6ZUJyb3dzZXJTY2hlbWEoXG4gICAgd29ya3NwYWNlUm9vdCxcbiAgICBwcm9qZWN0Um9vdCxcbiAgICBwcm9qZWN0U291cmNlUm9vdCxcbiAgICBvcHRpb25zLFxuICAgIHByb2plY3RNZXRhZGF0YSxcbiAgICBjb250ZXh0LmxvZ2dlcixcbiAgKTtcblxuICBjb25zdCBjb25maWcgPSBhd2FpdCBnZW5lcmF0ZVdlYnBhY2tDb25maWcoXG4gICAgd29ya3NwYWNlUm9vdCxcbiAgICBwcm9qZWN0Um9vdCxcbiAgICBwcm9qZWN0U291cmNlUm9vdCxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICBub3JtYWxpemVkT3B0aW9ucyxcbiAgICB3ZWJwYWNrUGFydGlhbEdlbmVyYXRvcixcbiAgICBjb250ZXh0LmxvZ2dlcixcbiAgICBleHRyYUJ1aWxkT3B0aW9ucyxcbiAgKTtcblxuICAvLyBJZiBidWlsZGVyIHdhdGNoIHN1cHBvcnQgaXMgcHJlc2VudCBpbiB0aGUgY29udGV4dCwgYWRkIHdhdGNoIHBsdWdpblxuICAvLyBUaGlzIGlzIGludGVybmFsIG9ubHkgYW5kIGN1cnJlbnRseSBvbmx5IHVzZWQgZm9yIHRlc3RpbmdcbiAgY29uc3Qgd2F0Y2hlckZhY3RvcnkgPSAoXG4gICAgY29udGV4dCBhcyB7XG4gICAgICB3YXRjaGVyRmFjdG9yeT86IEJ1aWxkZXJXYXRjaGVyRmFjdG9yeTtcbiAgICB9XG4gICkud2F0Y2hlckZhY3Rvcnk7XG4gIGlmICh3YXRjaGVyRmFjdG9yeSkge1xuICAgIGlmICghY29uZmlnLnBsdWdpbnMpIHtcbiAgICAgIGNvbmZpZy5wbHVnaW5zID0gW107XG4gICAgfVxuICAgIGNvbmZpZy5wbHVnaW5zLnB1c2gobmV3IEJ1aWxkZXJXYXRjaFBsdWdpbih3YXRjaGVyRmFjdG9yeSkpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb25maWcsXG4gICAgcHJvamVjdFJvb3QsXG4gICAgcHJvamVjdFNvdXJjZVJvb3QsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmRleE91dHB1dEZpbGUoaW5kZXg6IEJyb3dzZXJCdWlsZGVyU2NoZW1hWydpbmRleCddKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBpbmRleCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcGF0aC5iYXNlbmFtZShpbmRleCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGluZGV4Lm91dHB1dCB8fCAnaW5kZXguaHRtbCc7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluZGV4SW5wdXRGaWxlKGluZGV4OiBCcm93c2VyQnVpbGRlclNjaGVtYVsnaW5kZXgnXSk6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgaW5kZXggPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbmRleC5pbnB1dDtcbiAgfVxufVxuIl19