@aws/nx-plugin 0.40.1 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -59,6 +59,7 @@
59
59
  - `ts#nx-generator` - Add an [Nx Generator](https://nx.dev/features/generate-code) to a TypeScript project.
60
60
  - `ts#mcp-server` - Add a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server to a TypeScript project.
61
61
  - `ts#lambda-function` - Generate a TypeScript lambda function with optional type-safe event sources.
62
+ - `terraform#project` - Generate a new Terraform project.
62
63
  - `py#project` - Generate a uv based Python project.
63
64
  - `py#fast-api` - Generate a FastAPI backend service with [AWS Powertools](https://github.com/aws-powertools/powertools-lambda-python) pre-configured.
64
65
  - `py#lambda-function` - Add a lambda function to an existing python project with optional type-safe event sources.
package/generators.json CHANGED
@@ -156,6 +156,13 @@
156
156
  "schema": "./src/ts/nx-plugin/schema.json",
157
157
  "description": "Generate an Nx Plugin of your own! Build custom generators automatically made available for AI vibe-coding via MCP",
158
158
  "metric": "g22"
159
+ },
160
+ "terraform#project": {
161
+ "factory": "./src/terraform/project/generator",
162
+ "schema": "./src/terraform/project/schema.json",
163
+ "description": "Generates a Terraform project",
164
+ "metric": "g23",
165
+ "guidePages": ["terraform-project"]
159
166
  }
160
167
  }
161
168
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws/nx-plugin",
3
- "version": "0.40.1",
3
+ "version": "0.41.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/awslabs/nx-plugin-for-aws.git",
@@ -58,6 +58,8 @@ The following list of generators are what is currently available in the \`@aws/n
58
58
 
59
59
  - **ts#nx-plugin**: Generate an Nx Plugin of your own! Build custom generators automatically made available for AI vibe-coding via MCP
60
60
 
61
+ - **terraform#project**: Generates a Terraform project
62
+
61
63
  You also have the option of using additional [commmunity plugins](https://nx.dev/plugin-registry) as needed.
62
64
 
63
65
  ## Invoking a generator
@@ -0,0 +1,3 @@
1
+ # aws_region is dynamically set based on assumed role
2
+ # aws_region = "xxx"
3
+ environment = "dev"
@@ -0,0 +1,14 @@
1
+ locals {
2
+ account_id = data.aws_caller_identity.current.account_id
3
+ aws_region = data.aws_region.current.id
4
+ }
5
+
6
+ resource "null_resource" "print_info" {
7
+ # triggers = {
8
+ # always_run = timestamp()
9
+ # }
10
+
11
+ provisioner "local-exec" {
12
+ command = "echo 'AWS Region: ${local.aws_region}, AWS Account: ${local.account_id}, Environment: ${var.environment}'"
13
+ }
14
+ }
@@ -0,0 +1,9 @@
1
+ output "aws_region" {
2
+ description = "AWS region"
3
+ value = data.aws_region.current.id
4
+ }
5
+
6
+ output "environment" {
7
+ description = "Environment (dev, staging, prod)"
8
+ value = var.environment
9
+ }
@@ -0,0 +1,20 @@
1
+ terraform {
2
+ required_providers {
3
+ aws = {
4
+ source = "hashicorp/aws"
5
+ version = "~> 6.0"
6
+ }
7
+ }
8
+
9
+ backend "s3" {
10
+ encrypt = true
11
+ use_lockfile = true
12
+ }
13
+ }
14
+
15
+ provider "aws" {
16
+ region = var.aws_region
17
+ }
18
+
19
+ data "aws_caller_identity" "current" {}
20
+ data "aws_region" "current" {}
@@ -0,0 +1,10 @@
1
+ variable "aws_region" {
2
+ description = "AWS Region (us-east-1, us-west-2, ap-southeast-2, etc)"
3
+ type = string
4
+ default = null
5
+ }
6
+
7
+ variable "environment" {
8
+ description = "Environment (dev, staging, prod)"
9
+ type = string
10
+ }
@@ -0,0 +1,5 @@
1
+ resource "null_resource" "hello_world" {
2
+ provisioner "local-exec" {
3
+ command = "echo 'TODO'"
4
+ }
5
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { Tree, GeneratorCallback } from '@nx/devkit';
6
+ import { TerraformProjectGeneratorSchema } from './schema';
7
+ import { NxGeneratorInfo } from '../../utils/nx';
8
+ export declare const TERRAFORM_PROJECT_GENERATOR_INFO: NxGeneratorInfo;
9
+ export declare function terraformProjectGenerator(tree: Tree, schema: TerraformProjectGeneratorSchema): Promise<GeneratorCallback>;
10
+ export default terraformProjectGenerator;
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TERRAFORM_PROJECT_GENERATOR_INFO = void 0;
4
+ exports.terraformProjectGenerator = terraformProjectGenerator;
5
+ const tslib_1 = require("tslib");
6
+ /**
7
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
8
+ * SPDX-License-Identifier: Apache-2.0
9
+ */
10
+ const devkit_1 = require("@nx/devkit");
11
+ const generator_1 = require("../../ts/lib/generator");
12
+ const path_1 = require("path");
13
+ const object_1 = require("../../utils/object");
14
+ const nx_1 = require("../../utils/nx");
15
+ const git_1 = require("../../utils/git");
16
+ const versions_1 = require("../../utils/versions");
17
+ const NX_EXTEND_PLUGIN = '@nx-extend/terraform';
18
+ exports.TERRAFORM_PROJECT_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
19
+ function terraformProjectGenerator(tree, schema) {
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ var _a, _b;
22
+ // Just use getTsLibDetails as it isn't specific to TS
23
+ const lib = (0, generator_1.getTsLibDetails)(tree, schema);
24
+ const outDirToRootRelativePath = (0, path_1.relative)((0, path_1.join)(tree.root, lib.dir, 'src'), tree.root);
25
+ const distDir = (0, path_1.join)(outDirToRootRelativePath, 'dist', lib.dir);
26
+ const tfDistDir = (0, path_1.join)(distDir, 'terraform');
27
+ const checkovDistDir = (0, path_1.join)(distDir, 'checkov');
28
+ (0, git_1.updateGitIgnore)(tree, '.', (patterns) => [...patterns, '.terraform']);
29
+ const applicationTargets = {
30
+ apply: {
31
+ executor: 'nx:run-commands',
32
+ defaultConfiguration: 'dev',
33
+ configurations: {
34
+ dev: {
35
+ command: `terraform apply ${tfDistDir}/dev.tfplan`,
36
+ },
37
+ },
38
+ options: {
39
+ forwardAllArgs: true,
40
+ cwd: '{projectRoot}/src',
41
+ },
42
+ dependsOn: ['plan'],
43
+ },
44
+ bootstrap: {
45
+ executor: 'nx:run-commands',
46
+ options: {
47
+ forwardAllArgs: true,
48
+ commands: [
49
+ `aws s3 cp s3://$(aws sts get-caller-identity --query Account --output text)-tf-state-$(aws configure get region)/bootstrap.tfstate ${tfDistDir}/bootstrap.tfstate || true`,
50
+ 'terraform init',
51
+ `terraform apply -auto-approve -state=${tfDistDir}/bootstrap.tfstate -var="aws_region=$(aws configure get region)"`,
52
+ `aws s3 cp ${tfDistDir}/bootstrap.tfstate s3://$(aws sts get-caller-identity --query Account --output text)-tf-state-$(aws configure get region)/bootstrap.tfstate`,
53
+ ],
54
+ parallel: false,
55
+ cwd: '{projectRoot}/.bootstrap',
56
+ },
57
+ },
58
+ 'bootstrap-destroy': {
59
+ executor: 'nx:run-commands',
60
+ options: {
61
+ forwardAllArgs: true,
62
+ command: `terraform destroy -state=${tfDistDir}/bootstrap.tfstate`,
63
+ cwd: '{projectRoot}/.bootstrap',
64
+ },
65
+ },
66
+ destroy: {
67
+ executor: 'nx:run-commands',
68
+ defaultConfiguration: 'dev',
69
+ configurations: {
70
+ dev: {
71
+ command: 'terraform destroy -var-file=env/dev.tfvars',
72
+ },
73
+ },
74
+ options: {
75
+ forwardAllArgs: true,
76
+ cwd: '{projectRoot}/src',
77
+ },
78
+ dependsOn: ['init'],
79
+ },
80
+ init: {
81
+ executor: 'nx:run-commands',
82
+ defaultConfiguration: 'dev',
83
+ configurations: {
84
+ dev: {
85
+ command: 'terraform init -reconfigure -backend-config="region=$(aws configure get region)" -backend-config="bucket=$(aws sts get-caller-identity --query Account --output text)-tf-state-$(aws configure get region)" -backend-config="key=dev/terraform.tfstate"',
86
+ },
87
+ },
88
+ options: {
89
+ forwardAllArgs: true,
90
+ cwd: '{projectRoot}/src',
91
+ },
92
+ },
93
+ output: {
94
+ executor: 'nx:run-commands',
95
+ cache: true,
96
+ inputs: ['default'],
97
+ options: {
98
+ command: 'terraform output -json',
99
+ forwardAllArgs: true,
100
+ cwd: '{projectRoot}/src',
101
+ },
102
+ },
103
+ plan: {
104
+ executor: 'nx:run-commands',
105
+ defaultConfiguration: 'dev',
106
+ configurations: {
107
+ dev: {
108
+ command: `terraform plan -var-file=env/dev.tfvars -out=${tfDistDir}/dev.tfplan`,
109
+ },
110
+ },
111
+ options: {
112
+ forwardAllArgs: true,
113
+ cwd: '{projectRoot}/src',
114
+ },
115
+ dependsOn: ['init'],
116
+ },
117
+ };
118
+ const libTargets = {
119
+ fmt: {
120
+ executor: 'nx:run-commands',
121
+ cache: true,
122
+ inputs: ['default'],
123
+ options: {
124
+ command: 'terraform fmt',
125
+ forwardAllArgs: true,
126
+ cwd: '{projectRoot}/src',
127
+ },
128
+ },
129
+ init: {
130
+ executor: 'nx:run-commands',
131
+ defaultConfiguration: 'dev',
132
+ configurations: {
133
+ dev: {
134
+ command: 'terraform init',
135
+ },
136
+ },
137
+ options: {
138
+ forwardAllArgs: true,
139
+ cwd: '{projectRoot}/src',
140
+ },
141
+ },
142
+ test: {
143
+ executor: 'nx:run-commands',
144
+ cache: true,
145
+ outputs: [`{workspaceRoot}/dist/${lib.dir}/checkov`],
146
+ options: {
147
+ command: `uvx checkov --directory . -o json --output-file-path ${checkovDistDir}`,
148
+ forwardAllArgs: true,
149
+ cwd: '{projectRoot}/src',
150
+ },
151
+ dependsOn: ['validate'],
152
+ },
153
+ validate: {
154
+ executor: 'nx:run-commands',
155
+ cache: true,
156
+ inputs: ['default'],
157
+ options: {
158
+ command: 'terraform validate',
159
+ forwardAllArgs: true,
160
+ cwd: '{projectRoot}/src',
161
+ },
162
+ },
163
+ };
164
+ (0, devkit_1.addProjectConfiguration)(tree, lib.fullyQualifiedName, {
165
+ root: lib.dir,
166
+ projectType: schema.type,
167
+ sourceRoot: (0, devkit_1.joinPathFragments)(lib.dir, 'src'),
168
+ targets: (0, object_1.sortObjectKeys)(Object.assign(Object.assign({}, libTargets), (schema.type === 'application' ? applicationTargets : {}))),
169
+ });
170
+ (0, nx_1.addGeneratorMetadata)(tree, lib.fullyQualifiedName, exports.TERRAFORM_PROJECT_GENERATOR_INFO);
171
+ (0, devkit_1.generateFiles)(tree, // the virtual file system
172
+ (0, devkit_1.joinPathFragments)(__dirname, `./files/${schema.type}`), // path to the file templates
173
+ lib.dir, // destination path of the files
174
+ {}, {
175
+ overwriteStrategy: devkit_1.OverwriteStrategy.Overwrite,
176
+ });
177
+ const nxJson = (0, devkit_1.readNxJson)(tree);
178
+ if (!((_a = nxJson.plugins) === null || _a === void 0 ? void 0 : _a.find((p) => typeof p === 'string'
179
+ ? p === NX_EXTEND_PLUGIN
180
+ : p.plugin === NX_EXTEND_PLUGIN))) {
181
+ nxJson.plugins = [...((_b = nxJson.plugins) !== null && _b !== void 0 ? _b : []), NX_EXTEND_PLUGIN];
182
+ (0, devkit_1.updateNxJson)(tree, nxJson);
183
+ }
184
+ // TODO: TF Metrics
185
+ // await addGeneratorMetricsIfApplicable(tree, [
186
+ // TERRAFORM_PROJECT_GENERATOR_INFO,
187
+ // ]);
188
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {}, (0, versions_1.withVersions)(['@nx-extend/terraform']));
189
+ return () => {
190
+ (0, devkit_1.installPackagesTask)(tree);
191
+ };
192
+ });
193
+ }
194
+ exports.default = terraformProjectGenerator;
195
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/terraform/project/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { ProjectType } from '@nx/devkit';
6
+
7
+ /**
8
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
9
+ * SPDX-License-Identifier: Apache-2.0
10
+ */
11
+ export interface TerraformProjectGeneratorSchema {
12
+ name: string;
13
+ type: ProjectType;
14
+ directory?: string;
15
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "Terraform",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "name": {
8
+ "description": "The name of the project.",
9
+ "type": "string",
10
+ "$default": {
11
+ "$source": "argv",
12
+ "index": 0
13
+ },
14
+ "x-prompt": "What name would you like to use for the project?",
15
+ "pattern": "^[a-zA-Z][^:]*$"
16
+ },
17
+ "type": {
18
+ "type": "string",
19
+ "enum": ["application", "library"],
20
+ "x-priority": "important",
21
+ "x-prompt": "What type of Terraform project is this?",
22
+ "description": "Whether this is a terraform lib (re-usable modules) or app (deployable).",
23
+ "default": "application"
24
+ },
25
+ "directory": {
26
+ "description": "The directory of the new project.",
27
+ "type": "string",
28
+ "alias": "dir",
29
+ "x-priority": "important",
30
+ "default": "packages",
31
+ "x-prompt": "What directory would you like to store your project in?"
32
+ }
33
+ },
34
+ "required": ["name"]
35
+ }
@@ -15,6 +15,7 @@ export declare const VERSIONS: {
15
15
  readonly '@middy/core': "^6.0.0";
16
16
  readonly '@nxlv/python': "~21.2.0";
17
17
  readonly '@nx/devkit': "~21.0.3";
18
+ readonly '@nx-extend/terraform': "^9.0.0";
18
19
  readonly '@modelcontextprotocol/sdk': "^1.11.3";
19
20
  readonly '@tanstack/react-router': "^1.121.16";
20
21
  readonly '@tanstack/router-plugin': "^1.121.16";
@@ -60,5 +61,5 @@ export type IVersion = keyof typeof VERSIONS;
60
61
  * Add versions to the given dependencies
61
62
  */
62
63
  export declare const withVersions: (deps: (keyof typeof VERSIONS)[]) => {
63
- [k: string]: "^0.0.60" | "^3.775.0" | "^3.848.0" | "^2.24.1" | "^6.0.0" | "~21.2.0" | "~21.0.3" | "^1.11.3" | "^1.121.16" | "^1.120.17" | "^1.121.0" | "^3.0.94" | "^3.0.928" | "^1.0.38" | "^5.74.3" | "^5.84.2" | "11.0.0" | "^22.13.13" | "^8.10.148" | "^2.8.18" | "^5.0.3" | "^4.2.0" | "^1.0.20" | "^2.1006.0" | "^2.207.0" | "^3.10.3" | "^10.4.2" | "^2.8.5" | "^0.25.1" | "^5.2.5" | "^5.1.0" | "^2.4.0" | "^3.2.0" | "^3.5.3" | "^0.5.21" | "^4.1.11" | "4.20.1" | "^5.1.4" | "^4.0.14" | "npm:zod@^3";
64
+ [k: string]: "^0.0.60" | "^3.775.0" | "^3.848.0" | "^2.24.1" | "^6.0.0" | "~21.2.0" | "~21.0.3" | "^9.0.0" | "^1.11.3" | "^1.121.16" | "^1.120.17" | "^1.121.0" | "^3.0.94" | "^3.0.928" | "^1.0.38" | "^5.74.3" | "^5.84.2" | "11.0.0" | "^22.13.13" | "^8.10.148" | "^2.8.18" | "^5.0.3" | "^4.2.0" | "^1.0.20" | "^2.1006.0" | "^2.207.0" | "^3.10.3" | "^10.4.2" | "^2.8.5" | "^0.25.1" | "^5.2.5" | "^5.1.0" | "^2.4.0" | "^3.2.0" | "^3.5.3" | "^0.5.21" | "^4.1.11" | "4.20.1" | "^5.1.4" | "^4.0.14" | "npm:zod@^3";
64
65
  };
@@ -18,6 +18,7 @@ exports.VERSIONS = {
18
18
  '@middy/core': '^6.0.0',
19
19
  '@nxlv/python': '~21.2.0',
20
20
  '@nx/devkit': '~21.0.3',
21
+ '@nx-extend/terraform': '^9.0.0',
21
22
  '@modelcontextprotocol/sdk': '^1.11.3',
22
23
  '@tanstack/react-router': '^1.121.16',
23
24
  '@tanstack/router-plugin': '^1.121.16',
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,QAAQ,GAAG;IACtB,iCAAiC,EAAE,SAAS;IAC5C,kCAAkC,EAAE,UAAU;IAC9C,+BAA+B,EAAE,UAAU;IAC3C,+CAA+C,EAAE,UAAU;IAC3D,2CAA2C,EAAE,UAAU;IACvD,+BAA+B,EAAE,SAAS;IAC1C,gCAAgC,EAAE,SAAS;IAC3C,+BAA+B,EAAE,SAAS;IAC1C,+BAA+B,EAAE,SAAS;IAC1C,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,SAAS;IACzB,YAAY,EAAE,SAAS;IACvB,2BAA2B,EAAE,SAAS;IACtC,wBAAwB,EAAE,WAAW;IACrC,yBAAyB,EAAE,WAAW;IACtC,4BAA4B,EAAE,WAAW;IACzC,+BAA+B,EAAE,WAAW;IAC5C,wBAAwB,EAAE,UAAU;IACpC,qCAAqC,EAAE,SAAS;IAChD,+BAA+B,EAAE,UAAU;IAC3C,kCAAkC,EAAE,SAAS;IAC7C,uBAAuB,EAAE,SAAS;IAClC,gCAAgC,EAAE,SAAS;IAC3C,4BAA4B,EAAE,QAAQ;IACtC,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,aAAa,EAAE,WAAW;IAC1B,mBAAmB,EAAE,WAAW;IAChC,aAAa,EAAE,SAAS;IACxB,gBAAgB,EAAE,QAAQ;IAC1B,eAAe,EAAE,QAAQ;IACzB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,SAAS;IAC9B,UAAU,EAAE,SAAS;IACrB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,QAAQ;IAClC,OAAO,EAAE,QAAQ;IACjB,qBAAqB,EAAE,QAAQ;IAC/B,gBAAgB,EAAE,QAAQ;IAC1B,QAAQ,EAAE,QAAQ;IAClB,oBAAoB,EAAE,QAAQ;IAC9B,oBAAoB,EAAE,SAAS;IAC/B,WAAW,EAAE,SAAS;IACtB,mBAAmB,EAAE,SAAS;IAC9B,GAAG,EAAE,QAAQ,EAAE,kDAAkD;IACjE,qBAAqB,EAAE,QAAQ;IAC/B,GAAG,EAAE,SAAS;IACd,2FAA2F;IAC3F,oEAAoE;IACpE,QAAQ,EAAE,YAAY;CACd,CAAC;AAEX;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,IAA+B,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AADjD,QAAA,YAAY,gBACqC"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/versions.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,QAAQ,GAAG;IACtB,iCAAiC,EAAE,SAAS;IAC5C,kCAAkC,EAAE,UAAU;IAC9C,+BAA+B,EAAE,UAAU;IAC3C,+CAA+C,EAAE,UAAU;IAC3D,2CAA2C,EAAE,UAAU;IACvD,+BAA+B,EAAE,SAAS;IAC1C,gCAAgC,EAAE,SAAS;IAC3C,+BAA+B,EAAE,SAAS;IAC1C,+BAA+B,EAAE,SAAS;IAC1C,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,SAAS;IACzB,YAAY,EAAE,SAAS;IACvB,sBAAsB,EAAE,QAAQ;IAChC,2BAA2B,EAAE,SAAS;IACtC,wBAAwB,EAAE,WAAW;IACrC,yBAAyB,EAAE,WAAW;IACtC,4BAA4B,EAAE,WAAW;IACzC,+BAA+B,EAAE,WAAW;IAC5C,wBAAwB,EAAE,UAAU;IACpC,qCAAqC,EAAE,SAAS;IAChD,+BAA+B,EAAE,UAAU;IAC3C,kCAAkC,EAAE,SAAS;IAC7C,uBAAuB,EAAE,SAAS;IAClC,gCAAgC,EAAE,SAAS;IAC3C,4BAA4B,EAAE,QAAQ;IACtC,cAAc,EAAE,QAAQ;IACxB,cAAc,EAAE,QAAQ;IACxB,aAAa,EAAE,WAAW;IAC1B,mBAAmB,EAAE,WAAW;IAChC,aAAa,EAAE,SAAS;IACxB,gBAAgB,EAAE,QAAQ;IAC1B,eAAe,EAAE,QAAQ;IACzB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,SAAS;IAC9B,UAAU,EAAE,SAAS;IACrB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,SAAS;IAClB,wBAAwB,EAAE,QAAQ;IAClC,OAAO,EAAE,QAAQ;IACjB,qBAAqB,EAAE,QAAQ;IAC/B,gBAAgB,EAAE,QAAQ;IAC1B,QAAQ,EAAE,QAAQ;IAClB,oBAAoB,EAAE,QAAQ;IAC9B,oBAAoB,EAAE,SAAS;IAC/B,WAAW,EAAE,SAAS;IACtB,mBAAmB,EAAE,SAAS;IAC9B,GAAG,EAAE,QAAQ,EAAE,kDAAkD;IACjE,qBAAqB,EAAE,QAAQ;IAC/B,GAAG,EAAE,SAAS;IACd,2FAA2F;IAC3F,oEAAoE;IACpE,QAAQ,EAAE,YAAY;CACd,CAAC;AAEX;;GAEG;AACI,MAAM,YAAY,GAAG,CAAC,IAA+B,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,gBAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AADjD,QAAA,YAAY,gBACqC"}