projen-cdktf-hybrid-construct 0.1.44 → 0.1.45
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/CHANGELOG.md +9 -0
- package/README.md +2 -1
- package/example/.gitattributes +0 -1
- package/example/.projenrc.ts +25 -5
- package/example/construct-examples/README.md +7 -0
- package/example/construct-examples/basic.ts +14 -0
- package/example/construct-examples/cdktf.json +5 -0
- package/example/construct-examples/cdktf.out/manifest.json +13 -0
- package/example/construct-examples/cdktf.out/stacks/basic-example/cdk.tf.json +18 -0
- package/example/construct-examples/index.ts +11 -0
- package/example/lib/__tests__/index-test.d.ts +1 -0
- package/example/lib/__tests__/index-test.js +16 -0
- package/example/modules/my-awesome-module/README.md +26 -1
- package/example/package.json +0 -1
- package/example/scripts/copy-modules.sh +7 -0
- package/lib/index.d.ts +8 -19
- package/lib/index.js +119 -113
- package/package.json +1 -1
- package/example/.pre-commit-config.yaml +0 -8
package/CHANGELOG.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.1.0
|
4
|
+
|
5
|
+
- _Breaking Change_: `terraformExamplesFolder`, `terraformProvider`, `terraformProvider*Config` are now part of `terraformExamples` and differently structured.
|
6
|
+
- Add documentation hook (using docker if `terraform-docs` is not enabled)
|
7
|
+
- Add terraform and construct example folders
|
8
|
+
- Add tests to the generated code
|
9
|
+
- Remove `pre-commit` hooks
|
package/README.md
CHANGED
@@ -35,7 +35,8 @@ project.synth();
|
|
35
35
|
- [x] Add example folder
|
36
36
|
- [x] Add `terraform` example folder
|
37
37
|
- [x] [Auto-generate parts of the docs](https://github.com/terraform-aws-modules/terraform-aws-eks/blob/e90c877a741ab3cc4215376a70f7bcc360b6a3d2/.github/workflows/pre-commit.yml)
|
38
|
-
- [
|
38
|
+
- [x] Add example folder to project using this
|
39
|
+
- [x] Add testing strategy
|
39
40
|
- [ ] Add deployment scripts to Artifactory
|
40
41
|
- [ ] Add deployment scripts to Github Packages
|
41
42
|
- [ ] Add construct / option / docs to publish existing module as construct
|
package/example/.gitattributes
CHANGED
@@ -12,7 +12,6 @@
|
|
12
12
|
/.gitignore linguist-generated
|
13
13
|
/.mergify.yml linguist-generated
|
14
14
|
/.npmignore linguist-generated
|
15
|
-
/.pre-commit-config.yaml linguist-generated
|
16
15
|
/.prettierignore linguist-generated
|
17
16
|
/.prettierrc.json linguist-generated
|
18
17
|
/.projen/** linguist-generated
|
package/example/.projenrc.ts
CHANGED
@@ -8,11 +8,31 @@ const project = new HybridModule({
|
|
8
8
|
authorAddress: "danielmschmidt92@gmail.com",
|
9
9
|
repositoryUrl: "github.com/DanielMSchmidt/my-module",
|
10
10
|
outdir: ".",
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
terraformExamples: {
|
12
|
+
enabled: true,
|
13
|
+
folder: "terraform",
|
14
|
+
providerConfig: `
|
15
|
+
terraform {
|
16
|
+
# Limit provider version (some modules are not compatible with aws 4.x)
|
17
|
+
required_providers {
|
18
|
+
aws = {
|
19
|
+
source = "hashicorp/aws"
|
20
|
+
version = "~> 3.74"
|
21
|
+
}
|
22
|
+
}
|
23
|
+
# Terraform binary version constraint
|
24
|
+
required_version = "~> 1.1.0"
|
25
|
+
}
|
26
|
+
|
27
|
+
|
28
|
+
provider "aws" {
|
29
|
+
region = "eu-central-1"
|
30
|
+
}
|
31
|
+
`,
|
32
|
+
},
|
33
|
+
constructExamples: {
|
34
|
+
enabled: true,
|
35
|
+
folder: "construct-examples",
|
16
36
|
},
|
17
37
|
projectId: "my-project-id",
|
18
38
|
});
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { TerraformStack } from "cdktf";
|
2
|
+
import { Construct } from "constructs";
|
3
|
+
|
4
|
+
import { MyConstruct } from "../src/";
|
5
|
+
|
6
|
+
export class BasicExample extends TerraformStack {
|
7
|
+
constructor(scope: Construct, name: string) {
|
8
|
+
super(scope, name);
|
9
|
+
|
10
|
+
new MyConstruct(this, "my-construct", {
|
11
|
+
propertyA: "valueA",
|
12
|
+
});
|
13
|
+
}
|
14
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"version": "0.9.4",
|
3
|
+
"stacks": {
|
4
|
+
"basic-example": {
|
5
|
+
"name": "basic-example",
|
6
|
+
"constructPath": "basic-example",
|
7
|
+
"workingDirectory": "stacks/basic-example",
|
8
|
+
"synthesizedStackPath": "stacks/basic-example/cdk.tf.json",
|
9
|
+
"annotations": [],
|
10
|
+
"dependencies": []
|
11
|
+
}
|
12
|
+
}
|
13
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
{
|
2
|
+
"//": {
|
3
|
+
"metadata": {
|
4
|
+
"backend": "local",
|
5
|
+
"stackName": "basic-example",
|
6
|
+
"version": "0.9.4"
|
7
|
+
},
|
8
|
+
"outputs": {
|
9
|
+
}
|
10
|
+
},
|
11
|
+
"terraform": {
|
12
|
+
"backend": {
|
13
|
+
"local": {
|
14
|
+
"path": "/home/runner/work/projen-cdktf-hybrid-construct/projen-cdktf-hybrid-construct/example/construct-examples/terraform.basic-example.tfstate"
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// This file will be synthesized to check if all examples are working
|
2
|
+
|
3
|
+
import { App } from "cdktf";
|
4
|
+
// All examples need to be imported here
|
5
|
+
import { BasicExample } from "./basic";
|
6
|
+
|
7
|
+
const app = new App();
|
8
|
+
|
9
|
+
// All examples need to be initialized here
|
10
|
+
new BasicExample(app, "basic-example");
|
11
|
+
app.synth();
|
@@ -0,0 +1 @@
|
|
1
|
+
import "cdktf/lib/testing/adapters/jest";
|
@@ -0,0 +1,16 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
const cdktf_1 = require("cdktf");
|
4
|
+
require("cdktf/lib/testing/adapters/jest");
|
5
|
+
const __1 = require("../");
|
6
|
+
// To learn more about testing see cdk.tf/testing
|
7
|
+
describe("MyConstruct", () => {
|
8
|
+
it("should synthesize", () => {
|
9
|
+
expect(cdktf_1.Testing.synthScope((scope) => {
|
10
|
+
new __1.MyConstruct(scope, "my-construct", {
|
11
|
+
propertyA: "valueA",
|
12
|
+
});
|
13
|
+
})).toMatchSnapshot();
|
14
|
+
});
|
15
|
+
});
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgtdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFnQztBQUNoQywyQ0FBeUM7QUFDekMsMkJBQWtDO0FBRWxDLGlEQUFpRDtBQUNqRCxRQUFRLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtJQUMzQixFQUFFLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQzNCLE1BQU0sQ0FDSixlQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDM0IsSUFBSSxlQUFXLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtnQkFDckMsU0FBUyxFQUFFLFFBQVE7YUFDcEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN0QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiLi4vXCI7XG5cbi8vIFRvIGxlYXJuIG1vcmUgYWJvdXQgdGVzdGluZyBzZWUgY2RrLnRmL3Rlc3RpbmdcbmRlc2NyaWJlKFwiTXlDb25zdHJ1Y3RcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBzeW50aGVzaXplXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBUZXN0aW5nLnN5bnRoU2NvcGUoKHNjb3BlKSA9PiB7XG4gICAgICAgIG5ldyBNeUNvbnN0cnVjdChzY29wZSwgXCJteS1jb25zdHJ1Y3RcIiwge1xuICAgICAgICAgIHByb3BlcnR5QTogXCJ2YWx1ZUFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7Il19
|
@@ -7,4 +7,29 @@ module "eks_managed_node_group" {
|
|
7
7
|
source = "DanielMSchmidt/my-module//modules/my-awesome-module"
|
8
8
|
|
9
9
|
}
|
10
|
-
```
|
10
|
+
```
|
11
|
+
<!-- BEGIN_TF_DOCS -->
|
12
|
+
## Requirements
|
13
|
+
|
14
|
+
No requirements.
|
15
|
+
|
16
|
+
## Providers
|
17
|
+
|
18
|
+
No providers.
|
19
|
+
|
20
|
+
## Modules
|
21
|
+
|
22
|
+
No modules.
|
23
|
+
|
24
|
+
## Resources
|
25
|
+
|
26
|
+
No resources.
|
27
|
+
|
28
|
+
## Inputs
|
29
|
+
|
30
|
+
No inputs.
|
31
|
+
|
32
|
+
## Outputs
|
33
|
+
|
34
|
+
No outputs.
|
35
|
+
<!-- END_TF_DOCS -->
|
package/example/package.json
CHANGED
@@ -20,7 +20,6 @@
|
|
20
20
|
"post-compile": "npx projen post-compile",
|
21
21
|
"post-upgrade": "npx projen post-upgrade",
|
22
22
|
"pre-compile": "npx projen pre-compile",
|
23
|
-
"precommit": "npx projen precommit",
|
24
23
|
"release": "npx projen release",
|
25
24
|
"test": "npx projen test",
|
26
25
|
"test:update": "npx projen test:update",
|
@@ -38,4 +38,11 @@ for d in */ ; do
|
|
38
38
|
mkdir -p "$TARGET_FOLDER/$dirname"
|
39
39
|
cp "$MODULES_FOLDER/$dirname/cdk.tf.json" "$TARGET_FOLDER/$dirname/cdk.tf.json"
|
40
40
|
cp "$SRC_FOLDER/$dirname.md" "$TARGET_FOLDER/$dirname/README.md"
|
41
|
+
|
42
|
+
# Add README hcl docs
|
43
|
+
if which terraform-docs >/dev/null; then
|
44
|
+
terraform-docs markdown table --output-file "$TARGET_FOLDER/$dirname/README.md" "$TARGET_FOLDER/$dirname"
|
45
|
+
else
|
46
|
+
docker run --rm --volume "$SCRIPTPATH/../modules:/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.16.0 markdown table --output-file "/terraform-docs/$dirname/README.md" /terraform-docs/$dirname
|
47
|
+
fi
|
41
48
|
done
|
package/lib/index.d.ts
CHANGED
@@ -1,29 +1,18 @@
|
|
1
1
|
import { ConstructLibrary, ConstructLibraryOptions } from "projen/lib/cdk";
|
2
|
-
declare type TerraformProviderAwsConfig = {
|
3
|
-
region: string;
|
4
|
-
requiredProviderVersion: string;
|
5
|
-
};
|
6
|
-
declare type TerraformProviderAzureConfig = {
|
7
|
-
location: string;
|
8
|
-
requiredProviderVersion: string;
|
9
|
-
resourceGroupName: string;
|
10
|
-
};
|
11
2
|
declare type HybridModuleOptions = ConstructLibraryOptions & {
|
12
3
|
cdktfVersion?: string;
|
13
4
|
constructVersion?: string;
|
14
5
|
repository: string;
|
15
6
|
author: string;
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
disableDocsHook?: boolean;
|
7
|
+
terraformExamples?: {
|
8
|
+
enabled: boolean;
|
9
|
+
folder?: string;
|
10
|
+
providerConfig?: string;
|
11
|
+
};
|
12
|
+
constructExamples?: {
|
13
|
+
enabled: boolean;
|
14
|
+
folder?: string;
|
25
15
|
};
|
26
|
-
additionalPrecommitHooks?: Record<string, any>[];
|
27
16
|
projectId?: string;
|
28
17
|
};
|
29
18
|
export declare class HybridModule extends ConstructLibrary {
|
package/lib/index.js
CHANGED
@@ -21,6 +21,25 @@ export class MyConstruct extends Construct {
|
|
21
21
|
super(scope, id);
|
22
22
|
}
|
23
23
|
}
|
24
|
+
`;
|
25
|
+
const constructTestCode = `
|
26
|
+
import { Testing } from "cdktf";
|
27
|
+
import "cdktf/lib/testing/adapters/jest";
|
28
|
+
import { MyConstruct } from "../";
|
29
|
+
|
30
|
+
// To learn more about testing see cdk.tf/testing
|
31
|
+
describe("MyConstruct", () => {
|
32
|
+
it("should synthesize", () => {
|
33
|
+
expect(
|
34
|
+
Testing.synthScope((scope) => {
|
35
|
+
new MyConstruct(scope, "my-construct", {
|
36
|
+
propertyA: "valueA",
|
37
|
+
});
|
38
|
+
})
|
39
|
+
).toMatchSnapshot();
|
40
|
+
});
|
41
|
+
});
|
42
|
+
|
24
43
|
`;
|
25
44
|
const moduleSrcCode = `
|
26
45
|
import { App } from "cdktf";
|
@@ -45,54 +64,6 @@ const app = new App();
|
|
45
64
|
new MyAwesomeModule(app, "my-awesome-module");
|
46
65
|
app.synth();
|
47
66
|
`;
|
48
|
-
const terraformAwsMainSrcCode = `
|
49
|
-
terraform {
|
50
|
-
# Limit provider version (some modules are not compatible with aws 4.x)
|
51
|
-
required_providers {
|
52
|
-
aws = {
|
53
|
-
source = "hashicorp/aws"
|
54
|
-
version = "~> __requiredProviderVersion__"
|
55
|
-
}
|
56
|
-
}
|
57
|
-
# Terraform binary version constraint
|
58
|
-
required_version = "~> 1.1.0"
|
59
|
-
}
|
60
|
-
|
61
|
-
|
62
|
-
provider "aws" {
|
63
|
-
region = "__region__"
|
64
|
-
}
|
65
|
-
`;
|
66
|
-
const terraformAzureMainSrcCode = `
|
67
|
-
# Configure the Azure provider
|
68
|
-
terraform {
|
69
|
-
required_providers {
|
70
|
-
azurerm = {
|
71
|
-
source = "hashicorp/azurerm"
|
72
|
-
version = "~> __requiredProviderVersion__"
|
73
|
-
}
|
74
|
-
}
|
75
|
-
|
76
|
-
required_version = ">= 1.1.0"
|
77
|
-
}
|
78
|
-
|
79
|
-
provider "azurerm" {
|
80
|
-
features {}
|
81
|
-
}
|
82
|
-
|
83
|
-
resource "azurerm_resource_group" "rg" {
|
84
|
-
name = "__resourceGroupName__"
|
85
|
-
location = "__location__"
|
86
|
-
}
|
87
|
-
`;
|
88
|
-
const terraformMainSrcCodeMap = {
|
89
|
-
aws: {
|
90
|
-
srcCode: terraformAwsMainSrcCode,
|
91
|
-
},
|
92
|
-
azure: {
|
93
|
-
srcCode: terraformAzureMainSrcCode,
|
94
|
-
},
|
95
|
-
};
|
96
67
|
const terraformReadmeDocs = `
|
97
68
|
# Please add here some pure HCL tests for your modules in order to test HCL Interoperability
|
98
69
|
|
@@ -124,20 +95,7 @@ class HybridModule extends cdk_1.ConstructLibrary {
|
|
124
95
|
eslintOptions: Object.assign({}, config.eslintOptions, {
|
125
96
|
lintProjenRc: false,
|
126
97
|
}),
|
127
|
-
postBuildSteps:
|
128
|
-
? [
|
129
|
-
{
|
130
|
-
id: "install-pre-commit",
|
131
|
-
name: "Install pre-commit hook",
|
132
|
-
run: "pip install pre-commit",
|
133
|
-
},
|
134
|
-
{
|
135
|
-
id: "documentation-precommit-hook",
|
136
|
-
name: "Documentation Pre-commit Hook",
|
137
|
-
run: "pre-commit run --all-files",
|
138
|
-
},
|
139
|
-
]
|
140
|
-
: [],
|
98
|
+
postBuildSteps: [],
|
141
99
|
});
|
142
100
|
const constructVersion = config.constructVersion || "^10.0.25";
|
143
101
|
const cdktfVersion = config.cdktfVersion || "^0.9.4";
|
@@ -172,35 +130,101 @@ module "eks_managed_node_group" {
|
|
172
130
|
output: "modules",
|
173
131
|
projectId: config.projectId || (0, uuid_1.v4)(),
|
174
132
|
}, null, 2),
|
133
|
+
"__tests__/index-test.ts": constructTestCode.trim(),
|
175
134
|
},
|
176
135
|
});
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
136
|
+
if (config.terraformExamples && config.terraformExamples.enabled) {
|
137
|
+
const providerConfig = config.terraformExamples.providerConfig ||
|
138
|
+
`
|
139
|
+
terraform {
|
140
|
+
# Terraform binary version constraint
|
141
|
+
required_version = "~> 1.1.0"
|
142
|
+
|
143
|
+
# Define all needed providers here, you can find all available providers here:
|
144
|
+
# https://registry.terraform.io/
|
145
|
+
required_providers {}
|
146
|
+
}
|
147
|
+
|
148
|
+
# Initialize your provider here
|
149
|
+
|
150
|
+
`.trim();
|
151
|
+
const examplesFolder = config.terraformExamples.folder || "terraform-examples";
|
152
|
+
new projen_1.SampleDir(this, examplesFolder, {
|
153
|
+
files: {
|
154
|
+
"main.tf": `
|
155
|
+
# Configure Terraform
|
156
|
+
${providerConfig}
|
157
|
+
|
158
|
+
`.trimStart(),
|
159
|
+
"README.md": terraformReadmeDocs.trim(),
|
160
|
+
},
|
161
|
+
});
|
162
|
+
this.gitignore.addPatterns(`${examplesFolder}/.terraform`, `${examplesFolder}/.terraform.lock.hcl`);
|
163
|
+
}
|
164
|
+
if (config.constructExamples && config.constructExamples.enabled) {
|
165
|
+
const constructExampleFolder = config.constructExamples.folder || "construct-examples";
|
166
|
+
const levels = constructExampleFolder
|
167
|
+
.split("/")
|
168
|
+
.map(() => "..")
|
169
|
+
.join("/");
|
170
|
+
const constructReadmeDocs = `
|
171
|
+
# Construct Examples
|
172
|
+
|
173
|
+
Example use-cases for the Construct library.
|
174
|
+
|
175
|
+
- [Basic Usage](./basic.ts)
|
176
|
+
|
177
|
+
To ensure all examples are working, please make sure the [index.ts](./index.ts) file is importing all of them.
|
178
|
+
`;
|
179
|
+
const constructExampleCode = `
|
180
|
+
import { TerraformStack } from "cdktf";
|
181
|
+
import { Construct } from "constructs";
|
182
|
+
|
183
|
+
import { MyConstruct } from "${levels}/src/";
|
184
|
+
|
185
|
+
export class BasicExample extends TerraformStack {
|
186
|
+
constructor(scope: Construct, name: string) {
|
187
|
+
super(scope, name);
|
188
|
+
|
189
|
+
new MyConstruct(this, "my-construct", {
|
190
|
+
propertyA: "valueA",
|
191
|
+
});
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
195
|
+
|
196
|
+
`;
|
197
|
+
const exampleCollectionCode = `
|
198
|
+
// This file will be synthesized to check if all examples are working
|
199
|
+
|
200
|
+
import { App } from "cdktf";
|
201
|
+
// All examples need to be imported here
|
202
|
+
import { BasicExample } from "./basic";
|
203
|
+
|
204
|
+
const app = new App();
|
205
|
+
|
206
|
+
// All examples need to be initialized here
|
207
|
+
new BasicExample(app, "basic-example");
|
208
|
+
app.synth();
|
209
|
+
`;
|
210
|
+
new projen_1.SampleDir(this, constructExampleFolder, {
|
211
|
+
files: {
|
212
|
+
"index.ts": exampleCollectionCode.trim(),
|
213
|
+
"basic.ts": constructExampleCode.trim(),
|
214
|
+
"cdktf.json": JSON.stringify({
|
215
|
+
language: "typescript",
|
216
|
+
app: "npx ts-node index.ts",
|
217
|
+
projectId: config.projectId || (0, uuid_1.v4)(),
|
218
|
+
}, null, 2),
|
219
|
+
"README.md": constructReadmeDocs.trim(),
|
220
|
+
},
|
221
|
+
});
|
222
|
+
this.testTask.exec(`cdktf synth`, {
|
223
|
+
cwd: constructExampleFolder,
|
224
|
+
});
|
225
|
+
this.gitignore.addPatterns(`${constructExampleFolder}/cdktf.out`);
|
192
226
|
}
|
193
|
-
Object.keys(configProperty).forEach((key) => {
|
194
|
-
mainTfFile = mainTfFile.replace(`__${key}__`, configProperty[key]);
|
195
|
-
});
|
196
|
-
new projen_1.SampleDir(this, config.terraformExamplesFolder, {
|
197
|
-
files: {
|
198
|
-
"main.tf": mainTfFile,
|
199
|
-
"README.md": terraformReadmeDocs.trim(),
|
200
|
-
},
|
201
|
-
});
|
202
227
|
this.gitignore.addPatterns("src/.gen", "src/cdktf.out", "src/modules");
|
203
|
-
this.gitignore.addPatterns(`${config.terraformExamplesFolder}/.terraform`, `${config.terraformExamplesFolder}/.terraform.lock.hcl`);
|
204
228
|
this.compileTask.prependExec("cdktf get", {
|
205
229
|
cwd: this.srcdir,
|
206
230
|
});
|
@@ -249,6 +273,13 @@ for d in */ ; do
|
|
249
273
|
mkdir -p "$TARGET_FOLDER/$dirname"
|
250
274
|
cp "$MODULES_FOLDER/$dirname/cdk.tf.json" "$TARGET_FOLDER/$dirname/cdk.tf.json"
|
251
275
|
cp "$SRC_FOLDER/$dirname.md" "$TARGET_FOLDER/$dirname/README.md"
|
276
|
+
|
277
|
+
# Add README hcl docs
|
278
|
+
if which terraform-docs >/dev/null; then
|
279
|
+
terraform-docs markdown table --output-file "$TARGET_FOLDER/$dirname/README.md" "$TARGET_FOLDER/$dirname"
|
280
|
+
else
|
281
|
+
docker run --rm --volume "$SCRIPTPATH/../modules:/terraform-docs" -u $(id -u) quay.io/terraform-docs/terraform-docs:0.16.0 markdown table --output-file "/terraform-docs/$dirname/README.md" /terraform-docs/$dirname
|
282
|
+
fi
|
252
283
|
done
|
253
284
|
`.trim());
|
254
285
|
this.compileTask.exec("./scripts/copy-modules.sh", {
|
@@ -268,32 +299,7 @@ terraform -chdir=terraform plan
|
|
268
299
|
`);
|
269
300
|
this.testTask.exec("./scripts/tf-module-test.sh");
|
270
301
|
(_c = this.jest) === null || _c === void 0 ? void 0 : _c.addIgnorePattern("terraform");
|
271
|
-
// Pre-commit hooks
|
272
|
-
if (config.documentationPrecommitHook !== false) {
|
273
|
-
const { additionalPrecommitHooks, documentationPrecommitHookOptions } = config;
|
274
|
-
const { version = "v1.70.1", disableDocsHook = false, disableFormatHook = false, } = documentationPrecommitHookOptions || {};
|
275
|
-
new projen_1.YamlFile(this, ".pre-commit-config.yaml", {
|
276
|
-
committed: true,
|
277
|
-
obj: {
|
278
|
-
repos: [
|
279
|
-
{
|
280
|
-
repo: "https://github.com/antonbabenko/pre-commit-terraform",
|
281
|
-
rev: version,
|
282
|
-
hooks: [
|
283
|
-
disableFormatHook ? null : { id: "terraform_fmt" },
|
284
|
-
disableDocsHook ? null : { id: "terraform_docs" },
|
285
|
-
].filter((item) => item !== null),
|
286
|
-
},
|
287
|
-
...(additionalPrecommitHooks !== null && additionalPrecommitHooks !== void 0 ? additionalPrecommitHooks : []),
|
288
|
-
],
|
289
|
-
},
|
290
|
-
});
|
291
|
-
this.tasks.addTask("precommit", {
|
292
|
-
description: "Runs precommit hooks",
|
293
|
-
exec: "pre-commit install",
|
294
|
-
});
|
295
|
-
}
|
296
302
|
}
|
297
303
|
}
|
298
304
|
exports.HybridModule = HybridModule;
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQTJFO0FBQzNFLHdDQUEyRTtBQUMzRSwrQkFBa0M7QUFrQ2xDLE1BQU0sUUFBUSxHQUFHO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxVQUFVLEVBQUUsSUFBSTtJQUNoQixvQkFBb0IsRUFBRSxNQUFNO0NBQzdCLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHOzs7Ozs7Ozs7Ozs7Q0FZeEIsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JyQixDQUFDO0FBRUYsTUFBTSx1QkFBdUIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQi9CLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FxQmpDLENBQUM7QUFFRixNQUFNLHVCQUF1QixHQUEyQztJQUN0RSxHQUFHLEVBQUU7UUFDSCxPQUFPLEVBQUUsdUJBQXVCO0tBQ2pDO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsT0FBTyxFQUFFLHlCQUF5QjtLQUNuQztDQUNGLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHOzs7Ozs7Ozs7S0FTdkIsQ0FBQztBQUVOLE1BQU0sVUFBVyxTQUFRLGlCQUFRO0lBQy9CLFlBQVksT0FBZ0IsRUFBRSxJQUFZLEVBQVUsT0FBZTtRQUNqRSxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtZQUNuQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7UUFIK0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUluRSxDQUFDO0lBRVMsaUJBQWlCLENBQUMsQ0FBWTtRQUN0QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztDQUNGO0FBRUQsTUFBYSxZQUFhLFNBQVEsc0JBQWdCO0lBQ2hELFlBQVksTUFBMkI7O1FBQ3JDLEtBQUssQ0FB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QUFLLElBQUksQ0FBQzt5QkFDbEM7d0JBQ0QsR0FBRyxDQUFDLHdCQUF3QixhQUF4Qix3QkFBd0IsY0FBeEIsd0JBQXdCLEdBQUksRUFBRSxDQUFDO3FCQUNwQztpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRTtnQkFDOUIsV0FBVyxFQUFFLHNCQUFzQjtnQkFDbkMsSUFBSSxFQUFFLG9CQUFvQjthQUMzQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRjtBQS9ORCxvQ0ErTkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWxlQmFzZSwgSVJlc29sdmVyLCBQcm9qZWN0LCBTYW1wbGVEaXIsIFlhbWxGaWxlIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi9jZGtcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG50eXBlIFRlcnJhZm9ybVByb3ZpZGVyQXdzQ29uZmlnID0ge1xuICByZWdpb246IHN0cmluZztcbiAgcmVxdWlyZWRQcm92aWRlclZlcnNpb246IHN0cmluZztcbn07XG5cbnR5cGUgVGVycmFmb3JtUHJvdmlkZXJBenVyZUNvbmZpZyA9IHtcbiAgbG9jYXRpb246IHN0cmluZztcbiAgcmVxdWlyZWRQcm92aWRlclZlcnNpb246IHN0cmluZztcbiAgcmVzb3VyY2VHcm91cE5hbWU6IHN0cmluZztcbn07XG5cbnR5cGUgSHlicmlkTW9kdWxlT3B0aW9ucyA9IENvbnN0cnVjdExpYnJhcnlPcHRpb25zICYge1xuICBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG4gIGNvbnN0cnVjdFZlcnNpb24/OiBzdHJpbmc7XG4gIHJlcG9zaXRvcnk6IHN0cmluZztcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIHRlcnJhZm9ybUV4YW1wbGVzRm9sZGVyOiBzdHJpbmc7XG4gIHRlcnJhZm9ybVByb3ZpZGVyOiBzdHJpbmc7XG4gIHRlcnJhZm9ybVByb3ZpZGVyQXdzQ29uZmlnPzogVGVycmFmb3JtUHJvdmlkZXJBd3NDb25maWc7XG4gIHRlcnJhZm9ybVByb3ZpZGVyQXp1cmVDb25maWc/OiBUZXJyYWZvcm1Qcm92aWRlckF6dXJlQ29uZmlnO1xuICAvLyBSdW4gcHJlLWNvbW1pdCBob29rcyB1c2luZyBsb2NhbCBiaW5hcmllcyAvIG5vdCBhdCBhbGxcbiAgZG9jdW1lbnRhdGlvblByZWNvbW1pdEhvb2s/OiBib29sZWFuO1xuICBkb2N1bWVudGF0aW9uUHJlY29tbWl0SG9va09wdGlvbnM/OiB7XG4gICAgdmVyc2lvbj86IHN0cmluZzsgLy8gR2V0IHRoZSBsYXRlc3QgZnJvbTogaHR0cHM6Ly9naXRodWIuY29tL2FudG9uYmFiZW5rby9wcmUtY29tbWl0LXRlcnJhZm9ybS9yZWxlYXNlc1xuICAgIGRpc2FibGVGb3JtYXRIb29rPzogYm9vbGVhbjtcbiAgICBkaXNhYmxlRG9jc0hvb2s/OiBib29sZWFuO1xuICB9O1xuICBhZGRpdGlvbmFsUHJlY29tbWl0SG9va3M/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG4gIC8vIERlZmF1bHRlZCB0byBhIHV1aWQgc3RyaW5nIGFzIGNka3RmIHdvdWxkXG4gIHByb2plY3RJZD86IHN0cmluZztcbn07XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuICBwcmV0dGllcjogdHJ1ZSxcbiAgcHJvamVucmNUczogdHJ1ZSxcbiAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxufTtcblxuY29uc3QgY29uc3RydWN0U3JjQ29kZSA9IGBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXlDb25zdHJ1Y3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgcHJvcGVydHlBOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNeUNvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHB1YmxpYyBjb25maWc6IE15Q29uc3RydWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cbn1cbmA7XG5cbmNvbnN0IG1vZHVsZVNyY0NvZGUgPSBgXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBURk1vZHVsZVN0YWNrIH0gZnJvbSBcImNka3RmLXRmLW1vZHVsZS1zdGFja1wiO1xuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiLi9pbmRleFwiO1xuXG5jbGFzcyBNeUF3ZXNvbWVNb2R1bGUgZXh0ZW5kcyBURk1vZHVsZVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgTXlDb25zdHJ1Y3QodGhpcywgXCJteS1jb25zdHJ1Y3RcIiwge1xuICAgICAgcHJvcGVydHlBOiBcInZhbHVlQVwiLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbi8vIFRoaXMgaXMgdGhlIG5hbWUgdGhlIG1vZHVsZSBjYW4gYmUgZm91bmQgdW5kZXIuIFxuLy8gV2UgZXhwZWN0IGEgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuXG4vLyBUaGUgUkVBRE1FLm1kIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbSB0aGlzIGZpbGUuXG5uZXcgTXlBd2Vzb21lTW9kdWxlKGFwcCwgXCJteS1hd2Vzb21lLW1vZHVsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuY29uc3QgdGVycmFmb3JtQXdzTWFpblNyY0NvZGUgPSBgXG50ZXJyYWZvcm0ge1xuICAjIExpbWl0IHByb3ZpZGVyIHZlcnNpb24gKHNvbWUgbW9kdWxlcyBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCBhd3MgNC54KVxuICByZXF1aXJlZF9wcm92aWRlcnMge1xuICAgIGF3cyA9IHtcbiAgICAgIHNvdXJjZSAgPSBcImhhc2hpY29ycC9hd3NcIlxuICAgICAgdmVyc2lvbiA9IFwifj4gX19yZXF1aXJlZFByb3ZpZGVyVmVyc2lvbl9fXCJcbiAgICB9XG4gIH1cbiAgIyBUZXJyYWZvcm0gYmluYXJ5IHZlcnNpb24gY29uc3RyYWludFxuICByZXF1aXJlZF92ZXJzaW9uID0gXCJ+PiAxLjEuMFwiXG59XG5cblxucHJvdmlkZXIgXCJhd3NcIiB7XG4gIHJlZ2lvbiA9IFwiX19yZWdpb25fX1wiXG59XG5gO1xuXG5jb25zdCB0ZXJyYWZvcm1BenVyZU1haW5TcmNDb2RlID0gYFxuIyBDb25maWd1cmUgdGhlIEF6dXJlIHByb3ZpZGVyXG50ZXJyYWZvcm0ge1xuICByZXF1aXJlZF9wcm92aWRlcnMge1xuICAgIGF6dXJlcm0gPSB7XG4gICAgICBzb3VyY2UgID0gXCJoYXNoaWNvcnAvYXp1cmVybVwiXG4gICAgICB2ZXJzaW9uID0gXCJ+PiBfX3JlcXVpcmVkUHJvdmlkZXJWZXJzaW9uX19cIlxuICAgIH1cbiAgfVxuXG4gIHJlcXVpcmVkX3ZlcnNpb24gPSBcIj49IDEuMS4wXCJcbn1cblxucHJvdmlkZXIgXCJhenVyZXJtXCIge1xuICBmZWF0dXJlcyB7fVxufVxuXG5yZXNvdXJjZSBcImF6dXJlcm1fcmVzb3VyY2VfZ3JvdXBcIiBcInJnXCIge1xuICBuYW1lICAgICA9IFwiX19yZXNvdXJjZUdyb3VwTmFtZV9fXCJcbiAgbG9jYXRpb24gPSBcIl9fbG9jYXRpb25fX1wiXG59XG5gO1xuXG5jb25zdCB0ZXJyYWZvcm1NYWluU3JjQ29kZU1hcDogeyBba2V5OiBzdHJpbmddOiB7IHNyY0NvZGU6IHN0cmluZyB9IH0gPSB7XG4gIGF3czoge1xuICAgIHNyY0NvZGU6IHRlcnJhZm9ybUF3c01haW5TcmNDb2RlLFxuICB9LFxuICBhenVyZToge1xuICAgIHNyY0NvZGU6IHRlcnJhZm9ybUF6dXJlTWFpblNyY0NvZGUsXG4gIH0sXG59O1xuXG5jb25zdCB0ZXJyYWZvcm1SZWFkbWVEb2NzID0gYFxuIyBQbGVhc2UgYWRkIGhlcmUgc29tZSBwdXJlIEhDTCB0ZXN0cyBmb3IgeW91ciBtb2R1bGVzIGluIG9yZGVyIHRvIHRlc3QgSENMIEludGVyb3BlcmFiaWxpdHlcblxuRXhhbXBsZXM6XG5cbm1vZHVsZSBcIm15X2F3ZXNvbWVfdGVzdFwiIHtcbiAgc291cmNlID0gXCIuLi9tb2R1bGVzL215LWF3ZXNvbWUtbW9kdWxlc1wiXG4gIC4uLnZhcmlhYmxlcy4uLlxufVxuICAgIGA7XG5cbmNsYXNzIFNjcmlwdEZpbGUgZXh0ZW5kcyBGaWxlQmFzZSB7XG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIHBhdGg6IHN0cmluZywgcHJpdmF0ZSBjb250ZW50OiBzdHJpbmcpIHtcbiAgICBzdXBlcihwcm9qZWN0LCBwYXRoLCB7XG4gICAgICBleGVjdXRhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVDb250ZW50KF86IElSZXNvbHZlcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29udGVudDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSHlicmlkTW9kdWxlIGV4dGVuZHMgQ29uc3RydWN0TGlicmFyeSB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSHlicmlkTW9kdWxlT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgLi4uY29uZmlnLFxuICAgICAgc2FtcGxlQ29kZTogZmFsc2UsXG4gICAgICBlc2xpbnRPcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBjb25maWcuZXNsaW50T3B0aW9ucywge1xuICAgICAgICBsaW50UHJvamVuUmM6IGZhbHNlLFxuICAgICAgfSksXG4gICAgICBwb3N0QnVpbGRTdGVwczpcbiAgICAgICAgY29uZmlnLmRvY3VtZW50YXRpb25QcmVjb21taXRIb29rICE9PSBmYWxzZVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6IFwiaW5zdGFsbC1wcmUtY29tbWl0XCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJJbnN0YWxsIHByZS1jb21taXQgaG9va1wiLFxuICAgICAgICAgICAgICAgIHJ1bjogXCJwaXAgaW5zdGFsbCBwcmUtY29tbWl0XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogXCJkb2N1bWVudGF0aW9uLXByZWNvbW1pdC1ob29rXCIsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJEb2N1bWVudGF0aW9uIFByZS1jb21taXQgSG9va1wiLFxuICAgICAgICAgICAgICAgIHJ1bjogXCJwcmUtY29tbWl0IHJ1biAtLWFsbC1maWxlc1wiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogW10sXG4gICAgfSk7XG4gICAgY29uc3QgY29uc3RydWN0VmVyc2lvbiA9IGNvbmZpZy5jb25zdHJ1Y3RWZXJzaW9uIHx8IFwiXjEwLjAuMjVcIjtcbiAgICBjb25zdCBjZGt0ZlZlcnNpb24gPSBjb25maWcuY2RrdGZWZXJzaW9uIHx8IFwiXjAuOS40XCI7XG5cbiAgICB0aGlzLmFkZFBlZXJEZXBzKGBjb25zdHJ1Y3RzQCR7Y29uc3RydWN0VmVyc2lvbn1gLCBgY2RrdGZAJHtjZGt0ZlZlcnNpb259YCk7XG4gICAgdGhpcy5hZGREZXZEZXBzKGBjZGt0Zi1jbGlAJHtjZGt0ZlZlcnNpb259YCwgXCJ0cy1ub2RlXCIpO1xuICAgIHRoaXMuYWRkS2V5d29yZHMoXCJjZGt0ZlwiLCBcImNka3RmLWh5YnJpZFwiKTtcbiAgICB0aGlzLnNldFNjcmlwdChcInRlcnJhZm9ybTp0ZXN0XCIsIFwiLi9zY3JpcHRzL3RmLW1vZHVsZS10ZXN0LnNoXCIpO1xuXG4gICAgLy8gTW9kdWxlIEVudHJ5cG9pbnRcbiAgICB0aGlzLmFkZERlcHMoXCJjZGt0Zi10Zi1tb2R1bGUtc3RhY2tcIik7XG4gICAgY29uc3QgbW9kdWxlRG9jcyA9IGBcbiMgTXkgQXdlc29tZSBNb2R1bGVcblxuIyMgVXNhZ2VcblxuXFxgXFxgXFxgaGNsXG5tb2R1bGUgXCJla3NfbWFuYWdlZF9ub2RlX2dyb3VwXCIge1xuICBzb3VyY2UgPSBcIiR7XG4gICAgY29uZmlnLnJlcG9zaXRvcnlcbiAgICAgID8ucmVwbGFjZShcImh0dHBzOi8vZ2l0aHViLmNvbS9cIiwgXCJcIilcbiAgICAgIC5yZXBsYWNlKFwiaHR0cDovL2dpdGh1Yi5jb20vXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZShcImdpdGh1Yi5jb20vXCIsIFwiXCIpIHx8IFwibXktZ2l0aHViLXJlcG9cIlxuICB9Ly9tb2R1bGVzL215LWF3ZXNvbWUtbW9kdWxlXCJcblxufVxuXFxgXFxgXFxgXG4gICAgYDtcblxuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgdGhpcy5zcmNkaXIsIHtcbiAgICAgIGZpbGVzOiB7XG4gICAgICAgIFwiaW5kZXgudHNcIjogY29uc3RydWN0U3JjQ29kZS50cmltKCksXG4gICAgICAgIFwidGZNb2R1bGVzLnRzXCI6IG1vZHVsZVNyY0NvZGUudHJpbSgpLFxuICAgICAgICBcIm15LWF3ZXNvbWUtbW9kdWxlLm1kXCI6IG1vZHVsZURvY3MudHJpbSgpLFxuICAgICAgICBcImNka3RmLmpzb25cIjogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFuZ3VhZ2U6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICAgICAgYXBwOiBcIm5weCB0cy1ub2RlIHRmTW9kdWxlcy50c1wiLFxuICAgICAgICAgICAgdGVycmFmb3JtUHJvdmlkZXJzOiBbXCJoYXNoaWNvcnAvbnVsbEAzLjEuMVwiXSwgLy8gV2UgbmVlZCBhdCBsZWFzdCBhIHByb3ZpZGVyIGZvciBnZXQgdG8gc3VjY2VlZFxuICAgICAgICAgICAgdGVycmFmb3JtTW9kdWxlczogW10sXG4gICAgICAgICAgICBvdXRwdXQ6IFwibW9kdWxlc1wiLFxuICAgICAgICAgICAgcHJvamVjdElkOiBjb25maWcucHJvamVjdElkIHx8IHV1aWQoKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgMlxuICAgICAgICApLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIFJldHJpZXZlIGNvcnJlY3QgVEYgbWFpbiBzdHVmZlxuICAgIGxldCBtYWluVGZGaWxlID1cbiAgICAgIHRlcnJhZm9ybU1haW5TcmNDb2RlTWFwW2NvbmZpZy50ZXJyYWZvcm1Qcm92aWRlcl0uc3JjQ29kZS50cmltKCk7XG5cbiAgICBsZXQgY29uZmlnUHJvcGVydHk6IGFueSA9IHt9O1xuICAgIHN3aXRjaCAoY29uZmlnLnRlcnJhZm9ybVByb3ZpZGVyKSB7XG4gICAgICBjYXNlIFwiYXdzXCI6IHtcbiAgICAgICAgY29uZmlnUHJvcGVydHkgPSBjb25maWcudGVycmFmb3JtUHJvdmlkZXJBd3NDb25maWc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBcImF6dXJlXCI6IHtcbiAgICAgICAgY29uZmlnUHJvcGVydHkgPSBjb25maWcudGVycmFmb3JtUHJvdmlkZXJBenVyZUNvbmZpZztcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIk5lZWQgdG8gZGVmaW5lIGNvcnJlY3RseSBhIFByb3ZpZGVyLCBvbmx5IFthd3MsYXp1cmUsZ2NwXSBhbGxvd2VkXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyhjb25maWdQcm9wZXJ0eSkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIG1haW5UZkZpbGUgPSBtYWluVGZGaWxlLnJlcGxhY2UoYF9fJHtrZXl9X19gLCBjb25maWdQcm9wZXJ0eVtrZXldKTtcbiAgICB9KTtcblxuICAgIG5ldyBTYW1wbGVEaXIodGhpcywgY29uZmlnLnRlcnJhZm9ybUV4YW1wbGVzRm9sZGVyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcIm1haW4udGZcIjogbWFpblRmRmlsZSxcbiAgICAgICAgXCJSRUFETUUubWRcIjogdGVycmFmb3JtUmVhZG1lRG9jcy50cmltKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnMoXCJzcmMvLmdlblwiLCBcInNyYy9jZGt0Zi5vdXRcIiwgXCJzcmMvbW9kdWxlc1wiKTtcbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucyhcbiAgICAgIGAke2NvbmZpZy50ZXJyYWZvcm1FeGFtcGxlc0ZvbGRlcn0vLnRlcnJhZm9ybWAsXG4gICAgICBgJHtjb25maWcudGVycmFmb3JtRXhhbXBsZXNGb2xkZXJ9Ly50ZXJyYWZvcm0ubG9jay5oY2xgXG4gICAgKTtcbiAgICB0aGlzLmNvbXBpbGVUYXNrLnByZXBlbmRFeGVjKFwiY2RrdGYgZ2V0XCIsIHtcbiAgICAgIGN3ZDogdGhpcy5zcmNkaXIsXG4gICAgfSk7XG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwiY2RrdGYgc3ludGhcIiwge1xuICAgICAgY3dkOiB0aGlzLnNyY2RpcixcbiAgICAgIG5hbWU6IFwiU3ludGhlc2l6ZSBtb2R1bGUgSENMXCIsXG4gICAgfSk7XG5cbiAgICBuZXcgU2NyaXB0RmlsZShcbiAgICAgIHRoaXMsXG4gICAgICBcInNjcmlwdHMvY29weS1tb2R1bGVzLnNoXCIsXG4gICAgICBgXG4jIS9iaW4vYmFzaFxuIyBUaGlzIHNjcmlwdCBpcyBjcmVhdGVkIGJ5IHByb2plbiwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkuXG5zZXQgLWVcblxuU0NSSVBUUEFUSD1cIiQoIGNkIC0tIFwiJChkaXJuYW1lIFwiJDBcIilcIiA+L2Rldi9udWxsIDI+JjEgOyBwd2QgLVAgKVwiXG5cbiMgY2hlY2sgaWYgdGhlIG1vZHVsZSBmb2xkZXIgaGFzIGJlZW4gZ2VuZXJhdGVkIGFzIGV4cGVjdGVkXG5NT0RVTEVTX0ZPTERFUj0kKCBjZCAtLSBcIiRTQ1JJUFRQQVRILy4uL3NyYy9tb2R1bGVzL3N0YWNrc1wiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApXG5TUkNfRk9MREVSPSQoIGNkIC0tIFwiJFNDUklQVFBBVEgvLi4vc3JjL1wiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApXG5UQVJHRVRfRk9MREVSPVwiJFNDUklQVFBBVEgvLi4vbW9kdWxlc1wiXG5cbmlmIFsgISAtZCBcIiRNT0RVTEVTX0ZPTERFUlwiIF07IHRoZW5cbiAgZWNobyBcIkV4cGVjdGVkIG1vZHVsZSBmb2xkZXIgdG8gZXhpc3QgYXQgJE1PRFVMRVNfRk9MREVSXCJcbiAgZXhpdCAxXG5maVxuXG5jZCBcIiRNT0RVTEVTX0ZPTERFUlwiXG5mb3IgZCBpbiAqLyA7IGRvXG4gICAgWyAtTCBcIlxcJHtkJS99XCIgXSAmJiBjb250aW51ZVxuXG4gICAgZGlybmFtZT1cIlxcJHtkJS99XCJcblxuXG4gICAgIyBDaGVjayBpZiBldmVyeXRoaW5nIGlzIGluIHBsYWNlXG4gICAgaWYgWyAhIC1mIFwiJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lL2Nkay50Zi5qc29uXCIgXTsgdGhlblxuICAgICAgZWNobyBcIkV4cGVjdGVkIGNvZGUgZm9yICRkaXJuYW1lIGF0IGNkay50Zi5qc29uIHRvIGV4aXN0IGF0ICRNT0RVTEVTX0ZPTERFUi8kZGlybmFtZVwiXG4gICAgICBleGl0IDFcbiAgICBmaVxuXG4gICAgaWYgWyAhIC1mIFwiJFNSQ19GT0xERVIvJGRpcm5hbWUubWRcIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRXhwZWN0ZWQgRG9jdW1lbnRhdGlvbiBmb3IgJGRpcm5hbWUgYXQgJGRpcm5hbWUubWQgdG8gZXhpc3QgYXQgJFNSQ19GT0xERVIvJGRpcm5hbWUubWRcIlxuICAgICAgZXhpdCAxXG4gICAgZmlcblxuICAgICMgQ29weSBtb2R1bGUgYW5kIHJlYWRtZSB0b2dldGhlclxuICAgIGVjaG8gXCJDb3B5aW5nIENvZGUgYW5kIFJFQURNRSBmb3IgbW9kdWxlICRkaXJuYW1lXCJcbiAgICBta2RpciAtcCBcIiRUQVJHRVRfRk9MREVSXCJcbiAgICBta2RpciAtcCBcIiRUQVJHRVRfRk9MREVSLyRkaXJuYW1lXCJcbiAgICBjcCBcIiRNT0RVTEVTX0ZPTERFUi8kZGlybmFtZS9jZGsudGYuanNvblwiIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWUvY2RrLnRmLmpzb25cIlxuICAgIGNwIFwiJFNSQ19GT0xERVIvJGRpcm5hbWUubWRcIiBcIiRUQVJHRVRfRk9MREVSLyRkaXJuYW1lL1JFQURNRS5tZFwiXG5kb25lXG5gLnRyaW0oKVxuICAgICk7XG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwiLi9zY3JpcHRzL2NvcHktbW9kdWxlcy5zaFwiLCB7XG4gICAgICBuYW1lOiBcIkNvcHkgSENMIE1vZHVsZXNcIixcbiAgICB9KTtcblxuICAgIC8vIGlnbm9yZSBkaXN0IGluIHRlc3RzXG4gICAgdGhpcy5qZXN0Py5hZGRJZ25vcmVQYXR0ZXJuKFwiZGlzdFwiKTtcblxuICAgIG5ldyBTY3JpcHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiLi9zY3JpcHRzL3RmLW1vZHVsZS10ZXN0LnNoXCIsXG4gICAgICBgXG4jIS9iaW4vYmFzaFxuIyBUaGlzIHNjcmlwdCBpcyBjcmVhdGVkIGJ5IHByb2plbiwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkuXG5zZXQgLWVcblxudGVycmFmb3JtIC1jaGRpcj10ZXJyYWZvcm0gaW5pdCAtLXVwZ3JhZGVcbnRlcnJhZm9ybSAtY2hkaXI9dGVycmFmb3JtIGZtdFxudGVycmFmb3JtIC1jaGRpcj10ZXJyYWZvcm0gdmFsaWRhdGVcbnRlcnJhZm9ybSAtY2hkaXI9dGVycmFmb3JtIHBsYW4gICAgIFxuICAgICAgICBgXG4gICAgKTtcblxuICAgIHRoaXMudGVzdFRhc2suZXhlYyhcIi4vc2NyaXB0cy90Zi1tb2R1bGUtdGVzdC5zaFwiKTtcbiAgICB0aGlzLmplc3Q/LmFkZElnbm9yZVBhdHRlcm4oXCJ0ZXJyYWZvcm1cIik7XG5cbiAgICAvLyBQcmUtY29tbWl0IGhvb2tzXG4gICAgaWYgKGNvbmZpZy5kb2N1bWVudGF0aW9uUHJlY29tbWl0SG9vayAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHsgYWRkaXRpb25hbFByZWNvbW1pdEhvb2tzLCBkb2N1bWVudGF0aW9uUHJlY29tbWl0SG9va09wdGlvbnMgfSA9XG4gICAgICAgIGNvbmZpZztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgdmVyc2lvbiA9IFwidjEuNzAuMVwiLFxuICAgICAgICBkaXNhYmxlRG9jc0hvb2sgPSBmYWxzZSxcbiAgICAgICAgZGlzYWJsZUZvcm1hdEhvb2sgPSBmYWxzZSxcbiAgICAgIH0gPSBkb2N1bWVudGF0aW9uUHJlY29tbWl0SG9va09wdGlvbnMgfHwge307XG5cbiAgICAgIG5ldyBZYW1sRmlsZSh0aGlzLCBcIi5wcmUtY29tbWl0LWNvbmZpZy55YW1sXCIsIHtcbiAgICAgICAgY29tbWl0dGVkOiB0cnVlLFxuICAgICAgICBvYmo6IHtcbiAgICAgICAgICByZXBvczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByZXBvOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9hbnRvbmJhYmVua28vcHJlLWNvbW1pdC10ZXJyYWZvcm1cIixcbiAgICAgICAgICAgICAgcmV2OiB2ZXJzaW9uLFxuICAgICAgICAgICAgICBob29rczogW1xuICAgICAgICAgICAgICAgIGRpc2FibGVGb3JtYXRIb29rID8gbnVsbCA6IHsgaWQ6IFwidGVycmFmb3JtX2ZtdFwiIH0sXG4gICAgICAgICAgICAgICAgZGlzYWJsZURvY3NIb29rID8gbnVsbCA6IHsgaWQ6IFwidGVycmFmb3JtX2RvY3NcIiB9LFxuICAgICAgICAgICAgICBdLmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gbnVsbCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLi4uKGFkZGl0aW9uYWxQcmVjb21taXRIb29rcyA/PyBbXSksXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnRhc2tzLmFkZFRhc2soXCJwcmVjb21taXRcIiwge1xuICAgICAgICBkZXNjcmlwdGlvbjogXCJSdW5zIHByZWNvbW1pdCBob29rc1wiLFxuICAgICAgICBleGVjOiBcInByZS1jb21taXQgaW5zdGFsbFwiLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWlFO0FBQ2pFLHdDQUEyRTtBQUMzRSwrQkFBa0M7QUE0QmxDLE1BQU0sUUFBUSxHQUFHO0lBQ2YsUUFBUSxFQUFFLElBQUk7SUFDZCxVQUFVLEVBQUUsSUFBSTtJQUNoQixvQkFBb0IsRUFBRSxNQUFNO0NBQzdCLENBQUM7QUFFRixNQUFNLGdCQUFnQixHQUFHOzs7Ozs7Ozs7Ozs7Q0FZeEIsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtCekIsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0JyQixDQUFDO0FBRUYsTUFBTSxtQkFBbUIsR0FBRzs7Ozs7Ozs7O0tBU3ZCLENBQUM7QUFFTixNQUFNLFVBQVcsU0FBUSxpQkFBUTtJQUMvQixZQUFZLE9BQWdCLEVBQUUsSUFBWSxFQUFVLE9BQWU7UUFDakUsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7WUFDbkIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBSCtDLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFJbkUsQ0FBQztJQUVTLGlCQUFpQixDQUFDLENBQVk7UUFDdEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQUVELE1BQWEsWUFBYSxTQUFRLHNCQUFnQjtJQUNoRCxZQUFZLE1BQTJCOztRQUNyQyxLQUFLLENBQUM7WUFDSixHQUFHLFFBQVE7WUFDWCxHQUFHLE1BQU07WUFDVCxVQUFVLEVBQUUsS0FBSztZQUNqQixhQUFhLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLGFBQWEsRUFBRTtnQkFDckQsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQztZQUNGLGNBQWMsRUFBRSxFQUFFO1NB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bkMsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2hCLElBQUksRUFBRSx1QkFBdUI7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxVQUFVLENBQ1osSUFBSSxFQUNKLHlCQUF5QixFQUN6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWlETCxDQUFDLElBQUksRUFBRSxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNqRCxJQUFJLEVBQUUsa0JBQWtCO1NBQ3pCLENBQUMsQ0FBQztRQUVILHVCQUF1QjtRQUN2QixNQUFBLElBQUksQ0FBQyxJQUFJLDBDQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLElBQUksVUFBVSxDQUNaLElBQUksRUFDSiw2QkFBNkIsRUFDN0I7Ozs7Ozs7OztTQVNHLENBQ0osQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDbEQsTUFBQSxJQUFJLENBQUMsSUFBSSwwQ0FBRSxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFuUUQsb0NBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsZUJhc2UsIElSZXNvbHZlciwgUHJvamVjdCwgU2FtcGxlRGlyIH0gZnJvbSBcInByb2plblwiO1xuaW1wb3J0IHsgQ29uc3RydWN0TGlicmFyeSwgQ29uc3RydWN0TGlicmFyeU9wdGlvbnMgfSBmcm9tIFwicHJvamVuL2xpYi9jZGtcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tIFwidXVpZFwiO1xuXG50eXBlIEh5YnJpZE1vZHVsZU9wdGlvbnMgPSBDb25zdHJ1Y3RMaWJyYXJ5T3B0aW9ucyAmIHtcbiAgY2RrdGZWZXJzaW9uPzogc3RyaW5nO1xuICBjb25zdHJ1Y3RWZXJzaW9uPzogc3RyaW5nO1xuICAvLyBVUkwgb2YgdGhlIHJlcG9zaXRvcnlcbiAgcmVwb3NpdG9yeTogc3RyaW5nO1xuICAvLyBOYW1lIG9mIHRoZSBhdXRob3JcbiAgYXV0aG9yOiBzdHJpbmc7XG4gIC8vIElmIHNldCBhIHRlcnJhZm9ybSBleGFtcGxlcyBmb2xkZXIgd2lsbCBiZSBjcmVhdGVkXG4gIHRlcnJhZm9ybUV4YW1wbGVzPzoge1xuICAgIC8vIElmIHNldCB0ZXJyYWZvcm0gZXhhbXBsZXMgd2lsbCBiZSByZW5kZXJlZFxuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgLy8gUGF0aCBmb3IgdGhlIHRlcnJhZm9ybSBleGFtcGxlc1xuICAgIGZvbGRlcj86IHN0cmluZztcbiAgICAvLyBUaGUgSENMIGNvbmZpZyBmaWxlIHRvIHVzZSBmb3IgdGhlIHRlcnJhZm9ybSBwcm92aWRlclxuICAgIHByb3ZpZGVyQ29uZmlnPzogc3RyaW5nO1xuICB9O1xuICBjb25zdHJ1Y3RFeGFtcGxlcz86IHtcbiAgICAvLyBJZiBzZXQgY29uc3RydWN0IGV4YW1wbGVzIHdpbGwgYmUgcmVuZGVyZWRcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIC8vIFBhdGggZm9yIHRoZSBjb25zdHJ1Y3QgZXhhbXBsZXNcbiAgICBmb2xkZXI/OiBzdHJpbmc7XG4gIH07XG4gIC8vIERlZmF1bHRlZCB0byBhIHV1aWQgc3RyaW5nIGFzIGNka3RmIHdvdWxkXG4gIHByb2plY3RJZD86IHN0cmluZztcbn07XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuICBwcmV0dGllcjogdHJ1ZSxcbiAgcHJvamVucmNUczogdHJ1ZSxcbiAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IFwibWFpblwiLFxufTtcblxuY29uc3QgY29uc3RydWN0U3JjQ29kZSA9IGBcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTXlDb25zdHJ1Y3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgcHJvcGVydHlBOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNeUNvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHB1YmxpYyBjb25maWc6IE15Q29uc3RydWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cbn1cbmA7XG5cbmNvbnN0IGNvbnN0cnVjdFRlc3RDb2RlID0gYFxuaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiLi4vXCI7XG5cbi8vIFRvIGxlYXJuIG1vcmUgYWJvdXQgdGVzdGluZyBzZWUgY2RrLnRmL3Rlc3RpbmdcbmRlc2NyaWJlKFwiTXlDb25zdHJ1Y3RcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBzeW50aGVzaXplXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBUZXN0aW5nLnN5bnRoU2NvcGUoKHNjb3BlKSA9PiB7XG4gICAgICAgIG5ldyBNeUNvbnN0cnVjdChzY29wZSwgXCJteS1jb25zdHJ1Y3RcIiwge1xuICAgICAgICAgIHByb3BlcnR5QTogXCJ2YWx1ZUFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICkudG9NYXRjaFNuYXBzaG90KCk7XG4gIH0pO1xufSk7XG5cbmA7XG5cbmNvbnN0IG1vZHVsZVNyY0NvZGUgPSBgXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBURk1vZHVsZVN0YWNrIH0gZnJvbSBcImNka3RmLXRmLW1vZHVsZS1zdGFja1wiO1xuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiLi9pbmRleFwiO1xuXG5jbGFzcyBNeUF3ZXNvbWVNb2R1bGUgZXh0ZW5kcyBURk1vZHVsZVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgTXlDb25zdHJ1Y3QodGhpcywgXCJteS1jb25zdHJ1Y3RcIiwge1xuICAgICAgcHJvcGVydHlBOiBcInZhbHVlQVwiLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbi8vIFRoaXMgaXMgdGhlIG5hbWUgdGhlIG1vZHVsZSBjYW4gYmUgZm91bmQgdW5kZXIuIFxuLy8gV2UgZXhwZWN0IGEgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkuXG4vLyBUaGUgUkVBRE1FLm1kIGZpbGUgd2lsbCBiZSBnZW5lcmF0ZWQgZnJvbSB0aGlzIGZpbGUuXG5uZXcgTXlBd2Vzb21lTW9kdWxlKGFwcCwgXCJteS1hd2Vzb21lLW1vZHVsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuY29uc3QgdGVycmFmb3JtUmVhZG1lRG9jcyA9IGBcbiMgUGxlYXNlIGFkZCBoZXJlIHNvbWUgcHVyZSBIQ0wgdGVzdHMgZm9yIHlvdXIgbW9kdWxlcyBpbiBvcmRlciB0byB0ZXN0IEhDTCBJbnRlcm9wZXJhYmlsaXR5XG5cbkV4YW1wbGVzOlxuXG5tb2R1bGUgXCJteV9hd2Vzb21lX3Rlc3RcIiB7XG4gIHNvdXJjZSA9IFwiLi4vbW9kdWxlcy9teS1hd2Vzb21lLW1vZHVsZXNcIlxuICAuLi52YXJpYWJsZXMuLi5cbn1cbiAgICBgO1xuXG5jbGFzcyBTY3JpcHRGaWxlIGV4dGVuZHMgRmlsZUJhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBwYXRoOiBzdHJpbmcsIHByaXZhdGUgY29udGVudDogc3RyaW5nKSB7XG4gICAgc3VwZXIocHJvamVjdCwgcGF0aCwge1xuICAgICAgZXhlY3V0YWJsZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzeW50aGVzaXplQ29udGVudChfOiBJUmVzb2x2ZXIpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnQ7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEh5YnJpZE1vZHVsZSBleHRlbmRzIENvbnN0cnVjdExpYnJhcnkge1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEh5YnJpZE1vZHVsZU9wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgZXNsaW50T3B0aW9uczogT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnLmVzbGludE9wdGlvbnMsIHtcbiAgICAgICAgbGludFByb2plblJjOiBmYWxzZSxcbiAgICAgIH0pLFxuICAgICAgcG9zdEJ1aWxkU3RlcHM6IFtdLFxuICAgIH0pO1xuICAgIGNvbnN0IGNvbnN0cnVjdFZlcnNpb24gPSBjb25maWcuY29uc3RydWN0VmVyc2lvbiB8fCBcIl4xMC4wLjI1XCI7XG4gICAgY29uc3QgY2RrdGZWZXJzaW9uID0gY29uZmlnLmNka3RmVmVyc2lvbiB8fCBcIl4wLjkuNFwiO1xuXG4gICAgdGhpcy5hZGRQZWVyRGVwcyhgY29uc3RydWN0c0Ake2NvbnN0cnVjdFZlcnNpb259YCwgYGNka3RmQCR7Y2RrdGZWZXJzaW9ufWApO1xuICAgIHRoaXMuYWRkRGV2RGVwcyhgY2RrdGYtY2xpQCR7Y2RrdGZWZXJzaW9ufWAsIFwidHMtbm9kZVwiKTtcbiAgICB0aGlzLmFkZEtleXdvcmRzKFwiY2RrdGZcIiwgXCJjZGt0Zi1oeWJyaWRcIik7XG4gICAgdGhpcy5zZXRTY3JpcHQoXCJ0ZXJyYWZvcm06dGVzdFwiLCBcIi4vc2NyaXB0cy90Zi1tb2R1bGUtdGVzdC5zaFwiKTtcblxuICAgIC8vIE1vZHVsZSBFbnRyeXBvaW50XG4gICAgdGhpcy5hZGREZXBzKFwiY2RrdGYtdGYtbW9kdWxlLXN0YWNrXCIpO1xuICAgIGNvbnN0IG1vZHVsZURvY3MgPSBgXG4jIE15IEF3ZXNvbWUgTW9kdWxlXG5cbiMjIFVzYWdlXG5cblxcYFxcYFxcYGhjbFxubW9kdWxlIFwiZWtzX21hbmFnZWRfbm9kZV9ncm91cFwiIHtcbiAgc291cmNlID0gXCIke1xuICAgIGNvbmZpZy5yZXBvc2l0b3J5XG4gICAgICA/LnJlcGxhY2UoXCJodHRwczovL2dpdGh1Yi5jb20vXCIsIFwiXCIpXG4gICAgICAucmVwbGFjZShcImh0dHA6Ly9naXRodWIuY29tL1wiLCBcIlwiKVxuICAgICAgLnJlcGxhY2UoXCJnaXRodWIuY29tL1wiLCBcIlwiKSB8fCBcIm15LWdpdGh1Yi1yZXBvXCJcbiAgfS8vbW9kdWxlcy9teS1hd2Vzb21lLW1vZHVsZVwiXG5cbn1cblxcYFxcYFxcYFxuICAgIGA7XG5cbiAgICBuZXcgU2FtcGxlRGlyKHRoaXMsIHRoaXMuc3JjZGlyLCB7XG4gICAgICBmaWxlczoge1xuICAgICAgICBcImluZGV4LnRzXCI6IGNvbnN0cnVjdFNyY0NvZGUudHJpbSgpLFxuICAgICAgICBcInRmTW9kdWxlcy50c1wiOiBtb2R1bGVTcmNDb2RlLnRyaW0oKSxcbiAgICAgICAgXCJteS1hd2Vzb21lLW1vZHVsZS5tZFwiOiBtb2R1bGVEb2NzLnRyaW0oKSxcbiAgICAgICAgXCJjZGt0Zi5qc29uXCI6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhbmd1YWdlOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgICAgIGFwcDogXCJucHggdHMtbm9kZSB0Zk1vZHVsZXMudHNcIixcbiAgICAgICAgICAgIHRlcnJhZm9ybVByb3ZpZGVyczogW1wiaGFzaGljb3JwL251bGxAMy4xLjFcIl0sIC8vIFdlIG5lZWQgYXQgbGVhc3QgYSBwcm92aWRlciBmb3IgZ2V0IHRvIHN1Y2NlZWRcbiAgICAgICAgICAgIHRlcnJhZm9ybU1vZHVsZXM6IFtdLFxuICAgICAgICAgICAgb3V0cHV0OiBcIm1vZHVsZXNcIixcbiAgICAgICAgICAgIHByb2plY3RJZDogY29uZmlnLnByb2plY3RJZCB8fCB1dWlkKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIDJcbiAgICAgICAgKSxcbiAgICAgICAgXCJfX3Rlc3RzX18vaW5kZXgtdGVzdC50c1wiOiBjb25zdHJ1Y3RUZXN0Q29kZS50cmltKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKGNvbmZpZy50ZXJyYWZvcm1FeGFtcGxlcyAmJiBjb25maWcudGVycmFmb3JtRXhhbXBsZXMuZW5hYmxlZCkge1xuICAgICAgY29uc3QgcHJvdmlkZXJDb25maWcgPVxuICAgICAgICBjb25maWcudGVycmFmb3JtRXhhbXBsZXMucHJvdmlkZXJDb25maWcgfHxcbiAgICAgICAgYFxudGVycmFmb3JtIHtcbiAgIyBUZXJyYWZvcm0gYmluYXJ5IHZlcnNpb24gY29uc3RyYWludFxuICByZXF1aXJlZF92ZXJzaW9uID0gXCJ+PiAxLjEuMFwiXG5cbiAgIyBEZWZpbmUgYWxsIG5lZWRlZCBwcm92aWRlcnMgaGVyZSwgeW91IGNhbiBmaW5kIGFsbCBhdmFpbGFibGUgcHJvdmlkZXJzIGhlcmU6XG4gICMgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vXG4gIHJlcXVpcmVkX3Byb3ZpZGVycyB7fVxufVxuXG4jIEluaXRpYWxpemUgeW91ciBwcm92aWRlciBoZXJlXG5cbmAudHJpbSgpO1xuICAgICAgY29uc3QgZXhhbXBsZXNGb2xkZXIgPVxuICAgICAgICBjb25maWcudGVycmFmb3JtRXhhbXBsZXMuZm9sZGVyIHx8IFwidGVycmFmb3JtLWV4YW1wbGVzXCI7XG5cbiAgICAgIG5ldyBTYW1wbGVEaXIodGhpcywgZXhhbXBsZXNGb2xkZXIsIHtcbiAgICAgICAgZmlsZXM6IHtcbiAgICAgICAgICBcIm1haW4udGZcIjogYFxuIyBDb25maWd1cmUgVGVycmFmb3JtXG4ke3Byb3ZpZGVyQ29uZmlnfVxuXG4gICAgICAgICAgICBgLnRyaW1TdGFydCgpLFxuICAgICAgICAgIFwiUkVBRE1FLm1kXCI6IHRlcnJhZm9ybVJlYWRtZURvY3MudHJpbSgpLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFxuICAgICAgICBgJHtleGFtcGxlc0ZvbGRlcn0vLnRlcnJhZm9ybWAsXG4gICAgICAgIGAke2V4YW1wbGVzRm9sZGVyfS8udGVycmFmb3JtLmxvY2suaGNsYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmNvbnN0cnVjdEV4YW1wbGVzICYmIGNvbmZpZy5jb25zdHJ1Y3RFeGFtcGxlcy5lbmFibGVkKSB7XG4gICAgICBjb25zdCBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyID1cbiAgICAgICAgY29uZmlnLmNvbnN0cnVjdEV4YW1wbGVzLmZvbGRlciB8fCBcImNvbnN0cnVjdC1leGFtcGxlc1wiO1xuXG4gICAgICBjb25zdCBsZXZlbHMgPSBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyXG4gICAgICAgIC5zcGxpdChcIi9cIilcbiAgICAgICAgLm1hcCgoKSA9PiBcIi4uXCIpXG4gICAgICAgIC5qb2luKFwiL1wiKTtcblxuICAgICAgY29uc3QgY29uc3RydWN0UmVhZG1lRG9jcyA9IGBcbiMgQ29uc3RydWN0IEV4YW1wbGVzXG5cbkV4YW1wbGUgdXNlLWNhc2VzIGZvciB0aGUgQ29uc3RydWN0IGxpYnJhcnkuXG5cbi0gW0Jhc2ljIFVzYWdlXSguL2Jhc2ljLnRzKVxuXG5UbyBlbnN1cmUgYWxsIGV4YW1wbGVzIGFyZSB3b3JraW5nLCBwbGVhc2UgbWFrZSBzdXJlIHRoZSBbaW5kZXgudHNdKC4vaW5kZXgudHMpIGZpbGUgaXMgaW1wb3J0aW5nIGFsbCBvZiB0aGVtLlxuYDtcblxuICAgICAgY29uc3QgY29uc3RydWN0RXhhbXBsZUNvZGUgPSBgXG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgTXlDb25zdHJ1Y3QgfSBmcm9tIFwiJHtsZXZlbHN9L3NyYy9cIjtcblxuZXhwb3J0IGNsYXNzIEJhc2ljRXhhbXBsZSBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIG5hbWUpO1xuXG4gICAgbmV3IE15Q29uc3RydWN0KHRoaXMsIFwibXktY29uc3RydWN0XCIsIHtcbiAgICAgIHByb3BlcnR5QTogXCJ2YWx1ZUFcIixcbiAgICB9KTtcbiAgfVxufVxuXG5cbmA7XG5cbiAgICAgIGNvbnN0IGV4YW1wbGVDb2xsZWN0aW9uQ29kZSA9IGBcbi8vIFRoaXMgZmlsZSB3aWxsIGJlIHN5bnRoZXNpemVkIHRvIGNoZWNrIGlmIGFsbCBleGFtcGxlcyBhcmUgd29ya2luZ1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiY2RrdGZcIjtcbi8vIEFsbCBleGFtcGxlcyBuZWVkIHRvIGJlIGltcG9ydGVkIGhlcmVcbmltcG9ydCB7IEJhc2ljRXhhbXBsZSB9IGZyb20gXCIuL2Jhc2ljXCI7XG5cbmNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcblxuLy8gQWxsIGV4YW1wbGVzIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgaGVyZVxubmV3IEJhc2ljRXhhbXBsZShhcHAsIFwiYmFzaWMtZXhhbXBsZVwiKTtcbmFwcC5zeW50aCgpO1xuYDtcblxuICAgICAgbmV3IFNhbXBsZURpcih0aGlzLCBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyLCB7XG4gICAgICAgIGZpbGVzOiB7XG4gICAgICAgICAgXCJpbmRleC50c1wiOiBleGFtcGxlQ29sbGVjdGlvbkNvZGUudHJpbSgpLFxuICAgICAgICAgIFwiYmFzaWMudHNcIjogY29uc3RydWN0RXhhbXBsZUNvZGUudHJpbSgpLFxuICAgICAgICAgIFwiY2RrdGYuanNvblwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbGFuZ3VhZ2U6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICAgICAgICBhcHA6IFwibnB4IHRzLW5vZGUgaW5kZXgudHNcIixcbiAgICAgICAgICAgICAgcHJvamVjdElkOiBjb25maWcucHJvamVjdElkIHx8IHV1aWQoKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgMlxuICAgICAgICAgICksXG4gICAgICAgICAgXCJSRUFETUUubWRcIjogY29uc3RydWN0UmVhZG1lRG9jcy50cmltKCksXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgdGhpcy50ZXN0VGFzay5leGVjKGBjZGt0ZiBzeW50aGAsIHtcbiAgICAgICAgY3dkOiBjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucyhgJHtjb25zdHJ1Y3RFeGFtcGxlRm9sZGVyfS9jZGt0Zi5vdXRgKTtcbiAgICB9XG5cbiAgICB0aGlzLmdpdGlnbm9yZS5hZGRQYXR0ZXJucyhcInNyYy8uZ2VuXCIsIFwic3JjL2Nka3RmLm91dFwiLCBcInNyYy9tb2R1bGVzXCIpO1xuICAgIHRoaXMuY29tcGlsZVRhc2sucHJlcGVuZEV4ZWMoXCJjZGt0ZiBnZXRcIiwge1xuICAgICAgY3dkOiB0aGlzLnNyY2RpcixcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBpbGVUYXNrLmV4ZWMoXCJjZGt0ZiBzeW50aFwiLCB7XG4gICAgICBjd2Q6IHRoaXMuc3JjZGlyLFxuICAgICAgbmFtZTogXCJTeW50aGVzaXplIG1vZHVsZSBIQ0xcIixcbiAgICB9KTtcblxuICAgIG5ldyBTY3JpcHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIFwic2NyaXB0cy9jb3B5LW1vZHVsZXMuc2hcIixcbiAgICAgIGBcbiMhL2Jpbi9iYXNoXG4jIFRoaXMgc2NyaXB0IGlzIGNyZWF0ZWQgYnkgcHJvamVuLCBkbyBub3QgZWRpdCBpdCBkaXJlY3RseS5cbnNldCAtZVxuXG5TQ1JJUFRQQVRIPVwiJCggY2QgLS0gXCIkKGRpcm5hbWUgXCIkMFwiKVwiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApXCJcblxuIyBjaGVjayBpZiB0aGUgbW9kdWxlIGZvbGRlciBoYXMgYmVlbiBnZW5lcmF0ZWQgYXMgZXhwZWN0ZWRcbk1PRFVMRVNfRk9MREVSPSQoIGNkIC0tIFwiJFNDUklQVFBBVEgvLi4vc3JjL21vZHVsZXMvc3RhY2tzXCIgPi9kZXYvbnVsbCAyPiYxIDsgcHdkIC1QIClcblNSQ19GT0xERVI9JCggY2QgLS0gXCIkU0NSSVBUUEFUSC8uLi9zcmMvXCIgPi9kZXYvbnVsbCAyPiYxIDsgcHdkIC1QIClcblRBUkdFVF9GT0xERVI9XCIkU0NSSVBUUEFUSC8uLi9tb2R1bGVzXCJcblxuaWYgWyAhIC1kIFwiJE1PRFVMRVNfRk9MREVSXCIgXTsgdGhlblxuICBlY2hvIFwiRXhwZWN0ZWQgbW9kdWxlIGZvbGRlciB0byBleGlzdCBhdCAkTU9EVUxFU19GT0xERVJcIlxuICBleGl0IDFcbmZpXG5cbmNkIFwiJE1PRFVMRVNfRk9MREVSXCJcbmZvciBkIGluICovIDsgZG9cbiAgICBbIC1MIFwiXFwke2QlL31cIiBdICYmIGNvbnRpbnVlXG5cbiAgICBkaXJuYW1lPVwiXFwke2QlL31cIlxuXG5cbiAgICAjIENoZWNrIGlmIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2VcbiAgICBpZiBbICEgLWYgXCIkTU9EVUxFU19GT0xERVIvJGRpcm5hbWUvY2RrLnRmLmpzb25cIiBdOyB0aGVuXG4gICAgICBlY2hvIFwiRXhwZWN0ZWQgY29kZSBmb3IgJGRpcm5hbWUgYXQgY2RrLnRmLmpzb24gdG8gZXhpc3QgYXQgJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lXCJcbiAgICAgIGV4aXQgMVxuICAgIGZpXG5cbiAgICBpZiBbICEgLWYgXCIkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiIF07IHRoZW5cbiAgICAgIGVjaG8gXCJFeHBlY3RlZCBEb2N1bWVudGF0aW9uIGZvciAkZGlybmFtZSBhdCAkZGlybmFtZS5tZCB0byBleGlzdCBhdCAkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiXG4gICAgICBleGl0IDFcbiAgICBmaVxuXG4gICAgIyBDb3B5IG1vZHVsZSBhbmQgcmVhZG1lIHRvZ2V0aGVyXG4gICAgZWNobyBcIkNvcHlpbmcgQ29kZSBhbmQgUkVBRE1FIGZvciBtb2R1bGUgJGRpcm5hbWVcIlxuICAgIG1rZGlyIC1wIFwiJFRBUkdFVF9GT0xERVJcIlxuICAgIG1rZGlyIC1wIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWVcIlxuICAgIGNwIFwiJE1PRFVMRVNfRk9MREVSLyRkaXJuYW1lL2Nkay50Zi5qc29uXCIgXCIkVEFSR0VUX0ZPTERFUi8kZGlybmFtZS9jZGsudGYuanNvblwiXG4gICAgY3AgXCIkU1JDX0ZPTERFUi8kZGlybmFtZS5tZFwiIFwiJFRBUkdFVF9GT0xERVIvJGRpcm5hbWUvUkVBRE1FLm1kXCJcblxuICAgICMgQWRkIFJFQURNRSBoY2wgZG9jc1xuICAgIGlmIHdoaWNoIHRlcnJhZm9ybS1kb2NzID4vZGV2L251bGw7IHRoZW5cbiAgICAgIHRlcnJhZm9ybS1kb2NzIG1hcmtkb3duIHRhYmxlIC0tb3V0cHV0LWZpbGUgXCIkVEFSR0VUX0ZPTERFUi8kZGlybmFtZS9SRUFETUUubWRcIiBcIiRUQVJHRVRfRk9MREVSLyRkaXJuYW1lXCIgXG4gICAgZWxzZVxuICAgICAgZG9ja2VyIHJ1biAtLXJtIC0tdm9sdW1lIFwiJFNDUklQVFBBVEgvLi4vbW9kdWxlczovdGVycmFmb3JtLWRvY3NcIiAtdSAkKGlkIC11KSBxdWF5LmlvL3RlcnJhZm9ybS1kb2NzL3RlcnJhZm9ybS1kb2NzOjAuMTYuMCBtYXJrZG93biB0YWJsZSAtLW91dHB1dC1maWxlIFwiL3RlcnJhZm9ybS1kb2NzLyRkaXJuYW1lL1JFQURNRS5tZFwiIC90ZXJyYWZvcm0tZG9jcy8kZGlybmFtZVxuICAgIGZpXG5kb25lXG5gLnRyaW0oKVxuICAgICk7XG4gICAgdGhpcy5jb21waWxlVGFzay5leGVjKFwiLi9zY3JpcHRzL2NvcHktbW9kdWxlcy5zaFwiLCB7XG4gICAgICBuYW1lOiBcIkNvcHkgSENMIE1vZHVsZXNcIixcbiAgICB9KTtcblxuICAgIC8vIGlnbm9yZSBkaXN0IGluIHRlc3RzXG4gICAgdGhpcy5qZXN0Py5hZGRJZ25vcmVQYXR0ZXJuKFwiZGlzdFwiKTtcblxuICAgIG5ldyBTY3JpcHRGaWxlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiLi9zY3JpcHRzL3RmLW1vZHVsZS10ZXN0LnNoXCIsXG4gICAgICBgXG4jIS9iaW4vYmFzaFxuIyBUaGlzIHNjcmlwdCBpcyBjcmVhdGVkIGJ5IHByb2plbiwgZG8gbm90IGVkaXQgaXQgZGlyZWN0bHkuXG5zZXQgLWVcblxudGVycmFmb3JtIC1jaGRpcj10ZXJyYWZvcm0gaW5pdCAtLXVwZ3JhZGVcbnRlcnJhZm9ybSAtY2hkaXI9dGVycmFmb3JtIGZtdFxudGVycmFmb3JtIC1jaGRpcj10ZXJyYWZvcm0gdmFsaWRhdGVcbnRlcnJhZm9ybSAtY2hkaXI9dGVycmFmb3JtIHBsYW4gICAgIFxuICAgICAgICBgXG4gICAgKTtcblxuICAgIHRoaXMudGVzdFRhc2suZXhlYyhcIi4vc2NyaXB0cy90Zi1tb2R1bGUtdGVzdC5zaFwiKTtcbiAgICB0aGlzLmplc3Q/LmFkZElnbm9yZVBhdHRlcm4oXCJ0ZXJyYWZvcm1cIik7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED