cdk-cost-analyzer 0.1.22 → 0.1.23

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.
@@ -2,35 +2,35 @@
2
2
  "entries": {
3
3
  "AmazonS3:US East (N. Virginia):storageClass:General Purpose|volumeType:Standard": {
4
4
  "price": 0.023,
5
- "timestamp": 1770321836931
5
+ "timestamp": 1770325754224
6
6
  },
7
7
  "AmazonDynamoDB:US East (N. Virginia):group:DDB-ReadUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
8
8
  "price": 0.023,
9
- "timestamp": 1770321836939
9
+ "timestamp": 1770325754230
10
10
  },
11
11
  "AmazonDynamoDB:US East (N. Virginia):group:DDB-WriteUnits|productFamily:Amazon DynamoDB PayPerRequest Throughput": {
12
12
  "price": 0.023,
13
- "timestamp": 1770321836939
13
+ "timestamp": 1770325754230
14
14
  },
15
15
  "AmazonEC2:US East (N. Virginia):capacitystatus:Used|instanceType:t3.micro|operatingSystem:Linux|preInstalledSw:NA|tenancy:Shared": {
16
16
  "price": 0.023,
17
- "timestamp": 1770321836953
17
+ "timestamp": 1770325754244
18
18
  },
19
19
  "AWSLambda:US East (N. Virginia):group:AWS-Lambda-Requests": {
20
20
  "price": 0.023,
21
- "timestamp": 1770321836958
21
+ "timestamp": 1770325754249
22
22
  },
23
23
  "AWSLambda:US East (N. Virginia):group:AWS-Lambda-Duration": {
24
24
  "price": 0.023,
25
- "timestamp": 1770321836958
25
+ "timestamp": 1770325754249
26
26
  },
27
27
  "AmazonS3:EU (Frankfurt):storageClass:General Purpose|volumeType:Standard": {
28
28
  "price": 0.023,
29
- "timestamp": 1770321846317
29
+ "timestamp": 1770325763850
30
30
  },
31
31
  "AmazonS3:invalid-region-123:storageClass:General Purpose|volumeType:Standard": {
32
32
  "price": 0.023,
33
- "timestamp": 1770321846357
33
+ "timestamp": 1770325763892
34
34
  }
35
35
  }
36
36
  }
@@ -6,4 +6,10 @@ export declare class APIGatewayCalculator implements ResourceCostCalculator {
6
6
  private calculateRestApiCost;
7
7
  private calculateHttpApiCost;
8
8
  private calculateWebSocketCost;
9
+ /**
10
+ * Get the AWS region prefix for API Gateway pricing usagetype.
11
+ * AWS uses region prefixes in usagetype values (e.g., USE1-ApiGatewayRequest).
12
+ * Reference: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html
13
+ */
14
+ private getRegionPrefix;
9
15
  }
@@ -23,12 +23,14 @@ class APIGatewayCalculator {
23
23
  async calculateRestApiCost(region, pricingClient) {
24
24
  try {
25
25
  const assumedRequests = 1_000_000; // 1M requests per month
26
+ const regionPrefix = this.getRegionPrefix(region);
27
+ const usageType = regionPrefix ? `${regionPrefix}-ApiGatewayRequest` : 'ApiGatewayRequest';
26
28
  const costPerMillion = await pricingClient.getPrice({
27
29
  serviceCode: 'AmazonApiGateway',
28
30
  region: (0, RegionMapper_1.normalizeRegion)(region),
29
31
  filters: [
30
32
  { field: 'productFamily', value: 'API Calls' },
31
- { field: 'groupDescription', value: 'ApiGatewayRequest' },
33
+ { field: 'usagetype', value: usageType },
32
34
  ],
33
35
  });
34
36
  if (costPerMillion === null) {
@@ -64,12 +66,14 @@ class APIGatewayCalculator {
64
66
  async calculateHttpApiCost(region, pricingClient) {
65
67
  try {
66
68
  const assumedRequests = 1_000_000; // 1M requests per month
69
+ const regionPrefix = this.getRegionPrefix(region);
70
+ const usageType = regionPrefix ? `${regionPrefix}-ApiGatewayHttpRequest` : 'ApiGatewayHttpRequest';
67
71
  const costPerMillion = await pricingClient.getPrice({
68
72
  serviceCode: 'AmazonApiGateway',
69
73
  region: (0, RegionMapper_1.normalizeRegion)(region),
70
74
  filters: [
71
75
  { field: 'productFamily', value: 'API Calls' },
72
- { field: 'groupDescription', value: 'ApiGatewayHttpRequest' },
76
+ { field: 'usagetype', value: usageType },
73
77
  ],
74
78
  });
75
79
  if (costPerMillion === null) {
@@ -106,12 +110,15 @@ class APIGatewayCalculator {
106
110
  try {
107
111
  const assumedMessages = 1_000_000; // 1M messages per month
108
112
  const assumedConnectionMinutes = 100_000; // 100K connection minutes
113
+ const regionPrefix = this.getRegionPrefix(region);
114
+ const messageUsageType = regionPrefix ? `${regionPrefix}-ApiGatewayMessage` : 'ApiGatewayMessage';
115
+ const minuteUsageType = regionPrefix ? `${regionPrefix}-ApiGatewayMinute` : 'ApiGatewayMinute';
109
116
  const messageCostPerMillion = await pricingClient.getPrice({
110
117
  serviceCode: 'AmazonApiGateway',
111
118
  region: (0, RegionMapper_1.normalizeRegion)(region),
112
119
  filters: [
113
120
  { field: 'productFamily', value: 'WebSocket' },
114
- { field: 'groupDescription', value: 'ApiGatewayMessage' },
121
+ { field: 'usagetype', value: messageUsageType },
115
122
  ],
116
123
  });
117
124
  const connectionCostPerMinute = await pricingClient.getPrice({
@@ -119,7 +126,7 @@ class APIGatewayCalculator {
119
126
  region: (0, RegionMapper_1.normalizeRegion)(region),
120
127
  filters: [
121
128
  { field: 'productFamily', value: 'WebSocket' },
122
- { field: 'groupDescription', value: 'ApiGatewayConnectionMinute' },
129
+ { field: 'usagetype', value: minuteUsageType },
123
130
  ],
124
131
  });
125
132
  if (messageCostPerMillion === null || connectionCostPerMinute === null) {
@@ -154,6 +161,56 @@ class APIGatewayCalculator {
154
161
  };
155
162
  }
156
163
  }
164
+ /**
165
+ * Get the AWS region prefix for API Gateway pricing usagetype.
166
+ * AWS uses region prefixes in usagetype values (e.g., USE1-ApiGatewayRequest).
167
+ * Reference: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-region-billing-codes.html
168
+ */
169
+ getRegionPrefix(region) {
170
+ const prefixMap = {
171
+ // US Regions
172
+ 'us-east-1': 'USE1',
173
+ 'us-east-2': 'USE2',
174
+ 'us-west-1': 'USW1',
175
+ 'us-west-2': 'USW2',
176
+ // EU Regions
177
+ 'eu-west-1': 'EUW1',
178
+ 'eu-west-2': 'EUW2',
179
+ 'eu-west-3': 'EUW3',
180
+ 'eu-central-1': 'EUC1',
181
+ 'eu-central-2': 'EUC2',
182
+ 'eu-north-1': 'EUN1',
183
+ 'eu-south-1': 'EUS1',
184
+ 'eu-south-2': 'EUS2',
185
+ // Asia Pacific Regions
186
+ 'ap-south-1': 'APS3', // Mumbai
187
+ 'ap-south-2': 'APS5', // Hyderabad
188
+ 'ap-southeast-1': 'APS1', // Singapore
189
+ 'ap-southeast-2': 'APS2', // Sydney
190
+ 'ap-southeast-3': 'APS6', // Jakarta
191
+ 'ap-southeast-4': 'APS7', // Melbourne
192
+ 'ap-northeast-1': 'APN1', // Tokyo
193
+ 'ap-northeast-2': 'APN2', // Seoul
194
+ 'ap-northeast-3': 'APN3', // Osaka
195
+ 'ap-east-1': 'APE1', // Hong Kong
196
+ // Canada Regions
197
+ 'ca-central-1': 'CAN1',
198
+ 'ca-west-1': 'CAW1',
199
+ // South America Regions
200
+ 'sa-east-1': 'SAE1',
201
+ // Middle East Regions
202
+ 'me-south-1': 'MES1',
203
+ 'me-central-1': 'MEC1',
204
+ // Africa Regions
205
+ 'af-south-1': 'AFS1',
206
+ // Israel Regions
207
+ 'il-central-1': 'ILC1',
208
+ // GovCloud Regions
209
+ 'us-gov-west-1': 'UGW1',
210
+ 'us-gov-east-1': 'UGE1',
211
+ };
212
+ return prefixMap[region] || '';
213
+ }
157
214
  }
158
215
  exports.APIGatewayCalculator = APIGatewayCalculator;
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVBJR2F0ZXdheUNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJpY2luZy9jYWxjdWxhdG9ycy9BUElHYXRld2F5Q2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxrREFBa0Q7QUFFbEQsTUFBYSxvQkFBb0I7SUFDL0IsUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDBCQUEwQjtZQUMzQyxZQUFZLEtBQUssd0JBQXdCLENBQUM7SUFDbkQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUF1QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbEYsSUFBSSxZQUFZLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQ2hDLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyx3QkFBd0I7WUFFM0QsTUFBTSxjQUFjLEdBQUcsTUFB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VCxRQUFRLEVBQUUsS0FBSztvQkFDZixVQUFVLEVBQUUsU0FBUztvQkFDckIsV0FBVyxFQUFFLENBQUMsMERBQTBELENBQUM7aUJBQzFFLENBQUM7WUFDSixDQUFDO1lBRUQsTUFBTSxXQUFXLEdBQUcsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLEdBQUcscUJBQXFCLENBQUM7WUFDMUUsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLEdBQUcsdUJBQXVCLENBQUM7WUFDMUUsTUFBTSxXQUFXLEdBQUcsV0FBVyxHQUFHLGNBQWMsQ0FBQztZQUVqRCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixRQUFRLEVBQUUsS0FBSztnQkFDZixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsV0FBVyxFQUFFO29CQUNYLFdBQVcsZUFBZSxDQUFDLGNBQWMsRUFBRSwrQkFBK0I7b0JBQzFFLFdBQVcsd0JBQXdCLENBQUMsY0FBYyxFQUFFLCtCQUErQjtvQkFDbkYsb0JBQW9CO29CQUNwQixzQ0FBc0M7aUJBQ3ZDO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTztnQkFDTCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxRQUFRLEVBQUUsS0FBSztnQkFDZixVQUFVLEVBQUUsU0FBUztnQkFDckIsV0FBVyxFQUFFLENBQUMsNEJBQTRCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2FBQ3BHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUVGO0FBbkxELG9EQW1MQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlV2l0aElkIH0gZnJvbSAnLi4vLi4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yLCBNb250aGx5Q29zdCwgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVJlZ2lvbiB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBBUElHYXRld2F5Q2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknIHx8XG4gICAgICAgICAgIHJlc291cmNlVHlwZSA9PT0gJ0FXUzo6QXBpR2F0ZXdheVYyOjpBcGknO1xuICB9XG5cbiAgYXN5bmMgY2FsY3VsYXRlQ29zdChcbiAgICByZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIGNvbnN0IGlzVjIgPSByZXNvdXJjZS50eXBlID09PSAnQVdTOjpBcGlHYXRld2F5VjI6OkFwaSc7XG4gICAgY29uc3QgcHJvdG9jb2xUeXBlID0gaXNWMiA/IChyZXNvdXJjZS5wcm9wZXJ0aWVzLlByb3RvY29sVHlwZSBhcyBzdHJpbmcpIDogJ1JFU1QnO1xuXG4gICAgaWYgKHByb3RvY29sVHlwZSA9PT0gJ1dFQlNPQ0tFVCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZVdlYlNvY2tldENvc3QocmVnaW9uLCBwcmljaW5nQ2xpZW50KTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sVHlwZSA9PT0gJ0hUVFAnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVIdHRwQXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVSZXN0QXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlUmVzdEFwaUNvc3QoXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3N1bWVkUmVxdWVzdHMgPSAxXzAwMF8wMDA7IC8vIDFNIHJlcXVlc3RzIHBlciBtb250aFxuXG4gICAgICBjb25zdCBjb3N0UGVyTWlsbGlvbiA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ0FQSSBDYWxscycgfSxcbiAgICAgICAgICB7IGZpZWxkOiAnZ3JvdXBEZXNjcmlwdGlvbicsIHZhbHVlOiAnQXBpR2F0ZXdheVJlcXVlc3QnIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGNvc3RQZXJNaWxsaW9uID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFsnUHJpY2luZyBkYXRhIG5vdCBhdmFpbGFibGUgZm9yIEFQSSBHYXRld2F5IFJFU1QgQVBJJ10sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gKGFzc3VtZWRSZXF1ZXN0cyAvIDFfMDAwXzAwMCkgKiBjb3N0UGVyTWlsbGlvbjtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRSZXF1ZXN0cy50b0xvY2FsZVN0cmluZygpfSBSRVNUIEFQSSByZXF1ZXN0cyBwZXIgbW9udGhgLFxuICAgICAgICAgICdSRVNUIEFQSSB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyLCBjYWNoaW5nLCBvciBvdGhlciBmZWF0dXJlcycsXG4gICAgICAgICAgJ0ZpcnN0IDMzM00gcmVxdWVzdHMgbWF5IGhhdmUgdGllcmVkIHByaWNpbmcgKG5vdCBjYWxjdWxhdGVkKScsXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BGYWlsZWQgdG8gZmV0Y2ggcHJpY2luZzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlSHR0cEFwaUNvc3QoXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3N1bWVkUmVxdWVzdHMgPSAxXzAwMF8wMDA7IC8vIDFNIHJlcXVlc3RzIHBlciBtb250aFxuXG4gICAgICBjb25zdCBjb3N0UGVyTWlsbGlvbiA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ0FQSSBDYWxscycgfSxcbiAgICAgICAgICB7IGZpZWxkOiAnZ3JvdXBEZXNjcmlwdGlvbicsIHZhbHVlOiAnQXBpR2F0ZXdheUh0dHBSZXF1ZXN0JyB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChjb3N0UGVyTWlsbGlvbiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICAgIGFzc3VtcHRpb25zOiBbJ1ByaWNpbmcgZGF0YSBub3QgYXZhaWxhYmxlIGZvciBBUEkgR2F0ZXdheSBIVFRQIEFQSSddLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtb250aGx5Q29zdCA9IChhc3N1bWVkUmVxdWVzdHMgLyAxXzAwMF8wMDApICogY29zdFBlck1pbGxpb247XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogbW9udGhseUNvc3QsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ21lZGl1bScsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgYEFzc3VtZXMgJHthc3N1bWVkUmVxdWVzdHMudG9Mb2NhbGVTdHJpbmcoKX0gSFRUUCBBUEkgcmVxdWVzdHMgcGVyIG1vbnRoYCxcbiAgICAgICAgICAnSFRUUCBBUEkgdHlwZScsXG4gICAgICAgICAgJ0RvZXMgbm90IGluY2x1ZGUgZGF0YSB0cmFuc2ZlciBjb3N0cycsXG4gICAgICAgICAgJ0ZpcnN0IDMwME0gcmVxdWVzdHMgbWF5IGhhdmUgdGllcmVkIHByaWNpbmcgKG5vdCBjYWxjdWxhdGVkKScsXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BGYWlsZWQgdG8gZmV0Y2ggcHJpY2luZzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlV2ViU29ja2V0Q29zdChcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50LFxuICApOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFzc3VtZWRNZXNzYWdlcyA9IDFfMDAwXzAwMDsgLy8gMU0gbWVzc2FnZXMgcGVyIG1vbnRoXG4gICAgICBjb25zdCBhc3N1bWVkQ29ubmVjdGlvbk1pbnV0ZXMgPSAxMDBfMDAwOyAvLyAxMDBLIGNvbm5lY3Rpb24gbWludXRlc1xuXG4gICAgICBjb25zdCBtZXNzYWdlQ29zdFBlck1pbGxpb24gPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBbWF6b25BcGlHYXRld2F5JyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdXZWJTb2NrZXQnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ2dyb3VwRGVzY3JpcHRpb24nLCB2YWx1ZTogJ0FwaUdhdGV3YXlNZXNzYWdlJyB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25Db3N0UGVyTWludXRlID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uQXBpR2F0ZXdheScsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnV2ViU29ja2V0JyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICdncm91cERlc2NyaXB0aW9uJywgdmFsdWU6ICdBcGlHYXRld2F5Q29ubmVjdGlvbk1pbnV0ZScgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAobWVzc2FnZUNvc3RQZXJNaWxsaW9uID09PSBudWxsIHx8IGNvbm5lY3Rpb25Db3N0UGVyTWludXRlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFsnUHJpY2luZyBkYXRhIG5vdCBhdmFpbGFibGUgZm9yIEFQSSBHYXRld2F5IFdlYlNvY2tldCBBUEknXSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZUNvc3QgPSAoYXNzdW1lZE1lc3NhZ2VzIC8gMV8wMDBfMDAwKSAqIG1lc3NhZ2VDb3N0UGVyTWlsbGlvbjtcbiAgICAgIGNvbnN0IGNvbm5lY3Rpb25Db3N0ID0gYXNzdW1lZENvbm5lY3Rpb25NaW51dGVzICogY29ubmVjdGlvbkNvc3RQZXJNaW51dGU7XG4gICAgICBjb25zdCBtb250aGx5Q29zdCA9IG1lc3NhZ2VDb3N0ICsgY29ubmVjdGlvbkNvc3Q7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogbW9udGhseUNvc3QsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ21lZGl1bScsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbXG4gICAgICAgICAgYEFzc3VtZXMgJHthc3N1bWVkTWVzc2FnZXMudG9Mb2NhbGVTdHJpbmcoKX0gV2ViU29ja2V0IG1lc3NhZ2VzIHBlciBtb250aGAsXG4gICAgICAgICAgYEFzc3VtZXMgJHthc3N1bWVkQ29ubmVjdGlvbk1pbnV0ZXMudG9Mb2NhbGVTdHJpbmcoKX0gY29ubmVjdGlvbiBtaW51dGVzIHBlciBtb250aGAsXG4gICAgICAgICAgJ1dlYlNvY2tldCBBUEkgdHlwZScsXG4gICAgICAgICAgJ0RvZXMgbm90IGluY2x1ZGUgZGF0YSB0cmFuc2ZlciBjb3N0cycsXG4gICAgICAgIF0sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgY29uZmlkZW5jZTogJ3Vua25vd24nLFxuICAgICAgICBhc3N1bXB0aW9uczogW2BGYWlsZWQgdG8gZmV0Y2ggcHJpY2luZzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YF0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQVBJR2F0ZXdheUNhbGN1bGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJpY2luZy9jYWxjdWxhdG9ycy9BUElHYXRld2F5Q2FsY3VsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxrREFBa0Q7QUFFbEQsTUFBYSxvQkFBb0I7SUFDL0IsUUFBUSxDQUFDLFlBQW9CO1FBQzNCLE9BQU8sWUFBWSxLQUFLLDBCQUEwQjtZQUMzQyxZQUFZLEtBQUssd0JBQXdCLENBQUM7SUFDbkQsQ0FBQztJQUVELEtBQUssQ0FBQyxhQUFhLENBQ2pCLFFBQXdCLEVBQ3hCLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxLQUFLLHdCQUF3QixDQUFDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxZQUF1QixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFFbEYsSUFBSSxZQUFZLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDakMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVELENBQUM7YUFBTSxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDMUQsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQ2hDLE1BQWMsRUFDZCxhQUE0QjtRQUU1QixJQUFJLENBQUM7WUFDSCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsQ0FBQyx3QkFBd0I7WUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFB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TSxFQUFJLFFBQVE7WUFDcEMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFJLFFBQVE7WUFDcEMsV0FBVyxFQUFFLE1BQU0sRUFBUyxZQUFZO1lBQ3hDLGlCQUFpQjtZQUNqQixjQUFjLEVBQUUsTUFBTTtZQUN0QixXQUFXLEVBQUUsTUFBTTtZQUNuQix3QkFBd0I7WUFDeEIsV0FBVyxFQUFFLE1BQU07WUFDbkIsc0JBQXNCO1lBQ3RCLFlBQVksRUFBRSxNQUFNO1lBQ3BCLGNBQWMsRUFBRSxNQUFNO1lBQ3RCLGlCQUFpQjtZQUNqQixZQUFZLEVBQUUsTUFBTTtZQUNwQixpQkFBaUI7WUFDakIsY0FBYyxFQUFFLE1BQU07WUFDdEIsbUJBQW1CO1lBQ25CLGVBQWUsRUFBRSxNQUFNO1lBQ3ZCLGVBQWUsRUFBRSxNQUFNO1NBQ3hCLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBN09ELG9EQTZPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlV2l0aElkIH0gZnJvbSAnLi4vLi4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBSZXNvdXJjZUNvc3RDYWxjdWxhdG9yLCBNb250aGx5Q29zdCwgUHJpY2luZ0NsaWVudCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVJlZ2lvbiB9IGZyb20gJy4uL1JlZ2lvbk1hcHBlcic7XG5cbmV4cG9ydCBjbGFzcyBBUElHYXRld2F5Q2FsY3VsYXRvciBpbXBsZW1lbnRzIFJlc291cmNlQ29zdENhbGN1bGF0b3Ige1xuICBzdXBwb3J0cyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiByZXNvdXJjZVR5cGUgPT09ICdBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGknIHx8XG4gICAgICAgICAgIHJlc291cmNlVHlwZSA9PT0gJ0FXUzo6QXBpR2F0ZXdheVYyOjpBcGknO1xuICB9XG5cbiAgYXN5bmMgY2FsY3VsYXRlQ29zdChcbiAgICByZXNvdXJjZTogUmVzb3VyY2VXaXRoSWQsXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIGNvbnN0IGlzVjIgPSByZXNvdXJjZS50eXBlID09PSAnQVdTOjpBcGlHYXRld2F5VjI6OkFwaSc7XG4gICAgY29uc3QgcHJvdG9jb2xUeXBlID0gaXNWMiA/IChyZXNvdXJjZS5wcm9wZXJ0aWVzLlByb3RvY29sVHlwZSBhcyBzdHJpbmcpIDogJ1JFU1QnO1xuXG4gICAgaWYgKHByb3RvY29sVHlwZSA9PT0gJ1dFQlNPQ0tFVCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZVdlYlNvY2tldENvc3QocmVnaW9uLCBwcmljaW5nQ2xpZW50KTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sVHlwZSA9PT0gJ0hUVFAnKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVIdHRwQXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jYWxjdWxhdGVSZXN0QXBpQ29zdChyZWdpb24sIHByaWNpbmdDbGllbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsY3VsYXRlUmVzdEFwaUNvc3QoXG4gICAgcmVnaW9uOiBzdHJpbmcsXG4gICAgcHJpY2luZ0NsaWVudDogUHJpY2luZ0NsaWVudCxcbiAgKTogUHJvbWlzZTxNb250aGx5Q29zdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBhc3N1bWVkUmVxdWVzdHMgPSAxXzAwMF8wMDA7IC8vIDFNIHJlcXVlc3RzIHBlciBtb250aFxuICAgICAgY29uc3QgcmVnaW9uUHJlZml4ID0gdGhpcy5nZXRSZWdpb25QcmVmaXgocmVnaW9uKTtcbiAgICAgIGNvbnN0IHVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheVJlcXVlc3RgIDogJ0FwaUdhdGV3YXlSZXF1ZXN0JztcblxuICAgICAgY29uc3QgY29zdFBlck1pbGxpb24gPSBhd2FpdCBwcmljaW5nQ2xpZW50LmdldFByaWNlKHtcbiAgICAgICAgc2VydmljZUNvZGU6ICdBbWF6b25BcGlHYXRld2F5JyxcbiAgICAgICAgcmVnaW9uOiBub3JtYWxpemVSZWdpb24ocmVnaW9uKSxcbiAgICAgICAgZmlsdGVyczogW1xuICAgICAgICAgIHsgZmllbGQ6ICdwcm9kdWN0RmFtaWx5JywgdmFsdWU6ICdBUEkgQ2FsbHMnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3VzYWdldHlwZScsIHZhbHVlOiB1c2FnZVR5cGUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoY29zdFBlck1pbGxpb24gPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogWydQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQVBJIEdhdGV3YXkgUkVTVCBBUEknXSxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbW9udGhseUNvc3QgPSAoYXNzdW1lZFJlcXVlc3RzIC8gMV8wMDBfMDAwKSAqIGNvc3RQZXJNaWxsaW9uO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBhbW91bnQ6IG1vbnRobHlDb3N0LFxuICAgICAgICBjdXJyZW5jeTogJ1VTRCcsXG4gICAgICAgIGNvbmZpZGVuY2U6ICdtZWRpdW0nLFxuICAgICAgICBhc3N1bXB0aW9uczogW1xuICAgICAgICAgIGBBc3N1bWVzICR7YXNzdW1lZFJlcXVlc3RzLnRvTG9jYWxlU3RyaW5nKCl9IFJFU1QgQVBJIHJlcXVlc3RzIHBlciBtb250aGAsXG4gICAgICAgICAgJ1JFU1QgQVBJIHR5cGUnLFxuICAgICAgICAgICdEb2VzIG5vdCBpbmNsdWRlIGRhdGEgdHJhbnNmZXIsIGNhY2hpbmcsIG9yIG90aGVyIGZlYXR1cmVzJyxcbiAgICAgICAgICAnRmlyc3QgMzMzTSByZXF1ZXN0cyBtYXkgaGF2ZSB0aWVyZWQgcHJpY2luZyAobm90IGNhbGN1bGF0ZWQpJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWxjdWxhdGVIdHRwQXBpQ29zdChcbiAgICByZWdpb246IHN0cmluZyxcbiAgICBwcmljaW5nQ2xpZW50OiBQcmljaW5nQ2xpZW50LFxuICApOiBQcm9taXNlPE1vbnRobHlDb3N0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFzc3VtZWRSZXF1ZXN0cyA9IDFfMDAwXzAwMDsgLy8gMU0gcmVxdWVzdHMgcGVyIG1vbnRoXG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSB0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgY29uc3QgdXNhZ2VUeXBlID0gcmVnaW9uUHJlZml4ID8gYCR7cmVnaW9uUHJlZml4fS1BcGlHYXRld2F5SHR0cFJlcXVlc3RgIDogJ0FwaUdhdGV3YXlIdHRwUmVxdWVzdCc7XG5cbiAgICAgIGNvbnN0IGNvc3RQZXJNaWxsaW9uID0gYXdhaXQgcHJpY2luZ0NsaWVudC5nZXRQcmljZSh7XG4gICAgICAgIHNlcnZpY2VDb2RlOiAnQW1hem9uQXBpR2F0ZXdheScsXG4gICAgICAgIHJlZ2lvbjogbm9ybWFsaXplUmVnaW9uKHJlZ2lvbiksXG4gICAgICAgIGZpbHRlcnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAncHJvZHVjdEZhbWlseScsIHZhbHVlOiAnQVBJIENhbGxzJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2FnZXR5cGUnLCB2YWx1ZTogdXNhZ2VUeXBlIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgaWYgKGNvc3RQZXJNaWxsaW9uID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYW1vdW50OiAwLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgICAgYXNzdW1wdGlvbnM6IFsnUHJpY2luZyBkYXRhIG5vdCBhdmFpbGFibGUgZm9yIEFQSSBHYXRld2F5IEhUVFAgQVBJJ10sXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gKGFzc3VtZWRSZXF1ZXN0cyAvIDFfMDAwXzAwMCkgKiBjb3N0UGVyTWlsbGlvbjtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRSZXF1ZXN0cy50b0xvY2FsZVN0cmluZygpfSBIVFRQIEFQSSByZXF1ZXN0cyBwZXIgbW9udGhgLFxuICAgICAgICAgICdIVFRQIEFQSSB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyIGNvc3RzJyxcbiAgICAgICAgICAnRmlyc3QgMzAwTSByZXF1ZXN0cyBtYXkgaGF2ZSB0aWVyZWQgcHJpY2luZyAobm90IGNhbGN1bGF0ZWQpJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjYWxjdWxhdGVXZWJTb2NrZXRDb3N0KFxuICAgIHJlZ2lvbjogc3RyaW5nLFxuICAgIHByaWNpbmdDbGllbnQ6IFByaWNpbmdDbGllbnQsXG4gICk6IFByb21pc2U8TW9udGhseUNvc3Q+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXNzdW1lZE1lc3NhZ2VzID0gMV8wMDBfMDAwOyAvLyAxTSBtZXNzYWdlcyBwZXIgbW9udGhcbiAgICAgIGNvbnN0IGFzc3VtZWRDb25uZWN0aW9uTWludXRlcyA9IDEwMF8wMDA7IC8vIDEwMEsgY29ubmVjdGlvbiBtaW51dGVzXG4gICAgICBjb25zdCByZWdpb25QcmVmaXggPSB0aGlzLmdldFJlZ2lvblByZWZpeChyZWdpb24pO1xuICAgICAgY29uc3QgbWVzc2FnZVVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheU1lc3NhZ2VgIDogJ0FwaUdhdGV3YXlNZXNzYWdlJztcbiAgICAgIGNvbnN0IG1pbnV0ZVVzYWdlVHlwZSA9IHJlZ2lvblByZWZpeCA/IGAke3JlZ2lvblByZWZpeH0tQXBpR2F0ZXdheU1pbnV0ZWAgOiAnQXBpR2F0ZXdheU1pbnV0ZSc7XG5cbiAgICAgIGNvbnN0IG1lc3NhZ2VDb3N0UGVyTWlsbGlvbiA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ1dlYlNvY2tldCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IG1lc3NhZ2VVc2FnZVR5cGUgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25uZWN0aW9uQ29zdFBlck1pbnV0ZSA9IGF3YWl0IHByaWNpbmdDbGllbnQuZ2V0UHJpY2Uoe1xuICAgICAgICBzZXJ2aWNlQ29kZTogJ0FtYXpvbkFwaUdhdGV3YXknLFxuICAgICAgICByZWdpb246IG5vcm1hbGl6ZVJlZ2lvbihyZWdpb24pLFxuICAgICAgICBmaWx0ZXJzOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ3Byb2R1Y3RGYW1pbHknLCB2YWx1ZTogJ1dlYlNvY2tldCcgfSxcbiAgICAgICAgICB7IGZpZWxkOiAndXNhZ2V0eXBlJywgdmFsdWU6IG1pbnV0ZVVzYWdlVHlwZSB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGlmIChtZXNzYWdlQ29zdFBlck1pbGxpb24gPT09IG51bGwgfHwgY29ubmVjdGlvbkNvc3RQZXJNaW51dGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhbW91bnQ6IDAsXG4gICAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICAgIGNvbmZpZGVuY2U6ICd1bmtub3duJyxcbiAgICAgICAgICBhc3N1bXB0aW9uczogWydQcmljaW5nIGRhdGEgbm90IGF2YWlsYWJsZSBmb3IgQVBJIEdhdGV3YXkgV2ViU29ja2V0IEFQSSddLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlQ29zdCA9IChhc3N1bWVkTWVzc2FnZXMgLyAxXzAwMF8wMDApICogbWVzc2FnZUNvc3RQZXJNaWxsaW9uO1xuICAgICAgY29uc3QgY29ubmVjdGlvbkNvc3QgPSBhc3N1bWVkQ29ubmVjdGlvbk1pbnV0ZXMgKiBjb25uZWN0aW9uQ29zdFBlck1pbnV0ZTtcbiAgICAgIGNvbnN0IG1vbnRobHlDb3N0ID0gbWVzc2FnZUNvc3QgKyBjb25uZWN0aW9uQ29zdDtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYW1vdW50OiBtb250aGx5Q29zdCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAnbWVkaXVtJyxcbiAgICAgICAgYXNzdW1wdGlvbnM6IFtcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRNZXNzYWdlcy50b0xvY2FsZVN0cmluZygpfSBXZWJTb2NrZXQgbWVzc2FnZXMgcGVyIG1vbnRoYCxcbiAgICAgICAgICBgQXNzdW1lcyAke2Fzc3VtZWRDb25uZWN0aW9uTWludXRlcy50b0xvY2FsZVN0cmluZygpfSBjb25uZWN0aW9uIG1pbnV0ZXMgcGVyIG1vbnRoYCxcbiAgICAgICAgICAnV2ViU29ja2V0IEFQSSB0eXBlJyxcbiAgICAgICAgICAnRG9lcyBub3QgaW5jbHVkZSBkYXRhIHRyYW5zZmVyIGNvc3RzJyxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgY3VycmVuY3k6ICdVU0QnLFxuICAgICAgICBjb25maWRlbmNlOiAndW5rbm93bicsXG4gICAgICAgIGFzc3VtcHRpb25zOiBbYEZhaWxlZCB0byBmZXRjaCBwcmljaW5nOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKX1gXSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgQVdTIHJlZ2lvbiBwcmVmaXggZm9yIEFQSSBHYXRld2F5IHByaWNpbmcgdXNhZ2V0eXBlLlxuICAgKiBBV1MgdXNlcyByZWdpb24gcHJlZml4ZXMgaW4gdXNhZ2V0eXBlIHZhbHVlcyAoZS5nLiwgVVNFMS1BcGlHYXRld2F5UmVxdWVzdCkuXG4gICAqIFJlZmVyZW5jZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsb2JhbC1pbmZyYXN0cnVjdHVyZS9sYXRlc3QvcmVnaW9ucy9hd3MtcmVnaW9uLWJpbGxpbmctY29kZXMuaHRtbFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRSZWdpb25QcmVmaXgocmVnaW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHByZWZpeE1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIC8vIFVTIFJlZ2lvbnNcbiAgICAgICd1cy1lYXN0LTEnOiAnVVNFMScsXG4gICAgICAndXMtZWFzdC0yJzogJ1VTRTInLFxuICAgICAgJ3VzLXdlc3QtMSc6ICdVU1cxJyxcbiAgICAgICd1cy13ZXN0LTInOiAnVVNXMicsXG4gICAgICAvLyBFVSBSZWdpb25zXG4gICAgICAnZXUtd2VzdC0xJzogJ0VVVzEnLFxuICAgICAgJ2V1LXdlc3QtMic6ICdFVVcyJyxcbiAgICAgICdldS13ZXN0LTMnOiAnRVVXMycsXG4gICAgICAnZXUtY2VudHJhbC0xJzogJ0VVQzEnLFxuICAgICAgJ2V1LWNlbnRyYWwtMic6ICdFVUMyJyxcbiAgICAgICdldS1ub3J0aC0xJzogJ0VVTjEnLFxuICAgICAgJ2V1LXNvdXRoLTEnOiAnRVVTMScsXG4gICAgICAnZXUtc291dGgtMic6ICdFVVMyJyxcbiAgICAgIC8vIEFzaWEgUGFjaWZpYyBSZWdpb25zXG4gICAgICAnYXAtc291dGgtMSc6ICdBUFMzJywgICAgICAgLy8gTXVtYmFpXG4gICAgICAnYXAtc291dGgtMic6ICdBUFM1JywgICAgICAgLy8gSHlkZXJhYmFkXG4gICAgICAnYXAtc291dGhlYXN0LTEnOiAnQVBTMScsICAgLy8gU2luZ2Fwb3JlXG4gICAgICAnYXAtc291dGhlYXN0LTInOiAnQVBTMicsICAgLy8gU3lkbmV5XG4gICAgICAnYXAtc291dGhlYXN0LTMnOiAnQVBTNicsICAgLy8gSmFrYXJ0YVxuICAgICAgJ2FwLXNvdXRoZWFzdC00JzogJ0FQUzcnLCAgIC8vIE1lbGJvdXJuZVxuICAgICAgJ2FwLW5vcnRoZWFzdC0xJzogJ0FQTjEnLCAgIC8vIFRva3lvXG4gICAgICAnYXAtbm9ydGhlYXN0LTInOiAnQVBOMicsICAgLy8gU2VvdWxcbiAgICAgICdhcC1ub3J0aGVhc3QtMyc6ICdBUE4zJywgICAvLyBPc2FrYVxuICAgICAgJ2FwLWVhc3QtMSc6ICdBUEUxJywgICAgICAgIC8vIEhvbmcgS29uZ1xuICAgICAgLy8gQ2FuYWRhIFJlZ2lvbnNcbiAgICAgICdjYS1jZW50cmFsLTEnOiAnQ0FOMScsXG4gICAgICAnY2Etd2VzdC0xJzogJ0NBVzEnLFxuICAgICAgLy8gU291dGggQW1lcmljYSBSZWdpb25zXG4gICAgICAnc2EtZWFzdC0xJzogJ1NBRTEnLFxuICAgICAgLy8gTWlkZGxlIEVhc3QgUmVnaW9uc1xuICAgICAgJ21lLXNvdXRoLTEnOiAnTUVTMScsXG4gICAgICAnbWUtY2VudHJhbC0xJzogJ01FQzEnLFxuICAgICAgLy8gQWZyaWNhIFJlZ2lvbnNcbiAgICAgICdhZi1zb3V0aC0xJzogJ0FGUzEnLFxuICAgICAgLy8gSXNyYWVsIFJlZ2lvbnNcbiAgICAgICdpbC1jZW50cmFsLTEnOiAnSUxDMScsXG4gICAgICAvLyBHb3ZDbG91ZCBSZWdpb25zXG4gICAgICAndXMtZ292LXdlc3QtMSc6ICdVR1cxJyxcbiAgICAgICd1cy1nb3YtZWFzdC0xJzogJ1VHRTEnLFxuICAgIH07XG5cbiAgICByZXR1cm4gcHJlZml4TWFwW3JlZ2lvbl0gfHwgJyc7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- v0.1.22
1
+ v0.1.23
package/package.json CHANGED
@@ -82,7 +82,7 @@
82
82
  "publishConfig": {
83
83
  "access": "public"
84
84
  },
85
- "version": "0.1.22",
85
+ "version": "0.1.23",
86
86
  "bugs": {
87
87
  "url": "https://github.com/buildinginthecloud/cdk-cost-analyzer/issues"
88
88
  },