projen-cdktf-hybrid-construct 0.4.11 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -59,7 +59,7 @@
59
59
  "stability": "stable"
60
60
  },
61
61
  "homepage": "https://github.com/cdktf/projen-cdktf-hybrid-construct.git",
62
- "jsiiVersion": "5.2.11 (build f6c85b3)",
62
+ "jsiiVersion": "5.2.14 (build 3ac02dc)",
63
63
  "license": "MPL-2.0",
64
64
  "metadata": {
65
65
  "jsii": {
@@ -71,7 +71,7 @@
71
71
  },
72
72
  "name": "projen-cdktf-hybrid-construct",
73
73
  "readme": {
74
- "markdown": "# Projen-CDKTF-Hybrid-Construct\n\nProjen template for CDKTF Constructs that should also be used as Terraform Modules and for republishing Terraform Modules as Constructs.\n\n## Compatibility\n\n- `cdktf` >= 0.18.0\n- `constructs` >= 10.0.107\n\n## Usage\n\n### `HybridModule`\n\nIf you want to write a CDKTF construct and also publish it as a Terraform Module you can use the `HybridModule` template.\n\nYou can initialize such a project using `npx projen new --from projen-cdktf-hybrid-construct hybrid-module`.\n\nA configutation might look like this:\n\n```js\nconst { HybridModule } = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // The name of the module & repository need to start with terraform-cdk-\n name: \"terraform-cdk-my-new-hybrid-construct\",\n repositoryUrl:\n \"github.com/DanielMSchmidt/terraform-cdk-my-new-hybrid-construct\",\n\n author: \"Daniel Schmidt\",\n authorAddress: \"danielmschmidt92@gmail.com\",\n\n // If enabled an example folder with terraform code will be created\n terraformExamples: {\n enabled: true,\n folder: \"terraform\",\n // The configuration to add to the example terraform file\n providerConfig: `\n terraform {\n required_providers {\n aws = {\n source = \"hashicorp/aws\"\n version = \"~> 3.74\"\n }\n }\n # Terraform binary version constraint\n required_version = \">= 1.2.0\"\n }\n\n\n provider \"aws\" {\n region = \"eu-central-1\"\n }\n `,\n },\n\n // If enabled a constructs example folder will be created\n constructExamples: {\n enabled: true,\n folder: \"construct-examples\",\n },\n});\nproject.synth();\n```\n\n### `TerraformModule`\n\nIf you want to republish an existing Terraform module as a CDKTF construct or if you want to repackage them with an easier to use API you can use the `TerraformModule` template.\n\nYou can initialize such a project using `npx projen new --from projen-cdktf-hybrid-construct terraform-module`.\n\nA configutation might look like this:\n\n```js\nconst { TerraformModule } = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new TerraformModule({\n name: \"my-module\",\n author: \"Daniel Schmidt\",\n authorAddress: \"danielmschmidt92@gmail.com\",\n repositoryUrl: \"github.com/DanielMSchmidt/my-module\",\n\n terraformModules: [\n {\n name: \"eks\",\n source: \"terraform-aws-modules/eks/aws\",\n version: \"~> 18.0\",\n },\n {\n name: \"eks-managed-nodegroup\",\n source: \"terraform-aws-modules/eks/aws//modules/eks-managed-node-group\",\n version: \"~> 18.0\",\n },\n ],\n});\n\nproject.synth();\n```\n\n## Publishing\n\n### Open Source\n\nWe have a helper method for easy configuration, but there are still some manual steps required.\n\n```js\nconst {\n HybridModule,\n publishToRegistries,\n} = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // ... all the other options\n ...publishToRegistries({\n name: \"my-new-hybrid-construct\",\n namespace: \"my-org\",\n registries: [\"npm\", \"pypi\", \"nuget\", \"maven\"],\n }),\n});\n```\n\n#### Terraform\n\n1. [Sign in at the registry](https://registry.terraform.io/sign-in)\n2. [Select your repository](https://registry.terraform.io/github/create) and create the module\n\nPlease make sure your repository name starts with `terraform-cdk-`.\n\n#### npm (Typescript)\n\n1. Create an account at [npmjs.com](https://npmjs.com/)\n2. Create an [automation token](https://docs.npmjs.com/creating-and-viewing-access-tokens) on npm\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `NPM_TOKEN` and the value of the token\n\n#### pypi (Python)\n\n1. Create an account at [pypi.org](https://pypi.org/)\n2. Create an [API token](https://pypi.org/help/#apitoken) on pypi\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `TWINE_USERNAME` and the value `__token__` and a second one with the name `TWINE_PASSWORD` and the value of the token\n4. Set the `publishToPypi` section in the options of `HybridModule` or `TerraformModule` (or use the helper mentioned above)\n\n```js\nconst name = \"name-of-my-hybrid-construct\";\nnew HybridModule({\n name,\n // ... other options\n publishToPypi: {\n distName: name,\n module: name.replace(/-/g, \"_\"),\n },\n});\n```\n\n#### Maven (Java)\n\n1. [Create a Sonatype account and repository](https://central.sonatype.org/publish/publish-guide/#introduction)\n2. Create [GitHub Action Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) to configure maven:\n - `MAVEN_USERNAME`\n - `MAVEN_PASSWORD`\n - `MAVEN_STAGING_PROFILE_ID`\n - `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`\n - `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`\n3. Setup the `publishToMaven` section in the options of `HybridModule` or `TerraformModule` (or use the helper mentioned above)\n\n```js\nconst githubNamespace = \"my-org\";\nconst name = \"name-of-my-hybrid-construct\";\nnew HybridModule({\n name,\n // ... other options\n publishToMaven: {\n javaPackage: name.replace(/-/g, \"_\"),\n mavenGroupId: `com.${githubNamespace}`,\n mavenArtifactId: name,\n },\n});\n```\n\n#### NuGet (C#)\n\n1. [Create a NuGet account](https://www.nuget.org/users/account/LogOn) (you might need to create a Microsoft Account if you don't have one)\n2. [Create API keys](https://docs.microsoft.com/en-us/nuget/nuget-org/publish-a-package#create-api-keys)\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `NUGET_API_KEY` and the value of the token\n4. Setup the `publishToNuget` section in the options of `HybridModule` or `TerraformModule` (or use the helper mentioned above)\n\n```js\nconst githubNamespace = \"my-org\";\nconst name = \"name-of-my-hybrid-construct\";\n\nnew HybridModule({\n name,\n // ... other options\n publishToNuget: {\n dotNetNamespace: `MyOrg.NameOfMyHybridConstruct`,\n packageId: `MyOrg.NameOfMyHybridConstruct`,\n },\n});\n```\n\n### Github Packages\n\nWe have a helper method for easy configuration, no extra steps needed:\n\n```js\nconst {\n HybridModule,\n publishToGithubPackages,\n} = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // ... all the other options\n ...publishToGithubPackages({\n name: \"my-new-hybrid-construct\",\n namespace: \"my-org\",\n registries: [\"npm\", \"maven\"], // pypi and nuget are not yet supported\n }),\n});\n```\n\n### Artifactory\n\nWe have a helper method for easy configuration, but there are also some manual steps required.\n\n```js\nconst {\n HybridModule,\n publishToGithubPackages,\n} = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // ... all the other options\n ...publishToGithubPackages({\n name: \"my-new-hybrid-construct\",\n namespace: \"my-org\",\n registries: [\"npm\", \"pypi\", \"nuget\"], // maven is currently not supported, PRs welcome\n artifactoryApiUrl: \"https://artifactory.my-org.com/api/\",\n artifactoryRepository: \"my-repo\", // needs to be the same across all registries, defaults to namespace so \"my-org\" in this case\n }),\n});\n```\n\n#### Terraform\n\nYou can find more information about publishing Terraform Modules to Artifactory [here](https://www.jfrog.com/confluence/display/JFROG/Terraform+Registry#TerraformRegistry-SettingupaLocalModule/ProviderRegistry).\n\n#### npm (Typescript)\n\n1. [Create a virtual npm registry](https://www.jfrog.com/confluence/display/JFROG/npm+Registry#npmRegistry-VirtualnpmRegistry)\n2. [Authenticate against artifactory to get a token](https://www.jfrog.com/confluence/display/JFROG/npm+Registry#npmRegistry-AuthenticatingthenpmClient)\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `NPM_TOKEN` and the value of the token\n\n#### pypi (Python)\n\n1. Create a [local repository](https://www.jfrog.com/confluence/display/JFROG/PyPI+Repositories#PyPIRepositories-LocalRepositories)\n2. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `TWINE_USERNAME` and the artifactory user name and a second one with the name `TWINE_PASSWORD` and the artifactory password\n"
74
+ "markdown": "# Projen-CDKTF-Hybrid-Construct\n\nProjen template for CDKTF Constructs that should also be used as Terraform Modules and for republishing Terraform Modules as Constructs.\n\n## Compatibility\n\n- `cdktf` >= 0.19.0\n- `constructs` >= 10.0.107\n\n## Usage\n\n### `HybridModule`\n\nIf you want to write a CDKTF construct and also publish it as a Terraform Module you can use the `HybridModule` template.\n\nYou can initialize such a project using `npx projen new --from projen-cdktf-hybrid-construct hybrid-module`.\n\nA configutation might look like this:\n\n```js\nconst { HybridModule } = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // The name of the module & repository need to start with terraform-cdk-\n name: \"terraform-cdk-my-new-hybrid-construct\",\n repositoryUrl:\n \"github.com/DanielMSchmidt/terraform-cdk-my-new-hybrid-construct\",\n\n author: \"Daniel Schmidt\",\n authorAddress: \"danielmschmidt92@gmail.com\",\n\n // If enabled an example folder with terraform code will be created\n terraformExamples: {\n enabled: true,\n folder: \"terraform\",\n // The configuration to add to the example terraform file\n providerConfig: `\n terraform {\n required_providers {\n aws = {\n source = \"hashicorp/aws\"\n version = \"~> 3.74\"\n }\n }\n # Terraform binary version constraint\n required_version = \">= 1.2.0\"\n }\n\n\n provider \"aws\" {\n region = \"eu-central-1\"\n }\n `,\n },\n\n // If enabled a constructs example folder will be created\n constructExamples: {\n enabled: true,\n folder: \"construct-examples\",\n },\n});\nproject.synth();\n```\n\n### `TerraformModule`\n\nIf you want to republish an existing Terraform module as a CDKTF construct or if you want to repackage them with an easier to use API you can use the `TerraformModule` template.\n\nYou can initialize such a project using `npx projen new --from projen-cdktf-hybrid-construct terraform-module`.\n\nA configutation might look like this:\n\n```js\nconst { TerraformModule } = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new TerraformModule({\n name: \"my-module\",\n author: \"Daniel Schmidt\",\n authorAddress: \"danielmschmidt92@gmail.com\",\n repositoryUrl: \"github.com/DanielMSchmidt/my-module\",\n\n terraformModules: [\n {\n name: \"eks\",\n source: \"terraform-aws-modules/eks/aws\",\n version: \"~> 18.0\",\n },\n {\n name: \"eks-managed-nodegroup\",\n source: \"terraform-aws-modules/eks/aws//modules/eks-managed-node-group\",\n version: \"~> 18.0\",\n },\n ],\n});\n\nproject.synth();\n```\n\n## Publishing\n\n### Open Source\n\nWe have a helper method for easy configuration, but there are still some manual steps required.\n\n```js\nconst {\n HybridModule,\n publishToRegistries,\n} = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // ... all the other options\n ...publishToRegistries({\n name: \"my-new-hybrid-construct\",\n namespace: \"my-org\",\n registries: [\"npm\", \"pypi\", \"nuget\", \"maven\"],\n }),\n});\n```\n\n#### Terraform\n\n1. [Sign in at the registry](https://registry.terraform.io/sign-in)\n2. [Select your repository](https://registry.terraform.io/github/create) and create the module\n\nPlease make sure your repository name starts with `terraform-cdk-`.\n\n#### npm (Typescript)\n\n1. Create an account at [npmjs.com](https://npmjs.com/)\n2. Create an [automation token](https://docs.npmjs.com/creating-and-viewing-access-tokens) on npm\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `NPM_TOKEN` and the value of the token\n\n#### pypi (Python)\n\n1. Create an account at [pypi.org](https://pypi.org/)\n2. Create an [API token](https://pypi.org/help/#apitoken) on pypi\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `TWINE_USERNAME` and the value `__token__` and a second one with the name `TWINE_PASSWORD` and the value of the token\n4. Set the `publishToPypi` section in the options of `HybridModule` or `TerraformModule` (or use the helper mentioned above)\n\n```js\nconst name = \"name-of-my-hybrid-construct\";\nnew HybridModule({\n name,\n // ... other options\n publishToPypi: {\n distName: name,\n module: name.replace(/-/g, \"_\"),\n },\n});\n```\n\n#### Maven (Java)\n\n1. [Create a Sonatype account and repository](https://central.sonatype.org/publish/publish-guide/#introduction)\n2. Create [GitHub Action Secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) to configure maven:\n - `MAVEN_USERNAME`\n - `MAVEN_PASSWORD`\n - `MAVEN_STAGING_PROFILE_ID`\n - `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`\n - `MAVEN_GPG_PRIVATE_KEY_PASSPHRASE`\n3. Setup the `publishToMaven` section in the options of `HybridModule` or `TerraformModule` (or use the helper mentioned above)\n\n```js\nconst githubNamespace = \"my-org\";\nconst name = \"name-of-my-hybrid-construct\";\nnew HybridModule({\n name,\n // ... other options\n publishToMaven: {\n javaPackage: name.replace(/-/g, \"_\"),\n mavenGroupId: `com.${githubNamespace}`,\n mavenArtifactId: name,\n },\n});\n```\n\n#### NuGet (C#)\n\n1. [Create a NuGet account](https://www.nuget.org/users/account/LogOn) (you might need to create a Microsoft Account if you don't have one)\n2. [Create API keys](https://docs.microsoft.com/en-us/nuget/nuget-org/publish-a-package#create-api-keys)\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `NUGET_API_KEY` and the value of the token\n4. Setup the `publishToNuget` section in the options of `HybridModule` or `TerraformModule` (or use the helper mentioned above)\n\n```js\nconst githubNamespace = \"my-org\";\nconst name = \"name-of-my-hybrid-construct\";\n\nnew HybridModule({\n name,\n // ... other options\n publishToNuget: {\n dotNetNamespace: `MyOrg.NameOfMyHybridConstruct`,\n packageId: `MyOrg.NameOfMyHybridConstruct`,\n },\n});\n```\n\n### Github Packages\n\nWe have a helper method for easy configuration, no extra steps needed:\n\n```js\nconst {\n HybridModule,\n publishToGithubPackages,\n} = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // ... all the other options\n ...publishToGithubPackages({\n name: \"my-new-hybrid-construct\",\n namespace: \"my-org\",\n registries: [\"npm\", \"maven\"], // pypi and nuget are not yet supported\n }),\n});\n```\n\n### Artifactory\n\nWe have a helper method for easy configuration, but there are also some manual steps required.\n\n```js\nconst {\n HybridModule,\n publishToGithubPackages,\n} = require(\"projen-cdktf-hybrid-construct\");\n\nconst project = new HybridModule({\n // ... all the other options\n ...publishToGithubPackages({\n name: \"my-new-hybrid-construct\",\n namespace: \"my-org\",\n registries: [\"npm\", \"pypi\", \"nuget\"], // maven is currently not supported, PRs welcome\n artifactoryApiUrl: \"https://artifactory.my-org.com/api/\",\n artifactoryRepository: \"my-repo\", // needs to be the same across all registries, defaults to namespace so \"my-org\" in this case\n }),\n});\n```\n\n#### Terraform\n\nYou can find more information about publishing Terraform Modules to Artifactory [here](https://www.jfrog.com/confluence/display/JFROG/Terraform+Registry#TerraformRegistry-SettingupaLocalModule/ProviderRegistry).\n\n#### npm (Typescript)\n\n1. [Create a virtual npm registry](https://www.jfrog.com/confluence/display/JFROG/npm+Registry#npmRegistry-VirtualnpmRegistry)\n2. [Authenticate against artifactory to get a token](https://www.jfrog.com/confluence/display/JFROG/npm+Registry#npmRegistry-AuthenticatingthenpmClient)\n3. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `NPM_TOKEN` and the value of the token\n\n#### pypi (Python)\n\n1. Create a [local repository](https://www.jfrog.com/confluence/display/JFROG/PyPI+Repositories#PyPIRepositories-LocalRepositories)\n2. Create a [GitHub Action Secret](https://docs.github.com/en/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository) with the name `TWINE_USERNAME` and the artifactory user name and a second one with the name `TWINE_PASSWORD` and the artifactory password\n"
75
75
  },
76
76
  "repository": {
77
77
  "type": "git",
@@ -191,7 +191,7 @@
191
191
  "custom": {
192
192
  "featured": "true"
193
193
  },
194
- "default": "\"0.18.0\"",
194
+ "default": "\"0.19.0\"",
195
195
  "stability": "stable",
196
196
  "summary": "Minimum target version of this library."
197
197
  },
@@ -466,7 +466,7 @@
466
466
  "custom": {
467
467
  "featured": "true"
468
468
  },
469
- "default": "\"0.18.0\"",
469
+ "default": "\"0.19.0\"",
470
470
  "stability": "stable",
471
471
  "summary": "Minimum target version of this library."
472
472
  },
@@ -603,6 +603,6 @@
603
603
  "symbolId": "src/terraform-module:TerraformVersionConstraint"
604
604
  }
605
605
  },
606
- "version": "0.4.11",
607
- "fingerprint": "gXYuU8ARAlHommhsT2dVcVIdvzodcqIAoiNxpBzOqu4="
606
+ "version": "0.5.0",
607
+ "fingerprint": "RORSjq50iegKi7/N8/bd3sT92bLF3HHDuHGrZf5B0+k="
608
608
  }
package/API.md CHANGED
@@ -4,7 +4,7 @@ Projen template for CDKTF Constructs that should also be used as Terraform Modul
4
4
 
5
5
  ## Compatibility
6
6
 
7
- - `cdktf` >= 0.18.0
7
+ - `cdktf` >= 0.19.0
8
8
  - `constructs` >= 10.0.107
9
9
 
10
10
  ## Usage
@@ -2694,7 +2694,7 @@ public readonly cdktfVersion: string;
2694
2694
  ```
2695
2695
 
2696
2696
  - *Type:* string
2697
- - *Default:* "0.18.0"
2697
+ - *Default:* "0.19.0"
2698
2698
 
2699
2699
  Minimum target version of this library.
2700
2700
 
@@ -5232,7 +5232,7 @@ public readonly cdktfVersion: string;
5232
5232
  ```
5233
5233
 
5234
5234
  - *Type:* string
5235
- - *Default:* "0.18.0"
5235
+ - *Default:* "0.19.0"
5236
5236
 
5237
5237
  Minimum target version of this library.
5238
5238
 
package/README.md CHANGED
@@ -4,7 +4,7 @@ Projen template for CDKTF Constructs that should also be used as Terraform Modul
4
4
 
5
5
  ## Compatibility
6
6
 
7
- - `cdktf` >= 0.18.0
7
+ - `cdktf` >= 0.19.0
8
8
  - `constructs` >= 10.0.107
9
9
 
10
10
  ## Usage
@@ -16,7 +16,7 @@ export interface TerraformExamplesOption {
16
16
  export interface HybridModuleOptions extends ConstructLibraryOptions {
17
17
  /**
18
18
  * Minimum target version of this library.
19
- * @default "0.18.0"
19
+ * @default "0.19.0"
20
20
  * @featured
21
21
  */
22
22
  readonly cdktfVersion?: string;
@@ -116,14 +116,14 @@ class HybridModule extends cdk_1.JsiiProject {
116
116
  postBuildSteps: [],
117
117
  });
118
118
  const constructVersion = options.constructVersion || "10.0.107";
119
- const cdktfVersion = options.cdktfVersion || "0.18.0";
119
+ const cdktfVersion = options.cdktfVersion || "0.19.0";
120
120
  console.log({ cdktfVersion, constructVersion });
121
121
  this.addPeerDeps(`constructs@${constructVersion}`, `cdktf@${cdktfVersion}`);
122
122
  this.addDevDeps(`cdktf-cli@${cdktfVersion}`, "ts-node@>=10.9.1", "jsii-docgen@^9.0.0");
123
123
  this.addKeywords("cdk", "cdktf", "cdktf-hybrid", "terraform");
124
124
  this.setScript("terraform:test", "./scripts/tf-module-test.sh");
125
125
  // Module Entrypoint
126
- this.addDeps("@cdktf/tf-module-stack@>=3.0.0");
126
+ this.addDeps("@cdktf/tf-module-stack@>=4.0.0");
127
127
  const moduleDocs = `
128
128
  # My Awesome Module
129
129
 
@@ -325,5 +325,5 @@ done
325
325
  }
326
326
  exports.HybridModule = HybridModule;
327
327
  _a = JSII_RTTI_SYMBOL_1;
328
- HybridModule[_a] = { fqn: "projen-cdktf-hybrid-construct.HybridModule", version: "0.4.11" };
329
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlicmlkLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oeWJyaWQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7OztHQUdHO0FBRUgsNkJBQTZCO0FBQzdCLG1DQUFpRTtBQUNqRSx3Q0FBc0U7QUFDdEUseUNBQXNDO0FBNkR0QyxNQUFNLGdCQUFnQixHQUFHOzs7Ozs7Ozs7Ozs7Q0FZeEIsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJ6QixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQnJCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHOzs7Ozs7Ozs7S0FTdkIsQ0FBQztBQUVOLE1BQU0sVUFBVyxTQUFRLGlCQUFRO0lBQy9CLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFVLE9BQWU7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDdkIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBSG1ELFlBQU8sR0FBUCxPQUFPLENBQVE7SUFJdkUsQ0FBQztJQUVTLGlCQUFpQixDQUFDLENBQVk7UUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBUSxTQUFRLGlCQUFRO0lBQzVCLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFVLE9BQWU7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDdkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsS0FBSyxFQUFFLDJDQUEyQztTQUM3RCxDQUFDLENBQUM7UUFMbUQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQU12RSxDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPO0VBQ1QsSUFBSSxDQUFDLE9BQU8sRUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpREwsQ0FBQyxJQUFJLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDakQsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QixDQUFDLENBQUM7UUFFSCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOztBQTlRSCxvQ0ErUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEZpbGVCYXNlLCBJUmVzb2x2ZXIsIFByb2plY3QsIFNhbXBsZURpciB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IEpzaWlQcm9qZWN0LCBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2Nka1wiO1xuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tIFwiLi9kZWZhdWx0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdEV4YW1wbGVzT3B0aW9uIHtcbiAgLy8gSWYgc2V0IGNvbnN0cnVjdCBleGFtcGxlcyB3aWxsIGJlIHJlbmRlcmVkXG4gIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8vIFBhdGggZm9yIHRoZSBjb25zdHJ1Y3QgZXhhbXBsZXNcbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybUV4YW1wbGVzT3B0aW9uIHtcbiAgLy8gSWYgc2V0IHRlcnJhZm9ybSBleGFtcGxlcyB3aWxsIGJlIHJlbmRlcmVkXG4gIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8vIFBhdGggZm9yIHRoZSB0ZXJyYWZvcm0gZXhhbXBsZXNcbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xuICAvLyBUaGUgSENMIGNvbmZpZyBmaWxlIHRvIHVzZSBmb3IgdGhlIHRlcnJhZm9ybSBwcm92aWRlclxuICByZWFkb25seSBwcm92aWRlckNvbmZpZz86IHN0cmluZztcbiAgLy8gSENMIGV4YW1wbGUgY29uZmlnXG4gIHJlYWRvbmx5IGV4YW1wbGVDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh5YnJpZE1vZHVsZU9wdGlvbnMgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHRhcmdldCB2ZXJzaW9uIG9mIHRoaXMgbGlicmFyeS5cbiAgICogQGRlZmF1bHQgXCIwLjE4LjBcIlxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGNka3RmVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQ29uc3RydWN0IHZlcnNpb24gdG8gdXNlXG4gICAqIEBkZWZhdWx0IFwiXjEwLjAuMTA3XCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIHRlcnJhZm9ybSBleGFtcGxlcyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybUV4YW1wbGVzPzogVGVycmFmb3JtRXhhbXBsZXNPcHRpb247XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIGNvbnN0cnVjdCBleGFtcGxlcyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdEV4YW1wbGVzPzogQ29uc3RydWN0RXhhbXBsZXNPcHRpb247XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIHRlcnJhZm9ybSBleGFtcGxlcyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkXG4gICAqRGVmYXVsdHMgdG8gYSB1dWlkIHN0cmluZyBhcyBjZGt0ZiB3b3VsZFxuICAgKiBNb3N0bHkgdXNlZCBmb3IgdGVzdGluZyB0byBoYXZlIGEgcHJlZGljdGFibGUgcmVzdWx0XG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIHRlcnJhZm9ybSBwbGFuIGlzIGJlaW5nIHJ1biBhcyBwYXJ0IG9mIHRoZSB0ZXN0c1xuICAgKi9cbiAgcmVhZG9ubHkgcnVuUGxhbj86IGJvb2xlYW47XG59XG5cbmNvbnN0IGNvbnN0cnVjdFNyY0NvZGUgPSBgXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE15Q29uc3RydWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHByb3BlcnR5QTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTXlDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwdWJsaWMgY29uZmlnOiBNeUNvbnN0cnVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICB9XG59XG5gO1xuXG5jb25zdCBjb25zdHJ1Y3RUZXN0Q29kZSA9IGBcbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCBcImNka3RmL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IE15Q29uc3RydWN0IH0gZnJvbSBcIi4uL1wiO1xuXG4vLyBUbyBsZWFybiBtb3JlIGFib3V0IHRlc3Rpbmcgc2VlIGNkay50Zi90ZXN0aW5nXG5kZXNjcmliZShcIk15Q29uc3RydWN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgc3ludGhlc2l6ZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgVGVzdGluZy5zeW50aFNjb3BlKChzY29wZSkgPT4ge1xuICAgICAgICBuZXcgTXlDb25zdHJ1Y3Qoc2NvcGUsIFwibXktY29uc3RydWN0XCIsIHtcbiAgICAgICAgICBwcm9wZXJ0eUE6IFwidmFsdWVBXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcbn0pO1xuYDtcblxuY29uc3QgbW9kdWxlU3JjQ29kZSA9IGBcbmltcG9ydCB7IEFwcCB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRGTW9kdWxlU3RhY2sgfSBmcm9tIFwiQGNka3RmL3RmLW1vZHVsZS1zdGFja1wiO1xuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiLi9pbmRleFwiO1xuXG5jbGFzcyBNeUF3ZXNvbWVNb2R1bGUgZXh0ZW5kcyBURk1vZHVsZVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgTXlDb25zdHJ1Y3QodGhpcywgXCJteS1jb25zdHJ1Y3RcIiwge1xuICAgICAgcHJvcGVydHlBOiBcInZhbHVlQVwiLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbi8vIFRoaXMgaXMgdGhlIG5hbWUgdGhlIG1vZHVsZSBjYW4gYmUgZm91bmQgdW5kZXIuIFxuLy8gV2UgZXhwZWN0IGEgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuXG4vLyBUaGUgUkVBRE1FLm1kIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbSB0aGlzIGZpbGUuXG5uZXcgTXlBd2Vzb21lTW9kdWxlKGFwcCwgXCJteS1hd2Vzb21lLW1vZHVsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuY29uc3QgdGVycmFmb3JtUmVhZG1lRG9jcyA9IGBcbiMgUGxlYXNlIGFkZCBoZXJlIHNvbWUgcHVyZSBIQ0wgdGVzdHMgZm9yIHlvdXIgbW9kdWxlcyBpbiBvcmRlciB0byB0ZXN0IEhDTCBJbnRlcm9wZXJhYmlsaXR5XG5cbkV4YW1wbGVzOlxuXG5tb2R1bGUgXCJteV9hd2Vzb21lX3Rlc3RcIiB7XG4gIHNvdXJjZSA9IFwiLi4vbW9kdWxlcy9teS1hd2Vzb21lLW1vZHVsZXNcIlxuICAuLi52YXJpYWJsZXMuLi5cbn1cbiAgICBgO1xuXG5jbGFzcyBTY3JpcHRGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKHByb2plY3QsIGZpbGVQYXRoLCB7XG4gICAgICBleGVjdXRhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KF86IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudDtcbiAgfVxufVxuXG5jbGFzcyBIQ0xGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKHByb2plY3QsIGZpbGVQYXRoLCB7XG4gICAgICBleGVjdXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiBmYWxzZSwgLy8gdGVycmFmb3JtIGZtdCBtaWdodCB3YW50IHRvIG92ZXJ3cml0ZSBpdFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KF86IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGAjIFRoaXMgZmlsZSBpcyBtYW5hZ2VkIGJ5IHByb2plbi4gRG8gbm90IGVkaXQsIGNoYW5nZSB0aGUgLnByb2plbnJjIGZpbGUgaW5zdGVhZC5cbiR7dGhpcy5jb250ZW50fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBIeWJyaWQgQ0RLVEYgQ29uc3RydWN0IC8gVGVycmFmb3JtIE1vZHVsZVxuICpcbiAqIEBwamlkIGh5YnJpZC1tb2R1bGVcbiAqL1xuZXhwb3J0IGNsYXNzIEh5YnJpZE1vZHVsZSBleHRlbmRzIEpzaWlQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogSHlicmlkTW9kdWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGVzbGludE9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMuZXNsaW50T3B0aW9ucywge1xuICAgICAgICBsaW50UHJvamVuUmM6IGZhbHNlLFxuICAgICAgfSksXG4gICAgICBwb3N0QnVpbGRTdGVwczogW10sXG4gICAgfSk7XG4gICAgY29uc3QgY29uc3RydWN0VmVyc2lvbiA9IG9wdGlvbnMuY29uc3RydWN0VmVyc2lvbiB8fCBcIjEwLjAuMTA3XCI7XG4gICAgY29uc3QgY2RrdGZWZXJzaW9uID0gb3B0aW9ucy5jZGt0ZlZlcnNpb24gfHwgXCIwLjE4LjBcIjtcblxuICAgIGNvbnNvbGUubG9nKHsgY2RrdGZWZXJzaW9uLCBjb25zdHJ1Y3RWZXJzaW9uIH0pO1xuICAgIHRoaXMuYWRkUGVlckRlcHMoYGNvbnN0cnVjdHNAJHtjb25zdHJ1Y3RWZXJzaW9ufWAsIGBjZGt0ZkAke2Nka3RmVmVyc2lvbn1gKTtcbiAgICB0aGlzLmFkZERldkRlcHMoXG4gICAgICBgY2RrdGYtY2xpQCR7Y2RrdGZWZXJzaW9ufWAsXG4gICAgICBcInRzLW5vZGVAPj0xMC45LjFcIixcbiAgICAgIFwianNpaS1kb2NnZW5AXjkuMC4wXCJcbiAgICApO1xuICAgIHRoaXMuYWRkS2V5d29yZHMoXCJjZGtcIiwgXCJjZGt0ZlwiLCBcImNka3RmLWh5YnJpZFwiLCBcInRlcnJhZm9ybVwiKTtcbiAgICB0aGlzLnNldFNjcmlwdChcInRlcnJhZm9ybTp0ZXN0XCIsIFwiLi9zY3JpcHRzL3RmLW1vZHVsZS10ZXN0LnNoXCIpO1xuXG4gICAgLy8gTW9kdWxlIEVudHJ5cG9pbnRcbiAgICB0aGlzLmFkZERlcHMoXCJAY2RrdGYvdGYtbW9kdWxlLXN0YWNrQD49My4wLjBcIik7XG4gICAgY29uc3QgbW9kdWxlRG9jcyA9IGBcbiMgTXkgQXdlc29tZSBNb2R1bGVcblxuIyMgVXNhZ2VcblxuXFxgXFxgXFxgaGNsXG5tb2R1bGUgXCJla3NfbWFuYWdlZF9ub2RlX2dyb3VwXCIge1xuICBzb3VyY2UgPSBcIiR7XG4gICAgb3B0aW9ucy5yZXBvc2l0b3J5VXJsXG4gICAgICA/LnJlcGxhY2UoXCJodHRwczovL2dpdGh1Yi5jb20vXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZShcImh0dHA6Ly9naXRodWIuY29tL1wiLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoXCJnaXRodWIuY29tL1wiLCBcIlwiKSB8fCBcIm15LWdpdGh1Yi1yZXBvXCJcbiAgfS8vbW9kdWxlcy9teS1hd2Vzb21lLW1vZHVsZVwiXG5cbn1cblxcYFxcYFxcYFxuICAgIGA7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHRoaXMsIHRoaXMuc3JjZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcImluZGV4LnRzXCI6IGNvbnN0cnVjdFNyY0NvZGUudHJpbSgpLFxuICAgICAgICBcInRmTW9kdWxlcy50c1wiOiBtb2R1bGVTcmNDb2RlLnRyaW0oKSxcbiAgICAgICAgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiOiBtb2R1bGVEb2NzLnRyaW0oKSxcbiAgICAgICAgXCJjZGt0Zi5qc29uXCI6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhbmd1YWdlOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgICAgIGFwcDogXCJucHggdHMtbm9kZSB0Zk1vZHVsZXMudHNcIixcbiAgICAgICAgICAgIHRlcnJhZm9ybVByb3ZpZGVyczogW1wiaGFzaGljb3JwL251bGxAMy4xLjFcIl0sIC8vIFdlIG5lZWQgYXQgbGVhc3QgYSBwcm92aWRlciBmb3IgZ2V0IHRvIHN1Y2NlZWRcbiAgICAgICAgICAgIHRlcnJhZm9ybU1vZHVsZXM6IFtdLFxuICAgICAgICAgICAgb3V0cHV0OiBcIm1vZHVsZXNcIixcbiAgICAgICAgICAgIHByb2plY3RJZDpcbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm9qZWN0SWQgfHxcbiAgICAgICAgICAgICAgXCJoeWJyaWQtbW9kdWxlLWZiNzM0ZGJhLWVhYzktNDY2Yy05NmJiLTdlYjljNDA2YzI4YVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAyXG4gICAgICAgICksXG4gICAgICAgIFwiX190ZXN0c19fL2luZGV4LXRlc3QudHNcIjogY29uc3RydWN0VGVzdENvZGUudHJpbSgpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLnRlcnJhZm9ybUV4YW1wbGVzICYmIG9wdGlvbnMudGVycmFmb3JtRXhhbXBsZXMuZW5hYmxlZCkge1xuICAgICAgY29uc3QgcHJvdmlkZXJDb25maWcgPVxuICAgICAgICBvcHRpb25zLnRlcnJhZm9ybUV4YW1wbGVzLnByb3ZpZGVyQ29uZmlnIHx8XG4gICAgICAgIGBcbnRlcnJhZm9ybSB7XG4gICMgVGVycmFmb3JtIGJpbmFyeSB2ZXJzaW9uIGNvbnN0cmFpbnRcbiAgcmVxdWlyZWRfdmVyc2lvbiA9IFwiPj0gMS4yLjBcIlxuXG4gICMgRGVmaW5lIGFsbCBuZWVkZWQgcHJvdmlkZXJzIGhlcmUsIHlvdSBjYW4gZmluZCBhbGwgYXZhaWxhYmxlIHByb3ZpZGVycyBoZXJlOlxuICAjIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL1xuICByZXF1aXJlZF9wcm92aWRlcnMge31cbn1cblxuIyBJbml0aWFsaXplIHlvdXIgcHJvdmlkZXIgaGVyZVxuXG5gLnRyaW0oKTtcbiAgICAgIGNvbnN0IGV4YW1wbGVzRm9sZGVyID1cbiAgICAgICAgb3B0aW9ucy50ZXJyYWZvcm1FeGFtcGxlcy5mb2xkZXIgfHwgXCJ0ZXJyYWZvcm0tZXhhbXBsZXNcIjtcblxuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBleGFtcGxlc0ZvbGRlciwge1xuICAgICAgICBmaWxlczoge1xuICAgICAgICAgIFwibWFpbi50ZlwiOlxuICAgICAgICAgICAgb3B0aW9ucy50ZXJyYWZvcm1FeGFtcGxlcy5leGFtcGxlQ29kZSB8fFxuICAgICAgICAgICAgYCMgQ29uZmlndXJlIHlvdSBtb2R1bGUgaGVyZWAsXG4gICAgICAgICAgXCJSRUFETUUubWRcIjogdGVycmFmb3JtUmVhZG1lRG9jcy50cmltKCksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgbmV3IEhDTEZpbGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHBhdGguam9pbihleGFtcGxlc0ZvbGRlciwgXCJwcm92aWRlci50ZlwiKSxcbiAgICAgICAgcHJvdmlkZXJDb25maWdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFxuICAgICAgICBgJHtleGFtcGxlc0ZvbGRlcn0vLnRlcnJhZm9ybWAsXG4gICAgICAgIGAke2V4YW1wbGVzRm9sZGVyfS8udGVycmFmb3JtLmxvY2suaGNsYFxuICAgICAgKTtcblxuICAgICAgbmV3IFNjcmlwdEZpbGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiLi9zY3JpcHRzL3RmLW1vZHVsZS10ZXN0LnNoXCIsXG4gICAgICAgIGAjIS9iaW4vYmFzaFxuIyBUaGlzIHNjcmlwdCBpcyBjcmVhdGVkIGJ5IHByb2plbiwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkuXG5zZXQgLWVcblxudGVycmFmb3JtIC1jaGRpcj0ke2V4YW1wbGVzRm9sZGVyfSBpbml0IC0tdXBncmFkZVxudGVycmFmb3JtIC1jaGRpcj0ke2V4YW1wbGVzRm9sZGVyfSBmbXRcbnRlcnJhZm9ybSAtY2hkaXI9JHtleGFtcGxlc0ZvbGRlcn0gdmFsaWRhdGVcbiR7b3B0aW9ucy5ydW5QbGFuID8gYHRlcnJhZm9ybSAtY2hkaXI9JHtleGFtcGxlc0ZvbGRlcn0gcGxhbmAgOiBcIlwifVxuICAgICAgICAgIGBcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudGVzdFRhc2suZXhlYyhcIi4vc2NyaXB0cy90Zi1tb2R1bGUtdGVzdC5zaFwiKTtcbiAgICAgIHRoaXMuamVzdD8uYWRkSWdub3JlUGF0dGVybihgPHJvb3REaXI+LyR7ZXhhbXBsZXNGb2xkZXJ9YCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29uc3RydWN0RXhhbXBsZXMgJiYgb3B0aW9ucy5jb25zdHJ1Y3RFeGFtcGxlcy5lbmFibGVkKSB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyID1cbiAgICAgICAgb3B0aW9ucy5jb25zdHJ1Y3RFeGFtcGxlcy5mb2xkZXIgfHwgXCJjb25zdHJ1Y3QtZXhhbXBsZXNcIjtcblxuICAgICAgY29uc3QgbGV2ZWxzID0gY29uc3RydWN0RXhhbXBsZUZvbGRlclxuICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgIC5zcGxpY2UoMCwgMSlcbiAgICAgICAgLm1hcCgoKSA9PiBcIi4uXCIpXG4gICAgICAgIC5qb2luKFwiL1wiKTtcblxuICAgICAgY29uc3QgY29uc3RydWN0UmVhZG1lRG9jcyA9IGBcbiMgQ29uc3RydWN0IEV4YW1wbGVzXG5cbkV4YW1wbGUgdXNlLWNhc2VzIGZvciB0aGUgQ29uc3RydWN0IGxpYnJhcnkuXG5cbi0gW0Jhc2ljIFVzYWdlXSguL2Jhc2ljLnRzKVxuXG5UbyBlbnN1cmUgYWxsIGV4YW1wbGVzIGFyZSB3b3JraW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRoZSBbaW5kZXgudHNdKC4vaW5kZXgudHMpIGZpbGUgaXMgaW1wb3J0aW5nIGFsbCBvZiB0aGVtLlxuYDtcblxuICAgICAgY29uc3QgY29uc3RydWN0RXhhbXBsZUNvZGUgPSBgXG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiJHtsZXZlbHN9L3NyYy9cIjtcblxuZXhwb3J0IGNsYXNzIEJhc2ljRXhhbXBsZSBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIG5hbWUpO1xuXG4gICAgbmV3IE15Q29uc3RydWN0KHRoaXMsIFwibXktY29uc3RydWN0XCIsIHtcbiAgICAgIHByb3BlcnR5QTogXCJ2YWx1ZUFcIixcbiAgICB9KTtcbiAgfVxufVxuXG5cbmA7XG5cbiAgICAgIGNvbnN0IGV4YW1wbGVDb2xsZWN0aW9uQ29kZSA9IGBcbi8vIFRoaXMgZmlsZSB3aWxsIGJlIHN5bnRoZXNpemVkIHRvIGNoZWNrIGlmIGFsbCBleGFtcGxlcyBhcmUgd29ya2luZ1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiY2RrdGZcIjtcbi8vIEFsbCBleGFtcGxlcyBuZWVkIHRvIGJlIGltcG9ydGVkIGhlcmVcbmltcG9ydCB7IEJhc2ljRXhhbXBsZSB9IGZyb20gXCIuL2Jhc2ljXCI7XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxuLy8gQWxsIGV4YW1wbGVzIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgaGVyZVxubmV3IEJhc2ljRXhhbXBsZShhcHAsIFwiYmFzaWMtZXhhbXBsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyLCB7XG4gICAgICAgIGZpbGVzOiB7XG4gICAgICAgICAgXCJpbmRleC50c1wiOiBleGFtcGxlQ29sbGVjdGlvbkNvZGUudHJpbSgpLFxuICAgICAgICAgIFwiYmFzaWMudHNcIjogY29uc3RydWN0RXhhbXBsZUNvZGUudHJpbSgpLFxuICAgICAgICAgIFwiY2RrdGYuanNvblwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFuZ3VhZ2U6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICAgICAgICBhcHA6IGBucHggdHMtbm9kZSAtLXByb2plY3QgJHtsZXZlbHN9L3RzY29uZmlnLmRldi5qc29uIGluZGV4LnRzYCxcbiAgICAgICAgICAgICAgcHJvamVjdElkOlxuICAgICAgICAgICAgICAgIG9wdGlvbnMucHJvamVjdElkIHx8XG4gICAgICAgICAgICAgICAgXCJoeWJyaWQtbW9kdWxlLWZiNzM0ZGJhLWVhYzktNDY2Yy05NmJiLTdlYjljNDA2YzI4YVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKSxcbiAgICAgICAgICBcIlJFQURNRS5tZFwiOiBjb25zdHJ1Y3RSZWFkbWVEb2NzLnRyaW0oKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRlc3RUYXNrLmV4ZWMoYGNka3RmIHN5bnRoYCwge1xuICAgICAgICBjd2Q6IGNvbnN0cnVjdEV4YW1wbGVGb2xkZXIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKGAke2NvbnN0cnVjdEV4YW1wbGVGb2xkZXJ9L2Nka3RmLm91dGApO1xuICAgIH1cblxuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFwic3JjLy5nZW5cIiwgXCJzcmMvY2RrdGYub3V0XCIsIFwic3JjL21vZHVsZXNcIik7XG4gICAgdGhpcy5jb21waWxlVGFzay5wcmVwZW5kRXhlYyhcIm5weCBjZGt0ZiBnZXRcIiwge1xuICAgICAgY3dkOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBpbGVUYXNrLmV4ZWMoXCJjZGt0ZiBzeW50aFwiLCB7XG4gICAgICBjd2Q6IHRoaXMuc3JjZGlyLFxuICAgICAgbmFtZTogXCJTeW50aGVzaXplIG1vZHVsZSBIQ0xcIixcbiAgICB9KTtcblxuICAgIG5ldyBTY3JpcHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIFwic2NyaXB0cy9jb3B5LW1vZHVsZXMuc2hcIixcbiAgICAgIGBcbiMhL2Jpbi9iYXNoXG4jIFRoaXMgc2NyaXB0IGlzIGNyZWF0ZWQgYnkgcHJvamVuLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseS5cbnNldCAtZVxuXG5TQ1JJUFRQQVRIPVwiJCggY2QgLS0gXCIkKGRpcm5hbWUgXCIkMFwiKVwiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApXCJcblxuIyBjaGVjayBpZiB0aGUgbW9kdWxlIGZvbGRlciBoYXMgYmVlbiBnZW5lcmF0ZWQgYXMgZXhwZWN0ZWRcbk1PRFVMRVNfRk9MREVSPSQoIGNkIC0tIFwiJFNDUklQVFBBVEgvLi4vc3JjL21vZHVsZXMvc3RhY2tzXCIgPi9kZXYvbnVsbCAyPiYxIDsgcHdkIC1QIClcblNSQ19GT0xERVI9JCggY2QgLS0gXCIkU0NSSVBUUEFUSC8uLi9zcmMvXCIgPi9kZXYvbnVsbCAyPiYxIDsgcHdkIC1QIClcblRBUkdFVF9GT0xERVI9XCIkU0NSSVBUUEFUSC8uLi9tb2R1bGVzXCJcblxuaWYgWyAhIC1kIFwiJE1PRFVMRVNfRk9MREVSXCIgXTsgdGhlblxuICBlY2hvIFwiRXhwZWN0ZWQgbW9kdWxlIGZvbGRlciB0byBleGlzdCBhdCAkTU9EVUxFU19GT0xERVJcIlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJE1PRFVMRVNfRk9MREVSXCJcbmZvciBkIGluICovIDsgZG9cbiAgICBbIC1MIFwiXFwke2QlL31cIiBdICYmIGNvbnRpbnVlXG5cbiAgICBkaXJuYW1lPVwiXFwke2QlL31cIlxuXG5cbiAgICAjIENoZWNrIGlmIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2VcbiAgICBpZiBbICEgLWYgXCIkTU9EVUxFU19GT0xERVIvJGRpcm5hbWUvY2RrLnRmLmpzb25cIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRXhwZWN0ZWQgY29kZSBmb3IgJGRpcm5hbWUgYXQgY2RrLnRmLmpzb24gdG8gZXhpc3QgYXQgJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lXCJcbiAgICAgIGV4aXQgMVxuICAgIGZpXG5cbiAgICBpZiBbICEgLWYgXCIkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiIF07IHRoZW5cbiAgICAgIGVjaG8gXCJFeHBlY3RlZCBEb2N1bWVudGF0aW9uIGZvciAkZGlybmFtZSBhdCAkZGlybmFtZS5tZCB0byBleGlzdCBhdCAkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiXG4gICAgICBleGl0IDFcbiAgICBmaVxuXG4gICAgIyBDb3B5IG1vZHVsZSBhbmQgcmVhZG1lIHRvZ2V0aGVyXG4gICAgZWNobyBcIkNvcHlpbmcgQ29kZSBhbmQgUkVBRE1FIGZvciBtb2R1bGUgJGRpcm5hbWVcIlxuICAgIG1rZGlyIC1wIFwiJFRBUkdFVF9GT0xERVJcIlxuICAgIG1rZGlyIC1wIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWVcIlxuICAgIGNwIFwiJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lL2Nkay50Zi5qc29uXCIgXCIkVEFSR0VUX0ZPTERFUi8kZGlybmFtZS9jZGsudGYuanNvblwiXG4gICAgY3AgXCIkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWUvUkVBRE1FLm1kXCJcblxuICAgICMgQWRkIFJFQURNRSBoY2wgZG9jc1xuICAgIGlmIHdoaWNoIHRlcnJhZm9ybS1kb2NzID4vZGV2L251bGw7IHRoZW5cbiAgICAgIHRlcnJhZm9ybS1kb2NzIG1hcmtkb3duIHRhYmxlIC0tb3V0cHV0LWZpbGUgXCIkVEFSR0VUX0ZPTERFUi8kZGlybmFtZS9SRUFETUUubWRcIiBcIiRUQVJHRVRfRk9MREVSLyRkaXJuYW1lXCIgXG4gICAgZWxzZVxuICAgICAgZG9ja2VyIHJ1biAtLXJtIC0tdm9sdW1lIFwiJFNDUklQVFBBVEgvLi4vbW9kdWxlczovdGVycmFmb3JtLWRvY3NcIiAtdSAkKGlkIC11KSBxdWF5LmlvL3RlcnJhZm9ybS1kb2NzL3RlcnJhZm9ybS1kb2NzOjAuMTYuMCBtYXJrZG93biB0YWJsZSAtLW91dHB1dC1maWxlIFwiL3RlcnJhZm9ybS1kb2NzLyRkaXJuYW1lL1JFQURNRS5tZFwiIC90ZXJyYWZvcm0tZG9jcy8kZGlybmFtZVxuICAgIGZpXG5kb25lXG5gLnRyaW0oKVxuICAgICk7XG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwiLi9zY3JpcHRzL2NvcHktbW9kdWxlcy5zaFwiLCB7XG4gICAgICBuYW1lOiBcIkNvcHkgSENMIE1vZHVsZXNcIixcbiAgICB9KTtcblxuICAgIC8vIGlnbm9yZSBkaXN0IGluIHRlc3RzXG4gICAgdGhpcy5qZXN0Py5hZGRJZ25vcmVQYXR0ZXJuKFwiZGlzdFwiKTtcbiAgfVxufVxuIl19
328
+ HybridModule[_a] = { fqn: "projen-cdktf-hybrid-construct.HybridModule", version: "0.5.0" };
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlicmlkLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oeWJyaWQtbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7OztHQUdHO0FBRUgsNkJBQTZCO0FBQzdCLG1DQUFpRTtBQUNqRSx3Q0FBc0U7QUFDdEUseUNBQXNDO0FBNkR0QyxNQUFNLGdCQUFnQixHQUFHOzs7Ozs7Ozs7Ozs7Q0FZeEIsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBaUJ6QixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQnJCLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHOzs7Ozs7Ozs7S0FTdkIsQ0FBQztBQUVOLE1BQU0sVUFBVyxTQUFRLGlCQUFRO0lBQy9CLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFVLE9BQWU7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDdkIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBSG1ELFlBQU8sR0FBUCxPQUFPLENBQVE7SUFJdkUsQ0FBQztJQUVTLGlCQUFpQixDQUFDLENBQVk7UUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBUSxTQUFRLGlCQUFRO0lBQzVCLFlBQVksT0FBZ0IsRUFBRSxRQUFnQixFQUFVLE9BQWU7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7WUFDdkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUk7WUFDZixRQUFRLEVBQUUsS0FBSyxFQUFFLDJDQUEyQztTQUM3RCxDQUFDLENBQUM7UUFMbUQsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQU12RSxDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPO0VBQ1QsSUFBSSxDQUFDLE9BQU8sRUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpREwsQ0FBQyxJQUFJLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLEVBQUU7WUFDakQsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QixDQUFDLENBQUM7UUFFSCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxDQUFDOztBQTlRSCxvQ0ErUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEZpbGVCYXNlLCBJUmVzb2x2ZXIsIFByb2plY3QsIFNhbXBsZURpciB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IEpzaWlQcm9qZWN0LCBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB9IGZyb20gXCJwcm9qZW4vbGliL2Nka1wiO1xuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tIFwiLi9kZWZhdWx0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdEV4YW1wbGVzT3B0aW9uIHtcbiAgLy8gSWYgc2V0IGNvbnN0cnVjdCBleGFtcGxlcyB3aWxsIGJlIHJlbmRlcmVkXG4gIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8vIFBhdGggZm9yIHRoZSBjb25zdHJ1Y3QgZXhhbXBsZXNcbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybUV4YW1wbGVzT3B0aW9uIHtcbiAgLy8gSWYgc2V0IHRlcnJhZm9ybSBleGFtcGxlcyB3aWxsIGJlIHJlbmRlcmVkXG4gIHJlYWRvbmx5IGVuYWJsZWQ6IGJvb2xlYW47XG4gIC8vIFBhdGggZm9yIHRoZSB0ZXJyYWZvcm0gZXhhbXBsZXNcbiAgcmVhZG9ubHkgZm9sZGVyPzogc3RyaW5nO1xuICAvLyBUaGUgSENMIGNvbmZpZyBmaWxlIHRvIHVzZSBmb3IgdGhlIHRlcnJhZm9ybSBwcm92aWRlclxuICByZWFkb25seSBwcm92aWRlckNvbmZpZz86IHN0cmluZztcbiAgLy8gSENMIGV4YW1wbGUgY29uZmlnXG4gIHJlYWRvbmx5IGV4YW1wbGVDb2RlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh5YnJpZE1vZHVsZU9wdGlvbnMgZXh0ZW5kcyBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pbXVtIHRhcmdldCB2ZXJzaW9uIG9mIHRoaXMgbGlicmFyeS5cbiAgICogQGRlZmF1bHQgXCIwLjE5LjBcIlxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGNka3RmVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogQ29uc3RydWN0IHZlcnNpb24gdG8gdXNlXG4gICAqIEBkZWZhdWx0IFwiXjEwLjAuMTA3XCJcbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIHRlcnJhZm9ybSBleGFtcGxlcyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybUV4YW1wbGVzPzogVGVycmFmb3JtRXhhbXBsZXNPcHRpb247XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIGNvbnN0cnVjdCBleGFtcGxlcyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkXG4gICAqIEBkZWZhdWx0IHVuZGVmaW5lZFxuICAgKiBAZmVhdHVyZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdEV4YW1wbGVzPzogQ29uc3RydWN0RXhhbXBsZXNPcHRpb247XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIHRlcnJhZm9ybSBleGFtcGxlcyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkXG4gICAqRGVmYXVsdHMgdG8gYSB1dWlkIHN0cmluZyBhcyBjZGt0ZiB3b3VsZFxuICAgKiBNb3N0bHkgdXNlZCBmb3IgdGVzdGluZyB0byBoYXZlIGEgcHJlZGljdGFibGUgcmVzdWx0XG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElmIHNldCBhIHRlcnJhZm9ybSBwbGFuIGlzIGJlaW5nIHJ1biBhcyBwYXJ0IG9mIHRoZSB0ZXN0c1xuICAgKi9cbiAgcmVhZG9ubHkgcnVuUGxhbj86IGJvb2xlYW47XG59XG5cbmNvbnN0IGNvbnN0cnVjdFNyY0NvZGUgPSBgXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE15Q29uc3RydWN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHByb3BlcnR5QTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTXlDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwdWJsaWMgY29uZmlnOiBNeUNvbnN0cnVjdE9wdGlvbnMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICB9XG59XG5gO1xuXG5jb25zdCBjb25zdHJ1Y3RUZXN0Q29kZSA9IGBcbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCBcImNka3RmL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IE15Q29uc3RydWN0IH0gZnJvbSBcIi4uL1wiO1xuXG4vLyBUbyBsZWFybiBtb3JlIGFib3V0IHRlc3Rpbmcgc2VlIGNkay50Zi90ZXN0aW5nXG5kZXNjcmliZShcIk15Q29uc3RydWN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgc3ludGhlc2l6ZVwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgVGVzdGluZy5zeW50aFNjb3BlKChzY29wZSkgPT4ge1xuICAgICAgICBuZXcgTXlDb25zdHJ1Y3Qoc2NvcGUsIFwibXktY29uc3RydWN0XCIsIHtcbiAgICAgICAgICBwcm9wZXJ0eUE6IFwidmFsdWVBXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcbn0pO1xuYDtcblxuY29uc3QgbW9kdWxlU3JjQ29kZSA9IGBcbmltcG9ydCB7IEFwcCB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRGTW9kdWxlU3RhY2sgfSBmcm9tIFwiQGNka3RmL3RmLW1vZHVsZS1zdGFja1wiO1xuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiLi9pbmRleFwiO1xuXG5jbGFzcyBNeUF3ZXNvbWVNb2R1bGUgZXh0ZW5kcyBURk1vZHVsZVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgTXlDb25zdHJ1Y3QodGhpcywgXCJteS1jb25zdHJ1Y3RcIiwge1xuICAgICAgcHJvcGVydHlBOiBcInZhbHVlQVwiLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbi8vIFRoaXMgaXMgdGhlIG5hbWUgdGhlIG1vZHVsZSBjYW4gYmUgZm91bmQgdW5kZXIuIFxuLy8gV2UgZXhwZWN0IGEgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuXG4vLyBUaGUgUkVBRE1FLm1kIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbSB0aGlzIGZpbGUuXG5uZXcgTXlBd2Vzb21lTW9kdWxlKGFwcCwgXCJteS1hd2Vzb21lLW1vZHVsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuY29uc3QgdGVycmFmb3JtUmVhZG1lRG9jcyA9IGBcbiMgUGxlYXNlIGFkZCBoZXJlIHNvbWUgcHVyZSBIQ0wgdGVzdHMgZm9yIHlvdXIgbW9kdWxlcyBpbiBvcmRlciB0byB0ZXN0IEhDTCBJbnRlcm9wZXJhYmlsaXR5XG5cbkV4YW1wbGVzOlxuXG5tb2R1bGUgXCJteV9hd2Vzb21lX3Rlc3RcIiB7XG4gIHNvdXJjZSA9IFwiLi4vbW9kdWxlcy9teS1hd2Vzb21lLW1vZHVsZXNcIlxuICAuLi52YXJpYWJsZXMuLi5cbn1cbiAgICBgO1xuXG5jbGFzcyBTY3JpcHRGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKHByb2plY3QsIGZpbGVQYXRoLCB7XG4gICAgICBleGVjdXRhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KF86IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudDtcbiAgfVxufVxuXG5jbGFzcyBIQ0xGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBmaWxlUGF0aDogc3RyaW5nLCBwcml2YXRlIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKHByb2plY3QsIGZpbGVQYXRoLCB7XG4gICAgICBleGVjdXRhYmxlOiBmYWxzZSxcbiAgICAgIGNvbW1pdHRlZDogdHJ1ZSxcbiAgICAgIHJlYWRvbmx5OiBmYWxzZSwgLy8gdGVycmFmb3JtIGZtdCBtaWdodCB3YW50IHRvIG92ZXJ3cml0ZSBpdFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KF86IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGAjIFRoaXMgZmlsZSBpcyBtYW5hZ2VkIGJ5IHByb2plbi4gRG8gbm90IGVkaXQsIGNoYW5nZSB0aGUgLnByb2plbnJjIGZpbGUgaW5zdGVhZC5cbiR7dGhpcy5jb250ZW50fWA7XG4gIH1cbn1cblxuLyoqXG4gKiBIeWJyaWQgQ0RLVEYgQ29uc3RydWN0IC8gVGVycmFmb3JtIE1vZHVsZVxuICpcbiAqIEBwamlkIGh5YnJpZC1tb2R1bGVcbiAqL1xuZXhwb3J0IGNsYXNzIEh5YnJpZE1vZHVsZSBleHRlbmRzIEpzaWlQcm9qZWN0IHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogSHlicmlkTW9kdWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGVzbGludE9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIG9wdGlvbnMuZXNsaW50T3B0aW9ucywge1xuICAgICAgICBsaW50UHJvamVuUmM6IGZhbHNlLFxuICAgICAgfSksXG4gICAgICBwb3N0QnVpbGRTdGVwczogW10sXG4gICAgfSk7XG4gICAgY29uc3QgY29uc3RydWN0VmVyc2lvbiA9IG9wdGlvbnMuY29uc3RydWN0VmVyc2lvbiB8fCBcIjEwLjAuMTA3XCI7XG4gICAgY29uc3QgY2RrdGZWZXJzaW9uID0gb3B0aW9ucy5jZGt0ZlZlcnNpb24gfHwgXCIwLjE5LjBcIjtcblxuICAgIGNvbnNvbGUubG9nKHsgY2RrdGZWZXJzaW9uLCBjb25zdHJ1Y3RWZXJzaW9uIH0pO1xuICAgIHRoaXMuYWRkUGVlckRlcHMoYGNvbnN0cnVjdHNAJHtjb25zdHJ1Y3RWZXJzaW9ufWAsIGBjZGt0ZkAke2Nka3RmVmVyc2lvbn1gKTtcbiAgICB0aGlzLmFkZERldkRlcHMoXG4gICAgICBgY2RrdGYtY2xpQCR7Y2RrdGZWZXJzaW9ufWAsXG4gICAgICBcInRzLW5vZGVAPj0xMC45LjFcIixcbiAgICAgIFwianNpaS1kb2NnZW5AXjkuMC4wXCJcbiAgICApO1xuICAgIHRoaXMuYWRkS2V5d29yZHMoXCJjZGtcIiwgXCJjZGt0ZlwiLCBcImNka3RmLWh5YnJpZFwiLCBcInRlcnJhZm9ybVwiKTtcbiAgICB0aGlzLnNldFNjcmlwdChcInRlcnJhZm9ybTp0ZXN0XCIsIFwiLi9zY3JpcHRzL3RmLW1vZHVsZS10ZXN0LnNoXCIpO1xuXG4gICAgLy8gTW9kdWxlIEVudHJ5cG9pbnRcbiAgICB0aGlzLmFkZERlcHMoXCJAY2RrdGYvdGYtbW9kdWxlLXN0YWNrQD49NC4wLjBcIik7XG4gICAgY29uc3QgbW9kdWxlRG9jcyA9IGBcbiMgTXkgQXdlc29tZSBNb2R1bGVcblxuIyMgVXNhZ2VcblxuXFxgXFxgXFxgaGNsXG5tb2R1bGUgXCJla3NfbWFuYWdlZF9ub2RlX2dyb3VwXCIge1xuICBzb3VyY2UgPSBcIiR7XG4gICAgb3B0aW9ucy5yZXBvc2l0b3J5VXJsXG4gICAgICA/LnJlcGxhY2UoXCJodHRwczovL2dpdGh1Yi5jb20vXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZShcImh0dHA6Ly9naXRodWIuY29tL1wiLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoXCJnaXRodWIuY29tL1wiLCBcIlwiKSB8fCBcIm15LWdpdGh1Yi1yZXBvXCJcbiAgfS8vbW9kdWxlcy9teS1hd2Vzb21lLW1vZHVsZVwiXG5cbn1cblxcYFxcYFxcYFxuICAgIGA7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHRoaXMsIHRoaXMuc3JjZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcImluZGV4LnRzXCI6IGNvbnN0cnVjdFNyY0NvZGUudHJpbSgpLFxuICAgICAgICBcInRmTW9kdWxlcy50c1wiOiBtb2R1bGVTcmNDb2RlLnRyaW0oKSxcbiAgICAgICAgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiOiBtb2R1bGVEb2NzLnRyaW0oKSxcbiAgICAgICAgXCJjZGt0Zi5qc29uXCI6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhbmd1YWdlOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgICAgIGFwcDogXCJucHggdHMtbm9kZSB0Zk1vZHVsZXMudHNcIixcbiAgICAgICAgICAgIHRlcnJhZm9ybVByb3ZpZGVyczogW1wiaGFzaGljb3JwL251bGxAMy4xLjFcIl0sIC8vIFdlIG5lZWQgYXQgbGVhc3QgYSBwcm92aWRlciBmb3IgZ2V0IHRvIHN1Y2NlZWRcbiAgICAgICAgICAgIHRlcnJhZm9ybU1vZHVsZXM6IFtdLFxuICAgICAgICAgICAgb3V0cHV0OiBcIm1vZHVsZXNcIixcbiAgICAgICAgICAgIHByb2plY3RJZDpcbiAgICAgICAgICAgICAgb3B0aW9ucy5wcm9qZWN0SWQgfHxcbiAgICAgICAgICAgICAgXCJoeWJyaWQtbW9kdWxlLWZiNzM0ZGJhLWVhYzktNDY2Yy05NmJiLTdlYjljNDA2YzI4YVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAyXG4gICAgICAgICksXG4gICAgICAgIFwiX190ZXN0c19fL2luZGV4LXRlc3QudHNcIjogY29uc3RydWN0VGVzdENvZGUudHJpbSgpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChvcHRpb25zLnRlcnJhZm9ybUV4YW1wbGVzICYmIG9wdGlvbnMudGVycmFmb3JtRXhhbXBsZXMuZW5hYmxlZCkge1xuICAgICAgY29uc3QgcHJvdmlkZXJDb25maWcgPVxuICAgICAgICBvcHRpb25zLnRlcnJhZm9ybUV4YW1wbGVzLnByb3ZpZGVyQ29uZmlnIHx8XG4gICAgICAgIGBcbnRlcnJhZm9ybSB7XG4gICMgVGVycmFmb3JtIGJpbmFyeSB2ZXJzaW9uIGNvbnN0cmFpbnRcbiAgcmVxdWlyZWRfdmVyc2lvbiA9IFwiPj0gMS4yLjBcIlxuXG4gICMgRGVmaW5lIGFsbCBuZWVkZWQgcHJvdmlkZXJzIGhlcmUsIHlvdSBjYW4gZmluZCBhbGwgYXZhaWxhYmxlIHByb3ZpZGVycyBoZXJlOlxuICAjIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL1xuICByZXF1aXJlZF9wcm92aWRlcnMge31cbn1cblxuIyBJbml0aWFsaXplIHlvdXIgcHJvdmlkZXIgaGVyZVxuXG5gLnRyaW0oKTtcbiAgICAgIGNvbnN0IGV4YW1wbGVzRm9sZGVyID1cbiAgICAgICAgb3B0aW9ucy50ZXJyYWZvcm1FeGFtcGxlcy5mb2xkZXIgfHwgXCJ0ZXJyYWZvcm0tZXhhbXBsZXNcIjtcblxuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBleGFtcGxlc0ZvbGRlciwge1xuICAgICAgICBmaWxlczoge1xuICAgICAgICAgIFwibWFpbi50ZlwiOlxuICAgICAgICAgICAgb3B0aW9ucy50ZXJyYWZvcm1FeGFtcGxlcy5leGFtcGxlQ29kZSB8fFxuICAgICAgICAgICAgYCMgQ29uZmlndXJlIHlvdSBtb2R1bGUgaGVyZWAsXG4gICAgICAgICAgXCJSRUFETUUubWRcIjogdGVycmFmb3JtUmVhZG1lRG9jcy50cmltKCksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgbmV3IEhDTEZpbGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHBhdGguam9pbihleGFtcGxlc0ZvbGRlciwgXCJwcm92aWRlci50ZlwiKSxcbiAgICAgICAgcHJvdmlkZXJDb25maWdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFxuICAgICAgICBgJHtleGFtcGxlc0ZvbGRlcn0vLnRlcnJhZm9ybWAsXG4gICAgICAgIGAke2V4YW1wbGVzRm9sZGVyfS8udGVycmFmb3JtLmxvY2suaGNsYFxuICAgICAgKTtcblxuICAgICAgbmV3IFNjcmlwdEZpbGUoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiLi9zY3JpcHRzL3RmLW1vZHVsZS10ZXN0LnNoXCIsXG4gICAgICAgIGAjIS9iaW4vYmFzaFxuIyBUaGlzIHNjcmlwdCBpcyBjcmVhdGVkIGJ5IHByb2plbiwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkuXG5zZXQgLWVcblxudGVycmFmb3JtIC1jaGRpcj0ke2V4YW1wbGVzRm9sZGVyfSBpbml0IC0tdXBncmFkZVxudGVycmFmb3JtIC1jaGRpcj0ke2V4YW1wbGVzRm9sZGVyfSBmbXRcbnRlcnJhZm9ybSAtY2hkaXI9JHtleGFtcGxlc0ZvbGRlcn0gdmFsaWRhdGVcbiR7b3B0aW9ucy5ydW5QbGFuID8gYHRlcnJhZm9ybSAtY2hkaXI9JHtleGFtcGxlc0ZvbGRlcn0gcGxhbmAgOiBcIlwifVxuICAgICAgICAgIGBcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudGVzdFRhc2suZXhlYyhcIi4vc2NyaXB0cy90Zi1tb2R1bGUtdGVzdC5zaFwiKTtcbiAgICAgIHRoaXMuamVzdD8uYWRkSWdub3JlUGF0dGVybihgPHJvb3REaXI+LyR7ZXhhbXBsZXNGb2xkZXJ9YCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuY29uc3RydWN0RXhhbXBsZXMgJiYgb3B0aW9ucy5jb25zdHJ1Y3RFeGFtcGxlcy5lbmFibGVkKSB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyID1cbiAgICAgICAgb3B0aW9ucy5jb25zdHJ1Y3RFeGFtcGxlcy5mb2xkZXIgfHwgXCJjb25zdHJ1Y3QtZXhhbXBsZXNcIjtcblxuICAgICAgY29uc3QgbGV2ZWxzID0gY29uc3RydWN0RXhhbXBsZUZvbGRlclxuICAgICAgICAuc3BsaXQoXCIvXCIpXG4gICAgICAgIC5zcGxpY2UoMCwgMSlcbiAgICAgICAgLm1hcCgoKSA9PiBcIi4uXCIpXG4gICAgICAgIC5qb2luKFwiL1wiKTtcblxuICAgICAgY29uc3QgY29uc3RydWN0UmVhZG1lRG9jcyA9IGBcbiMgQ29uc3RydWN0IEV4YW1wbGVzXG5cbkV4YW1wbGUgdXNlLWNhc2VzIGZvciB0aGUgQ29uc3RydWN0IGxpYnJhcnkuXG5cbi0gW0Jhc2ljIFVzYWdlXSguL2Jhc2ljLnRzKVxuXG5UbyBlbnN1cmUgYWxsIGV4YW1wbGVzIGFyZSB3b3JraW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRoZSBbaW5kZXgudHNdKC4vaW5kZXgudHMpIGZpbGUgaXMgaW1wb3J0aW5nIGFsbCBvZiB0aGVtLlxuYDtcblxuICAgICAgY29uc3QgY29uc3RydWN0RXhhbXBsZUNvZGUgPSBgXG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiJHtsZXZlbHN9L3NyYy9cIjtcblxuZXhwb3J0IGNsYXNzIEJhc2ljRXhhbXBsZSBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIG5hbWUpO1xuXG4gICAgbmV3IE15Q29uc3RydWN0KHRoaXMsIFwibXktY29uc3RydWN0XCIsIHtcbiAgICAgIHByb3BlcnR5QTogXCJ2YWx1ZUFcIixcbiAgICB9KTtcbiAgfVxufVxuXG5cbmA7XG5cbiAgICAgIGNvbnN0IGV4YW1wbGVDb2xsZWN0aW9uQ29kZSA9IGBcbi8vIFRoaXMgZmlsZSB3aWxsIGJlIHN5bnRoZXNpemVkIHRvIGNoZWNrIGlmIGFsbCBleGFtcGxlcyBhcmUgd29ya2luZ1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiY2RrdGZcIjtcbi8vIEFsbCBleGFtcGxlcyBuZWVkIHRvIGJlIGltcG9ydGVkIGhlcmVcbmltcG9ydCB7IEJhc2ljRXhhbXBsZSB9IGZyb20gXCIuL2Jhc2ljXCI7XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxuLy8gQWxsIGV4YW1wbGVzIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgaGVyZVxubmV3IEJhc2ljRXhhbXBsZShhcHAsIFwiYmFzaWMtZXhhbXBsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyLCB7XG4gICAgICAgIGZpbGVzOiB7XG4gICAgICAgICAgXCJpbmRleC50c1wiOiBleGFtcGxlQ29sbGVjdGlvbkNvZGUudHJpbSgpLFxuICAgICAgICAgIFwiYmFzaWMudHNcIjogY29uc3RydWN0RXhhbXBsZUNvZGUudHJpbSgpLFxuICAgICAgICAgIFwiY2RrdGYuanNvblwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFuZ3VhZ2U6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICAgICAgICBhcHA6IGBucHggdHMtbm9kZSAtLXByb2plY3QgJHtsZXZlbHN9L3RzY29uZmlnLmRldi5qc29uIGluZGV4LnRzYCxcbiAgICAgICAgICAgICAgcHJvamVjdElkOlxuICAgICAgICAgICAgICAgIG9wdGlvbnMucHJvamVjdElkIHx8XG4gICAgICAgICAgICAgICAgXCJoeWJyaWQtbW9kdWxlLWZiNzM0ZGJhLWVhYzktNDY2Yy05NmJiLTdlYjljNDA2YzI4YVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAyXG4gICAgICAgICAgKSxcbiAgICAgICAgICBcIlJFQURNRS5tZFwiOiBjb25zdHJ1Y3RSZWFkbWVEb2NzLnRyaW0oKSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRlc3RUYXNrLmV4ZWMoYGNka3RmIHN5bnRoYCwge1xuICAgICAgICBjd2Q6IGNvbnN0cnVjdEV4YW1wbGVGb2xkZXIsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKGAke2NvbnN0cnVjdEV4YW1wbGVGb2xkZXJ9L2Nka3RmLm91dGApO1xuICAgIH1cblxuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFwic3JjLy5nZW5cIiwgXCJzcmMvY2RrdGYub3V0XCIsIFwic3JjL21vZHVsZXNcIik7XG4gICAgdGhpcy5jb21waWxlVGFzay5wcmVwZW5kRXhlYyhcIm5weCBjZGt0ZiBnZXRcIiwge1xuICAgICAgY3dkOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBpbGVUYXNrLmV4ZWMoXCJjZGt0ZiBzeW50aFwiLCB7XG4gICAgICBjd2Q6IHRoaXMuc3JjZGlyLFxuICAgICAgbmFtZTogXCJTeW50aGVzaXplIG1vZHVsZSBIQ0xcIixcbiAgICB9KTtcblxuICAgIG5ldyBTY3JpcHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIFwic2NyaXB0cy9jb3B5LW1vZHVsZXMuc2hcIixcbiAgICAgIGBcbiMhL2Jpbi9iYXNoXG4jIFRoaXMgc2NyaXB0IGlzIGNyZWF0ZWQgYnkgcHJvamVuLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseS5cbnNldCAtZVxuXG5TQ1JJUFRQQVRIPVwiJCggY2QgLS0gXCIkKGRpcm5hbWUgXCIkMFwiKVwiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApXCJcblxuIyBjaGVjayBpZiB0aGUgbW9kdWxlIGZvbGRlciBoYXMgYmVlbiBnZW5lcmF0ZWQgYXMgZXhwZWN0ZWRcbk1PRFVMRVNfRk9MREVSPSQoIGNkIC0tIFwiJFNDUklQVFBBVEgvLi4vc3JjL21vZHVsZXMvc3RhY2tzXCIgPi9kZXYvbnVsbCAyPiYxIDsgcHdkIC1QIClcblNSQ19GT0xERVI9JCggY2QgLS0gXCIkU0NSSVBUUEFUSC8uLi9zcmMvXCIgPi9kZXYvbnVsbCAyPiYxIDsgcHdkIC1QIClcblRBUkdFVF9GT0xERVI9XCIkU0NSSVBUUEFUSC8uLi9tb2R1bGVzXCJcblxuaWYgWyAhIC1kIFwiJE1PRFVMRVNfRk9MREVSXCIgXTsgdGhlblxuICBlY2hvIFwiRXhwZWN0ZWQgbW9kdWxlIGZvbGRlciB0byBleGlzdCBhdCAkTU9EVUxFU19GT0xERVJcIlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJE1PRFVMRVNfRk9MREVSXCJcbmZvciBkIGluICovIDsgZG9cbiAgICBbIC1MIFwiXFwke2QlL31cIiBdICYmIGNvbnRpbnVlXG5cbiAgICBkaXJuYW1lPVwiXFwke2QlL31cIlxuXG5cbiAgICAjIENoZWNrIGlmIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2VcbiAgICBpZiBbICEgLWYgXCIkTU9EVUxFU19GT0xERVIvJGRpcm5hbWUvY2RrLnRmLmpzb25cIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRXhwZWN0ZWQgY29kZSBmb3IgJGRpcm5hbWUgYXQgY2RrLnRmLmpzb24gdG8gZXhpc3QgYXQgJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lXCJcbiAgICAgIGV4aXQgMVxuICAgIGZpXG5cbiAgICBpZiBbICEgLWYgXCIkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiIF07IHRoZW5cbiAgICAgIGVjaG8gXCJFeHBlY3RlZCBEb2N1bWVudGF0aW9uIGZvciAkZGlybmFtZSBhdCAkZGlybmFtZS5tZCB0byBleGlzdCBhdCAkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiXG4gICAgICBleGl0IDFcbiAgICBmaVxuXG4gICAgIyBDb3B5IG1vZHVsZSBhbmQgcmVhZG1lIHRvZ2V0aGVyXG4gICAgZWNobyBcIkNvcHlpbmcgQ29kZSBhbmQgUkVBRE1FIGZvciBtb2R1bGUgJGRpcm5hbWVcIlxuICAgIG1rZGlyIC1wIFwiJFRBUkdFVF9GT0xERVJcIlxuICAgIG1rZGlyIC1wIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWVcIlxuICAgIGNwIFwiJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lL2Nkay50Zi5qc29uXCIgXCIkVEFSR0VUX0ZPTERFUi8kZGlybmFtZS9jZGsudGYuanNvblwiXG4gICAgY3AgXCIkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWUvUkVBRE1FLm1kXCJcblxuICAgICMgQWRkIFJFQURNRSBoY2wgZG9jc1xuICAgIGlmIHdoaWNoIHRlcnJhZm9ybS1kb2NzID4vZGV2L251bGw7IHRoZW5cbiAgICAgIHRlcnJhZm9ybS1kb2NzIG1hcmtkb3duIHRhYmxlIC0tb3V0cHV0LWZpbGUgXCIkVEFSR0VUX0ZPTERFUi8kZGlybmFtZS9SRUFETUUubWRcIiBcIiRUQVJHRVRfRk9MREVSLyRkaXJuYW1lXCIgXG4gICAgZWxzZVxuICAgICAgZG9ja2VyIHJ1biAtLXJtIC0tdm9sdW1lIFwiJFNDUklQVFBBVEgvLi4vbW9kdWxlczovdGVycmFmb3JtLWRvY3NcIiAtdSAkKGlkIC11KSBxdWF5LmlvL3RlcnJhZm9ybS1kb2NzL3RlcnJhZm9ybS1kb2NzOjAuMTYuMCBtYXJrZG93biB0YWJsZSAtLW91dHB1dC1maWxlIFwiL3RlcnJhZm9ybS1kb2NzLyRkaXJuYW1lL1JFQURNRS5tZFwiIC90ZXJyYWZvcm0tZG9jcy8kZGlybmFtZVxuICAgIGZpXG5kb25lXG5gLnRyaW0oKVxuICAgICk7XG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwiLi9zY3JpcHRzL2NvcHktbW9kdWxlcy5zaFwiLCB7XG4gICAgICBuYW1lOiBcIkNvcHkgSENMIE1vZHVsZXNcIixcbiAgICB9KTtcblxuICAgIC8vIGlnbm9yZSBkaXN0IGluIHRlc3RzXG4gICAgdGhpcy5qZXN0Py5hZGRJZ25vcmVQYXR0ZXJuKFwiZGlzdFwiKTtcbiAgfVxufVxuIl19
@@ -11,7 +11,7 @@ export interface TerraformVersionConstraint {
11
11
  export interface TerraformModuleOptions extends ConstructLibraryOptions {
12
12
  /**
13
13
  * Minimum target version of this library.
14
- * @default "0.18.0"
14
+ * @default "0.19.0"
15
15
  * @featured
16
16
  */
17
17
  readonly cdktfVersion?: string;
@@ -26,7 +26,7 @@ class TerraformModule extends cdk_1.ConstructLibrary {
26
26
  postBuildSteps: [],
27
27
  });
28
28
  const constructVersion = options.constructVersion || "10.0.107";
29
- const cdktfVersion = options.cdktfVersion || "0.18.0";
29
+ const cdktfVersion = options.cdktfVersion || "0.19.0";
30
30
  const constructSrcCode = `
31
31
  // Re-Export module bindings
32
32
  export * from "./terraformModules";
@@ -75,5 +75,5 @@ describe("MyModule", () => {
75
75
  }
76
76
  exports.TerraformModule = TerraformModule;
77
77
  _a = JSII_RTTI_SYMBOL_1;
78
- TerraformModule[_a] = { fqn: "projen-cdktf-hybrid-construct.TerraformModule", version: "0.4.11" };
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXJyYWZvcm0tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7OztHQUdHO0FBRUgsbUNBQXVEO0FBQ3ZELHdDQUEyRTtBQUUzRSx5Q0FBc0M7QUF3Q3RDOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQWdCO0lBQ25ELFlBQVksT0FBK0I7UUFDekMsS0FBSyxDQUFDO1lBQ0osR0FBRyxtQkFBUTtZQUNYLEdBQUcsT0FBTztZQUNWLGFBQWEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUN0RCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1lBQ0YsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksVUFBVSxDQUFDO1FBQ2hFLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDO1FBRXRELE1BQU0sZ0JBQWdCLEdBQUc7Ozs7O0NBSzVCLENBQUM7UUFFRSxNQUFNLGlCQUFpQixHQUFHOzs7Ozs7OztDQVE3QixDQUFDO1FBRUUsSUFBSSxDQUFDLFdBQVcsQ0FDZCxnQkFBZ0IsZ0JBQWdCLEVBQUUsRUFDbEMsV0FBVyxZQUFZLEVBQUUsQ0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQ2IsU0FBUyxZQUFZLEVBQUUsRUFDdkIsYUFBYSxZQUFZLEVBQUUsRUFDM0Isa0JBQWtCLEVBQ2xCLG9CQUFvQixDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFMUMsSUFBSSxrQkFBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQy9CLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO2dCQUNuQyx5QkFBeUIsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7YUFDcEQ7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sc0JBQXNCLEVBQUU7WUFDdkQsU0FBUyxFQUFFLElBQUk7WUFDZixNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRTtnQkFDTCxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDckMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGlDQUFpQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQ2pFO2dCQUNELEVBQUU7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksaUJBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxhQUFhLEVBQUU7WUFDOUMsU0FBUyxFQUFFLElBQUk7WUFDZixHQUFHLEVBQUU7Z0JBQ0gsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLEdBQUcsRUFBRSxzQkFBc0I7Z0JBQzNCLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxFQUFFO2dCQUNwRCxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2dCQUMxQyxTQUFTLEVBQ1AsT0FBTyxDQUFDLFNBQVM7b0JBQ2pCLHVEQUF1RDthQUMxRDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDOztBQXpFSCwwQ0EwRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IEpzb25GaWxlLCBTYW1wbGVEaXIsIFRleHRGaWxlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi9jZGtcIjtcblxuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tIFwiLi9kZWZhdWx0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVZlcnNpb25Db25zdHJhaW50IHtcbiAgLy8gbmFtZSBvZiB0aGUgbW9kdWxlXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLy8gcGF0aCAvIHVybCAvIHJlZ2lzdHJ5IGlkZW50aWZpZXIgZm9yIHRoZSBtb2R1bGVcbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG4gIC8vIHZlcnNpb24gY29uc3RyYWludCAoaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvbGFuZ3VhZ2UvcHJvdmlkZXJzL3JlcXVpcmVtZW50cy5odG1sI3ZlcnNpb24tY29uc3RyYWludHMpXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Nb2R1bGVPcHRpb25zIGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMge1xuICAvKipcbiAgICogTWluaW11bSB0YXJnZXQgdmVyc2lvbiBvZiB0aGlzIGxpYnJhcnkuXG4gICAqIEBkZWZhdWx0IFwiMC4xOC4wXCJcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCB2ZXJzaW9uIHRvIHVzZVxuICAgKiBAZGVmYXVsdCBcIl4xMC4wLjEwN1wiXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgTGlzdCBvZiBwcm92aWRlciBiaW5kaW5ncyB0byBnZW5lcmF0ZSBpbiBhZGRpdGlvbiB0byB0aGUgbW9kdWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybVByb3ZpZGVycz86IFRlcnJhZm9ybVZlcnNpb25Db25zdHJhaW50W107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgbW9kdWxlcyB0byBnZW5lcmF0ZSBiaW5kaW5ncyBmb3IuXG4gICAqIEBmZWF0dXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGVycmFmb3JtTW9kdWxlczogVGVycmFmb3JtVmVyc2lvbkNvbnN0cmFpbnRbXTtcblxuICAvLyBEZWZhdWx0ZWQgdG8gYSB1dWlkIHN0cmluZyBhcyBjZGt0ZiB3b3VsZFxuICByZWFkb25seSBwcm9qZWN0SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGVycmFmb3JtIE1vZHVsZXMgcmVwdWJsaXNoZWQgYXMgQ0RLVEYgQ29uc3RydWN0c1xuICpcbiAqIEBwamlkIHRlcnJhZm9ybS1tb2R1bGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybU1vZHVsZSBleHRlbmRzIENvbnN0cnVjdExpYnJhcnkge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUZXJyYWZvcm1Nb2R1bGVPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXNsaW50T3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucy5lc2xpbnRPcHRpb25zLCB7XG4gICAgICAgIGxpbnRQcm9qZW5SYzogZmFsc2UsXG4gICAgICB9KSxcbiAgICAgIHBvc3RCdWlsZFN0ZXBzOiBbXSxcbiAgICB9KTtcbiAgICBjb25zdCBjb25zdHJ1Y3RWZXJzaW9uID0gb3B0aW9ucy5jb25zdHJ1Y3RWZXJzaW9uIHx8IFwiMTAuMC4xMDdcIjtcbiAgICBjb25zdCBjZGt0ZlZlcnNpb24gPSBvcHRpb25zLmNka3RmVmVyc2lvbiB8fCBcIjAuMTguMFwiO1xuXG4gICAgY29uc3QgY29uc3RydWN0U3JjQ29kZSA9IGBcbi8vIFJlLUV4cG9ydCBtb2R1bGUgYmluZGluZ3NcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybU1vZHVsZXNcIjtcblxuLy8gQWRkIHlvdXIgY3VzdG9tIGNvbnN0cnVjdHMgaGVyZVxuYDtcblxuICAgIGNvbnN0IGNvbnN0cnVjdFRlc3RDb2RlID0gYFxuLy8gaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuLy8gaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuXG4vLyBUbyBsZWFybiBtb3JlIGFib3V0IHRlc3Rpbmcgc2VlIGNkay50Zi90ZXN0aW5nXG5kZXNjcmliZShcIk15TW9kdWxlXCIsICgpID0+IHtcbiAgaXQudG9kbyhcInNob3VsZCBiZSB0ZXN0ZWRcIilcbn0pO1xuYDtcblxuICAgIHRoaXMuYWRkUGVlckRlcHMoXG4gICAgICBgY29uc3RydWN0c0A+PSR7Y29uc3RydWN0VmVyc2lvbn1gLFxuICAgICAgYGNka3RmQD49JHtjZGt0ZlZlcnNpb259YFxuICAgICk7XG4gICAgdGhpcy5hZGREZXZEZXBzKFxuICAgICAgYGNka3RmQCR7Y2RrdGZWZXJzaW9ufWAsXG4gICAgICBgY2RrdGYtY2xpQCR7Y2RrdGZWZXJzaW9ufWAsXG4gICAgICBcInRzLW5vZGVAPj0xMC45LjFcIixcbiAgICAgIFwianNpaS1kb2NnZW5AXjkuMC4wXCJcbiAgICApO1xuICAgIHRoaXMuYWRkS2V5d29yZHMoXCJjZGt0ZlwiLCBcImNka3RmLWh5YnJpZFwiKTtcblxuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgdGhpcy5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwiaW5kZXgudHNcIjogY29uc3RydWN0U3JjQ29kZS50cmltKCksXG4gICAgICAgIFwiX190ZXN0c19fL2luZGV4LXRlc3QudHNcIjogY29uc3RydWN0VGVzdENvZGUudHJpbSgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBuZXcgVGV4dEZpbGUodGhpcywgYCR7dGhpcy5zcmNkaXJ9L3RlcnJhZm9ybU1vZHVsZXMudHNgLCB7XG4gICAgICBjb21taXR0ZWQ6IHRydWUsXG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAuLi4ob3B0aW9ucy50ZXJyYWZvcm1Nb2R1bGVzIHx8IFtdKS5tYXAoXG4gICAgICAgICAgKHRmTW9kdWxlKSA9PiBgZXhwb3J0ICogZnJvbSBcIi4vLmdlbi9tb2R1bGVzLyR7dGZNb2R1bGUubmFtZX1cIjtgXG4gICAgICAgICksXG4gICAgICAgIFwiXCIsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgbmV3IEpzb25GaWxlKHRoaXMsIGAke3RoaXMuc3JjZGlyfS9jZGt0Zi5qc29uYCwge1xuICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGxhbmd1YWdlOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgYXBwOiBcIm5weCB0cy1ub2RlIGluZGV4LnRzXCIsXG4gICAgICAgIHRlcnJhZm9ybVByb3ZpZGVyczogb3B0aW9ucy50ZXJyYWZvcm1Qcm92aWRlcnMgfHwgW10sXG4gICAgICAgIHRlcnJhZm9ybU1vZHVsZXM6IG9wdGlvbnMudGVycmFmb3JtTW9kdWxlcyxcbiAgICAgICAgcHJvamVjdElkOlxuICAgICAgICAgIG9wdGlvbnMucHJvamVjdElkIHx8XG4gICAgICAgICAgXCJ0ZXJyYWZvcm0tbW9kdWxlLTk5YTc3MGE3LTNlYzUtNDBmNy04Y2QzLWRiYzcyZjc1YTAwYVwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJlQ29tcGlsZVRhc2suZXhlYyhgbnB4IGNka3RmIGdldGAsIHsgY3dkOiB0aGlzLnNyY2RpciB9KTtcbiAgfVxufVxuIl19
78
+ TerraformModule[_a] = { fqn: "projen-cdktf-hybrid-construct.TerraformModule", version: "0.5.0" };
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLW1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90ZXJyYWZvcm0tbW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7OztHQUdHO0FBRUgsbUNBQXVEO0FBQ3ZELHdDQUEyRTtBQUUzRSx5Q0FBc0M7QUF3Q3RDOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsc0JBQWdCO0lBQ25ELFlBQVksT0FBK0I7UUFDekMsS0FBSyxDQUFDO1lBQ0osR0FBRyxtQkFBUTtZQUNYLEdBQUcsT0FBTztZQUNWLGFBQWEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUN0RCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDO1lBQ0YsY0FBYyxFQUFFLEVBQUU7U0FDbkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLElBQUksVUFBVSxDQUFDO1FBQ2hFLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDO1FBRXRELE1BQU0sZ0JBQWdCLEdBQUc7Ozs7O0NBSzVCLENBQUM7UUFFRSxNQUFNLGlCQUFpQixHQUFHOzs7Ozs7OztDQVE3QixDQUFDO1FBRUUsSUFBSSxDQUFDLFdBQVcsQ0FDZCxnQkFBZ0IsZ0JBQWdCLEVBQUUsRUFDbEMsV0FBVyxZQUFZLEVBQUUsQ0FDMUIsQ0FBQztRQUNGLElBQUksQ0FBQyxVQUFVLENBQ2IsU0FBUyxZQUFZLEVBQUUsRUFDdkIsYUFBYSxZQUFZLEVBQUUsRUFDM0Isa0JBQWtCLEVBQ2xCLG9CQUFvQixDQUNyQixDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFMUMsSUFBSSxrQkFBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQy9CLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO2dCQUNuQyx5QkFBeUIsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUU7YUFDcEQ7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLGlCQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sc0JBQXNCLEVBQUU7WUFDdkQsU0FBUyxFQUFFLElBQUk7WUFDZixNQUFNLEVBQUUsSUFBSTtZQUNaLEtBQUssRUFBRTtnQkFDTCxHQUFHLENBQUMsT0FBTyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDckMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLGlDQUFpQyxRQUFRLENBQUMsSUFBSSxJQUFJLENBQ2pFO2dCQUNELEVBQUU7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksaUJBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxhQUFhLEVBQUU7WUFDOUMsU0FBUyxFQUFFLElBQUk7WUFDZixHQUFHLEVBQUU7Z0JBQ0gsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLEdBQUcsRUFBRSxzQkFBc0I7Z0JBQzNCLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxFQUFFO2dCQUNwRCxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsZ0JBQWdCO2dCQUMxQyxTQUFTLEVBQ1AsT0FBTyxDQUFDLFNBQVM7b0JBQ2pCLHVEQUF1RDthQUMxRDtTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRSxDQUFDOztBQXpFSCwwQ0EwRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCB7IEpzb25GaWxlLCBTYW1wbGVEaXIsIFRleHRGaWxlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi9jZGtcIjtcblxuaW1wb3J0IHsgZGVmYXVsdHMgfSBmcm9tIFwiLi9kZWZhdWx0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVZlcnNpb25Db25zdHJhaW50IHtcbiAgLy8gbmFtZSBvZiB0aGUgbW9kdWxlXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLy8gcGF0aCAvIHVybCAvIHJlZ2lzdHJ5IGlkZW50aWZpZXIgZm9yIHRoZSBtb2R1bGVcbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG4gIC8vIHZlcnNpb24gY29uc3RyYWludCAoaHR0cHM6Ly93d3cudGVycmFmb3JtLmlvL2RvY3MvbGFuZ3VhZ2UvcHJvdmlkZXJzL3JlcXVpcmVtZW50cy5odG1sI3ZlcnNpb24tY29uc3RyYWludHMpXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1Nb2R1bGVPcHRpb25zIGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMge1xuICAvKipcbiAgICogTWluaW11bSB0YXJnZXQgdmVyc2lvbiBvZiB0aGlzIGxpYnJhcnkuXG4gICAqIEBkZWZhdWx0IFwiMC4xOS4wXCJcbiAgICogQGZlYXR1cmVkXG4gICAqL1xuICByZWFkb25seSBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdCB2ZXJzaW9uIHRvIHVzZVxuICAgKiBAZGVmYXVsdCBcIl4xMC4wLjEwN1wiXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgTGlzdCBvZiBwcm92aWRlciBiaW5kaW5ncyB0byBnZW5lcmF0ZSBpbiBhZGRpdGlvbiB0byB0aGUgbW9kdWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IHRlcnJhZm9ybVByb3ZpZGVycz86IFRlcnJhZm9ybVZlcnNpb25Db25zdHJhaW50W107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgbW9kdWxlcyB0byBnZW5lcmF0ZSBiaW5kaW5ncyBmb3IuXG4gICAqIEBmZWF0dXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgdGVycmFmb3JtTW9kdWxlczogVGVycmFmb3JtVmVyc2lvbkNvbnN0cmFpbnRbXTtcblxuICAvLyBEZWZhdWx0ZWQgdG8gYSB1dWlkIHN0cmluZyBhcyBjZGt0ZiB3b3VsZFxuICByZWFkb25seSBwcm9qZWN0SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGVycmFmb3JtIE1vZHVsZXMgcmVwdWJsaXNoZWQgYXMgQ0RLVEYgQ29uc3RydWN0c1xuICpcbiAqIEBwamlkIHRlcnJhZm9ybS1tb2R1bGVcbiAqL1xuZXhwb3J0IGNsYXNzIFRlcnJhZm9ybU1vZHVsZSBleHRlbmRzIENvbnN0cnVjdExpYnJhcnkge1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBUZXJyYWZvcm1Nb2R1bGVPcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZXNsaW50T3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgb3B0aW9ucy5lc2xpbnRPcHRpb25zLCB7XG4gICAgICAgIGxpbnRQcm9qZW5SYzogZmFsc2UsXG4gICAgICB9KSxcbiAgICAgIHBvc3RCdWlsZFN0ZXBzOiBbXSxcbiAgICB9KTtcbiAgICBjb25zdCBjb25zdHJ1Y3RWZXJzaW9uID0gb3B0aW9ucy5jb25zdHJ1Y3RWZXJzaW9uIHx8IFwiMTAuMC4xMDdcIjtcbiAgICBjb25zdCBjZGt0ZlZlcnNpb24gPSBvcHRpb25zLmNka3RmVmVyc2lvbiB8fCBcIjAuMTkuMFwiO1xuXG4gICAgY29uc3QgY29uc3RydWN0U3JjQ29kZSA9IGBcbi8vIFJlLUV4cG9ydCBtb2R1bGUgYmluZGluZ3NcbmV4cG9ydCAqIGZyb20gXCIuL3RlcnJhZm9ybU1vZHVsZXNcIjtcblxuLy8gQWRkIHlvdXIgY3VzdG9tIGNvbnN0cnVjdHMgaGVyZVxuYDtcblxuICAgIGNvbnN0IGNvbnN0cnVjdFRlc3RDb2RlID0gYFxuLy8gaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuLy8gaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuXG4vLyBUbyBsZWFybiBtb3JlIGFib3V0IHRlc3Rpbmcgc2VlIGNkay50Zi90ZXN0aW5nXG5kZXNjcmliZShcIk15TW9kdWxlXCIsICgpID0+IHtcbiAgaXQudG9kbyhcInNob3VsZCBiZSB0ZXN0ZWRcIilcbn0pO1xuYDtcblxuICAgIHRoaXMuYWRkUGVlckRlcHMoXG4gICAgICBgY29uc3RydWN0c0A+PSR7Y29uc3RydWN0VmVyc2lvbn1gLFxuICAgICAgYGNka3RmQD49JHtjZGt0ZlZlcnNpb259YFxuICAgICk7XG4gICAgdGhpcy5hZGREZXZEZXBzKFxuICAgICAgYGNka3RmQCR7Y2RrdGZWZXJzaW9ufWAsXG4gICAgICBgY2RrdGYtY2xpQCR7Y2RrdGZWZXJzaW9ufWAsXG4gICAgICBcInRzLW5vZGVAPj0xMC45LjFcIixcbiAgICAgIFwianNpaS1kb2NnZW5AXjkuMC4wXCJcbiAgICApO1xuICAgIHRoaXMuYWRkS2V5d29yZHMoXCJjZGt0ZlwiLCBcImNka3RmLWh5YnJpZFwiKTtcblxuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgdGhpcy5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwiaW5kZXgudHNcIjogY29uc3RydWN0U3JjQ29kZS50cmltKCksXG4gICAgICAgIFwiX190ZXN0c19fL2luZGV4LXRlc3QudHNcIjogY29uc3RydWN0VGVzdENvZGUudHJpbSgpLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBuZXcgVGV4dEZpbGUodGhpcywgYCR7dGhpcy5zcmNkaXJ9L3RlcnJhZm9ybU1vZHVsZXMudHNgLCB7XG4gICAgICBjb21taXR0ZWQ6IHRydWUsXG4gICAgICBtYXJrZXI6IHRydWUsXG4gICAgICBsaW5lczogW1xuICAgICAgICAuLi4ob3B0aW9ucy50ZXJyYWZvcm1Nb2R1bGVzIHx8IFtdKS5tYXAoXG4gICAgICAgICAgKHRmTW9kdWxlKSA9PiBgZXhwb3J0ICogZnJvbSBcIi4vLmdlbi9tb2R1bGVzLyR7dGZNb2R1bGUubmFtZX1cIjtgXG4gICAgICAgICksXG4gICAgICAgIFwiXCIsXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgbmV3IEpzb25GaWxlKHRoaXMsIGAke3RoaXMuc3JjZGlyfS9jZGt0Zi5qc29uYCwge1xuICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgICAgb2JqOiB7XG4gICAgICAgIGxhbmd1YWdlOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgYXBwOiBcIm5weCB0cy1ub2RlIGluZGV4LnRzXCIsXG4gICAgICAgIHRlcnJhZm9ybVByb3ZpZGVyczogb3B0aW9ucy50ZXJyYWZvcm1Qcm92aWRlcnMgfHwgW10sXG4gICAgICAgIHRlcnJhZm9ybU1vZHVsZXM6IG9wdGlvbnMudGVycmFmb3JtTW9kdWxlcyxcbiAgICAgICAgcHJvamVjdElkOlxuICAgICAgICAgIG9wdGlvbnMucHJvamVjdElkIHx8XG4gICAgICAgICAgXCJ0ZXJyYWZvcm0tbW9kdWxlLTk5YTc3MGE3LTNlYzUtNDBmNy04Y2QzLWRiYzcyZjc1YTAwYVwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMucHJlQ29tcGlsZVRhc2suZXhlYyhgbnB4IGNka3RmIGdldGAsIHsgY3dkOiB0aGlzLnNyY2RpciB9KTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -82,7 +82,7 @@
82
82
  ],
83
83
  "main": "lib/index.js",
84
84
  "license": "MPL-2.0",
85
- "version": "0.4.11",
85
+ "version": "0.5.0",
86
86
  "jest": {
87
87
  "testMatch": [
88
88
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",