cdk-ec2spot 0.1.70 → 2.0.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/API.md CHANGED
@@ -14,7 +14,7 @@ new Provider(scope: Construct, id: string)
14
14
 
15
15
  ##### `scope`<sup>Required</sup> <a name="cdk-ec2spot.Provider.parameter.scope"></a>
16
16
 
17
- - *Type:* [`@aws-cdk/core.Construct`](#@aws-cdk/core.Construct)
17
+ - *Type:* [`constructs.Construct`](#constructs.Construct)
18
18
 
19
19
  ---
20
20
 
@@ -130,7 +130,7 @@ public getOrCreateVpc(scope: Construct)
130
130
 
131
131
  ###### `scope`<sup>Required</sup> <a name="cdk-ec2spot.Provider.parameter.scope"></a>
132
132
 
133
- - *Type:* [`@aws-cdk/core.Construct`](#@aws-cdk/core.Construct)
133
+ - *Type:* [`constructs.Construct`](#constructs.Construct)
134
134
 
135
135
  ---
136
136
 
@@ -166,7 +166,7 @@ const autoScalingGroupOptions: AutoScalingGroupOptions = { ... }
166
166
  public readonly instanceProfile: CfnInstanceProfile;
167
167
  ```
168
168
 
169
- - *Type:* [`@aws-cdk/aws-iam.CfnInstanceProfile`](#@aws-cdk/aws-iam.CfnInstanceProfile)
169
+ - *Type:* [`aws-cdk-lib.aws_iam.CfnInstanceProfile`](#aws-cdk-lib.aws_iam.CfnInstanceProfile)
170
170
 
171
171
  ---
172
172
 
@@ -176,7 +176,7 @@ public readonly instanceProfile: CfnInstanceProfile;
176
176
  public readonly instanceType: InstanceType;
177
177
  ```
178
178
 
179
- - *Type:* [`@aws-cdk/aws-ec2.InstanceType`](#@aws-cdk/aws-ec2.InstanceType)
179
+ - *Type:* [`aws-cdk-lib.aws_ec2.InstanceType`](#aws-cdk-lib.aws_ec2.InstanceType)
180
180
 
181
181
  ---
182
182
 
@@ -186,7 +186,7 @@ public readonly instanceType: InstanceType;
186
186
  public readonly machineImage: IMachineImage;
187
187
  ```
188
188
 
189
- - *Type:* [`@aws-cdk/aws-ec2.IMachineImage`](#@aws-cdk/aws-ec2.IMachineImage)
189
+ - *Type:* [`aws-cdk-lib.aws_ec2.IMachineImage`](#aws-cdk-lib.aws_ec2.IMachineImage)
190
190
 
191
191
  ---
192
192
 
@@ -206,7 +206,7 @@ public readonly spotOptions: SpotOptions;
206
206
  public readonly userData: UserData;
207
207
  ```
208
208
 
209
- - *Type:* [`@aws-cdk/aws-ec2.UserData`](#@aws-cdk/aws-ec2.UserData)
209
+ - *Type:* [`aws-cdk-lib.aws_ec2.UserData`](#aws-cdk-lib.aws_ec2.UserData)
210
210
 
211
211
  ---
212
212
 
@@ -216,7 +216,7 @@ public readonly userData: UserData;
216
216
  public readonly vpc: IVpc;
217
217
  ```
218
218
 
219
- - *Type:* [`@aws-cdk/aws-ec2.IVpc`](#@aws-cdk/aws-ec2.IVpc)
219
+ - *Type:* [`aws-cdk-lib.aws_ec2.IVpc`](#aws-cdk-lib.aws_ec2.IVpc)
220
220
 
221
221
  The vpc for the AutoScalingGroup.
222
222
 
@@ -251,7 +251,7 @@ const launchTemplateOptions: LaunchTemplateOptions = { ... }
251
251
  public readonly instanceProfile: CfnInstanceProfile;
252
252
  ```
253
253
 
254
- - *Type:* [`@aws-cdk/aws-iam.CfnInstanceProfile`](#@aws-cdk/aws-iam.CfnInstanceProfile)
254
+ - *Type:* [`aws-cdk-lib.aws_iam.CfnInstanceProfile`](#aws-cdk-lib.aws_iam.CfnInstanceProfile)
255
255
 
256
256
  ---
257
257
 
@@ -261,7 +261,7 @@ public readonly instanceProfile: CfnInstanceProfile;
261
261
  public readonly instanceType: InstanceType;
262
262
  ```
263
263
 
264
- - *Type:* [`@aws-cdk/aws-ec2.InstanceType`](#@aws-cdk/aws-ec2.InstanceType)
264
+ - *Type:* [`aws-cdk-lib.aws_ec2.InstanceType`](#aws-cdk-lib.aws_ec2.InstanceType)
265
265
 
266
266
  ---
267
267
 
@@ -271,7 +271,7 @@ public readonly instanceType: InstanceType;
271
271
  public readonly machineImage: IMachineImage;
272
272
  ```
273
273
 
274
- - *Type:* [`@aws-cdk/aws-ec2.IMachineImage`](#@aws-cdk/aws-ec2.IMachineImage)
274
+ - *Type:* [`aws-cdk-lib.aws_ec2.IMachineImage`](#aws-cdk-lib.aws_ec2.IMachineImage)
275
275
 
276
276
  ---
277
277
 
@@ -291,7 +291,7 @@ public readonly spotOptions: SpotOptions;
291
291
  public readonly userData: UserData;
292
292
  ```
293
293
 
294
- - *Type:* [`@aws-cdk/aws-ec2.UserData`](#@aws-cdk/aws-ec2.UserData)
294
+ - *Type:* [`aws-cdk-lib.aws_ec2.UserData`](#aws-cdk-lib.aws_ec2.UserData)
295
295
 
296
296
  ---
297
297
 
@@ -311,7 +311,7 @@ const spotFleetOptions: SpotFleetOptions = { ... }
311
311
  public readonly instanceProfile: CfnInstanceProfile;
312
312
  ```
313
313
 
314
- - *Type:* [`@aws-cdk/aws-iam.CfnInstanceProfile`](#@aws-cdk/aws-iam.CfnInstanceProfile)
314
+ - *Type:* [`aws-cdk-lib.aws_iam.CfnInstanceProfile`](#aws-cdk-lib.aws_iam.CfnInstanceProfile)
315
315
 
316
316
  ---
317
317
 
@@ -321,7 +321,7 @@ public readonly instanceProfile: CfnInstanceProfile;
321
321
  public readonly instanceType: InstanceType;
322
322
  ```
323
323
 
324
- - *Type:* [`@aws-cdk/aws-ec2.InstanceType`](#@aws-cdk/aws-ec2.InstanceType)
324
+ - *Type:* [`aws-cdk-lib.aws_ec2.InstanceType`](#aws-cdk-lib.aws_ec2.InstanceType)
325
325
 
326
326
  ---
327
327
 
@@ -331,7 +331,7 @@ public readonly instanceType: InstanceType;
331
331
  public readonly machineImage: IMachineImage;
332
332
  ```
333
333
 
334
- - *Type:* [`@aws-cdk/aws-ec2.IMachineImage`](#@aws-cdk/aws-ec2.IMachineImage)
334
+ - *Type:* [`aws-cdk-lib.aws_ec2.IMachineImage`](#aws-cdk-lib.aws_ec2.IMachineImage)
335
335
 
336
336
  ---
337
337
 
@@ -351,7 +351,7 @@ public readonly spotOptions: SpotOptions;
351
351
  public readonly userData: UserData;
352
352
  ```
353
353
 
354
- - *Type:* [`@aws-cdk/aws-ec2.UserData`](#@aws-cdk/aws-ec2.UserData)
354
+ - *Type:* [`aws-cdk-lib.aws_ec2.UserData`](#aws-cdk-lib.aws_ec2.UserData)
355
355
 
356
356
  ---
357
357
 
@@ -361,7 +361,7 @@ public readonly userData: UserData;
361
361
  public readonly vpc: IVpc;
362
362
  ```
363
363
 
364
- - *Type:* [`@aws-cdk/aws-ec2.IVpc`](#@aws-cdk/aws-ec2.IVpc)
364
+ - *Type:* [`aws-cdk-lib.aws_ec2.IVpc`](#aws-cdk-lib.aws_ec2.IVpc)
365
365
 
366
366
  The vpc for the AutoScalingGroup.
367
367
 
@@ -425,7 +425,7 @@ The timestamp of the beginning of the valid duration.
425
425
  public readonly vpcSubnet: SubnetSelection;
426
426
  ```
427
427
 
428
- - *Type:* [`@aws-cdk/aws-ec2.SubnetSelection`](#@aws-cdk/aws-ec2.SubnetSelection)
428
+ - *Type:* [`aws-cdk-lib.aws_ec2.SubnetSelection`](#aws-cdk-lib.aws_ec2.SubnetSelection)
429
429
  - *Default:* ec2.SubnetType.PRIVATE
430
430
 
431
431
  VPC subnet selection.
package/README.md CHANGED
@@ -6,6 +6,21 @@
6
6
 
7
7
  CDK construct library that allows you to create EC2 Spot instances with `AWS AutoScaling Group`, `Spot Fleet` or just single `Spot Instance`.
8
8
 
9
+
10
+ # Install
11
+
12
+ Use the npm dist tag to opt in CDKv1 or CDKv2:
13
+
14
+ ```sh
15
+ // for CDKv2
16
+ npm install cdk-ec2spot
17
+ or
18
+ npm install cdk-ec2spot@latest
19
+
20
+ // for CDKv1
21
+ npm install cdk-ec2spot@cdkv1
22
+ ```
23
+
9
24
  # Sample
10
25
 
11
26
  ```ts
package/lib/index.d.ts CHANGED
@@ -1,8 +1,6 @@
1
- import * as autoscaling from '@aws-cdk/aws-autoscaling';
2
- import * as ec2 from '@aws-cdk/aws-ec2';
3
- import * as iam from '@aws-cdk/aws-iam';
4
- import * as cdk from '@aws-cdk/core';
1
+ import { aws_autoscaling as autoscaling, aws_ec2 as ec2, aws_iam as iam } from 'aws-cdk-lib';
5
2
  import * as spotone from 'cdk-spot-one';
3
+ import { Construct } from 'constructs';
6
4
  /**
7
5
  * @stability stable
8
6
  */
@@ -166,12 +164,12 @@ export interface SpotFleetOptions extends AutoScalingGroupOptions {
166
164
  /**
167
165
  * @stability stable
168
166
  */
169
- export declare class Provider extends cdk.Construct {
167
+ export declare class Provider extends Construct {
170
168
  private readonly defaultInstanceType;
171
169
  /**
172
170
  * @stability stable
173
171
  */
174
- constructor(scope: cdk.Construct, id: string);
172
+ constructor(scope: Construct, id: string);
175
173
  /**
176
174
  * @stability stable
177
175
  */
@@ -179,7 +177,7 @@ export declare class Provider extends cdk.Construct {
179
177
  /**
180
178
  * @stability stable
181
179
  */
182
- getOrCreateVpc(scope: cdk.Construct): ec2.IVpc;
180
+ getOrCreateVpc(scope: Construct): ec2.IVpc;
183
181
  /**
184
182
  * @stability stable
185
183
  */
package/lib/index.js CHANGED
@@ -3,11 +3,10 @@ var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.Provider = exports.BlockDurationMinutes = exports.InstanceInterruptionBehavior = exports.SpotInstanceType = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
- const autoscaling = require("@aws-cdk/aws-autoscaling");
7
- const ec2 = require("@aws-cdk/aws-ec2");
8
- const iam = require("@aws-cdk/aws-iam");
9
- const cdk = require("@aws-cdk/core");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const cdk = require("aws-cdk-lib");
10
8
  const spotone = require("cdk-spot-one");
9
+ const constructs_1 = require("constructs");
11
10
  /**
12
11
  * @stability stable
13
12
  */
@@ -40,20 +39,20 @@ var BlockDurationMinutes;
40
39
  /**
41
40
  * @stability stable
42
41
  */
43
- class Provider extends cdk.Construct {
42
+ class Provider extends constructs_1.Construct {
44
43
  /**
45
44
  * @stability stable
46
45
  */
47
46
  constructor(scope, id) {
48
47
  super(scope, id);
49
- this.defaultInstanceType = new ec2.InstanceType('t3.large');
48
+ this.defaultInstanceType = new aws_cdk_lib_1.aws_ec2.InstanceType('t3.large');
50
49
  }
51
50
  /**
52
51
  * @stability stable
53
52
  */
54
53
  get amazonLinuxAmiImageId() {
55
- return new ec2.AmazonLinuxImage({
56
- generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
54
+ return new aws_cdk_lib_1.aws_ec2.AmazonLinuxImage({
55
+ generation: aws_cdk_lib_1.aws_ec2.AmazonLinuxGeneration.AMAZON_LINUX_2,
57
56
  }).getImage(this).imageId;
58
57
  }
59
58
  /**
@@ -62,19 +61,19 @@ class Provider extends cdk.Construct {
62
61
  getOrCreateVpc(scope) {
63
62
  // use an existing vpc or create a new one
64
63
  return scope.node.tryGetContext('use_default_vpc') === '1' ?
65
- ec2.Vpc.fromLookup(scope, 'Vpc', { isDefault: true }) :
64
+ aws_cdk_lib_1.aws_ec2.Vpc.fromLookup(scope, 'Vpc', { isDefault: true }) :
66
65
  scope.node.tryGetContext('use_vpc_id') ?
67
- ec2.Vpc.fromLookup(scope, 'Vpc', { vpcId: scope.node.tryGetContext('use_vpc_id') }) :
68
- new ec2.Vpc(scope, 'Vpc', { maxAzs: 3, natGateways: 1 });
66
+ aws_cdk_lib_1.aws_ec2.Vpc.fromLookup(scope, 'Vpc', { vpcId: scope.node.tryGetContext('use_vpc_id') }) :
67
+ new aws_cdk_lib_1.aws_ec2.Vpc(scope, 'Vpc', { maxAzs: 3, natGateways: 1 });
69
68
  }
70
69
  /**
71
70
  * @stability stable
72
71
  */
73
72
  createInstanceProfile(id) {
74
- const role = new iam.Role(this, `Role${id}`, {
75
- assumedBy: new iam.ServicePrincipal('ec2.amazonaws.com'),
73
+ const role = new aws_cdk_lib_1.aws_iam.Role(this, `Role${id}`, {
74
+ assumedBy: new aws_cdk_lib_1.aws_iam.ServicePrincipal('ec2.amazonaws.com'),
76
75
  });
77
- return new iam.CfnInstanceProfile(this, `InstanceProfile${id}`, {
76
+ return new aws_cdk_lib_1.aws_iam.CfnInstanceProfile(this, `InstanceProfile${id}`, {
78
77
  roles: [role.roleName],
79
78
  });
80
79
  }
@@ -89,7 +88,7 @@ class Provider extends cdk.Construct {
89
88
  var _b, _c, _d, _e, _f, _g, _h, _j, _k;
90
89
  const instanceProfileArn = options.instanceProfile ? options.instanceProfile.attrArn
91
90
  : this.createInstanceProfile('DefaultInstanceProfile').attrArn;
92
- return new ec2.CfnLaunchTemplate(this, id, {
91
+ return new aws_cdk_lib_1.aws_ec2.CfnLaunchTemplate(this, id, {
93
92
  launchTemplateData: {
94
93
  imageId: ((_b = options.machineImage) === null || _b === void 0 ? void 0 : _b.getImage(this).imageId) || this.amazonLinuxAmiImageId,
95
94
  instanceType: ((_c = options.instanceType) === null || _c === void 0 ? void 0 : _c.toString()) || this.defaultInstanceType.toString(),
@@ -136,19 +135,19 @@ class Provider extends cdk.Construct {
136
135
  spotOptions: options.spotOptions,
137
136
  userData: options.userData,
138
137
  });
139
- const spotFleetRole = new iam.Role(this, 'FleetRole', {
140
- assumedBy: new iam.ServicePrincipal('spotfleet.amazonaws.com'),
138
+ const spotFleetRole = new aws_cdk_lib_1.aws_iam.Role(this, 'FleetRole', {
139
+ assumedBy: new aws_cdk_lib_1.aws_iam.ServicePrincipal('spotfleet.amazonaws.com'),
141
140
  managedPolicies: [
142
- iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonEC2SpotFleetTaggingRole'),
141
+ aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonEC2SpotFleetTaggingRole'),
143
142
  ],
144
143
  });
145
144
  const vpcSubnetSelection = (_b = options.vpcSubnet) !== null && _b !== void 0 ? _b : {
146
- subnetType: ec2.SubnetType.PRIVATE,
145
+ subnetType: aws_cdk_lib_1.aws_ec2.SubnetType.PRIVATE,
147
146
  };
148
147
  const subnetConfig = options.vpc.selectSubnets(vpcSubnetSelection).subnets.map(s => ({
149
148
  subnetId: s.subnetId,
150
149
  }));
151
- const fleet = new ec2.CfnSpotFleet(this, `${id}Resource`, {
150
+ const fleet = new aws_cdk_lib_1.aws_ec2.CfnSpotFleet(this, `${id}Resource`, {
152
151
  spotFleetRequestConfigData: {
153
152
  launchTemplateConfigs: [
154
153
  {
@@ -177,15 +176,15 @@ class Provider extends cdk.Construct {
177
176
  */
178
177
  createAutoScalingGroup(id, options) {
179
178
  var _b;
180
- const asg = new autoscaling.AutoScalingGroup(this, id, {
179
+ const asg = new aws_cdk_lib_1.aws_autoscaling.AutoScalingGroup(this, id, {
181
180
  instanceType: this.defaultInstanceType,
182
- machineImage: new ec2.AmazonLinuxImage(),
181
+ machineImage: new aws_cdk_lib_1.aws_ec2.AmazonLinuxImage(),
183
182
  vpc: options.vpc,
184
183
  minCapacity: (_b = options.defaultCapacitySize) !== null && _b !== void 0 ? _b : 1,
185
- updatePolicy: autoscaling.UpdatePolicy.replacingUpdate(),
184
+ updatePolicy: aws_cdk_lib_1.aws_autoscaling.UpdatePolicy.replacingUpdate(),
186
185
  });
187
186
  const cfnInstanceProfile = asg.node.tryFindChild('InstanceProfile');
188
- asg.role.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore'));
187
+ asg.role.addManagedPolicy(aws_cdk_lib_1.aws_iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMManagedInstanceCore'));
189
188
  const lt = this.createLaunchTemplate(`LaunchTemplate${id}`, {
190
189
  instanceProfile: cfnInstanceProfile,
191
190
  instanceType: options.instanceType,
@@ -211,5 +210,5 @@ class Provider extends cdk.Construct {
211
210
  }
212
211
  exports.Provider = Provider;
213
212
  _a = JSII_RTTI_SYMBOL_1;
214
- Provider[_a] = { fqn: "cdk-ec2spot.Provider", version: "0.1.70" };
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx3REFBd0Q7QUFDeEQsd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUN4QyxxQ0FBcUM7QUFDckMsd0NBQXdDOzs7O0FBRXhDLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQix5Q0FBcUIsQ0FBQTtJQUNyQiw2Q0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBSFcsZ0JBQWdCLEdBQWhCLHdCQUFnQixLQUFoQix3QkFBZ0IsUUFHM0I7Ozs7QUFFRCxJQUFZLDRCQUlYO0FBSkQsV0FBWSw0QkFBNEI7SUFDdEMsdURBQXVCLENBQUE7SUFDdkIsNkNBQWEsQ0FBQTtJQUNiLHVEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFKVyw0QkFBNEIsR0FBNUIsb0NBQTRCLEtBQTVCLG9DQUE0QixRQUl2Qzs7OztBQUVELElBQVksb0JBT1g7QUFQRCxXQUFZLG9CQUFvQjtJQUM5Qix3RUFBYSxDQUFBO0lBQ2IsMkVBQWUsQ0FBQTtJQUNmLCtFQUFpQixDQUFBO0lBQ2pCLDZFQUFnQixDQUFBO0lBQ2hCLDZFQUFnQixDQUFBO0lBQ2hCLDJFQUFlLENBQUE7QUFDakIsQ0FBQyxFQVBXLG9CQUFvQixHQUFwQiw0QkFBb0IsS0FBcEIsNEJBQW9CLFFBTy9COzs7O0FBb0NELE1BQWEsUUFBUyxTQUFRLEdBQUcsQ0FBQyxTQUFTOzs7O0lBRXpDLFlBQVksS0FBb0IsRUFBRSxFQUFVO1FBQzFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFGRix3QkFBbUIsR0FBcUIsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRzFGLENBQUM7Ozs7SUFDRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQzlCLFVBQVUsRUFBRSxHQUFHLENBQUMscUJB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QyxZQUFZLENBQUMsaUJBQWlCLENBQTJCLENBQUM7UUFDOUYsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztRQUN0RyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFO1lBQzFELGVBQWUsRUFBRSxrQkFBa0I7WUFDbkMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQ2xDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1NBQzNCLENBQUMsQ0FBQztRQUNILG9CQUFvQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQW9DLENBQUM7UUFDL0UsTUFBTSxDQUFDLDJCQUEyQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFO1lBQzNDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxHQUFHO1lBQ3hCLE9BQU8sRUFBRSxFQUFFLENBQUMsdUJBQXVCO1NBQ3BDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7OztJQUNNLGNBQWMsQ0FBQyxFQUFVLEVBQUUsTUFBaUM7UUFDakUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDOztBQXZJSCw0QkF3SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhdXRvc2NhbGluZyBmcm9tICdAYXdzLWNkay9hd3MtYXV0b3NjYWxpbmcnO1xuaW1wb3J0ICogYXMgZWMyIGZyb20gJ0Bhd3MtY2RrL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ0Bhd3MtY2RrL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ0Bhd3MtY2RrL2NvcmUnO1xuaW1wb3J0ICogYXMgc3BvdG9uZSBmcm9tICdjZGstc3BvdC1vbmUnO1xuXG5leHBvcnQgZW51bSBTcG90SW5zdGFuY2VUeXBlIHtcbiAgT05FX1RJTUUgPSAnb25lLXRpbWUnLFxuICBQRVJTSVNURU5UID0gJ3BlcnNpc3RlbnQnLFxufVxuXG5leHBvcnQgZW51bSBJbnN0YW5jZUludGVycnVwdGlvbkJlaGF2aW9yIHtcbiAgSElCRVJOQVRFID0gJ2hpYmVybmF0ZScsXG4gIFNUT1AgPSAnc3RvcCcsXG4gIFRFUk1JTkFURSA9ICd0ZXJtaW5hdGUnLFxufVxuXG5leHBvcnQgZW51bSBCbG9ja0R1cmF0aW9uTWludXRlcyB7XG4gIE9ORV9IT1VSID0gNjAsXG4gIFRXT19IT1VSUyA9IDEyMCxcbiAgVEhSRUVfSE9VUlMgPSAxODAsXG4gIEZPVVJfSE9VUlMgPSAyNDAsXG4gIEZJVkVfSE9VUlMgPSAzMDAsXG4gIFNJWF9IT1VSUyA9IDM2MCxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcG90T3B0aW9ucyB7XG4gIHJlYWRvbmx5IHNwb3RJbnN0YW5jZVR5cGU/OiBTcG90SW5zdGFuY2VUeXBlO1xuICByZWFkb25seSB2YWxpZFVudGlsPzogc3RyaW5nO1xuICByZWFkb25seSBtYXhQcmljZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFuY2VJbnRlcnJ1cHRpb25CZWhhdmlvcj86IEluc3RhbmNlSW50ZXJydXB0aW9uQmVoYXZpb3I7XG4gIHJlYWRvbmx5IGJsb2NrRHVyYXRpb25NaW51dGVzPzogQmxvY2tEdXJhdGlvbk1pbnV0ZXM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVPcHRpb25zIHtcbiAgcmVhZG9ubHkgbWFjaGluZUltYWdlPzogZWMyLklNYWNoaW5lSW1hZ2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IGVjMi5JbnN0YW5jZVR5cGU7XG4gIHJlYWRvbmx5IHNwb3RPcHRpb25zPzogU3BvdE9wdGlvbnM7XG4gIHJlYWRvbmx5IHVzZXJEYXRhPzogZWMyLlVzZXJEYXRhO1xuICByZWFkb25seSBpbnN0YW5jZVByb2ZpbGU/OiBpYW0uQ2ZuSW5zdGFuY2VQcm9maWxlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9TY2FsaW5nR3JvdXBPcHRpb25zIGV4dGVuZHMgTGF1bmNoVGVtcGxhdGVPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGRlZmF1bHRDYXBhY2l0eVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BvdEZsZWV0T3B0aW9ucyBleHRlbmRzIEF1dG9TY2FsaW5nR3JvdXBPcHRpb25zIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldD86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YWxpZEZyb20/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2YWxpZFVudGlsPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHRlcm1pbmF0ZUluc3RhbmNlc1dpdGhFeHBpcmF0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZSA9IG5ldyBlYzIuSW5zdGFuY2VUeXBlKCd0My5sYXJnZScpO1xuICBjb25zdHJ1Y3RvcihzY29wZTogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cbiAgcHVibGljIGdldCBhbWF6b25MaW51eEFtaUltYWdlSWQoKSB7XG4gICAgcmV0dXJuIG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSh7XG4gICAgICBnZW5lcmF0aW9uOiBlYzIuQW1hem9uTGludXhHZW5lcmF0aW9uLkFNQVpPTl9MSU5VWF8yLFxuICAgIH0pLmdldEltYWdlKHRoaXMpLmltYWdlSWQ7XG4gIH1cbiAgcHVibGljIGdldE9yQ3JlYXRlVnBjKHNjb3BlOiBjZGsuQ29uc3RydWN0KTogZWMyLklWcGMge1xuICAvLyB1c2UgYW4gZXhpc3RpbmcgdnBjIG9yIGNyZWF0ZSBhIG5ldyBvbmVcbiAgICByZXR1cm4gc2NvcGUubm9kZS50cnlHZXRDb250ZXh0KCd1c2VfZGVmYXVsdF92cGMnKSA9PT0gJzEnID9cbiAgICAgIGVjMi5WcGMuZnJvbUxvb2t1cChzY29wZSwgJ1ZwYycsIHsgaXNEZWZhdWx0OiB0cnVlIH0pIDpcbiAgICAgIHNjb3BlLm5vZGUudHJ5R2V0Q29udGV4dCgndXNlX3ZwY19pZCcpID9cbiAgICAgICAgZWMyLlZwYy5mcm9tTG9va3VwKHNjb3BlLCAnVnBjJywgeyB2cGNJZDogc2NvcGUubm9kZS50cnlHZXRDb250ZXh0KCd1c2VfdnBjX2lkJykgfSkgOlxuICAgICAgICBuZXcgZWMyLlZwYyhzY29wZSwgJ1ZwYycsIHsgbWF4QXpzOiAzLCBuYXRHYXRld2F5czogMSB9KTtcbiAgfVxuICBwdWJsaWMgY3JlYXRlSW5zdGFuY2VQcm9maWxlKGlkOiBzdHJpbmcpOiBpYW0uQ2ZuSW5zdGFuY2VQcm9maWxlIHtcbiAgICBjb25zdCByb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIGBSb2xlJHtpZH1gLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZWMyLmFtYXpvbmF3cy5jb20nKSxcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3IGlhbS5DZm5JbnN0YW5jZVByb2ZpbGUodGhpcywgYEluc3RhbmNlUHJvZmlsZSR7aWR9YCwge1xuICAgICAgcm9sZXM6IFtyb2xlLnJvbGVOYW1lXSxcbiAgICB9KTtcbiAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBjcmVhdGVMYXVuY2hUZW1wbGF0ZShpZDogc3RyaW5nLCBvcHRpb25zOiBMYXVuY2hUZW1wbGF0ZU9wdGlvbnMgPSB7fSk6IGVjMi5DZm5MYXVuY2hUZW1wbGF0ZSB7XG4gICAgY29uc3QgaW5zdGFuY2VQcm9maWxlQXJuID0gb3B0aW9ucy5pbnN0YW5jZVByb2ZpbGUgPyBvcHRpb25zLmluc3RhbmNlUHJvZmlsZS5hdHRyQXJuXG4gICAgICA6IHRoaXMuY3JlYXRlSW5zdGFuY2VQcm9maWxlKCdEZWZhdWx0SW5zdGFuY2VQcm9maWxlJykuYXR0ckFybjtcbiAgICByZXR1cm4gbmV3IGVjMi5DZm5MYXVuY2hUZW1wbGF0ZSh0aGlzLCBpZCwge1xuICAgICAgbGF1bmNoVGVtcGxhdGVEYXRhOiB7XG4gICAgICAgIGltYWdlSWQ6IG9wdGlvbnMubWFjaGluZUltYWdlPy5nZXRJbWFnZSh0aGlzKS5pbWFnZUlkIHx8IHRoaXMuYW1hem9uTGludXhBbWlJbWFnZUlkLFxuICAgICAgICBpbnN0YW5jZVR5cGU6IG9wdGlvbnMuaW5zdGFuY2VUeXBlPy50b1N0cmluZygpIHx8IHRoaXMuZGVmYXVsdEluc3RhbmNlVHlwZS50b1N0cmluZygpLFxuICAgICAgICB1c2VyRGF0YTogb3B0aW9ucy51c2VyRGF0YSA/IGNkay5Gbi5iYXNlNjQob3B0aW9ucy51c2VyRGF0YS5yZW5kZXIoKSkgOiB1bmRlZmluZWQsXG4gICAgICAgIGluc3RhbmNlTWFya2V0T3B0aW9uczoge1xuICAgICAgICAgIG1hcmtldFR5cGU6ICdzcG90JyxcbiAgICAgICAgICBzcG90T3B0aW9uczoge1xuICAgICAgICAgICAgYmxvY2tEdXJhdGlvbk1pbnV0ZXM6IG9wdGlvbnMuc3BvdE9wdGlvbnM/LmJsb2NrRHVyYXRpb25NaW51dGVzPy52YWx1ZU9mKCksXG4gICAgICAgICAgICBpbnN0YW5jZUludGVycnVwdGlvbkJlaGF2aW9yOiBvcHRpb25zLnNwb3RPcHRpb25zPy5pbnN0YW5jZUludGVycnVwdGlvbkJlaGF2aW9yPy52YWx1ZU9mKCksXG4gICAgICAgICAgICBtYXhQcmljZTogb3B0aW9ucy5zcG90T3B0aW9ucz8ubWF4UHJpY2UsXG4gICAgICAgICAgICBzcG90SW5zdGFuY2VUeXBlOiBvcHRpb25zLnNwb3RPcHRpb25zPy5zcG90SW5zdGFuY2VUeXBlPy52YWx1ZU9mKCksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgaWFtSW5zdGFuY2VQcm9maWxlOiB7XG4gICAgICAgICAgYXJuOiBpbnN0YW5jZVByb2ZpbGVBcm4sXG4gICAgICAgIH0sXG4gICAgICAgIHRhZ1NwZWNpZmljYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiAnaW5zdGFuY2UnLFxuICAgICAgICAgICAgdGFnczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnTmFtZScsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGAke3RoaXMubm9kZS5wYXRofS8ke2lkfWAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgY3JlYXRlRmxlZXQoaWQ6IHN0cmluZywgb3B0aW9uczogU3BvdEZsZWV0T3B0aW9ucyk6IGVjMi5DZm5TcG90RmxlZXQge1xuICAgIGNvbnN0IGx0ID0gdGhpcy5jcmVhdGVMYXVuY2hUZW1wbGF0ZShpZCwge1xuICAgICAgaW5zdGFuY2VQcm9maWxlOiBvcHRpb25zLmluc3RhbmNlUHJvZmlsZSxcbiAgICAgIGluc3RhbmNlVHlwZTogb3B0aW9ucy5pbnN0YW5jZVR5cGUsXG4gICAgICBtYWNoaW5lSW1hZ2U6IG9wdGlvbnMubWFjaGluZUltYWdlLFxuICAgICAgc3BvdE9wdGlvbnM6IG9wdGlvbnMuc3BvdE9wdGlvbnMsXG4gICAgICB1c2VyRGF0YTogb3B0aW9ucy51c2VyRGF0YSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHNwb3RGbGVldFJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ0ZsZWV0Um9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzcG90ZmxlZXQuYW1hem9uYXdzLmNvbScpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnc2VydmljZS1yb2xlL0FtYXpvbkVDMlNwb3RGbGVldFRhZ2dpbmdSb2xlJyksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgdnBjU3VibmV0U2VsZWN0aW9uID0gb3B0aW9ucy52cGNTdWJuZXQgPz8ge1xuICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3VibmV0Q29uZmlnID0gb3B0aW9ucy52cGMuc2VsZWN0U3VibmV0cyh2cGNTdWJuZXRTZWxlY3Rpb24pLnN1Ym5ldHMubWFwKHMgPT4gKHtcbiAgICAgIHN1Ym5ldElkOiBzLnN1Ym5ldElkLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGZsZWV0ID0gbmV3IGVjMi5DZm5TcG90RmxlZXQodGhpcywgYCR7aWR9UmVzb3VyY2VgLCB7XG4gICAgICBzcG90RmxlZXRSZXF1ZXN0Q29uZmlnRGF0YToge1xuICAgICAgICBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYXVuY2hUZW1wbGF0ZVNwZWNpZmljYXRpb246IHtcbiAgICAgICAgICAgICAgbGF1bmNoVGVtcGxhdGVJZDogbHQucmVmLFxuICAgICAgICAgICAgICB2ZXJzaW9uOiBsdC5hdHRyTGF0ZXN0VmVyc2lvbk51bWJlcixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvdmVycmlkZXM6IHN1Ym5ldENvbmZpZyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpYW1GbGVldFJvbGU6IHNwb3RGbGVldFJvbGUucm9sZUFybixcbiAgICAgICAgdGFyZ2V0Q2FwYWNpdHk6IG9wdGlvbnMuZGVmYXVsdENhcGFjaXR5U2l6ZSA/PyAxLFxuICAgICAgICB2YWxpZEZyb206IG9wdGlvbnMudmFsaWRGcm9tLFxuICAgICAgICB2YWxpZFVudGlsOiBvcHRpb25zLnZhbGlkVW50aWwsXG4gICAgICAgIHRlcm1pbmF0ZUluc3RhbmNlc1dpdGhFeHBpcmF0aW9uOiBvcHRpb25zLnRlcm1pbmF0ZUluc3RhbmNlc1dpdGhFeHBpcmF0aW9uID8/IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiBmbGVldDtcbiAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBjcmVhdGVBdXRvU2NhbGluZ0dyb3VwKGlkOiBzdHJpbmcsIG9wdGlvbnM6IEF1dG9TY2FsaW5nR3JvdXBPcHRpb25zKTogYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cCB7XG4gICAgY29uc3QgYXNnID0gbmV3IGF1dG9zY2FsaW5nLkF1dG9TY2FsaW5nR3JvdXAodGhpcywgaWQsIHtcbiAgICAgIGluc3RhbmNlVHlwZTogdGhpcy5kZWZhdWx0SW5zdGFuY2VUeXBlLFxuICAgICAgbWFjaGluZUltYWdlOiBuZXcgZWMyLkFtYXpvbkxpbnV4SW1hZ2UoKSxcbiAgICAgIHZwYzogb3B0aW9ucy52cGMsXG4gICAgICBtaW5DYXBhY2l0eTogb3B0aW9ucy5kZWZhdWx0Q2FwYWNpdHlTaXplID8/IDEsXG4gICAgICB1cGRhdGVQb2xpY3k6IGF1dG9zY2FsaW5nLlVwZGF0ZVBvbGljeS5yZXBsYWNpbmdVcGRhdGUoKSxcbiAgICB9KTtcbiAgICBjb25zdCBjZm5JbnN0YW5jZVByb2ZpbGUgPSBhc2cubm9kZS50cnlGaW5kQ2hpbGQoJ0luc3RhbmNlUHJvZmlsZScpIGFzIGlhbS5DZm5JbnN0YW5jZVByb2ZpbGU7XG4gICAgYXNnLnJvbGUuYWRkTWFuYWdlZFBvbGljeShpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0FtYXpvblNTTU1hbmFnZWRJbnN0YW5jZUNvcmUnKSk7XG4gICAgY29uc3QgbHQgPSB0aGlzLmNyZWF0ZUxhdW5jaFRlbXBsYXRlKGBMYXVuY2hUZW1wbGF0ZSR7aWR9YCwge1xuICAgICAgaW5zdGFuY2VQcm9maWxlOiBjZm5JbnN0YW5jZVByb2ZpbGUsXG4gICAgICBpbnN0YW5jZVR5cGU6IG9wdGlvbnMuaW5zdGFuY2VUeXBlLFxuICAgICAgbWFjaGluZUltYWdlOiBvcHRpb25zLm1hY2hpbmVJbWFnZSxcbiAgICAgIHNwb3RPcHRpb25zOiBvcHRpb25zLnNwb3RPcHRpb25zLFxuICAgICAgdXNlckRhdGE6IG9wdGlvbnMudXNlckRhdGEsXG4gICAgfSk7XG4gICAgLy8gcHJvcGVydHkgb3ZlcnJpZGVcbiAgICBjb25zdCBjZm5Bc2cgPSBhc2cubm9kZS50cnlGaW5kQ2hpbGQoJ0FTRycpIGFzIGF1dG9zY2FsaW5nLkNmbkF1dG9TY2FsaW5nR3JvdXA7XG4gICAgY2ZuQXNnLmFkZFByb3BlcnR5RGVsZXRpb25PdmVycmlkZSgnTGF1bmNoQ29uZmlndXJhdGlvbk5hbWUnKTtcbiAgICBjZm5Bc2cuYWRkUHJvcGVydHlPdmVycmlkZSgnTGF1bmNoVGVtcGxhdGUnLCB7XG4gICAgICBMYXVuY2hUZW1wbGF0ZUlkOiBsdC5yZWYsXG4gICAgICBWZXJzaW9uOiBsdC5hdHRyTGF0ZXN0VmVyc2lvbk51bWJlcixcbiAgICB9KTtcbiAgICByZXR1cm4gYXNnO1xuICB9XG4gIHB1YmxpYyBjcmVhdGVJbnN0YW5jZShpZDogc3RyaW5nLCBvcHRvbnM6IHNwb3RvbmUuU3BvdEluc3RhbmNlUHJvcHMpOiBzcG90b25lLlNwb3RJbnN0YW5jZSB7XG4gICAgcmV0dXJuIG5ldyBzcG90b25lLlNwb3RJbnN0YW5jZSh0aGlzLCBpZCwgb3B0b25zKTtcbiAgfVxufVxuIl19
213
+ Provider[_a] = { fqn: "cdk-ec2spot.Provider", version: "2.0.0" };
214
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FJcUI7QUFDckIsbUNBQW1DO0FBQ25DLHdDQUF3QztBQUN4QywyQ0FBdUM7Ozs7QUFHdkMsSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLHlDQUFxQixDQUFBO0lBQ3JCLDZDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFIVyxnQkFBZ0IsR0FBaEIsd0JBQWdCLEtBQWhCLHdCQUFnQixRQUczQjs7OztBQUVELElBQVksNEJBSVg7QUFKRCxXQUFZLDRCQUE0QjtJQUN0Qyx1REFBdUIsQ0FBQTtJQUN2Qiw2Q0FBYSxDQUFBO0lBQ2IsdURBQXVCLENBQUE7QUFDekIsQ0FBQyxFQUpXLDRCQUE0QixHQUE1QixvQ0FBNEIsS0FBNUIsb0NBQTRCLFFBSXZDOzs7O0FBRUQsSUFBWSxvQkFPWDtBQVBELFdBQVksb0JBQW9CO0lBQzlCLHdFQUFhLENBQUE7SUFDYiwyRUFBZSxDQUFBO0lBQ2YsK0VBQWlCLENBQUE7SUFDakIsNkVBQWdCLENBQUE7SUFDaEIsNkVBQWdCLENBQUE7SUFDaEIsMkVBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsb0JBQW9CLEdBQXBCLDRCQUFvQixLQUFwQiw0QkFBb0IsUUFPL0I7Ozs7QUFvQ0QsTUFBYSxRQUFTLFNBQVEsc0JBQVM7Ozs7SUFFckMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUZGLHdCQUFtQixHQUFxQixJQUFJLHFCQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRzFGLENBQUM7Ozs7SUFDRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUkscUJBQUcsQ0FBQyxnQkFBZ0IsQ0FBQztZQUM5QixVQUFVLEVBQUUscUJBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjO1NBQ3JE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QVksQ0FBQyxpQkFBaUIsQ0FBMkIsQ0FBQztRQUM5RixHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLHFCQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztRQUN0RyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFO1lBQzFELGVBQWUsRUFBRSxrQkFBa0I7WUFDbkMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQ2xDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtZQUNsQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7WUFDaEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1NBQzNCLENBQUMsQ0FBQztRQUNILG9CQUFvQjtRQUNwQixNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQW9DLENBQUM7UUFDL0UsTUFBTSxDQUFDLDJCQUEyQixDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixFQUFFO1lBQzNDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxHQUFHO1lBQ3hCLE9BQU8sRUFBRSxFQUFFLENBQUMsdUJBQXVCO1NBQ3BDLENBQUMsQ0FBQztRQUNILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQzs7OztJQUNNLGNBQWMsQ0FBQyxFQUFVLEVBQUUsTUFBaUM7UUFDakUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDOztBQXZJSCw0QkF3SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3NfYXV0b3NjYWxpbmcgYXMgYXV0b3NjYWxpbmcsXG4gIGF3c19lYzIgYXMgZWMyLFxuICBhd3NfaWFtIGFzIGlhbSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIHNwb3RvbmUgZnJvbSAnY2RrLXNwb3Qtb25lJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbmV4cG9ydCBlbnVtIFNwb3RJbnN0YW5jZVR5cGUge1xuICBPTkVfVElNRSA9ICdvbmUtdGltZScsXG4gIFBFUlNJU1RFTlQgPSAncGVyc2lzdGVudCcsXG59XG5cbmV4cG9ydCBlbnVtIEluc3RhbmNlSW50ZXJydXB0aW9uQmVoYXZpb3Ige1xuICBISUJFUk5BVEUgPSAnaGliZXJuYXRlJyxcbiAgU1RPUCA9ICdzdG9wJyxcbiAgVEVSTUlOQVRFID0gJ3Rlcm1pbmF0ZScsXG59XG5cbmV4cG9ydCBlbnVtIEJsb2NrRHVyYXRpb25NaW51dGVzIHtcbiAgT05FX0hPVVIgPSA2MCxcbiAgVFdPX0hPVVJTID0gMTIwLFxuICBUSFJFRV9IT1VSUyA9IDE4MCxcbiAgRk9VUl9IT1VSUyA9IDI0MCxcbiAgRklWRV9IT1VSUyA9IDMwMCxcbiAgU0lYX0hPVVJTID0gMzYwLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwb3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgc3BvdEluc3RhbmNlVHlwZT86IFNwb3RJbnN0YW5jZVR5cGU7XG4gIHJlYWRvbmx5IHZhbGlkVW50aWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1heFByaWNlPzogc3RyaW5nO1xuICByZWFkb25seSBpbnN0YW5jZUludGVycnVwdGlvbkJlaGF2aW9yPzogSW5zdGFuY2VJbnRlcnJ1cHRpb25CZWhhdmlvcjtcbiAgcmVhZG9ubHkgYmxvY2tEdXJhdGlvbk1pbnV0ZXM/OiBCbG9ja0R1cmF0aW9uTWludXRlcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXVuY2hUZW1wbGF0ZU9wdGlvbnMge1xuICByZWFkb25seSBtYWNoaW5lSW1hZ2U/OiBlYzIuSU1hY2hpbmVJbWFnZTtcbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogZWMyLkluc3RhbmNlVHlwZTtcbiAgcmVhZG9ubHkgc3BvdE9wdGlvbnM/OiBTcG90T3B0aW9ucztcbiAgcmVhZG9ubHkgdXNlckRhdGE/OiBlYzIuVXNlckRhdGE7XG4gIHJlYWRvbmx5IGluc3RhbmNlUHJvZmlsZT86IGlhbS5DZm5JbnN0YW5jZVByb2ZpbGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1NjYWxpbmdHcm91cE9wdGlvbnMgZXh0ZW5kcyBMYXVuY2hUZW1wbGF0ZU9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVmYXVsdENhcGFjaXR5U2l6ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTcG90RmxlZXRPcHRpb25zIGV4dGVuZHMgQXV0b1NjYWxpbmdHcm91cE9wdGlvbnMge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdnBjU3VibmV0PzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZhbGlkRnJvbT86IHN0cmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZhbGlkVW50aWw/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdGVybWluYXRlSW5zdGFuY2VzV2l0aEV4cGlyYXRpb24/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRJbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGUgPSBuZXcgZWMyLkluc3RhbmNlVHlwZSgndDMubGFyZ2UnKTtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gIH1cbiAgcHVibGljIGdldCBhbWF6b25MaW51eEFtaUltYWdlSWQoKSB7XG4gICAgcmV0dXJuIG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSh7XG4gICAgICBnZW5lcmF0aW9uOiBlYzIuQW1hem9uTGludXhHZW5lcmF0aW9uLkFNQVpPTl9MSU5VWF8yLFxuICAgIH0pLmdldEltYWdlKHRoaXMpLmltYWdlSWQ7XG4gIH1cbiAgcHVibGljIGdldE9yQ3JlYXRlVnBjKHNjb3BlOiBDb25zdHJ1Y3QpOiBlYzIuSVZwYyB7XG4gIC8vIHVzZSBhbiBleGlzdGluZyB2cGMgb3IgY3JlYXRlIGEgbmV3IG9uZVxuICAgIHJldHVybiBzY29wZS5ub2RlLnRyeUdldENvbnRleHQoJ3VzZV9kZWZhdWx0X3ZwYycpID09PSAnMScgP1xuICAgICAgZWMyLlZwYy5mcm9tTG9va3VwKHNjb3BlLCAnVnBjJywgeyBpc0RlZmF1bHQ6IHRydWUgfSkgOlxuICAgICAgc2NvcGUubm9kZS50cnlHZXRDb250ZXh0KCd1c2VfdnBjX2lkJykgP1xuICAgICAgICBlYzIuVnBjLmZyb21Mb29rdXAoc2NvcGUsICdWcGMnLCB7IHZwY0lkOiBzY29wZS5ub2RlLnRyeUdldENvbnRleHQoJ3VzZV92cGNfaWQnKSB9KSA6XG4gICAgICAgIG5ldyBlYzIuVnBjKHNjb3BlLCAnVnBjJywgeyBtYXhBenM6IDMsIG5hdEdhdGV3YXlzOiAxIH0pO1xuICB9XG4gIHB1YmxpYyBjcmVhdGVJbnN0YW5jZVByb2ZpbGUoaWQ6IHN0cmluZyk6IGlhbS5DZm5JbnN0YW5jZVByb2ZpbGUge1xuICAgIGNvbnN0IHJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgYFJvbGUke2lkfWAsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlYzIuYW1hem9uYXdzLmNvbScpLFxuICAgIH0pO1xuICAgIHJldHVybiBuZXcgaWFtLkNmbkluc3RhbmNlUHJvZmlsZSh0aGlzLCBgSW5zdGFuY2VQcm9maWxlJHtpZH1gLCB7XG4gICAgICByb2xlczogW3JvbGUucm9sZU5hbWVdLFxuICAgIH0pO1xuICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGNyZWF0ZUxhdW5jaFRlbXBsYXRlKGlkOiBzdHJpbmcsIG9wdGlvbnM6IExhdW5jaFRlbXBsYXRlT3B0aW9ucyA9IHt9KTogZWMyLkNmbkxhdW5jaFRlbXBsYXRlIHtcbiAgICBjb25zdCBpbnN0YW5jZVByb2ZpbGVBcm4gPSBvcHRpb25zLmluc3RhbmNlUHJvZmlsZSA/IG9wdGlvbnMuaW5zdGFuY2VQcm9maWxlLmF0dHJBcm5cbiAgICAgIDogdGhpcy5jcmVhdGVJbnN0YW5jZVByb2ZpbGUoJ0RlZmF1bHRJbnN0YW5jZVByb2ZpbGUnKS5hdHRyQXJuO1xuICAgIHJldHVybiBuZXcgZWMyLkNmbkxhdW5jaFRlbXBsYXRlKHRoaXMsIGlkLCB7XG4gICAgICBsYXVuY2hUZW1wbGF0ZURhdGE6IHtcbiAgICAgICAgaW1hZ2VJZDogb3B0aW9ucy5tYWNoaW5lSW1hZ2U/LmdldEltYWdlKHRoaXMpLmltYWdlSWQgfHwgdGhpcy5hbWF6b25MaW51eEFtaUltYWdlSWQsXG4gICAgICAgIGluc3RhbmNlVHlwZTogb3B0aW9ucy5pbnN0YW5jZVR5cGU/LnRvU3RyaW5nKCkgfHwgdGhpcy5kZWZhdWx0SW5zdGFuY2VUeXBlLnRvU3RyaW5nKCksXG4gICAgICAgIHVzZXJEYXRhOiBvcHRpb25zLnVzZXJEYXRhID8gY2RrLkZuLmJhc2U2NChvcHRpb25zLnVzZXJEYXRhLnJlbmRlcigpKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgaW5zdGFuY2VNYXJrZXRPcHRpb25zOiB7XG4gICAgICAgICAgbWFya2V0VHlwZTogJ3Nwb3QnLFxuICAgICAgICAgIHNwb3RPcHRpb25zOiB7XG4gICAgICAgICAgICBibG9ja0R1cmF0aW9uTWludXRlczogb3B0aW9ucy5zcG90T3B0aW9ucz8uYmxvY2tEdXJhdGlvbk1pbnV0ZXM/LnZhbHVlT2YoKSxcbiAgICAgICAgICAgIGluc3RhbmNlSW50ZXJydXB0aW9uQmVoYXZpb3I6IG9wdGlvbnMuc3BvdE9wdGlvbnM/Lmluc3RhbmNlSW50ZXJydXB0aW9uQmVoYXZpb3I/LnZhbHVlT2YoKSxcbiAgICAgICAgICAgIG1heFByaWNlOiBvcHRpb25zLnNwb3RPcHRpb25zPy5tYXhQcmljZSxcbiAgICAgICAgICAgIHNwb3RJbnN0YW5jZVR5cGU6IG9wdGlvbnMuc3BvdE9wdGlvbnM/LnNwb3RJbnN0YW5jZVR5cGU/LnZhbHVlT2YoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBpYW1JbnN0YW5jZVByb2ZpbGU6IHtcbiAgICAgICAgICBhcm46IGluc3RhbmNlUHJvZmlsZUFybixcbiAgICAgICAgfSxcbiAgICAgICAgdGFnU3BlY2lmaWNhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6ICdpbnN0YW5jZScsXG4gICAgICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6ICdOYW1lJyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogYCR7dGhpcy5ub2RlLnBhdGh9LyR7aWR9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBjcmVhdGVGbGVldChpZDogc3RyaW5nLCBvcHRpb25zOiBTcG90RmxlZXRPcHRpb25zKTogZWMyLkNmblNwb3RGbGVldCB7XG4gICAgY29uc3QgbHQgPSB0aGlzLmNyZWF0ZUxhdW5jaFRlbXBsYXRlKGlkLCB7XG4gICAgICBpbnN0YW5jZVByb2ZpbGU6IG9wdGlvbnMuaW5zdGFuY2VQcm9maWxlLFxuICAgICAgaW5zdGFuY2VUeXBlOiBvcHRpb25zLmluc3RhbmNlVHlwZSxcbiAgICAgIG1hY2hpbmVJbWFnZTogb3B0aW9ucy5tYWNoaW5lSW1hZ2UsXG4gICAgICBzcG90T3B0aW9uczogb3B0aW9ucy5zcG90T3B0aW9ucyxcbiAgICAgIHVzZXJEYXRhOiBvcHRpb25zLnVzZXJEYXRhLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3BvdEZsZWV0Um9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnRmxlZXRSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3Nwb3RmbGVldC5hbWF6b25hd3MuY29tJyksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQW1hem9uRUMyU3BvdEZsZWV0VGFnZ2luZ1JvbGUnKSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBjb25zdCB2cGNTdWJuZXRTZWxlY3Rpb24gPSBvcHRpb25zLnZwY1N1Ym5ldCA/PyB7XG4gICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QUklWQVRFLFxuICAgIH07XG5cbiAgICBjb25zdCBzdWJuZXRDb25maWcgPSBvcHRpb25zLnZwYy5zZWxlY3RTdWJuZXRzKHZwY1N1Ym5ldFNlbGVjdGlvbikuc3VibmV0cy5tYXAocyA9PiAoe1xuICAgICAgc3VibmV0SWQ6IHMuc3VibmV0SWQsXG4gICAgfSkpO1xuXG4gICAgY29uc3QgZmxlZXQgPSBuZXcgZWMyLkNmblNwb3RGbGVldCh0aGlzLCBgJHtpZH1SZXNvdXJjZWAsIHtcbiAgICAgIHNwb3RGbGVldFJlcXVlc3RDb25maWdEYXRhOiB7XG4gICAgICAgIGxhdW5jaFRlbXBsYXRlQ29uZmlnczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlU3BlY2lmaWNhdGlvbjoge1xuICAgICAgICAgICAgICBsYXVuY2hUZW1wbGF0ZUlkOiBsdC5yZWYsXG4gICAgICAgICAgICAgIHZlcnNpb246IGx0LmF0dHJMYXRlc3RWZXJzaW9uTnVtYmVyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG92ZXJyaWRlczogc3VibmV0Q29uZmlnLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlhbUZsZWV0Um9sZTogc3BvdEZsZWV0Um9sZS5yb2xlQXJuLFxuICAgICAgICB0YXJnZXRDYXBhY2l0eTogb3B0aW9ucy5kZWZhdWx0Q2FwYWNpdHlTaXplID8/IDEsXG4gICAgICAgIHZhbGlkRnJvbTogb3B0aW9ucy52YWxpZEZyb20sXG4gICAgICAgIHZhbGlkVW50aWw6IG9wdGlvbnMudmFsaWRVbnRpbCxcbiAgICAgICAgdGVybWluYXRlSW5zdGFuY2VzV2l0aEV4cGlyYXRpb246IG9wdGlvbnMudGVybWluYXRlSW5zdGFuY2VzV2l0aEV4cGlyYXRpb24gPz8gdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgcmV0dXJuIGZsZWV0O1xuICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIGNyZWF0ZUF1dG9TY2FsaW5nR3JvdXAoaWQ6IHN0cmluZywgb3B0aW9uczogQXV0b1NjYWxpbmdHcm91cE9wdGlvbnMpOiBhdXRvc2NhbGluZy5BdXRvU2NhbGluZ0dyb3VwIHtcbiAgICBjb25zdCBhc2cgPSBuZXcgYXV0b3NjYWxpbmcuQXV0b1NjYWxpbmdHcm91cCh0aGlzLCBpZCwge1xuICAgICAgaW5zdGFuY2VUeXBlOiB0aGlzLmRlZmF1bHRJbnN0YW5jZVR5cGUsXG4gICAgICBtYWNoaW5lSW1hZ2U6IG5ldyBlYzIuQW1hem9uTGludXhJbWFnZSgpLFxuICAgICAgdnBjOiBvcHRpb25zLnZwYyxcbiAgICAgIG1pbkNhcGFjaXR5OiBvcHRpb25zLmRlZmF1bHRDYXBhY2l0eVNpemUgPz8gMSxcbiAgICAgIHVwZGF0ZVBvbGljeTogYXV0b3NjYWxpbmcuVXBkYXRlUG9saWN5LnJlcGxhY2luZ1VwZGF0ZSgpLFxuICAgIH0pO1xuICAgIGNvbnN0IGNmbkluc3RhbmNlUHJvZmlsZSA9IGFzZy5ub2RlLnRyeUZpbmRDaGlsZCgnSW5zdGFuY2VQcm9maWxlJykgYXMgaWFtLkNmbkluc3RhbmNlUHJvZmlsZTtcbiAgICBhc2cucm9sZS5hZGRNYW5hZ2VkUG9saWN5KGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnQW1hem9uU1NNTWFuYWdlZEluc3RhbmNlQ29yZScpKTtcbiAgICBjb25zdCBsdCA9IHRoaXMuY3JlYXRlTGF1bmNoVGVtcGxhdGUoYExhdW5jaFRlbXBsYXRlJHtpZH1gLCB7XG4gICAgICBpbnN0YW5jZVByb2ZpbGU6IGNmbkluc3RhbmNlUHJvZmlsZSxcbiAgICAgIGluc3RhbmNlVHlwZTogb3B0aW9ucy5pbnN0YW5jZVR5cGUsXG4gICAgICBtYWNoaW5lSW1hZ2U6IG9wdGlvbnMubWFjaGluZUltYWdlLFxuICAgICAgc3BvdE9wdGlvbnM6IG9wdGlvbnMuc3BvdE9wdGlvbnMsXG4gICAgICB1c2VyRGF0YTogb3B0aW9ucy51c2VyRGF0YSxcbiAgICB9KTtcbiAgICAvLyBwcm9wZXJ0eSBvdmVycmlkZVxuICAgIGNvbnN0IGNmbkFzZyA9IGFzZy5ub2RlLnRyeUZpbmRDaGlsZCgnQVNHJykgYXMgYXV0b3NjYWxpbmcuQ2ZuQXV0b1NjYWxpbmdHcm91cDtcbiAgICBjZm5Bc2cuYWRkUHJvcGVydHlEZWxldGlvbk92ZXJyaWRlKCdMYXVuY2hDb25maWd1cmF0aW9uTmFtZScpO1xuICAgIGNmbkFzZy5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdMYXVuY2hUZW1wbGF0ZScsIHtcbiAgICAgIExhdW5jaFRlbXBsYXRlSWQ6IGx0LnJlZixcbiAgICAgIFZlcnNpb246IGx0LmF0dHJMYXRlc3RWZXJzaW9uTnVtYmVyLFxuICAgIH0pO1xuICAgIHJldHVybiBhc2c7XG4gIH1cbiAgcHVibGljIGNyZWF0ZUluc3RhbmNlKGlkOiBzdHJpbmcsIG9wdG9uczogc3BvdG9uZS5TcG90SW5zdGFuY2VQcm9wcyk6IHNwb3RvbmUuU3BvdEluc3RhbmNlIHtcbiAgICByZXR1cm4gbmV3IHNwb3RvbmUuU3BvdEluc3RhbmNlKHRoaXMsIGlkLCBvcHRvbnMpO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
- import * as cdk from '@aws-cdk/core';
1
+ import { Stack } from 'aws-cdk-lib';
2
2
  export declare class IntegTesting {
3
- readonly stack: cdk.Stack[];
3
+ readonly stack: Stack[];
4
4
  constructor();
5
5
  }
@@ -1,30 +1,29 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.IntegTesting = void 0;
4
- const ec2 = require("@aws-cdk/aws-ec2");
5
- const cdk = require("@aws-cdk/core");
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
5
  const ec2spot = require("./index");
7
6
  class IntegTesting {
8
7
  constructor() {
9
- const app = new cdk.App();
8
+ const app = new aws_cdk_lib_1.App();
10
9
  const env = {
11
10
  region: process.env.CDK_DEFAULT_REGION || 'us-east-1',
12
11
  account: process.env.CDK_DEFAULT_ACCOUNT || '123456789012',
13
12
  };
14
- const stack = new cdk.Stack(app, 'integ-stack', { env });
13
+ const stack = new aws_cdk_lib_1.Stack(app, 'integ-stack', { env });
15
14
  const provider = new ec2spot.Provider(stack, 'Provider');
16
15
  const vpc = provider.getOrCreateVpc(stack);
17
16
  // create a autoscaling group with spot instances
18
17
  provider.createAutoScalingGroup('SpotASG', {
19
18
  vpc,
20
19
  defaultCapacitySize: 2,
21
- instanceType: new ec2.InstanceType('m5.large'),
20
+ instanceType: new aws_cdk_lib_1.aws_ec2.InstanceType('m5.large'),
22
21
  });
23
22
  // create a spot fleet
24
23
  provider.createFleet('SpotFleet', {
25
24
  vpc,
26
25
  defaultCapacitySize: 2,
27
- instanceType: new ec2.InstanceType('t3.large'),
26
+ instanceType: new aws_cdk_lib_1.aws_ec2.InstanceType('t3.large'),
28
27
  });
29
28
  // create single spot instance
30
29
  provider.createInstance('SpotInstance', { vpc });
@@ -36,4 +35,4 @@ class IntegTesting {
36
35
  }
37
36
  exports.IntegTesting = IntegTesting;
38
37
  new IntegTesting();
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUF3QztBQUN4QyxxQ0FBcUM7QUFDckMsbUNBQW1DO0FBRW5DLE1BQWEsWUFBWTtJQUd2QjtRQUNFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRTFCLE1BQU0sR0FBRyxHQUFHO1lBQ1YsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksV0FBVztZQUNyRCxPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsSUFBSSxjQUFjO1NBQzNELENBQUM7UUFFRixNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFekQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV6RCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLGlEQUFpRDtRQUNqRCxRQUFRLENBQUMsc0JBQXNCLENBQUMsU0FBUyxFQUFFO1lBQ3pDLEdBQUc7WUFDSCxtQkFBbUIsRUFBRSxDQUFDO1lBQ3RCLFlBQVksRUFBRSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1NBQy9DLENBQUMsQ0FBQztRQUVILHNCQUFzQjtRQUN0QixRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtZQUNoQyxHQUFHO1lBQ0gsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixZQUFZLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQztTQUMvQyxDQUFDLENBQUM7UUFFSCw4QkFBOEI7UUFDOUIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRWpELDRDQUE0QztRQUM1QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQzthQUNyQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztDQUNGO0FBeENELG9DQXdDQztBQUVELElBQUksWUFBWSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBlYzIgZnJvbSAnQGF3cy1jZGsvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnQGF3cy1jZGsvY29yZSc7XG5pbXBvcnQgKiBhcyBlYzJzcG90IGZyb20gJy4vaW5kZXgnO1xuXG5leHBvcnQgY2xhc3MgSW50ZWdUZXN0aW5nIHtcbiAgcmVhZG9ubHkgc3RhY2s6IGNkay5TdGFja1tdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG5cbiAgICBjb25zdCBlbnYgPSB7XG4gICAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJyxcbiAgICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQgfHwgJzEyMzQ1Njc4OTAxMicsXG4gICAgfTtcblxuICAgIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayhhcHAsICdpbnRlZy1zdGFjaycsIHsgZW52IH0pO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgZWMyc3BvdC5Qcm92aWRlcihzdGFjaywgJ1Byb3ZpZGVyJyk7XG5cbiAgICBjb25zdCB2cGMgPSBwcm92aWRlci5nZXRPckNyZWF0ZVZwYyhzdGFjayk7XG5cbiAgICAvLyBjcmVhdGUgYSBhdXRvc2NhbGluZyBncm91cCB3aXRoIHNwb3QgaW5zdGFuY2VzXG4gICAgcHJvdmlkZXIuY3JlYXRlQXV0b1NjYWxpbmdHcm91cCgnU3BvdEFTRycsIHtcbiAgICAgIHZwYyxcbiAgICAgIGRlZmF1bHRDYXBhY2l0eVNpemU6IDIsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlKCdtNS5sYXJnZScpLFxuICAgIH0pO1xuXG4gICAgLy8gY3JlYXRlIGEgc3BvdCBmbGVldFxuICAgIHByb3ZpZGVyLmNyZWF0ZUZsZWV0KCdTcG90RmxlZXQnLCB7XG4gICAgICB2cGMsXG4gICAgICBkZWZhdWx0Q2FwYWNpdHlTaXplOiAyLFxuICAgICAgaW5zdGFuY2VUeXBlOiBuZXcgZWMyLkluc3RhbmNlVHlwZSgndDMubGFyZ2UnKSxcbiAgICB9KTtcblxuICAgIC8vIGNyZWF0ZSBzaW5nbGUgc3BvdCBpbnN0YW5jZVxuICAgIHByb3ZpZGVyLmNyZWF0ZUluc3RhbmNlKCdTcG90SW5zdGFuY2UnLCB7IHZwYyB9KTtcblxuICAgIC8vIGNyZWF0ZSBhbm90aGVyIGluc3RhbmNlIHdpdGggbmV3IHByb3ZpZGVyXG4gICAgbmV3IGVjMnNwb3QuUHJvdmlkZXIoc3RhY2ssICdQcm92aWRlcjInKVxuICAgICAgLmNyZWF0ZUluc3RhbmNlKCdTcG90SW5zdGFuY2UyJywgeyB2cGMgfSk7XG5cbiAgICB0aGlzLnN0YWNrID0gW3N0YWNrXTtcbiAgfVxufVxuXG5uZXcgSW50ZWdUZXN0aW5nKCk7XG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuZGVmYXVsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbnRlZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUdxQjtBQUNyQixtQ0FBbUM7QUFFbkMsTUFBYSxZQUFZO0lBR3ZCO1FBQ0UsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7UUFFdEIsTUFBTSxHQUFHLEdBQUc7WUFDVixNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxXQUFXO1lBQ3JELE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLGNBQWM7U0FDM0QsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVyRCxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0MsaURBQWlEO1FBQ2pELFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUU7WUFDekMsR0FBRztZQUNILG1CQUFtQixFQUFFLENBQUM7WUFDdEIsWUFBWSxFQUFFLElBQUkscUJBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDO1NBQy9DLENBQUMsQ0FBQztRQUVILHNCQUFzQjtRQUN0QixRQUFRLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtZQUNoQyxHQUFHO1lBQ0gsbUJBQW1CLEVBQUUsQ0FBQztZQUN0QixZQUFZLEVBQUUsSUFBSSxxQkFBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsOEJBQThCO1FBQzlCLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUVqRCw0Q0FBNEM7UUFDNUMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUM7YUFDckMsY0FBYyxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQXhDRCxvQ0F3Q0M7QUFFRCxJQUFJLFlBQVksRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU3RhY2ssIEFwcCxcbiAgYXdzX2VjMiBhcyBlYzIsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMnNwb3QgZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCBjbGFzcyBJbnRlZ1Rlc3Rpbmcge1xuICByZWFkb25seSBzdGFjazogU3RhY2tbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBhcHAgPSBuZXcgQXBwKCk7XG5cbiAgICBjb25zdCBlbnYgPSB7XG4gICAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJyxcbiAgICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQgfHwgJzEyMzQ1Njc4OTAxMicsXG4gICAgfTtcblxuICAgIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ2ludGVnLXN0YWNrJywgeyBlbnYgfSk7XG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBlYzJzcG90LlByb3ZpZGVyKHN0YWNrLCAnUHJvdmlkZXInKTtcblxuICAgIGNvbnN0IHZwYyA9IHByb3ZpZGVyLmdldE9yQ3JlYXRlVnBjKHN0YWNrKTtcblxuICAgIC8vIGNyZWF0ZSBhIGF1dG9zY2FsaW5nIGdyb3VwIHdpdGggc3BvdCBpbnN0YW5jZXNcbiAgICBwcm92aWRlci5jcmVhdGVBdXRvU2NhbGluZ0dyb3VwKCdTcG90QVNHJywge1xuICAgICAgdnBjLFxuICAgICAgZGVmYXVsdENhcGFjaXR5U2l6ZTogMixcbiAgICAgIGluc3RhbmNlVHlwZTogbmV3IGVjMi5JbnN0YW5jZVR5cGUoJ201LmxhcmdlJyksXG4gICAgfSk7XG5cbiAgICAvLyBjcmVhdGUgYSBzcG90IGZsZWV0XG4gICAgcHJvdmlkZXIuY3JlYXRlRmxlZXQoJ1Nwb3RGbGVldCcsIHtcbiAgICAgIHZwYyxcbiAgICAgIGRlZmF1bHRDYXBhY2l0eVNpemU6IDIsXG4gICAgICBpbnN0YW5jZVR5cGU6IG5ldyBlYzIuSW5zdGFuY2VUeXBlKCd0My5sYXJnZScpLFxuICAgIH0pO1xuXG4gICAgLy8gY3JlYXRlIHNpbmdsZSBzcG90IGluc3RhbmNlXG4gICAgcHJvdmlkZXIuY3JlYXRlSW5zdGFuY2UoJ1Nwb3RJbnN0YW5jZScsIHsgdnBjIH0pO1xuXG4gICAgLy8gY3JlYXRlIGFub3RoZXIgaW5zdGFuY2Ugd2l0aCBuZXcgcHJvdmlkZXJcbiAgICBuZXcgZWMyc3BvdC5Qcm92aWRlcihzdGFjaywgJ1Byb3ZpZGVyMicpXG4gICAgICAuY3JlYXRlSW5zdGFuY2UoJ1Nwb3RJbnN0YW5jZTInLCB7IHZwYyB9KTtcblxuICAgIHRoaXMuc3RhY2sgPSBbc3RhY2tdO1xuICB9XG59XG5cbm5ldyBJbnRlZ1Rlc3RpbmcoKTtcbiJdfQ==
package/package.json CHANGED
@@ -18,10 +18,8 @@
18
18
  "package": "npx projen package",
19
19
  "post-compile": "npx projen post-compile",
20
20
  "pre-compile": "npx projen pre-compile",
21
- "publish:github": "npx projen publish:github",
22
- "publish:npm": "npx projen publish:npm",
23
- "publish:pypi": "npx projen publish:pypi",
24
21
  "release": "npx projen release",
22
+ "release:cdkv1": "npx projen release:cdkv1",
25
23
  "test": "npx projen test",
26
24
  "test:update": "npx projen test:update",
27
25
  "test:watch": "npx projen test:watch",
@@ -36,16 +34,18 @@
36
34
  "organization": false
37
35
  },
38
36
  "devDependencies": {
39
- "@aws-cdk/assert": "^1.73.0",
40
37
  "@types/jest": "^27.0.3",
41
38
  "@types/node": "^14.17.0",
42
39
  "@typescript-eslint/eslint-plugin": "^5",
43
40
  "@typescript-eslint/parser": "^5",
41
+ "aws-cdk-lib": "2.1.0",
42
+ "cdk-spot-one": "2.0.0",
43
+ "constructs": "10.0.5",
44
44
  "eslint": "^8",
45
45
  "eslint-import-resolver-node": "^0.3.6",
46
46
  "eslint-import-resolver-typescript": "^2.5.0",
47
47
  "eslint-plugin-import": "^2.25.3",
48
- "jest": "^27.4.3",
48
+ "jest": "^27.4.4",
49
49
  "jest-junit": "^13",
50
50
  "jsii": "^1.47.0",
51
51
  "jsii-diff": "^1.47.0",
@@ -53,25 +53,18 @@
53
53
  "jsii-pacmak": "^1.47.0",
54
54
  "json-schema": "^0.4.0",
55
55
  "npm-check-updates": "^11",
56
- "projen": "^0.38.2",
56
+ "projen": "^0.40.1",
57
57
  "standard-version": "^9",
58
- "ts-jest": "^27.1.0",
59
- "typescript": "^4.5.2"
58
+ "ts-jest": "^27.1.1",
59
+ "typescript": "^4.5.3"
60
60
  },
61
61
  "peerDependencies": {
62
- "@aws-cdk/aws-autoscaling": "^1.73.0",
63
- "@aws-cdk/aws-ec2": "^1.73.0",
64
- "@aws-cdk/aws-iam": "^1.73.0",
65
- "@aws-cdk/core": "^1.73.0",
66
- "cdk-spot-one": "^0.6.346",
67
- "constructs": "^3.2.27"
62
+ "aws-cdk-lib": "^2.1.0",
63
+ "cdk-spot-one": "^2",
64
+ "constructs": "^10.0.5"
68
65
  },
69
66
  "dependencies": {
70
- "@aws-cdk/aws-autoscaling": "^1.73.0",
71
- "@aws-cdk/aws-ec2": "^1.73.0",
72
- "@aws-cdk/aws-iam": "^1.73.0",
73
- "@aws-cdk/core": "^1.73.0",
74
- "cdk-spot-one": "^0.6.346"
67
+ "cdk-spot-one": "^2"
75
68
  },
76
69
  "bundledDependencies": [],
77
70
  "keywords": [
@@ -79,7 +72,7 @@
79
72
  ],
80
73
  "main": "lib/index.js",
81
74
  "license": "Apache-2.0",
82
- "version": "0.1.70",
75
+ "version": "2.0.0",
83
76
  "jest": {
84
77
  "testMatch": [
85
78
  "**/__tests__/**/*.ts?(x)",