projen 0.52.22 → 0.52.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/.jsii +139 -107
  2. package/changelog.md +1 -1
  3. package/docs/api/API.md +42 -39
  4. package/lib/awscdk/auto-discover.d.ts +14 -46
  5. package/lib/awscdk/auto-discover.js +8 -22
  6. package/lib/awscdk/awscdk-app-java.d.ts +10 -32
  7. package/lib/awscdk/awscdk-app-java.js +5 -9
  8. package/lib/awscdk/awscdk-app-ts.d.ts +15 -35
  9. package/lib/awscdk/awscdk-app-ts.js +6 -14
  10. package/lib/awscdk/awscdk-construct.d.ts +14 -28
  11. package/lib/awscdk/awscdk-construct.js +8 -16
  12. package/lib/awscdk/awscdk-deps-java.d.ts +1 -8
  13. package/lib/awscdk/awscdk-deps-java.js +3 -10
  14. package/lib/awscdk/awscdk-deps-js.d.ts +1 -8
  15. package/lib/awscdk/awscdk-deps-js.js +3 -10
  16. package/lib/awscdk/awscdk-deps.d.ts +28 -67
  17. package/lib/awscdk/awscdk-deps.js +5 -12
  18. package/lib/awscdk/cdk-config.d.ts +19 -51
  19. package/lib/awscdk/cdk-config.js +13 -11
  20. package/lib/awscdk/cdk-tasks.d.ts +7 -24
  21. package/lib/awscdk/cdk-tasks.js +3 -8
  22. package/lib/awscdk/integration-test.d.ts +7 -29
  23. package/lib/awscdk/integration-test.js +3 -8
  24. package/lib/awscdk/lambda-function.d.ts +22 -50
  25. package/lib/awscdk/lambda-function.js +11 -24
  26. package/lib/build/build-workflow.d.ts +33 -78
  27. package/lib/build/build-workflow.js +15 -25
  28. package/lib/cdk/auto-discover-base.d.ts +11 -34
  29. package/lib/cdk/auto-discover-base.js +5 -15
  30. package/lib/cdk/construct-lib.d.ts +8 -22
  31. package/lib/cdk/construct-lib.js +3 -8
  32. package/lib/cdk/integration-test-base.d.ts +12 -38
  33. package/lib/cdk/integration-test-base.js +2 -8
  34. package/lib/cdk/jsii-docgen.d.ts +6 -12
  35. package/lib/cdk/jsii-docgen.js +6 -8
  36. package/lib/cdk/jsii-project.d.ts +16 -95
  37. package/lib/cdk/jsii-project.js +3 -10
  38. package/lib/cdk8s/auto-discover.d.ts +6 -23
  39. package/lib/cdk8s/auto-discover.js +6 -15
  40. package/lib/cdk8s/cdk8s-app-ts.d.ts +21 -43
  41. package/lib/cdk8s/cdk8s-app-ts.js +4 -7
  42. package/lib/cdk8s/cdk8s-construct.d.ts +12 -27
  43. package/lib/cdk8s/cdk8s-construct.js +3 -7
  44. package/lib/cdk8s/integration-test.d.ts +2 -9
  45. package/lib/cdk8s/integration-test.js +3 -8
  46. package/lib/cdktf/cdktf-construct.d.ts +3 -12
  47. package/lib/cdktf/cdktf-construct.js +3 -7
  48. package/lib/component.d.ts +4 -17
  49. package/lib/component.js +6 -19
  50. package/lib/dependencies.d.ts +44 -77
  51. package/lib/dependencies.js +50 -38
  52. package/lib/dev-env.d.ts +26 -53
  53. package/lib/dev-env.js +9 -19
  54. package/lib/docker-compose.d.ts +83 -209
  55. package/lib/docker-compose.js +38 -61
  56. package/lib/file.d.ts +24 -71
  57. package/lib/file.js +4 -16
  58. package/lib/gitattributes.d.ts +3 -14
  59. package/lib/gitattributes.js +5 -16
  60. package/lib/github/auto-approve.d.ts +7 -23
  61. package/lib/github/auto-approve.js +3 -8
  62. package/lib/github/auto-merge.d.ts +7 -29
  63. package/lib/github/auto-merge.js +7 -16
  64. package/lib/github/dependabot.d.ts +54 -147
  65. package/lib/github/dependabot.js +81 -22
  66. package/lib/github/github-project.d.ts +26 -70
  67. package/lib/github/github-project.js +5 -10
  68. package/lib/github/github.d.ts +19 -58
  69. package/lib/github/github.js +9 -30
  70. package/lib/github/mergify.d.ts +9 -54
  71. package/lib/github/mergify.js +2 -14
  72. package/lib/github/pr-template.d.ts +3 -13
  73. package/lib/github/pr-template.js +3 -8
  74. package/lib/github/pull-request-lint.d.ts +8 -28
  75. package/lib/github/pull-request-lint.js +3 -9
  76. package/lib/github/stale.d.ts +17 -47
  77. package/lib/github/stale.js +6 -10
  78. package/lib/github/task-workflow.d.ts +21 -63
  79. package/lib/github/task-workflow.js +3 -8
  80. package/lib/github/workflows-model.d.ts +199 -582
  81. package/lib/github/workflows-model.js +5 -4
  82. package/lib/github/workflows.d.ts +14 -41
  83. package/lib/github/workflows.js +8 -16
  84. package/lib/gitlab/configuration-model.d.ts +145 -947
  85. package/lib/gitlab/configuration-model.js +11 -28
  86. package/lib/gitlab/configuration.d.ts +31 -121
  87. package/lib/gitlab/configuration.js +14 -49
  88. package/lib/gitlab/gitlab-configuration.d.ts +2 -13
  89. package/lib/gitlab/gitlab-configuration.js +4 -15
  90. package/lib/gitlab/nested-configuration.d.ts +1 -9
  91. package/lib/gitlab/nested-configuration.js +3 -8
  92. package/lib/gitpod.d.ts +71 -167
  93. package/lib/gitpod.js +75 -42
  94. package/lib/ignore-file.d.ts +4 -23
  95. package/lib/ignore-file.js +6 -25
  96. package/lib/ini.d.ts +2 -14
  97. package/lib/ini.js +3 -13
  98. package/lib/java/java-project.d.ts +29 -70
  99. package/lib/java/java-project.js +10 -17
  100. package/lib/java/junit.d.ts +5 -17
  101. package/lib/java/junit.js +3 -8
  102. package/lib/java/maven-compile.d.ts +4 -13
  103. package/lib/java/maven-compile.js +3 -8
  104. package/lib/java/maven-packaging.d.ts +6 -21
  105. package/lib/java/maven-packaging.js +3 -8
  106. package/lib/java/maven-sample.d.ts +2 -12
  107. package/lib/java/maven-sample.js +3 -8
  108. package/lib/java/pom.d.ts +38 -100
  109. package/lib/java/pom.js +13 -25
  110. package/lib/java/projenrc.d.ts +7 -22
  111. package/lib/java/projenrc.js +3 -8
  112. package/lib/javascript/bundler.d.ts +30 -72
  113. package/lib/javascript/bundler.js +13 -21
  114. package/lib/javascript/eslint.d.ts +27 -84
  115. package/lib/javascript/eslint.js +11 -30
  116. package/lib/javascript/jest.d.ts +91 -344
  117. package/lib/javascript/jest.js +6 -23
  118. package/lib/javascript/node-package.d.ts +111 -259
  119. package/lib/javascript/node-package.js +64 -81
  120. package/lib/javascript/node-project.d.ts +112 -220
  121. package/lib/javascript/node-project.js +54 -73
  122. package/lib/javascript/npm-config.d.ts +9 -19
  123. package/lib/javascript/npm-config.js +9 -16
  124. package/lib/javascript/prettier.d.ts +65 -196
  125. package/lib/javascript/prettier.js +70 -46
  126. package/lib/javascript/projenrc.d.ts +2 -12
  127. package/lib/javascript/projenrc.js +3 -8
  128. package/lib/javascript/typescript-config.d.ts +62 -158
  129. package/lib/javascript/typescript-config.js +31 -18
  130. package/lib/javascript/upgrade-dependencies.d.ts +35 -94
  131. package/lib/javascript/upgrade-dependencies.js +21 -51
  132. package/lib/json.d.ts +3 -17
  133. package/lib/json.js +3 -13
  134. package/lib/license.d.ts +3 -20
  135. package/lib/license.js +2 -13
  136. package/lib/logger.d.ts +18 -62
  137. package/lib/logger.js +17 -37
  138. package/lib/makefile.d.ts +14 -45
  139. package/lib/makefile.js +7 -25
  140. package/lib/object-file.d.ts +19 -39
  141. package/lib/object-file.js +17 -28
  142. package/lib/option-hints.d.ts +4 -13
  143. package/lib/option-hints.js +11 -5
  144. package/lib/project-build.d.ts +7 -26
  145. package/lib/project-build.js +3 -8
  146. package/lib/project.d.ts +64 -186
  147. package/lib/project.js +43 -91
  148. package/lib/projects.d.ts +11 -32
  149. package/lib/projects.js +4 -8
  150. package/lib/projenrc-json.d.ts +2 -12
  151. package/lib/projenrc-json.js +3 -8
  152. package/lib/python/pip.d.ts +7 -23
  153. package/lib/python/pip.js +8 -17
  154. package/lib/python/poetry.d.ts +36 -121
  155. package/lib/python/poetry.js +12 -26
  156. package/lib/python/projenrc.d.ts +4 -15
  157. package/lib/python/projenrc.js +3 -8
  158. package/lib/python/pytest.d.ts +3 -16
  159. package/lib/python/pytest.js +2 -8
  160. package/lib/python/python-deps.d.ts +7 -21
  161. package/lib/python/python-deps.js +1 -1
  162. package/lib/python/python-env.d.ts +1 -6
  163. package/lib/python/python-env.js +1 -1
  164. package/lib/python/python-packaging.d.ts +12 -34
  165. package/lib/python/python-packaging.js +1 -1
  166. package/lib/python/python-project.d.ts +34 -79
  167. package/lib/python/python-project.js +7 -20
  168. package/lib/python/python-sample.d.ts +2 -9
  169. package/lib/python/python-sample.js +3 -8
  170. package/lib/python/requirements-file.d.ts +4 -19
  171. package/lib/python/requirements-file.js +5 -15
  172. package/lib/python/setuppy.d.ts +11 -39
  173. package/lib/python/setuppy.js +3 -13
  174. package/lib/python/setuptools.d.ts +2 -14
  175. package/lib/python/setuptools.js +3 -8
  176. package/lib/python/venv.d.ts +4 -14
  177. package/lib/python/venv.js +4 -11
  178. package/lib/readme.d.ts +7 -16
  179. package/lib/readme.js +5 -7
  180. package/lib/release/publisher.d.ts +103 -206
  181. package/lib/release/publisher.js +47 -59
  182. package/lib/release/release-trigger.d.ts +16 -48
  183. package/lib/release/release-trigger.js +8 -18
  184. package/lib/release/release.d.ts +50 -110
  185. package/lib/release/release.js +9 -24
  186. package/lib/sample-file.d.ts +14 -47
  187. package/lib/sample-file.js +9 -30
  188. package/lib/semver.d.ts +4 -21
  189. package/lib/semver.js +6 -20
  190. package/lib/source-code.d.ts +7 -23
  191. package/lib/source-code.js +7 -19
  192. package/lib/task-model.d.ts +21 -61
  193. package/lib/task-model.js +1 -1
  194. package/lib/task-runtime.d.ts +7 -24
  195. package/lib/task-runtime.js +7 -20
  196. package/lib/task.d.ts +29 -73
  197. package/lib/task.js +28 -61
  198. package/lib/tasks.d.ts +12 -34
  199. package/lib/tasks.js +14 -36
  200. package/lib/testing.d.ts +6 -10
  201. package/lib/testing.js +8 -12
  202. package/lib/textfile.d.ts +9 -24
  203. package/lib/textfile.js +9 -19
  204. package/lib/toml.d.ts +2 -14
  205. package/lib/toml.js +3 -13
  206. package/lib/typescript/projenrc.d.ts +4 -14
  207. package/lib/typescript/projenrc.js +3 -8
  208. package/lib/typescript/typescript-typedoc.d.ts +1 -6
  209. package/lib/typescript/typescript-typedoc.js +3 -8
  210. package/lib/typescript/typescript.d.ts +24 -82
  211. package/lib/typescript/typescript.js +6 -15
  212. package/lib/version.d.ts +9 -38
  213. package/lib/version.js +2 -11
  214. package/lib/vscode/devcontainer.d.ts +10 -30
  215. package/lib/vscode/devcontainer.js +10 -26
  216. package/lib/vscode/launch-config.d.ts +18 -97
  217. package/lib/vscode/launch-config.js +9 -15
  218. package/lib/vscode/vscode.d.ts +0 -9
  219. package/lib/vscode/vscode.js +2 -11
  220. package/lib/web/next.d.ts +19 -60
  221. package/lib/web/next.js +6 -20
  222. package/lib/web/postcss.d.ts +3 -24
  223. package/lib/web/postcss.js +3 -8
  224. package/lib/web/react.d.ts +13 -60
  225. package/lib/web/react.js +7 -32
  226. package/lib/web/tailwind.d.ts +1 -15
  227. package/lib/web/tailwind.js +3 -7
  228. package/lib/xmlfile.d.ts +2 -14
  229. package/lib/xmlfile.js +3 -13
  230. package/lib/yaml.d.ts +4 -19
  231. package/lib/yaml.js +3 -13
  232. package/node_modules/xmlbuilder2/node_modules/@types/node/README.md +1 -1
  233. package/node_modules/xmlbuilder2/node_modules/@types/node/buffer.d.ts +90 -0
  234. package/node_modules/xmlbuilder2/node_modules/@types/node/package.json +2 -2
  235. package/package.json +4 -4
  236. package/releasetag.txt +1 -1
  237. package/version.txt +1 -1
@@ -2,49 +2,32 @@ import { Component } from "../component";
2
2
  import { Project } from "../project";
3
3
  import { Task } from "../task";
4
4
  /**
5
- * (experimental) Adds standard AWS CDK tasks to your project.
6
- *
7
- * @experimental
5
+ * Adds standard AWS CDK tasks to your project.
8
6
  */
9
7
  export declare class CdkTasks extends Component {
10
8
  /**
11
- * (experimental) Synthesizes your app.
12
- *
13
- * @experimental
9
+ * Synthesizes your app.
14
10
  */
15
11
  readonly synth: Task;
16
12
  /**
17
- * (experimental) Synthesizes your app and suppresses stdout.
18
- *
19
- * @experimental
13
+ * Synthesizes your app and suppresses stdout.
20
14
  */
21
15
  readonly synthSilent: Task;
22
16
  /**
23
- * (experimental) Deploys your app.
24
- *
25
- * @experimental
17
+ * Deploys your app.
26
18
  */
27
19
  readonly deploy: Task;
28
20
  /**
29
- * (experimental) Destroys all the stacks.
30
- *
31
- * @experimental
21
+ * Destroys all the stacks.
32
22
  */
33
23
  readonly destroy: Task;
34
24
  /**
35
- * (experimental) Diff against production.
36
- *
37
- * @experimental
25
+ * Diff against production.
38
26
  */
39
27
  readonly diff: Task;
40
28
  /**
41
- * (experimental) Watch task.
42
- *
43
- * @experimental
29
+ * Watch task.
44
30
  */
45
31
  readonly watch: Task;
46
- /**
47
- * @experimental
48
- */
49
32
  constructor(project: Project);
50
33
  }
@@ -5,14 +5,9 @@ exports.CdkTasks = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const component_1 = require("../component");
7
7
  /**
8
- * (experimental) Adds standard AWS CDK tasks to your project.
9
- *
10
- * @experimental
8
+ * Adds standard AWS CDK tasks to your project.
11
9
  */
12
10
  class CdkTasks extends component_1.Component {
13
- /**
14
- * @experimental
15
- */
16
11
  constructor(project) {
17
12
  var _b;
18
13
  super(project);
@@ -51,5 +46,5 @@ class CdkTasks extends component_1.Component {
51
46
  }
52
47
  exports.CdkTasks = CdkTasks;
53
48
  _a = JSII_RTTI_SYMBOL_1;
54
- CdkTasks[_a] = { fqn: "projen.awscdk.CdkTasks", version: "0.52.22" };
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXRhc2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9jZGstdGFza3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7Ozs7OztBQUt6QyxNQUFhLFFBQVMsU0FBUSxxQkFBUzs7OztJQW1CckMsWUFBWSxPQUFnQjs7UUFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELElBQUksRUFBRSxXQUFXO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7WUFDakQsV0FBVyxFQUNULG9HQUFvRztZQUN0RyxJQUFJLEVBQUUsdUJBQXVCO1NBQzlCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdEMsV0FBVyxFQUFFLHVDQUF1QztZQUNwRCxJQUFJLEVBQUUsWUFBWTtTQUNuQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3hDLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxXQUFXLEVBQUUsb0RBQW9EO1lBQ2pFLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUMsQ0FBQztRQUVILDJFQUEyRTtRQUMzRSxNQUFNLEtBQUssU0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUNBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLENBQUMsV0FBVztZQUNmLHFGQUFxRixDQUFDO1FBRXhGLGlFQUFpRTtRQUNqRSxrREFBa0Q7UUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRW5DLDRCQUE0QjtRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7O0FBL0RILDRCQWdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBDZGtUYXNrcyBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgc3ludGg6IFRhc2s7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgc3ludGhTaWxlbnQ6IFRhc2s7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRlcGxveTogVGFzaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IGRlc3Ryb3k6IFRhc2s7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBkaWZmOiBUYXNrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSB3YXRjaDogVGFzaztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0KSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICB0aGlzLnN5bnRoID0gcHJvamVjdC5hZGRUYXNrKFwic3ludGhcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiU3ludGhlc2l6ZXMgeW91ciBjZGsgYXBwIGludG8gY2RrLm91dFwiLFxuICAgICAgZXhlYzogXCJjZGsgc3ludGhcIixcbiAgICB9KTtcblxuICAgIHRoaXMuc3ludGhTaWxlbnQgPSBwcm9qZWN0LmFkZFRhc2soXCJzeW50aDpzaWxlbnRcIiwge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdTeW50aGVzaXplcyB5b3VyIGNkayBhcHAgaW50byBjZGsub3V0IGFuZCBzdXBwcmVzc2VzIHRoZSB0ZW1wbGF0ZSBpbiBzdGRvdXQgKHBhcnQgb2YgXCJ5YXJuIGJ1aWxkXCIpJyxcbiAgICAgIGV4ZWM6IFwiY2RrIHN5bnRoID4gL2Rldi9udWxsXCIsIC8vIHJlZGlyZWN0IHRvIC9kZXYvbnVsbCB0byBoaWRlIHRlbXBsYXRlXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlcGxveSA9IHByb2plY3QuYWRkVGFzayhcImRlcGxveVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJEZXBsb3lzIHlvdXIgQ0RLIGFwcCB0byB0aGUgQVdTIGNsb3VkXCIsXG4gICAgICBleGVjOiBcImNkayBkZXBsb3lcIixcbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdHJveSA9IHByb2plY3QuYWRkVGFzayhcImRlc3Ryb3lcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiRGVzdHJveXMgeW91ciBjZGsgYXBwIGluIHRoZSBBV1MgY2xvdWRcIixcbiAgICAgIGV4ZWM6IFwiY2RrIGRlc3Ryb3lcIixcbiAgICB9KTtcblxuICAgIHRoaXMuZGlmZiA9IHByb2plY3QuYWRkVGFzayhcImRpZmZcIiwge1xuICAgICAgZGVzY3JpcHRpb246IFwiRGlmZnMgdGhlIGN1cnJlbnRseSBkZXBsb3llZCBhcHAgYWdhaW5zdCB5b3VyIGNvZGVcIixcbiAgICAgIGV4ZWM6IFwiY2RrIGRpZmZcIixcbiAgICB9KTtcblxuICAgIC8vIHR5cGVzY3JpcHQgcHJvamVjdHMgYWxyZWFkeSBoYXZlIGEgXCJ3YXRjaFwiIHRhc2ssIHdlIHdlIHdpbGwgcmVwdXJwb3NlIGl0XG4gICAgY29uc3Qgd2F0Y2ggPSBwcm9qZWN0LnRhc2tzLnRyeUZpbmQoXCJ3YXRjaFwiKSA/PyBwcm9qZWN0LmFkZFRhc2soXCJ3YXRjaFwiKTtcblxuICAgIHdhdGNoLnJlc2V0KCk7XG4gICAgd2F0Y2guZGVzY3JpcHRpb24gPVxuICAgICAgXCJXYXRjaGVzIGNoYW5nZXMgaW4geW91ciBzb3VyY2UgY29kZSBhbmQgcmVidWlsZHMgYW5kIGRlcGxveXMgdG8gdGhlIGN1cnJlbnQgYWNjb3VudFwiO1xuXG4gICAgLy8gZGVwbG95IGZpcnN0IGJlY2F1c2Ugc3VycHJpc2luZ2x5IHdhdGNoIGlzIG5vdCBkZXBsb3lpbmcgZmlyc3RcbiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xNzc3NlxuICAgIHdhdGNoLmV4ZWMoXCJjZGsgZGVwbG95IC0taG90c3dhcFwiKTtcblxuICAgIC8vIG5vdyB3ZSBhcmUgcmVhZHkgdG8gd2F0Y2hcbiAgICB3YXRjaC5leGVjKFwiY2RrIHdhdGNoXCIpO1xuXG4gICAgdGhpcy53YXRjaCA9IHdhdGNoO1xuICB9XG59XG4iXX0=
49
+ CdkTasks[_a] = { fqn: "projen.awscdk.CdkTasks", version: "0.52.26" };
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXRhc2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9jZGstdGFza3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBeUM7QUFJekM7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxxQkFBUztJQStCckMsWUFBWSxPQUFnQjs7UUFDMUIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRTtZQUNwQyxXQUFXLEVBQUUsdUNBQXVDO1lBQ3BELElBQUksRUFBRSxXQUFXO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUU7WUFDakQsV0FBVyxFQUNULG9HQUFvRztZQUN0RyxJQUFJLEVBQUUsdUJBQXVCO1NBQzlCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDdEMsV0FBVyxFQUFFLHVDQUF1QztZQUNwRCxJQUFJLEVBQUUsWUFBWTtTQUNuQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFO1lBQ3hDLFdBQVcsRUFBRSx3Q0FBd0M7WUFDckQsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxXQUFXLEVBQUUsb0RBQW9EO1lBQ2pFLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUMsQ0FBQztRQUVILDJFQUEyRTtRQUMzRSxNQUFNLEtBQUssU0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUNBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV6RSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLENBQUMsV0FBVztZQUNmLHFGQUFxRixDQUFDO1FBRXhGLGlFQUFpRTtRQUNqRSxrREFBa0Q7UUFDbEQsS0FBSyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRW5DLDRCQUE0QjtRQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7O0FBM0VILDRCQTRFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCIuLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5cbi8qKlxuICogQWRkcyBzdGFuZGFyZCBBV1MgQ0RLIHRhc2tzIHRvIHlvdXIgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGNsYXNzIENka1Rhc2tzIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFN5bnRoZXNpemVzIHlvdXIgYXBwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN5bnRoOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBTeW50aGVzaXplcyB5b3VyIGFwcCBhbmQgc3VwcHJlc3NlcyBzdGRvdXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3ludGhTaWxlbnQ6IFRhc2s7XG5cbiAgLyoqXG4gICAqIERlcGxveXMgeW91ciBhcHAuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGVwbG95OiBUYXNrO1xuXG4gIC8qKlxuICAgKiBEZXN0cm95cyBhbGwgdGhlIHN0YWNrcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkZXN0cm95OiBUYXNrO1xuXG4gIC8qKlxuICAgKiBEaWZmIGFnYWluc3QgcHJvZHVjdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaWZmOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBXYXRjaCB0YXNrLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoOiBUYXNrO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QpIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuc3ludGggPSBwcm9qZWN0LmFkZFRhc2soXCJzeW50aFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJTeW50aGVzaXplcyB5b3VyIGNkayBhcHAgaW50byBjZGsub3V0XCIsXG4gICAgICBleGVjOiBcImNkayBzeW50aFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zeW50aFNpbGVudCA9IHByb2plY3QuYWRkVGFzayhcInN5bnRoOnNpbGVudFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ1N5bnRoZXNpemVzIHlvdXIgY2RrIGFwcCBpbnRvIGNkay5vdXQgYW5kIHN1cHByZXNzZXMgdGhlIHRlbXBsYXRlIGluIHN0ZG91dCAocGFydCBvZiBcInlhcm4gYnVpbGRcIiknLFxuICAgICAgZXhlYzogXCJjZGsgc3ludGggPiAvZGV2L251bGxcIiwgLy8gcmVkaXJlY3QgdG8gL2Rldi9udWxsIHRvIGhpZGUgdGVtcGxhdGVcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwbG95ID0gcHJvamVjdC5hZGRUYXNrKFwiZGVwbG95XCIsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkRlcGxveXMgeW91ciBDREsgYXBwIHRvIHRoZSBBV1MgY2xvdWRcIixcbiAgICAgIGV4ZWM6IFwiY2RrIGRlcGxveVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXN0cm95ID0gcHJvamVjdC5hZGRUYXNrKFwiZGVzdHJveVwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJEZXN0cm95cyB5b3VyIGNkayBhcHAgaW4gdGhlIEFXUyBjbG91ZFwiLFxuICAgICAgZXhlYzogXCJjZGsgZGVzdHJveVwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kaWZmID0gcHJvamVjdC5hZGRUYXNrKFwiZGlmZlwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJEaWZmcyB0aGUgY3VycmVudGx5IGRlcGxveWVkIGFwcCBhZ2FpbnN0IHlvdXIgY29kZVwiLFxuICAgICAgZXhlYzogXCJjZGsgZGlmZlwiLFxuICAgIH0pO1xuXG4gICAgLy8gdHlwZXNjcmlwdCBwcm9qZWN0cyBhbHJlYWR5IGhhdmUgYSBcIndhdGNoXCIgdGFzaywgd2Ugd2Ugd2lsbCByZXB1cnBvc2UgaXRcbiAgICBjb25zdCB3YXRjaCA9IHByb2plY3QudGFza3MudHJ5RmluZChcIndhdGNoXCIpID8/IHByb2plY3QuYWRkVGFzayhcIndhdGNoXCIpO1xuXG4gICAgd2F0Y2gucmVzZXQoKTtcbiAgICB3YXRjaC5kZXNjcmlwdGlvbiA9XG4gICAgICBcIldhdGNoZXMgY2hhbmdlcyBpbiB5b3VyIHNvdXJjZSBjb2RlIGFuZCByZWJ1aWxkcyBhbmQgZGVwbG95cyB0byB0aGUgY3VycmVudCBhY2NvdW50XCI7XG5cbiAgICAvLyBkZXBsb3kgZmlyc3QgYmVjYXVzZSBzdXJwcmlzaW5nbHkgd2F0Y2ggaXMgbm90IGRlcGxveWluZyBmaXJzdFxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE3Nzc2XG4gICAgd2F0Y2guZXhlYyhcImNkayBkZXBsb3kgLS1ob3Rzd2FwXCIpO1xuXG4gICAgLy8gbm93IHdlIGFyZSByZWFkeSB0byB3YXRjaFxuICAgIHdhdGNoLmV4ZWMoXCJjZGsgd2F0Y2hcIik7XG5cbiAgICB0aGlzLndhdGNoID0gd2F0Y2g7XG4gIH1cbn1cbiJdfQ==
@@ -2,61 +2,39 @@ import { IntegrationTestBase, IntegrationTestBaseOptions } from "../cdk";
2
2
  import { Project } from "../project";
3
3
  import { Task } from "../task";
4
4
  import { AwsCdkDeps } from "./awscdk-deps";
5
- /**
6
- * @experimental
7
- */
8
5
  export interface IntegrationTestCommonOptions {
9
6
  /**
10
- * (experimental) Destroy the test app after a successful deployment.
11
- *
12
- * If disabled, leaves the
7
+ * Destroy the test app after a successful deployment. If disabled, leaves the
13
8
  * app deployed in the dev account.
14
- *
15
9
  * @default true
16
- * @experimental
17
10
  */
18
11
  readonly destroyAfterDeploy?: boolean;
19
12
  }
20
13
  /**
21
- * (experimental) Options for `IntegrationTest`.
22
- *
23
- * @experimental
14
+ * Options for `IntegrationTest`.
24
15
  */
25
16
  export interface IntegrationTestOptions extends IntegrationTestCommonOptions, IntegrationTestBaseOptions {
26
17
  /**
27
- * (experimental) A list of stacks within the integration test to deploy/destroy.
28
- *
18
+ * A list of stacks within the integration test to deploy/destroy.
29
19
  * @default ["**"]
30
- * @experimental
31
20
  */
32
21
  readonly stacks?: string[];
33
22
  /**
34
- * (experimental) AWS CDK dependency manager.
35
- *
36
- * @experimental
23
+ * AWS CDK dependency manager.
37
24
  */
38
25
  readonly cdkDeps: AwsCdkDeps;
39
26
  }
40
27
  /**
41
- * (experimental) Cloud integration tests.
42
- *
43
- * @experimental
28
+ * Cloud integration tests.
44
29
  */
45
30
  export declare class IntegrationTest extends IntegrationTestBase {
46
31
  /**
47
- * (experimental) Destroy the integration test resources.
48
- *
49
- * @experimental
32
+ * Destroy the integration test resources
50
33
  */
51
34
  readonly destroyTask: Task;
52
35
  /**
53
- * (experimental) The watch task.
54
- *
55
- * @experimental
36
+ * The watch task.
56
37
  */
57
38
  readonly watchTask: Task;
58
- /**
59
- * @experimental
60
- */
61
39
  constructor(project: Project, options: IntegrationTestOptions);
62
40
  }
@@ -8,14 +8,9 @@ const cdk_1 = require("../cdk");
8
8
  const dependencies_1 = require("../dependencies");
9
9
  const internal_1 = require("./internal");
10
10
  /**
11
- * (experimental) Cloud integration tests.
12
- *
13
- * @experimental
11
+ * Cloud integration tests.
14
12
  */
15
13
  class IntegrationTest extends cdk_1.IntegrationTestBase {
16
- /**
17
- * @experimental
18
- */
19
14
  constructor(project, options) {
20
15
  var _b, _c;
21
16
  super(project, options);
@@ -79,5 +74,5 @@ class IntegrationTest extends cdk_1.IntegrationTestBase {
79
74
  }
80
75
  exports.IntegrationTest = IntegrationTest;
81
76
  _a = JSII_RTTI_SYMBOL_1;
82
- IntegrationTest[_a] = { fqn: "projen.awscdk.IntegrationTest", version: "0.52.22" };
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvaW50ZWdyYXRpb24tdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1QixnQ0FBeUU7QUFDekUsa0RBQWlEO0FBSWpELHlDQUEyQzs7Ozs7O0FBbUIzQyxNQUFhLGVBQWdCLFNBQVEseUJBQW1COzs7O0lBT3RELFlBQVksT0FBZ0IsRUFBRSxPQUErQjs7UUFDM0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FDeEIsWUFBWSxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUM3Qyw2QkFBYyxDQUFDLEtBQUssQ0FDckIsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLDZCQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0Q7UUFFRCxNQUFNLFNBQVMsR0FBRyxXQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sU0FBUyxHQUFHLFdBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsTUFBTSxHQUFHLEdBQUcsY0FBYyxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV2RSxNQUFNLElBQUksR0FBRztZQUNYLFVBQVUsR0FBRyxHQUFHO1lBQ2hCLHdCQUF3QjtZQUN4QixxREFBcUQ7WUFDckQsb0JBQW9CO1lBQ3BCLHFCQUFxQjtTQUN0QixDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7WUFDekMsd0JBQXdCO1lBQ3hCLE1BQU0sUUFBUSxHQUFHO2dCQUNmLEdBQUcsd0JBQWE7Z0JBQ2hCLHNDQUFzQzthQUN2QyxDQUFDO1lBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxPQUFPLE9BQU8sQ0FBQyxDQUFDO2FBQ3hDO1NBQ0Y7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLG1DQUFtQztRQUNuQyxNQUFNLE1BQU0sU0FBRyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNsQixjQUFjLE9BQU8sSUFBSSxTQUFTLGdDQUFnQyxTQUFTLEVBQUUsQ0FDOUUsQ0FBQztRQUVGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtZQUMzRCxXQUFXLEVBQUUsMkJBQTJCLElBQUksQ0FBQyxJQUFJLGdDQUFnQztZQUNqRixJQUFJLEVBQUUsYUFBYSxPQUFPLElBQUksU0FBUyxPQUFPLFNBQVMsRUFBRTtTQUMxRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDL0QsV0FBVyxFQUFFLDZCQUE2QixJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ3RELElBQUksRUFBRSxxQkFBcUIsSUFBSSxDQUFDLFdBQVcsSUFBSSxTQUFTLHlCQUF5QjtTQUNsRixDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixTQUFHLE9BQU8sQ0FBQyxrQkFBa0IsbUNBQUksSUFBSSxDQUFDO1FBQzlELElBQUksa0JBQWtCLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3BCLGFBQWEsT0FBTyxPQUFPLElBQUksQ0FBQyxXQUFXLGNBQWMsQ0FDMUQsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxPQUFPLE9BQU8sU0FBUyxjQUFjLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbEIsV0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUNoRCxJQUFJLENBQUMsV0FDUCxLQUFLLFNBQVMsR0FBRyxDQUNsQixDQUFDO1FBRUYsMkNBQTJDO1FBQzNDLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtTQUMxRTtJQUNILENBQUM7O0FBN0ZILDBDQThGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25UZXN0QmFzZSwgSW50ZWdyYXRpb25UZXN0QmFzZU9wdGlvbnMgfSBmcm9tIFwiLi4vY2RrXCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5pbXBvcnQgeyBBd3NDZGtEZXBzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7IEZFQVRVUkVfRkxBR1MgfSBmcm9tIFwiLi9pbnRlcm5hbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVncmF0aW9uVGVzdENvbW1vbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVzdHJveUFmdGVyRGVwbG95PzogYm9vbGVhbjtcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdyYXRpb25UZXN0T3B0aW9uc1xuICBleHRlbmRzIEludGVncmF0aW9uVGVzdENvbW1vbk9wdGlvbnMsXG4gICAgSW50ZWdyYXRpb25UZXN0QmFzZU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3RhY2tzPzogc3RyaW5nW107XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNka0RlcHM6IEF3c0Nka0RlcHM7XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25UZXN0IGV4dGVuZHMgSW50ZWdyYXRpb25UZXN0QmFzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyByZWFkb25seSBkZXN0cm95VGFzazogVGFzaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHJlYWRvbmx5IHdhdGNoVGFzazogVGFzaztcblxuICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBJbnRlZ3JhdGlvblRlc3RPcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCwgb3B0aW9ucyk7XG5cbiAgICBpZiAoIXByb2plY3QuZGVwcy50cnlHZXREZXBlbmRlbmN5KFwiYXdzLWNka1wiKSkge1xuICAgICAgcHJvamVjdC5kZXBzLmFkZERlcGVuZGVuY3koXG4gICAgICAgIGBhd3MtY2RrQF4ke29wdGlvbnMuY2RrRGVwcy5jZGtNYWpvclZlcnNpb259YCxcbiAgICAgICAgRGVwZW5kZW5jeVR5cGUuQlVJTERcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9qZWN0LmRlcHMudHJ5R2V0RGVwZW5kZW5jeShcInRzLW5vZGVcIikpIHtcbiAgICAgIHByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFwidHMtbm9kZVwiLCBEZXBlbmRlbmN5VHlwZS5CVUlMRCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVwbG95RGlyID0gam9pbih0aGlzLnRtcERpciwgXCJkZXBsb3kuY2RrLm91dFwiKTtcbiAgICBjb25zdCBhc3NlcnREaXIgPSBqb2luKHRoaXMudG1wRGlyLCBcImFzc2VydC5jZGsub3V0XCIpO1xuICAgIGNvbnN0IGFwcCA9IGB0cy1ub2RlIC1QICR7b3B0aW9ucy50c2NvbmZpZ1BhdGh9ICR7b3B0aW9ucy5lbnRyeXBvaW50fWA7XG5cbiAgICBjb25zdCBvcHRzID0gW1xuICAgICAgYC0tYXBwIFwiJHthcHB9XCJgLFxuICAgICAgXCItLW5vLXZlcnNpb24tcmVwb3J0aW5nXCIsXG4gICAgICAvLyBkb24ndCBpbmplY3QgY2xvdWRmb3JtYXRpb24gbWV0YWRhdGEgaW50byB0ZW1wbGF0ZVxuICAgICAgXCItLW5vLXBhdGgtbWV0YWRhdGFcIixcbiAgICAgIFwiLS1uby1hc3NldC1tZXRhZGF0YVwiLFxuICAgIF07XG5cbiAgICBpZiAob3B0aW9ucy5jZGtEZXBzLmNka01ham9yVmVyc2lvbiA9PT0gMSkge1xuICAgICAgLy8gYWRkIGFsbCBmZWF0dXJlIGZsYWdzXG4gICAgICBjb25zdCBmZWF0dXJlcyA9IFtcbiAgICAgICAgLi4uRkVBVFVSRV9GTEFHUyxcbiAgICAgICAgXCJAYXdzLWNkay9jb3JlOm5ld1N0eWxlU3RhY2tTeW50aGVzaXNcIiwgLy8gc2ltcGxpZmllcyBhc3NldCBjb29yZGluYXRlcyBpbiBzeW50aCBvdXRwdXRcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3QgZmVhdHVyZSBvZiBmZWF0dXJlcykge1xuICAgICAgICBvcHRzLnB1c2goYC0tY29udGV4dCAke2ZlYXR1cmV9PXRydWVgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjZGtvcHRzID0gb3B0cy5qb2luKFwiIFwiKTtcblxuICAgIC8vIERldGVybWluZSB3aGljaCBzdGFja3MgdG8gZGVwbG95XG4gICAgY29uc3Qgc3RhY2tzID0gb3B0aW9ucy5zdGFja3MgPz8gW1wiKipcIl07XG4gICAgY29uc3Qgc3RhY2tPcHRzID0gc3RhY2tzLm1hcCgoc3RhY2spID0+IGAnJHtzdGFja30nYCkuam9pbihcIiBcIik7XG5cbiAgICB0aGlzLmRlcGxveVRhc2suZXhlYyhgcm0gLWZyICR7ZGVwbG95RGlyfWApO1xuICAgIHRoaXMuZGVwbG95VGFzay5leGVjKFxuICAgICAgYGNkayBkZXBsb3kgJHtjZGtvcHRzfSAke3N0YWNrT3B0c30gLS1yZXF1aXJlLWFwcHJvdmFsPW5ldmVyIC1vICR7ZGVwbG95RGlyfWBcbiAgICApO1xuXG4gICAgLy8gaWYgZGVwbG95bWVudCB3YXMgc3VjY2Vzc2Z1bCwgY29weSB0aGUgZGVwbG95IGRpciB0byB0aGUgZXhwZWN0ZWQgZGlyXG4gICAgdGhpcy5kZXBsb3lUYXNrLmV4ZWMoYHJtIC1mciAke3RoaXMuc25hcHNob3REaXJ9YCk7XG4gICAgdGhpcy5kZXBsb3lUYXNrLmV4ZWMoYG12ICR7ZGVwbG95RGlyfSAke3RoaXMuc25hcHNob3REaXJ9YCk7XG5cbiAgICB0aGlzLndhdGNoVGFzayA9IHByb2plY3QuYWRkVGFzayhgaW50ZWc6JHt0aGlzLm5hbWV9OndhdGNoYCwge1xuICAgICAgZGVzY3JpcHRpb246IGB3YXRjaCBpbnRlZ3JhdGlvbiB0ZXN0ICcke3RoaXMubmFtZX0nICh3aXRob3V0IHVwZGF0aW5nIHNuYXBzaG90cylgLFxuICAgICAgZXhlYzogYGNkayB3YXRjaCAke2Nka29wdHN9ICR7c3RhY2tPcHRzfSAtbyAke2RlcGxveURpcn1gLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZXN0cm95VGFzayA9IHByb2plY3QuYWRkVGFzayhgaW50ZWc6JHt0aGlzLm5hbWV9OmRlc3Ryb3lgLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYGRlc3Ryb3kgaW50ZWdyYXRpb24gdGVzdCAnJHt0aGlzLm5hbWV9J2AsXG4gICAgICBleGVjOiBgY2RrIGRlc3Ryb3kgLS1hcHAgJHt0aGlzLnNuYXBzaG90RGlyfSAke3N0YWNrT3B0c30gLS1uby12ZXJzaW9uLXJlcG9ydGluZ2AsXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZXN0cm95QWZ0ZXJEZXBsb3kgPSBvcHRpb25zLmRlc3Ryb3lBZnRlckRlcGxveSA/PyB0cnVlO1xuICAgIGlmIChkZXN0cm95QWZ0ZXJEZXBsb3kpIHtcbiAgICAgIHRoaXMuZGVwbG95VGFzay5zcGF3bih0aGlzLmRlc3Ryb3lUYXNrKTtcbiAgICB9XG5cbiAgICB0aGlzLnNuYXBzaG90VGFzay5leGVjKFxuICAgICAgYGNkayBzeW50aCAke2Nka29wdHN9IC1vICR7dGhpcy5zbmFwc2hvdERpcn0gPiAvZGV2L251bGxgXG4gICAgKTtcblxuICAgIGNvbnN0IGV4Y2x1ZGUgPSBbXCJhc3NldC4qXCIsIFwiY2RrLm91dFwiLCBcIm1hbmlmZXN0Lmpzb25cIiwgXCJ0cmVlLmpzb25cIl07XG5cbiAgICB0aGlzLmFzc2VydFRhc2suZXhlYyhgY2RrIHN5bnRoICR7Y2Rrb3B0c30gLW8gJHthc3NlcnREaXJ9ID4gL2Rldi9udWxsYCk7XG4gICAgdGhpcy5hc3NlcnRUYXNrLmV4ZWMoXG4gICAgICBgZGlmZiAtciAke2V4Y2x1ZGUubWFwKCh4KSA9PiBgLXggJHt4fWApLmpvaW4oXCIgXCIpfSAke1xuICAgICAgICB0aGlzLnNuYXBzaG90RGlyXG4gICAgICB9LyAke2Fzc2VydERpcn0vYFxuICAgICk7XG5cbiAgICAvLyBkbyBub3QgY29tbWl0IGFsbCBmaWxlcyB3ZSBhcmUgZXhjbHVkaW5nXG4gICAgZm9yIChjb25zdCB4IG9mIGV4Y2x1ZGUpIHtcbiAgICAgIHByb2plY3QuYWRkR2l0SWdub3JlKGAke3RoaXMuc25hcHNob3REaXJ9LyR7eH1gKTtcbiAgICAgIHByb2plY3QuYWRkR2l0SWdub3JlKGAke3RoaXMuc25hcHNob3REaXJ9LyoqLyR7eH1gKTsgLy8gbmVzdGVkIGFzc2VtYmxpZXNcbiAgICB9XG4gIH1cbn1cbiJdfQ==
77
+ IntegrationTest[_a] = { fqn: "projen.awscdk.IntegrationTest", version: "0.52.26" };
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hd3NjZGsvaW50ZWdyYXRpb24tdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUE0QjtBQUM1QixnQ0FBeUU7QUFDekUsa0RBQWlEO0FBSWpELHlDQUEyQztBQTZCM0M7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEseUJBQW1CO0lBV3RELFlBQVksT0FBZ0IsRUFBRSxPQUErQjs7UUFDM0QsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FDeEIsWUFBWSxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUM3Qyw2QkFBYyxDQUFDLEtBQUssQ0FDckIsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0MsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLDZCQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0Q7UUFFRCxNQUFNLFNBQVMsR0FBRyxXQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sU0FBUyxHQUFHLFdBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdEQsTUFBTSxHQUFHLEdBQUcsY0FBYyxPQUFPLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUV2RSxNQUFNLElBQUksR0FBRztZQUNYLFVBQVUsR0FBRyxHQUFHO1lBQ2hCLHdCQUF3QjtZQUN4QixxREFBcUQ7WUFDckQsb0JBQW9CO1lBQ3BCLHFCQUFxQjtTQUN0QixDQUFDO1FBRUYsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7WUFDekMsd0JBQXdCO1lBQ3hCLE1BQU0sUUFBUSxHQUFHO2dCQUNmLEdBQUcsd0JBQWE7Z0JBQ2hCLHNDQUFzQzthQUN2QyxDQUFDO1lBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxPQUFPLE9BQU8sQ0FBQyxDQUFDO2FBQ3hDO1NBQ0Y7UUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRS9CLG1DQUFtQztRQUNuQyxNQUFNLE1BQU0sU0FBRyxPQUFPLENBQUMsTUFBTSxtQ0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNsQixjQUFjLE9BQU8sSUFBSSxTQUFTLGdDQUFnQyxTQUFTLEVBQUUsQ0FDOUUsQ0FBQztRQUVGLHdFQUF3RTtRQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLFFBQVEsRUFBRTtZQUMzRCxXQUFXLEVBQUUsMkJBQTJCLElBQUksQ0FBQyxJQUFJLGdDQUFnQztZQUNqRixJQUFJLEVBQUUsYUFBYSxPQUFPLElBQUksU0FBUyxPQUFPLFNBQVMsRUFBRTtTQUMxRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxVQUFVLEVBQUU7WUFDL0QsV0FBVyxFQUFFLDZCQUE2QixJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ3RELElBQUksRUFBRSxxQkFBcUIsSUFBSSxDQUFDLFdBQVcsSUFBSSxTQUFTLHlCQUF5QjtTQUNsRixDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixTQUFHLE9BQU8sQ0FBQyxrQkFBa0IsbUNBQUksSUFBSSxDQUFDO1FBQzlELElBQUksa0JBQWtCLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3BCLGFBQWEsT0FBTyxPQUFPLElBQUksQ0FBQyxXQUFXLGNBQWMsQ0FDMUQsQ0FBQztRQUVGLE1BQU0sT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsYUFBYSxPQUFPLE9BQU8sU0FBUyxjQUFjLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbEIsV0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUNoRCxJQUFJLENBQUMsV0FDUCxLQUFLLFNBQVMsR0FBRyxDQUNsQixDQUFDO1FBRUYsMkNBQTJDO1FBQzNDLEtBQUssTUFBTSxDQUFDLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtTQUMxRTtJQUNILENBQUM7O0FBakdILDBDQWtHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25UZXN0QmFzZSwgSW50ZWdyYXRpb25UZXN0QmFzZU9wdGlvbnMgfSBmcm9tIFwiLi4vY2RrXCI7XG5pbXBvcnQgeyBEZXBlbmRlbmN5VHlwZSB9IGZyb20gXCIuLi9kZXBlbmRlbmNpZXNcIjtcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tIFwiLi4vcHJvamVjdFwiO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gXCIuLi90YXNrXCI7XG5pbXBvcnQgeyBBd3NDZGtEZXBzIH0gZnJvbSBcIi4vYXdzY2RrLWRlcHNcIjtcbmltcG9ydCB7IEZFQVRVUkVfRkxBR1MgfSBmcm9tIFwiLi9pbnRlcm5hbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVncmF0aW9uVGVzdENvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogRGVzdHJveSB0aGUgdGVzdCBhcHAgYWZ0ZXIgYSBzdWNjZXNzZnVsIGRlcGxveW1lbnQuIElmIGRpc2FibGVkLCBsZWF2ZXMgdGhlXG4gICAqIGFwcCBkZXBsb3llZCBpbiB0aGUgZGV2IGFjY291bnQuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlc3Ryb3lBZnRlckRlcGxveT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYEludGVncmF0aW9uVGVzdGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdyYXRpb25UZXN0T3B0aW9uc1xuICBleHRlbmRzIEludGVncmF0aW9uVGVzdENvbW1vbk9wdGlvbnMsXG4gICAgSW50ZWdyYXRpb25UZXN0QmFzZU9wdGlvbnMge1xuICAvKipcbiAgICogQSBsaXN0IG9mIHN0YWNrcyB3aXRoaW4gdGhlIGludGVncmF0aW9uIHRlc3QgdG8gZGVwbG95L2Rlc3Ryb3kuXG4gICAqIEBkZWZhdWx0IFtcIioqXCJdXG4gICAqL1xuICByZWFkb25seSBzdGFja3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQVdTIENESyBkZXBlbmRlbmN5IG1hbmFnZXIuXG4gICAqL1xuICByZWFkb25seSBjZGtEZXBzOiBBd3NDZGtEZXBzO1xufVxuXG4vKipcbiAqIENsb3VkIGludGVncmF0aW9uIHRlc3RzLlxuICovXG5leHBvcnQgY2xhc3MgSW50ZWdyYXRpb25UZXN0IGV4dGVuZHMgSW50ZWdyYXRpb25UZXN0QmFzZSB7XG4gIC8qKlxuICAgKiBEZXN0cm95IHRoZSBpbnRlZ3JhdGlvbiB0ZXN0IHJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc3Ryb3lUYXNrOiBUYXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgd2F0Y2ggdGFzay5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB3YXRjaFRhc2s6IFRhc2s7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogSW50ZWdyYXRpb25UZXN0T3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QsIG9wdGlvbnMpO1xuXG4gICAgaWYgKCFwcm9qZWN0LmRlcHMudHJ5R2V0RGVwZW5kZW5jeShcImF3cy1jZGtcIikpIHtcbiAgICAgIHByb2plY3QuZGVwcy5hZGREZXBlbmRlbmN5KFxuICAgICAgICBgYXdzLWNka0BeJHtvcHRpb25zLmNka0RlcHMuY2RrTWFqb3JWZXJzaW9ufWAsXG4gICAgICAgIERlcGVuZGVuY3lUeXBlLkJVSUxEXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghcHJvamVjdC5kZXBzLnRyeUdldERlcGVuZGVuY3koXCJ0cy1ub2RlXCIpKSB7XG4gICAgICBwcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShcInRzLW5vZGVcIiwgRGVwZW5kZW5jeVR5cGUuQlVJTEQpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlcGxveURpciA9IGpvaW4odGhpcy50bXBEaXIsIFwiZGVwbG95LmNkay5vdXRcIik7XG4gICAgY29uc3QgYXNzZXJ0RGlyID0gam9pbih0aGlzLnRtcERpciwgXCJhc3NlcnQuY2RrLm91dFwiKTtcbiAgICBjb25zdCBhcHAgPSBgdHMtbm9kZSAtUCAke29wdGlvbnMudHNjb25maWdQYXRofSAke29wdGlvbnMuZW50cnlwb2ludH1gO1xuXG4gICAgY29uc3Qgb3B0cyA9IFtcbiAgICAgIGAtLWFwcCBcIiR7YXBwfVwiYCxcbiAgICAgIFwiLS1uby12ZXJzaW9uLXJlcG9ydGluZ1wiLFxuICAgICAgLy8gZG9uJ3QgaW5qZWN0IGNsb3VkZm9ybWF0aW9uIG1ldGFkYXRhIGludG8gdGVtcGxhdGVcbiAgICAgIFwiLS1uby1wYXRoLW1ldGFkYXRhXCIsXG4gICAgICBcIi0tbm8tYXNzZXQtbWV0YWRhdGFcIixcbiAgICBdO1xuXG4gICAgaWYgKG9wdGlvbnMuY2RrRGVwcy5jZGtNYWpvclZlcnNpb24gPT09IDEpIHtcbiAgICAgIC8vIGFkZCBhbGwgZmVhdHVyZSBmbGFnc1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBbXG4gICAgICAgIC4uLkZFQVRVUkVfRkxBR1MsXG4gICAgICAgIFwiQGF3cy1jZGsvY29yZTpuZXdTdHlsZVN0YWNrU3ludGhlc2lzXCIsIC8vIHNpbXBsaWZpZXMgYXNzZXQgY29vcmRpbmF0ZXMgaW4gc3ludGggb3V0cHV0XG4gICAgICBdO1xuXG4gICAgICBmb3IgKGNvbnN0IGZlYXR1cmUgb2YgZmVhdHVyZXMpIHtcbiAgICAgICAgb3B0cy5wdXNoKGAtLWNvbnRleHQgJHtmZWF0dXJlfT10cnVlYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY2Rrb3B0cyA9IG9wdHMuam9pbihcIiBcIik7XG5cbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggc3RhY2tzIHRvIGRlcGxveVxuICAgIGNvbnN0IHN0YWNrcyA9IG9wdGlvbnMuc3RhY2tzID8/IFtcIioqXCJdO1xuICAgIGNvbnN0IHN0YWNrT3B0cyA9IHN0YWNrcy5tYXAoKHN0YWNrKSA9PiBgJyR7c3RhY2t9J2ApLmpvaW4oXCIgXCIpO1xuXG4gICAgdGhpcy5kZXBsb3lUYXNrLmV4ZWMoYHJtIC1mciAke2RlcGxveURpcn1gKTtcbiAgICB0aGlzLmRlcGxveVRhc2suZXhlYyhcbiAgICAgIGBjZGsgZGVwbG95ICR7Y2Rrb3B0c30gJHtzdGFja09wdHN9IC0tcmVxdWlyZS1hcHByb3ZhbD1uZXZlciAtbyAke2RlcGxveURpcn1gXG4gICAgKTtcblxuICAgIC8vIGlmIGRlcGxveW1lbnQgd2FzIHN1Y2Nlc3NmdWwsIGNvcHkgdGhlIGRlcGxveSBkaXIgdG8gdGhlIGV4cGVjdGVkIGRpclxuICAgIHRoaXMuZGVwbG95VGFzay5leGVjKGBybSAtZnIgJHt0aGlzLnNuYXBzaG90RGlyfWApO1xuICAgIHRoaXMuZGVwbG95VGFzay5leGVjKGBtdiAke2RlcGxveURpcn0gJHt0aGlzLnNuYXBzaG90RGlyfWApO1xuXG4gICAgdGhpcy53YXRjaFRhc2sgPSBwcm9qZWN0LmFkZFRhc2soYGludGVnOiR7dGhpcy5uYW1lfTp3YXRjaGAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgd2F0Y2ggaW50ZWdyYXRpb24gdGVzdCAnJHt0aGlzLm5hbWV9JyAod2l0aG91dCB1cGRhdGluZyBzbmFwc2hvdHMpYCxcbiAgICAgIGV4ZWM6IGBjZGsgd2F0Y2ggJHtjZGtvcHRzfSAke3N0YWNrT3B0c30gLW8gJHtkZXBsb3lEaXJ9YCxcbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdHJveVRhc2sgPSBwcm9qZWN0LmFkZFRhc2soYGludGVnOiR7dGhpcy5uYW1lfTpkZXN0cm95YCwge1xuICAgICAgZGVzY3JpcHRpb246IGBkZXN0cm95IGludGVncmF0aW9uIHRlc3QgJyR7dGhpcy5uYW1lfSdgLFxuICAgICAgZXhlYzogYGNkayBkZXN0cm95IC0tYXBwICR7dGhpcy5zbmFwc2hvdERpcn0gJHtzdGFja09wdHN9IC0tbm8tdmVyc2lvbi1yZXBvcnRpbmdgLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVzdHJveUFmdGVyRGVwbG95ID0gb3B0aW9ucy5kZXN0cm95QWZ0ZXJEZXBsb3kgPz8gdHJ1ZTtcbiAgICBpZiAoZGVzdHJveUFmdGVyRGVwbG95KSB7XG4gICAgICB0aGlzLmRlcGxveVRhc2suc3Bhd24odGhpcy5kZXN0cm95VGFzayk7XG4gICAgfVxuXG4gICAgdGhpcy5zbmFwc2hvdFRhc2suZXhlYyhcbiAgICAgIGBjZGsgc3ludGggJHtjZGtvcHRzfSAtbyAke3RoaXMuc25hcHNob3REaXJ9ID4gL2Rldi9udWxsYFxuICAgICk7XG5cbiAgICBjb25zdCBleGNsdWRlID0gW1wiYXNzZXQuKlwiLCBcImNkay5vdXRcIiwgXCJtYW5pZmVzdC5qc29uXCIsIFwidHJlZS5qc29uXCJdO1xuXG4gICAgdGhpcy5hc3NlcnRUYXNrLmV4ZWMoYGNkayBzeW50aCAke2Nka29wdHN9IC1vICR7YXNzZXJ0RGlyfSA+IC9kZXYvbnVsbGApO1xuICAgIHRoaXMuYXNzZXJ0VGFzay5leGVjKFxuICAgICAgYGRpZmYgLXIgJHtleGNsdWRlLm1hcCgoeCkgPT4gYC14ICR7eH1gKS5qb2luKFwiIFwiKX0gJHtcbiAgICAgICAgdGhpcy5zbmFwc2hvdERpclxuICAgICAgfS8gJHthc3NlcnREaXJ9L2BcbiAgICApO1xuXG4gICAgLy8gZG8gbm90IGNvbW1pdCBhbGwgZmlsZXMgd2UgYXJlIGV4Y2x1ZGluZ1xuICAgIGZvciAoY29uc3QgeCBvZiBleGNsdWRlKSB7XG4gICAgICBwcm9qZWN0LmFkZEdpdElnbm9yZShgJHt0aGlzLnNuYXBzaG90RGlyfS8ke3h9YCk7XG4gICAgICBwcm9qZWN0LmFkZEdpdElnbm9yZShgJHt0aGlzLnNuYXBzaG90RGlyfS8qKi8ke3h9YCk7IC8vIG5lc3RlZCBhc3NlbWJsaWVzXG4gICAgfVxuICB9XG59XG4iXX0=
@@ -3,88 +3,73 @@ import { BundlingOptions } from "../javascript";
3
3
  import { Project } from "../project";
4
4
  import { AwsCdkDeps } from "./awscdk-deps";
5
5
  /**
6
- * (experimental) Common options for `LambdaFunction`.
7
- *
8
- * Applies to all functions in
6
+ * Common options for `LambdaFunction`. Applies to all functions in
9
7
  * auto-discovery.
10
- *
11
- * @experimental
12
8
  */
13
9
  export interface LambdaFunctionCommonOptions {
14
10
  /**
15
- * (experimental) The node.js version to target.
11
+ * The node.js version to target.
16
12
  *
17
13
  * @default Runtime.NODEJS_14_X
18
- * @experimental
19
14
  */
20
15
  readonly runtime?: LambdaRuntime;
21
16
  /**
22
- * (experimental) Bundling options for this AWS Lambda function.
17
+ * Bundling options for this AWS Lambda function.
23
18
  *
24
19
  * If not specified the default bundling options specified for the project
25
20
  * `Bundler` instance will be used.
26
21
  *
27
22
  * @default - defaults
28
- * @experimental
29
23
  */
30
24
  readonly bundlingOptions?: BundlingOptions;
31
25
  /**
32
- * (experimental) Whether to automatically reuse TCP connections when working with the AWS SDK for JavaScript.
26
+ * Whether to automatically reuse TCP connections when working with the AWS
27
+ * SDK for JavaScript.
33
28
  *
34
29
  * This sets the `AWS_NODEJS_CONNECTION_REUSE_ENABLED` environment variable
35
30
  * to `1`.
36
31
  *
37
- * @default true
38
32
  * @see https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/node-reusing-connections.html
39
- * @experimental
33
+ *
34
+ * @default true
40
35
  */
41
36
  readonly awsSdkConnectionReuse?: boolean;
42
37
  }
43
38
  /**
44
- * (experimental) Options for `Function`.
45
- *
46
- * @experimental
39
+ * Options for `Function`.
47
40
  */
48
41
  export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
49
42
  /**
50
- * (experimental) A path from the project root directory to a TypeScript file which contains the AWS Lambda handler entrypoint (exports a `handler` function).
43
+ * A path from the project root directory to a TypeScript file which contains
44
+ * the AWS Lambda handler entrypoint (exports a `handler` function).
51
45
  *
52
46
  * This is relative to the root directory of the project.
53
47
  *
54
- * @experimental
55
- * @example
56
- *
57
- * "src/subdir/foo.lambda.ts"
48
+ * @example "src/subdir/foo.lambda.ts"
58
49
  */
59
50
  readonly entrypoint: string;
60
51
  /**
61
- * (experimental) The name of the generated TypeScript source file.
62
- *
63
- * This file should also be
52
+ * The name of the generated TypeScript source file. This file should also be
64
53
  * under the source tree.
65
54
  *
66
55
  * @default - The name of the entrypoint file, with the `-function.ts` suffix
67
56
  * instead of `.lambda.ts`.
68
- * @experimental
69
57
  */
70
58
  readonly constructFile?: string;
71
59
  /**
72
- * (experimental) The name of the generated `lambda.Function` subclass.
60
+ * The name of the generated `lambda.Function` subclass.
73
61
  *
74
62
  * @default - A pascal cased version of the name of the entrypoint file, with
75
63
  * the extension `Function` (e.g. `ResizeImageFunction`).
76
- * @experimental
77
64
  */
78
65
  readonly constructName?: string;
79
66
  /**
80
- * (experimental) AWS CDK dependency manager.
81
- *
82
- * @experimental
67
+ * AWS CDK dependency manager.
83
68
  */
84
69
  readonly cdkDeps: AwsCdkDeps;
85
70
  }
86
71
  /**
87
- * (experimental) Generates a pre-bundled AWS Lambda function construct from handler code.
72
+ * Generates a pre-bundled AWS Lambda function construct from handler code.
88
73
  *
89
74
  * To use this, create an AWS Lambda handler file under your source tree with
90
75
  * the `.lambda.ts` extension and add a `LambdaFunction` component to your
@@ -96,7 +81,6 @@ export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
96
81
  * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
97
82
  * handle through an asset.
98
83
  *
99
- * @experimental
100
84
  * @example
101
85
  *
102
86
  * new LambdaFunction(myProject, {
@@ -106,18 +90,15 @@ export interface LambdaFunctionOptions extends LambdaFunctionCommonOptions {
106
90
  */
107
91
  export declare class LambdaFunction extends Component {
108
92
  /**
109
- * (experimental) Defines a pre-bundled AWS Lambda function construct from handler code.
93
+ * Defines a pre-bundled AWS Lambda function construct from handler code.
110
94
  *
111
- * @param project The project to use.
112
- * @param options Options.
113
- * @experimental
95
+ * @param project The project to use
96
+ * @param options Options
114
97
  */
115
98
  constructor(project: Project, options: LambdaFunctionOptions);
116
99
  }
117
100
  /**
118
- * (experimental) The runtime for the AWS Lambda function.
119
- *
120
- * @experimental
101
+ * The runtime for the AWS Lambda function.
121
102
  */
122
103
  export declare class LambdaRuntime {
123
104
  /**
@@ -129,26 +110,17 @@ export declare class LambdaRuntime {
129
110
  */
130
111
  readonly esbuildTarget: string;
131
112
  /**
132
- * (experimental) Node.js 10.x.
133
- *
134
- * @experimental
113
+ * Node.js 10.x
135
114
  */
136
115
  static readonly NODEJS_10_X: LambdaRuntime;
137
116
  /**
138
- * (experimental) Node.js 12.x.
139
- *
140
- * @experimental
117
+ * Node.js 12.x
141
118
  */
142
119
  static readonly NODEJS_12_X: LambdaRuntime;
143
120
  /**
144
- * (experimental) Node.js 14.x.
145
- *
146
- * @experimental
121
+ * Node.js 14.x
147
122
  */
148
123
  static readonly NODEJS_14_X: LambdaRuntime;
149
- /**
150
- * @experimental
151
- */
152
124
  readonly esbuildPlatform = "node";
153
125
  private constructor();
154
126
  }
@@ -10,7 +10,7 @@ const javascript_1 = require("../javascript");
10
10
  const source_code_1 = require("../source-code");
11
11
  const internal_1 = require("./internal");
12
12
  /**
13
- * (experimental) Generates a pre-bundled AWS Lambda function construct from handler code.
13
+ * Generates a pre-bundled AWS Lambda function construct from handler code.
14
14
  *
15
15
  * To use this, create an AWS Lambda handler file under your source tree with
16
16
  * the `.lambda.ts` extension and add a `LambdaFunction` component to your
@@ -22,7 +22,6 @@ const internal_1 = require("./internal");
22
22
  * which extends `@aws-cdk/aws-lambda.Function` which is bound to the bundled
23
23
  * handle through an asset.
24
24
  *
25
- * @experimental
26
25
  * @example
27
26
  *
28
27
  * new LambdaFunction(myProject, {
@@ -32,11 +31,10 @@ const internal_1 = require("./internal");
32
31
  */
33
32
  class LambdaFunction extends component_1.Component {
34
33
  /**
35
- * (experimental) Defines a pre-bundled AWS Lambda function construct from handler code.
34
+ * Defines a pre-bundled AWS Lambda function construct from handler code.
36
35
  *
37
- * @param project The project to use.
38
- * @param options Options.
39
- * @experimental
36
+ * @param project The project to use
37
+ * @param options Options
40
38
  */
41
39
  constructor(project, options) {
42
40
  var _c, _d, _e, _f;
@@ -126,11 +124,9 @@ class LambdaFunction extends component_1.Component {
126
124
  }
127
125
  exports.LambdaFunction = LambdaFunction;
128
126
  _a = JSII_RTTI_SYMBOL_1;
129
- LambdaFunction[_a] = { fqn: "projen.awscdk.LambdaFunction", version: "0.52.22" };
127
+ LambdaFunction[_a] = { fqn: "projen.awscdk.LambdaFunction", version: "0.52.26" };
130
128
  /**
131
- * (experimental) The runtime for the AWS Lambda function.
132
- *
133
- * @experimental
129
+ * The runtime for the AWS Lambda function.
134
130
  */
135
131
  class LambdaRuntime {
136
132
  constructor(
@@ -144,31 +140,22 @@ class LambdaRuntime {
144
140
  esbuildTarget) {
145
141
  this.functionRuntime = functionRuntime;
146
142
  this.esbuildTarget = esbuildTarget;
147
- /**
148
- * @experimental
149
- */
150
143
  this.esbuildPlatform = "node";
151
144
  }
152
145
  }
153
146
  exports.LambdaRuntime = LambdaRuntime;
154
147
  _b = JSII_RTTI_SYMBOL_1;
155
- LambdaRuntime[_b] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.52.22" };
148
+ LambdaRuntime[_b] = { fqn: "projen.awscdk.LambdaRuntime", version: "0.52.26" };
156
149
  /**
157
- * (experimental) Node.js 10.x.
158
- *
159
- * @experimental
150
+ * Node.js 10.x
160
151
  */
161
152
  LambdaRuntime.NODEJS_10_X = new LambdaRuntime("NODEJS_10_X", "node10");
162
153
  /**
163
- * (experimental) Node.js 12.x.
164
- *
165
- * @experimental
154
+ * Node.js 12.x
166
155
  */
167
156
  LambdaRuntime.NODEJS_12_X = new LambdaRuntime("NODEJS_12_X", "node12");
168
157
  /**
169
- * (experimental) Node.js 14.x.
170
- *
171
- * @experimental
158
+ * Node.js 14.x
172
159
  */
173
160
  LambdaRuntime.NODEJS_14_X = new LambdaRuntime("NODEJS_14_X", "node14");
174
161
  /**
@@ -177,4 +164,4 @@ LambdaRuntime.NODEJS_14_X = new LambdaRuntime("NODEJS_14_X", "node14");
177
164
  function convertToPosixPath(p) {
178
165
  return p.split(path_1.sep).join(path_1.posix.sep);
179
166
  }
180
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9sYW1iZGEtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBOEU7QUFDOUUsK0JBQThCO0FBQzlCLDRDQUF5QztBQUN6Qyw4Q0FBaUU7QUFFakUsZ0RBQTRDO0FBRTVDLHlDQUFtRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQThCbkQsTUFBYSxjQUFlLFNBQVEscUJBQVM7Ozs7Ozs7O0lBRTNDLFlBQVksT0FBZ0IsRUFBRSxPQUE4Qjs7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxvQkFBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsQ0FDcEUsQ0FBQztTQUNIO1FBRUQsTUFBTSxPQUFPLFNBQUcsT0FBTyxDQUFDLE9BQU8sbUNBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU3RCwwRUFBMEU7UUFDMUUsa0JBQWtCO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLG1CQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUV6QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRXRDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGdDQUFxQixDQUFDLEVBQUU7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFVBQVUsZ0JBQWdCLGdDQUFxQixZQUFZLENBQy9ELENBQUM7U0FDSDtRQUVELE1BQU0sUUFBUSxHQUFHLFdBQUksQ0FDbkIsY0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUNuQixlQUFRLENBQUMsVUFBVSxFQUFFLGdDQUFxQixDQUFDLENBQzVDLENBQUM7UUFDRixNQUFNLGFBQWEsU0FBRyxPQUFPLENBQUMsYUFBYSxtQ0FBSSxHQUFHLFFBQVEsY0FBYyxDQUFDO1FBRXpFLElBQUksY0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUNwQyxNQUFNLElBQUksS0FBSyxDQUNiLHdCQUF3QixhQUFhLDZCQUE2QixDQUNuRSxDQUFDO1NBQ0g7UUFFRCxhQUFhO1FBQ2IsTUFBTSxhQUFhLFNBQ2pCLE9BQU8sQ0FBQyxhQUFhLG1DQUFJLGFBQU0sQ0FBQyxlQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDbkUsTUFBTSxTQUFTLEdBQUcsR0FBRyxhQUFhLE9BQU8sQ0FBQztRQUUxQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRTtZQUMzQyxNQUFNLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDN0IsUUFBUSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1lBQ2pDLFNBQVMsRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUN0QixHQUFHLE9BQU8sQ0FBQyxlQUFlO1NBQzNCLENBQUMsQ0FBQztRQUVILG1FQUFtRTtRQUNuRSx5RUFBeUU7UUFDekUsc0RBQXNEO1FBQ3RELE9BQU87UUFDUCw4RUFBOEU7UUFDOUUsdUVBQXVFO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLFdBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxNQUFNLFlBQVksR0FBRyxXQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN6RCxNQUFNLGVBQWUsR0FBRyxlQUFRLENBQzlCLGNBQU8sQ0FBQyxZQUFZLENBQUMsRUFDckIsY0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUNwQixDQUFDO1FBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSx3QkFBVSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNuRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7WUFDZCxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7U0FDOUI7UUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFFMUMsSUFBSSxPQUFPLENBQUMsZUFBZSxLQUFLLENBQUMsRUFBRTtZQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxDQUFDLENBQUM7WUFDM0QsR0FBRyxDQUFDLElBQUksQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1lBQ3ZELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUM1QzthQUFNO1lBQ0wsR0FBRyxDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQzlELEdBQUcsQ0FBQyxJQUFJLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUNyRDtRQUVELEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUMxQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLFNBQVMsbUNBQW1DLENBQUMsQ0FBQztRQUMzRSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1gsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixHQUFHLENBQUMsSUFBSSxDQUNOLDRDQUE0QyxrQkFBa0IsQ0FDNUQsUUFBUSxDQUNULEdBQUcsQ0FDTCxDQUFDO1FBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixhQUFhLDRCQUE0QixDQUFDLENBQUM7UUFDcEUsR0FBRyxDQUFDLElBQUksQ0FDTixxREFBcUQsU0FBUyxLQUFLLENBQ3BFLENBQUM7UUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDL0IsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsa0JBQWtCLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlELEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEIsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7UUFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3RDLEdBQUcsQ0FBQyxJQUFJLENBQ04scURBQXFELGtCQUFrQixDQUNyRSxlQUFlLENBQ2hCLE1BQU0sQ0FDUixDQUFDO1FBQ0YsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQixVQUFJLE9BQU8sQ0FBQyxxQkFBcUIsbUNBQUksSUFBSSxFQUFFO1lBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQ04sMEZBQTBGLENBQzNGLENBQUM7U0FDSDtRQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDZixHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN6QixHQUFHLFFBQVEsZ0JBQWdCLGFBQWEsc0JBQXNCLGFBQWEsR0FBRyxDQUMvRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN6QixHQUFHLFFBQVEsa0JBQWtCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQ3ZELENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN6QixHQUFHLFFBQVEsd0JBQXdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQzVELENBQUM7U0FDSDtJQUNILENBQUM7O0FBaklILHdDQWtJQzs7Ozs7Ozs7QUFHRCxNQUFhLGFBQWE7SUFxQnhCO0lBQ0U7O09BRUc7SUFDYSxlQUF1QjtJQUV2Qzs7T0FFRztJQUNhLGFBQXFCO1FBTHJCLG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBS3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFROzs7O1FBWHZCLG9CQUFlLEdBQUcsTUFBTSxDQUFDO0lBWXRDLENBQUM7O0FBL0JOLHNDQWdDQzs7Ozs7Ozs7QUE5QndCLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQzs7Ozs7O0FBR3FCLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQzs7Ozs7O0FBR3FCLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQWlCSjs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsQ0FBUztJQUNuQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlbGF0aXZlLCBzZXAsIHBvc2l4IH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHBhc2NhbCB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCdW5kbGVyLCBCdW5kbGluZ09wdGlvbnMsIEVzbGludCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tIFwiLi4vc291cmNlLWNvZGVcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuaW1wb3J0IHsgVFlQRVNDUklQVF9MQU1CREFfRVhUIH0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcnVudGltZT86IExhbWJkYVJ1bnRpbWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBidW5kbGluZ09wdGlvbnM/OiBCdW5kbGluZ09wdGlvbnM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhd3NTZGtDb25uZWN0aW9uUmV1c2U/OiBib29sZWFuO1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUZ1bmN0aW9uT3B0aW9ucyBleHRlbmRzIExhbWJkYUZ1bmN0aW9uQ29tbW9uT3B0aW9ucyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0RmlsZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY29uc3RydWN0TmFtZT86IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb24gZXh0ZW5kcyBDb21wb25lbnQge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExhbWJkYUZ1bmN0aW9uT3B0aW9ucykge1xuICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgY29uc3QgY2RrRGVwcyA9IG9wdGlvbnMuY2RrRGVwcztcbiAgICBjb25zdCBidW5kbGVyID0gQnVuZGxlci5vZihwcm9qZWN0KTtcbiAgICBpZiAoIWJ1bmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJObyBidW5kbGVyIGZvdW5kLiBQbGVhc2UgYWRkIGEgQnVuZGxlciBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJ1bnRpbWUgPSBvcHRpb25zLnJ1bnRpbWUgPz8gTGFtYmRhUnVudGltZS5OT0RFSlNfMTRfWDtcblxuICAgIC8vIGFsbG93IExhbWJkYSBoYW5kbGVyIGNvZGUgdG8gaW1wb3J0IGRldi1kZXBzIHNpbmNlIHRoZXkgYXJlIG9ubHkgbmVlZGVkXG4gICAgLy8gZHVyaW5nIGJ1bmRsaW5nXG4gICAgY29uc3QgZXNsaW50ID0gRXNsaW50Lm9mKHByb2plY3QpO1xuICAgIGVzbGludD8uYWxsb3dEZXZEZXBzKG9wdGlvbnMuZW50cnlwb2ludCk7XG5cbiAgICBjb25zdCBlbnRyeXBvaW50ID0gb3B0aW9ucy5lbnRyeXBvaW50O1xuXG4gICAgaWYgKCFlbnRyeXBvaW50LmVuZHNXaXRoKFRZUEVTQ1JJUFRfTEFNQkRBX0VYVCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYCR7ZW50cnlwb2ludH0gbXVzdCBoYXZlIGEgJHtUWVBFU0NSSVBUX0xBTUJEQV9FWFR9IGV4dGVuc2lvbmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVBhdGggPSBqb2luKFxuICAgICAgZGlybmFtZShlbnRyeXBvaW50KSxcbiAgICAgIGJhc2VuYW1lKGVudHJ5cG9pbnQsIFRZUEVTQ1JJUFRfTEFNQkRBX0VYVClcbiAgICApO1xuICAgIGNvbnN0IGNvbnN0cnVjdEZpbGUgPSBvcHRpb25zLmNvbnN0cnVjdEZpbGUgPz8gYCR7YmFzZVBhdGh9LWZ1bmN0aW9uLnRzYDtcblxuICAgIGlmIChleHRuYW1lKGNvbnN0cnVjdEZpbGUpICE9PSBcIi50c1wiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb25zdHJ1Y3QgZmlsZSBuYW1lIFwiJHtjb25zdHJ1Y3RGaWxlfVwiIG11c3QgaGF2ZSBhIC50cyBleHRlbnNpb25gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHR5cGUgbmFtZXNcbiAgICBjb25zdCBjb25zdHJ1Y3ROYW1lID1cbiAgICAgIG9wdGlvbnMuY29uc3RydWN0TmFtZSA/PyBwYXNjYWwoYmFzZW5hbWUoYmFzZVBhdGgpKSArIFwiRnVuY3Rpb25cIjtcbiAgICBjb25zdCBwcm9wc1R5cGUgPSBgJHtjb25zdHJ1Y3ROYW1lfVByb3BzYDtcblxuICAgIGNvbnN0IGJ1bmRsZSA9IGJ1bmRsZXIuYWRkQnVuZGxlKGVudHJ5cG9pbnQsIHtcbiAgICAgIHRhcmdldDogcnVudGltZS5lc2J1aWxkVGFyZ2V0LFxuICAgICAgcGxhdGZvcm06IHJ1bnRpbWUuZXNidWlsZFBsYXRmb3JtLFxuICAgICAgZXh0ZXJuYWxzOiBbXCJhd3Mtc2RrXCJdLFxuICAgICAgLi4ub3B0aW9ucy5idW5kbGluZ09wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBjYWxjdWxhdGUgdGhlIHJlbGF0aXZlIHBhdGggYmV0d2VlbiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlXG4gICAgLy8gZ2VuZXJhdGVkIGNvbnN0cnVjdCBzb3VyY2UgZmlsZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGJ1bmRsZVxuICAgIC8vIGluZGV4LmpzIGJ5IHJlc29sdmluZyB0aGVtIGFzIGFic29sdXRlIHBhdGhzIGZpcnN0LlxuICAgIC8vIGUuZzpcbiAgICAvLyAgLSBvdXRmaWxlQWJzID0+IGAvcHJvamVjdC1vdXRkaXIvYXNzZXRzL2Zvby9iYXIvYmF6L2Zvby1mdW5jdGlvbi9pbmRleC5qc2BcbiAgICAvLyAgLSBjb25zdHJ1Y3RBYnMgPT4gYC9wcm9qZWN0LW91dGRpci9zcmMvZm9vL2Jhci9iYXovZm9vLWZ1bmN0aW9uLnRzYFxuICAgIGNvbnN0IG91dGZpbGVBYnMgPSBqb2luKHByb2plY3Qub3V0ZGlyLCBidW5kbGUub3V0ZmlsZSk7XG4gICAgY29uc3QgY29uc3RydWN0QWJzID0gam9pbihwcm9qZWN0Lm91dGRpciwgY29uc3RydWN0RmlsZSk7XG4gICAgY29uc3QgcmVsYXRpdmVPdXRmaWxlID0gcmVsYXRpdmUoXG4gICAgICBkaXJuYW1lKGNvbnN0cnVjdEFicyksXG4gICAgICBkaXJuYW1lKG91dGZpbGVBYnMpXG4gICAgKTtcblxuICAgIGNvbnN0IHNyYyA9IG5ldyBTb3VyY2VDb2RlKHByb2plY3QsIGNvbnN0cnVjdEZpbGUpO1xuICAgIGlmIChzcmMubWFya2VyKSB7XG4gICAgICBzcmMubGluZShgLy8gJHtzcmMubWFya2VyfWApO1xuICAgIH1cbiAgICBzcmMubGluZShcImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XCIpO1xuXG4gICAgaWYgKGNka0RlcHMuY2RrTWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgICBzcmMubGluZShcImltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhJztcIik7XG4gICAgICBzcmMubGluZShcImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1wiKTtcbiAgICAgIGNka0RlcHMuYWRkVjFEZXBlbmRlbmNpZXMoXCJAYXdzLWNkay9hd3MtbGFtYmRhXCIpO1xuICAgICAgY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcyhcIkBhd3MtY2RrL2NvcmVcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1wiKTtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XCIpO1xuICAgIH1cblxuICAgIHNyYy5saW5lKCk7XG4gICAgc3JjLmxpbmUoXCIvKipcIik7XG4gICAgc3JjLmxpbmUoYCAqIFByb3BzIGZvciAke2NvbnN0cnVjdE5hbWV9YCk7XG4gICAgc3JjLmxpbmUoXCIgKi9cIik7XG4gICAgc3JjLm9wZW4oYGV4cG9ydCBpbnRlcmZhY2UgJHtwcm9wc1R5cGV9IGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uT3B0aW9ucyB7YCk7XG4gICAgc3JjLmNsb3NlKFwifVwiKTtcbiAgICBzcmMubGluZSgpO1xuICAgIHNyYy5saW5lKFwiLyoqXCIpO1xuICAgIHNyYy5saW5lKFxuICAgICAgYCAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgJHtjb252ZXJ0VG9Qb3NpeFBhdGgoXG4gICAgICAgIGJhc2VQYXRoXG4gICAgICApfS5gXG4gICAgKTtcbiAgICBzcmMubGluZShcIiAqL1wiKTtcbiAgICBzcmMub3BlbihgZXhwb3J0IGNsYXNzICR7Y29uc3RydWN0TmFtZX0gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb24ge2ApO1xuICAgIHNyYy5vcGVuKFxuICAgICAgYGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogJHtwcm9wc1R5cGV9KSB7YFxuICAgICk7XG4gICAgc3JjLm9wZW4oXCJzdXBlcihzY29wZSwgaWQsIHtcIik7XG4gICAgc3JjLmxpbmUoYGRlc2NyaXB0aW9uOiAnJHtjb252ZXJ0VG9Qb3NpeFBhdGgoZW50cnlwb2ludCl9JyxgKTtcbiAgICBzcmMubGluZShcIi4uLnByb3BzLFwiKTtcbiAgICBzcmMubGluZShgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuJHtydW50aW1lLmZ1bmN0aW9uUnVudGltZX0sYCk7XG4gICAgc3JjLmxpbmUoXCJoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXCIpO1xuICAgIHNyYy5saW5lKFxuICAgICAgYGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnJHtjb252ZXJ0VG9Qb3NpeFBhdGgoXG4gICAgICAgIHJlbGF0aXZlT3V0ZmlsZVxuICAgICAgKX0nKSksYFxuICAgICk7XG4gICAgc3JjLmNsb3NlKFwifSk7XCIpO1xuICAgIGlmIChvcHRpb25zLmF3c1Nka0Nvbm5lY3Rpb25SZXVzZSA/PyB0cnVlKSB7XG4gICAgICBzcmMubGluZShcbiAgICAgICAgXCJ0aGlzLmFkZEVudmlyb25tZW50KCdBV1NfTk9ERUpTX0NPTk5FQ1RJT05fUkVVU0VfRU5BQkxFRCcsICcxJywgeyByZW1vdmVJbkVkZ2U6IHRydWUgfSk7XCJcbiAgICAgICk7XG4gICAgfVxuICAgIHNyYy5jbG9zZShcIn1cIik7XG4gICAgc3JjLmNsb3NlKFwifVwiKTtcblxuICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShcbiAgICAgIGAke2Jhc2VQYXRofTogY29uc3RydWN0IFwiJHtjb25zdHJ1Y3ROYW1lfVwiIGdlbmVyYXRlZCB1bmRlciBcIiR7Y29uc3RydWN0RmlsZX1cImBcbiAgICApO1xuICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShcbiAgICAgIGAke2Jhc2VQYXRofTogYnVuZGxlIHRhc2sgXCIke2J1bmRsZS5idW5kbGVUYXNrLm5hbWV9XCJgXG4gICAgKTtcbiAgICBpZiAoYnVuZGxlLndhdGNoVGFzaykge1xuICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKFxuICAgICAgICBgJHtiYXNlUGF0aH06IGJ1bmRsZSB3YXRjaCB0YXNrIFwiJHtidW5kbGUud2F0Y2hUYXNrLm5hbWV9XCJgXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBjbGFzcyBMYW1iZGFSdW50aW1lIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEwX1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xMF9YXCIsXG4gICAgXCJub2RlMTBcIlxuICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PREVKU18xMl9YID0gbmV3IExhbWJkYVJ1bnRpbWUoXG4gICAgXCJOT0RFSlNfMTJfWFwiLFxuICAgIFwibm9kZTEyXCJcbiAgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT0RFSlNfMTRfWCA9IG5ldyBMYW1iZGFSdW50aW1lKFxuICAgIFwiTk9ERUpTXzE0X1hcIixcbiAgICBcIm5vZGUxNFwiXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVzYnVpbGRQbGF0Zm9ybSA9IFwibm9kZVwiO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoXG4gICAgLyoqXG4gICAgICogVGhlIGF3cy1sYW1iZGEuUnVudGltZSBtZW1iZXIgbmFtZSB0byB1c2UuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uUnVudGltZTogc3RyaW5nLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGVzYnVpbGQgc2V0dGluZyB0byB1c2UuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGVzYnVpbGRUYXJnZXQ6IHN0cmluZ1xuICApIHt9XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGdpdmVuIHBhdGggc3RyaW5nIHRvIHBvc2l4IGlmIGl0IHdhc24ndCBhbHJlYWR5LlxuICovXG5mdW5jdGlvbiBjb252ZXJ0VG9Qb3NpeFBhdGgocDogc3RyaW5nKSB7XG4gIHJldHVybiBwLnNwbGl0KHNlcCkuam9pbihwb3NpeC5zZXApO1xufVxuIl19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F3c2Nkay9sYW1iZGEtZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrQkFBOEU7QUFDOUUsK0JBQThCO0FBQzlCLDRDQUF5QztBQUN6Qyw4Q0FBaUU7QUFFakUsZ0RBQTRDO0FBRTVDLHlDQUFtRDtBQTJFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLGNBQWUsU0FBUSxxQkFBUztJQUMzQzs7Ozs7T0FLRztJQUNILFlBQVksT0FBZ0IsRUFBRSxPQUE4Qjs7UUFDMUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWYsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUNoQyxNQUFNLE9BQU8sR0FBRyxvQkFBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsQ0FDcEUsQ0FBQztTQUNIO1FBRUQsTUFBTSxPQUFPLFNBQUcsT0FBTyxDQUFDLE9BQU8sbUNBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUU3RCwwRUFBMEU7UUFDMUUsa0JBQWtCO1FBQ2xCLE1BQU0sTUFBTSxHQUFHLG1CQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtRQUV6QyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBRXRDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGdDQUFxQixDQUFDLEVBQUU7WUFDL0MsTUFBTSxJQUFJLEtBQUssQ0FDYixHQUFHLFVBQVUsZ0JBQWdCLGdDQUFxQixZQUFZLENBQy9ELENBQUM7U0FDSDtRQUVELE1BQU0s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QUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN6QixHQUFHLFFBQVEsd0JBQXdCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQzVELENBQUM7U0FDSDtJQUNILENBQUM7O0FBdElILHdDQXVJQzs7O0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUEyQnhCO0lBQ0U7O09BRUc7SUFDYSxlQUF1QjtJQUV2Qzs7T0FFRztJQUNhLGFBQXFCO1FBTHJCLG9CQUFlLEdBQWYsZUFBZSxDQUFRO1FBS3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFRO1FBWHZCLG9CQUFlLEdBQUcsTUFBTSxDQUFDO0lBWXRDLENBQUM7O0FBckNOLHNDQXNDQzs7O0FBckNDOztHQUVHO0FBQ29CLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQUVGOztHQUVHO0FBQ29CLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQUVGOztHQUVHO0FBQ29CLHlCQUFXLEdBQUcsSUFBSSxhQUFhLENBQ3BELGFBQWEsRUFDYixRQUFRLENBQ1QsQ0FBQztBQWlCSjs7R0FFRztBQUNILFNBQVMsa0JBQWtCLENBQUMsQ0FBUztJQUNuQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIGRpcm5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlbGF0aXZlLCBzZXAsIHBvc2l4IH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IHBhc2NhbCB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCdW5kbGVyLCBCdW5kbGluZ09wdGlvbnMsIEVzbGludCB9IGZyb20gXCIuLi9qYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tIFwiLi4vc291cmNlLWNvZGVcIjtcbmltcG9ydCB7IEF3c0Nka0RlcHMgfSBmcm9tIFwiLi9hd3NjZGstZGVwc1wiO1xuaW1wb3J0IHsgVFlQRVNDUklQVF9MQU1CREFfRVhUIH0gZnJvbSBcIi4vaW50ZXJuYWxcIjtcblxuLyoqXG4gKiBDb21tb24gb3B0aW9ucyBmb3IgYExhbWJkYUZ1bmN0aW9uYC4gQXBwbGllcyB0byBhbGwgZnVuY3Rpb25zIGluXG4gKiBhdXRvLWRpc2NvdmVyeS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvbW1vbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5vZGUuanMgdmVyc2lvbiB0byB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJ1bnRpbWUuTk9ERUpTXzE0X1hcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBMYW1iZGFSdW50aW1lO1xuXG4gIC8qKlxuICAgKiBCdW5kbGluZyBvcHRpb25zIGZvciB0aGlzIEFXUyBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIElmIG5vdCBzcGVjaWZpZWQgdGhlIGRlZmF1bHQgYnVuZGxpbmcgb3B0aW9ucyBzcGVjaWZpZWQgZm9yIHRoZSBwcm9qZWN0XG4gICAqIGBCdW5kbGVyYCBpbnN0YW5jZSB3aWxsIGJlIHVzZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGJ1bmRsaW5nT3B0aW9ucz86IEJ1bmRsaW5nT3B0aW9ucztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJldXNlIFRDUCBjb25uZWN0aW9ucyB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgQVdTXG4gICAqIFNESyBmb3IgSmF2YVNjcmlwdC5cbiAgICpcbiAgICogVGhpcyBzZXRzIHRoZSBgQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRURgIGVudmlyb25tZW50IHZhcmlhYmxlXG4gICAqIHRvIGAxYC5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vc2RrLWZvci1qYXZhc2NyaXB0L3YyL2RldmVsb3Blci1ndWlkZS9ub2RlLXJldXNpbmctY29ubmVjdGlvbnMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhd3NTZGtDb25uZWN0aW9uUmV1c2U/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBGdW5jdGlvbmAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRnVuY3Rpb25PcHRpb25zIGV4dGVuZHMgTGFtYmRhRnVuY3Rpb25Db21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEEgcGF0aCBmcm9tIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5IHRvIGEgVHlwZVNjcmlwdCBmaWxlIHdoaWNoIGNvbnRhaW5zXG4gICAqIHRoZSBBV1MgTGFtYmRhIGhhbmRsZXIgZW50cnlwb2ludCAoZXhwb3J0cyBhIGBoYW5kbGVyYCBmdW5jdGlvbikuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LlxuICAgKlxuICAgKiBAZXhhbXBsZSBcInNyYy9zdWJkaXIvZm9vLmxhbWJkYS50c1wiXG4gICAqL1xuICByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZS4gVGhpcyBmaWxlIHNob3VsZCBhbHNvIGJlXG4gICAqIHVuZGVyIHRoZSBzb3VyY2UgdHJlZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgbmFtZSBvZiB0aGUgZW50cnlwb2ludCBmaWxlLCB3aXRoIHRoZSBgLWZ1bmN0aW9uLnRzYCBzdWZmaXhcbiAgICogaW5zdGVhZCBvZiBgLmxhbWJkYS50c2AuXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIGBsYW1iZGEuRnVuY3Rpb25gIHN1YmNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgcGFzY2FsIGNhc2VkIHZlcnNpb24gb2YgdGhlIG5hbWUgb2YgdGhlIGVudHJ5cG9pbnQgZmlsZSwgd2l0aFxuICAgKiB0aGUgZXh0ZW5zaW9uIGBGdW5jdGlvbmAgKGUuZy4gYFJlc2l6ZUltYWdlRnVuY3Rpb25gKS5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnN0cnVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFXUyBDREsgZGVwZW5kZW5jeSBtYW5hZ2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrRGVwczogQXdzQ2RrRGVwcztcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBwcmUtYnVuZGxlZCBBV1MgTGFtYmRhIGZ1bmN0aW9uIGNvbnN0cnVjdCBmcm9tIGhhbmRsZXIgY29kZS5cbiAqXG4gKiBUbyB1c2UgdGhpcywgY3JlYXRlIGFuIEFXUyBMYW1iZGEgaGFuZGxlciBmaWxlIHVuZGVyIHlvdXIgc291cmNlIHRyZWUgd2l0aFxuICogdGhlIGAubGFtYmRhLnRzYCBleHRlbnNpb24gYW5kIGFkZCBhIGBMYW1iZGFGdW5jdGlvbmAgY29tcG9uZW50IHRvIHlvdXJcbiAqIHR5cGVzY3JpcHQgcHJvamVjdCBwb2ludGluZyB0byB0aGlzIGVudHJ5cG9pbnQuXG4gKlxuICogVGhpcyB3aWxsIGFkZCBhIHRhc2sgdG8geW91ciBcImNvbXBpbGVcIiBzdGVwIHdoaWNoIHdpbGwgdXNlIGBlc2J1aWxkYCB0b1xuICogYnVuZGxlIHRoZSBoYW5kbGVyIGNvZGUgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5LiBJdCB3aWxsIGFsc28gZ2VuZXJhdGUgYVxuICogZmlsZSBgc3JjL2Zvby1mdW5jdGlvbi50c2Agd2l0aCBhIGN1c3RvbSBBV1MgY29uc3RydWN0IGNhbGxlZCBgRm9vRnVuY3Rpb25gXG4gKiB3aGljaCBleHRlbmRzIGBAYXdzLWNkay9hd3MtbGFtYmRhLkZ1bmN0aW9uYCB3aGljaCBpcyBib3VuZCB0byB0aGUgYnVuZGxlZFxuICogaGFuZGxlIHRocm91Z2ggYW4gYXNzZXQuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBuZXcgTGFtYmRhRnVuY3Rpb24obXlQcm9qZWN0LCB7XG4gKiAgIHNyY2RpcjogbXlQcm9qZWN0LnNyY2RpcixcbiAqICAgZW50cnlwb2ludDogJ3NyYy9mb28ubGFtYmRhLnRzJyxcbiAqIH0pO1xuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhRnVuY3Rpb24gZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogRGVmaW5lcyBhIHByZS1idW5kbGVkIEFXUyBMYW1iZGEgZnVuY3Rpb24gY29uc3RydWN0IGZyb20gaGFuZGxlciBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdCB0byB1c2VcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uc1xuICAgKi9cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRnVuY3Rpb25PcHRpb25zKSB7XG4gICAgc3VwZXIocHJvamVjdCk7XG5cbiAgICBjb25zdCBjZGtEZXBzID0gb3B0aW9ucy5jZGtEZXBzO1xuICAgIGNvbnN0IGJ1bmRsZXIgPSBCdW5kbGVyLm9mKHByb2plY3QpO1xuICAgIGlmICghYnVuZGxlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk5vIGJ1bmRsZXIgZm91bmQuIFBsZWFzZSBhZGQgYSBCdW5kbGVyIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcnVudGltZSA9IG9wdGlvbnMucnVudGltZSA/PyBMYW1iZGFSdW50aW1lLk5PREVKU18xNF9YO1xuXG4gICAgLy8gYWxsb3cgTGFtYmRhIGhhbmRsZXIgY29kZSB0byBpbXBvcnQgZGV2LWRlcHMgc2luY2UgdGhleSBhcmUgb25seSBuZWVkZWRcbiAgICAvLyBkdXJpbmcgYnVuZGxpbmdcbiAgICBjb25zdCBlc2xpbnQgPSBFc2xpbnQub2YocHJvamVjdCk7XG4gICAgZXNsaW50Py5hbGxvd0RldkRlcHMob3B0aW9ucy5lbnRyeXBvaW50KTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBvcHRpb25zLmVudHJ5cG9pbnQ7XG5cbiAgICBpZiAoIWVudHJ5cG9pbnQuZW5kc1dpdGgoVFlQRVNDUklQVF9MQU1CREFfRVhUKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtlbnRyeXBvaW50fSBtdXN0IGhhdmUgYSAke1RZUEVTQ1JJUFRfTEFNQkRBX0VYVH0gZXh0ZW5zaW9uYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlUGF0aCA9IGpvaW4oXG4gICAgICBkaXJuYW1lKGVudHJ5cG9pbnQpLFxuICAgICAgYmFzZW5hbWUoZW50cnlwb2ludCwgVFlQRVNDUklQVF9MQU1CREFfRVhUKVxuICAgICk7XG4gICAgY29uc3QgY29uc3RydWN0RmlsZSA9IG9wdGlvbnMuY29uc3RydWN0RmlsZSA/PyBgJHtiYXNlUGF0aH0tZnVuY3Rpb24udHNgO1xuXG4gICAgaWYgKGV4dG5hbWUoY29uc3RydWN0RmlsZSkgIT09IFwiLnRzXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYENvbnN0cnVjdCBmaWxlIG5hbWUgXCIke2NvbnN0cnVjdEZpbGV9XCIgbXVzdCBoYXZlIGEgLnRzIGV4dGVuc2lvbmBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gdHlwZSBuYW1lc1xuICAgIGNvbnN0IGNvbnN0cnVjdE5hbWUgPVxuICAgICAgb3B0aW9ucy5jb25zdHJ1Y3ROYW1lID8/IHBhc2NhbChiYXNlbmFtZShiYXNlUGF0aCkpICsgXCJGdW5jdGlvblwiO1xuICAgIGNvbnN0IHByb3BzVHlwZSA9IGAke2NvbnN0cnVjdE5hbWV9UHJvcHNgO1xuXG4gICAgY29uc3QgYnVuZGxlID0gYnVuZGxlci5hZGRCdW5kbGUoZW50cnlwb2ludCwge1xuICAgICAgdGFyZ2V0OiBydW50aW1lLmVzYnVpbGRUYXJnZXQsXG4gICAgICBwbGF0Zm9ybTogcnVudGltZS5lc2J1aWxkUGxhdGZvcm0sXG4gICAgICBleHRlcm5hbHM6IFtcImF3cy1zZGtcIl0sXG4gICAgICAuLi5vcHRpb25zLmJ1bmRsaW5nT3B0aW9ucyxcbiAgICB9KTtcblxuICAgIC8vIGNhbGN1bGF0ZSB0aGUgcmVsYXRpdmUgcGF0aCBiZXR3ZWVuIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGVcbiAgICAvLyBnZW5lcmF0ZWQgY29uc3RydWN0IHNvdXJjZSBmaWxlIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgYnVuZGxlXG4gICAgLy8gaW5kZXguanMgYnkgcmVzb2x2aW5nIHRoZW0gYXMgYWJzb2x1dGUgcGF0aHMgZmlyc3QuXG4gICAgLy8gZS5nOlxuICAgIC8vICAtIG91dGZpbGVBYnMgPT4gYC9wcm9qZWN0LW91dGRpci9hc3NldHMvZm9vL2Jhci9iYXovZm9vLWZ1bmN0aW9uL2luZGV4LmpzYFxuICAgIC8vICAtIGNvbnN0cnVjdEFicyA9PiBgL3Byb2plY3Qtb3V0ZGlyL3NyYy9mb28vYmFyL2Jhei9mb28tZnVuY3Rpb24udHNgXG4gICAgY29uc3Qgb3V0ZmlsZUFicyA9IGpvaW4ocHJvamVjdC5vdXRkaXIsIGJ1bmRsZS5vdXRmaWxlKTtcbiAgICBjb25zdCBjb25zdHJ1Y3RBYnMgPSBqb2luKHByb2plY3Qub3V0ZGlyLCBjb25zdHJ1Y3RGaWxlKTtcbiAgICBjb25zdCByZWxhdGl2ZU91dGZpbGUgPSByZWxhdGl2ZShcbiAgICAgIGRpcm5hbWUoY29uc3RydWN0QWJzKSxcbiAgICAgIGRpcm5hbWUob3V0ZmlsZUFicylcbiAgICApO1xuXG4gICAgY29uc3Qgc3JjID0gbmV3IFNvdXJjZUNvZGUocHJvamVjdCwgY29uc3RydWN0RmlsZSk7XG4gICAgaWYgKHNyYy5tYXJrZXIpIHtcbiAgICAgIHNyYy5saW5lKGAvLyAke3NyYy5tYXJrZXJ9YCk7XG4gICAgfVxuICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcIik7XG5cbiAgICBpZiAoY2RrRGVwcy5jZGtNYWpvclZlcnNpb24gPT09IDEpIHtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEnO1wiKTtcbiAgICAgIHNyYy5saW5lKFwiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnQGF3cy1jZGsvY29yZSc7XCIpO1xuICAgICAgY2RrRGVwcy5hZGRWMURlcGVuZGVuY2llcyhcIkBhd3MtY2RrL2F3cy1sYW1iZGFcIik7XG4gICAgICBjZGtEZXBzLmFkZFYxRGVwZW5kZW5jaWVzKFwiQGF3cy1jZGsvY29yZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XCIpO1xuICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcIik7XG4gICAgfVxuXG4gICAgc3JjLmxpbmUoKTtcbiAgICBzcmMubGluZShcIi8qKlwiKTtcbiAgICBzcmMubGluZShgICogUHJvcHMgZm9yICR7Y29uc3RydWN0TmFtZX1gKTtcbiAgICBzcmMubGluZShcIiAqL1wiKTtcbiAgICBzcmMub3BlbihgZXhwb3J0IGludGVyZmFjZSAke3Byb3BzVHlwZX0gZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtgKTtcbiAgICBzcmMuY2xvc2UoXCJ9XCIpO1xuICAgIHNyYy5saW5lKCk7XG4gICAgc3JjLmxpbmUoXCIvKipcIik7XG4gICAgc3JjLmxpbmUoXG4gICAgICBgICogQW4gQVdTIExhbWJkYSBmdW5jdGlvbiB3aGljaCBleGVjdXRlcyAke2NvbnZlcnRUb1Bvc2l4UGF0aChcbiAgICAgICAgYmFzZVBhdGhcbiAgICAgICl9LmBcbiAgICApO1xuICAgIHNyYy5saW5lKFwiICovXCIpO1xuICAgIHNyYy5vcGVuKGBleHBvcnQgY2xhc3MgJHtjb25zdHJ1Y3ROYW1lfSBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbiB7YCk7XG4gICAgc3JjLm9wZW4oXG4gICAgICBgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiAke3Byb3BzVHlwZX0pIHtgXG4gICAgKTtcbiAgICBzcmMub3BlbihcInN1cGVyKHNjb3BlLCBpZCwge1wiKTtcbiAgICBzcmMubGluZShgZGVzY3JpcHRpb246ICcke2NvbnZlcnRUb1Bvc2l4UGF0aChlbnRyeXBvaW50KX0nLGApO1xuICAgIHNyYy5saW5lKFwiLi4ucHJvcHMsXCIpO1xuICAgIHNyYy5saW5lKGBydW50aW1lOiBsYW1iZGEuUnVudGltZS4ke3J1bnRpbWUuZnVuY3Rpb25SdW50aW1lfSxgKTtcbiAgICBzcmMubGluZShcImhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcIik7XG4gICAgc3JjLmxpbmUoXG4gICAgICBgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcke2NvbnZlcnRUb1Bvc2l4UGF0aChcbiAgICAgICAgcmVsYXRpdmVPdXRmaWxlXG4gICAgICApfScpKSxgXG4gICAgKTtcbiAgICBzcmMuY2xvc2UoXCJ9KTtcIik7XG4gICAgaWYgKG9wdGlvbnMuYXdzU2RrQ29ubmVjdGlvblJldXNlID8/IHRydWUpIHtcbiAgICAgIHNyYy5saW5lKFxuICAgICAgICBcInRoaXMuYWRkRW52aXJvbm1lbnQoJ0FXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEJywgJzEnLCB7IHJlbW92ZUluRWRnZTogdHJ1ZSB9KTtcIlxuICAgICAgKTtcbiAgICB9XG4gICAgc3JjLmNsb3NlKFwifVwiKTtcbiAgICBzcmMuY2xvc2UoXCJ9XCIpO1xuXG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKFxuICAgICAgYCR7YmFzZVBhdGh9OiBjb25zdHJ1Y3QgXCIke2NvbnN0cnVjdE5hbWV9XCIgZ2VuZXJhdGVkIHVuZGVyIFwiJHtjb25zdHJ1Y3RGaWxlfVwiYFxuICAgICk7XG4gICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKFxuICAgICAgYCR7YmFzZVBhdGh9OiBidW5kbGUgdGFzayBcIiR7YnVuZGxlLmJ1bmRsZVRhc2submFtZX1cImBcbiAgICApO1xuICAgIGlmIChidW5kbGUud2F0Y2hUYXNrKSB7XG4gICAgICB0aGlzLnByb2plY3QubG9nZ2VyLnZlcmJvc2UoXG4gICAgICAgIGAke2Jhc2VQYXRofTogYnVuZGxlIHdhdGNoIHRhc2sgXCIke2J1bmRsZS53YXRjaFRhc2submFtZX1cImBcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVGhlIHJ1bnRpbWUgZm9yIHRoZSBBV1MgTGFtYmRhIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgTGFtYmRhUnVudGltZSB7XG4gIC8qKlxuICAgKiBOb2RlLmpzIDEwLnhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEwX1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xMF9YXCIsXG4gICAgXCJub2RlMTBcIlxuICApO1xuXG4gIC8qKlxuICAgKiBOb2RlLmpzIDEyLnhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzEyX1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xMl9YXCIsXG4gICAgXCJub2RlMTJcIlxuICApO1xuXG4gIC8qKlxuICAgKiBOb2RlLmpzIDE0LnhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ERUpTXzE0X1ggPSBuZXcgTGFtYmRhUnVudGltZShcbiAgICBcIk5PREVKU18xNF9YXCIsXG4gICAgXCJub2RlMTRcIlxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBlc2J1aWxkUGxhdGZvcm0gPSBcIm5vZGVcIjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIC8qKlxuICAgICAqIFRoZSBhd3MtbGFtYmRhLlJ1bnRpbWUgbWVtYmVyIG5hbWUgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvblJ1bnRpbWU6IHN0cmluZyxcblxuICAgIC8qKlxuICAgICAqIFRoZSBlc2J1aWxkIHNldHRpbmcgdG8gdXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBlc2J1aWxkVGFyZ2V0OiBzdHJpbmdcbiAgKSB7fVxufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBnaXZlbiBwYXRoIHN0cmluZyB0byBwb3NpeCBpZiBpdCB3YXNuJ3QgYWxyZWFkeS5cbiAqL1xuZnVuY3Rpb24gY29udmVydFRvUG9zaXhQYXRoKHA6IHN0cmluZykge1xuICByZXR1cm4gcC5zcGxpdChzZXApLmpvaW4ocG9zaXguc2VwKTtcbn1cbiJdfQ==