@dbx-tools/cli 0.9.43 → 0.9.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.
package/README.md CHANGED
@@ -73,7 +73,6 @@ Once the workspace is initialized, use its tasks directly:
73
73
  bun run sync
74
74
  bun run sync -- --watch
75
75
  bun run barrels
76
- bun run openapi
77
76
  ```
78
77
 
79
78
  See [`@dbx-tools/projen`](../../../../projen) for workspace configuration and
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
6
- export const PACKAGE_VERSION = "0.9.43";
6
+ export const PACKAGE_VERSION = "0.9.46";
7
7
  export * as bootstrap from "./src/bootstrap.ts";
8
8
  export * as bun from "./src/bun.ts";
9
9
  export * as cli from "./src/cli.ts";
package/lib/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
2
- export declare const PACKAGE_VERSION = "0.9.43";
2
+ export declare const PACKAGE_VERSION = "0.9.46";
3
3
  export * as bootstrap from "./src/bootstrap.ts";
4
4
  export * as bun from "./src/bun.ts";
5
5
  export * as cli from "./src/cli.ts";
package/lib/index.js CHANGED
@@ -2,11 +2,11 @@
2
2
  // Regenerated from the exporting modules in ./src.
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
  export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
5
- export const PACKAGE_VERSION = "0.9.43";
5
+ export const PACKAGE_VERSION = "0.9.46";
6
6
  export * as bootstrap from "./src/bootstrap.js";
7
7
  export * as bun from "./src/bun.js";
8
8
  export * as cli from "./src/cli.js";
9
9
  export * as root from "./src/root.js";
10
10
  export { resolveBunArgv } from "./src/bun.js";
11
11
  export { workspaceRoot } from "./src/root.js";
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9jbGlcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS40M1wiO1xuZXhwb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gXCIuL3NyYy9ib290c3RyYXAudHNcIjtcbmV4cG9ydCAqIGFzIGJ1biBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgcm9vdCBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuZXhwb3J0IHsgcmVzb2x2ZUJ1bkFyZ3YgfSBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgeyB3b3Jrc3BhY2VSb290IH0gZnJvbSBcIi4vc3JjL3Jvb3QudHNcIjtcbiJdfQ==
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxTQUFTLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUM7QUFDcEMsT0FBTyxLQUFLLElBQUksTUFBTSxlQUFlLENBQUM7QUFDdEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfSURFTlRJRklFUiA9IFwiQGRieC10b29scy9jbGlcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS40NlwiO1xuZXhwb3J0ICogYXMgYm9vdHN0cmFwIGZyb20gXCIuL3NyYy9ib290c3RyYXAudHNcIjtcbmV4cG9ydCAqIGFzIGJ1biBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgKiBhcyBjbGkgZnJvbSBcIi4vc3JjL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgcm9vdCBmcm9tIFwiLi9zcmMvcm9vdC50c1wiO1xuZXhwb3J0IHsgcmVzb2x2ZUJ1bkFyZ3YgfSBmcm9tIFwiLi9zcmMvYnVuLnRzXCI7XG5leHBvcnQgeyB3b3Jrc3BhY2VSb290IH0gZnJvbSBcIi4vc3JjL3Jvb3QudHNcIjtcbiJdfQ==
@@ -7,7 +7,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
7
7
  import { createRequire } from "node:module";
8
8
  import { join } from "node:path";
9
9
  import { intro, outro } from "@clack/prompts";
10
- import { exec, projectUtils } from "@dbx-tools/core";
10
+ import { exec } from "@dbx-tools/core";
11
11
  import { json, log } from "@dbx-tools/shared-core";
12
12
  import { childEnv, resolveBunArgv, runBun } from "./bun.js";
13
13
  import { rootLabel } from "./root.js";
@@ -135,7 +135,6 @@ export function seedToolchain(root, projenSpecifier = defaultProjenSpecifier())
135
135
  runBun(["init", "-y"], root);
136
136
  normalizeSeedManifest(manifestPath);
137
137
  }
138
- seedRegistry(root);
139
138
  const kernelArch = exec.spawnSync("uname", ["-m"], {
140
139
  stdin: "ignore",
141
140
  stdout: "capture",
@@ -151,30 +150,6 @@ export function seedToolchain(root, projenSpecifier = defaultProjenSpecifier())
151
150
  });
152
151
  runBun(["add", "-D", "projen", "typescript@^5.9.3", "@types/bun", projenSpecifier], root);
153
152
  }
154
- /**
155
- * Pin a non-default registry into the new root's `.npmrc`.
156
- *
157
- * The CLI already forces `--registry` onto the bun invocations it makes itself,
158
- * but a bootstrapped workspace outlives this process: every later `bun install`
159
- * the developer (or projen's post-synth step) runs is on its own. bun ignores
160
- * `npm_config_registry` from the environment, so without a file on disk those
161
- * runs revert to `https://registry.npmjs.org/` - which is a hard failure where
162
- * the custom registry was the only reachable one.
163
- *
164
- * Only writes for an actual override, never creates a file just to name npmjs,
165
- * and never overwrites an existing `.npmrc` (the developer's own wins).
166
- */
167
- function seedRegistry(root) {
168
- const registry = projectUtils
169
- .npmRegistry(null, { overrideOnly: true, envVars: true })
170
- ?.toString();
171
- if (!registry)
172
- return;
173
- const npmrc = join(root, ".npmrc");
174
- if (existsSync(npmrc))
175
- return;
176
- writeFileSync(npmrc, `registry=${registry}\n`);
177
- }
178
153
  /**
179
154
  * Make what `bun init` produced safe to synth against: force `type: "module"`
180
155
  * (bun runs `.projenrc.ts` fine either way, but projen's ESM sources and the
@@ -204,12 +179,12 @@ function normalizeSeedManifest(manifestPath) {
204
179
  */
205
180
  export function runInitialSynth(root) {
206
181
  const [command, ...prefix] = resolveBunArgv();
207
- // bun runs the `.ts` directly. The registry reaches anything nested through
208
- // `childEnv` and the seeded `.npmrc`.
182
+ // bun runs the `.ts` directly. Registry environment aliases reach nested
183
+ // commands through `childEnv` without writing project-level npm configuration.
209
184
  exec.spawnSync(command, [...prefix, ".projenrc.ts"], {
210
185
  cwd: root,
211
186
  env: childEnv({ PROJEN_DISABLE_POST: "true" }),
212
187
  check: true,
213
188
  });
214
189
  }
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7QUFFakQsaUZBQWlGO0FBQ2pGLE1BQU0sV0FBVyxHQUFHLGdCQUFnQixDQUFDO0FBRXJDLHNGQUFzRjtBQUN0RixNQUFNLHlCQUF5QixHQUFHLDBCQUEwQixDQUFDO0FBRTdEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsc0JBQXNCO0lBQzdCLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBQzdCLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDO0FBQy9FLENBQUM7QUFFRCxvRkFBb0Y7QUFDcEYsU0FBUyxVQUFVO0lBQ2pCLElBQUksQ0FBQztRQUNILDRFQUE0RTtRQUM1RSx3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QUN6QixhQUFhLENBQUMsWUFBWSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsZ0ZBQWdGO0lBQ2xGLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVk7SUFDMUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQzlDLDRFQUE0RTtJQUM1RSxzQ0FBc0M7SUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtRQUNuRCxHQUFHLEVBQUUsSUFBSTtRQUNULEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM5QyxLQUFLLEVBQUUsSUFBSTtLQUNaLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEJvb3RzdHJhcCBhIGJyYW5kLW5ldyBmb2xkZXIgaW50byBhIHdvcmtpbmcgZGJ4LXRvb2xzIHdvcmtzcGFjZSBiZWZvcmUgcHJvamVuIHJ1bnMuXG4gKlxuICogQG1vZHVsZVxuICovXG5pbXBvcnQgeyBleGlzdHNTeW5jLCByZWFkRmlsZVN5bmMsIHdyaXRlRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGludHJvLCBvdXRybyB9IGZyb20gXCJAY2xhY2svcHJvbXB0c1wiO1xuaW1wb3J0IHsgZXhlYywgcHJvamVjdFV0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvY29yZVwiO1xuaW1wb3J0IHsganNvbiwgbG9nIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IGNoaWxkRW52LCByZXNvbHZlQnVuQXJndiwgcnVuQnVuIH0gZnJvbSBcIi4vYnVuLnRzXCI7XG5pbXBvcnQgeyByb290TGFiZWwgfSBmcm9tIFwiLi9yb290LnRzXCI7XG5cbmNvbnN0IGxvZ2dlciA9IGxvZy5sb2dnZXIoXCJkYngtdG9vbHM6Ym9vdHN0cmFwXCIpO1xuXG4vKiogUHVibGlzaGVkIHBhY2thZ2UgbmFtZSB1c2VkIGZvciBOb2RlJ3Mgc2VsZi1yZWZlcmVuY2UgbWFuaWZlc3QgcmVzb2x1dGlvbi4gKi9cbmNvbnN0IENMSV9QQUNLQUdFID0gXCJAZGJ4LXRvb2xzL2NsaVwiO1xuXG4vKiogRmFsbGJhY2sgd2hlbiB0aGlzIENMSSdzIG93biB2ZXJzaW9uIGlzbid0IGEgcmVhbCByZWxlYXNlIChhbiBpbi1yZXBvIGAwLjAuMGApLiAqL1xuY29uc3QgRkFMTEJBQ0tfUFJPSkVOX1NQRUNJRklFUiA9IFwiQGRieC10b29scy9wcm9qZW5AbGF0ZXN0XCI7XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgZW5naW5lIGF0IFRISVMgQ0xJJ3Mgb3duIHZlcnNpb24uIFRoZSB0d28gYXJlIHJlbGVhc2VkIHRvZ2V0aGVyIGJ5XG4gKiB0aGUgcm9vdCBgYnVtcGAsIHNvIHRoZSBtYXRjaGluZyBlbmdpbmUgYWx3YXlzIGV4aXN0cyBvbiB0aGUgcmVnaXN0cnkuXG4gKlxuICogTm90IGBAbGF0ZXN0YCwgYW5kIG5vdCBhIGJhcmUgYEBkYngtdG9vbHMvcHJvamVuYC4gQSBiYXJlIHNwZWNpZmllciBjYW4gbGFuZCBvblxuICogYSBzdHJheSBgMC4wLjBgLCB3aG9zZSBgXjAuMC4wYCBjYXJldCB0aGVuIHJlYWNoZXMgbm8gcmVhbCByZWxlYXNlLiBBbiBleHBsaWNpdFxuICogcmFuZ2UgcGlubmVkIHRvIHRoaXMgQ0xJJ3Mgb3duIHZlcnNpb24gYWRtaXRzIG9ubHkgdGhlIG1hdGNoaW5nIGVuZ2luZSwgc28gdGhlXG4gKiBDTEkgYW5kIHRoZSBlbmdpbmUgaXQgZHJpdmVzIG5ldmVyIGRyaWZ0IGFjcm9zcyBhIHJlbGVhc2UgKHRoZXkgYXJlIGN1dFxuICogdG9nZXRoZXIgYnkgdGhlIHJvb3QgYGJ1bXBgKS5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFByb2plblNwZWNpZmllcigpOiBzdHJpbmcge1xuICBjb25zdCB2ZXJzaW9uID0gb3duVmVyc2lvbigpO1xuICByZXR1cm4gdmVyc2lvbiA/IGBAZGJ4LXRvb2xzL3Byb2plbkBeJHt2ZXJzaW9ufWAgOiBGQUxMQkFDS19QUk9KRU5fU1BFQ0lGSUVSO1xufVxuXG4vKiogVGhpcyBDTEkncyBvd24gcmVsZWFzZWQgdmVyc2lvbiwgb3IgYHVuZGVmaW5lZGAgZm9yIGFuIGluLXJlcG8gYDAuMC4wYCBidWlsZC4gKi9cbmZ1bmN0aW9uIG93blZlcnNpb24oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICAvLyBSZXNvbHZlIHRocm91Z2ggdGhlIHBhY2thZ2UncyBleHBvcnRlZCBgLi9wYWNrYWdlLmpzb25gLCB3aGljaCB3b3JrcyBmcm9tXG4gICAgLy8gYm90aCBzb3VyY2UgKGBzcmMvYm9vdHN0cmFwLnRzYCkgYW5kIHB1Ymxpc2hlZCBvdXRwdXRcbiAgICAvLyAoYGxpYi9zcmMvYm9vdHN0cmFwLmpzYCkuIEEgcmVsYXRpdmUgVVJMIGlzIG9uZSBsZXZlbCBmcm9tIHRoZSBtYW5pZmVzdFxuICAgIC8vIGluIHNvdXJjZSBidXQgdHdvIGxldmVscyBhd2F5IGFmdGVyIGNvbXBpbGF0aW9uIGFuZCBzaWxlbnRseSBmZWxsIGJhY2sgdG9cbiAgICAvLyBgQGxhdGVzdGAgaW4gZXZlcnkgaW5zdGFsbGVkIENMSS5cbiAgICBjb25zdCBtYW5pZmVzdFBhdGggPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCkucmVzb2x2ZShgJHtDTElfUEFDS0FHRX0vcGFja2FnZS5qc29uYCk7XG4gICAgY29uc3QgdmVyc2lvbiA9IGpzb24ucGFyc2VSZWNvcmQocmVhZEZpbGVTeW5jKG1hbmlmZXN0UGF0aCwgXCJ1dGY4XCIpKT8udmVyc2lvbjtcbiAgICByZXR1cm4gdHlwZW9mIHZlcnNpb24gPT09IFwic3RyaW5nXCIgJiYgdmVyc2lvbiAhPT0gXCIwLjAuMFwiID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKiogQ29tcGFyZSBgeC55LnpgIHRyaXBsZXM7IHJldHVybnMgPDAsIDAsIG9yID4wLiBNaXNzaW5nIHBhcnRzIGNvdW50IGFzIDAuICovXG5mdW5jdGlvbiBjb21wYXJlVmVyc2lvbnMoYTogc3RyaW5nLCBiOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBwYXJ0cyA9ICh2OiBzdHJpbmcpID0+IHYuc3BsaXQoXCIuXCIpLm1hcCgocCkgPT4gTnVtYmVyLnBhcnNlSW50KHAsIDEwKSB8fCAwKTtcbiAgY29uc3QgW3gsIHldID0gW3BhcnRzKGEpLCBwYXJ0cyhiKV07XG4gIHJldHVybiB4WzBdIC0geVswXSB8fCB4WzFdIC0geVsxXSB8fCB4WzJdIC0geVsyXTtcbn1cblxuLyoqIFZlcnNpb24gb2YgdGhlIGVuZ2luZSBjdXJyZW50bHkgaW5zdGFsbGVkIGF0IGByb290YCwgaWYgYW55LiAqL1xuZnVuY3Rpb24gaW5zdGFsbGVkRW5naW5lVmVyc2lvbihyb290OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0gam9pbihyb290LCBcIm5vZGVfbW9kdWxlc1wiLCBcIkBkYngtdG9vbHNcIiwgXCJwcm9qZW5cIiwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgY29uc3QgdmVyc2lvbiA9IGpzb24ucGFyc2VSZWNvcmQocmVhZEZpbGVTeW5jKG1hbmlmZXN0LCBcInV0ZjhcIikpPy52ZXJzaW9uO1xuICAgIHJldHVybiB0eXBlb2YgdmVyc2lvbiA9PT0gXCJzdHJpbmdcIiA/IHZlcnNpb24gOiB1bmRlZmluZWQ7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBVcGdyYWRlIGFuIGVzdGFibGlzaGVkIHdvcmtzcGFjZSB3aG9zZSBpbnN0YWxsZWQgZW5naW5lIHByZWRhdGVzIHRoaXMgQ0xJLlxuICpcbiAqIEJvb3RzdHJhcHBpbmcgcGlucyB0aGUgZW5naW5lIG9uY2UsIHNvIHdpdGhvdXQgdGhpcyBhIHdvcmtzcGFjZSBjcmVhdGVkIG1vbnRocyBhZ29cbiAqIHdvdWxkIGtlZXAgcmVzb2x2aW5nIGl0cyBvcmlnaW5hbCBlbmdpbmUgbm8gbWF0dGVyIGhvdyBjdXJyZW50IHRoZSBDTEkgaW52b2tpbmcgaXRcbiAqIGlzLCBhbmQgd291bGQgZmFpbCBpbnNpZGUgVEhBVCBlbmdpbmUncyBjb2RlIChgc3luYyAtLXdhdGNoYCBkeWluZyBvbiBhXG4gKiBgY29uY3VycmVudGx5YCBpdCBuZXZlciBkZWNsYXJlZCkuIFRoZSB0d28gYXJlIHJlbGVhc2VkIGluIGxvY2tzdGVwLCBzbyB0aGlzIENMSSdzXG4gKiB2ZXJzaW9uIGlzIGV4YWN0bHkgdGhlIGVuZ2luZSBpdCBleHBlY3RzLlxuICpcbiAqIE9ubHkgZXZlciBtb3ZlcyBGT1JXQVJEOiBhbiBlbmdpbmUgYXQgb3IgYWhlYWQgb2YgdGhpcyBDTEkgaXMgbGVmdCBhbG9uZSwgc29cbiAqIGFuIG9sZGVyIENMSSBjYW5ub3QgZG93bmdyYWRlIGEgd29ya3NwYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlRW5naW5lQ3VycmVudChyb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgZXhwZWN0ZWQgPSBvd25WZXJzaW9uKCk7XG4gIGlmICghZXhwZWN0ZWQpIHJldHVybjtcbiAgY29uc3QgaW5zdGFsbGVkID0gaW5zdGFsbGVkRW5naW5lVmVyc2lvbihyb290KTtcbiAgaWYgKGluc3RhbGxlZCAmJiBjb21wYXJlVmVyc2lvbnMoaW5zdGFsbGVkLCBleHBlY3RlZCkgPj0gMCkgcmV0dXJuO1xuICBydW5CdW4oW1wiYWRkXCIsIFwiLURcIiwgZGVmYXVsdFByb2plblNwZWNpZmllcigpXSwgcm9vdCk7XG59XG5cbi8vIFJlYWNoIHRoZSBjbGFzcyB0aHJvdWdoIGl0cyBtb2R1bGUgTkFNRVNQQUNFLiBDdXJyZW50IGVuZ2luZXMgYWxzbyBob2lzdCBpdFxuLy8gZmxhdCwgYnV0IGV2ZXJ5IGVuZ2luZSBldmVyIHB1Ymxpc2hlZCBleHBvcnRzIHRoZSBuYW1lc3BhY2UsIGFuZCB0aGlzIHRlbXBsYXRlXG4vLyBpcyByZXNvbHZlZCBhZ2FpbnN0IGBAbGF0ZXN0YCAtIGEgZmxhdCBpbXBvcnQgZGllcyBvbiBhbiBvbGRlciBvbmUgd2l0aFxuLy8gXCJkb2VzIG5vdCBwcm92aWRlIGFuIGV4cG9ydCBuYW1lZCAnREJYVG9vbHNOb2RlUHJvamVjdCdcIi5cbmNvbnN0IFBST0pFTlJDX1RFTVBMQVRFID0gYGltcG9ydCB7IHByb2plY3QgfSBmcm9tIFwiQGRieC10b29scy9wcm9qZW5cIjtcblxuY29uc3Qgcm9vdFByb2plY3QgPSBuZXcgcHJvamVjdC5EQlhUb29sc05vZGVQcm9qZWN0KCk7XG5yb290UHJvamVjdC5zeW50aCgpO1xuYDtcblxuLyoqXG4gKiBUdXJuIGEgZm9sZGVyIGludG8gYSBmdW5jdGlvbmluZyBkYngtdG9vbHMgd29ya3NwYWNlOiBgYnVuIGluaXRgLCBzZWVkIHRoZVxuICogYHBhY2thZ2UuanNvbmAgd29ya3NwYWNlIGZpZWxkcyAoYnVuIHJlYWRzIGB3b3Jrc3BhY2VzYC9gdHJ1c3RlZERlcGVuZGVuY2llc2BcbiAqIGZyb20gdGhlIG1hbmlmZXN0KSwgYWRkIGBwcm9qZW5gL2B0eXBlc2NyaXB0YCArIHRoZSBlbmdpbmUgcGFja2FnZSwgd3JpdGUgYVxuICogbWluaW1hbCBgLnByb2plbnJjLnRzYCwgc3ludGggb25jZSAod2l0aCBgUFJPSkVOX0RJU0FCTEVfUE9TVGApLCB0aGVuIGluc3RhbGwuXG4gKiBEb2VzIG5vdCBydW4gYmFycmVscyAtIHJ1biBgYnVuIHJ1biBiYXJyZWxzYCBvciBhIGZ1bGwgcHJvamVuIHN5bnRoIHBvc3QtaW5zdGFsbFxuICogdG8gZ2VuZXJhdGUgcGFja2FnZSBiYXJyZWxzLlxuICpcbiAqIEV2ZXJ5IHN0ZXAgaXMgaWRlbXBvdGVudCBhbmQgc2VsZi1ndWFyZGVkLCBzbyB0aGlzIGlzIHNhZmUgdG8gcnVuIGFnYWluc3QgYVxuICogZm9sZGVyIHRoYXQgQUxSRUFEWSBoYXMgYSBoYW5kLWF1dGhvcmVkIGAucHJvamVucmMudHNgIChhbmQgZXZlbiBhIGNvbW1pdHRlZFxuICogYHBhY2thZ2UuanNvbmApIGJ1dCBpcyBtaXNzaW5nIHRoZSBpbnN0YWxsZWQgdG9vbGNoYWluIC0gZS5nLiBhIGZyZXNobHkgY29waWVkXG4gKiBwcm9qZWN0IHdob3NlIGdlbmVyYXRlZCBmaWxlcyAoaW5jbHVkaW5nIG1hbmlmZXN0cykgYXJlIGdpdGlnbm9yZWQuIEluIHRoYXRcbiAqIGNhc2UgYGJ1biBpbml0YCBhbmQgdGhlIGAucHJvamVucmMudHNgIHNjYWZmb2xkIGFyZSBza2lwcGVkLCBidXQgdGhlIGVuZ2luZSArXG4gKiBwcm9qZW4gYXJlIChyZSlpbnN0YWxsZWQgc28gdGhlIHN1YnNlcXVlbnQgc3ludGggY2FuIHJlZ2VuZXJhdGUgZXZlcnl0aGluZy5cbiAqIFNlZSB7QGxpbmsgc2VlZFRvb2xjaGFpbn0uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBib290c3RyYXBXb3Jrc3BhY2UoXG4gIHJvb3Q6IHN0cmluZyxcbiAgcHJvamVuU3BlY2lmaWVyOiBzdHJpbmcgPSBkZWZhdWx0UHJvamVuU3BlY2lmaWVyKCksXG4pOiB2b2lkIHtcbiAgaW50cm8oYEJvb3RzdHJhcHBpbmcgZGJ4LXRvb2xzIHdvcmtzcGFjZSBpbiAke3Jvb3RMYWJlbChyb290KX1gKTtcblxuICBzZWVkVG9vbGNoYWluKHJvb3QsIHByb2plblNwZWNpZmllcik7XG5cbiAgY29uc3QgcHJvamVucmMgPSBqb2luKHJvb3QsIFwiLnByb2plbnJjLnRzXCIpO1xuICBpZiAoIWV4aXN0c1N5bmMocHJvamVucmMpKSB7XG4gICAgd3JpdGVGaWxlU3luYyhwcm9qZW5yYywgUFJPSkVOUkNfVEVNUExBVEUpO1xuICB9XG5cbiAgcnVuSW5pdGlhbFN5bnRoKHJvb3QpO1xuXG4gIHJ1bkJ1bihbXCJpbnN0YWxsXCJdLCByb290KTtcbiAgb3V0cm8oXCJXb3Jrc3BhY2UgcmVhZHkgLSByZS1ydW4gZGJ4LXRvb2xzIG9yIGFkZCBwYWNrYWdlcyB1bmRlciBwYWNrYWdlcy9cIik7XG59XG5cbi8qKlxuICogSW5zdGFsbCB0aGUgdG9vbGNoYWluIGEgc3ludGggbmVlZHMgKGBwcm9qZW5gLCBgdHlwZXNjcmlwdGAsIGFuZCB0aGUgZGJ4LXRvb2xzXG4gKiBlbmdpbmUpLCBzZWVkaW5nIGEgYHBhY2thZ2UuanNvbmAgZmlyc3Qgd2hlbiBhYnNlbnQuIGJ1biByZWFkcyBpdHMgd29ya3NwYWNlXG4gKiBjb25maWcgKGB3b3Jrc3BhY2VzYC9gdHJ1c3RlZERlcGVuZGVuY2llc2ApIGZyb20gdGhlIG1hbmlmZXN0LCBzbyB0aGVyZSBpcyBub1xuICogc2VwYXJhdGUgd29ya3NwYWNlIGZpbGUgdG8gc2VlZCAtIHRoZSBlbmdpbmUgd3JpdGVzIGBwbnBtLXdvcmtzcGFjZS55YW1sYCBhdFxuICogc3ludGggZm9yIHRoZSBEYXRhYnJpY2tzIEFwcHMgcGxhdGZvcm0uIElkZW1wb3RlbnQ6IHJ1biBpdCB3aGVuZXZlciB0aGUgZW5naW5lXG4gKiBpcyBtaXNzaW5nLCBzbyBhIGNvcGllZCBwcm9qZWN0IHdpdGggYSBgLnByb2plbnJjLnRzYCBidXQgbm9cbiAqIGBub2RlX21vZHVsZXNgL21hbmlmZXN0IGNhbiBiZSBicm91Z2h0IHVwIHRvIGEgc3ludGgtcmVhZHkgc3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWVkVG9vbGNoYWluKFxuICByb290OiBzdHJpbmcsXG4gIHByb2plblNwZWNpZmllcjogc3RyaW5nID0gZGVmYXVsdFByb2plblNwZWNpZmllcigpLFxuKTogdm9pZCB7XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IGpvaW4ocm9vdCwgXCJwYWNrYWdlLmpzb25cIik7XG4gIGlmICghZXhpc3RzU3luYyhtYW5pZmVzdFBhdGgpKSB7XG4gICAgcnVuQnVuKFtcImluaXRcIiwgXCIteVwiXSwgcm9vdCk7XG4gICAgbm9ybWFsaXplU2VlZE1hbmlmZXN0KG1hbmlmZXN0UGF0aCk7XG4gIH1cblxuICBzZWVkUmVnaXN0cnkocm9vdCk7XG5cbiAgY29uc3Qga2VybmVsQXJjaCA9IGV4ZWMuc3Bhd25TeW5jKFwidW5hbWVcIiwgW1wiLW1cIl0sIHtcbiAgICBzdGRpbjogXCJpZ25vcmVcIixcbiAgICBzdGRvdXQ6IFwiY2FwdHVyZVwiLFxuICAgIHN0ZGVycjogXCJpZ25vcmVcIixcbiAgfSkuc3Rkb3V0O1xuICBsb2dnZXIuaW5mbyhcInNlZWRpbmcgdG9vbGNoYWluXCIsIHtcbiAgICBub2RlOiBwcm9jZXNzLnZlcnNpb24sXG4gICAgYnVuOiBwcm9jZXNzLnZlcnNpb25zLmJ1bixcbiAgICBwbGF0Zm9ybTogcHJvY2Vzcy5wbGF0Zm9ybSxcbiAgICBhcmNoOiBwcm9jZXNzLmFyY2gsXG4gICAga2VybmVsQXJjaDoga2VybmVsQXJjaCB8fCBcInVua25vd25cIixcbiAgICBlbmdpbmU6IHByb2plblNwZWNpZmllcixcbiAgfSk7XG4gIHJ1bkJ1bihbXCJhZGRcIiwgXCItRFwiLCBcInByb2plblwiLCBcInR5cGVzY3JpcHRAXjUuOS4zXCIsIFwiQHR5cGVzL2J1blwiLCBwcm9qZW5TcGVjaWZpZXJdLCByb290KTtcbn1cblxuLyoqXG4gKiBQaW4gYSBub24tZGVmYXVsdCByZWdpc3RyeSBpbnRvIHRoZSBuZXcgcm9vdCdzIGAubnBtcmNgLlxuICpcbiAqIFRoZSBDTEkgYWxyZWFkeSBmb3JjZXMgYC0tcmVnaXN0cnlgIG9udG8gdGhlIGJ1biBpbnZvY2F0aW9ucyBpdCBtYWtlcyBpdHNlbGYsXG4gKiBidXQgYSBib290c3RyYXBwZWQgd29ya3NwYWNlIG91dGxpdmVzIHRoaXMgcHJvY2VzczogZXZlcnkgbGF0ZXIgYGJ1biBpbnN0YWxsYFxuICogdGhlIGRldmVsb3BlciAob3IgcHJvamVuJ3MgcG9zdC1zeW50aCBzdGVwKSBydW5zIGlzIG9uIGl0cyBvd24uIGJ1biBpZ25vcmVzXG4gKiBgbnBtX2NvbmZpZ19yZWdpc3RyeWAgZnJvbSB0aGUgZW52aXJvbm1lbnQsIHNvIHdpdGhvdXQgYSBmaWxlIG9uIGRpc2sgdGhvc2VcbiAqIHJ1bnMgcmV2ZXJ0IHRvIGBodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9gIC0gd2hpY2ggaXMgYSBoYXJkIGZhaWx1cmUgd2hlcmVcbiAqIHRoZSBjdXN0b20gcmVnaXN0cnkgd2FzIHRoZSBvbmx5IHJlYWNoYWJsZSBvbmUuXG4gKlxuICogT25seSB3cml0ZXMgZm9yIGFuIGFjdHVhbCBvdmVycmlkZSwgbmV2ZXIgY3JlYXRlcyBhIGZpbGUganVzdCB0byBuYW1lIG5wbWpzLFxuICogYW5kIG5ldmVyIG92ZXJ3cml0ZXMgYW4gZXhpc3RpbmcgYC5ucG1yY2AgKHRoZSBkZXZlbG9wZXIncyBvd24gd2lucykuXG4gKi9cbmZ1bmN0aW9uIHNlZWRSZWdpc3RyeShyb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3QgcmVnaXN0cnkgPSBwcm9qZWN0VXRpbHNcbiAgICAubnBtUmVnaXN0cnkobnVsbCwgeyBvdmVycmlkZU9ubHk6IHRydWUsIGVudlZhcnM6IHRydWUgfSlcbiAgICA/LnRvU3RyaW5nKCk7XG4gIGlmICghcmVnaXN0cnkpIHJldHVybjtcbiAgY29uc3QgbnBtcmMgPSBqb2luKHJvb3QsIFwiLm5wbXJjXCIpO1xuICBpZiAoZXhpc3RzU3luYyhucG1yYykpIHJldHVybjtcbiAgd3JpdGVGaWxlU3luYyhucG1yYywgYHJlZ2lzdHJ5PSR7cmVnaXN0cnl9XFxuYCk7XG59XG5cbi8qKlxuICogTWFrZSB3aGF0IGBidW4gaW5pdGAgcHJvZHVjZWQgc2FmZSB0byBzeW50aCBhZ2FpbnN0OiBmb3JjZSBgdHlwZTogXCJtb2R1bGVcImBcbiAqIChidW4gcnVucyBgLnByb2plbnJjLnRzYCBmaW5lIGVpdGhlciB3YXksIGJ1dCBwcm9qZW4ncyBFU00gc291cmNlcyBhbmQgdGhlXG4gKiBlbWl0dGVkIGNvbmZpZyBhc3N1bWUgbW9kdWxlIHR5cGUpIGFuZCBkcm9wIGFueSBgcGFja2FnZU1hbmFnZXJgL2BkZXZFbmdpbmVzYFxuICogZmllbGQgdGhhdCB3b3VsZCBwaW4gYSBkaWZmZXJlbnQgbWFuYWdlci4gcHJvamVuIHJlZ2VuZXJhdGVzIHRoZSB3aG9sZSBtYW5pZmVzdFxuICogYXQgc3ludGgsIHNvIHRoaXMgb25seSBoYXMgdG8gaG9sZCB0aGUgc2VlZCB0b2dldGhlciBsb25nIGVub3VnaCB0byBnZXQgdGhlcmUuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNlZWRNYW5pZmVzdChtYW5pZmVzdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0ganNvbi5wYXJzZVJlY29yZChyZWFkRmlsZVN5bmMobWFuaWZlc3RQYXRoLCBcInV0ZjhcIikpO1xuICAgIGlmICghbWFuaWZlc3QpIHJldHVybjtcbiAgICBkZWxldGUgbWFuaWZlc3QuZGV2RW5naW5lcztcbiAgICBkZWxldGUgbWFuaWZlc3QucGFja2FnZU1hbmFnZXI7XG4gICAgbWFuaWZlc3QudHlwZSA9IFwibW9kdWxlXCI7XG4gICAgd3JpdGVGaWxlU3luYyhtYW5pZmVzdFBhdGgsIGAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKX1cXG5gKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQSBtYWxmb3JtZWQvYWJzZW50IG1hbmlmZXN0IGhlcmUganVzdCBtZWFucyB0aGUgbGF0ZXIgYGJ1biBhZGRgIHJlY3JlYXRlcyBpdC5cbiAgfVxufVxuXG4vKipcbiAqIFJ1biB0aGUgaW5pdGlhbCBzeW50aCBieSBleGVjdXRpbmcgYC5wcm9qZW5yYy50c2AgZGlyZWN0bHkgd2l0aCBidW4gKHdpdGhcbiAqIGBQUk9KRU5fRElTQUJMRV9QT1NUYCBzZXQpLCBOT1QgYHByb2plbiA8dGFzaz5gLiBVc2UgcmlnaHQgYWZ0ZXIgc2VlZGluZyBhXG4gKiBmcmVzaCB3b3Jrc3BhY2U6IHRoZSBwcm9qZW4gVEFTS1MgKGBzeW5jYCwgYGJhcnJlbHNgLCAuLi4pIG9ubHkgZXhpc3Qgb25jZVxuICogYC5wcm9qZW5yYy50c2AgaGFzIHJ1biBvbmNlLCBzbyBgcHJvamVuIHN5bmNgIGNhbid0IGJlIHRoZSBib290c3RyYXBwaW5nIHN0ZXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Jbml0aWFsU3ludGgocm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IFtjb21tYW5kLCAuLi5wcmVmaXhdID0gcmVzb2x2ZUJ1bkFyZ3YoKTtcbiAgLy8gYnVuIHJ1bnMgdGhlIGAudHNgIGRpcmVjdGx5LiBUaGUgcmVnaXN0cnkgcmVhY2hlcyBhbnl0aGluZyBuZXN0ZWQgdGhyb3VnaFxuICAvLyBgY2hpbGRFbnZgIGFuZCB0aGUgc2VlZGVkIGAubnBtcmNgLlxuICBleGVjLnNwYXduU3luYyhjb21tYW5kLCBbLi4ucHJlZml4LCBcIi5wcm9qZW5yYy50c1wiXSwge1xuICAgIGN3ZDogcm9vdCxcbiAgICBlbnY6IGNoaWxkRW52KHsgUFJPSkVOX0RJU0FCTEVfUE9TVDogXCJ0cnVlXCIgfSksXG4gICAgY2hlY2s6IHRydWUsXG4gIH0pO1xufVxuIl19
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jvb3RzdHJhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUVqRCxpRkFBaUY7QUFDakYsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUM7QUFFckMsc0ZBQXNGO0FBQ3RGLE1BQU0seUJBQXlCLEdBQUcsMEJBQTBCLENBQUM7QUFFN0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBUyxzQkFBc0I7SUFDN0IsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7SUFDN0IsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUM7QUFDL0UsQ0FBQztBQUVELG9GQUFvRjtBQUNwRixTQUFTLFVBQVU7SUFDakIsSUFBSSxDQUFDO1FBQ0gsNEVBQTRFO1FBQzVFLHdEQUF3RDtRQUN4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QUUsbUJBQW1CLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDOUMsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCb290c3RyYXAgYSBicmFuZC1uZXcgZm9sZGVyIGludG8gYSB3b3JraW5nIGRieC10b29scyB3b3Jrc3BhY2UgYmVmb3JlIHByb2plbiBydW5zLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBpbnRybywgb3V0cm8gfSBmcm9tIFwiQGNsYWNrL3Byb21wdHNcIjtcbmltcG9ydCB7IGV4ZWMgfSBmcm9tIFwiQGRieC10b29scy9jb3JlXCI7XG5pbXBvcnQgeyBqc29uLCBsb2cgfSBmcm9tIFwiQGRieC10b29scy9zaGFyZWQtY29yZVwiO1xuaW1wb3J0IHsgY2hpbGRFbnYsIHJlc29sdmVCdW5Bcmd2LCBydW5CdW4gfSBmcm9tIFwiLi9idW4udHNcIjtcbmltcG9ydCB7IHJvb3RMYWJlbCB9IGZyb20gXCIuL3Jvb3QudHNcIjtcblxuY29uc3QgbG9nZ2VyID0gbG9nLmxvZ2dlcihcImRieC10b29sczpib290c3RyYXBcIik7XG5cbi8qKiBQdWJsaXNoZWQgcGFja2FnZSBuYW1lIHVzZWQgZm9yIE5vZGUncyBzZWxmLXJlZmVyZW5jZSBtYW5pZmVzdCByZXNvbHV0aW9uLiAqL1xuY29uc3QgQ0xJX1BBQ0tBR0UgPSBcIkBkYngtdG9vbHMvY2xpXCI7XG5cbi8qKiBGYWxsYmFjayB3aGVuIHRoaXMgQ0xJJ3Mgb3duIHZlcnNpb24gaXNuJ3QgYSByZWFsIHJlbGVhc2UgKGFuIGluLXJlcG8gYDAuMC4wYCkuICovXG5jb25zdCBGQUxMQkFDS19QUk9KRU5fU1BFQ0lGSUVSID0gXCJAZGJ4LXRvb2xzL3Byb2plbkBsYXRlc3RcIjtcblxuLyoqXG4gKiBJbnN0YWxsIHRoZSBlbmdpbmUgYXQgVEhJUyBDTEkncyBvd24gdmVyc2lvbi4gVGhlIHR3byBhcmUgcmVsZWFzZWQgdG9nZXRoZXIgYnlcbiAqIHRoZSByb290IGBidW1wYCwgc28gdGhlIG1hdGNoaW5nIGVuZ2luZSBhbHdheXMgZXhpc3RzIG9uIHRoZSByZWdpc3RyeS5cbiAqXG4gKiBOb3QgYEBsYXRlc3RgLCBhbmQgbm90IGEgYmFyZSBgQGRieC10b29scy9wcm9qZW5gLiBBIGJhcmUgc3BlY2lmaWVyIGNhbiBsYW5kIG9uXG4gKiBhIHN0cmF5IGAwLjAuMGAsIHdob3NlIGBeMC4wLjBgIGNhcmV0IHRoZW4gcmVhY2hlcyBubyByZWFsIHJlbGVhc2UuIEFuIGV4cGxpY2l0XG4gKiByYW5nZSBwaW5uZWQgdG8gdGhpcyBDTEkncyBvd24gdmVyc2lvbiBhZG1pdHMgb25seSB0aGUgbWF0Y2hpbmcgZW5naW5lLCBzbyB0aGVcbiAqIENMSSBhbmQgdGhlIGVuZ2luZSBpdCBkcml2ZXMgbmV2ZXIgZHJpZnQgYWNyb3NzIGEgcmVsZWFzZSAodGhleSBhcmUgY3V0XG4gKiB0b2dldGhlciBieSB0aGUgcm9vdCBgYnVtcGApLlxuICovXG5mdW5jdGlvbiBkZWZhdWx0UHJvamVuU3BlY2lmaWVyKCk6IHN0cmluZyB7XG4gIGNvbnN0IHZlcnNpb24gPSBvd25WZXJzaW9uKCk7XG4gIHJldHVybiB2ZXJzaW9uID8gYEBkYngtdG9vbHMvcHJvamVuQF4ke3ZlcnNpb259YCA6IEZBTExCQUNLX1BST0pFTl9TUEVDSUZJRVI7XG59XG5cbi8qKiBUaGlzIENMSSdzIG93biByZWxlYXNlZCB2ZXJzaW9uLCBvciBgdW5kZWZpbmVkYCBmb3IgYW4gaW4tcmVwbyBgMC4wLjBgIGJ1aWxkLiAqL1xuZnVuY3Rpb24gb3duVmVyc2lvbigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIC8vIFJlc29sdmUgdGhyb3VnaCB0aGUgcGFja2FnZSdzIGV4cG9ydGVkIGAuL3BhY2thZ2UuanNvbmAsIHdoaWNoIHdvcmtzIGZyb21cbiAgICAvLyBib3RoIHNvdXJjZSAoYHNyYy9ib290c3RyYXAudHNgKSBhbmQgcHVibGlzaGVkIG91dHB1dFxuICAgIC8vIChgbGliL3NyYy9ib290c3RyYXAuanNgKS4gQSByZWxhdGl2ZSBVUkwgaXMgb25lIGxldmVsIGZyb20gdGhlIG1hbmlmZXN0XG4gICAgLy8gaW4gc291cmNlIGJ1dCB0d28gbGV2ZWxzIGF3YXkgYWZ0ZXIgY29tcGlsYXRpb24gYW5kIHNpbGVudGx5IGZlbGwgYmFjayB0b1xuICAgIC8vIGBAbGF0ZXN0YCBpbiBldmVyeSBpbnN0YWxsZWQgQ0xJLlxuICAgIGNvbnN0IG1hbmlmZXN0UGF0aCA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKS5yZXNvbHZlKGAke0NMSV9QQUNLQUdFfS9wYWNrYWdlLmpzb25gKTtcbiAgICBjb25zdCB2ZXJzaW9uID0ganNvbi5wYXJzZVJlY29yZChyZWFkRmlsZVN5bmMobWFuaWZlc3RQYXRoLCBcInV0ZjhcIikpPy52ZXJzaW9uO1xuICAgIHJldHVybiB0eXBlb2YgdmVyc2lvbiA9PT0gXCJzdHJpbmdcIiAmJiB2ZXJzaW9uICE9PSBcIjAuMC4wXCIgPyB2ZXJzaW9uIDogdW5kZWZpbmVkO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKiBDb21wYXJlIGB4LnkuemAgdHJpcGxlczsgcmV0dXJucyA8MCwgMCwgb3IgPjAuIE1pc3NpbmcgcGFydHMgY291bnQgYXMgMC4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVWZXJzaW9ucyhhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gIGNvbnN0IHBhcnRzID0gKHY6IHN0cmluZykgPT4gdi5zcGxpdChcIi5cIikubWFwKChwKSA9PiBOdW1iZXIucGFyc2VJbnQocCwgMTApIHx8IDApO1xuICBjb25zdCBbeCwgeV0gPSBbcGFydHMoYSksIHBhcnRzKGIpXTtcbiAgcmV0dXJuIHhbMF0gLSB5WzBdIHx8IHhbMV0gLSB5WzFdIHx8IHhbMl0gLSB5WzJdO1xufVxuXG4vKiogVmVyc2lvbiBvZiB0aGUgZW5naW5lIGN1cnJlbnRseSBpbnN0YWxsZWQgYXQgYHJvb3RgLCBpZiBhbnkuICovXG5mdW5jdGlvbiBpbnN0YWxsZWRFbmdpbmVWZXJzaW9uKHJvb3Q6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBqb2luKHJvb3QsIFwibm9kZV9tb2R1bGVzXCIsIFwiQGRieC10b29sc1wiLCBcInByb2plblwiLCBcInBhY2thZ2UuanNvblwiKTtcbiAgICBjb25zdCB2ZXJzaW9uID0ganNvbi5wYXJzZVJlY29yZChyZWFkRmlsZVN5bmMobWFuaWZlc3QsIFwidXRmOFwiKSk/LnZlcnNpb247XG4gICAgcmV0dXJuIHR5cGVvZiB2ZXJzaW9uID09PSBcInN0cmluZ1wiID8gdmVyc2lvbiA6IHVuZGVmaW5lZDtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG4vKipcbiAqIFVwZ3JhZGUgYW4gZXN0YWJsaXNoZWQgd29ya3NwYWNlIHdob3NlIGluc3RhbGxlZCBlbmdpbmUgcHJlZGF0ZXMgdGhpcyBDTEkuXG4gKlxuICogQm9vdHN0cmFwcGluZyBwaW5zIHRoZSBlbmdpbmUgb25jZSwgc28gd2l0aG91dCB0aGlzIGEgd29ya3NwYWNlIGNyZWF0ZWQgbW9udGhzIGFnb1xuICogd291bGQga2VlcCByZXNvbHZpbmcgaXRzIG9yaWdpbmFsIGVuZ2luZSBubyBtYXR0ZXIgaG93IGN1cnJlbnQgdGhlIENMSSBpbnZva2luZyBpdFxuICogaXMsIGFuZCB3b3VsZCBmYWlsIGluc2lkZSBUSEFUIGVuZ2luZSdzIGNvZGUgKGBzeW5jIC0td2F0Y2hgIGR5aW5nIG9uIGFcbiAqIGBjb25jdXJyZW50bHlgIGl0IG5ldmVyIGRlY2xhcmVkKS4gVGhlIHR3byBhcmUgcmVsZWFzZWQgaW4gbG9ja3N0ZXAsIHNvIHRoaXMgQ0xJJ3NcbiAqIHZlcnNpb24gaXMgZXhhY3RseSB0aGUgZW5naW5lIGl0IGV4cGVjdHMuXG4gKlxuICogT25seSBldmVyIG1vdmVzIEZPUldBUkQ6IGFuIGVuZ2luZSBhdCBvciBhaGVhZCBvZiB0aGlzIENMSSBpcyBsZWZ0IGFsb25lLCBzb1xuICogYW4gb2xkZXIgQ0xJIGNhbm5vdCBkb3duZ3JhZGUgYSB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVFbmdpbmVDdXJyZW50KHJvb3Q6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBleHBlY3RlZCA9IG93blZlcnNpb24oKTtcbiAgaWYgKCFleHBlY3RlZCkgcmV0dXJuO1xuICBjb25zdCBpbnN0YWxsZWQgPSBpbnN0YWxsZWRFbmdpbmVWZXJzaW9uKHJvb3QpO1xuICBpZiAoaW5zdGFsbGVkICYmIGNvbXBhcmVWZXJzaW9ucyhpbnN0YWxsZWQsIGV4cGVjdGVkKSA+PSAwKSByZXR1cm47XG4gIHJ1bkJ1bihbXCJhZGRcIiwgXCItRFwiLCBkZWZhdWx0UHJvamVuU3BlY2lmaWVyKCldLCByb290KTtcbn1cblxuLy8gUmVhY2ggdGhlIGNsYXNzIHRocm91Z2ggaXRzIG1vZHVsZSBOQU1FU1BBQ0UuIEN1cnJlbnQgZW5naW5lcyBhbHNvIGhvaXN0IGl0XG4vLyBmbGF0LCBidXQgZXZlcnkgZW5naW5lIGV2ZXIgcHVibGlzaGVkIGV4cG9ydHMgdGhlIG5hbWVzcGFjZSwgYW5kIHRoaXMgdGVtcGxhdGVcbi8vIGlzIHJlc29sdmVkIGFnYWluc3QgYEBsYXRlc3RgIC0gYSBmbGF0IGltcG9ydCBkaWVzIG9uIGFuIG9sZGVyIG9uZSB3aXRoXG4vLyBcImRvZXMgbm90IHByb3ZpZGUgYW4gZXhwb3J0IG5hbWVkICdEQlhUb29sc05vZGVQcm9qZWN0J1wiLlxuY29uc3QgUFJPSkVOUkNfVEVNUExBVEUgPSBgaW1wb3J0IHsgcHJvamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3Byb2plblwiO1xuXG5jb25zdCByb290UHJvamVjdCA9IG5ldyBwcm9qZWN0LkRCWFRvb2xzTm9kZVByb2plY3QoKTtcbnJvb3RQcm9qZWN0LnN5bnRoKCk7XG5gO1xuXG4vKipcbiAqIFR1cm4gYSBmb2xkZXIgaW50byBhIGZ1bmN0aW9uaW5nIGRieC10b29scyB3b3Jrc3BhY2U6IGBidW4gaW5pdGAsIHNlZWQgdGhlXG4gKiBgcGFja2FnZS5qc29uYCB3b3Jrc3BhY2UgZmllbGRzIChidW4gcmVhZHMgYHdvcmtzcGFjZXNgL2B0cnVzdGVkRGVwZW5kZW5jaWVzYFxuICogZnJvbSB0aGUgbWFuaWZlc3QpLCBhZGQgYHByb2plbmAvYHR5cGVzY3JpcHRgICsgdGhlIGVuZ2luZSBwYWNrYWdlLCB3cml0ZSBhXG4gKiBtaW5pbWFsIGAucHJvamVucmMudHNgLCBzeW50aCBvbmNlICh3aXRoIGBQUk9KRU5fRElTQUJMRV9QT1NUYCksIHRoZW4gaW5zdGFsbC5cbiAqIERvZXMgbm90IHJ1biBiYXJyZWxzIC0gcnVuIGBidW4gcnVuIGJhcnJlbHNgIG9yIGEgZnVsbCBwcm9qZW4gc3ludGggcG9zdC1pbnN0YWxsXG4gKiB0byBnZW5lcmF0ZSBwYWNrYWdlIGJhcnJlbHMuXG4gKlxuICogRXZlcnkgc3RlcCBpcyBpZGVtcG90ZW50IGFuZCBzZWxmLWd1YXJkZWQsIHNvIHRoaXMgaXMgc2FmZSB0byBydW4gYWdhaW5zdCBhXG4gKiBmb2xkZXIgdGhhdCBBTFJFQURZIGhhcyBhIGhhbmQtYXV0aG9yZWQgYC5wcm9qZW5yYy50c2AgKGFuZCBldmVuIGEgY29tbWl0dGVkXG4gKiBgcGFja2FnZS5qc29uYCkgYnV0IGlzIG1pc3NpbmcgdGhlIGluc3RhbGxlZCB0b29sY2hhaW4gLSBlLmcuIGEgZnJlc2hseSBjb3BpZWRcbiAqIHByb2plY3Qgd2hvc2UgZ2VuZXJhdGVkIGZpbGVzIChpbmNsdWRpbmcgbWFuaWZlc3RzKSBhcmUgZ2l0aWdub3JlZC4gSW4gdGhhdFxuICogY2FzZSBgYnVuIGluaXRgIGFuZCB0aGUgYC5wcm9qZW5yYy50c2Agc2NhZmZvbGQgYXJlIHNraXBwZWQsIGJ1dCB0aGUgZW5naW5lICtcbiAqIHByb2plbiBhcmUgKHJlKWluc3RhbGxlZCBzbyB0aGUgc3Vic2VxdWVudCBzeW50aCBjYW4gcmVnZW5lcmF0ZSBldmVyeXRoaW5nLlxuICogU2VlIHtAbGluayBzZWVkVG9vbGNoYWlufS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcFdvcmtzcGFjZShcbiAgcm9vdDogc3RyaW5nLFxuICBwcm9qZW5TcGVjaWZpZXI6IHN0cmluZyA9IGRlZmF1bHRQcm9qZW5TcGVjaWZpZXIoKSxcbik6IHZvaWQge1xuICBpbnRybyhgQm9vdHN0cmFwcGluZyBkYngtdG9vbHMgd29ya3NwYWNlIGluICR7cm9vdExhYmVsKHJvb3QpfWApO1xuXG4gIHNlZWRUb29sY2hhaW4ocm9vdCwgcHJvamVuU3BlY2lmaWVyKTtcblxuICBjb25zdCBwcm9qZW5yYyA9IGpvaW4ocm9vdCwgXCIucHJvamVucmMudHNcIik7XG4gIGlmICghZXhpc3RzU3luYyhwcm9qZW5yYykpIHtcbiAgICB3cml0ZUZpbGVTeW5jKHByb2plbnJjLCBQUk9KRU5SQ19URU1QTEFURSk7XG4gIH1cblxuICBydW5Jbml0aWFsU3ludGgocm9vdCk7XG5cbiAgcnVuQnVuKFtcImluc3RhbGxcIl0sIHJvb3QpO1xuICBvdXRybyhcIldvcmtzcGFjZSByZWFkeSAtIHJlLXJ1biBkYngtdG9vbHMgb3IgYWRkIHBhY2thZ2VzIHVuZGVyIHBhY2thZ2VzL1wiKTtcbn1cblxuLyoqXG4gKiBJbnN0YWxsIHRoZSB0b29sY2hhaW4gYSBzeW50aCBuZWVkcyAoYHByb2plbmAsIGB0eXBlc2NyaXB0YCwgYW5kIHRoZSBkYngtdG9vbHNcbiAqIGVuZ2luZSksIHNlZWRpbmcgYSBgcGFja2FnZS5qc29uYCBmaXJzdCB3aGVuIGFic2VudC4gYnVuIHJlYWRzIGl0cyB3b3Jrc3BhY2VcbiAqIGNvbmZpZyAoYHdvcmtzcGFjZXNgL2B0cnVzdGVkRGVwZW5kZW5jaWVzYCkgZnJvbSB0aGUgbWFuaWZlc3QsIHNvIHRoZXJlIGlzIG5vXG4gKiBzZXBhcmF0ZSB3b3Jrc3BhY2UgZmlsZSB0byBzZWVkIC0gdGhlIGVuZ2luZSB3cml0ZXMgYHBucG0td29ya3NwYWNlLnlhbWxgIGF0XG4gKiBzeW50aCBmb3IgdGhlIERhdGFicmlja3MgQXBwcyBwbGF0Zm9ybS4gSWRlbXBvdGVudDogcnVuIGl0IHdoZW5ldmVyIHRoZSBlbmdpbmVcbiAqIGlzIG1pc3NpbmcsIHNvIGEgY29waWVkIHByb2plY3Qgd2l0aCBhIGAucHJvamVucmMudHNgIGJ1dCBub1xuICogYG5vZGVfbW9kdWxlc2AvbWFuaWZlc3QgY2FuIGJlIGJyb3VnaHQgdXAgdG8gYSBzeW50aC1yZWFkeSBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlZWRUb29sY2hhaW4oXG4gIHJvb3Q6IHN0cmluZyxcbiAgcHJvamVuU3BlY2lmaWVyOiBzdHJpbmcgPSBkZWZhdWx0UHJvamVuU3BlY2lmaWVyKCksXG4pOiB2b2lkIHtcbiAgY29uc3QgbWFuaWZlc3RQYXRoID0gam9pbihyb290LCBcInBhY2thZ2UuanNvblwiKTtcbiAgaWYgKCFleGlzdHNTeW5jKG1hbmlmZXN0UGF0aCkpIHtcbiAgICBydW5CdW4oW1wiaW5pdFwiLCBcIi15XCJdLCByb290KTtcbiAgICBub3JtYWxpemVTZWVkTWFuaWZlc3QobWFuaWZlc3RQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGtlcm5lbEFyY2ggPSBleGVjLnNwYXduU3luYyhcInVuYW1lXCIsIFtcIi1tXCJdLCB7XG4gICAgc3RkaW46IFwiaWdub3JlXCIsXG4gICAgc3Rkb3V0OiBcImNhcHR1cmVcIixcbiAgICBzdGRlcnI6IFwiaWdub3JlXCIsXG4gIH0pLnN0ZG91dDtcbiAgbG9nZ2VyLmluZm8oXCJzZWVkaW5nIHRvb2xjaGFpblwiLCB7XG4gICAgbm9kZTogcHJvY2Vzcy52ZXJzaW9uLFxuICAgIGJ1bjogcHJvY2Vzcy52ZXJzaW9ucy5idW4sXG4gICAgcGxhdGZvcm06IHByb2Nlc3MucGxhdGZvcm0sXG4gICAgYXJjaDogcHJvY2Vzcy5hcmNoLFxuICAgIGtlcm5lbEFyY2g6IGtlcm5lbEFyY2ggfHwgXCJ1bmtub3duXCIsXG4gICAgZW5naW5lOiBwcm9qZW5TcGVjaWZpZXIsXG4gIH0pO1xuICBydW5CdW4oW1wiYWRkXCIsIFwiLURcIiwgXCJwcm9qZW5cIiwgXCJ0eXBlc2NyaXB0QF41LjkuM1wiLCBcIkB0eXBlcy9idW5cIiwgcHJvamVuU3BlY2lmaWVyXSwgcm9vdCk7XG59XG5cbi8qKlxuICogTWFrZSB3aGF0IGBidW4gaW5pdGAgcHJvZHVjZWQgc2FmZSB0byBzeW50aCBhZ2FpbnN0OiBmb3JjZSBgdHlwZTogXCJtb2R1bGVcImBcbiAqIChidW4gcnVucyBgLnByb2plbnJjLnRzYCBmaW5lIGVpdGhlciB3YXksIGJ1dCBwcm9qZW4ncyBFU00gc291cmNlcyBhbmQgdGhlXG4gKiBlbWl0dGVkIGNvbmZpZyBhc3N1bWUgbW9kdWxlIHR5cGUpIGFuZCBkcm9wIGFueSBgcGFja2FnZU1hbmFnZXJgL2BkZXZFbmdpbmVzYFxuICogZmllbGQgdGhhdCB3b3VsZCBwaW4gYSBkaWZmZXJlbnQgbWFuYWdlci4gcHJvamVuIHJlZ2VuZXJhdGVzIHRoZSB3aG9sZSBtYW5pZmVzdFxuICogYXQgc3ludGgsIHNvIHRoaXMgb25seSBoYXMgdG8gaG9sZCB0aGUgc2VlZCB0b2dldGhlciBsb25nIGVub3VnaCB0byBnZXQgdGhlcmUuXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNlZWRNYW5pZmVzdChtYW5pZmVzdFBhdGg6IHN0cmluZyk6IHZvaWQge1xuICB0cnkge1xuICAgIGNvbnN0IG1hbmlmZXN0ID0ganNvbi5wYXJzZVJlY29yZChyZWFkRmlsZVN5bmMobWFuaWZlc3RQYXRoLCBcInV0ZjhcIikpO1xuICAgIGlmICghbWFuaWZlc3QpIHJldHVybjtcbiAgICBkZWxldGUgbWFuaWZlc3QuZGV2RW5naW5lcztcbiAgICBkZWxldGUgbWFuaWZlc3QucGFja2FnZU1hbmFnZXI7XG4gICAgbWFuaWZlc3QudHlwZSA9IFwibW9kdWxlXCI7XG4gICAgd3JpdGVGaWxlU3luYyhtYW5pZmVzdFBhdGgsIGAke0pTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKX1cXG5gKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQSBtYWxmb3JtZWQvYWJzZW50IG1hbmlmZXN0IGhlcmUganVzdCBtZWFucyB0aGUgbGF0ZXIgYGJ1biBhZGRgIHJlY3JlYXRlcyBpdC5cbiAgfVxufVxuXG4vKipcbiAqIFJ1biB0aGUgaW5pdGlhbCBzeW50aCBieSBleGVjdXRpbmcgYC5wcm9qZW5yYy50c2AgZGlyZWN0bHkgd2l0aCBidW4gKHdpdGhcbiAqIGBQUk9KRU5fRElTQUJMRV9QT1NUYCBzZXQpLCBOT1QgYHByb2plbiA8dGFzaz5gLiBVc2UgcmlnaHQgYWZ0ZXIgc2VlZGluZyBhXG4gKiBmcmVzaCB3b3Jrc3BhY2U6IHRoZSBwcm9qZW4gVEFTS1MgKGBzeW5jYCwgYGJhcnJlbHNgLCAuLi4pIG9ubHkgZXhpc3Qgb25jZVxuICogYC5wcm9qZW5yYy50c2AgaGFzIHJ1biBvbmNlLCBzbyBgcHJvamVuIHN5bmNgIGNhbid0IGJlIHRoZSBib290c3RyYXBwaW5nIHN0ZXAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Jbml0aWFsU3ludGgocm9vdDogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IFtjb21tYW5kLCAuLi5wcmVmaXhdID0gcmVzb2x2ZUJ1bkFyZ3YoKTtcbiAgLy8gYnVuIHJ1bnMgdGhlIGAudHNgIGRpcmVjdGx5LiBSZWdpc3RyeSBlbnZpcm9ubWVudCBhbGlhc2VzIHJlYWNoIG5lc3RlZFxuICAvLyBjb21tYW5kcyB0aHJvdWdoIGBjaGlsZEVudmAgd2l0aG91dCB3cml0aW5nIHByb2plY3QtbGV2ZWwgbnBtIGNvbmZpZ3VyYXRpb24uXG4gIGV4ZWMuc3Bhd25TeW5jKGNvbW1hbmQsIFsuLi5wcmVmaXgsIFwiLnByb2plbnJjLnRzXCJdLCB7XG4gICAgY3dkOiByb290LFxuICAgIGVudjogY2hpbGRFbnYoeyBQUk9KRU5fRElTQUJMRV9QT1NUOiBcInRydWVcIiB9KSxcbiAgICBjaGVjazogdHJ1ZSxcbiAgfSk7XG59XG4iXX0=
package/package.json CHANGED
@@ -28,16 +28,17 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@clack/prompts": "^1.7.0",
31
- "@dbx-tools/cli-appkit-env": "^0.9.43",
32
- "@dbx-tools/cli-auth": "^0.9.43",
33
- "@dbx-tools/cli-falkor-db": "^0.9.43",
34
- "@dbx-tools/cli-graphiti": "^0.9.43",
35
- "@dbx-tools/cli-lakebase-proxy": "^0.9.43",
36
- "@dbx-tools/cli-model-gateway": "^0.9.43",
37
- "@dbx-tools/cli-tunnel": "^0.9.43",
38
- "@dbx-tools/core": "^0.9.43",
39
- "@dbx-tools/shared-core": "^0.9.43",
40
- "commander": "^15.0.0"
31
+ "@dbx-tools/cli-appkit-env": "^0.9.46",
32
+ "@dbx-tools/cli-auth": "^0.9.46",
33
+ "@dbx-tools/cli-falkor-db": "^0.9.46",
34
+ "@dbx-tools/cli-graphiti": "^0.9.46",
35
+ "@dbx-tools/cli-lakebase-proxy": "^0.9.46",
36
+ "@dbx-tools/cli-model-gateway": "^0.9.46",
37
+ "@dbx-tools/cli-tunnel": "^0.9.46",
38
+ "@dbx-tools/core": "^0.9.46",
39
+ "@dbx-tools/shared-core": "^0.9.46",
40
+ "commander": "^15.0.0",
41
+ "zod": "4.3.6"
41
42
  },
42
43
  "main": "./lib/index.js",
43
44
  "license": "Apache-2.0",
@@ -73,7 +74,7 @@
73
74
  "./package.json": "./package.json"
74
75
  }
75
76
  },
76
- "version": "0.9.43",
77
+ "version": "0.9.46",
77
78
  "types": "./lib/index.d.ts",
78
79
  "dbxToolsConfig": {
79
80
  "tags": [
package/src/bootstrap.ts CHANGED
@@ -7,7 +7,7 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
7
7
  import { createRequire } from "node:module";
8
8
  import { join } from "node:path";
9
9
  import { intro, outro } from "@clack/prompts";
10
- import { exec, projectUtils } from "@dbx-tools/core";
10
+ import { exec } from "@dbx-tools/core";
11
11
  import { json, log } from "@dbx-tools/shared-core";
12
12
  import { childEnv, resolveBunArgv, runBun } from "./bun.ts";
13
13
  import { rootLabel } from "./root.ts";
@@ -153,8 +153,6 @@ export function seedToolchain(
153
153
  normalizeSeedManifest(manifestPath);
154
154
  }
155
155
 
156
- seedRegistry(root);
157
-
158
156
  const kernelArch = exec.spawnSync("uname", ["-m"], {
159
157
  stdin: "ignore",
160
158
  stdout: "capture",
@@ -171,29 +169,6 @@ export function seedToolchain(
171
169
  runBun(["add", "-D", "projen", "typescript@^5.9.3", "@types/bun", projenSpecifier], root);
172
170
  }
173
171
 
174
- /**
175
- * Pin a non-default registry into the new root's `.npmrc`.
176
- *
177
- * The CLI already forces `--registry` onto the bun invocations it makes itself,
178
- * but a bootstrapped workspace outlives this process: every later `bun install`
179
- * the developer (or projen's post-synth step) runs is on its own. bun ignores
180
- * `npm_config_registry` from the environment, so without a file on disk those
181
- * runs revert to `https://registry.npmjs.org/` - which is a hard failure where
182
- * the custom registry was the only reachable one.
183
- *
184
- * Only writes for an actual override, never creates a file just to name npmjs,
185
- * and never overwrites an existing `.npmrc` (the developer's own wins).
186
- */
187
- function seedRegistry(root: string): void {
188
- const registry = projectUtils
189
- .npmRegistry(null, { overrideOnly: true, envVars: true })
190
- ?.toString();
191
- if (!registry) return;
192
- const npmrc = join(root, ".npmrc");
193
- if (existsSync(npmrc)) return;
194
- writeFileSync(npmrc, `registry=${registry}\n`);
195
- }
196
-
197
172
  /**
198
173
  * Make what `bun init` produced safe to synth against: force `type: "module"`
199
174
  * (bun runs `.projenrc.ts` fine either way, but projen's ESM sources and the
@@ -222,8 +197,8 @@ function normalizeSeedManifest(manifestPath: string): void {
222
197
  */
223
198
  export function runInitialSynth(root: string): void {
224
199
  const [command, ...prefix] = resolveBunArgv();
225
- // bun runs the `.ts` directly. The registry reaches anything nested through
226
- // `childEnv` and the seeded `.npmrc`.
200
+ // bun runs the `.ts` directly. Registry environment aliases reach nested
201
+ // commands through `childEnv` without writing project-level npm configuration.
227
202
  exec.spawnSync(command, [...prefix, ".projenrc.ts"], {
228
203
  cwd: root,
229
204
  env: childEnv({ PROJEN_DISABLE_POST: "true" }),