@workflow/sveltekit 4.0.9 → 4.0.11

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.
package/dist/builder.d.ts CHANGED
@@ -1,10 +1,14 @@
1
1
  import { BaseBuilder, type SvelteKitConfig } from '@workflow/builders';
2
2
  export declare class SvelteKitBuilder extends BaseBuilder {
3
- constructor(config?: Partial<SvelteKitConfig>);
3
+ #private;
4
+ constructor(config?: Partial<SvelteKitConfig> & {
5
+ routesDir?: string;
6
+ });
4
7
  build(): Promise<void>;
5
8
  private buildStepsRoute;
6
9
  private buildWorkflowsRoute;
7
10
  private buildWebhookRoute;
8
- private findRoutesDirectory;
11
+ private loadRoutesDirectory;
9
12
  }
13
+ export declare function loadSvelteKitRoutesDir(workingDir: string): Promise<string>;
10
14
  //# sourceMappingURL=builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,WAAW,EAGX,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAS5B,qBAAa,gBAAiB,SAAQ,WAAW;gBACnC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAe9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA6DvB,eAAe;YA4Cf,mBAAmB;YA4CnB,iBAAiB;YAqDjB,mBAAmB;CA8BlC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,WAAW,EAKX,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAS5B,qBAAa,gBAAiB,SAAQ,WAAW;;gBAGnC,MAAM,GAAE,OAAO,CAAC,eAAe,CAAC,GAAG;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IA+B3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA4DvB,eAAe;YA4Cf,mBAAmB;YA4CnB,iBAAiB;YAqDjB,mBAAmB;CAMlC;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAejB"}
package/dist/builder.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { constants } from 'node:fs';
2
2
  import { access, copyFile, mkdir, readFile, stat, writeFile, } from 'node:fs/promises';
3
- import { join, resolve } from 'node:path';
4
- import { BaseBuilder, NORMALIZE_REQUEST_CODE, replaceGeneratedRouteExport, } from '@workflow/builders';
3
+ import { createRequire } from 'node:module';
4
+ import { dirname, join, resolve } from 'node:path';
5
+ import { pathToFileURL } from 'node:url';
6
+ import { BaseBuilder, createBaseBuilderConfig, NORMALIZE_REQUEST_CODE, replaceGeneratedRouteExport, resolveProjectRoot, } from '@workflow/builders';
5
7
  const SVELTEKIT_VIRTUAL_MODULES = [
6
8
  '$env/*', // All $env subpaths
7
9
  '$lib', // Exact $lib import
@@ -9,22 +11,39 @@ const SVELTEKIT_VIRTUAL_MODULES = [
9
11
  '$app/*', // All $app subpaths
10
12
  ];
11
13
  export class SvelteKitBuilder extends BaseBuilder {
12
- constructor(config) {
13
- const workingDir = config?.workingDir || process.cwd();
14
+ #routesDir;
15
+ constructor(config = {}) {
16
+ const workingDir = resolve(config.workingDir || process.cwd());
17
+ const dirs = config.dirs ?? [
18
+ 'workflows',
19
+ 'src/workflows',
20
+ 'routes',
21
+ 'src/routes',
22
+ ];
23
+ const projectRoot = config.projectRoot ?? resolveProjectRoot(workingDir);
24
+ const routesDir = config.routesDir
25
+ ? resolve(workingDir, config.routesDir)
26
+ : undefined;
14
27
  super({
28
+ ...createBaseBuilderConfig({
29
+ workingDir,
30
+ projectRoot,
31
+ dirs,
32
+ watch: config.watch,
33
+ externalPackages: [...SVELTEKIT_VIRTUAL_MODULES],
34
+ }),
15
35
  ...config,
16
- dirs: ['workflows', 'src/workflows', 'routes', 'src/routes'],
36
+ dirs,
17
37
  buildTarget: 'sveltekit',
18
- stepsBundlePath: '', // unused in base
19
- workflowsBundlePath: '', // unused in base
20
- webhookBundlePath: '', // unused in base
21
38
  workingDir,
39
+ projectRoot,
40
+ moduleSpecifierRoot: config.moduleSpecifierRoot ?? workingDir,
22
41
  externalPackages: [...SVELTEKIT_VIRTUAL_MODULES],
23
42
  });
43
+ this.#routesDir = routesDir;
24
44
  }
25
45
  async build() {
26
- // Find SvelteKit routes directory (src/routes or routes)
27
- const routesDir = await this.findRoutesDirectory();
46
+ const routesDir = await this.loadRoutesDirectory();
28
47
  const workflowGeneratedDir = join(routesDir, '.well-known/workflow/v1');
29
48
  // Ensure output directories exist
30
49
  await mkdir(workflowGeneratedDir, { recursive: true });
@@ -109,10 +128,10 @@ export const POST = handleStepRequest;`, 'Failed to wrap generated SvelteKit ste
109
128
  const workflowsRouteFile = join(workflowsRouteDir, '+server.js');
110
129
  let workflowsRouteContent = await readFile(workflowsRouteFile, 'utf-8');
111
130
  // Replace the default export with SvelteKit-compatible handler
112
- workflowsRouteContent = replaceGeneratedRouteExport(workflowsRouteContent, /const handler = workflowEntrypoint\(workflowCode\);\s*export const HEAD = handler;\s*export const POST = handler;?\s*$/m, `${NORMALIZE_REQUEST_CODE}
131
+ workflowsRouteContent = replaceGeneratedRouteExport(workflowsRouteContent, /const handler = workflowEntrypoint\(workflowCode(?<options>[^)]*)\);\s*export const HEAD = handler;\s*export const POST = handler;?\s*$/m, (_match, options = '') => `${NORMALIZE_REQUEST_CODE}
113
132
  const handleWorkflowRequest = async ({request}) => {
114
133
  const normalRequest = await normalizeRequest(request);
115
- return workflowEntrypoint(workflowCode)(normalRequest);
134
+ return workflowEntrypoint(workflowCode${options})(normalRequest);
116
135
  };
117
136
 
118
137
  export const HEAD = handleWorkflowRequest;
@@ -150,32 +169,30 @@ export const HEAD = createSvelteKitHandler('HEAD');
150
169
  export const OPTIONS = createSvelteKitHandler('OPTIONS');`);
151
170
  await writeFile(webhookRouteFile, webhookRouteContent);
152
171
  }
153
- async findRoutesDirectory() {
154
- const routesDir = resolve(this.config.workingDir, 'src/routes');
155
- const rootRoutesDir = resolve(this.config.workingDir, 'routes');
156
- // Try src/routes first (standard SvelteKit convention)
157
- try {
158
- await access(routesDir, constants.F_OK);
159
- const routesStats = await stat(routesDir);
160
- if (!routesStats.isDirectory()) {
161
- throw new Error(`Path exists but is not a directory: ${routesDir}`);
162
- }
163
- return routesDir;
164
- }
165
- catch {
166
- // Try routes as fallback
167
- try {
168
- await access(rootRoutesDir, constants.F_OK);
169
- const rootRoutesStats = await stat(rootRoutesDir);
170
- if (!rootRoutesStats.isDirectory()) {
171
- throw new Error(`Path exists but is not a directory: ${rootRoutesDir}`);
172
- }
173
- return rootRoutesDir;
174
- }
175
- catch {
176
- throw new Error('Could not find SvelteKit routes directory. Expected either "src/routes" or "routes" to exist.');
177
- }
178
- }
172
+ async loadRoutesDirectory() {
173
+ const routesDir = this.#routesDir ?? (await loadSvelteKitRoutesDir(this.config.workingDir));
174
+ await assertDirectory(routesDir);
175
+ return routesDir;
176
+ }
177
+ }
178
+ export async function loadSvelteKitRoutesDir(workingDir) {
179
+ const require = createRequire(join(workingDir, 'package.json'));
180
+ const packageJsonPath = require.resolve('@sveltejs/kit/package.json');
181
+ const loaderPath = join(dirname(packageJsonPath), 'src/core/config/index.js');
182
+ // SvelteKit's internal config loader
183
+ const { load_config } = await import(pathToFileURL(loaderPath).href);
184
+ const config = await load_config({ cwd: workingDir });
185
+ const routesDir = config.kit?.files?.routes;
186
+ if (routesDir == null || typeof routesDir !== 'string') {
187
+ throw new Error('Expected SvelteKit config loader to return kit.files.routes as a string.');
188
+ }
189
+ return routesDir;
190
+ }
191
+ async function assertDirectory(path) {
192
+ await access(path, constants.F_OK);
193
+ const stats = await stat(path);
194
+ if (!stats.isDirectory()) {
195
+ throw new Error(`Path exists but is not a directory: ${path}`);
179
196
  }
180
197
  }
181
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUNMLFdBQVcsRUFDWCxzQkFBc0IsRUFDdEIsMkJBQTJCLEdBRTVCLE1BQU0sb0JBQW9CLENBQUM7QUFFNUIsTUFBTSx5QkFBeUIsR0FBRztJQUNoQyxRQUFRLEVBQUUsb0JBQW9CO0lBQzlCLE1BQU0sRUFBRSxvQkFBb0I7SUFDNUIsUUFBUSxFQUFFLG9CQUFvQjtJQUM5QixRQUFRLEVBQUUsb0JBQW9CO0NBQy9CLENBQUM7QUFFRixNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsV0FBVztJQUMvQyxZQUFZLE1BQWlDO1FBQzNDLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXZELEtBQUssQ0FBQztZQUNKLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQztZQUM1RCxXQUFXLEVBQUUsV0FBb0I7WUFDakMsZUFBZSxFQUFFLEVBQUUsRUFBRSxpQkFBaUI7WUFDdEMsbUJBQW1CLEVBQUUsRUFBRSxFQUFFLGlCQUFpQjtZQUMxQyxpQkFBaUIsRUFBRSxFQUFFLEVBQUUsaUJBQWlCO1lBQ3hDLFVBQVU7WUFDVixnQkFBZ0IsRUFBRSxDQUFDLEdBQUcseUJBQXlCLENBQUM7U0FDakQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVRLEtBQUss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Q0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxNQUFNLElBQUksS0FBSyxDQUNiLCtGQUErRixDQUNoRyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7XG4gIGFjY2VzcyxcbiAgY29weUZpbGUsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgc3RhdCxcbiAgd3JpdGVGaWxlLFxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHtcbiAgQmFzZUJ1aWxkZXIsXG4gIE5PUk1BTElaRV9SRVFVRVNUX0NPREUsXG4gIHJlcGxhY2VHZW5lcmF0ZWRSb3V0ZUV4cG9ydCxcbiAgdHlwZSBTdmVsdGVLaXRDb25maWcsXG59IGZyb20gJ0B3b3JrZmxvdy9idWlsZGVycyc7XG5cbmNvbnN0IFNWRUxURUtJVF9WSVJUVUFMX01PRFVMRVMgPSBbXG4gICckZW52LyonLCAvLyBBbGwgJGVudiBzdWJwYXRoc1xuICAnJGxpYicsIC8vIEV4YWN0ICRsaWIgaW1wb3J0XG4gICckbGliLyonLCAvLyBBbGwgJGxpYiBzdWJwYXRoc1xuICAnJGFwcC8qJywgLy8gQWxsICRhcHAgc3VicGF0aHNcbl07XG5cbmV4cG9ydCBjbGFzcyBTdmVsdGVLaXRCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBjb25zdHJ1Y3Rvcihjb25maWc/OiBQYXJ0aWFsPFN2ZWx0ZUtpdENvbmZpZz4pIHtcbiAgICBjb25zdCB3b3JraW5nRGlyID0gY29uZmlnPy53b3JraW5nRGlyIHx8IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBzdXBlcih7XG4gICAgICAuLi5jb25maWcsXG4gICAgICBkaXJzOiBbJ3dvcmtmbG93cycsICdzcmMvd29ya2Zsb3dzJywgJ3JvdXRlcycsICdzcmMvcm91dGVzJ10sXG4gICAgICBidWlsZFRhcmdldDogJ3N2ZWx0ZWtpdCcgYXMgY29uc3QsXG4gICAgICBzdGVwc0J1bmRsZVBhdGg6ICcnLCAvLyB1bnVzZWQgaW4gYmFzZVxuICAgICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogJycsIC8vIHVudXNlZCBpbiBiYXNlXG4gICAgICB3ZWJob29rQnVuZGxlUGF0aDogJycsIC8vIHVudXNlZCBpbiBiYXNlXG4gICAgICB3b3JraW5nRGlyLFxuICAgICAgZXh0ZXJuYWxQYWNrYWdlczogWy4uLlNWRUxURUtJVF9WSVJUVUFMX01PRFVMRVNdLFxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gRmluZCBTdmVsdGVLaXQgcm91dGVzIGRpcmVjdG9yeSAoc3JjL3JvdXRlcyBvciByb3V0ZXMpXG4gICAgY29uc3Qgcm91dGVzRGlyID0gYXdhaXQgdGhpcy5maW5kUm91dGVzRGlyZWN0b3J5KCk7XG4gICAgY29uc3Qgd29ya2Zsb3dHZW5lcmF0ZWREaXIgPSBqb2luKHJvdXRlc0RpciwgJy53ZWxsLWtub3duL3dvcmtmbG93L3YxJyk7XG5cbiAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yaWVzIGV4aXN0XG4gICAgYXdhaXQgbWtkaXIod29ya2Zsb3dHZW5lcmF0ZWREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgLy8gQWRkIC5naXRpZ25vcmUgdG8gZXhjbHVkZSBnZW5lcmF0ZWQgZmlsZXMgZnJvbSB2ZXJzaW9uIGNvbnRyb2xcbiAgICBpZiAocHJvY2Vzcy5lbnYuVkVSQ0VMX0RFUExPWU1FTlRfSUQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4od29ya2Zsb3dHZW5lcmF0ZWREaXIsICcuZ2l0aWdub3JlJyksICcqJyk7XG4gICAgfVxuXG4gICAgLy8gR2V0IHdvcmtmbG93IGFuZCBzdGVwIGZpbGVzIHRvIGJ1bmRsZVxuICAgIGNvbnN0IGlucHV0RmlsZXMgPSBhd2FpdCB0aGlzLmdldElucHV0RmlsZXMoKTtcbiAgICBjb25zdCB0c2NvbmZpZ1BhdGggPSBhd2FpdCB0aGlzLmZpbmRUc0NvbmZpZ1BhdGgoKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICBpbnB1dEZpbGVzLFxuICAgICAgd29ya2Zsb3dHZW5lcmF0ZWREaXIsXG4gICAgICB0c2NvbmZpZ1BhdGgsXG4gICAgfTtcblxuICAgIC8vIEdlbmVyYXRlIHRoZSB0aHJlZSBTdmVsdGVLaXQgcm91dGUgaGFuZGxlcnNcbiAgICBjb25zdCBzdGVwc01hbmlmZXN0ID0gYXdhaXQgdGhpcy5idWlsZFN0ZXBzUm91dGUob3B0aW9ucyk7XG4gICAgY29uc3Qgd29ya2Zsb3dzTWFuaWZlc3QgPSBhd2FpdCB0aGlzLmJ1aWxkV29ya2Zsb3dzUm91dGUob3B0aW9ucyk7XG4gICAgYXdhaXQgdGhpcy5idWlsZFdlYmhvb2tSb3V0ZSh7IHdvcmtmbG93R2VuZXJhdGVkRGlyIH0pO1xuXG4gICAgLy8gTWVyZ2UgbWFuaWZlc3RzIGZyb20gYm90aCBidW5kbGVzXG4gICAgY29uc3QgbWFuaWZlc3QgPSB7XG4gICAgICBzdGVwczogeyAuLi5zdGVwc01hbmlmZXN0LnN0ZXBzLCAuLi53b3JrZmxvd3NNYW5pZmVzdC5zdGVwcyB9LFxuICAgICAgd29ya2Zsb3dzOiB7IC4uLnN0ZXBzTWFuaWZlc3Qud29ya2Zsb3dzLCAuLi53b3JrZmxvd3NNYW5pZmVzdC53b3JrZmxvd3MgfSxcbiAgICAgIGNsYXNzZXM6IHsgLi4uc3RlcHNNYW5pZmVzdC5jbGFzc2VzLCAuLi53b3JrZmxvd3NNYW5pZmVzdC5jbGFzc2VzIH0sXG4gICAgfTtcblxuICAgIC8vIEdlbmVyYXRlIHVuaWZpZWQgbWFuaWZlc3RcbiAgICBjb25zdCB3b3JrZmxvd0J1bmRsZVBhdGggPSBqb2luKHdvcmtmbG93R2VuZXJhdGVkRGlyLCAnZmxvdy8rc2VydmVyLmpzJyk7XG4gICAgY29uc3QgbWFuaWZlc3RKc29uID0gYXdhaXQgdGhpcy5jcmVhdGVNYW5pZmVzdCh7XG4gICAgICB3b3JrZmxvd0J1bmRsZVBhdGgsXG4gICAgICBtYW5pZmVzdERpcjogd29ya2Zsb3dHZW5lcmF0ZWREaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIC8vIEV4cG9zZSBtYW5pZmVzdCBhcyBhIHN0YXRpYyBmaWxlIHdoZW4gV09SS0ZMT1dfUFVCTElDX01BTklGRVNUPTEuXG4gICAgLy8gU3ZlbHRlS2l0IHNlcnZlcyBmaWxlcyBmcm9tIHN0YXRpYy8gYXQgdGhlIHJvb3QgVVJMLlxuICAgIGlmICh0aGlzLnNob3VsZEV4cG9zZVB1YmxpY01hbmlmZXN0ICYmIG1hbmlmZXN0SnNvbikge1xuICAgICAgY29uc3Qgc3RhdGljTWFuaWZlc3REaXIgPSBqb2luKFxuICAgICAgICB0aGlzLmNvbmZpZy53b3JraW5nRGlyLFxuICAgICAgICAnc3RhdGljLy53ZWxsLWtub3duL3dvcmtmbG93L3YxJ1xuICAgICAgKTtcbiAgICAgIGF3YWl0IG1rZGlyKHN0YXRpY01hbmlmZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5WRVJDRUxfREVQTE9ZTUVOVF9JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKHN0YXRpY01hbmlmZXN0RGlyLCAnLmdpdGlnbm9yZScpLCAnKicpO1xuICAgICAgfVxuICAgICAgYXdhaXQgY29weUZpbGUoXG4gICAgICAgIGpvaW4od29ya2Zsb3dHZW5lcmF0ZWREaXIsICdtYW5pZmVzdC5qc29uJyksXG4gICAgICAgIGpvaW4oc3RhdGljTWFuaWZlc3REaXIsICdtYW5pZmVzdC5qc29uJylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZFN0ZXBzUm91dGUoe1xuICAgIGlucHV0RmlsZXMsXG4gICAgd29ya2Zsb3dHZW5lcmF0ZWREaXIsXG4gICAgdHNjb25maWdQYXRoLFxuICB9OiB7XG4gICAgaW5wdXRGaWxlczogc3RyaW5nW107XG4gICAgd29ya2Zsb3dHZW5lcmF0ZWREaXI6IHN0cmluZztcbiAgICB0c2NvbmZpZ1BhdGg/OiBzdHJpbmc7XG4gIH0pIHtcbiAgICAvLyBDcmVhdGUgc3RlcHMgcm91dGU6IC53ZWxsLWtub3duL3dvcmtmbG93L3YxL3N0ZXAvK3NlcnZlci5qc1xuICAgIGNvbnN0IHN0ZXBzUm91dGVEaXIgPSBqb2luKHdvcmtmbG93R2VuZXJhdGVkRGlyLCAnc3RlcCcpO1xuICAgIGF3YWl0IG1rZGlyKHN0ZXBzUm91dGVEaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgY29uc3QgeyBtYW5pZmVzdCB9ID0gYXdhaXQgdGhpcy5jcmVhdGVTdGVwc0J1bmRsZSh7XG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgaW5wdXRGaWxlcyxcbiAgICAgIG91dGZpbGU6IGpvaW4oc3RlcHNSb3V0ZURpciwgJytzZXJ2ZXIuanMnKSxcbiAgICAgIGV4dGVybmFsaXplTm9uU3RlcHM6IHRydWUsXG4gICAgICB0c2NvbmZpZ1BhdGgsXG4gICAgfSk7XG5cbiAgICAvLyBQb3N0LXByb2Nlc3MgdGhlIGdlbmVyYXRlZCBmaWxlIHRvIHdyYXAgd2l0aCBTdmVsdGVLaXQgcmVxdWVzdCBjb252ZXJ0ZXJcbiAgICBjb25zdCBzdGVwc1JvdXRlRmlsZSA9IGpvaW4oc3RlcHNSb3V0ZURpciwgJytzZXJ2ZXIuanMnKTtcbiAgICBsZXQgc3RlcHNSb3V0ZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZShzdGVwc1JvdXRlRmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBkZWZhdWx0IGV4cG9ydCB3aXRoIFN2ZWx0ZUtpdC1jb21wYXRpYmxlIGhhbmRsZXJcbiAgICBzdGVwc1JvdXRlQ29udGVudCA9IHJlcGxhY2VHZW5lcmF0ZWRSb3V0ZUV4cG9ydChcbiAgICAgIHN0ZXBzUm91dGVDb250ZW50LFxuICAgICAgL2V4cG9ydFxccypcXHtcXHMqc3RlcEVudHJ5cG9pbnRcXHcqXFxzK2FzXFxzK0hFQURcXHMqLFxccypzdGVwRW50cnlwb2ludFxcdypcXHMrYXNcXHMrUE9TVFxccypcXH1cXHMqOz9cXHMqJC9tLFxuICAgICAgYCR7Tk9STUFMSVpFX1JFUVVFU1RfQ09ERX1cbmNvbnN0IGhhbmRsZVN0ZXBSZXF1ZXN0ID0gYXN5bmMgKHtyZXF1ZXN0fSkgPT4ge1xuICBjb25zdCBub3JtYWxSZXF1ZXN0ID0gYXdhaXQgbm9ybWFsaXplUmVxdWVzdChyZXF1ZXN0KTtcbiAgcmV0dXJuIHN0ZXBFbnRyeXBvaW50KG5vcm1hbFJlcXVlc3QpO1xufTtcblxuZXhwb3J0IGNvbnN0IEhFQUQgPSBoYW5kbGVTdGVwUmVxdWVzdDtcbmV4cG9ydCBjb25zdCBQT1NUID0gaGFuZGxlU3RlcFJlcXVlc3Q7YCxcbiAgICAgICdGYWlsZWQgdG8gd3JhcCBnZW5lcmF0ZWQgU3ZlbHRlS2l0IHN0ZXAgcm91dGUnXG4gICAgKTtcblxuICAgIGF3YWl0IHdyaXRlRmlsZShzdGVwc1JvdXRlRmlsZSwgc3RlcHNSb3V0ZUNvbnRlbnQpO1xuICAgIHJldHVybiBtYW5pZmVzdDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRXb3JrZmxvd3NSb3V0ZSh7XG4gICAgaW5wdXRGaWxlcyxcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICB0c2NvbmZpZ1BhdGgsXG4gIH06IHtcbiAgICBpbnB1dEZpbGVzOiBzdHJpbmdbXTtcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcjogc3RyaW5nO1xuICAgIHRzY29uZmlnUGF0aD86IHN0cmluZztcbiAgfSkge1xuICAgIC8vIENyZWF0ZSB3b3JrZmxvd3Mgcm91dGU6IC53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3cvK3NlcnZlci5qc1xuICAgIGNvbnN0IHdvcmtmbG93c1JvdXRlRGlyID0gam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJ2Zsb3cnKTtcbiAgICBhd2FpdCBta2Rpcih3b3JrZmxvd3NSb3V0ZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICBjb25zdCB7IG1hbmlmZXN0IH0gPSBhd2FpdCB0aGlzLmNyZWF0ZVdvcmtmbG93c0J1bmRsZSh7XG4gICAgICBmb3JtYXQ6ICdlc20nLFxuICAgICAgb3V0ZmlsZTogam9pbih3b3JrZmxvd3NSb3V0ZURpciwgJytzZXJ2ZXIuanMnKSxcbiAgICAgIGJ1bmRsZUZpbmFsT3V0cHV0OiBmYWxzZSxcbiAgICAgIGlucHV0RmlsZXMsXG4gICAgICB0c2NvbmZpZ1BhdGgsXG4gICAgfSk7XG5cbiAgICAvLyBQb3N0LXByb2Nlc3MgdGhlIGdlbmVyYXRlZCBmaWxlIHRvIHdyYXAgd2l0aCBTdmVsdGVLaXQgcmVxdWVzdCBjb252ZXJ0ZXJcbiAgICBjb25zdCB3b3JrZmxvd3NSb3V0ZUZpbGUgPSBqb2luKHdvcmtmbG93c1JvdXRlRGlyLCAnK3NlcnZlci5qcycpO1xuICAgIGxldCB3b3JrZmxvd3NSb3V0ZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZSh3b3JrZmxvd3NSb3V0ZUZpbGUsICd1dGYtOCcpO1xuXG4gICAgLy8gUmVwbGFjZSB0aGUgZGVmYXVsdCBleHBvcnQgd2l0aCBTdmVsdGVLaXQtY29tcGF0aWJsZSBoYW5kbGVyXG4gICAgd29ya2Zsb3dzUm91dGVDb250ZW50ID0gcmVwbGFjZUdlbmVyYXRlZFJvdXRlRXhwb3J0KFxuICAgICAgd29ya2Zsb3dzUm91dGVDb250ZW50LFxuICAgICAgL2NvbnN0IGhhbmRsZXIgPSB3b3JrZmxvd0VudHJ5cG9pbnRcXCh3b3JrZmxvd0NvZGVcXCk7XFxzKmV4cG9ydCBjb25zdCBIRUFEID0gaGFuZGxlcjtcXHMqZXhwb3J0IGNvbnN0IFBPU1QgPSBoYW5kbGVyOz9cXHMqJC9tLFxuICAgICAgYCR7Tk9STUFMSVpFX1JFUVVFU1RfQ09ERX1cbmNvbnN0IGhhbmRsZVdvcmtmbG93UmVxdWVzdCA9IGFzeW5jICh7cmVxdWVzdH0pID0+IHtcbiAgY29uc3Qgbm9ybWFsUmVxdWVzdCA9IGF3YWl0IG5vcm1hbGl6ZVJlcXVlc3QocmVxdWVzdCk7XG4gIHJldHVybiB3b3JrZmxvd0VudHJ5cG9pbnQod29ya2Zsb3dDb2RlKShub3JtYWxSZXF1ZXN0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBIRUFEID0gaGFuZGxlV29ya2Zsb3dSZXF1ZXN0O1xuZXhwb3J0IGNvbnN0IFBPU1QgPSBoYW5kbGVXb3JrZmxvd1JlcXVlc3Q7YCxcbiAgICAgICdGYWlsZWQgdG8gd3JhcCBnZW5lcmF0ZWQgU3ZlbHRlS2l0IHdvcmtmbG93IHJvdXRlJ1xuICAgICk7XG4gICAgYXdhaXQgd3JpdGVGaWxlKHdvcmtmbG93c1JvdXRlRmlsZSwgd29ya2Zsb3dzUm91dGVDb250ZW50KTtcblxuICAgIHJldHVybiBtYW5pZmVzdDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRXZWJob29rUm91dGUoe1xuICAgIHdvcmtmbG93R2VuZXJhdGVkRGlyLFxuICB9OiB7XG4gICAgd29ya2Zsb3dHZW5lcmF0ZWREaXI6IHN0cmluZztcbiAgfSkge1xuICAgIC8vIENyZWF0ZSB3ZWJob29rIHJvdXRlOiAud2VsbC1rbm93bi93b3JrZmxvdy92MS93ZWJob29rL1t0b2tlbl0vK3NlcnZlci5qc1xuICAgIGNvbnN0IHdlYmhvb2tSb3V0ZUZpbGUgPSBqb2luKFxuICAgICAgd29ya2Zsb3dHZW5lcmF0ZWREaXIsXG4gICAgICAnd2ViaG9vay9bdG9rZW5dLytzZXJ2ZXIuanMnXG4gICAgKTtcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2ViaG9va0J1bmRsZSh7XG4gICAgICBvdXRmaWxlOiB3ZWJob29rUm91dGVGaWxlLFxuICAgICAgYnVuZGxlOiBmYWxzZSwgLy8gU3ZlbHRlS2l0IHdpbGwgaGFuZGxlIGJ1bmRsaW5nXG4gICAgfSk7XG5cbiAgICAvLyBQb3N0LXByb2Nlc3MgdGhlIGdlbmVyYXRlZCBmaWxlIHRvIHdyYXAgd2l0aCBTdmVsdGVLaXQgcmVxdWVzdCBjb252ZXJ0ZXJcbiAgICBsZXQgd2ViaG9va1JvdXRlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHdlYmhvb2tSb3V0ZUZpbGUsICd1dGYtOCcpO1xuXG4gICAgLy8gVXBkYXRlIGhhbmRsZXIgc2lnbmF0dXJlIHRvIGFjY2VwdCB0b2tlbiBhcyBwYXJhbWV0ZXJcbiAgICB3ZWJob29rUm91dGVDb250ZW50ID0gd2ViaG9va1JvdXRlQ29udGVudC5yZXBsYWNlKFxuICAgICAgL2FzeW5jIGZ1bmN0aW9uIGhhbmRsZXJcXChyZXF1ZXN0XFwpIFxce1tcXHNcXFNdKj9jb25zdCB0b2tlbiA9IGRlY29kZVVSSUNvbXBvbmVudFxcKHBhdGhQYXJ0c1xcW3BhdGhQYXJ0c1xcLmxlbmd0aCAtIDFcXF1cXCk7LyxcbiAgICAgIGBhc3luYyBmdW5jdGlvbiBoYW5kbGVyKHJlcXVlc3QsIHRva2VuKSB7YFxuICAgICk7XG5cbiAgICAvLyBSZW1vdmUgdGhlIFVSTCBwYXJzaW5nIGNvZGUgc2luY2Ugd2UgZ2V0IHRva2VuIGZyb20gcGFyYW1zXG4gICAgd2ViaG9va1JvdXRlQ29udGVudCA9IHdlYmhvb2tSb3V0ZUNvbnRlbnQucmVwbGFjZShcbiAgICAgIC9jb25zdCB1cmwgPSBuZXcgVVJMXFwocmVxdWVzdFxcLnVybFxcKTtbXFxzXFxTXSo/Y29uc3QgcGF0aFBhcnRzID0gdXJsXFwucGF0aG5hbWVcXC5zcGxpdFxcKCdcXC8nXFwpO1tcXHNcXFNdKj9cXG4vLFxuICAgICAgJydcbiAgICApO1xuXG4gICAgLy8gUmVwbGFjZSBhbGwgSFRUUCBtZXRob2QgZXhwb3J0cyB3aXRoIFN2ZWx0ZUtpdC1jb21wYXRpYmxlIGhhbmRsZXJzXG4gICAgd2ViaG9va1JvdXRlQ29udGVudCA9IHdlYmhvb2tSb3V0ZUNvbnRlbnQucmVwbGFjZShcbiAgICAgIC9leHBvcnQgY29uc3QgR0VUID0gaGFuZGxlcjtcXG5leHBvcnQgY29uc3QgUE9TVCA9IGhhbmRsZXI7XFxuZXhwb3J0IGNvbnN0IFBVVCA9IGhhbmRsZXI7XFxuZXhwb3J0IGNvbnN0IFBBVENIID0gaGFuZGxlcjtcXG5leHBvcnQgY29uc3QgREVMRVRFID0gaGFuZGxlcjtcXG5leHBvcnQgY29uc3QgSEVBRCA9IGhhbmRsZXI7XFxuZXhwb3J0IGNvbnN0IE9QVElPTlMgPSBoYW5kbGVyOy8sXG4gICAgICBgJHtOT1JNQUxJWkVfUkVRVUVTVF9DT0RFfVxuY29uc3QgY3JlYXRlU3ZlbHRlS2l0SGFuZGxlciA9IChtZXRob2QpID0+IGFzeW5jICh7IHJlcXVlc3QsIHBhcmFtcywgcGxhdGZvcm0gfSkgPT4ge1xuICBjb25zdCBub3JtYWxSZXF1ZXN0ID0gYXdhaXQgbm9ybWFsaXplUmVxdWVzdChyZXF1ZXN0KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBoYW5kbGVyKG5vcm1hbFJlcXVlc3QsIHBhcmFtcy50b2tlbik7XG4gIHJldHVybiByZXNwb25zZTtcbn07XG5cbmV4cG9ydCBjb25zdCBHRVQgPSBjcmVhdGVTdmVsdGVLaXRIYW5kbGVyKCdHRVQnKTtcbmV4cG9ydCBjb25zdCBQT1NUID0gY3JlYXRlU3ZlbHRlS2l0SGFuZGxlcignUE9TVCcpO1xuZXhwb3J0IGNvbnN0IFBVVCA9IGNyZWF0ZVN2ZWx0ZUtpdEhhbmRsZXIoJ1BVVCcpO1xuZXhwb3J0IGNvbnN0IFBBVENIID0gY3JlYXRlU3ZlbHRlS2l0SGFuZGxlcignUEFUQ0gnKTtcbmV4cG9ydCBjb25zdCBERUxFVEUgPSBjcmVhdGVTdmVsdGVLaXRIYW5kbGVyKCdERUxFVEUnKTtcbmV4cG9ydCBjb25zdCBIRUFEID0gY3JlYXRlU3ZlbHRlS2l0SGFuZGxlcignSEVBRCcpO1xuZXhwb3J0IGNvbnN0IE9QVElPTlMgPSBjcmVhdGVTdmVsdGVLaXRIYW5kbGVyKCdPUFRJT05TJyk7YFxuICAgICk7XG5cbiAgICBhd2FpdCB3cml0ZUZpbGUod2ViaG9va1JvdXRlRmlsZSwgd2ViaG9va1JvdXRlQ29udGVudCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZpbmRSb3V0ZXNEaXJlY3RvcnkoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCByb3V0ZXNEaXIgPSByZXNvbHZlKHRoaXMuY29uZmlnLndvcmtpbmdEaXIsICdzcmMvcm91dGVzJyk7XG4gICAgY29uc3Qgcm9vdFJvdXRlc0RpciA9IHJlc29sdmUodGhpcy5jb25maWcud29ya2luZ0RpciwgJ3JvdXRlcycpO1xuXG4gICAgLy8gVHJ5IHNyYy9yb3V0ZXMgZmlyc3QgKHN0YW5kYXJkIFN2ZWx0ZUtpdCBjb252ZW50aW9uKVxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBhY2Nlc3Mocm91dGVzRGlyLCBjb25zdGFudHMuRl9PSyk7XG4gICAgICBjb25zdCByb3V0ZXNTdGF0cyA9IGF3YWl0IHN0YXQocm91dGVzRGlyKTtcbiAgICAgIGlmICghcm91dGVzU3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBhdGggZXhpc3RzIGJ1dCBpcyBub3QgYSBkaXJlY3Rvcnk6ICR7cm91dGVzRGlyfWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJvdXRlc0RpcjtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIFRyeSByb3V0ZXMgYXMgZmFsbGJhY2tcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFjY2Vzcyhyb290Um91dGVzRGlyLCBjb25zdGFudHMuRl9PSyk7XG4gICAgICAgIGNvbnN0IHJvb3RSb3V0ZXNTdGF0cyA9IGF3YWl0IHN0YXQocm9vdFJvdXRlc0Rpcik7XG4gICAgICAgIGlmICghcm9vdFJvdXRlc1N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgUGF0aCBleGlzdHMgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeTogJHtyb290Um91dGVzRGlyfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb290Um91dGVzRGlyO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgU3ZlbHRlS2l0IHJvdXRlcyBkaXJlY3RvcnkuIEV4cGVjdGVkIGVpdGhlciBcInNyYy9yb3V0ZXNcIiBvciBcInJvdXRlc1wiIHRvIGV4aXN0LidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEMsT0FBTyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLHVCQUF1QixFQUN2QixzQkFBc0IsRUFDdEIsMkJBQTJCLEVBQzNCLGtCQUFrQixHQUVuQixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsUUFBUSxFQUFFLG9CQUFvQjtJQUM5QixNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLFFBQVEsRUFBRSxvQkFBb0I7SUFDOUIsUUFBUSxFQUFFLG9CQUFvQjtDQUMvQixDQUFDO0FBRUYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUFDL0MsVUFBVSxDQUFxQjtJQUUvQixZQUFZLFNBQTRELEVBQUU7UUFDeEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSTtZQUMxQixXQUFXO1lBQ1gsZUFBZTtZQUNmLFFBQVE7WUFDUixZQUFZO1NBQ2IsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksa0JBQWtCLENBQUMsVUFB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dCI6WyJpbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7XG4gIGFjY2VzcyxcbiAgY29weUZpbGUsXG4gIG1rZGlyLFxuICByZWFkRmlsZSxcbiAgc3RhdCxcbiAgd3JpdGVGaWxlLFxufSBmcm9tICdub2RlOmZzL3Byb21pc2VzJztcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tICdub2RlOm1vZHVsZSc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IHBhdGhUb0ZpbGVVUkwgfSBmcm9tICdub2RlOnVybCc7XG5pbXBvcnQge1xuICBCYXNlQnVpbGRlcixcbiAgY3JlYXRlQmFzZUJ1aWxkZXJDb25maWcsXG4gIE5PUk1BTElaRV9SRVFVRVNUX0NPREUsXG4gIHJlcGxhY2VHZW5lcmF0ZWRSb3V0ZUV4cG9ydCxcbiAgcmVzb2x2ZVByb2plY3RSb290LFxuICB0eXBlIFN2ZWx0ZUtpdENvbmZpZyxcbn0gZnJvbSAnQHdvcmtmbG93L2J1aWxkZXJzJztcblxuY29uc3QgU1ZFTFRFS0lUX1ZJUlRVQUxfTU9EVUxFUyA9IFtcbiAgJyRlbnYvKicsIC8vIEFsbCAkZW52IHN1YnBhdGhzXG4gICckbGliJywgLy8gRXhhY3QgJGxpYiBpbXBvcnRcbiAgJyRsaWIvKicsIC8vIEFsbCAkbGliIHN1YnBhdGhzXG4gICckYXBwLyonLCAvLyBBbGwgJGFwcCBzdWJwYXRoc1xuXTtcblxuZXhwb3J0IGNsYXNzIFN2ZWx0ZUtpdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gICNyb3V0ZXNEaXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFBhcnRpYWw8U3ZlbHRlS2l0Q29uZmlnPiAmIHsgcm91dGVzRGlyPzogc3RyaW5nIH0gPSB7fSkge1xuICAgIGNvbnN0IHdvcmtpbmdEaXIgPSByZXNvbHZlKGNvbmZpZy53b3JraW5nRGlyIHx8IHByb2Nlc3MuY3dkKCkpO1xuICAgIGNvbnN0IGRpcnMgPSBjb25maWcuZGlycyA/PyBbXG4gICAgICAnd29ya2Zsb3dzJyxcbiAgICAgICdzcmMvd29ya2Zsb3dzJyxcbiAgICAgICdyb3V0ZXMnLFxuICAgICAgJ3NyYy9yb3V0ZXMnLFxuICAgIF07XG4gICAgY29uc3QgcHJvamVjdFJvb3QgPSBjb25maWcucHJvamVjdFJvb3QgPz8gcmVzb2x2ZVByb2plY3RSb290KHdvcmtpbmdEaXIpO1xuICAgIGNvbnN0IHJvdXRlc0RpciA9IGNvbmZpZy5yb3V0ZXNEaXJcbiAgICAgID8gcmVzb2x2ZSh3b3JraW5nRGlyLCBjb25maWcucm91dGVzRGlyKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uY3JlYXRlQmFzZUJ1aWxkZXJDb25maWcoe1xuICAgICAgICB3b3JraW5nRGlyLFxuICAgICAgICBwcm9qZWN0Um9vdCxcbiAgICAgICAgZGlycyxcbiAgICAgICAgd2F0Y2g6IGNvbmZpZy53YXRjaCxcbiAgICAgICAgZXh0ZXJuYWxQYWNrYWdlczogWy4uLlNWRUxURUtJVF9WSVJUVUFMX01PRFVMRVNdLFxuICAgICAgfSksXG4gICAgICAuLi5jb25maWcsXG4gICAgICBkaXJzLFxuICAgICAgYnVpbGRUYXJnZXQ6ICdzdmVsdGVraXQnIGFzIGNvbnN0LFxuICAgICAgd29ya2luZ0RpcixcbiAgICAgIHByb2plY3RSb290LFxuICAgICAgbW9kdWxlU3BlY2lmaWVyUm9vdDogY29uZmlnLm1vZHVsZVNwZWNpZmllclJvb3QgPz8gd29ya2luZ0RpcixcbiAgICAgIGV4dGVybmFsUGFja2FnZXM6IFsuLi5TVkVMVEVLSVRfVklSVFVBTF9NT0RVTEVTXSxcbiAgICB9KTtcbiAgICB0aGlzLiNyb3V0ZXNEaXIgPSByb3V0ZXNEaXI7XG4gIH1cblxuICBvdmVycmlkZSBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByb3V0ZXNEaXIgPSBhd2FpdCB0aGlzLmxvYWRSb3V0ZXNEaXJlY3RvcnkoKTtcbiAgICBjb25zdCB3b3JrZmxvd0dlbmVyYXRlZERpciA9IGpvaW4ocm91dGVzRGlyLCAnLndlbGwta25vd24vd29ya2Zsb3cvdjEnKTtcblxuICAgIC8vIEVuc3VyZSBvdXRwdXQgZGlyZWN0b3JpZXMgZXhpc3RcbiAgICBhd2FpdCBta2Rpcih3b3JrZmxvd0dlbmVyYXRlZERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICAvLyBBZGQgLmdpdGlnbm9yZSB0byBleGNsdWRlIGdlbmVyYXRlZCBmaWxlcyBmcm9tIHZlcnNpb24gY29udHJvbFxuICAgIGlmIChwcm9jZXNzLmVudi5WRVJDRUxfREVQTE9ZTUVOVF9JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhd2FpdCB3cml0ZUZpbGUoam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJy5naXRpZ25vcmUnKSwgJyonKTtcbiAgICB9XG5cbiAgICAvLyBHZXQgd29ya2Zsb3cgYW5kIHN0ZXAgZmlsZXMgdG8gYnVuZGxlXG4gICAgY29uc3QgaW5wdXRGaWxlcyA9IGF3YWl0IHRoaXMuZ2V0SW5wdXRGaWxlcygpO1xuICAgIGNvbnN0IHRzY29uZmlnUGF0aCA9IGF3YWl0IHRoaXMuZmluZFRzQ29uZmlnUGF0aCgpO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIGlucHV0RmlsZXMsXG4gICAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICAgIHRzY29uZmlnUGF0aCxcbiAgICB9O1xuXG4gICAgLy8gR2VuZXJhdGUgdGhlIHRocmVlIFN2ZWx0ZUtpdCByb3V0ZSBoYW5kbGVyc1xuICAgIGNvbnN0IHN0ZXBzTWFuaWZlc3QgPSBhd2FpdCB0aGlzLmJ1aWxkU3RlcHNSb3V0ZShvcHRpb25zKTtcbiAgICBjb25zdCB3b3JrZmxvd3NNYW5pZmVzdCA9IGF3YWl0IHRoaXMuYnVpbGRXb3JrZmxvd3NSb3V0ZShvcHRpb25zKTtcbiAgICBhd2FpdCB0aGlzLmJ1aWxkV2ViaG9va1JvdXRlKHsgd29ya2Zsb3dHZW5lcmF0ZWREaXIgfSk7XG5cbiAgICAvLyBNZXJnZSBtYW5pZmVzdHMgZnJvbSBib3RoIGJ1bmRsZXNcbiAgICBjb25zdCBtYW5pZmVzdCA9IHtcbiAgICAgIHN0ZXBzOiB7IC4uLnN0ZXBzTWFuaWZlc3Quc3RlcHMsIC4uLndvcmtmbG93c01hbmlmZXN0LnN0ZXBzIH0sXG4gICAgICB3b3JrZmxvd3M6IHsgLi4uc3RlcHNNYW5pZmVzdC53b3JrZmxvd3MsIC4uLndvcmtmbG93c01hbmlmZXN0LndvcmtmbG93cyB9LFxuICAgICAgY2xhc3NlczogeyAuLi5zdGVwc01hbmlmZXN0LmNsYXNzZXMsIC4uLndvcmtmbG93c01hbmlmZXN0LmNsYXNzZXMgfSxcbiAgICB9O1xuXG4gICAgLy8gR2VuZXJhdGUgdW5pZmllZCBtYW5pZmVzdFxuICAgIGNvbnN0IHdvcmtmbG93QnVuZGxlUGF0aCA9IGpvaW4od29ya2Zsb3dHZW5lcmF0ZWREaXIsICdmbG93LytzZXJ2ZXIuanMnKTtcbiAgICBjb25zdCBtYW5pZmVzdEpzb24gPSBhd2FpdCB0aGlzLmNyZWF0ZU1hbmlmZXN0KHtcbiAgICAgIHdvcmtmbG93QnVuZGxlUGF0aCxcbiAgICAgIG1hbmlmZXN0RGlyOiB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICAgIG1hbmlmZXN0LFxuICAgIH0pO1xuXG4gICAgLy8gRXhwb3NlIG1hbmlmZXN0IGFzIGEgc3RhdGljIGZpbGUgd2hlbiBXT1JLRkxPV19QVUJMSUNfTUFOSUZFU1Q9MS5cbiAgICAvLyBTdmVsdGVLaXQgc2VydmVzIGZpbGVzIGZyb20gc3RhdGljLyBhdCB0aGUgcm9vdCBVUkwuXG4gICAgaWYgKHRoaXMuc2hvdWxkRXhwb3NlUHVibGljTWFuaWZlc3QgJiYgbWFuaWZlc3RKc29uKSB7XG4gICAgICBjb25zdCBzdGF0aWNNYW5pZmVzdERpciA9IGpvaW4oXG4gICAgICAgIHRoaXMuY29uZmlnLndvcmtpbmdEaXIsXG4gICAgICAgICdzdGF0aWMvLndlbGwta25vd24vd29ya2Zsb3cvdjEnXG4gICAgICApO1xuICAgICAgYXdhaXQgbWtkaXIoc3RhdGljTWFuaWZlc3REaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgICAgaWYgKHByb2Nlc3MuZW52LlZFUkNFTF9ERVBMT1lNRU5UX0lEID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXdhaXQgd3JpdGVGaWxlKGpvaW4oc3RhdGljTWFuaWZlc3REaXIsICcuZ2l0aWdub3JlJyksICcqJyk7XG4gICAgICB9XG4gICAgICBhd2FpdCBjb3B5RmlsZShcbiAgICAgICAgam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJ21hbmlmZXN0Lmpzb24nKSxcbiAgICAgICAgam9pbihzdGF0aWNNYW5pZmVzdERpciwgJ21hbmlmZXN0Lmpzb24nKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkU3RlcHNSb3V0ZSh7XG4gICAgaW5wdXRGaWxlcyxcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICB0c2NvbmZpZ1BhdGgsXG4gIH06IHtcbiAgICBpbnB1dEZpbGVzOiBzdHJpbmdbXTtcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcjogc3RyaW5nO1xuICAgIHRzY29uZmlnUGF0aD86IHN0cmluZztcbiAgfSkge1xuICAgIC8vIENyZWF0ZSBzdGVwcyByb3V0ZTogLndlbGwta25vd24vd29ya2Zsb3cvdjEvc3RlcC8rc2VydmVyLmpzXG4gICAgY29uc3Qgc3RlcHNSb3V0ZURpciA9IGpvaW4od29ya2Zsb3dHZW5lcmF0ZWREaXIsICdzdGVwJyk7XG4gICAgYXdhaXQgbWtkaXIoc3RlcHNSb3V0ZURpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICBjb25zdCB7IG1hbmlmZXN0IH0gPSBhd2FpdCB0aGlzLmNyZWF0ZVN0ZXBzQnVuZGxlKHtcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBpbnB1dEZpbGVzLFxuICAgICAgb3V0ZmlsZTogam9pbihzdGVwc1JvdXRlRGlyLCAnK3NlcnZlci5qcycpLFxuICAgICAgZXh0ZXJuYWxpemVOb25TdGVwczogdHJ1ZSxcbiAgICAgIHRzY29uZmlnUGF0aCxcbiAgICB9KTtcblxuICAgIC8vIFBvc3QtcHJvY2VzcyB0aGUgZ2VuZXJhdGVkIGZpbGUgdG8gd3JhcCB3aXRoIFN2ZWx0ZUtpdCByZXF1ZXN0IGNvbnZlcnRlclxuICAgIGNvbnN0IHN0ZXBzUm91dGVGaWxlID0gam9pbihzdGVwc1JvdXRlRGlyLCAnK3NlcnZlci5qcycpO1xuICAgIGxldCBzdGVwc1JvdXRlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHN0ZXBzUm91dGVGaWxlLCAndXRmLTgnKTtcblxuICAgIC8vIFJlcGxhY2UgdGhlIGRlZmF1bHQgZXhwb3J0IHdpdGggU3ZlbHRlS2l0LWNvbXBhdGlibGUgaGFuZGxlclxuICAgIHN0ZXBzUm91dGVDb250ZW50ID0gcmVwbGFjZUdlbmVyYXRlZFJvdXRlRXhwb3J0KFxuICAgICAgc3RlcHNSb3V0ZUNvbnRlbnQsXG4gICAgICAvZXhwb3J0XFxzKlxce1xccypzdGVwRW50cnlwb2ludFxcdypcXHMrYXNcXHMrSEVBRFxccyosXFxzKnN0ZXBFbnRyeXBvaW50XFx3Klxccythc1xccytQT1NUXFxzKlxcfVxccyo7P1xccyokL20sXG4gICAgICBgJHtOT1JNQUxJWkVfUkVRVUVTVF9DT0RFfVxuY29uc3QgaGFuZGxlU3RlcFJlcXVlc3QgPSBhc3luYyAoe3JlcXVlc3R9KSA9PiB7XG4gIGNvbnN0IG5vcm1hbFJlcXVlc3QgPSBhd2FpdCBub3JtYWxpemVSZXF1ZXN0KHJlcXVlc3QpO1xuICByZXR1cm4gc3RlcEVudHJ5cG9pbnQobm9ybWFsUmVxdWVzdCk7XG59O1xuXG5leHBvcnQgY29uc3QgSEVBRCA9IGhhbmRsZVN0ZXBSZXF1ZXN0O1xuZXhwb3J0IGNvbnN0IFBPU1QgPSBoYW5kbGVTdGVwUmVxdWVzdDtgLFxuICAgICAgJ0ZhaWxlZCB0byB3cmFwIGdlbmVyYXRlZCBTdmVsdGVLaXQgc3RlcCByb3V0ZSdcbiAgICApO1xuXG4gICAgYXdhaXQgd3JpdGVGaWxlKHN0ZXBzUm91dGVGaWxlLCBzdGVwc1JvdXRlQ29udGVudCk7XG4gICAgcmV0dXJuIG1hbmlmZXN0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZFdvcmtmbG93c1JvdXRlKHtcbiAgICBpbnB1dEZpbGVzLFxuICAgIHdvcmtmbG93R2VuZXJhdGVkRGlyLFxuICAgIHRzY29uZmlnUGF0aCxcbiAgfToge1xuICAgIGlucHV0RmlsZXM6IHN0cmluZ1tdO1xuICAgIHdvcmtmbG93R2VuZXJhdGVkRGlyOiBzdHJpbmc7XG4gICAgdHNjb25maWdQYXRoPzogc3RyaW5nO1xuICB9KSB7XG4gICAgLy8gQ3JlYXRlIHdvcmtmbG93cyByb3V0ZTogLndlbGwta25vd24vd29ya2Zsb3cvdjEvZmxvdy8rc2VydmVyLmpzXG4gICAgY29uc3Qgd29ya2Zsb3dzUm91dGVEaXIgPSBqb2luKHdvcmtmbG93R2VuZXJhdGVkRGlyLCAnZmxvdycpO1xuICAgIGF3YWl0IG1rZGlyKHdvcmtmbG93c1JvdXRlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIGNvbnN0IHsgbWFuaWZlc3QgfSA9IGF3YWl0IHRoaXMuY3JlYXRlV29ya2Zsb3dzQnVuZGxlKHtcbiAgICAgIGZvcm1hdDogJ2VzbScsXG4gICAgICBvdXRmaWxlOiBqb2luKHdvcmtmbG93c1JvdXRlRGlyLCAnK3NlcnZlci5qcycpLFxuICAgICAgYnVuZGxlRmluYWxPdXRwdXQ6IGZhbHNlLFxuICAgICAgaW5wdXRGaWxlcyxcbiAgICAgIHRzY29uZmlnUGF0aCxcbiAgICB9KTtcblxuICAgIC8vIFBvc3QtcHJvY2VzcyB0aGUgZ2VuZXJhdGVkIGZpbGUgdG8gd3JhcCB3aXRoIFN2ZWx0ZUtpdCByZXF1ZXN0IGNvbnZlcnRlclxuICAgIGNvbnN0IHdvcmtmbG93c1JvdXRlRmlsZSA9IGpvaW4od29ya2Zsb3dzUm91dGVEaXIsICcrc2VydmVyLmpzJyk7XG4gICAgbGV0IHdvcmtmbG93c1JvdXRlQ29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHdvcmtmbG93c1JvdXRlRmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICAvLyBSZXBsYWNlIHRoZSBkZWZhdWx0IGV4cG9ydCB3aXRoIFN2ZWx0ZUtpdC1jb21wYXRpYmxlIGhhbmRsZXJcbiAgICB3b3JrZmxvd3NSb3V0ZUNvbnRlbnQgPSByZXBsYWNlR2VuZXJhdGVkUm91dGVFeHBvcnQoXG4gICAgICB3b3JrZmxvd3NSb3V0ZUNvbnRlbnQsXG4gICAgICAvY29uc3QgaGFuZGxlciA9IHdvcmtmbG93RW50cnlwb2ludFxcKHdvcmtmbG93Q29kZSg/PG9wdGlvbnM+W14pXSopXFwpO1xccypleHBvcnQgY29uc3QgSEVBRCA9IGhhbmRsZXI7XFxzKmV4cG9ydCBjb25zdCBQT1NUID0gaGFuZGxlcjs/XFxzKiQvbSxcbiAgICAgIChfbWF0Y2gsIG9wdGlvbnMgPSAnJykgPT4gYCR7Tk9STUFMSVpFX1JFUVVFU1RfQ09ERX1cbmNvbnN0IGhhbmRsZVdvcmtmbG93UmVxdWVzdCA9IGFzeW5jICh7cmVxdWVzdH0pID0+IHtcbiAgY29uc3Qgbm9ybWFsUmVxdWVzdCA9IGF3YWl0IG5vcm1hbGl6ZVJlcXVlc3QocmVxdWVzdCk7XG4gIHJldHVybiB3b3JrZmxvd0VudHJ5cG9pbnQod29ya2Zsb3dDb2RlJHtvcHRpb25zfSkobm9ybWFsUmVxdWVzdCk7XG59O1xuXG5leHBvcnQgY29uc3QgSEVBRCA9IGhhbmRsZVdvcmtmbG93UmVxdWVzdDtcbmV4cG9ydCBjb25zdCBQT1NUID0gaGFuZGxlV29ya2Zsb3dSZXF1ZXN0O2AsXG4gICAgICAnRmFpbGVkIHRvIHdyYXAgZ2VuZXJhdGVkIFN2ZWx0ZUtpdCB3b3JrZmxvdyByb3V0ZSdcbiAgICApO1xuICAgIGF3YWl0IHdyaXRlRmlsZSh3b3JrZmxvd3NSb3V0ZUZpbGUsIHdvcmtmbG93c1JvdXRlQ29udGVudCk7XG5cbiAgICByZXR1cm4gbWFuaWZlc3Q7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkV2ViaG9va1JvdXRlKHtcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgfToge1xuICAgIHdvcmtmbG93R2VuZXJhdGVkRGlyOiBzdHJpbmc7XG4gIH0pIHtcbiAgICAvLyBDcmVhdGUgd2ViaG9vayByb3V0ZTogLndlbGwta25vd24vd29ya2Zsb3cvdjEvd2ViaG9vay9bdG9rZW5dLytzZXJ2ZXIuanNcbiAgICBjb25zdCB3ZWJob29rUm91dGVGaWxlID0gam9pbihcbiAgICAgIHdvcmtmbG93R2VuZXJhdGVkRGlyLFxuICAgICAgJ3dlYmhvb2svW3Rva2VuXS8rc2VydmVyLmpzJ1xuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdlYmhvb2tCdW5kbGUoe1xuICAgICAgb3V0ZmlsZTogd2ViaG9va1JvdXRlRmlsZSxcbiAgICAgIGJ1bmRsZTogZmFsc2UsIC8vIFN2ZWx0ZUtpdCB3aWxsIGhhbmRsZSBidW5kbGluZ1xuICAgIH0pO1xuXG4gICAgLy8gUG9zdC1wcm9jZXNzIHRoZSBnZW5lcmF0ZWQgZmlsZSB0byB3cmFwIHdpdGggU3ZlbHRlS2l0IHJlcXVlc3QgY29udmVydGVyXG4gICAgbGV0IHdlYmhvb2tSb3V0ZUNvbnRlbnQgPSBhd2FpdCByZWFkRmlsZSh3ZWJob29rUm91dGVGaWxlLCAndXRmLTgnKTtcblxuICAgIC8vIFVwZGF0ZSBoYW5kbGVyIHNpZ25hdHVyZSB0byBhY2NlcHQgdG9rZW4gYXMgcGFyYW1ldGVyXG4gICAgd2ViaG9va1JvdXRlQ29udGVudCA9IHdlYmhvb2tSb3V0ZUNvbnRlbnQucmVwbGFjZShcbiAgICAgIC9hc3luYyBmdW5jdGlvbiBoYW5kbGVyXFwocmVxdWVzdFxcKSBcXHtbXFxzXFxTXSo/Y29uc3QgdG9rZW4gPSBkZWNvZGVVUklDb21wb25lbnRcXChwYXRoUGFydHNcXFtwYXRoUGFydHNcXC5sZW5ndGggLSAxXFxdXFwpOy8sXG4gICAgICBgYXN5bmMgZnVuY3Rpb24gaGFuZGxlcihyZXF1ZXN0LCB0b2tlbikge2BcbiAgICApO1xuXG4gICAgLy8gUmVtb3ZlIHRoZSBVUkwgcGFyc2luZyBjb2RlIHNpbmNlIHdlIGdldCB0b2tlbiBmcm9tIHBhcmFtc1xuICAgIHdlYmhvb2tSb3V0ZUNvbnRlbnQgPSB3ZWJob29rUm91dGVDb250ZW50LnJlcGxhY2UoXG4gICAgICAvY29uc3QgdXJsID0gbmV3IFVSTFxcKHJlcXVlc3RcXC51cmxcXCk7W1xcc1xcU10qP2NvbnN0IHBhdGhQYXJ0cyA9IHVybFxcLnBhdGhuYW1lXFwuc3BsaXRcXCgnXFwvJ1xcKTtbXFxzXFxTXSo/XFxuLyxcbiAgICAgICcnXG4gICAgKTtcblxuICAgIC8vIFJlcGxhY2UgYWxsIEhUVFAgbWV0aG9kIGV4cG9ydHMgd2l0aCBTdmVsdGVLaXQtY29tcGF0aWJsZSBoYW5kbGVyc1xuICAgIHdlYmhvb2tSb3V0ZUNvbnRlbnQgPSB3ZWJob29rUm91dGVDb250ZW50LnJlcGxhY2UoXG4gICAgICAvZXhwb3J0IGNvbnN0IEdFVCA9IGhhbmRsZXI7XFxuZXhwb3J0IGNvbnN0IFBPU1QgPSBoYW5kbGVyO1xcbmV4cG9ydCBjb25zdCBQVVQgPSBoYW5kbGVyO1xcbmV4cG9ydCBjb25zdCBQQVRDSCA9IGhhbmRsZXI7XFxuZXhwb3J0IGNvbnN0IERFTEVURSA9IGhhbmRsZXI7XFxuZXhwb3J0IGNvbnN0IEhFQUQgPSBoYW5kbGVyO1xcbmV4cG9ydCBjb25zdCBPUFRJT05TID0gaGFuZGxlcjsvLFxuICAgICAgYCR7Tk9STUFMSVpFX1JFUVVFU1RfQ09ERX1cbmNvbnN0IGNyZWF0ZVN2ZWx0ZUtpdEhhbmRsZXIgPSAobWV0aG9kKSA9PiBhc3luYyAoeyByZXF1ZXN0LCBwYXJhbXMsIHBsYXRmb3JtIH0pID0+IHtcbiAgY29uc3Qgbm9ybWFsUmVxdWVzdCA9IGF3YWl0IG5vcm1hbGl6ZVJlcXVlc3QocmVxdWVzdCk7XG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaGFuZGxlcihub3JtYWxSZXF1ZXN0LCBwYXJhbXMudG9rZW4pO1xuICByZXR1cm4gcmVzcG9uc2U7XG59O1xuXG5leHBvcnQgY29uc3QgR0VUID0gY3JlYXRlU3ZlbHRlS2l0SGFuZGxlcignR0VUJyk7XG5leHBvcnQgY29uc3QgUE9TVCA9IGNyZWF0ZVN2ZWx0ZUtpdEhhbmRsZXIoJ1BPU1QnKTtcbmV4cG9ydCBjb25zdCBQVVQgPSBjcmVhdGVTdmVsdGVLaXRIYW5kbGVyKCdQVVQnKTtcbmV4cG9ydCBjb25zdCBQQVRDSCA9IGNyZWF0ZVN2ZWx0ZUtpdEhhbmRsZXIoJ1BBVENIJyk7XG5leHBvcnQgY29uc3QgREVMRVRFID0gY3JlYXRlU3ZlbHRlS2l0SGFuZGxlcignREVMRVRFJyk7XG5leHBvcnQgY29uc3QgSEVBRCA9IGNyZWF0ZVN2ZWx0ZUtpdEhhbmRsZXIoJ0hFQUQnKTtcbmV4cG9ydCBjb25zdCBPUFRJT05TID0gY3JlYXRlU3ZlbHRlS2l0SGFuZGxlcignT1BUSU9OUycpO2BcbiAgICApO1xuXG4gICAgYXdhaXQgd3JpdGVGaWxlKHdlYmhvb2tSb3V0ZUZpbGUsIHdlYmhvb2tSb3V0ZUNvbnRlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsb2FkUm91dGVzRGlyZWN0b3J5KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgcm91dGVzRGlyID1cbiAgICAgIHRoaXMuI3JvdXRlc0RpciA/PyAoYXdhaXQgbG9hZFN2ZWx0ZUtpdFJvdXRlc0Rpcih0aGlzLmNvbmZpZy53b3JraW5nRGlyKSk7XG4gICAgYXdhaXQgYXNzZXJ0RGlyZWN0b3J5KHJvdXRlc0Rpcik7XG4gICAgcmV0dXJuIHJvdXRlc0RpcjtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFN2ZWx0ZUtpdFJvdXRlc0RpcihcbiAgd29ya2luZ0Rpcjogc3RyaW5nXG4pOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCByZXF1aXJlID0gY3JlYXRlUmVxdWlyZShqb2luKHdvcmtpbmdEaXIsICdwYWNrYWdlLmpzb24nKSk7XG4gIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHJlcXVpcmUucmVzb2x2ZSgnQHN2ZWx0ZWpzL2tpdC9wYWNrYWdlLmpzb24nKTtcbiAgY29uc3QgbG9hZGVyUGF0aCA9IGpvaW4oZGlybmFtZShwYWNrYWdlSnNvblBhdGgpLCAnc3JjL2NvcmUvY29uZmlnL2luZGV4LmpzJyk7XG5cbiAgLy8gU3ZlbHRlS2l0J3MgaW50ZXJuYWwgY29uZmlnIGxvYWRlclxuICBjb25zdCB7IGxvYWRfY29uZmlnIH0gPSBhd2FpdCBpbXBvcnQocGF0aFRvRmlsZVVSTChsb2FkZXJQYXRoKS5ocmVmKTtcbiAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZF9jb25maWcoeyBjd2Q6IHdvcmtpbmdEaXIgfSk7XG4gIGNvbnN0IHJvdXRlc0RpciA9IGNvbmZpZy5raXQ/LmZpbGVzPy5yb3V0ZXM7XG4gIGlmIChyb3V0ZXNEaXIgPT0gbnVsbCB8fCB0eXBlb2Ygcm91dGVzRGlyICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdFeHBlY3RlZCBTdmVsdGVLaXQgY29uZmlnIGxvYWRlciB0byByZXR1cm4ga2l0LmZpbGVzLnJvdXRlcyBhcyBhIHN0cmluZy4nXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcm91dGVzRGlyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBhc3NlcnREaXJlY3RvcnkocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IGFjY2VzcyhwYXRoLCBjb25zdGFudHMuRl9PSyk7XG4gIGNvbnN0IHN0YXRzID0gYXdhaXQgc3RhdChwYXRoKTtcbiAgaWYgKCFzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQYXRoIGV4aXN0cyBidXQgaXMgbm90IGEgZGlyZWN0b3J5OiAke3BhdGh9YCk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/sveltekit",
3
- "version": "4.0.9",
3
+ "version": "4.0.11",
4
4
  "description": "SvelteKit integration for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -24,10 +24,10 @@
24
24
  "exsolve": "^1.0.8",
25
25
  "fs-extra": "^11.3.2",
26
26
  "pathe": "^2.0.3",
27
- "@workflow/builders": "4.0.10",
28
- "@workflow/rollup": "4.0.9",
29
- "@workflow/swc-plugin": "4.1.1",
30
- "@workflow/vite": "4.0.9"
27
+ "@workflow/builders": "4.1.1",
28
+ "@workflow/rollup": "4.0.11",
29
+ "@workflow/swc-plugin": "4.1.2",
30
+ "@workflow/vite": "4.0.11"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/fs-extra": "11.0.4",