@workflow/core 5.0.0-beta.37 → 5.0.0-beta.39

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 (84) hide show
  1. package/dist/capabilities.d.ts +5 -0
  2. package/dist/capabilities.d.ts.map +1 -1
  3. package/dist/capabilities.js +20 -2
  4. package/dist/context-violation-error.d.ts.map +1 -1
  5. package/dist/context-violation-error.js +4 -2
  6. package/dist/private.d.ts +21 -5
  7. package/dist/private.d.ts.map +1 -1
  8. package/dist/private.js +67 -7
  9. package/dist/replay-payload-cache.d.ts +11 -0
  10. package/dist/replay-payload-cache.d.ts.map +1 -1
  11. package/dist/replay-payload-cache.js +21 -4
  12. package/dist/runtime/compute-instance.d.ts +12 -0
  13. package/dist/runtime/compute-instance.d.ts.map +1 -0
  14. package/dist/runtime/compute-instance.js +13 -0
  15. package/dist/runtime/constants.d.ts +18 -0
  16. package/dist/runtime/constants.d.ts.map +1 -1
  17. package/dist/runtime/constants.js +42 -1
  18. package/dist/runtime/helpers.d.ts +103 -31
  19. package/dist/runtime/helpers.d.ts.map +1 -1
  20. package/dist/runtime/helpers.js +138 -61
  21. package/dist/runtime/replay-recovery-reporter.d.ts +36 -0
  22. package/dist/runtime/replay-recovery-reporter.d.ts.map +1 -0
  23. package/dist/runtime/replay-recovery-reporter.js +64 -0
  24. package/dist/runtime/resume-hook.d.ts +22 -2
  25. package/dist/runtime/resume-hook.d.ts.map +1 -1
  26. package/dist/runtime/resume-hook.js +281 -47
  27. package/dist/runtime/start.d.ts.map +1 -1
  28. package/dist/runtime/start.js +50 -3
  29. package/dist/runtime/step-executor.d.ts +17 -13
  30. package/dist/runtime/step-executor.d.ts.map +1 -1
  31. package/dist/runtime/step-executor.js +36 -24
  32. package/dist/runtime/suspension-handler.d.ts +13 -8
  33. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  34. package/dist/runtime/suspension-handler.js +60 -18
  35. package/dist/runtime/world.d.ts +10 -5
  36. package/dist/runtime/world.d.ts.map +1 -1
  37. package/dist/runtime/world.js +128 -21
  38. package/dist/runtime.d.ts +1 -1
  39. package/dist/runtime.d.ts.map +1 -1
  40. package/dist/runtime.js +622 -67
  41. package/dist/serialization/codec-devalue.d.ts.map +1 -1
  42. package/dist/serialization/codec-devalue.js +9 -2
  43. package/dist/serialization/codec.d.ts +17 -0
  44. package/dist/serialization/codec.d.ts.map +1 -1
  45. package/dist/serialization/codec.js +1 -1
  46. package/dist/serialization/hardened.d.ts +155 -0
  47. package/dist/serialization/hardened.d.ts.map +1 -0
  48. package/dist/serialization/hardened.js +523 -0
  49. package/dist/serialization/index.d.ts +2 -1
  50. package/dist/serialization/index.d.ts.map +1 -1
  51. package/dist/serialization/index.js +1 -1
  52. package/dist/serialization/reducers/class.d.ts.map +1 -1
  53. package/dist/serialization/reducers/class.js +11 -6
  54. package/dist/serialization/reducers/common.d.ts +1 -1
  55. package/dist/serialization/reducers/common.d.ts.map +1 -1
  56. package/dist/serialization/reducers/common.js +100 -61
  57. package/dist/serialization/reducers/step-function.d.ts.map +1 -1
  58. package/dist/serialization/reducers/step-function.js +25 -9
  59. package/dist/serialization.d.ts +13 -9
  60. package/dist/serialization.d.ts.map +1 -1
  61. package/dist/serialization.js +150 -49
  62. package/dist/set-attributes.d.ts.map +1 -1
  63. package/dist/set-attributes.js +5 -1
  64. package/dist/step/context-storage.d.ts +1 -1
  65. package/dist/step/context-storage.d.ts.map +1 -1
  66. package/dist/step/context-storage.js +6 -4
  67. package/dist/step/writable-stream.d.ts.map +1 -1
  68. package/dist/step/writable-stream.js +3 -2
  69. package/dist/step.d.ts.map +1 -1
  70. package/dist/step.js +9 -2
  71. package/dist/telemetry/semantic-conventions.d.ts +43 -2
  72. package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
  73. package/dist/telemetry/semantic-conventions.js +32 -1
  74. package/dist/version.d.ts +1 -1
  75. package/dist/version.js +2 -2
  76. package/dist/workflow/hook.d.ts.map +1 -1
  77. package/dist/workflow/hook.js +38 -1
  78. package/dist/workflow.d.ts +1 -1
  79. package/dist/workflow.d.ts.map +1 -1
  80. package/dist/workflow.js +6 -2
  81. package/package.json +7 -12
  82. package/dist/runtime/world-target.d.ts +0 -11
  83. package/dist/runtime/world-target.d.ts.map +0 -1
  84. package/dist/runtime/world-target.js +0 -15
@@ -1,5 +1,27 @@
1
- import * as targetWorldModule from '@workflow/core/runtime/world-target';
1
+ import { createRequire } from 'node:module';
2
+ import { pathToFileURL } from 'node:url';
3
+ import { isVercelWorldTarget, resolveWorkflowTargetWorld, } from '@workflow/utils';
4
+ import { createWorld as createLocalWorld } from '@workflow/world-local';
5
+ import { createWorld as createVercelWorld } from '@workflow/world-vercel';
2
6
  import { assertWorldSupportsRuntimeProtocol } from './world-compatibility.js';
7
+ function getRuntimeRequire() {
8
+ // Resolve from the app root (process.cwd()) so custom world packages
9
+ // like @workflow/world-postgres can be found even though they're not
10
+ // dependencies of @workflow/core. Using import.meta.url would resolve
11
+ // from core's location, missing app-level packages.
12
+ try {
13
+ return createRequire(
14
+ /* webpackIgnore: true */
15
+ /* turbopackIgnore: true */
16
+ pathToFileURL(process.cwd() + '/package.json').href);
17
+ }
18
+ catch {
19
+ return createRequire(
20
+ /* webpackIgnore: true */
21
+ /* turbopackIgnore: true */
22
+ import.meta.url);
23
+ }
24
+ }
3
25
  const WorldCache = Symbol.for('@workflow/world//cache');
4
26
  const StubbedWorldCache = Symbol.for('@workflow/world//stubbedCache');
5
27
  const WorldCachePromise = Symbol.for('@workflow/world//cachePromise');
@@ -7,7 +29,7 @@ const StubbedWorldCachePromise = Symbol.for('@workflow/world//stubbedCachePromis
7
29
  const globalSymbols = globalThis;
8
30
  /**
9
31
  * Create a World instance from a world factory module. Shared by
10
- * `createWorld()` (for the statically injected target world module) and
32
+ * `createWorld()` (for the world package named by WORKFLOW_TARGET_WORLD) and
11
33
  * tooling that loads a world module dynamically (e.g. the Nitro dev
12
34
  * handler and `@workflow/world-testing`). World packages should export
13
35
  * `createWorld()`.
@@ -24,27 +46,109 @@ export function createWorldFromModule(mod) {
24
46
  }
25
47
  throw new Error('Invalid target world module: must export createWorld(), a default factory, or a default World instance.');
26
48
  }
49
+ // Dynamic import for custom world modules. Uses a standard import()
50
+ // wrapped in a try/catch with require() fallback for CJS test runners.
51
+ // Note: the previous `new Function('specifier', 'return import(specifier)')`
52
+ // pattern was replaced because Turbopack (Next.js) treats unresolvable
53
+ // dynamic imports from `new Function` as fatal build errors in the V2
54
+ // combined flow route context.
55
+ function resolveModulePath(specifier) {
56
+ // Already a file:// URL
57
+ if (specifier.startsWith('file://')) {
58
+ return specifier;
59
+ }
60
+ // Absolute path - convert to file:// URL
61
+ if (specifier.startsWith('/')) {
62
+ return pathToFileURL(
63
+ /* webpackIgnore: true */
64
+ /* turbopackIgnore: true */
65
+ specifier).href;
66
+ }
67
+ // Relative path - resolve relative to cwd and convert to file:// URL
68
+ if (specifier.startsWith('./') || specifier.startsWith('../')) {
69
+ return pathToFileURL(
70
+ /* webpackIgnore: true */
71
+ /* turbopackIgnore: true */
72
+ process.cwd() + '/' + specifier).href;
73
+ }
74
+ // Package specifier - use require.resolve to find the package
75
+ try {
76
+ return pathToFileURL(
77
+ /* webpackIgnore: true */
78
+ /* turbopackIgnore: true */
79
+ getRuntimeRequire().resolve(
80
+ /* webpackIgnore: true */
81
+ /* turbopackIgnore: true */
82
+ specifier)).href;
83
+ }
84
+ catch {
85
+ return specifier;
86
+ }
87
+ }
27
88
  /**
28
- * Create a new world instance from the statically imported target world module.
89
+ * Create a new world instance based on environment variables.
90
+ * WORKFLOW_TARGET_WORLD is used to determine the target world.
29
91
  *
30
- * Framework integrations alias `@workflow/core/runtime/world-target` to the
31
- * concrete world package at build time, so bundlers see a static import path
32
- * instead of tracing a runtime-built require/import expression.
92
+ * Note: WORKFLOW_VERCEL_* env vars (PROJECT, TEAM, AUTH_TOKEN, etc.) are
93
+ * intentionally NOT read here. Those are for CLI/observability tooling only
94
+ * and should not affect runtime behavior. The Vercel runtime provides
95
+ * authentication via OIDC tokens and project context via system env vars
96
+ * (VERCEL_DEPLOYMENT_ID, VERCEL_PROJECT_ID). Tooling that needs these env
97
+ * vars should call the Vercel world's createWorld() directly with an explicit
98
+ * config and use setWorld() to inject the instance.
33
99
  */
34
100
  export const createWorld = async () => {
35
- const world = await createWorldFromModule(targetWorldModule);
36
- const staleEnvVars = [
37
- 'WORKFLOW_VERCEL_PROJECT',
38
- 'WORKFLOW_VERCEL_TEAM',
39
- 'WORKFLOW_VERCEL_AUTH_TOKEN',
40
- 'WORKFLOW_VERCEL_ENV',
41
- ].filter((key) => process.env[key]);
42
- if (staleEnvVars.length > 0 && process.env.VERCEL === '1') {
43
- console.warn(`[workflow] Warning: ${staleEnvVars.join(', ')} env var(s) ` +
44
- 'are set but have no effect at runtime. These are only used by the Workflow CLI. ' +
45
- 'Remove them from your Vercel project environment variables.');
46
- }
47
- return world;
101
+ const targetWorld = resolveWorkflowTargetWorld();
102
+ if (isVercelWorldTarget(targetWorld)) {
103
+ // Warn if WORKFLOW_VERCEL_* env vars are set inside a Vercel serverless
104
+ // function (VERCEL=1) — they have no effect at runtime and likely indicate
105
+ // a misconfiguration (user manually added them as Vercel project env vars,
106
+ // which is not needed). We gate on VERCEL=1 so the warning does not fire
107
+ // when the CLI or web observability app sets these env vars intentionally.
108
+ const staleEnvVars = [
109
+ 'WORKFLOW_VERCEL_PROJECT',
110
+ 'WORKFLOW_VERCEL_TEAM',
111
+ 'WORKFLOW_VERCEL_AUTH_TOKEN',
112
+ 'WORKFLOW_VERCEL_ENV',
113
+ ].filter((key) => process.env[key]);
114
+ if (staleEnvVars.length > 0 && process.env.VERCEL === '1') {
115
+ console.warn(`[workflow] Warning: ${staleEnvVars.join(', ')} env var(s) ` +
116
+ 'are set but have no effect at runtime. These are only used by the Workflow CLI. ' +
117
+ 'Remove them from your Vercel project environment variables.');
118
+ }
119
+ return createVercelWorld();
120
+ }
121
+ if (targetWorld === 'local') {
122
+ return createLocalWorld({
123
+ dataDir: process.env.WORKFLOW_LOCAL_DATA_DIR,
124
+ });
125
+ }
126
+ // Try require() first for custom worlds — this avoids Turbopack tracing
127
+ // a dynamic import() that it can't statically resolve. Fall back to
128
+ // dynamic import() for ESM-only packages.
129
+ let mod;
130
+ try {
131
+ mod = getRuntimeRequire()(
132
+ /* webpackIgnore: true */
133
+ /* turbopackIgnore: true */
134
+ targetWorld);
135
+ }
136
+ catch {
137
+ const resolvedPath = resolveModulePath(targetWorld);
138
+ mod = await import(
139
+ /* webpackIgnore: true */
140
+ /* turbopackIgnore: true */
141
+ resolvedPath);
142
+ }
143
+ if (typeof mod === 'function') {
144
+ return mod();
145
+ }
146
+ try {
147
+ return await createWorldFromModule(mod);
148
+ }
149
+ catch {
150
+ throw new Error(`Invalid target world module: ${targetWorld}, must export a createWorld function or a default function that returns a World instance.`);
151
+ }
48
152
  };
49
153
  /**
50
154
  * Some functions from the world are needed at build time, but we do NOT want
@@ -104,7 +208,10 @@ export const setWorld = (world) => {
104
208
  globalSymbols[StubbedWorldCachePromise] = undefined;
105
209
  };
106
210
  // Register getWorld on globalThis so getWorldLazy can call it directly when
107
- // world.ts is statically present in the bundle.
211
+ // world.ts is statically present in the bundle. This avoids the relative
212
+ // dynamic import('./world.js') fallback in get-world-lazy.ts, which fails
213
+ // after Next.js inlines get-world-lazy.js into a route bundle (no sibling
214
+ // world.js exists at the bundled location).
108
215
  //
109
216
  // For server routes that only consume `start` (or another helper that goes
110
217
  // through getWorldLazy without statically using getWorld), webpack/turbopack
@@ -119,4 +226,4 @@ export const setWorld = (world) => {
119
226
  const GetWorldFnKey = Symbol.for('@workflow/world//getWorldFn');
120
227
  globalThis[GetWorldFnKey] ??=
121
228
  getWorld;
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS93b3JsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssaUJBQWlCLE1BQU0scUNBQXFDLENBQUM7QUFFekUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFOUUsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3hELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FDekMsc0NBQXNDLENBQ3ZDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FLZixVQUFVLENBQUM7QUFPZjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQ25DLEdBQXVCO0lBRXZCLElBQUksT0FBTyxHQUFHLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFDLE9BQU8sR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ0QsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU8sR0FBRyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEdBQUcsQ0FBQyxPQUFnQixDQUFDO0lBQzlCLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUNiLHlHQUF5RyxDQUMxRyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0s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QUFDLEtBQXdCLEVBQVEsRUFBRTtJQUN6RCxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUN6QyxhQUFhLENBQUMsaUJBQWlCLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDN0MsYUFBYSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLDRFQUE0RTtBQUM1RSxnREFBZ0Q7QUFDaEQsRUFBRTtBQUNGLDJFQUEyRTtBQUMzRSw2RUFBNkU7QUFDN0Usc0VBQXNFO0FBQ3RFLDBFQUEwRTtBQUMxRSxtRUFBbUU7QUFDbkUsd0VBQXdFO0FBQ3hFLEVBQUU7QUFDRix3RUFBd0U7QUFDeEUsMEVBQTBFO0FBQzFFLG9CQUFvQjtBQUNwQixNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFDL0QsVUFBeUQsQ0FBQyxhQUFhLENBQUM7SUFDdkUsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGFyZ2V0V29ybGRNb2R1bGUgZnJvbSAnQHdvcmtmbG93L2NvcmUvcnVudGltZS93b3JsZC10YXJnZXQnO1xuaW1wb3J0IHR5cGUgeyBXb3JsZCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBhc3NlcnRXb3JsZFN1cHBvcnRzUnVudGltZVByb3RvY29sIH0gZnJvbSAnLi93b3JsZC1jb21wYXRpYmlsaXR5LmpzJztcblxuY29uc3QgV29ybGRDYWNoZSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy93b3JsZC8vY2FjaGUnKTtcbmNvbnN0IFN0dWJiZWRXb3JsZENhY2hlID0gU3ltYm9sLmZvcignQHdvcmtmbG93L3dvcmxkLy9zdHViYmVkQ2FjaGUnKTtcbmNvbnN0IFdvcmxkQ2FjaGVQcm9taXNlID0gU3ltYm9sLmZvcignQHdvcmtmbG93L3dvcmxkLy9jYWNoZVByb21pc2UnKTtcbmNvbnN0IFN0dWJiZWRXb3JsZENhY2hlUHJvbWlzZSA9IFN5bWJvbC5mb3IoXG4gICdAd29ya2Zsb3cvd29ybGQvL3N0dWJiZWRDYWNoZVByb21pc2UnXG4pO1xuXG5jb25zdCBnbG9iYWxTeW1ib2xzOiB0eXBlb2YgZ2xvYmFsVGhpcyAmIHtcbiAgW1dvcmxkQ2FjaGVdPzogV29ybGQ7XG4gIFtTdHViYmVkV29ybGRDYWNoZV0/OiBXb3JsZDtcbiAgW1dvcmxkQ2FjaGVQcm9taXNlXT86IFByb21pc2U8V29ybGQ+O1xuICBbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXT86IFByb21pc2U8V29ybGQ+O1xufSA9IGdsb2JhbFRoaXM7XG5cbmV4cG9ydCB0eXBlIFdvcmxkRmFjdG9yeU1vZHVsZSA9IHtcbiAgY3JlYXRlV29ybGQ/OiAoKSA9PiBXb3JsZCB8IFByb21pc2U8V29ybGQ+O1xuICBkZWZhdWx0PzogKCgpID0+IFdvcmxkIHwgUHJvbWlzZTxXb3JsZD4pIHwgV29ybGQ7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIFdvcmxkIGluc3RhbmNlIGZyb20gYSB3b3JsZCBmYWN0b3J5IG1vZHVsZS4gU2hhcmVkIGJ5XG4gKiBgY3JlYXRlV29ybGQoKWAgKGZvciB0aGUgc3RhdGljYWxseSBpbmplY3RlZCB0YXJnZXQgd29ybGQgbW9kdWxlKSBhbmRcbiAqIHRvb2xpbmcgdGhhdCBsb2FkcyBhIHdvcmxkIG1vZHVsZSBkeW5hbWljYWxseSAoZS5nLiB0aGUgTml0cm8gZGV2XG4gKiBoYW5kbGVyIGFuZCBgQHdvcmtmbG93L3dvcmxkLXRlc3RpbmdgKS4gV29ybGQgcGFja2FnZXMgc2hvdWxkIGV4cG9ydFxuICogYGNyZWF0ZVdvcmxkKClgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ybGRGcm9tTW9kdWxlKFxuICBtb2Q6IFdvcmxkRmFjdG9yeU1vZHVsZVxuKTogV29ybGQgfCBQcm9taXNlPFdvcmxkPiB7XG4gIGlmICh0eXBlb2YgbW9kLmNyZWF0ZVdvcmxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1vZC5jcmVhdGVXb3JsZCgpO1xuICB9XG4gIGlmICh0eXBlb2YgbW9kLmRlZmF1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbW9kLmRlZmF1bHQoKTtcbiAgfVxuICBpZiAobW9kLmRlZmF1bHQgJiYgdHlwZW9mIG1vZC5kZWZhdWx0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtb2QuZGVmYXVsdCBhcyBXb3JsZDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnSW52YWxpZCB0YXJnZXQgd29ybGQgbW9kdWxlOiBtdXN0IGV4cG9ydCBjcmVhdGVXb3JsZCgpLCBhIGRlZmF1bHQgZmFjdG9yeSwgb3IgYSBkZWZhdWx0IFdvcmxkIGluc3RhbmNlLidcbiAgKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgd29ybGQgaW5zdGFuY2UgZnJvbSB0aGUgc3RhdGljYWxseSBpbXBvcnRlZCB0YXJnZXQgd29ybGQgbW9kdWxlLlxuICpcbiAqIEZyYW1ld29yayBpbnRlZ3JhdGlvbnMgYWxpYXMgYEB3b3JrZmxvdy9jb3JlL3J1bnRpbWUvd29ybGQtdGFyZ2V0YCB0byB0aGVcbiAqIGNvbmNyZXRlIHdvcmxkIHBhY2thZ2UgYXQgYnVpbGQgdGltZSwgc28gYnVuZGxlcnMgc2VlIGEgc3RhdGljIGltcG9ydCBwYXRoXG4gKiBpbnN0ZWFkIG9mIHRyYWNpbmcgYSBydW50aW1lLWJ1aWx0IHJlcXVpcmUvaW1wb3J0IGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVXb3JsZCA9IGFzeW5jICgpOiBQcm9taXNlPFdvcmxkPiA9PiB7XG4gIGNvbnN0IHdvcmxkID0gYXdhaXQgY3JlYXRlV29ybGRGcm9tTW9kdWxlKHRhcmdldFdvcmxkTW9kdWxlKTtcblxuICBjb25zdCBzdGFsZUVudlZhcnMgPSBbXG4gICAgJ1dPUktGTE9XX1ZFUkNFTF9QUk9KRUNUJyxcbiAgICAnV09SS0ZMT1dfVkVSQ0VMX1RFQU0nLFxuICAgICdXT1JLRkxPV19WRVJDRUxfQVVUSF9UT0tFTicsXG4gICAgJ1dPUktGTE9XX1ZFUkNFTF9FTlYnLFxuICBdLmZpbHRlcigoa2V5KSA9PiBwcm9jZXNzLmVudltrZXldKTtcbiAgaWYgKHN0YWxlRW52VmFycy5sZW5ndGggPiAwICYmIHByb2Nlc3MuZW52LlZFUkNFTCA9PT0gJzEnKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFt3b3JrZmxvd10gV2FybmluZzogJHtzdGFsZUVudlZhcnMuam9pbignLCAnKX0gZW52IHZhcihzKSBgICtcbiAgICAgICAgJ2FyZSBzZXQgYnV0IGhhdmUgbm8gZWZmZWN0IGF0IHJ1bnRpbWUuIFRoZXNlIGFyZSBvbmx5IHVzZWQgYnkgdGhlIFdvcmtmbG93IENMSS4gJyArXG4gICAgICAgICdSZW1vdmUgdGhlbSBmcm9tIHlvdXIgVmVyY2VsIHByb2plY3QgZW52aXJvbm1lbnQgdmFyaWFibGVzLidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHdvcmxkO1xufTtcblxuZXhwb3J0IHR5cGUgV29ybGRIYW5kbGVycyA9IFBpY2s8V29ybGQsICdjcmVhdGVRdWV1ZUhhbmRsZXInIHwgJ3NwZWNWZXJzaW9uJz47XG5cbi8qKlxuICogU29tZSBmdW5jdGlvbnMgZnJvbSB0aGUgd29ybGQgYXJlIG5lZWRlZCBhdCBidWlsZCB0aW1lLCBidXQgd2UgZG8gTk9UIHdhbnRcbiAqIHRvIGNhY2hlIHRoZSB3b3JsZCBpbiB0aG9zZSBpbnN0YW5jZXMgZm9yIGdlbmVyYWwgdXNlLCBzaW5jZSB3ZSBkb24ndCBoYXZlXG4gKiB0aGUgY29ycmVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IHlldC4gVGhpcyBpcyBhIHNhZmUgZnVuY3Rpb24gdG9cbiAqIGNhbGwgYXQgYnVpbGQgdGltZSwgdGhhdCBvbmx5IGdpdmVzIGFjY2VzcyB0byBub24tZW52aXJvbm1lbnQtYm91bmQgd29ybGRcbiAqIGZ1bmN0aW9ucy4gVGhlIG9ubHkgYmluZGluZyB2YWx1ZSBzaG91bGQgYmUgdGhlIHRhcmdldCB3b3JsZC5cbiAqIE9uY2Ugd2UgbWlncmF0ZSB0byBhIGZpbGUtYmFzZWQgY29uZmlndXJhdGlvbiAod29ya2Zsb3cuY29uZmlnLnRzKSwgd2Ugc2hvdWxkXG4gKiBiZSBhYmxlIHRvIHJlLWNvbWJpbmUgZ2V0V29ybGQgYW5kIGdldFdvcmxkSGFuZGxlcnMgaW50byBvbmUgc2luZ2xldG9uLlxuICovXG5leHBvcnQgY29uc3QgZ2V0V29ybGRIYW5kbGVycyA9IGFzeW5jICgpOiBQcm9taXNlPFdvcmxkSGFuZGxlcnM+ID0+IHtcbiAgaWYgKGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdKSB7XG4gICAgYXNzZXJ0V29ybGRTdXBwb3J0c1J1bnRpbWVQcm90b2NvbChnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlXSk7XG4gICAgcmV0dXJuIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdO1xuICB9XG4gIC8vIFN0b3JlIHRoZSBwcm9taXNlIGltbWVkaWF0ZWx5IHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIHdpdGggY29uY3VycmVudCBjYWxscy5cbiAgLy8gQ2xlYXIgb24gcmVqZWN0aW9uIHNvIHN1YnNlcXVlbnQgY2FsbHMgY2FuIHJldHJ5IGluc3RlYWQgb2YgY2FjaGluZyB0aGUgZmFpbHVyZS5cbiAgaWYgKCFnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0pIHtcbiAgICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0gPSBjcmVhdGVXb3JsZCgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXSA9IHVuZGVmaW5lZDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBfd29ybGQgPSBhd2FpdCBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV07XG4gIGFzc2VydFdvcmxkU3VwcG9ydHNSdW50aW1lUHJvdG9jb2woX3dvcmxkKTtcbiAgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZV0gPSBfd29ybGQ7XG4gIHJldHVybiB7XG4gICAgY3JlYXRlUXVldWVIYW5kbGVyOiBfd29ybGQuY3JlYXRlUXVldWVIYW5kbGVyLFxuICAgIHNwZWNWZXJzaW9uOiBfd29ybGQuc3BlY1ZlcnNpb24sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0V29ybGQgPSBhc3luYyAoKTogUHJvbWlzZTxXb3JsZD4gPT4ge1xuICBpZiAoZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSkge1xuICAgIGFzc2VydFdvcmxkU3VwcG9ydHNSdW50aW1lUHJvdG9jb2woZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSk7XG4gICAgcmV0dXJuIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV07XG4gIH1cbiAgLy8gU3RvcmUgdGhlIHByb21pc2UgaW1tZWRpYXRlbHkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgd2l0aCBjb25jdXJyZW50IGNhbGxzLlxuICAvLyBDbGVhciBvbiByZWplY3Rpb24gc28gc3Vic2VxdWVudCBjYWxscyBjYW4gcmV0cnkgaW5zdGVhZCBvZiBjYWNoaW5nIHRoZSBmYWlsdXJlLlxuICBpZiAoIWdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdKSB7XG4gICAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0gPSBjcmVhdGVXb3JsZCgpLmNhdGNoKChlcnIpID0+IHtcbiAgICAgIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdID0gdW5kZWZpbmVkO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuICB9XG4gIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0gPSBhd2FpdCBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVQcm9taXNlXTtcbiAgYXNzZXJ0V29ybGRTdXBwb3J0c1J1bnRpbWVQcm90b2NvbChnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdKTtcbiAgcmV0dXJuIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV07XG59O1xuXG4vKipcbiAqIFJlc2V0IHRoZSBjYWNoZWQgd29ybGQgaW5zdGFuY2UuIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIGVudmlyb25tZW50XG4gKiB2YXJpYWJsZXMgY2hhbmdlIGFuZCB5b3UgbmVlZCB0byByZWluaXRpYWxpemUgdGhlIHdvcmxkIHdpdGggbmV3IGNvbmZpZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldFdvcmxkID0gKHdvcmxkOiBXb3JsZCB8IHVuZGVmaW5lZCk6IHZvaWQgPT4ge1xuICBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdID0gd29ybGQ7XG4gIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdID0gd29ybGQ7XG4gIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdID0gdW5kZWZpbmVkO1xuICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG59O1xuXG4vLyBSZWdpc3RlciBnZXRXb3JsZCBvbiBnbG9iYWxUaGlzIHNvIGdldFdvcmxkTGF6eSBjYW4gY2FsbCBpdCBkaXJlY3RseSB3aGVuXG4vLyB3b3JsZC50cyBpcyBzdGF0aWNhbGx5IHByZXNlbnQgaW4gdGhlIGJ1bmRsZS5cbi8vXG4vLyBGb3Igc2VydmVyIHJvdXRlcyB0aGF0IG9ubHkgY29uc3VtZSBgc3RhcnRgIChvciBhbm90aGVyIGhlbHBlciB0aGF0IGdvZXNcbi8vIHRocm91Z2ggZ2V0V29ybGRMYXp5IHdpdGhvdXQgc3RhdGljYWxseSB1c2luZyBnZXRXb3JsZCksIHdlYnBhY2svdHVyYm9wYWNrXG4vLyB3b3VsZCBvdGhlcndpc2UgdHJlZS1zaGFrZSB3b3JsZC50cyBvdXQgb2YgdGhlIGJ1bmRsZSBlbnRpcmVseS4gVGhlXG4vLyBob3N0LW9ubHkgYC4vd29ybGQtaW5pdC50c2AgbW9kdWxlIGltcG9ydHMgd29ybGQudHMgZm9yIGl0cyBzaWRlIGVmZmVjdFxuLy8gYW5kIGlzIGl0c2VsZiBpbXBvcnRlZCBieSBgcGFja2FnZXMvd29ya2Zsb3cvc3JjL2FwaS50c2Agc28gdGhpc1xuLy8gcmVnaXN0cmF0aW9uIHJ1bnMgaW4gZXZlcnkgc2VydmVyIGJ1bmRsZSB0aGF0IHRvdWNoZXMgYHdvcmtmbG93L2FwaWAuXG4vL1xuLy8gU3RlcC9WTSBidW5kbGVzIG5ldmVyIHJlYWNoIHRoaXMgYnJhbmNoOiB0aGV5IGRvbid0IHN0YXRpY2FsbHkgaW1wb3J0XG4vLyB3b3JsZC50cywgYW5kIGB3b3JsZC1pbml0YCByZXNvbHZlcyB0byBhbiBlbXB0eSBzdHViIHZpYSB0aGUgYHdvcmtmbG93YFxuLy8gZXhwb3J0IGNvbmRpdGlvbi5cbmNvbnN0IEdldFdvcmxkRm5LZXkgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL2dldFdvcmxkRm4nKTtcbihnbG9iYWxUaGlzIGFzIHsgW0dldFdvcmxkRm5LZXldPzogKCkgPT4gUHJvbWlzZTxXb3JsZD4gfSlbR2V0V29ybGRGbktleV0gPz89XG4gIGdldFdvcmxkO1xuIl19
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ybGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVudGltZS93b3JsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekMsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiwwQkFBMEIsR0FDM0IsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsV0FBVyxJQUFJLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFdBQVcsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTlFLFNBQVMsaUJBQWlCO0lBQ3hCLHFFQUFxRTtJQUNyRSxxRUFBcUU7SUFDckUsc0VBQXNFO0lBQ3RFLG9EQUFvRDtJQUNwRCxJQUFJLENBQUM7UUFDSCxPQUFPLGFBQWE7UUFDbEIseUJBQXlCO1FBQ3pCLDJCQUEyQjtRQUMzQixhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FDcEQsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLGFBQWE7UUFDbEIseUJBQXlCO1FBQ3pCLDJCQUEyQjtRQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDaEIsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQ3hELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywrQkFBK0Is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WUFDN0QsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQzdDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbkUsa0NBQWtDLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBd0IsRUFBUSxFQUFFO0lBQ3pELGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDbEMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUM3QyxhQUFhLENBQUMsd0JBQXdCLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDdEQsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLHlFQUF5RTtBQUN6RSwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLDRDQUE0QztBQUM1QyxFQUFFO0FBQ0YsMkVBQTJFO0FBQzNFLDZFQUE2RTtBQUM3RSxzRUFBc0U7QUFDdEUsMEVBQTBFO0FBQzFFLG1FQUFtRTtBQUNuRSx3RUFBd0U7QUFDeEUsRUFBRTtBQUNGLHdFQUF3RTtBQUN4RSwwRUFBMEU7QUFDMUUsb0JBQW9CO0FBQ3BCLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUMvRCxVQUF5RCxDQUFDLGFBQWEsQ0FBQztJQUN2RSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZXF1aXJlIH0gZnJvbSAnbm9kZTptb2R1bGUnO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gJ25vZGU6dXJsJztcbmltcG9ydCB7XG4gIGlzVmVyY2VsV29ybGRUYXJnZXQsXG4gIHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkLFxufSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBXb3JsZCB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBjcmVhdGVXb3JsZCBhcyBjcmVhdGVMb2NhbFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLWxvY2FsJztcbmltcG9ydCB7IGNyZWF0ZVdvcmxkIGFzIGNyZWF0ZVZlcmNlbFdvcmxkIH0gZnJvbSAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCc7XG5pbXBvcnQgeyBhc3NlcnRXb3JsZFN1cHBvcnRzUnVudGltZVByb3RvY29sIH0gZnJvbSAnLi93b3JsZC1jb21wYXRpYmlsaXR5LmpzJztcblxuZnVuY3Rpb24gZ2V0UnVudGltZVJlcXVpcmUoKSB7XG4gIC8vIFJlc29sdmUgZnJvbSB0aGUgYXBwIHJvb3QgKHByb2Nlc3MuY3dkKCkpIHNvIGN1c3RvbSB3b3JsZCBwYWNrYWdlc1xuICAvLyBsaWtlIEB3b3JrZmxvdy93b3JsZC1wb3N0Z3JlcyBjYW4gYmUgZm91bmQgZXZlbiB0aG91Z2ggdGhleSdyZSBub3RcbiAgLy8gZGVwZW5kZW5jaWVzIG9mIEB3b3JrZmxvdy9jb3JlLiBVc2luZyBpbXBvcnQubWV0YS51cmwgd291bGQgcmVzb2x2ZVxuICAvLyBmcm9tIGNvcmUncyBsb2NhdGlvbiwgbWlzc2luZyBhcHAtbGV2ZWwgcGFja2FnZXMuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGNyZWF0ZVJlcXVpcmUoXG4gICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHBhdGhUb0ZpbGVVUkwocHJvY2Vzcy5jd2QoKSArICcvcGFja2FnZS5qc29uJykuaHJlZlxuICAgICk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBjcmVhdGVSZXF1aXJlKFxuICAgICAgLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgLyogdHVyYm9wYWNrSWdub3JlOiB0cnVlICovXG4gICAgICBpbXBvcnQubWV0YS51cmxcbiAgICApO1xuICB9XG59XG5cbmNvbnN0IFdvcmxkQ2FjaGUgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL2NhY2hlJyk7XG5jb25zdCBTdHViYmVkV29ybGRDYWNoZSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy93b3JsZC8vc3R1YmJlZENhY2hlJyk7XG5jb25zdCBXb3JsZENhY2hlUHJvbWlzZSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy93b3JsZC8vY2FjaGVQcm9taXNlJyk7XG5jb25zdCBTdHViYmVkV29ybGRDYWNoZVByb21pc2UgPSBTeW1ib2wuZm9yKFxuICAnQHdvcmtmbG93L3dvcmxkLy9zdHViYmVkQ2FjaGVQcm9taXNlJ1xuKTtcblxuY29uc3QgZ2xvYmFsU3ltYm9sczogdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gIFtXb3JsZENhY2hlXT86IFdvcmxkO1xuICBbU3R1YmJlZFdvcmxkQ2FjaGVdPzogV29ybGQ7XG4gIFtXb3JsZENhY2hlUHJvbWlzZV0/OiBQcm9taXNlPFdvcmxkPjtcbiAgW1N0dWJiZWRXb3JsZENhY2hlUHJvbWlzZV0/OiBQcm9taXNlPFdvcmxkPjtcbn0gPSBnbG9iYWxUaGlzO1xuXG5leHBvcnQgdHlwZSBXb3JsZEZhY3RvcnlNb2R1bGUgPSB7XG4gIGNyZWF0ZVdvcmxkPzogKCkgPT4gV29ybGQgfCBQcm9taXNlPFdvcmxkPjtcbiAgZGVmYXVsdD86ICgoKSA9PiBXb3JsZCB8IFByb21pc2U8V29ybGQ+KSB8IFdvcmxkO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBXb3JsZCBpbnN0YW5jZSBmcm9tIGEgd29ybGQgZmFjdG9yeSBtb2R1bGUuIFNoYXJlZCBieVxuICogYGNyZWF0ZVdvcmxkKClgIChmb3IgdGhlIHdvcmxkIHBhY2thZ2UgbmFtZWQgYnkgV09SS0ZMT1dfVEFSR0VUX1dPUkxEKSBhbmRcbiAqIHRvb2xpbmcgdGhhdCBsb2FkcyBhIHdvcmxkIG1vZHVsZSBkeW5hbWljYWxseSAoZS5nLiB0aGUgTml0cm8gZGV2XG4gKiBoYW5kbGVyIGFuZCBgQHdvcmtmbG93L3dvcmxkLXRlc3RpbmdgKS4gV29ybGQgcGFja2FnZXMgc2hvdWxkIGV4cG9ydFxuICogYGNyZWF0ZVdvcmxkKClgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ybGRGcm9tTW9kdWxlKFxuICBtb2Q6IFdvcmxkRmFjdG9yeU1vZHVsZVxuKTogV29ybGQgfCBQcm9taXNlPFdvcmxkPiB7XG4gIGlmICh0eXBlb2YgbW9kLmNyZWF0ZVdvcmxkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1vZC5jcmVhdGVXb3JsZCgpO1xuICB9XG4gIGlmICh0eXBlb2YgbW9kLmRlZmF1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gbW9kLmRlZmF1bHQoKTtcbiAgfVxuICBpZiAobW9kLmRlZmF1bHQgJiYgdHlwZW9mIG1vZC5kZWZhdWx0ID09PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBtb2QuZGVmYXVsdCBhcyBXb3JsZDtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnSW52YWxpZCB0YXJnZXQgd29ybGQgbW9kdWxlOiBtdXN0IGV4cG9ydCBjcmVhdGVXb3JsZCgpLCBhIGRlZmF1bHQgZmFjdG9yeSwgb3IgYSBkZWZhdWx0IFdvcmxkIGluc3RhbmNlLidcbiAgKTtcbn1cblxuLy8gRHluYW1pYyBpbXBvcnQgZm9yIGN1c3RvbSB3b3JsZCBtb2R1bGVzLiBVc2VzIGEgc3RhbmRhcmQgaW1wb3J0KClcbi8vIHdyYXBwZWQgaW4gYSB0cnkvY2F0Y2ggd2l0aCByZXF1aXJlKCkgZmFsbGJhY2sgZm9yIENKUyB0ZXN0IHJ1bm5lcnMuXG4vLyBOb3RlOiB0aGUgcHJldmlvdXMgYG5ldyBGdW5jdGlvbignc3BlY2lmaWVyJywgJ3JldHVybiBpbXBvcnQoc3BlY2lmaWVyKScpYFxuLy8gcGF0dGVybiB3YXMgcmVwbGFjZWQgYmVjYXVzZSBUdXJib3BhY2sgKE5leHQuanMpIHRyZWF0cyB1bnJlc29sdmFibGVcbi8vIGR5bmFtaWMgaW1wb3J0cyBmcm9tIGBuZXcgRnVuY3Rpb25gIGFzIGZhdGFsIGJ1aWxkIGVycm9ycyBpbiB0aGUgVjJcbi8vIGNvbWJpbmVkIGZsb3cgcm91dGUgY29udGV4dC5cblxuZnVuY3Rpb24gcmVzb2x2ZU1vZHVsZVBhdGgoc3BlY2lmaWVyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBBbHJlYWR5IGEgZmlsZTovLyBVUkxcbiAgaWYgKHNwZWNpZmllci5zdGFydHNXaXRoKCdmaWxlOi8vJykpIHtcbiAgICByZXR1cm4gc3BlY2lmaWVyO1xuICB9XG4gIC8vIEFic29sdXRlIHBhdGggLSBjb252ZXJ0IHRvIGZpbGU6Ly8gVVJMXG4gIGlmIChzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgcmV0dXJuIHBhdGhUb0ZpbGVVUkwoXG4gICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHNwZWNpZmllclxuICAgICkuaHJlZjtcbiAgfVxuICAvLyBSZWxhdGl2ZSBwYXRoIC0gcmVzb2x2ZSByZWxhdGl2ZSB0byBjd2QgYW5kIGNvbnZlcnQgdG8gZmlsZTovLyBVUkxcbiAgaWYgKHNwZWNpZmllci5zdGFydHNXaXRoKCcuLycpIHx8IHNwZWNpZmllci5zdGFydHNXaXRoKCcuLi8nKSkge1xuICAgIHJldHVybiBwYXRoVG9GaWxlVVJMKFxuICAgICAgLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgLyogdHVyYm9wYWNrSWdub3JlOiB0cnVlICovXG4gICAgICBwcm9jZXNzLmN3ZCgpICsgJy8nICsgc3BlY2lmaWVyXG4gICAgKS5ocmVmO1xuICB9XG4gIC8vIFBhY2thZ2Ugc3BlY2lmaWVyIC0gdXNlIHJlcXVpcmUucmVzb2x2ZSB0byBmaW5kIHRoZSBwYWNrYWdlXG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhdGhUb0ZpbGVVUkwoXG4gICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIGdldFJ1bnRpbWVSZXF1aXJlKCkucmVzb2x2ZShcbiAgICAgICAgLyogd2VicGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgICAgc3BlY2lmaWVyXG4gICAgICApXG4gICAgKS5ocmVmO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gc3BlY2lmaWVyO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHdvcmxkIGluc3RhbmNlIGJhc2VkIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAqIFdPUktGTE9XX1RBUkdFVF9XT1JMRCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgdGFyZ2V0IHdvcmxkLlxuICpcbiAqIE5vdGU6IFdPUktGTE9XX1ZFUkNFTF8qIGVudiB2YXJzIChQUk9KRUNULCBURUFNLCBBVVRIX1RPS0VOLCBldGMuKSBhcmVcbiAqIGludGVudGlvbmFsbHkgTk9UIHJlYWQgaGVyZS4gVGhvc2UgYXJlIGZvciBDTEkvb2JzZXJ2YWJpbGl0eSB0b29saW5nIG9ubHlcbiAqIGFuZCBzaG91bGQgbm90IGFmZmVjdCBydW50aW1lIGJlaGF2aW9yLiBUaGUgVmVyY2VsIHJ1bnRpbWUgcHJvdmlkZXNcbiAqIGF1dGhlbnRpY2F0aW9uIHZpYSBPSURDIHRva2VucyBhbmQgcHJvamVjdCBjb250ZXh0IHZpYSBzeXN0ZW0gZW52IHZhcnNcbiAqIChWRVJDRUxfREVQTE9ZTUVOVF9JRCwgVkVSQ0VMX1BST0pFQ1RfSUQpLiBUb29saW5nIHRoYXQgbmVlZHMgdGhlc2UgZW52XG4gKiB2YXJzIHNob3VsZCBjYWxsIHRoZSBWZXJjZWwgd29ybGQncyBjcmVhdGVXb3JsZCgpIGRpcmVjdGx5IHdpdGggYW4gZXhwbGljaXRcbiAqIGNvbmZpZyBhbmQgdXNlIHNldFdvcmxkKCkgdG8gaW5qZWN0IHRoZSBpbnN0YW5jZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVdvcmxkID0gYXN5bmMgKCk6IFByb21pc2U8V29ybGQ+ID0+IHtcbiAgY29uc3QgdGFyZ2V0V29ybGQgPSByZXNvbHZlV29ya2Zsb3dUYXJnZXRXb3JsZCgpO1xuXG4gIGlmIChpc1ZlcmNlbFdvcmxkVGFyZ2V0KHRhcmdldFdvcmxkKSkge1xuICAgIC8vIFdhcm4gaWYgV09SS0ZMT1dfVkVSQ0VMXyogZW52IHZhcnMgYXJlIHNldCBpbnNpZGUgYSBWZXJjZWwgc2VydmVybGVzc1xuICAgIC8vIGZ1bmN0aW9uIChWRVJDRUw9MSkg4oCUIHRoZXkgaGF2ZSBubyBlZmZlY3QgYXQgcnVudGltZSBhbmQgbGlrZWx5IGluZGljYXRlXG4gICAgLy8gYSBtaXNjb25maWd1cmF0aW9uICh1c2VyIG1hbnVhbGx5IGFkZGVkIHRoZW0gYXMgVmVyY2VsIHByb2plY3QgZW52IHZhcnMsXG4gICAgLy8gd2hpY2ggaXMgbm90IG5lZWRlZCkuIFdlIGdhdGUgb24gVkVSQ0VMPTEgc28gdGhlIHdhcm5pbmcgZG9lcyBub3QgZmlyZVxuICAgIC8vIHdoZW4gdGhlIENMSSBvciB3ZWIgb2JzZXJ2YWJpbGl0eSBhcHAgc2V0cyB0aGVzZSBlbnYgdmFycyBpbnRlbnRpb25hbGx5LlxuICAgIGNvbnN0IHN0YWxlRW52VmFycyA9IFtcbiAgICAgICdXT1JLRkxPV19WRVJDRUxfUFJPSkVDVCcsXG4gICAgICAnV09SS0ZMT1dfVkVSQ0VMX1RFQU0nLFxuICAgICAgJ1dPUktGTE9XX1ZFUkNFTF9BVVRIX1RPS0VOJyxcbiAgICAgICdXT1JLRkxPV19WRVJDRUxfRU5WJyxcbiAgICBdLmZpbHRlcigoa2V5KSA9PiBwcm9jZXNzLmVudltrZXldKTtcbiAgICBpZiAoc3RhbGVFbnZWYXJzLmxlbmd0aCA+IDAgJiYgcHJvY2Vzcy5lbnYuVkVSQ0VMID09PSAnMScpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFt3b3JrZmxvd10gV2FybmluZzogJHtzdGFsZUVudlZhcnMuam9pbignLCAnKX0gZW52IHZhcihzKSBgICtcbiAgICAgICAgICAnYXJlIHNldCBidXQgaGF2ZSBubyBlZmZlY3QgYXQgcnVudGltZS4gVGhlc2UgYXJlIG9ubHkgdXNlZCBieSB0aGUgV29ya2Zsb3cgQ0xJLiAnICtcbiAgICAgICAgICAnUmVtb3ZlIHRoZW0gZnJvbSB5b3VyIFZlcmNlbCBwcm9qZWN0IGVudmlyb25tZW50IHZhcmlhYmxlcy4nXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBjcmVhdGVWZXJjZWxXb3JsZCgpO1xuICB9XG5cbiAgaWYgKHRhcmdldFdvcmxkID09PSAnbG9jYWwnKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUxvY2FsV29ybGQoe1xuICAgICAgZGF0YURpcjogcHJvY2Vzcy5lbnYuV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIsXG4gICAgfSk7XG4gIH1cblxuICAvLyBUcnkgcmVxdWlyZSgpIGZpcnN0IGZvciBjdXN0b20gd29ybGRzIOKAlCB0aGlzIGF2b2lkcyBUdXJib3BhY2sgdHJhY2luZ1xuICAvLyBhIGR5bmFtaWMgaW1wb3J0KCkgdGhhdCBpdCBjYW4ndCBzdGF0aWNhbGx5IHJlc29sdmUuIEZhbGwgYmFjayB0b1xuICAvLyBkeW5hbWljIGltcG9ydCgpIGZvciBFU00tb25seSBwYWNrYWdlcy5cbiAgbGV0IG1vZDogYW55O1xuICB0cnkge1xuICAgIG1vZCA9IGdldFJ1bnRpbWVSZXF1aXJlKCkoXG4gICAgICAvKiB3ZWJwYWNrSWdub3JlOiB0cnVlICovXG4gICAgICAvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIHRhcmdldFdvcmxkXG4gICAgKTtcbiAgfSBjYXRjaCB7XG4gICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZU1vZHVsZVBhdGgodGFyZ2V0V29ybGQpO1xuICAgIG1vZCA9IGF3YWl0IGltcG9ydChcbiAgICAgIC8qIHdlYnBhY2tJZ25vcmU6IHRydWUgKi9cbiAgICAgIC8qIHR1cmJvcGFja0lnbm9yZTogdHJ1ZSAqL1xuICAgICAgcmVzb2x2ZWRQYXRoXG4gICAgKTtcbiAgfVxuICBpZiAodHlwZW9mIG1vZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBtb2QoKSBhcyBXb3JsZDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGNyZWF0ZVdvcmxkRnJvbU1vZHVsZShtb2QgYXMgV29ybGRGYWN0b3J5TW9kdWxlKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEludmFsaWQgdGFyZ2V0IHdvcmxkIG1vZHVsZTogJHt0YXJnZXRXb3JsZH0sIG11c3QgZXhwb3J0IGEgY3JlYXRlV29ybGQgZnVuY3Rpb24gb3IgYSBkZWZhdWx0IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFdvcmxkIGluc3RhbmNlLmBcbiAgICApO1xuICB9XG59O1xuXG5leHBvcnQgdHlwZSBXb3JsZEhhbmRsZXJzID0gUGljazxXb3JsZCwgJ2NyZWF0ZVF1ZXVlSGFuZGxlcicgfCAnc3BlY1ZlcnNpb24nPjtcblxuLyoqXG4gKiBTb21lIGZ1bmN0aW9ucyBmcm9tIHRoZSB3b3JsZCBhcmUgbmVlZGVkIGF0IGJ1aWxkIHRpbWUsIGJ1dCB3ZSBkbyBOT1Qgd2FudFxuICogdG8gY2FjaGUgdGhlIHdvcmxkIGluIHRob3NlIGluc3RhbmNlcyBmb3IgZ2VuZXJhbCB1c2UsIHNpbmNlIHdlIGRvbid0IGhhdmVcbiAqIHRoZSBjb3JyZWN0IGVudmlyb25tZW50IHZhcmlhYmxlcyBzZXQgeWV0LiBUaGlzIGlzIGEgc2FmZSBmdW5jdGlvbiB0b1xuICogY2FsbCBhdCBidWlsZCB0aW1lLCB0aGF0IG9ubHkgZ2l2ZXMgYWNjZXNzIHRvIG5vbi1lbnZpcm9ubWVudC1ib3VuZCB3b3JsZFxuICogZnVuY3Rpb25zLiBUaGUgb25seSBiaW5kaW5nIHZhbHVlIHNob3VsZCBiZSB0aGUgdGFyZ2V0IHdvcmxkLlxuICogT25jZSB3ZSBtaWdyYXRlIHRvIGEgZmlsZS1iYXNlZCBjb25maWd1cmF0aW9uICh3b3JrZmxvdy5jb25maWcudHMpLCB3ZSBzaG91bGRcbiAqIGJlIGFibGUgdG8gcmUtY29tYmluZSBnZXRXb3JsZCBhbmQgZ2V0V29ybGRIYW5kbGVycyBpbnRvIG9uZSBzaW5nbGV0b24uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRXb3JsZEhhbmRsZXJzID0gYXN5bmMgKCk6IFByb21pc2U8V29ybGRIYW5kbGVycz4gPT4ge1xuICBpZiAoZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZV0pIHtcbiAgICBhc3NlcnRXb3JsZFN1cHBvcnRzUnVudGltZVByb3RvY29sKGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVdKTtcbiAgICByZXR1cm4gZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZV07XG4gIH1cbiAgLy8gU3RvcmUgdGhlIHByb21pc2UgaW1tZWRpYXRlbHkgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnMgd2l0aCBjb25jdXJyZW50IGNhbGxzLlxuICAvLyBDbGVhciBvbiByZWplY3Rpb24gc28gc3Vic2VxdWVudCBjYWxscyBjYW4gcmV0cnkgaW5zdGVhZCBvZiBjYWNoaW5nIHRoZSBmYWlsdXJlLlxuICBpZiAoIWdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXSkge1xuICAgIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXSA9IGNyZWF0ZVdvcmxkKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZVByb21pc2VdID0gdW5kZWZpbmVkO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuICB9XG4gIGNvbnN0IF93b3JsZCA9IGF3YWl0IGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXTtcbiAgYXNzZXJ0V29ybGRTdXBwb3J0c1J1bnRpbWVQcm90b2NvbChfd29ybGQpO1xuICBnbG9iYWxTeW1ib2xzW1N0dWJiZWRXb3JsZENhY2hlXSA9IF93b3JsZDtcbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVRdWV1ZUhhbmRsZXI6IF93b3JsZC5jcmVhdGVRdWV1ZUhhbmRsZXIsXG4gICAgc3BlY1ZlcnNpb246IF93b3JsZC5zcGVjVmVyc2lvbixcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRXb3JsZCA9IGFzeW5jICgpOiBQcm9taXNlPFdvcmxkPiA9PiB7XG4gIGlmIChnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdKSB7XG4gICAgYXNzZXJ0V29ybGRTdXBwb3J0c1J1bnRpbWVQcm90b2NvbChnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVdKTtcbiAgICByZXR1cm4gZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXTtcbiAgfVxuICAvLyBTdG9yZSB0aGUgcHJvbWlzZSBpbW1lZGlhdGVseSB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucyB3aXRoIGNvbmN1cnJlbnQgY2FsbHMuXG4gIC8vIENsZWFyIG9uIHJlamVjdGlvbiBzbyBzdWJzZXF1ZW50IGNhbGxzIGNhbiByZXRyeSBpbnN0ZWFkIG9mIGNhY2hpbmcgdGhlIGZhaWx1cmUuXG4gIGlmICghZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0pIHtcbiAgICBnbG9iYWxTeW1ib2xzW1dvcmxkQ2FjaGVQcm9taXNlXSA9IGNyZWF0ZVdvcmxkKCkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSk7XG4gIH1cbiAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXSA9IGF3YWl0IGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZVByb21pc2VdO1xuICBhc3NlcnRXb3JsZFN1cHBvcnRzUnVudGltZVByb3RvY29sKGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0pO1xuICByZXR1cm4gZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlXTtcbn07XG5cbi8qKlxuICogUmVzZXQgdGhlIGNhY2hlZCB3b3JsZCBpbnN0YW5jZS4gVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gZW52aXJvbm1lbnRcbiAqIHZhcmlhYmxlcyBjaGFuZ2UgYW5kIHlvdSBuZWVkIHRvIHJlaW5pdGlhbGl6ZSB0aGUgd29ybGQgd2l0aCBuZXcgY29uZmlnLlxuICovXG5leHBvcnQgY29uc3Qgc2V0V29ybGQgPSAod29ybGQ6IFdvcmxkIHwgdW5kZWZpbmVkKTogdm9pZCA9PiB7XG4gIGdsb2JhbFN5bWJvbHNbV29ybGRDYWNoZV0gPSB3b3JsZDtcbiAgZ2xvYmFsU3ltYm9sc1tTdHViYmVkV29ybGRDYWNoZV0gPSB3b3JsZDtcbiAgZ2xvYmFsU3ltYm9sc1tXb3JsZENhY2hlUHJvbWlzZV0gPSB1bmRlZmluZWQ7XG4gIGdsb2JhbFN5bWJvbHNbU3R1YmJlZFdvcmxkQ2FjaGVQcm9taXNlXSA9IHVuZGVmaW5lZDtcbn07XG5cbi8vIFJlZ2lzdGVyIGdldFdvcmxkIG9uIGdsb2JhbFRoaXMgc28gZ2V0V29ybGRMYXp5IGNhbiBjYWxsIGl0IGRpcmVjdGx5IHdoZW5cbi8vIHdvcmxkLnRzIGlzIHN0YXRpY2FsbHkgcHJlc2VudCBpbiB0aGUgYnVuZGxlLiBUaGlzIGF2b2lkcyB0aGUgcmVsYXRpdmVcbi8vIGR5bmFtaWMgaW1wb3J0KCcuL3dvcmxkLmpzJykgZmFsbGJhY2sgaW4gZ2V0LXdvcmxkLWxhenkudHMsIHdoaWNoIGZhaWxzXG4vLyBhZnRlciBOZXh0LmpzIGlubGluZXMgZ2V0LXdvcmxkLWxhenkuanMgaW50byBhIHJvdXRlIGJ1bmRsZSAobm8gc2libGluZ1xuLy8gd29ybGQuanMgZXhpc3RzIGF0IHRoZSBidW5kbGVkIGxvY2F0aW9uKS5cbi8vXG4vLyBGb3Igc2VydmVyIHJvdXRlcyB0aGF0IG9ubHkgY29uc3VtZSBgc3RhcnRgIChvciBhbm90aGVyIGhlbHBlciB0aGF0IGdvZXNcbi8vIHRocm91Z2ggZ2V0V29ybGRMYXp5IHdpdGhvdXQgc3RhdGljYWxseSB1c2luZyBnZXRXb3JsZCksIHdlYnBhY2svdHVyYm9wYWNrXG4vLyB3b3VsZCBvdGhlcndpc2UgdHJlZS1zaGFrZSB3b3JsZC50cyBvdXQgb2YgdGhlIGJ1bmRsZSBlbnRpcmVseS4gVGhlXG4vLyBob3N0LW9ubHkgYC4vd29ybGQtaW5pdC50c2AgbW9kdWxlIGltcG9ydHMgd29ybGQudHMgZm9yIGl0cyBzaWRlIGVmZmVjdFxuLy8gYW5kIGlzIGl0c2VsZiBpbXBvcnRlZCBieSBgcGFja2FnZXMvd29ya2Zsb3cvc3JjL2FwaS50c2Agc28gdGhpc1xuLy8gcmVnaXN0cmF0aW9uIHJ1bnMgaW4gZXZlcnkgc2VydmVyIGJ1bmRsZSB0aGF0IHRvdWNoZXMgYHdvcmtmbG93L2FwaWAuXG4vL1xuLy8gU3RlcC9WTSBidW5kbGVzIG5ldmVyIHJlYWNoIHRoaXMgYnJhbmNoOiB0aGV5IGRvbid0IHN0YXRpY2FsbHkgaW1wb3J0XG4vLyB3b3JsZC50cywgYW5kIGB3b3JsZC1pbml0YCByZXNvbHZlcyB0byBhbiBlbXB0eSBzdHViIHZpYSB0aGUgYHdvcmtmbG93YFxuLy8gZXhwb3J0IGNvbmRpdGlvbi5cbmNvbnN0IEdldFdvcmxkRm5LZXkgPSBTeW1ib2wuZm9yKCdAd29ya2Zsb3cvd29ybGQvL2dldFdvcmxkRm4nKTtcbihnbG9iYWxUaGlzIGFzIHsgW0dldFdvcmxkRm5LZXldPzogKCkgPT4gUHJvbWlzZTxXb3JsZD4gfSlbR2V0V29ybGRGbktleV0gPz89XG4gIGdldFdvcmxkO1xuIl19
package/dist/runtime.d.ts CHANGED
@@ -2,7 +2,7 @@ import { type Event, type WorkflowRun } from '@workflow/world';
2
2
  export type { Event, WorkflowRun };
3
3
  export { WorkflowSuspension } from './global.js';
4
4
  export { type HealthCheckOptions, type HealthCheckResult, healthCheck, } from './runtime/helpers.js';
5
- export { getHookByToken, resumeHook, resumeWebhook, } from './runtime/resume-hook.js';
5
+ export { getHookByToken, type ResumedHook, resumeHook, resumeWebhook, } from './runtime/resume-hook.js';
6
6
  export { getRun, Run, type WorkflowReadableStream, type WorkflowReadableStreamOptions, } from './runtime/run.js';
7
7
  export { type CancelRunOptions, cancelRun, listStreams, type ReadStreamOptions, type RecreateRunOptions, type ReenqueueRunOptions, readStream, recreateRunFromExisting, reenqueueRun, type StopSleepOptions, type StopSleepResult, wakeUpRun, } from './runtime/runs.js';
8
8
  export { type StartOptions, type StartOptionsBase, type StartOptionsWithDeploymentId, type StartOptionsWithoutDeploymentId, start, } from './runtime/start.js';
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,KAAK,KAAK,EAQV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AA2EzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,GAAG,EACH,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,UAAU,EACV,uBAAuB,EACvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,GACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AA+K5B;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAy9ErC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,KAAK,KAAK,EAUV,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAmFzB,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,UAAU,EACV,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,MAAM,EACN,GAAG,EACH,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,gBAAgB,EACrB,SAAS,EACT,WAAW,EACX,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,UAAU,EACV,uBAAuB,EACvB,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,SAAS,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,GACN,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC;AA4T5B;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAg9FrC"}