@workflow/builders 5.0.0-beta.43 → 5.0.0-beta.46

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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/base-builder.d.ts +19 -2
  3. package/dist/base-builder.d.ts.map +1 -1
  4. package/dist/base-builder.js +77 -56
  5. package/dist/constants.d.ts +2 -2
  6. package/dist/constants.js +3 -3
  7. package/dist/fast-discovery.d.ts +1 -1
  8. package/dist/fast-discovery.js +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -1
  12. package/dist/manifest-ids.d.ts +35 -0
  13. package/dist/manifest-ids.d.ts.map +1 -0
  14. package/dist/manifest-ids.js +69 -0
  15. package/dist/manifest-ids.test.d.ts +2 -0
  16. package/dist/manifest-ids.test.d.ts.map +1 -0
  17. package/dist/manifest-ids.test.js +86 -0
  18. package/dist/module-specifier.d.ts +1 -1
  19. package/dist/module-specifier.js +2 -2
  20. package/dist/node-module-esbuild-plugin.js +3 -3
  21. package/dist/optional-otel-api.d.ts +1 -1
  22. package/dist/optional-otel-api.js +2 -2
  23. package/dist/optional-typescript.js +2 -2
  24. package/dist/optional-ws-native.d.ts +1 -1
  25. package/dist/optional-ws-native.js +2 -2
  26. package/dist/step-source-registration.test.js +61 -1
  27. package/dist/swc-esbuild-plugin.d.ts +1 -1
  28. package/dist/swc-esbuild-plugin.d.ts.map +1 -1
  29. package/dist/swc-esbuild-plugin.js +14 -42
  30. package/dist/swc-esbuild-plugin.test.js +81 -1
  31. package/dist/types.d.ts +3 -3
  32. package/dist/types.js +1 -1
  33. package/dist/vercel-build-output-api.js +2 -2
  34. package/dist/workflow-bundle-boundary.test.d.ts +2 -0
  35. package/dist/workflow-bundle-boundary.test.d.ts.map +1 -0
  36. package/dist/workflow-bundle-boundary.test.js +78 -0
  37. package/dist/write-if-changed.d.ts +20 -0
  38. package/dist/write-if-changed.d.ts.map +1 -0
  39. package/dist/write-if-changed.js +44 -0
  40. package/dist/write-if-changed.test.d.ts +2 -0
  41. package/dist/write-if-changed.test.d.ts.map +1 -0
  42. package/dist/write-if-changed.test.js +186 -0
  43. package/package.json +4 -4
@@ -255,8 +255,8 @@ export function createNodeModuleErrorPlugin() {
255
255
  // Enable the esbuild metafile so we can inspect which Node.js / Bun
256
256
  // built-in imports actually survive tree-shaking. We need this to
257
257
  // suppress false positives where a shared module has a workflow-safe
258
- // export alongside a step-only export that references Node.js builtins
259
- // esbuild's tree-shaker can drop the step-only branch, but `onResolve`
258
+ // export alongside a step-only export that references Node.js builtins.
259
+ // esbuild's tree-shaker can drop the step-only branch, but `onResolve`
260
260
  // fires before tree-shaking, so we defer the final error decision to
261
261
  // `onEnd` (see the metafile-based filter below).
262
262
  build.initialOptions.metafile = true;
@@ -429,4 +429,4 @@ export function createNodeModuleErrorPlugin() {
429
429
  },
430
430
  };
431
431
  }
432
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLGNBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLHVCQUF1QixNQUFNLGtCQUFrQixDQUFDO0FBR3ZELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRTNELDZDQUE2QztBQUM3Qyw4Q0FBOEM7QUFDOUMsb0RBQW9EO0FBQ3BELCtEQUErRDtBQUMvRCxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBRTNELHFCQUFxQjtBQUNyQix3QkFBd0I7QUFDeEIsb0RBQW9EO0FBQ3BELE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQztBQUVwQyxrREFBa0Q7QUFDbEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLE1BQU0sQ0FDcEMsYUFBYSxrQkFBa0IsY0FBYyxDQUM5QyxDQUFDO0FBU0Y7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsUUFBZ0I7SUFDN0MsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUM7SUFDaEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxN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RSxFQUFFLENBQ3JDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ3RDO29CQUNILENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztnQkFFdEIsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUM7b0JBQUUsT0FBTztnQkFFeEMsT0FBTztvQkFDTCxNQUFNLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUN2QyxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxXQUFXLENBQ3RCLENBQUM7d0JBQ0YsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUV0RCx3RUFBd0U7d0JBQ3hFLE1BQU0sSUFBSSxHQUFHLGVBQWU7NEJBQzFCLENBQUMsQ0FBQyw4QkFBOEIsU0FBUyxDQUFDLFdBQVcsZ0JBQWdCLFVBQVUsWUFBWSxVQUFVLGlHQUFpRyxXQUFXLENBQUMsMEJBQTBCLEVBQUU7NEJBQzlPLENBQUMsQ0FBQyw4QkFBOEIsU0FBUyxDQUFDLFdBQVcsc0JBQXNCLFVBQVUscUNBQXFDLFVBQVUsaUdBQWlHLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO3dCQUVoUixPQUFPOzRCQUNMLElBQUk7NEJBQ0osUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO2dDQUMxQixDQUFDLENBQUM7b0NBQ0UsR0FBRyxTQUFTLENBQUMsUUFBUTtvQ0FDckIsVUFBVSxFQUFFLDBDQUEwQztpQ0FDdkQ7Z0NBQ0gsQ0FBQyxDQUFDLFNBQVM7eUJBQ2QsQ0FBQztvQkFDSixDQUFDLENBQUM7aUJBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IG5vcm1hbGl6ZSwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IEVSUk9SX1NMVUdTIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgYnVpbHRpbk1vZHVsZXMgZnJvbSAnYnVpbHRpbi1tb2R1bGVzJztcbmltcG9ydCBlbmhhbmNlZFJlc29sdmVPcmlnaW5hbCBmcm9tICdlbmhhbmNlZC1yZXNvbHZlJztcbmltcG9ydCB0eXBlICogYXMgZXNidWlsZCBmcm9tICdlc2J1aWxkJztcblxuY29uc3QgZW5oYW5jZWRSZXNvbHZlID0gcHJvbWlzaWZ5KGVuaGFuY2VkUmVzb2x2ZU9yaWdpbmFsKTtcblxuLy8gTWF0Y2ggZXhhY3QgTm9kZS5qcyBidWlsdC1pbiBtb2R1bGUgbmFtZXM6XG4vLyAtIFwiZnNcIiwgXCJwYXRoXCIsIFwic3RyZWFtXCIgZXRjLiAoZXhhY3QgbWF0Y2gpXG4vLyAtIFwibm9kZTpmc1wiLCBcIm5vZGU6cGF0aFwiIGV0Yy4gKHdpdGggbm9kZTogcHJlZml4KVxuLy8gQnV0IE5PVCBcInNvbWUtcGFja2FnZS9zdHJlYW1cIiBvciBcImV2ZW50c291cmNlLXBhcnNlci9zdHJlYW1cIlxuY29uc3Qgbm9kZU1vZHVsZXNQYXR0ZXJuID0gYCgke2J1aWx0aW5Nb2R1bGVzLmpvaW4oJ3wnKX0pYDtcblxuLy8gTWF0Y2ggQnVuIG1vZHVsZXM6XG4vLyAtIFwiYnVuXCIgKGV4YWN0IG1hdGNoKVxuLy8gLSBcImJ1bjpzcWxpdGVcIiwgXCJidW46ZmZpXCIgZXRjLiAod2l0aCBidW46IHByZWZpeClcbmNvbnN0IGJ1bk1vZHVsZXNSZWdleCA9IC9eYnVuKDp8JCkvO1xuXG4vLyBDb21iaW5lZCByZWdleCBmb3IgYm90aCBOb2RlLmpzIGFuZCBCdW4gbW9kdWxlc1xuY29uc3QgcnVudGltZU1vZHVsZXNSZWdleCA9IG5ldyBSZWdFeHAoXG4gIGBeKChub2RlOik/JHtub2RlTW9kdWxlc1BhdHRlcm59fGJ1big6LiopPykkYFxuKTtcblxudHlwZSBQYWNrYWdlVmlvbGF0aW9uID0ge1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBpbXBvcnRlcjogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGxvY2F0aW9uOiBQYXJ0aWFsPGVzYnVpbGQuTG9jYXRpb24+O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIGEgZmlsZSBwYXRoLlxuICogQHBhcmFtIGZpbGVQYXRoIC0gVGhlIGZpbGUgcGF0aCB0byBnZXQgdGhlIHBhY2thZ2UgbmFtZSBmcm9tLlxuICogQHJldHVybnMgVGhlIHBhY2thZ2UgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VOYW1lKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgY29uc3QgbWFya2VyID0gJy9ub2RlX21vZHVsZXMvJztcbiAgY29uc3QgaWR4ID0gbm9ybWFsaXplZC5sYXN0SW5kZXhPZihtYXJrZXIpO1xuICBpZiAoaWR4ID09PSAtMSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgYWZ0ZXIgPSBub3JtYWxpemVkLnNsaWNlKGlkeCArIG1hcmtlci5sZW5ndGgpOyAvLyBlLmcuIFwiLnBucG0vbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvaW5kZXguanNcIlxuICBjb25zdCBzZWdtZW50cyA9IGFmdGVyLnNwbGl0KCcvJyk7XG4gIGlmICghc2VnbWVudHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICBsZXQgcGFja2FnZU5hbWUgPSBzZWdtZW50c1swXTtcblxuICAvLyBwbnBtIG5lc3RzOiBcIi5wbnBtLzxwa2c+QDx2ZXJzaW9uPi9ub2RlX21vZHVsZXMvPHBrZz4vLi4uXCJcbiAgaWYgKHBhY2thZ2VOYW1lID09PSAnLnBucG0nICYmIHNlZ21lbnRzLmxlbmd0aCA+PSAzKSB7XG4gICAgcGFja2FnZU5hbWUgPSBzZWdtZW50c1syXTtcbiAgfSBlbHNlIGlmIChwYWNrYWdlTmFtZS5zdGFydHNXaXRoKCdAJykgJiYgc2VnbWVudHMubGVuZ3RoID49IDIpIHtcbiAgICBwYWNrYWdlTmFtZSA9IGAke3NlZ21lbnRzWzBdfS8ke3NlZ21lbnRzWzFdfWA7XG4gIH1cblxuICByZXR1cm4gcGFja2FnZU5hbWU7XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYWNrYWdlIG5hbWUgZnJvbSBhbiBpbXBvcnQgc3BlY2lmaWVyLlxuICogQHBhcmFtIHNwZWNpZmllciAtIFRoZSBpbXBvcnQgc3BlY2lmaWVyIHRvIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhY2thZ2UgbmFtZSAoZm9yIGJhcmUgcGFja2FnZSBpbXBvcnRzKSwgb3RoZXJ3aXNlIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdldFBhY2thZ2VOYW1lRnJvbVNwZWNpZmllcihzcGVjaWZpZXI6IHN0cmluZykge1xuICAvLyBOb3QgYSBiYXJlIHBhY2thZ2Ugc3BlY2lmaWVyIChyZWxhdGl2ZSwgYWJzb2x1dGUsIG9yIFVSTC1saWtlKVxuICBpZiAoXG4gICAgIXNwZWNpZmllciB8fFxuICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcuJykgfHxcbiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycpIHx8XG4gICAgL15bQS1aYS16XTpbXFxcXC9dLy50ZXN0KHNwZWNpZmllcilcbiAgKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJZ25vcmUgcnVudGltZSBidWlsdC1pbnMgYW5kIFVSTC1saWtlIHNwZWNpZmllcnNcbiAgaWYgKFxuICAgIHJ1bnRpbWVNb2R1bGVzUmVnZXgudGVzdChzcGVjaWZpZXIpIHx8XG4gICAgc3BlY2lmaWVyLmluY2x1ZGVzKCc6Ly8nKSB8fFxuICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcjJylcbiAgKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkID0gc3BlY2lmaWVyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgY29uc3QgW3Njb3BlLCBuYW1lXSA9IG5vcm1hbGl6ZWQuc3BsaXQoJy8nKTtcbiAgICBpZiAoIXNjb3BlIHx8ICFuYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3Njb3BlfS8ke25hbWV9YDtcbiAgfVxuXG4gIGNvbnN0IFtuYW1lXSA9IG5vcm1hbGl6ZWQuc3BsaXQoJy8nKTtcbiAgcmV0dXJuIG5hbWUgPz8gbnVsbDtcbn1cblxuLyoqXG4gKiBFc2NhcGUgYSByZWd1bGFyIGV4cHJlc3Npb24gc3RyaW5nLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAodmFsdWU6IHN0cmluZykge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGltcG9ydGVkIGlkZW50aWZpZXIgZnJvbSBhIHNwZWNpZmllci5cbiAqIEBwYXJhbSBzcGVjaWZpZXIgLSBUaGUgc3BlY2lmaWVyIHRvIGdldCB0aGUgaW1wb3J0ZWQgaWRlbnRpZmllciBmcm9tLlxuICogQHJldHVybnMgVGhlIGltcG9ydGVkIGlkZW50aWZpZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbXBvcnRlZElkZW50aWZpZXIoc3BlY2lmaWVyOiBzdHJpbmcpIHtcbiAgY29uc3QgbmFtZXNwYWNlTWF0Y2ggPSBzcGVjaWZpZXIubWF0Y2goL1xcKlxccythc1xccysoW0EtWmEtejAtOV8kXSspLyk7XG4gIGlmIChuYW1lc3BhY2VNYXRjaCkge1xuICAgIHJldHVybiBuYW1lc3BhY2VNYXRjaFsxXTtcbiAgfVxuXG4gIGlmIChzcGVjaWZpZXIuaW5jbHVkZXMoJ3snKSkge1xuICAgIGNvbnN0IGluc2lkZSA9IHNwZWNpZmllci5yZXBsYWNlKC9eW157XSpcXHsvLCAnJykucmVwbGFjZSgvXFx9LiokLywgJycpO1xuICAgIGNvbnN0IGZpcnN0TmFtZWQgPSBpbnNpZGVcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKCh0b2tlbikgPT4gdG9rZW4udHJpbSgpKVxuICAgICAgLmZpbmQoQm9vbGVhbik7XG5cbiAgICBpZiAoZmlyc3ROYW1lZCkge1xuICAgICAgY29uc3QgYWxpYXNNYXRjaCA9IGZpcnN0TmFtZWQubWF0Y2goXG4gICAgICAgIC8oW0EtWmEtejAtOV8kXSspXFxzK2FzXFxzKyhbQS1aYS16MC05XyRdKykvXG4gICAgICApO1xuICAgICAgaWYgKGFsaWFzTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIGFsaWFzTWF0Y2hbMl07XG4gICAgICB9XG4gICAgICAvLyBWYWxpZGF0ZSB0aGF0IGZpcnN0TmFtZWQgaXMgYSB2YWxpZCBpZGVudGlmaWVyIChub3QgZW1wdHkgYnJhY2VzIG9yIHdoaXRlc3BhY2UpXG4gICAgICBjb25zdCBpZGVudGlmaWVyTWF0Y2ggPSBmaXJzdE5hbWVkLm1hdGNoKC9eW0EtWmEtel8kXVtBLVphLXowLTlfJF0qLyk7XG4gICAgICBpZiAoaWRlbnRpZmllck1hdGNoKSB7XG4gICAgICAgIHJldHVybiBpZGVudGlmaWVyTWF0Y2hbMF07XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEVtcHR5IGJyYWNlcyBvciBubyB2YWxpZCBpZGVudGlmaWVyIGZvdW5kIC0gcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBkZWZhdWx0UGFydCA9IHNwZWNpZmllci5zcGxpdCgnLCcpWzBdPy50cmltKCk7XG4gIGlmIChkZWZhdWx0UGFydCAmJiBkZWZhdWx0UGFydCAhPT0gJyonKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRQYXJ0O1xuICB9XG59XG5cbi8qKlxuICogRmluZCB0aGUgdXNhZ2Ugb2YgYW4gaWRlbnRpZmllciBpbiBhIGxpc3Qgb2YgbGluZXMuXG4gKiBAcGFyYW0gbGluZXMgLSBUaGUgbGlzdCBvZiBsaW5lcyB0byBzZWFyY2ggaW4uXG4gKiBAcGFyYW0gc3RhcnRJbmRleCAtIFRoZSBpbmRleCB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS5cbiAqIEBwYXJhbSBpZGVudGlmaWVyIC0gVGhlIGlkZW50aWZpZXIgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIFRoZSB1c2FnZSBvZiB0aGUgaWRlbnRpZmllci5cbiAqL1xuZnVuY3Rpb24gZmluZElkZW50aWZpZXJVc2FnZShcbiAgbGluZXM6IHN0cmluZ1tdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGlkZW50aWZpZXI6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHVzYWdlUmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcYiR7ZXNjYXBlUmVnRXhwKGlkZW50aWZpZXIpfVxcXFxiYCk7XG4gIGxldCBpbkJsb2NrQ29tbWVudCA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAvLyBTdHJpcCBzdHJpbmcgbGl0ZXJhbHMgZmlyc3Qgc28gdGhhdCBjb21tZW50IGRlbGltaXRlcnMgaW5zaWRlIHN0cmluZ3NcbiAgICAvLyAoZS5nLiBgY29uc3QgcyA9IFwiLypcIjtgKSBkb24ndCBjb25mdXNlIHRoZSBjb21tZW50IHNjYW5uZXIuXG4gICAgY29uc3Qgc3RyaW5nc1N0cmlwcGVkID0gbGluZXNbaV1cbiAgICAgIC5yZXBsYWNlKC8nKD86W14nXFxcXF18XFxcXC4pKicvZywgKHMpID0+ICcgJy5yZXBlYXQocy5sZW5ndGgpKVxuICAgICAgLnJlcGxhY2UoL1wiKD86W15cIlxcXFxdfFxcXFwuKSpcIi9nLCAocykgPT4gJyAnLnJlcGVhdChzLmxlbmd0aCkpXG4gICAgICAucmVwbGFjZSgvYCg/OlteYFxcXFxdfFxcXFwuKSpgL2csIChzKSA9PiAnICcucmVwZWF0KHMubGVuZ3RoKSk7XG5cbiAgICBsZXQgbGluZSA9IHN0cmluZ3NTdHJpcHBlZDtcblxuICAgIC8vIEhhbmRsZSBtdWx0aS1saW5lIGJsb2NrIGNvbW1lbnRzIChpbmNsdWRpbmcgSlNEb2MpXG4gICAgaWYgKGluQmxvY2tDb21tZW50KSB7XG4gICAgICBjb25zdCBlbmRJZHggPSBsaW5lLmluZGV4T2YoJyovJyk7XG4gICAgICBpZiAoZW5kSWR4ID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxpbmUgPSAnICcucmVwZWF0KGVuZElkeCArIDIpICsgbGluZS5zbGljZShlbmRJZHggKyAyKTtcbiAgICAgIGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU2NhbiBmb3IgY29tbWVudHMsIHJlcGxhY2luZyB0aGVtIHdpdGggc3BhY2VzXG4gICAgbGV0IHByb2Nlc3NlZCA9ICcnO1xuICAgIGxldCBqID0gMDtcbiAgICB3aGlsZSAoaiA8IGxpbmUubGVuZ3RoKSB7XG4gICAgICBpZiAobGluZVtqXSA9PT0gJy8nICYmIGxpbmVbaiArIDFdID09PSAnLycpIHtcbiAgICAgICAgcHJvY2Vzc2VkICs9ICcgJy5yZXBlYXQobGluZS5sZW5ndGggLSBqKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAobGluZVtqXSA9PT0gJy8nICYmIGxpbmVbaiArIDFdID09PSAnKicpIHtcbiAgICAgICAgY29uc3QgZW5kSWR4ID0gbGluZS5pbmRleE9mKCcqLycsIGogKyAyKTtcbiAgICAgICAgaWYgKGVuZElkeCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCBsZW4gPSBlbmRJZHggKyAyIC0gajtcbiAgICAgICAgICBwcm9jZXNzZWQgKz0gJyAnLnJlcGVhdChsZW4pO1xuICAgICAgICAgIGogPSBlbmRJZHggKyAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3NlZCArPSAnICcucmVwZWF0KGxpbmUubGVuZ3RoIC0gaik7XG4gICAgICAgICAgaW5CbG9ja0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzZWQgKz0gbGluZVtqXTtcbiAgICAgICAgaiArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gcHJvY2Vzc2VkLm1hdGNoKHVzYWdlUmVnZXgpO1xuICAgIGlmIChtYXRjaCAmJiBtYXRjaC5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBpLFxuICAgICAgICBjb2x1bW46IG1hdGNoLmluZGV4LFxuICAgICAgICBsaW5lVGV4dDogbGluZXNbaV0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgbG9jYXRpb24gb2YgYSB2aW9sYXRpb24uXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIC0gVGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIGZpbGUuXG4gKiBAcGFyYW0gcGFja2FnZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZS5cbiAqIEByZXR1cm5zIFRoZSBsb2NhdGlvbiBvZiB0aGUgdmlvbGF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VmlvbGF0aW9uTG9jYXRpb24oXG4gIGN3ZDogc3RyaW5nLFxuICByZWxhdGl2ZVBhdGg6IHN0cmluZyxcbiAgcGFja2FnZU5hbWU6IHN0cmluZ1xuKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShjd2QsIHJlbGF0aXZlUGF0aCk7XG4gICAgY29uc3QgY29udGVudHMgPSBhd2FpdCByZWFkRmlsZShhYnNvbHV0ZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgbGluZXMgPSBjb250ZW50cy5zcGxpdCgvXFxyP1xcbi8pO1xuXG4gICAgY29uc3QgaW1wb3J0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgYGltcG9ydFxcXFxzKyguKz8pXFxcXHMrZnJvbVxcXFxzK1snXCJdJHtlc2NhcGVSZWdFeHAocGFja2FnZU5hbWUpfSg/Oi9bXidcIl0qKT9bJ1wiXWBcbiAgICApO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgICAgY29uc3QgaW1wb3J0TWF0Y2ggPSBsaW5lLm1hdGNoKGltcG9ydFJlZ2V4KTtcblxuICAgICAgaWYgKGltcG9ydE1hdGNoICYmIGltcG9ydE1hdGNoLmluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWVyID0gaW1wb3J0TWF0Y2hbMV0udHJpbSgpO1xuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gZ2V0SW1wb3J0ZWRJZGVudGlmaWVyKHNwZWNpZmllcik7XG4gICAgICAgIGlmIChpZGVudGlmaWVyKSB7XG4gICAgICAgICAgY29uc3QgdXNhZ2UgPSBmaW5kSWRlbnRpZmllclVzYWdlKGxpbmVzLCBpICsgMSwgaWRlbnRpZmllcik7XG4gICAgICAgICAgaWYgKHVzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmaWxlOiByZWxhdGl2ZVBhdGgsXG4gICAgICAgICAgICAgIGxpbmU6IHVzYWdlLmxpbmUgKyAxLFxuICAgICAgICAgICAgICBjb2x1bW46IHVzYWdlLmNvbHVtbixcbiAgICAgICAgICAgICAgbGluZVRleHQ6IHVzYWdlLmxpbmVUZXh0LFxuICAgICAgICAgICAgICBsZW5ndGg6IGlkZW50aWZpZXIubGVuZ3RoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZGVudGlmaWVyIGV4aXN0cyBidXQgaXMgbmV2ZXIgcmVmZXJlbmNlZDsgc3VyZmFjZSBubyBsb2NhdGlvblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjazogaWYgd2UgY2FuJ3QgZXh0cmFjdCBpZGVudGlmaWVyLCBwb2ludCB0byBwYWNrYWdlIG5hbWVcbiAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBsaW5lLmluZGV4T2YocGFja2FnZU5hbWUpO1xuICAgICAgICBpZiAoY29sdW1uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbGU6IHJlbGF0aXZlUGF0aCxcbiAgICAgICAgICAgIGxpbmU6IGkgKyAxLFxuICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgIGxpbmVUZXh0OiBsaW5lLFxuICAgICAgICAgICAgbGVuZ3RoOiBwYWNrYWdlTmFtZS5sZW5ndGgsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gaWdub3JlIGZpbGUgcmVhZCBmYWlsdXJlcywgZmFsbGJhY2sgdG8gbm8gbG9jYXRpb24gaW5mb1xuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBtb2R1bGUgdHlwZSBsYWJlbCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gbW9kdWxlUGF0aCAtIFRoZSBtb2R1bGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRoZSBtb2R1bGUgdHlwZSBsYWJlbC5cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kdWxlVHlwZUxhYmVsKG1vZHVsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChidW5Nb2R1bGVzUmVnZXgudGVzdChtb2R1bGVQYXRoKSkge1xuICAgIHJldHVybiAnQnVuJztcbiAgfVxuICByZXR1cm4gJ05vZGUuanMnO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBlc2J1aWxkIHBsdWdpbiB0byBkZXRlY3QgdmlvbGF0aW9ucyBvZiB0aGUgTm9kZS5qcyBtb2R1bGUgdXNhZ2UgcnVsZS5cbiAqIFRoaXMgcGx1Z2luIHByZXZlbnRzIHdvcmtmbG93IGZ1bmN0aW9ucyBmcm9tIGltcG9ydGluZyBOb2RlLmpzIG9yIEJ1biBidWlsdC1pblxuICogbW9kdWxlcywgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIHNhbmRib3hlZCB3b3JrZmxvdyBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTm9kZU1vZHVsZUVycm9yUGx1Z2luKCk6IGVzYnVpbGQuUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd29ya2Zsb3ctbm9kZS1tb2R1bGUtZXJyb3InLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3QgaW1wb3J0UGFyZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICBjb25zdCBwYWNrYWdlVmlvbGF0aW9uczogUGFja2FnZVZpb2xhdGlvbltdID0gW107XG4gICAgICBjb25zdCBzZWVuVmlvbGF0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAvLyBFbmFibGUgdGhlIGVzYnVpbGQgbWV0YWZpbGUgc28gd2UgY2FuIGluc3BlY3Qgd2hpY2ggTm9kZS5qcyAvIEJ1blxuICAgICAgLy8gYnVpbHQtaW4gaW1wb3J0cyBhY3R1YWxseSBzdXJ2aXZlIHRyZWUtc2hha2luZy4gV2UgbmVlZCB0aGlzIHRvXG4gICAgICAvLyBzdXBwcmVzcyBmYWxzZSBwb3NpdGl2ZXMgd2hlcmUgYSBzaGFyZWQgbW9kdWxlIGhhcyBhIHdvcmtmbG93LXNhZmVcbiAgICAgIC8vIGV4cG9ydCBhbG9uZ3NpZGUgYSBzdGVwLW9ubHkgZXhwb3J0IHRoYXQgcmVmZXJlbmNlcyBOb2RlLmpzIGJ1aWx0aW5zXG4gICAgICAvLyDigJQgZXNidWlsZCdzIHRyZWUtc2hha2VyIGNhbiBkcm9wIHRoZSBzdGVwLW9ubHkgYnJhbmNoLCBidXQgYG9uUmVzb2x2ZWBcbiAgICAgIC8vIGZpcmVzIGJlZm9yZSB0cmVlLXNoYWtpbmcsIHNvIHdlIGRlZmVyIHRoZSBmaW5hbCBlcnJvciBkZWNpc2lvbiB0b1xuICAgICAgLy8gYG9uRW5kYCAoc2VlIHRoZSBtZXRhZmlsZS1iYXNlZCBmaWx0ZXIgYmVsb3cpLlxuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMubWV0YWZpbGUgPSB0cnVlO1xuXG4gICAgICAvLyBUcmFjayBBTEwgaW1wb3J0IHJlbGF0aW9uc2hpcHMgdG8gYnVpbGQgdGhlIGRlcGVuZGVuY3kgZ3JhcGguXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byB0cmFjZSB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyBiYWNrIHRvIHVzZXIgY29kZS5cbiAgICAgIC8vIFBlcmZvcm1hbmNlIGltcGFjdCBpcyBtaW5pbWFsIGFzIHdlIG9ubHkgc3RvcmUgcGF0aCBtYXBwaW5ncy5cbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLyB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBpZiAoIWFyZ3MuaW1wb3J0ZXIpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudFZhbHVlID0gbm9ybWFsaXplKGFyZ3MuaW1wb3J0ZXIpO1xuICAgICAgICBjb25zdCBzcGVjaWZpZXJQYWNrYWdlTmFtZSA9IGdldFBhY2thZ2VOYW1lRnJvbVNwZWNpZmllcihhcmdzLnBhdGgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRDaGlsZCA9IGF3YWl0IGVuaGFuY2VkUmVzb2x2ZShcbiAgICAgICAgICAgIGFyZ3MucmVzb2x2ZURpcixcbiAgICAgICAgICAgIGFyZ3MucGF0aFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAocmVzb2x2ZWRDaGlsZCkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRLZXkgPSBub3JtYWxpemUocmVzb2x2ZWRDaGlsZCk7XG4gICAgICAgICAgICBpbXBvcnRQYXJlbnRzLnNldChjaGlsZEtleSwgcGFyZW50VmFsdWUpO1xuXG4gICAgICAgICAgICAvLyBSZWNvcmQgdGhlIHJlc29sdmVkIHBhY2thZ2UgZWRnZSBzbyB0cmFuc2l0aXZlIGJ1aWx0aW4gdXNhZ2UgY2FuXG4gICAgICAgICAgICAvLyBzdGlsbCB0cmFjZSBiYWNrIGV2ZW4gd2hlbiBlc2J1aWxkIGFuZCBlbmhhbmNlZC1yZXNvbHZlIHBpY2tcbiAgICAgICAgICAgIC8vIGRpZmZlcmVudCBlbnRyeSBmaWxlcyAoZS5nLiBgbW9kdWxlYCB2cyBgbWFpbmApLlxuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQYWNrYWdlTmFtZSA9IGdldFBhY2thZ2VOYW1lKGNoaWxkS2V5KTtcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZFBhY2thZ2VOYW1lKSB7XG4gICAgICAgICAgICAgIGltcG9ydFBhcmVudHMuc2V0KHJlc29sdmVkUGFja2FnZU5hbWUsIHBhcmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBbHNvIHByZXNlcnZlIHRoZSBiYXJlIHBhY2thZ2Utc3BlY2lmaWVyIGVkZ2UgKGUuZy4gXCJwb3N0Z3Jlc1wiKSxcbiAgICAgICAgICAvLyB3aGljaCBpcyB0aGUgZmFsbGJhY2sga2V5IHVzZWQgd2hlbiB0cmFjaW5nIGZyb20gZmlsZXMgaW5cbiAgICAgICAgICAvLyBub2RlX21vZHVsZXMgYmFjayB0byB1c2VyIGNvZGUuXG4gICAgICAgICAgaWYgKHNwZWNpZmllclBhY2thZ2VOYW1lKSB7XG4gICAgICAgICAgICBpbXBvcnRQYXJlbnRzLnNldChzcGVjaWZpZXJQYWNrYWdlTmFtZSwgcGFyZW50VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gRm9yIGJ1aWx0LWluIG1vZHVsZXMgdGhhdCBjYW4ndCBiZSByZXNvbHZlZCwgc3RpbGwgdHJhY2sgdXNpbmcgdGhlIGltcG9ydCBwYXRoXG4gICAgICAgICAgY29uc3QgY2hpbGRLZXkgPSBhcmdzLnBhdGg7XG4gICAgICAgICAgaW1wb3J0UGFyZW50cy5zZXQoY2hpbGRLZXksIHBhcmVudFZhbHVlKTtcblxuICAgICAgICAgIGlmIChzcGVjaWZpZXJQYWNrYWdlTmFtZSkge1xuICAgICAgICAgICAgaW1wb3J0UGFyZW50cy5zZXQoc3BlY2lmaWVyUGFja2FnZU5hbWUsIHBhcmVudFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgLy8gRGV0ZWN0IE5vZGUuanMgYW5kIEJ1biBtb2R1bGUgaW1wb3J0c1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiBydW50aW1lTW9kdWxlc1JlZ2V4IH0sIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGltcG9ydGVyUGF0aCA9IHJlc29sdmUoY3dkLCBhcmdzLmltcG9ydGVyKTtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBpbXBvcnRlclBhdGg7XG4gICAgICAgIGNvbnN0IGNoYWluOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICAgICAgaWYgKHZpc2l0ZWQuaGFzKGN1cnJlbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmlzaXRlZC5hZGQoY3VycmVudCk7XG4gICAgICAgICAgY2hhaW4ucHVzaChjdXJyZW50KTtcbiAgICAgICAgICBsZXQgbmV4dCA9IGltcG9ydFBhcmVudHMuZ2V0KGN1cnJlbnQpO1xuXG4gICAgICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCB0aGUgcGFyZW50IGFuZCBjdXJyZW50IGlzIGluIG5vZGVfbW9kdWxlcyxcbiAgICAgICAgICAvLyB0cnkgbG9va2luZyB1cCBieSBwb3RlbnRpYWwgcGFja2FnZSBpbXBvcnQgc3RyaW5nc1xuICAgICAgICAgIGlmICghbmV4dCAmJiBjdXJyZW50LmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSkge1xuICAgICAgICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSBnZXRQYWNrYWdlTmFtZShjdXJyZW50KTtcbiAgICAgICAgICAgIGlmIChwYWNrYWdlTmFtZSkge1xuICAgICAgICAgICAgICAvLyBUcnkgdGhlIHBhY2thZ2UgbmFtZSBkaXJlY3RseVxuICAgICAgICAgICAgICBuZXh0ID0gaW1wb3J0UGFyZW50cy5nZXQocGFja2FnZU5hbWUpO1xuICAgICAgICAgICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgICAgICAgICAvLyBUcnkgd2l0aCBub2RlOiBwcmVmaXhcbiAgICAgICAgICAgICAgICBuZXh0ID0gaW1wb3J0UGFyZW50cy5nZXQoYG5vZGU6JHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnQgPSBuZXh0ID8/ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQ2hhaW4gPSBjaGFpbi5maWx0ZXIoXG4gICAgICAgICAgKHBhdGgpID0+ICFwYXRoLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHdvcmtmbG93RmlsZSA9IGZpbHRlcmVkQ2hhaW5bMF0gPz8gaW1wb3J0ZXJQYXRoO1xuXG4gICAgICAgIGlmICghd29ya2Zsb3dGaWxlIHx8IHdvcmtmbG93RmlsZS5pbmNsdWRlcygnbm9kZV9tb2R1bGVzJykpIHtcbiAgICAgICAgICAvLyBNYXJrIGJ1aWx0aW4gaW1wb3J0cyBhcyBzaWRlLWVmZmVjdC1mcmVlIHNvIGVzYnVpbGQgY2FuIHRyZWUtc2hha2VcbiAgICAgICAgICAvLyB0aGVtIHdoZW4gdGhleSdyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVhZCAoZS5nLiBzdGVwLW9ubHkpIGNvZGVcbiAgICAgICAgICAvLyBwYXRocyBpbiBzaGFyZWQgbW9kdWxlcy4gVGhlIG9uRW5kIGZpbHRlciBiZWxvdyB1c2VzIHRoZSBtZXRhZmlsZVxuICAgICAgICAgIC8vIHRvIGRlY2lkZSB3aGljaCBpbXBvcnRzIGFjdHVhbGx5IHN1cnZpdmUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhdGg6IGFyZ3MucGF0aCxcbiAgICAgICAgICAgIGV4dGVybmFsOiB0cnVlLFxuICAgICAgICAgICAgc2lkZUVmZmVjdHM6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGltcG9ydGVyUGF0aC5pbmNsdWRlcygnbm9kZV9tb2R1bGVzJylcbiAgICAgICAgICA/IChnZXRQYWNrYWdlTmFtZShpbXBvcnRlclBhdGgpID8/IGFyZ3MucGF0aClcbiAgICAgICAgICA6IGFyZ3MucGF0aDtcblxuICAgICAgICBjb25zdCByZWxhdGl2ZVdvcmtmbG93RmlsZSA9IHJlbGF0aXZlKGN3ZCwgd29ya2Zsb3dGaWxlKTtcbiAgICAgICAgY29uc3QgdmlvbGF0aW9uS2V5ID0gYCR7cGFja2FnZU5hbWV9OiR7cmVsYXRpdmVXb3JrZmxvd0ZpbGV9YDtcblxuICAgICAgICBpZiAoIXNlZW5WaW9sYXRpb25zLmhhcyh2aW9sYXRpb25LZXkpKSB7XG4gICAgICAgICAgc2VlblZpb2xhdGlvbnMuYWRkKHZpb2xhdGlvbktleSk7XG4gICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBhd2FpdCBnZXRWaW9sYXRpb25Mb2NhdGlvbihcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgIHJlbGF0aXZlV29ya2Zsb3dGaWxlLFxuICAgICAgICAgICAgcGFja2FnZU5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIE9ubHkgcmVwb3J0IHZpb2xhdGlvbnMgd2hlcmUgd2UgY2FuIGZpbmQgdGhlIGltcG9ydCBsb2NhdGlvbi5cbiAgICAgICAgICAvLyBJZiB3ZSBjYW4ndCBmaW5kIGl0LCB0aGUgcGFja2FnZSBpcyBsaWtlbHkgYSB0cmFuc2l0aXZlIGRlcGVuZGVuY3lcbiAgICAgICAgICAvLyB0aGF0IHRoZSB1c2VyIGRpZG4ndCBkaXJlY3RseSBpbXBvcnQgLSB3ZSdsbCByZXBvcnQgdGhlIHRvcC1sZXZlbFxuICAgICAgICAgIC8vIHBhY2thZ2UgdGhleSBkaWQgaW1wb3J0IGluc3RlYWQuXG4gICAgICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICBwYWNrYWdlVmlvbGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgcGF0aDogYXJncy5wYXRoLFxuICAgICAgICAgICAgICBpbXBvcnRlcjogcmVsYXRpdmVXb3JrZmxvd0ZpbGUsXG4gICAgICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1hcmsgYnVpbHRpbiBpbXBvcnRzIGFzIHNpZGUtZWZmZWN0LWZyZWUgc28gZXNidWlsZCBjYW4gdHJlZS1zaGFrZVxuICAgICAgICAvLyB0aGVtIHdoZW4gdGhleSdyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVhZCAoZS5nLiBzdGVwLW9ubHkpIGNvZGVcbiAgICAgICAgLy8gcGF0aHMgaW4gc2hhcmVkIG1vZHVsZXMuIFRoZSBvbkVuZCBmaWx0ZXIgYmVsb3cgdXNlcyB0aGUgbWV0YWZpbGVcbiAgICAgICAgLy8gdG8gZGVjaWRlIHdoaWNoIGltcG9ydHMgYWN0dWFsbHkgc3Vydml2ZS5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBhcmdzLnBhdGgsXG4gICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgc2lkZUVmZmVjdHM6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlcG9ydCB2aW9sYXRpb25zIGF0IHRoZSBlbmQgb2YgdGhlIGJ1aWxkLCBmaWx0ZXJlZCB0byBvbmx5IHRob3NlXG4gICAgICAvLyB3aG9zZSBOb2RlLmpzIC8gQnVuIGJ1aWx0aW4gaW1wb3J0cyBhY3R1YWxseSBzdXJ2aXZlZCB0cmVlLXNoYWtpbmcuXG4gICAgICAvL1xuICAgICAgLy8gYG9uUmVzb2x2ZWAgZmlyZXMgZHVyaW5nIG1vZHVsZSBsb2FkaW5nLCBiZWZvcmUgZXNidWlsZCdzIHRyZWUtc2hha2VyXG4gICAgICAvLyBydW5zLiBUaGF0IG1lYW5zIGEgc2hhcmVkIG1vZHVsZSB3aG9zZSBzdGVwLW9ubHkgZXhwb3J0IHJlZmVyZW5jZXMgYVxuICAgICAgLy8gYnVpbHRpbiB3aWxsIHJlY29yZCBhIHZpb2xhdGlvbiBldmVuIGlmIHRoZSB3b3JrZmxvdyBuZXZlciB0b3VjaGVzXG4gICAgICAvLyB0aGF0IGV4cG9ydC4gQnkgbWFya2luZyBidWlsdGluIGltcG9ydHMgYXMgYHNpZGVFZmZlY3RzOiBmYWxzZWAgaW5cbiAgICAgIC8vIGBvblJlc29sdmVgIGFib3ZlLCBlc2J1aWxkIGNhbiBkcm9wIHN1Y2ggaW1wb3J0cyBmcm9tIHRoZSBvdXRwdXQuXG4gICAgICAvLyBIZXJlIHdlIGNvbnN1bHQgdGhlIG1ldGFmaWxlIHRvIHNlZSB3aGljaCBidWlsdGluIGltcG9ydHMgcmVtYWluXG4gICAgICAvLyBpbiB0aGUgZW1pdHRlZCBidW5kbGUgYW5kIG9ubHkgcmVwb3J0IHRob3NlLlxuICAgICAgYnVpbGQub25FbmQoKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocGFja2FnZVZpb2xhdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc3Vydml2aW5nQnVpbHRpbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0cyA9IHJlc3VsdC5tZXRhZmlsZT8ub3V0cHV0cztcbiAgICAgICAgaWYgKG91dHB1dHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBPYmplY3QudmFsdWVzKG91dHB1dHMpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGltcCBvZiBvdXRwdXQuaW1wb3J0cykge1xuICAgICAgICAgICAgICAvLyBFeHRlcm5hbCBpbXBvcnRzIGluIHRoZSBtZXRhZmlsZSBhcmUgcmVjb3JkZWQgd2l0aCB0aGUgcGF0aFxuICAgICAgICAgICAgICAvLyB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIGBvblJlc29sdmVgIChlLmcuIFwibm9kZTpmcy9wcm9taXNlc1wiLFxuICAgICAgICAgICAgICAvLyBcImZzXCIsIFwiYnVuOnNxbGl0ZVwiKS4gT25seSBjb2xsZWN0IHRoZSBvbmVzIHRoYXQgbWF0Y2hcbiAgICAgICAgICAgICAgLy8gTm9kZS5qcyAvIEJ1biBidWlsdGlucy5cbiAgICAgICAgICAgICAgaWYgKGltcC5leHRlcm5hbCAmJiBydW50aW1lTW9kdWxlc1JlZ2V4LnRlc3QoaW1wLnBhdGgpKSB7XG4gICAgICAgICAgICAgICAgc3Vydml2aW5nQnVpbHRpbnMuYWRkKGltcC5wYXRoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBtZXRhZmlsZSBpcyB1bmF2YWlsYWJsZSBmb3Igc29tZSByZWFzb24sIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyByZXBvcnRpbmcgYWxsIHJlY29yZGVkIHZpb2xhdGlvbnMgc28gd2UgbmV2ZXIgc2lsZW50bHkgc3VwcHJlc3NcbiAgICAgICAgLy8gcmVhbCBvbmVzLlxuICAgICAgICBjb25zdCBsaXZlVmlvbGF0aW9ucyA9IG91dHB1dHNcbiAgICAgICAgICA/IHBhY2thZ2VWaW9sYXRpb25zLmZpbHRlcigodmlvbGF0aW9uKSA9PlxuICAgICAgICAgICAgICBzdXJ2aXZpbmdCdWlsdGlucy5oYXModmlvbGF0aW9uLnBhdGgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBwYWNrYWdlVmlvbGF0aW9ucztcblxuICAgICAgICBpZiAobGl2ZVZpb2xhdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlcnJvcnM6IGxpdmVWaW9sYXRpb25zLm1hcCgodmlvbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0J1aWx0aW5Nb2R1bGUgPSBydW50aW1lTW9kdWxlc1JlZ2V4LnRlc3QoXG4gICAgICAgICAgICAgIHZpb2xhdGlvbi5wYWNrYWdlTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSBnZXRNb2R1bGVUeXBlTGFiZWwodmlvbGF0aW9uLnBhdGgpO1xuXG4gICAgICAgICAgICAvLyBEaWZmZXJlbnQgbWVzc2FnZXMgZm9yIGJ1aWx0LWluIG1vZHVsZXMgdnMgbnBtIHBhY2thZ2VzIHRoYXQgdXNlIHRoZW1cbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBpc0J1aWx0aW5Nb2R1bGVcbiAgICAgICAgICAgICAgPyBgWW91IGFyZSBhdHRlbXB0aW5nIHRvIHVzZSBcIiR7dmlvbGF0aW9uLnBhY2thZ2VOYW1lfVwiIHdoaWNoIGlzIGEgJHttb2R1bGVUeXBlfSBtb2R1bGUuICR7bW9kdWxlVHlwZX0gbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSBpbiB3b3JrZmxvdyBmdW5jdGlvbnMuXFxuXFxuTGVhcm4gbW9yZTogaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2L2Vyci8ke0VSUk9SX1NMVUdTLk5PREVfSlNfTU9EVUxFX0lOX1dPUktGTE9XfWBcbiAgICAgICAgICAgICAgOiBgWW91IGFyZSBhdHRlbXB0aW5nIHRvIHVzZSBcIiR7dmlvbGF0aW9uLnBhY2thZ2VOYW1lfVwiIHdoaWNoIGRlcGVuZHMgb24gJHttb2R1bGVUeXBlfSBtb2R1bGVzLiBQYWNrYWdlcyB0aGF0IGRlcGVuZCBvbiAke21vZHVsZVR5cGV9IG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgaW4gd29ya2Zsb3cgZnVuY3Rpb25zLlxcblxcbkxlYXJuIG1vcmU6IGh0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi9lcnIvJHtFUlJPUl9TTFVHUy5OT0RFX0pTX01PRFVMRV9JTl9XT1JLRkxPV31gO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICBsb2NhdGlvbjogdmlvbGF0aW9uLmxvY2F0aW9uXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnZpb2xhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbjogJ01vdmUgdGhpcyBmdW5jdGlvbiBpbnRvIGEgc3RlcCBmdW5jdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
432
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbm9kZS1tb2R1bGUtZXNidWlsZC1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMvQyxPQUFPLGNBQWMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLHVCQUF1QixNQUFNLGtCQUFrQixDQUFDO0FBR3ZELE1BQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBRTNELDZDQUE2QztBQUM3Qyw4Q0FBOEM7QUFDOUMsb0RBQW9EO0FBQ3BELCtEQUErRDtBQUMvRCxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0FBRTNELHFCQUFxQjtBQUNyQix3QkFBd0I7QUFDeEIsb0RBQW9EO0FBQ3BELE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQztBQUVwQyxrREFBa0Q7QUFDbEQsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLE1BQU0sQ0FDcEMsYUFBYSxrQkFBa0IsY0FBYyxDQUM5QyxDQUFDO0FBU0Y7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsUUFBZ0I7SUFDN0MsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUM7SUFDaEMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLFdBQVcsQ0FBQyxN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RSxFQUFFLENBQ3JDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ3RDO29CQUNILENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztnQkFFdEIsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUM7b0JBQUUsT0FBTztnQkFFeEMsT0FBTztvQkFDTCxNQUFNLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUN2QyxNQUFNLGVBQWUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxXQUFXLENBQ3RCLENBQUM7d0JBQ0YsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUV0RCx3RUFBd0U7d0JBQ3hFLE1BQU0sSUFBSSxHQUFHLGVBQWU7NEJBQzFCLENBQUMsQ0FBQyw4QkFBOEIsU0FBUyxDQUFDLFdBQVcsZ0JBQWdCLFVBQVUsWUFBWSxVQUFVLGlHQUFpRyxXQUFXLENBQUMsMEJBQTBCLEVBQUU7NEJBQzlPLENBQUMsQ0FBQyw4QkFBOEIsU0FBUyxDQUFDLFdBQVcsc0JBQXNCLFVBQVUscUNBQXFDLFVBQVUsaUdBQWlHLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO3dCQUVoUixPQUFPOzRCQUNMLElBQUk7NEJBQ0osUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO2dDQUMxQixDQUFDLENBQUM7b0NBQ0UsR0FBRyxTQUFTLENBQUMsUUFBUTtvQ0FDckIsVUFBVSxFQUFFLDBDQUEwQztpQ0FDdkQ7Z0NBQ0gsQ0FBQyxDQUFDLFNBQVM7eUJBQ2QsQ0FBQztvQkFDSixDQUFDLENBQUM7aUJBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGUgfSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IG5vcm1hbGl6ZSwgcmVsYXRpdmUsIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IEVSUk9SX1NMVUdTIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgYnVpbHRpbk1vZHVsZXMgZnJvbSAnYnVpbHRpbi1tb2R1bGVzJztcbmltcG9ydCBlbmhhbmNlZFJlc29sdmVPcmlnaW5hbCBmcm9tICdlbmhhbmNlZC1yZXNvbHZlJztcbmltcG9ydCB0eXBlICogYXMgZXNidWlsZCBmcm9tICdlc2J1aWxkJztcblxuY29uc3QgZW5oYW5jZWRSZXNvbHZlID0gcHJvbWlzaWZ5KGVuaGFuY2VkUmVzb2x2ZU9yaWdpbmFsKTtcblxuLy8gTWF0Y2ggZXhhY3QgTm9kZS5qcyBidWlsdC1pbiBtb2R1bGUgbmFtZXM6XG4vLyAtIFwiZnNcIiwgXCJwYXRoXCIsIFwic3RyZWFtXCIgZXRjLiAoZXhhY3QgbWF0Y2gpXG4vLyAtIFwibm9kZTpmc1wiLCBcIm5vZGU6cGF0aFwiIGV0Yy4gKHdpdGggbm9kZTogcHJlZml4KVxuLy8gQnV0IE5PVCBcInNvbWUtcGFja2FnZS9zdHJlYW1cIiBvciBcImV2ZW50c291cmNlLXBhcnNlci9zdHJlYW1cIlxuY29uc3Qgbm9kZU1vZHVsZXNQYXR0ZXJuID0gYCgke2J1aWx0aW5Nb2R1bGVzLmpvaW4oJ3wnKX0pYDtcblxuLy8gTWF0Y2ggQnVuIG1vZHVsZXM6XG4vLyAtIFwiYnVuXCIgKGV4YWN0IG1hdGNoKVxuLy8gLSBcImJ1bjpzcWxpdGVcIiwgXCJidW46ZmZpXCIgZXRjLiAod2l0aCBidW46IHByZWZpeClcbmNvbnN0IGJ1bk1vZHVsZXNSZWdleCA9IC9eYnVuKDp8JCkvO1xuXG4vLyBDb21iaW5lZCByZWdleCBmb3IgYm90aCBOb2RlLmpzIGFuZCBCdW4gbW9kdWxlc1xuY29uc3QgcnVudGltZU1vZHVsZXNSZWdleCA9IG5ldyBSZWdFeHAoXG4gIGBeKChub2RlOik/JHtub2RlTW9kdWxlc1BhdHRlcm59fGJ1big6LiopPykkYFxuKTtcblxudHlwZSBQYWNrYWdlVmlvbGF0aW9uID0ge1xuICBwYWNrYWdlTmFtZTogc3RyaW5nO1xuICBpbXBvcnRlcjogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGxvY2F0aW9uOiBQYXJ0aWFsPGVzYnVpbGQuTG9jYXRpb24+O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHBhY2thZ2UgbmFtZSBmcm9tIGEgZmlsZSBwYXRoLlxuICogQHBhcmFtIGZpbGVQYXRoIC0gVGhlIGZpbGUgcGF0aCB0byBnZXQgdGhlIHBhY2thZ2UgbmFtZSBmcm9tLlxuICogQHJldHVybnMgVGhlIHBhY2thZ2UgbmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBhY2thZ2VOYW1lKGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGZpbGVQYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgY29uc3QgbWFya2VyID0gJy9ub2RlX21vZHVsZXMvJztcbiAgY29uc3QgaWR4ID0gbm9ybWFsaXplZC5sYXN0SW5kZXhPZihtYXJrZXIpO1xuICBpZiAoaWR4ID09PSAtMSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgYWZ0ZXIgPSBub3JtYWxpemVkLnNsaWNlKGlkeCArIG1hcmtlci5sZW5ndGgpOyAvLyBlLmcuIFwiLnBucG0vbm9kZS1mZXRjaEAzLjMuMi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9zcmMvaW5kZXguanNcIlxuICBjb25zdCBzZWdtZW50cyA9IGFmdGVyLnNwbGl0KCcvJyk7XG4gIGlmICghc2VnbWVudHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICBsZXQgcGFja2FnZU5hbWUgPSBzZWdtZW50c1swXTtcblxuICAvLyBwbnBtIG5lc3RzOiBcIi5wbnBtLzxwa2c+QDx2ZXJzaW9uPi9ub2RlX21vZHVsZXMvPHBrZz4vLi4uXCJcbiAgaWYgKHBhY2thZ2VOYW1lID09PSAnLnBucG0nICYmIHNlZ21lbnRzLmxlbmd0aCA+PSAzKSB7XG4gICAgcGFja2FnZU5hbWUgPSBzZWdtZW50c1syXTtcbiAgfSBlbHNlIGlmIChwYWNrYWdlTmFtZS5zdGFydHNXaXRoKCdAJykgJiYgc2VnbWVudHMubGVuZ3RoID49IDIpIHtcbiAgICBwYWNrYWdlTmFtZSA9IGAke3NlZ21lbnRzWzBdfS8ke3NlZ21lbnRzWzFdfWA7XG4gIH1cblxuICByZXR1cm4gcGFja2FnZU5hbWU7XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYWNrYWdlIG5hbWUgZnJvbSBhbiBpbXBvcnQgc3BlY2lmaWVyLlxuICogQHBhcmFtIHNwZWNpZmllciAtIFRoZSBpbXBvcnQgc3BlY2lmaWVyIHRvIHBhcnNlLlxuICogQHJldHVybnMgVGhlIHBhY2thZ2UgbmFtZSAoZm9yIGJhcmUgcGFja2FnZSBpbXBvcnRzKSwgb3RoZXJ3aXNlIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdldFBhY2thZ2VOYW1lRnJvbVNwZWNpZmllcihzcGVjaWZpZXI6IHN0cmluZykge1xuICAvLyBOb3QgYSBiYXJlIHBhY2thZ2Ugc3BlY2lmaWVyIChyZWxhdGl2ZSwgYWJzb2x1dGUsIG9yIFVSTC1saWtlKVxuICBpZiAoXG4gICAgIXNwZWNpZmllciB8fFxuICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcuJykgfHxcbiAgICBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycpIHx8XG4gICAgL15bQS1aYS16XTpbXFxcXC9dLy50ZXN0KHNwZWNpZmllcilcbiAgKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJZ25vcmUgcnVudGltZSBidWlsdC1pbnMgYW5kIFVSTC1saWtlIHNwZWNpZmllcnNcbiAgaWYgKFxuICAgIHJ1bnRpbWVNb2R1bGVzUmVnZXgudGVzdChzcGVjaWZpZXIpIHx8XG4gICAgc3BlY2lmaWVyLmluY2x1ZGVzKCc6Ly8nKSB8fFxuICAgIHNwZWNpZmllci5zdGFydHNXaXRoKCcjJylcbiAgKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBub3JtYWxpemVkID0gc3BlY2lmaWVyLnJlcGxhY2UoL1xcXFwvZywgJy8nKTtcbiAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgY29uc3QgW3Njb3BlLCBuYW1lXSA9IG5vcm1hbGl6ZWQuc3BsaXQoJy8nKTtcbiAgICBpZiAoIXNjb3BlIHx8ICFuYW1lKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3Njb3BlfS8ke25hbWV9YDtcbiAgfVxuXG4gIGNvbnN0IFtuYW1lXSA9IG5vcm1hbGl6ZWQuc3BsaXQoJy8nKTtcbiAgcmV0dXJuIG5hbWUgPz8gbnVsbDtcbn1cblxuLyoqXG4gKiBFc2NhcGUgYSByZWd1bGFyIGV4cHJlc3Npb24gc3RyaW5nLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHN0cmluZyB0byBlc2NhcGUuXG4gKiBAcmV0dXJucyBUaGUgZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVSZWdFeHAodmFsdWU6IHN0cmluZykge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csICdcXFxcJCYnKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGltcG9ydGVkIGlkZW50aWZpZXIgZnJvbSBhIHNwZWNpZmllci5cbiAqIEBwYXJhbSBzcGVjaWZpZXIgLSBUaGUgc3BlY2lmaWVyIHRvIGdldCB0aGUgaW1wb3J0ZWQgaWRlbnRpZmllciBmcm9tLlxuICogQHJldHVybnMgVGhlIGltcG9ydGVkIGlkZW50aWZpZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbXBvcnRlZElkZW50aWZpZXIoc3BlY2lmaWVyOiBzdHJpbmcpIHtcbiAgY29uc3QgbmFtZXNwYWNlTWF0Y2ggPSBzcGVjaWZpZXIubWF0Y2goL1xcKlxccythc1xccysoW0EtWmEtejAtOV8kXSspLyk7XG4gIGlmIChuYW1lc3BhY2VNYXRjaCkge1xuICAgIHJldHVybiBuYW1lc3BhY2VNYXRjaFsxXTtcbiAgfVxuXG4gIGlmIChzcGVjaWZpZXIuaW5jbHVkZXMoJ3snKSkge1xuICAgIGNvbnN0IGluc2lkZSA9IHNwZWNpZmllci5yZXBsYWNlKC9eW157XSpcXHsvLCAnJykucmVwbGFjZSgvXFx9LiokLywgJycpO1xuICAgIGNvbnN0IGZpcnN0TmFtZWQgPSBpbnNpZGVcbiAgICAgIC5zcGxpdCgnLCcpXG4gICAgICAubWFwKCh0b2tlbikgPT4gdG9rZW4udHJpbSgpKVxuICAgICAgLmZpbmQoQm9vbGVhbik7XG5cbiAgICBpZiAoZmlyc3ROYW1lZCkge1xuICAgICAgY29uc3QgYWxpYXNNYXRjaCA9IGZpcnN0TmFtZWQubWF0Y2goXG4gICAgICAgIC8oW0EtWmEtejAtOV8kXSspXFxzK2FzXFxzKyhbQS1aYS16MC05XyRdKykvXG4gICAgICApO1xuICAgICAgaWYgKGFsaWFzTWF0Y2gpIHtcbiAgICAgICAgcmV0dXJuIGFsaWFzTWF0Y2hbMl07XG4gICAgICB9XG4gICAgICAvLyBWYWxpZGF0ZSB0aGF0IGZpcnN0TmFtZWQgaXMgYSB2YWxpZCBpZGVudGlmaWVyIChub3QgZW1wdHkgYnJhY2VzIG9yIHdoaXRlc3BhY2UpXG4gICAgICBjb25zdCBpZGVudGlmaWVyTWF0Y2ggPSBmaXJzdE5hbWVkLm1hdGNoKC9eW0EtWmEtel8kXVtBLVphLXowLTlfJF0qLyk7XG4gICAgICBpZiAoaWRlbnRpZmllck1hdGNoKSB7XG4gICAgICAgIHJldHVybiBpZGVudGlmaWVyTWF0Y2hbMF07XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEVtcHR5IGJyYWNlcyBvciBubyB2YWxpZCBpZGVudGlmaWVyIGZvdW5kIC0gcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBkZWZhdWx0UGFydCA9IHNwZWNpZmllci5zcGxpdCgnLCcpWzBdPy50cmltKCk7XG4gIGlmIChkZWZhdWx0UGFydCAmJiBkZWZhdWx0UGFydCAhPT0gJyonKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRQYXJ0O1xuICB9XG59XG5cbi8qKlxuICogRmluZCB0aGUgdXNhZ2Ugb2YgYW4gaWRlbnRpZmllciBpbiBhIGxpc3Qgb2YgbGluZXMuXG4gKiBAcGFyYW0gbGluZXMgLSBUaGUgbGlzdCBvZiBsaW5lcyB0byBzZWFyY2ggaW4uXG4gKiBAcGFyYW0gc3RhcnRJbmRleCAtIFRoZSBpbmRleCB0byBzdGFydCBzZWFyY2hpbmcgZnJvbS5cbiAqIEBwYXJhbSBpZGVudGlmaWVyIC0gVGhlIGlkZW50aWZpZXIgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIFRoZSB1c2FnZSBvZiB0aGUgaWRlbnRpZmllci5cbiAqL1xuZnVuY3Rpb24gZmluZElkZW50aWZpZXJVc2FnZShcbiAgbGluZXM6IHN0cmluZ1tdLFxuICBzdGFydEluZGV4OiBudW1iZXIsXG4gIGlkZW50aWZpZXI6IHN0cmluZ1xuKSB7XG4gIGNvbnN0IHVzYWdlUmVnZXggPSBuZXcgUmVnRXhwKGBcXFxcYiR7ZXNjYXBlUmVnRXhwKGlkZW50aWZpZXIpfVxcXFxiYCk7XG4gIGxldCBpbkJsb2NrQ29tbWVudCA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSBzdGFydEluZGV4OyBpIDwgbGluZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAvLyBTdHJpcCBzdHJpbmcgbGl0ZXJhbHMgZmlyc3Qgc28gdGhhdCBjb21tZW50IGRlbGltaXRlcnMgaW5zaWRlIHN0cmluZ3NcbiAgICAvLyAoZS5nLiBgY29uc3QgcyA9IFwiLypcIjtgKSBkb24ndCBjb25mdXNlIHRoZSBjb21tZW50IHNjYW5uZXIuXG4gICAgY29uc3Qgc3RyaW5nc1N0cmlwcGVkID0gbGluZXNbaV1cbiAgICAgIC5yZXBsYWNlKC8nKD86W14nXFxcXF18XFxcXC4pKicvZywgKHMpID0+ICcgJy5yZXBlYXQocy5sZW5ndGgpKVxuICAgICAgLnJlcGxhY2UoL1wiKD86W15cIlxcXFxdfFxcXFwuKSpcIi9nLCAocykgPT4gJyAnLnJlcGVhdChzLmxlbmd0aCkpXG4gICAgICAucmVwbGFjZSgvYCg/OlteYFxcXFxdfFxcXFwuKSpgL2csIChzKSA9PiAnICcucmVwZWF0KHMubGVuZ3RoKSk7XG5cbiAgICBsZXQgbGluZSA9IHN0cmluZ3NTdHJpcHBlZDtcblxuICAgIC8vIEhhbmRsZSBtdWx0aS1saW5lIGJsb2NrIGNvbW1lbnRzIChpbmNsdWRpbmcgSlNEb2MpXG4gICAgaWYgKGluQmxvY2tDb21tZW50KSB7XG4gICAgICBjb25zdCBlbmRJZHggPSBsaW5lLmluZGV4T2YoJyovJyk7XG4gICAgICBpZiAoZW5kSWR4ID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGxpbmUgPSAnICcucmVwZWF0KGVuZElkeCArIDIpICsgbGluZS5zbGljZShlbmRJZHggKyAyKTtcbiAgICAgIGluQmxvY2tDb21tZW50ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU2NhbiBmb3IgY29tbWVudHMsIHJlcGxhY2luZyB0aGVtIHdpdGggc3BhY2VzXG4gICAgbGV0IHByb2Nlc3NlZCA9ICcnO1xuICAgIGxldCBqID0gMDtcbiAgICB3aGlsZSAoaiA8IGxpbmUubGVuZ3RoKSB7XG4gICAgICBpZiAobGluZVtqXSA9PT0gJy8nICYmIGxpbmVbaiArIDFdID09PSAnLycpIHtcbiAgICAgICAgcHJvY2Vzc2VkICs9ICcgJy5yZXBlYXQobGluZS5sZW5ndGggLSBqKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpZiAobGluZVtqXSA9PT0gJy8nICYmIGxpbmVbaiArIDFdID09PSAnKicpIHtcbiAgICAgICAgY29uc3QgZW5kSWR4ID0gbGluZS5pbmRleE9mKCcqLycsIGogKyAyKTtcbiAgICAgICAgaWYgKGVuZElkeCAhPT0gLTEpIHtcbiAgICAgICAgICBjb25zdCBsZW4gPSBlbmRJZHggKyAyIC0gajtcbiAgICAgICAgICBwcm9jZXNzZWQgKz0gJyAnLnJlcGVhdChsZW4pO1xuICAgICAgICAgIGogPSBlbmRJZHggKyAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3NlZCArPSAnICcucmVwZWF0KGxpbmUubGVuZ3RoIC0gaik7XG4gICAgICAgICAgaW5CbG9ja0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzZWQgKz0gbGluZVtqXTtcbiAgICAgICAgaiArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gcHJvY2Vzc2VkLm1hdGNoKHVzYWdlUmVnZXgpO1xuICAgIGlmIChtYXRjaCAmJiBtYXRjaC5pbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBpLFxuICAgICAgICBjb2x1bW46IG1hdGNoLmluZGV4LFxuICAgICAgICBsaW5lVGV4dDogbGluZXNbaV0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEdldCB0aGUgbG9jYXRpb24gb2YgYSB2aW9sYXRpb24uXG4gKiBAcGFyYW0gY3dkIC0gVGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIC0gVGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIGZpbGUuXG4gKiBAcGFyYW0gcGFja2FnZU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZS5cbiAqIEByZXR1cm5zIFRoZSBsb2NhdGlvbiBvZiB0aGUgdmlvbGF0aW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VmlvbGF0aW9uTG9jYXRpb24oXG4gIGN3ZDogc3RyaW5nLFxuICByZWxhdGl2ZVBhdGg6IHN0cmluZyxcbiAgcGFja2FnZU5hbWU6IHN0cmluZ1xuKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgYWJzb2x1dGVQYXRoID0gcmVzb2x2ZShjd2QsIHJlbGF0aXZlUGF0aCk7XG4gICAgY29uc3QgY29udGVudHMgPSBhd2FpdCByZWFkRmlsZShhYnNvbHV0ZVBhdGgsICd1dGY4Jyk7XG4gICAgY29uc3QgbGluZXMgPSBjb250ZW50cy5zcGxpdCgvXFxyP1xcbi8pO1xuXG4gICAgY29uc3QgaW1wb3J0UmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgYGltcG9ydFxcXFxzKyguKz8pXFxcXHMrZnJvbVxcXFxzK1snXCJdJHtlc2NhcGVSZWdFeHAocGFja2FnZU5hbWUpfSg/Oi9bXidcIl0qKT9bJ1wiXWBcbiAgICApO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgbGluZSA9IGxpbmVzW2ldO1xuICAgICAgY29uc3QgaW1wb3J0TWF0Y2ggPSBsaW5lLm1hdGNoKGltcG9ydFJlZ2V4KTtcblxuICAgICAgaWYgKGltcG9ydE1hdGNoICYmIGltcG9ydE1hdGNoLmluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3Qgc3BlY2lmaWVyID0gaW1wb3J0TWF0Y2hbMV0udHJpbSgpO1xuICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gZ2V0SW1wb3J0ZWRJZGVudGlmaWVyKHNwZWNpZmllcik7XG4gICAgICAgIGlmIChpZGVudGlmaWVyKSB7XG4gICAgICAgICAgY29uc3QgdXNhZ2UgPSBmaW5kSWRlbnRpZmllclVzYWdlKGxpbmVzLCBpICsgMSwgaWRlbnRpZmllcik7XG4gICAgICAgICAgaWYgKHVzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmaWxlOiByZWxhdGl2ZVBhdGgsXG4gICAgICAgICAgICAgIGxpbmU6IHVzYWdlLmxpbmUgKyAxLFxuICAgICAgICAgICAgICBjb2x1bW46IHVzYWdlLmNvbHVtbixcbiAgICAgICAgICAgICAgbGluZVRleHQ6IHVzYWdlLmxpbmVUZXh0LFxuICAgICAgICAgICAgICBsZW5ndGg6IGlkZW50aWZpZXIubGVuZ3RoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZGVudGlmaWVyIGV4aXN0cyBidXQgaXMgbmV2ZXIgcmVmZXJlbmNlZDsgc3VyZmFjZSBubyBsb2NhdGlvblxuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjazogaWYgd2UgY2FuJ3QgZXh0cmFjdCBpZGVudGlmaWVyLCBwb2ludCB0byBwYWNrYWdlIG5hbWVcbiAgICAgICAgY29uc3QgY29sdW1uSW5kZXggPSBsaW5lLmluZGV4T2YocGFja2FnZU5hbWUpO1xuICAgICAgICBpZiAoY29sdW1uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZpbGU6IHJlbGF0aXZlUGF0aCxcbiAgICAgICAgICAgIGxpbmU6IGkgKyAxLFxuICAgICAgICAgICAgY29sdW1uOiBjb2x1bW5JbmRleCxcbiAgICAgICAgICAgIGxpbmVUZXh0OiBsaW5lLFxuICAgICAgICAgICAgbGVuZ3RoOiBwYWNrYWdlTmFtZS5sZW5ndGgsXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gaWdub3JlIGZpbGUgcmVhZCBmYWlsdXJlcywgZmFsbGJhY2sgdG8gbm8gbG9jYXRpb24gaW5mb1xuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBtb2R1bGUgdHlwZSBsYWJlbCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gbW9kdWxlUGF0aCAtIFRoZSBtb2R1bGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRoZSBtb2R1bGUgdHlwZSBsYWJlbC5cbiAqL1xuZnVuY3Rpb24gZ2V0TW9kdWxlVHlwZUxhYmVsKG1vZHVsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChidW5Nb2R1bGVzUmVnZXgudGVzdChtb2R1bGVQYXRoKSkge1xuICAgIHJldHVybiAnQnVuJztcbiAgfVxuICByZXR1cm4gJ05vZGUuanMnO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhbiBlc2J1aWxkIHBsdWdpbiB0byBkZXRlY3QgdmlvbGF0aW9ucyBvZiB0aGUgTm9kZS5qcyBtb2R1bGUgdXNhZ2UgcnVsZS5cbiAqIFRoaXMgcGx1Z2luIHByZXZlbnRzIHdvcmtmbG93IGZ1bmN0aW9ucyBmcm9tIGltcG9ydGluZyBOb2RlLmpzIG9yIEJ1biBidWlsdC1pblxuICogbW9kdWxlcywgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIHNhbmRib3hlZCB3b3JrZmxvdyBydW50aW1lLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTm9kZU1vZHVsZUVycm9yUGx1Z2luKCk6IGVzYnVpbGQuUGx1Z2luIHtcbiAgcmV0dXJuIHtcbiAgICBuYW1lOiAnd29ya2Zsb3ctbm9kZS1tb2R1bGUtZXJyb3InLFxuICAgIHNldHVwKGJ1aWxkKSB7XG4gICAgICBjb25zdCBjd2QgPSBwcm9jZXNzLmN3ZCgpO1xuICAgICAgY29uc3QgaW1wb3J0UGFyZW50cyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgICBjb25zdCBwYWNrYWdlVmlvbGF0aW9uczogUGFja2FnZVZpb2xhdGlvbltdID0gW107XG4gICAgICBjb25zdCBzZWVuVmlvbGF0aW9ucyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgICAvLyBFbmFibGUgdGhlIGVzYnVpbGQgbWV0YWZpbGUgc28gd2UgY2FuIGluc3BlY3Qgd2hpY2ggTm9kZS5qcyAvIEJ1blxuICAgICAgLy8gYnVpbHQtaW4gaW1wb3J0cyBhY3R1YWxseSBzdXJ2aXZlIHRyZWUtc2hha2luZy4gV2UgbmVlZCB0aGlzIHRvXG4gICAgICAvLyBzdXBwcmVzcyBmYWxzZSBwb3NpdGl2ZXMgd2hlcmUgYSBzaGFyZWQgbW9kdWxlIGhhcyBhIHdvcmtmbG93LXNhZmVcbiAgICAgIC8vIGV4cG9ydCBhbG9uZ3NpZGUgYSBzdGVwLW9ubHkgZXhwb3J0IHRoYXQgcmVmZXJlbmNlcyBOb2RlLmpzIGJ1aWx0aW5zLlxuICAgICAgLy8gZXNidWlsZCdzIHRyZWUtc2hha2VyIGNhbiBkcm9wIHRoZSBzdGVwLW9ubHkgYnJhbmNoLCBidXQgYG9uUmVzb2x2ZWBcbiAgICAgIC8vIGZpcmVzIGJlZm9yZSB0cmVlLXNoYWtpbmcsIHNvIHdlIGRlZmVyIHRoZSBmaW5hbCBlcnJvciBkZWNpc2lvbiB0b1xuICAgICAgLy8gYG9uRW5kYCAoc2VlIHRoZSBtZXRhZmlsZS1iYXNlZCBmaWx0ZXIgYmVsb3cpLlxuICAgICAgYnVpbGQuaW5pdGlhbE9wdGlvbnMubWV0YWZpbGUgPSB0cnVlO1xuXG4gICAgICAvLyBUcmFjayBBTEwgaW1wb3J0IHJlbGF0aW9uc2hpcHMgdG8gYnVpbGQgdGhlIGRlcGVuZGVuY3kgZ3JhcGguXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byB0cmFjZSB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyBiYWNrIHRvIHVzZXIgY29kZS5cbiAgICAgIC8vIFBlcmZvcm1hbmNlIGltcGFjdCBpcyBtaW5pbWFsIGFzIHdlIG9ubHkgc3RvcmUgcGF0aCBtYXBwaW5ncy5cbiAgICAgIGJ1aWxkLm9uUmVzb2x2ZSh7IGZpbHRlcjogLy4qLyB9LCBhc3luYyAoYXJncykgPT4ge1xuICAgICAgICBpZiAoIWFyZ3MuaW1wb3J0ZXIpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGNvbnN0IHBhcmVudFZhbHVlID0gbm9ybWFsaXplKGFyZ3MuaW1wb3J0ZXIpO1xuICAgICAgICBjb25zdCBzcGVjaWZpZXJQYWNrYWdlTmFtZSA9IGdldFBhY2thZ2VOYW1lRnJvbVNwZWNpZmllcihhcmdzLnBhdGgpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRDaGlsZCA9IGF3YWl0IGVuaGFuY2VkUmVzb2x2ZShcbiAgICAgICAgICAgIGFyZ3MucmVzb2x2ZURpcixcbiAgICAgICAgICAgIGFyZ3MucGF0aFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAocmVzb2x2ZWRDaGlsZCkge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRLZXkgPSBub3JtYWxpemUocmVzb2x2ZWRDaGlsZCk7XG4gICAgICAgICAgICBpbXBvcnRQYXJlbnRzLnNldChjaGlsZEtleSwgcGFyZW50VmFsdWUpO1xuXG4gICAgICAgICAgICAvLyBSZWNvcmQgdGhlIHJlc29sdmVkIHBhY2thZ2UgZWRnZSBzbyB0cmFuc2l0aXZlIGJ1aWx0aW4gdXNhZ2UgY2FuXG4gICAgICAgICAgICAvLyBzdGlsbCB0cmFjZSBiYWNrIGV2ZW4gd2hlbiBlc2J1aWxkIGFuZCBlbmhhbmNlZC1yZXNvbHZlIHBpY2tcbiAgICAgICAgICAgIC8vIGRpZmZlcmVudCBlbnRyeSBmaWxlcyAoZS5nLiBgbW9kdWxlYCB2cyBgbWFpbmApLlxuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQYWNrYWdlTmFtZSA9IGdldFBhY2thZ2VOYW1lKGNoaWxkS2V5KTtcbiAgICAgICAgICAgIGlmIChyZXNvbHZlZFBhY2thZ2VOYW1lKSB7XG4gICAgICAgICAgICAgIGltcG9ydFBhcmVudHMuc2V0KHJlc29sdmVkUGFja2FnZU5hbWUsIHBhcmVudFZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBbHNvIHByZXNlcnZlIHRoZSBiYXJlIHBhY2thZ2Utc3BlY2lmaWVyIGVkZ2UgKGUuZy4gXCJwb3N0Z3Jlc1wiKSxcbiAgICAgICAgICAvLyB3aGljaCBpcyB0aGUgZmFsbGJhY2sga2V5IHVzZWQgd2hlbiB0cmFjaW5nIGZyb20gZmlsZXMgaW5cbiAgICAgICAgICAvLyBub2RlX21vZHVsZXMgYmFjayB0byB1c2VyIGNvZGUuXG4gICAgICAgICAgaWYgKHNwZWNpZmllclBhY2thZ2VOYW1lKSB7XG4gICAgICAgICAgICBpbXBvcnRQYXJlbnRzLnNldChzcGVjaWZpZXJQYWNrYWdlTmFtZSwgcGFyZW50VmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gRm9yIGJ1aWx0LWluIG1vZHVsZXMgdGhhdCBjYW4ndCBiZSByZXNvbHZlZCwgc3RpbGwgdHJhY2sgdXNpbmcgdGhlIGltcG9ydCBwYXRoXG4gICAgICAgICAgY29uc3QgY2hpbGRLZXkgPSBhcmdzLnBhdGg7XG4gICAgICAgICAgaW1wb3J0UGFyZW50cy5zZXQoY2hpbGRLZXksIHBhcmVudFZhbHVlKTtcblxuICAgICAgICAgIGlmIChzcGVjaWZpZXJQYWNrYWdlTmFtZSkge1xuICAgICAgICAgICAgaW1wb3J0UGFyZW50cy5zZXQoc3BlY2lmaWVyUGFja2FnZU5hbWUsIHBhcmVudFZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgLy8gRGV0ZWN0IE5vZGUuanMgYW5kIEJ1biBtb2R1bGUgaW1wb3J0c1xuICAgICAgYnVpbGQub25SZXNvbHZlKHsgZmlsdGVyOiBydW50aW1lTW9kdWxlc1JlZ2V4IH0sIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICAgIGNvbnN0IGltcG9ydGVyUGF0aCA9IHJlc29sdmUoY3dkLCBhcmdzLmltcG9ydGVyKTtcbiAgICAgICAgbGV0IGN1cnJlbnQgPSBpbXBvcnRlclBhdGg7XG4gICAgICAgIGNvbnN0IGNoYWluOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICAgICAgaWYgKHZpc2l0ZWQuaGFzKGN1cnJlbnQpKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgdmlzaXRlZC5hZGQoY3VycmVudCk7XG4gICAgICAgICAgY2hhaW4ucHVzaChjdXJyZW50KTtcbiAgICAgICAgICBsZXQgbmV4dCA9IGltcG9ydFBhcmVudHMuZ2V0KGN1cnJlbnQpO1xuXG4gICAgICAgICAgLy8gSWYgd2UgY2FuJ3QgZmluZCB0aGUgcGFyZW50IGFuZCBjdXJyZW50IGlzIGluIG5vZGVfbW9kdWxlcyxcbiAgICAgICAgICAvLyB0cnkgbG9va2luZyB1cCBieSBwb3RlbnRpYWwgcGFja2FnZSBpbXBvcnQgc3RyaW5nc1xuICAgICAgICAgIGlmICghbmV4dCAmJiBjdXJyZW50LmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSkge1xuICAgICAgICAgICAgY29uc3QgcGFja2FnZU5hbWUgPSBnZXRQYWNrYWdlTmFtZShjdXJyZW50KTtcbiAgICAgICAgICAgIGlmIChwYWNrYWdlTmFtZSkge1xuICAgICAgICAgICAgICAvLyBUcnkgdGhlIHBhY2thZ2UgbmFtZSBkaXJlY3RseVxuICAgICAgICAgICAgICBuZXh0ID0gaW1wb3J0UGFyZW50cy5nZXQocGFja2FnZU5hbWUpO1xuICAgICAgICAgICAgICBpZiAoIW5leHQpIHtcbiAgICAgICAgICAgICAgICAvLyBUcnkgd2l0aCBub2RlOiBwcmVmaXhcbiAgICAgICAgICAgICAgICBuZXh0ID0gaW1wb3J0UGFyZW50cy5nZXQoYG5vZGU6JHtwYWNrYWdlTmFtZX1gKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGN1cnJlbnQgPSBuZXh0ID8/ICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQ2hhaW4gPSBjaGFpbi5maWx0ZXIoXG4gICAgICAgICAgKHBhdGgpID0+ICFwYXRoLmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHdvcmtmbG93RmlsZSA9IGZpbHRlcmVkQ2hhaW5bMF0gPz8gaW1wb3J0ZXJQYXRoO1xuXG4gICAgICAgIGlmICghd29ya2Zsb3dGaWxlIHx8IHdvcmtmbG93RmlsZS5pbmNsdWRlcygnbm9kZV9tb2R1bGVzJykpIHtcbiAgICAgICAgICAvLyBNYXJrIGJ1aWx0aW4gaW1wb3J0cyBhcyBzaWRlLWVmZmVjdC1mcmVlIHNvIGVzYnVpbGQgY2FuIHRyZWUtc2hha2VcbiAgICAgICAgICAvLyB0aGVtIHdoZW4gdGhleSdyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVhZCAoZS5nLiBzdGVwLW9ubHkpIGNvZGVcbiAgICAgICAgICAvLyBwYXRocyBpbiBzaGFyZWQgbW9kdWxlcy4gVGhlIG9uRW5kIGZpbHRlciBiZWxvdyB1c2VzIHRoZSBtZXRhZmlsZVxuICAgICAgICAgIC8vIHRvIGRlY2lkZSB3aGljaCBpbXBvcnRzIGFjdHVhbGx5IHN1cnZpdmUuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHBhdGg6IGFyZ3MucGF0aCxcbiAgICAgICAgICAgIGV4dGVybmFsOiB0cnVlLFxuICAgICAgICAgICAgc2lkZUVmZmVjdHM6IGZhbHNlLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IGltcG9ydGVyUGF0aC5pbmNsdWRlcygnbm9kZV9tb2R1bGVzJylcbiAgICAgICAgICA/IChnZXRQYWNrYWdlTmFtZShpbXBvcnRlclBhdGgpID8/IGFyZ3MucGF0aClcbiAgICAgICAgICA6IGFyZ3MucGF0aDtcblxuICAgICAgICBjb25zdCByZWxhdGl2ZVdvcmtmbG93RmlsZSA9IHJlbGF0aXZlKGN3ZCwgd29ya2Zsb3dGaWxlKTtcbiAgICAgICAgY29uc3QgdmlvbGF0aW9uS2V5ID0gYCR7cGFja2FnZU5hbWV9OiR7cmVsYXRpdmVXb3JrZmxvd0ZpbGV9YDtcblxuICAgICAgICBpZiAoIXNlZW5WaW9sYXRpb25zLmhhcyh2aW9sYXRpb25LZXkpKSB7XG4gICAgICAgICAgc2VlblZpb2xhdGlvbnMuYWRkKHZpb2xhdGlvbktleSk7XG4gICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBhd2FpdCBnZXRWaW9sYXRpb25Mb2NhdGlvbihcbiAgICAgICAgICAgIGN3ZCxcbiAgICAgICAgICAgIHJlbGF0aXZlV29ya2Zsb3dGaWxlLFxuICAgICAgICAgICAgcGFja2FnZU5hbWVcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIE9ubHkgcmVwb3J0IHZpb2xhdGlvbnMgd2hlcmUgd2UgY2FuIGZpbmQgdGhlIGltcG9ydCBsb2NhdGlvbi5cbiAgICAgICAgICAvLyBJZiB3ZSBjYW4ndCBmaW5kIGl0LCB0aGUgcGFja2FnZSBpcyBsaWtlbHkgYSB0cmFuc2l0aXZlIGRlcGVuZGVuY3lcbiAgICAgICAgICAvLyB0aGF0IHRoZSB1c2VyIGRpZG4ndCBkaXJlY3RseSBpbXBvcnQgLSB3ZSdsbCByZXBvcnQgdGhlIHRvcC1sZXZlbFxuICAgICAgICAgIC8vIHBhY2thZ2UgdGhleSBkaWQgaW1wb3J0IGluc3RlYWQuXG4gICAgICAgICAgaWYgKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICBwYWNrYWdlVmlvbGF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgcGF0aDogYXJncy5wYXRoLFxuICAgICAgICAgICAgICBpbXBvcnRlcjogcmVsYXRpdmVXb3JrZmxvd0ZpbGUsXG4gICAgICAgICAgICAgIHBhY2thZ2VOYW1lLFxuICAgICAgICAgICAgICBsb2NhdGlvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE1hcmsgYnVpbHRpbiBpbXBvcnRzIGFzIHNpZGUtZWZmZWN0LWZyZWUgc28gZXNidWlsZCBjYW4gdHJlZS1zaGFrZVxuICAgICAgICAvLyB0aGVtIHdoZW4gdGhleSdyZSBvbmx5IHJlZmVyZW5jZWQgYnkgZGVhZCAoZS5nLiBzdGVwLW9ubHkpIGNvZGVcbiAgICAgICAgLy8gcGF0aHMgaW4gc2hhcmVkIG1vZHVsZXMuIFRoZSBvbkVuZCBmaWx0ZXIgYmVsb3cgdXNlcyB0aGUgbWV0YWZpbGVcbiAgICAgICAgLy8gdG8gZGVjaWRlIHdoaWNoIGltcG9ydHMgYWN0dWFsbHkgc3Vydml2ZS5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBhcmdzLnBhdGgsXG4gICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgc2lkZUVmZmVjdHM6IGZhbHNlLFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIC8vIFJlcG9ydCB2aW9sYXRpb25zIGF0IHRoZSBlbmQgb2YgdGhlIGJ1aWxkLCBmaWx0ZXJlZCB0byBvbmx5IHRob3NlXG4gICAgICAvLyB3aG9zZSBOb2RlLmpzIC8gQnVuIGJ1aWx0aW4gaW1wb3J0cyBhY3R1YWxseSBzdXJ2aXZlZCB0cmVlLXNoYWtpbmcuXG4gICAgICAvL1xuICAgICAgLy8gYG9uUmVzb2x2ZWAgZmlyZXMgZHVyaW5nIG1vZHVsZSBsb2FkaW5nLCBiZWZvcmUgZXNidWlsZCdzIHRyZWUtc2hha2VyXG4gICAgICAvLyBydW5zLiBUaGF0IG1lYW5zIGEgc2hhcmVkIG1vZHVsZSB3aG9zZSBzdGVwLW9ubHkgZXhwb3J0IHJlZmVyZW5jZXMgYVxuICAgICAgLy8gYnVpbHRpbiB3aWxsIHJlY29yZCBhIHZpb2xhdGlvbiBldmVuIGlmIHRoZSB3b3JrZmxvdyBuZXZlciB0b3VjaGVzXG4gICAgICAvLyB0aGF0IGV4cG9ydC4gQnkgbWFya2luZyBidWlsdGluIGltcG9ydHMgYXMgYHNpZGVFZmZlY3RzOiBmYWxzZWAgaW5cbiAgICAgIC8vIGBvblJlc29sdmVgIGFib3ZlLCBlc2J1aWxkIGNhbiBkcm9wIHN1Y2ggaW1wb3J0cyBmcm9tIHRoZSBvdXRwdXQuXG4gICAgICAvLyBIZXJlIHdlIGNvbnN1bHQgdGhlIG1ldGFmaWxlIHRvIHNlZSB3aGljaCBidWlsdGluIGltcG9ydHMgcmVtYWluXG4gICAgICAvLyBpbiB0aGUgZW1pdHRlZCBidW5kbGUgYW5kIG9ubHkgcmVwb3J0IHRob3NlLlxuICAgICAgYnVpbGQub25FbmQoKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAocGFja2FnZVZpb2xhdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc3Vydml2aW5nQnVpbHRpbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0cyA9IHJlc3VsdC5tZXRhZmlsZT8ub3V0cHV0cztcbiAgICAgICAgaWYgKG91dHB1dHMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBPYmplY3QudmFsdWVzKG91dHB1dHMpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGltcCBvZiBvdXRwdXQuaW1wb3J0cykge1xuICAgICAgICAgICAgICAvLyBFeHRlcm5hbCBpbXBvcnRzIGluIHRoZSBtZXRhZmlsZSBhcmUgcmVjb3JkZWQgd2l0aCB0aGUgcGF0aFxuICAgICAgICAgICAgICAvLyB0aGF0IHdhcyByZXR1cm5lZCBmcm9tIGBvblJlc29sdmVgIChlLmcuIFwibm9kZTpmcy9wcm9taXNlc1wiLFxuICAgICAgICAgICAgICAvLyBcImZzXCIsIFwiYnVuOnNxbGl0ZVwiKS4gT25seSBjb2xsZWN0IHRoZSBvbmVzIHRoYXQgbWF0Y2hcbiAgICAgICAgICAgICAgLy8gTm9kZS5qcyAvIEJ1biBidWlsdGlucy5cbiAgICAgICAgICAgICAgaWYgKGltcC5leHRlcm5hbCAmJiBydW50aW1lTW9kdWxlc1JlZ2V4LnRlc3QoaW1wLnBhdGgpKSB7XG4gICAgICAgICAgICAgICAgc3Vydml2aW5nQnVpbHRpbnMuYWRkKGltcC5wYXRoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIHRoZSBtZXRhZmlsZSBpcyB1bmF2YWlsYWJsZSBmb3Igc29tZSByZWFzb24sIGZhbGwgYmFjayB0b1xuICAgICAgICAvLyByZXBvcnRpbmcgYWxsIHJlY29yZGVkIHZpb2xhdGlvbnMgc28gd2UgbmV2ZXIgc2lsZW50bHkgc3VwcHJlc3NcbiAgICAgICAgLy8gcmVhbCBvbmVzLlxuICAgICAgICBjb25zdCBsaXZlVmlvbGF0aW9ucyA9IG91dHB1dHNcbiAgICAgICAgICA/IHBhY2thZ2VWaW9sYXRpb25zLmZpbHRlcigodmlvbGF0aW9uKSA9PlxuICAgICAgICAgICAgICBzdXJ2aXZpbmdCdWlsdGlucy5oYXModmlvbGF0aW9uLnBhdGgpXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiBwYWNrYWdlVmlvbGF0aW9ucztcblxuICAgICAgICBpZiAobGl2ZVZpb2xhdGlvbnMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlcnJvcnM6IGxpdmVWaW9sYXRpb25zLm1hcCgodmlvbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpc0J1aWx0aW5Nb2R1bGUgPSBydW50aW1lTW9kdWxlc1JlZ2V4LnRlc3QoXG4gICAgICAgICAgICAgIHZpb2xhdGlvbi5wYWNrYWdlTmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZVR5cGUgPSBnZXRNb2R1bGVUeXBlTGFiZWwodmlvbGF0aW9uLnBhdGgpO1xuXG4gICAgICAgICAgICAvLyBEaWZmZXJlbnQgbWVzc2FnZXMgZm9yIGJ1aWx0LWluIG1vZHVsZXMgdnMgbnBtIHBhY2thZ2VzIHRoYXQgdXNlIHRoZW1cbiAgICAgICAgICAgIGNvbnN0IHRleHQgPSBpc0J1aWx0aW5Nb2R1bGVcbiAgICAgICAgICAgICAgPyBgWW91IGFyZSBhdHRlbXB0aW5nIHRvIHVzZSBcIiR7dmlvbGF0aW9uLnBhY2thZ2VOYW1lfVwiIHdoaWNoIGlzIGEgJHttb2R1bGVUeXBlfSBtb2R1bGUuICR7bW9kdWxlVHlwZX0gbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSBpbiB3b3JrZmxvdyBmdW5jdGlvbnMuXFxuXFxuTGVhcm4gbW9yZTogaHR0cHM6Ly93b3JrZmxvdy1zZGsuZGV2L2Vyci8ke0VSUk9SX1NMVUdTLk5PREVfSlNfTU9EVUxFX0lOX1dPUktGTE9XfWBcbiAgICAgICAgICAgICAgOiBgWW91IGFyZSBhdHRlbXB0aW5nIHRvIHVzZSBcIiR7dmlvbGF0aW9uLnBhY2thZ2VOYW1lfVwiIHdoaWNoIGRlcGVuZHMgb24gJHttb2R1bGVUeXBlfSBtb2R1bGVzLiBQYWNrYWdlcyB0aGF0IGRlcGVuZCBvbiAke21vZHVsZVR5cGV9IG1vZHVsZXMgYXJlIG5vdCBhdmFpbGFibGUgaW4gd29ya2Zsb3cgZnVuY3Rpb25zLlxcblxcbkxlYXJuIG1vcmU6IGh0dHBzOi8vd29ya2Zsb3ctc2RrLmRldi9lcnIvJHtFUlJPUl9TTFVHUy5OT0RFX0pTX01PRFVMRV9JTl9XT1JLRkxPV31gO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0ZXh0LFxuICAgICAgICAgICAgICBsb2NhdGlvbjogdmlvbGF0aW9uLmxvY2F0aW9uXG4gICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnZpb2xhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc3VnZ2VzdGlvbjogJ01vdmUgdGhpcyBmdW5jdGlvbiBpbnRvIGEgc3RlcCBmdW5jdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -4,7 +4,7 @@
4
4
  * isn't installed. Rollup/Vite (e.g. SvelteKit's build) treat an unresolvable
5
5
  * static `import('@opentelemetry/api')` as a fatal error when the peer is
6
6
  * absent, so the framework integrations mark this specifier **external only
7
- * when it can't be resolved** (they do NOT alias it to an empty stub — that
7
+ * when it can't be resolved** (they do NOT alias it to an empty stub, which
8
8
  * would permanently disable tracing). When the peer IS installed it resolves
9
9
  * and bundles normally, which matters for self-contained outputs (Nitro's
10
10
  * `.output/server`, esbuild) that ship no node_modules and would otherwise
@@ -4,11 +4,11 @@
4
4
  * isn't installed. Rollup/Vite (e.g. SvelteKit's build) treat an unresolvable
5
5
  * static `import('@opentelemetry/api')` as a fatal error when the peer is
6
6
  * absent, so the framework integrations mark this specifier **external only
7
- * when it can't be resolved** (they do NOT alias it to an empty stub — that
7
+ * when it can't be resolved** (they do NOT alias it to an empty stub, which
8
8
  * would permanently disable tracing). When the peer IS installed it resolves
9
9
  * and bundles normally, which matters for self-contained outputs (Nitro's
10
10
  * `.output/server`, esbuild) that ship no node_modules and would otherwise
11
11
  * strand the runtime import. External-when-absent keeps the build green.
12
12
  */
13
13
  export const WORKFLOW_OPTIONAL_OTEL_API_MODULE = '@opentelemetry/api';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtb3RlbC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvb3B0aW9uYWwtb3RlbC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYEBvcGVudGVsZW1ldHJ5L2FwaWAgaXMgYW4gb3B0aW9uYWwgcGVlciBkZXBlbmRlbmN5IG9mIHRoZSBXb3JrZmxvdyBTREs6IHRoZVxuICogcnVudGltZSBpbXBvcnRzIGl0IGxhemlseSBpbnNpZGUgYSB0cnkvY2F0Y2ggc28gdHJhY2luZyBpcyBhIG5vLW9wIHdoZW4gaXRcbiAqIGlzbid0IGluc3RhbGxlZC4gUm9sbHVwL1ZpdGUgKGUuZy4gU3ZlbHRlS2l0J3MgYnVpbGQpIHRyZWF0IGFuIHVucmVzb2x2YWJsZVxuICogc3RhdGljIGBpbXBvcnQoJ0BvcGVudGVsZW1ldHJ5L2FwaScpYCBhcyBhIGZhdGFsIGVycm9yIHdoZW4gdGhlIHBlZXIgaXNcbiAqIGFic2VudCwgc28gdGhlIGZyYW1ld29yayBpbnRlZ3JhdGlvbnMgbWFyayB0aGlzIHNwZWNpZmllciAqKmV4dGVybmFsIG9ubHlcbiAqIHdoZW4gaXQgY2FuJ3QgYmUgcmVzb2x2ZWQqKiAodGhleSBkbyBOT1QgYWxpYXMgaXQgdG8gYW4gZW1wdHkgc3R1YiDigJQgdGhhdFxuICogd291bGQgcGVybWFuZW50bHkgZGlzYWJsZSB0cmFjaW5nKS4gV2hlbiB0aGUgcGVlciBJUyBpbnN0YWxsZWQgaXQgcmVzb2x2ZXNcbiAqIGFuZCBidW5kbGVzIG5vcm1hbGx5LCB3aGljaCBtYXR0ZXJzIGZvciBzZWxmLWNvbnRhaW5lZCBvdXRwdXRzIChOaXRybydzXG4gKiBgLm91dHB1dC9zZXJ2ZXJgLCBlc2J1aWxkKSB0aGF0IHNoaXAgbm8gbm9kZV9tb2R1bGVzIGFuZCB3b3VsZCBvdGhlcndpc2VcbiAqIHN0cmFuZCB0aGUgcnVudGltZSBpbXBvcnQuIEV4dGVybmFsLXdoZW4tYWJzZW50IGtlZXBzIHRoZSBidWlsZCBncmVlbi5cbiAqL1xuZXhwb3J0IGNvbnN0IFdPUktGTE9XX09QVElPTkFMX09URUxfQVBJX01PRFVMRSA9ICdAb3BlbnRlbGVtZXRyeS9hcGknO1xuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtb3RlbC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvb3B0aW9uYWwtb3RlbC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBRyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogYEBvcGVudGVsZW1ldHJ5L2FwaWAgaXMgYW4gb3B0aW9uYWwgcGVlciBkZXBlbmRlbmN5IG9mIHRoZSBXb3JrZmxvdyBTREs6IHRoZVxuICogcnVudGltZSBpbXBvcnRzIGl0IGxhemlseSBpbnNpZGUgYSB0cnkvY2F0Y2ggc28gdHJhY2luZyBpcyBhIG5vLW9wIHdoZW4gaXRcbiAqIGlzbid0IGluc3RhbGxlZC4gUm9sbHVwL1ZpdGUgKGUuZy4gU3ZlbHRlS2l0J3MgYnVpbGQpIHRyZWF0IGFuIHVucmVzb2x2YWJsZVxuICogc3RhdGljIGBpbXBvcnQoJ0BvcGVudGVsZW1ldHJ5L2FwaScpYCBhcyBhIGZhdGFsIGVycm9yIHdoZW4gdGhlIHBlZXIgaXNcbiAqIGFic2VudCwgc28gdGhlIGZyYW1ld29yayBpbnRlZ3JhdGlvbnMgbWFyayB0aGlzIHNwZWNpZmllciAqKmV4dGVybmFsIG9ubHlcbiAqIHdoZW4gaXQgY2FuJ3QgYmUgcmVzb2x2ZWQqKiAodGhleSBkbyBOT1QgYWxpYXMgaXQgdG8gYW4gZW1wdHkgc3R1Yiwgd2hpY2hcbiAqIHdvdWxkIHBlcm1hbmVudGx5IGRpc2FibGUgdHJhY2luZykuIFdoZW4gdGhlIHBlZXIgSVMgaW5zdGFsbGVkIGl0IHJlc29sdmVzXG4gKiBhbmQgYnVuZGxlcyBub3JtYWxseSwgd2hpY2ggbWF0dGVycyBmb3Igc2VsZi1jb250YWluZWQgb3V0cHV0cyAoTml0cm8nc1xuICogYC5vdXRwdXQvc2VydmVyYCwgZXNidWlsZCkgdGhhdCBzaGlwIG5vIG5vZGVfbW9kdWxlcyBhbmQgd291bGQgb3RoZXJ3aXNlXG4gKiBzdHJhbmQgdGhlIHJ1bnRpbWUgaW1wb3J0LiBFeHRlcm5hbC13aGVuLWFic2VudCBrZWVwcyB0aGUgYnVpbGQgZ3JlZW4uXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLRkxPV19PUFRJT05BTF9PVEVMX0FQSV9NT0RVTEUgPSAnQG9wZW50ZWxlbWV0cnkvYXBpJztcbiJdfQ==
@@ -1,9 +1,9 @@
1
1
  // Stub aliased in place of the `typescript` package in framework server
2
2
  // bundles. It is only reachable through cosmiconfig's TS-config loader
3
3
  // (via world packages -> graphile-worker), where `require('typescript')`
4
- // is lazy and never fires at runtime but bundling converts it into an
4
+ // is lazy and never fires at runtime, but bundling converts it into an
5
5
  // eager top-level evaluation, pulling the entire compiler into the server
6
6
  // output and executing it at boot.
7
7
  const typescript = {};
8
8
  export default typescript;
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtdHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25hbC10eXBlc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdFQUF3RTtBQUN4RSx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLHdFQUF3RTtBQUN4RSwwRUFBMEU7QUFDMUUsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUV0QixlQUFlLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFN0dWIgYWxpYXNlZCBpbiBwbGFjZSBvZiB0aGUgYHR5cGVzY3JpcHRgIHBhY2thZ2UgaW4gZnJhbWV3b3JrIHNlcnZlclxuLy8gYnVuZGxlcy4gSXQgaXMgb25seSByZWFjaGFibGUgdGhyb3VnaCBjb3NtaWNvbmZpZydzIFRTLWNvbmZpZyBsb2FkZXJcbi8vICh2aWEgd29ybGQgcGFja2FnZXMgLT4gZ3JhcGhpbGUtd29ya2VyKSwgd2hlcmUgYHJlcXVpcmUoJ3R5cGVzY3JpcHQnKWBcbi8vIGlzIGxhenkgYW5kIG5ldmVyIGZpcmVzIGF0IHJ1bnRpbWUg4oCUIGJ1dCBidW5kbGluZyBjb252ZXJ0cyBpdCBpbnRvIGFuXG4vLyBlYWdlciB0b3AtbGV2ZWwgZXZhbHVhdGlvbiwgcHVsbGluZyB0aGUgZW50aXJlIGNvbXBpbGVyIGludG8gdGhlIHNlcnZlclxuLy8gb3V0cHV0IGFuZCBleGVjdXRpbmcgaXQgYXQgYm9vdC5cbmNvbnN0IHR5cGVzY3JpcHQgPSB7fTtcblxuZXhwb3J0IGRlZmF1bHQgdHlwZXNjcmlwdDtcbiJdfQ==
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtdHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9vcHRpb25hbC10eXBlc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdFQUF3RTtBQUN4RSx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLHVFQUF1RTtBQUN2RSwwRUFBMEU7QUFDMUUsbUNBQW1DO0FBQ25DLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUV0QixlQUFlLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFN0dWIgYWxpYXNlZCBpbiBwbGFjZSBvZiB0aGUgYHR5cGVzY3JpcHRgIHBhY2thZ2UgaW4gZnJhbWV3b3JrIHNlcnZlclxuLy8gYnVuZGxlcy4gSXQgaXMgb25seSByZWFjaGFibGUgdGhyb3VnaCBjb3NtaWNvbmZpZydzIFRTLWNvbmZpZyBsb2FkZXJcbi8vICh2aWEgd29ybGQgcGFja2FnZXMgLT4gZ3JhcGhpbGUtd29ya2VyKSwgd2hlcmUgYHJlcXVpcmUoJ3R5cGVzY3JpcHQnKWBcbi8vIGlzIGxhenkgYW5kIG5ldmVyIGZpcmVzIGF0IHJ1bnRpbWUsIGJ1dCBidW5kbGluZyBjb252ZXJ0cyBpdCBpbnRvIGFuXG4vLyBlYWdlciB0b3AtbGV2ZWwgZXZhbHVhdGlvbiwgcHVsbGluZyB0aGUgZW50aXJlIGNvbXBpbGVyIGludG8gdGhlIHNlcnZlclxuLy8gb3V0cHV0IGFuZCBleGVjdXRpbmcgaXQgYXQgYm9vdC5cbmNvbnN0IHR5cGVzY3JpcHQgPSB7fTtcblxuZXhwb3J0IGRlZmF1bHQgdHlwZXNjcmlwdDtcbiJdfQ==
@@ -7,7 +7,7 @@
7
7
  * Marking them external keeps that fallback reachable. Two bundlers take it away
8
8
  * without changing the build's outcome, so the damage only shows up at runtime,
9
9
  * on the first frame big enough to reach the native masker (`ws` uses pure JS
10
- * below 48 bytes small-payload smoke tests pass; CBOR event frames don't):
10
+ * below 48 bytes, so small-payload smoke tests pass; CBOR event frames don't):
11
11
  *
12
12
  * - **webpack** bundles the JS wrapper without its native `.node` binding.
13
13
  * - **Vite** resolves the absent peer to its own `optional-peer-dep` stub, so
@@ -7,7 +7,7 @@
7
7
  * Marking them external keeps that fallback reachable. Two bundlers take it away
8
8
  * without changing the build's outcome, so the damage only shows up at runtime,
9
9
  * on the first frame big enough to reach the native masker (`ws` uses pure JS
10
- * below 48 bytes small-payload smoke tests pass; CBOR event frames don't):
10
+ * below 48 bytes, so small-payload smoke tests pass; CBOR event frames don't):
11
11
  *
12
12
  * - **webpack** bundles the JS wrapper without its native `.node` binding.
13
13
  * - **Vite** resolves the absent peer to its own `optional-peer-dep` stub, so
@@ -30,4 +30,4 @@ export const WORKFLOW_OPTIONAL_WS_NATIVE_MODULES = [
30
30
  'bufferutil',
31
31
  'utf-8-validate',
32
32
  ];
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtd3MtbmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL29wdGlvbmFsLXdzLW5hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUc7SUFDakQsWUFBWTtJQUNaLGdCQUFnQjtDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBidWZmZXJ1dGlsYCBhbmQgYHV0Zi04LXZhbGlkYXRlYCBhcmUgb3B0aW9uYWwgbmF0aXZlIGFjY2VsZXJhdG9ycyBmb3IgdGhlXG4gKiBgd3NgIHBhY2thZ2UsIHdoaWNoIGBAd29ya2Zsb3cvd29ybGQtdmVyY2VsYCB1c2VzIGZvciBpdHMgV2ViU29ja2V0IGV2ZW50c1xuICogdHJhbnNwb3J0LiBOZWl0aGVyIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0OiBgd3NgIHJlcXVpcmVzIGVhY2ggb25lIGluc2lkZSBhXG4gKiB0cnkvY2F0Y2ggYW5kIGZhbGxzIGJhY2sgdG8gYSBwdXJlLUpTIGltcGxlbWVudGF0aW9uIHdoZW4gdGhlIHJlcXVpcmUgdGhyb3dzLlxuICpcbiAqIE1hcmtpbmcgdGhlbSBleHRlcm5hbCBrZWVwcyB0aGF0IGZhbGxiYWNrIHJlYWNoYWJsZS4gVHdvIGJ1bmRsZXJzIHRha2UgaXQgYXdheVxuICogd2l0aG91dCBjaGFuZ2luZyB0aGUgYnVpbGQncyBvdXRjb21lLCBzbyB0aGUgZGFtYWdlIG9ubHkgc2hvd3MgdXAgYXQgcnVudGltZSxcbiAqIG9uIHRoZSBmaXJzdCBmcmFtZSBiaWcgZW5vdWdoIHRvIHJlYWNoIHRoZSBuYXRpdmUgbWFza2VyIChgd3NgIHVzZXMgcHVyZSBKU1xuICogYmVsb3cgNDggYnl0ZXMg4oCUIHNtYWxsLXBheWxvYWQgc21va2UgdGVzdHMgcGFzczsgQ0JPUiBldmVudCBmcmFtZXMgZG9uJ3QpOlxuICpcbiAqIC0gKip3ZWJwYWNrKiogYnVuZGxlcyB0aGUgSlMgd3JhcHBlciB3aXRob3V0IGl0cyBuYXRpdmUgYC5ub2RlYCBiaW5kaW5nLlxuICogLSAqKlZpdGUqKiByZXNvbHZlcyB0aGUgYWJzZW50IHBlZXIgdG8gaXRzIG93biBgb3B0aW9uYWwtcGVlci1kZXBgIHN0dWIsIHNvXG4gKiAgIGB3c2AncyByZXF1aXJlICpzdWNjZWVkcyogYW5kIHRoZSB0cnkvY2F0Y2ggbmV2ZXIgZmlyZXMuXG4gKlxuICogQm90aCBlbmQgYXQgYGJ1ZmZlclV0aWwubWFzayBpcyBub3QgYSBmdW5jdGlvbmAuIFJvbGx1cC1mYW1pbHkgc2V0dXBzIGFyZSBub3RcbiAqIGtub3duIHRvIGJyZWFrOiBub3RoaW5nIHN1YnN0aXR1dGVzIGEgc3R1YiwgYW5kIG5pdHJvIHRyYWNlcyBhbmQgZXh0ZXJuYWxpemVzXG4gKiBgd3NgIGluIGEgcHJvZHVjdGlvbiBidWlsZCwgc28gdGhlIHJlcXVpcmUgc3RheXMgYSByZWFsIG9uZSB0aGF0IGZhaWxzIGFuZCB0aGVcbiAqIGZhbGxiYWNrIGVuZ2FnZXMuIEV4dGVybmFsaXppbmcgdGhlcmUgYnV5cyBkZXRlcm1pbmlzbSBhZ2FpbnN0IGEgY2hhbmdlIGluXG4gKiBleHRlcm5hbHMgcG9saWN5LCBub3QgYSBmaXggZm9yIGEga25vd24gYnJlYWsuIChUdXJib3BhY2sgYWxyZWFkeSBleHRlcm5hbGl6ZXNcbiAqIE5vZGUgcGFja2FnZXMuKVxuICpcbiAqIEV4dGVybmFsaXplZCB1bmNvbmRpdGlvbmFsbHksIHVubGlrZSBgV09SS0ZMT1dfT1BUSU9OQUxfT1RFTF9BUElfTU9EVUxFYCxcbiAqIHdoaWNoIGlzIG9ubHkgZXh0ZXJuYWxpemVkIHdoZW4gaXQgY2FuJ3QgYmUgcmVzb2x2ZWQuIFRoZSBPVEVMIEFQSSBoYXMgdG9cbiAqIGxvYWQgZm9yIHRyYWNpbmcgdG8gd29yaywgc28gYSBzZWxmLWNvbnRhaW5lZCBvdXRwdXQgbXVzdCBidW5kbGUgaXQgd2hlblxuICogcHJlc2VudDsgdGhlc2UgYWNjZWxlcmF0b3JzIG11c3Qgc3BlY2lmaWNhbGx5ICpub3QqIGxvYWQsIHNvIGEgZmFpbGVkIHJ1bnRpbWVcbiAqIHJlcXVpcmUgaXMgdGhlIGRlc2lnbmVkIHBhdGggYW5kIGEgaGFsZi1idW5kbGVkIG5hdGl2ZSBtb2R1bGUgaXMgbm90LlxuICovXG5leHBvcnQgY29uc3QgV09SS0ZMT1dfT1BUSU9OQUxfV1NfTkFUSVZFX01PRFVMRVMgPSBbXG4gICdidWZmZXJ1dGlsJyxcbiAgJ3V0Zi04LXZhbGlkYXRlJyxcbl0gYXMgY29uc3Q7XG4iXX0=
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uYWwtd3MtbmF0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL29wdGlvbmFsLXdzLW5hdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUc7SUFDakQsWUFBWTtJQUNaLGdCQUFnQjtDQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBidWZmZXJ1dGlsYCBhbmQgYHV0Zi04LXZhbGlkYXRlYCBhcmUgb3B0aW9uYWwgbmF0aXZlIGFjY2VsZXJhdG9ycyBmb3IgdGhlXG4gKiBgd3NgIHBhY2thZ2UsIHdoaWNoIGBAd29ya2Zsb3cvd29ybGQtdmVyY2VsYCB1c2VzIGZvciBpdHMgV2ViU29ja2V0IGV2ZW50c1xuICogdHJhbnNwb3J0LiBOZWl0aGVyIGlzIGluc3RhbGxlZCBieSBkZWZhdWx0OiBgd3NgIHJlcXVpcmVzIGVhY2ggb25lIGluc2lkZSBhXG4gKiB0cnkvY2F0Y2ggYW5kIGZhbGxzIGJhY2sgdG8gYSBwdXJlLUpTIGltcGxlbWVudGF0aW9uIHdoZW4gdGhlIHJlcXVpcmUgdGhyb3dzLlxuICpcbiAqIE1hcmtpbmcgdGhlbSBleHRlcm5hbCBrZWVwcyB0aGF0IGZhbGxiYWNrIHJlYWNoYWJsZS4gVHdvIGJ1bmRsZXJzIHRha2UgaXQgYXdheVxuICogd2l0aG91dCBjaGFuZ2luZyB0aGUgYnVpbGQncyBvdXRjb21lLCBzbyB0aGUgZGFtYWdlIG9ubHkgc2hvd3MgdXAgYXQgcnVudGltZSxcbiAqIG9uIHRoZSBmaXJzdCBmcmFtZSBiaWcgZW5vdWdoIHRvIHJlYWNoIHRoZSBuYXRpdmUgbWFza2VyIChgd3NgIHVzZXMgcHVyZSBKU1xuICogYmVsb3cgNDggYnl0ZXMsIHNvIHNtYWxsLXBheWxvYWQgc21va2UgdGVzdHMgcGFzczsgQ0JPUiBldmVudCBmcmFtZXMgZG9uJ3QpOlxuICpcbiAqIC0gKip3ZWJwYWNrKiogYnVuZGxlcyB0aGUgSlMgd3JhcHBlciB3aXRob3V0IGl0cyBuYXRpdmUgYC5ub2RlYCBiaW5kaW5nLlxuICogLSAqKlZpdGUqKiByZXNvbHZlcyB0aGUgYWJzZW50IHBlZXIgdG8gaXRzIG93biBgb3B0aW9uYWwtcGVlci1kZXBgIHN0dWIsIHNvXG4gKiAgIGB3c2AncyByZXF1aXJlICpzdWNjZWVkcyogYW5kIHRoZSB0cnkvY2F0Y2ggbmV2ZXIgZmlyZXMuXG4gKlxuICogQm90aCBlbmQgYXQgYGJ1ZmZlclV0aWwubWFzayBpcyBub3QgYSBmdW5jdGlvbmAuIFJvbGx1cC1mYW1pbHkgc2V0dXBzIGFyZSBub3RcbiAqIGtub3duIHRvIGJyZWFrOiBub3RoaW5nIHN1YnN0aXR1dGVzIGEgc3R1YiwgYW5kIG5pdHJvIHRyYWNlcyBhbmQgZXh0ZXJuYWxpemVzXG4gKiBgd3NgIGluIGEgcHJvZHVjdGlvbiBidWlsZCwgc28gdGhlIHJlcXVpcmUgc3RheXMgYSByZWFsIG9uZSB0aGF0IGZhaWxzIGFuZCB0aGVcbiAqIGZhbGxiYWNrIGVuZ2FnZXMuIEV4dGVybmFsaXppbmcgdGhlcmUgYnV5cyBkZXRlcm1pbmlzbSBhZ2FpbnN0IGEgY2hhbmdlIGluXG4gKiBleHRlcm5hbHMgcG9saWN5LCBub3QgYSBmaXggZm9yIGEga25vd24gYnJlYWsuIChUdXJib3BhY2sgYWxyZWFkeSBleHRlcm5hbGl6ZXNcbiAqIE5vZGUgcGFja2FnZXMuKVxuICpcbiAqIEV4dGVybmFsaXplZCB1bmNvbmRpdGlvbmFsbHksIHVubGlrZSBgV09SS0ZMT1dfT1BUSU9OQUxfT1RFTF9BUElfTU9EVUxFYCxcbiAqIHdoaWNoIGlzIG9ubHkgZXh0ZXJuYWxpemVkIHdoZW4gaXQgY2FuJ3QgYmUgcmVzb2x2ZWQuIFRoZSBPVEVMIEFQSSBoYXMgdG9cbiAqIGxvYWQgZm9yIHRyYWNpbmcgdG8gd29yaywgc28gYSBzZWxmLWNvbnRhaW5lZCBvdXRwdXQgbXVzdCBidW5kbGUgaXQgd2hlblxuICogcHJlc2VudDsgdGhlc2UgYWNjZWxlcmF0b3JzIG11c3Qgc3BlY2lmaWNhbGx5ICpub3QqIGxvYWQsIHNvIGEgZmFpbGVkIHJ1bnRpbWVcbiAqIHJlcXVpcmUgaXMgdGhlIGRlc2lnbmVkIHBhdGggYW5kIGEgaGFsZi1idW5kbGVkIG5hdGl2ZSBtb2R1bGUgaXMgbm90LlxuICovXG5leHBvcnQgY29uc3QgV09SS0ZMT1dfT1BUSU9OQUxfV1NfTkFUSVZFX01PRFVMRVMgPSBbXG4gICdidWZmZXJ1dGlsJyxcbiAgJ3V0Zi04LXZhbGlkYXRlJyxcbl0gYXMgY29uc3Q7XG4iXX0=
@@ -78,5 +78,65 @@ describe('step source registration', () => {
78
78
  expect(generated).toContain('import "../src/serde.ts";');
79
79
  expect(Object.keys(manifest.classes ?? {})).toContain('src/serde.ts');
80
80
  });
81
+ /**
82
+ * pnpm materializes the same package version once per peer-dependency
83
+ * resolution (e.g. `.pnpm/step-pkg@1.0.0_peer-a@1.0.0/...` and
84
+ * `.pnpm/step-pkg@1.0.0_peer-b@2.0.0/...`), with byte-identical files.
85
+ * Both copies generate the same canonical step ID.
86
+ */
87
+ function writePnpmVirtualInstance(peerSuffix, stepSource) {
88
+ const pkgDir = join(testRoot, 'node_modules', '.pnpm', `step-pkg@1.0.0_${peerSuffix}`, 'node_modules', 'step-pkg');
89
+ writeFile(join(pkgDir, 'package.json'), JSON.stringify({
90
+ name: 'step-pkg',
91
+ version: '1.0.0',
92
+ exports: { '.': './index.js' },
93
+ }));
94
+ const stepFile = join(pkgDir, 'index.js');
95
+ writeFile(stepFile, stepSource);
96
+ return stepFile;
97
+ }
98
+ it('deduplicates identical pnpm peer-variant package copies', async () => {
99
+ const stepSource = `export async function runPackagedStep() {
100
+ 'use step';
101
+ return 1;
102
+ }
103
+ `;
104
+ const copyA = writePnpmVirtualInstance('peer-a@1.0.0', stepSource);
105
+ const copyB = writePnpmVirtualInstance('peer-b@2.0.0', stepSource);
106
+ const outfile = join(testRoot, '.workflow', 'steps.js');
107
+ mkdirSync(dirname(outfile), { recursive: true });
108
+ const discoveredEntries = {
109
+ discoveredSteps: new Set([copyA, copyB]),
110
+ discoveredWorkflows: new Set(),
111
+ discoveredSerdeFiles: new Set(),
112
+ };
113
+ const { manifest } = await createBuilder(testRoot).createSourceStepRegistrations([copyA, copyB], outfile, discoveredEntries);
114
+ // Both copies land in the manifest under the same canonical step ID.
115
+ const stepEntries = Object.values(manifest.steps ?? {});
116
+ expect(stepEntries).toHaveLength(2);
117
+ for (const entries of stepEntries) {
118
+ expect(entries.runPackagedStep.stepId).toBe('step//step-pkg@1.0.0//runPackagedStep');
119
+ }
120
+ });
121
+ it('still rejects pnpm-style package copies whose implementations differ', async () => {
122
+ const copyA = writePnpmVirtualInstance('peer-a@1.0.0', `export async function runPackagedStep() {
123
+ 'use step';
124
+ return 1;
125
+ }
126
+ `);
127
+ const copyB = writePnpmVirtualInstance('peer-b@2.0.0', `export async function runPackagedStep() {
128
+ 'use step';
129
+ return 2;
130
+ }
131
+ `);
132
+ const outfile = join(testRoot, '.workflow', 'steps.js');
133
+ mkdirSync(dirname(outfile), { recursive: true });
134
+ const discoveredEntries = {
135
+ discoveredSteps: new Set([copyA, copyB]),
136
+ discoveredWorkflows: new Set(),
137
+ discoveredSerdeFiles: new Set(),
138
+ };
139
+ await expect(createBuilder(testRoot).createSourceStepRegistrations([copyA, copyB], outfile, discoveredEntries)).rejects.toThrow(/Duplicate workflow step ID/);
140
+ });
81
141
  });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zb3VyY2UtcmVnaXN0cmF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RlcC1zb3VyY2UtcmVnaXN0cmF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUd4RSxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFTSw2QkFBNkIsQ0FDbEMsVUFBb0IsRUFDcEIsT0FBZSxFQUNmLGlCQUFvQztRQUVwQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUM1QixVQUFVO1lBQ1YsT0FBTztZQUNQLG1CQUFtQixFQUFFLElBQUk7WUFDekIscUNBQXFDLEVBQUUsS0FBSztZQUM1Qyw2QkFBNkIsRUFBRSxJQUFJO1lBQ25DLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxQyxTQUFTLFNBQVMsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7SUFDL0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lB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RSxPQUFPLENBQUMsQ0FBQztRQUVqRCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJlYWxwYXRoU3luYyxcbiAgcm1TeW5jLFxuICB3cml0ZUZpbGVTeW5jLFxufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2gsIGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IEJhc2VCdWlsZGVyLCB0eXBlIERpc2NvdmVyZWRFbnRyaWVzIH0gZnJvbSAnLi9iYXNlLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFuZGFsb25lQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNsYXNzIFRlc3RCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBuby1vcFxuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNvdXJjZVN0ZXBSZWdpc3RyYXRpb25zKFxuICAgIGlucHV0RmlsZXM6IHN0cmluZ1tdLFxuICAgIG91dGZpbGU6IHN0cmluZyxcbiAgICBkaXNjb3ZlcmVkRW50cmllczogRGlzY292ZXJlZEVudHJpZXNcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU3RlcHNCdW5kbGUoe1xuICAgICAgaW5wdXRGaWxlcyxcbiAgICAgIG91dGZpbGUsXG4gICAgICBleHRlcm5hbGl6ZU5vblN0ZXBzOiB0cnVlLFxuICAgICAgYnVuZGxlVHJhbnNpdGl2ZUxvY2FsU3RlcERlcGVuZGVuY2llczogZmFsc2UsXG4gICAgICBzb3VyY2VTdGVwUmVnaXN0cmF0aW9uSW1wb3J0czogdHJ1ZSxcbiAgICAgIGRpc2NvdmVyZWRFbnRyaWVzLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IHJlYWxUbXBkaXIgPSByZWFscGF0aFN5bmModG1wZGlyKCkpO1xuXG5mdW5jdGlvbiB3cml0ZUZpbGUocGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogdm9pZCB7XG4gIG1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhwYXRoLCBjb250ZW50cywgJ3V0Zi04Jyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1aWxkZXIod29ya2luZ0Rpcjogc3RyaW5nKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnM6IFsnLiddLFxuICAgIHN0ZXBzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnLndvcmtmbG93JywgJ3N0ZXBzLmpzJyksXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnLndvcmtmbG93JywgJ3dvcmtmbG93cy5qcycpLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICcud29ya2Zsb3cnLCAnd2ViaG9vay5qcycpLFxuICB9O1xuICByZXR1cm4gbmV3IFRlc3RCdWlsZGVyKGNvbmZpZyk7XG59XG5cbmRlc2NyaWJlKCdzdGVwIHNvdXJjZSByZWdpc3RyYXRpb24nLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3RlcC1yZWdpc3RyYXRpb24tJykpO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCAnd29ya2Zsb3cnLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICd3b3JrZmxvdycsIHZlcnNpb246ICcxLjAuMCcgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCAnd29ya2Zsb3cnLCAnaW50ZXJuYWwnLCAnYnVpbHRpbnMuanMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgX19idWlsdGlucyA9IHRydWU7XFxuJ1xuICAgICk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdpbXBvcnRzIHNlcmRlLW9ubHkgZmlsZXMgZm9yIHN0ZXAgY29udGV4dCBjbGFzcyByZWdpc3RyYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdlbnRyeS50cycpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdzdGVwLnRzJyk7XG4gICAgY29uc3Qgc2VyZGVGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdzZXJkZS50cycpO1xuICAgIGNvbnN0IG91dGZpbGUgPSBqb2luKHRlc3RSb290LCAnLndvcmtmbG93JywgJ3N0ZXBzLmpzJyk7XG5cbiAgICBta2RpclN5bmMoZGlybmFtZShvdXRmaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlKGVudHJ5RmlsZSwgYGV4cG9ydCB7IHJ1blN0ZXAgfSBmcm9tICcuL3N0ZXAnO1xcbmApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZXBGaWxlLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5TdGVwKCkge1xuICAndXNlIHN0ZXAnO1xuICByZXR1cm4gMTtcbn1cbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHNlcmRlRmlsZSxcbiAgICAgIGBleHBvcnQgY2xhc3MgVmFsdWUge1xuICBzdGF0aWMgY2xhc3NJZCA9ICdWYWx1ZSc7XG4gIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctc2VyaWFsaXplJyldKHZhbHVlOiBWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBzdGF0aWMgW1N5bWJvbC5mb3IoJ3dvcmtmbG93LWRlc2VyaWFsaXplJyldKHZhbHVlOiBWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuYFxuICAgICk7XG5cbiAgICBjb25zdCBkaXNjb3ZlcmVkRW50cmllczogRGlzY292ZXJlZEVudHJpZXMgPSB7XG4gICAgICBkaXNjb3ZlcmVkU3RlcHM6IG5ldyBTZXQoW3N0ZXBGaWxlXSksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0KCksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldChbc2VyZGVGaWxlXSksXG4gICAgfTtcblxuICAgIGNvbnN0IHsgbWFuaWZlc3QgfSA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIoXG4gICAgICB0ZXN0Um9vdFxuICAgICkuY3JlYXRlU291cmNlU3RlcFJlZ2lzdHJhdGlvbnMoW2VudHJ5RmlsZV0sIG91dGZpbGUsIGRpc2NvdmVyZWRFbnRyaWVzKTtcbiAgICBjb25zdCBnZW5lcmF0ZWQgPSByZWFkRmlsZVN5bmMob3V0ZmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICBleHBlY3QoZ2VuZXJhdGVkKS50b0NvbnRhaW4oJ2ltcG9ydCBcIndvcmtmbG93L2ludGVybmFsL2J1aWx0aW5zXCI7Jyk7XG4gICAgZXhwZWN0KGdlbmVyYXRlZCkudG9Db250YWluKCdpbXBvcnQgXCIuLi9zcmMvc3RlcC50c1wiOycpO1xuICAgIGV4cGVjdChnZW5lcmF0ZWQpLnRvQ29udGFpbignaW1wb3J0IFwiLi4vc3JjL3NlcmRlLnRzXCI7Jyk7XG4gICAgZXhwZWN0KE9iamVjdC5rZXlzKG1hbmlmZXN0LmNsYXNzZXMgPz8ge30pKS50b0NvbnRhaW4oJ3NyYy9zZXJkZS50cycpO1xuICB9KTtcbn0pO1xuIl19
142
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zb3VyY2UtcmVnaXN0cmF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RlcC1zb3VyY2UtcmVnaXN0cmF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUd4RSxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFTSw2QkFBNkIsQ0FDbEMsVUFBb0IsRUFDcEIsT0FBZSxFQUNmLGlCQUFvQztRQUVwQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUM1QixVQUFVO1lBQ1YsT0FBTztZQUNQLG1CQUFtQixFQUFFLElBQUk7WUFDekIscUNBQXFDLEVBQUUsS0FBSztZQUM1Qyw2QkFBNkIsRUFBRSxJQUFJO1lBQ25DLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxQyxTQUFTLFNBQVMsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7SUFDL0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lB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LENBQUM7UUFDRixNQUFNLEtBQUssR0FBRyx3QkFBd0IsQ0FDcEMsY0FBYyxFQUNkOzs7O0NBSUwsQ0FDSSxDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDeEQsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRWpELE1BQU0saUJBQWlCLEdBQXNCO1lBQzNDLGVBQWUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN4QyxtQkFBbUIsRUFBRSxJQUFJLEdBQUcsRUFBRTtZQUM5QixvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRTtTQUNoQyxDQUFDO1FBRUYsTUFBTSxNQUFNLENBQ1YsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLDZCQUE2QixDQUNuRCxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFDZCxPQUFPLEVBQ1AsaUJBQWlCLENBQ2xCLENBQ0YsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIG1rZGlyU3luYyxcbiAgbWtkdGVtcFN5bmMsXG4gIHJlYWRGaWxlU3luYyxcbiAgcmVhbHBhdGhTeW5jLFxuICBybVN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIsIHR5cGUgRGlzY292ZXJlZEVudHJpZXMgfSBmcm9tICcuL2Jhc2UtYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YW5kYWxvbmVDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuY2xhc3MgVGVzdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU291cmNlU3RlcFJlZ2lzdHJhdGlvbnMoXG4gICAgaW5wdXRGaWxlczogc3RyaW5nW10sXG4gICAgb3V0ZmlsZTogc3RyaW5nLFxuICAgIGRpc2NvdmVyZWRFbnRyaWVzOiBEaXNjb3ZlcmVkRW50cmllc1xuICApIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVTdGVwc0J1bmRsZSh7XG4gICAgICBpbnB1dEZpbGVzLFxuICAgICAgb3V0ZmlsZSxcbiAgICAgIGV4dGVybmFsaXplTm9uU3RlcHM6IHRydWUsXG4gICAgICBidW5kbGVUcmFuc2l0aXZlTG9jYWxTdGVwRGVwZW5kZW5jaWVzOiBmYWxzZSxcbiAgICAgIHNvdXJjZVN0ZXBSZWdpc3RyYXRpb25JbXBvcnRzOiB0cnVlLFxuICAgICAgZGlzY292ZXJlZEVudHJpZXMsXG4gICAgfSk7XG4gIH1cbn1cblxuY29uc3QgcmVhbFRtcGRpciA9IHJlYWxwYXRoU3luYyh0bXBkaXIoKSk7XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZShwYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpOiB2b2lkIHtcbiAgbWtkaXJTeW5jKGRpcm5hbWUocGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICB3cml0ZUZpbGVTeW5jKHBhdGgsIGNvbnRlbnRzLCAndXRmLTgnKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVpbGRlcih3b3JraW5nRGlyOiBzdHJpbmcpOiBUZXN0QnVpbGRlciB7XG4gIGNvbnN0IGNvbmZpZzogU3RhbmRhbG9uZUNvbmZpZyA9IHtcbiAgICBidWlsZFRhcmdldDogJ3N0YW5kYWxvbmUnLFxuICAgIHdvcmtpbmdEaXIsXG4gICAgZGlyczogWycuJ10sXG4gICAgc3RlcHNCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICcud29ya2Zsb3cnLCAnc3RlcHMuanMnKSxcbiAgICB3b3JrZmxvd3NCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICcud29ya2Zsb3cnLCAnd29ya2Zsb3dzLmpzJyksXG4gICAgd2ViaG9va0J1bmRsZVBhdGg6IGpvaW4od29ya2luZ0RpciwgJy53b3JrZmxvdycsICd3ZWJob29rLmpzJyksXG4gIH07XG4gIHJldHVybiBuZXcgVGVzdEJ1aWxkZXIoY29uZmlnKTtcbn1cblxuZGVzY3JpYmUoJ3N0ZXAgc291cmNlIHJlZ2lzdHJhdGlvbicsICgpID0+IHtcbiAgbGV0IHRlc3RSb290OiBzdHJpbmc7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdGVzdFJvb3QgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICd3b3JrZmxvdy1zdGVwLXJlZ2lzdHJhdGlvbi0nKSk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbih0ZXN0Um9vdCwgJ25vZGVfbW9kdWxlcycsICd3b3JrZmxvdycsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ3dvcmtmbG93JywgdmVyc2lvbjogJzEuMC4wJyB9KVxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgam9pbih0ZXN0Um9vdCwgJ25vZGVfbW9kdWxlcycsICd3b3JrZmxvdycsICdpbnRlcm5hbCcsICdidWlsdGlucy5qcycpLFxuICAgICAgJ2V4cG9ydCBjb25zdCBfX2J1aWx0aW5zID0gdHJ1ZTtcXG4nXG4gICAgKTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBybVN5bmModGVzdFJvb3QsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfSk7XG5cbiAgaXQoJ2ltcG9ydHMgc2VyZGUtb25seSBmaWxlcyBmb3Igc3RlcCBjb250ZXh0IGNsYXNzIHJlZ2lzdHJhdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlc3RSb290LCAnc3JjJywgJ2VudHJ5LnRzJyk7XG4gICAgY29uc3Qgc3RlcEZpbGUgPSBqb2luKHRlc3RSb290LCAnc3JjJywgJ3N0ZXAudHMnKTtcbiAgICBjb25zdCBzZXJkZUZpbGUgPSBqb2luKHRlc3RSb290LCAnc3JjJywgJ3NlcmRlLnRzJyk7XG4gICAgY29uc3Qgb3V0ZmlsZSA9IGpvaW4odGVzdFJvb3QsICcud29ya2Zsb3cnLCAnc3RlcHMuanMnKTtcblxuICAgIG1rZGlyU3luYyhkaXJuYW1lKG91dGZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB3cml0ZUZpbGUoZW50cnlGaWxlLCBgZXhwb3J0IHsgcnVuU3RlcCB9IGZyb20gJy4vc3RlcCc7XFxuYCk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc3RlcEZpbGUsXG4gICAgICBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blN0ZXAoKSB7XG4gICd1c2Ugc3RlcCc7XG4gIHJldHVybiAxO1xufVxuYFxuICAgICk7XG4gICAgd3JpdGVGaWxlKFxuICAgICAgc2VyZGVGaWxlLFxuICAgICAgYGV4cG9ydCBjbGFzcyBWYWx1ZSB7XG4gIHN0YXRpYyBjbGFzc0lkID0gJ1ZhbHVlJztcbiAgc3RhdGljIFtTeW1ib2wuZm9yKCd3b3JrZmxvdy1zZXJpYWxpemUnKV0odmFsdWU6IFZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctZGVzZXJpYWxpemUnKV0odmFsdWU6IFZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59XG5gXG4gICAgKTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWRFbnRyaWVzOiBEaXNjb3ZlcmVkRW50cmllcyA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldChbc3RlcEZpbGVdKSxcbiAgICAgIGRpc2NvdmVyZWRXb3JrZmxvd3M6IG5ldyBTZXQoKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0KFtzZXJkZUZpbGVdKSxcbiAgICB9O1xuXG4gICAgY29uc3QgeyBtYW5pZmVzdCB9ID0gYXdhaXQgY3JlYXRlQnVpbGRlcihcbiAgICAgIHRlc3RSb290XG4gICAgKS5jcmVhdGVTb3VyY2VTdGVwUmVnaXN0cmF0aW9ucyhbZW50cnlGaWxlXSwgb3V0ZmlsZSwgZGlzY292ZXJlZEVudHJpZXMpO1xuICAgIGNvbnN0IGdlbmVyYXRlZCA9IHJlYWRGaWxlU3luYyhvdXRmaWxlLCAndXRmLTgnKTtcblxuICAgIGV4cGVjdChnZW5lcmF0ZWQpLnRvQ29udGFpbignaW1wb3J0IFwid29ya2Zsb3cvaW50ZXJuYWwvYnVpbHRpbnNcIjsnKTtcbiAgICBleHBlY3QoZ2VuZXJhdGVkKS50b0NvbnRhaW4oJ2ltcG9ydCBcIi4uL3NyYy9zdGVwLnRzXCI7Jyk7XG4gICAgZXhwZWN0KGdlbmVyYXRlZCkudG9Db250YWluKCdpbXBvcnQgXCIuLi9zcmMvc2VyZGUudHNcIjsnKTtcbiAgICBleHBlY3QoT2JqZWN0LmtleXMobWFuaWZlc3QuY2xhc3NlcyA/PyB7fSkpLnRvQ29udGFpbignc3JjL3NlcmRlLnRzJyk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBwbnBtIG1hdGVyaWFsaXplcyB0aGUgc2FtZSBwYWNrYWdlIHZlcnNpb24gb25jZSBwZXIgcGVlci1kZXBlbmRlbmN5XG4gICAqIHJlc29sdXRpb24gKGUuZy4gYC5wbnBtL3N0ZXAtcGtnQDEuMC4wX3BlZXItYUAxLjAuMC8uLi5gIGFuZFxuICAgKiBgLnBucG0vc3RlcC1wa2dAMS4wLjBfcGVlci1iQDIuMC4wLy4uLmApLCB3aXRoIGJ5dGUtaWRlbnRpY2FsIGZpbGVzLlxuICAgKiBCb3RoIGNvcGllcyBnZW5lcmF0ZSB0aGUgc2FtZSBjYW5vbmljYWwgc3RlcCBJRC5cbiAgICovXG4gIGZ1bmN0aW9uIHdyaXRlUG5wbVZpcnR1YWxJbnN0YW5jZShcbiAgICBwZWVyU3VmZml4OiBzdHJpbmcsXG4gICAgc3RlcFNvdXJjZTogc3RyaW5nXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgcGtnRGlyID0gam9pbihcbiAgICAgIHRlc3RSb290LFxuICAgICAgJ25vZGVfbW9kdWxlcycsXG4gICAgICAnLnBucG0nLFxuICAgICAgYHN0ZXAtcGtnQDEuMC4wXyR7cGVlclN1ZmZpeH1gLFxuICAgICAgJ25vZGVfbW9kdWxlcycsXG4gICAgICAnc3RlcC1wa2cnXG4gICAgKTtcbiAgICB3cml0ZUZpbGUoXG4gICAgICBqb2luKHBrZ0RpciwgJ3BhY2thZ2UuanNvbicpLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBuYW1lOiAnc3RlcC1wa2cnLFxuICAgICAgICB2ZXJzaW9uOiAnMS4wLjAnLFxuICAgICAgICBleHBvcnRzOiB7ICcuJzogJy4vaW5kZXguanMnIH0sXG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3Qgc3RlcEZpbGUgPSBqb2luKHBrZ0RpciwgJ2luZGV4LmpzJyk7XG4gICAgd3JpdGVGaWxlKHN0ZXBGaWxlLCBzdGVwU291cmNlKTtcbiAgICByZXR1cm4gc3RlcEZpbGU7XG4gIH1cblxuICBpdCgnZGVkdXBsaWNhdGVzIGlkZW50aWNhbCBwbnBtIHBlZXItdmFyaWFudCBwYWNrYWdlIGNvcGllcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzdGVwU291cmNlID0gYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5QYWNrYWdlZFN0ZXAoKSB7XG4gICd1c2Ugc3RlcCc7XG4gIHJldHVybiAxO1xufVxuYDtcbiAgICBjb25zdCBjb3B5QSA9IHdyaXRlUG5wbVZpcnR1YWxJbnN0YW5jZSgncGVlci1hQDEuMC4wJywgc3RlcFNvdXJjZSk7XG4gICAgY29uc3QgY29weUIgPSB3cml0ZVBucG1WaXJ0dWFsSW5zdGFuY2UoJ3BlZXItYkAyLjAuMCcsIHN0ZXBTb3VyY2UpO1xuICAgIGNvbnN0IG91dGZpbGUgPSBqb2luKHRlc3RSb290LCAnLndvcmtmbG93JywgJ3N0ZXBzLmpzJyk7XG4gICAgbWtkaXJTeW5jKGRpcm5hbWUob3V0ZmlsZSksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgY29uc3QgZGlzY292ZXJlZEVudHJpZXM6IERpc2NvdmVyZWRFbnRyaWVzID0ge1xuICAgICAgZGlzY292ZXJlZFN0ZXBzOiBuZXcgU2V0KFtjb3B5QSwgY29weUJdKSxcbiAgICAgIGRpc2NvdmVyZWRXb3JrZmxvd3M6IG5ldyBTZXQoKSxcbiAgICAgIGRpc2NvdmVyZWRTZXJkZUZpbGVzOiBuZXcgU2V0KCksXG4gICAgfTtcblxuICAgIGNvbnN0IHsgbWFuaWZlc3QgfSA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIoXG4gICAgICB0ZXN0Um9vdFxuICAgICkuY3JlYXRlU291cmNlU3RlcFJlZ2lzdHJhdGlvbnMoW2NvcHlBLCBjb3B5Ql0sIG91dGZpbGUsIGRpc2NvdmVyZWRFbnRyaWVzKTtcblxuICAgIC8vIEJvdGggY29waWVzIGxhbmQgaW4gdGhlIG1hbmlmZXN0IHVuZGVyIHRoZSBzYW1lIGNhbm9uaWNhbCBzdGVwIElELlxuICAgIGNvbnN0IHN0ZXBFbnRyaWVzID0gT2JqZWN0LnZhbHVlcyhtYW5pZmVzdC5zdGVwcyA/PyB7fSk7XG4gICAgZXhwZWN0KHN0ZXBFbnRyaWVzKS50b0hhdmVMZW5ndGgoMik7XG4gICAgZm9yIChjb25zdCBlbnRyaWVzIG9mIHN0ZXBFbnRyaWVzKSB7XG4gICAgICBleHBlY3QoZW50cmllcy5ydW5QYWNrYWdlZFN0ZXAuc3RlcElkKS50b0JlKFxuICAgICAgICAnc3RlcC8vc3RlcC1wa2dAMS4wLjAvL3J1blBhY2thZ2VkU3RlcCdcbiAgICAgICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc3RpbGwgcmVqZWN0cyBwbnBtLXN0eWxlIHBhY2thZ2UgY29waWVzIHdob3NlIGltcGxlbWVudGF0aW9ucyBkaWZmZXInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY29weUEgPSB3cml0ZVBucG1WaXJ0dWFsSW5zdGFuY2UoXG4gICAgICAncGVlci1hQDEuMC4wJyxcbiAgICAgIGBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuUGFja2FnZWRTdGVwKCkge1xuICAndXNlIHN0ZXAnO1xuICByZXR1cm4gMTtcbn1cbmBcbiAgICApO1xuICAgIGNvbnN0IGNvcHlCID0gd3JpdGVQbnBtVmlydHVhbEluc3RhbmNlKFxuICAgICAgJ3BlZXItYkAyLjAuMCcsXG4gICAgICBgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1blBhY2thZ2VkU3RlcCgpIHtcbiAgJ3VzZSBzdGVwJztcbiAgcmV0dXJuIDI7XG59XG5gXG4gICAgKTtcbiAgICBjb25zdCBvdXRmaWxlID0gam9pbih0ZXN0Um9vdCwgJy53b3JrZmxvdycsICdzdGVwcy5qcycpO1xuICAgIG1rZGlyU3luYyhkaXJuYW1lKG91dGZpbGUpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IGRpc2NvdmVyZWRFbnRyaWVzOiBEaXNjb3ZlcmVkRW50cmllcyA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldChbY29weUEsIGNvcHlCXSksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0KCksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldCgpLFxuICAgIH07XG5cbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBjcmVhdGVCdWlsZGVyKHRlc3RSb290KS5jcmVhdGVTb3VyY2VTdGVwUmVnaXN0cmF0aW9ucyhcbiAgICAgICAgW2NvcHlBLCBjb3B5Ql0sXG4gICAgICAgIG91dGZpbGUsXG4gICAgICAgIGRpc2NvdmVyZWRFbnRyaWVzXG4gICAgICApXG4gICAgKS5yZWplY3RzLnRvVGhyb3coL0R1cGxpY2F0ZSB3b3JrZmxvdyBzdGVwIElELyk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -31,7 +31,7 @@ export interface SwcPluginOptions {
31
31
  * ESM loader (e.g. vitest), which cannot resolve .ts extensions.
32
32
  *
33
33
  * Leave disabled (default) when a downstream bundler (webpack, Vite, etc.)
34
- * handles resolution those tools resolve .ts natively and rewriting
34
+ * handles resolution: those tools resolve .ts natively and rewriting
35
35
  * breaks them because the .js file doesn't exist on disk.
36
36
  */
37
37
  rewriteTsExtensions?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAQlC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED,MAAM,MAAM,0BAA0B,GAAG,CACvC,MAAM,EAAE,uBAAuB,KAC5B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAkHD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA6XjE"}
1
+ {"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAalC,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED,MAAM,MAAM,0BAA0B,GAAG,CACvC,MAAM,EAAE,uBAAuB,KAC5B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AA0CD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAuYjE"}