@decohere/create 0.0.1-dev.25 → 0.0.1-dev.27

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.
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "formatScaffoldedFiles", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return formatScaffoldedFiles;
9
+ }
10
+ });
11
+ const _nodechild_process = require("node:child_process");
12
+ function formatScaffoldedFiles(targetDir) {
13
+ process.stdout.write("\n Formatting scaffolded files with Biome...");
14
+ let result = (0, _nodechild_process.spawnSync)("biome", [
15
+ "check",
16
+ "--write",
17
+ "."
18
+ ], {
19
+ cwd: targetDir,
20
+ encoding: "utf8",
21
+ stdio: "pipe"
22
+ });
23
+ if (result.error && result.error.code === "ENOENT") {
24
+ result = (0, _nodechild_process.spawnSync)("npx", [
25
+ "--yes",
26
+ "@biomejs/biome",
27
+ "check",
28
+ "--write",
29
+ "."
30
+ ], {
31
+ cwd: targetDir,
32
+ encoding: "utf8",
33
+ stdio: "pipe"
34
+ });
35
+ }
36
+ if (result.status === 0) {
37
+ process.stdout.write(" done.\n");
38
+ return;
39
+ }
40
+ const detail = (result.stderr || result.stdout || result.error?.message || "").trim();
41
+ process.stdout.write(" failed.\n");
42
+ if (detail) {
43
+ console.error(` ✗ Biome: ${detail.slice(0, 400)}`);
44
+ }
45
+ }
46
+
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2Jpb21lLWZvcm1hdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcGF3blN5bmMgfSBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5cbi8qKlxuICogRm9ybWF0L2xpbnQtZml4IGFsbCBmaWxlcyBpbiB0aGUgc2NhZmZvbGRlZCB3b3Jrc3BhY2Ugd2l0aCBCaW9tZS5cbiAqIFByZWZlciBhIGdsb2JhbCBgYmlvbWVgIGJpbmFyeSAoYnVpbGRlciBpbWFnZSk7IGZhbGwgYmFjayB0byBgbnB4YC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNjYWZmb2xkZWRGaWxlcyh0YXJnZXREaXI6IHN0cmluZyk6IHZvaWQge1xuXHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIlxcbiAgRm9ybWF0dGluZyBzY2FmZm9sZGVkIGZpbGVzIHdpdGggQmlvbWUuLi5cIik7XG5cblx0bGV0IHJlc3VsdCA9IHNwYXduU3luYyhcImJpb21lXCIsIFtcImNoZWNrXCIsIFwiLS13cml0ZVwiLCBcIi5cIl0sIHtcblx0XHRjd2Q6IHRhcmdldERpcixcblx0XHRlbmNvZGluZzogXCJ1dGY4XCIsXG5cdFx0c3RkaW86IFwicGlwZVwiLFxuXHR9KTtcblxuXHRpZiAocmVzdWx0LmVycm9yICYmIChyZXN1bHQuZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlID09PSBcIkVOT0VOVFwiKSB7XG5cdFx0cmVzdWx0ID0gc3Bhd25TeW5jKFwibnB4XCIsIFtcIi0teWVzXCIsIFwiQGJpb21lanMvYmlvbWVcIiwgXCJjaGVja1wiLCBcIi0td3JpdGVcIiwgXCIuXCJdLCB7XG5cdFx0XHRjd2Q6IHRhcmdldERpcixcblx0XHRcdGVuY29kaW5nOiBcInV0ZjhcIixcblx0XHRcdHN0ZGlvOiBcInBpcGVcIixcblx0XHR9KTtcblx0fVxuXG5cdGlmIChyZXN1bHQuc3RhdHVzID09PSAwKSB7XG5cdFx0cHJvY2Vzcy5zdGRvdXQud3JpdGUoXCIgZG9uZS5cXG5cIik7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgZGV0YWlsID0gKHJlc3VsdC5zdGRlcnIgfHwgcmVzdWx0LnN0ZG91dCB8fCByZXN1bHQuZXJyb3I/Lm1lc3NhZ2UgfHwgXCJcIikudHJpbSgpO1xuXHRwcm9jZXNzLnN0ZG91dC53cml0ZShcIiBmYWlsZWQuXFxuXCIpO1xuXHRpZiAoZGV0YWlsKSB7XG5cdFx0Y29uc29sZS5lcnJvcihgICDinJcgQmlvbWU6ICR7ZGV0YWlsLnNsaWNlKDAsIDQwMCl9YCk7XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJmb3JtYXRTY2FmZm9sZGVkRmlsZXMiLCJ0YXJnZXREaXIiLCJwcm9jZXNzIiwic3Rkb3V0Iiwid3JpdGUiLCJyZXN1bHQiLCJzcGF3blN5bmMiLCJjd2QiLCJlbmNvZGluZyIsInN0ZGlvIiwiZXJyb3IiLCJjb2RlIiwic3RhdHVzIiwiZGV0YWlsIiwic3RkZXJyIiwibWVzc2FnZSIsInRyaW0iLCJjb25zb2xlIiwic2xpY2UiXSwibWFwcGluZ3MiOiI7Ozs7K0JBTWdCQTs7O2VBQUFBOzs7bUNBTlU7QUFNbkIsU0FBU0Esc0JBQXNCQyxTQUFpQjtJQUN0REMsUUFBUUMsTUFBTSxDQUFDQyxLQUFLLENBQUM7SUFFckIsSUFBSUMsU0FBU0MsSUFBQUEsNEJBQVMsRUFBQyxTQUFTO1FBQUM7UUFBUztRQUFXO0tBQUksRUFBRTtRQUMxREMsS0FBS047UUFDTE8sVUFBVTtRQUNWQyxPQUFPO0lBQ1I7SUFFQSxJQUFJSixPQUFPSyxLQUFLLElBQUksQUFBQ0wsT0FBT0ssS0FBSyxDQUEyQkMsSUFBSSxLQUFLLFVBQVU7UUFDOUVOLFNBQVNDLElBQUFBLDRCQUFTLEVBQUMsT0FBTztZQUFDO1lBQVM7WUFBa0I7WUFBUztZQUFXO1NBQUksRUFBRTtZQUMvRUMsS0FBS047WUFDTE8sVUFBVTtZQUNWQyxPQUFPO1FBQ1I7SUFDRDtJQUVBLElBQUlKLE9BQU9PLE1BQU0sS0FBSyxHQUFHO1FBQ3hCVixRQUFRQyxNQUFNLENBQUNDLEtBQUssQ0FBQztRQUNyQjtJQUNEO0lBRUEsTUFBTVMsU0FBUyxBQUFDUixDQUFBQSxPQUFPUyxNQUFNLElBQUlULE9BQU9GLE1BQU0sSUFBSUUsT0FBT0ssS0FBSyxFQUFFSyxXQUFXLEVBQUMsRUFBR0MsSUFBSTtJQUNuRmQsUUFBUUMsTUFBTSxDQUFDQyxLQUFLLENBQUM7SUFDckIsSUFBSVMsUUFBUTtRQUNYSSxRQUFRUCxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUVHLE9BQU9LLEtBQUssQ0FBQyxHQUFHLE1BQU07SUFDbkQ7QUFDRCJ9
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "FinalizeFeature", {
10
10
  });
11
11
  const _interop = require("@decohere/nexus/interop");
12
12
  const _prompt = require("../../domain/prompt.js");
13
+ const _biomeformat = require("./biome-format.js");
13
14
  // State resolved during scaffold(), consumed by finalize().
14
15
  let _pm = null;
15
16
  let _shouldInstall = true;
@@ -33,6 +34,8 @@ async function scaffold(workspace, options) {
33
34
  _shouldInstall = answer.toLowerCase() !== "no";
34
35
  }
35
36
  async function finalize(workspace, _options) {
37
+ // Last scaffold write step: normalize generated sources before install / handoff.
38
+ (0, _biomeformat.formatScaffoldedFiles)(workspace.targetDir);
36
39
  if (_shouldInstall) {
37
40
  const pm = _pm;
38
41
  console.log(`\nScaffolded ${workspace.name}. Installing dependencies...\n`);
@@ -48,6 +51,8 @@ async function finalize(workspace, _options) {
48
51
  }
49
52
  console.log(" code . # open in VS Code");
50
53
  console.log(" # then: Reopen in Container\n");
54
+ // Drop readline's stdin hold so the CLI / container can exit.
55
+ (0, _prompt.closePrompt)();
51
56
  }
52
57
  const FinalizeFeature = {
53
58
  getOptions,
@@ -55,4 +60,4 @@ const FinalizeFeature = {
55
60
  finalize
56
61
  };
57
62
 
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYWNrYWdlTWFuYWdlciB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHByb21wdEZvclBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBhc2sgfSBmcm9tIFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VTY2FmZm9sZCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcHJvamVjdC5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjYWZmb2xkLnNlcnZpY2UuanNcIjtcblxuLy8gU3RhdGUgcmVzb2x2ZWQgZHVyaW5nIHNjYWZmb2xkKCksIGNvbnN1bWVkIGJ5IGZpbmFsaXplKCkuXG5sZXQgX3BtOiBQYWNrYWdlTWFuYWdlciB8IG51bGwgPSBudWxsO1xubGV0IF9zaG91bGRJbnN0YWxsID0gdHJ1ZTtcblxudHlwZSBGaW5hbGl6ZU9wdGlvbnMgPSB7XG5cdGluc3RhbGxEZXBlbmRlbmNpZXM/OiBcInllc1wiIHwgXCJub1wiO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3B0aW9ucyhcblx0X3dvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdGNsaU9wdGlvbnM6IFBhcnRpYWw8RmluYWxpemVPcHRpb25zPixcbik6IFByb21pc2U8b2JqZWN0PiB7XG5cdGlmIChjbGlPcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gY2xpT3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHR9XG5cdHJldHVybiB7fTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhZmZvbGQoXG5cdHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdG9wdGlvbnM6IEZpbmFsaXplT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiA9PT0gXCIxXCIpIHtcblx0XHRfc2hvdWxkSW5zdGFsbCA9IGZhbHNlO1xuXHRcdHJldHVybjtcblx0fVxuXHRfcG0gPSBkZXRlY3RQYWNrYWdlTWFuYWdlcih3b3Jrc3BhY2UudGFyZ2V0RGlyKSA/PyAoYXdhaXQgcHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIoKSk7XG5cdGlmIChvcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gb3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGFuc3dlciA9IGF3YWl0IGFzayhcIlxcbkluc3RhbGwgZGVwZW5kZW5jaWVzIG5vdz8gW3llcy9ub10gKHllcyk6IFwiLCBcInllc1wiKTtcblx0X3Nob3VsZEluc3RhbGwgPSBhbnN3ZXIudG9Mb3dlckNhc2UoKSAhPT0gXCJub1wiO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5hbGl6ZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBfb3B0aW9uczogb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChfc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnN0IHBtID0gX3BtITtcblx0XHRjb25zb2xlLmxvZyhgXFxuU2NhZmZvbGRlZCAke3dvcmtzcGFjZS5uYW1lfS4gSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cXG5gKTtcblx0XHRhd2FpdCBwbS5pbnN0YWxsKHsgY3dkOiB3b3Jrc3BhY2UudGFyZ2V0RGlyIH0pO1xuXHR9XG5cblx0Y29uc29sZS5sb2coYFxcbkRvbmUhICR7X3Nob3VsZEluc3RhbGwgPyBcIk5leHRcIiA6IFwiVG8gZ2V0IHN0YXJ0ZWQ6XCJ9IHN0ZXBzOlxcbmApO1xuXHRjb25zb2xlLmxvZyhgICBjZCAke3dvcmtzcGFjZS5uYW1lfWApO1xuXHRpZiAoIV9zaG91bGRJbnN0YWxsKSB7XG5cdFx0Y29uc3QgcG1OYW1lID0gX3BtPy5uYW1lID8/IFwicG5wbVwiO1xuXHRcdGNvbnNvbGUubG9nKGAgICR7cG1OYW1lfSBpbnN0YWxsYCk7XG5cdH1cblx0Y29uc29sZS5sb2coXCIgIGNvZGUgLiAgICAgICAgICMgb3BlbiBpbiBWUyBDb2RlXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgICAgICAgICAgICAgICAgIyB0aGVuOiBSZW9wZW4gaW4gQ29udGFpbmVyXFxuXCIpO1xufVxuXG5leHBvcnQgY29uc3QgRmluYWxpemVGZWF0dXJlOiBGZWF0dXJlID0geyBnZXRPcHRpb25zLCBzY2FmZm9sZCwgZmluYWxpemUgfTtcbiJdLCJuYW1lcyI6WyJGaW5hbGl6ZUZlYXR1cmUiLCJfcG0iLCJfc2hvdWxkSW5zdGFsbCIsImdldE9wdGlvbnMiLCJfd29ya3NwYWNlIiwiY2xpT3B0aW9ucyIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJzY2FmZm9sZCIsIndvcmtzcGFjZSIsIm9wdGlvbnMiLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfQlVJTERFUiIsImRldGVjdFBhY2thZ2VNYW5hZ2VyIiwidGFyZ2V0RGlyIiwicHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIiLCJhbnN3ZXIiLCJhc2siLCJ0b0xvd2VyQ2FzZSIsImZpbmFsaXplIiwiX29wdGlvbnMiLCJwbSIsImNvbnNvbGUiLCJsb2ciLCJuYW1lIiwiaW5zdGFsbCIsImN3ZCIsInBtTmFtZSJdLCJtYXBwaW5ncyI6Ijs7OzsrQkEyRGFBOzs7ZUFBQUE7Ozt5QkExRGlEO3dCQUMxQztBQUlwQiw0REFBNEQ7QUFDNUQsSUFBSUMsTUFBNkI7QUFDakMsSUFBSUMsaUJBQWlCO0FBTXJCLGVBQWVDLFdBQ2RDLFVBQTZCLEVBQzdCQyxVQUFvQztJQUVwQyxJQUFJQSxXQUFXQyxtQkFBbUIsSUFBSSxNQUFNO1FBQzNDSixpQkFBaUJHLFdBQVdDLG1CQUFtQixLQUFLO0lBQ3JEO0lBQ0EsT0FBTyxDQUFDO0FBQ1Q7QUFFQSxlQUFlQyxTQUNkQyxTQUE0QixFQUM1QkMsT0FBd0I7SUFFeEIsSUFBSUMsUUFBUUMsR0FBRyxDQUFDQyxnQkFBZ0IsS0FBSyxLQUFLO1FBQ3pDVixpQkFBaUI7UUFDakI7SUFDRDtJQUNBRCxNQUFNWSxJQUFBQSw2QkFBb0IsRUFBQ0wsVUFBVU0sU0FBUyxLQUFNLE1BQU1DLElBQUFBLGdDQUF1QjtJQUNqRixJQUFJTixRQUFRSCxtQkFBbUIsSUFBSSxNQUFNO1FBQ3hDSixpQkFBaUJPLFFBQVFILG1CQUFtQixLQUFLO1FBQ2pEO0lBQ0Q7SUFFQSxNQUFNVSxTQUFTLE1BQU1DLElBQUFBLFdBQUcsRUFBQyxnREFBZ0Q7SUFDekVmLGlCQUFpQmMsT0FBT0UsV0FBVyxPQUFPO0FBQzNDO0FBRUEsZUFBZUMsU0FBU1gsU0FBNEIsRUFBRVksUUFBZ0I7SUFDckUsSUFBSWxCLGdCQUFnQjtRQUNuQixNQUFNbUIsS0FBS3BCO1FBQ1hxQixRQUFRQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUVmLFVBQVVnQixJQUFJLENBQUMsOEJBQThCLENBQUM7UUFDMUUsTUFBTUgsR0FBR0ksT0FBTyxDQUFDO1lBQUVDLEtBQUtsQixVQUFVTSxTQUFTO1FBQUM7SUFDN0M7SUFFQVEsUUFBUUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFckIsaUJBQWlCLFNBQVMsa0JBQWtCLFNBQVMsQ0FBQztJQUM3RW9CLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRWYsVUFBVWdCLElBQUksRUFBRTtJQUNwQyxJQUFJLENBQUN0QixnQkFBZ0I7UUFDcEIsTUFBTXlCLFNBQVMxQixLQUFLdUIsUUFBUTtRQUM1QkYsUUFBUUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFSSxPQUFPLFFBQVEsQ0FBQztJQUNsQztJQUNBTCxRQUFRQyxHQUFHLENBQUM7SUFDWkQsUUFBUUMsR0FBRyxDQUFDO0FBQ2I7QUFFTyxNQUFNdkIsa0JBQTJCO0lBQUVHO0lBQVlJO0lBQVVZO0FBQVMifQ==
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvd2ViYXBpL2ZlYXR1cmVzL2ZpbmFsaXplLmZlYXR1cmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYWNrYWdlTWFuYWdlciB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgZGV0ZWN0UGFja2FnZU1hbmFnZXIsIHByb21wdEZvclBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIkBkZWNvaGVyZS9uZXh1cy9pbnRlcm9wXCI7XG5pbXBvcnQgeyBhc2ssIGNsb3NlUHJvbXB0IH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB0eXBlIHsgV29ya3NwYWNlU2NhZmZvbGQgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3Byb2plY3QubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgRmVhdHVyZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zY2FmZm9sZC5zZXJ2aWNlLmpzXCI7XG5pbXBvcnQgeyBmb3JtYXRTY2FmZm9sZGVkRmlsZXMgfSBmcm9tIFwiLi9iaW9tZS1mb3JtYXQuanNcIjtcblxuLy8gU3RhdGUgcmVzb2x2ZWQgZHVyaW5nIHNjYWZmb2xkKCksIGNvbnN1bWVkIGJ5IGZpbmFsaXplKCkuXG5sZXQgX3BtOiBQYWNrYWdlTWFuYWdlciB8IG51bGwgPSBudWxsO1xubGV0IF9zaG91bGRJbnN0YWxsID0gdHJ1ZTtcblxudHlwZSBGaW5hbGl6ZU9wdGlvbnMgPSB7XG5cdGluc3RhbGxEZXBlbmRlbmNpZXM/OiBcInllc1wiIHwgXCJub1wiO1xufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3B0aW9ucyhcblx0X3dvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdGNsaU9wdGlvbnM6IFBhcnRpYWw8RmluYWxpemVPcHRpb25zPixcbik6IFByb21pc2U8b2JqZWN0PiB7XG5cdGlmIChjbGlPcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gY2xpT3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHR9XG5cdHJldHVybiB7fTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NhZmZvbGQoXG5cdHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdG9wdGlvbnM6IEZpbmFsaXplT3B0aW9ucyxcbik6IFByb21pc2U8dm9pZD4ge1xuXHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiA9PT0gXCIxXCIpIHtcblx0XHRfc2hvdWxkSW5zdGFsbCA9IGZhbHNlO1xuXHRcdHJldHVybjtcblx0fVxuXHRfcG0gPSBkZXRlY3RQYWNrYWdlTWFuYWdlcih3b3Jrc3BhY2UudGFyZ2V0RGlyKSA/PyAoYXdhaXQgcHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIoKSk7XG5cdGlmIChvcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgIT0gbnVsbCkge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gb3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzID09PSBcInllc1wiO1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGFuc3dlciA9IGF3YWl0IGFzayhcIlxcbkluc3RhbGwgZGVwZW5kZW5jaWVzIG5vdz8gW3llcy9ub10gKHllcyk6IFwiLCBcInllc1wiKTtcblx0X3Nob3VsZEluc3RhbGwgPSBhbnN3ZXIudG9Mb3dlckNhc2UoKSAhPT0gXCJub1wiO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaW5hbGl6ZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBfb3B0aW9uczogb2JqZWN0KTogUHJvbWlzZTx2b2lkPiB7XG5cdC8vIExhc3Qgc2NhZmZvbGQgd3JpdGUgc3RlcDogbm9ybWFsaXplIGdlbmVyYXRlZCBzb3VyY2VzIGJlZm9yZSBpbnN0YWxsIC8gaGFuZG9mZi5cblx0Zm9ybWF0U2NhZmZvbGRlZEZpbGVzKHdvcmtzcGFjZS50YXJnZXREaXIpO1xuXG5cdGlmIChfc2hvdWxkSW5zdGFsbCkge1xuXHRcdGNvbnN0IHBtID0gX3BtITtcblx0XHRjb25zb2xlLmxvZyhgXFxuU2NhZmZvbGRlZCAke3dvcmtzcGFjZS5uYW1lfS4gSW5zdGFsbGluZyBkZXBlbmRlbmNpZXMuLi5cXG5gKTtcblx0XHRhd2FpdCBwbS5pbnN0YWxsKHsgY3dkOiB3b3Jrc3BhY2UudGFyZ2V0RGlyIH0pO1xuXHR9XG5cblx0Y29uc29sZS5sb2coYFxcbkRvbmUhICR7X3Nob3VsZEluc3RhbGwgPyBcIk5leHRcIiA6IFwiVG8gZ2V0IHN0YXJ0ZWQ6XCJ9IHN0ZXBzOlxcbmApO1xuXHRjb25zb2xlLmxvZyhgICBjZCAke3dvcmtzcGFjZS5uYW1lfWApO1xuXHRpZiAoIV9zaG91bGRJbnN0YWxsKSB7XG5cdFx0Y29uc3QgcG1OYW1lID0gX3BtPy5uYW1lID8/IFwicG5wbVwiO1xuXHRcdGNvbnNvbGUubG9nKGAgICR7cG1OYW1lfSBpbnN0YWxsYCk7XG5cdH1cblx0Y29uc29sZS5sb2coXCIgIGNvZGUgLiAgICAgICAgICMgb3BlbiBpbiBWUyBDb2RlXCIpO1xuXHRjb25zb2xlLmxvZyhcIiAgICAgICAgICAgICAgICAgIyB0aGVuOiBSZW9wZW4gaW4gQ29udGFpbmVyXFxuXCIpO1xuXG5cdC8vIERyb3AgcmVhZGxpbmUncyBzdGRpbiBob2xkIHNvIHRoZSBDTEkgLyBjb250YWluZXIgY2FuIGV4aXQuXG5cdGNsb3NlUHJvbXB0KCk7XG59XG5cbmV4cG9ydCBjb25zdCBGaW5hbGl6ZUZlYXR1cmU6IEZlYXR1cmUgPSB7IGdldE9wdGlvbnMsIHNjYWZmb2xkLCBmaW5hbGl6ZSB9O1xuIl0sIm5hbWVzIjpbIkZpbmFsaXplRmVhdHVyZSIsIl9wbSIsIl9zaG91bGRJbnN0YWxsIiwiZ2V0T3B0aW9ucyIsIl93b3Jrc3BhY2UiLCJjbGlPcHRpb25zIiwiaW5zdGFsbERlcGVuZGVuY2llcyIsInNjYWZmb2xkIiwid29ya3NwYWNlIiwib3B0aW9ucyIsInByb2Nlc3MiLCJlbnYiLCJERUNPSEVSRV9CVUlMREVSIiwiZGV0ZWN0UGFja2FnZU1hbmFnZXIiLCJ0YXJnZXREaXIiLCJwcm9tcHRGb3JQYWNrYWdlTWFuYWdlciIsImFuc3dlciIsImFzayIsInRvTG93ZXJDYXNlIiwiZmluYWxpemUiLCJfb3B0aW9ucyIsImZvcm1hdFNjYWZmb2xkZWRGaWxlcyIsInBtIiwiY29uc29sZSIsImxvZyIsIm5hbWUiLCJpbnN0YWxsIiwiY3dkIiwicG1OYW1lIiwiY2xvc2VQcm9tcHQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBa0VhQTs7O2VBQUFBOzs7eUJBakVpRDt3QkFDN0I7NkJBR0s7QUFFdEMsNERBQTREO0FBQzVELElBQUlDLE1BQTZCO0FBQ2pDLElBQUlDLGlCQUFpQjtBQU1yQixlQUFlQyxXQUNkQyxVQUE2QixFQUM3QkMsVUFBb0M7SUFFcEMsSUFBSUEsV0FBV0MsbUJBQW1CLElBQUksTUFBTTtRQUMzQ0osaUJBQWlCRyxXQUFXQyxtQkFBbUIsS0FBSztJQUNyRDtJQUNBLE9BQU8sQ0FBQztBQUNUO0FBRUEsZUFBZUMsU0FDZEMsU0FBNEIsRUFDNUJDLE9BQXdCO0lBRXhCLElBQUlDLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssS0FBSztRQUN6Q1YsaUJBQWlCO1FBQ2pCO0lBQ0Q7SUFDQUQsTUFBTVksSUFBQUEsNkJBQW9CLEVBQUNMLFVBQVVNLFNBQVMsS0FBTSxNQUFNQyxJQUFBQSxnQ0FBdUI7SUFDakYsSUFBSU4sUUFBUUgsbUJBQW1CLElBQUksTUFBTTtRQUN4Q0osaUJBQWlCTyxRQUFRSCxtQkFBbUIsS0FBSztRQUNqRDtJQUNEO0lBRUEsTUFBTVUsU0FBUyxNQUFNQyxJQUFBQSxXQUFHLEVBQUMsZ0RBQWdEO0lBQ3pFZixpQkFBaUJjLE9BQU9FLFdBQVcsT0FBTztBQUMzQztBQUVBLGVBQWVDLFNBQVNYLFNBQTRCLEVBQUVZLFFBQWdCO0lBQ3JFLGtGQUFrRjtJQUNsRkMsSUFBQUEsa0NBQXFCLEVBQUNiLFVBQVVNLFNBQVM7SUFFekMsSUFBSVosZ0JBQWdCO1FBQ25CLE1BQU1vQixLQUFLckI7UUFDWHNCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRWhCLFVBQVVpQixJQUFJLENBQUMsOEJBQThCLENBQUM7UUFDMUUsTUFBTUgsR0FBR0ksT0FBTyxDQUFDO1lBQUVDLEtBQUtuQixVQUFVTSxTQUFTO1FBQUM7SUFDN0M7SUFFQVMsUUFBUUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFdEIsaUJBQWlCLFNBQVMsa0JBQWtCLFNBQVMsQ0FBQztJQUM3RXFCLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRWhCLFVBQVVpQixJQUFJLEVBQUU7SUFDcEMsSUFBSSxDQUFDdkIsZ0JBQWdCO1FBQ3BCLE1BQU0wQixTQUFTM0IsS0FBS3dCLFFBQVE7UUFDNUJGLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRUksT0FBTyxRQUFRLENBQUM7SUFDbEM7SUFDQUwsUUFBUUMsR0FBRyxDQUFDO0lBQ1pELFFBQVFDLEdBQUcsQ0FBQztJQUVaLDhEQUE4RDtJQUM5REssSUFBQUEsbUJBQVc7QUFDWjtBQUVPLE1BQU03QixrQkFBMkI7SUFBRUc7SUFBWUk7SUFBVVk7QUFBUyJ9
package/es6/src/cli.js CHANGED
@@ -18,7 +18,18 @@ program.command("webapi").option("--database <provider>", "Database provider: no
18
18
  runInBuilder(normalized);
19
19
  return;
20
20
  }
21
- await scaffoldApi(normalized);
21
+ const { closePrompt } = await import("./domain/prompt.js");
22
+ try {
23
+ await scaffoldApi(normalized);
24
+ } catch (err) {
25
+ console.error(err);
26
+ process.exitCode = 1;
27
+ } finally{
28
+ // Always release readline's stdin hold (even on errors / early abort).
29
+ closePrompt();
30
+ }
31
+ // Builder runs under docker -it; exit explicitly so the container stops.
32
+ process.exit(process.exitCode ?? 0);
22
33
  });
23
34
  // .option("-y, --yes", "Skip confirmation prompts")
24
35
  // .option("-t, --template <template>", "Project template: api (default) or cli")
@@ -41,4 +52,4 @@ program.command("webapi").option("--database <provider>", "Database provider: no
41
52
  // );
42
53
  program.parse();
43
54
 
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBydW5JbkJ1aWxkZXIgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQXBpT3B0aW9ucyB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5pbXBvcnQgeyBzY2FmZm9sZEFwaSB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG5cdC5uYW1lKFwiZGVjb2hlcmVcIilcblx0LmRlc2NyaXB0aW9uKFwiU2NhZmZvbGQgYSBuZXcgRGVjb2hlcmUgcHJvamVjdFwiKVxuXHQub3B0aW9uKFwiLWQgPGRpcmVjdG9yeT5cIiwgXCJUYXJnZXQgZGlyZWN0b3J5IChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSlcIiwgXCIuXCIpO1xuXG5wcm9ncmFtXG5cdC5jb21tYW5kKFwid2ViYXBpXCIpXG5cdC5vcHRpb24oXCItLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlcjogbm9uZSB8IHBvc3RncmVzL3R5cGVvcm1cIilcblx0Lm9wdGlvbihcIi0tYXV0aCA8cHJvdmlkZXI+XCIsIFwiQXV0aCBwcm92aWRlcjogbm9uZSB8IGF1dGgwXCIpXG5cdC5vcHRpb24oXCItLXBvc3RtYW4gPHByb3ZpZGVyPlwiLCBcIlBvc3RtYW4gcHJvdmlkZXI6IG5vbmUgfCBsb2NhbCB8IGFwaVwiKVxuXHQub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiSW5zdGFsbCBkZXBlbmRlbmNpZXMgd2l0aG91dCBwcm9tcHRpbmdcIilcblx0Lm9wdGlvbihcIi0taW5zdGFsbCA8bW9kZT5cIiwgXCJEZXBlbmRlbmN5IGluc3RhbGwgbW9kZTogYXNrIHwgeWVzIHwgbm9cIiwgXCJhc2tcIilcblx0LmFjdGlvbihhc3luYyAoX25hbWUsIGNtZDogQ29tbWFuZCkgPT4ge1xuXHRcdGNvbnN0IG9wdHMgPSBjbWQub3B0c1dpdGhHbG9iYWxzKCk7XG5cdFx0Y29uc3QgaW5zdGFsbE1vZGUgPSBTdHJpbmcob3B0cy5pbnN0YWxsID8/IFwiYXNrXCIpLnRvTG93ZXJDYXNlKCk7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZDogQXBpT3B0aW9ucyA9IHtcblx0XHRcdGQ6IG9wdHMuZCxcblx0XHRcdGRhdGFiYXNlUHJvdmlkZXI6IG9wdHMuZGF0YWJhc2UsXG5cdFx0XHRhdXRoUHJvdmlkZXI6IG9wdHMuYXV0aCxcblx0XHRcdHBvc3RtYW5Qcm92aWRlcjogb3B0cy5wb3N0bWFuLFxuXHRcdFx0aW5zdGFsbERlcGVuZGVuY2llczpcblx0XHRcdFx0b3B0cy55ZXMgPT09IHRydWVcblx0XHRcdFx0XHQ/IFwieWVzXCJcblx0XHRcdFx0XHQ6IGluc3RhbGxNb2RlID09PSBcInllc1wiIHx8IGluc3RhbGxNb2RlID09PSBcIm5vXCJcblx0XHRcdFx0XHRcdD8gaW5zdGFsbE1vZGVcblx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdH07XG5cblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihub3JtYWxpemVkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0YXdhaXQgc2NhZmZvbGRBcGkobm9ybWFsaXplZCk7XG5cdH0pO1xuXG4vLyAub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiU2tpcCBjb25maXJtYXRpb24gcHJvbXB0c1wiKVxuLy8gLm9wdGlvbihcIi10LCAtLXRlbXBsYXRlIDx0ZW1wbGF0ZT5cIiwgXCJQcm9qZWN0IHRlbXBsYXRlOiBhcGkgKGRlZmF1bHQpIG9yIGNsaVwiKVxuLy8gLm9wdGlvbihcIi1kLCAtLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlciB0byBpbmNsdWRlIChhcGkgb25seSk6IHR5cGVvcm1cIilcbi8vIC5vcHRpb24oXCItaSwgLS1pZHAgPHByb3ZpZGVyPlwiLCBcIklkZW50aXR5IHByb3ZpZGVyIHRvIGNvbmZpZ3VyZSAoYXBpIG9ubHkpOiBhdXRoMFwiKVxuLy8gLm9wdGlvbihcIi1wLCAtLXBvc3RtYW5cIiwgXCJDb25maWd1cmUgYSBQb3N0bWFuIHdvcmtzcGFjZSwgY29sbGVjdGlvbiwgYW5kIGVudmlyb25tZW50XCIpXG4vLyAuYWN0aW9uKFxuLy8gXHRhc3luYyAoXG4vLyBcdFx0ZGlyZWN0b3J5OiBzdHJpbmcsXG4vLyBcdFx0b3B0czoge1xuLy8gXHRcdFx0eWVzPzogYm9vbGVhbjtcbi8vIFx0XHRcdHRlbXBsYXRlPzogXCJhcGlcIiB8IFwiY2xpXCI7XG4vLyBcdFx0XHRkYXRhYmFzZT86IFwidHlwZW9ybVwiO1xuLy8gXHRcdFx0aWRwPzogXCJhdXRoMFwiO1xuLy8gXHRcdFx0cG9zdG1hbj86IGJvb2xlYW47XG4vLyBcdFx0fSxcbi8vIFx0KSA9PiB7XG4vLyBcdFx0YXdhaXQgc2NhZmZvbGQocmVzb2x2ZShkaXJlY3RvcnkpLCBvcHRzKTtcbi8vIFx0fSxcbi8vICk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdLCJuYW1lcyI6WyJDb21tYW5kIiwicnVuSW5CdWlsZGVyIiwic2NhZmZvbGRBcGkiLCJwcm9ncmFtIiwibmFtZSIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiY29tbWFuZCIsImFjdGlvbiIsIl9uYW1lIiwiY21kIiwib3B0cyIsIm9wdHNXaXRoR2xvYmFscyIsImluc3RhbGxNb2RlIiwiU3RyaW5nIiwiaW5zdGFsbCIsInRvTG93ZXJDYXNlIiwibm9ybWFsaXplZCIsImQiLCJkYXRhYmFzZVByb3ZpZGVyIiwiZGF0YWJhc2UiLCJhdXRoUHJvdmlkZXIiLCJhdXRoIiwicG9zdG1hblByb3ZpZGVyIiwicG9zdG1hbiIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJ5ZXMiLCJ1bmRlZmluZWQiLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfQlVJTERFUiIsInBhcnNlIl0sIm1hcHBpbmdzIjoiO0FBQ0EsU0FBU0EsT0FBTyxRQUFRLFlBQVk7QUFDcEMsU0FBU0MsWUFBWSxRQUFRLGNBQWM7QUFFM0MsU0FBU0MsV0FBVyxRQUFRLHlCQUF5QjtBQUVyRCxNQUFNQyxVQUFVLElBQUlIO0FBRXBCRyxRQUNFQyxJQUFJLENBQUMsWUFDTEMsV0FBVyxDQUFDLG1DQUNaQyxNQUFNLENBQUMsa0JBQWtCLGlEQUFpRDtBQUU1RUgsUUFDRUksT0FBTyxDQUFDLFVBQ1JELE1BQU0sQ0FBQyx5QkFBeUIsOENBQ2hDQSxNQUFNLENBQUMscUJBQXFCLCtCQUM1QkEsTUFBTSxDQUFDLHdCQUF3Qix3Q0FDL0JBLE1BQU0sQ0FBQyxhQUFhLDBDQUNwQkEsTUFBTSxDQUFDLG9CQUFvQiwyQ0FBMkMsT0FDdEVFLE1BQU0sQ0FBQyxPQUFPQyxPQUFPQztJQUNyQixNQUFNQyxPQUFPRCxJQUFJRSxlQUFlO0lBQ2hDLE1BQU1DLGNBQWNDLE9BQU9ILEtBQUtJLE9BQU8sSUFBSSxPQUFPQyxXQUFXO0lBQzdELE1BQU1DLGFBQXlCO1FBQzlCQyxHQUFHUCxLQUFLTyxDQUFDO1FBQ1RDLGtCQUFrQlIsS0FBS1MsUUFBUTtRQUMvQkMsY0FBY1YsS0FBS1csSUFBSTtRQUN2QkMsaUJBQWlCWixLQUFLYSxPQUFPO1FBQzdCQyxxQkFDQ2QsS0FBS2UsR0FBRyxLQUFLLE9BQ1YsUUFDQWIsZ0JBQWdCLFNBQVNBLGdCQUFnQixPQUN4Q0EsY0FDQWM7SUFDTjtJQUVBLElBQUlDLFFBQVFDLEdBQUcsQ0FBQ0MsZ0JBQWdCLEtBQUssS0FBSztRQUN6QzdCLGFBQWFnQjtRQUNiO0lBQ0Q7SUFDQSxNQUFNZixZQUFZZTtBQUNuQjtBQUVELG9EQUFvRDtBQUNwRCxpRkFBaUY7QUFDakYsMkZBQTJGO0FBQzNGLHNGQUFzRjtBQUN0Rix5RkFBeUY7QUFDekYsV0FBVztBQUNYLFdBQVc7QUFDWCx1QkFBdUI7QUFDdkIsWUFBWTtBQUNaLG9CQUFvQjtBQUNwQiwrQkFBK0I7QUFDL0IsMkJBQTJCO0FBQzNCLG9CQUFvQjtBQUNwQix3QkFBd0I7QUFDeEIsT0FBTztBQUNQLFVBQVU7QUFDViw4Q0FBOEM7QUFDOUMsTUFBTTtBQUNOLEtBQUs7QUFFTGQsUUFBUTRCLEtBQUsifQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBydW5JbkJ1aWxkZXIgfSBmcm9tIFwiLi9ydW5uZXIuanNcIjtcbmltcG9ydCB0eXBlIHsgQXBpT3B0aW9ucyB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5pbXBvcnQgeyBzY2FmZm9sZEFwaSB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpO1xuXG5wcm9ncmFtXG5cdC5uYW1lKFwiZGVjb2hlcmVcIilcblx0LmRlc2NyaXB0aW9uKFwiU2NhZmZvbGQgYSBuZXcgRGVjb2hlcmUgcHJvamVjdFwiKVxuXHQub3B0aW9uKFwiLWQgPGRpcmVjdG9yeT5cIiwgXCJUYXJnZXQgZGlyZWN0b3J5IChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSlcIiwgXCIuXCIpO1xuXG5wcm9ncmFtXG5cdC5jb21tYW5kKFwid2ViYXBpXCIpXG5cdC5vcHRpb24oXCItLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlcjogbm9uZSB8IHBvc3RncmVzL3R5cGVvcm1cIilcblx0Lm9wdGlvbihcIi0tYXV0aCA8cHJvdmlkZXI+XCIsIFwiQXV0aCBwcm92aWRlcjogbm9uZSB8IGF1dGgwXCIpXG5cdC5vcHRpb24oXCItLXBvc3RtYW4gPHByb3ZpZGVyPlwiLCBcIlBvc3RtYW4gcHJvdmlkZXI6IG5vbmUgfCBsb2NhbCB8IGFwaVwiKVxuXHQub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiSW5zdGFsbCBkZXBlbmRlbmNpZXMgd2l0aG91dCBwcm9tcHRpbmdcIilcblx0Lm9wdGlvbihcIi0taW5zdGFsbCA8bW9kZT5cIiwgXCJEZXBlbmRlbmN5IGluc3RhbGwgbW9kZTogYXNrIHwgeWVzIHwgbm9cIiwgXCJhc2tcIilcblx0LmFjdGlvbihhc3luYyAoX25hbWUsIGNtZDogQ29tbWFuZCkgPT4ge1xuXHRcdGNvbnN0IG9wdHMgPSBjbWQub3B0c1dpdGhHbG9iYWxzKCk7XG5cdFx0Y29uc3QgaW5zdGFsbE1vZGUgPSBTdHJpbmcob3B0cy5pbnN0YWxsID8/IFwiYXNrXCIpLnRvTG93ZXJDYXNlKCk7XG5cdFx0Y29uc3Qgbm9ybWFsaXplZDogQXBpT3B0aW9ucyA9IHtcblx0XHRcdGQ6IG9wdHMuZCxcblx0XHRcdGRhdGFiYXNlUHJvdmlkZXI6IG9wdHMuZGF0YWJhc2UsXG5cdFx0XHRhdXRoUHJvdmlkZXI6IG9wdHMuYXV0aCxcblx0XHRcdHBvc3RtYW5Qcm92aWRlcjogb3B0cy5wb3N0bWFuLFxuXHRcdFx0aW5zdGFsbERlcGVuZGVuY2llczpcblx0XHRcdFx0b3B0cy55ZXMgPT09IHRydWVcblx0XHRcdFx0XHQ/IFwieWVzXCJcblx0XHRcdFx0XHQ6IGluc3RhbGxNb2RlID09PSBcInllc1wiIHx8IGluc3RhbGxNb2RlID09PSBcIm5vXCJcblx0XHRcdFx0XHRcdD8gaW5zdGFsbE1vZGVcblx0XHRcdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdH07XG5cblx0XHRpZiAocHJvY2Vzcy5lbnYuREVDT0hFUkVfQlVJTERFUiAhPT0gXCIxXCIpIHtcblx0XHRcdHJ1bkluQnVpbGRlcihub3JtYWxpemVkKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB7IGNsb3NlUHJvbXB0IH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RvbWFpbi9wcm9tcHQuanNcIik7XG5cdFx0dHJ5IHtcblx0XHRcdGF3YWl0IHNjYWZmb2xkQXBpKG5vcm1hbGl6ZWQpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnIpO1xuXHRcdFx0cHJvY2Vzcy5leGl0Q29kZSA9IDE7XG5cdFx0fSBmaW5hbGx5IHtcblx0XHRcdC8vIEFsd2F5cyByZWxlYXNlIHJlYWRsaW5lJ3Mgc3RkaW4gaG9sZCAoZXZlbiBvbiBlcnJvcnMgLyBlYXJseSBhYm9ydCkuXG5cdFx0XHRjbG9zZVByb21wdCgpO1xuXHRcdH1cblx0XHQvLyBCdWlsZGVyIHJ1bnMgdW5kZXIgZG9ja2VyIC1pdDsgZXhpdCBleHBsaWNpdGx5IHNvIHRoZSBjb250YWluZXIgc3RvcHMuXG5cdFx0cHJvY2Vzcy5leGl0KHByb2Nlc3MuZXhpdENvZGUgPz8gMCk7XG5cdH0pO1xuXG4vLyAub3B0aW9uKFwiLXksIC0teWVzXCIsIFwiU2tpcCBjb25maXJtYXRpb24gcHJvbXB0c1wiKVxuLy8gLm9wdGlvbihcIi10LCAtLXRlbXBsYXRlIDx0ZW1wbGF0ZT5cIiwgXCJQcm9qZWN0IHRlbXBsYXRlOiBhcGkgKGRlZmF1bHQpIG9yIGNsaVwiKVxuLy8gLm9wdGlvbihcIi1kLCAtLWRhdGFiYXNlIDxwcm92aWRlcj5cIiwgXCJEYXRhYmFzZSBwcm92aWRlciB0byBpbmNsdWRlIChhcGkgb25seSk6IHR5cGVvcm1cIilcbi8vIC5vcHRpb24oXCItaSwgLS1pZHAgPHByb3ZpZGVyPlwiLCBcIklkZW50aXR5IHByb3ZpZGVyIHRvIGNvbmZpZ3VyZSAoYXBpIG9ubHkpOiBhdXRoMFwiKVxuLy8gLm9wdGlvbihcIi1wLCAtLXBvc3RtYW5cIiwgXCJDb25maWd1cmUgYSBQb3N0bWFuIHdvcmtzcGFjZSwgY29sbGVjdGlvbiwgYW5kIGVudmlyb25tZW50XCIpXG4vLyAuYWN0aW9uKFxuLy8gXHRhc3luYyAoXG4vLyBcdFx0ZGlyZWN0b3J5OiBzdHJpbmcsXG4vLyBcdFx0b3B0czoge1xuLy8gXHRcdFx0eWVzPzogYm9vbGVhbjtcbi8vIFx0XHRcdHRlbXBsYXRlPzogXCJhcGlcIiB8IFwiY2xpXCI7XG4vLyBcdFx0XHRkYXRhYmFzZT86IFwidHlwZW9ybVwiO1xuLy8gXHRcdFx0aWRwPzogXCJhdXRoMFwiO1xuLy8gXHRcdFx0cG9zdG1hbj86IGJvb2xlYW47XG4vLyBcdFx0fSxcbi8vIFx0KSA9PiB7XG4vLyBcdFx0YXdhaXQgc2NhZmZvbGQocmVzb2x2ZShkaXJlY3RvcnkpLCBvcHRzKTtcbi8vIFx0fSxcbi8vICk7XG5cbnByb2dyYW0ucGFyc2UoKTtcbiJdLCJuYW1lcyI6WyJDb21tYW5kIiwicnVuSW5CdWlsZGVyIiwic2NhZmZvbGRBcGkiLCJwcm9ncmFtIiwibmFtZSIsImRlc2NyaXB0aW9uIiwib3B0aW9uIiwiY29tbWFuZCIsImFjdGlvbiIsIl9uYW1lIiwiY21kIiwib3B0cyIsIm9wdHNXaXRoR2xvYmFscyIsImluc3RhbGxNb2RlIiwiU3RyaW5nIiwiaW5zdGFsbCIsInRvTG93ZXJDYXNlIiwibm9ybWFsaXplZCIsImQiLCJkYXRhYmFzZVByb3ZpZGVyIiwiZGF0YWJhc2UiLCJhdXRoUHJvdmlkZXIiLCJhdXRoIiwicG9zdG1hblByb3ZpZGVyIiwicG9zdG1hbiIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJ5ZXMiLCJ1bmRlZmluZWQiLCJwcm9jZXNzIiwiZW52IiwiREVDT0hFUkVfQlVJTERFUiIsImNsb3NlUHJvbXB0IiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwiZXhpdENvZGUiLCJleGl0IiwicGFyc2UiXSwibWFwcGluZ3MiOiI7QUFDQSxTQUFTQSxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyxZQUFZLFFBQVEsY0FBYztBQUUzQyxTQUFTQyxXQUFXLFFBQVEseUJBQXlCO0FBRXJELE1BQU1DLFVBQVUsSUFBSUg7QUFFcEJHLFFBQ0VDLElBQUksQ0FBQyxZQUNMQyxXQUFXLENBQUMsbUNBQ1pDLE1BQU0sQ0FBQyxrQkFBa0IsaURBQWlEO0FBRTVFSCxRQUNFSSxPQUFPLENBQUMsVUFDUkQsTUFBTSxDQUFDLHlCQUF5Qiw4Q0FDaENBLE1BQU0sQ0FBQyxxQkFBcUIsK0JBQzVCQSxNQUFNLENBQUMsd0JBQXdCLHdDQUMvQkEsTUFBTSxDQUFDLGFBQWEsMENBQ3BCQSxNQUFNLENBQUMsb0JBQW9CLDJDQUEyQyxPQUN0RUUsTUFBTSxDQUFDLE9BQU9DLE9BQU9DO0lBQ3JCLE1BQU1DLE9BQU9ELElBQUlFLGVBQWU7SUFDaEMsTUFBTUMsY0FBY0MsT0FBT0gsS0FBS0ksT0FBTyxJQUFJLE9BQU9DLFdBQVc7SUFDN0QsTUFBTUMsYUFBeUI7UUFDOUJDLEdBQUdQLEtBQUtPLENBQUM7UUFDVEMsa0JBQWtCUixLQUFLUyxRQUFRO1FBQy9CQyxjQUFjVixLQUFLVyxJQUFJO1FBQ3ZCQyxpQkFBaUJaLEtBQUthLE9BQU87UUFDN0JDLHFCQUNDZCxLQUFLZSxHQUFHLEtBQUssT0FDVixRQUNBYixnQkFBZ0IsU0FBU0EsZ0JBQWdCLE9BQ3hDQSxjQUNBYztJQUNOO0lBRUEsSUFBSUMsUUFBUUMsR0FBRyxDQUFDQyxnQkFBZ0IsS0FBSyxLQUFLO1FBQ3pDN0IsYUFBYWdCO1FBQ2I7SUFDRDtJQUVBLE1BQU0sRUFBRWMsV0FBVyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUM7SUFDckMsSUFBSTtRQUNILE1BQU03QixZQUFZZTtJQUNuQixFQUFFLE9BQU9lLEtBQUs7UUFDYkMsUUFBUUMsS0FBSyxDQUFDRjtRQUNkSixRQUFRTyxRQUFRLEdBQUc7SUFDcEIsU0FBVTtRQUNULHVFQUF1RTtRQUN2RUo7SUFDRDtJQUNBLHlFQUF5RTtJQUN6RUgsUUFBUVEsSUFBSSxDQUFDUixRQUFRTyxRQUFRLElBQUk7QUFDbEM7QUFFRCxvREFBb0Q7QUFDcEQsaUZBQWlGO0FBQ2pGLDJGQUEyRjtBQUMzRixzRkFBc0Y7QUFDdEYseUZBQXlGO0FBQ3pGLFdBQVc7QUFDWCxXQUFXO0FBQ1gsdUJBQXVCO0FBQ3ZCLFlBQVk7QUFDWixvQkFBb0I7QUFDcEIsK0JBQStCO0FBQy9CLDJCQUEyQjtBQUMzQixvQkFBb0I7QUFDcEIsd0JBQXdCO0FBQ3hCLE9BQU87QUFDUCxVQUFVO0FBQ1YsOENBQThDO0FBQzlDLE1BQU07QUFDTixLQUFLO0FBRUxoQyxRQUFRa0MsS0FBSyJ9
@@ -3,17 +3,23 @@ import { createInterface } from "node:readline";
3
3
  // in Node ≥ 22: after the first line is read, stdin emits 'end', readline closes,
4
4
  // and all subsequent question() calls resolve to "".
5
5
  // Fix: use the async-iterator API, which buffers all lines before the close event fires.
6
+ let _rl = null;
6
7
  let _lines = null;
7
8
  function getLines() {
8
9
  if (_lines == null) {
9
- const rl = createInterface({
10
+ _rl = createInterface({
10
11
  input: process.stdin,
11
12
  terminal: false
12
13
  });
13
- _lines = rl[Symbol.asyncIterator]();
14
+ _lines = _rl[Symbol.asyncIterator]();
14
15
  }
15
16
  return _lines;
16
17
  }
18
+ /** Release stdin so the process can exit after interactive prompts. */ export function closePrompt() {
19
+ _rl?.close();
20
+ _rl = null;
21
+ _lines = null;
22
+ }
17
23
  async function readLine(prompt) {
18
24
  process.stdout.write(prompt);
19
25
  const { value, done } = await getLines().next();
@@ -34,4 +40,4 @@ export async function pick(label, items, display) {
34
40
  return items[idx - 1];
35
41
  }
36
42
 
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvZG9tYWluL3Byb21wdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UgfSBmcm9tIFwibm9kZTpyZWFkbGluZVwiO1xuXG4vLyByZWFkbGluZS9wcm9taXNlcyBybC5xdWVzdGlvbigpIGhhcyBhIHJhY2UgY29uZGl0aW9uIHdpdGggcGlwZWQgKG5vbi1UVFkpIHN0ZGluXG4vLyBpbiBOb2RlIOKJpSAyMjogYWZ0ZXIgdGhlIGZpcnN0IGxpbmUgaXMgcmVhZCwgc3RkaW4gZW1pdHMgJ2VuZCcsIHJlYWRsaW5lIGNsb3Nlcyxcbi8vIGFuZCBhbGwgc3Vic2VxdWVudCBxdWVzdGlvbigpIGNhbGxzIHJlc29sdmUgdG8gXCJcIi5cbi8vIEZpeDogdXNlIHRoZSBhc3luYy1pdGVyYXRvciBBUEksIHdoaWNoIGJ1ZmZlcnMgYWxsIGxpbmVzIGJlZm9yZSB0aGUgY2xvc2UgZXZlbnQgZmlyZXMuXG5cbmxldCBfbGluZXM6IEFzeW5jSXRlcmF0b3I8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRMaW5lcygpOiBBc3luY0l0ZXJhdG9yPHN0cmluZz4ge1xuXHRpZiAoX2xpbmVzID09IG51bGwpIHtcblx0XHRjb25zdCBybCA9IGNyZWF0ZUludGVyZmFjZSh7IGlucHV0OiBwcm9jZXNzLnN0ZGluLCB0ZXJtaW5hbDogZmFsc2UgfSk7XG5cdFx0X2xpbmVzID0gcmxbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCk7XG5cdH1cblx0cmV0dXJuIF9saW5lcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZExpbmUocHJvbXB0OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRwcm9jZXNzLnN0ZG91dC53cml0ZShwcm9tcHQpO1xuXHRjb25zdCB7IHZhbHVlLCBkb25lIH0gPSBhd2FpdCBnZXRMaW5lcygpLm5leHQoKTtcblx0cmV0dXJuIGRvbmUgPyBcIlwiIDogdmFsdWUudHJpbSgpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXNrKHF1ZXN0aW9uOiBzdHJpbmcsIGZhbGxiYWNrID0gXCJcIik6IFByb21pc2U8c3RyaW5nPiB7XG5cdGNvbnN0IGFuc3dlciA9IGF3YWl0IHJlYWRMaW5lKHF1ZXN0aW9uKTtcblx0cmV0dXJuIGFuc3dlciB8fCBmYWxsYmFjaztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBpY2s8VD4oXG5cdGxhYmVsOiBzdHJpbmcsXG5cdGl0ZW1zOiBUW10sXG5cdGRpc3BsYXk6IChpdGVtOiBUKSA9PiBzdHJpbmcsXG4pOiBQcm9taXNlPFQgfCBudWxsPiB7XG5cdGNvbnNvbGUubG9nKGxhYmVsLnRyaW1FbmQoKSk7XG5cdGZvciAoY29uc3QgW2ksIGl0ZW1dIG9mIGl0ZW1zLmVudHJpZXMoKSkge1xuXHRcdGNvbnNvbGUubG9nKGAgICAgJHtpICsgMX0uICR7ZGlzcGxheShpdGVtKX1gKTtcblx0fVxuXHRjb25zdCBhbnN3ZXIgPSBhd2FpdCByZWFkTGluZShcIiAgPiBcIik7XG5cdGNvbnN0IGlkeCA9IE51bWJlci5wYXJzZUludChhbnN3ZXIsIDEwKTtcblx0aWYgKE51bWJlci5pc05hTihpZHgpIHx8IGlkeCA8IDEgfHwgaWR4ID4gaXRlbXMubGVuZ3RoKSByZXR1cm4gbnVsbDtcblx0cmV0dXJuIGl0ZW1zW2lkeCAtIDFdO1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUludGVyZmFjZSIsIl9saW5lcyIsImdldExpbmVzIiwicmwiLCJpbnB1dCIsInByb2Nlc3MiLCJzdGRpbiIsInRlcm1pbmFsIiwiU3ltYm9sIiwiYXN5bmNJdGVyYXRvciIsInJlYWRMaW5lIiwicHJvbXB0Iiwic3Rkb3V0Iiwid3JpdGUiLCJ2YWx1ZSIsImRvbmUiLCJuZXh0IiwidHJpbSIsImFzayIsInF1ZXN0aW9uIiwiZmFsbGJhY2siLCJhbnN3ZXIiLCJwaWNrIiwibGFiZWwiLCJpdGVtcyIsImRpc3BsYXkiLCJjb25zb2xlIiwibG9nIiwidHJpbUVuZCIsImkiLCJpdGVtIiwiZW50cmllcyIsImlkeCIsIk51bWJlciIsInBhcnNlSW50IiwiaXNOYU4iLCJsZW5ndGgiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGVBQWUsUUFBUSxnQkFBZ0I7QUFFaEQsa0ZBQWtGO0FBQ2xGLGtGQUFrRjtBQUNsRixxREFBcUQ7QUFDckQseUZBQXlGO0FBRXpGLElBQUlDLFNBQXVDO0FBRTNDLFNBQVNDO0lBQ1IsSUFBSUQsVUFBVSxNQUFNO1FBQ25CLE1BQU1FLEtBQUtILGdCQUFnQjtZQUFFSSxPQUFPQyxRQUFRQyxLQUFLO1lBQUVDLFVBQVU7UUFBTTtRQUNuRU4sU0FBU0UsRUFBRSxDQUFDSyxPQUFPQyxhQUFhLENBQUM7SUFDbEM7SUFDQSxPQUFPUjtBQUNSO0FBRUEsZUFBZVMsU0FBU0MsTUFBYztJQUNyQ04sUUFBUU8sTUFBTSxDQUFDQyxLQUFLLENBQUNGO0lBQ3JCLE1BQU0sRUFBRUcsS0FBSyxFQUFFQyxJQUFJLEVBQUUsR0FBRyxNQUFNYixXQUFXYyxJQUFJO0lBQzdDLE9BQU9ELE9BQU8sS0FBS0QsTUFBTUcsSUFBSTtBQUM5QjtBQUVBLE9BQU8sZUFBZUMsSUFBSUMsUUFBZ0IsRUFBRUMsV0FBVyxFQUFFO0lBQ3hELE1BQU1DLFNBQVMsTUFBTVgsU0FBU1M7SUFDOUIsT0FBT0UsVUFBVUQ7QUFDbEI7QUFFQSxPQUFPLGVBQWVFLEtBQ3JCQyxLQUFhLEVBQ2JDLEtBQVUsRUFDVkMsT0FBNEI7SUFFNUJDLFFBQVFDLEdBQUcsQ0FBQ0osTUFBTUssT0FBTztJQUN6QixLQUFLLE1BQU0sQ0FBQ0MsR0FBR0MsS0FBSyxJQUFJTixNQUFNTyxPQUFPLEdBQUk7UUFDeENMLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRUUsSUFBSSxFQUFFLEVBQUUsRUFBRUosUUFBUUssT0FBTztJQUM3QztJQUNBLE1BQU1ULFNBQVMsTUFBTVgsU0FBUztJQUM5QixNQUFNc0IsTUFBTUMsT0FBT0MsUUFBUSxDQUFDYixRQUFRO0lBQ3BDLElBQUlZLE9BQU9FLEtBQUssQ0FBQ0gsUUFBUUEsTUFBTSxLQUFLQSxNQUFNUixNQUFNWSxNQUFNLEVBQUUsT0FBTztJQUMvRCxPQUFPWixLQUFLLENBQUNRLE1BQU0sRUFBRTtBQUN0QiJ9
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvZG9tYWluL3Byb21wdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJbnRlcmZhY2UsIHR5cGUgSW50ZXJmYWNlIH0gZnJvbSBcIm5vZGU6cmVhZGxpbmVcIjtcblxuLy8gcmVhZGxpbmUvcHJvbWlzZXMgcmwucXVlc3Rpb24oKSBoYXMgYSByYWNlIGNvbmRpdGlvbiB3aXRoIHBpcGVkIChub24tVFRZKSBzdGRpblxuLy8gaW4gTm9kZSDiiaUgMjI6IGFmdGVyIHRoZSBmaXJzdCBsaW5lIGlzIHJlYWQsIHN0ZGluIGVtaXRzICdlbmQnLCByZWFkbGluZSBjbG9zZXMsXG4vLyBhbmQgYWxsIHN1YnNlcXVlbnQgcXVlc3Rpb24oKSBjYWxscyByZXNvbHZlIHRvIFwiXCIuXG4vLyBGaXg6IHVzZSB0aGUgYXN5bmMtaXRlcmF0b3IgQVBJLCB3aGljaCBidWZmZXJzIGFsbCBsaW5lcyBiZWZvcmUgdGhlIGNsb3NlIGV2ZW50IGZpcmVzLlxuXG5sZXQgX3JsOiBJbnRlcmZhY2UgfCBudWxsID0gbnVsbDtcbmxldCBfbGluZXM6IEFzeW5jSXRlcmF0b3I8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRMaW5lcygpOiBBc3luY0l0ZXJhdG9yPHN0cmluZz4ge1xuXHRpZiAoX2xpbmVzID09IG51bGwpIHtcblx0XHRfcmwgPSBjcmVhdGVJbnRlcmZhY2UoeyBpbnB1dDogcHJvY2Vzcy5zdGRpbiwgdGVybWluYWw6IGZhbHNlIH0pO1xuXHRcdF9saW5lcyA9IF9ybFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0oKTtcblx0fVxuXHRyZXR1cm4gX2xpbmVzO1xufVxuXG4vKiogUmVsZWFzZSBzdGRpbiBzbyB0aGUgcHJvY2VzcyBjYW4gZXhpdCBhZnRlciBpbnRlcmFjdGl2ZSBwcm9tcHRzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3NlUHJvbXB0KCk6IHZvaWQge1xuXHRfcmw/LmNsb3NlKCk7XG5cdF9ybCA9IG51bGw7XG5cdF9saW5lcyA9IG51bGw7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRMaW5lKHByb21wdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0cHJvY2Vzcy5zdGRvdXQud3JpdGUocHJvbXB0KTtcblx0Y29uc3QgeyB2YWx1ZSwgZG9uZSB9ID0gYXdhaXQgZ2V0TGluZXMoKS5uZXh0KCk7XG5cdHJldHVybiBkb25lID8gXCJcIiA6IHZhbHVlLnRyaW0oKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFzayhxdWVzdGlvbjogc3RyaW5nLCBmYWxsYmFjayA9IFwiXCIpOiBQcm9taXNlPHN0cmluZz4ge1xuXHRjb25zdCBhbnN3ZXIgPSBhd2FpdCByZWFkTGluZShxdWVzdGlvbik7XG5cdHJldHVybiBhbnN3ZXIgfHwgZmFsbGJhY2s7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwaWNrPFQ+KFxuXHRsYWJlbDogc3RyaW5nLFxuXHRpdGVtczogVFtdLFxuXHRkaXNwbGF5OiAoaXRlbTogVCkgPT4gc3RyaW5nLFxuKTogUHJvbWlzZTxUIHwgbnVsbD4ge1xuXHRjb25zb2xlLmxvZyhsYWJlbC50cmltRW5kKCkpO1xuXHRmb3IgKGNvbnN0IFtpLCBpdGVtXSBvZiBpdGVtcy5lbnRyaWVzKCkpIHtcblx0XHRjb25zb2xlLmxvZyhgICAgICR7aSArIDF9LiAke2Rpc3BsYXkoaXRlbSl9YCk7XG5cdH1cblx0Y29uc3QgYW5zd2VyID0gYXdhaXQgcmVhZExpbmUoXCIgID4gXCIpO1xuXHRjb25zdCBpZHggPSBOdW1iZXIucGFyc2VJbnQoYW5zd2VyLCAxMCk7XG5cdGlmIChOdW1iZXIuaXNOYU4oaWR4KSB8fCBpZHggPCAxIHx8IGlkeCA+IGl0ZW1zLmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cdHJldHVybiBpdGVtc1tpZHggLSAxXTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVJbnRlcmZhY2UiLCJfcmwiLCJfbGluZXMiLCJnZXRMaW5lcyIsImlucHV0IiwicHJvY2VzcyIsInN0ZGluIiwidGVybWluYWwiLCJTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwiY2xvc2VQcm9tcHQiLCJjbG9zZSIsInJlYWRMaW5lIiwicHJvbXB0Iiwic3Rkb3V0Iiwid3JpdGUiLCJ2YWx1ZSIsImRvbmUiLCJuZXh0IiwidHJpbSIsImFzayIsInF1ZXN0aW9uIiwiZmFsbGJhY2siLCJhbnN3ZXIiLCJwaWNrIiwibGFiZWwiLCJpdGVtcyIsImRpc3BsYXkiLCJjb25zb2xlIiwibG9nIiwidHJpbUVuZCIsImkiLCJpdGVtIiwiZW50cmllcyIsImlkeCIsIk51bWJlciIsInBhcnNlSW50IiwiaXNOYU4iLCJsZW5ndGgiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGVBQWUsUUFBd0IsZ0JBQWdCO0FBRWhFLGtGQUFrRjtBQUNsRixrRkFBa0Y7QUFDbEYscURBQXFEO0FBQ3JELHlGQUF5RjtBQUV6RixJQUFJQyxNQUF3QjtBQUM1QixJQUFJQyxTQUF1QztBQUUzQyxTQUFTQztJQUNSLElBQUlELFVBQVUsTUFBTTtRQUNuQkQsTUFBTUQsZ0JBQWdCO1lBQUVJLE9BQU9DLFFBQVFDLEtBQUs7WUFBRUMsVUFBVTtRQUFNO1FBQzlETCxTQUFTRCxHQUFHLENBQUNPLE9BQU9DLGFBQWEsQ0FBQztJQUNuQztJQUNBLE9BQU9QO0FBQ1I7QUFFQSxxRUFBcUUsR0FDckUsT0FBTyxTQUFTUTtJQUNmVCxLQUFLVTtJQUNMVixNQUFNO0lBQ05DLFNBQVM7QUFDVjtBQUVBLGVBQWVVLFNBQVNDLE1BQWM7SUFDckNSLFFBQVFTLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDRjtJQUNyQixNQUFNLEVBQUVHLEtBQUssRUFBRUMsSUFBSSxFQUFFLEdBQUcsTUFBTWQsV0FBV2UsSUFBSTtJQUM3QyxPQUFPRCxPQUFPLEtBQUtELE1BQU1HLElBQUk7QUFDOUI7QUFFQSxPQUFPLGVBQWVDLElBQUlDLFFBQWdCLEVBQUVDLFdBQVcsRUFBRTtJQUN4RCxNQUFNQyxTQUFTLE1BQU1YLFNBQVNTO0lBQzlCLE9BQU9FLFVBQVVEO0FBQ2xCO0FBRUEsT0FBTyxlQUFlRSxLQUNyQkMsS0FBYSxFQUNiQyxLQUFVLEVBQ1ZDLE9BQTRCO0lBRTVCQyxRQUFRQyxHQUFHLENBQUNKLE1BQU1LLE9BQU87SUFDekIsS0FBSyxNQUFNLENBQUNDLEdBQUdDLEtBQUssSUFBSU4sTUFBTU8sT0FBTyxHQUFJO1FBQ3hDTCxRQUFRQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUVFLElBQUksRUFBRSxFQUFFLEVBQUVKLFFBQVFLLE9BQU87SUFDN0M7SUFDQSxNQUFNVCxTQUFTLE1BQU1YLFNBQVM7SUFDOUIsTUFBTXNCLE1BQU1DLE9BQU9DLFFBQVEsQ0FBQ2IsUUFBUTtJQUNwQyxJQUFJWSxPQUFPRSxLQUFLLENBQUNILFFBQVFBLE1BQU0sS0FBS0EsTUFBTVIsTUFBTVksTUFBTSxFQUFFLE9BQU87SUFDL0QsT0FBT1osS0FBSyxDQUFDUSxNQUFNLEVBQUU7QUFDdEIifQ==
@@ -82,7 +82,16 @@ export function withVsCodeJsDebugBootloaderFix(options) {
82
82
  const bashrcPath = options?.bashrcPath ?? "/home/${USERNAME}/.bashrc";
83
83
  const order = options?.order ?? StepOrder.features + 300;
84
84
  return (dockerfile)=>{
85
- dockerfile.addStep(DockerStep.raw("vscode-bootloader-fix", `RUN cat <<'EOF' >> "${bashrcPath}"\n${VSCODE_BOOTLOADER_FIX_BASH_SNIPPET}\nEOF`, order));
85
+ dockerfile.addStep(DockerStep.raw("vscode-bootloader-fix", [
86
+ "# VS Code / Cursor js-debug Auto Attach injects --require …/bootloader.js into",
87
+ "# NODE_OPTIONS. On a fresh Dev Container that path often does not exist yet",
88
+ "# (workspaceStorage file is only created after toggling Auto Attach), which crashes",
89
+ "# every Node command. If the injected path is missing, prefer the stable",
90
+ "# bootloader from the server extension install; otherwise strip the bad require.",
91
+ `RUN cat <<'EOF' >> "${bashrcPath}"`,
92
+ VSCODE_BOOTLOADER_FIX_BASH_SNIPPET,
93
+ "EOF"
94
+ ].join("\n"), order));
86
95
  };
87
96
  }
88
97
  export class DockerfileModel {
@@ -173,4 +182,4 @@ export class DevContainerImageModel extends DockerfileModel {
173
182
  }
174
183
  }
175
184
 
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2RvY2tlci1pbWFnZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCB0eXBlIExheWVyV3JpdGVyID0gKGRvY2tlcmZpbGU6IERvY2tlcmZpbGVNb2RlbCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIERvY2tlclN0ZXAge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoXG5cdFx0cHVibGljIHJlYWRvbmx5IGtleTogc3RyaW5nLFxuXHRcdHB1YmxpYyByZWFkb25seSBjb250ZW50OiBzdHJpbmcsXG5cdFx0cHVibGljIHJlYWRvbmx5IG9yZGVyID0gMCxcblx0KSB7fVxuXG5cdHB1YmxpYyBzdGF0aWMgcnVuKGtleTogc3RyaW5nLCBjb21tYW5kOiBzdHJpbmcsIG9yZGVyID0gMCkge1xuXHRcdHJldHVybiBuZXcgRG9ja2VyU3RlcChrZXksIGBSVU4gJHtjb21tYW5kfWAsIG9yZGVyKTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgcmF3KGtleTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIG9yZGVyID0gMCkge1xuXHRcdHJldHVybiBuZXcgRG9ja2VyU3RlcChrZXksIGNvbnRlbnQsIG9yZGVyKTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgZW50cnlwb2ludChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLCBvcmRlciA9IDApIHtcblx0XHRjb25zdCBjb250ZW50ID1cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIlxuXHRcdFx0XHQ/IGBFTlRSWVBPSU5UICR7dmFsdWV9YFxuXHRcdFx0XHQ6IGBFTlRSWVBPSU5UICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG5cdFx0cmV0dXJuIG5ldyBEb2NrZXJTdGVwKGtleSwgY29udGVudCwgb3JkZXIpO1xuXHR9XG59XG5cbmNvbnN0IFN0ZXBPcmRlciA9IHtcblx0YmFzZTogMV8wMDAsXG5cdGZlYXR1cmVzOiA1XzAwMCxcblx0dXNlcjogOV8wMDAsXG5cdGVudHJ5cG9pbnQ6IDEwXzAwMCxcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IFZTQ09ERV9CT09UTE9BREVSX0ZJWF9CQVNIX1NOSVBQRVQgPSBgaWYgW1sgLW4gXCJcXCR7Tk9ERV9PUFRJT05TOi19XCIgJiYgXCJcXCR7Tk9ERV9PUFRJT05TfVwiID09ICpcImJvb3Rsb2FkZXIuanNcIiogXV07IHRoZW5cbiAgICBfYm9vdGxvYWRlcl9wYXRoPVwiJChwcmludGYgJyVzXFxcXG4nIFwiJE5PREVfT1BUSU9OU1wiIHwgc2VkIC1uICdzLy4qLS1yZXF1aXJlWz0gXVxcXFwoW15bOnNwYWNlOl1dKmJvb3Rsb2FkZXJcXFxcLmpzXFxcXCkuKi9cXFxcMS9wJylcIlxuICAgIGlmIFtbIC1uIFwiXFwke19ib290bG9hZGVyX3BhdGh9XCIgJiYgISAtZiBcIlxcJHtfYm9vdGxvYWRlcl9wYXRofVwiIF1dOyB0aGVuXG4gICAgICAgIF9zdGFibGVfYm9vdGxvYWRlcj1cIiQoZmluZCAvdnNjb2RlL3ZzY29kZS1zZXJ2ZXIgL2hvbWUvbm9kZS8udnNjb2RlLXNlcnZlci9leHRlbnNpb25zIC1uYW1lIFwiYm9vdGxvYWRlci5qc1wiIC1wYXRoIFwiKi9tcy12c2NvZGUuanMtZGVidWcvKlwiIDI+L2Rldi9udWxsIHwgaGVhZCAtMSlcIlxuICAgICAgICBpZiBbWyAtbiBcIlxcJHtfc3RhYmxlX2Jvb3Rsb2FkZXJ9XCIgXV07IHRoZW5cbiAgICAgICAgICAgIE5PREVfT1BUSU9OUz1cIlxcJHtOT0RFX09QVElPTlMvL1xcJHtfYm9vdGxvYWRlcl9wYXRofS9cXCR7X3N0YWJsZV9ib290bG9hZGVyfX1cIlxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBOT0RFX09QVElPTlM9XCIkKHByaW50ZiAnJXNcXFxcbicgXCIkTk9ERV9PUFRJT05TXCIgfCBzZWQgLUUgJ3MjKF58ICktLXJlcXVpcmUoPXwgKVtbOmdyYXBoOl1dKmJvb3Rsb2FkZXJcXFxcLmpzKCB8JCkjICNnOyBzIyAgKyMgI2c7IHMjXiAjIzsgcyMgJCMjJylcIlxuICAgICAgICAgICAgdW5zZXQgVlNDT0RFX0lOU1BFQ1RPUl9PUFRJT05TXG4gICAgICAgIGZpXG4gICAgICAgIGV4cG9ydCBOT0RFX09QVElPTlNcbiAgICAgICAgaWYgW1sgLXogXCIkTk9ERV9PUFRJT05TXCIgXV07IHRoZW5cbiAgICAgICAgICAgIHVuc2V0IE5PREVfT1BUSU9OU1xuICAgICAgICBmaVxuICAgIGZpXG4gICAgdW5zZXQgX2Jvb3Rsb2FkZXJfcGF0aCBfc3RhYmxlX2Jvb3Rsb2FkZXJcbmZpYDtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDb21tYW5kSGlzdG9yeShvcHRpb25zPzoge1xuXHRoaXN0b3J5RGlyPzogc3RyaW5nO1xuXHRoaXN0b3J5RmlsZU5hbWU/OiBzdHJpbmc7XG5cdG9yZGVyPzogbnVtYmVyO1xufSk6IExheWVyV3JpdGVyIHtcblx0Y29uc3QgaGlzdG9yeURpciA9IG9wdGlvbnM/Lmhpc3RvcnlEaXIgPz8gXCIvY29tbWFuZGhpc3RvcnlcIjtcblx0Y29uc3QgaGlzdG9yeUZpbGVOYW1lID0gb3B0aW9ucz8uaGlzdG9yeUZpbGVOYW1lID8/IFwiLmJhc2hfaGlzdG9yeVwiO1xuXHRjb25zdCBvcmRlciA9IG9wdGlvbnM/Lm9yZGVyID8/IFN0ZXBPcmRlci5iYXNlO1xuXHRjb25zdCBoaXN0b3J5RmlsZSA9IGAke2hpc3RvcnlEaXJ9LyR7aGlzdG9yeUZpbGVOYW1lfWA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFwiaGlzdG9yeS1kaXJcIiwgYG1rZGlyIC1wICR7aGlzdG9yeURpcn0gJiYgdG91Y2ggJHtoaXN0b3J5RmlsZX1gLCBvcmRlciksXG5cdFx0XHQpXG5cdFx0XHQuYWRkU3RlcChEb2NrZXJTdGVwLnJhdyhcImhpc3RvcnktZW52XCIsIGBFTlYgSElTVEZJTEU9JHtoaXN0b3J5RmlsZX1gLCBvcmRlciArIDEpKTtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOb2RlVXNlcihvcHRpb25zPzoge1xuXHR1c2VybmFtZT86IHN0cmluZztcblx0aW5jbHVkZVVzZXJJbnN0cnVjdGlvbj86IGJvb2xlYW47XG5cdG9yZGVyPzogbnVtYmVyO1xufSk6IExheWVyV3JpdGVyIHtcblx0Y29uc3QgdXNlcm5hbWUgPSBvcHRpb25zPy51c2VybmFtZSA/PyBcIm5vZGVcIjtcblx0Y29uc3QgaW5jbHVkZVVzZXJJbnN0cnVjdGlvbiA9IG9wdGlvbnM/LmluY2x1ZGVVc2VySW5zdHJ1Y3Rpb24gPz8gdHJ1ZTtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXM7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKERvY2tlclN0ZXAucmF3KFwiYXJnLXVzZXJuYW1lXCIsIGBBUkcgVVNFUk5BTUU9JHt1c2VybmFtZX1gLCBvcmRlcikpO1xuXG5cdFx0aWYgKGluY2x1ZGVVc2VySW5zdHJ1Y3Rpb24pIHtcblx0XHRcdGRvY2tlcmZpbGUuYWRkU3RlcChEb2NrZXJTdGVwLnJhdyhcInVzZXJcIiwgXCJVU0VSICR7VVNFUk5BTUV9XCIsIFN0ZXBPcmRlci51c2VyKSk7XG5cdFx0fVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFBucG0ob3B0aW9ucz86IHtcblx0dmVyc2lvbj86IHN0cmluZztcblx0dXNlcm5hbWVFeHByPzogc3RyaW5nO1xuXHRvcmRlcj86IG51bWJlcjtcbn0pOiBMYXllcldyaXRlciB7XG5cdGNvbnN0IHZlcnNpb24gPSBvcHRpb25zPy52ZXJzaW9uID8/IFwiMTBcIjtcblx0Y29uc3QgdXNlcm5hbWVFeHByID0gb3B0aW9ucz8udXNlcm5hbWVFeHByID8/IFwiJHtVU0VSTkFNRX1cIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAxMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFxuXHRcdFx0XHRcdFwicG5wbS1pbnN0YWxsXCIsXG5cdFx0XHRcdFx0YG5wbSBpbnN0YWxsIC0tZ2xvYmFsIG5wbUBsYXRlc3QgJiYgbnBtIGFkZCAtLWdsb2JhbCBwbnBtQCR7dmVyc2lvbn1gLFxuXHRcdFx0XHRcdG9yZGVyLFxuXHRcdFx0XHQpLFxuXHRcdFx0KVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFxuXHRcdFx0XHRcdFwicG5wbS1jb25maWdcIixcblx0XHRcdFx0XHRgbWtkaXIgLXAgL2hvbWUvJHt1c2VybmFtZUV4cHJ9Ly5jb25maWcvcG5wbSAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLnBucG0tc3RvcmUgJiYgY2hvd24gLVIgJHt1c2VybmFtZUV4cHJ9OiR7dXNlcm5hbWVFeHByfSAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLmNvbmZpZyAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLnBucG0tc3RvcmUgJiYgcHJpbnRmIFwic3RvcmUtZGlyPS9ob21lLyR7dXNlcm5hbWVFeHByfS8ucG5wbS1zdG9yZVxcXFxuXCIgPiAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLmNvbmZpZy9wbnBtL3JjYCxcblx0XHRcdFx0XHRvcmRlciArIDEsXG5cdFx0XHRcdCksXG5cdFx0XHQpO1xuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFdvcmtzcGFjZU5vZGVNb2R1bGVzT3duZXJzaGlwKG9wdGlvbnM/OiB7XG5cdHdvcmtzcGFjZURpcj86IHN0cmluZztcblx0dXNlcm5hbWVFeHByPzogc3RyaW5nO1xuXHRvcmRlcj86IG51bWJlcjtcbn0pOiBMYXllcldyaXRlciB7XG5cdGNvbnN0IHdvcmtzcGFjZURpciA9IG9wdGlvbnM/LndvcmtzcGFjZURpciA/PyBcIi93b3Jrc3BhY2VcIjtcblx0Y29uc3QgdXNlcm5hbWVFeHByID0gb3B0aW9ucz8udXNlcm5hbWVFeHByID8/IFwiJHtVU0VSTkFNRX1cIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAyMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKFxuXHRcdFx0RG9ja2VyU3RlcC5yYXcoXG5cdFx0XHRcdFwid29ya3NwYWNlLW5vZGUtbW9kdWxlc1wiLFxuXHRcdFx0XHRgUlVOIG1rZGlyIC1wICR7d29ya3NwYWNlRGlyfS9ub2RlX21vZHVsZXMgJiYgY2hvd24gJHt1c2VybmFtZUV4cHJ9OiR7dXNlcm5hbWVFeHByfSAke3dvcmtzcGFjZURpcn0vbm9kZV9tb2R1bGVzYCxcblx0XHRcdFx0b3JkZXIsXG5cdFx0XHQpLFxuXHRcdCk7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVnNDb2RlSnNEZWJ1Z0Jvb3Rsb2FkZXJGaXgob3B0aW9ucz86IHtcblx0YmFzaHJjUGF0aD86IHN0cmluZztcblx0b3JkZXI/OiBudW1iZXI7XG59KTogTGF5ZXJXcml0ZXIge1xuXHRjb25zdCBiYXNocmNQYXRoID0gb3B0aW9ucz8uYmFzaHJjUGF0aCA/PyBcIi9ob21lLyR7VVNFUk5BTUV9Ly5iYXNocmNcIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAzMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKFxuXHRcdFx0RG9ja2VyU3RlcC5yYXcoXG5cdFx0XHRcdFwidnNjb2RlLWJvb3Rsb2FkZXItZml4XCIsXG5cdFx0XHRcdGBSVU4gY2F0IDw8J0VPRicgPj4gXCIke2Jhc2hyY1BhdGh9XCJcXG4ke1ZTQ09ERV9CT09UTE9BREVSX0ZJWF9CQVNIX1NOSVBQRVR9XFxuRU9GYCxcblx0XHRcdFx0b3JkZXIsXG5cdFx0XHQpLFxuXHRcdCk7XG5cdH07XG59XG5cbmV4cG9ydCBjbGFzcyBEb2NrZXJmaWxlTW9kZWwgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuRE9DS0VSRklMRTtcblx0cHJpdmF0ZSByZWFkb25seSBfc3RlcHMgPSBuZXcgTWFwPHN0cmluZywgRG9ja2VyU3RlcD4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfbGF5ZXJXcml0ZXJzOiBMYXllcldyaXRlcltdID0gW107XG5cdHByaXZhdGUgX2Zyb21JbWFnZTogc3RyaW5nO1xuXHRwcml2YXRlIF9sYXllckNvdW50ZXIgPSAwO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihiYXNlSW1hZ2U6IHN0cmluZykge1xuXHRcdHRoaXMuX2Zyb21JbWFnZSA9IGJhc2VJbWFnZTtcblx0XHR0aGlzLnJlZ2lzdGVyQmFzZUxheWVycygpO1xuXHR9XG5cblx0cHVibGljIGZyb20oYmFzZUltYWdlOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9mcm9tSW1hZ2UgPSBiYXNlSW1hZ2U7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgYWRkTGF5ZXIobGF5ZXI6IExheWVyV3JpdGVyIHwgc3RyaW5nLCBvcmRlciA9IFN0ZXBPcmRlci5mZWF0dXJlcyk6IHRoaXMge1xuXHRcdGlmICh0eXBlb2YgbGF5ZXIgPT09IFwic3RyaW5nXCIpIHtcblx0XHRcdGNvbnN0IGlkeCA9ICsrdGhpcy5fbGF5ZXJDb3VudGVyO1xuXHRcdFx0Y29uc3Qga2V5ID0gYGxheWVyLXJ1bi0ke2lkeH1gO1xuXHRcdFx0dGhpcy5fbGF5ZXJXcml0ZXJzLnB1c2goKGRvY2tlcmZpbGUpID0+IHtcblx0XHRcdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKERvY2tlclN0ZXAucnVuKGtleSwgbGF5ZXIsIG9yZGVyICsgaWR4KSk7XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblxuXHRcdHRoaXMuX2xheWVyV3JpdGVycy5wdXNoKGxheWVyKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBhZGRTdGVwKHN0ZXA6IERvY2tlclN0ZXApOiB0aGlzIHtcblx0XHR0aGlzLl9zdGVwcy5zZXQoc3RlcC5rZXksIHN0ZXApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbW92ZVN0ZXAoa2V5OiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9zdGVwcy5kZWxldGUoa2V5KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBlbnRyeXBvaW50KHZhbHVlOiBzdHJpbmcgfCByZWFkb25seSBzdHJpbmdbXSwgb3JkZXIgPSBTdGVwT3JkZXIuZW50cnlwb2ludCk6IHRoaXMge1xuXHRcdHRoaXMuYWRkU3RlcChEb2NrZXJTdGVwLmVudHJ5cG9pbnQoXCJlbnRyeXBvaW50XCIsIHZhbHVlLCBvcmRlcikpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFkZFJ1blN0ZXAoY21kOiBzdHJpbmcpOiB0aGlzIHtcblx0XHRyZXR1cm4gdGhpcy5hZGRMYXllcihjbWQpO1xuXHR9XG5cblx0cHVibGljIGJ1aWxkKCk6IHN0cmluZyB7XG5cdFx0Zm9yIChjb25zdCBsYXllcldyaXRlciBvZiB0aGlzLl9sYXllcldyaXRlcnMpIHtcblx0XHRcdGxheWVyV3JpdGVyKHRoaXMpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGxpbmVzID0gW2BGUk9NICR7dGhpcy5fZnJvbUltYWdlfWBdO1xuXHRcdGNvbnN0IHNvcnRlZFN0ZXBzID0gWy4uLnRoaXMuX3N0ZXBzLnZhbHVlcygpXS5zb3J0KChsZWZ0LCByaWdodCkgPT4ge1xuXHRcdFx0aWYgKGxlZnQub3JkZXIgIT09IHJpZ2h0Lm9yZGVyKSB7XG5cdFx0XHRcdHJldHVybiBsZWZ0Lm9yZGVyIC0gcmlnaHQub3JkZXI7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gbGVmdC5rZXkubG9jYWxlQ29tcGFyZShyaWdodC5rZXksIFwiZW5cIik7XG5cdFx0fSk7XG5cblx0XHRmb3IgKGNvbnN0IHN0ZXAgb2Ygc29ydGVkU3RlcHMpIHtcblx0XHRcdGxpbmVzLnB1c2goXCJcIiwgc3RlcC5jb250ZW50KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYCR7bGluZXMuam9pbihcIlxcblwiKX1cXG5gO1xuXHR9XG5cblx0cHJvdGVjdGVkIHJlZ2lzdGVyQmFzZUxheWVycygpOiB2b2lkIHtcblx0XHQvLyBHZW5lcmljIGJhc2UgbW9kZWwgaW50ZW50aW9uYWxseSBoYXMgbm8gZGVmYXVsdCBsYXllcnMuXG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRyZXR1cm4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIuL0RvY2tlcmZpbGVcIixcblx0XHRcdFx0Y29udGVudDogdGhpcy5idWlsZCgpLFxuXHRcdFx0fSxcblx0XHRdO1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBEZXZDb250YWluZXJJbWFnZU1vZGVsIGV4dGVuZHMgRG9ja2VyZmlsZU1vZGVsIHtcblx0cHJvdGVjdGVkIG92ZXJyaWRlIHJlZ2lzdGVyQmFzZUxheWVycygpOiB2b2lkIHtcblx0XHRzdXBlci5yZWdpc3RlckJhc2VMYXllcnMoKTtcblx0XHR0aGlzLmFkZExheWVyKHdpdGhDb21tYW5kSGlzdG9yeSgpKS5hZGRMYXllcih3aXRoVnNDb2RlSnNEZWJ1Z0Jvb3Rsb2FkZXJGaXgoKSk7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRyZXR1cm4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIuZGV2Y29udGFpbmVyL0RvY2tlcmZpbGVcIixcblx0XHRcdFx0Y29udGVudDogdGhpcy5idWlsZCgpLFxuXHRcdFx0fSxcblx0XHRdO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiV0VMTF9LTk9XTl9GSUxFUyIsIkRvY2tlclN0ZXAiLCJrZXkiLCJjb250ZW50Iiwib3JkZXIiLCJydW4iLCJjb21tYW5kIiwicmF3IiwiZW50cnlwb2ludCIsInZhbHVlIiwiSlNPTiIsInN0cmluZ2lmeSIsIlN0ZXBPcmRlciIsImJhc2UiLCJmZWF0dXJlcyIsInVzZXIiLCJWU0NPREVfQk9PVExPQURFUl9GSVhfQkFTSF9TTklQUEVUIiwid2l0aENvbW1hbmRIaXN0b3J5Iiwib3B0aW9ucyIsImhpc3RvcnlEaXIiLCJoaXN0b3J5RmlsZU5hbWUiLCJoaXN0b3J5RmlsZSIsImRvY2tlcmZpbGUiLCJhZGRTdGVwIiwid2l0aE5vZGVVc2VyIiwidXNlcm5hbWUiLCJpbmNsdWRlVXNlckluc3RydWN0aW9uIiwid2l0aFBucG0iLCJ2ZXJzaW9uIiwidXNlcm5hbWVFeHByIiwid2l0aFdvcmtzcGFjZU5vZGVNb2R1bGVzT3duZXJzaGlwIiwid29ya3NwYWNlRGlyIiwid2l0aFZzQ29kZUpzRGVidWdCb290bG9hZGVyRml4IiwiYmFzaHJjUGF0aCIsIkRvY2tlcmZpbGVNb2RlbCIsIkRPQ0tFUkZJTEUiLCJfc3RlcHMiLCJNYXAiLCJfbGF5ZXJXcml0ZXJzIiwiX2Zyb21JbWFnZSIsIl9sYXllckNvdW50ZXIiLCJiYXNlSW1hZ2UiLCJyZWdpc3RlckJhc2VMYXllcnMiLCJmcm9tIiwiYWRkTGF5ZXIiLCJsYXllciIsImlkeCIsInB1c2giLCJzdGVwIiwic2V0IiwicmVtb3ZlU3RlcCIsImRlbGV0ZSIsImFkZFJ1blN0ZXAiLCJjbWQiLCJidWlsZCIsImxheWVyV3JpdGVyIiwibGluZXMiLCJzb3J0ZWRTdGVwcyIsInZhbHVlcyIsInNvcnQiLCJsZWZ0IiwicmlnaHQiLCJsb2NhbGVDb21wYXJlIiwiam9p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
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2RvY2tlci1pbWFnZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCB0eXBlIExheWVyV3JpdGVyID0gKGRvY2tlcmZpbGU6IERvY2tlcmZpbGVNb2RlbCkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIERvY2tlclN0ZXAge1xuXHRwdWJsaWMgY29uc3RydWN0b3IoXG5cdFx0cHVibGljIHJlYWRvbmx5IGtleTogc3RyaW5nLFxuXHRcdHB1YmxpYyByZWFkb25seSBjb250ZW50OiBzdHJpbmcsXG5cdFx0cHVibGljIHJlYWRvbmx5IG9yZGVyID0gMCxcblx0KSB7fVxuXG5cdHB1YmxpYyBzdGF0aWMgcnVuKGtleTogc3RyaW5nLCBjb21tYW5kOiBzdHJpbmcsIG9yZGVyID0gMCkge1xuXHRcdHJldHVybiBuZXcgRG9ja2VyU3RlcChrZXksIGBSVU4gJHtjb21tYW5kfWAsIG9yZGVyKTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgcmF3KGtleTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcsIG9yZGVyID0gMCkge1xuXHRcdHJldHVybiBuZXcgRG9ja2VyU3RlcChrZXksIGNvbnRlbnQsIG9yZGVyKTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgZW50cnlwb2ludChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHJlYWRvbmx5IHN0cmluZ1tdLCBvcmRlciA9IDApIHtcblx0XHRjb25zdCBjb250ZW50ID1cblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIlxuXHRcdFx0XHQ/IGBFTlRSWVBPSU5UICR7dmFsdWV9YFxuXHRcdFx0XHQ6IGBFTlRSWVBPSU5UICR7SlNPTi5zdHJpbmdpZnkodmFsdWUpfWA7XG5cdFx0cmV0dXJuIG5ldyBEb2NrZXJTdGVwKGtleSwgY29udGVudCwgb3JkZXIpO1xuXHR9XG59XG5cbmNvbnN0IFN0ZXBPcmRlciA9IHtcblx0YmFzZTogMV8wMDAsXG5cdGZlYXR1cmVzOiA1XzAwMCxcblx0dXNlcjogOV8wMDAsXG5cdGVudHJ5cG9pbnQ6IDEwXzAwMCxcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IFZTQ09ERV9CT09UTE9BREVSX0ZJWF9CQVNIX1NOSVBQRVQgPSBgaWYgW1sgLW4gXCJcXCR7Tk9ERV9PUFRJT05TOi19XCIgJiYgXCJcXCR7Tk9ERV9PUFRJT05TfVwiID09ICpcImJvb3Rsb2FkZXIuanNcIiogXV07IHRoZW5cbiAgICBfYm9vdGxvYWRlcl9wYXRoPVwiJChwcmludGYgJyVzXFxcXG4nIFwiJE5PREVfT1BUSU9OU1wiIHwgc2VkIC1uICdzLy4qLS1yZXF1aXJlWz0gXVxcXFwoW15bOnNwYWNlOl1dKmJvb3Rsb2FkZXJcXFxcLmpzXFxcXCkuKi9cXFxcMS9wJylcIlxuICAgIGlmIFtbIC1uIFwiXFwke19ib290bG9hZGVyX3BhdGh9XCIgJiYgISAtZiBcIlxcJHtfYm9vdGxvYWRlcl9wYXRofVwiIF1dOyB0aGVuXG4gICAgICAgIF9zdGFibGVfYm9vdGxvYWRlcj1cIiQoZmluZCAvdnNjb2RlL3ZzY29kZS1zZXJ2ZXIgL2hvbWUvbm9kZS8udnNjb2RlLXNlcnZlci9leHRlbnNpb25zIC1uYW1lIFwiYm9vdGxvYWRlci5qc1wiIC1wYXRoIFwiKi9tcy12c2NvZGUuanMtZGVidWcvKlwiIDI+L2Rldi9udWxsIHwgaGVhZCAtMSlcIlxuICAgICAgICBpZiBbWyAtbiBcIlxcJHtfc3RhYmxlX2Jvb3Rsb2FkZXJ9XCIgXV07IHRoZW5cbiAgICAgICAgICAgIE5PREVfT1BUSU9OUz1cIlxcJHtOT0RFX09QVElPTlMvL1xcJHtfYm9vdGxvYWRlcl9wYXRofS9cXCR7X3N0YWJsZV9ib290bG9hZGVyfX1cIlxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBOT0RFX09QVElPTlM9XCIkKHByaW50ZiAnJXNcXFxcbicgXCIkTk9ERV9PUFRJT05TXCIgfCBzZWQgLUUgJ3MjKF58ICktLXJlcXVpcmUoPXwgKVtbOmdyYXBoOl1dKmJvb3Rsb2FkZXJcXFxcLmpzKCB8JCkjICNnOyBzIyAgKyMgI2c7IHMjXiAjIzsgcyMgJCMjJylcIlxuICAgICAgICAgICAgdW5zZXQgVlNDT0RFX0lOU1BFQ1RPUl9PUFRJT05TXG4gICAgICAgIGZpXG4gICAgICAgIGV4cG9ydCBOT0RFX09QVElPTlNcbiAgICAgICAgaWYgW1sgLXogXCIkTk9ERV9PUFRJT05TXCIgXV07IHRoZW5cbiAgICAgICAgICAgIHVuc2V0IE5PREVfT1BUSU9OU1xuICAgICAgICBmaVxuICAgIGZpXG4gICAgdW5zZXQgX2Jvb3Rsb2FkZXJfcGF0aCBfc3RhYmxlX2Jvb3Rsb2FkZXJcbmZpYDtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhDb21tYW5kSGlzdG9yeShvcHRpb25zPzoge1xuXHRoaXN0b3J5RGlyPzogc3RyaW5nO1xuXHRoaXN0b3J5RmlsZU5hbWU/OiBzdHJpbmc7XG5cdG9yZGVyPzogbnVtYmVyO1xufSk6IExheWVyV3JpdGVyIHtcblx0Y29uc3QgaGlzdG9yeURpciA9IG9wdGlvbnM/Lmhpc3RvcnlEaXIgPz8gXCIvY29tbWFuZGhpc3RvcnlcIjtcblx0Y29uc3QgaGlzdG9yeUZpbGVOYW1lID0gb3B0aW9ucz8uaGlzdG9yeUZpbGVOYW1lID8/IFwiLmJhc2hfaGlzdG9yeVwiO1xuXHRjb25zdCBvcmRlciA9IG9wdGlvbnM/Lm9yZGVyID8/IFN0ZXBPcmRlci5iYXNlO1xuXHRjb25zdCBoaXN0b3J5RmlsZSA9IGAke2hpc3RvcnlEaXJ9LyR7aGlzdG9yeUZpbGVOYW1lfWA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFwiaGlzdG9yeS1kaXJcIiwgYG1rZGlyIC1wICR7aGlzdG9yeURpcn0gJiYgdG91Y2ggJHtoaXN0b3J5RmlsZX1gLCBvcmRlciksXG5cdFx0XHQpXG5cdFx0XHQuYWRkU3RlcChEb2NrZXJTdGVwLnJhdyhcImhpc3RvcnktZW52XCIsIGBFTlYgSElTVEZJTEU9JHtoaXN0b3J5RmlsZX1gLCBvcmRlciArIDEpKTtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhOb2RlVXNlcihvcHRpb25zPzoge1xuXHR1c2VybmFtZT86IHN0cmluZztcblx0aW5jbHVkZVVzZXJJbnN0cnVjdGlvbj86IGJvb2xlYW47XG5cdG9yZGVyPzogbnVtYmVyO1xufSk6IExheWVyV3JpdGVyIHtcblx0Y29uc3QgdXNlcm5hbWUgPSBvcHRpb25zPy51c2VybmFtZSA/PyBcIm5vZGVcIjtcblx0Y29uc3QgaW5jbHVkZVVzZXJJbnN0cnVjdGlvbiA9IG9wdGlvbnM/LmluY2x1ZGVVc2VySW5zdHJ1Y3Rpb24gPz8gdHJ1ZTtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXM7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKERvY2tlclN0ZXAucmF3KFwiYXJnLXVzZXJuYW1lXCIsIGBBUkcgVVNFUk5BTUU9JHt1c2VybmFtZX1gLCBvcmRlcikpO1xuXG5cdFx0aWYgKGluY2x1ZGVVc2VySW5zdHJ1Y3Rpb24pIHtcblx0XHRcdGRvY2tlcmZpbGUuYWRkU3RlcChEb2NrZXJTdGVwLnJhdyhcInVzZXJcIiwgXCJVU0VSICR7VVNFUk5BTUV9XCIsIFN0ZXBPcmRlci51c2VyKSk7XG5cdFx0fVxuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFBucG0ob3B0aW9ucz86IHtcblx0dmVyc2lvbj86IHN0cmluZztcblx0dXNlcm5hbWVFeHByPzogc3RyaW5nO1xuXHRvcmRlcj86IG51bWJlcjtcbn0pOiBMYXllcldyaXRlciB7XG5cdGNvbnN0IHZlcnNpb24gPSBvcHRpb25zPy52ZXJzaW9uID8/IFwiMTBcIjtcblx0Y29uc3QgdXNlcm5hbWVFeHByID0gb3B0aW9ucz8udXNlcm5hbWVFeHByID8/IFwiJHtVU0VSTkFNRX1cIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAxMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFxuXHRcdFx0XHRcdFwicG5wbS1pbnN0YWxsXCIsXG5cdFx0XHRcdFx0YG5wbSBpbnN0YWxsIC0tZ2xvYmFsIG5wbUBsYXRlc3QgJiYgbnBtIGFkZCAtLWdsb2JhbCBwbnBtQCR7dmVyc2lvbn1gLFxuXHRcdFx0XHRcdG9yZGVyLFxuXHRcdFx0XHQpLFxuXHRcdFx0KVxuXHRcdFx0LmFkZFN0ZXAoXG5cdFx0XHRcdERvY2tlclN0ZXAucnVuKFxuXHRcdFx0XHRcdFwicG5wbS1jb25maWdcIixcblx0XHRcdFx0XHRgbWtkaXIgLXAgL2hvbWUvJHt1c2VybmFtZUV4cHJ9Ly5jb25maWcvcG5wbSAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLnBucG0tc3RvcmUgJiYgY2hvd24gLVIgJHt1c2VybmFtZUV4cHJ9OiR7dXNlcm5hbWVFeHByfSAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLmNvbmZpZyAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLnBucG0tc3RvcmUgJiYgcHJpbnRmIFwic3RvcmUtZGlyPS9ob21lLyR7dXNlcm5hbWVFeHByfS8ucG5wbS1zdG9yZVxcXFxuXCIgPiAvaG9tZS8ke3VzZXJuYW1lRXhwcn0vLmNvbmZpZy9wbnBtL3JjYCxcblx0XHRcdFx0XHRvcmRlciArIDEsXG5cdFx0XHRcdCksXG5cdFx0XHQpO1xuXHR9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aFdvcmtzcGFjZU5vZGVNb2R1bGVzT3duZXJzaGlwKG9wdGlvbnM/OiB7XG5cdHdvcmtzcGFjZURpcj86IHN0cmluZztcblx0dXNlcm5hbWVFeHByPzogc3RyaW5nO1xuXHRvcmRlcj86IG51bWJlcjtcbn0pOiBMYXllcldyaXRlciB7XG5cdGNvbnN0IHdvcmtzcGFjZURpciA9IG9wdGlvbnM/LndvcmtzcGFjZURpciA/PyBcIi93b3Jrc3BhY2VcIjtcblx0Y29uc3QgdXNlcm5hbWVFeHByID0gb3B0aW9ucz8udXNlcm5hbWVFeHByID8/IFwiJHtVU0VSTkFNRX1cIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAyMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKFxuXHRcdFx0RG9ja2VyU3RlcC5yYXcoXG5cdFx0XHRcdFwid29ya3NwYWNlLW5vZGUtbW9kdWxlc1wiLFxuXHRcdFx0XHRgUlVOIG1rZGlyIC1wICR7d29ya3NwYWNlRGlyfS9ub2RlX21vZHVsZXMgJiYgY2hvd24gJHt1c2VybmFtZUV4cHJ9OiR7dXNlcm5hbWVFeHByfSAke3dvcmtzcGFjZURpcn0vbm9kZV9tb2R1bGVzYCxcblx0XHRcdFx0b3JkZXIsXG5cdFx0XHQpLFxuXHRcdCk7XG5cdH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoVnNDb2RlSnNEZWJ1Z0Jvb3Rsb2FkZXJGaXgob3B0aW9ucz86IHtcblx0YmFzaHJjUGF0aD86IHN0cmluZztcblx0b3JkZXI/OiBudW1iZXI7XG59KTogTGF5ZXJXcml0ZXIge1xuXHRjb25zdCBiYXNocmNQYXRoID0gb3B0aW9ucz8uYmFzaHJjUGF0aCA/PyBcIi9ob21lLyR7VVNFUk5BTUV9Ly5iYXNocmNcIjtcblx0Y29uc3Qgb3JkZXIgPSBvcHRpb25zPy5vcmRlciA/PyBTdGVwT3JkZXIuZmVhdHVyZXMgKyAzMDA7XG5cblx0cmV0dXJuIChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0ZG9ja2VyZmlsZS5hZGRTdGVwKFxuXHRcdFx0RG9ja2VyU3RlcC5yYXcoXG5cdFx0XHRcdFwidnNjb2RlLWJvb3Rsb2FkZXItZml4XCIsXG5cdFx0XHRcdFtcblx0XHRcdFx0XHRcIiMgVlMgQ29kZSAvIEN1cnNvciBqcy1kZWJ1ZyBBdXRvIEF0dGFjaCBpbmplY3RzIC0tcmVxdWlyZSDigKYvYm9vdGxvYWRlci5qcyBpbnRvXCIsXG5cdFx0XHRcdFx0XCIjIE5PREVfT1BUSU9OUy4gT24gYSBmcmVzaCBEZXYgQ29udGFpbmVyIHRoYXQgcGF0aCBvZnRlbiBkb2VzIG5vdCBleGlzdCB5ZXRcIixcblx0XHRcdFx0XHRcIiMgKHdvcmtzcGFjZVN0b3JhZ2UgZmlsZSBpcyBvbmx5IGNyZWF0ZWQgYWZ0ZXIgdG9nZ2xpbmcgQXV0byBBdHRhY2gpLCB3aGljaCBjcmFzaGVzXCIsXG5cdFx0XHRcdFx0XCIjIGV2ZXJ5IE5vZGUgY29tbWFuZC4gSWYgdGhlIGluamVjdGVkIHBhdGggaXMgbWlzc2luZywgcHJlZmVyIHRoZSBzdGFibGVcIixcblx0XHRcdFx0XHRcIiMgYm9vdGxvYWRlciBmcm9tIHRoZSBzZXJ2ZXIgZXh0ZW5zaW9uIGluc3RhbGw7IG90aGVyd2lzZSBzdHJpcCB0aGUgYmFkIHJlcXVpcmUuXCIsXG5cdFx0XHRcdFx0YFJVTiBjYXQgPDwnRU9GJyA+PiBcIiR7YmFzaHJjUGF0aH1cImAsXG5cdFx0XHRcdFx0VlNDT0RFX0JPT1RMT0FERVJfRklYX0JBU0hfU05JUFBFVCxcblx0XHRcdFx0XHRcIkVPRlwiLFxuXHRcdFx0XHRdLmpvaW4oXCJcXG5cIiksXG5cdFx0XHRcdG9yZGVyLFxuXHRcdFx0KSxcblx0XHQpO1xuXHR9O1xufVxuXG5leHBvcnQgY2xhc3MgRG9ja2VyZmlsZU1vZGVsIGltcGxlbWVudHMgS2V5ZWRNb2RlbCB7XG5cdHB1YmxpYyByZWFkb25seSBrZXkgPSBXRUxMX0tOT1dOX0ZJTEVTLkRPQ0tFUkZJTEU7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3N0ZXBzID0gbmV3IE1hcDxzdHJpbmcsIERvY2tlclN0ZXA+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX2xheWVyV3JpdGVyczogTGF5ZXJXcml0ZXJbXSA9IFtdO1xuXHRwcml2YXRlIF9mcm9tSW1hZ2U6IHN0cmluZztcblx0cHJpdmF0ZSBfbGF5ZXJDb3VudGVyID0gMDtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoYmFzZUltYWdlOiBzdHJpbmcpIHtcblx0XHR0aGlzLl9mcm9tSW1hZ2UgPSBiYXNlSW1hZ2U7XG5cdFx0dGhpcy5yZWdpc3RlckJhc2VMYXllcnMoKTtcblx0fVxuXG5cdHB1YmxpYyBmcm9tKGJhc2VJbWFnZTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fZnJvbUltYWdlID0gYmFzZUltYWdlO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFkZExheWVyKGxheWVyOiBMYXllcldyaXRlciB8IHN0cmluZywgb3JkZXIgPSBTdGVwT3JkZXIuZmVhdHVyZXMpOiB0aGlzIHtcblx0XHRpZiAodHlwZW9mIGxheWVyID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRjb25zdCBpZHggPSArK3RoaXMuX2xheWVyQ291bnRlcjtcblx0XHRcdGNvbnN0IGtleSA9IGBsYXllci1ydW4tJHtpZHh9YDtcblx0XHRcdHRoaXMuX2xheWVyV3JpdGVycy5wdXNoKChkb2NrZXJmaWxlKSA9PiB7XG5cdFx0XHRcdGRvY2tlcmZpbGUuYWRkU3RlcChEb2NrZXJTdGVwLnJ1bihrZXksIGxheWVyLCBvcmRlciArIGlkeCkpO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gdGhpcztcblx0XHR9XG5cblx0XHR0aGlzLl9sYXllcldyaXRlcnMucHVzaChsYXllcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgYWRkU3RlcChzdGVwOiBEb2NrZXJTdGVwKTogdGhpcyB7XG5cdFx0dGhpcy5fc3RlcHMuc2V0KHN0ZXAua2V5LCBzdGVwKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyByZW1vdmVTdGVwKGtleTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fc3RlcHMuZGVsZXRlKGtleSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZW50cnlwb2ludCh2YWx1ZTogc3RyaW5nIHwgcmVhZG9ubHkgc3RyaW5nW10sIG9yZGVyID0gU3RlcE9yZGVyLmVudHJ5cG9pbnQpOiB0aGlzIHtcblx0XHR0aGlzLmFkZFN0ZXAoRG9ja2VyU3RlcC5lbnRyeXBvaW50KFwiZW50cnlwb2ludFwiLCB2YWx1ZSwgb3JkZXIpKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBhZGRSdW5TdGVwKGNtZDogc3RyaW5nKTogdGhpcyB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkTGF5ZXIoY21kKTtcblx0fVxuXG5cdHB1YmxpYyBidWlsZCgpOiBzdHJpbmcge1xuXHRcdGZvciAoY29uc3QgbGF5ZXJXcml0ZXIgb2YgdGhpcy5fbGF5ZXJXcml0ZXJzKSB7XG5cdFx0XHRsYXllcldyaXRlcih0aGlzKTtcblx0XHR9XG5cblx0XHRjb25zdCBsaW5lcyA9IFtgRlJPTSAke3RoaXMuX2Zyb21JbWFnZX1gXTtcblx0XHRjb25zdCBzb3J0ZWRTdGVwcyA9IFsuLi50aGlzLl9zdGVwcy52YWx1ZXMoKV0uc29ydCgobGVmdCwgcmlnaHQpID0+IHtcblx0XHRcdGlmIChsZWZ0Lm9yZGVyICE9PSByaWdodC5vcmRlcikge1xuXHRcdFx0XHRyZXR1cm4gbGVmdC5vcmRlciAtIHJpZ2h0Lm9yZGVyO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGxlZnQua2V5LmxvY2FsZUNvbXBhcmUocmlnaHQua2V5LCBcImVuXCIpO1xuXHRcdH0pO1xuXG5cdFx0Zm9yIChjb25zdCBzdGVwIG9mIHNvcnRlZFN0ZXBzKSB7XG5cdFx0XHRsaW5lcy5wdXNoKFwiXCIsIHN0ZXAuY29udGVudCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGAke2xpbmVzLmpvaW4oXCJcXG5cIil9XFxuYDtcblx0fVxuXG5cdHByb3RlY3RlZCByZWdpc3RlckJhc2VMYXllcnMoKTogdm9pZCB7XG5cdFx0Ly8gR2VuZXJpYyBiYXNlIG1vZGVsIGludGVudGlvbmFsbHkgaGFzIG5vIGRlZmF1bHQgbGF5ZXJzLlxuXHR9XG5cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwiLi9Eb2NrZXJmaWxlXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IHRoaXMuYnVpbGQoKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgRGV2Q29udGFpbmVySW1hZ2VNb2RlbCBleHRlbmRzIERvY2tlcmZpbGVNb2RlbCB7XG5cdHByb3RlY3RlZCBvdmVycmlkZSByZWdpc3RlckJhc2VMYXllcnMoKTogdm9pZCB7XG5cdFx0c3VwZXIucmVnaXN0ZXJCYXNlTGF5ZXJzKCk7XG5cdFx0dGhpcy5hZGRMYXllcih3aXRoQ29tbWFuZEhpc3RvcnkoKSkuYWRkTGF5ZXIod2l0aFZzQ29kZUpzRGVidWdCb290bG9hZGVyRml4KCkpO1xuXHR9XG5cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwiLmRldmNvbnRhaW5lci9Eb2NrZXJmaWxlXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IHRoaXMuYnVpbGQoKSxcblx0XHRcdH0sXG5cdFx0XTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldFTExfS05PV05fRklMRVMiLCJEb2NrZXJTdGVwIiwia2V5IiwiY29udGVudCIsIm9yZGVyIiwicnVuIiwiY29tbWFuZCIsInJhdyIsImVudHJ5cG9pbnQiLCJ2YWx1ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJTdGVwT3JkZXIiLCJiYXNlIiwiZmVhdHVyZXMiLCJ1c2VyIiwiVlNDT0RFX0JPT1RMT0FERVJfRklYX0JBU0hfU05JUFBFVCIsIndpdGhDb21tYW5kSGlzdG9yeSIsIm9wdGlvbnMiLCJoaXN0b3J5RGlyIiwiaGlzdG9yeUZpbGVOYW1lIiwiaGlzdG9yeUZpbGUiLCJkb2NrZXJmaWxlIiwiYWRkU3RlcCIsIndpdGhOb2RlVXNlciIsInVzZXJuYW1lIiwiaW5jbHVkZVVzZXJJbnN0cnVjdGlvbiIsIndpdGhQbnBtIiwidmVyc2lvbiIsInVzZXJuYW1lRXhwciIsIndpdGhXb3Jrc3BhY2VOb2RlTW9kdWxlc093bmVyc2hpcCIsIndvcmtzcGFjZURpciIsIndpdGhWc0NvZGVKc0RlYnVnQm9vdGxvYWRlckZpeCIsImJhc2hyY1BhdGgiLCJqb2luIiwiRG9ja2VyZmlsZU1vZGVsIiwiRE9DS0VSRklMRSIsIl9zdGVwcyIsIk1hcCIsIl9sYXllcldyaXRlcnMiLCJfZnJvbUltYWdlIiwiX2xheWVyQ291bnRlciIsImJhc2VJbWFnZSIsInJlZ2lzdGVyQmFzZUxheWVycyIsImZyb20iLCJhZGRMYXllciIsImxheWVyIiwiaWR4IiwicHVzaCIsInN0ZXAiLCJzZXQiLCJyZW1vdmVTdGVwIiwiZGVsZXRlIiwiYWRkUnVuU3RlcCIsImNtZCIsImJ1aWxkIiwibGF5ZXJXcml0ZXIiLCJsaW5lcyIsInNvcnRlZFN0ZXBzIiwidmFsdWVzIiwic29ydCIsImxlZnQiLCJyaWdodCIsImxvY2FsZUNvbXBhcmUiLCJmaWxlcyIsImZpbGVQYXRoIiwiRGV2Q29udGFpbmVySW1hZ2VNb2RlbCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsYUFBYTtBQUs5QyxPQUFPLE1BQU1DOzs7O0lBQ1osWUFDQyxBQUFnQkMsR0FBVyxFQUMzQixBQUFnQkMsT0FBZSxFQUMvQixBQUFnQkMsUUFBUSxDQUFDLENBQ3hCO2FBSGVGLE1BQUFBO2FBQ0FDLFVBQUFBO2FBQ0FDLFFBQUFBO0lBQ2Q7SUFFSCxPQUFjQyxJQUFJSCxHQUFXLEVBQUVJLE9BQWUsRUFBRUYsUUFBUSxDQUFDLEVBQUU7UUFDMUQsT0FBTyxJQUFJSCxXQUFXQyxLQUFLLENBQUMsSUFBSSxFQUFFSSxTQUFTLEVBQUVGO0lBQzlDO0lBRUEsT0FBY0csSUFBSUwsR0FBVyxFQUFFQyxPQUFl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
@@ -6,7 +6,6 @@ export class Gitignore {
6
6
  "dist",
7
7
  ".pnpm-store",
8
8
  ".env",
9
- ".env.local",
10
9
  ".DS_Store"
11
10
  ];
12
11
  files() {
@@ -19,4 +18,4 @@ export class Gitignore {
19
18
  }
20
19
  }
21
20
 
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2dpdGlnbm9yZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBHaXRpZ25vcmUgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuR0lUSUdOT1JFO1xuXHRwcml2YXRlIGlnbm9yZUxpc3QgPSBbXG5cdFx0XCJub2RlX21vZHVsZXNcIixcblx0XHRcImRpc3RcIixcblx0XHRcIi5wbnBtLXN0b3JlXCIsXG5cdFx0XCIuZW52XCIsXG5cdFx0XCIuZW52LmxvY2FsXCIsXG5cdFx0XCIuRFNfU3RvcmVcIixcblx0XTtcblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRyZXR1cm4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIuZ2l0aWdub3JlXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IHRoaXMuaWdub3JlTGlzdC5qb2luKFwiXFxuXCIpLFxuXHRcdFx0fSxcblx0XHRdO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiV0VMTF9LTk9XTl9GSUxFUyIsIkdpdGlnbm9yZSIsImtleSIsIkdJVElHTk9SRSIsImlnbm9yZUxpc3QiLCJmaWxlcyIsImZpbGVQYXRoIiwiY29udGVudCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGdCQUFnQixRQUFRLGFBQWE7QUFHOUMsT0FBTyxNQUFNQztJQUNJQyxNQUFNRixpQkFBaUJHLFNBQVMsQ0FBQztJQUN6Q0MsYUFBYTtRQUNwQjtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7S0FDQSxDQUFDO0lBRUtDLFFBQXNCO1FBQzVCLE9BQU87WUFDTjtnQkFDQ0MsVUFBVTtnQkFDVkMsU0FBUyxJQUFJLENBQUNILFVBQVUsQ0FBQ0ksSUFBSSxDQUFDO1lBQy9CO1NBQ0E7SUFDRjtBQUNEIn0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL2dpdGlnbm9yZS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4vY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBHaXRpZ25vcmUgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuR0lUSUdOT1JFO1xuXHRwcml2YXRlIGlnbm9yZUxpc3QgPSBbXCJub2RlX21vZHVsZXNcIiwgXCJkaXN0XCIsIFwiLnBucG0tc3RvcmVcIiwgXCIuZW52XCIsIFwiLkRTX1N0b3JlXCJdO1xuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5naXRpZ25vcmVcIixcblx0XHRcdFx0Y29udGVudDogdGhpcy5pZ25vcmVMaXN0LmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiR2l0aWdub3JlIiwia2V5IiwiR0lUSUdOT1JFIiwiaWdub3JlTGlzdCIsImZpbGVzIiwiZmlsZVBhdGgiLCJjb250ZW50Iiwiam9pbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsYUFBYTtBQUc5QyxPQUFPLE1BQU1DO0lBQ0lDLE1BQU1GLGlCQUFpQkcsU0FBUyxDQUFDO0lBQ3pDQyxhQUFhO1FBQUM7UUFBZ0I7UUFBUTtRQUFlO1FBQVE7S0FBWSxDQUFDO0lBRTNFQyxRQUFzQjtRQUM1QixPQUFPO1lBQ047Z0JBQ0NDLFVBQVU7Z0JBQ1ZDLFNBQVMsSUFBSSxDQUFDSCxVQUFVLENBQUNJLElBQUksQ0FBQztZQUMvQjtTQUNBO0lBQ0Y7QUFDRCJ9
@@ -45,8 +45,13 @@ import { basename, dirname, join } from "node:path";
45
45
  export class WorkspaceScaffold {
46
46
  files = [];
47
47
  targetDir = process.cwd();
48
- /** Derived from the basename of targetDir. */ get name() {
49
- return basename(this.targetDir);
48
+ _name;
49
+ /** Project name — host directory basename, not the in-container mount path. */ get name() {
50
+ return this._name ?? basename(this.targetDir);
51
+ }
52
+ setName(name) {
53
+ this._name = name;
54
+ return this;
50
55
  }
51
56
  /** Add an ad-hoc file provider whose output is included at render time. */ addFile(provider) {
52
57
  this.files.push(...provider.files());
@@ -108,4 +113,4 @@ export class MonoRepoScaffold extends WorkspaceScaffold {
108
113
  }
109
114
  }
110
115
 
111
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL3Byb2plY3QubW9kZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXIsIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSwgU291cmNlRmlsZVByb3ZpZGVyIH0gZnJvbSBcIi4vc291cmNlLWZpbGUuanNcIjtcblxuLyoqXG4gKiBBIHN1Yi11bml0IG9mIHRoZSBtb25vcmVwbyAoZS5nLiBgcHJvamVjdHMvYXBpYCkuXG4gKlxuICogTW9kZWxzIGFuZCBmaWxlcyByZWdpc3RlcmVkIGhlcmUgcHJvZHVjZSBwYXRocyByZWxhdGl2ZSB0byBgZGlyYC4gVGhlIHBhcmVudFxuICogYE1vbm9SZXBvU2NhZmZvbGRgIGNhbGxzIGBmaWxlcygpYCBhbmQgcHJlcGVuZHMgYGRpci9gIHRvIGV2ZXJ5IHBhdGgsIHNvXG4gKiBtb2RlbHMgcmVtYWluIHVuYXdhcmUgb2Ygd2hlcmUgdGhleSBsaXZlIGluIHRoZSByZXBvLlxuICovXG5leHBvcnQgY2xhc3MgUHJvamVjdFNjYWZmb2xkIHtcblx0cHJpdmF0ZSByZWFkb25seSBfbW9kZWxzID0gbmV3IE1hcDxzdHJpbmcsIFNvdXJjZUZpbGVQcm92aWRlcj4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfZmlsZXM6IFNvdXJjZUZpbGVbXSA9IFtdO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZGlyOiBzdHJpbmcpIHt9XG5cblx0cHVibGljIGFkZE1vZGVsPFQgZXh0ZW5kcyBLZXllZE1vZGVsPihtb2RlbDogVCk6IFQge1xuXHRcdHRoaXMuX21vZGVscy5zZXQobW9kZWwua2V5LCBtb2RlbCk7XG5cdFx0cmV0dXJuIG1vZGVsO1xuXHR9XG5cblx0cHVibGljIGFkZEZpbGUocHJvdmlkZXI6IFNvdXJjZUZpbGVQcm92aWRlcik6IHRoaXMge1xuXHRcdHRoaXMuX2ZpbGVzLnB1c2goLi4ucHJvdmlkZXIuZmlsZXMoKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9kZWw8VCBleHRlbmRzIFNvdXJjZUZpbGVQcm92aWRlcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fbW9kZWxzLmdldChrZXkpIGFzIFQgfCB1bmRlZmluZWQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9kZWxzPFQgZXh0ZW5kcyBTb3VyY2VGaWxlUHJvdmlkZXI+KGN0b3I6IG5ldyAoLi4uYXJnczogbmV2ZXJbXSkgPT4gVCk6IFRbXSB7XG5cdFx0cmV0dXJuIFsuLi50aGlzLl9tb2RlbHMudmFsdWVzKCldLmZpbHRlcigobSk6IG0gaXMgVCA9PiBtIGluc3RhbmNlb2YgY3Rvcik7XG5cdH1cblxuXHQvKiogUmV0dXJucyBhbGwgZmlsZXMgd2l0aCBgZGlyL2AgcHJlcGVuZGVkIHRvIGVhY2ggcGF0aC4gKi9cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0Y29uc3QgYWxsID0gWy4uLnRoaXMuX2ZpbGVzLCAuLi5bLi4udGhpcy5fbW9kZWxzLnZhbHVlcygpXS5mbGF0TWFwKChtKSA9PiBtLmZpbGVzKCkpXTtcblx0XHRyZXR1cm4gYWxsLm1hcCgoZikgPT4gKHsgZmlsZVBhdGg6IGAke3RoaXMuZGlyfS8ke2YuZmlsZVBhdGh9YCwgY29udGVudDogZi5jb250ZW50IH0pKTtcblx0fVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV29ya3NwYWNlU2NhZmZvbGQge1xuXHRwdWJsaWMgcmVhZG9ubHkgZmlsZXM6IFNvdXJjZUZpbGVbXSA9IFtdO1xuXHRwdWJsaWMgdGFyZ2V0RGlyOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG5cdC8qKiBEZXJpdmVkIGZyb20gdGhlIGJhc2VuYW1lIG9mIHRhcmdldERpci4gKi9cblx0cHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIGJhc2VuYW1lKHRoaXMudGFyZ2V0RGlyKTtcblx0fVxuXG5cdC8qKiBBZGQgYW4gYWQtaG9jIGZpbGUgcHJvdmlkZXIgd2hvc2Ugb3V0cHV0IGlzIGluY2x1ZGVkIGF0IHJlbmRlciB0aW1lLiAqL1xuXHRwdWJsaWMgYWRkRmlsZShwcm92aWRlcjogU291cmNlRmlsZVByb3ZpZGVyKTogdGhpcyB7XG5cdFx0dGhpcy5maWxlcy5wdXNoKC4uLnByb3ZpZGVyLmZpbGVzKCkpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFic3RyYWN0IGFkZE1vZGVsPFQgZXh0ZW5kcyBLZXllZE1vZGVsPihtb2RlbDogVCk6IFQ7XG5cdHB1YmxpYyBhYnN0cmFjdCBnZXRNb2RlbDxUIGV4dGVuZHMgU291cmNlRmlsZVByb3ZpZGVyPihrZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQ7XG5cdHB1YmxpYyBhYnN0cmFjdCBnZXRNb2RlbHM8VCBleHRlbmRzIFNvdXJjZUZpbGVQcm92aWRlcj4oXG5cdFx0Y3RvcjogbmV3ICguLi5hcmdzOiBuZXZlcltdKSA9PiBULFxuXHQpOiBUW107XG5cdHB1YmxpYyBhYnN0cmFjdCBnZXRQcm9qZWN0KGRpcjogc3RyaW5nKTogUHJvamVjdFNjYWZmb2xkIHwgdW5kZWZpbmVkO1xuXHRwdWJsaWMgYWJzdHJhY3Qgc2NhZmZvbGQoKTogUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBNb25vUmVwb1NjYWZmb2xkIGV4dGVuZHMgV29ya3NwYWNlU2NhZmZvbGQge1xuXHRwcml2YXRlIHJlYWRvbmx5IF9tb2RlbHMgPSBuZXcgTWFwPHN0cmluZywgU291cmNlRmlsZVByb3ZpZGVyPigpO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9wcm9qZWN0czogUHJvamVjdFNjYWZmb2xkW10gPSBbXTtcblxuXHQvKiogUmVnaXN0ZXIgYSBuYW1lZCBwcm9qZWN0LiAqL1xuXHRwdWJsaWMgYWRkUHJvamVjdChwcm9qZWN0OiBQcm9qZWN0U2NhZmZvbGQpOiBQcm9qZWN0U2NhZmZvbGQge1xuXHRcdHRoaXMuX3Byb2plY3RzLnB1c2gocHJvamVjdCk7XG5cdFx0cmV0dXJuIHByb2plY3Q7XG5cdH1cblxuXHQvKiogUmV0cmlldmUgYSBwcmV2aW91c2x5LXJlZ2lzdGVyZWQgcHJvamVjdCBieSBpdHMgZGlyZWN0b3J5IHBhdGguICovXG5cdHB1YmxpYyBnZXRQcm9qZWN0KGRpcjogc3RyaW5nKTogUHJvamVjdFNjYWZmb2xkIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fcHJvamVjdHMuZmluZCgocCkgPT4gcC5kaXIgPT09IGRpcik7XG5cdH1cblxuXHQvKiogUmVnaXN0ZXIgYSBuYW1lZCBtb2RlbCBhdCB3b3Jrc3BhY2UgbGV2ZWwuICovXG5cdHB1YmxpYyBhZGRNb2RlbDxUIGV4dGVuZHMgS2V5ZWRNb2RlbD4obW9kZWw6IFQpOiBUIHtcblx0XHR0aGlzLl9tb2RlbHMuc2V0KG1vZGVsLmtleSwgbW9kZWwpO1xuXHRcdHJldHVybiBtb2RlbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhIG1vZGVsIGJ5IGtleS4gU2VhcmNoZXMgd29ya3NwYWNlIG1vZGVscyBmaXJzdCwgdGhlbiBhbGxcblx0ICogcmVnaXN0ZXJlZCBwcm9qZWN0cyBpbiBvcmRlci5cblx0ICovXG5cdHB1YmxpYyBnZXRNb2RlbDxUIGV4dGVuZHMgU291cmNlRmlsZVByb3ZpZGVyPihrZXk6IHN0cmluZyk6IFQgfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG0gPSB0aGlzLl9tb2RlbHMuZ2V0KGtleSkgYXMgVCB8IHVuZGVmaW5lZDtcblx0XHRpZiAobSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gbTtcblx0XHRmb3IgKGNvbnN0IHByb2plY3Qgb2YgdGhpcy5fcHJvamVjdHMpIHtcblx0XHRcdGNvbnN0IHBtID0gcHJvamVjdC5nZXRNb2RlbDxUPihrZXkpO1xuXHRcdFx0aWYgKHBtICE9PSB1bmRlZmluZWQpIHJldHVybiBwbTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZSBhbGwgbW9kZWxzIG9mIGEgZ2l2ZW4gdHlwZS4gU2VhcmNoZXMgd29ya3NwYWNlIG1vZGVscyBhbmQgYWxsXG5cdCAqIHByb2plY3RzLCBzbyBmZWF0dXJlcyBjYW4gZGlzY292ZXIgY29udHJvbGxlcnMgYWNyb3NzIG11bHRpcGxlIHByb2plY3RzLlxuXHQgKi9cblx0cHVibGljIGdldE1vZGVsczxUIGV4dGVuZHMgU291cmNlRmlsZVByb3ZpZGVyPihjdG9yOiBuZXcgKC4uLmFyZ3M6IG5ldmVyW10pID0+IFQpOiBUW10ge1xuXHRcdHJldHVybiBbXG5cdFx0XHQuLi5bLi4udGhpcy5fbW9kZWxzLnZhbHVlcygpXS5maWx0ZXIoKG0pOiBtIGlzIFQgPT4gbSBpbnN0YW5jZW9mIGN0b3IpLFxuXHRcdFx0Li4udGhpcy5fcHJvamVjdHMuZmxhdE1hcCgocCkgPT4gcC5nZXRNb2RlbHMoY3RvcikpLFxuXHRcdF07XG5cdH1cblxuXHQvKiogUmVuZGVyIGFsbCBtb2RlbHMgYW5kIHByb2plY3RzIGludG8gZmlsZXMsIHRoZW4gd3JpdGUgZXZlcnl0aGluZyB0byBkaXNrLiAqL1xuXHRwdWJsaWMgYXN5bmMgc2NhZmZvbGQoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgYWxsRmlsZXMgPSBbXG5cdFx0XHQuLi50aGlzLmZpbGVzLFxuXHRcdFx0Li4uWy4uLnRoaXMuX21vZGVscy52YWx1ZXMoKV0uZmxhdE1hcCgobSkgPT4gbS5maWxlcygpKSxcblx0XHRcdC4uLnRoaXMuX3Byb2plY3RzLmZsYXRNYXAoKHApID0+IHAuZmlsZXMoKSksXG5cdFx0XTtcblxuXHRcdGF3YWl0IFByb21pc2UuYWxsKFxuXHRcdFx0YWxsRmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGZ1bGxQYXRoID0gam9pbih0aGlzLnRhcmdldERpciwgZmlsZS5maWxlUGF0aCk7XG5cdFx0XHRcdGF3YWl0IG1rZGlyKGRpcm5hbWUoZnVsbFBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblx0XHRcdFx0YXdhaXQgd3JpdGVGaWxlKGZ1bGxQYXRoLCBmaWxlLmNvbnRlbnQpO1xuXHRcdFx0fSksXG5cdFx0KTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIm1rZGlyIiwid3JpdGVGaWxlIiwiYmFzZW5hbWUiLCJkaXJuYW1lIiwiam9pbiIsIlByb2plY3RTY2FmZm9sZCIsIl9tb2RlbHMiLCJNYXAiLCJfZmlsZXMiLCJkaXIiLCJhZGRNb2RlbCIsIm1vZGVsIiwic2V0Iiwia2V5IiwiYWRkRmlsZSIsInByb3ZpZGVyIiwicHVzaCIsImZpbGVzIiwiZ2V0TW9kZWwiLCJnZXQiLCJnZXRNb2RlbHMiLCJjdG9yIiwidmFsdWVzIiwiZmlsdGVyIiwibSIsImFsbCIsImZsYXRNYXAiLCJtYXAiLCJmIiwiZmlsZVBhdGgiLCJjb250ZW50IiwiV29ya3NwYWNlU2NhZmZvbGQiLCJ0YXJnZXREaXIiLCJwcm9jZXNzIiwiY3dkIiwibmFtZSIsIk1vbm9SZXBvU2NhZmZvbGQiLCJfcHJvamVjdHMiLCJhZGRQcm9qZWN0IiwicHJvamVjdCIsImdldFByb2plY3QiLCJmaW5kIiwicCIsInVuZGVmaW5lZCIsInBtIiwic2NhZmZvbGQiLCJhbGxGaWxlcyIsIlByb21pc2UiLCJmaWxlIiwiZnVsbFBhdGgiLCJyZWN1cnNpdmUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLEtBQUssRUFBRUMsU0FBUyxRQUFRLG1CQUFtQjtBQUNwRCxTQUFTQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsSUFBSSxRQUFRLFlBQVk7QUFHcEQ7Ozs7OztDQU1DLEdBQ0QsT0FBTyxNQUFNQzs7SUFDS0MsVUFBVSxJQUFJQyxNQUFrQztJQUNoREMsU0FBdUIsRUFBRSxDQUFDO0lBRTNDLFlBQW1CLEFB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
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvbW9kZWxzL3Byb2plY3QubW9kZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWtkaXIsIHdyaXRlRmlsZSB9IGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSwgU291cmNlRmlsZVByb3ZpZGVyIH0gZnJvbSBcIi4vc291cmNlLWZpbGUuanNcIjtcblxuLyoqXG4gKiBBIHN1Yi11bml0IG9mIHRoZSBtb25vcmVwbyAoZS5nLiBgcHJvamVjdHMvYXBpYCkuXG4gKlxuICogTW9kZWxzIGFuZCBmaWxlcyByZWdpc3RlcmVkIGhlcmUgcHJvZHVjZSBwYXRocyByZWxhdGl2ZSB0byBgZGlyYC4gVGhlIHBhcmVudFxuICogYE1vbm9SZXBvU2NhZmZvbGRgIGNhbGxzIGBmaWxlcygpYCBhbmQgcHJlcGVuZHMgYGRpci9gIHRvIGV2ZXJ5IHBhdGgsIHNvXG4gKiBtb2RlbHMgcmVtYWluIHVuYXdhcmUgb2Ygd2hlcmUgdGhleSBsaXZlIGluIHRoZSByZXBvLlxuICovXG5leHBvcnQgY2xhc3MgUHJvamVjdFNjYWZmb2xkIHtcblx0cHJpdmF0ZSByZWFkb25seSBfbW9kZWxzID0gbmV3IE1hcDxzdHJpbmcsIFNvdXJjZUZpbGVQcm92aWRlcj4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfZmlsZXM6IFNvdXJjZUZpbGVbXSA9IFtdO1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgZGlyOiBzdHJpbmcpIHt9XG5cblx0cHVibGljIGFkZE1vZGVsPFQgZXh0ZW5kcyBLZXllZE1vZGVsPihtb2RlbDogVCk6IFQge1xuXHRcdHRoaXMuX21vZGVscy5zZXQobW9kZWwua2V5LCBtb2RlbCk7XG5cdFx0cmV0dXJuIG1vZGVsO1xuXHR9XG5cblx0cHVibGljIGFkZEZpbGUocHJvdmlkZXI6IFNvdXJjZUZpbGVQcm92aWRlcik6IHRoaXMge1xuXHRcdHRoaXMuX2ZpbGVzLnB1c2goLi4ucHJvdmlkZXIuZmlsZXMoKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9kZWw8VCBleHRlbmRzIFNvdXJjZUZpbGVQcm92aWRlcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fbW9kZWxzLmdldChrZXkpIGFzIFQgfCB1bmRlZmluZWQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0TW9kZWxzPFQgZXh0ZW5kcyBTb3VyY2VGaWxlUHJvdmlkZXI+KGN0b3I6IG5ldyAoLi4uYXJnczogbmV2ZXJbXSkgPT4gVCk6IFRbXSB7XG5cdFx0cmV0dXJuIFsuLi50aGlzLl9tb2RlbHMudmFsdWVzKCldLmZpbHRlcigobSk6IG0gaXMgVCA9PiBtIGluc3RhbmNlb2YgY3Rvcik7XG5cdH1cblxuXHQvKiogUmV0dXJucyBhbGwgZmlsZXMgd2l0aCBgZGlyL2AgcHJlcGVuZGVkIHRvIGVhY2ggcGF0aC4gKi9cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0Y29uc3QgYWxsID0gWy4uLnRoaXMuX2ZpbGVzLCAuLi5bLi4udGhpcy5fbW9kZWxzLnZhbHVlcygpXS5mbGF0TWFwKChtKSA9PiBtLmZpbGVzKCkpXTtcblx0XHRyZXR1cm4gYWxsLm1hcCgoZikgPT4gKHsgZmlsZVBhdGg6IGAke3RoaXMuZGlyfS8ke2YuZmlsZVBhdGh9YCwgY29udGVudDogZi5jb250ZW50IH0pKTtcblx0fVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgV29ya3NwYWNlU2NhZmZvbGQge1xuXHRwdWJsaWMgcmVhZG9ubHkgZmlsZXM6IFNvdXJjZUZpbGVbXSA9IFtdO1xuXHRwdWJsaWMgdGFyZ2V0RGlyOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXHRwcml2YXRlIF9uYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqIFByb2plY3QgbmFtZSDigJQgaG9zdCBkaXJlY3RvcnkgYmFzZW5hbWUsIG5vdCB0aGUgaW4tY29udGFpbmVyIG1vdW50IHBhdGguICovXG5cdHB1YmxpYyBnZXQgbmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0aGlzLl9uYW1lID8/IGJhc2VuYW1lKHRoaXMudGFyZ2V0RGlyKTtcblx0fVxuXG5cdHB1YmxpYyBzZXROYW1lKG5hbWU6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX25hbWUgPSBuYW1lO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZCBhbiBhZC1ob2MgZmlsZSBwcm92aWRlciB3aG9zZSBvdXRwdXQgaXMgaW5jbHVkZWQgYXQgcmVuZGVyIHRpbWUuICovXG5cdHB1YmxpYyBhZGRGaWxlKHByb3ZpZGVyOiBTb3VyY2VGaWxlUHJvdmlkZXIpOiB0aGlzIHtcblx0XHR0aGlzLmZpbGVzLnB1c2goLi4ucHJvdmlkZXIuZmlsZXMoKSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgYWJzdHJhY3QgYWRkTW9kZWw8VCBleHRlbmRzIEtleWVkTW9kZWw+KG1vZGVsOiBUKTogVDtcblx0cHVibGljIGFic3RyYWN0IGdldE1vZGVsPFQgZXh0ZW5kcyBTb3VyY2VGaWxlUHJvdmlkZXI+KGtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZDtcblx0cHVibGljIGFic3RyYWN0IGdldE1vZGVsczxUIGV4dGVuZHMgU291cmNlRmlsZVByb3ZpZGVyPihcblx0XHRjdG9yOiBuZXcgKC4uLmFyZ3M6IG5ldmVyW10pID0+IFQsXG5cdCk6IFRbXTtcblx0cHVibGljIGFic3RyYWN0IGdldFByb2plY3QoZGlyOiBzdHJpbmcpOiBQcm9qZWN0U2NhZmZvbGQgfCB1bmRlZmluZWQ7XG5cdHB1YmxpYyBhYnN0cmFjdCBzY2FmZm9sZCgpOiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIE1vbm9SZXBvU2NhZmZvbGQgZXh0ZW5kcyBXb3Jrc3BhY2VTY2FmZm9sZCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX21vZGVscyA9IG5ldyBNYXA8c3RyaW5nLCBTb3VyY2VGaWxlUHJvdmlkZXI+KCk7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3Byb2plY3RzOiBQcm9qZWN0U2NhZmZvbGRbXSA9IFtdO1xuXG5cdC8qKiBSZWdpc3RlciBhIG5hbWVkIHByb2plY3QuICovXG5cdHB1YmxpYyBhZGRQcm9qZWN0KHByb2plY3Q6IFByb2plY3RTY2FmZm9sZCk6IFByb2plY3RTY2FmZm9sZCB7XG5cdFx0dGhpcy5fcHJvamVjdHMucHVzaChwcm9qZWN0KTtcblx0XHRyZXR1cm4gcHJvamVjdDtcblx0fVxuXG5cdC8qKiBSZXRyaWV2ZSBhIHByZXZpb3VzbHktcmVnaXN0ZXJlZCBwcm9qZWN0IGJ5IGl0cyBkaXJlY3RvcnkgcGF0aC4gKi9cblx0cHVibGljIGdldFByb2plY3QoZGlyOiBzdHJpbmcpOiBQcm9qZWN0U2NhZmZvbGQgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLl9wcm9qZWN0cy5maW5kKChwKSA9PiBwLmRpciA9PT0gZGlyKTtcblx0fVxuXG5cdC8qKiBSZWdpc3RlciBhIG5hbWVkIG1vZGVsIGF0IHdvcmtzcGFjZSBsZXZlbC4gKi9cblx0cHVibGljIGFkZE1vZGVsPFQgZXh0ZW5kcyBLZXllZE1vZGVsPihtb2RlbDogVCk6IFQge1xuXHRcdHRoaXMuX21vZGVscy5zZXQobW9kZWwua2V5LCBtb2RlbCk7XG5cdFx0cmV0dXJuIG1vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIGEgbW9kZWwgYnkga2V5LiBTZWFyY2hlcyB3b3Jrc3BhY2UgbW9kZWxzIGZpcnN0LCB0aGVuIGFsbFxuXHQgKiByZWdpc3RlcmVkIHByb2plY3RzIGluIG9yZGVyLlxuXHQgKi9cblx0cHVibGljIGdldE1vZGVsPFQgZXh0ZW5kcyBTb3VyY2VGaWxlUHJvdmlkZXI+KGtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgbSA9IHRoaXMuX21vZGVscy5nZXQoa2V5KSBhcyBUIHwgdW5kZWZpbmVkO1xuXHRcdGlmIChtICE9PSB1bmRlZmluZWQpIHJldHVybiBtO1xuXHRcdGZvciAoY29uc3QgcHJvamVjdCBvZiB0aGlzLl9wcm9qZWN0cykge1xuXHRcdFx0Y29uc3QgcG0gPSBwcm9qZWN0LmdldE1vZGVsPFQ+KGtleSk7XG5cdFx0XHRpZiAocG0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHBtO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHJpZXZlIGFsbCBtb2RlbHMgb2YgYSBnaXZlbiB0eXBlLiBTZWFyY2hlcyB3b3Jrc3BhY2UgbW9kZWxzIGFuZCBhbGxcblx0ICogcHJvamVjdHMsIHNvIGZlYXR1cmVzIGNhbiBkaXNjb3ZlciBjb250cm9sbGVycyBhY3Jvc3MgbXVsdGlwbGUgcHJvamVjdHMuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TW9kZWxzPFQgZXh0ZW5kcyBTb3VyY2VGaWxlUHJvdmlkZXI+KGN0b3I6IG5ldyAoLi4uYXJnczogbmV2ZXJbXSkgPT4gVCk6IFRbXSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdC4uLlsuLi50aGlzLl9tb2RlbHMudmFsdWVzKCldLmZpbHRlcigobSk6IG0gaXMgVCA9PiBtIGluc3RhbmNlb2YgY3RvciksXG5cdFx0XHQuLi50aGlzLl9wcm9qZWN0cy5mbGF0TWFwKChwKSA9PiBwLmdldE1vZGVscyhjdG9yKSksXG5cdFx0XTtcblx0fVxuXG5cdC8qKiBSZW5kZXIgYWxsIG1vZGVscyBhbmQgcHJvamVjdHMgaW50byBmaWxlcywgdGhlbiB3cml0ZSBldmVyeXRoaW5nIHRvIGRpc2suICovXG5cdHB1YmxpYyBhc3luYyBzY2FmZm9sZCgpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBhbGxGaWxlcyA9IFtcblx0XHRcdC4uLnRoaXMuZmlsZXMsXG5cdFx0XHQuLi5bLi4udGhpcy5fbW9kZWxzLnZhbHVlcygpXS5mbGF0TWFwKChtKSA9PiBtLmZpbGVzKCkpLFxuXHRcdFx0Li4udGhpcy5fcHJvamVjdHMuZmxhdE1hcCgocCkgPT4gcC5maWxlcygpKSxcblx0XHRdO1xuXG5cdFx0YXdhaXQgUHJvbWlzZS5hbGwoXG5cdFx0XHRhbGxGaWxlcy5tYXAoYXN5bmMgKGZpbGUpID0+IHtcblx0XHRcdFx0Y29uc3QgZnVsbFBhdGggPSBqb2luKHRoaXMudGFyZ2V0RGlyLCBmaWxlLmZpbGVQYXRoKTtcblx0XHRcdFx0YXdhaXQgbWtkaXIoZGlybmFtZShmdWxsUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXHRcdFx0XHRhd2FpdCB3cml0ZUZpbGUoZnVsbFBhdGgsIGZpbGUuY29udGVudCk7XG5cdFx0XHR9KSxcblx0XHQpO1xuXHR9XG59XG4iXSwibmFtZXMiOlsibWtkaXIiLCJ3cml0ZUZpbGUiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJqb2luIiwiUHJvamVjdFNjYWZmb2xkIiwiX21vZGVscyIsIk1hcCIsIl9maWxlcyIsImRpciIsImFkZE1vZGVsIiwibW9kZWwiLCJzZXQiLCJrZXkiLCJhZGRGaWxlIiwicHJvdmlkZXIiLCJwdXNoIiwiZmlsZXMiLCJnZXRNb2RlbCIsImdldCIsImdldE1vZGVscyIsImN0b3IiLCJ2YWx1ZXMiLCJmaWx0ZXIiLCJtIiwiYWxsIiwiZmxhdE1hcCIsIm1hcCIsImYiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJXb3Jrc3BhY2VTY2FmZm9sZCIsInRhcmdldERpciIsInByb2Nlc3MiLCJjd2QiLCJfbmFtZSIsIm5hbWUiLCJzZXROYW1lIiwiTW9ub1JlcG9TY2FmZm9sZCIsIl9wcm9qZWN0cyIsImFkZFByb2plY3QiLCJwcm9qZWN0IiwiZ2V0UHJvamVjdCIsImZpbmQiLCJwIiwidW5kZWZpbmVkIiwicG0iLCJzY2FmZm9sZCIsImFsbEZpbGVzIiwiUHJvbWlzZSIsImZpbGUiLCJmdWxsUGF0aCIsInJlY3Vyc2l2ZSJd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
package/es6/src/runner.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { execFileSync, spawnSync } from "node:child_process";
2
2
  import { existsSync, mkdirSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
- import { resolve } from "node:path";
4
+ import { basename, resolve } from "node:path";
5
5
  import { CREATE_IMAGE_REPOSITORY, CREATE_VERSION } from "./version.js";
6
6
  const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
7
7
  /**
@@ -11,13 +11,19 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
11
11
  * host, outside the container. Mounts the target directory as `/workspace` so
12
12
  * the scaffolded files are written back to the host filesystem.
13
13
  *
14
- * If `~/.config/auth0` exists on the host the directory is also mounted so
15
- * the auth0 CLI inside the container can reuse existing credentials silently.
14
+ * The container runs as the host uid/gid whenever possible so scaffolded files
15
+ * are never root-owned (post-hoc `chown` is unreliable across Docker setups).
16
16
  */ export function runInBuilder(opts) {
17
17
  const targetDir = resolve(opts.d ?? ".");
18
+ const projectName = basename(targetDir);
18
19
  mkdirSync(targetDir, {
19
20
  recursive: true
20
21
  });
22
+ // Host-owned so initializeCommand can always write here even if something
23
+ // else in .devcontainer ends up oddly owned.
24
+ mkdirSync(resolve(targetDir, ".devcontainer", "npm-auth"), {
25
+ recursive: true
26
+ });
21
27
  // Ensure Docker is available.
22
28
  try {
23
29
  execFileSync("docker", [
@@ -29,16 +35,47 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
29
35
  console.error("\n Docker is required to scaffold a Decohere project.\n" + " Install Docker Desktop: https://www.docker.com/products/docker-desktop\n");
30
36
  process.exit(1);
31
37
  }
38
+ const hostUid = process.getuid?.();
39
+ const hostGid = process.getgid?.() ?? hostUid;
40
+ const runAsHostUser = hostUid != null && hostGid != null;
41
+ // Anonymous root-owned volumes are not writable when we drop privileges.
42
+ const npmCacheDir = resolve(homedir(), ".cache/decohere-create/npm");
43
+ mkdirSync(npmCacheDir, {
44
+ recursive: true
45
+ });
32
46
  const volumes = [
33
47
  "-v",
34
48
  `${targetDir}:/workspace`,
35
49
  "-v",
36
- "/npm-cache"
50
+ `${npmCacheDir}:/npm-cache`
51
+ ];
52
+ const envArgs = [
53
+ "-e",
54
+ "DECOHERE_BUILDER=1",
55
+ // Host dir basename — container cwd is /workspace so basename would be wrong.
56
+ "-e",
57
+ `DECOHERE_PROJECT_NAME=${projectName}`,
58
+ "-e",
59
+ "NPM_CONFIG_CACHE=/npm-cache",
60
+ "-e",
61
+ "NPM_CONFIG_PREFER_OFFLINE=true",
62
+ // Writable HOME for npm / auth0 CLI when not running as image root/node.
63
+ "-e",
64
+ "HOME=/tmp/decohere-create-home"
37
65
  ];
38
- // Mount host .npmrc for private registry credentials, if present.
66
+ // Mount host .npmrc where the non-root process can read it.
39
67
  const npmrcPath = resolve(homedir(), ".npmrc");
40
68
  if (existsSync(npmrcPath)) {
41
- volumes.push("-v", `${npmrcPath}:/root/.npmrc:ro`);
69
+ volumes.push("-v", `${npmrcPath}:/tmp/host-npmrc:ro`);
70
+ envArgs.push("-e", "NPM_CONFIG_USERCONFIG=/tmp/host-npmrc");
71
+ }
72
+ const userArgs = [];
73
+ if (runAsHostUser) {
74
+ userArgs.push("--user", `${hostUid}:${hostGid}`);
75
+ } else if (hostUid != null) {
76
+ // Fallback for environments without getgid: keep legacy chown path.
77
+ envArgs.push("-e", `HOST_UID=${hostUid}`);
78
+ if (hostGid != null) envArgs.push("-e", `HOST_GID=${hostGid}`);
42
79
  }
43
80
  const commandArgs = [
44
81
  "webapi",
@@ -65,25 +102,13 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
65
102
  ] : [
66
103
  "-i"
67
104
  ];
68
- // Pass host uid/gid so the entrypoint can chown scaffolded files — the
69
- // builder runs as root and would otherwise leave the tree unwritable.
70
- const hostUid = process.getuid?.();
71
- const hostGid = process.getgid?.();
72
- const ownershipEnv = [];
73
- if (hostUid != null) ownershipEnv.push("-e", `HOST_UID=${hostUid}`);
74
- if (hostGid != null) ownershipEnv.push("-e", `HOST_GID=${hostGid}`);
75
105
  const result = spawnSync("docker", [
76
106
  "run",
77
107
  "--rm",
78
108
  ...ttyFlags,
109
+ ...userArgs,
79
110
  ...volumes,
80
- "-e",
81
- "DECOHERE_BUILDER=1",
82
- "-e",
83
- "NPM_CONFIG_CACHE=/npm-cache",
84
- "-e",
85
- "NPM_CONFIG_PREFER_OFFLINE=true",
86
- ...ownershipEnv,
111
+ ...envArgs,
87
112
  "-w",
88
113
  "/workspace",
89
114
  BUILDER_IMAGE,
@@ -97,4 +122,4 @@ const BUILDER_IMAGE = `${CREATE_IMAGE_REPOSITORY}:${CREATE_VERSION}`;
97
122
  process.exit(result.status ?? 0);
98
123
  }
99
124
 
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgcmVzb2x2ZSB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IENSRUFURV9JTUFHRV9SRVBPU0lUT1JZLCBDUkVBVEVfVkVSU0lPTiB9IGZyb20gXCIuL3ZlcnNpb24uanNcIjtcbmltcG9ydCB0eXBlIHsgQXBpT3B0aW9ucyB9IGZyb20gXCIuL3dlYmFwaS9jcmVhdGUtYXBpLmpzXCI7XG5cbmNvbnN0IEJVSUxERVJfSU1BR0UgPSBgJHtDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWX06JHtDUkVBVEVfVkVSU0lPTn1gO1xuXG4vKipcbiAqIFJ1biB0aGUgc2NhZmZvbGQgaW5zaWRlIGEgcHJlLWJ1aWx0IERvY2tlciBidWlsZGVyIGltYWdlLlxuICpcbiAqIENhbGxlZCB3aGVuIGBERUNPSEVSRV9CVUlMREVSYCBpcyBub3Qgc2V0IOKAlCBpLmUuIHRoZSBDTEkgaXMgcnVubmluZyBvbiB0aGVcbiAqIGhvc3QsIG91dHNpZGUgdGhlIGNvbnRhaW5lci4gTW91bnRzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGFzIGAvd29ya3NwYWNlYCBzb1xuICogdGhlIHNjYWZmb2xkZWQgZmlsZXMgYXJlIHdyaXR0ZW4gYmFjayB0byB0aGUgaG9zdCBmaWxlc3lzdGVtLlxuICpcbiAqIElmIGB+Ly5jb25maWcvYXV0aDBgIGV4aXN0cyBvbiB0aGUgaG9zdCB0aGUgZGlyZWN0b3J5IGlzIGFsc28gbW91bnRlZCBzb1xuICogdGhlIGF1dGgwIENMSSBpbnNpZGUgdGhlIGNvbnRhaW5lciBjYW4gcmV1c2UgZXhpc3RpbmcgY3JlZGVudGlhbHMgc2lsZW50bHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5JbkJ1aWxkZXIob3B0czogQXBpT3B0aW9ucyk6IG5ldmVyIHtcblx0Y29uc3QgdGFyZ2V0RGlyID0gcmVzb2x2ZShvcHRzLmQgPz8gXCIuXCIpO1xuXHRta2RpclN5bmModGFyZ2V0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuXHQvLyBFbnN1cmUgRG9ja2VyIGlzIGF2YWlsYWJsZS5cblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJkb2NrZXJcIiwgW1wiaW5mb1wiXSwgeyBzdGRpbzogXCJwaXBlXCIgfSk7XG5cdH0gY2F0Y2gge1xuXHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcIlxcbiAgRG9ja2VyIGlzIHJlcXVpcmVkIHRvIHNjYWZmb2xkIGEgRGVjb2hlcmUgcHJvamVjdC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsIERvY2tlciBEZXNrdG9wOiBodHRwczovL3d3dy5kb2NrZXIuY29tL3Byb2R1Y3RzL2RvY2tlci1kZXNrdG9wXFxuXCIsXG5cdFx0KTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcIi12XCIsIGAke3RhcmdldERpcn06L3dvcmtzcGFjZWAsIFwiLXZcIiwgXCIvbnBtLWNhY2hlXCJdO1xuXG5cdC8vIE1vdW50IGhvc3QgLm5wbXJjIGZvciBwcml2YXRlIHJlZ2lzdHJ5IGNyZWRlbnRpYWxzLCBpZiBwcmVzZW50LlxuXHRjb25zdCBucG1yY1BhdGggPSByZXNvbHZlKGhvbWVkaXIoKSwgXCIubnBtcmNcIik7XG5cdGlmIChleGlzdHNTeW5jKG5wbXJjUGF0aCkpIHtcblx0XHR2b2x1bWVzLnB1c2goXCItdlwiLCBgJHtucG1yY1BhdGh9Oi9yb290Ly5ucG1yYzpyb2ApO1xuXHR9XG5cblx0Y29uc3QgY29tbWFuZEFyZ3M6IHN0cmluZ1tdID0gW1wid2ViYXBpXCIsIFwiLWRcIiwgXCIuXCJdO1xuXHRpZiAob3B0cy5kYXRhYmFzZVByb3ZpZGVyICE9IG51bGwpIHtcblx0XHRjb21tYW5kQXJncy5wdXNoKFwiLS1kYXRhYmFzZVwiLCBvcHRzLmRhdGFiYXNlUHJvdmlkZXIpO1xuXHR9XG5cdGlmIChvcHRzLmF1dGhQcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tYXV0aFwiLCBvcHRzLmF1dGhQcm92aWRlcik7XG5cdH1cblx0aWYgKG9wdHMucG9zdG1hblByb3ZpZGVyICE9IG51bGwpIHtcblx0XHRjb21tYW5kQXJncy5wdXNoKFwiLS1wb3N0bWFuXCIsIG9wdHMucG9zdG1hblByb3ZpZGVyKTtcblx0fVxuXHRpZiAob3B0cy5pbnN0YWxsRGVwZW5kZW5jaWVzICE9IG51bGwpIHtcblx0XHRjb21tYW5kQXJncy5wdXNoKFwiLS1pbnN0YWxsXCIsIG9wdHMuaW5zdGFsbERlcGVuZGVuY2llcyk7XG5cdH1cblxuXHRjb25zb2xlLmxvZyhcIiAgUnVubmluZyBzY2FmZm9sZGluZyBpbiBhIHNhbmRib3hlZCBjb250YWluZXIuLi5cXG5cIik7XG5cblx0Ly8gT25seSBhbGxvY2F0ZSBhIFRUWSB3aGVuIHN0ZGluIGlzIGl0c2VsZiBhIFRUWSDigJQgYXZvaWRzIGEgaHVuZyBwcm9jZXNzXG5cdC8vIGluIG5vbi1pbnRlcmFjdGl2ZSBlbnZpcm9ubWVudHMgKHBpcGVzLCBDSSwgc2NyaXB0cykuXG5cdGNvbnN0IHR0eUZsYWdzID0gcHJvY2Vzcy5zdGRpbi5pc1RUWSA/IFtcIi1pdFwiXSA6IFtcIi1pXCJdO1xuXG5cdC8vIFBhc3MgaG9zdCB1aWQvZ2lkIHNvIHRoZSBlbnRyeXBvaW50IGNhbiBjaG93biBzY2FmZm9sZGVkIGZpbGVzIOKAlCB0aGVcblx0Ly8gYnVpbGRlciBydW5zIGFzIHJvb3QgYW5kIHdvdWxkIG90aGVyd2lzZSBsZWF2ZSB0aGUgdHJlZSB1bndyaXRhYmxlLlxuXHRjb25zdCBob3N0VWlkID0gcHJvY2Vzcy5nZXR1aWQ/LigpO1xuXHRjb25zdCBob3N0R2lkID0gcHJvY2Vzcy5nZXRnaWQ/LigpO1xuXHRjb25zdCBvd25lcnNoaXBFbnY6IHN0cmluZ1tdID0gW107XG5cdGlmIChob3N0VWlkICE9IG51bGwpIG93bmVyc2hpcEVudi5wdXNoKFwiLWVcIiwgYEhPU1RfVUlEPSR7aG9zdFVpZH1gKTtcblx0aWYgKGhvc3RHaWQgIT0gbnVsbCkgb3duZXJzaGlwRW52LnB1c2goXCItZVwiLCBgSE9TVF9HSUQ9JHtob3N0R2lkfWApO1xuXG5cdGNvbnN0IHJlc3VsdCA9IHNwYXduU3luYyhcblx0XHRcImRvY2tlclwiLFxuXHRcdFtcblx0XHRcdFwicnVuXCIsXG5cdFx0XHRcIi0tcm1cIixcblx0XHRcdC4uLnR0eUZsYWdzLFxuXHRcdFx0Li4udm9sdW1lcyxcblx0XHRcdFwiLWVcIixcblx0XHRcdFwiREVDT0hFUkVfQlVJTERFUj0xXCIsXG5cdFx0XHRcIi1lXCIsXG5cdFx0XHRcIk5QTV9DT05GSUdfQ0FDSEU9L25wbS1jYWNoZVwiLFxuXHRcdFx0XCItZVwiLFxuXHRcdFx0XCJOUE1fQ09ORklHX1BSRUZFUl9PRkZMSU5FPXRydWVcIixcblx0XHRcdC4uLm93bmVyc2hpcEVudixcblx0XHRcdFwiLXdcIixcblx0XHRcdFwiL3dvcmtzcGFjZVwiLFxuXHRcdFx0QlVJTERFUl9JTUFHRSxcblx0XHRcdC4uLmNvbW1hbmRBcmdzLFxuXHRcdF0sXG5cdFx0eyBzdGRpbzogXCJpbmhlcml0XCIgfSxcblx0KTtcblxuXHRpZiAocmVzdWx0LnN0YXR1cyA9PT0gMCkge1xuXHRcdGNvbnNvbGUubG9nKGBcXG4gIFNjYWZmb2xkIGNvbXBsZXRlIVxcblxcbiAgT3BlbiB5b3VyIHByb2plY3Q6XFxuXFxuICAgIGNvZGUgJHt0YXJnZXREaXJ9XFxuYCk7XG5cdH1cblxuXHRwcm9jZXNzLmV4aXQocmVzdWx0LnN0YXR1cyA/PyAwKTtcbn1cbiJdLCJuYW1lcyI6WyJleGVjRmlsZVN5bmMiLCJzcGF3blN5bmMiLCJleGlzdHNTeW5jIiwibWtkaXJTeW5jIiwiaG9tZWRpciIsInJlc29sdmUiLCJDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSIsIkNSRUFURV9WRVJTSU9OIiwiQlVJTERFUl9JTUFHRSIsInJ1bkluQnVpbGRlciIsIm9wdHMiLCJ0YXJnZXREaXIiLCJkIiwicmVjdXJzaXZlIiwic3RkaW8iLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsInZvbHVtZXMiLCJucG1yY1BhdGgiLCJwdXNoIiwiY29tbWFuZEFyZ3MiLCJkYXRhYmFzZVByb3ZpZGVyIiwiYXV0aFByb3ZpZGVyIiwicG9zdG1hblByb3ZpZGVyIiwiaW5zdGFsbERlcGVuZGVuY2llcyIsImxvZyIsInR0eUZsYWdzIiwic3RkaW4iLCJpc1RUWSIsImhvc3RVaWQiLCJnZXR1aWQiLCJob3N0R2lkIiwiZ2V0Z2lkIiwib3duZXJzaGlwRW52IiwicmVzdWx0Iiwic3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxZQUFZLEVBQUVDLFNBQVMsUUFBUSxxQkFBcUI7QUFDN0QsU0FBU0MsVUFBVSxFQUFFQyxTQUFTLFFBQVEsVUFBVTtBQUNoRCxTQUFTQyxPQUFPLFFBQVEsVUFBVTtBQUNsQyxTQUFTQyxPQUFPLFFBQVEsWUFBWTtBQUNwQyxTQUFTQyx1QkFBdUIsRUFBRUMsY0FBYyxRQUFRLGVBQWU7QUFHdkUsTUFBTUMsZ0JBQWdCLEdBQUdGLHdCQUF3QixDQUFDLEVBQUVDLGdCQUFnQjtBQUVwRTs7Ozs7Ozs7O0NBU0MsR0FDRCxPQUFPLFNBQVNFLGFBQWFDLElBQWdCO0lBQzVDLE1BQU1DLFlBQVlOLFFBQVFLLEtBQUtFLENBQUMsSUFBSTtJQUNwQ1QsVUFBVVEsV0FBVztRQUFFRSxXQUFXO0lBQUs7SUFFdkMsOEJBQThCO0lBQzlCLElBQUk7UUFDSGIsYUFBYSxVQUFVO1lBQUM7U0FBTyxFQUFFO1lBQUVjLE9BQU87UUFBTztJQUNsRCxFQUFFLE9BQU07UUFDUEMsUUFBUUMsS0FBSyxDQUNaLDZEQUNDO1FBRUZDLFFBQVFDLElBQUksQ0FBQztJQUNkO0lBRUEsTUFBTUMsVUFBb0I7UUFBQztRQUFNLEdBQUdSLFVBQVUsV0FBVyxDQUFDO1FBQUU7UUFBTTtLQUFhO0lBRS9FLGtFQUFrRTtJQUNsRSxNQUFNUyxZQUFZZixRQUFRRCxXQUFXO0lBQ3JDLElBQUlGLFdBQVdrQixZQUFZO1FBQzFCRCxRQUFRRSxJQUFJLENBQUMsTUFBTSxHQUFHRCxVQUFVLGdCQUFnQixDQUFDO0lBQ2xEO0lBRUEsTUFBTUUsY0FBd0I7UUFBQztRQUFVO1FBQU07S0FBSTtJQUNuRCxJQUFJWixLQUFLYSxnQkFBZ0IsSUFBSSxNQUFNO1FBQ2xDRCxZQUFZRCxJQUFJLENBQUMsY0FBY1gsS0FBS2EsZ0JBQWdCO0lBQ3JEO0lBQ0EsSUFBSWIsS0FBS2MsWUFBWSxJQUFJLE1BQU07UUFDOUJGLFlBQVlELElBQUksQ0FBQyxVQUFVWCxLQUFLYyxZQUFZO0lBQzdDO0lBQ0EsSUFBSWQsS0FBS2UsZUFBZSxJQUFJLE1BQU07UUFDakNILFlBQVlELElBQUksQ0FBQyxhQUFhWCxLQUFLZSxlQUFlO0lBQ25EO0lBQ0EsSUFBSWYsS0FBS2dCLG1CQUFtQixJQUFJLE1BQU07UUFDckNKLFlBQVlELElBQUksQ0FBQyxhQUFhWCxLQUFLZ0IsbUJBQW1CO0lBQ3ZEO0lBRUFYLFFBQVFZLEdBQUcsQ0FBQztJQUVaLHlFQUF5RTtJQUN6RSx3REFBd0Q7SUFDeEQsTUFBTUMsV0FBV1gsUUFBUVksS0FBSyxDQUFDQyxLQUFLLEdBQUc7UUFBQztLQUFNLEdBQUc7UUFBQztLQUFLO0lBRXZELHVFQUF1RTtJQUN2RSxzRUFBc0U7SUFDdEUsTUFBTUMsVUFBVWQsUUFBUWUsTUFBTTtJQUM5QixNQUFNQyxVQUFVaEIsUUFBUWlCLE1BQU07SUFDOUIsTUFBTUMsZUFBeUIsRUFBRTtJQUNqQyxJQUFJSixXQUFXLE1BQU1JLGFBQWFkLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFVSxTQUFTO0lBQ2xFLElBQUlFLFdBQVcsTUFBTUUsYUFBYWQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUVZLFNBQVM7SUFFbEUsTUFBTUcsU0FBU25DLFVBQ2QsVUFDQTtRQUNDO1FBQ0E7V0FDRzJCO1dBQ0FUO1FBQ0g7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1dBQ0dnQjtRQUNIO1FBQ0E7UUFDQTNCO1dBQ0djO0tBQ0gsRUFDRDtRQUFFUixPQUFPO0lBQVU7SUFHcEIsSUFBSXNCLE9BQU9DLE1BQU0sS0FBSyxHQUFHO1FBQ3hCdEIsUUFBUVksR0FBRyxDQUFDLENBQUMsMkRBQTJELEVBQUVoQixVQUFVLEVBQUUsQ0FBQztJQUN4RjtJQUVBTSxRQUFRQyxJQUFJLENBQUNrQixPQUFPQyxNQUFNLElBQUk7QUFDL0IifQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL2NyZWF0ZS9zcmMvcnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYywgc3Bhd25TeW5jIH0gZnJvbSBcIm5vZGU6Y2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0IHsgZXhpc3RzU3luYywgbWtkaXJTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGhvbWVkaXIgfSBmcm9tIFwibm9kZTpvc1wiO1xuaW1wb3J0IHsgYmFzZW5hbWUsIHJlc29sdmUgfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSwgQ1JFQVRFX1ZFUlNJT04gfSBmcm9tIFwiLi92ZXJzaW9uLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwaU9wdGlvbnMgfSBmcm9tIFwiLi93ZWJhcGkvY3JlYXRlLWFwaS5qc1wiO1xuXG5jb25zdCBCVUlMREVSX0lNQUdFID0gYCR7Q1JFQVRFX0lNQUdFX1JFUE9TSVRPUll9OiR7Q1JFQVRFX1ZFUlNJT059YDtcblxuLyoqXG4gKiBSdW4gdGhlIHNjYWZmb2xkIGluc2lkZSBhIHByZS1idWlsdCBEb2NrZXIgYnVpbGRlciBpbWFnZS5cbiAqXG4gKiBDYWxsZWQgd2hlbiBgREVDT0hFUkVfQlVJTERFUmAgaXMgbm90IHNldCDigJQgaS5lLiB0aGUgQ0xJIGlzIHJ1bm5pbmcgb24gdGhlXG4gKiBob3N0LCBvdXRzaWRlIHRoZSBjb250YWluZXIuIE1vdW50cyB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBhcyBgL3dvcmtzcGFjZWAgc29cbiAqIHRoZSBzY2FmZm9sZGVkIGZpbGVzIGFyZSB3cml0dGVuIGJhY2sgdG8gdGhlIGhvc3QgZmlsZXN5c3RlbS5cbiAqXG4gKiBUaGUgY29udGFpbmVyIHJ1bnMgYXMgdGhlIGhvc3QgdWlkL2dpZCB3aGVuZXZlciBwb3NzaWJsZSBzbyBzY2FmZm9sZGVkIGZpbGVzXG4gKiBhcmUgbmV2ZXIgcm9vdC1vd25lZCAocG9zdC1ob2MgYGNob3duYCBpcyB1bnJlbGlhYmxlIGFjcm9zcyBEb2NrZXIgc2V0dXBzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkluQnVpbGRlcihvcHRzOiBBcGlPcHRpb25zKTogbmV2ZXIge1xuXHRjb25zdCB0YXJnZXREaXIgPSByZXNvbHZlKG9wdHMuZCA/PyBcIi5cIik7XG5cdGNvbnN0IHByb2plY3ROYW1lID0gYmFzZW5hbWUodGFyZ2V0RGlyKTtcblx0bWtkaXJTeW5jKHRhcmdldERpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cdC8vIEhvc3Qtb3duZWQgc28gaW5pdGlhbGl6ZUNvbW1hbmQgY2FuIGFsd2F5cyB3cml0ZSBoZXJlIGV2ZW4gaWYgc29tZXRoaW5nXG5cdC8vIGVsc2UgaW4gLmRldmNvbnRhaW5lciBlbmRzIHVwIG9kZGx5IG93bmVkLlxuXHRta2RpclN5bmMocmVzb2x2ZSh0YXJnZXREaXIsIFwiLmRldmNvbnRhaW5lclwiLCBcIm5wbS1hdXRoXCIpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuXHQvLyBFbnN1cmUgRG9ja2VyIGlzIGF2YWlsYWJsZS5cblx0dHJ5IHtcblx0XHRleGVjRmlsZVN5bmMoXCJkb2NrZXJcIiwgW1wiaW5mb1wiXSwgeyBzdGRpbzogXCJwaXBlXCIgfSk7XG5cdH0gY2F0Y2gge1xuXHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcIlxcbiAgRG9ja2VyIGlzIHJlcXVpcmVkIHRvIHNjYWZmb2xkIGEgRGVjb2hlcmUgcHJvamVjdC5cXG5cIiArXG5cdFx0XHRcdFwiICBJbnN0YWxsIERvY2tlciBEZXNrdG9wOiBodHRwczovL3d3dy5kb2NrZXIuY29tL3Byb2R1Y3RzL2RvY2tlci1kZXNrdG9wXFxuXCIsXG5cdFx0KTtcblx0XHRwcm9jZXNzLmV4aXQoMSk7XG5cdH1cblxuXHRjb25zdCBob3N0VWlkID0gcHJvY2Vzcy5nZXR1aWQ/LigpO1xuXHRjb25zdCBob3N0R2lkID0gcHJvY2Vzcy5nZXRnaWQ/LigpID8/IGhvc3RVaWQ7XG5cdGNvbnN0IHJ1bkFzSG9zdFVzZXIgPSBob3N0VWlkICE9IG51bGwgJiYgaG9zdEdpZCAhPSBudWxsO1xuXG5cdC8vIEFub255bW91cyByb290LW93bmVkIHZvbHVtZXMgYXJlIG5vdCB3cml0YWJsZSB3aGVuIHdlIGRyb3AgcHJpdmlsZWdlcy5cblx0Y29uc3QgbnBtQ2FjaGVEaXIgPSByZXNvbHZlKGhvbWVkaXIoKSwgXCIuY2FjaGUvZGVjb2hlcmUtY3JlYXRlL25wbVwiKTtcblx0bWtkaXJTeW5jKG5wbUNhY2hlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuXHRjb25zdCB2b2x1bWVzOiBzdHJpbmdbXSA9IFtcblx0XHRcIi12XCIsXG5cdFx0YCR7dGFyZ2V0RGlyfTovd29ya3NwYWNlYCxcblx0XHRcIi12XCIsXG5cdFx0YCR7bnBtQ2FjaGVEaXJ9Oi9ucG0tY2FjaGVgLFxuXHRdO1xuXG5cdGNvbnN0IGVudkFyZ3M6IHN0cmluZ1tdID0gW1xuXHRcdFwiLWVcIixcblx0XHRcIkRFQ09IRVJFX0JVSUxERVI9MVwiLFxuXHRcdC8vIEhvc3QgZGlyIGJhc2VuYW1lIOKAlCBjb250YWluZXIgY3dkIGlzIC93b3Jrc3BhY2Ugc28gYmFzZW5hbWUgd291bGQgYmUgd3JvbmcuXG5cdFx0XCItZVwiLFxuXHRcdGBERUNPSEVSRV9QUk9KRUNUX05BTUU9JHtwcm9qZWN0TmFtZX1gLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfQ0FDSEU9L25wbS1jYWNoZVwiLFxuXHRcdFwiLWVcIixcblx0XHRcIk5QTV9DT05GSUdfUFJFRkVSX09GRkxJTkU9dHJ1ZVwiLFxuXHRcdC8vIFdyaXRhYmxlIEhPTUUgZm9yIG5wbSAvIGF1dGgwIENMSSB3aGVuIG5vdCBydW5uaW5nIGFzIGltYWdlIHJvb3Qvbm9kZS5cblx0XHRcIi1lXCIsXG5cdFx0XCJIT01FPS90bXAvZGVjb2hlcmUtY3JlYXRlLWhvbWVcIixcblx0XTtcblxuXHQvLyBNb3VudCBob3N0IC5ucG1yYyB3aGVyZSB0aGUgbm9uLXJvb3QgcHJvY2VzcyBjYW4gcmVhZCBpdC5cblx0Y29uc3QgbnBtcmNQYXRoID0gcmVzb2x2ZShob21lZGlyKCksIFwiLm5wbXJjXCIpO1xuXHRpZiAoZXhpc3RzU3luYyhucG1yY1BhdGgpKSB7XG5cdFx0dm9sdW1lcy5wdXNoKFwiLXZcIiwgYCR7bnBtcmNQYXRofTovdG1wL2hvc3QtbnBtcmM6cm9gKTtcblx0XHRlbnZBcmdzLnB1c2goXCItZVwiLCBcIk5QTV9DT05GSUdfVVNFUkNPTkZJRz0vdG1wL2hvc3QtbnBtcmNcIik7XG5cdH1cblxuXHRjb25zdCB1c2VyQXJnczogc3RyaW5nW10gPSBbXTtcblx0aWYgKHJ1bkFzSG9zdFVzZXIpIHtcblx0XHR1c2VyQXJncy5wdXNoKFwiLS11c2VyXCIsIGAke2hvc3RVaWR9OiR7aG9zdEdpZH1gKTtcblx0fSBlbHNlIGlmIChob3N0VWlkICE9IG51bGwpIHtcblx0XHQvLyBGYWxsYmFjayBmb3IgZW52aXJvbm1lbnRzIHdpdGhvdXQgZ2V0Z2lkOiBrZWVwIGxlZ2FjeSBjaG93biBwYXRoLlxuXHRcdGVudkFyZ3MucHVzaChcIi1lXCIsIGBIT1NUX1VJRD0ke2hvc3RVaWR9YCk7XG5cdFx0aWYgKGhvc3RHaWQgIT0gbnVsbCkgZW52QXJncy5wdXNoKFwiLWVcIiwgYEhPU1RfR0lEPSR7aG9zdEdpZH1gKTtcblx0fVxuXG5cdGNvbnN0IGNvbW1hbmRBcmdzOiBzdHJpbmdbXSA9IFtcIndlYmFwaVwiLCBcIi1kXCIsIFwiLlwiXTtcblx0aWYgKG9wdHMuZGF0YWJhc2VQcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tZGF0YWJhc2VcIiwgb3B0cy5kYXRhYmFzZVByb3ZpZGVyKTtcblx0fVxuXHRpZiAob3B0cy5hdXRoUHJvdmlkZXIgIT0gbnVsbCkge1xuXHRcdGNvbW1hbmRBcmdzLnB1c2goXCItLWF1dGhcIiwgb3B0cy5hdXRoUHJvdmlkZXIpO1xuXHR9XG5cdGlmIChvcHRzLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0tcG9zdG1hblwiLCBvcHRzLnBvc3RtYW5Qcm92aWRlcik7XG5cdH1cblx0aWYgKG9wdHMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0Y29tbWFuZEFyZ3MucHVzaChcIi0taW5zdGFsbFwiLCBvcHRzLmluc3RhbGxEZXBlbmRlbmNpZXMpO1xuXHR9XG5cblx0Y29uc29sZS5sb2coXCIgIFJ1bm5pbmcgc2NhZmZvbGRpbmcgaW4gYSBzYW5kYm94ZWQgY29udGFpbmVyLi4uXFxuXCIpO1xuXG5cdC8vIE9ubHkgYWxsb2NhdGUgYSBUVFkgd2hlbiBzdGRpbiBpcyBpdHNlbGYgYSBUVFkg4oCUIGF2b2lkcyBhIGh1bmcgcHJvY2Vzc1xuXHQvLyBpbiBub24taW50ZXJhY3RpdmUgZW52aXJvbm1lbnRzIChwaXBlcywgQ0ksIHNjcmlwdHMpLlxuXHRjb25zdCB0dHlGbGFncyA9IHByb2Nlc3Muc3RkaW4uaXNUVFkgPyBbXCItaXRcIl0gOiBbXCItaVwiXTtcblxuXHRjb25zdCByZXN1bHQgPSBzcGF3blN5bmMoXG5cdFx0XCJkb2NrZXJcIixcblx0XHRbXG5cdFx0XHRcInJ1blwiLFxuXHRcdFx0XCItLXJtXCIsXG5cdFx0XHQuLi50dHlGbGFncyxcblx0XHRcdC4uLnVzZXJBcmdzLFxuXHRcdFx0Li4udm9sdW1lcyxcblx0XHRcdC4uLmVudkFyZ3MsXG5cdFx0XHRcIi13XCIsXG5cdFx0XHRcIi93b3Jrc3BhY2VcIixcblx0XHRcdEJVSUxERVJfSU1BR0UsXG5cdFx0XHQuLi5jb21tYW5kQXJncyxcblx0XHRdLFxuXHRcdHsgc3RkaW86IFwiaW5oZXJpdFwiIH0sXG5cdCk7XG5cblx0aWYgKHJlc3VsdC5zdGF0dXMgPT09IDApIHtcblx0XHRjb25zb2xlLmxvZyhgXFxuICBTY2FmZm9sZCBjb21wbGV0ZSFcXG5cXG4gIE9wZW4geW91ciBwcm9qZWN0OlxcblxcbiAgICBjb2RlICR7dGFyZ2V0RGlyfVxcbmApO1xuXHR9XG5cblx0cHJvY2Vzcy5leGl0KHJlc3VsdC5zdGF0dXMgPz8gMCk7XG59XG4iXSwibmFtZXMiOlsiZXhlY0ZpbGVTeW5jIiwic3Bhd25TeW5jIiwiZXhpc3RzU3luYyIsIm1rZGlyU3luYyIsImhvbWVkaXIiLCJiYXNlbmFtZSIsInJlc29sdmUiLCJDUkVBVEVfSU1BR0VfUkVQT1NJVE9SWSIsIkNSRUFURV9WRVJTSU9OIiwiQlVJTERFUl9JTUFHRSIsInJ1bkluQnVpbGRlciIsIm9wdHMiLCJ0YXJnZXREaXIiLCJkIiwicHJvamVjdE5hbWUiLCJyZWN1cnNpdmUiLCJzdGRpbyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiaG9zdFVpZCIsImdldHVpZCIsImhvc3RHaWQiLCJnZXRnaWQiLCJydW5Bc0hvc3RVc2VyIiwibnBtQ2FjaGVEaXIiLCJ2b2x1bWVzIiwiZW52QXJncyIsIm5wbXJjUGF0aCIsInB1c2giLCJ1c2VyQXJncyIsImNvbW1hbmRBcmdzIiwiZGF0YWJhc2VQcm92aWRlciIsImF1dGhQcm92aWRlciIsInBvc3RtYW5Qcm92aWRlciIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJsb2ciLCJ0dHlGbGFncyIsInN0ZGluIiwiaXNUVFkiLCJyZXN1bHQiLCJzdGF0dXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFlBQVksRUFBRUMsU0FBUyxRQUFRLHFCQUFxQjtBQUM3RCxTQUFTQyxVQUFVLEVBQUVDLFNBQVMsUUFBUSxVQUFVO0FBQ2hELFNBQVNDLE9BQU8sUUFBUSxVQUFVO0FBQ2xDLFNBQVNDLFFBQVEsRUFBRUMsT0FBTyxRQUFRLFlBQVk7QUFDOUMsU0FBU0MsdUJBQXVCLEVBQUVDLGNBQWMsUUFBUSxlQUFlO0FBR3ZFLE1BQU1DLGdCQUFnQixHQUFHRix3QkFBd0IsQ0FBQyxFQUFFQyxnQkFBZ0I7QUFFcEU7Ozs7Ozs7OztDQVNDLEdBQ0QsT0FBTyxTQUFTRSxhQUFhQyxJQUFnQjtJQUM1QyxNQUFNQyxZQUFZTixRQUFRSyxL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