@decohere/scaffold 0.0.1-dev.126 → 0.0.1-dev.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/commonjs/src/add-api.action.js +3 -1
  2. package/commonjs/src/add-api.command.js +3 -1
  3. package/commonjs/src/add.command.js +3 -1
  4. package/commonjs/src/add.module.js +3 -1
  5. package/commonjs/src/cli.js +3 -2
  6. package/commonjs/src/create.command.js +3 -1
  7. package/commonjs/src/create.module.js +3 -1
  8. package/commonjs/src/domain/prompt.js +2 -0
  9. package/commonjs/src/index.js +2 -12
  10. package/commonjs/src/models/compose.model.js +3 -111
  11. package/commonjs/src/models/config-yaml.model.js +2 -0
  12. package/commonjs/src/models/const.js +2 -0
  13. package/commonjs/src/models/dev-container.model.js +10 -66
  14. package/commonjs/src/models/docker-image.model.js +6 -24
  15. package/commonjs/src/models/env-file.model.js +2 -0
  16. package/commonjs/src/models/gitignore.model.js +2 -7
  17. package/commonjs/src/models/launch-json.model.js +4 -0
  18. package/commonjs/src/models/package-json.model.js +7 -14
  19. package/commonjs/src/models/project.model.js +2 -0
  20. package/commonjs/src/models/source-file.js +2 -0
  21. package/commonjs/src/models/tsconfig.model.js +2 -0
  22. package/commonjs/src/models/vitest-config.model.js +2 -0
  23. package/commonjs/src/models/vscode-settings.model.js +2 -0
  24. package/commonjs/src/program.js +6 -13
  25. package/commonjs/src/resolve-target-dir.js +2 -0
  26. package/commonjs/src/services/scaffold.service.js +2 -0
  27. package/commonjs/src/version.js +2 -0
  28. package/commonjs/src/webapi/api-name.js +2 -0
  29. package/commonjs/src/webapi/cli-options.js +2 -0
  30. package/commonjs/src/webapi/const.js +3 -7
  31. package/commonjs/src/webapi/create-api.js +18 -46
  32. package/commonjs/src/webapi/devcontainer/codebase-rag-mcp.js +2 -0
  33. package/commonjs/src/webapi/devcontainer/host-scripts.js +2 -0
  34. package/commonjs/src/webapi/features/auth.feature.js +44 -11
  35. package/commonjs/src/webapi/features/auth0-cli.js +3 -40
  36. package/commonjs/src/webapi/features/biome-format.js +2 -0
  37. package/commonjs/src/webapi/features/database.feature.js +10 -10
  38. package/commonjs/src/webapi/features/finalize.feature.js +4 -2
  39. package/commonjs/src/webapi/features/postman.feature.js +2 -0
  40. package/commonjs/src/webapi/models/api-package-json.model.js +3 -1
  41. package/commonjs/src/webapi/models/auth-config.model.js +2 -0
  42. package/commonjs/src/webapi/models/controller-source-file.model.js +8 -5
  43. package/commonjs/src/webapi/models/github-ci.model.js +6 -6
  44. package/commonjs/src/webapi/models/main-source-file.model.js +5 -3
  45. package/commonjs/src/webapi/models/production-dockerfile.model.js +109 -27
  46. package/commonjs/src/webapi/models/sample-files.model.js +4 -2
  47. package/commonjs/src/webapi/models/webapi-image.model.js +2 -0
  48. package/commonjs/src/webapi/postman/hello-openapi.js +2 -0
  49. package/commonjs/src/webapi/postman/local-view.js +2 -0
  50. package/commonjs/src/webapi/postman/openapi-to-postman.js +8 -44
  51. package/commonjs/src/webapi/workspace-readme.js +5 -4
  52. package/commonjs/src/webapi.action.js +3 -1
  53. package/commonjs/src/webapi.command.js +4 -2
  54. package/es6/src/add-api.action.js +3 -1
  55. package/es6/src/add-api.command.js +3 -1
  56. package/es6/src/add.command.js +3 -1
  57. package/es6/src/add.module.js +3 -1
  58. package/es6/src/cli.js +3 -2
  59. package/es6/src/create.command.js +3 -1
  60. package/es6/src/create.module.js +3 -1
  61. package/es6/src/domain/prompt.js +2 -0
  62. package/es6/src/index.js +2 -3
  63. package/es6/src/models/compose.model.js +3 -113
  64. package/es6/src/models/config-yaml.model.js +2 -0
  65. package/es6/src/models/const.js +2 -0
  66. package/es6/src/models/dev-container.model.js +10 -66
  67. package/es6/src/models/docker-image.model.js +6 -24
  68. package/es6/src/models/env-file.model.js +2 -0
  69. package/es6/src/models/gitignore.model.js +2 -7
  70. package/es6/src/models/launch-json.model.js +4 -0
  71. package/es6/src/models/package-json.model.js +7 -11
  72. package/es6/src/models/project.model.js +2 -0
  73. package/es6/src/models/source-file.js +2 -0
  74. package/es6/src/models/tsconfig.model.js +2 -0
  75. package/es6/src/models/vitest-config.model.js +2 -0
  76. package/es6/src/models/vscode-settings.model.js +2 -0
  77. package/es6/src/program.js +7 -18
  78. package/es6/src/resolve-target-dir.js +2 -0
  79. package/es6/src/services/scaffold.service.js +2 -0
  80. package/es6/src/version.js +2 -0
  81. package/es6/src/webapi/api-name.js +2 -0
  82. package/es6/src/webapi/cli-options.js +2 -0
  83. package/es6/src/webapi/const.js +3 -4
  84. package/es6/src/webapi/create-api.js +20 -48
  85. package/es6/src/webapi/devcontainer/codebase-rag-mcp.js +2 -0
  86. package/es6/src/webapi/devcontainer/host-scripts.js +2 -0
  87. package/es6/src/webapi/features/auth.feature.js +44 -11
  88. package/es6/src/webapi/features/auth0-cli.js +4 -35
  89. package/es6/src/webapi/features/biome-format.js +2 -0
  90. package/es6/src/webapi/features/database.feature.js +10 -10
  91. package/es6/src/webapi/features/finalize.feature.js +4 -2
  92. package/es6/src/webapi/features/postman.feature.js +2 -0
  93. package/es6/src/webapi/models/api-package-json.model.js +4 -2
  94. package/es6/src/webapi/models/auth-config.model.js +2 -0
  95. package/es6/src/webapi/models/controller-source-file.model.js +8 -5
  96. package/es6/src/webapi/models/github-ci.model.js +6 -6
  97. package/es6/src/webapi/models/main-source-file.model.js +5 -3
  98. package/es6/src/webapi/models/production-dockerfile.model.js +117 -35
  99. package/es6/src/webapi/models/sample-files.model.js +4 -2
  100. package/es6/src/webapi/models/webapi-image.model.js +2 -0
  101. package/es6/src/webapi/postman/hello-openapi.js +2 -0
  102. package/es6/src/webapi/postman/local-view.js +2 -0
  103. package/es6/src/webapi/postman/openapi-to-postman.js +4 -4
  104. package/es6/src/webapi/workspace-readme.js +5 -4
  105. package/es6/src/webapi.action.js +3 -1
  106. package/es6/src/webapi.command.js +4 -2
  107. package/package.json +4 -14
  108. package/types/src/add-api.action.d.ts +1 -1
  109. package/types/src/add-api.command.d.ts +1 -1
  110. package/types/src/add.command.d.ts +2 -2
  111. package/types/src/add.module.d.ts +1 -1
  112. package/types/src/create.command.d.ts +2 -2
  113. package/types/src/create.module.d.ts +1 -1
  114. package/types/src/index.d.ts +0 -4
  115. package/types/src/models/compose.model.d.ts +0 -9
  116. package/types/src/models/dev-container.model.d.ts +1 -13
  117. package/types/src/models/docker-image.model.d.ts +0 -6
  118. package/types/src/models/gitignore.model.d.ts +0 -2
  119. package/types/src/models/package-json.model.d.ts +0 -1
  120. package/types/src/program.d.ts +1 -6
  121. package/types/src/webapi/const.d.ts +0 -2
  122. package/types/src/webapi/create-api.d.ts +1 -1
  123. package/types/src/webapi/features/auth0-cli.d.ts +0 -4
  124. package/types/src/webapi/models/api-package-json.model.d.ts +1 -1
  125. package/types/src/webapi/models/controller-source-file.model.d.ts +2 -2
  126. package/types/src/webapi/models/main-source-file.model.d.ts +1 -1
  127. package/types/src/webapi/models/production-dockerfile.model.d.ts +14 -9
  128. package/types/src/webapi.action.d.ts +1 -1
  129. package/types/src/webapi.command.d.ts +1 -1
  130. package/LICENSE +0 -15
  131. package/commonjs/src/auth0-configure.action.js +0 -28
  132. package/commonjs/src/auth0-configure.command.js +0 -24
  133. package/commonjs/src/auth0-login.action.js +0 -28
  134. package/commonjs/src/auth0-login.command.js +0 -23
  135. package/commonjs/src/auth0.command.js +0 -22
  136. package/commonjs/src/auth0.module.js +0 -28
  137. package/commonjs/src/webapi/auth0-commands.js +0 -250
  138. package/commonjs/src/webapi/authorize-scopes.js +0 -79
  139. package/es6/src/auth0-configure.action.js +0 -18
  140. package/es6/src/auth0-configure.command.js +0 -14
  141. package/es6/src/auth0-login.action.js +0 -18
  142. package/es6/src/auth0-login.command.js +0 -13
  143. package/es6/src/auth0.command.js +0 -12
  144. package/es6/src/auth0.module.js +0 -18
  145. package/es6/src/webapi/auth0-commands.js +0 -185
  146. package/es6/src/webapi/authorize-scopes.js +0 -55
  147. package/types/src/auth0-configure.action.d.ts +0 -7
  148. package/types/src/auth0-configure.command.d.ts +0 -6
  149. package/types/src/auth0-login.action.d.ts +0 -4
  150. package/types/src/auth0-login.command.d.ts +0 -6
  151. package/types/src/auth0.command.d.ts +0 -6
  152. package/types/src/auth0.module.d.ts +0 -18
  153. package/types/src/webapi/auth0-commands.d.ts +0 -11
  154. package/types/src/webapi/authorize-scopes.d.ts +0 -7
@@ -51,8 +51,7 @@ function renderBaseDataSource(apiName) {
51
51
  ` bootstrap: false`
52
52
  ].join("\n");
53
53
  }
54
- // Dev overlay: @decohere/config merges it into config.yaml by data source name, so it only states
55
- // what development changes. Enable bootstrap + migrate role.
54
+ // Dev overlay (merged by list index onto config.yaml). Enable bootstrap + migrate role.
56
55
  function renderDevDataSource(apiName) {
57
56
  const p = apiEnvPrefix(apiName);
58
57
  return [
@@ -121,7 +120,7 @@ ENTRYPOINT ["/usr/local/bin/decohere-postgres-entrypoint.sh"]
121
120
  CMD ["postgres"]
122
121
  `;
123
122
  const SAMPLE_ENTITY_TS = `import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";
124
- import type { Entity as IEntity } from "@decohere/data";
123
+ import type { Entity as IEntity } from "@decohere/codex";
125
124
 
126
125
  @Entity()
127
126
  export class SampleEntity implements IEntity {
@@ -133,8 +132,8 @@ export class SampleEntity implements IEntity {
133
132
  }
134
133
  `;
135
134
  const SAMPLE_REPOSITORY_TS = `import { injectable } from "@decohere/crucible/decorators";
136
- import { injectUnitOfWork } from "@decohere/data";
137
- import { TypeOrmRepository, TypeOrmUnitOfWork } from "@decohere/data-typeorm";
135
+ import { injectUnitOfWork } from "@decohere/codex";
136
+ import { TypeOrmRepository, TypeOrmUnitOfWork } from "@decohere/codex-typeorm";
138
137
  import { SampleEntity } from "../entities/sample.entity.js";
139
138
 
140
139
  @injectable()
@@ -280,8 +279,7 @@ function scaffold(workspace, options) {
280
279
  const devContainer = workspace.getModel(WELL_KNOWN_FILES.DEVCONTAINER_JSON);
281
280
  const compose = workspace.getModel(WELL_KNOWN_FILES.DOCKER_COMPOSE);
282
281
  const networkKey = name;
283
- // Skip when the workspace already runs Postgres (`decohere add api` on a database workspace).
284
- if (compose && !compose.hasService("postgres")) {
282
+ if (compose) {
285
283
  // One shared instance. Each API owns a database on it (created at bootstrap).
286
284
  // Point `{PREFIX}_DB_HOST` / `{PREFIX}_DB_PORT` at another server to split later.
287
285
  // Custom image: sync bootstrap role password on every start (initdb.d is once-only).
@@ -337,7 +335,7 @@ function scaffold(workspace, options) {
337
335
  }
338
336
  devContainer?.addExtension("mtxr.sqltools", "mtxr.sqltools-driver-pg");
339
337
  workspace.getModel(WELL_KNOWN_FILES.DOCKERFILE)?.addLayer(withPostgresqlClient());
340
- const pkg = workspace.getModel(WELL_KNOWN_FILES.PACKAGE_JSON)?.addDependency("@decohere/data", CREATE_VERSION).addDependency("typeorm", "^0.3.28").addDependency("@decohere/data-typeorm", CREATE_VERSION).addDependency("tsx", "^4.20.5").addScript("db:up", "docker compose -f .devcontainer/docker-compose.yml up -d postgres").addScript("db:down", "docker compose -f .devcontainer/docker-compose.yml down").addScript("db:reset", DB_RESET_SCRIPT);
338
+ const pkg = workspace.getModel(WELL_KNOWN_FILES.PACKAGE_JSON)?.addDependency("@decohere/codex", CREATE_VERSION).addDependency("typeorm", "^0.3.28").addDependency("@decohere/codex-typeorm", CREATE_VERSION).addDependency("tsx", "^4.20.5").addScript("db:up", "docker compose -f .devcontainer/docker-compose.yml up -d postgres").addScript("db:down", "docker compose -f .devcontainer/docker-compose.yml down").addScript("db:reset", DB_RESET_SCRIPT);
341
339
  const primaryApi = apiNames[0];
342
340
  if (pkg != null) {
343
341
  for (const apiName of apiNames){
@@ -388,14 +386,14 @@ function writeApiDatabaseEnv(workspace, ident, apiName) {
388
386
  }
389
387
  function wireApiDatabase(project) {
390
388
  const apiName = apiNameFromProjectDir(project.dir);
391
- project.getModel(WELL_KNOWN_FILES.MAIN_TS)?.setDataSourceName(apiName).addSideEffectImport("@decohere/data-typeorm").addEntity({
389
+ project.getModel(WELL_KNOWN_FILES.MAIN_TS)?.setDataSourceName(apiName).addSideEffectImport("@decohere/codex-typeorm").addEntity({
392
390
  className: "SampleEntity",
393
391
  importPath: "./entities/sample.entity.js"
394
392
  }).addRepository({
395
393
  className: "SampleEntityRepository",
396
394
  importPath: "./repositories/sample.repository.js"
397
395
  });
398
- project.getModel(WELL_KNOWN_FILES.API_PACKAGE_JSON)?.addDependency("@decohere/data", CREATE_VERSION).addDependency("@decohere/data-typeorm", CREATE_VERSION);
396
+ project.getModel(WELL_KNOWN_FILES.API_PACKAGE_JSON)?.addDependency("@decohere/codex", CREATE_VERSION).addDependency("@decohere/codex-typeorm", CREATE_VERSION);
399
397
  project.addFile({
400
398
  files: ()=>[
401
399
  {
@@ -421,3 +419,5 @@ export const DatabaseFeature = {
421
419
  getOptions,
422
420
  scaffold
423
421
  };
422
+
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvZmVhdHVyZXMvZGF0YWJhc2UuZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gXCJub2RlOmNyeXB0b1wiO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9wcm9tcHQuanNcIjtcbmltcG9ydCB0eXBlIHsgRG9ja2VyQ29tcG9zZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29tcG9zZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBDb25maWdZYW1sIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25maWcteWFtbC5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgRGV2Q29udGFpbmVyIH0gZnJvbSBcIi4uLy4uL21vZGVscy9kZXYtY29udGFpbmVyLm1vZGVsLmpzXCI7XG5pbXBvcnQge1xuXHR0eXBlIERvY2tlcmZpbGVNb2RlbCxcblx0d2l0aFBvc3RncmVzcWxDbGllbnQsXG59IGZyb20gXCIuLi8uLi9tb2RlbHMvZG9ja2VyLWltYWdlLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEVudkZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2Vudi1maWxlLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEdpdGlnbm9yZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvZ2l0aWdub3JlLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFBhY2thZ2VKc29uIH0gZnJvbSBcIi4uLy4uL21vZGVscy9wYWNrYWdlLWpzb24ubW9kZWwuanNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdFNjYWZmb2xkLCBXb3Jrc3BhY2VTY2FmZm9sZCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcHJvamVjdC5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjYWZmb2xkLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IENSRUFURV9WRVJTSU9OIH0gZnJvbSBcIi4uLy4uL3ZlcnNpb24uanNcIjtcbmltcG9ydCB7IGFwaUVudlByZWZpeCwgYXBpTmFtZUZyb21Qcm9qZWN0RGlyIH0gZnJvbSBcIi4uL2FwaS1uYW1lLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEFwaVBhY2thZ2VKc29uIH0gZnJvbSBcIi4uL21vZGVscy9hcGktcGFja2FnZS1qc29uLm1vZGVsLmpzXCI7XG5pbXBvcnQgdHlwZSB7IE1haW5Tb3VyY2VGaWxlIH0gZnJvbSBcIi4uL21vZGVscy9tYWluLXNvdXJjZS1maWxlLm1vZGVsLmpzXCI7XG5cbi8qKiBCaW5kIHBhdGggcmVsYXRpdmUgdG8gYC5kZXZjb250YWluZXIvZG9ja2VyLWNvbXBvc2UueW1sYCAoZGllcyB3aXRoIHRoZSB3b3JraW5nIHRyZWUpLiAqL1xuY29uc3QgUE9TVEdSRVNfREFUQV9CSU5EID0gXCIuL3Bvc3RncmVzLWRhdGE6L3Zhci9saWIvcG9zdGdyZXNxbC9kYXRhXCI7XG5jb25zdCBQT1NUR1JFU19EQVRBX0dJVElHTk9SRSA9IFwiLmRldmNvbnRhaW5lci9wb3N0Z3Jlcy1kYXRhXCI7XG5jb25zdCBEQl9SRVNFVF9TQ1JJUFQgPVxuXHRcInJtIC1yZiAuZGV2Y29udGFpbmVyL3Bvc3RncmVzLWRhdGEgJiYgZG9ja2VyIGNvbXBvc2UgLWYgLmRldmNvbnRhaW5lci9kb2NrZXItY29tcG9zZS55bWwgZG93biAmJiBkb2NrZXIgY29tcG9zZSAtZiAuZGV2Y29udGFpbmVyL2RvY2tlci1jb21wb3NlLnltbCB1cCAtZCBwb3N0Z3Jlc1wiO1xuXG5leHBvcnQgdHlwZSBEYXRhYmFzZU9wdGlvbnMgPSB7XG5cdGRhdGFiYXNlUHJvdmlkZXI/OiBcIm5vbmVcIiB8IFwicG9zdGdyZXMvdHlwZW9ybVwiO1xuXHQvKiogV2hlbiB0cnVlLCBtZXJnZSBpbnRvIGFuIGV4aXN0aW5nIHdvcmtzcGFjZSAoXFxgd2ViYXBpIGFkZFxcYCkuICovXG5cdGFkZD86IGJvb2xlYW47XG59O1xuXG4vKiogUmVhZCBhIHNpbmdsZSBLRVk9IGZyb20gYW4gZXhpc3RpbmcgdGFyZ2V0IGAuZW52YCAoaWYgYW55KS4gKi9cbmZ1bmN0aW9uIHJlYWRFeGlzdGluZ0VudlZhbHVlKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsIGtleTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0dHJ5IHtcblx0XHRjb25zdCByYXcgPSByZWFkRmlsZVN5bmMoam9pbih3b3Jrc3BhY2UudGFyZ2V0RGlyLCBcIi5lbnZcIiksIFwidXRmOFwiKTtcblx0XHRjb25zdCBsaW5lID0gcmF3LnNwbGl0KFwiXFxuXCIpLmZpbmQoKGwpID0+IGwuc3RhcnRzV2l0aChgJHtrZXl9PWApKTtcblx0XHRjb25zdCB2YWx1ZSA9IGxpbmU/LnNsaWNlKGtleS5sZW5ndGggKyAxKS50cmltKCk7XG5cdFx0cmV0dXJuIHZhbHVlIHx8IHVuZGVmaW5lZDtcblx0fSBjYXRjaCB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG5mdW5jdGlvbiByYW5kb21QYXNzd29yZCgpOiBzdHJpbmcge1xuXHRyZXR1cm4gcmFuZG9tQnl0ZXMoMTYpLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG4vKiogU2FmZSBQb3N0Z3JlcyBpZGVudGlmaWVyIGZyYWdtZW50IGZyb20gdGhlIHByb2plY3QgbmFtZS4gKi9cbmZ1bmN0aW9uIHRvU3FsSWRlbnRGcmFnbWVudChuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBjbGVhbmVkID0gbmFtZS5yZXBsYWNlKC9bXkEtWmEtejAtOV9dL2csIFwiX1wiKS5yZXBsYWNlKC9eKFteQS1aYS16X10pLywgXCJwXyQxXCIpO1xuXHRyZXR1cm4gY2xlYW5lZC5sZW5ndGggPiAwID8gY2xlYW5lZC5zbGljZSgwLCA0MCkgOiBcImFwcFwiO1xufVxuXG5mdW5jdGlvbiBwYXNzd29yZE9yRXhpc3RpbmcoXG5cdHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsXG5cdGtleTogc3RyaW5nLFxuXHRmYWxsYmFja0V4aXN0aW5nS2V5czogc3RyaW5nW10gPSBbXSxcbik6IHN0cmluZyB7XG5cdGNvbnN0IGV4aXN0aW5nID0gcmVhZEV4aXN0aW5nRW52VmFsdWUod29ya3NwYWNlLCBrZXkpO1xuXHRpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblx0Zm9yIChjb25zdCBhbHQgb2YgZmFsbGJhY2tFeGlzdGluZ0tleXMpIHtcblx0XHRjb25zdCB2ID0gcmVhZEV4aXN0aW5nRW52VmFsdWUod29ya3NwYWNlLCBhbHQpO1xuXHRcdGlmICh2KSByZXR1cm4gdjtcblx0fVxuXHRyZXR1cm4gcmFuZG9tUGFzc3dvcmQoKTtcbn1cblxuLy8gUHJvZHVjdGlvbjogcnVudGltZSBhcHAgcm9sZSBvbmx5IOKAlCBubyBib290c3RyYXAsIG5vIGFkbWluL21pZ3JhdGUgc2VjcmV0cyByZXF1aXJlZC5cbmZ1bmN0aW9uIHJlbmRlckJhc2VEYXRhU291cmNlKGFwaU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHAgPSBhcGlFbnZQcmVmaXgoYXBpTmFtZSk7XG5cdHJldHVybiBbXG5cdFx0YCAgICAtIG5hbWU6ICR7YXBpTmFtZX1gLFxuXHRcdGAgICAgICBwcm92aWRlcjogcG9zdGdyZXNgLFxuXHRcdGAgICAgICBob3N0OiBcXCR7JHtwfV9EQl9IT1NUfWAsXG5cdFx0YCAgICAgIHBvcnQ6IFxcJHske3B9X0RCX1BPUlR9YCxcblx0XHRgICAgICAgZGF0YWJhc2U6IFxcJHske3B9X0RCX05BTUV9YCxcblx0XHRgICAgICAgdXNlcm5hbWU6IFxcJHske3B9X0RCX1VTRVJ9YCxcblx0XHRgICAgICAgcGFzc3dvcmQ6IFxcJHske3B9X0RCX1BBU1NXT1JEfWAsXG5cdFx0YCAgICAgIHN5bmNocm9uaXplOiBmYWxzZWAsXG5cdFx0YCAgICAgIHNlZWQ6IGZhbHNlYCxcblx0XHRgICAgICAgYm9vdHN0cmFwOiBmYWxzZWAsXG5cdF0uam9pbihcIlxcblwiKTtcbn1cblxuLy8gRGV2IG92ZXJsYXkgKG1lcmdlZCBieSBsaXN0IGluZGV4IG9udG8gY29uZmlnLnlhbWwpLiBFbmFibGUgYm9vdHN0cmFwICsgbWlncmF0ZSByb2xlLlxuZnVuY3Rpb24gcmVuZGVyRGV2RGF0YVNvdXJjZShhcGlOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBwID0gYXBpRW52UHJlZml4KGFwaU5hbWUpO1xuXHRyZXR1cm4gW1xuXHRcdGAgICAgLSBuYW1lOiAke2FwaU5hbWV9YCxcblx0XHRgICAgICAgc3luY2hyb25pemU6IHRydWVgLFxuXHRcdGAgICAgICBzZWVkOiB0cnVlYCxcblx0XHRgICAgICAgYm9vdHN0cmFwOiB0cnVlYCxcblx0XHRgICAgICAgYWRtaW5Vc2VyOiBcXCR7REJfQURNSU5fVVNFUn1gLFxuXHRcdGAgICAgICBhZG1pblBhc3N3b3JkOiBcXCR7REJfQURNSU5fUEFTU1dPUkR9YCxcblx0XHRgICAgICAgbWlncmF0ZVVzZXJuYW1lOiBcXCR7JHtwfV9EQl9NSUdSQVRFX1VTRVJ9YCxcblx0XHRgICAgICAgbWlncmF0ZVBhc3N3b3JkOiBcXCR7JHtwfV9EQl9NSUdSQVRFX1BBU1NXT1JEfWAsXG5cdF0uam9pbihcIlxcblwiKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRGF0YWJhc2VTZWN0aW9uKFxuXHRhcGlOYW1lczogcmVhZG9ubHkgc3RyaW5nW10sXG5cdGl0ZW1zOiAobmFtZTogc3RyaW5nKSA9PiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuXHRyZXR1cm4gYGRhdGFiYXNlOlxcbiAgZGF0YVNvdXJjZXM6XFxuJHthcGlOYW1lcy5tYXAoaXRlbXMpLmpvaW4oXCJcXG5cIil9XFxuYDtcbn1cblxuLyoqIENyZWF0ZS1vci1zeW5jIGJvb3RzdHJhcCByb2xlOyBydW5zIG9uIGV2ZXJ5IFBvc3RncmVzIGNvbnRhaW5lciBzdGFydCAobm90IG9ubHkgZW1wdHkgdm9sdW1lKS4gKi9cbmNvbnN0IFBPU1RHUkVTX0VOU1VSRV9CT09UU1RSQVBfU0ggPSBgIyEvYmluL2Jhc2hcbnNldCAtZXVvIHBpcGVmYWlsXG4jIFN1cGVydXNlciBhbGlnbnMgZGVjb2hlcmVfYm9vdHN0cmFwIHdpdGggREJfQURNSU5fKiBmcm9tIGVudl9maWxlIG9uIGV2ZXJ5IHN0YXJ0LlxuIyBJbml0ZGIuZCBhbG9uZSBpcyBpbnN1ZmZpY2llbnQ6IHBhc3N3b3JkcyBpbiAuZW52IGNhbiBjaGFuZ2Ugd2hpbGUgdGhlIHZvbHVtZSBwZXJzaXN0cy5cbjogXCJcXCR7UE9TVEdSRVNfVVNFUjo/UE9TVEdSRVNfVVNFUiBpcyByZXF1aXJlZH1cIlxuOiBcIlxcJHtEQl9BRE1JTl9VU0VSOj9EQl9BRE1JTl9VU0VSIGlzIHJlcXVpcmVkfVwiXG46IFwiXFwke0RCX0FETUlOX1BBU1NXT1JEOj9EQl9BRE1JTl9QQVNTV09SRCBpcyByZXF1aXJlZH1cIlxuXG5wc3FsIC12IE9OX0VSUk9SX1NUT1A9MSAtLXVzZXJuYW1lIFwiJFBPU1RHUkVTX1VTRVJcIiAtLWRibmFtZSBwb3N0Z3JlcyBcXFxcXG5cXHQtLXNldD1ib290c3RyYXBfdXNlcj1cIiREQl9BRE1JTl9VU0VSXCIgXFxcXFxuXFx0LS1zZXQ9Ym9vdHN0cmFwX3Bhc3N3b3JkPVwiJERCX0FETUlOX1BBU1NXT1JEXCIgPDwnRU9TUUwnXG5TRUxFQ1QgZm9ybWF0KFxuXFx0J0NSRUFURSBST0xFICVJIExPR0lOIFBBU1NXT1JEICVMIENSRUFURURCIENSRUFURVJPTEUgTk9TVVBFUlVTRVIgTk9CWVBBU1NSTFMnLFxuXFx0Oidib290c3RyYXBfdXNlcicsXG5cXHQ6J2Jvb3RzdHJhcF9wYXNzd29yZCdcbilcbldIRVJFIE5PVCBFWElTVFMgKFxuXFx0U0VMRUNUIDEgRlJPTSBwZ19jYXRhbG9nLnBnX3JvbGVzIFdIRVJFIHJvbG5hbWUgPSA6J2Jvb3RzdHJhcF91c2VyJ1xuKVxcXFxnZXhlY1xuXG5TRUxFQ1QgZm9ybWF0KFxuXFx0J0FMVEVSIFJPTEUgJUkgV0lUSCBMT0dJTiBQQVNTV09SRCAlTCBDUkVBVEVEQiBDUkVBVEVST0xFIE5PU1VQRVJVU0VSIE5PQllQQVNTUkxTJyxcblxcdDonYm9vdHN0cmFwX3VzZXInLFxuXFx0Oidib290c3RyYXBfcGFzc3dvcmQnXG4pXFxcXGdleGVjXG5cbkdSQU5UIENPTk5FQ1QgT04gREFUQUJBU0UgcG9zdGdyZXMgVE8gOlwiYm9vdHN0cmFwX3VzZXJcIjtcbkVPU1FMXG5gO1xuXG5jb25zdCBQT1NUR1JFU19FTlRSWVBPSU5UX1NIID0gYCMhL2Jpbi9iYXNoXG5zZXQgLWV1byBwaXBlZmFpbFxuKFxuXFx0Zm9yIF8gaW4gJChzZXEgMSA2MCk7IGRvXG5cXHRcXHRpZiBwZ19pc3JlYWR5IC1VIFwiXFwke1BPU1RHUkVTX1VTRVI6LXBvc3RncmVzfVwiID4vZGV2L251bGwgMj4mMTsgdGhlblxuXFx0XFx0XFx0L3Vzci9sb2NhbC9iaW4vZGVjb2hlcmUtZW5zdXJlLWJvb3RzdHJhcC5zaFxuXFx0XFx0XFx0ZXhpdCAwXG5cXHRcXHRmaVxuXFx0XFx0c2xlZXAgMC41XG5cXHRkb25lXG5cXHRlY2hvIFwiZGVjb2hlcmU6IHRpbWVkIG91dCB3YWl0aW5nIGZvciBQb3N0Z3JlcyBiZWZvcmUgZW5zdXJpbmcgYm9vdHN0cmFwIHJvbGVcIiA+JjJcblxcdGV4aXQgMVxuKSAmXG5leGVjIGRvY2tlci1lbnRyeXBvaW50LnNoIFwiJEBcIlxuYDtcblxuY29uc3QgUE9TVEdSRVNfSU1BR0VfRE9DS0VSRklMRSA9IGBGUk9NIHBvc3RncmVzOjE2XG5DT1BZIGVuc3VyZS1ib290c3RyYXAtcm9sZS5zaCAvdXNyL2xvY2FsL2Jpbi9kZWNvaGVyZS1lbnN1cmUtYm9vdHN0cmFwLnNoXG5DT1BZIGVudHJ5cG9pbnQuc2ggL3Vzci9sb2NhbC9iaW4vZGVjb2hlcmUtcG9zdGdyZXMtZW50cnlwb2ludC5zaFxuUlVOIGNobW9kICt4IC91c3IvbG9jYWwvYmluL2RlY29oZXJlLWVuc3VyZS1ib290c3RyYXAuc2ggL3Vzci9sb2NhbC9iaW4vZGVjb2hlcmUtcG9zdGdyZXMtZW50cnlwb2ludC5zaFxuRU5UUllQT0lOVCBbXCIvdXNyL2xvY2FsL2Jpbi9kZWNvaGVyZS1wb3N0Z3Jlcy1lbnRyeXBvaW50LnNoXCJdXG5DTUQgW1wicG9zdGdyZXNcIl1cbmA7XG5cbmNvbnN0IFNBTVBMRV9FTlRJVFlfVFMgPSBgaW1wb3J0IHsgQ29sdW1uLCBFbnRpdHksIFByaW1hcnlHZW5lcmF0ZWRDb2x1bW4gfSBmcm9tIFwidHlwZW9ybVwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHkgYXMgSUVudGl0eSB9IGZyb20gXCJAZGVjb2hlcmUvY29kZXhcIjtcblxuQEVudGl0eSgpXG5leHBvcnQgY2xhc3MgU2FtcGxlRW50aXR5IGltcGxlbWVudHMgSUVudGl0eSB7XG5cXHRAUHJpbWFyeUdlbmVyYXRlZENvbHVtbigpXG5cXHRwdWJsaWMgaWQhOiBudW1iZXI7XG5cblxcdEBDb2x1bW4oKVxuXFx0cHVibGljIG5hbWUhOiBzdHJpbmc7XG59XG5gO1xuXG5jb25zdCBTQU1QTEVfUkVQT1NJVE9SWV9UUyA9IGBpbXBvcnQgeyBpbmplY3RhYmxlIH0gZnJvbSBcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBpbmplY3RVbml0T2ZXb3JrIH0gZnJvbSBcIkBkZWNvaGVyZS9jb2RleFwiO1xuaW1wb3J0IHsgVHlwZU9ybVJlcG9zaXRvcnksIFR5cGVPcm1Vbml0T2ZXb3JrIH0gZnJvbSBcIkBkZWNvaGVyZS9jb2RleC10eXBlb3JtXCI7XG5pbXBvcnQgeyBTYW1wbGVFbnRpdHkgfSBmcm9tIFwiLi4vZW50aXRpZXMvc2FtcGxlLmVudGl0eS5qc1wiO1xuXG5AaW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2FtcGxlRW50aXR5UmVwb3NpdG9yeSBleHRlbmRzIFR5cGVPcm1SZXBvc2l0b3J5PFNhbXBsZUVudGl0eT4ge1xuXFx0cHVibGljIGNvbnN0cnVjdG9yKEBpbmplY3RVbml0T2ZXb3JrKCkgdW5pdE9mV29yazogVHlwZU9ybVVuaXRPZldvcmspIHtcblxcdFxcdHN1cGVyKHVuaXRPZldvcmssIFNhbXBsZUVudGl0eSk7XG5cXHR9XG59XG5gO1xuXG4vKiogVHlwZU9STSBDTEkgRGF0YVNvdXJjZSDigJQgY29ubmVjdHMgYXMgdGhlIG1pZ3JhdGUgcm9sZTsgbmV2ZXIgZW5hYmxlcyBzeW5jaHJvbml6ZS4gKi9cbmZ1bmN0aW9uIHJlbmRlclR5cGVPcm1EYXRhU291cmNlKGFwaU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHAgPSBhcGlFbnZQcmVmaXgoYXBpTmFtZSk7XG5cdHJldHVybiBgaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIjtcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tIFwidHlwZW9ybVwiO1xuXG5jb25zdCByb290ID0gZGlybmFtZShmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybCkpO1xuY29uc3QgcmVxdWlyZWQgPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXFx0Y29uc3QgdmFsdWUgPSBwcm9jZXNzLmVudltrZXldO1xuXFx0aWYgKHZhbHVlID09IG51bGwgfHwgdmFsdWUgPT09IFwiXCIpIHtcblxcdFxcdHRocm93IG5ldyBFcnJvcihcXGBNaXNzaW5nIGVudiBcXCR7a2V5fSAobG9hZCAuZW52IHZpYSAtLWVudi1maWxlIG9yIGV4cG9ydCBpdClcXGApO1xuXFx0fVxuXFx0cmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBDTEktb25seSBEYXRhU291cmNlIGZvciBcXGBwbnBtIGRiOm1pZ3JhdGVcXGAgLyBcXGBwbnBtIGRiOm1pZ3JhdGU6Z2VuZXJhdGVcXGAuXG4gKiBVc2VzIHRoZSBtaWdyYXRlIHJvbGUgKERETCkuIFJ1bnRpbWUgQVBJIHBvZHMgdXNlIHRoZSBhcHAgcm9sZSB3aXRoIHN5bmNocm9uaXplOiBmYWxzZS5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgbmV3IERhdGFTb3VyY2Uoe1xuXFx0dHlwZTogXCJwb3N0Z3Jlc1wiLFxuXFx0aG9zdDogcmVxdWlyZWQoXCIke3B9X0RCX0hPU1RcIiksXG5cXHRwb3J0OiBOdW1iZXIocmVxdWlyZWQoXCIke3B9X0RCX1BPUlRcIikpLFxuXFx0ZGF0YWJhc2U6IHJlcXVpcmVkKFwiJHtwfV9EQl9OQU1FXCIpLFxuXFx0dXNlcm5hbWU6IHJlcXVpcmVkKFwiJHtwfV9EQl9NSUdSQVRFX1VTRVJcIiksXG5cXHRwYXNzd29yZDogcmVxdWlyZWQoXCIke3B9X0RCX01JR1JBVEVfUEFTU1dPUkRcIiksXG5cXHRzeW5jaHJvbml6ZTogZmFsc2UsXG5cXHRlbnRpdGllczogW2pvaW4ocm9vdCwgXCJlbnRpdGllc1wiLCBcIioue3RzLGpzfVwiKV0sXG5cXHRtaWdyYXRpb25zOiBbam9pbihyb290LCBcIm1pZ3JhdGlvbnNcIiwgXCIqLnt0cyxqc31cIildLFxufSk7XG5gO1xufVxuXG5jb25zdCBEQVRBQkFTRV9ET0NTX01EID0gYCMgRGF0YWJhc2UgKFBvc3RncmVzIC8gVHlwZU9STSlcblxuIyMgUm9sZXNcblxufCBSb2xlIHwgRW52IHwgUHVycG9zZSB8XG58LS0tfC0tLXwtLS18XG58IEFwcCB8IFxcYHtQUkVGSVh9X0RCX1VTRVJcXGAgfCBSdW50aW1lIEFQSSAoRE1MIG9ubHkgaW4gcHJvZHVjdGlvbikgfFxufCBNaWdyYXRlIHwgXFxge1BSRUZJWH1fREJfTUlHUkFURV9VU0VSXFxgIHwgU2NoZW1hIGNoYW5nZXMgLyBUeXBlT1JNIG1pZ3JhdGlvbnMgKENJL2RlcGxveSkgfFxufCBCb290c3RyYXAgfCBcXGBEQl9BRE1JTl9VU0VSXFxgIHwgQ3JlYXRlIERCICsgcm9sZXMgd2hlbiBcXGBib290c3RyYXA6IHRydWVcXGAgKGRldikgfFxuXG5cXGB7UFJFRklYfVxcYCBpcyB0aGUgQVBJIHNsdWcgaW4gU0NSRUFNSU5HX1NOQUtFIChcXGBhcGlcXGAg4oaSIFxcYEFQSVxcYCwgXFxgYmlsbGluZ1xcYCDihpIgXFxgQklMTElOR1xcYCkuXG5cbiMjIERldmVsb3BtZW50IChmYXN0IGl0ZXJhdGlvbilcblxuXFxgY29uZmlnL2NvbmZpZy5kZXYueWFtbFxcYCBzZXRzIFxcYHN5bmNocm9uaXplOiB0cnVlXFxgIGFuZCBcXGBzZWVkOiB0cnVlXFxgIHNvIHRoZSBBUEkgY2FuIGNyZWF0ZSB0YWJsZXMgb24gc3RhcnR1cC4gWW91IGNhbiBrZWVwIHVzaW5nIHN5bmMgd2hpbGUgcHJvdG90eXBpbmcuXG5cbkFsdGVybmF0aXZlbHksIHR1cm4gc3luYyBvZmYgaW4gdGhlIG92ZXJsYXkgYW5kIHVzZSBtaWdyYXRpb25zIHRoZSBzYW1lIHdheSBhcyBwcm9kdWN0aW9uOlxuXG5cXGBcXGBcXGBiYXNoXG5wbnBtIGRiOnVwXG5wbnBtIGRiOm1pZ3JhdGVcbnBucG0gZGI6bWlncmF0ZTpnZW5lcmF0ZSAtLSAuL3Byb2plY3RzL2FwaS9zcmMvbWlncmF0aW9ucy9BZGRTb21ldGhpbmdcblxcYFxcYFxcYFxuXG5EbyAqKm5vdCoqIG1peCBzeW5jIGFuZCBtaWdyYXRpb25zIGZvciB0aGUgc2FtZSBzY2hlbWEgY2hhbmdlIChwaWNrIG9uZSBwYXRoIHBlciBjaGFuZ2UpLlxuXG4jIyBQcm9kdWN0aW9uIChtaWdyYXRpb25zIG9ubHkpXG5cblxcYGNvbmZpZy9jb25maWcueWFtbFxcYCBrZWVwcyBcXGBzeW5jaHJvbml6ZTogZmFsc2VcXGAgLyBcXGBzZWVkOiBmYWxzZVxcYCAvIFxcYGJvb3RzdHJhcDogZmFsc2VcXGAuIERlcGxveSBzdGVwczpcblxuMS4gRW5zdXJlIHRoZSBhcHAgZGF0YWJhc2UgYW5kIHJvbGVzIGFscmVhZHkgZXhpc3QgKHByb3Zpc2lvbmVyIC8gb3BzIOKAlCBub3QgdGhlIEFQSSBwb2QpLlxuMi4gUnVuIG1pZ3JhdGlvbnMgd2l0aCB0aGUgbWlncmF0ZSByb2xlOiBcXGBwbnBtIGRiOm1pZ3JhdGVcXGAgKG9yIFxcYHBucG0gZGI6bWlncmF0ZTo8YXBpPlxcYCBmb3IgbXVsdGktQVBJKS5cbjMuIFN0YXJ0IHRoZSBBUEkgd2l0aCB0aGUgYXBwIHJvbGUgb25seSDigJQgbm8gbWlncmF0ZS9hZG1pbiBzZWNyZXRzIG9uIHRoZSBwb2QuXG5cbiMjIFNjcmlwdHNcblxufCBTY3JpcHQgfCBXaGF0IGl0IGRvZXMgfFxufC0tLXwtLS18XG58IFxcYGRiOnVwXFxgIC8gXFxgZGI6ZG93blxcYCAvIFxcYGRiOnJlc2V0XFxgIHwgTG9jYWwgQ29tcG9zZSBQb3N0Z3JlcyB8XG58IFxcYGRiOm1pZ3JhdGVcXGAgfCBSdW4gcGVuZGluZyBtaWdyYXRpb25zIChcXGBwcm9qZWN0cy9hcGlcXGAgYnkgZGVmYXVsdCkgfFxufCBcXGBkYjptaWdyYXRlOmdlbmVyYXRlXFxgIHwgR2VuZXJhdGUgYSBtaWdyYXRpb24gZnJvbSBlbnRpdHkgZHJpZnQgKHBhc3MgcGF0aCBhZnRlciBcXGAtLVxcYCkgfFxufCBcXGBkYjptaWdyYXRlOjxhcGk+XFxgIHwgU2FtZSBmb3IgYSBuYW1lZCBBUEkgdW5kZXIgXFxgcHJvamVjdHMvPGFwaT5cXGAgfFxuXG5DTEkgZW50cnk6IFxcYHByb2plY3RzLzxhcGk+L3NyYy90eXBlb3JtLmRhdGEtc291cmNlLnRzXFxgIChtaWdyYXRlIGNyZWRlbnRpYWxzLCBcXGBzeW5jaHJvbml6ZTogZmFsc2VcXGApLlxuXG4jIyBCcm93c2UgdGhlIGRhdGFiYXNlXG5cblByZWZlciB0aGUgRGV2IENvbnRhaW5lciAqKlNRTFRvb2xzKiogZXh0ZW5zaW9uIChQb3N0Z3JlcyBkcml2ZXIpIG9yIGFueSBkZXNrdG9wIGNsaWVudCBhZ2FpbnN0IFxcYDEyNy4wLjAuMTo1NDMzXFxgIChzZWUgXFxgLmVudlxcYCBmb3IgY3JlZGVudGlhbHMpLlxuXG5BZG1pbmVyIGlzICoqbm90Kiogc2NhZmZvbGRlZC4gSWYgeW91IHdhbnQgYSBicm93c2VyIFVJIGluIENvbXBvc2UsIGFkZCB0aGlzIHVuZGVyIFxcYHNlcnZpY2VzOlxcYCBpbiBcXGAuZGV2Y29udGFpbmVyL2RvY2tlci1jb21wb3NlLnltbFxcYCAocHJvZmlsZSBcXGB0b29sc1xcYCBzbyBpdCBzdGF5cyBvZmYgYnkgZGVmYXVsdCk6XG5cblxcYFxcYFxcYHlhbWxcbiAgYWRtaW5lcjpcbiAgICBpbWFnZTogYWRtaW5lclxuICAgIHByb2ZpbGVzOlxuICAgICAgLSB0b29sc1xuICAgIHBvcnRzOlxuICAgICAgLSBcIjEyNy4wLjAuMTo4MDgxOjgwODBcIlxuICAgIG5ldHdvcmtzOlxuICAgICAgLSA8Y29tcG9zZS1uZXR3b3JrLWtleT4gIyBzYW1lIGtleSBhcyBwb3N0Z3JlcyAvIGRldmNvbnRhaW5lclxuXFxgXFxgXFxgXG5cblRoZW46IFxcYGRvY2tlciBjb21wb3NlIC1mIC5kZXZjb250YWluZXIvZG9ja2VyLWNvbXBvc2UueW1sIC0tcHJvZmlsZSB0b29scyB1cCAtZCBhZG1pbmVyXFxgXG5gO1xuXG5mdW5jdGlvbiB0eXBlb3JtQ2xpKGFyZ3M6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBgbm9kZSAtLWltcG9ydCB0c3ggLS1lbnYtZmlsZT0uZW52IC4vbm9kZV9tb2R1bGVzL3R5cGVvcm0vY2xpLmpzICR7YXJnc31gO1xufVxuXG5mdW5jdGlvbiBtaWdyYXRlUnVuU2NyaXB0KGFwaU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiB0eXBlb3JtQ2xpKGBtaWdyYXRpb246cnVuIC1kIC4vcHJvamVjdHMvJHthcGlOYW1lfS9zcmMvdHlwZW9ybS5kYXRhLXNvdXJjZS50c2ApO1xufVxuXG5mdW5jdGlvbiBtaWdyYXRlR2VuZXJhdGVTY3JpcHQoYXBpTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcblx0cmV0dXJuIHR5cGVvcm1DbGkoXG5cdFx0YG1pZ3JhdGlvbjpnZW5lcmF0ZSAtLWVzbSAtZCAuL3Byb2plY3RzLyR7YXBpTmFtZX0vc3JjL3R5cGVvcm0uZGF0YS1zb3VyY2UudHNgLFxuXHQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcHRpb25zKFxuXHRfd29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCxcblx0Y2xpT3B0aW9uczogUGFydGlhbDxEYXRhYmFzZU9wdGlvbnM+LFxuKTogUHJvbWlzZTxQYXJ0aWFsPERhdGFiYXNlT3B0aW9ucz4+IHtcblx0aWYgKGNsaU9wdGlvbnMuZGF0YWJhc2VQcm92aWRlciAhPSBudWxsKSByZXR1cm4ge307XG5cblx0Y29uc3QgY2hvaWNlcyA9IFt7IGxhYmVsOiBcIm5vbmVcIiBhcyBjb25zdCB9LCB7IGxhYmVsOiBcInBvc3RncmVzL3R5cGVvcm1cIiBhcyBjb25zdCB9XTtcblx0Y29uc3Qgc2VsZWN0ZWQgPSBhd2FpdCBwaWNrKFwiXFxuICBEYXRhYmFzZTogXCIsIGNob2ljZXMsIChjKSA9PiBjLmxhYmVsKTtcblx0cmV0dXJuIHsgZGF0YWJhc2VQcm92aWRlcjogc2VsZWN0ZWQ/LmxhYmVsID8/IFwibm9uZVwiIH07XG59XG5cbmZ1bmN0aW9uIHNjYWZmb2xkKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsIG9wdGlvbnM6IERhdGFiYXNlT3B0aW9ucyk6IHZvaWQge1xuXHRpZiAob3B0aW9ucy5kYXRhYmFzZVByb3ZpZGVyICE9PSBcInBvc3RncmVzL3R5cGVvcm1cIikgcmV0dXJuO1xuXG5cdGNvbnN0IG5hbWUgPSB3b3Jrc3BhY2UubmFtZTtcblx0Y29uc3QgaWRlbnQgPSB0b1NxbElkZW50RnJhZ21lbnQobmFtZSk7XG5cdGNvbnN0IGFwaVByb2plY3RzID0gd29ya3NwYWNlLmdldFByb2plY3RzKCk7XG5cdGNvbnN0IGFwaU5hbWVzID0gYXBpUHJvamVjdHMubWFwKChwcm9qZWN0KSA9PiBhcGlOYW1lRnJvbVByb2plY3REaXIocHJvamVjdC5kaXIpKTtcblx0Ly8gQ29udGFpbmVyIGluaXQgc3VwZXJ1c2VyIOKAlCBuZXZlciByZXVzZWQgYXMgYW4gQVBJIHJ1bnRpbWUgcm9sZS5cblx0Y29uc3QgcG9zdGdyZXNTdXBlcnVzZXIgPSBcInBvc3RncmVzXCI7XG5cdGNvbnN0IHBvc3RncmVzUGFzc3dvcmQgPSBwYXNzd29yZE9yRXhpc3Rpbmcod29ya3NwYWNlLCBcIlBPU1RHUkVTX1BBU1NXT1JEXCIpO1xuXHRjb25zdCBib290c3RyYXBVc2VyID0gXCJkZWNvaGVyZV9ib290c3RyYXBcIjtcblx0Y29uc3QgYm9vdHN0cmFwUGFzc3dvcmQgPSBwYXNzd29yZE9yRXhpc3Rpbmcod29ya3NwYWNlLCBcIkRCX0FETUlOX1BBU1NXT1JEXCIsIFtcblx0XHRcIlBPU1RHUkVTX1BBU1NXT1JEXCIsXG5cdF0pO1xuXG5cdGNvbnN0IGRldkNvbnRhaW5lciA9IHdvcmtzcGFjZS5nZXRNb2RlbDxEZXZDb250YWluZXI+KFdFTExfS05PV05fRklMRVMuREVWQ09OVEFJTkVSX0pTT04pO1xuXHRjb25zdCBjb21wb3NlID0gd29ya3NwYWNlLmdldE1vZGVsPERvY2tlckNvbXBvc2U+KFdFTExfS05PV05fRklMRVMuRE9DS0VSX0NPTVBPU0UpO1xuXG5cdGNvbnN0IG5ldHdvcmtLZXkgPSBuYW1lO1xuXG5cdGlmIChjb21wb3NlKSB7XG5cdFx0Ly8gT25lIHNoYXJlZCBpbnN0YW5jZS4gRWFjaCBBUEkgb3ducyBhIGRhdGFiYXNlIG9uIGl0IChjcmVhdGVkIGF0IGJvb3RzdHJhcCkuXG5cdFx0Ly8gUG9pbnQgYHtQUkVGSVh9X0RCX0hPU1RgIC8gYHtQUkVGSVh9X0RCX1BPUlRgIGF0IGFub3RoZXIgc2VydmVyIHRvIHNwbGl0IGxhdGVyLlxuXHRcdC8vIEN1c3RvbSBpbWFnZTogc3luYyBib290c3RyYXAgcm9sZSBwYXNzd29yZCBvbiBldmVyeSBzdGFydCAoaW5pdGRiLmQgaXMgb25jZS1vbmx5KS5cblx0XHQvLyBEZWZhdWx0IGRhdGEgaXMgYSBiaW5kIG1vdW50IHVuZGVyIHRoZSBwcm9qZWN0IHNvIGBybSAtcmZgIHRoZSB0cmVlIHJlbW92ZXMgaXQuXG5cdFx0Y29tcG9zZVxuXHRcdFx0LmFkZEhlYWRlckNvbW1lbnQoXG5cdFx0XHRcdFwiUG9zdGdyZXMgZGF0YSBkZWZhdWx0cyB0byAuL3Bvc3RncmVzLWRhdGEgdW5kZXIgdGhpcyBmb2xkZXIgKGJpbmQgbW91bnQ7IGRpZXMgd2l0aCB0aGUgd29ya2luZyB0cmVlKS5cIixcblx0XHRcdFx0YEZvciBkYXRhIHRoYXQgb3V0bGl2ZXMgdGhlIGNoZWNrb3V0LCByZXBsYWNlIHRoZSBwb3N0Z3JlcyB2b2x1bWVzIGVudHJ5IHdpdGggYSBuYW1lZCB2b2x1bWVgLFxuXHRcdFx0XHRgZS5nLiBcIiR7bmFtZX0tcG9zdGdyZXMtZGF0YTovdmFyL2xpYi9wb3N0Z3Jlc3FsL2RhdGFcIiBhbmQgZGVjbGFyZSBpdCB1bmRlciB0b3AtbGV2ZWwgdm9sdW1lczouYCxcblx0XHRcdClcblx0XHRcdC5hZGRTZXJ2aWNlKFwicG9zdGdyZXNcIiwge1xuXHRcdFx0XHRidWlsZDogXCIuL3Bvc3RncmVzXCIsXG5cdFx0XHRcdGNvbnRhaW5lcl9uYW1lOiBgc2FtcGxlcy0ke25hbWV9LXBvc3RncmVzYCxcblx0XHRcdFx0cmVzdGFydDogXCJ1bmxlc3Mtc3RvcHBlZFwiLFxuXHRcdFx0XHRwb3J0czogW1wiMTI3LjAuMC4xOjU0MzM6NTQzMlwiXSxcblx0XHRcdFx0dm9sdW1lczogW1BPU1RHUkVTX0RBVEFfQklORF0sXG5cdFx0XHRcdG5ldHdvcmtzOiBbeyBbbmV0d29ya0tleV06IHsgYWxpYXNlczogW1wicG9zdGdyZXNcIl0gfSB9XSxcblx0XHRcdFx0aGVhbHRoY2hlY2s6IHtcblx0XHRcdFx0XHQvLyBFbnN1cmUgcm9sZS9wYXNzd29yZCBtYXRjaCAuZW52IGJlZm9yZSByZXBvcnRpbmcgaGVhbHRoeS5cblx0XHRcdFx0XHR0ZXN0OiBbXG5cdFx0XHRcdFx0XHRcIkNNRC1TSEVMTFwiLFxuXHRcdFx0XHRcdFx0YHBnX2lzcmVhZHkgLVUgJHtwb3N0Z3Jlc1N1cGVydXNlcn0gJiYgL3Vzci9sb2NhbC9iaW4vZGVjb2hlcmUtZW5zdXJlLWJvb3RzdHJhcC5zaGAsXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRpbnRlcnZhbDogXCIyc1wiLFxuXHRcdFx0XHRcdHRpbWVvdXQ6IFwiNXNcIixcblx0XHRcdFx0XHRyZXRyaWVzOiAxNSxcblx0XHRcdFx0fSxcblx0XHRcdH0pXG5cdFx0XHQuYWRkRW52RmlsZShcInBvc3RncmVzXCIsIFwiLi4vLmVudlwiKTtcblxuXHRcdHdvcmtzcGFjZS5nZXRNb2RlbDxHaXRpZ25vcmU+KFdFTExfS05PV05fRklMRVMuR0lUSUdOT1JFKT8uYWRkKFBPU1RHUkVTX0RBVEFfR0lUSUdOT1JFKTtcblxuXHRcdHdvcmtzcGFjZS5hZGRGaWxlKHtcblx0XHRcdGZpbGVzOiAoKSA9PiBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRmaWxlUGF0aDogXCIuZGV2Y29udGFpbmVyL3Bvc3RncmVzL0RvY2tlcmZpbGVcIixcblx0XHRcdFx0XHRjb250ZW50OiBQT1NUR1JFU19JTUFHRV9ET0NLRVJGSUxFLFxuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0ZmlsZVBhdGg6IFwiLmRldmNvbnRhaW5lci9wb3N0Z3Jlcy9lbnRyeXBvaW50LnNoXCIsXG5cdFx0XHRcdFx0Y29udGVudDogUE9TVEdSRVNfRU5UUllQT0lOVF9TSCxcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGZpbGVQYXRoOiBcIi5kZXZjb250YWluZXIvcG9zdGdyZXMvZW5zdXJlLWJvb3RzdHJhcC1yb2xlLnNoXCIsXG5cdFx0XHRcdFx0Y29udGVudDogUE9TVEdSRVNfRU5TVVJFX0JPT1RTVFJBUF9TSCxcblx0XHRcdFx0fSxcblx0XHRcdF0sXG5cdFx0fSk7XG5cblx0XHRjb21wb3NlLmFkZEVudkZpbGUoXCJkZXZjb250YWluZXJcIiwgXCIuLi8uZW52XCIpO1xuXHR9XG5cblx0ZGV2Q29udGFpbmVyPy5hZGRFeHRlbnNpb24oXCJtdHhyLnNxbHRvb2xzXCIsIFwibXR4ci5zcWx0b29scy1kcml2ZXItcGdcIik7XG5cdHdvcmtzcGFjZVxuXHRcdC5nZXRNb2RlbDxEb2NrZXJmaWxlTW9kZWw+KFdFTExfS05PV05fRklMRVMuRE9DS0VSRklMRSlcblx0XHQ/LmFkZExheWVyKHdpdGhQb3N0Z3Jlc3FsQ2xpZW50KCkpO1xuXG5cdGNvbnN0IHBrZyA9IHdvcmtzcGFjZVxuXHRcdC5nZXRNb2RlbDxQYWNrYWdlSnNvbj4oV0VMTF9LTk9XTl9GSUxFUy5QQUNLQUdFX0pTT04pXG5cdFx0Py5hZGREZXBlbmRlbmN5KFwiQGRlY29oZXJlL2NvZGV4XCIsIENSRUFURV9WRVJTSU9OKVxuXHRcdC5hZGREZXBlbmRlbmN5KFwidHlwZW9ybVwiLCBcIl4wLjMuMjhcIilcblx0XHQuYWRkRGVwZW5kZW5jeShcIkBkZWNvaGVyZS9jb2RleC10eXBlb3JtXCIsIENSRUFURV9WRVJTSU9OKVxuXHRcdC5hZGREZXBlbmRlbmN5KFwidHN4XCIsIFwiXjQuMjAuNVwiKVxuXHRcdC5hZGRTY3JpcHQoXCJkYjp1cFwiLCBcImRvY2tlciBjb21wb3NlIC1mIC5kZXZjb250YWluZXIvZG9ja2VyLWNvbXBvc2UueW1sIHVwIC1kIHBvc3RncmVzXCIpXG5cdFx0LmFkZFNjcmlwdChcImRiOmRvd25cIiwgXCJkb2NrZXIgY29tcG9zZSAtZiAuZGV2Y29udGFpbmVyL2RvY2tlci1jb21wb3NlLnltbCBkb3duXCIpXG5cdFx0LmFkZFNjcmlwdChcImRiOnJlc2V0XCIsIERCX1JFU0VUX1NDUklQVCk7XG5cblx0Y29uc3QgcHJpbWFyeUFwaSA9IGFwaU5hbWVzWzBdO1xuXHRpZiAocGtnICE9IG51bGwpIHtcblx0XHRmb3IgKGNvbnN0IGFwaU5hbWUgb2YgYXBpTmFtZXMpIHtcblx0XHRcdHBrZ1xuXHRcdFx0XHQuYWRkU2NyaXB0KGBkYjptaWdyYXRlOiR7YXBpTmFtZX1gLCBtaWdyYXRlUnVuU2NyaXB0KGFwaU5hbWUpKVxuXHRcdFx0XHQuYWRkU2NyaXB0KGBkYjptaWdyYXRlOmdlbmVyYXRlOiR7YXBpTmFtZX1gLCBtaWdyYXRlR2VuZXJhdGVTY3JpcHQoYXBpTmFtZSkpO1xuXHRcdH1cblx0XHQvLyBEZWZhdWx0IGFsaWFzZXMgdGFyZ2V0IHRoZSBmaXJzdCBBUEkgb2YgYSBuZXcgd29ya3NwYWNlIG9ubHkg4oCUIG5ldmVyIG92ZXJ3cml0ZSBvbiBgd2ViYXBpIGFkZGAuXG5cdFx0aWYgKCFvcHRpb25zLmFkZCAmJiBwcmltYXJ5QXBpICE9IG51bGwpIHtcblx0XHRcdHBrZ1xuXHRcdFx0XHQuYWRkU2NyaXB0KFwiZGI6bWlncmF0ZVwiLCBtaWdyYXRlUnVuU2NyaXB0KHByaW1hcnlBcGkpKVxuXHRcdFx0XHQuYWRkU2NyaXB0KFwiZGI6bWlncmF0ZTpnZW5lcmF0ZVwiLCBtaWdyYXRlR2VuZXJhdGVTY3JpcHQocHJpbWFyeUFwaSkpO1xuXHRcdH1cblx0fVxuXG5cdHdvcmtzcGFjZS5hZGRGaWxlKHtcblx0XHRmaWxlczogKCkgPT4gW1xuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCJkb2NzL2RhdGFiYXNlLm1kXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IERBVEFCQVNFX0RPQ1NfTUQsXG5cdFx0XHR9LFxuXHRcdF0sXG5cdH0pO1xuXG5cdHdyaXRlRGF0YWJhc2VDb25maWcod29ya3NwYWNlLCBhcGlOYW1lcyk7XG5cblx0Zm9yIChjb25zdCBwcm9qZWN0IG9mIGFwaVByb2plY3RzKSB7XG5cdFx0d2lyZUFwaURhdGFiYXNlKHByb2plY3QpO1xuXHR9XG5cblx0Y29uc3QgZW52ID0gd29ya3NwYWNlLmdldE1vZGVsPEVudkZpbGU+KFdFTExfS05PV05fRklMRVMuRU5WX0ZJTEUpO1xuXHRlbnZcblx0XHQ/LmFkZEVudHJ5KFwiUE9TVEdSRVNfREJcIiwgaWRlbnQpXG5cdFx0LmFkZEVudHJ5KFwiUE9TVEdSRVNfVVNFUlwiLCBwb3N0Z3Jlc1N1cGVydXNlcilcblx0XHQuYWRkRW50cnkoXCJQT1NUR1JFU19QQVNTV09SRFwiLCBwb3N0Z3Jlc1Bhc3N3b3JkKVxuXHRcdC5hZGRFbnRyeShcIkRCX0FETUlOX1VTRVJcIiwgYm9vdHN0cmFwVXNlcilcblx0XHQuYWRkRW50cnkoXCJEQl9BRE1JTl9QQVNTV09SRFwiLCBib290c3RyYXBQYXNzd29yZCk7XG5cblx0Zm9yIChjb25zdCBhcGlOYW1lIG9mIGFwaU5hbWVzKSB7XG5cdFx0d3JpdGVBcGlEYXRhYmFzZUVudih3b3Jrc3BhY2UsIGlkZW50LCBhcGlOYW1lKTtcblx0fVxufVxuXG5mdW5jdGlvbiB3cml0ZURhdGFiYXNlQ29uZmlnKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsIGFwaU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSk6IHZvaWQge1xuXHRjb25zdCBjb25maWcgPSB3b3Jrc3BhY2UuZ2V0TW9kZWw8Q29uZmlnWWFtbD4oV0VMTF9LTk9XTl9GSUxFUy5DT05GSUdfWUFNTCk7XG5cdGNvbnN0IGRldkNvbmZpZyA9IHdvcmtzcGFjZS5nZXRNb2RlbDxDb25maWdZYW1sPihXRUxMX0tOT1dOX0ZJTEVTLkNPTkZJR19ERVZfWUFNTCk7XG5cdGNvbnN0IHBlbmRpbmcgPSBhcGlOYW1lcy5maWx0ZXIoKGFwaU5hbWUpID0+ICFjb25maWc/Lmhhc0RhdGFTb3VyY2UoYXBpTmFtZSkpO1xuXHRpZiAocGVuZGluZy5sZW5ndGggPT09IDApIHJldHVybjtcblxuXHRpZiAoY29uZmlnPy5oYXNEYXRhU291cmNlcygpKSB7XG5cdFx0Zm9yIChjb25zdCBhcGlOYW1lIG9mIHBlbmRpbmcpIHtcblx0XHRcdGNvbmZpZy5hcHBlbmREYXRhU291cmNlKHJlbmRlckJhc2VEYXRhU291cmNlKGFwaU5hbWUpKTtcblx0XHRcdGRldkNvbmZpZz8uYXBwZW5kRGF0YVNvdXJjZShyZW5kZXJEZXZEYXRhU291cmNlKGFwaU5hbWUpKTtcblx0XHR9XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uZmlnPy5hZGRTZWN0aW9uKHJlbmRlckRhdGFiYXNlU2VjdGlvbihwZW5kaW5nLCByZW5kZXJCYXNlRGF0YVNvdXJjZSkpO1xuXHRkZXZDb25maWc/LmFkZFNlY3Rpb24ocmVuZGVyRGF0YWJhc2VTZWN0aW9uKHBlbmRpbmcsIHJlbmRlckRldkRhdGFTb3VyY2UpKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVBcGlEYXRhYmFzZUVudihcblx0d29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCxcblx0aWRlbnQ6IHN0cmluZyxcblx0YXBpTmFtZTogc3RyaW5nLFxuKTogdm9pZCB7XG5cdGNvbnN0IHByZWZpeCA9IGFwaUVudlByZWZpeChhcGlOYW1lKTtcblx0Y29uc3Qgc3FsQXBpID0gdG9TcWxJZGVudEZyYWdtZW50KGFwaU5hbWUpO1xuXHR3b3Jrc3BhY2Vcblx0XHQuZ2V0TW9kZWw8RW52RmlsZT4oV0VMTF9LTk9XTl9GSUxFUy5FTlZfRklMRSlcblx0XHQ/LmFkZEVudHJ5KGAke3ByZWZpeH1fREJfSE9TVGAsIFwicG9zdGdyZXNcIilcblx0XHQuYWRkRW50cnkoYCR7cHJlZml4fV9EQl9QT1JUYCwgXCI1NDMyXCIpXG5cdFx0LmFkZEVudHJ5KGAke3ByZWZpeH1fREJfTkFNRWAsIGAke2lkZW50fV8ke3NxbEFwaX1fZGV2YClcblx0XHQuYWRkRW50cnkoYCR7cHJlZml4fV9EQl9VU0VSYCwgYCR7aWRlbnR9XyR7c3FsQXBpfV9hcHBgKVxuXHRcdC5hZGRFbnRyeShgJHtwcmVmaXh9X0RCX1BBU1NXT1JEYCwgcGFzc3dvcmRPckV4aXN0aW5nKHdvcmtzcGFjZSwgYCR7cHJlZml4fV9EQl9QQVNTV09SRGApKVxuXHRcdC5hZGRFbnRyeShgJHtwcmVmaXh9X0RCX01JR1JBVEVfVVNFUmAsIGAke2lkZW50fV8ke3NxbEFwaX1fbWlncmF0ZWApXG5cdFx0LmFkZEVudHJ5KFxuXHRcdFx0YCR7cHJlZml4fV9EQl9NSUdSQVRFX1BBU1NXT1JEYCxcblx0XHRcdHBhc3N3b3JkT3JFeGlzdGluZyh3b3Jrc3BhY2UsIGAke3ByZWZpeH1fREJfTUlHUkFURV9QQVNTV09SRGApLFxuXHRcdCk7XG59XG5cbmZ1bmN0aW9uIHdpcmVBcGlEYXRhYmFzZShwcm9qZWN0OiBQcm9qZWN0U2NhZmZvbGQpOiB2b2lkIHtcblx0Y29uc3QgYXBpTmFtZSA9IGFwaU5hbWVGcm9tUHJvamVjdERpcihwcm9qZWN0LmRpcik7XG5cdHByb2plY3Rcblx0XHQuZ2V0TW9kZWw8TWFpblNvdXJjZUZpbGU+KFdFTExfS05PV05fRklMRVMuTUFJTl9UUylcblx0XHQ/LnNldERhdGFTb3VyY2VOYW1lKGFwaU5hbWUpXG5cdFx0LmFkZFNpZGVFZmZlY3RJbXBvcnQoXCJAZGVjb2hlcmUvY29kZXgtdHlwZW9ybVwiKVxuXHRcdC5hZGRFbnRpdHkoeyBjbGFzc05hbWU6IFwiU2FtcGxlRW50aXR5XCIsIGltcG9ydFBhdGg6IFwiLi9lbnRpdGllcy9zYW1wbGUuZW50aXR5LmpzXCIgfSlcblx0XHQuYWRkUmVwb3NpdG9yeSh7XG5cdFx0XHRjbGFzc05hbWU6IFwiU2FtcGxlRW50aXR5UmVwb3NpdG9yeVwiLFxuXHRcdFx0aW1wb3J0UGF0aDogXCIuL3JlcG9zaXRvcmllcy9zYW1wbGUucmVwb3NpdG9yeS5qc1wiLFxuXHRcdH0pO1xuXHRwcm9qZWN0XG5cdFx0LmdldE1vZGVsPEFwaVBhY2thZ2VKc29uPihXRUxMX0tOT1dOX0ZJTEVTLkFQSV9QQUNLQUdFX0pTT04pXG5cdFx0Py5hZGREZXBlbmRlbmN5KFwiQGRlY29oZXJlL2NvZGV4XCIsIENSRUFURV9WRVJTSU9OKVxuXHRcdC5hZGREZXBlbmRlbmN5KFwiQGRlY29oZXJlL2NvZGV4LXR5cGVvcm1cIiwgQ1JFQVRFX1ZFUlNJT04pO1xuXHRwcm9qZWN0LmFkZEZpbGUoe1xuXHRcdGZpbGVzOiAoKSA9PiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInNyYy9lbnRpdGllcy9zYW1wbGUuZW50aXR5LnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IFNBTVBMRV9FTlRJVFlfVFMsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCJzcmMvcmVwb3NpdG9yaWVzL3NhbXBsZS5yZXBvc2l0b3J5LnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IFNBTVBMRV9SRVBPU0lUT1JZX1RTLFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IFwic3JjL3R5cGVvcm0uZGF0YS1zb3VyY2UudHNcIixcblx0XHRcdFx0Y29udGVudDogcmVuZGVyVHlwZU9ybURhdGFTb3VyY2UoYXBpTmFtZSksXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCJzcmMvbWlncmF0aW9ucy8uZ2l0a2VlcFwiLFxuXHRcdFx0XHRjb250ZW50OiBcIlwiLFxuXHRcdFx0fSxcblx0XHRdLFxuXHR9KTtcbn1cblxuZXhwb3J0IGNvbnN0IERhdGFiYXNlRmVhdHVyZTogRmVhdHVyZTxEYXRhYmFzZU9wdGlvbnM+ID0geyBnZXRPcHRpb25zLCBzY2FmZm9sZCB9O1xuIl0sIm5hbWVzIjpbInJhbmRvbUJ5dGVzIiwicmVhZEZpbGVTeW5jIiwiam9pbiIsInBpY2siLCJXRUxMX0tOT1dOX0ZJTEVTIiwid2l0aFBvc3RncmVzcWxDbGllbnQiLCJDUkVBVEVfVkVSU0lPTiIsImFwaUVudlByZWZpeCIsImFwaU5hbWVGcm9tUHJvamVjdERpciIsIlBPU1RHUkVTX0RBVEFfQklORCIsIlBPU1RHUkVTX0RBVEFfR0lUSUdOT1JFIiwiREJfUkVTRVRfU0NSSVBUIiwicmVhZEV4aXN0aW5nRW52VmFsdWUiLCJ3b3Jrc3BhY2UiLCJrZXkiLCJyYXciLCJ0YXJnZXREaXIiLCJsaW5lIiwic3BsaXQiLCJmaW5kIiwibCIsInN0YXJ0c1dpdGgiLCJ2YWx1ZSIsInNsaWNlIiwibGVuZ3RoIiwidHJpbSIsInVuZGVmaW5lZCIsInJhbmRvbVBhc3N3b3JkIiwidG9TdHJpbmciLCJ0b1NxbElkZW50RnJhZ21lbnQiLCJuYW1lIiwiY2xlYW5lZCIsInJlcGxhY2UiLCJwYXNzd29yZE9yRXhpc3RpbmciLCJmYWxsYmFja0V4aXN0aW5nS2V5cyIsImV4aXN0aW5nIiwiYWx0IiwidiIsInJlbmRlckJhc2VEYXRhU291cmNlIiwiYXBpTmFtZSIsInAiLCJyZW5kZXJEZXZEYXRhU291cmNlIiwicmVuZGVyRGF0YWJhc2VTZWN0aW9uIiwiYXBpTmFtZXMiLCJpdGVtcyIsIm1hcCIsIlBPU1RHUkVTX0VOU1VSRV9CT09UU1RSQVBfU0giLCJQT1NUR1JFU19FTlRSWVBPSU5UX1NIIiwiUE9TVEdSRVNfSU1BR0VfRE9DS0VSRklMRSIsIlNBTVBMRV9FTlRJVFlfVFMiLCJTQU1QTEVfUkVQT1NJVE9SWV9UUyIsInJlbmRlclR5cGVPcm1EYXRhU291cmNlIiwiREFUQUJBU0VfRE9DU19NRCIsInR5cGVvcm1DbGkiLCJhcmdzIiwibWlncmF0ZVJ1blNjcmlwdCIsIm1pZ3JhdGVHZW5lcmF0ZVNjcmlwdCIsImdldE9wdGlvbnMiLCJfd29ya3NwYWNlIiwiY2xpT3B0aW9ucyIsImRhdGFiYXNlUHJvdmlkZXIiLCJjaG9pY2VzIiwibGFiZWwiLCJzZWxlY3RlZCIsImMiLCJzY2FmZm9sZCIsIm9wdGlvbnMiLCJpZGVudCIsImFwaVByb2plY3RzIiwiZ2V0UHJvamVjdHMiLCJwcm9qZWN0IiwiZGlyIiwicG9zdGdyZXNTdXBlcnVzZXIiLCJwb3N0Z3Jlc1Bhc3N3b3JkIiwiYm9vdHN0cmFwVXNlciIsImJvb3RzdHJhcFBhc3N3b3JkIiwiZGV2Q29udGFpbmVyIiwiZ2V0TW9kZWwiLCJERVZDT05UQUlORVJfSlNPTiIsImNvbXBvc2UiLCJET0NLRVJfQ09NUE9TRSIsIm5ldHdvcmtLZXkiLCJhZGRIZWFkZXJDb21tZW50IiwiYWRkU2VydmljZSIsImJ1aWxkIiwiY29udGFpbmVyX25hbWUiLCJyZXN0YXJ0IiwicG9ydHMiLCJ2b2x1bWVzIiwibmV0d29ya3MiLCJhbGlhc2VzIiwiaGVhbHRoY2hlY2siLCJ0ZXN0IiwiaW50ZXJ2YWwiLCJ0aW1lb3V0IiwicmV0cmllcyIsImFkZEVudkZpbGUiLCJHSVRJR05PUkUiLCJhZGQiLCJhZGRGaWxlIiwiZmlsZXMiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJhZGRFeHRlbnNpb24iLCJET0NLRVJGSUxFIiwiYWRkTGF5ZXIiLCJwa2ciLCJQQUNLQUdFX0pTT04iLCJhZGREZXBlbmRlbmN5IiwiYWRkU2NyaXB0IiwicHJpbWFyeUFwaSIsIndyaXRlRGF0YWJhc2VDb25maWciLCJ3aXJlQXBpRGF0YWJhc2UiLCJlbnYiLCJFTlZfRklMRSIsImFkZEVudHJ5Iiwid3JpdGVBcGlEYXRhYmFzZUVudiIsImNvbmZpZyIsIkNPTkZJR19ZQU1MIiwiZGV2Q29uZmlnIiwiQ09ORklHX0RFVl9ZQU1MIiwicGVuZGluZyIsImZpbHRlciIsImhhc0RhdGFTb3VyY2UiLCJoYXNEYXRhU291cmNlcyIsImFwcGVuZERhdGFTb3VyY2UiLCJhZGRTZWN0aW9uIiwicHJlZml4Iiwic3FsQXBpIiwiTUFJTl9UUyIsInNldERhdGFTb3VyY2VOYW1lIiwiYWRkU2lkZUVmZmVjdEltcG9ydCIsImFkZEVudGl0eSIsImNsYXNzTmFtZSIsImltcG9ydFBhdGgiLCJhZGRSZXBvc2l0b3J5IiwiQVBJX1BBQ0tBR0VfSlNPTiIsIkRhdGFiYXNlRmVhdHVyZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVyxRQUFRLGNBQWM7QUFDMUMsU0FBU0MsWUFBWSxRQUFRLFVBQVU7QUFDdkMsU0FBU0MsSUFBSSxRQUFRLFlBQVk7QUFDakMsU0FBU0MsSUFBSSxRQUFRLHlCQUF5QjtBQUc5QyxTQUFTQyxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFFekQsU0FFQ0Msb0JBQW9CLFFBQ2QscUNBQXFDO0FBTTVDLFNBQVNDLGNBQWMsUUFBUSxtQkFBbUI7QUFDbEQsU0FBU0MsWUFBWSxFQUFFQyxxQkFBcUIsUUFBUSxpQkFBaUI7QUFJckUsMkZBQTJGLEdBQzNGLE1BQU1DLHFCQUFxQjtBQUMzQixNQUFNQywwQkFBMEI7QUFDaEMsTUFBTUMsa0JBQ0w7QUFRRCxnRUFBZ0UsR0FDaEUsU0FBU0MscUJBQXFCQyxTQUE0QixFQUFFQyxHQUFXO0lBQ3RFLElBQUk7UUFDSCxNQUFNQyxNQUFNZCxhQUFhQyxLQUFLVyxVQUFVRyxTQUFTLEVBQUUsU0FBUztRQUM1RCxNQUFNQyxPQUFPRixJQUFJRyxLQUFLLENBQUMsTUFBTUMsSUFBSSxDQUFDLENB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
@@ -1,6 +1,6 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { detectPackageManager, promptForPackageManager } from "@decohere/devkit/interop";
3
+ import { detectPackageManager, promptForPackageManager } from "@decohere/nexus/interop";
4
4
  import { ask, closePrompt } from "../../domain/prompt.js";
5
5
  import { WELL_KNOWN_FILES } from "../../models/const.js";
6
6
  import { writeWorkspaceReadme } from "../workspace-readme.js";
@@ -67,7 +67,7 @@ async function finalize(workspace, options) {
67
67
  }
68
68
  if (options.add && apiNames[0] != null) {
69
69
  console.log(` pnpm run start:${apiNames[0]}`);
70
- console.log(` pnpm run package:${apiNames[0]} && docker build projects/${apiNames[0]}`);
70
+ console.log(` docker build -f Dockerfile.${apiNames[0]} .`);
71
71
  } else {
72
72
  console.log(" code . # open in VS Code");
73
73
  console.log(" # then: Reopen in Container (first create runs pnpm install)\n");
@@ -81,3 +81,5 @@ export const FinalizeFeature = {
81
81
  scaffold,
82
82
  finalize
83
83
  };
84
+
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvZmVhdHVyZXMvZmluYWxpemUuZmVhdHVyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tIFwibm9kZTpmc1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgUGFja2FnZU1hbmFnZXIgfSBmcm9tIFwiQGRlY29oZXJlL25leHVzL2ludGVyb3BcIjtcbmltcG9ydCB7IGRldGVjdFBhY2thZ2VNYW5hZ2VyLCBwcm9tcHRGb3JQYWNrYWdlTWFuYWdlciB9IGZyb20gXCJAZGVjb2hlcmUvbmV4dXMvaW50ZXJvcFwiO1xuaW1wb3J0IHsgYXNrLCBjbG9zZVByb21wdCB9IGZyb20gXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCI7XG5pbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBFbnZGaWxlIH0gZnJvbSBcIi4uLy4uL21vZGVscy9lbnYtZmlsZS5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VTY2FmZm9sZCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcHJvamVjdC5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjYWZmb2xkLnNlcnZpY2UuanNcIjtcbmltcG9ydCB7IHdyaXRlV29ya3NwYWNlUmVhZG1lIH0gZnJvbSBcIi4uL3dvcmtzcGFjZS1yZWFkbWUuanNcIjtcbmltcG9ydCB7IGZvcm1hdFNjYWZmb2xkZWRGaWxlcyB9IGZyb20gXCIuL2Jpb21lLWZvcm1hdC5qc1wiO1xuXG5mdW5jdGlvbiByZWFkRXhpc3RpbmdFbnZWYWx1ZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLCBrZXk6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHRyeSB7XG5cdFx0Y29uc3QgcmF3ID0gcmVhZEZpbGVTeW5jKGpvaW4od29ya3NwYWNlLnRhcmdldERpciwgXCIuZW52XCIpLCBcInV0ZjhcIik7XG5cdFx0Y29uc3QgbGluZSA9IHJhdy5zcGxpdChcIlxcblwiKS5maW5kKChsKSA9PiBsLnN0YXJ0c1dpdGgoYCR7a2V5fT1gKSk7XG5cdFx0Y29uc3QgdmFsdWUgPSBsaW5lPy5zbGljZShrZXkubGVuZ3RoICsgMSkudHJpbSgpO1xuXHRcdHJldHVybiB2YWx1ZSB8fCB1bmRlZmluZWQ7XG5cdH0gY2F0Y2gge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn1cblxuLy8gU3RhdGUgcmVzb2x2ZWQgZHVyaW5nIHNjYWZmb2xkKCksIGNvbnN1bWVkIGJ5IGZpbmFsaXplKCkuXG5sZXQgX3BtOiBQYWNrYWdlTWFuYWdlciB8IG51bGwgPSBudWxsO1xubGV0IF9zaG91bGRJbnN0YWxsID0gdHJ1ZTtcblxudHlwZSBGaW5hbGl6ZU9wdGlvbnMgPSB7XG5cdGluc3RhbGxEZXBlbmRlbmNpZXM/OiBcInllc1wiIHwgXCJub1wiO1xuXHRhZGQ/OiBib29sZWFuO1xuXHRkYXRhYmFzZVByb3ZpZGVyPzogXCJub25lXCIgfCBcInBvc3RncmVzL3R5cGVvcm1cIjtcblx0YXV0aFByb3ZpZGVyPzogXCJhdXRoMFwiIHwgXCJub25lXCI7XG5cdHBvc3RtYW5Qcm92aWRlcj86IFwiYXBpXCIgfCBcImxvY2FsXCIgfCBcIm5vbmVcIjtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE9wdGlvbnMoXG5cdF93b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRjbGlPcHRpb25zOiBQYXJ0aWFsPEZpbmFsaXplT3B0aW9ucz4sXG4pOiBQcm9taXNlPG9iamVjdD4ge1xuXHRpZiAoY2xpT3B0aW9ucy5pbnN0YWxsRGVwZW5kZW5jaWVzICE9IG51bGwpIHtcblx0XHRfc2hvdWxkSW5zdGFsbCA9IGNsaU9wdGlvbnMuaW5zdGFsbERlcGVuZGVuY2llcyA9PT0gXCJ5ZXNcIjtcblx0fVxuXHRyZXR1cm4ge307XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYWZmb2xkKFxuXHR3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRvcHRpb25zOiBGaW5hbGl6ZU9wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Ly8gTG9jYWwgc2NhZmZvbGQgZGVmYXVsdCDigJQgcHJvZHVjdGlvbiBkZXBsb3lzIG11c3Qgc2V0IE5PREVfRU5WIGV4cGxpY2l0bHkuXG5cdGNvbnN0IG5vZGVFbnYgPSByZWFkRXhpc3RpbmdFbnZWYWx1ZSh3b3Jrc3BhY2UsIFwiTk9ERV9FTlZcIikgPz8gXCJkZXZcIjtcblx0d29ya3NwYWNlLmdldE1vZGVsPEVudkZpbGU+KFdFTExfS05PV05fRklMRVMuRU5WX0ZJTEUpPy5hZGRFbnRyeShcIk5PREVfRU5WXCIsIG5vZGVFbnYpO1xuXG5cdC8vIER1cmFibGUgZGF5LTIgQ0xJIGV4YW1wbGVzIChhbHNvIHJlZnJlc2hlZCBvbiBgd2ViYXBpIGFkZGApLlxuXHR3cml0ZVdvcmtzcGFjZVJlYWRtZSh3b3Jrc3BhY2UsIG9wdGlvbnMpO1xuXG5cdGlmIChwcm9jZXNzLmVudi5ERUNPSEVSRV9CVUlMREVSID09PSBcIjFcIikge1xuXHRcdF9zaG91bGRJbnN0YWxsID0gZmFsc2U7XG5cdFx0cmV0dXJuO1xuXHR9XG5cdF9wbSA9IGRldGVjdFBhY2thZ2VNYW5hZ2VyKHdvcmtzcGFjZS50YXJnZXREaXIpID8/IChhd2FpdCBwcm9tcHRGb3JQYWNrYWdlTWFuYWdlcigpKTtcblx0aWYgKG9wdGlvbnMuaW5zdGFsbERlcGVuZGVuY2llcyAhPSBudWxsKSB7XG5cdFx0X3Nob3VsZEluc3RhbGwgPSBvcHRpb25zLmluc3RhbGxEZXBlbmRlbmNpZXMgPT09IFwieWVzXCI7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3QgYW5zd2VyID0gYXdhaXQgYXNrKFwiXFxuSW5zdGFsbCBkZXBlbmRlbmNpZXMgbm93PyBbeWVzL25vXSAoeWVzKTogXCIsIFwieWVzXCIpO1xuXHRfc2hvdWxkSW5zdGFsbCA9IGFuc3dlci50b0xvd2VyQ2FzZSgpICE9PSBcIm5vXCI7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZpbmFsaXplKFxuXHR3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkLFxuXHRvcHRpb25zOiBGaW5hbGl6ZU9wdGlvbnMsXG4pOiBQcm9taXNlPHZvaWQ+IHtcblx0Y29uc3QgZm9ybWF0UGF0aHMgPSBvcHRpb25zLmFkZFxuXHRcdD8gd29ya3NwYWNlLmdldFByb2plY3RzKCkubWFwKChwcm9qZWN0KSA9PiBwcm9qZWN0LmRpcilcblx0XHQ6IFtcIi5cIl07XG5cdGZvcm1hdFNjYWZmb2xkZWRGaWxlcyh3b3Jrc3BhY2UudGFyZ2V0RGlyLCBmb3JtYXRQYXRocy5sZW5ndGggPiAwID8gZm9ybWF0UGF0aHMgOiBbXCIuXCJdKTtcblxuXHRpZiAoX3Nob3VsZEluc3RhbGwpIHtcblx0XHRjb25zdCBwbSA9IF9wbSE7XG5cdFx0Y29uc29sZS5sb2coYFxcblNjYWZmb2xkZWQgJHt3b3Jrc3BhY2UubmFtZX0uIEluc3RhbGxpbmcgZGVwZW5kZW5jaWVzLi4uXFxuYCk7XG5cdFx0YXdhaXQgcG0uaW5zdGFsbCh7IGN3ZDogd29ya3NwYWNlLnRhcmdldERpciB9KTtcblx0fVxuXG5cdGNvbnN0IGFwaU5hbWVzID0gd29ya3NwYWNlXG5cdFx0LmdldFByb2plY3RzKClcblx0XHQubWFwKChwcm9qZWN0KSA9PiBwcm9qZWN0LmRpci5yZXBsYWNlKC9ecHJvamVjdHNcXC8vLCBcIlwiKSk7XG5cdGNvbnNvbGUubG9nKGBcXG5Eb25lISAke19zaG91bGRJbnN0YWxsID8gXCJOZXh0XCIgOiBcIlRvIGdldCBzdGFydGVkOlwifSBzdGVwczpcXG5gKTtcblx0aWYgKCFvcHRpb25zLmFkZCkge1xuXHRcdGNvbnNvbGUubG9nKGAgIGNkICR7d29ya3NwYWNlLm5hbWV9YCk7XG5cdH1cblx0aWYgKCFfc2hvdWxkSW5zdGFsbCAmJiBvcHRpb25zLmFkZCkge1xuXHRcdGNvbnN0IHBtTmFtZSA9IF9wbT8ubmFtZSA/PyBcInBucG1cIjtcblx0XHRjb25zb2xlLmxvZyhgICAke3BtTmFtZX0gaW5zdGFsbGApO1xuXHR9XG5cdGlmIChvcHRpb25zLmFkZCAmJiBhcGlOYW1lc1swXSAhPSBudWxsKSB7XG5cdFx0Y29uc29sZS5sb2coYCAgcG5wbSBydW4gc3RhcnQ6JHthcGlOYW1lc1swXX1gKTtcblx0XHRjb25zb2xlLmxvZyhgICBkb2NrZXIgYnVpbGQgLWYgRG9ja2VyZmlsZS4ke2FwaU5hbWVzWzBdfSAuYCk7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc29sZS5sb2coXCIgIGNvZGUgLiAgICAgICAgICMgb3BlbiBpbiBWUyBDb2RlXCIpO1xuXHRcdGNvbnNvbGUubG9nKFxuXHRcdFx0XCIgICAgICAgICAgICAgICAgICMgdGhlbjogUmVvcGVuIGluIENvbnRhaW5lciAoZmlyc3QgY3JlYXRlIHJ1bnMgcG5wbSBpbnN0YWxsKVxcblwiLFxuXHRcdCk7XG5cdH1cblx0Y29uc29sZS5sb2coXCIgIFNlZSBSRUFETUUubWQgZm9yIENMSSBleGFtcGxlcy5cXG5cIik7XG5cblx0Ly8gRHJvcCByZWFkbGluZSdzIHN0ZGluIGhvbGQgc28gdGhlIENMSSAvIGNvbnRhaW5lciBjYW4gZXhpdC5cblx0Y2xvc2VQcm9tcHQoKTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpbmFsaXplRmVhdHVyZTogRmVhdHVyZSA9IHsgZ2V0T3B0aW9ucywgc2NhZmZvbGQsIGZpbmFsaXplIH07XG4iXSwibmFtZXMiOlsicmVhZEZpbGVTeW5jIiwiam9pbiIsImRldGVjdFBhY2thZ2VNYW5hZ2VyIiwicHJvbXB0Rm9yUGFja2FnZU1hbmFnZXIiLCJhc2siLCJjbG9zZVByb21wdCIsIldFTExfS05PV05fRklMRVMiLCJ3cml0ZVdvcmtzcGFjZVJlYWRtZSIsImZvcm1hdFNjYWZmb2xkZWRGaWxlcyIsInJlYWRFeGlzdGluZ0VudlZhbHVlIiwid29ya3NwYWNlIiwia2V5IiwicmF3IiwidGFyZ2V0RGlyIiwibGluZSIsInNwbGl0IiwiZmluZCIsImwiLCJzdGFydHNXaXRoIiwidmFsdWUiLCJzbGljZSIsImxlbmd0aCIsInRyaW0iLCJ1bmRlZmluZWQiLCJfcG0iLCJfc2hvdWxkSW5zdGFsbCIsImdldE9wdGlvbnMiLCJfd29ya3NwYWNlIiwiY2xpT3B0aW9ucyIsImluc3RhbGxEZXBlbmRlbmNpZXMiLCJzY2FmZm9sZCIsIm9wdGlvbnMiLCJub2RlRW52IiwiZ2V0TW9kZWwiLCJFTlZfRklMRSIsImFkZEVudHJ5IiwicHJvY2VzcyIsImVudiIsIkRFQ09IRVJFX0JVSUxERVIiLCJhbnN3ZXIiLCJ0b0xvd2VyQ2FzZSIsImZpbmFsaXplIiwiZm9ybWF0UGF0aHMiLCJhZGQiLCJnZXRQcm9qZWN0cyIsIm1hcCIsInByb2plY3QiLCJkaXIiLCJwbSIsImNvbnNvbGUiLCJsb2ciLCJuYW1lIiwiaW5zdGFsbCIsImN3ZCIsImFwaU5hbWVzIiwicmVwbGFjZSIsInBtTmFtZSIsIkZpbmFsaXplRmVhdHVyZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxRQUFRLFVBQVU7QUFDdkMsU0FBU0MsSUFBSSxRQUFRLFlBQVk7QUFFakMsU0FBU0Msb0JBQW9CLEVBQUVDLHVCQUF1QixRQUFRLDBCQUEwQjtBQUN4RixTQUFTQyxHQUFHLEVBQUVDLFdBQVcsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsZ0JBQWdCLFFBQVEsd0JBQXdCO0FBSXpELFNBQVNDLG9CQUFvQixRQUFRLHlCQUF5QjtBQUM5RCxTQUFTQyxxQkFBcUIsUUFBUSxvQkFBb0I7QUFFMUQsU0FBU0MscUJBQXFCQyxTQUE0QixFQUFFQyxHQUFXO0lBQ3RFLElBQUk7UUFDSCxNQUFNQyxNQUFNWixhQUFhQyxLQUFLUyxVQUFVRyxTQUFTLEVBQUUsU0FBUztRQUM1RCxNQUFNQyxPQUFPRixJQUFJRyxLQUFLLENBQUMsTUFBTUMsSUFBSSxDQUFDLENBQUNDLElBQU1BLEVBQUVDLFVBQVUsQ0FB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
@@ -254,3 +254,5 @@ export const PostmanFeature = {
254
254
  };
255
255
  export { buildHelloOpenApiDocument } from "../postman/hello-openapi.js";
256
256
  export { POSTMAN_CALLBACKS, POSTMAN_SCOPES };
257
+
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvZmVhdHVyZXMvcG9zdG1hbi5mZWF0dXJlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcGljayB9IGZyb20gXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCI7XG5pbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3Jrc3BhY2VTY2FmZm9sZCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvcHJvamVjdC5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBGZWF0dXJlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjYWZmb2xkLnNlcnZpY2UuanNcIjtcbmltcG9ydCB0eXBlIHsgQXV0aENvbmZpZ01vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9hdXRoLWNvbmZpZy5tb2RlbC5qc1wiO1xuaW1wb3J0IHsgYnVpbGRIZWxsb09wZW5BcGlEb2N1bWVudCB9IGZyb20gXCIuLi9wb3N0bWFuL2hlbGxvLW9wZW5hcGkuanNcIjtcbmltcG9ydCB7XG5cdGJ1aWxkRW52aXJvbm1lbnRZYW1sLFxuXHRidWlsZExvY2FsVmlld0ZpbGVzRnJvbUNvbGxlY3Rpb24sXG59IGZyb20gXCIuLi9wb3N0bWFuL2xvY2FsLXZpZXcuanNcIjtcbmltcG9ydCB7XG5cdHR5cGUgQXV0aDBFbnYsXG5cdGFwcGx5UG9zdG1hbkF1dGhPdmVybGF5LFxuXHRvcGVuQXBpVG9Qb3N0bWFuQ29sbGVjdGlvbixcbn0gZnJvbSBcIi4uL3Bvc3RtYW4vb3BlbmFwaS10by1wb3N0bWFuLmpzXCI7XG5pbXBvcnQgKiBhcyBhdXRoMENsaSBmcm9tIFwiLi9hdXRoMC1jbGkuanNcIjtcblxuLyoqIFBvc3RtYW4gT0F1dGggY2FsbGJhY2sgVVJMcyAocG9wdXAgKyBcIkF1dGhvcml6ZSB1c2luZyBicm93c2VyXCIpLiAqL1xuY29uc3QgUE9TVE1BTl9DQUxMQkFDS1MgPSBbXG5cdFwiaHR0cHM6Ly9vYXV0aC5wc3Rtbi5pby92MS9jYWxsYmFja1wiLFxuXHRcImh0dHBzOi8vb2F1dGgucHN0bW4uaW8vdjEvYnJvd3Nlci1jYWxsYmFja1wiLFxuXSBhcyBjb25zdDtcblxuLyoqIFNjb3BlcyByZXF1ZXN0ZWQgZm9yIEF1dGgwIGFjY2VzcyB0b2tlbnMgKE9JREMgKyBIZWxsbyBDQVNMIHBlcm1pc3Npb25zKS4gKi9cbmNvbnN0IFBPU1RNQU5fU0NPUEVTID0gW1xuXHRcIm9wZW5pZFwiLFxuXHRcInByb2ZpbGVcIixcblx0XCJlbWFpbFwiLFxuXHRcInJlYWQ6SGVsbG9cIixcblx0XCJjcmVhdGU6SGVsbG9cIixcblx0XCJ1cGRhdGU6SGVsbG9cIixcblx0XCJkZWxldGU6SGVsbG9cIixcbl0uam9pbihcIiBcIik7XG5cbmNvbnN0IENPTExFQ1RJT05fREVTQ1JJUFRJT04gPVxuXHRcIk9wZW4gdGhlIHByb2plY3Qgcm9vdCBpbiBQb3N0bWFuIExvY2FsIFZpZXcgKG5vdCB0aGUgcG9zdG1hbi8gZm9sZGVyKS4gXCIgK1xuXHRcIlNlbGVjdCB0aGUgTG9jYWwgZW52aXJvbm1lbnQsIHRoZW4gQXV0aG9yaXphdGlvbiDihpIgR2V0IE5ldyBBY2Nlc3MgVG9rZW4gKFBLQ0UpLiBcIiArXG5cdFwiUm91dGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSBPcGVuQVBJOyBBdXRoMCBvdmVybGF5IGlzIGhhbmQtYXV0aG9yZWQuXCI7XG5cbmV4cG9ydCB0eXBlIFBvc3RtYW5PcHRpb25zID0ge1xuXHRwb3N0bWFuUHJvdmlkZXI/OiBcImFwaVwiIHwgXCJsb2NhbFwiIHwgXCJub25lXCI7XG5cdGFwaUtleT86IHN0cmluZztcblx0d29ya3NwYWNlSWQ/OiBzdHJpbmc7XG59O1xuXG5hc3luYyBmdW5jdGlvbiBnZXRPcHRpb25zKFxuXHRfd29ya3NwYWNlOiBXb3Jrc3BhY2VTY2FmZm9sZCxcblx0Y2xpT3B0aW9uczogUGFydGlhbDxQb3N0bWFuT3B0aW9ucz4sXG4pOiBQcm9taXNlPFBhcnRpYWw8UG9zdG1hbk9wdGlvbnM+PiB7XG5cdGlmIChjbGlPcHRpb25zLnBvc3RtYW5Qcm92aWRlciAhPSBudWxsKSByZXR1cm4ge307XG5cblx0Y29uc3QgY2hvaWNlcyA9IFtcblx0XHR7IGxhYmVsOiBcIm5vbmVcIiBhcyBjb25zdCwgZGVzY3JpcHRpb246IFwic2tpcFwiIH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwibG9jYWxcIiBhcyBjb25zdCxcblx0XHRcdGRlc2NyaXB0aW9uOiBcIkxvY2FsIFZpZXcgLyBOYXRpdmUgR2l0IGZpbGVzIChubyBBUEkga2V5KVwiLFxuXHRcdH0sXG5cdFx0e1xuXHRcdFx0bGFiZWw6IFwiYXBpXCIgYXMgY29uc3QsXG5cdFx0XHRkZXNjcmlwdGlvbjogXCJhbHNvIHVwbG9hZCB0byBQb3N0bWFuLmNvbSAobmVlZHMgQVBJIGtleSlcIixcblx0XHR9LFxuXHRdO1xuXHRjb25zdCBzZWxlY3RlZCA9IGF3YWl0IHBpY2soXG5cdFx0XCJcXG4gIFBvc3RtYW46IFwiLFxuXHRcdGNob2ljZXMsXG5cdFx0KGMpID0+IGAke2MubGFiZWx9IOKAlCAke2MuZGVzY3JpcHRpb259YCxcblx0KTtcblx0Y29uc3QgcHJvdmlkZXIgPSBzZWxlY3RlZD8ubGFiZWwgPz8gXCJub25lXCI7XG5cblx0aWYgKHByb3ZpZGVyID09PSBcIm5vbmVcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcIm5vbmVcIiB9O1xuXHRpZiAocHJvdmlkZXIgPT09IFwibG9jYWxcIikgcmV0dXJuIHsgcG9zdG1hblByb3ZpZGVyOiBcImxvY2FsXCIgfTtcblxuXHRjb25zdCBhcGlLZXkgPVxuXHRcdHByb2Nlc3MuZW52LlBPU1RNQU5fQVBJX0tFWSA/P1xuXHRcdChhd2FpdCBpbXBvcnQoXCIuLi8uLi9kb21haW4vcHJvbXB0LmpzXCIpLnRoZW4oKG0pID0+XG5cdFx0XHRtLmFzayhcIlxcbiAgUG9zdG1hbiBBUEkga2V5IChhcHAuZ2V0cG9zdG1hbi5jb20vc2V0dGluZ3MvbWUvYXBpLWtleXMpOiBcIiksXG5cdFx0KSk7XG5cblx0Y29uc3QgaGVhZGVycyA9IHsgXCJYLUFwaS1LZXlcIjogYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXHRjb25zdCB3c1JlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7IGhlYWRlcnMgfSk7XG5cblx0aWYgKCF3c1Jlcy5vaykge1xuXHRcdGNvbnNvbGUuZXJyb3IoXCJcXG4gIFBvc3RtYW4gQVBJIGtleSBpbnZhbGlkIOKAlCBmYWxsaW5nIGJhY2sgdG8gbG9jYWwgZmlsZXMuXCIpO1xuXHRcdHJldHVybiB7IHBvc3RtYW5Qcm92aWRlcjogXCJsb2NhbFwiIH07XG5cdH1cblxuXHRjb25zdCB7IHdvcmtzcGFjZXMgfSA9IChhd2FpdCB3c1Jlcy5qc29uKCkpIGFzIHtcblx0XHR3b3Jrc3BhY2VzOiBBcnJheTx7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nIH0+O1xuXHR9O1xuXG5cdHR5cGUgV3NDaG9pY2UgPSB7IGxhYmVsOiBzdHJpbmc7IGlkOiBzdHJpbmcgfCBudWxsIH07XG5cdGNvbnN0IHdzQ2hvaWNlczogV3NDaG9pY2VbXSA9IFtcblx0XHR7IGxhYmVsOiBcIjxuZXcgd29ya3NwYWNlPlwiLCBpZDogbnVsbCB9LFxuXHRcdC4uLndvcmtzcGFjZXMubWFwKCh3KSA9PiAoeyBsYWJlbDogYCR7dy5uYW1lfSAoJHt3LnR5cGV9KWAsIGlkOiB3LmlkIH0pKSxcblx0XTtcblxuXHRjb25zdCB3c1BpY2tlZCA9IGF3YWl0IHBpY2soXCJcXG4gIFBvc3RtYW4gd29ya3NwYWNlOiBcIiwgd3NDaG9pY2VzLCAoYykgPT4gYy5sYWJlbCk7XG5cblx0bGV0IHdvcmtzcGFjZUlkOiBzdHJpbmc7XG5cdGlmICghd3NQaWNrZWQgfHwgd3NQaWNrZWQuaWQgPT09IG51bGwpIHtcblx0XHRjb25zdCB7IGFzayB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vLi4vZG9tYWluL3Byb21wdC5qc1wiKTtcblx0XHRjb25zdCB3c05hbWUgPSBhd2FpdCBhc2soYCAgV29ya3NwYWNlIG5hbWU6IGApO1xuXHRcdGNvbnN0IGNyZWF0ZVJlcyA9IGF3YWl0IGZldGNoKFwiaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vd29ya3NwYWNlc1wiLCB7XG5cdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0aGVhZGVycyxcblx0XHRcdGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgd29ya3NwYWNlOiB7IG5hbWU6IHdzTmFtZSwgdHlwZTogXCJwZXJzb25hbFwiIH0gfSksXG5cdFx0fSk7XG5cdFx0Y29uc3QgeyB3b3Jrc3BhY2U6IHdzIH0gPSAoYXdhaXQgY3JlYXRlUmVzLmpzb24oKSkgYXMgeyB3b3Jrc3BhY2U6IHsgaWQ6IHN0cmluZyB9IH07XG5cdFx0d29ya3NwYWNlSWQgPSB3cy5pZDtcblx0XHRjb25zb2xlLmxvZyhgICDinJMgV29ya3NwYWNlIGNyZWF0ZWQ6ICR7d3NOYW1lfWApO1xuXHR9IGVsc2Uge1xuXHRcdHdvcmtzcGFjZUlkID0gd3NQaWNrZWQuaWQ7XG5cdH1cblxuXHRyZXR1cm4geyBwb3N0bWFuUHJvdmlkZXI6IFwiYXBpXCIsIGFwaUtleSwgd29ya3NwYWNlSWQgfTtcbn1cblxuLyoqIEJ1aWxkIFBvc3RtYW4gY29sbGVjdGlvbjogT3BlbkFQSSByb3V0ZXMgKyBBdXRoMCBhdXRoIG92ZXJsYXkuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYnVpbGRIeWJyaWRQb3N0bWFuQ29sbGVjdGlvbihwcm9qZWN0TmFtZTogc3RyaW5nLCBhdXRoPzogQXV0aDBFbnYpIHtcblx0Y29uc3Qgb3BlbmFwaSA9IGJ1aWxkSGVsbG9PcGVuQXBpRG9jdW1lbnQocHJvamVjdE5hbWUpO1xuXHRjb25zdCBiYXNlID0gYXdhaXQgb3BlbkFwaVRvUG9zdG1hbkNvbGxlY3Rpb24ob3BlbmFwaSk7XG5cdGlmIChiYXNlLmluZm8uX3Bvc3RtYW5faWQgPT0gbnVsbCkge1xuXHRcdGJhc2UuaW5mby5fcG9zdG1hbl9pZCA9IHJhbmRvbVVVSUQoKTtcblx0fVxuXHRyZXR1cm4gYXBwbHlQb3N0bWFuQXV0aE92ZXJsYXkoYmFzZSwgcHJvamVjdE5hbWUsIGF1dGgsIHtcblx0XHRjYWxsYmFja3M6IFBPU1RNQU5fQ0FMTEJBQ0tTLFxuXHRcdHNjb3BlczogUE9TVE1BTl9TQ09QRVMsXG5cdFx0ZGVzY3JpcHRpb246IENPTExFQ1RJT05fREVTQ1JJUFRJT04sXG5cdH0pO1xufVxuXG4vKiogUmVhZCBhIHByZXZpb3VzbHkgc2NhZmZvbGRlZCBhdXRoMENsaWVudElkIHNvIHJlLXNjYWZmb2xkIG5ldmVyIGJsYW5rcyBpdC4gKi9cbmZ1bmN0aW9uIHJlYWRFeGlzdGluZ1NwYUNsaWVudElkKHRhcmdldERpcjogc3RyaW5nLCBwcm9qZWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgZW52UGF0aCA9IGpvaW4oXG5cdFx0dGFyZ2V0RGlyLFxuXHRcdFwicG9zdG1hbi9lbnZpcm9ubWVudHNcIixcblx0XHRgJHtwcm9qZWN0TmFtZX0tTG9jYWwuZW52aXJvbm1lbnQueWFtbGAsXG5cdCk7XG5cdGlmICghZXhpc3RzU3luYyhlbnZQYXRoKSkgcmV0dXJuIHVuZGVmaW5lZDtcblx0Y29uc3QgdGV4dCA9IHJlYWRGaWxlU3luYyhlbnZQYXRoLCBcInV0ZjhcIik7XG5cdGNvbnN0IG1hdGNoID0gdGV4dC5tYXRjaCgva2V5OlxccyphdXRoMENsaWVudElkXFxzKlxcblxccyp2YWx1ZTpcXHMqW1wiJ10/KFteXCInXFxuXSspLyk7XG5cdGNvbnN0IHZhbHVlID0gbWF0Y2g/LlsxXT8udHJpbSgpO1xuXHRyZXR1cm4gdmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFJlc29sdmUgdGhlIFBvc3RtYW4gU1BBIGNsaWVudCBpZC4gTmV2ZXIgcmV0dXJucyBlbXB0eSDigJQgcHJlc2VydmVzIGFuIGV4aXN0aW5nXG4gKiBlbnYgdmFsdWUgb24gQXV0aDAgZmFpbHVyZSwgb3RoZXJ3aXNlIHRocm93cyBzbyB3ZSBkbyBub3Qgd3JpdGUgYSBibGFuayBlbnYuXG4gKi9cbmZ1bmN0aW9uIHJlc29sdmVTcGFDbGllbnRJZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZVNjYWZmb2xkKTogc3RyaW5nIHtcblx0Y29uc3QgYXBwTmFtZSA9IGAke3dvcmtzcGFjZS5uYW1lfSBQb3N0bWFuYDtcblx0dHJ5IHtcblx0XHRjb25zdCBhcHAgPSBhdXRoMENsaS5lbnN1cmVTcGFBcHAoYXBwTmFtZSwgWy4uLlBPU1RNQU5fQ0FMTEJBQ0tTXSk7XG5cdFx0Y29uc29sZS5sb2coXG5cdFx0XHRhcHAucmV1c2VkXG5cdFx0XHRcdD8gYCAg4pyTIFJldXNpbmcgQXV0aDAgU1BBIGFwcCBmb3IgUG9zdG1hbiBQS0NFICgke2FwcC5jbGllbnRfaWR9KWBcblx0XHRcdFx0OiBgICDinJMgQXV0aDAgU1BBIGFwcCBjcmVhdGVkIGZvciBQb3N0bWFuIFBLQ0UgKCR7YXBwLmNsaWVudF9pZH0pYCxcblx0XHQpO1xuXHRcdHRyeSB7XG5cdFx0XHRhdXRoMENsaS5lbmFibGVDb25uZWN0aW9uRm9yQ2xpZW50KGF1dGgwQ2xpLkRCX0NPTk5FQ1RJT05fTkFNRSwgYXBwLmNsaWVudF9pZCk7XG5cdFx0XHRjb25zb2xlLmxvZyhgICDinJMgRW5hYmxlZCAke2F1dGgwQ2xpLkRCX0NPTk5FQ1RJT05fTkFNRX0gb24gUG9zdG1hbiBTUEFgKTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdGAgIOKclyBGYWlsZWQgdG8gZW5hYmxlIERCIGNvbm5lY3Rpb24gb24gU1BBOiAke2VyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBlcnJ9YCxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiBhcHAuY2xpZW50X2lkO1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRjb25zdCBleGlzdGluZyA9IHJlYWRFeGlzdGluZ1NwYUNsaWVudElkKHdvcmtzcGFjZS50YXJnZXREaXIsIHdvcmtzcGFjZS5uYW1lKTtcblx0XHRpZiAoZXhpc3RpbmcpIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXG5cdFx0XHRcdGAgIOKclyBGYWlsZWQgdG8gZW5zdXJlIEF1dGgwIFNQQSBhcHAgKCR7ZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IGVycn0pYCxcblx0XHRcdCk7XG5cdFx0XHRjb25zb2xlLmxvZyhgICDinJMgS2VlcGluZyBleGlzdGluZyBhdXRoMENsaWVudElkIGZyb20gUG9zdG1hbiBlbnZpcm9ubWVudCAoJHtleGlzdGluZ30pYCk7XG5cdFx0XHRyZXR1cm4gZXhpc3Rpbmc7XG5cdFx0fVxuXHRcdGNvbnN0IGRldGFpbCA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKTtcblx0XHQvLyBFbnRpdHktbGltaXQgbWVzc2FnZXMgYXJlIGFscmVhZHkgYWN0aW9uYWJsZTsgYXZvaWQgYnVyeWluZyB0aGVtLlxuXHRcdGlmIChhdXRoMENsaS5pc0F1dGgwRW50aXR5TGltaXRFcnJvcihlcnIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoZGV0YWlsKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0YEZhaWxlZCB0byBlbnN1cmUgQXV0aDAgU1BBIGFwcCBmb3IgUG9zdG1hbiDigJQgYXV0aDBDbGllbnRJZCB3b3VsZCBiZSBlbXB0eTogJHtkZXRhaWx9YCxcblx0XHQpO1xuXHR9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjYWZmb2xkKHdvcmtzcGFjZTogV29ya3NwYWNlU2NhZmZvbGQsIG9wdGlvbnM6IFBvc3RtYW5PcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG5cdGlmIChvcHRpb25zLnBvc3RtYW5Qcm92aWRlciA9PT0gXCJub25lXCIgfHwgb3B0aW9ucy5wb3N0bWFuUHJvdmlkZXIgPT0gbnVsbCkgcmV0dXJuO1xuXG5cdGNvbnN0IGF1dGhDb25maWdNb2RlbCA9IHdvcmtzcGFjZS5nZXRNb2RlbDxBdXRoQ29uZmlnTW9kZWw+KFdFTExfS05PV05fRklMRVMuQVVUSF9DT05GSUcpO1xuXHRjb25zdCBhdXRoQ2ZnID0gYXV0aENvbmZpZ01vZGVsPy5jb25maWc7XG5cblx0Y29uc3Qgc3BhQ2xpZW50SWQgPSBhdXRoQ2ZnPy5pc3N1ZXJCYXNlVXJsID8gcmVzb2x2ZVNwYUNsaWVudElkKHdvcmtzcGFjZSkgOiB1bmRlZmluZWQ7XG5cblx0Y29uc3QgYXV0aDBFbnY6IEF1dGgwRW52IHwgdW5kZWZpbmVkID0gYXV0aENmZz8uaXNzdWVyQmFzZVVybFxuXHRcdD8ge1xuXHRcdFx0XHRhdXRoMERvbWFpbjogYXV0aENmZy5pc3N1ZXJCYXNlVXJsLnJlcGxhY2UoL15odHRwcz86XFwvXFwvLywgXCJcIiksXG5cdFx0XHRcdGF1dGgwQXVkaWVuY2U6IGF1dGhDZmcuYXVkaWVuY2UsXG5cdFx0XHRcdGF1dGgwQ2xpZW50SWQ6IHNwYUNsaWVudElkLFxuXHRcdFx0fVxuXHRcdDogdW5kZWZpbmVkO1xuXG5cdGNvbnN0IHByb2plY3ROYW1lID0gd29ya3NwYWNlLm5hbWU7XG5cdGNvbnN0IGVudk5hbWUgPSBgJHtwcm9qZWN0TmFtZX0gTG9jYWxgO1xuXHRjb25zdCBjb2xsZWN0aW9uID0gYXdhaXQgYnVpbGRIeWJyaWRQb3N0bWFuQ29sbGVjdGlvbihwcm9qZWN0TmFtZSwgYXV0aDBFbnYpO1xuXHRjb25zdCBsb2NhbEZpbGVzID0gYnVpbGRMb2NhbFZpZXdGaWxlc0Zyb21Db2xsZWN0aW9uKGNvbGxlY3Rpb24sIHByb2plY3ROYW1lLCBhdXRoMEVudiwge1xuXHRcdGNhbGxiYWNrczogUE9TVE1BTl9DQUxMQkFDS1MsXG5cdFx0c2NvcGVzOiBQT1NUTUFOX1NDT1BFUyxcblx0fSk7XG5cdGNvbnN0IGVudllhbWwgPSBidWlsZEVudmlyb25tZW50WWFtbChlbnZOYW1lLCBhdXRoMEVudiwge1xuXHRcdGNhbGxiYWNrczogUE9TVE1BTl9DQUxMQkFDS1MsXG5cdFx0c2NvcGVzOiBQT1NUTUFOX1NDT1BFUyxcblx0fSk7XG5cblx0d29ya3NwYWNlLmFkZEZpbGUoe1xuXHRcdGZpbGVzOiAoKSA9PiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5wb3N0bWFuL3Jlc291cmNlcy55YW1sXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IFtcblx0XHRcdFx0XHRcIiMgT3BlbiB0aGlzIHByb2plY3Qgcm9vdCBpbiBQb3N0bWFuIChGaWxlcyDihpIgT3BlbiBmb2xkZXIpLCBub3QgdGhlIHBvc3RtYW4vIHN1YmZvbGRlci5cIixcblx0XHRcdFx0XHRcIiMgUG9zdG1hbiBmaWxscyB3b3Jrc3BhY2UuaWQgd2hlbiB5b3UgY29ubmVjdCBMb2NhbCBWaWV3LlwiLFxuXHRcdFx0XHRcdFwiI1wiLFxuXHRcdFx0XHRcdFwiIyBBbGwgcmVzb3VyY2VzIHVuZGVyIHBvc3RtYW4vIGFyZSByZWdpc3RlcmVkIGF1dG9tYXRpY2FsbHkuXCIsXG5cdFx0XHRcdFx0XCIjIFJvdXRlIHJlcXVlc3RzIGFyZSBnZW5lcmF0ZWQgZnJvbSBPcGVuQVBJOyBBdXRoMCBvdmVybGF5IGlzIGhhbmQtYXV0aG9yZWQuXCIsXG5cdFx0XHRcdFx0XCJcIixcblx0XHRcdFx0XS5qb2luKFwiXFxuXCIpLFxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZmlsZVBhdGg6IGBwb3N0bWFuL2Vudmlyb25tZW50cy8ke3Byb2plY3ROYW1lfS1Mb2NhbC5lbnZpcm9ubWVudC55YW1sYCxcblx0XHRcdFx0Y29udGVudDogZW52WWFtbCxcblx0XHRcdH0sXG5cdFx0XHQuLi5sb2NhbEZpbGVzLFxuXHRcdF0sXG5cdH0pO1xuXG5cdGlmIChvcHRpb25zLnBvc3RtYW5Qcm92aWRlciA9PT0gXCJhcGlcIiAmJiBvcHRpb25zLmFwaUtleSkge1xuXHRcdGNvbnN0IGhlYWRlcnMgPSB7IFwiWC1BcGktS2V5XCI6IG9wdGlvbnMuYXBpS2V5LCBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9O1xuXG5cdFx0Y29uc3QgY29sUmVzID0gYXdhaXQgZmV0Y2goXG5cdFx0XHRgaHR0cHM6Ly9hcGkuZ2V0cG9zdG1hbi5jb20vY29sbGVjdGlvbnM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7IGNvbGxlY3Rpb24gfSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGNvbFJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGNvbGxlY3Rpb24gdXBsb2FkZWRcIik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoXCIgIOKclyBGYWlsZWQgdG8gdXBsb2FkIFBvc3RtYW4gY29sbGVjdGlvblwiKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbnZWYWx1ZXMgPSBbXG5cdFx0XHR7IGtleTogXCJiYXNlVXJsXCIsIHZhbHVlOiBcImh0dHA6Ly9sb2NhbGhvc3Q6MzAwMFwiLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHQuLi4oYXV0aDBFbnY/LmF1dGgwRG9tYWluXG5cdFx0XHRcdD8gW1xuXHRcdFx0XHRcdFx0eyBrZXk6IFwiYXV0aDBEb21haW5cIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwRG9tYWluLCBlbmFibGVkOiB0cnVlIH0sXG5cdFx0XHRcdFx0XHR7IGtleTogXCJhdXRoMEF1ZGllbmNlXCIsIHZhbHVlOiBhdXRoMEVudi5hdXRoMEF1ZGllbmNlID8/IFwiXCIsIGVuYWJsZWQ6IHRydWUgfSxcblx0XHRcdFx0XHRcdHsga2V5OiBcImF1dGgwQ2xpZW50SWRcIiwgdmFsdWU6IGF1dGgwRW52LmF1dGgwQ2xpZW50SWQgPz8gXCJcIiwgZW5hYmxlZDogdHJ1ZSB9LFxuXHRcdFx0XHRcdF1cblx0XHRcdFx0OiBbXSksXG5cdFx0XTtcblx0XHRjb25zdCBlbnZSZXMgPSBhd2FpdCBmZXRjaChcblx0XHRcdGBodHRwczovL2FwaS5nZXRwb3N0bWFuLmNvbS9lbnZpcm9ubWVudHM/d29ya3NwYWNlPSR7b3B0aW9ucy53b3Jrc3BhY2VJZH1gLFxuXHRcdFx0e1xuXHRcdFx0XHRtZXRob2Q6IFwiUE9TVFwiLFxuXHRcdFx0XHRoZWFkZXJzLFxuXHRcdFx0XHRib2R5OiBKU09OLnN0cmluZ2lmeSh7XG5cdFx0XHRcdFx0ZW52aXJvbm1lbnQ6IHsgbmFtZTogZW52TmFtZSwgdmFsdWVzOiBlbnZWYWx1ZXMgfSxcblx0XHRcdFx0fSksXG5cdFx0XHR9LFxuXHRcdCk7XG5cdFx0aWYgKGVudlJlcy5vaykge1xuXHRcdFx0Y29uc29sZS5sb2coXCIgIOKckyBQb3N0bWFuIGVudmlyb25tZW50IHVwbG9hZGVkXCIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiICDinJcgRmFpbGVkIHRvIHVwbG9hZCBQb3N0bWFuIGVudmlyb25tZW50XCIpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgY29uc3QgUG9zdG1hbkZlYXR1cmU6IEZlYXR1cmU8UG9zdG1hbk9wdGlvbnM+ID0geyBnZXRPcHRpb25zLCBzY2FmZm9sZCB9O1xuZXhwb3J0IHsgYnVpbGRIZWxsb09wZW5BcGlEb2N1bWVudCB9IGZyb20gXCIuLi9wb3N0bWFuL2hlbGxvLW9wZW5hcGkuanNcIjtcbmV4cG9ydCB7IFBPU1RNQU5fQ0FMTEJBQ0tTLCBQT1NUTUFOX1NDT1BFUyB9O1xuIl0sIm5hbWVzIjpbInJhbmRvbVVVSUQiLCJleGlzdHNTeW5jIiwicmVhZEZpbGVTeW5jIiwiam9pbiIsInBpY2siLCJXRUxMX0tOT1dOX0ZJTEVTIiwiYnVpbGRIZWxsb09wZW5BcGlEb2N1bWVudCIsImJ1aWxkRW52aXJvbm1lbnRZYW1sIiwiYnVpbGRMb2NhbFZpZXdGaWxlc0Zyb21Db2xsZWN0aW9uIiwiYXBwbHlQb3N0bWFuQXV0aE92ZXJsYXkiLCJvcGVuQXBpVG9Qb3N0bWFuQ29sbGVjdGlvbiIsImF1dGgwQ2xpIiwiUE9TVE1BTl9DQUxMQkFDS1MiLCJQT1NUTUFOX1NDT1BFUyIsIkNPTExFQ1RJT05fREVTQ1JJUFRJT04iLCJnZXRPcHRpb25zIiwiX3dvcmtzcGFjZSIsImNsaU9wdGlvbnMiLCJwb3N0bWFuUHJvdmlkZXIiLCJjaG9pY2VzIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsInNlbGVjdGVkIiwiYyIsInByb3ZpZGVyIiwiYXBpS2V5IiwicHJvY2VzcyIsImVudiIsIlBPU1RNQU5fQVBJX0tFWSIsInRoZW4iLCJtIiwiYXNrIiwiaGVhZGVycyIsIndzUmVzIiwiZmV0Y2giLCJvayIsImNvbnNvbGUiLCJlcnJvciIsIndvcmtzcGFjZXMiLCJqc29uIiwid3NDaG9pY2VzIiwiaWQiLCJtYXAiLCJ3IiwibmFtZSIsInR5cGUiLCJ3c1BpY2tlZCIsIndvcmtzcGFjZUlkIiwid3NOYW1lIiwiY3JlYXRlUmVzIiwibWV0aG9kIiwiYm9keSIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3b3Jrc3BhY2UiLCJ3cyIsImxvZyIsImJ1aWxkSHlicmlkUG9zdG1hbkNvbGxlY3Rpb24iLCJwcm9qZWN0TmFtZSIsImF1dGgiLCJvcGVuYXBpIiwiYmFzZSIsImluZm8iLCJfcG9zdG1hbl9pZCIsImNhbGxiYWNrcyIsInNjb3BlcyIsInJlYWRFeGlzdGluZ1NwYUNsaWVudElkIiwidGFyZ2V0RGlyIiwiZW52UGF0aCIsInVuZGVmaW5lZCIsInRleHQiLCJtYXRjaCIsInZhbHVlIiwidHJpbSIsImxlbmd0aCIsInJlc29sdmVTcGFDbGllbnRJZCIsImFwcE5hbWUiLCJhcHAiLCJlbnN1cmVTcGFBcHAiLCJyZXVzZWQiLCJjbGllbnRfaWQiLCJlbmFibGVDb25uZWN0aW9uRm9yQ2xpZW50IiwiREJfQ09OTkVDVElPTl9OQU1FIiwiZXJyIiwiRXJyb3IiLCJtZXNzYWdlIiwiZXhpc3RpbmciLCJkZXRhaWwiLCJTdHJpbmciLCJpc0F1dGgwRW50aXR5TGltaXRFcnJvciIsInNjYWZmb2xkIiwib3B0aW9ucyIsImF1dGhDb25maWdNb2RlbCIsImdldE1vZGVsIiwiQVVUSF9DT05GSUciLCJhdXRoQ2ZnIiwiY29uZmlnIiwic3BhQ2xpZW50SWQiLCJpc3N1ZXJCYXNlVXJsIiwiYXV0aDBFbnYiLCJhdXRoMERvbWFpbiIsInJlcGxhY2UiLCJhdXRoMEF1ZGllbmNlIiwiYXVkaWVuY2UiLCJhdXRoMENsaWVudElkIiwiZW52TmFtZSIsImNvbGxlY3Rpb24iLCJsb2NhbEZpbGVzIiwiZW52WWFtbCIsImFkZEZpbGUiLCJmaWxlcyIsImZpbGVQYXRoIiwiY29udGVudCIsImNvbFJlcyIsImVudlZhbHVlcyIsImtleSIsImVuYWJsZWQiLCJlbnZSZXMiLCJlbnZpcm9ubWVudCIsInZhbHVlcyIsIlBvc3RtYW5GZWF0dXJlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFVLFFBQVEsY0FBYztBQUN6QyxTQUFTQyxVQUFVLEVBQUVDLFlBQVksUUFBUSxVQUFVO0FBQ25ELFNBQVNDLElBQUksUUFBUSxZQUFZO0FBQ2pDLFNBQVNDLElBQUksUUFBUSx5QkFBeUI7QUFDOUMsU0FBU0MsZ0JBQWdCLFFBQVEsd0JBQXdCO0FBSXpELFNBQVNDLHlCQUF5QixRQUFRLDhCQUE4QjtBQUN4RSxTQUNDQyxvQkFBb0IsRUFDcEJDLGlDQUFpQyxRQUMzQiwyQkFBMkI7QUFDbEMsU0FFQ0MsdUJBQXVCLEVBQ3ZCQywwQkFBMEIsUUFDcEIsbUNBQW1DO0FBQzFDLFlBQVlDLGNBQWMsaUJBQWlCO0FBRTNDLHFFQUFxRSxHQUNyRSxNQUFNQyxvQkFBb0I7SUFDekI7SUFDQTtDQUNBO0FBRUQsOEVBQThFLEdBQzlFLE1BQU1DLGlC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
@@ -4,7 +4,7 @@ import { CREATE_VERSION } from "../../version.js";
4
4
  /**
5
5
  * Builder for `projects/<api>/package.json`.
6
6
  *
7
- * Starts with the core `@decohere/http` + `@decohere/crucible` deps. Features can call
7
+ * Starts with the core cortex + crucible deps. Features can call
8
8
  * `addDependency` / `addDevDependency` to extend.
9
9
  */ export class ApiPackageJson {
10
10
  workspaceName;
@@ -16,7 +16,7 @@ import { CREATE_VERSION } from "../../version.js";
16
16
  this.workspaceName = workspaceName;
17
17
  this.apiName = apiName;
18
18
  this._dependencies = {
19
- "@decohere/http": CREATE_VERSION,
19
+ "@decohere/cortex": CREATE_VERSION,
20
20
  "@decohere/crucible": CREATE_VERSION
21
21
  };
22
22
  }
@@ -51,3 +51,5 @@ import { CREATE_VERSION } from "../../version.js";
51
51
  ];
52
52
  }
53
53
  }
54
+
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvbW9kZWxzL2FwaS1wYWNrYWdlLWpzb24ubW9kZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB7IHNvcnRTdHJpbmdNYXAgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3BhY2thZ2UtanNvbi5tb2RlbC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXllZE1vZGVsLCBTb3VyY2VGaWxlIH0gZnJvbSBcIi4uLy4uL21vZGVscy9zb3VyY2UtZmlsZS5qc1wiO1xuaW1wb3J0IHsgQ1JFQVRFX1ZFUlNJT04gfSBmcm9tIFwiLi4vLi4vdmVyc2lvbi5qc1wiO1xuXG4vKipcbiAqIEJ1aWxkZXIgZm9yIGBwcm9qZWN0cy88YXBpPi9wYWNrYWdlLmpzb25gLlxuICpcbiAqIFN0YXJ0cyB3aXRoIHRoZSBjb3JlIGNvcnRleCArIGNydWNpYmxlIGRlcHMuIEZlYXR1cmVzIGNhbiBjYWxsXG4gKiBgYWRkRGVwZW5kZW5jeWAgLyBgYWRkRGV2RGVwZW5kZW5jeWAgdG8gZXh0ZW5kLlxuICovXG5leHBvcnQgY2xhc3MgQXBpUGFja2FnZUpzb24gaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuQVBJX1BBQ0tBR0VfSlNPTjtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9kZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cdHByaXZhdGUgcmVhZG9ubHkgX2RldkRlcGVuZGVuY2llczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG5cdHB1YmxpYyBjb25zdHJ1Y3Rvcihcblx0XHRwcml2YXRlIHJlYWRvbmx5IHdvcmtzcGFjZU5hbWU6IHN0cmluZyxcblx0XHRwcml2YXRlIHJlYWRvbmx5IGFwaU5hbWUgPSBcImFwaVwiLFxuXHQpIHtcblx0XHR0aGlzLl9kZXBlbmRlbmNpZXMgPSB7XG5cdFx0XHRcIkBkZWNvaGVyZS9jb3J0ZXhcIjogQ1JFQVRFX1ZFUlNJT04sXG5cdFx0XHRcIkBkZWNvaGVyZS9jcnVjaWJsZVwiOiBDUkVBVEVfVkVSU0lPTixcblx0XHR9O1xuXHR9XG5cblx0cHVibGljIGFkZERlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9kZXBlbmRlbmNpZXNbbmFtZV0gPSB2ZXJzaW9uO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGFkZERldkRlcGVuZGVuY3kobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcpOiB0aGlzIHtcblx0XHR0aGlzLl9kZXZEZXBlbmRlbmNpZXNbbmFtZV0gPSB2ZXJzaW9uO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIGZpbGVzKCk6IFNvdXJjZUZpbGVbXSB7XG5cdFx0Y29uc3QgcGtnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcblx0XHRcdG5hbWU6IGBAJHt0aGlzLndvcmtzcGFjZU5hbWV9LyR7dGhpcy5hcGlOYW1lfWAsXG5cdFx0XHR2ZXJzaW9uOiBcIjAuMC4xXCIsXG5cdFx0XHRwcml2YXRlOiB0cnVlLFxuXHRcdFx0dHlwZTogXCJtb2R1bGVcIixcblx0XHRcdG1haW46IFwic3JjL21haW4udHNcIixcblx0XHRcdHNjcmlwdHM6IHtcblx0XHRcdFx0bGludDogXCJiaW9tZSBjaGVjayAtLXdyaXRlIC5cIixcblx0XHRcdH0sXG5cdFx0XHRkZXBlbmRlbmNpZXM6IHNvcnRTdHJpbmdNYXAodGhpcy5fZGVwZW5kZW5jaWVzKSxcblx0XHR9O1xuXHRcdGlmIChPYmplY3Qua2V5cyh0aGlzLl9kZXZEZXBlbmRlbmNpZXMpLmxlbmd0aCA+IDApIHtcblx0XHRcdHBrZy5kZXZEZXBlbmRlbmNpZXMgPSBzb3J0U3RyaW5nTWFwKHRoaXMuX2RldkRlcGVuZGVuY2llcyk7XG5cdFx0fVxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInBhY2thZ2UuanNvblwiLFxuXHRcdFx0XHRjb250ZW50OiBKU09OLnN0cmluZ2lmeShwa2csIG51bGwsIDIpLFxuXHRcdFx0fSxcblx0XHRdO1xuXHR9XG59XG4iXSwibmFtZXMiOlsiV0VMTF9LTk9XTl9GSUxFUyIsInNvcnRTdHJpbmdNYXAiLCJDUkVBVEVfVkVSU0lPTiIsIkFwaVBhY2thZ2VKc29uIiwia2V5IiwiQVBJX1BBQ0tBR0VfSlNPTiIsIl9kZXBlbmRlbmNpZXMiLCJfZGV2RGVwZW5kZW5jaWVzIiwid29ya3NwYWNlTmFtZSIsImFwaU5hbWUiLCJhZGREZXBlbmRlbmN5IiwibmFtZSIsInZlcnNpb24iLCJhZGREZXZEZXBlbmRlbmN5IiwiZmlsZXMiLCJwa2ciLCJwcml2YXRlIiwidHlwZSIsIm1haW4iLCJzY3JpcHRzIiwibGludCIsImRlcGVuZGVuY2llcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJkZXZEZXBlbmRlbmNpZXMiLCJmaWxlUGF0aCIsImNvbnRlbnQiLCJKU09OIiwic3RyaW5naWZ5Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFDekQsU0FBU0MsYUFBYSxRQUFRLHFDQUFxQztBQUVuRSxTQUFTQyxjQUFjLFFBQVEsbUJBQW1CO0FBRWxEOzs7OztDQUtDLEdBQ0QsT0FBTyxNQUFNQzs7O0lBQ0lDLE1BQU1KLGlCQUFpQkssZ0JBQWdCLENBQUM7SUFFdkNDLGNBQXNDO0lBQ3RDQyxtQkFBMkMsQ0FBQyxFQUFFO0lBRS9ELFlBQ0MsQUFBaUJDLGFBQXFCLEVBQ3RDLEFBQWlCQyxVQUFVLEtBQUssQ0FDL0I7YUFGZ0JELGdCQUFBQTthQUNBQyxVQUFBQTtRQUVqQixJQUFJLENBQUNILGFBQWEsR0FBRztZQUNwQixvQkFBb0JKO1lBQ3BCLHNCQUFzQkE7UUFDdkI7SUFDRDtJQUVPUSxjQUFjQyxJQUFZLEVBQUVDLE9BQWUsRUFBUTtRQUN6RCxJQUFJLENBQUNOLGFBQWEsQ0FBQ0ssS0FBSyxHQUFHQztRQUMzQixPQUFPLElBQUk7SUFDWjtJQUVPQyxpQkFBaUJGLElBQVksRUFBRUMsT0FBZSxFQUFRO1FBQzVELElBQUksQ0FBQ0wsZ0JBQWdCLENBQUNJLEtBQUssR0FBR0M7UUFDOUIsT0FBTyxJQUFJO0lBQ1o7SUFFT0UsUUFBc0I7UUFDNUIsTUFBTUMsTUFBK0I7WUFDcENKLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDSCxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQ0MsT0FBTyxFQUFFO1lBQzlDRyxTQUFTO1lBQ1RJLFNBQVM7WUFDVEMsTUFBTTtZQUNOQyxNQUFNO1lBQ05DLFNBQVM7Z0JBQ1JDLE1BQU07WUFDUDtZQUNBQyxjQUFjcEIsY0FBYyxJQUFJLENBQUNLLGFBQWE7UUFDL0M7UUFDQSxJQUFJZ0IsT0FBT0MsSUFBSSxDQUFDLElBQUksQ0FBQ2hCLGdCQUFnQixFQUFFaUIsTUFBTSxHQUFHLEdBQUc7WUFDbERULElBQUlVLGVBQWUsR0FBR3hCLGNBQWMsSUFBSSxDQUFDTSxnQkFBZ0I7UUFDMUQ7UUFDQSxPQUFPO1lBQ047Z0JBQ0NtQixVQUFVO2dCQUNWQyxTQUFTQyxLQUFLQyxTQUFTLENBQUNkLEtBQUssTUFBTTtZQUNwQztTQUNBO0lBQ0Y7QUFDRCJ9
@@ -18,3 +18,5 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
18
18
  return [];
19
19
  }
20
20
  }
21
+
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvbW9kZWxzL2F1dGgtY29uZmlnLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdFTExfS05PV05fRklMRVMgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2NvbnN0LmpzXCI7XG5pbXBvcnQgdHlwZSB7IEtleWVkTW9kZWwsIFNvdXJjZUZpbGUgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3NvdXJjZS1maWxlLmpzXCI7XG5cbmV4cG9ydCB0eXBlIEFkbWluVXNlckNvbmZpZyA9IHtcblx0c3ViOiBzdHJpbmc7XG5cdGVtYWlsOiBzdHJpbmc7XG5cdHBhc3N3b3JkOiBzdHJpbmc7XG5cdHVzZXJuYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBBdXRoQ29uZmlnID0ge1xuXHRpc3N1ZXJCYXNlVXJsOiBzdHJpbmc7XG5cdGF1ZGllbmNlOiBzdHJpbmc7XG5cdGFkbWluVXNlcj86IEFkbWluVXNlckNvbmZpZztcbn07XG5cbi8qKlxuICogRGF0YS1jYXJyaWVyIG1vZGVsIGZvciBhdXRoIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogUmVnaXN0ZXJlZCBieSBBdXRoRmVhdHVyZSB3aGVuIGF1dGgwIGlzIGNvbmZpZ3VyZWQuIE90aGVyIGZlYXR1cmVzIChlLmcuXG4gKiBQb3N0bWFuRmVhdHVyZSkgcmV0cmlldmUgaXQgdmlhIHdvcmtzcGFjZS5nZXRNb2RlbChXRUxMX0tOT1dOX0ZJTEVTLkFVVEhfQ09ORklHKS5cbiAqIFByb2R1Y2VzIG5vIGZpbGVzIOKAlCBleGlzdHMgc29sZWx5IHNvIGZlYXR1cmVzIGNhbiBjb21tdW5pY2F0ZSBhdXRoIGRldGFpbHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRoQ29uZmlnTW9kZWwgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuQVVUSF9DT05GSUc7XG5cblx0cHVibGljIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBjb25maWc6IEF1dGhDb25maWcpIHt9XG5cblx0cHVibGljIHNldEFkbWluVXNlcihhZG1pblVzZXI6IEFkbWluVXNlckNvbmZpZyk6IHZvaWQge1xuXHRcdHRoaXMuY29uZmlnLmFkbWluVXNlciA9IGFkbWluVXNlcjtcblx0fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdHJldHVybiBbXTtcblx0fVxufVxuIl0sIm5hbWVzIjpbIldFTExfS05PV05fRklMRVMiLCJBdXRoQ29uZmlnTW9kZWwiLCJrZXkiLCJBVVRIX0NPTkZJRyIsImNvbmZpZyIsInNldEFkbWluVXNlciIsImFkbWluVXNlciIsImZpbGVzIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFnQnpEOzs7Ozs7Q0FNQyxHQUNELE9BQU8sTUFBTUM7O0lBQ0lDLE1BQU1GLGlCQUFpQkcsV0FBVyxDQUFDO0lBRW5ELFlBQW1CLEFBQWdCQyxNQUFrQixDQUFFO2FBQXBCQSxTQUFBQTtJQUFxQjtJQUVqREMsYUFBYUMsU0FBMEIsRUFBUTtRQUNyRCxJQUFJLENBQUNGLE1BQU0sQ0FBQ0UsU0FBUyxHQUFHQTtJQUN6QjtJQUVPQyxRQUFzQjtRQUM1QixPQUFPLEVBQUU7SUFDVjtBQUNEIn0=
@@ -89,8 +89,8 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
89
89
  ]
90
90
  ]);
91
91
  _classDecorators = [];
92
- /** Explicit @inject(SampleService): using the class as a value keeps its import, which SWC can drop when the class is only a type (design:paramtypes then collapses to Object). */ _ctorParams = [
93
- "@inject(SampleService) private readonly sample: SampleService"
92
+ /** Explicit @inject — design:paramtypes can collapse to Object under SWC when the class is still undefined at decorate time. */ _ctorParams = [
93
+ '@inject("SampleService") private readonly sample: SampleService'
94
94
  ];
95
95
  _methods = new Map([
96
96
  [
@@ -102,7 +102,8 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
102
102
  ],
103
103
  [
104
104
  "getOne",
105
- new ControllerMethod("getOne", '@Get("/:id")', '@Param("id") id: string', false, [
105
+ new ControllerMethod("getOne", '@Get("/:id")', '@Param("id") id: string', false, // biome-ignore lint/suspicious/noTemplateCurlyInString: template literal in generated code
106
+ [
106
107
  "return { id, message: `Hello ${id}!` };"
107
108
  ])
108
109
  ],
@@ -134,7 +135,7 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
134
135
  this._classDecorators.push(decorator);
135
136
  return this;
136
137
  }
137
- /** Add a named import from `@decohere/http`. */ addCortexImport(name, typeOnly = false) {
138
+ /** Add a named import from `@decohere/cortex`. */ addCortexImport(name, typeOnly = false) {
138
139
  this._cortexImports.add(name, typeOnly);
139
140
  return this;
140
141
  }
@@ -150,7 +151,7 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
150
151
  }
151
152
  files() {
152
153
  const lines = [
153
- this._cortexImports.render("@decohere/http"),
154
+ this._cortexImports.render("@decohere/cortex"),
154
155
  'import { SampleService } from "../services/sample.service.js";'
155
156
  ];
156
157
  for (const [from, group] of this._extraImportGroups){
@@ -179,3 +180,5 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
179
180
  ];
180
181
  }
181
182
  }
183
+
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvbW9kZWxzL2NvbnRyb2xsZXItc291cmNlLWZpbGUubW9kZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc291cmNlLWZpbGUuanNcIjtcblxuLyoqIFRyYWNrcyBuYW1lZCBpbXBvcnRzIGZyb20gYSBzaW5nbGUgbW9kdWxlIHBhdGgsIHNwbGl0IGludG8gdmFsdWVzIGFuZCB0eXBlcy4gKi9cbmNsYXNzIEltcG9ydEdyb3VwIHtcblx0cHJpdmF0ZSByZWFkb25seSBfdmFsdWVzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF90eXBlczogc3RyaW5nW10gPSBbXTtcblxuXHRwdWJsaWMgYWRkKG5hbWU6IHN0cmluZywgdHlwZU9ubHkgPSBmYWxzZSk6IHRoaXMge1xuXHRcdGlmICh0eXBlT25seSkge1xuXHRcdFx0Ly8gVmFsdWUgaW1wb3J0IGFscmVhZHkgcHJlc2VudCDigJQgdmFsdWUgd2lucywgc2tpcFxuXHRcdFx0aWYgKCF0aGlzLl92YWx1ZXMuaW5jbHVkZXMobmFtZSkgJiYgIXRoaXMuX3R5cGVzLmluY2x1ZGVzKG5hbWUpKSB7XG5cdFx0XHRcdHRoaXMuX3R5cGVzLnB1c2gobmFtZSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIFByb21vdGU6IHJlbW92ZSBmcm9tIHR5cGVzIGlmIGl0IHdhcyBwcmV2aW91c2x5IHR5cGUtb25seVxuXHRcdFx0Y29uc3QgdHlwZUlkeCA9IHRoaXMuX3R5cGVzLmluZGV4T2YobmFtZSk7XG5cdFx0XHRpZiAodHlwZUlkeCAhPT0gLTEpIHRoaXMuX3R5cGVzLnNwbGljZSh0eXBlSWR4LCAxKTtcblx0XHRcdGlmICghdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpKSB0aGlzLl92YWx1ZXMucHVzaChuYW1lKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgcmVuZGVyKGZyb206IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0Y29uc3QgdmFsdWVzID0gWy4uLnRoaXMuX3ZhbHVlc10uc29ydCgpO1xuXHRcdGNvbnN0IHR5cGVzID0gWy4uLnRoaXMuX3R5cGVzXS5zb3J0KCkubWFwKChuKSA9PiBgdHlwZSAke259YCk7XG5cdFx0cmV0dXJuIGBpbXBvcnQgeyAke1suLi52YWx1ZXMsIC4uLnR5cGVzXS5qb2luKFwiLCBcIil9IH0gZnJvbSBcIiR7ZnJvbX1cIjtgO1xuXHR9XG59XG5cbi8qKlxuICogQSBjb250cm9sbGVyIG1ldGhvZC4gRmVhdHVyZXMgY2FsbCBgYWRkRGVjb3JhdG9yKClgIHRvIHByZXBlbmQgZGVjb3JhdG9yc1xuICogYmVmb3JlIHRoZSBIVFRQIHZlcmIgZGVjb3JhdG9yIChlLmcuIGBAQWxsb3dBbm9ueW1vdXNgIGJlZm9yZSBgQEdldCgpYCkuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cm9sbGVyTWV0aG9kIHtcblx0cHJpdmF0ZSByZWFkb25seSBfZXh0cmFEZWNvcmF0b3JzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIF9ib2R5OiBzdHJpbmdbXTtcblx0cHJpdmF0ZSBfaXNBc3luYzogYm9vbGVhbjtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IoXG5cdFx0cHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcblx0XHRwcml2YXRlIHJlYWRvbmx5IF9odHRwRGVjb3JhdG9yOiBzdHJpbmcsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBfcGFyYW1zOiBzdHJpbmcsXG5cdFx0aXNBc3luYzogYm9vbGVhbixcblx0XHRib2R5OiBzdHJpbmdbXSxcblx0KSB7XG5cdFx0dGhpcy5faXNBc3luYyA9IGlzQXN5bmM7XG5cdFx0dGhpcy5fYm9keSA9IGJvZHk7XG5cdH1cblxuXHRwdWJsaWMgYWRkRGVjb3JhdG9yKGRlY29yYXRvcjogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fZXh0cmFEZWNvcmF0b3JzLnB1c2goZGVjb3JhdG9yKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBSZXBsYWNlIHRoZSBtZXRob2QgYm9keSBsaW5lcyAodXNlZCBieSBmZWF0dXJlcyB0aGF0IGV4dGVuZCBnZW5lcmF0ZWQgYmVoYXZpb3VyKS4gKi9cblx0cHVibGljIHNldEJvZHkoYm9keTogc3RyaW5nW10pOiB0aGlzIHtcblx0XHR0aGlzLl9ib2R5ID0gYm9keTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBzZXRBc3luYyhpc0FzeW5jID0gdHJ1ZSk6IHRoaXMge1xuXHRcdHRoaXMuX2lzQXN5bmMgPSBpc0FzeW5jO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcigpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChjb25zdCBkIG9mIHRoaXMuX2V4dHJhRGVjb3JhdG9ycykge1xuXHRcdFx0bGluZXMucHVzaChgXFx0JHtkfWApO1xuXHRcdH1cblx0XHRsaW5lcy5wdXNoKGBcXHQke3RoaXMuX2h0dHBEZWNvcmF0b3J9YCk7XG5cdFx0Y29uc3QgYXN5bmNLdyA9IHRoaXMuX2lzQXN5bmMgPyBcImFzeW5jIFwiIDogXCJcIjtcblx0XHRsaW5lcy5wdXNoKGBcXHRwdWJsaWMgJHthc3luY0t3fSR7dGhpcy5uYW1lfSgke3RoaXMuX3BhcmFtc30pIHtgKTtcblx0XHRmb3IgKGNvbnN0IGxpbmUgb2YgdGhpcy5fYm9keSkge1xuXHRcdFx0bGluZXMucHVzaChgXFx0XFx0JHtsaW5lfWApO1xuXHRcdH1cblx0XHRsaW5lcy5wdXNoKFwiXFx0fVwiKTtcblx0XHRyZXR1cm4gbGluZXM7XG5cdH1cbn1cblxuLyoqXG4gKiBNb2RlbCBmb3IgYHByb2plY3RzL2FwaS9zcmMvY29udHJvbGxlcnMvaGVsbG8uY29udHJvbGxlci50c2AuXG4gKlxuICogUHJlLWluaXRpYWxpc2VkIHdpdGggYWxsIHJvdXRlcyBhbmQgdGhlaXIgSFRUUCBkZWNvcmF0b3JzLiBGZWF0dXJlcyBtdXRhdGVcbiAqIHRoZSBtb2RlbCB2aWEgYGdldE1ldGhvZChuYW1lKS5hZGREZWNvcmF0b3IoLi4uKWAsIGBhZGREZWNvcmF0b3IoLi4uKWAgKGNsYXNzXG4gKiBsZXZlbCksIGBhZGRDb3J0ZXhJbXBvcnQoLi4uKWAsIGBhZGRJbXBvcnQoLi4uKWAsIGFuZCBgYWRkQ29uc3RydWN0b3JQYXJhbSguLi4pYC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRyb2xsZXJTb3VyY2VGaWxlIGltcGxlbWVudHMgS2V5ZWRNb2RlbCB7XG5cdHB1YmxpYyByZWFkb25seSBrZXkgPSBXRUxMX0tOT1dOX0ZJTEVTLkNPTlRST0xMRVJfVFM7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfY29ydGV4SW1wb3J0cyA9IG5ldyBJbXBvcnRHcm91cCgpXG5cdFx0LmFkZChcIkNvbnRyb2xsZXJcIilcblx0XHQuYWRkKFwiRGVsZXRlXCIpXG5cdFx0LmFkZChcIkZpZWxkXCIpXG5cdFx0LmFkZChcIkdldFwiKVxuXHRcdC5hZGQoXCJQYXJhbVwiKVxuXHRcdC5hZGQoXCJQb3N0XCIpXG5cdFx0LmFkZChcIlB1dFwiKVxuXHRcdC5hZGQoXCJRdWVyeVwiKTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9leHRyYUltcG9ydEdyb3VwcyA9IG5ldyBNYXA8c3RyaW5nLCBJbXBvcnRHcm91cD4oW1xuXHRcdFtcIkBkZWNvaGVyZS9jcnVjaWJsZS9kZWNvcmF0b3JzXCIsIG5ldyBJbXBvcnRHcm91cCgpLmFkZChcImluamVjdFwiKV0sXG5cdF0pO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9jbGFzc0RlY29yYXRvcnM6IHN0cmluZ1tdID0gW107XG5cdC8qKiBFeHBsaWNpdCBAaW5qZWN0IOKAlCBkZXNpZ246cGFyYW10eXBlcyBjYW4gY29sbGFwc2UgdG8gT2JqZWN0IHVuZGVyIFNXQyB3aGVuIHRoZSBjbGFzcyBpcyBzdGlsbCB1bmRlZmluZWQgYXQgZGVjb3JhdGUgdGltZS4gKi9cblx0cHJpdmF0ZSByZWFkb25seSBfY3RvclBhcmFtczogc3RyaW5nW10gPSBbXG5cdFx0J0BpbmplY3QoXCJTYW1wbGVTZXJ2aWNlXCIpIHByaXZhdGUgcmVhZG9ubHkgc2FtcGxlOiBTYW1wbGVTZXJ2aWNlJyxcblx0XTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IF9tZXRob2RzID0gbmV3IE1hcDxzdHJpbmcsIENvbnRyb2xsZXJNZXRob2Q+KFtcblx0XHRbXG5cdFx0XHRcImdldEFsbFwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXCJnZXRBbGxcIiwgXCJAR2V0KClcIiwgJ0BRdWVyeShcImZpbHRlclwiKSBmaWx0ZXI6IHN0cmluZycsIHRydWUsIFtcblx0XHRcdFx0XCJjb25zdCBncmVldGluZyA9IGF3YWl0IHRoaXMuc2FtcGxlLmdldEdyZWV0aW5nKCk7XCIsXG5cdFx0XHRcdFwicmV0dXJuIHsgZmlsdGVyLCBtZXNzYWdlOiBncmVldGluZyB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XHRbXG5cdFx0XHRcImdldE9uZVwiLFxuXHRcdFx0bmV3IENvbnRyb2xsZXJNZXRob2QoXG5cdFx0XHRcdFwiZ2V0T25lXCIsXG5cdFx0XHRcdCdAR2V0KFwiLzppZFwiKScsXG5cdFx0XHRcdCdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9UZW1wbGF0ZUN1cmx5SW5TdHJpbmc6IHRlbXBsYXRlIGxpdGVyYWwgaW4gZ2VuZXJhdGVkIGNvZGVcblx0XHRcdFx0W1wicmV0dXJuIHsgaWQsIG1lc3NhZ2U6IGBIZWxsbyAke2lkfSFgIH07XCJdLFxuXHRcdFx0KSxcblx0XHRdLFxuXHRcdFtcblx0XHRcdFwiY3JlYXRlXCIsXG5cdFx0XHRuZXcgQ29udHJvbGxlck1ldGhvZChcImNyZWF0ZVwiLCBcIkBQb3N0KClcIiwgXCJib2R5OiBIZWxsb0JvZHlcIiwgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIixcblx0XHRcdF0pLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJ1cGRhdGVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFxuXHRcdFx0XHRcInVwZGF0ZVwiLFxuXHRcdFx0XHQnQFB1dChcIi86aWRcIiknLFxuXHRcdFx0XHQnQFBhcmFtKFwiaWRcIikgaWQ6IHN0cmluZywgYm9keTogSGVsbG9Cb2R5Jyxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFtcInJldHVybiB7IGlkLCBtZXNzYWdlOiBib2R5Lm1lc3NhZ2UgfTtcIl0sXG5cdFx0XHQpLFxuXHRcdF0sXG5cdFx0W1xuXHRcdFx0XCJyZW1vdmVcIixcblx0XHRcdG5ldyBDb250cm9sbGVyTWV0aG9kKFwicmVtb3ZlXCIsICdARGVsZXRlKFwiLzppZFwiKScsICdAUGFyYW0oXCJpZFwiKSBpZDogc3RyaW5nJywgZmFsc2UsIFtcblx0XHRcdFx0XCJyZXR1cm4geyBpZCwgZGVsZXRlZDogdHJ1ZSB9O1wiLFxuXHRcdFx0XSksXG5cdFx0XSxcblx0XSk7XG5cblx0LyoqIFJldHJpZXZlIGEgbWV0aG9kIGJ5IG5hbWUgdG8gbXV0YXRlIGl0cyBkZWNvcmF0b3JzLiAqL1xuXHRwdWJsaWMgZ2V0TWV0aG9kKG5hbWU6IHN0cmluZyk6IENvbnRyb2xsZXJNZXRob2Qge1xuXHRcdGNvbnN0IG0gPSB0aGlzLl9tZXRob2RzLmdldChuYW1lKTtcblx0XHRpZiAobSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoYE5vIG1ldGhvZCAnJHtuYW1lfScgb24gQ29udHJvbGxlclNvdXJjZUZpbGVgKTtcblx0XHRyZXR1cm4gbTtcblx0fVxuXG5cdC8qKiBBZGQgYSBjbGFzcy1sZXZlbCBkZWNvcmF0b3IgKGUuZy4gYEBBdXRob3JpemVgKS4gKi9cblx0cHVibGljIGFkZERlY29yYXRvcihkZWNvcmF0b3I6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2NsYXNzRGVjb3JhdG9ycy5wdXNoKGRlY29yYXRvcik7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKiogQWRkIGEgbmFtZWQgaW1wb3J0IGZyb20gYEBkZWNvaGVyZS9jb3J0ZXhgLiAqL1xuXHRwdWJsaWMgYWRkQ29ydGV4SW1wb3J0KG5hbWU6IHN0cmluZywgdHlwZU9ubHkgPSBmYWxzZSk6IHRoaXMge1xuXHRcdHRoaXMuX2NvcnRleEltcG9ydHMuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGQgYSBuYW1lZCBpbXBvcnQgZnJvbSBhbnkgb3RoZXIgbW9kdWxlLiAqL1xuXHRwdWJsaWMgYWRkSW1wb3J0KG5hbWU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5nZXQoZnJvbSkgPz8gbmV3IEltcG9ydEdyb3VwKCk7XG5cdFx0Z3JvdXAuYWRkKG5hbWUsIHR5cGVPbmx5KTtcblx0XHR0aGlzLl9leHRyYUltcG9ydEdyb3Vwcy5zZXQoZnJvbSwgZ3JvdXApO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZCBhIGNvbnN0cnVjdG9yIHBhcmFtZXRlciAoZS5nLiBhbiBpbmplY3RlZCBkZXBlbmRlbmN5KS4gKi9cblx0cHVibGljIGFkZENvbnN0cnVjdG9yUGFyYW0ocGFyYW06IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2N0b3JQYXJhbXMucHVzaChwYXJhbSk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRwdWJsaWMgZmlsZXMoKTogU291cmNlRmlsZVtdIHtcblx0XHRjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXG5cdFx0XHR0aGlzLl9jb3J0ZXhJbXBvcnRzLnJlbmRlcihcIkBkZWNvaGVyZS9jb3J0ZXhcIiksXG5cdFx0XHQnaW1wb3J0IHsgU2FtcGxlU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9zYW1wbGUuc2VydmljZS5qc1wiOycsXG5cdFx0XTtcblxuXHRcdGZvciAoY29uc3QgW2Zyb20sIGdyb3VwXSBvZiB0aGlzLl9leHRyYUltcG9ydEdyb3Vwcykge1xuXHRcdFx0bGluZXMucHVzaChncm91cC5yZW5kZXIoZnJvbSkpO1xuXHRcdH1cblxuXHRcdGxpbmVzLnB1c2goXG5cdFx0XHRcIlwiLFxuXHRcdFx0XCJjbGFzcyBIZWxsb0JvZHkge1wiLFxuXHRcdFx0J1xcdEBGaWVsZChcImJvZHlcIiwgXCJtZXNzYWdlXCIpJyxcblx0XHRcdFwiXFx0cHVibGljIG1lc3NhZ2UhOiBzdHJpbmc7XCIsXG5cdFx0XHRcIn1cIixcblx0XHRcdFwiXCIsXG5cdFx0KTtcblxuXHRcdGZvciAoY29uc3QgZCBvZiB0aGlzLl9jbGFzc0RlY29yYXRvcnMpIHtcblx0XHRcdGxpbmVzLnB1c2goZCk7XG5cdFx0fVxuXHRcdGxpbmVzLnB1c2goJ0BDb250cm9sbGVyKHsgcHJlZml4OiBcIi9oZWxsb1wiIH0pJywgXCJleHBvcnQgY2xhc3MgSGVsbG9Db250cm9sbGVyIHtcIiwgXCJcIik7XG5cblx0XHRsaW5lcy5wdXNoKFwiXFx0cHVibGljIGNvbnN0cnVjdG9yKFwiKTtcblx0XHRmb3IgKGNvbnN0IHAgb2YgdGhpcy5fY3RvclBhcmFtcykge1xuXHRcdFx0bGluZXMucHVzaChgXFx0XFx0JHtwfSxgKTtcblx0XHR9XG5cdFx0bGluZXMucHVzaChcIlxcdCkge31cIik7XG5cdFx0bGluZXMucHVzaChcIlwiKTtcblxuXHRcdGZvciAoY29uc3QgbWV0aG9kIG9mIHRoaXMuX21ldGhvZHMudmFsdWVzKCkpIHtcblx0XHRcdGxpbmVzLnB1c2goLi4ubWV0aG9kLnJlbmRlcigpLCBcIlwiKTtcblx0XHR9XG5cblx0XHRsaW5lcy5wdXNoKFwifVwiLCBcIlwiKTtcblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInNyYy9jb250cm9sbGVycy9oZWxsby5jb250cm9sbGVyLnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQ6IGxpbmVzLmpvaW4oXCJcXG5cIiksXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiSW1wb3J0R3JvdXAiLCJfdmFsdWVzIiwiX3R5cGVzIiwiYWRkIiwibmFtZSIsInR5cGVPbmx5IiwiaW5jbHVkZXMiLCJwdXNoIiwidHlwZUlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJyZW5kZXIiLCJmcm9tIiwidmFsdWVzIiwic29ydCIsInR5cGVzIiwibWFwIiwibiIsImpvaW4iLCJDb250cm9sbGVyTWV0aG9kIiwiX2V4dHJhRGVjb3JhdG9ycyIsIl9ib2R5IiwiX2lzQXN5bmMiLCJfaHR0cERlY29yYXRvciIsIl9wYXJhbXMiLCJpc0FzeW5jIiwiYm9keSIsImFkZERlY29yYXRvciIsImRlY29yYXRvciIsInNldEJvZHkiLCJzZXRBc3luYyIsImxpbmVzIiwiZCIsImFzeW5jS3ciLCJsaW5lIiwiQ29udHJvbGxlclNvdXJjZUZpbGUiLCJrZXkiLCJDT05UUk9MTEVSX1RTIiwiX2NvcnRleEltcG9ydHMiLCJfZXh0cmFJbXBvcnRHcm91cHMiLCJNYXAiLCJfY2xhc3NEZWNvcmF0b3JzIiwiX2N0b3JQYXJhbXMiLCJfbWV0aG9kcyIsImdldE1ldGhvZCIsIm0iLCJnZXQiLCJFcnJvciIsImFkZENvcnRleEltcG9ydCIsImFkZEltcG9ydCIsImdyb3VwIiwic2V0IiwiYWRkQ29uc3RydWN0b3JQYXJhbSIsInBhcmFtIiwiZmlsZXMiLCJwIiwibWV0aG9kIiwiZmlsZVBhdGgiLCJjb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxnQkFBZ0IsUUFBUSx3QkFBd0I7QUFHekQsaUZBQWlGLEdBQ2pGLE1BQU1DO0lBQ1lDLFVBQW9C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
@@ -115,9 +115,9 @@ jobs:
115
115
  - name: Test
116
116
  run: pnpm test
117
117
 
118
- - name: Build and package (default branch)
118
+ - name: Build (default branch)
119
119
  if: github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
120
- run: pnpm run package
120
+ run: pnpm run build
121
121
 
122
122
  ci:
123
123
  needs: [lint, test]
@@ -175,12 +175,12 @@ jobs:
175
175
  - name: Publish packages
176
176
  run: pnpm exec forge publish --configuration release
177
177
  # Skips packages with "private": true (e.g. the webapi app).
178
- # Optional registry images: replace "Build release" above with \`pnpm run package\`, then add
179
- # \`pnpm exec forge docker --configuration release --push\` after configuring GHCR/OIDC.
180
- # Not enabled by default. Each API's Dockerfile copies .package/, which \`forge package\`
181
- # builds, so the image build itself needs no npm token.
178
+ # Optional registry images: add \`pnpm exec forge docker --configuration release --push\`
179
+ # after configuring GHCR/OIDC — not enabled by default (PaaS builds the Dockerfile).
182
180
  `
183
181
  }
184
182
  ];
185
183
  }
186
184
  }
185
+
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvbW9kZWxzL2dpdGh1Yi1jaS5tb2RlbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBXRUxMX0tOT1dOX0ZJTEVTIH0gZnJvbSBcIi4uLy4uL21vZGVscy9jb25zdC5qc1wiO1xuaW1wb3J0IHR5cGUgeyBLZXllZE1vZGVsLCBTb3VyY2VGaWxlIH0gZnJvbSBcIi4uLy4uL21vZGVscy9zb3VyY2UtZmlsZS5qc1wiO1xuXG4vKipcbiAqIE1pbmltYWwgR2l0SHViIEFjdGlvbnMgZm9yIHNjYWZmb2xkZWQgYXBwczogbGludCDiiKUgdGVzdCwgYnVpbGQgZ2F0ZSBvbiBkZWZhdWx0IGJyYW5jaCxcbiAqIG5wbSBwdWJsaXNoIGFmdGVyIENJIChza2lwcyBwcml2YXRlIHBhY2thZ2VzKS4gTm8gZGVmYXVsdCBmb3JnZSBkb2NrZXIgLS1wdXNoLlxuICovXG5leHBvcnQgY2xhc3MgR2l0aHViQ2lXb3JrZmxvd3MgaW1wbGVtZW50cyBLZXllZE1vZGVsIHtcblx0cHVibGljIHJlYWRvbmx5IGtleSA9IFdFTExfS05PV05fRklMRVMuR0lUSFVCX0NJO1xuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5naXRodWIvYWN0aW9ucy9zZXR1cC1ub2RlLXBucG0vYWN0aW9uLnltbFwiLFxuXHRcdFx0XHRjb250ZW50OiBgbmFtZTogU2V0dXAgTm9kZSArIHBucG1cbmRlc2NyaXB0aW9uOiBJbnN0YWxsIHBucG0gYW5kIE5vZGUsIGNvbmZpZ3VyZSBucG0gcmVnaXN0cnkgYXV0aCwgaW5zdGFsbCBkZXBzXG5pbnB1dHM6XG4gIG5vZGUtdmVyc2lvbjpcbiAgICBkZXNjcmlwdGlvbjogTm9kZS5qcyB2ZXJzaW9uXG4gICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgZGVmYXVsdDogXCIyNFwiXG4gIHBucG0tdmVyc2lvbjpcbiAgICBkZXNjcmlwdGlvbjogcG5wbSB2ZXJzaW9uXG4gICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgZGVmYXVsdDogXCIxMFwiXG4gIGluc3RhbGw6XG4gICAgZGVzY3JpcHRpb246IFJ1biBwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGVcbiAgICByZXF1aXJlZDogZmFsc2VcbiAgICBkZWZhdWx0OiBcInRydWVcIlxuXG5ydW5zOlxuICB1c2luZzogY29tcG9zaXRlXG4gIHN0ZXBzOlxuICAgIC0gdXNlczogcG5wbS9hY3Rpb24tc2V0dXBAdjRcbiAgICAgIHdpdGg6XG4gICAgICAgIHZlcnNpb246IFxcJHt7IGlucHV0cy5wbnBtLXZlcnNpb24gfX1cblxuICAgIC0gdXNlczogYWN0aW9ucy9zZXR1cC1ub2RlQHY0XG4gICAgICB3aXRoOlxuICAgICAgICBub2RlLXZlcnNpb246IFxcJHt7IGlucHV0cy5ub2RlLXZlcnNpb24gfX1cbiAgICAgICAgY2FjaGU6IHBucG1cbiAgICAgICAgY2FjaGUtZGVwZW5kZW5jeS1wYXRoOiBwbnBtLWxvY2sueWFtbFxuXG4gICAgLSBuYW1lOiBDb25maWd1cmUgbnBtIGF1dGhcbiAgICAgIHNoZWxsOiBiYXNoXG4gICAgICBydW46IHxcbiAgICAgICAgaWYgW1sgLW4gXCJcXCR7Tk9ERV9BVVRIX1RPS0VOOi19XCIgXV07IHRoZW5cbiAgICAgICAgICBlY2hvIFwiLy9yZWdpc3RyeS5ucG1qcy5vcmcvOl9hdXRoVG9rZW49XFwke05PREVfQVVUSF9UT0tFTn1cIiA+PiAubnBtcmNcbiAgICAgICAgZmlcblxuICAgIC0gbmFtZTogSW5zdGFsbCBkZXBlbmRlbmNpZXNcbiAgICAgIGlmOiBpbnB1dHMuaW5zdGFsbCA9PSAndHJ1ZSdcbiAgICAgIHNoZWxsOiBiYXNoXG4gICAgICBydW46IHxcbiAgICAgICAgaWYgW1sgLWYgcG5wbS1sb2NrLnlhbWwgXV07IHRoZW5cbiAgICAgICAgICBwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHBucG0gaW5zdGFsbFxuICAgICAgICBmaVxuYCxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcIi5naXRodWIvd29ya2Zsb3dzL2NpLnltbFwiLFxuXHRcdFx0XHRjb250ZW50OiBgbmFtZTogQ0lcbm9uOlxuICBwdXNoOlxuICAgIGJyYW5jaGVzOlxuICAgICAgLSBcIipcIlxuICBwdWxsX3JlcXVlc3Q6XG4gIHdvcmtmbG93X2Rpc3BhdGNoOlxuY29uY3VycmVuY3k6XG4gIGdyb3VwOiBjaS1cXCR7eyBnaXRodWIucmVmIH19XG4gIGNhbmNlbC1pbi1wcm9ncmVzczogdHJ1ZVxuZW52OlxuICBOT0RFX0FVVEhfVE9LRU46IFxcJHt7IHNlY3JldHMuTk9ERV9BVVRIX1RPS0VOIH19XG4gIFNDUklCRV9MT0dfTEVWRUw6IGluZm9cblxuam9iczpcbiAgbGludDpcbiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0XG4gICAgdGltZW91dC1taW51dGVzOiAxNVxuICAgIHBlcm1pc3Npb25zOlxuICAgICAgY29udGVudHM6IHJlYWRcbiAgICBzdGVwczpcbiAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2NFxuICAgICAgICB3aXRoOlxuICAgICAgICAgIGZldGNoLWRlcHRoOiAxXG5cbiAgICAgIC0gdXNlczogLi8uZ2l0aHViL2FjdGlvbnMvc2V0dXAtbm9kZS1wbnBtXG5cbiAgICAgIC0gbmFtZTogTGludCBhbmQgdHlwZWNoZWNrXG4gICAgICAgIHJ1bjogfFxuICAgICAgICAgIHNldCArZVxuICAgICAgICAgIHBucG0gcnVuIGxpbnQ6Y2hlY2sgJlxuICAgICAgICAgIGxpbnRfcGlkPSQhXG4gICAgICAgICAgcG5wbSBydW4gdHlwZWNoZWNrICZcbiAgICAgICAgICB0c2NfcGlkPSQhXG4gICAgICAgICAgd2FpdCBcIiRsaW50X3BpZFwiXG4gICAgICAgICAgbGludF9jb2RlPSQ/XG4gICAgICAgICAgd2FpdCBcIiR0c2NfcGlkXCJcbiAgICAgICAgICB0c2NfY29kZT0kP1xuICAgICAgICAgIHNldCAtZVxuICAgICAgICAgIGlmIFtbIFwiJGxpbnRfY29kZVwiIC1uZSAwIHx8IFwiJHRzY19jb2RlXCIgLW5lIDAgXV07IHRoZW5cbiAgICAgICAgICAgIGV4aXQgMVxuICAgICAgICAgIGZpXG5cbiAgdGVzdDpcbiAgICBydW5zLW9uOiB1YnVudHUtbGF0ZXN0XG4gICAgdGltZW91dC1taW51dGVzOiAyMFxuICAgIHBlcm1pc3Npb25zOlxuICAgICAgY29udGVudHM6IHJlYWRcbiAgICBzdGVwczpcbiAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2NFxuICAgICAgICB3aXRoOlxuICAgICAgICAgIGZldGNoLWRlcHRoOiAxXG5cbiAgICAgIC0gdXNlczogLi8uZ2l0aHViL2FjdGlvbnMvc2V0dXAtbm9kZS1wbnBtXG5cbiAgICAgIC0gbmFtZTogVGVzdFxuICAgICAgICBydW46IHBucG0gdGVzdFxuXG4gICAgICAtIG5hbWU6IEJ1aWxkIChkZWZhdWx0IGJyYW5jaClcbiAgICAgICAgaWY6IGdpdGh1Yi5yZWYgPT0gZm9ybWF0KCdyZWZzL2hlYWRzL3swfScsIGdpdGh1Yi5ldmVudC5yZXBvc2l0b3J5LmRlZmF1bHRfYnJhbmNoKVxuICAgICAgICBydW46IHBucG0gcnVuIGJ1aWxkXG5cbiAgY2k6XG4gICAgbmVlZHM6IFtsaW50LCB0ZXN0XVxuICAgIGlmOiBhbHdheXMoKVxuICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3RcbiAgICB0aW1lb3V0LW1pbnV0ZXM6IDVcbiAgICBzdGVwczpcbiAgICAgIC0gbmFtZTogQWdncmVnYXRlXG4gICAgICAgIHJ1bjogfFxuICAgICAgICAgIGlmIFtbIFwiXFwke3sgbmVlZHMubGludC5yZXN1bHQgfX1cIiAhPSBcInN1Y2Nlc3NcIiB8fCBcIlxcJHt7IG5lZWRzLnRlc3QucmVzdWx0IH19XCIgIT0gXCJzdWNjZXNzXCIgXV07IHRoZW5cbiAgICAgICAgICAgIGVjaG8gXCJDSSBmYWlsZWQgKGxpbnQ9XFwke3sgbmVlZHMubGludC5yZXN1bHQgfX0gdGVzdD1cXCR7eyBuZWVkcy50ZXN0LnJlc3VsdCB9fSlcIlxuICAgICAgICAgICAgZXhpdCAxXG4gICAgICAgICAgZmlcbiAgICAgICAgICBlY2hvIFwiQ0kgcGFzc2VkXCJcbmAsXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRmaWxlUGF0aDogXCIuZ2l0aHViL3dvcmtmbG93cy9wdWJsaXNoLnltbFwiLFxuXHRcdFx0XHRjb250ZW50OiBgbmFtZTogUHVibGlzaFxuXG5vbjpcbiAgd29ya2Zsb3dfcnVuOlxuICAgIHdvcmtmbG93czogW1wiQ0lcIl1cbiAgICB0eXBlczogW2NvbXBsZXRlZF1cblxuY29uY3VycmVuY3k6XG4gIGdyb3VwOiBwdWJsaXNoLVxcJHt7IGdpdGh1Yi5ldmVudC53b3JrZmxvd19ydW4uaGVhZF9icmFuY2ggfX1cbiAgY2FuY2VsLWluLXByb2dyZXNzOiBmYWxzZVxuXG5lbnY6XG4gIE5PREVfQVVUSF9UT0tFTjogXFwke3sgc2VjcmV0cy5OT0RFX0FVVEhfVE9LRU4gfX1cbiAgU0NSSUJFX0xPR19MRVZFTDogaW5mb1xuXG5qb2JzOlxuICBwdWJsaXNoOlxuICAgIGlmOiA+XG4gICAgICBnaXRodWIuZXZlbnQud29ya2Zsb3dfcnVuLmNvbmNsdXNpb24gPT0gJ3N1Y2Nlc3MnICYmXG4gICAgICBnaXRodWIuZXZlbnQud29ya2Zsb3dfcnVuLmhlYWRfYnJhbmNoID09IGdpdGh1Yi5ldmVudC5yZXBvc2l0b3J5LmRlZmF1bHRfYnJhbmNoXG4gICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdFxuICAgIHRpbWVvdXQtbWludXRlczogMzBcbiAgICBwZXJtaXNzaW9uczpcbiAgICAgIGNvbnRlbnRzOiByZWFkXG4gICAgICBpZC10b2tlbjogd3JpdGVcbiAgICBzdGVwczpcbiAgICAgIC0gdXNlczogYWN0aW9ucy9jaGVja291dEB2NFxuICAgICAgICB3aXRoOlxuICAgICAgICAgIHJlZjogXFwke3sgZ2l0aHViLmV2ZW50LndvcmtmbG93X3J1bi5oZWFkX3NoYSB9fVxuICAgICAgICAgIGZldGNoLWRlcHRoOiAxXG5cbiAgICAgIC0gdXNlczogLi8uZ2l0aHViL2FjdGlvbnMvc2V0dXAtbm9kZS1wbnBtXG5cbiAgICAgIC0gbmFtZTogQnVpbGQgcmVsZWFzZVxuICAgICAgICBydW46IHBucG0gcnVuIGJ1aWxkXG5cbiAgICAgIC0gbmFtZTogUHVibGlzaCBwYWNrYWdlc1xuICAgICAgICBydW46IHBucG0gZXhlYyBmb3JnZSBwdWJsaXNoIC0tY29uZmlndXJhdGlvbiByZWxlYXNlXG4gICAgICAgICMgU2tpcHMgcGFja2FnZXMgd2l0aCBcInByaXZhdGVcIjogdHJ1ZSAoZS5nLiB0aGUgd2ViYXBpIGFwcCkuXG4gICAgICAgICMgT3B0aW9uYWwgcmVnaXN0cnkgaW1hZ2VzOiBhZGQgXFxgcG5wbSBleGVjIGZvcmdlIGRvY2tlciAtLWNvbmZpZ3VyYXRpb24gcmVsZWFzZSAtLXB1c2hcXGBcbiAgICAgICAgIyBhZnRlciBjb25maWd1cmluZyBHSENSL09JREMg4oCUIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQgKFBhYVMgYnVpbGRzIHRoZSBEb2NrZXJmaWxlKS5cbmAsXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiR2l0aHViQ2lXb3JrZmxvd3MiLCJrZXkiLCJHSVRIVUJfQ0kiLCJmaWxlcyIsImZpbGVQYXRoIiwiY29udGVudCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZ0JBQWdCLFFBQVEsd0JBQXdCO0FBR3pEOzs7Q0FHQyxHQUNELE9BQU8sTUFBTUM7SUFDSUMsTUFBTUYsaUJBQWlCRyxTQUFTLENBQUM7SUFFMUNDLFFBQXNCO1FBQzVCLE9BQU87WUFDTjtnQkFDQ0MsVUFBVTtnQkFDVkMsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE2Q2QsQ0FBQztZQUNFO1lBQ0E7Z0JBQ0NELFVBQVU7Z0JBQ1ZDLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkVkLENBQUM7WUFDRTtZQUNBO2dCQUNDRCxVQUFVO2dCQUNWQyxTQUFTLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUNkLENBQUM7WUFDRTtTQUNBO0lBQ0Y7QUFDRCJ9
@@ -49,7 +49,7 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
49
49
  constructor(appName){
50
50
  this.appName = appName;
51
51
  }
52
- /** Adds a bare side-effect import, e.g. `@decohere/http/auth`. */ addSideEffectImport(path) {
52
+ /** Adds a bare side-effect import, e.g. `@decohere/cortex/auth`. */ addSideEffectImport(path) {
53
53
  if (!this._sideEffectImports.includes(path)) this._sideEffectImports.push(path);
54
54
  return this;
55
55
  }
@@ -95,12 +95,12 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
95
95
  files() {
96
96
  const imports = [
97
97
  'import "@decohere/scribe-pino";',
98
- 'import "@decohere/http/http";'
98
+ 'import "@decohere/cortex/http";'
99
99
  ];
100
100
  for (const path of this._sideEffectImports){
101
101
  imports.push(`import "${path}";`);
102
102
  }
103
- imports.push('import "@decohere/config";', 'import { YamlDataSource } from "@decohere/config";', 'import { Builder } from "@decohere/http";', 'import { FastifyProvider } from "@decohere/http/providers";', 'import { scribe } from "@decohere/scribe";', 'import { SampleService } from "./services/sample.service.js";');
103
+ imports.push('import "@decohere/protocol";', 'import { YamlDataSource } from "@decohere/protocol";', 'import { Builder } from "@decohere/cortex";', 'import { FastifyProvider } from "@decohere/cortex/providers";', 'import { scribe } from "@decohere/scribe";', 'import { SampleService } from "./services/sample.service.js";');
104
104
  for (const e of this._entities){
105
105
  imports.push(`import { ${e.className} } from "${e.importPath}";`);
106
106
  }
@@ -159,3 +159,5 @@ import { WELL_KNOWN_FILES } from "../../models/const.js";
159
159
  ];
160
160
  }
161
161
  }
162
+
163
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL2RlY29oZXJlL2RlY29oZXJlL3Byb2plY3RzL3NjYWZmb2xkL3NyYy93ZWJhcGkvbW9kZWxzL21haW4tc291cmNlLWZpbGUubW9kZWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgV0VMTF9LTk9XTl9GSUxFUyB9IGZyb20gXCIuLi8uLi9tb2RlbHMvY29uc3QuanNcIjtcbmltcG9ydCB0eXBlIHsgS2V5ZWRNb2RlbCwgU291cmNlRmlsZSB9IGZyb20gXCIuLi8uLi9tb2RlbHMvc291cmNlLWZpbGUuanNcIjtcblxuZXhwb3J0IHR5cGUgVHlwZU9ybUltcG9ydCA9IHsgY2xhc3NOYW1lOiBzdHJpbmc7IGltcG9ydFBhdGg6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgU2VydmljZUltcG9ydCA9IFR5cGVPcm1JbXBvcnQgJiB7IHNjb3BlPzogXCJzaW5nbGV0b25cIiB8IFwicmVxdWVzdFwiIH07XG5cbi8qKiBUcmFja3MgbmFtZWQgaW1wb3J0cyBmcm9tIGEgc2luZ2xlIG1vZHVsZSBwYXRoLCBzcGxpdCBpbnRvIHZhbHVlcyBhbmQgdHlwZXMuICovXG5jbGFzcyBJbXBvcnRHcm91cCB7XG5cdHByaXZhdGUgcmVhZG9ubHkgX3ZhbHVlczogc3RyaW5nW10gPSBbXTtcblx0cHJpdmF0ZSByZWFkb25seSBfdHlwZXM6IHN0cmluZ1tdID0gW107XG5cblx0cHVibGljIGFkZChuYW1lOiBzdHJpbmcsIHR5cGVPbmx5ID0gZmFsc2UpOiB0aGlzIHtcblx0XHRpZiAodHlwZU9ubHkpIHtcblx0XHRcdC8vIFZhbHVlIGltcG9ydCBhbHJlYWR5IHByZXNlbnQg4oCUIHZhbHVlIHdpbnMsIHNraXBcblx0XHRcdGlmICghdGhpcy5fdmFsdWVzLmluY2x1ZGVzKG5hbWUpICYmICF0aGlzLl90eXBlcy5pbmNsdWRlcyhuYW1lKSkge1xuXHRcdFx0XHR0aGlzLl90eXBlcy5wdXNoKG5hbWUpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBQcm9tb3RlOiByZW1vdmUgZnJvbSB0eXBlcyBpZiBpdCB3YXMgcHJldmlvdXNseSB0eXBlLW9ubHlcblx0XHRcdGNvbnN0IHR5cGVJZHggPSB0aGlzLl90eXBlcy5pbmRleE9mKG5hbWUpO1xuXHRcdFx0aWYgKHR5cGVJZHggIT09IC0xKSB0aGlzLl90eXBlcy5zcGxpY2UodHlwZUlkeCwgMSk7XG5cdFx0XHRpZiAoIXRoaXMuX3ZhbHVlcy5pbmNsdWRlcyhuYW1lKSkgdGhpcy5fdmFsdWVzLnB1c2gobmFtZSk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0cHVibGljIHJlbmRlcihmcm9tOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHZhbHVlcyA9IFsuLi50aGlzLl92YWx1ZXNdLnNvcnQoKTtcblx0XHRjb25zdCB0eXBlcyA9IFsuLi50aGlzLl90eXBlc10uc29ydCgpLm1hcCgobikgPT4gYHR5cGUgJHtufWApO1xuXHRcdHJldHVybiBgaW1wb3J0IHsgJHtbLi4udmFsdWVzLCAuLi50eXBlc10uam9pbihcIiwgXCIpfSB9IGZyb20gXCIke2Zyb219XCI7YDtcblx0fVxufVxuXG4vKipcbiAqIE1vZGVsIGZvciBgcHJvamVjdHMvYXBpL3NyYy9tYWluLnRzYC5cbiAqXG4gKiBTdGFydHMgd2l0aCB0aGUgbWluaW1hbCBIVFRQICsgWUFNTCBjb25maWcgc2V0dXAuIEZlYXR1cmVzIG11dGF0ZSB0aGUgbW9kZWxcbiAqIGJ5IGNhbGxpbmcgYWRkU2lkZUVmZmVjdEltcG9ydCAvIGFkZEltcG9ydCAvIGFkZEJ1aWxkZXJDYWxsIC8gYWRkRW50aXR5IC9cbiAqIGFkZFJlcG9zaXRvcnkuIGZpbGVzKCkgcmVuZGVycyB3aGF0ZXZlciBoYXMgYmVlbiBhY2N1bXVsYXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1haW5Tb3VyY2VGaWxlIGltcGxlbWVudHMgS2V5ZWRNb2RlbCB7XG5cdHB1YmxpYyByZWFkb25seSBrZXkgPSBXRUxMX0tOT1dOX0ZJTEVTLk1BSU5fVFM7XG5cblx0cHJpdmF0ZSByZWFkb25seSBfc2lkZUVmZmVjdEltcG9ydHM6IHN0cmluZ1tdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX2V4dHJhSW1wb3J0cyA9IG5ldyBNYXA8c3RyaW5nLCBJbXBvcnRHcm91cD4oKTtcblx0cHJpdmF0ZSByZWFkb25seSBfYnVpbGRlckNhbGxzOiBzdHJpbmdbXSA9IFtdO1xuXHRwcml2YXRlIHJlYWRvbmx5IF9lbnRpdGllczogVHlwZU9ybUltcG9ydFtdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3JlcG9zaXRvcmllczogVHlwZU9ybUltcG9ydFtdID0gW107XG5cdHByaXZhdGUgcmVhZG9ubHkgX3NlcnZpY2VzOiBTZXJ2aWNlSW1wb3J0W10gPSBbXTtcblx0cHJpdmF0ZSBfZGF0YVNvdXJjZU5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblx0cHJpdmF0ZSBfdHlwZU9ybVNlZWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBhcHBOYW1lOiBzdHJpbmcpIHt9XG5cblx0LyoqIEFkZHMgYSBiYXJlIHNpZGUtZWZmZWN0IGltcG9ydCwgZS5nLiBgQGRlY29oZXJlL2NvcnRleC9hdXRoYC4gKi9cblx0cHVibGljIGFkZFNpZGVFZmZlY3RJbXBvcnQocGF0aDogc3RyaW5nKTogdGhpcyB7XG5cdFx0aWYgKCF0aGlzLl9zaWRlRWZmZWN0SW1wb3J0cy5pbmNsdWRlcyhwYXRoKSkgdGhpcy5fc2lkZUVmZmVjdEltcG9ydHMucHVzaChwYXRoKTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKiBBZGRzIGEgbmFtZWQgaW1wb3J0LCBlLmcuIGBpbXBvcnQgeyBGb28gfSBmcm9tIFwiYmFyXCJgLiAqL1xuXHRwdWJsaWMgYWRkSW1wb3J0KG5hbWU6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0eXBlT25seSA9IGZhbHNlKTogdGhpcyB7XG5cdFx0Y29uc3QgZ3JvdXAgPSB0aGlzLl9leHRyYUltcG9ydHMuZ2V0KGZyb20pID8/IG5ldyBJbXBvcnRHcm91cCgpO1xuXHRcdGdyb3VwLmFkZChuYW1lLCB0eXBlT25seSk7XG5cdFx0dGhpcy5fZXh0cmFJbXBvcnRzLnNldChmcm9tLCBncm91cCk7XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHQvKipcblx0ICogQWRkcyBhIGJ1aWxkZXIgY2FsbCBpbnNlcnRlZCBhZnRlciBgLndpdGhDb25maWd1cmF0aW9uKClgIGFuZCBiZWZvcmVcblx0ICogYC53aXRoU2VydmljZXMoKWAuIFBhc3MgdGhlIGNhbGwgd2l0aG91dCBsZWFkaW5nIGRvdCwgZS5nLiBgLndpdGhBdXRoKClgLlxuXHQgKi9cblx0cHVibGljIGFkZEJ1aWxkZXJDYWxsKGNhbGw6IHN0cmluZyk6IHRoaXMge1xuXHRcdHRoaXMuX2J1aWxkZXJDYWxscy5wdXNoKGNhbGwpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZHMgYSBUeXBlT1JNIGVudGl0eSDigJQgaW1wb3J0IGFuZCBlbnRyeSBpbiBgd2l0aFR5cGVPcm0oeyBlbnRpdGllcyB9KWAuICovXG5cdHB1YmxpYyBhZGRFbnRpdHkoZW50aXR5OiBUeXBlT3JtSW1wb3J0KTogdGhpcyB7XG5cdFx0dGhpcy5fZW50aXRpZXMucHVzaChlbnRpdHkpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZHMgYSBUeXBlT1JNIHJlcG9zaXRvcnkg4oCUIGltcG9ydCBhbmQgZW50cnkgaW4gYHdpdGhUeXBlT3JtKHsgcmVwb3NpdG9yaWVzIH0pYC4gKi9cblx0cHVibGljIGFkZFJlcG9zaXRvcnkocmVwbzogVHlwZU9ybUltcG9ydCk6IHRoaXMge1xuXHRcdHRoaXMuX3JlcG9zaXRvcmllcy5wdXNoKHJlcG8pO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqIEFkZHMgYSBzZXJ2aWNlIHJlZ2lzdGVyZWQgaW4gYC53aXRoU2VydmljZXMoKWAuICovXG5cdHB1YmxpYyBhZGRTZXJ2aWNlKHNlcnZpY2U6IFNlcnZpY2VJbXBvcnQpOiB0aGlzIHtcblx0XHR0aGlzLl9zZXJ2aWNlcy5wdXNoKHNlcnZpY2UpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIERhdGFzb3VyY2UgbmFtZSBwYXNzZWQgdG8gYHdpdGhUeXBlT3JtKHsgbmFtZSB9KWAuIE11c3QgbWF0Y2hcblx0ICogYGRhdGFiYXNlLmRhdGFTb3VyY2VzW10ubmFtZWAgaW4gY29uZmlnLnlhbWwuXG5cdCAqL1xuXHRwdWJsaWMgc2V0RGF0YVNvdXJjZU5hbWUobmFtZTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fZGF0YVNvdXJjZU5hbWUgPSBuYW1lO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0LyoqXG5cdCAqIElubGluZSBzZWVkIGNhbGxiYWNrIGJvZHkgZm9yIGB3aXRoVHlwZU9ybSh7IHNlZWQgfSlgLlxuXHQgKiBSZWNlaXZlcyBgZGF0YVNvdXJjZWAgaW4gc2NvcGUuIEV4YW1wbGU6IGBhd2FpdCBkYXRhU291cmNlLmdldFJlcG9zaXRvcnkoVXNlcikuc2F2ZSguLi4pYC5cblx0ICovXG5cdHB1YmxpYyBzZXRUeXBlT3JtU2VlZChzZWVkQm9keTogc3RyaW5nKTogdGhpcyB7XG5cdFx0dGhpcy5fdHlwZU9ybVNlZWQgPSBzZWVkQm9keTtcblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdHB1YmxpYyBmaWxlcygpOiBTb3VyY2VGaWxlW10ge1xuXHRcdGNvbnN0IGltcG9ydHM6IHN0cmluZ1tdID0gW1xuXHRcdFx0J2ltcG9ydCBcIkBkZWNvaGVyZS9zY3JpYmUtcGlub1wiOycsXG5cdFx0XHQnaW1wb3J0IFwiQGRlY29oZXJlL2NvcnRleC9odHRwXCI7Jyxcblx0XHRdO1xuXG5cdFx0Zm9yIChjb25zdCBwYXRoIG9mIHRoaXMuX3NpZGVFZmZlY3RJbXBvcnRzKSB7XG5cdFx0XHRpbXBvcnRzLnB1c2goYGltcG9ydCBcIiR7cGF0aH1cIjtgKTtcblx0XHR9XG5cblx0XHRpbXBvcnRzLnB1c2goXG5cdFx0XHQnaW1wb3J0IFwiQGRlY29oZXJlL3Byb3RvY29sXCI7Jyxcblx0XHRcdCdpbXBvcnQgeyBZYW1sRGF0YVNvdXJjZSB9IGZyb20gXCJAZGVjb2hlcmUvcHJvdG9jb2xcIjsnLFxuXHRcdFx0J2ltcG9ydCB7IEJ1aWxkZXIgfSBmcm9tIFwiQGRlY29oZXJlL2NvcnRleFwiOycsXG5cdFx0XHQnaW1wb3J0IHsgRmFzdGlmeVByb3ZpZGVyIH0gZnJvbSBcIkBkZWNvaGVyZS9jb3J0ZXgvcHJvdmlkZXJzXCI7Jyxcblx0XHRcdCdpbXBvcnQgeyBzY3JpYmUgfSBmcm9tIFwiQGRlY29oZXJlL3NjcmliZVwiOycsXG5cdFx0XHQnaW1wb3J0IHsgU2FtcGxlU2VydmljZSB9IGZyb20gXCIuL3NlcnZpY2VzL3NhbXBsZS5zZXJ2aWNlLmpzXCI7Jyxcblx0XHQpO1xuXG5cdFx0Zm9yIChjb25zdCBlIG9mIHRoaXMuX2VudGl0aWVzKSB7XG5cdFx0XHRpbXBvcnRzLnB1c2goYGltcG9ydCB7ICR7ZS5jbGFzc05hbWV9IH0gZnJvbSBcIiR7ZS5pbXBvcnRQYXRofVwiO2ApO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgciBvZiB0aGlzLl9yZXBvc2l0b3JpZXMpIHtcblx0XHRcdGltcG9ydHMucHVzaChgaW1wb3J0IHsgJHtyLmNsYXNzTmFtZX0gfSBmcm9tIFwiJHtyLmltcG9ydFBhdGh9XCI7YCk7XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCBzIG9mIHRoaXMuX3NlcnZpY2VzKSB7XG5cdFx0XHRpbXBvcnRzLnB1c2goYGltcG9ydCB7ICR7cy5jbGFzc05hbWV9IH0gZnJvbSBcIiR7cy5pbXBvcnRQYXRofVwiO2ApO1xuXHRcdH1cblxuXHRcdGZvciAoY29uc3QgW2Zyb20sIGdyb3VwXSBvZiB0aGlzLl9leHRyYUltcG9ydHMpIHtcblx0XHRcdGltcG9ydHMucHVzaChncm91cC5yZW5kZXIoZnJvbSkpO1xuXHRcdH1cblxuXHRcdGltcG9ydHMucHVzaCgnaW1wb3J0IHsgSGVsbG9Db250cm9sbGVyIH0gZnJvbSBcIi4vY29udHJvbGxlcnMvaGVsbG8uY29udHJvbGxlci5qc1wiOycpO1xuXG5cdFx0Y29uc3Qgc2VydmljZVJlZ3MgPSBbXG5cdFx0XHRcImNiLnJlZ2lzdGVyU2luZ2xldG9uKFNhbXBsZVNlcnZpY2UpO1wiLFxuXHRcdFx0Li4udGhpcy5fc2VydmljZXMubWFwKChzKSA9PlxuXHRcdFx0XHRzLnNjb3BlID09PSBcInJlcXVlc3RcIlxuXHRcdFx0XHRcdD8gYGNiLnJlZ2lzdGVyUmVxdWVzdFNjb3BlZCgke3MuY2xhc3NOYW1lfSk7YFxuXHRcdFx0XHRcdDogYGNiLnJlZ2lzdGVyU2luZ2xldG9uKCR7cy5jbGFzc05hbWV9KTtgLFxuXHRcdFx0KSxcblx0XHRdLmpvaW4oXCIgXCIpO1xuXG5cdFx0Y29uc3QgYnVpbGRlckNhbGxzOiBzdHJpbmdbXSA9IFtcblx0XHRcdGBcXHQud2l0aEh0dHAoRmFzdGlmeVByb3ZpZGVyKWAsXG5cdFx0XHRgXFx0LndpdGhDb25maWd1cmF0aW9uKFlhbWxEYXRhU291cmNlKWAsXG5cdFx0XHRgXFx0LndpdGhIZWFsdGgoKWAsXG5cdFx0XHRgXFx0LndpdGhPcGVuQXBpKHsgaW5mbzogeyB0aXRsZTogXCIke3RoaXMuYXBwTmFtZX1cIiwgdmVyc2lvbjogXCIxLjAuMFwiIH0gfSlgLFxuXHRcdFx0Li4udGhpcy5fYnVpbGRlckNhbGxzLm1hcCgoYykgPT4gYFxcdCR7Y31gKSxcblx0XHRcdGBcXHQud2l0aFNlcnZpY2VzKChjYikgPT4geyAke3NlcnZpY2VSZWdzfSB9KWAsXG5cdFx0XTtcblxuXHRcdGlmICh0aGlzLl9lbnRpdGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRjb25zdCBlbnRpdGllcyA9IHRoaXMuX2VudGl0aWVzLm1hcCgoZSkgPT4gZS5jbGFzc05hbWUpLmpvaW4oXCIsIFwiKTtcblx0XHRcdGNvbnN0IHJlcG9zID0gdGhpcy5fcmVwb3NpdG9yaWVzLm1hcCgocikgPT4gci5jbGFzc05hbWUpLmpvaW4oXCIsIFwiKTtcblx0XHRcdGNvbnN0IG5hbWVkID0gdGhpcy5fZGF0YVNvdXJjZU5hbWUgIT0gbnVsbCA/IGBuYW1lOiBcIiR7dGhpcy5fZGF0YVNvdXJjZU5hbWV9XCIsIGAgOiBcIlwiO1xuXHRcdFx0aWYgKHRoaXMuX3R5cGVPcm1TZWVkKSB7XG5cdFx0XHRcdGJ1aWxkZXJDYWxscy5wdXNoKFxuXHRcdFx0XHRcdGBcXHQud2l0aFR5cGVPcm0oeyAke25hbWVkfWVudGl0aWVzOiBbJHtlbnRpdGllc31dLCByZXBvc2l0b3JpZXM6IFske3JlcG9zfV0sIHNlZWQ6IGFzeW5jIChkYXRhU291cmNlKSA9PiB7ICR7dGhpcy5fdHlwZU9ybVNlZWR9IH0gfSlgLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YnVpbGRlckNhbGxzLnB1c2goXG5cdFx0XHRcdFx0YFxcdC53aXRoVHlwZU9ybSh7ICR7bmFtZWR9ZW50aXRpZXM6IFske2VudGl0aWVzfV0sIHJlcG9zaXRvcmllczogWyR7cmVwb3N9XSB9KWAsXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0YnVpbGRlckNhbGxzLnB1c2goYFxcdC53aXRoQ29udHJvbGxlcnMoSGVsbG9Db250cm9sbGVyKWApO1xuXG5cdFx0Y29uc3QgY29udGVudCA9IFtcblx0XHRcdC4uLmltcG9ydHMsXG5cdFx0XHRcIlwiLFxuXHRcdFx0YHNjcmliZS53aXRoUGlub1ByZXR0eSgpLmFuZC53aXRoUGlub1JvbGwoeyBmaWxlOiBcImxvZ3MvJHt0aGlzLmFwcE5hbWV9LmxvZ1wiIH0pO2AsXG5cdFx0XHRcIlwiLFxuXHRcdFx0YGNvbnN0IGFwcCA9IGF3YWl0IEJ1aWxkZXIuY3JlYXRlKHsgYXBwbGljYXRpb25OYW1lOiBcIiR7dGhpcy5hcHBOYW1lfVwiIH0pYCxcblx0XHRcdC4uLmJ1aWxkZXJDYWxscyxcblx0XHRcdGBcXHQuYnVpbGQoKTtgLFxuXHRcdFx0XCJcIixcblx0XHRcdFwiYXdhaXQgYXBwLnN0YXJ0KHsgcG9ydDogTnVtYmVyKHByb2Nlc3MuZW52LlBPUlQgPz8gMzAwMCkgfSk7XCIsXG5cdFx0XHRcIlwiLFxuXHRcdFx0XCJleHBvcnQgZGVmYXVsdCBhcHA7XCIsXG5cdFx0XHRcIlwiLFxuXHRcdF0uam9pbihcIlxcblwiKTtcblxuXHRcdHJldHVybiBbXG5cdFx0XHR7XG5cdFx0XHRcdGZpbGVQYXRoOiBcInNyYy9tYWluLnRzXCIsXG5cdFx0XHRcdGNvbnRlbnQsXG5cdFx0XHR9LFxuXHRcdF07XG5cdH1cbn1cbiJdLCJuYW1lcyI6WyJXRUxMX0tOT1dOX0ZJTEVTIiwiSW1wb3J0R3JvdXAiLCJfdmFsdWVzIiwiX3R5cGVzIiwiYWRkIiwibmFtZSIsInR5cGVPbmx5IiwiaW5jbHVkZXMiLCJwdXNoIiwidHlwZUlkeCIsImluZGV4T2YiLCJzcGxpY2UiLCJyZW5kZXIiLCJmcm9tIiwidmFsdWVzIiwic29ydCIsInR5cGVzIiwibWFwIiwibiIsImpvaW4iLCJNYWluU291cmNlRmlsZSIsImtleSIsIk1BSU5fVFMiLCJfc2lkZUVmZmVjdEltcG9ydHMiLCJfZXh0cmFJbXBvcnRzIiwiTWFwIiwiX2J1aWxkZXJDYWxscyIsIl9lbnRpdGllcyIsIl9yZXBvc2l0b3JpZXMiLCJfc2VydmljZXMiLCJfZGF0YVNvdXJjZU5hbWUiLCJfdHlwZU9ybVNlZWQiLCJhcHBOYW1lIiwiYWRkU2lkZUVmZmVjdEltcG9ydCIsInBhdGgiLCJhZGRJbXBvcnQiLCJncm91cCIsImdldCIsInNldCIsImFkZEJ1aWxkZXJDYWxsIiwiY2FsbCIsImFkZEVudGl0eSIsImVudGl0eSIsImFkZFJlcG9zaXRvcnkiLCJyZXBvIiwiYWRkU2VydmljZSIsInNlcnZpY2UiLCJzZXREYXRhU291cmNlTmFtZSIsInNldFR5cGVPcm1TZWVkIiwic2VlZEJvZHkiLCJmaWxlcyIsImltcG9ydHMiLCJlIiwiY2xhc3NOYW1lIiwiaW1wb3J0UGF0aCIsInIiLCJzIiwic2VydmljZVJlZ3MiLCJzY29wZSIsImJ1aWxkZXJDYWxscyIsImMiLCJsZW5ndGgiLCJlbnRpdGllcyIs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