@pagopa/dx-cli 0.23.2 → 0.23.3

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 (98) hide show
  1. package/README.md +38 -12
  2. package/dist/adapters/azure/cloud-account-repository.js +1 -0
  3. package/dist/adapters/azure/cloud-account-service.js +1 -0
  4. package/dist/adapters/azure/locations.js +1 -0
  5. package/dist/adapters/codemods/git.js +1 -0
  6. package/dist/adapters/codemods/index.js +1 -0
  7. package/dist/adapters/codemods/registry.js +1 -0
  8. package/dist/adapters/codemods/update-code-review.js +1 -0
  9. package/dist/adapters/codemods/use-azure-appsvc.js +1 -0
  10. package/dist/adapters/codemods/use-pnpm.js +1 -0
  11. package/dist/adapters/codemods/yaml.js +1 -0
  12. package/dist/adapters/commander/command-errors.d.ts +31 -0
  13. package/dist/adapters/commander/command-errors.js +42 -0
  14. package/dist/adapters/commander/commands/add.js +29 -10
  15. package/dist/adapters/commander/commands/codemod.d.ts +2 -2
  16. package/dist/adapters/commander/commands/codemod.js +17 -10
  17. package/dist/adapters/commander/commands/doctor.d.ts +1 -1
  18. package/dist/adapters/commander/commands/doctor.js +26 -6
  19. package/dist/adapters/commander/commands/info.d.ts +1 -1
  20. package/dist/adapters/commander/commands/info.js +7 -3
  21. package/dist/adapters/commander/commands/init.d.ts +35 -3
  22. package/dist/adapters/commander/commands/init.js +136 -55
  23. package/dist/adapters/commander/commands/savemoney.js +2 -1
  24. package/dist/adapters/commander/commands/spec.js +1 -0
  25. package/dist/adapters/commander/env.js +1 -0
  26. package/dist/adapters/commander/error-reporting.js +1 -0
  27. package/dist/adapters/commander/global-options.d.ts +12 -0
  28. package/dist/adapters/commander/global-options.js +2 -0
  29. package/dist/adapters/commander/index.d.ts +0 -18
  30. package/dist/adapters/commander/index.js +1 -20
  31. package/dist/adapters/commander/presenters/index.js +1 -0
  32. package/dist/adapters/commander/presenters/json-command-presenter.js +1 -0
  33. package/dist/adapters/commander/presenters/text-command-presenter.js +7 -1
  34. package/dist/adapters/commander/spec.js +1 -0
  35. package/dist/adapters/execa/terraform.js +1 -0
  36. package/dist/adapters/github/github-repo.js +1 -0
  37. package/dist/adapters/node/fs/file-reader.js +1 -0
  38. package/dist/adapters/node/json/index.js +1 -0
  39. package/dist/adapters/node/package-json.js +1 -0
  40. package/dist/adapters/node/release.js +1 -0
  41. package/dist/adapters/node/repository.js +1 -0
  42. package/dist/adapters/octokit/index.js +1 -0
  43. package/dist/adapters/pagopa-technology/azure-authorization-config.js +1 -0
  44. package/dist/adapters/pagopa-technology/azure-authorization.js +1 -0
  45. package/dist/adapters/plop/actions/fetch-github-release.js +1 -0
  46. package/dist/adapters/plop/actions/get-node-version.js +1 -0
  47. package/dist/adapters/plop/actions/get-terraform-backend.js +1 -0
  48. package/dist/adapters/plop/actions/init-cloud-accounts.js +1 -0
  49. package/dist/adapters/plop/actions/provision-terraform-backend.js +1 -0
  50. package/dist/adapters/plop/actions/semver.js +1 -0
  51. package/dist/adapters/plop/actions/setup-pnpm.js +7 -4
  52. package/dist/adapters/plop/generators/environment/actions.js +1 -0
  53. package/dist/adapters/plop/generators/environment/index.js +1 -0
  54. package/dist/adapters/plop/generators/environment/prompts.js +1 -0
  55. package/dist/adapters/plop/generators/monorepo/actions.js +1 -0
  56. package/dist/adapters/plop/generators/monorepo/index.d.ts +1 -1
  57. package/dist/adapters/plop/generators/monorepo/index.js +3 -2
  58. package/dist/adapters/plop/generators/monorepo/prompts.d.ts +7 -1
  59. package/dist/adapters/plop/generators/monorepo/prompts.js +7 -4
  60. package/dist/adapters/plop/helpers/env-short.js +1 -0
  61. package/dist/adapters/plop/helpers/eq.js +1 -0
  62. package/dist/adapters/plop/helpers/resource-prefix.js +1 -0
  63. package/dist/adapters/plop/helpers/terraform-state-key.js +1 -0
  64. package/dist/adapters/plop/helpers/validate-prompt.js +1 -0
  65. package/dist/adapters/plop/index.d.ts +21 -4
  66. package/dist/adapters/plop/index.js +34 -13
  67. package/dist/adapters/plop/templates-path.js +1 -0
  68. package/dist/adapters/terraform/fmt.js +1 -0
  69. package/dist/adapters/yaml/index.js +1 -0
  70. package/dist/adapters/zod/index.js +1 -0
  71. package/dist/config.js +1 -0
  72. package/dist/domain/authorization.js +1 -0
  73. package/dist/domain/cloud-account.js +1 -0
  74. package/dist/domain/codemod.js +1 -0
  75. package/dist/domain/command-presenter.js +1 -0
  76. package/dist/domain/dependencies.d.ts +0 -2
  77. package/dist/domain/dependencies.js +1 -0
  78. package/dist/domain/doctor.d.ts +1 -3
  79. package/dist/domain/doctor.js +9 -3
  80. package/dist/domain/environment.js +1 -0
  81. package/dist/domain/github-repo.js +1 -0
  82. package/dist/domain/github.js +1 -0
  83. package/dist/domain/info.d.ts +0 -1
  84. package/dist/domain/info.js +1 -5
  85. package/dist/domain/package-json.js +1 -0
  86. package/dist/domain/remote-backend.js +1 -0
  87. package/dist/domain/repository.js +1 -0
  88. package/dist/domain/spec.js +1 -0
  89. package/dist/domain/validation.d.ts +0 -3
  90. package/dist/domain/validation.js +1 -0
  91. package/dist/domain/workspace.js +1 -0
  92. package/dist/index.js +1 -3
  93. package/dist/use-cases/apply-codemod.js +1 -0
  94. package/dist/use-cases/list-codemods.js +1 -0
  95. package/dist/use-cases/request-authorization.js +1 -0
  96. package/package.json +1 -1
  97. package/dist/adapters/logtape/validation-reporter.d.ts +0 -2
  98. package/dist/adapters/logtape/validation-reporter.js +0 -14
package/README.md CHANGED
@@ -21,6 +21,7 @@ The DX CLI is a command-line tool designed to help developers manage and validat
21
21
  - **Repository Validation**: Verify repository setup against DevEx guidelines with the `doctor` command
22
22
  - **Code Migrations**: Apply automated migration scripts (codemods) to update code and configurations
23
23
  - **Project Initialization**: Bootstrap new monorepo projects with standardized structure
24
+ - **Command Specification**: Export a machine-readable schema of the CLI command surface
24
25
  - **Cost Optimization**: Analyze Azure subscriptions to identify unused or underutilized resources
25
26
  - **Project Information**: Display comprehensive information about your project setup and tools
26
27
  - **Developer Experience Optimization**: Ensure consistent development practices across projects
@@ -112,30 +113,31 @@ This command helps you:
112
113
 
113
114
  #### `init`
114
115
 
115
- Bootstrap a new monorepo project with standardized structure and remote repository provisioning.
116
+ Bootstrap a new monorepo project with standardized structure and optional remote repository provisioning.
116
117
 
117
118
  ```bash
118
- dx init project
119
+ dx init
119
120
  ```
120
121
 
121
122
  This command will:
122
123
 
123
- - Check that required tools (e.g., Terraform CLI) are installed
124
- - Interactively prompt for project metadata (cloud provider, region, environments, cost center, etc.)
124
+ - Check that required tools (Terraform CLI and Corepack) are installed
125
+ - Interactively prompt for repository name, GitHub organization, and description
125
126
  - **Check that the target GitHub repository does not already exist before proceeding**
126
127
  - Generate a monorepo structure following PagoPA DevEx guidelines
127
- - Create a remote GitHub repository using Terraform
128
- - Push the initial codebase to the newly created repository
128
+ - Ask whether the scaffolded workspace should be published to GitHub immediately
129
+ - If confirmed, create the remote GitHub repository using Terraform and push the initial codebase
129
130
 
130
131
  If the specified GitHub repository already exists, the command will fail early with a clear error message, preventing accidental overwrites.
131
132
 
132
133
  **Example usage:**
133
134
 
134
135
  ```bash
135
- $ dx init project
136
- ? What is the repository name? my-monorepo
137
- ? What is the GitHub repository owner? pagopa
138
- ? What is the repository description? My new PagoPA monorepo
136
+ $ dx init
137
+ ? Name my-monorepo
138
+ ? GitHub Organization pagopa
139
+ ? Description My new PagoPA monorepo
140
+ ? The project is created on my-monorepo. Would you like to publish it to GitHub at pagopa/my-monorepo now? Yes
139
141
  ...
140
142
 
141
143
  ✔ Terraform CLI is installed!
@@ -145,13 +147,37 @@ $ dx init project
145
147
 
146
148
  Workspace created successfully!
147
149
  - Name: my-monorepo
148
- - Cloud Service Provider: azure
149
- - CSP location: italynorth
150
150
  - GitHub Repository: https://github.com/pagopa/my-monorepo
151
151
  ```
152
152
 
153
153
  > [!NOTE]
154
154
  > The command will fail early if required tools are missing.
155
+ > If you choose not to publish immediately, the CLI prints the manual Terraform and git steps required to finish the setup later.
156
+
157
+ #### `spec`
158
+
159
+ Print the full CLI specification as JSON.
160
+
161
+ ```bash
162
+ dx spec
163
+ ```
164
+
165
+ This command is useful when you want to:
166
+
167
+ - Discover commands, arguments, and options programmatically
168
+ - Build automation or agentic workflows without scraping `--help` output
169
+ - Inspect the current CLI surface in a stable JSON format
170
+
171
+ **Example output:**
172
+
173
+ ```json
174
+ {
175
+ "name": "dx",
176
+ "specVersion": "1",
177
+ "version": "0.23.2",
178
+ "commands": []
179
+ }
180
+ ```
155
181
 
156
182
  #### `info`
157
183
 
@@ -21,3 +21,4 @@ export class AzureSubscriptionRepository {
21
21
  return z.array(cloudAccountSchema).parse(subscriptions);
22
22
  }
23
23
  }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYWNjb3VudC1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2F6dXJlL2Nsb3VkLWFjY291bnQtcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTNCLE9BQU8sRUFFTCxrQkFBa0IsR0FDbkIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsTUFBTSxPQUFPLDJCQUEyQjtJQUN0QyxtQkFBbUIsQ0FBcUI7SUFFeEMsWUFBWSxVQUEyQjtRQUNyQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxLQUFLLEVBQUUsTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQy9FLElBQUksWUFBWSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDckMsYUFBYSxDQUFDLElBQUksQ0FBQztvQkFDakIsZUFBZTtvQkFDZixXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7b0JBQ3JDLEVBQUUsRUFBRSxZQUFZLENBQUMsY0FBYztpQkFDaEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDMUQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb2tlbkNyZWRlbnRpYWwgfSBmcm9tIFwiQGF6dXJlL2lkZW50aXR5XCI7XG5cbmltcG9ydCB7IFN1YnNjcmlwdGlvbkNsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLXJlc291cmNlcy1zdWJzY3JpcHRpb25zXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZC92NFwiO1xuXG5pbXBvcnQge1xuICB0eXBlIENsb3VkQWNjb3VudFJlcG9zaXRvcnksXG4gIGNsb3VkQWNjb3VudFNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9jbG91ZC1hY2NvdW50LmpzXCI7XG5pbXBvcnQgeyBkZWZhdWx0TG9jYXRpb24gfSBmcm9tIFwiLi9sb2NhdGlvbnMuanNcIjtcblxuZXhwb3J0IGNsYXNzIEF6dXJlU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSBpbXBsZW1lbnRzIENsb3VkQWNjb3VudFJlcG9zaXRvcnkge1xuICAjc3Vic2NyaXB0aW9uQ2xpZW50OiBTdWJzY3JpcHRpb25DbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoY3JlZGVudGlhbDogVG9rZW5DcmVkZW50aWFsKSB7XG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uQ2xpZW50ID0gbmV3IFN1YnNjcmlwdGlvbkNsaWVudChjcmVkZW50aWFsKTtcbiAgfVxuXG4gIGFzeW5jIGxpc3QoKSB7XG4gICAgY29uc3Qgc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIGZvciBhd2FpdCAoY29uc3Qgc3Vic2NyaXB0aW9uIG9mIHRoaXMuI3N1YnNjcmlwdGlvbkNsaWVudC5zdWJzY3JpcHRpb25zLmxpc3QoKSkge1xuICAgICAgaWYgKHN1YnNjcmlwdGlvbi5zdGF0ZSA9PT0gXCJFbmFibGVkXCIpIHtcbiAgICAgICAgc3Vic2NyaXB0aW9ucy5wdXNoKHtcbiAgICAgICAgICBkZWZhdWx0TG9jYXRpb24sXG4gICAgICAgICAgZGlzcGxheU5hbWU6IHN1YnNjcmlwdGlvbi5kaXNwbGF5TmFtZSxcbiAgICAgICAgICBpZDogc3Vic2NyaXB0aW9uLnN1YnNjcmlwdGlvbklkLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHouYXJyYXkoY2xvdWRBY2NvdW50U2NoZW1hKS5wYXJzZShzdWJzY3JpcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -507,3 +507,4 @@ export class AzureCloudAccountService {
507
507
  logger.debug("Created secrets in key vault {keyVaultName} in subscription {subscriptionId}", { keyVaultName, subscriptionId: cloudAccountId });
508
508
  }
509
509
  }
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWQtYWNjb3VudC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2F6dXJlL2Nsb3VkLWFjY291bnQtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzRCxPQUFPLEtBQUssTUFBTSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQU0zQixPQUFPLEVBRUwsZ0JBQWdCLEdBQ2pCLE1BQU0sNkJBQTZCLENBQUM7QUFNckMsT0FBTyxFQUVMLHNCQUFzQixHQUN2QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxN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LENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRTthQUNoRCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxzREFBc0QsRUFBRTtZQUNuRSxlQUFlLEVBQUUscUJBQXFCO1lBQ3RDLGNBQWMsRUFBRSxjQUFjO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsRUFDM0IsY0FBYyxFQUNkLFlBQVksRUFDWixvQkFBb0IsR0FLckI7UUFDQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV6QyxNQUFNLFlBQVksR0FBRyxJQUFJLFlBQVksQ0FDbkMsV0FBVyxZQUFZLG1CQUFtQixFQUMxQyxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBRUYsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDO1lBQ2hCLFlBQVksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLFlBQVksQ0FBQyxTQUFTLENBQ3BCLG1DQUFtQyxFQUNuQyxvQkFBb0IsQ0FBQyxjQUFjLENBQ3BDO1lBQ0QsWUFBWSxDQUFDLFNBQVMsQ0FDcEIsdUJBQXVCLEVBQ3ZCLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FDbkM7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsS0FBSyxDQUNWLDhFQUE4RSxFQUM5RSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLENBQ2pELENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRva2VuQ3JlZGVudGlhbCB9IGZyb20gXCJAYXp1cmUvaWRlbnRpdHlcIjtcblxuaW1wb3J0IHsgQXV0aG9yaXphdGlvbk1hbmFnZW1lbnRDbGllbnQgfSBmcm9tIFwiQGF6dXJlL2FybS1hdXRob3JpemF0aW9uXCI7XG5pbXBvcnQgeyBLZXlWYXVsdE1hbmFnZW1lbnRDbGllbnQgfSBmcm9tIFwiQGF6dXJlL2FybS1rZXl2YXVsdFwiO1xuaW1wb3J0IHsgTWFuYWdlZFNlcnZpY2VJZGVudGl0eUNsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLW1zaVwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcmFwaENsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLXJlc291cmNlZ3JhcGhcIjtcbmltcG9ydCB7IFJlc291cmNlTWFuYWdlbWVudENsaWVudCB9IGZyb20gXCJAYXp1cmUvYXJtLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uQ2xpZW50IH0gZnJvbSBcIkBhenVyZS9hcm0tcmVzb3VyY2VzLXN1YnNjcmlwdGlvbnNcIjtcbmltcG9ydCB7IFN0b3JhZ2VNYW5hZ2VtZW50Q2xpZW50IH0gZnJvbSBcIkBhenVyZS9hcm0tc3RvcmFnZVwiO1xuaW1wb3J0IHsgU2VjcmV0Q2xpZW50IH0gZnJvbSBcIkBhenVyZS9rZXl2YXVsdC1zZWNyZXRzXCI7XG5pbXBvcnQgeyBCbG9iU2VydmljZUNsaWVudCB9IGZyb20gXCJAYXp1cmUvc3RvcmFnZS1ibG9iXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSBcIkBtaWNyb3NvZnQvbWljcm9zb2Z0LWdyYXBoLWNsaWVudFwiO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gXCJub2RlOmFzc2VydC9zdHJpY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kL3Y0XCI7XG5cbmltcG9ydCB7XG4gIENsb3VkQWNjb3VudCxcbiAgdHlwZSBDbG91ZEFjY291bnRTZXJ2aWNlLFxufSBmcm9tIFwiLi4vLi4vZG9tYWluL2Nsb3VkLWFjY291bnQuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW52aXJvbm1lbnRJZCxcbiAgZW52aXJvbm1lbnRTaG9ydCxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBHaXRIdWJSZXBvIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9naXRodWItcmVwby5qc1wiO1xuaW1wb3J0IHtcbiAgR2l0SHViQXBwQ3JlZGVudGlhbHMsXG4gIHR5cGUgR2l0SHViU2VydmljZSxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgVGVycmFmb3JtQmFja2VuZCxcbiAgdGVycmFmb3JtQmFja2VuZFNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uL2RvbWFpbi9yZW1vdGUtYmFja2VuZC5qc1wiO1xuaW1wb3J0IHsgaXNBenVyZUxvY2F0aW9uLCBsb2NhdGlvbnMsIGxvY2F0aW9uU2hvcnQgfSBmcm9tIFwiLi9sb2NhdGlvbnMuanNcIjtcblxuLy8gV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGVzZSBwcm9wZXJ0aWVzIGZvciBub3c7XG4vLyB0aGUgYWN0dWFsIHJlc3VsdCBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGZ1bGwgY2xvdWQgcmVzb3VyY2Ugb2JqZWN0XG5leHBvcnQgY29uc3QgcmVzb3VyY2VHcmFwaERhdGFTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGxvY2F0aW9uOiB6LmVudW0obG9jYXRpb25zKSxcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgcmVzb3VyY2VHcm91cDogei5zdHJpbmcoKSxcbn0pO1xuXG5jb25zdCBncmFwaFVzZXJSZXNwb25zZVNjaGVtYSA9IHoub2JqZWN0KHtcbiAgaWQ6IHouc3RyaW5nKCksXG59KTtcblxuY29uc3QgZ3JhcGhHcm91cE1lbWJlcnNoaXBJdGVtU2NoZW1hID0gei5vYmplY3Qoe1xuICBpZDogei5zdHJpbmcoKSxcbn0pO1xuXG5jb25zdCBncmFwaEdyb3VwTWVtYmVyc2hpcFJlc3BvbnNlU2NoZW1hID0gei5vYmplY3Qoe1xuICBcIkBvZGF0YS5uZXh0TGlua1wiOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHZhbHVlOiB6LmFycmF5KGdyYXBoR3JvdXBNZW1iZXJzaGlwSXRlbVNjaGVtYSksXG59KTtcblxuY29uc3QgYnVpbHRJblJvbGVEZWZpbml0aW9uSWRzID0ge1xuICBjb250cmlidXRvcjogXCJiMjQ5ODhhYy02MTgwLTQyYTAtYWI4OC0yMGY3MzgyZGQyNGNcIixcbiAga2V5VmF1bHRTZWNyZXRzT2ZmaWNlcjogXCJiODZhOGZlNC00NGNlLTQ5NDgtYWVlNS1lY2NiMmMxNTVjZDdcIixcbiAgb3duZXI6IFwiOGUzYWY2NTctYThmZi00NDNjLWE3NWMtMmZlOGM0YmNiNjM1XCIsXG4gIHJvbGVCYXNlZEFjY2Vzc0NvbnRyb2xBZG1pbmlzdHJhdG9yOiBcImY1ODMxMGQ5LWE5ZjYtNDM5YS05ZThkLWY2MmU3YjQxYTE2OFwiLFxuICBzdG9yYWdlQmxvYkRhdGFDb250cmlidXRvcjogXCJiYTkyZjViNC0yZDExLTQ1M2QtYTQwMy1lOTZiMDAyOWM5ZmVcIixcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IGJvb3RzdHJhcElkZW50aXR5Um9sZURlZmluaXRpb25JZHMgPSBbXG4gIC8vIFRoZXNlIHJvbGVzIGxldCB0aGUgYm9vdHN0cmFwIGlkZW50aXR5IHJ1biB0aGUgYm9vdHN0cmFwcGVyIG1vZHVsZSBmcm9tIEdpdEh1YiBBY3Rpb25zIHdpdGhvdXQgZXh0cmEgbWFudWFsIGdyYW50cy5cbiAgYnVpbHRJblJvbGVEZWZpbml0aW9uSWRzLnJvbGVCYXNlZEFjY2Vzc0NvbnRyb2xBZG1pbmlzdHJhdG9yLFxuICBidWlsdEluUm9sZURlZmluaXRpb25JZHMuY29udHJpYnV0b3IsXG4gIGJ1aWx0SW5Sb2xlRGVmaW5pdGlvbklkcy5zdG9yYWdlQmxvYkRhdGFDb250cmlidXRvcixcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjbGFzcyBBenVyZUNsb3VkQWNjb3VudFNlcnZpY2UgaW1wbGVtZW50cyBDbG91ZEFjY291bnRTZXJ2aWNlIHtcbiAgI2NyZWRlbnRpYWw6IFRva2VuQ3JlZGVudGlhbDtcbiAgI3JlcXVpcmVkUmVzb3VyY2VQcm92aWRlcnMgPSBbXG4gICAgXCJNaWNyb3NvZnQuQWR2aXNvclwiLFxuICAgIFwiTWljcm9zb2Z0LkFsZXJ0c01hbmFnZW1lbnRcIixcbiAgICBcIk1pY3Jvc29mdC5BcGlNYW5hZ2VtZW50XCIsXG4gICAgXCJNaWNyb3NvZnQuQXBwXCIsXG4gICAgXCJNaWNyb3NvZnQuQXV0aG9yaXphdGlvblwiLFxuICAgIFwiTWljcm9zb2Z0LkF6dXJlVGVycmFmb3JtXCIsXG4gICAgXCJNaWNyb3NvZnQuQ2FjaGVcIixcbiAgICBcIk1pY3Jvc29mdC5DZG5cIixcbiAgICBcIk1pY3Jvc29mdC5Db250YWluZXJJbnN0YW5jZVwiLFxuICAgIFwiTWljcm9zb2Z0LkNvc3RNYW5hZ2VtZW50XCIsXG4gICAgXCJNaWNyb3NvZnQuREJmb3JQb3N0Z3JlU1FMXCIsXG4gICAgXCJNaWNyb3NvZnQuS2V5VmF1bHRcIixcbiAgICBcIk1pY3Jvc29mdC5TZXJ2aWNlQnVzXCIsXG4gICAgXCJNaWNyb3NvZnQuU3FsXCIsXG4gICAgXCJNaWNyb3NvZnQuU3RvcmFnZVwiLFxuICAgIFwiTWljcm9zb2Z0LldlYlwiLFxuICBdIGFzIGNvbnN0O1xuICAjcmVzb3VyY2VHcmFwaENsaWVudDogUmVzb3VyY2VHcmFwaENsaWVudDtcblxuICBjb25zdHJ1Y3RvcihjcmVkZW50aWFsOiBUb2tlbkNyZWRlbnRpYWwpIHtcbiAgICB0aGlzLiNyZXNvdXJjZUdyYXBoQ2xpZW50ID0gbmV3IFJlc291cmNlR3JhcGhDbGllbnQoY3JlZGVudGlhbCk7XG4gICAgdGhpcy4jY3JlZGVudGlhbCA9IGNyZWRlbnRpYWw7XG4gIH1cblxuICBhc3luYyBnZXRUZXJyYWZvcm1CYWNrZW5kKFxuICAgIGNsb3VkQWNjb3VudElkOiBDbG91ZEFjY291bnRbXCJpZFwiXSxcbiAgICB7IG5hbWUsIHByZWZpeCB9OiBFbnZpcm9ubWVudElkLFxuICApOiBQcm9taXNlPFRlcnJhZm9ybUJhY2tlbmQgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBhbGxMb2NhdGlvbnMgPSBPYmplY3QudmFsdWVzKGxvY2F0aW9uU2hvcnQpLmpvaW4oXCJ8XCIpO1xuICAgIGNvbnN0IHNob3J0RW52ID0gZW52aXJvbm1lbnRTaG9ydFtuYW1lXTtcbiAgICAvLyBDaGVjayBpZiBhIHN0b3JhZ2UgYWNjb3VudCB3aXRoIHRoZSBleHBlY3RlZCBuYW1lIGV4aXN0c1xuICAgIC8vICRwcmVmaXggKyBlbnZpcm9ubWVudCBzaG9ydCArIGxvY2F0aW9uICsgXCJ0ZnN0YXRlc3RcIiArIHN1ZmZpeCAoZS5nLiwgXCJkeHBpdG50ZnN0YXRlc3QwMVwiKVxuICAgIC8vIGl0IGNhbiByZXR1cm4gbXVsdGlwbGUgcmVzdWx0cyAoZS5nLiBmb3IgZGlmZmVyZW50IGxvY2F0aW9uIG9yIGluc3RhbmNlIG51bWJlcilcbiAgICBjb25zdCByZXNvdXJjZU5hbWUgPSBgJHtwcmVmaXh9JHtzaG9ydEVudn0oJHthbGxMb2NhdGlvbnN9KXRmc3RhdGVzdCgwWzEtOV18WzEtOV1cXFxcZClgO1xuICAgIGNvbnN0IHF1ZXJ5ID0gYHJlc291cmNlc1xuICAgICAgICAgICAgIHwgd2hlcmUgdHlwZSA9PSAnbWljcm9zb2Z0LnN0b3JhZ2Uvc3RvcmFnZWFjY291bnRzJ1xuICAgICAgICAgICAgIHwgd2hlcmUgbmFtZSBtYXRjaGVzIHJlZ2V4IEAnJHtyZXNvdXJjZU5hbWV9J1xuICAgICAgICAgICAgYDtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLiNyZXNvdXJjZUdyYXBoQ2xpZW50LnJlc291cmNlcyh7XG4gICAgICBxdWVyeSxcbiAgICAgIHN1YnNjcmlwdGlvbnM6IFtjbG91ZEFjY291bnRJZF0sXG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC50b3RhbFJlY29yZHMgPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IHN0b3JhZ2VBY2NvdW50cyA9IHouYXJyYXkocmVzb3VyY2VHcmFwaERhdGFTY2hlbWEpLnBhcnNlKHJlc3VsdC5kYXRhKTtcbiAgICAvLyBvbiBtdWx0aXBsZSByZXN1bHRzLCByYW5rIHN0b3JhZ2UgYWNjb3VudHMgYnkgbG9jYXRpb24gcHJpb3JpdHkgYW5kIGluc3RhbmNlIG51bWJlclxuICAgIGlmIChzdG9yYWdlQWNjb3VudHMubGVuZ3RoID4gMCkge1xuICAgICAgc3RvcmFnZUFjY291bnRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgLy8gY29tcGFyZSBsb2NhdGlvbnMgcHJpb3JpdHlcbiAgICAgICAgY29uc3QgbG9jYXRpb25Db21wYXJpc29uID1cbiAgICAgICAgICBsb2NhdGlvbnMuaW5kZXhPZihhLmxvY2F0aW9uKSAtIGxvY2F0aW9ucy5pbmRleE9mKGIubG9jYXRpb24pO1xuICAgICAgICBpZiAobG9jYXRpb25Db21wYXJpc29uID09PSAwKSB7XG4gICAgICAgICAgLy8gc2FtZSBsb2NhdGlvbiwgY29tcGFyZSBieSBuYW1lICh0byBnZXQgdGhlIGhpZ2hlc3QgaW5zdGFuY2UgbnVtYmVyKVxuICAgICAgICAgIHJldHVybiBiLm5hbWUubG9jYWxlQ29tcGFyZShhLm5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhdGlvbkNvbXBhcmlzb247XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRlcnJhZm9ybUJhY2tlbmRTY2hlbWEucGFyc2Uoe1xuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHN0b3JhZ2VBY2NvdW50c1swXS5yZXNvdXJjZUdyb3VwLFxuICAgICAgc3RvcmFnZUFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudHNbMF0ubmFtZSxcbiAgICAgIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnRJZCxcbiAgICAgIHR5cGU6IFwiYXp1cmVybVwiLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgaGFzVXNlclBlcm1pc3Npb25Ub0luaXRpYWxpemUoXG4gICAgY2xvdWRBY2NvdW50SWQ6IENsb3VkQWNjb3VudFtcImlkXCJdLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgLy8gQWxsIHByaW5jaXBhbCBJRHMgdG8gY2hlY2sgKHVzZXIgKyBhbGwgZ3JvdXBzKVxuICAgICAgY29uc3QgYWxsUHJpbmNpcGFsSWRzID0gYXdhaXQgdGhpcy4jZ2V0Q3VycmVudFByaW5jaXBhbElkcygpO1xuXG4gICAgICAvLyBHZXQgcm9sZSBhc3NpZ25tZW50cyBmb3IgdGhlIHN1YnNjcmlwdGlvblxuICAgICAgY29uc3QgYXV0aENsaWVudCA9IG5ldyBBdXRob3JpemF0aW9uTWFuYWdlbWVudENsaWVudChcbiAgICAgICAgdGhpcy4jY3JlZGVudGlhbCxcbiAgICAgICAgY2xvdWRBY2NvdW50SWQsXG4gICAgICApO1xuXG4gICAgICBjb25zdCByZXF1aXJlZFJvbGVzID0gW1xuICAgICAgICBidWlsdEluUm9sZURlZmluaXRpb25JZHMub3duZXIsIC8vIE93bmVyXG4gICAgICAgIGJ1aWx0SW5Sb2xlRGVmaW5pdGlvbklkcy5zdG9yYWdlQmxvYkRhdGFDb250cmlidXRvciwgLy8gU3RvcmFnZSBCbG9iIERhdGEgQ29udHJpYnV0b3JcbiAgICAgICAgYnVpbHRJblJvbGVEZWZpbml0aW9uSWRzLmtleVZhdWx0U2VjcmV0c09mZmljZXIsIC8vIEtleSBWYXVsdCBTZWNyZXRzIE9mZmljZXJcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IHNjb3BlID0gYC9zdWJzY3JpcHRpb25zLyR7Y2xvdWRBY2NvdW50SWR9YDtcblxuICAgICAgLy8gQ29sbGVjdCBhbGwgcm9sZSBkZWZpbml0aW9uIElEcyBhc3NpZ25lZCB0byB0aGUgdXNlciBvciB0aGVpciBncm91cHNcbiAgICAgIGNvbnN0IGFzc2lnbmVkUm9sZURlZmluaXRpb25JZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgICAgZm9yIGF3YWl0IChjb25zdCBhc3NpZ25tZW50IG9mIGF1dGhDbGllbnQucm9sZUFzc2lnbm1lbnRzLmxpc3RGb3JTY29wZShcbiAgICAgICAgc2NvcGUsXG4gICAgICApKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHRoaXMgYXNzaWdubWVudCBpcyBmb3IgdGhlIHVzZXIgb3IgYW55IG9mIHRoZWlyIGdyb3Vwc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYXNzaWdubWVudC5wcmluY2lwYWxJZCAmJlxuICAgICAgICAgIGFsbFByaW5jaXBhbElkcy5oYXMoYXNzaWdubWVudC5wcmluY2lwYWxJZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gRXh0cmFjdCByb2xlIGRlZmluaXRpb24gSUQgZnJvbSB0aGUgZnVsbCByZXNvdXJjZSBJRFxuICAgICAgICAgIC8vIEZvcm1hdDogL3N1YnNjcmlwdGlvbnMve3N1Yn0vcHJvdmlkZXJzL01pY3Jvc29mdC5BdXRob3JpemF0aW9uL3JvbGVEZWZpbml0aW9ucy97cm9sZUlkfVxuICAgICAgICAgIGNvbnN0IHJvbGVEZWZJZCA9IGFzc2lnbm1lbnQucm9sZURlZmluaXRpb25JZD8uc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgICAgICAgIGlmIChyb2xlRGVmSWQpIHtcbiAgICAgICAgICAgIGFzc2lnbmVkUm9sZURlZmluaXRpb25JZHMuYWRkKHJvbGVEZWZJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2hvcnQtY2lyY3VpdDogc3RvcCBpZiBhbGwgcmVxdWlyZWQgcm9sZXMgaGF2ZSBiZWVuIGZvdW5kXG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXF1aXJlZFJvbGVzLmV2ZXJ5KChyZXF1aXJlZFJvbGUpID0+XG4gICAgICAgICAgICBhc3NpZ25lZFJvbGVEZWZpbml0aW9uSWRzLmhhcyhyZXF1aXJlZFJvbGUpLFxuICAgICAgICAgIClcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgYWxsIHJlcXVpcmVkIHJvbGVzIGFyZSBwcmVzZW50XG4gICAgICBjb25zdCBoYXNBbGxSb2xlcyA9IHJlcXVpcmVkUm9sZXMuZXZlcnkoKHJlcXVpcmVkUm9sZSkgPT5cbiAgICAgICAgYXNzaWduZWRSb2xlRGVmaW5pdGlvbklkcy5oYXMocmVxdWlyZWRSb2xlKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBoYXNBbGxSb2xlcztcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gSGFuZGxlIGF1dGhvcml6YXRpb24gZXJyb3JzICg0MDMgRm9yYmlkZGVuKSAtIHVzZXIgbGFja3MgcGVybWlzc2lvbnNcbiAgICAgIGlmIChcbiAgICAgICAgZXJyb3IgJiZcbiAgICAgICAgdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIFwic3RhdHVzQ29kZVwiIGluIGVycm9yICYmXG4gICAgICAgIGVycm9yLnN0YXR1c0NvZGUgPT09IDQwM1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIC8vIFJlLXRocm93IG90aGVyIGVycm9yc1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5pdGlhbGl6ZShcbiAgICBjbG91ZEFjY291bnQ6IENsb3VkQWNjb3VudCxcbiAgICB7IG5hbWUsIHByZWZpeCB9OiBFbnZpcm9ubWVudElkLFxuICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzOiBHaXRIdWJBcHBDcmVkZW50aWFscyxcbiAgICBnaXRodWI6IEdpdEh1YlJlcG8sXG4gICAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgICB0YWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge30sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGFzc2VydC5lcXVhbChjbG91ZEFjY291bnQuY3NwLCBcImF6dXJlXCIsIFwiQ2xvdWQgYWNjb3VudCBtdXN0IGJlIEF6dXJlXCIpO1xuICAgIGFzc2VydC5vayhcbiAgICAgIGlzQXp1cmVMb2NhdGlvbihjbG91ZEFjY291bnQuZGVmYXVsdExvY2F0aW9uKSxcbiAgICAgIFwiVGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGNsb3VkIGFjY291bnQgaXMgbm90IGEgdmFsaWQgQXp1cmUgbG9jYXRpb25cIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImdlblwiLCBcImVudlwiXSk7XG5cbiAgICAvLyBSZWdpc3RlciByZXF1aXJlZCByZXNvdXJjZSBwcm92aWRlcnMgYmVmb3JlIGNyZWF0aW5nIGFueSByZXNvdXJjZXNcbiAgICBhd2FpdCB0aGlzLiNyZWdpc3RlclByb3ZpZGVycyhjbG91ZEFjY291bnQuaWQpO1xuXG4gICAgY29uc3QgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50ID0gbmV3IFJlc291cmNlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHNob3J0ID0ge1xuICAgICAgZW52OiBlbnZpcm9ubWVudFNob3J0W25hbWVdLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uU2hvcnRbY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbl0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc291cmNlR3JvdXBOYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0LmVudn0tJHtzaG9ydC5sb2NhdGlvbn0tY29tbW9uLXJnLTAxYDtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICBsb2NhdGlvbjogY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgQ3JlYXRlZEJ5OiBcIkRYIENMSVwiLFxuICAgICAgICBFbnZpcm9ubWVudDogbmFtZSxcbiAgICAgICAgLi4udGFncyxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGF3YWl0IHJlc291cmNlTWFuYWdlbWVudENsaWVudC5yZXNvdXJjZUdyb3Vwcy5jcmVhdGVPclVwZGF0ZShcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICApO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgXCJDcmVhdGVkIHJlc291cmNlIGdyb3VwIHtyZXNvdXJjZUdyb3VwTmFtZX0gaW4gc3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH1cIixcbiAgICAgIHsgcmVzb3VyY2VHcm91cE5hbWUsIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnQuaWQgfSxcbiAgICApO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGlkZW50aXR5TmFtZSA9IGAke3ByZWZpeH0tJHtzaG9ydC5lbnZ9LSR7c2hvcnQubG9jYXRpb259LWJvb3RzdHJhcC1pZC0wMWA7XG5cbiAgICAgIGNvbnN0IG1zaUNsaWVudCA9IG5ldyBNYW5hZ2VkU2VydmljZUlkZW50aXR5Q2xpZW50KFxuICAgICAgICB0aGlzLiNjcmVkZW50aWFsLFxuICAgICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBpZGVudGl0eSA9IGF3YWl0IG1zaUNsaWVudC51c2VyQXNzaWduZWRJZGVudGl0aWVzLmNyZWF0ZU9yVXBkYXRlKFxuICAgICAgICByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgICAgaWRlbnRpdHlOYW1lLFxuICAgICAgICBwYXJhbWV0ZXJzLFxuICAgICAgKTtcblxuICAgICAgYXNzZXJ0Lm9rKFxuICAgICAgICBpZGVudGl0eS5wcmluY2lwYWxJZCxcbiAgICAgICAgXCJNYW5hZ2VkIGlkZW50aXR5IHByaW5jaXBhbCBJRCBpcyB1bmRlZmluZWRcIixcbiAgICAgICk7XG4gICAgICBjb25zdCBpZGVudGl0eVByaW5jaXBhbElkID0gaWRlbnRpdHkucHJpbmNpcGFsSWQ7XG4gICAgICBhc3NlcnQub2soaWRlbnRpdHkuY2xpZW50SWQsIFwiTWFuYWdlZCBpZGVudGl0eSBjbGllbnQgSUQgaXMgdW5kZWZpbmVkXCIpO1xuICAgICAgY29uc3QgaWRlbnRpdHlDbGllbnRJZCA9IGlkZW50aXR5LmNsaWVudElkO1xuXG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgIFwiQ3JlYXRlZCBpZGVudGl0eSB7aWRlbnRpdHlOYW1lfSBpbiBzdWJzY3JpcHRpb24ge3N1YnNjcmlwdGlvbklkfVwiLFxuICAgICAgICB7IGlkZW50aXR5TmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICAgKTtcblxuICAgICAgY29uc3QgYXV0aG9yaXphdGlvbk1hbmFnZW1lbnRDbGllbnQgPSBuZXcgQXV0aG9yaXphdGlvbk1hbmFnZW1lbnRDbGllbnQoXG4gICAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICAgIGNsb3VkQWNjb3VudC5pZCxcbiAgICAgICk7XG4gICAgICBjb25zdCBzdWJzY3JpcHRpb25DbGllbnQgPSBuZXcgU3Vic2NyaXB0aW9uQ2xpZW50KHRoaXMuI2NyZWRlbnRpYWwpO1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uID0gYXdhaXQgc3Vic2NyaXB0aW9uQ2xpZW50LnN1YnNjcmlwdGlvbnMuZ2V0KFxuICAgICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgICApO1xuICAgICAgYXNzZXJ0Lm9rKHN1YnNjcmlwdGlvbi50ZW5hbnRJZCwgXCJTdWJzY3JpcHRpb24gdGVuYW50IElEIGlzIHVuZGVmaW5lZFwiKTtcbiAgICAgIGNvbnN0IHRlbmFudElkID0gc3Vic2NyaXB0aW9uLnRlbmFudElkO1xuICAgICAgY29uc3Qgc3Vic2NyaXB0aW9uU2NvcGUgPSBgL3N1YnNjcmlwdGlvbnMvJHtjbG91ZEFjY291bnQuaWR9YDtcblxuICAgICAgLy8gR3JhbnQgdGhlIGJvb3RzdHJhcCBpZGVudGl0eSB0aGUgQXp1cmUgcGVybWlzc2lvbnMgaXQgbmVlZHMgdG8gb3BlcmF0ZSBhdXRvbm9tb3VzbHkgaW4gdGhlIGJvb3RzdHJhcCB3b3JrZmxvdy5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBib290c3RyYXBJZGVudGl0eVJvbGVEZWZpbml0aW9uSWRzLm1hcCgocm9sZURlZmluaXRpb25JZCkgPT5cbiAgICAgICAgICBhdXRob3JpemF0aW9uTWFuYWdlbWVudENsaWVudC5yb2xlQXNzaWdubWVudHMuY3JlYXRlKFxuICAgICAgICAgICAgc3Vic2NyaXB0aW9uU2NvcGUsXG4gICAgICAgICAgICB0aGlzLiNjcmVhdGVSb2xlQXNzaWdubWVudE5hbWUoXG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvblNjb3BlLFxuICAgICAgICAgICAgICBpZGVudGl0eVByaW5jaXBhbElkLFxuICAgICAgICAgICAgICByb2xlRGVmaW5pdGlvbklkLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJpbmNpcGFsSWQ6IGlkZW50aXR5UHJpbmNpcGFsSWQsXG4gICAgICAgICAgICAgIHByaW5jaXBhbFR5cGU6IFwiU2VydmljZVByaW5jaXBhbFwiLFxuICAgICAgICAgICAgICByb2xlRGVmaW5pdGlvbklkOiB0aGlzLiNjcmVhdGVSb2xlRGVmaW5pdGlvblJlc291cmNlSWQoXG4gICAgICAgICAgICAgICAgY2xvdWRBY2NvdW50LmlkLFxuICAgICAgICAgICAgICAgIHJvbGVEZWZpbml0aW9uSWQsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICBsb2dnZXIuZGVidWcoXG4gICAgICAgIFwiQXNzaWduZWQgYm9vdHN0cmFwIHJvbGVzIHRvIGlkZW50aXR5IHtpZGVudGl0eU5hbWV9IGluIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICAgIHsgaWRlbnRpdHlOYW1lLCBzdWJzY3JpcHRpb25JZDogY2xvdWRBY2NvdW50LmlkIH0sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBnaXRodWJFbnZpcm9ubWVudE5hbWUgPSBgYm9vdHN0cmFwcGVyLSR7bmFtZX0tY2RgO1xuICAgICAgY29uc3QgZmVkZXJhdGVkQ3JlZGVudGlhbE5hbWUgPSB0aGlzLiNjcmVhdGVGZWRlcmF0ZWRDcmVkZW50aWFsTmFtZSh7XG4gICAgICAgIGdpdGh1YixcbiAgICAgICAgZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluY2x1ZGUgYSByZXBvc2l0b3J5LWRlcml2ZWQgc3VmZml4IHNvIGRpZmZlcmVudCByZXBvc2l0b3JpZXMgY2FuIHNoYXJlXG4gICAgICAvLyB0aGUgc2FtZSBib290c3RyYXAgaWRlbnRpdHkgd2l0aG91dCBvdmVyd3JpdGluZyBlYWNoIG90aGVyJ3MgT0lEQyB0cnVzdC5cbiAgICAgIGF3YWl0IG1zaUNsaWVudC5mZWRlcmF0ZWRJZGVudGl0eUNyZWRlbnRpYWxzLmNyZWF0ZU9yVXBkYXRlKFxuICAgICAgICByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgICAgaWRlbnRpdHlOYW1lLFxuICAgICAgICBmZWRlcmF0ZWRDcmVkZW50aWFsTmFtZSxcbiAgICAgICAge1xuICAgICAgICAgIGF1ZGllbmNlczogW1wiYXBpOi8vQXp1cmVBRFRva2VuRXhjaGFuZ2VcIl0sXG4gICAgICAgICAgaXNzdWVyOiBcImh0dHBzOi8vdG9rZW4uYWN0aW9ucy5naXRodWJ1c2VyY29udGVudC5jb21cIixcbiAgICAgICAgICBzdWJqZWN0OiBgcmVwbzoke2dpdGh1Yi5vd25lcn0vJHtnaXRodWIucmVwb306ZW52aXJvbm1lbnQ6JHtnaXRodWJFbnZpcm9ubWVudE5hbWV9YCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgXCJDb25maWd1cmVkIGZlZGVyYXRlZCBpZGVudGl0eSBjcmVkZW50aWFsIHtjcmVkZW50aWFsTmFtZX0gZm9yIGlkZW50aXR5IHtpZGVudGl0eU5hbWV9IGluIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBjcmVkZW50aWFsTmFtZTogZmVkZXJhdGVkQ3JlZGVudGlhbE5hbWUsXG4gICAgICAgICAgaWRlbnRpdHlOYW1lLFxuICAgICAgICAgIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnQuaWQsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBhd2FpdCB0aGlzLiNzdG9yZUJvb3RzdHJhcHBlckVudmlyb25tZW50U2VjcmV0cyh7XG4gICAgICAgIGNsb3VkQWNjb3VudElkOiBjbG91ZEFjY291bnQuaWQsXG4gICAgICAgIGdpdGh1YixcbiAgICAgICAgZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgICBnaXRIdWJTZXJ2aWNlLFxuICAgICAgICBpZGVudGl0eUNsaWVudElkLFxuICAgICAgICBydW5uZXJBcHBDcmVkZW50aWFscyxcbiAgICAgICAgdGVuYW50SWQsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qga2V5VmF1bHROYW1lID0gYXdhaXQgdGhpcy4jY3JlYXRlQ29tbW9uS2V5VmF1bHQoe1xuICAgICAgICBjbG91ZEFjY291bnQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHByZWZpeCxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgICAgIHNob3J0RW52OiBzaG9ydC5lbnYsXG4gICAgICAgIHNob3J0TG9jYXRpb246IHNob3J0LmxvY2F0aW9uLFxuICAgICAgICB0YWdzLFxuICAgICAgICB0ZW5hbnRJZCxcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB0aGlzLiNzdG9yZVJ1bm5lckFwcFNlY3JldHMoe1xuICAgICAgICBjbG91ZEFjY291bnRJZDogY2xvdWRBY2NvdW50LmlkLFxuICAgICAgICBrZXlWYXVsdE5hbWUsXG4gICAgICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoY2F1c2UpIHtcbiAgICAgIC8vIENsZWFudXAgcmVzb3VyY2UgZ3JvdXAgaWYgaW5pdGlhbGl6YXRpb24gZmFpbHNcbiAgICAgIGF3YWl0IHJlc291cmNlTWFuYWdlbWVudENsaWVudC5yZXNvdXJjZUdyb3Vwcy5iZWdpbkRlbGV0ZUFuZFdhaXQoXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgXCJEZWxldGVkIHJlc291cmNlIGdyb3VwIHtyZXNvdXJjZUdyb3VwTmFtZX0gaW4gc3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH0gZHVlIHRvIGluaXRpYWxpemF0aW9uIGZhaWx1cmVcIixcbiAgICAgICAgeyByZXNvdXJjZUdyb3VwTmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICAgKTtcbiAgICAgIGlmIChjYXVzZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihjYXVzZS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2xvdWQgYWNjb3VudGAsIHtcbiAgICAgICAgY2F1c2UsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc0luaXRpYWxpemVkKFxuICAgIGNsb3VkQWNjb3VudElkOiBDbG91ZEFjY291bnRbXCJpZFwiXSxcbiAgICB7IG5hbWUsIHByZWZpeCB9OiBFbnZpcm9ubWVudElkLFxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBhbGxMb2NhdGlvbnMgPSBPYmplY3QudmFsdWVzKGxvY2F0aW9uU2hvcnQpLmpvaW4oXCJ8XCIpO1xuICAgIGNvbnN0IHNob3J0RW52ID0gZW52aXJvbm1lbnRTaG9ydFtuYW1lXTtcblxuICAgIGNvbnN0IGlkZW50aXR5UmVzb3VyY2VOYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0RW52fS0oJHthbGxMb2NhdGlvbnN9KS1ib290c3RyYXAtaWQtKDBbMS05XXxbMS05XVxcXFxkKWA7XG4gICAgY29uc3QgaWRlbnRpdHlRdWVyeSA9IGByZXNvdXJjZXNcbiAgICAgICAgICAgICB8IHdoZXJlIHR5cGUgPT0gJ21pY3Jvc29mdC5tYW5hZ2VkaWRlbnRpdHkvdXNlcmFzc2lnbmVkaWRlbnRpdGllcydcbiAgICAgICAgICAgICB8IHdoZXJlIG5hbWUgbWF0Y2hlcyByZWdleCBAJyR7aWRlbnRpdHlSZXNvdXJjZU5hbWV9J1xuICAgICAgICAgICAgYDtcblxuICAgIGNvbnN0IGtleVZhdWx0UmVzb3VyY2VOYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0RW52fS0oJHthbGxMb2NhdGlvbnN9KS1jb21tb24ta3YtKDBbMS05XXxbMS05XVxcXFxkKWA7XG4gICAgY29uc3Qga2V5VmF1bHRRdWVyeSA9IGByZXNvdXJjZXNcbiAgICAgICAgICAgICB8IHdoZXJlIHR5cGUgPT0gJ21pY3Jvc29mdC5rZXl2YXVsdC92YXVsdHMnXG4gICAgICAgICAgICAgfCB3aGVyZSBuYW1lIG1hdGNoZXMgcmVnZXggQCcke2tleVZhdWx0UmVzb3VyY2VOYW1lfSdcbiAgICAgICAgICAgIGA7XG5cbiAgICBjb25zdCBbaWRlbnRpdHlSZXN1bHQsIGtleVZhdWx0UmVzdWx0LCBhcmVQcm92aWRlcnNSZWdpc3RlcmVkXSA9XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICAgIHRoaXMuI3Jlc291cmNlR3JhcGhDbGllbnQucmVzb3VyY2VzKHtcbiAgICAgICAgICBxdWVyeTogaWRlbnRpdHlRdWVyeSxcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbY2xvdWRBY2NvdW50SWRdLFxuICAgICAgICB9KSxcbiAgICAgICAgdGhpcy4jcmVzb3VyY2VHcmFwaENsaWVudC5yZXNvdXJjZXMoe1xuICAgICAgICAgIHF1ZXJ5OiBrZXlWYXVsdFF1ZXJ5LFxuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtjbG91ZEFjY291bnRJZF0sXG4gICAgICAgIH0pLFxuICAgICAgICB0aGlzLiNhcmVQcm92aWRlcnNSZWdpc3RlcmVkKGNsb3VkQWNjb3VudElkKSxcbiAgICAgIF0pO1xuXG4gICAgY29uc3QgaW5pdGlhbGl6ZWQgPVxuICAgICAgaWRlbnRpdHlSZXN1bHQudG90YWxSZWNvcmRzID4gMCAmJlxuICAgICAga2V5VmF1bHRSZXN1bHQudG90YWxSZWNvcmRzID4gMCAmJlxuICAgICAgYXJlUHJvdmlkZXJzUmVnaXN0ZXJlZDtcblxuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgbG9nZ2VyLmRlYnVnKFwic3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH0gaW5pdGlhbGl6ZWQ6IHtpbml0aWFsaXplZH1cIiwge1xuICAgICAgaW5pdGlhbGl6ZWQsXG4gICAgICBzdWJzY3JpcHRpb25JZDogY2xvdWRBY2NvdW50SWQsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gaW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBhc3luYyBwcm92aXNpb25UZXJyYWZvcm1CYWNrZW5kKFxuICAgIGNsb3VkQWNjb3VudDogQ2xvdWRBY2NvdW50LFxuICAgIHsgbmFtZSwgcHJlZml4IH06IEVudmlyb25tZW50SWQsXG4gICAgdGFnczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9LFxuICApOiBQcm9taXNlPFRlcnJhZm9ybUJhY2tlbmQ+IHtcbiAgICBhc3NlcnQuZXF1YWwoY2xvdWRBY2NvdW50LmNzcCwgXCJhenVyZVwiLCBcIkNsb3VkIGFjY291bnQgbXVzdCBiZSBBenVyZVwiKTtcbiAgICBhc3NlcnQub2soXG4gICAgICBpc0F6dXJlTG9jYXRpb24oY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbiksXG4gICAgICBcIlRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBjbG91ZCBhY2NvdW50IGlzIG5vdCBhIHZhbGlkIEF6dXJlIGxvY2F0aW9uXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgY29uc3QgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50ID0gbmV3IFJlc291cmNlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHNob3J0ID0ge1xuICAgICAgZW52OiBlbnZpcm9ubWVudFNob3J0W25hbWVdLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uU2hvcnRbY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbl0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBhcmFtZXRlcnMgPSB7XG4gICAgICBsb2NhdGlvbjogY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgRW52aXJvbm1lbnQ6IG5hbWUsXG4gICAgICAgIC4uLnRhZ3MsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCByZXNvdXJjZUdyb3VwTmFtZSA9IGAke3ByZWZpeH0tJHtzaG9ydC5lbnZ9LSR7c2hvcnQubG9jYXRpb259LXRmc3RhdGUtcmctMDFgO1xuXG4gICAgYXdhaXQgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50LnJlc291cmNlR3JvdXBzLmNyZWF0ZU9yVXBkYXRlKFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgICBwYXJhbWV0ZXJzLFxuICAgICk7XG5cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBcIkNyZWF0ZWQgcmVzb3VyY2UgZ3JvdXAge3Jlc291cmNlR3JvdXBOYW1lfSBpbiBzdWJzY3JpcHRpb24ge3N1YnNjcmlwdGlvbklkfVwiLFxuICAgICAgeyByZXNvdXJjZUdyb3VwTmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICk7XG5cbiAgICBjb25zdCBzdG9yYWdlTWFuYWdlbWVudENsaWVudCA9IG5ldyBTdG9yYWdlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBjbG91ZEFjY291bnQuaWQsXG4gICAgKTtcblxuICAgIGNvbnN0IHN0b3JhZ2VBY2NvdW50ID1cbiAgICAgIGF3YWl0IHN0b3JhZ2VNYW5hZ2VtZW50Q2xpZW50LnN0b3JhZ2VBY2NvdW50cy5iZWdpbkNyZWF0ZUFuZFdhaXQoXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgICBgJHtwcmVmaXh9JHtzaG9ydC5lbnZ9JHtzaG9ydC5sb2NhdGlvbn10ZnN0YXRlc3QwMWAsXG4gICAgICAgIHtcbiAgICAgICAgICBraW5kOiBcIlN0b3JhZ2VWMlwiLFxuICAgICAgICAgIHNrdToge1xuICAgICAgICAgICAgbmFtZTogXCJTdGFuZGFyZF9MUlNcIixcbiAgICAgICAgICAgIHRpZXI6IFwiU3RhbmRhcmRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIC4uLnBhcmFtZXRlcnMsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgYXNzZXJ0Lm9rKFxuICAgICAgc3RvcmFnZUFjY291bnQucHJpbWFyeUVuZHBvaW50cz8uYmxvYixcbiAgICAgIFwiU3RvcmFnZSBhY2NvdW50IGJsb2IgZW5kcG9pbnQgaXMgdW5kZWZpbmVkXCIsXG4gICAgKTtcblxuICAgIGFzc2VydC5vayhzdG9yYWdlQWNjb3VudC5uYW1lLCBcIlN0b3JhZ2UgYWNjb3VudCBuYW1lIGlzIHVuZGVmaW5lZFwiKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIFwiQ3JlYXRlZCBzdG9yYWdlIGFjY291bnQge3N0b3JhZ2VBY2NvdW50TmFtZX0gaW4gc3Vic2NyaXB0aW9uIHtzdWJzY3JpcHRpb25JZH1cIixcbiAgICAgIHtcbiAgICAgICAgc3RvcmFnZUFjY291bnROYW1lOiBzdG9yYWdlQWNjb3VudC5uYW1lLFxuICAgICAgICBzdWJzY3JpcHRpb25JZDogY2xvdWRBY2NvdW50LmlkLFxuICAgICAgfSxcbiAgICApO1xuICAgIGNvbnN0IGJsb2JTZXJ2aWNlQ2xpZW50ID0gbmV3IEJsb2JTZXJ2aWNlQ2xpZW50KFxuICAgICAgc3RvcmFnZUFjY291bnQucHJpbWFyeUVuZHBvaW50cz8uYmxvYixcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lckNsaWVudCA9XG4gICAgICBibG9iU2VydmljZUNsaWVudC5nZXRDb250YWluZXJDbGllbnQoXCJ0ZXJyYWZvcm0tc3RhdGVcIik7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29udGFpbmVyQ2xpZW50LmNyZWF0ZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIENsZWFudXAgcmVzb3VyY2UgZ3JvdXAgaWYgYmxvYiBjb250YWluZXIgY3JlYXRpb24gZmFpbHNcbiAgICAgIC8vIHJlc291cmNlIGdyb3VwIGRlbGV0aW9uIGFsc28gZGVsZXRlcyBhbGwgY29udGFpbmVkIHJlc291cmNlc1xuICAgICAgYXdhaXQgcmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50LnJlc291cmNlR3JvdXBzLmJlZ2luRGVsZXRlQW5kV2FpdChcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBkdXJpbmcgdGhlIGNyZWF0aW9uIG9mIHRoZSBibG9iIGNvbnRhaW5lcmAsIHtcbiAgICAgICAgY2F1c2U6IGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVycmFmb3JtQmFja2VuZFNjaGVtYS5wYXJzZSh7XG4gICAgICByZXNvdXJjZUdyb3VwTmFtZSxcbiAgICAgIHN0b3JhZ2VBY2NvdW50TmFtZTogc3RvcmFnZUFjY291bnQubmFtZSxcbiAgICAgIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnQuaWQsXG4gICAgICB0eXBlOiBcImF6dXJlcm1cIixcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jICNhcmVQcm92aWRlcnNSZWdpc3RlcmVkKHN1YnNjcmlwdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjbGllbnQgPSBuZXcgUmVzb3VyY2VNYW5hZ2VtZW50Q2xpZW50KFxuICAgICAgdGhpcy4jY3JlZGVudGlhbCxcbiAgICAgIHN1YnNjcmlwdGlvbklkLFxuICAgICk7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy4jcmVxdWlyZWRSZXNvdXJjZVByb3ZpZGVycy5tYXAoYXN5bmMgKG5hbWVzcGFjZSkgPT4ge1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IGF3YWl0IGNsaWVudC5wcm92aWRlcnMuZ2V0KG5hbWVzcGFjZSk7XG4gICAgICAgIHJldHVybiBwcm92aWRlci5yZWdpc3RyYXRpb25TdGF0ZSA9PT0gXCJSZWdpc3RlcmVkXCI7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiByZXN1bHRzLmV2ZXJ5KEJvb2xlYW4pO1xuICB9XG5cbiAgYXN5bmMgI2NyZWF0ZUNvbW1vbktleVZhdWx0KHtcbiAgICBjbG91ZEFjY291bnQsXG4gICAgbmFtZSxcbiAgICBwcmVmaXgsXG4gICAgcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgc2hvcnRFbnYsXG4gICAgc2hvcnRMb2NhdGlvbixcbiAgICB0YWdzLFxuICAgIHRlbmFudElkLFxuICB9OiB7XG4gICAgY2xvdWRBY2NvdW50OiBDbG91ZEFjY291bnQ7XG4gICAgbmFtZTogRW52aXJvbm1lbnRJZFtcIm5hbWVcIl07XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gICAgcmVzb3VyY2VHcm91cE5hbWU6IHN0cmluZztcbiAgICBzaG9ydEVudjogc3RyaW5nO1xuICAgIHNob3J0TG9jYXRpb246IHN0cmluZztcbiAgICB0YWdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHRlbmFudElkOiBzdHJpbmc7XG4gIH0pOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgY29uc3Qga3ZDbGllbnQgPSBuZXcgS2V5VmF1bHRNYW5hZ2VtZW50Q2xpZW50KFxuICAgICAgdGhpcy4jY3JlZGVudGlhbCxcbiAgICAgIGNsb3VkQWNjb3VudC5pZCxcbiAgICApO1xuXG4gICAgY29uc3Qga2V5VmF1bHROYW1lID0gYCR7cHJlZml4fS0ke3Nob3J0RW52fS0ke3Nob3J0TG9jYXRpb259LWNvbW1vbi1rdi0wMWA7XG4gICAgY29uc3Qgc2VjcmV0c1Byb3RlY3Rpb25FbmFibGVkID0gc2hvcnRFbnYgPT09IFwicFwiO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQga3ZDbGllbnQudmF1bHRzLmNoZWNrTmFtZUF2YWlsYWJpbGl0eSh7XG4gICAgICBuYW1lOiBrZXlWYXVsdE5hbWUsXG4gICAgICB0eXBlOiBcIk1pY3Jvc29mdC5LZXlWYXVsdC92YXVsdHNcIixcbiAgICB9KTtcblxuICAgIGF3YWl0IGt2Q2xpZW50LnZhdWx0cy5iZWdpbkNyZWF0ZU9yVXBkYXRlQW5kV2FpdChcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAga2V5VmF1bHROYW1lLFxuICAgICAge1xuICAgICAgICBsb2NhdGlvbjogY2xvdWRBY2NvdW50LmRlZmF1bHRMb2NhdGlvbixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGNyZWF0ZU1vZGU6IHJlc3VsdC5uYW1lQXZhaWxhYmxlID8gXCJkZWZhdWx0XCIgOiBcInJlY292ZXJcIixcbiAgICAgICAgICBlbmFibGVkRm9yRGlza0VuY3J5cHRpb246IHRydWUsXG4gICAgICAgICAgZW5hYmxlUHVyZ2VQcm90ZWN0aW9uOiBzZWNyZXRzUHJvdGVjdGlvbkVuYWJsZWQgPyB0cnVlIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGVuYWJsZVJiYWNBdXRob3JpemF0aW9uOiB0cnVlLFxuICAgICAgICAgIHNrdToge1xuICAgICAgICAgICAgZmFtaWx5OiBcIkFcIixcbiAgICAgICAgICAgIG5hbWU6IFwic3RhbmRhcmRcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNvZnREZWxldGVSZXRlbnRpb25JbkRheXM6IHNlY3JldHNQcm90ZWN0aW9uRW5hYmxlZCA/IDE0IDogNyxcbiAgICAgICAgICB0ZW5hbnRJZCxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIEVudmlyb25tZW50OiBuYW1lLFxuICAgICAgICAgIC4uLnRhZ3MsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBcIkNyZWF0ZWQga2V5IHZhdWx0IHtrZXlWYXVsdE5hbWV9IGluIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICB7IGtleVZhdWx0TmFtZSwgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudC5pZCB9LFxuICAgICk7XG5cbiAgICByZXR1cm4ga2V5VmF1bHROYW1lO1xuICB9XG5cbiAgI2NyZWF0ZUZlZGVyYXRlZENyZWRlbnRpYWxOYW1lKHtcbiAgICBnaXRodWIsXG4gICAgZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICB9OiB7XG4gICAgZ2l0aHViOiBHaXRIdWJSZXBvO1xuICAgIGdpdGh1YkVudmlyb25tZW50TmFtZTogc3RyaW5nO1xuICB9KTogc3RyaW5nIHtcbiAgICBjb25zdCByZXBvTmFtZSA9IGdpdGh1Yi5yZXBvLnJlcGxhY2VBbGwoL1teYS16QS1aMC05LV0vZywgXCItXCIpO1xuXG4gICAgcmV0dXJuIGAke3JlcG9OYW1lfS0ke2dpdGh1YkVudmlyb25tZW50TmFtZX1gO1xuICB9XG5cbiAgI2NyZWF0ZVJvbGVBc3NpZ25tZW50TmFtZShcbiAgICBzY29wZTogc3RyaW5nLFxuICAgIHByaW5jaXBhbElkOiBzdHJpbmcsXG4gICAgcm9sZURlZmluaXRpb25JZDogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIGNvbnN0IGhhc2ggPSBjcmVhdGVIYXNoKFwic2hhMjU2XCIpXG4gICAgICAudXBkYXRlKGAke3Njb3BlfToke3ByaW5jaXBhbElkfToke3JvbGVEZWZpbml0aW9uSWR9YClcbiAgICAgIC5kaWdlc3QoXCJoZXhcIik7XG5cbiAgICByZXR1cm4gYCR7aGFzaC5zbGljZSgwLCA4KX0tJHtoYXNoLnNsaWNlKDgsIDEyKX0tJHtoYXNoLnNsaWNlKFxuICAgICAgMTIsXG4gICAgICAxNixcbiAgICApfS0ke2hhc2guc2xpY2UoMTYsIDIwKX0tJHtoYXNoLnNsaWNlKDIwLCAzMil9YDtcbiAgfVxuXG4gICNjcmVhdGVSb2xlRGVmaW5pdGlvblJlc291cmNlSWQoXG4gICAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZyxcbiAgICByb2xlRGVmaW5pdGlvbklkOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAvc3Vic2NyaXB0aW9ucy8ke3N1YnNjcmlwdGlvbklkfS9wcm92aWRlcnMvTWljcm9zb2Z0LkF1dGhvcml6YXRpb24vcm9sZURlZmluaXRpb25zLyR7cm9sZURlZmluaXRpb25JZH1gO1xuICB9XG5cbiAgYXN5bmMgI2dldEN1cnJlbnRQcmluY2lwYWxJZHMoKTogUHJvbWlzZTxTZXQ8c3RyaW5nPj4ge1xuICAgIC8vIENyZWF0ZSBHcmFwaCBjbGllbnQgd2l0aCBjdXN0b20gYXV0aCBwcm92aWRlciB0aGF0IGZldGNoZXMgZnJlc2ggdG9rZW5zXG4gICAgY29uc3QgZ3JhcGhDbGllbnQgPSBDbGllbnQuaW5pdCh7XG4gICAgICBhdXRoUHJvdmlkZXI6IGFzeW5jIChkb25lKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgdG9rZW5SZXNwb25zZSA9IGF3YWl0IHRoaXMuI2NyZWRlbnRpYWwuZ2V0VG9rZW4oXG4gICAgICAgICAgICBcImh0dHBzOi8vZ3JhcGgubWljcm9zb2Z0LmNvbS8uZGVmYXVsdFwiLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKCF0b2tlblJlc3BvbnNlKSB7XG4gICAgICAgICAgICBkb25lKFxuICAgICAgICAgICAgICBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gYWNxdWlyZSB0b2tlbiBmb3IgTWljcm9zb2Z0IEdyYXBoXCIpLFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZG9uZShudWxsLCB0b2tlblJlc3BvbnNlLnRva2VuKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBkb25lKGVycm9yIGFzIEVycm9yLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEdldCBjdXJyZW50IHVzZXIncyBpbmZvXG4gICAgY29uc3QgbWVSZXNwb25zZSA9IGF3YWl0IGdyYXBoQ2xpZW50LmFwaShcIi9tZVwiKS5nZXQoKTtcbiAgICBjb25zdCBtZSA9IGdyYXBoVXNlclJlc3BvbnNlU2NoZW1hLnBhcnNlKG1lUmVzcG9uc2UpO1xuICAgIGNvbnN0IHVzZXJPYmplY3RJZCA9IG1lLmlkO1xuXG4gICAgLy8gR2V0IGFsbCBncm91cCBtZW1iZXJzaGlwcyAodHJhbnNpdGl2ZSAtIGluY2x1ZGVzIG5lc3RlZCBncm91cHMpXG4gICAgY29uc3QgZ3JvdXBJZHM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IG5leHRMaW5rOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBcIi9tZS90cmFuc2l0aXZlTWVtYmVyT2Y/JHNlbGVjdD1pZFwiO1xuXG4gICAgd2hpbGUgKG5leHRMaW5rKSB7XG4gICAgICBjb25zdCByYXdSZXNwb25zZSA9IGF3YWl0IGdyYXBoQ2xpZW50LmFwaShuZXh0TGluaykuZ2V0KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGdyYXBoR3JvdXBNZW1iZXJzaGlwUmVzcG9uc2VTY2hlbWEucGFyc2UocmF3UmVzcG9uc2UpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHJlc3BvbnNlLnZhbHVlKSB7XG4gICAgICAgIGdyb3VwSWRzLnB1c2goaXRlbS5pZCk7XG4gICAgICB9XG4gICAgICBuZXh0TGluayA9IHJlc3BvbnNlW1wiQG9kYXRhLm5leHRMaW5rXCJdO1xuICAgIH1cblxuICAgIC8vIEFsbCBwcmluY2lwYWwgSURzIHRvIGNoZWNrICh1c2VyICsgYWxsIGdyb3VwcylcbiAgICBjb25zdCBhbGxQcmluY2lwYWxJZHMgPSBuZXcgU2V0KFt1c2VyT2JqZWN0SWQsIC4uLmdyb3VwSWRzXSk7XG4gICAgcmV0dXJuIGFsbFByaW5jaXBhbElkcztcbiAgfVxuXG4gIGFzeW5jICNyZWdpc3RlclByb3ZpZGVycyhzdWJzY3JpcHRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcInJlZ2lzdGVyLXByb3ZpZGVyc1wiXSk7XG4gICAgY29uc3QgY2xpZW50ID0gbmV3IFJlc291cmNlTWFuYWdlbWVudENsaWVudChcbiAgICAgIHRoaXMuI2NyZWRlbnRpYWwsXG4gICAgICBzdWJzY3JpcHRpb25JZCxcbiAgICApO1xuXG4gICAgbG9nZ2VyLmluZm8oXG4gICAgICBcIlJlZ2lzdGVyaW5nIHtjb3VudH0gcmVzb3VyY2UgcHJvdmlkZXJzIG9uIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICB7IGNvdW50OiB0aGlzLiNyZXF1aXJlZFJlc291cmNlUHJvdmlkZXJzLmxlbmd0aCwgc3Vic2NyaXB0aW9uSWQgfSxcbiAgICApO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICB0aGlzLiNyZXF1aXJlZFJlc291cmNlUHJvdmlkZXJzLm1hcChhc3luYyAobmFtZXNwYWNlKSA9PiB7XG4gICAgICAgIGF3YWl0IGNsaWVudC5wcm92aWRlcnMucmVnaXN0ZXIobmFtZXNwYWNlKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiUmVnaXN0ZXJlZCBwcm92aWRlciB7bmFtZXNwYWNlfVwiLCB7IG5hbWVzcGFjZSB9KTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBsb2dnZXIuaW5mbyhcbiAgICAgIFwiQWxsIHJlc291cmNlIHByb3ZpZGVycyByZWdpc3RlcmVkIG9uIHN1YnNjcmlwdGlvbiB7c3Vic2NyaXB0aW9uSWR9XCIsXG4gICAgICB7IHN1YnNjcmlwdGlvbklkIH0sXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jICNzdG9yZUJvb3RzdHJhcHBlckVudmlyb25tZW50U2VjcmV0cyh7XG4gICAgY2xvdWRBY2NvdW50SWQsXG4gICAgZ2l0aHViLFxuICAgIGdpdGh1YkVudmlyb25tZW50TmFtZSxcbiAgICBnaXRIdWJTZXJ2aWNlLFxuICAgIGlkZW50aXR5Q2xpZW50SWQsXG4gICAgcnVubmVyQXBwQ3JlZGVudGlhbHMsXG4gICAgdGVuYW50SWQsXG4gIH06IHtcbiAgICBjbG91ZEFjY291bnRJZDogc3RyaW5nO1xuICAgIGdpdGh1YjogR2l0SHViUmVwbztcbiAgICBnaXRodWJFbnZpcm9ubWVudE5hbWU6IHN0cmluZztcbiAgICBnaXRIdWJTZXJ2aWNlOiBHaXRIdWJTZXJ2aWNlO1xuICAgIGlkZW50aXR5Q2xpZW50SWQ6IHN0cmluZztcbiAgICBydW5uZXJBcHBDcmVkZW50aWFsczogR2l0SHViQXBwQ3JlZGVudGlhbHM7XG4gICAgdGVuYW50SWQ6IHN0cmluZztcbiAgfSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJnZW5cIiwgXCJlbnZcIl0pO1xuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVPclVwZGF0ZUVudmlyb25tZW50U2VjcmV0KHtcbiAgICAgICAgZW52aXJvbm1lbnROYW1lOiBnaXRodWJFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIG93bmVyOiBnaXRodWIub3duZXIsXG4gICAgICAgIHJlcG86IGdpdGh1Yi5yZXBvLFxuICAgICAgICBzZWNyZXROYW1lOiBcIkFSTV9DTElFTlRfSURcIixcbiAgICAgICAgc2VjcmV0VmFsdWU6IGlkZW50aXR5Q2xpZW50SWQsXG4gICAgICB9KSxcbiAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlT3JVcGRhdGVFbnZpcm9ubWVudFNlY3JldCh7XG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgICBvd25lcjogZ2l0aHViLm93bmVyLFxuICAgICAgICByZXBvOiBnaXRodWIucmVwbyxcbiAgICAgICAgc2VjcmV0TmFtZTogXCJBUk1fVEVOQU5UX0lEXCIsXG4gICAgICAgIHNlY3JldFZhbHVlOiB0ZW5hbnRJZCxcbiAgICAgIH0pLFxuICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVPclVwZGF0ZUVudmlyb25tZW50U2VjcmV0KHtcbiAgICAgICAgZW52aXJvbm1lbnROYW1lOiBnaXRodWJFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIG93bmVyOiBnaXRodWIub3duZXIsXG4gICAgICAgIHJlcG86IGdpdGh1Yi5yZXBvLFxuICAgICAgICBzZWNyZXROYW1lOiBcIkFSTV9TVUJTQ1JJUFRJT05fSURcIixcbiAgICAgICAgc2VjcmV0VmFsdWU6IGNsb3VkQWNjb3VudElkLFxuICAgICAgfSksXG4gICAgICBnaXRIdWJTZXJ2aWNlLmNyZWF0ZU9yVXBkYXRlRW52aXJvbm1lbnRTZWNyZXQoe1xuICAgICAgICBlbnZpcm9ubWVudE5hbWU6IGdpdGh1YkVudmlyb25tZW50TmFtZSxcbiAgICAgICAgb3duZXI6IGdpdGh1Yi5vd25lcixcbiAgICAgICAgcmVwbzogZ2l0aHViLnJlcG8sXG4gICAgICAgIHNlY3JldE5hbWU6IFwiR0hfQVBQX0lEXCIsXG4gICAgICAgIHNlY3JldFZhbHVlOiBydW5uZXJBcHBDcmVkZW50aWFscy5pZCxcbiAgICAgIH0pLFxuICAgICAgZ2l0SHViU2VydmljZS5jcmVhdGVPclVwZGF0ZUVudmlyb25tZW50U2VjcmV0KHtcbiAgICAgICAgZW52aXJvbm1lbnROYW1lOiBnaXRodWJFbnZpcm9ubWVudE5hbWUsXG4gICAgICAgIG93bmVyOiBnaXRodWIub3duZXIsXG4gICAgICAgIHJlcG86IGdpdGh1Yi5yZXBvLFxuICAgICAgICBzZWNyZXROYW1lOiBcIkdIX0FQUF9DTElFTlRfSURcIixcbiAgICAgICAgc2VjcmV0VmFsdWU6IHJ1bm5lckFwcENyZWRlbnRpYWxzLmNsaWVudElkLFxuICAgICAgfSksXG4gICAgICBnaXRIdWJTZXJ2aWNlLmNyZWF0ZU9yVXBkYXRlRW52aXJvbm1lbnRTZWNyZXQoe1xuICAgICAgICBlbnZpcm9ubWVudE5hbWU6IGdpdGh1YkVudmlyb25tZW50TmFtZSxcbiAgICAgICAgb3duZXI6IGdpdGh1Yi5vd25lcixcbiAgICAgICAgcmVwbzogZ2l0aHViLnJlcG8sXG4gICAgICAgIHNlY3JldE5hbWU6IFwiR0hfQVBQX0lOU1RBTExBVElPTl9JRFwiLFxuICAgICAgICBzZWNyZXRWYWx1ZTogcnVubmVyQXBwQ3JlZGVudGlhbHMuaW5zdGFsbGF0aW9uSWQsXG4gICAgICB9KSxcbiAgICAgIGdpdEh1YlNlcnZpY2UuY3JlYXRlT3JVcGRhdGVFbnZpcm9ubWVudFNlY3JldCh7XG4gICAgICAgIGVudmlyb25tZW50TmFtZTogZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgICBvd25lcjogZ2l0aHViLm93bmVyLFxuICAgICAgICByZXBvOiBnaXRodWIucmVwbyxcbiAgICAgICAgc2VjcmV0TmFtZTogXCJHSF9BUFBfS0VZXCIsXG4gICAgICAgIHNlY3JldFZhbHVlOiBydW5uZXJBcHBDcmVkZW50aWFscy5rZXkudHJpbUVuZCgpLFxuICAgICAgfSksXG4gICAgXSk7XG5cbiAgICBsb2dnZXIuZGVidWcoXCJTZXQgR2l0SHViIGVudmlyb25tZW50IHNlY3JldHMgZm9yIHtlbnZpcm9ubWVudE5hbWV9XCIsIHtcbiAgICAgIGVudmlyb25tZW50TmFtZTogZ2l0aHViRW52aXJvbm1lbnROYW1lLFxuICAgICAgc3Vic2NyaXB0aW9uSWQ6IGNsb3VkQWNjb3VudElkLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgI3N0b3JlUnVubmVyQXBwU2VjcmV0cyh7XG4gICAgY2xvdWRBY2NvdW50SWQsXG4gICAga2V5VmF1bHROYW1lLFxuICAgIHJ1bm5lckFwcENyZWRlbnRpYWxzLFxuICB9OiB7XG4gICAgY2xvdWRBY2NvdW50SWQ6IHN0cmluZztcbiAgICBrZXlWYXVsdE5hbWU6IHN0cmluZztcbiAgICBydW5uZXJBcHBDcmVkZW50aWFsczogR2l0SHViQXBwQ3JlZGVudGlhbHM7XG4gIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZ2VuXCIsIFwiZW52XCJdKTtcblxuICAgIGNvbnN0IHNlY3JldENsaWVudCA9IG5ldyBTZWNyZXRDbGllbnQoXG4gICAgICBgaHR0cHM6Ly8ke2tleVZhdWx0TmFtZX0udmF1bHQuYXp1cmUubmV0L2AsXG4gICAgICB0aGlzLiNjcmVkZW50aWFsLFxuICAgICk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICBzZWNyZXRDbGllbnQuc2V0U2VjcmV0KFwiZ2l0aHViLXJ1bm5lci1hcHAtaWRcIiwgcnVubmVyQXBwQ3JlZGVudGlhbHMuaWQpLFxuICAgICAgc2VjcmV0Q2xpZW50LnNldFNlY3JldChcbiAgICAgICAgXCJnaXRodWItcnVubmVyLWFwcC1pbnN0YWxsYXRpb24taWRcIixcbiAgICAgICAgcnVubmVyQXBwQ3JlZGVudGlhbHMuaW5zdGFsbGF0aW9uSWQsXG4gICAgICApLFxuICAgICAgc2VjcmV0Q2xpZW50LnNldFNlY3JldChcbiAgICAgICAgXCJnaXRodWItcnVubmVyLWFwcC1rZXlcIixcbiAgICAgICAgcnVubmVyQXBwQ3JlZGVudGlhbHMua2V5LnRyaW1FbmQoKSwgLy8gc3RyaXAgdHJhaWxpbmcgbmV3bGluZXMgZnJvbSBQRU0ga2V5c1xuICAgICAgKSxcbiAgICBdKTtcblxuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIFwiQ3JlYXRlZCBzZWNyZXRzIGluIGtleSB2YXVsdCB7a2V5VmF1bHROYW1lfSBpbiBzdWJzY3JpcHRpb24ge3N1YnNjcmlwdGlvbklkfVwiLFxuICAgICAgeyBrZXlWYXVsdE5hbWUsIHN1YnNjcmlwdGlvbklkOiBjbG91ZEFjY291bnRJZCB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -19,3 +19,4 @@ export const cloudRegions = locations.map((l) => ({
19
19
  name: l,
20
20
  short: locationShort[l],
21
21
  }));
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2F6dXJlL2xvY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx5REFBeUQ7QUFJekQsdUVBQXVFO0FBQ3ZFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQVUsQ0FBQztBQUkvRCxNQUFNLFVBQVUsZUFBZSxDQUFDLFFBQWdCO0lBQzlDLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUF5QixDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELHdDQUF3QztBQUN4QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBa0M7SUFDMUQsVUFBVSxFQUFFLEtBQUs7SUFDakIsVUFBVSxFQUFFLEtBQUs7Q0FDbEIsQ0FBQztBQUVGLE1BQU0sV0FBVyxHQUFrQztJQUNqRCxVQUFVLEVBQUUsYUFBYTtJQUN6QixVQUFVLEVBQUUsYUFBYTtDQUMxQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFrQixTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELFdBQVcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksRUFBRSxDQUFDO0lBQ1AsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7Q0FDeEIsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGVzZSBhcmUgdGhlIG9ubHkgcmVnaW9ucyB3ZSBjdXJyZW50bHkgc3VwcG9ydCBmb3IgRFhcblxuaW1wb3J0IHR5cGUgeyBDbG91ZFJlZ2lvbiB9IGZyb20gXCIuLi8uLi9kb21haW4vY2xvdWQtYWNjb3VudC5qc1wiO1xuXG4vLyBPcmRlciBtYXR0ZXJzISB0aGV5IGdvIGZyb20gdGhlIHByZWZlcnJlZCB0byB0aGUgbGVzcyBwcmVmZXJyZWQgb25lc1xuZXhwb3J0IGNvbnN0IGxvY2F0aW9ucyA9IFtcIml0YWx5bm9ydGhcIiwgXCJ3ZXN0ZXVyb3BlXCJdIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBBenVyZUxvY2F0aW9uID0gKHR5cGVvZiBsb2NhdGlvbnMpW251bWJlcl07XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0F6dXJlTG9jYXRpb24obG9jYXRpb246IHN0cmluZyk6IGxvY2F0aW9uIGlzIEF6dXJlTG9jYXRpb24ge1xuICByZXR1cm4gbG9jYXRpb25zLmluY2x1ZGVzKGxvY2F0aW9uIGFzIEF6dXJlTG9jYXRpb24pO1xufVxuXG4vLyBUaGUgZGVmYXVsdCBsb2NhdGlvbiBpcyB0aGUgZmlyc3Qgb25lXG5leHBvcnQgY29uc3QgZGVmYXVsdExvY2F0aW9uID0gbG9jYXRpb25zWzBdO1xuXG5leHBvcnQgY29uc3QgbG9jYXRpb25TaG9ydDogUmVjb3JkPEF6dXJlTG9jYXRpb24sIHN0cmluZz4gPSB7XG4gIGl0YWx5bm9ydGg6IFwiaXRuXCIsXG4gIHdlc3RldXJvcGU6IFwid2V1XCIsXG59O1xuXG5jb25zdCBkaXNwbGF5TmFtZTogUmVjb3JkPEF6dXJlTG9jYXRpb24sIHN0cmluZz4gPSB7XG4gIGl0YWx5bm9ydGg6IFwiSXRhbHkgTm9ydGhcIixcbiAgd2VzdGV1cm9wZTogXCJXZXN0IEV1cm9wZVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IGNsb3VkUmVnaW9uczogQ2xvdWRSZWdpb25bXSA9IGxvY2F0aW9ucy5tYXAoKGwpID0+ICh7XG4gIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZVtsXSxcbiAgbmFtZTogbCxcbiAgc2hvcnQ6IGxvY2F0aW9uU2hvcnRbbF0sXG59KSk7XG4iXX0=
@@ -16,3 +16,4 @@ export const getLatestCommitShaOrRef = async (owner, repo, ref = "main") => {
16
16
  return ref;
17
17
  });
18
18
  };
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2l0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvZGVtb2RzL2dpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQ3JDLEtBQWEsRUFDYixJQUFZLEVBQ1osR0FBRyxHQUFHLE1BQU0sRUFDWixFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUNsRCxLQUFLO1FBQ0wsR0FBRztRQUNILElBQUk7S0FDTCxDQUFDLENBQUM7SUFDSCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEtBQUssRUFDMUMsS0FBYSxFQUNiLElBQVksRUFDWixHQUFHLEdBQUcsTUFBTSxFQUNaLEVBQUU7SUFDRixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRCxPQUFPLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtRQUNyRCxNQUFNLENBQUMsSUFBSSxDQUNULCtFQUErRSxFQUMvRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUMvQixDQUFDO1FBQ0YsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBPY3Rva2l0IH0gZnJvbSBcIm9jdG9raXRcIjtcblxuZXhwb3J0IGNvbnN0IGdldExhdGVzdENvbW1pdFNoYSA9IGFzeW5jIChcbiAgb3duZXI6IHN0cmluZyxcbiAgcmVwbzogc3RyaW5nLFxuICByZWYgPSBcIm1haW5cIixcbikgPT4ge1xuICBjb25zdCBvY3Rva2l0ID0gbmV3IE9jdG9raXQoKTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBvY3Rva2l0LnJlc3QucmVwb3MuZ2V0Q29tbWl0KHtcbiAgICBvd25lcixcbiAgICByZWYsXG4gICAgcmVwbyxcbiAgfSk7XG4gIHJldHVybiByZXNwb25zZS5kYXRhLnNoYTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYXRlc3RDb21taXRTaGFPclJlZiA9IGFzeW5jIChcbiAgb3duZXI6IHN0cmluZyxcbiAgcmVwbzogc3RyaW5nLFxuICByZWYgPSBcIm1haW5cIixcbikgPT4ge1xuICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiY29kZW1vZFwiXSk7XG4gIHJldHVybiBnZXRMYXRlc3RDb21taXRTaGEob3duZXIsIHJlcG8sIHJlZikuY2F0Y2goKCkgPT4ge1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgXCJGYWlsZWQgdG8gZmV0Y2ggdGhlIGxhdGVzdCBjb21taXQgZnJvbSB7b3duZXJ9L3tyZXBvfSwgZmFsbGJhY2sgdG8ge2ZhbGxiYWNrfVwiLFxuICAgICAgeyBmYWxsYmFjazogcmVmLCBvd25lciwgcmVwbyB9LFxuICAgICk7XG4gICAgcmV0dXJuIHJlZjtcbiAgfSk7XG59O1xuIl19
@@ -7,3 +7,4 @@ registry.add(usePnpm);
7
7
  registry.add(useAzureAppsvc);
8
8
  registry.add(updateCodeReview);
9
9
  export default registry;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29kZW1vZHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFFcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO0FBRTVDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM3QixRQUFRLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFFL0IsZUFBZSxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhbENvZGVtb2RSZWdpc3RyeSB9IGZyb20gXCIuL3JlZ2lzdHJ5LmpzXCI7XG5pbXBvcnQgeyB1cGRhdGVDb2RlUmV2aWV3IH0gZnJvbSBcIi4vdXBkYXRlLWNvZGUtcmV2aWV3LmpzXCI7XG5pbXBvcnQgeyB1c2VBenVyZUFwcHN2YyB9IGZyb20gXCIuL3VzZS1henVyZS1hcHBzdmMuanNcIjtcbmltcG9ydCB1c2VQbnBtIGZyb20gXCIuL3VzZS1wbnBtLmpzXCI7XG5cbmNvbnN0IHJlZ2lzdHJ5ID0gbmV3IExvY2FsQ29kZW1vZFJlZ2lzdHJ5KCk7XG5cbnJlZ2lzdHJ5LmFkZCh1c2VQbnBtKTtcbnJlZ2lzdHJ5LmFkZCh1c2VBenVyZUFwcHN2Yyk7XG5yZWdpc3RyeS5hZGQodXBkYXRlQ29kZVJldmlldyk7XG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdHJ5O1xuIl19
@@ -14,3 +14,4 @@ export class LocalCodemodRegistry {
14
14
  return okAsync(this.#m.get(id));
15
15
  }
16
16
  }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29kZW1vZHMvcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUlyQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLEVBQUUsQ0FBOEI7SUFDaEM7UUFDRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFDO0lBQzlDLENBQUM7SUFDRCxHQUFHLENBQUMsT0FBZ0I7UUFDbEIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsTUFBTTtRQUNKLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUNELE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb2tBc3luYyB9IGZyb20gXCJuZXZlcnRocm93XCI7XG5cbmltcG9ydCB7IENvZGVtb2QsIENvZGVtb2RSZWdpc3RyeSB9IGZyb20gXCIuLi8uLi9kb21haW4vY29kZW1vZC5qc1wiO1xuXG5leHBvcnQgY2xhc3MgTG9jYWxDb2RlbW9kUmVnaXN0cnkgaW1wbGVtZW50cyBDb2RlbW9kUmVnaXN0cnkge1xuICAjbTogTWFwPENvZGVtb2RbXCJpZFwiXSwgQ29kZW1vZD47XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI20gPSBuZXcgTWFwPENvZGVtb2RbXCJpZFwiXSwgQ29kZW1vZD4oKTtcbiAgfVxuICBhZGQoY29kZW1vZDogQ29kZW1vZCkge1xuICAgIHRoaXMuI20uc2V0KGNvZGVtb2QuaWQsIGNvZGVtb2QpO1xuICB9XG4gIGdldEFsbCgpIHtcbiAgICByZXR1cm4gb2tBc3luYyhBcnJheS5mcm9tKHRoaXMuI20udmFsdWVzKCkpKTtcbiAgfVxuICBnZXRCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gb2tBc3luYyh0aGlzLiNtLmdldChpZCkpO1xuICB9XG59XG4iXX0=
@@ -58,3 +58,4 @@ export const updateCodeReview = {
58
58
  description: "Update js_code_review workflow to its latest version",
59
59
  id: "update-code-review",
60
60
  };
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWNvZGUtcmV2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvZGVtb2RzL3VwZGF0ZS1jb2RlLXJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRzdCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUNoQyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUN0RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTlDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVwQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtRQUNuQixHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJO1lBQ2QsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDL0MsT0FBTyxTQUFTLENBQUM7WUFDbkIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNwQixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM3QixJQUNFLE9BQU8sSUFBSSxLQUFLLFFBQVE7b0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsa0RBQWtELENBQUMsRUFDbkUsQ0FBQztvQkFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDOUIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUU7d0JBQ3JCLFFBQVEsRUFBRSxNQUFNO3dCQUNoQixlQUFlLEVBQUUsT0FBTztxQkFDekIsQ0FBQyxDQUFDO29CQUNILEdBQUcsQ0FBQyxHQUFHLENBQ0wsTUFBTSxFQUNOLG1EQUFtRCxHQUFHLEVBQUUsQ0FDekQsQ0FBQztvQkFDRixPQUFPLEdBQUcsSUFBSSxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDekIsQ0FBQztLQUNGLENBQUMsQ0FBQztJQUVILElBQUksT0FBTyxFQUFFLENBQUM7UUFDWixNQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQ3pDLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUVKLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFZO0lBQ3ZDLEtBQUssRUFBRSxLQUFLLElBQUksRUFBRTtRQUNoQixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLE9BQU8sa0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQzthQUNuQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2xCLE1BQU0sYUFBYSxDQUFDO2dCQUNsQixlQUFlLEVBQUUsSUFBSTtnQkFDckIsS0FBSyxFQUFFLENBQUMsMEJBQTBCLENBQUM7Z0JBQ25DLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxHQUFHLENBQUM7YUFDdEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sQ0FBQyxLQUFLLENBQ1YseURBQXlELEVBQ3pEO2dCQUNFLFVBQVUsRUFBRSxHQUFHLEtBQUssSUFBSSxJQUFJLEVBQUU7YUFDL0IsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsV0FBVyxFQUFFLHNEQUFzRDtJQUNuRSxFQUFFLEVBQUUsb0JBQW9CO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHsgcmVwbGFjZUluRmlsZSB9IGZyb20gXCJyZXBsYWNlLWluLWZpbGVcIjtcbmltcG9ydCAqIGFzIFlBTUwgZnJvbSBcInlhbWxcIjtcblxuaW1wb3J0IHsgQ29kZW1vZCB9IGZyb20gXCIuLi8uLi9kb21haW4vY29kZW1vZC5qc1wiO1xuaW1wb3J0IHsgZ2V0TGF0ZXN0Q29tbWl0U2hhIH0gZnJvbSBcIi4vZ2l0LmpzXCI7XG5pbXBvcnQgeyBpc0NoaWxkT2YgfSBmcm9tIFwiLi95YW1sLmpzXCI7XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVKU0NvZGVSZXZpZXdKb2IgPVxuICAoc2hhOiBzdHJpbmcpID0+ICh3b3JrZmxvdzogc3RyaW5nLCBmaWxlbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImNvZGVtb2RcIl0pO1xuICAgIGNvbnN0IGRvY3VtZW50ID0gWUFNTC5wYXJzZURvY3VtZW50KHdvcmtmbG93KTtcblxuICAgIGxldCB1cGRhdGVkID0gZmFsc2U7XG5cbiAgICBZQU1MLnZpc2l0KGRvY3VtZW50LCB7XG4gICAgICBNYXAoXywgbWFwLCBwYXRoKSB7XG4gICAgICAgIGlmIChtYXAuaGFzKFwiam9ic1wiKSB8fCBpc0NoaWxkT2YocGF0aCwgXCJqb2JzXCIpKSB7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFwLmhhcyhcInVzZXNcIikpIHtcbiAgICAgICAgICBjb25zdCB1c2VzID0gbWFwLmdldChcInVzZXNcIik7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdHlwZW9mIHVzZXMgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHVzZXMuc3RhcnRzV2l0aChcInBhZ29wYS9keC8uZ2l0aHViL3dvcmtmbG93cy9qc19jb2RlX3Jldmlldy55YW1sQFwiKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgbWFwLnNldChcInNlY3JldHNcIiwgXCJpbmhlcml0XCIpO1xuICAgICAgICAgICAgbWFwLnNldChcInBlcm1pc3Npb25zXCIsIHtcbiAgICAgICAgICAgICAgY29udGVudHM6IFwicmVhZFwiLFxuICAgICAgICAgICAgICBcInB1bGwtcmVxdWVzdHNcIjogXCJ3cml0ZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBtYXAuc2V0KFxuICAgICAgICAgICAgICBcInVzZXNcIixcbiAgICAgICAgICAgICAgYHBhZ29wYS9keC8uZ2l0aHViL3dvcmtmbG93cy9qc19jb2RlX3Jldmlldy55YW1sQCR7c2hhfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdXBkYXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBZQU1MLnZpc2l0LlNLSVA7XG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHVwZGF0ZWQpIHtcbiAgICAgIGxvZ2dlci5pbmZvKFwiV29ya2Zsb3cge2ZpbGVuYW1lfSB1cGRhdGVkXCIsIHtcbiAgICAgICAgZmlsZW5hbWUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBZQU1MLnN0cmluZ2lmeShkb2N1bWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHdvcmtmbG93O1xuICB9O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ29kZVJldmlldzogQ29kZW1vZCA9IHtcbiAgYXBwbHk6IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiY29kZW1vZFwiXSk7XG4gICAgY29uc3Qgb3duZXIgPSBcInBhZ29wYVwiO1xuICAgIGNvbnN0IHJlcG8gPSBcImR4XCI7XG4gICAgcmV0dXJuIGdldExhdGVzdENvbW1pdFNoYShvd25lciwgcmVwbylcbiAgICAgIC50aGVuKGFzeW5jIChzaGEpID0+IHtcbiAgICAgICAgYXdhaXQgcmVwbGFjZUluRmlsZSh7XG4gICAgICAgICAgYWxsb3dFbXB0eVBhdGhzOiB0cnVlLFxuICAgICAgICAgIGZpbGVzOiBbXCIuZ2l0aHViL3dvcmtmbG93cy8qLnlhbWxcIl0sXG4gICAgICAgICAgcHJvY2Vzc29yOiB1cGRhdGVKU0NvZGVSZXZpZXdKb2Ioc2hhKSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKFxuICAgICAgICAgIFwiRmFpbGVkIHRvIGZldGNoIHRoZSBsYXRlc3QgY29tbWl0IHNoYSBmcm9tIHtyZXBvc2l0b3J5fVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlcG9zaXRvcnk6IGAke293bmVyfS8ke3JlcG99YCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuICAgICAgfSk7XG4gIH0sXG4gIGRlc2NyaXB0aW9uOiBcIlVwZGF0ZSBqc19jb2RlX3JldmlldyB3b3JrZmxvdyB0byBpdHMgbGF0ZXN0IHZlcnNpb25cIixcbiAgaWQ6IFwidXBkYXRlLWNvZGUtcmV2aWV3XCIsXG59O1xuIl19
@@ -82,3 +82,4 @@ export const useAzureAppsvc = {
82
82
  description: "Refactor legacy deploy workflows to use release-azure-appsvc",
83
83
  id: "use-azure-appsvc",
84
84
  };
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWF6dXJlLWFwcHN2Yy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb2RlbW9kcy91c2UtYXp1cmUtYXBwc3ZjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBR3hCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXRDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FDMUIsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBZ0IsRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDdEQsTUFBTSxNQUFNLEdBQVcsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5QyxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDcEI7Ozs7Ozs7T0FPRztJQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQ25CLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUk7WUFDZCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FB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QztTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsV0FBVyxFQUFFLDhEQUE4RDtJQUMzRSxFQUFFLEVBQUUsa0JBQWtCO0NBQ3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIsIExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyByZXBsYWNlSW5GaWxlIH0gZnJvbSBcInJlcGxhY2UtaW4tZmlsZVwiO1xuaW1wb3J0IFlBTUwgZnJvbSBcInlhbWxcIjtcblxuaW1wb3J0IHsgQ29kZW1vZCB9IGZyb20gXCIuLi8uLi9kb21haW4vY29kZW1vZC5qc1wiO1xuaW1wb3J0IHsgZ2V0TGF0ZXN0Q29tbWl0U2hhT3JSZWYgfSBmcm9tIFwiLi9naXQuanNcIjtcbmltcG9ydCB7IGlzQ2hpbGRPZiB9IGZyb20gXCIuL3lhbWwuanNcIjtcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGVXb3JrZmxvdyA9XG4gIChzaGE6IHN0cmluZykgPT4gKHdvcmtmbG93OiBzdHJpbmcsIGZpbGVuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBsb2dnZXI6IExvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJjb2RlbW9kXCJdKTtcbiAgICBsb2dnZXIuZGVidWcoXCJQcm9jZXNzaW5nIHtmaWxlbmFtZX0gZmlsZVwiLCB7IGZpbGVuYW1lIH0pO1xuICAgIGNvbnN0IGRvY3VtZW50ID0gWUFNTC5wYXJzZURvY3VtZW50KHdvcmtmbG93KTtcbiAgICBsZXQgdXBkYXRlZCA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFZpc2l0IHRoZSBZQU1MIEFTVCB0byBmaW5kIGFuZCB1cGRhdGUgc3BlY2lmaWMga2V5c1xuICAgICAqIC0gVmlzaXQgdGhlIHRyZWUgdW50aWwgd2UgZmluZCBqb2Igd2l0aCBcInVzZXNcIiBjb250YWluaW5nIFwid2ViX2FwcF9kZXBsb3lcIiBvciBcImZ1bmN0aW9uX2FwcF9kZXBsb3lcIlxuICAgICAqIC0gQWRkIFwiZGlzYWJsZV9hdXRvX3N0YWdpbmdfZGVwbG95OiB0cnVlXCIgdW5kZXIgXCJ3aXRoXCJcbiAgICAgKiAtIFJlbmFtZSBcImZ1bmN0aW9uX2FwcF9uYW1lXCIgdG8gXCJ3ZWJfYXBwX25hbWVcIlxuICAgICAqIC0gUmVtb3ZlIFwidXNlX3N0YWdpbmdfc2xvdFwiXG4gICAgICogLSBVcGRhdGUgXCJ1c2VzXCIgdG8gcG9pbnQgdG8gXCJwYWdvcGEvZHgvLmdpdGh1Yi93b3JrZmxvd3MvcmVsZWFzZS1henVyZS1hcHBzdmMueWFtbEBMQVRFU1RfU0hBXCJcbiAgICAgKi9cbiAgICBZQU1MLnZpc2l0KGRvY3VtZW50LCB7XG4gICAgICBNYXAoXywgbWFwLCBwYXRoKSB7XG4gICAgICAgIGlmIChpc0NoaWxkT2YocGF0aCwgXCJqb2JzXCIpIHx8IGlzQ2hpbGRPZihwYXRoLCBcIndpdGhcIikpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXAuaGFzKFwiam9ic1wiKSkge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1hcC5oYXMoXCJ1c2VzXCIpKSB7XG4gICAgICAgICAgY29uc3QgdXNlcyA9IG1hcC5nZXQoXCJ1c2VzXCIpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHR5cGVvZiB1c2VzID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB1c2VzLm1hdGNoKFxuICAgICAgICAgICAgICAvXnBhZ29wYVxcL2R4XFwvLmdpdGh1YlxcL3dvcmtmbG93c1xcLyh3ZWJ8ZnVuY3Rpb24pX2FwcF9kZXBsb3kvLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiQWRkaW5nIGRpc2FibGVfYXV0b19zdGFnaW5nX2RlcGxveVwiKTtcbiAgICAgICAgICAgIG1hcC5hZGRJbihbXCJ3aXRoXCIsIFwiZGlzYWJsZV9hdXRvX3N0YWdpbmdfZGVwbG95XCJdLCB0cnVlKTtcbiAgICAgICAgICAgIG1hcC5zZXQoXCJwZXJtaXNzaW9uc1wiLCB7XG4gICAgICAgICAgICAgIGF0dGVzdGF0aW9uczogXCJ3cml0ZVwiLFxuICAgICAgICAgICAgICBjb250ZW50czogXCJyZWFkXCIsXG4gICAgICAgICAgICAgIFwiaWQtdG9rZW5cIjogXCJ3cml0ZVwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBZQU1MLnZpc2l0LlNLSVA7XG4gICAgICB9LFxuICAgICAgUGFpcihfLCBwYWlyKSB7XG4gICAgICAgIGlmIChZQU1MLmlzU2NhbGFyKHBhaXIua2V5KSkge1xuICAgICAgICAgIGlmIChwYWlyLmtleS52YWx1ZSA9PT0gXCJmdW5jdGlvbl9hcHBfbmFtZVwiKSB7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlVwZGF0aW5nIGZ1bmN0aW9uX2FwcF9uYW1lIHRvIHdlYl9hcHBfbmFtZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgWUFNTC5QYWlyKFwid2ViX2FwcF9uYW1lXCIsIHBhaXIudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocGFpci5rZXkudmFsdWUgPT09IFwidXNlX3N0YWdpbmdfc2xvdFwiKSB7XG4gICAgICAgICAgICB1cGRhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlJlbW92aW5nIHVzZV9zdGFnaW5nX3Nsb3RcIik7XG4gICAgICAgICAgICByZXR1cm4gWUFNTC52aXNpdC5SRU1PVkU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwYWlyLmtleS52YWx1ZSA9PT0gXCJ1c2VzXCIpIHtcbiAgICAgICAgICAgIHVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiVXBkYXRpbmcgdXNlcyB2YWx1ZVwiKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgWUFNTC5QYWlyKFxuICAgICAgICAgICAgICBcInVzZXNcIixcbiAgICAgICAgICAgICAgYHBhZ29wYS9keC8uZ2l0aHViL3dvcmtmbG93cy9yZWxlYXNlLWF6dXJlLWFwcHN2Yy12MS55YW1sQCR7c2hhfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgICBpZiAodXBkYXRlZCkge1xuICAgICAgbG9nZ2VyLmluZm8oXCJXb3JrZmxvdyB7ZmlsZW5hbWV9IHVwZGF0ZWRcIiwge1xuICAgICAgICBmaWxlbmFtZSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIFlBTUwuc3RyaW5naWZ5KGRvY3VtZW50KTtcbiAgICB9XG4gICAgbG9nZ2VyLmRlYnVnKFwiTm8gY2hhbmdlcyBhcHBsaWVkIHRvIHtmaWxlbmFtZX1cIiwgeyBmaWxlbmFtZSB9KTtcbiAgICByZXR1cm4gd29ya2Zsb3c7XG4gIH07XG5cbmV4cG9ydCBjb25zdCB1c2VBenVyZUFwcHN2YzogQ29kZW1vZCA9IHtcbiAgYXBwbHk6IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBzaGEgPSBhd2FpdCBnZXRMYXRlc3RDb21taXRTaGFPclJlZihcInBhZ29wYVwiLCBcImR4XCIpO1xuICAgIGF3YWl0IHJlcGxhY2VJbkZpbGUoe1xuICAgICAgYWxsb3dFbXB0eVBhdGhzOiB0cnVlLFxuICAgICAgZmlsZXM6IFtcIi5naXRodWIvd29ya2Zsb3dzLyoueWFtbFwiXSxcbiAgICAgIHByb2Nlc3NvcjogbWlncmF0ZVdvcmtmbG93KHNoYSksXG4gICAgfSk7XG4gIH0sXG4gIGRlc2NyaXB0aW9uOiBcIlJlZmFjdG9yIGxlZ2FjeSBkZXBsb3kgd29ya2Zsb3dzIHRvIHVzZSByZWxlYXNlLWF6dXJlLWFwcHN2Y1wiLFxuICBpZDogXCJ1c2UtYXp1cmUtYXBwc3ZjXCIsXG59O1xuIl19
@@ -212,3 +212,4 @@ export default {
212
212
  description: "Migrate the project to use pnpm as the package manager",
213
213
  id: "use-pnpm",
214
214
  };
215
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLXBucG0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29kZW1vZHMvdXNlLXBucG0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxNQUFNLE1BQU0sb0JBQW9CLENBQUM7QUFDeEMsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2hELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFHeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU94RCxNQUFNLE9BQU8sR0FBRztJQUNkLFlBQVksR0FBRyxtQkFBbUIsQ0FBQztJQUVuQyxLQUFLLENBQUMsY0FBYztRQUNsQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUEsc0JBQXNCLENBQUM7UUFDakQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUM5QixjQUFjLENBQUMs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QUFFRixlQUFlO0lBQ2IsS0FBSztJQUNMLFdBQVcsRUFBRSx3REFBd0Q7SUFDckUsRUFBRSxFQUFFLFVBQVU7Q0FDRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB7ICQgfSBmcm9tIFwiZXhlY2FcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0L3N0cmljdFwiO1xuaW1wb3J0IGZzIGZyb20gXCJub2RlOmZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyByZXBsYWNlSW5GaWxlIH0gZnJvbSBcInJlcGxhY2UtaW4tZmlsZVwiO1xuaW1wb3J0IHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgWUFNTCBmcm9tIFwieWFtbFwiO1xuXG5pbXBvcnQgeyBDb2RlbW9kIH0gZnJvbSBcIi4uLy4uL2RvbWFpbi9jb2RlbW9kLmpzXCI7XG5pbXBvcnQgeyBnZXRMYXRlc3RDb21taXRTaGFPclJlZiB9IGZyb20gXCIuL2dpdC5qc1wiO1xuaW1wb3J0IHsgdXBkYXRlSlNDb2RlUmV2aWV3Sm9iIH0gZnJvbSBcIi4vdXBkYXRlLWNvZGUtcmV2aWV3LmpzXCI7XG5pbXBvcnQgeyBtaWdyYXRlV29ya2Zsb3cgfSBmcm9tIFwiLi91c2UtYXp1cmUtYXBwc3ZjLmpzXCI7XG5cbnR5cGUgTm9kZVBhY2thZ2VNYW5hZ2VyID0ge1xuICBsaXN0V29ya3NwYWNlcygpOiBQcm9taXNlPHN0cmluZ1tdPjtcbiAgbG9ja0ZpbGVOYW1lOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgTlBNIGltcGxlbWVudHMgTm9kZVBhY2thZ2VNYW5hZ2VyIHtcbiAgbG9ja0ZpbGVOYW1lID0gXCJwYWNrYWdlLWxvY2suanNvblwiO1xuXG4gIGFzeW5jIGxpc3RXb3Jrc3BhY2VzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgJGBucG0gcXVlcnkgLndvcmtzcGFjZWA7XG4gICAgY29uc3Qgd29ya3NwYWNlcyA9IEpTT04ucGFyc2Uoc3Rkb3V0KTtcbiAgICBjb25zdCB3b3Jrc3BhY2VOYW1lcyA9IFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHdvcmtzcGFjZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IHdzIG9mIHdvcmtzcGFjZXMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24od3MsIFwibmFtZVwiKSkge1xuICAgICAgICAgIHdvcmtzcGFjZU5hbWVzLnB1c2god3MubmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHdvcmtzcGFjZU5hbWVzO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBZYXJuIGltcGxlbWVudHMgTm9kZVBhY2thZ2VNYW5hZ2VyIHtcbiAgbG9ja0ZpbGVOYW1lID0gXCJ5YXJuLmxvY2tcIjtcblxuICBhc3luYyBsaXN0V29ya3NwYWNlcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0ICQoeyBsaW5lczogdHJ1ZSB9KWB5YXJuIHdvcmtzcGFjZXMgbGlzdCAtLWpzb25gO1xuICAgIGNvbnN0IHdvcmtzcGFjZU5hbWVzID0gW107XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIHN0ZG91dCkge1xuICAgICAgY29uc3Qgd3MgPSBKU09OLnBhcnNlKGxpbmUpO1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24od3MsIFwibmFtZVwiKSkge1xuICAgICAgICB3b3Jrc3BhY2VOYW1lcy5wdXNoKHdzLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gd29ya3NwYWNlTmFtZXM7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RQYWNrYWdlRXh0ZW5zaW9ucygpOiBQcm9taXNlPG9iamVjdCB8IHVuZGVmaW5lZD4ge1xuICAvLyBSZWFkIHRoZSAueWFybnJjLnlhbWwgZmlsZSBpZiBpdCBleGlzdHMgYW5kIGV4dHJhY3QgdGhlIHBhY2thZ2VFeHRlbnNpb25zIGZpZWxkXG4gIHRyeSB7XG4gICAgY29uc3QgeWFybnJjID0gYXdhaXQgZnMucmVhZEZpbGUoXCIueWFybnJjLnltbFwiLCBcInV0Zi04XCIpO1xuICAgIGNvbnN0IHBhcnNlZCA9IFlBTUwucGFyc2UoeWFybnJjKTtcbiAgICBpZiAocGFyc2VkLnBhY2thZ2VFeHRlbnNpb25zKSB7XG4gICAgICByZXR1cm4gcGFyc2VkLnBhY2thZ2VFeHRlbnNpb25zO1xuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gRmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUsIGlnbm9yZVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlUGFja2FnZUpzb25Gb3JQbnBtKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCBmcy5yZWFkRmlsZShcInBhY2thZ2UuanNvblwiLCBcInV0Zi04XCIpO1xuICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UocGFja2FnZUpzb24pO1xuICBsZXQgd29ya3NwYWNlczogc3RyaW5nW10gPSBbXTtcbiAgaWYgKE9iamVjdC5oYXNPd24obWFuaWZlc3QsIFwicGFja2FnZU1hbmFnZXJcIikpIHtcbiAgICBkZWxldGUgbWFuaWZlc3QucGFja2FnZU1hbmFnZXI7XG4gIH1cbiAgaWYgKE9iamVjdC5oYXNPd24obWFuaWZlc3QsIFwid29ya3NwYWNlc1wiKSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG1hbmlmZXN0LndvcmtzcGFjZXMpKSB7XG4gICAgICB3b3Jrc3BhY2VzID0gbWFuaWZlc3Qud29ya3NwYWNlcztcbiAgICB9XG4gICAgZGVsZXRlIG1hbmlmZXN0LndvcmtzcGFjZXM7XG4gIH1cbiAgYXdhaXQgZnMud3JpdGVGaWxlKFwicGFja2FnZS5qc29uXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LCBudWxsLCAyKSk7XG4gIHJldHVybiB3b3Jrc3BhY2VzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQbnBtV29ya3NwYWNlRmlsZShcbiAgd29ya3NwYWNlczogc3RyaW5nW10sXG4gIHBhY2thZ2VFeHRlbnNpb25zOiBvYmplY3QgfCB1bmRlZmluZWQsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gV2UgaW5saW5lIGFsbCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBoZXJlIGJlY2F1c2UgUmVub3ZhdGVcbiAgLy8gZG9lcyBub3Qgc3VwcG9ydCBQTlBNJ3MgY29uZmlnIGRlcGVuZGVuY2llcyB5ZXQuXG4gIGNvbnN0IHBucG1Xb3Jrc3BhY2UgPSB7XG4gICAgY2xlYW51cFVudXNlZENhdGFsb2dzOiB0cnVlLFxuICAgIGxpbmtXb3Jrc3BhY2VQYWNrYWdlczogdHJ1ZSxcbiAgICBwYWNrYWdlRXh0ZW5zaW9ucyxcbiAgICBwYWNrYWdlSW1wb3J0TWV0aG9kOiBcImNsb25lLW9yLWNvcHlcIixcbiAgICBwYWNrYWdlczogd29ya3NwYWNlcy5sZW5ndGggPiAwID8gd29ya3NwYWNlcyA6IFtcImFwcHMvKlwiLCBcInBhY2thZ2VzLypcIl0sXG4gIH07XG4gIGNvbnN0IHlhbWxDb250ZW50ID0gWUFNTC5zdHJpbmdpZnkocG5wbVdvcmtzcGFjZSk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZShcInBucG0td29ya3NwYWNlLnlhbWxcIiwgeWFtbENvbnRlbnQsIFwidXRmLThcIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlbW92ZUZpbGVzKC4uLmZpbGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBmaWxlcy5tYXAoKGZpbGUpID0+XG4gICAgICAvLyBSZW1vdmUgdGhlIGZpbGUgaWYgaXQgZXhpc3RzLCBmYWlsIHNpbGVudGx5IGlmIGl0IGRvZXNuJ3QuXG4gICAgICBmcy5ybShmaWxlLCB7IGZvcmNlOiB0cnVlLCByZWN1cnNpdmU6IHRydWUgfSkuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKSxcbiAgICApLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXBsYWNlUE1PY2N1cnJlbmNlcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImNvZGVtb2RcIl0pO1xuICBsb2dnZXIuaW5mbyhcIlJlcGxhY2luZyB5YXJuIGFuZCBucG0gb2NjdXJyZW5jZXMgaW4gZmlsZXMuLi5cIik7XG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICBhbGxvd0VtcHR5UGF0aHM6IHRydWUsXG4gICAgZmlsZXM6IFtcIioqLyouanNvblwiLCBcIioqLyoubWRcIiwgXCIqKi9Eb2NrZXJmaWxlXCIsIFwiKiovZG9ja2VyLWNvbXBvc2UueW1sXCJdLFxuICAgIGZyb206IFtcbiAgICAgIFwiaHR0cHM6Ly95YXJucGtnLmNvbS9cIixcbiAgICAgIFwiaHR0cHM6Ly9jbGFzc2ljLnlhcm5wa2cuY29tL1wiLFxuICAgICAgL1xcYih5YXJuIHdvcmtzcGFjZXxucG0gLShcXGItd29ya3NwYWNlXFxifFxcYndcXGIpKSAoXFxTKylcXGIvZyxcbiAgICAgIC9cXGIoeWFybiB3b3Jrc3BhY2V8bnBtIC0oXFxiLXdvcmtzcGFjZVxcYnxcXGJ3XFxiKSlcXGIvZyxcbiAgICAgIC9cXGIoeWFybiBpbnN0YWxsIC0taW1tdXRhYmxlfG5wbSBjaSlcXGIvZyxcbiAgICAgIC9cXGIoeWFybiAtcSBkbHh8bnB4KVxcYi9nLFxuICAgICAgL1xcYigoeWFybnxucG0pIHJ1bilcXGIvZyxcbiAgICAgIC8oXnxcXHN8XCIpKHlhcm58bnBtKSg/IVxcUykvZ2ksXG4gICAgXSxcbiAgICBpZ25vcmU6IFtcIioqL25vZGVfbW9kdWxlcy8qKlwiLCBcIioqL2Rpc3QvKipcIiwgXCIqKi9idWlsZC8qKlwiXSxcbiAgICB0bzogW1xuICAgICAgXCJodHRwczovL3BucG0uaW8vXCIsXG4gICAgICBcImh0dHBzOi8vcG5wbS5pby9cIixcbiAgICAgIFwicG5wbSAtLWZpbHRlciAkM1wiLFxuICAgICAgXCJwbnBtIC0tZmlsdGVyIDxwYWNrYWdlLXNlbGVjdG9yPlwiLFxuICAgICAgXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGVcIixcbiAgICAgIFwicG5wbSBkbHhcIixcbiAgICAgIFwicG5wbSBydW5cIixcbiAgICAgIFwiJDFwbnBtXCIsXG4gICAgXSxcbiAgfSk7XG4gIGNvbnN0IGNvdW50ID0gcmVzdWx0cy5yZWR1Y2UoXG4gICAgKGFjYywgZmlsZSkgPT4gKGZpbGUuaGFzQ2hhbmdlZCA/IGFjYyArIDEgOiBhY2MpLFxuICAgIDAsXG4gICk7XG4gIGxvZ2dlci5pbmZvKFwiUmVwbGFjZWQgeWFybiBvY2N1cnJlbmNlcyBpbiB7Y291bnR9IGZpbGVzXCIsIHsgY291bnQgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZURYV29ya2Zsb3dzKCk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoW1wiZHgtY2xpXCIsIFwiY29kZW1vZFwiXSk7XG4gIGxvZ2dlci5pbmZvKFwiVXBkYXRpbmcgR2l0aHViIFdvcmtmbG93cyB3b3JrZmxvd3MuLi5cIik7XG4gIC8vIEdldCB0aGUgbGF0ZXN0IGNvbW1pdCBzaGEgZnJvbSB0aGUgbWFpbiBicmFuY2ggb2YgdGhlIGR4IHJlcG9zaXRvcnlcbiAgY29uc3Qgc2hhID0gYXdhaXQgZ2V0TGF0ZXN0Q29tbWl0U2hhT3JSZWYoXCJwYWdvcGFcIiwgXCJkeFwiKTtcbiAgLy8gVXBkYXRlIHRoZSBqc19jb2RlX3JldmlldyB3b3JrZmxvdyB0byB1c2UgdGhlIGxhdGVzdCBjb21taXQgc2hhXG4gIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICBhbGxvd0VtcHR5UGF0aHM6IHRydWUsXG4gICAgZmlsZXM6IFtcIi5naXRodWIvd29ya2Zsb3dzLyoueWFtbFwiLCBcIi5naXRodWIvd29ya2Zsb3dzLyoueW1sXCJdLFxuICAgIHByb2Nlc3NvcjogdXBkYXRlSlNDb2RlUmV2aWV3Sm9iKHNoYSksXG4gIH0pO1xuICBjb25zdCBpZ25vcmUgPSByZXN1bHRzLmZpbHRlcigocikgPT4gci5oYXNDaGFuZ2VkKS5tYXAoKHIpID0+IHIuZmlsZSk7XG4gIC8vIFVwZGF0ZSB0aGUgbGVnYWN5IGRlcGxveW1lbnQgd29ya2Zsb3cgdG8gcmVsZWFzZS1henVyZS1hcHBzdmMtdjEueWFtbFxuICBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICBhbGxvd0VtcHR5UGF0aHM6IHRydWUsXG4gICAgZmlsZXM6IFtcIi5naXRodWIvd29ya2Zsb3dzLyoueWFtbFwiLCBcIi5naXRodWIvd29ya2Zsb3dzLyoueW1sXCJdLFxuICAgIGlnbm9yZSxcbiAgICBwcm9jZXNzb3I6IG1pZ3JhdGVXb3JrZmxvdyhzaGEpLFxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHVzZVBucG0gPSBhc3luYyAoXG4gIHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcsXG4gIGN1cnJlbnROb2RlVmVyc2lvbjogc3RyaW5nLFxuKSA9PiB7XG4gIGNvbnN0IG1pbk5vZGVWZXJzaW9uID0gXCIyMC4xOS41XCI7XG5cbiAgYXNzZXJ0Lm5vdEVxdWFsKHBhY2thZ2VNYW5hZ2VyLCBcInBucG1cIiwgXCJQcm9qZWN0IGlzIGFscmVhZHkgdXNpbmcgcG5wbVwiKTtcblxuICBhc3NlcnQub2soXG4gICAgc2VtdmVyLmd0ZShjdXJyZW50Tm9kZVZlcnNpb24sIG1pbk5vZGVWZXJzaW9uKSxcbiAgICBgaGlzIGNvZGVtb2QgcmVxdWlyZXMgTm9kZS5qcyA+PSAke21pbk5vZGVWZXJzaW9ufS4gQ3VycmVudCB2ZXJzaW9uOiAke2N1cnJlbnROb2RlVmVyc2lvbn1gLFxuICApO1xuXG4gIGNvbnN0IGxvZ2dlciA9IGdldExvZ2dlcihbXCJkeC1jbGlcIiwgXCJjb2RlbW9kXCJdKTtcblxuICBjb25zdCBwbSA9IHBhY2thZ2VNYW5hZ2VyID09PSBcInlhcm5cIiA/IG5ldyBZYXJuKCkgOiBuZXcgTlBNKCk7XG4gIGNvbnN0IGxvY2FsV29ya3NwYWNlcyA9IGF3YWl0IHBtLmxpc3RXb3Jrc3BhY2VzKCk7XG5cbiAgLy8gVXBkYXRlIGxvY2FsIGRlcGVuZGVuY2llcyB0byB1c2UgXCJ3b3Jrc3BhY2U6XCIgcHJvdG9jb2xcbiAgaWYgKGxvY2FsV29ya3NwYWNlcy5sZW5ndGggPiAwKSB7XG4gICAgbG9nZ2VyLmluZm8oXCJVc2luZyB0aGUge3Byb3RvY29sfSBwcm90b2NvbCBmb3IgbG9jYWwgZGVwZW5kZW5jaWVzXCIsIHtcbiAgICAgIHByb3RvY29sOiBcIndvcmtzcGFjZTpcIixcbiAgICB9KTtcbiAgICBhd2FpdCByZXBsYWNlSW5GaWxlKHtcbiAgICAgIGFsbG93RW1wdHlQYXRoczogdHJ1ZSxcbiAgICAgIGZpbGVzOiBbXCIqKi9wYWNrYWdlLmpzb25cIl0sXG4gICAgICBmcm9tOiBsb2NhbFdvcmtzcGFjZXMubWFwKCh3cykgPT4gbmV3IFJlZ0V4cChgXCIke3dzfVwiOiBcIi4qP1wiYCwgXCJnXCIpKSxcbiAgICAgIHRvOiBsb2NhbFdvcmtzcGFjZXMubWFwKCh3cykgPT4gYFwiJHt3c31cIjogXCJ3b3Jrc3BhY2U6XlwiYCksXG4gICAgfSk7XG4gIH1cblxuICAvLyBSZW1vdmUgdW51c2VkIGZpZWxkIGZyb20gcGFja2FnZS5qc29uXG4gIGxvZ2dlci5pbmZvKFwiUmVtb3ZlIHVudXNlZCBmaWVsZHMgZnJvbSB7ZmlsZX1cIiwge1xuICAgIGZpbGU6IFwicGFja2FnZS5qc29uXCIsXG4gIH0pO1xuICBjb25zdCB3b3Jrc3BhY2VzID0gYXdhaXQgcHJlcGFyZVBhY2thZ2VKc29uRm9yUG5wbSgpO1xuXG4gIC8vIEV4dHJhY3QgY3VzdG9tIHBhY2thZ2VFeHRlbnNpb25zIGZyb20gLnlhcm5yYy55bWwgaWYgYW55XG4gIGNvbnN0IHBhY2thZ2VFeHRlbnNpb25zID1cbiAgICBwYWNrYWdlTWFuYWdlciA9PT0gXCJ5YXJuXCIgPyBhd2FpdCBleHRyYWN0UGFja2FnZUV4dGVuc2lvbnMoKSA6IHVuZGVmaW5lZDtcblxuICAvLyBDcmVhdGUgcG5wbS13b3Jrc3BhY2UueWFtbFxuICBsb2dnZXIuaW5mbyhcIkNyZWF0ZSB7ZmlsZX1cIiwge1xuICAgIGZpbGU6IFwicG5wbS13b3Jrc3BhY2UueWFtbFwiLFxuICB9KTtcbiAgYXdhaXQgd3JpdGVQbnBtV29ya3NwYWNlRmlsZSh3b3Jrc3BhY2VzLCBwYWNrYWdlRXh0ZW5zaW9ucyk7XG5cbiAgLy8gUmVtb3ZlIHlhcm4gYW5kIG5vZGVfbW9kdWxlcyBmaWxlcyBhbmQgZm9sZGVyc1xuICBsb2dnZXIuaW5mbyhcIlJlbW92ZSBub2RlX21vZHVsZXMgYW5kIHlhcm4gZmlsZXNcIik7XG4gIGF3YWl0IHJlbW92ZUZpbGVzKFxuICAgIFwiLnlhcm5yY1wiLFxuICAgIFwiLnlhcm5yYy55bWxcIixcbiAgICBcInlhcm4uY29uZmlnLmNqc1wiLFxuICAgIFwiLnlhcm5cIixcbiAgICBcIi5wbnAuY2pzXCIsXG4gICAgXCIucG5wLmxvYWRlci5janNcIixcbiAgICBcIm5vZGVfbW9kdWxlc1wiLFxuICApO1xuXG4gIC8vIEltcG9ydCBsb2NrZmlsZVxuICBjb25zdCBzdGF0ID0gYXdhaXQgZnMuc3RhdChwbS5sb2NrRmlsZU5hbWUpO1xuICBpZiAoc3RhdC5pc0ZpbGUoKSkge1xuICAgIGxvZ2dlci5pbmZvKFwiSW1wb3J0aW5nIHtzb3VyY2V9IHRvIHt0YXJnZXR9XCIsIHtcbiAgICAgIHNvdXJjZTogcG0ubG9ja0ZpbGVOYW1lLFxuICAgICAgdGFyZ2V0OiBcInBucG0tbG9jay55YW1sXCIsXG4gICAgfSk7XG4gICAgYXdhaXQgJGBjb3JlcGFjayBwbnBtQGxhdGVzdCBpbXBvcnQgJHtwbS5sb2NrRmlsZU5hbWV9YDtcbiAgICBhd2FpdCByZW1vdmVGaWxlcyhwbS5sb2NrRmlsZU5hbWUpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5pbmZvKFwiTm8ge3NvdXJjZX0gZmlsZSBmb3VuZCwgc2tpcHBpbmcgaW1wb3J0LlwiLCB7XG4gICAgICBzb3VyY2U6IHBtLmxvY2tGaWxlTmFtZSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlcGxhY2UgeWFybiBhbmQgbnBtIG9jY3VycmVuY2VzIGluIGZpbGVzIGFuZCB1cGRhdGUgd29ya2Zsb3dzXG4gIGF3YWl0IHJlcGxhY2VQTU9jY3VycmVuY2VzKCk7XG4gIGF3YWl0IHVwZGF0ZURYV29ya2Zsb3dzKCk7XG5cbiAgLy8gQWRkIHBucG0gc3RvcmUgdG8gLmdpdGlnbm9yZVxuICBsb2dnZXIuaW5mbyhcIkFkZGluZyBwbnBtIHN0b3JlIHRvIC5naXRpZ25vcmUuLi5cIik7XG4gIGF3YWl0IGZzLmFwcGVuZEZpbGUoXCIuZ2l0aWdub3JlXCIsIFwiXFxuXFxuIyBQTlBNXFxuLnBucG0tc3RvcmVcIik7XG5cbiAgLy8gU2V0IHBucG0gYXMgdGhlIHBhY2thZ2UgbWFuYWdlclxuICBsb2dnZXIuaW5mbyhcIlNldHRpbmcgcG5wbSBhcyB0aGUgcGFja2FnZSBtYW5hZ2VyLi4uXCIpO1xuICBhd2FpdCAkYGNvcmVwYWNrIHVzZSBwbnBtQGxhdGVzdGA7XG59O1xuXG5jb25zdCBhcHBseTogQ29kZW1vZFtcImFwcGx5XCJdID0gYXN5bmMgKGluZm8pID0+IHtcbiAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImNvZGVtb2RcIl0pO1xuICB0cnkge1xuICAgIGF3YWl0IHVzZVBucG0oaW5mby5wYWNrYWdlTWFuYWdlciwgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgbG9nZ2VyLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBhcHBseSxcbiAgZGVzY3JpcHRpb246IFwiTWlncmF0ZSB0aGUgcHJvamVjdCB0byB1c2UgcG5wbSBhcyB0aGUgcGFja2FnZSBtYW5hZ2VyXCIsXG4gIGlkOiBcInVzZS1wbnBtXCIsXG59IHNhdGlzZmllcyBDb2RlbW9kO1xuIl19
@@ -6,3 +6,4 @@ export const isChildOf = (path, key) => {
6
6
  typeof ancestor.key.value === "string" &&
7
7
  ancestor.key.value === key);
8
8
  };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWFtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hZGFwdGVycy9jb2RlbW9kcy95YW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUN2QixJQUE0QyxFQUM1QyxHQUFXLEVBQ1gsRUFBRTtJQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQzNCLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUTtRQUN0QyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQzNCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZQU1MIGZyb20gXCJ5YW1sXCI7XG5cbmV4cG9ydCBjb25zdCBpc0NoaWxkT2YgPSAoXG4gIHBhdGg6IFBhcmFtZXRlcnM8WUFNTC52aXNpdG9yRm48dW5rbm93bj4+WzJdLFxuICBrZXk6IHN0cmluZyxcbikgPT4ge1xuICBjb25zdCBhbmNlc3RvciA9IHBhdGguYXQoLTEpO1xuICByZXR1cm4gKFxuICAgIFlBTUwuaXNQYWlyKGFuY2VzdG9yKSAmJlxuICAgIFlBTUwuaXNTY2FsYXIoYW5jZXN0b3Iua2V5KSAmJlxuICAgIHR5cGVvZiBhbmNlc3Rvci5rZXkudmFsdWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICBhbmNlc3Rvci5rZXkudmFsdWUgPT09IGtleVxuICApO1xufTtcbiJdfQ==
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Shared Commander failure handling used by command actions.
3
+ */
4
+ import type { Command } from "commander";
5
+ import type { CommandPresenter } from "../../domain/command-presenter.js";
6
+ /**
7
+ * Builds a failure handler that ends the command via Commander's
8
+ * `Command#error`, with an output tailored to the active verbosity.
9
+ *
10
+ * - In normal mode, a single meaningful line is printed.
11
+ * - When `--verbose` is active, the full cause chain and stack trace are
12
+ * included so users can diagnose the underlying failure.
13
+ */
14
+ export declare const exitWithError: (command: Command) => (error: unknown) => never;
15
+ /**
16
+ * Casts an unknown thrown value to an Error instance with a descriptive
17
+ * message, preserving the original value as the cause.
18
+ *
19
+ * Use as the error-mapper argument for `ResultAsync.fromPromise`.
20
+ */
21
+ export declare const asError: (message: string) => (cause: unknown) => Error;
22
+ /**
23
+ * Builds an error handler for command actions that selects the appropriate
24
+ * reporting strategy based on the requested output mode.
25
+ *
26
+ * - In JSON mode the error is written to the presenter and the process exit
27
+ * code is set to 1 (so the caller can return cleanly without throwing).
28
+ * - In text mode Commander's `command.error()` is used, which prints a
29
+ * human-readable message and exits immediately.
30
+ */
31
+ export declare const reportCommandError: (command: Command, presenter: CommandPresenter, outputMode: "json" | "text") => (error: Error) => void;
@@ -0,0 +1,42 @@
1
+ import { formatErrorDetailed, toErrorMessage } from "./error-reporting.js";
2
+ import { isVerbose } from "./global-options.js";
3
+ /**
4
+ * Builds a failure handler that ends the command via Commander's
5
+ * `Command#error`, with an output tailored to the active verbosity.
6
+ *
7
+ * - In normal mode, a single meaningful line is printed.
8
+ * - When `--verbose` is active, the full cause chain and stack trace are
9
+ * included so users can diagnose the underlying failure.
10
+ */
11
+ export const exitWithError = (command) => (error) => {
12
+ const message = isVerbose(command)
13
+ ? formatErrorDetailed(error)
14
+ : toErrorMessage(error);
15
+ command.error(message);
16
+ };
17
+ /**
18
+ * Casts an unknown thrown value to an Error instance with a descriptive
19
+ * message, preserving the original value as the cause.
20
+ *
21
+ * Use as the error-mapper argument for `ResultAsync.fromPromise`.
22
+ */
23
+ export const asError = (message) => (cause) => new Error(message, { cause });
24
+ /**
25
+ * Builds an error handler for command actions that selects the appropriate
26
+ * reporting strategy based on the requested output mode.
27
+ *
28
+ * - In JSON mode the error is written to the presenter and the process exit
29
+ * code is set to 1 (so the caller can return cleanly without throwing).
30
+ * - In text mode Commander's `command.error()` is used, which prints a
31
+ * human-readable message and exits immediately.
32
+ */
33
+ export const reportCommandError = (command, presenter, outputMode) => (error) => {
34
+ if (outputMode === "json") {
35
+ presenter.reportError(error);
36
+ process.exitCode = 1;
37
+ }
38
+ else {
39
+ exitWithError(command)(error);
40
+ }
41
+ };
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1lcnJvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlcnMvY29tbWFuZGVyL2NvbW1hbmQtZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FDeEIsQ0FBQyxPQUFnQixFQUFFLEVBQUUsQ0FDckIsQ0FBQyxLQUFjLEVBQVMsRUFBRTtJQUN4QixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7UUFDNUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVKOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUNsQixDQUFDLE9BQWUsRUFBRSxFQUFFLENBQ3BCLENBQUMsS0FBYyxFQUFTLEVBQUUsQ0FDeEIsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUVsQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUM3QixDQUNFLE9BQWdCLEVBQ2hCLFNBQTJCLEVBQzNCLFVBQTJCLEVBQzNCLEVBQUUsQ0FDSixDQUFDLEtBQVksRUFBUSxFQUFFO0lBQ3JCLElBQUksVUFBVSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztTQUFNLENBQUM7UUFDTixhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2hhcmVkIENvbW1hbmRlciBmYWlsdXJlIGhhbmRsaW5nIHVzZWQgYnkgY29tbWFuZCBhY3Rpb25zLlxuICovXG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5cbmltcG9ydCB0eXBlIHsgQ29tbWFuZFByZXNlbnRlciB9IGZyb20gXCIuLi8uLi9kb21haW4vY29tbWFuZC1wcmVzZW50ZXIuanNcIjtcblxuaW1wb3J0IHsgZm9ybWF0RXJyb3JEZXRhaWxlZCwgdG9FcnJvck1lc3NhZ2UgfSBmcm9tIFwiLi9lcnJvci1yZXBvcnRpbmcuanNcIjtcbmltcG9ydCB7IGlzVmVyYm9zZSB9IGZyb20gXCIuL2dsb2JhbC1vcHRpb25zLmpzXCI7XG5cbi8qKlxuICogQnVpbGRzIGEgZmFpbHVyZSBoYW5kbGVyIHRoYXQgZW5kcyB0aGUgY29tbWFuZCB2aWEgQ29tbWFuZGVyJ3NcbiAqIGBDb21tYW5kI2Vycm9yYCwgd2l0aCBhbiBvdXRwdXQgdGFpbG9yZWQgdG8gdGhlIGFjdGl2ZSB2ZXJib3NpdHkuXG4gKlxuICogLSBJbiBub3JtYWwgbW9kZSwgYSBzaW5nbGUgbWVhbmluZ2Z1bCBsaW5lIGlzIHByaW50ZWQuXG4gKiAtIFdoZW4gYC0tdmVyYm9zZWAgaXMgYWN0aXZlLCB0aGUgZnVsbCBjYXVzZSBjaGFpbiBhbmQgc3RhY2sgdHJhY2UgYXJlXG4gKiAgIGluY2x1ZGVkIHNvIHVzZXJzIGNhbiBkaWFnbm9zZSB0aGUgdW5kZXJseWluZyBmYWlsdXJlLlxuICovXG5leHBvcnQgY29uc3QgZXhpdFdpdGhFcnJvciA9XG4gIChjb21tYW5kOiBDb21tYW5kKSA9PlxuICAoZXJyb3I6IHVua25vd24pOiBuZXZlciA9PiB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGlzVmVyYm9zZShjb21tYW5kKVxuICAgICAgPyBmb3JtYXRFcnJvckRldGFpbGVkKGVycm9yKVxuICAgICAgOiB0b0Vycm9yTWVzc2FnZShlcnJvcik7XG4gICAgY29tbWFuZC5lcnJvcihtZXNzYWdlKTtcbiAgfTtcblxuLyoqXG4gKiBDYXN0cyBhbiB1bmtub3duIHRocm93biB2YWx1ZSB0byBhbiBFcnJvciBpbnN0YW5jZSB3aXRoIGEgZGVzY3JpcHRpdmVcbiAqIG1lc3NhZ2UsIHByZXNlcnZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFzIHRoZSBjYXVzZS5cbiAqXG4gKiBVc2UgYXMgdGhlIGVycm9yLW1hcHBlciBhcmd1bWVudCBmb3IgYFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlYC5cbiAqL1xuZXhwb3J0IGNvbnN0IGFzRXJyb3IgPVxuICAobWVzc2FnZTogc3RyaW5nKSA9PlxuICAoY2F1c2U6IHVua25vd24pOiBFcnJvciA9PlxuICAgIG5ldyBFcnJvcihtZXNzYWdlLCB7IGNhdXNlIH0pO1xuXG4vKipcbiAqIEJ1aWxkcyBhbiBlcnJvciBoYW5kbGVyIGZvciBjb21tYW5kIGFjdGlvbnMgdGhhdCBzZWxlY3RzIHRoZSBhcHByb3ByaWF0ZVxuICogcmVwb3J0aW5nIHN0cmF0ZWd5IGJhc2VkIG9uIHRoZSByZXF1ZXN0ZWQgb3V0cHV0IG1vZGUuXG4gKlxuICogLSBJbiBKU09OIG1vZGUgdGhlIGVycm9yIGlzIHdyaXR0ZW4gdG8gdGhlIHByZXNlbnRlciBhbmQgdGhlIHByb2Nlc3MgZXhpdFxuICogICBjb2RlIGlzIHNldCB0byAxIChzbyB0aGUgY2FsbGVyIGNhbiByZXR1cm4gY2xlYW5seSB3aXRob3V0IHRocm93aW5nKS5cbiAqIC0gSW4gdGV4dCBtb2RlIENvbW1hbmRlcidzIGBjb21tYW5kLmVycm9yKClgIGlzIHVzZWQsIHdoaWNoIHByaW50cyBhXG4gKiAgIGh1bWFuLXJlYWRhYmxlIG1lc3NhZ2UgYW5kIGV4aXRzIGltbWVkaWF0ZWx5LlxuICovXG5leHBvcnQgY29uc3QgcmVwb3J0Q29tbWFuZEVycm9yID1cbiAgKFxuICAgIGNvbW1hbmQ6IENvbW1hbmQsXG4gICAgcHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLFxuICAgIG91dHB1dE1vZGU6IFwianNvblwiIHwgXCJ0ZXh0XCIsXG4gICkgPT5cbiAgKGVycm9yOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgIGlmIChvdXRwdXRNb2RlID09PSBcImpzb25cIikge1xuICAgICAgcHJlc2VudGVyLnJlcG9ydEVycm9yKGVycm9yKTtcbiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBleGl0V2l0aEVycm9yKGNvbW1hbmQpKGVycm9yKTtcbiAgICB9XG4gIH07XG4iXX0=
@@ -14,9 +14,10 @@ import { okAsync, ResultAsync } from "neverthrow";
14
14
  import { requestAuthorizationInputSchema, } from "../../../domain/authorization.js";
15
15
  import { environmentShort } from "../../../domain/environment.js";
16
16
  import { isAzureLocation, locationShort } from "../../azure/locations.js";
17
- import { getPlopInstance, runDeploymentEnvironmentGenerator, } from "../../plop/index.js";
18
- import { exitWithError } from "../index.js";
19
- import { checkAddEnvironmentPreconditions } from "./init.js";
17
+ import { collectDeploymentEnvironmentPayload, getPlopInstance, runDeploymentEnvironmentActions, } from "../../plop/index.js";
18
+ import { asError, reportCommandError } from "../command-errors.js";
19
+ import { createCommandPresenter } from "../presenters/index.js";
20
+ import { runAddEnvironmentPreconditions } from "./init.js";
20
21
  /**
21
22
  * Authorize a Cloud Account (Azure Subscription, AWS Account, ...), creating a Pull Request for each account that requires authorization.
22
23
  */
@@ -73,11 +74,26 @@ const displaySummary = (result) => {
73
74
  }
74
75
  console.log(`${step}. Visit ${chalk.underline("https://dx.pagopa.it/getting-started")} to deploy your first project\n`);
75
76
  };
76
- const addEnvironmentAction = (authorizationService, gitHubService) => checkAddEnvironmentPreconditions()
77
- .andThen(() => ResultAsync.fromPromise(getPlopInstance(), (cause) => new Error("Failed to initialize plop", { cause })))
78
- .andThen((plop) => ResultAsync.fromPromise(runDeploymentEnvironmentGenerator(plop, gitHubService), (cause) => new Error("Failed to run the deployment environment generator", {
79
- cause,
80
- })))
77
+ /**
78
+ * Routes the successful outcome through the presenter: JSON mode emits the
79
+ * structured envelope while text mode renders the human-readable summary.
80
+ */
81
+ const reportSummary = (presenter, outputMode) => (result) => {
82
+ if (outputMode === "json") {
83
+ presenter.reportResult(result);
84
+ }
85
+ else {
86
+ displaySummary(result);
87
+ }
88
+ };
89
+ const trackStep = (presenter, name, task, mapError) => ResultAsync.fromPromise(presenter.trackStep(name, task), mapError);
90
+ const addEnvironmentAction = (authorizationService, gitHubService, presenter) => runAddEnvironmentPreconditions(presenter)
91
+ .andThen(() => trackStep(presenter, "Initializing environment generator...", getPlopInstance, asError("Failed to initialize plop")))
92
+ .andThen((plop) =>
93
+ // The prompt phase must run outside trackStep: in text mode trackStep
94
+ // renders a spinner that occupies the TTY and hides the prompts.
95
+ ResultAsync.fromPromise(collectDeploymentEnvironmentPayload(plop, gitHubService), asError("Failed to run the deployment environment generator")))
96
+ .andThen(({ generator, payload }) => trackStep(presenter, "Creating environment...", () => runDeploymentEnvironmentActions(generator, payload), asError("Failed to create the deployment environment")))
81
97
  .andThen((payload) => authorizeCloudAccounts(authorizationService)(payload).map((authorizationPrs) => ({
82
98
  authorizationPrs,
83
99
  })));
@@ -87,7 +103,10 @@ export const makeAddCommand = (requireGitHubAuth) => new Command()
87
103
  .addCommand(new Command("environment")
88
104
  .description("Add a new deployment environment")
89
105
  .action(async function () {
106
+ const { output } = this.optsWithGlobals();
107
+ const presenter = createCommandPresenter(output);
90
108
  await requireGitHubAuth()
91
- .andThen(({ authorizationService, gitHubService }) => addEnvironmentAction(authorizationService, gitHubService))
92
- .match(displaySummary, exitWithError(this));
109
+ .andThen(({ authorizationService, gitHubService }) => addEnvironmentAction(authorizationService, gitHubService, presenter))
110
+ .match(reportSummary(presenter, output), reportCommandError(this, presenter, output));
93
111
  }));
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbW1hbmRlci9jb21tYW5kcy9hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQjs7Ozs7Ozs7R0FRRztBQUNILE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFNbEQsT0FBTyxFQUdMLCtCQUErQixHQUNoQyxNQUFNLGtDQUFrQyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUUsT0FBTyxFQUNMLG1DQUFtQyxFQUNuQyxlQUFlLEVBQ2YsK0JBQStCLEdBQ2hDLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUNqQyxDQUFDLG9CQUEwQyxFQUFFLEVBQUUsQ0FDL0MsQ0FDRSxVQUE4QixFQUNhLEVBQUU7SUFDN0MsTUFBTSxvQkFBb0IsR0FDeEIsVUFBVSxDQUFDLElBQUksRUFBRSx5QkFBeUIsSUFBSSxFQUFFLENBQUM7SUFFbkQsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEMsT0FBTyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDeEQsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXhDLE1BQU0sVUFBVSxHQUFHLEtBQUssSUFBb0MsRUFBRTtRQUM1RCxNQUFNLE9BQU8sR0FBMEIsRUFBRSxDQUFDO1FBRTFDLEtBQUssTUFBTSxPQUFPLElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO2dCQUM5QyxNQUFNLENBQUMsSUFBSSxDQUNULDREQUE0RCxFQUM1RCxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQ2pDLENBQUM7Z0JBQ0YsU0FBUztZQUNYLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sS0FBSyxHQUFHLCtCQUErQixDQUFDLFNBQVMsQ0FBQztnQkFDdEQsbUJBQW1CLEVBQUUsR0FBRyxNQUFNLElBQUksUUFBUSxJQUFJLFFBQVEsa0JBQWtCO2dCQUN4RSxRQUFRO2dCQUNSLE1BQU07Z0JBQ04sUUFBUSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSTtnQkFDaEMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLFdBQVc7YUFDdEMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRTtvQkFDakUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2lCQUM3QixDQUFDLENBQUM7Z0JBQ0gsU0FBUztZQUNYLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLG9CQUFvQixDQUFDLG9CQUFvQixDQUM1RCxLQUFLLENBQUMsSUFBSSxDQUNYLENBQUM7WUFFRixNQUFNLENBQUMsS0FBSyxDQUNWLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUN4QyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ1IsTUFBTSxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRTtnQkFDakUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxXQUFXO2dCQUM1QixLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDckIsQ0FBQyxDQUNMLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0lBRUYsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FDakUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUNaLENBQUM7QUFDSixDQUFDLENBQUM7QUFNSixNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQWlCLEVBQUUsRUFBRTtJQUMzQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDLENBQUM7SUFFM0UsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDeEMsQ0FBQyxFQUFFLEVBQStDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksQ0FDcEUsQ0FBQztJQUNGLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFDMUUsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxHQUFHLElBQUksV0FBVyxLQUFLLENBQUMsU0FBUyxDQUFDLHNDQUFzQyxDQUFDLGlDQUFpQyxDQUMzRyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxhQUFhLEdBQ2pCLENBQUMsU0FBMkIsRUFBRSxVQUEyQixFQUFFLEVBQUUsQ0FDN0QsQ0FBQyxNQUFpQixFQUFRLEVBQUU7SUFDMUIsSUFBSSxVQUFVLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDMUIsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDO1NBQU0sQ0FBQztRQUNOLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUosTUFBTSxTQUFTLEdBQUcsQ0FDaEIsU0FBMkIsRUFDM0IsSUFBWSxFQUNaLElBQXNCLEVBQ3RCLFFBQStCLEVBQ1osRUFBRSxDQUNyQixXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBRXJFLE1BQU0sb0JBQW9CLEdBQUcsQ0FDM0Isb0JBQTBDLEVBQzFDLGFBQTRCLEVBQzVCLFNBQTJCLEVBQ0ksRUFBRSxDQUNqQyw4QkFBOEIsQ0FBQyxTQUFTLENBQUM7S0FDdEMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUNaLFNBQVMsQ0FDUCxTQUFTLEVBQ1QsdUNBQXVDLEVBQ3ZDLGVBQWUsRUFDZixPQUFPLENBQUMsMkJBQTJCLENBQUMsQ0FDckMsQ0FDRjtLQUNBLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO0FBQ2hCLHNFQUFzRTtBQUN0RSxpRUFBaUU7QUFDakUsV0FBVyxDQUFDLFdBQVcsQ0FDckIsbUNBQW1DLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxFQUN4RCxPQUFPLENBQUMsb0RBQW9ELENBQUMsQ0FDOUQsQ0FDRjtLQUNBLE9BQU8sQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FDbEMsU0FBUyxDQUNQLFNBQVMsRUFDVCx5QkFBeUIsRUFDekIsR0FBRyxFQUFFLENBQUMsK0JBQStCLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUN6RCxPQUFPLENBQUMsNkNBQTZDLENBQUMsQ0FDdkQsQ0FDRjtLQUNBLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ25CLHNCQUFzQixDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUN2RCxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLGdCQUFnQjtDQUNqQixDQUFDLENBQ0gsQ0FDRixDQUFDO0FBRU4sTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsaUJBQW9DLEVBQVcsRUFBRSxDQUM5RSxJQUFJLE9BQU8sRUFBRTtLQUNWLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDWCxXQUFXLENBQUMsdUNBQXVDLENBQUM7S0FDcEQsVUFBVSxDQUNULElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQztLQUN2QixXQUFXLENBQUMsa0NBQWtDLENBQUM7S0FDL0MsTUFBTSxDQUFDLEtBQUs7SUFDWCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBaUIsQ0FBQztJQUN6RCxNQUFNLFNBQVMsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVqRCxNQUFNLGlCQUFpQixFQUFFO1NBQ3RCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxDQUNuRCxvQkFBb0IsQ0FDbEIsb0JBQW9CLEVBQ3BCLGFBQWEsRUFDYixTQUFTLENBQ1YsQ0FDRjtTQUNBLEtBQUssQ0FDSixhQUFhLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxFQUNoQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUM1QyxDQUFDO0FBQ04sQ0FBQyxDQUFDLENBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG4vKipcbiAqIEFkZCBjb21tYW5kIC0gU2NhZmZvbGQgbmV3IGNvbXBvbmVudHMgaW50byBleGlzdGluZyB3b3Jrc3BhY2VzXG4gKlxuICogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyB0aGUgYGR4IGFkZGAgY29tbWFuZCB3aGljaCBhbGxvd3MgZGV2ZWxvcGVycyB0byBzY2FmZm9sZFxuICogbmV3IGNvbXBvbmVudHMgaW50byB0aGVpciBleGlzdGluZyB3b3Jrc3BhY2UgZm9sbG93aW5nIERldkV4IGd1aWRlbGluZXMuXG4gKlxuICogQ3VycmVudGx5IHN1cHBvcnRlZCBjb21wb25lbnRzOlxuICogLSBlbnZpcm9ubWVudDogQWRkIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnQgdG8gdGhlIHByb2plY3RcbiAqL1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcbmltcG9ydCB7IG9rQXN5bmMsIFJlc3VsdEFzeW5jIH0gZnJvbSBcIm5ldmVydGhyb3dcIjtcblxuaW1wb3J0IHR5cGUgeyBDb21tYW5kUHJlc2VudGVyIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9jb21tYW5kLXByZXNlbnRlci5qc1wiO1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkIGFzIEVudmlyb25tZW50UGF5bG9hZCB9IGZyb20gXCIuLi8uLi9wbG9wL2dlbmVyYXRvcnMvZW52aXJvbm1lbnQvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHsgR2xvYmFsT3B0aW9ucyB9IGZyb20gXCIuLi9nbG9iYWwtb3B0aW9ucy5qc1wiO1xuXG5pbXBvcnQge1xuICBBdXRob3JpemF0aW9uUmVzdWx0LFxuICBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgcmVxdWVzdEF1dGhvcml6YXRpb25JbnB1dFNjaGVtYSxcbn0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9hdXRob3JpemF0aW9uLmpzXCI7XG5pbXBvcnQgeyBHaXRIdWJBdXRoRmFjdG9yeSB9IGZyb20gXCIuLi8uLi8uLi9kb21haW4vZGVwZW5kZW5jaWVzLmpzXCI7XG5pbXBvcnQgeyBlbnZpcm9ubWVudFNob3J0IH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9lbnZpcm9ubWVudC5qc1wiO1xuaW1wb3J0IHsgdHlwZSBHaXRIdWJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2RvbWFpbi9naXRodWIuanNcIjtcbmltcG9ydCB7IGlzQXp1cmVMb2NhdGlvbiwgbG9jYXRpb25TaG9ydCB9IGZyb20gXCIuLi8uLi9henVyZS9sb2NhdGlvbnMuanNcIjtcbmltcG9ydCB7XG4gIGNvbGxlY3REZXBsb3ltZW50RW52aXJvbm1lbnRQYXlsb2FkLFxuICBnZXRQbG9wSW5zdGFuY2UsXG4gIHJ1bkRlcGxveW1lbnRFbnZpcm9ubWVudEFjdGlvbnMsXG59IGZyb20gXCIuLi8uLi9wbG9wL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBhc0Vycm9yLCByZXBvcnRDb21tYW5kRXJyb3IgfSBmcm9tIFwiLi4vY29tbWFuZC1lcnJvcnMuanNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbW1hbmRQcmVzZW50ZXIgfSBmcm9tIFwiLi4vcHJlc2VudGVycy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgcnVuQWRkRW52aXJvbm1lbnRQcmVjb25kaXRpb25zIH0gZnJvbSBcIi4vaW5pdC5qc1wiO1xuXG4vKipcbiAqIEF1dGhvcml6ZSBhIENsb3VkIEFjY291bnQgKEF6dXJlIFN1YnNjcmlwdGlvbiwgQVdTIEFjY291bnQsIC4uLiksIGNyZWF0aW5nIGEgUHVsbCBSZXF1ZXN0IGZvciBlYWNoIGFjY291bnQgdGhhdCByZXF1aXJlcyBhdXRob3JpemF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgYXV0aG9yaXplQ2xvdWRBY2NvdW50cyA9XG4gIChhdXRob3JpemF0aW9uU2VydmljZTogQXV0aG9yaXphdGlvblNlcnZpY2UpID0+XG4gIChcbiAgICBlbnZQYXlsb2FkOiBFbnZpcm9ubWVudFBheWxvYWQsXG4gICk6IFJlc3VsdEFzeW5jPEF1dGhvcml6YXRpb25SZXN1bHRbXSwgbmV2ZXI+ID0+IHtcbiAgICBjb25zdCBhY2NvdW50c1RvSW5pdGlhbGl6ZSA9XG4gICAgICBlbnZQYXlsb2FkLmluaXQ/LmNsb3VkQWNjb3VudHNUb0luaXRpYWxpemUgPz8gW107XG5cbiAgICBpZiAoYWNjb3VudHNUb0luaXRpYWxpemUubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gb2tBc3luYyhbXSk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gZ2V0TG9nZ2VyKFtcImR4LWNsaVwiLCBcImFkZC1lbnZpcm9ubWVudFwiXSk7XG4gICAgY29uc3QgeyBuYW1lLCBwcmVmaXggfSA9IGVudlBheWxvYWQuZW52O1xuICAgIGNvbnN0IGVudlNob3J0ID0gZW52aXJvbm1lbnRTaG9ydFtuYW1lXTtcblxuICAgIGNvbnN0IHJlcXVlc3RBbGwgPSBhc3luYyAoKTogUHJvbWlzZTxBdXRob3JpemF0aW9uUmVzdWx0W10+ID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IEF1dGhvcml6YXRpb25SZXN1bHRbXSA9IFtdO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnQgb2YgYWNjb3VudHNUb0luaXRpYWxpemUpIHtcbiAgICAgICAgaWYgKCFpc0F6dXJlTG9jYXRpb24oYWNjb3VudC5kZWZhdWx0TG9jYXRpb24pKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgICBcIlNraXBwaW5nIGF1dGhvcml6YXRpb24gZm9yIHthY2NvdW50fTogdW5zdXBwb3J0ZWQgbG9jYXRpb25cIixcbiAgICAgICAgICAgIHsgYWNjb3VudDogYWNjb3VudC5kaXNwbGF5TmFtZSB9LFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NTaG9ydCA9IGxvY2F0aW9uU2hvcnRbYWNjb3VudC5kZWZhdWx0TG9jYXRpb25dO1xuICAgICAgICBjb25zdCBpbnB1dCA9IHJlcXVlc3RBdXRob3JpemF0aW9uSW5wdXRTY2hlbWEuc2FmZVBhcnNlKHtcbiAgICAgICAgICBib290c3RyYXBJZGVudGl0eUlkOiBgJHtwcmVmaXh9LSR7ZW52U2hvcnR9LSR7bG9jU2hvcnR9LWJvb3RzdHJhcC1pZC0wMWAsXG4gICAgICAgICAgZW52U2hvcnQsXG4gICAgICAgICAgcHJlZml4LFxuICAgICAgICAgIHJlcG9OYW1lOiBlbnZQYXlsb2FkLmdpdGh1Yi5yZXBvLFxuICAgICAgICAgIHN1YnNjcmlwdGlvbk5hbWU6IGFjY291bnQuZGlzcGxheU5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghaW5wdXQuc3VjY2Vzcykge1xuICAgICAgICAgIGxvZ2dlci53YXJuKFwiU2tpcHBpbmcgYXV0aG9yaXphdGlvbiBmb3Ige2FjY291bnR9OiBpbnZhbGlkIGlucHV0XCIsIHtcbiAgICAgICAgICAgIGFjY291bnQ6IGFjY291bnQuZGlzcGxheU5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhdXRob3JpemF0aW9uU2VydmljZS5yZXF1ZXN0QXV0aG9yaXphdGlvbihcbiAgICAgICAgICBpbnB1dC5kYXRhLFxuICAgICAgICApO1xuXG4gICAgICAgIHJlc3VsdC5tYXRjaChcbiAgICAgICAgICAoYXV0aFJlc3VsdCkgPT4gcmVzdWx0cy5wdXNoKGF1dGhSZXN1bHQpLFxuICAgICAgICAgIChlcnJvcikgPT5cbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiQXV0aG9yaXphdGlvbiByZXF1ZXN0IGZhaWxlZCBmb3Ige2FjY291bnR9OiB7ZXJyb3J9XCIsIHtcbiAgICAgICAgICAgICAgYWNjb3VudDogYWNjb3VudC5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICAgZXJyb3I6IGVycm9yLm1lc3NhZ2UsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfTtcblxuICAgIHJldHVybiBSZXN1bHRBc3luYy5mcm9tUHJvbWlzZShyZXF1ZXN0QWxsKCksICgpID0+IFtdKS5vckVsc2UoKCkgPT5cbiAgICAgIG9rQXN5bmMoW10pLFxuICAgICk7XG4gIH07XG5cbnR5cGUgQWRkUmVzdWx0ID0ge1xuICBhdXRob3JpemF0aW9uUHJzOiBBdXRob3JpemF0aW9uUmVzdWx0W107XG59O1xuXG5jb25zdCBkaXNwbGF5U3VtbWFyeSA9IChyZXN1bHQ6IEFkZFJlc3VsdCkgPT4ge1xuICBjb25zdCB7IGF1dGhvcml6YXRpb25QcnMgfSA9IHJlc3VsdDtcbiAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4uYm9sZChcIlxcbkNsb3VkIGVudmlyb25tZW50IGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IVwiKSk7XG5cbiAgbGV0IHN0ZXAgPSAxO1xuICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbi5ib2xkKFwiXFxuTmV4dCBTdGVwczpcIikpO1xuICBjb25zdCBwcnNXaXRoVXJsID0gYXV0aG9yaXphdGlvblBycy5maWx0ZXIoXG4gICAgKHByKTogcHIgaXMgQXV0aG9yaXphdGlvblJlc3VsdCAmIHsgdXJsOiBzdHJpbmcgfSA9PiBwci51cmwgIT0gbnVsbCxcbiAgKTtcbiAgaWYgKHByc1dpdGhVcmwubGVuZ3RoID4gMCkge1xuICAgIGNvbnNvbGUubG9nKGAke3N0ZXArK30uIFJldmlldyB0aGUgQXp1cmUgYXV0aG9yaXphdGlvbiBQdWxsIFJlcXVlc3Qocyk6YCk7XG4gICAgZm9yIChjb25zdCBhdXRoUHIgb2YgcHJzV2l0aFVybCkge1xuICAgICAgY29uc29sZS5sb2coYCAgIC0gJHtjaGFsay51bmRlcmxpbmUoYXV0aFByLnVybCl9YCk7XG4gICAgfVxuICB9XG4gIGNvbnNvbGUubG9nKFxuICAgIGAke3N0ZXB9LiBWaXNpdCAke2NoYWxrLnVuZGVybGluZShcImh0dHBzOi8vZHgucGFnb3BhLml0L2dldHRpbmctc3RhcnRlZFwiKX0gdG8gZGVwbG95IHlvdXIgZmlyc3QgcHJvamVjdFxcbmAsXG4gICk7XG59O1xuXG4vKipcbiAqIFJvdXRlcyB0aGUgc3VjY2Vzc2Z1bCBvdXRjb21lIHRocm91Z2ggdGhlIHByZXNlbnRlcjogSlNPTiBtb2RlIGVtaXRzIHRoZVxuICogc3RydWN0dXJlZCBlbnZlbG9wZSB3aGlsZSB0ZXh0IG1vZGUgcmVuZGVycyB0aGUgaHVtYW4tcmVhZGFibGUgc3VtbWFyeS5cbiAqL1xuY29uc3QgcmVwb3J0U3VtbWFyeSA9XG4gIChwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIsIG91dHB1dE1vZGU6IFwianNvblwiIHwgXCJ0ZXh0XCIpID0+XG4gIChyZXN1bHQ6IEFkZFJlc3VsdCk6IHZvaWQgPT4ge1xuICAgIGlmIChvdXRwdXRNb2RlID09PSBcImpzb25cIikge1xuICAgICAgcHJlc2VudGVyLnJlcG9ydFJlc3VsdChyZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwbGF5U3VtbWFyeShyZXN1bHQpO1xuICAgIH1cbiAgfTtcblxuY29uc3QgdHJhY2tTdGVwID0gPFQsIEU+KFxuICBwcmVzZW50ZXI6IENvbW1hbmRQcmVzZW50ZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgdGFzazogKCkgPT4gUHJvbWlzZTxUPixcbiAgbWFwRXJyb3I6IChjYXVzZTogdW5rbm93bikgPT4gRSxcbik6IFJlc3VsdEFzeW5jPFQsIEU+ID0+XG4gIFJlc3VsdEFzeW5jLmZyb21Qcm9taXNlKHByZXNlbnRlci50cmFja1N0ZXAobmFtZSwgdGFzayksIG1hcEVycm9yKTtcblxuY29uc3QgYWRkRW52aXJvbm1lbnRBY3Rpb24gPSAoXG4gIGF1dGhvcml6YXRpb25TZXJ2aWNlOiBBdXRob3JpemF0aW9uU2VydmljZSxcbiAgZ2l0SHViU2VydmljZTogR2l0SHViU2VydmljZSxcbiAgcHJlc2VudGVyOiBDb21tYW5kUHJlc2VudGVyLFxuKTogUmVzdWx0QXN5bmM8QWRkUmVzdWx0LCBFcnJvcj4gPT5cbiAgcnVuQWRkRW52aXJvbm1lbnRQcmVjb25kaXRpb25zKHByZXNlbnRlcilcbiAgICAuYW5kVGhlbigoKSA9PlxuICAgICAgdHJhY2tTdGVwKFxuICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgIFwiSW5pdGlhbGl6aW5nIGVudmlyb25tZW50IGdlbmVyYXRvci4uLlwiLFxuICAgICAgICBnZXRQbG9wSW5zdGFuY2UsXG4gICAgICAgIGFzRXJyb3IoXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwbG9wXCIpLFxuICAgICAgKSxcbiAgICApXG4gICAgLmFuZFRoZW4oKHBsb3ApID0+XG4gICAgICAvLyBUaGUgcHJvbXB0IHBoYXNlIG11c3QgcnVuIG91dHNpZGUgdHJhY2tTdGVwOiBpbiB0ZXh0IG1vZGUgdHJhY2tTdGVwXG4gICAgICAvLyByZW5kZXJzIGEgc3Bpbm5lciB0aGF0IG9jY3VwaWVzIHRoZSBUVFkgYW5kIGhpZGVzIHRoZSBwcm9tcHRzLlxuICAgICAgUmVzdWx0QXN5bmMuZnJvbVByb21pc2UoXG4gICAgICAgIGNvbGxlY3REZXBsb3ltZW50RW52aXJvbm1lbnRQYXlsb2FkKHBsb3AsIGdpdEh1YlNlcnZpY2UpLFxuICAgICAgICBhc0Vycm9yKFwiRmFpbGVkIHRvIHJ1biB0aGUgZGVwbG95bWVudCBlbnZpcm9ubWVudCBnZW5lcmF0b3JcIiksXG4gICAgICApLFxuICAgIClcbiAgICAuYW5kVGhlbigoeyBnZW5lcmF0b3IsIHBheWxvYWQgfSkgPT5cbiAgICAgIHRyYWNrU3RlcChcbiAgICAgICAgcHJlc2VudGVyLFxuICAgICAgICBcIkNyZWF0aW5nIGVudmlyb25tZW50Li4uXCIsXG4gICAgICAgICgpID0+IHJ1bkRlcGxveW1lbnRFbnZpcm9ubWVudEFjdGlvbnMoZ2VuZXJhdG9yLCBwYXlsb2FkKSxcbiAgICAgICAgYXNFcnJvcihcIkZhaWxlZCB0byBjcmVhdGUgdGhlIGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIiksXG4gICAgICApLFxuICAgIClcbiAgICAuYW5kVGhlbigocGF5bG9hZCkgPT5cbiAgICAgIGF1dGhvcml6ZUNsb3VkQWNjb3VudHMoYXV0aG9yaXphdGlvblNlcnZpY2UpKHBheWxvYWQpLm1hcChcbiAgICAgICAgKGF1dGhvcml6YXRpb25QcnMpID0+ICh7XG4gICAgICAgICAgYXV0aG9yaXphdGlvblBycyxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICk7XG5cbmV4cG9ydCBjb25zdCBtYWtlQWRkQ29tbWFuZCA9IChyZXF1aXJlR2l0SHViQXV0aDogR2l0SHViQXV0aEZhY3RvcnkpOiBDb21tYW5kID0+XG4gIG5ldyBDb21tYW5kKClcbiAgICAubmFtZShcImFkZFwiKVxuICAgIC5kZXNjcmlwdGlvbihcIkFkZCBhIG5ldyBjb21wb25lbnQgdG8geW91ciB3b3Jrc3BhY2VcIilcbiAgICAuYWRkQ29tbWFuZChcbiAgICAgIG5ldyBDb21tYW5kKFwiZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmRlc2NyaXB0aW9uKFwiQWRkIGEgbmV3IGRlcGxveW1lbnQgZW52aXJvbm1lbnRcIilcbiAgICAgICAgLmFjdGlvbihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgeyBvdXRwdXQgfSA9IHRoaXMub3B0c1dpdGhHbG9iYWxzPEdsb2JhbE9wdGlvbnM+KCk7XG4gICAgICAgICAgY29uc3QgcHJlc2VudGVyID0gY3JlYXRlQ29tbWFuZFByZXNlbnRlcihvdXRwdXQpO1xuXG4gICAgICAgICAgYXdhaXQgcmVxdWlyZUdpdEh1YkF1dGgoKVxuICAgICAgICAgICAgLmFuZFRoZW4oKHsgYXV0aG9yaXphdGlvblNlcnZpY2UsIGdpdEh1YlNlcnZpY2UgfSkgPT5cbiAgICAgICAgICAgICAgYWRkRW52aXJvbm1lbnRBY3Rpb24oXG4gICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvblNlcnZpY2UsXG4gICAgICAgICAgICAgICAgZ2l0SHViU2VydmljZSxcbiAgICAgICAgICAgICAgICBwcmVzZW50ZXIsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWF0Y2goXG4gICAgICAgICAgICAgIHJlcG9ydFN1bW1hcnkocHJlc2VudGVyLCBvdXRwdXQpLFxuICAgICAgICAgICAgICByZXBvcnRDb21tYW5kRXJyb3IodGhpcywgcHJlc2VudGVyLCBvdXRwdXQpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgKTtcbiJdfQ==
@@ -1,6 +1,6 @@
1
1
  import { Command } from "commander";
2
- import { ApplyCodemodById } from "../../../use-cases/apply-codemod.js";
3
- import { ListCodemods } from "../../../use-cases/list-codemods.js";
2
+ import type { ApplyCodemodById } from "../../../use-cases/apply-codemod.js";
3
+ import type { ListCodemods } from "../../../use-cases/list-codemods.js";
4
4
  export type CodemodCommandDependencies = {
5
5
  applyCodemodById: ApplyCodemodById;
6
6
  listCodemods: ListCodemods;