@rio-cloud/cdk-v2-constructs 7.12.1 → 7.12.3

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/docs/API.md CHANGED
@@ -1423,7 +1423,9 @@ Check whether the given object is a CfnResource.
1423
1423
  | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.ref">ref</a></code> | <code>string</code> | Return a string that will be resolved to a CloudFormation `{ Ref }` for this element. |
1424
1424
  | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.cfnOptions">cfnOptions</a></code> | <code>aws-cdk-lib.ICfnResourceOptions</code> | Options for this resource, such as condition, update policy etc. |
1425
1425
  | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.cfnResourceType">cfnResourceType</a></code> | <code>string</code> | AWS resource type. |
1426
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.env">env</a></code> | <code>aws-cdk-lib.interfaces.ResourceEnvironment</code> | *No description.* |
1426
1427
  | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.attrId">attrId</a></code> | <code>string</code> | *No description.* |
1428
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.tableRef">tableRef</a></code> | <code>aws-cdk-lib.interfaces.aws_glue.TableReference</code> | A reference to a Table resource. |
1427
1429
  | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.catalogId">catalogId</a></code> | <code>string</code> | The ID of the Data Catalog in which to create the `Table` . |
1428
1430
  | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.databaseName">databaseName</a></code> | <code>string</code> | The name of the database where the table metadata resides. |
1429
1431
  | <code><a href="#@rio-cloud/cdk-v2-constructs.CsvTable.property.tableInput">tableInput</a></code> | <code>aws-cdk-lib.IResolvable \| aws-cdk-lib.aws_glue.CfnTable.TableInputProperty</code> | A structure used to define a table. |
@@ -1523,6 +1525,16 @@ AWS resource type.
1523
1525
 
1524
1526
  ---
1525
1527
 
1528
+ ##### `env`<sup>Required</sup> <a name="env" id="@rio-cloud/cdk-v2-constructs.CsvTable.property.env"></a>
1529
+
1530
+ ```typescript
1531
+ public readonly env: ResourceEnvironment;
1532
+ ```
1533
+
1534
+ - *Type:* aws-cdk-lib.interfaces.ResourceEnvironment
1535
+
1536
+ ---
1537
+
1526
1538
  ##### `attrId`<sup>Required</sup> <a name="attrId" id="@rio-cloud/cdk-v2-constructs.CsvTable.property.attrId"></a>
1527
1539
 
1528
1540
  ```typescript
@@ -1533,6 +1545,18 @@ public readonly attrId: string;
1533
1545
 
1534
1546
  ---
1535
1547
 
1548
+ ##### `tableRef`<sup>Required</sup> <a name="tableRef" id="@rio-cloud/cdk-v2-constructs.CsvTable.property.tableRef"></a>
1549
+
1550
+ ```typescript
1551
+ public readonly tableRef: TableReference;
1552
+ ```
1553
+
1554
+ - *Type:* aws-cdk-lib.interfaces.aws_glue.TableReference
1555
+
1556
+ A reference to a Table resource.
1557
+
1558
+ ---
1559
+
1536
1560
  ##### `catalogId`<sup>Required</sup> <a name="catalogId" id="@rio-cloud/cdk-v2-constructs.CsvTable.property.catalogId"></a>
1537
1561
 
1538
1562
  ```typescript
@@ -2869,6 +2893,7 @@ For "owned" secrets, this will be the full resource name (secret name + suffix),
2869
2893
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.addToResourcePolicy">addToResourcePolicy</a></code> | Adds a statement to the IAM resource policy associated with this secret. |
2870
2894
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.applyRemovalPolicy">applyRemovalPolicy</a></code> | Apply the given removal policy to this resource. |
2871
2895
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.attach">attach</a></code> | Attach a target to this secret. |
2896
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.cfnDynamicReferenceKey">cfnDynamicReferenceKey</a></code> | Returns a key which can be used within an AWS CloudFormation dynamic reference to dynamically load this secret from AWS Secrets Manager. |
2872
2897
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.denyAccountRootDelete">denyAccountRootDelete</a></code> | Denies the `DeleteSecret` action to all principals within the current account. |
2873
2898
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.getSecret">getSecret</a></code> | *No description.* |
2874
2899
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.getSecretValue">getSecretValue</a></code> | *No description.* |
@@ -2960,6 +2985,20 @@ Attach a target to this secret.
2960
2985
 
2961
2986
  ---
2962
2987
 
2988
+ ##### `cfnDynamicReferenceKey` <a name="cfnDynamicReferenceKey" id="@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.cfnDynamicReferenceKey"></a>
2989
+
2990
+ ```typescript
2991
+ public cfnDynamicReferenceKey(options?: SecretsManagerSecretOptions): string
2992
+ ```
2993
+
2994
+ Returns a key which can be used within an AWS CloudFormation dynamic reference to dynamically load this secret from AWS Secrets Manager.
2995
+
2996
+ ###### `options`<sup>Optional</sup> <a name="options" id="@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.cfnDynamicReferenceKey.parameter.options"></a>
2997
+
2998
+ - *Type:* aws-cdk-lib.SecretsManagerSecretOptions
2999
+
3000
+ ---
3001
+
2963
3002
  ##### `denyAccountRootDelete` <a name="denyAccountRootDelete" id="@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.denyAccountRootDelete"></a>
2964
3003
 
2965
3004
  ```typescript
@@ -3085,7 +3124,7 @@ Any object.
3085
3124
  | **Name** | **Type** | **Description** |
3086
3125
  | --- | --- | --- |
3087
3126
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
3088
- | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.property.env">env</a></code> | <code>aws-cdk-lib.ResourceEnvironment</code> | The environment this resource belongs to. |
3127
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.property.env">env</a></code> | <code>aws-cdk-lib.interfaces.ResourceEnvironment</code> | The environment this resource belongs to. |
3089
3128
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.property.secretArn">secretArn</a></code> | <code>string</code> | The ARN of the secret in AWS Secrets Manager. |
3090
3129
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.property.secretName">secretName</a></code> | <code>string</code> | The name of the secret. |
3091
3130
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials.property.secretValue">secretValue</a></code> | <code>aws-cdk-lib.SecretValue</code> | Retrieve the value of the stored secret as a `SecretValue`. |
@@ -3113,16 +3152,17 @@ The tree node.
3113
3152
  public readonly env: ResourceEnvironment;
3114
3153
  ```
3115
3154
 
3116
- - *Type:* aws-cdk-lib.ResourceEnvironment
3155
+ - *Type:* aws-cdk-lib.interfaces.ResourceEnvironment
3117
3156
 
3118
3157
  The environment this resource belongs to.
3119
3158
 
3120
- For resources that are created and managed by the CDK
3121
- (generally, those created by creating new class instances like Role, Bucket, etc.),
3122
- this is always the same as the environment of the stack they belong to;
3123
- however, for imported resources
3124
- (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
3125
- that might be different than the stack they were imported into.
3159
+ For resources that are created and managed in a Stack (those created by
3160
+ creating new class instances like `new Role()`, `new Bucket()`, etc.), this
3161
+ is always the same as the environment of the stack they belong to.
3162
+
3163
+ For referenced resources (those obtained from referencing methods like
3164
+ `Role.fromRoleArn()`, `Bucket.fromBucketName()`, etc.), they might be
3165
+ different than the stack they were imported into.
3126
3166
 
3127
3167
  ---
3128
3168
 
@@ -3277,6 +3317,7 @@ For "owned" secrets, this will be the full resource name (secret name + suffix),
3277
3317
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.addToResourcePolicy">addToResourcePolicy</a></code> | Adds a statement to the IAM resource policy associated with this secret. |
3278
3318
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.applyRemovalPolicy">applyRemovalPolicy</a></code> | Apply the given removal policy to this resource. |
3279
3319
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.attach">attach</a></code> | Attach a target to this secret. |
3320
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.cfnDynamicReferenceKey">cfnDynamicReferenceKey</a></code> | Returns a key which can be used within an AWS CloudFormation dynamic reference to dynamically load this secret from AWS Secrets Manager. |
3280
3321
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.denyAccountRootDelete">denyAccountRootDelete</a></code> | Denies the `DeleteSecret` action to all principals within the current account. |
3281
3322
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.grantRead">grantRead</a></code> | Grants reading the secret value to some role. |
3282
3323
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.grantWrite">grantWrite</a></code> | Grants writing and updating the secret value to some role. |
@@ -3366,6 +3407,20 @@ Attach a target to this secret.
3366
3407
 
3367
3408
  ---
3368
3409
 
3410
+ ##### `cfnDynamicReferenceKey` <a name="cfnDynamicReferenceKey" id="@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.cfnDynamicReferenceKey"></a>
3411
+
3412
+ ```typescript
3413
+ public cfnDynamicReferenceKey(options?: SecretsManagerSecretOptions): string
3414
+ ```
3415
+
3416
+ Returns a key which can be used within an AWS CloudFormation dynamic reference to dynamically load this secret from AWS Secrets Manager.
3417
+
3418
+ ###### `options`<sup>Optional</sup> <a name="options" id="@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.cfnDynamicReferenceKey.parameter.options"></a>
3419
+
3420
+ - *Type:* aws-cdk-lib.SecretsManagerSecretOptions
3421
+
3422
+ ---
3423
+
3369
3424
  ##### `denyAccountRootDelete` <a name="denyAccountRootDelete" id="@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.denyAccountRootDelete"></a>
3370
3425
 
3371
3426
  ```typescript
@@ -3501,7 +3556,7 @@ This static function resolves to the json credentials secret that contains ['Api
3501
3556
  | **Name** | **Type** | **Description** |
3502
3557
  | --- | --- | --- |
3503
3558
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
3504
- | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.property.env">env</a></code> | <code>aws-cdk-lib.ResourceEnvironment</code> | The environment this resource belongs to. |
3559
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.property.env">env</a></code> | <code>aws-cdk-lib.interfaces.ResourceEnvironment</code> | The environment this resource belongs to. |
3505
3560
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.property.secretArn">secretArn</a></code> | <code>string</code> | The ARN of the secret in AWS Secrets Manager. |
3506
3561
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.property.secretName">secretName</a></code> | <code>string</code> | The name of the secret. |
3507
3562
  | <code><a href="#@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedSecret.property.secretValue">secretValue</a></code> | <code>aws-cdk-lib.SecretValue</code> | Retrieve the value of the stored secret as a `SecretValue`. |
@@ -3529,16 +3584,17 @@ The tree node.
3529
3584
  public readonly env: ResourceEnvironment;
3530
3585
  ```
3531
3586
 
3532
- - *Type:* aws-cdk-lib.ResourceEnvironment
3587
+ - *Type:* aws-cdk-lib.interfaces.ResourceEnvironment
3533
3588
 
3534
3589
  The environment this resource belongs to.
3535
3590
 
3536
- For resources that are created and managed by the CDK
3537
- (generally, those created by creating new class instances like Role, Bucket, etc.),
3538
- this is always the same as the environment of the stack they belong to;
3539
- however, for imported resources
3540
- (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
3541
- that might be different than the stack they were imported into.
3591
+ For resources that are created and managed in a Stack (those created by
3592
+ creating new class instances like `new Role()`, `new Bucket()`, etc.), this
3593
+ is always the same as the environment of the stack they belong to.
3594
+
3595
+ For referenced resources (those obtained from referencing methods like
3596
+ `Role.fromRoleArn()`, `Bucket.fromBucketName()`, etc.), they might be
3597
+ different than the stack they were imported into.
3542
3598
 
3543
3599
  ---
3544
3600
 
@@ -4376,6 +4432,7 @@ Check whether the given object is a CfnResource.
4376
4432
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DownloadableDatadogDashboard.property.ref">ref</a></code> | <code>string</code> | Return a string that will be resolved to a CloudFormation `{ Ref }` for this element. |
4377
4433
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DownloadableDatadogDashboard.property.cfnOptions">cfnOptions</a></code> | <code>aws-cdk-lib.ICfnResourceOptions</code> | Options for this resource, such as condition, update policy etc. |
4378
4434
  | <code><a href="#@rio-cloud/cdk-v2-constructs.DownloadableDatadogDashboard.property.cfnResourceType">cfnResourceType</a></code> | <code>string</code> | AWS resource type. |
4435
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.DownloadableDatadogDashboard.property.env">env</a></code> | <code>aws-cdk-lib.interfaces.ResourceEnvironment</code> | *No description.* |
4379
4436
 
4380
4437
  ---
4381
4438
 
@@ -4471,6 +4528,16 @@ AWS resource type.
4471
4528
 
4472
4529
  ---
4473
4530
 
4531
+ ##### `env`<sup>Required</sup> <a name="env" id="@rio-cloud/cdk-v2-constructs.DownloadableDatadogDashboard.property.env"></a>
4532
+
4533
+ ```typescript
4534
+ public readonly env: ResourceEnvironment;
4535
+ ```
4536
+
4537
+ - *Type:* aws-cdk-lib.interfaces.ResourceEnvironment
4538
+
4539
+ ---
4540
+
4474
4541
 
4475
4542
  ### GitlabRunner <a name="GitlabRunner" id="@rio-cloud/cdk-v2-constructs.GitlabRunner"></a>
4476
4543
 
@@ -8445,7 +8512,7 @@ Check whether the given construct is a Resource.
8445
8512
  | **Name** | **Type** | **Description** |
8446
8513
  | --- | --- | --- |
8447
8514
  | <code><a href="#@rio-cloud/cdk-v2-constructs.ViewTable.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
8448
- | <code><a href="#@rio-cloud/cdk-v2-constructs.ViewTable.property.env">env</a></code> | <code>aws-cdk-lib.ResourceEnvironment</code> | The environment this resource belongs to. |
8515
+ | <code><a href="#@rio-cloud/cdk-v2-constructs.ViewTable.property.env">env</a></code> | <code>aws-cdk-lib.interfaces.ResourceEnvironment</code> | The environment this resource belongs to. |
8449
8516
  | <code><a href="#@rio-cloud/cdk-v2-constructs.ViewTable.property.stack">stack</a></code> | <code>aws-cdk-lib.Stack</code> | The stack in which this resource is defined. |
8450
8517
 
8451
8518
  ---
@@ -8468,16 +8535,17 @@ The tree node.
8468
8535
  public readonly env: ResourceEnvironment;
8469
8536
  ```
8470
8537
 
8471
- - *Type:* aws-cdk-lib.ResourceEnvironment
8538
+ - *Type:* aws-cdk-lib.interfaces.ResourceEnvironment
8472
8539
 
8473
8540
  The environment this resource belongs to.
8474
8541
 
8475
- For resources that are created and managed by the CDK
8476
- (generally, those created by creating new class instances like Role, Bucket, etc.),
8477
- this is always the same as the environment of the stack they belong to;
8478
- however, for imported resources
8479
- (those obtained from static methods like fromRoleArn, fromBucketName, etc.),
8480
- that might be different than the stack they were imported into.
8542
+ For resources that are created and managed in a Stack (those created by
8543
+ creating new class instances like `new Role()`, `new Bucket()`, etc.), this
8544
+ is always the same as the environment of the stack they belong to.
8545
+
8546
+ For referenced resources (those obtained from referencing methods like
8547
+ `Role.fromRoleArn()`, `Bucket.fromBucketName()`, etc.), they might be
8548
+ different than the stack they were imported into.
8481
8549
 
8482
8550
  ---
8483
8551
 
@@ -10437,7 +10505,7 @@ public readonly notificationArns: string[];
10437
10505
  ```
10438
10506
 
10439
10507
  - *Type:* string[]
10440
- - *Default:* no notfication arns.
10508
+ - *Default:* no notification arns.
10441
10509
 
10442
10510
  SNS Topic ARNs that will receive stack events.
10443
10511
 
@@ -17253,7 +17321,7 @@ public readonly notificationArns: string[];
17253
17321
  ```
17254
17322
 
17255
17323
  - *Type:* string[]
17256
- - *Default:* no notfication arns.
17324
+ - *Default:* no notification arns.
17257
17325
 
17258
17326
  SNS Topic ARNs that will receive stack events.
17259
17327
 
package/docs/changelog.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [7.12.3](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.12.2&sourceBranch=refs%2Ftags%2Fv7.12.3) (2025-11-17)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * Incompatibility issue because of aws-cdk-lib@2.224.0 ([4535c7f](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/commits/4535c7fe843b180a13716b9e3a7ce859956e512c))
11
+
12
+ ## [7.12.2](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.12.1&sourceBranch=refs%2Ftags%2Fv7.12.2) (2025-11-17)
13
+
5
14
  ## [7.12.1](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.12.1-alpha.0&sourceBranch=refs%2Ftags%2Fv7.12.1) (2025-11-12)
6
15
 
7
16
  ## [7.12.1-alpha.0](https://bitbucket.collaboration-man.com/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv7.12.0&sourceBranch=refs%2Ftags%2Fv7.12.1-alpha.0) (2025-11-03)
@@ -22,6 +22,7 @@ declare abstract class SharedSecret extends constructs.Construct implements sec.
22
22
  denyAccountRootDelete(): void;
23
23
  attach(_target: sec.ISecretAttachmentTarget): sec.ISecret;
24
24
  applyRemovalPolicy(_policy: cdk.RemovalPolicy): void;
25
+ cfnDynamicReferenceKey(options?: cdk.SecretsManagerSecretOptions): string;
25
26
  }
26
27
  /**
27
28
  * A custom resource that resolves the Datadog API keys from a shared secret
@@ -131,6 +131,9 @@ class SharedSecret extends constructs.Construct {
131
131
  applyRemovalPolicy(_policy) {
132
132
  throw new Error('Method not allowed.');
133
133
  }
134
+ cfnDynamicReferenceKey(options) {
135
+ return this.secret.cfnDynamicReferenceKey(options);
136
+ }
134
137
  }
135
138
  /**
136
139
  * A custom resource that resolves the Datadog API keys from a shared secret
@@ -189,4 +192,4 @@ class DatadogSharedCredentials extends SharedSecret {
189
192
  exports.DatadogSharedCredentials = DatadogSharedCredentials;
190
193
  _b = JSII_RTTI_SYMBOL_1;
191
194
  DatadogSharedCredentials[_b] = { fqn: "@rio-cloud/cdk-v2-constructs.datadogv2.DatadogSharedCredentials", version: "0.0.0" };
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9ndjIvZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLHNEQUFzRDtBQUN0RCxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLDRDQUFvRDtBQUdwRCxNQUFNLHNCQUFzQixHQUFXLGNBQWMsQ0FBQztBQUN0RCxNQUFNLHlCQUF5QixHQUFXLGNBQWMsQ0FBQztBQUV6RCxNQUFNLDBCQUEwQixHQUFXLGNBQWMsQ0FBQztBQUUxRCxNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsTUFBTSxJQUFJLDBCQUEwQixvQ0FBb0MsQ0FBQztBQUMxSixNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsTUFBTSxJQUFJLDBCQUEwQixpQ0FBaUMsQ0FBQztBQUVwSixNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQztBQUMvQyxNQUFNLG1CQUFtQixHQUFHLCtCQUErQixDQUFDO0FBQzVELE1BQU0sdUJBQXVCLEdBQUcsb0NBQW9DLENBQUM7QUFFckUsTUFBZSxZQUFhLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDOUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQWdCO1FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSx5QkFBeUIsRUFBRTtZQUNoRixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0NBQWdDLENBQUMsRUFBRTtnQkFDbEYsT0FBTyxFQUFF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QUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEMsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQXdCLENBQUM7UUFDekQsQ0FBQztRQUNELE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQTJCO1FBQ2xELE1BQU0sRUFBRSxHQUFHLHVCQUF1QixDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBNkIsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsT0FBTyxJQUFJLHdCQUF3QixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUN2RSxDQUFDOztBQXhCSCxrREEwQkM7OztBQUlEOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLHdCQUF5QixTQUFRLFlBQVk7SUFFeEQsY0FBYyxDQUFDLEtBQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxTQUFTLENBQUMsS0FBWTtRQUNwQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUUzRCxDQUFDOztBQVRILDREQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgc2VjIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBERUZBVUxUX05PREVfUlVOVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cblxuY29uc3QgRVVfTEFORElOR19aT05FX09SR19JRDogc3RyaW5nID0gJ28tcjVqZmw3bWJyOSc7XG5jb25zdCBMQVRBTV9MQU5ESU5HX1pPTkVfT1JHX0lEOiBzdHJpbmcgPSAnby01ajEydXQ1MjR3JztcblxuY29uc3QgREVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUQ6IHN0cmluZyA9ICc1NzcxNDY4OTc3ODUnO1xuXG5jb25zdCBzaGFyZWRMYXRhbVNlY3JldEFyblByZWZpeCA9IChyZWdpb246IHN0cmluZykgPT4gYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtyZWdpb259OiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OnNlY3JldDovZGF0YWRvZy1pbnRlZ3JhdGlvbi9sYXRhbWA7XG5jb25zdCBzaGFyZWRFdVNlY3JldEFyblByZWZpeCA9IChyZWdpb246IHN0cmluZykgPT4gYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtyZWdpb259OiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OnNlY3JldDovZGF0YWRvZy1pbnRlZ3JhdGlvbi9ldWA7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ19fT3JnQ3JlZGVudGlhbHNTZWNyZXRfXyc7XG5jb25zdCBBUElfS0VZX1JFU09VUkNFX0lEID0gJ19fRGF0YWRvZ0FwaUtleVNoYXJlZFNlY3JldF9fJztcbmNvbnN0IENSRURFTlRJQUxTX1JFU09VUkNFX0lEID0gJ19fRGF0YWRvZ0NyZWRlbnRpYWxzU2hhcmVkU2VjcmV0X18nO1xuXG5hYnN0cmFjdCBjbGFzcyBTaGFyZWRTZWNyZXQgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCBpbXBsZW1lbnRzIHNlYy5JU2VjcmV0IHtcbiAgcHJpdmF0ZSBzdGF0aWMgc2V0dXBDdXN0b21SZXNvdXJjZShzdGFjazogY2RrLlN0YWNrKTogY3IuUHJvdmlkZXIge1xuICAgIGNvbnN0IHNlY3JldExvY2F0b3JMYW1iZGEgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHN0YWNrLCAnUmVzb2x2ZVNlY3JldEFybkhhbmRsZXInLCB7XG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NlY3JldC1sb2NhdG9yLWN1c3RvbS1yZXNvdXJjZScpLCB7XG4gICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgIH0pLFxuICAgICAgaGFuZGxlcjogJ29uLWNyZWF0ZS5oYW5kbGVyJyxcbiAgICAgIHJ1bnRpbWU6IERFRkFVTFRfTk9ERV9SVU5USU1FLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIGxvZ0dyb3VwOiBuZXcgbG9ncy5Mb2dHcm91cChzdGFjaywgJ0RhdGFkb2dTaGFyZWRTZWNyZXRIYW5kbGVyTG9nR3JvdXAnLCB7XG4gICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgICAgfSksXG4gICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg2KSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNIQVJFRF9MQVRBTV9TRUNSRVRfQVJOX1BSRUZJWDogc2hhcmVkTGF0YW1TZWNyZXRBcm5QcmVmaXgoc3RhY2sucmVnaW9uKSxcbiAgICAgICAgU0hBUkVEX0VVX1NFQ1JFVF9BUk5fUFJFRklYOiBzaGFyZWRFdVNlY3JldEFyblByZWZpeChzdGFjay5yZWdpb24pLFxuICAgICAgICBMQVRBTV9MQU5ESU5HX1pPTkVfT1JHX0lEOiBMQVRBTV9MQU5ESU5HX1pPTkVfT1JHX0lELFxuICAgICAgICBFVV9MQU5ESU5HX1pPTkVfT1JHX0lEOiBFVV9MQU5ESU5HX1pPTkVfT1JHX0lELFxuICAgICAgfSxcbiAgICB9KTtcbiAgICAvLyB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIG9yZGVyIG9mIGFzcGVjdHMgaW4gQ0RLLCB3ZSBuZWVkIHRvIGFkZCB0aGUgdGFnIGRpcmVjdGx5LlxuICAgIG5ldyBjZGsuVGFnKCdXYXRjaGZ1bCcsICdmYWxzZScpLnZpc2l0KHNlY3JldExvY2F0b3JMYW1iZGEubm9kZS5kZWZhdWx0Q2hpbGQhKTtcblxuICAgIHNlY3JldExvY2F0b3JMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHsgYWN0aW9uczogWydvcmdhbml6YXRpb25zOkRlc2NyaWJlT3JnYW5pemF0aW9uJ10sIHJlc291cmNlczogWycqJ10gfSkpO1xuICAgIHNlY3JldExvY2F0b3JMYW1iZGEuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3NlY3JldHNtYW5hZ2VyOkRlc2NyaWJlU2VjcmV0J10sXG4gICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7c3RhY2sucmVnaW9ufToke0RFVkVMT1BFUl9UT09MU19BQ0NPVU5UX0lEfTpzZWNyZXQ6KmBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHN0YWNrLCBSRVNPVVJDRV9JRCwge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHNlY3JldExvY2F0b3JMYW1iZGEsXG4gICAgfSk7XG4gICAgLy8gdG8gcHJldmVudCBpc3N1ZXMgd2l0aCBvcmRlciBvZiBhc3BlY3RzIGluIENESywgd2UgbmVlZCB0byBhZGQgdGhlIHRhZyBkaXJlY3RseS5cbiAgICBuZXcgY2RrLlRhZygnV2F0Y2hmdWwnLCAnZmFsc2UnKS52aXNpdChwcm92aWRlci5ub2RlLmZpbmRDaGlsZCgnZnJhbWV3b3JrLW9uRXZlbnQnKS5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuICAgIHJldHVybiBwcm92aWRlcjtcbiAgfVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VjcmV0OiBzZWMuSVNlY3JldDtcblxuICBwcml2YXRlIGN1c3RvbVJlc291cmNlOiBjci5Qcm92aWRlcjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuSUNvbnN0cnVjdCwgaWQ6IHN0cmluZywgc2VjcmV0TmFtZTogc3RyaW5nICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZih0aGlzKTtcbiAgICBpZiAoIXN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFJFU09VUkNFX0lEKSkge1xuICAgICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IFNoYXJlZFNlY3JldC5zZXR1cEN1c3RvbVJlc291cmNlKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IHN0YWNrLm5vZGUuZmluZENoaWxkKFJFU09VUkNFX0lEKSBhcyBjci5Qcm92aWRlcjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWNyZXRMb2NhdG9yID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCAnRGF0YWRvZ1NoYXJlZFNlY3JldCcsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5jdXN0b21SZXNvdXJjZS5zZXJ2aWNlVG9rZW4sXG4gICAgICBwYXNjYWxDYXNlUHJvcGVydGllczogdHJ1ZSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgc2VjcmV0TmFtZTogc2VjcmV0TmFtZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlY3JldCA9IHNlYy5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsICdSZXNvdXJjZScsIHNlY3JldExvY2F0b3IuZ2V0QXR0KCdTZWNyZXRBcm4nKS50b1N0cmluZygpKTtcbiAgfVxuXG4gIGdldCBzdGFjaygpOiBjZGsuU3RhY2sge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zdGFjaztcbiAgfVxuXG4gIGdldCBlbnYoKTogY2RrLlJlc291cmNlRW52aXJvbm1lbnQge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5lbnY7XG4gIH1cblxuICBnZXQgZW5jcnlwdGlvbktleSgpIDogY2RrLmF3c19rbXMuSUtleSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBzZWNyZXRBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0QXJuO1xuICB9O1xuXG4gIGdldCBzZWNyZXRGdWxsQXJuKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldEZ1bGxBcm47XG4gIH1cblxuICBnZXQgc2VjcmV0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXROYW1lO1xuICB9XG5cbiAgZ2V0IHNlY3JldFZhbHVlKCk6IGNkay5TZWNyZXRWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldFZhbHVlO1xuICB9XG5cbiAgc2VjcmV0VmFsdWVGcm9tSnNvbihrZXk6IHN0cmluZyk6IGNkay5TZWNyZXRWYWx1ZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldFZhbHVlRnJvbUpzb24oa2V5KTtcbiAgfVxuXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgdmVyc2lvblN0YWdlcz86IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICBjb25zdCByZXN1bHQgPSBncmFudGVlLmdyYW50UHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmttczoqOiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OmtleS8qYF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICdGb3JBbnlWYWx1ZTpTdHJpbmdMaWtlJzoge1xuICAgICAgICAgICdrbXM6UmVzb3VyY2VBbGlhc2VzJzogJ2FsaWFzL2RhdGFkb2ctaW50ZWdyYXRpb24tc2hhcmVkLWNyZWRlbnRpYWxzLWtleScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBpZiAoIXJlc3VsdC5zdGF0ZW1lbnRBZGRlZCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoJ0NvdWxkIG5vdCBhZGQgc3RhdGVtZW50IHRvIHRoZSBwcmluY2lwYWwgcG9saWN5LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGdyYW50ZWUsIHZlcnNpb25TdGFnZXMpO1xuICB9XG5cbiAgZ3JhbnRXcml0ZShfZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgYWRkUm90YXRpb25TY2hlZHVsZShfaWQ6IHN0cmluZywgX29wdGlvbnM6IHNlYy5Sb3RhdGlvblNjaGVkdWxlT3B0aW9ucyk6IHNlYy5Sb3RhdGlvblNjaGVkdWxlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGFkZFRvUmVzb3VyY2VQb2xpY3koX3N0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGRlbnlBY2NvdW50Um9vdERlbGV0ZSgpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGF0dGFjaChfdGFyZ2V0OiBzZWMuSVNlY3JldEF0dGFjaG1lbnRUYXJnZXQpOiBzZWMuSVNlY3JldCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhcHBseVJlbW92YWxQb2xpY3koX3BvbGljeTogY2RrLlJlbW92YWxQb2xpY3kpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxufVxuXG4vKipcbiAqIEEgY3VzdG9tIHJlc291cmNlIHRoYXQgcmVzb2x2ZXMgdGhlIERhdGFkb2cgQVBJIGtleXMgZnJvbSBhIHNoYXJlZCBzZWNyZXRcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkYXRhZG9nQXBpS2V5ID0gRGF0YWRvZ1NoYXJlZFNlY3JldC5hcGlLZXlTZWNyZXQodGhpcyk7XG4gKlxuICogY29uc3QgZGF0YWRvZ1NlY3JldCA9IERhdGFkb2dTaGFyZWRTZWNyZXQuY3JlZGVudGlhbHNTZWNyZXQodGhpcyk7XG4gKiBjb25zdCBkYXRhZG9nU2l0ZSA9IGRhdGFkb2dTZWNyZXQuZ2V0U2VjcmV0KCdTaXRlJyk7XG4gKiBjb25zdCBkYXRhZG9nQXBpS2V5ID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXQoJ0FwaUtleScpO1xuICogY29uc3QgZGF0YWRvZ0FwaUtleVZhbHVlID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXRWYWx1ZSgnQXBpS2V5Jyk7XG4gKiBjb25zdCBkYXRhZG9nQXBpS2V5VmFsdWUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldFZhbHVlKCdBcHBsaWNhdGlvbktleScpO1xuICovXG5leHBvcnQgY2xhc3MgRGF0YWRvZ1NoYXJlZFNlY3JldCBleHRlbmRzIFNoYXJlZFNlY3JldCB7XG5cbiAgLyoqXG4gICAqIFRoaXMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmVzIHRvIHRoZSBwbGFpbiBhcGkta2V5IHNlY3JldCwgdGhhdCBjYW4gYmUgdXNlZCBmb3IgdGhlIGxvZyBmb3J3YXJkZXIgb3IgdGhlIExhbWJkYSBpbnN0cnVtZW50YXRpb24uXG4gICAqL1xuICBzdGF0aWMgYXBpS2V5U2VjcmV0KHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCk6IERhdGFkb2dTaGFyZWRTZWNyZXQge1xuICAgIGNvbnN0IGlkID0gQVBJX0tFWV9SRVNPVVJDRV9JRDtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSk7XG4gICAgaWYgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSkge1xuICAgICAgcmV0dXJuIHN0YWNrLm5vZGUuZmluZENoaWxkKGlkKSBhcyBEYXRhZG9nU2hhcmVkU2VjcmV0O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IERhdGFkb2dTaGFyZWRTZWNyZXQoc3RhY2ssIGlkLCAnc2hhcmVkLWFwaS1rZXknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlcyB0byB0aGUganNvbiBjcmVkZW50aWFscyBzZWNyZXQgdGhhdCBjb250YWlucyBbJ0FwaUtleScsICdBcHBsaWNhdGlvbktleScsICdTaXRlJ10uXG4gICAqL1xuICBzdGF0aWMgY3JlZGVudGlhbHNTZWNyZXQoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KTogRGF0YWRvZ1NoYXJlZENyZWRlbnRpYWxzIHtcbiAgICBjb25zdCBpZCA9IENSRURFTlRJQUxTX1JFU09VUkNFX0lEO1xuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHNjb3BlKTtcbiAgICBpZiAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoaWQpKSB7XG4gICAgICByZXR1cm4gc3RhY2subm9kZS5maW5kQ2hpbGQoaWQpIGFzIERhdGFkb2dTaGFyZWRDcmVkZW50aWFscztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nU2hhcmVkQ3JlZGVudGlhbHMoc2NvcGUsIGlkLCAnc2hhcmVkLWNyZWRlbnRpYWxzJyk7XG4gIH1cblxufVxuXG50eXBlIEZpZWxkID0gJ0FwcGxpY2F0aW9uS2V5JyB8ICdTaXRlJyB8ICdBcGlLZXknXG5cbi8qXG4gICogQSBjdXN0b20gcmVzb3VyY2UgdGhhdCByZXNvbHZlcyB0aGUgRGF0YWRvZyBjcmVkZW50aWFscyBmcm9tIGEgc2hhcmVkIHNlY3JldFxuICAqIEBleGFtcGxlXG4gICogY29uc3QgZGF0YWRvZ1NlY3JldCA9IERhdGFkb2dTaGFyZWRTZWNyZXQuY3JlZGVudGlhbHNTZWNyZXQodGhpcyk7XG4gICogY29uc3QgZGF0YWRvZ1NpdGUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldFZhbHVlKCdTaXRlJykudW5zYWZlVW53cmFwKCk7XG4gICogY29uc3QgZGF0YWRvZ0FwaUtleSA9IGRhdGFkb2dTZWNyZXQuZ2V0U2VjcmV0KCdBcGlLZXknKTtcbiAgKiBjb25zdCBkYXRhZG9nQXBpS2V5VmFsdWUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldFZhbHVlKCdBcHBsaWNhdGlvbktleScpO1xuICovXG5leHBvcnQgY2xhc3MgRGF0YWRvZ1NoYXJlZENyZWRlbnRpYWxzIGV4dGVuZHMgU2hhcmVkU2VjcmV0IHtcblxuICBnZXRTZWNyZXRWYWx1ZShmaWVsZDogRmllbGQpIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0VmFsdWVGcm9tSnNvbihmaWVsZCk7XG4gIH1cblxuICBnZXRTZWNyZXQoZmllbGQ6IEZpZWxkKSB7XG4gICAgcmV0dXJuIGVjcy5TZWNyZXQuZnJvbVNlY3JldHNNYW5hZ2VyKHRoaXMuc2VjcmV0LCBmaWVsZCk7XG5cbiAgfVxuXG59Il19
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9ndjIvZGF0YWRvZy1zaGFyZWQtc2VjcmV0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFFbkMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLHNEQUFzRDtBQUN0RCxtREFBbUQ7QUFDbkQseUNBQXlDO0FBQ3pDLDRDQUFvRDtBQUdwRCxNQUFNLHNCQUFzQixHQUFXLGNBQWMsQ0FBQztBQUN0RCxNQUFNLHlCQUF5QixHQUFXLGNBQWMsQ0FBQztBQUV6RCxNQUFNLDBCQUEwQixHQUFXLGNBQWMsQ0FBQztBQUUxRCxNQUFNLDBCQUEwQixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsTUFBTSxJQUFJLDBCQUEwQixvQ0FBb0MsQ0FBQztBQUMxSixNQUFNLHVCQUF1QixHQUFHLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsTUFBTSxJQUFJLDBCQUEwQixpQ0FBaUMsQ0FBQztBQUVwSixNQUFNLFdBQVcsR0FBRywwQkFBMEIsQ0FBQztBQUMvQyxNQUFNLG1CQUFtQixHQUFHLCtCQUErQixDQUFDO0FBQzVELE1BQU0sdUJBQXVCLEdBQUcsb0NBQW9DLENBQUM7QUFFckUsTUFBZSxZQUFhLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDOUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQWdCO1FBQ2pELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSx5QkFBeUIsRUFBRTtZQUNoRixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0NBQWdDLENBQUMsRUFBRTtnQkFDbEYsT0FBTyxFQUFF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Q29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBzZWMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERFRkFVTFRfTk9ERV9SVU5USU1FIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcblxuXG5jb25zdCBFVV9MQU5ESU5HX1pPTkVfT1JHX0lEOiBzdHJpbmcgPSAnby1yNWpmbDdtYnI5JztcbmNvbnN0IExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IHN0cmluZyA9ICdvLTVqMTJ1dDUyNHcnO1xuXG5jb25zdCBERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRDogc3RyaW5nID0gJzU3NzE0Njg5Nzc4NSc7XG5cbmNvbnN0IHNoYXJlZExhdGFtU2VjcmV0QXJuUHJlZml4ID0gKHJlZ2lvbjogc3RyaW5nKSA9PiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3JlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0Oi9kYXRhZG9nLWludGVncmF0aW9uL2xhdGFtYDtcbmNvbnN0IHNoYXJlZEV1U2VjcmV0QXJuUHJlZml4ID0gKHJlZ2lvbjogc3RyaW5nKSA9PiBgYXJuOmF3czpzZWNyZXRzbWFuYWdlcjoke3JlZ2lvbn06JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06c2VjcmV0Oi9kYXRhZG9nLWludGVncmF0aW9uL2V1YDtcblxuY29uc3QgUkVTT1VSQ0VfSUQgPSAnX19PcmdDcmVkZW50aWFsc1NlY3JldF9fJztcbmNvbnN0IEFQSV9LRVlfUkVTT1VSQ0VfSUQgPSAnX19EYXRhZG9nQXBpS2V5U2hhcmVkU2VjcmV0X18nO1xuY29uc3QgQ1JFREVOVElBTFNfUkVTT1VSQ0VfSUQgPSAnX19EYXRhZG9nQ3JlZGVudGlhbHNTaGFyZWRTZWNyZXRfXyc7XG5cbmFic3RyYWN0IGNsYXNzIFNoYXJlZFNlY3JldCBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IGltcGxlbWVudHMgc2VjLklTZWNyZXQge1xuICBwcml2YXRlIHN0YXRpYyBzZXR1cEN1c3RvbVJlc291cmNlKHN0YWNrOiBjZGsuU3RhY2spOiBjci5Qcm92aWRlciB7XG4gICAgY29uc3Qgc2VjcmV0TG9jYXRvckxhbWJkYSA9IG5ldyBsYW1iZGEuRnVuY3Rpb24oc3RhY2ssICdSZXNvbHZlU2VjcmV0QXJuSGFuZGxlcicsIHtcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc2VjcmV0LWxvY2F0b3ItY3VzdG9tLXJlc291cmNlJyksIHtcbiAgICAgICAgZXhjbHVkZTogWycqLmpzJywgJyouZC50cyddLFxuICAgICAgfSksXG4gICAgICBoYW5kbGVyOiAnb24tY3JlYXRlLmhhbmRsZXInLFxuICAgICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgbG9nR3JvdXA6IG5ldyBsb2dzLkxvZ0dyb3VwKHN0YWNrLCAnRGF0YWRvZ1NoYXJlZFNlY3JldEhhbmRsZXJMb2dHcm91cCcsIHtcbiAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDYpLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgU0hBUkVEX0xBVEFNX1NFQ1JFVF9BUk5fUFJFRklYOiBzaGFyZWRMYXRhbVNlY3JldEFyblByZWZpeChzdGFjay5yZWdpb24pLFxuICAgICAgICBTSEFSRURfRVVfU0VDUkVUX0FSTl9QUkVGSVg6IHNoYXJlZEV1U2VjcmV0QXJuUHJlZml4KHN0YWNrLnJlZ2lvbiksXG4gICAgICAgIExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IExBVEFNX0xBTkRJTkdfWk9ORV9PUkdfSUQsXG4gICAgICAgIEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQ6IEVVX0xBTkRJTkdfWk9ORV9PUkdfSUQsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIC8vIHRvIHByZXZlbnQgaXNzdWVzIHdpdGggb3JkZXIgb2YgYXNwZWN0cyBpbiBDREssIHdlIG5lZWQgdG8gYWRkIHRoZSB0YWcgZGlyZWN0bHkuXG4gICAgbmV3IGNkay5UYWcoJ1dhdGNoZnVsJywgJ2ZhbHNlJykudmlzaXQoc2VjcmV0TG9jYXRvckxhbWJkYS5ub2RlLmRlZmF1bHRDaGlsZCEpO1xuXG4gICAgc2VjcmV0TG9jYXRvckxhbWJkYS5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoeyBhY3Rpb25zOiBbJ29yZ2FuaXphdGlvbnM6RGVzY3JpYmVPcmdhbml6YXRpb24nXSwgcmVzb3VyY2VzOiBbJyonXSB9KSk7XG4gICAgc2VjcmV0TG9jYXRvckxhbWJkYS5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtzdGFjay5yZWdpb259OiR7REVWRUxPUEVSX1RPT0xTX0FDQ09VTlRfSUR9OnNlY3JldDoqYF0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIoc3RhY2ssIFJFU09VUkNFX0lELCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogc2VjcmV0TG9jYXRvckxhbWJkYSxcbiAgICB9KTtcbiAgICAvLyB0byBwcmV2ZW50IGlzc3VlcyB3aXRoIG9yZGVyIG9mIGFzcGVjdHMgaW4gQ0RLLCB3ZSBuZWVkIHRvIGFkZCB0aGUgdGFnIGRpcmVjdGx5LlxuICAgIG5ldyBjZGsuVGFnKCdXYXRjaGZ1bCcsICdmYWxzZScpLnZpc2l0KHByb3ZpZGVyLm5vZGUuZmluZENoaWxkKCdmcmFtZXdvcmstb25FdmVudCcpLm5vZGUuZGVmYXVsdENoaWxkISk7XG4gICAgcmV0dXJuIHByb3ZpZGVyO1xuICB9XG4gIHByb3RlY3RlZCByZWFkb25seSBzZWNyZXQ6IHNlYy5JU2VjcmV0O1xuXG4gIHByaXZhdGUgY3VzdG9tUmVzb3VyY2U6IGNyLlByb3ZpZGVyO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5JQ29uc3RydWN0LCBpZDogc3RyaW5nLCBzZWNyZXROYW1lOiBzdHJpbmcgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHN0YWNrID0gY2RrLlN0YWNrLm9mKHRoaXMpO1xuICAgIGlmICghc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoUkVTT1VSQ0VfSUQpKSB7XG4gICAgICB0aGlzLmN1c3RvbVJlc291cmNlID0gU2hhcmVkU2VjcmV0LnNldHVwQ3VzdG9tUmVzb3VyY2Uoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmN1c3RvbVJlc291cmNlID0gc3RhY2subm9kZS5maW5kQ2hpbGQoUkVTT1VSQ0VfSUQpIGFzIGNyLlByb3ZpZGVyO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3JldExvY2F0b3IgPSBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdEYXRhZG9nU2hhcmVkU2VjcmV0Jywge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmN1c3RvbVJlc291cmNlLnNlcnZpY2VUb2tlbixcbiAgICAgIHBhc2NhbENhc2VQcm9wZXJ0aWVzOiB0cnVlLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBzZWNyZXROYW1lOiBzZWNyZXROYW1lLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuc2VjcmV0ID0gc2VjLlNlY3JldC5mcm9tU2VjcmV0Q29tcGxldGVBcm4odGhpcywgJ1Jlc291cmNlJywgc2VjcmV0TG9jYXRvci5nZXRBdHQoJ1NlY3JldEFybicpLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgZ2V0IHN0YWNrKCk6IGNkay5TdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnN0YWNrO1xuICB9XG5cbiAgZ2V0IGVudigpOiBjZGsuUmVzb3VyY2VFbnZpcm9ubWVudCB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LmVudjtcbiAgfVxuXG4gIGdldCBlbmNyeXB0aW9uS2V5KCkgOiBjZGsuYXdzX2ttcy5JS2V5IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IHNlY3JldEFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNlY3JldC5zZWNyZXRBcm47XG4gIH07XG5cbiAgZ2V0IHNlY3JldEZ1bGxBcm4oKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0RnVsbEFybjtcbiAgfVxuXG4gIGdldCBzZWNyZXROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldE5hbWU7XG4gIH1cblxuICBnZXQgc2VjcmV0VmFsdWUoKTogY2RrLlNlY3JldFZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0VmFsdWU7XG4gIH1cblxuICBzZWNyZXRWYWx1ZUZyb21Kc29uKGtleTogc3RyaW5nKTogY2RrLlNlY3JldFZhbHVlIHtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQuc2VjcmV0VmFsdWVGcm9tSnNvbihrZXkpO1xuICB9XG5cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCB2ZXJzaW9uU3RhZ2VzPzogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIGNvbnN0IHJlc3VsdCA9IGdyYW50ZWUuZ3JhbnRQcmluY2lwYWwuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydrbXM6RGVjcnlwdCddLFxuICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6a21zOio6JHtERVZFTE9QRVJfVE9PTFNfQUNDT1VOVF9JRH06a2V5LypgXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgJ0ZvckFueVZhbHVlOlN0cmluZ0xpa2UnOiB7XG4gICAgICAgICAgJ2ttczpSZXNvdXJjZUFsaWFzZXMnOiAnYWxpYXMvZGF0YWRvZy1pbnRlZ3JhdGlvbi1zaGFyZWQtY3JlZGVudGlhbHMta2V5JyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSkpO1xuICAgIGlmICghcmVzdWx0LnN0YXRlbWVudEFkZGVkKSB7XG4gICAgICBjZGsuQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZygnQ291bGQgbm90IGFkZCBzdGF0ZW1lbnQgdG8gdGhlIHByaW5jaXBhbCBwb2xpY3kuJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlY3JldC5ncmFudFJlYWQoZ3JhbnRlZSwgdmVyc2lvblN0YWdlcyk7XG4gIH1cblxuICBncmFudFdyaXRlKF9ncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGFsbG93ZWQuJyk7XG4gIH1cblxuICBhZGRSb3RhdGlvblNjaGVkdWxlKF9pZDogc3RyaW5nLCBfb3B0aW9uczogc2VjLlJvdGF0aW9uU2NoZWR1bGVPcHRpb25zKTogc2VjLlJvdGF0aW9uU2NoZWR1bGUge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgYWRkVG9SZXNvdXJjZVBvbGljeShfc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50KTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgZGVueUFjY291bnRSb290RGVsZXRlKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgYXR0YWNoKF90YXJnZXQ6IHNlYy5JU2VjcmV0QXR0YWNobWVudFRhcmdldCk6IHNlYy5JU2VjcmV0IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgYWxsb3dlZC4nKTtcbiAgfVxuXG4gIGFwcGx5UmVtb3ZhbFBvbGljeShfcG9saWN5OiBjZGsuUmVtb3ZhbFBvbGljeSk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBhbGxvd2VkLicpO1xuICB9XG5cbiAgY2ZuRHluYW1pY1JlZmVyZW5jZUtleShvcHRpb25zPzogY2RrLlNlY3JldHNNYW5hZ2VyU2VjcmV0T3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LmNmbkR5bmFtaWNSZWZlcmVuY2VLZXkob3B0aW9ucyk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIGN1c3RvbSByZXNvdXJjZSB0aGF0IHJlc29sdmVzIHRoZSBEYXRhZG9nIEFQSSBrZXlzIGZyb20gYSBzaGFyZWQgc2VjcmV0XG4gKiBAZXhhbXBsZVxuICogY29uc3QgZGF0YWRvZ0FwaUtleSA9IERhdGFkb2dTaGFyZWRTZWNyZXQuYXBpS2V5U2VjcmV0KHRoaXMpO1xuICpcbiAqIGNvbnN0IGRhdGFkb2dTZWNyZXQgPSBEYXRhZG9nU2hhcmVkU2VjcmV0LmNyZWRlbnRpYWxzU2VjcmV0KHRoaXMpO1xuICogY29uc3QgZGF0YWRvZ1NpdGUgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldCgnU2l0ZScpO1xuICogY29uc3QgZGF0YWRvZ0FwaUtleSA9IGRhdGFkb2dTZWNyZXQuZ2V0U2VjcmV0KCdBcGlLZXknKTtcbiAqIGNvbnN0IGRhdGFkb2dBcGlLZXlWYWx1ZSA9IGRhdGFkb2dTZWNyZXQuZ2V0U2VjcmV0VmFsdWUoJ0FwaUtleScpO1xuICogY29uc3QgZGF0YWRvZ0FwaUtleVZhbHVlID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXRWYWx1ZSgnQXBwbGljYXRpb25LZXknKTtcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFkb2dTaGFyZWRTZWNyZXQgZXh0ZW5kcyBTaGFyZWRTZWNyZXQge1xuXG4gIC8qKlxuICAgKiBUaGlzIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlcyB0byB0aGUgcGxhaW4gYXBpLWtleSBzZWNyZXQsIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHRoZSBsb2cgZm9yd2FyZGVyIG9yIHRoZSBMYW1iZGEgaW5zdHJ1bWVudGF0aW9uLlxuICAgKi9cbiAgc3RhdGljIGFwaUtleVNlY3JldChzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpOiBEYXRhZG9nU2hhcmVkU2VjcmV0IHtcbiAgICBjb25zdCBpZCA9IEFQSV9LRVlfUkVTT1VSQ0VfSUQ7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpO1xuICAgIGlmIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkpIHtcbiAgICAgIHJldHVybiBzdGFjay5ub2RlLmZpbmRDaGlsZChpZCkgYXMgRGF0YWRvZ1NoYXJlZFNlY3JldDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nU2hhcmVkU2VjcmV0KHN0YWNrLCBpZCwgJ3NoYXJlZC1hcGkta2V5Jyk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZXMgdG8gdGhlIGpzb24gY3JlZGVudGlhbHMgc2VjcmV0IHRoYXQgY29udGFpbnMgWydBcGlLZXknLCAnQXBwbGljYXRpb25LZXknLCAnU2l0ZSddLlxuICAgKi9cbiAgc3RhdGljIGNyZWRlbnRpYWxzU2VjcmV0KHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCk6IERhdGFkb2dTaGFyZWRDcmVkZW50aWFscyB7XG4gICAgY29uc3QgaWQgPSBDUkVERU5USUFMU19SRVNPVVJDRV9JRDtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSk7XG4gICAgaWYgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSkge1xuICAgICAgcmV0dXJuIHN0YWNrLm5vZGUuZmluZENoaWxkKGlkKSBhcyBEYXRhZG9nU2hhcmVkQ3JlZGVudGlhbHM7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRGF0YWRvZ1NoYXJlZENyZWRlbnRpYWxzKHNjb3BlLCBpZCwgJ3NoYXJlZC1jcmVkZW50aWFscycpO1xuICB9XG5cbn1cblxudHlwZSBGaWVsZCA9ICdBcHBsaWNhdGlvbktleScgfCAnU2l0ZScgfCAnQXBpS2V5J1xuXG4vKlxuICAqIEEgY3VzdG9tIHJlc291cmNlIHRoYXQgcmVzb2x2ZXMgdGhlIERhdGFkb2cgY3JlZGVudGlhbHMgZnJvbSBhIHNoYXJlZCBzZWNyZXRcbiAgKiBAZXhhbXBsZVxuICAqIGNvbnN0IGRhdGFkb2dTZWNyZXQgPSBEYXRhZG9nU2hhcmVkU2VjcmV0LmNyZWRlbnRpYWxzU2VjcmV0KHRoaXMpO1xuICAqIGNvbnN0IGRhdGFkb2dTaXRlID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXRWYWx1ZSgnU2l0ZScpLnVuc2FmZVVud3JhcCgpO1xuICAqIGNvbnN0IGRhdGFkb2dBcGlLZXkgPSBkYXRhZG9nU2VjcmV0LmdldFNlY3JldCgnQXBpS2V5Jyk7XG4gICogY29uc3QgZGF0YWRvZ0FwaUtleVZhbHVlID0gZGF0YWRvZ1NlY3JldC5nZXRTZWNyZXRWYWx1ZSgnQXBwbGljYXRpb25LZXknKTtcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFkb2dTaGFyZWRDcmVkZW50aWFscyBleHRlbmRzIFNoYXJlZFNlY3JldCB7XG5cbiAgZ2V0U2VjcmV0VmFsdWUoZmllbGQ6IEZpZWxkKSB7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0LnNlY3JldFZhbHVlRnJvbUpzb24oZmllbGQpO1xuICB9XG5cbiAgZ2V0U2VjcmV0KGZpZWxkOiBGaWVsZCkge1xuICAgIHJldHVybiBlY3MuU2VjcmV0LmZyb21TZWNyZXRzTWFuYWdlcih0aGlzLnNlY3JldCwgZmllbGQpO1xuXG4gIH1cblxufSJdfQ==
@@ -4,11 +4,11 @@ JS-YAML - YAML 1.2 parser / writer for JavaScript
4
4
  [![CI](https://github.com/nodeca/js-yaml/workflows/CI/badge.svg?branch=master)](https://github.com/nodeca/js-yaml/actions)
5
5
  [![NPM version](https://img.shields.io/npm/v/js-yaml.svg)](https://www.npmjs.org/package/js-yaml)
6
6
 
7
- __[Online Demo](http://nodeca.github.com/js-yaml/)__
7
+ __[Online Demo](https://nodeca.github.io/js-yaml/)__
8
8
 
9
9
 
10
- This is an implementation of [YAML](http://yaml.org/), a human-friendly data
11
- serialization language. Started as [PyYAML](http://pyyaml.org/) port, it was
10
+ This is an implementation of [YAML](https://yaml.org/), a human-friendly data
11
+ serialization language. Started as [PyYAML](https://pyyaml.org/) port, it was
12
12
  completely rewritten from scratch. Now it's very fast, and supports 1.2 spec.
13
13
 
14
14
 
@@ -81,11 +81,11 @@ options:
81
81
  Loader will call this function with an instance of `YAMLException` for each warning.
82
82
  - `schema` _(default: `DEFAULT_SCHEMA`)_ - specifies a schema to use.
83
83
  - `FAILSAFE_SCHEMA` - only strings, arrays and plain objects:
84
- http://www.yaml.org/spec/1.2/spec.html#id2802346
84
+ https://www.yaml.org/spec/1.2/spec.html#id2802346
85
85
  - `JSON_SCHEMA` - all JSON-supported types:
86
- http://www.yaml.org/spec/1.2/spec.html#id2803231
86
+ https://www.yaml.org/spec/1.2/spec.html#id2803231
87
87
  - `CORE_SCHEMA` - same as `JSON_SCHEMA`:
88
- http://www.yaml.org/spec/1.2/spec.html#id2804923
88
+ https://www.yaml.org/spec/1.2/spec.html#id2804923
89
89
  - `DEFAULT_SCHEMA` - all supported YAML types.
90
90
  - `json` _(default: false)_ - compatibility with JSON.parse behaviour. If true, then duplicate keys in a mapping will override values rather than throwing an error.
91
91
 
@@ -149,6 +149,7 @@ output is shown on the right side after `=>` (default setting) or `->`:
149
149
  "lowercase" => "null"
150
150
  "uppercase" -> "NULL"
151
151
  "camelcase" -> "Null"
152
+ "empty" -> ""
152
153
 
153
154
  !!int
154
155
  "binary" -> "0b1", "0b101010", "0b1110001111010"
@@ -182,8 +183,8 @@ Supported YAML types
182
183
  --------------------
183
184
 
184
185
  The list of standard YAML tags and corresponding JavaScript types. See also
185
- [YAML tag discussion](http://pyyaml.org/wiki/YAMLTagDiscussion) and
186
- [YAML types repository](http://yaml.org/type/).
186
+ [YAML tag discussion](https://pyyaml.org/wiki/YAMLTagDiscussion) and
187
+ [YAML types repository](https://yaml.org/type/).
187
188
 
188
189
  ```
189
190
  !!null '' # null
@@ -1,10 +1,10 @@
1
1
 
2
- /*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
2
+ /*! js-yaml 4.1.1 https://github.com/nodeca/js-yaml @license MIT */
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
5
5
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
6
6
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.jsyaml = {}));
7
- }(this, (function (exports) { 'use strict';
7
+ })(this, (function (exports) { 'use strict';
8
8
 
9
9
  function isNothing(subject) {
10
10
  return (typeof subject === 'undefined') || (subject === null);
@@ -1216,6 +1216,22 @@
1216
1216
  );
1217
1217
  }
1218
1218
 
1219
+ // set a property of a literal object, while protecting against prototype pollution,
1220
+ // see https://github.com/nodeca/js-yaml/issues/164 for more details
1221
+ function setProperty(object, key, value) {
1222
+ // used for this specific key only because Object.defineProperty is slow
1223
+ if (key === '__proto__') {
1224
+ Object.defineProperty(object, key, {
1225
+ configurable: true,
1226
+ enumerable: true,
1227
+ writable: true,
1228
+ value: value
1229
+ });
1230
+ } else {
1231
+ object[key] = value;
1232
+ }
1233
+ }
1234
+
1219
1235
  var simpleEscapeCheck = new Array(256); // integer, for fast access
1220
1236
  var simpleEscapeMap = new Array(256);
1221
1237
  for (var i = 0; i < 256; i++) {
@@ -1394,7 +1410,7 @@
1394
1410
  key = sourceKeys[index];
1395
1411
 
1396
1412
  if (!_hasOwnProperty$1.call(destination, key)) {
1397
- destination[key] = source[key];
1413
+ setProperty(destination, key, source[key]);
1398
1414
  overridableKeys[key] = true;
1399
1415
  }
1400
1416
  }
@@ -1454,17 +1470,7 @@
1454
1470
  throwError(state, 'duplicated mapping key');
1455
1471
  }
1456
1472
 
1457
- // used for this specific key only because Object.defineProperty is slow
1458
- if (keyNode === '__proto__') {
1459
- Object.defineProperty(_result, keyNode, {
1460
- configurable: true,
1461
- enumerable: true,
1462
- writable: true,
1463
- value: valueNode
1464
- });
1465
- } else {
1466
- _result[keyNode] = valueNode;
1467
- }
1473
+ setProperty(_result, keyNode, valueNode);
1468
1474
  delete overridableKeys[keyNode];
1469
1475
  }
1470
1476
 
@@ -3860,7 +3866,7 @@
3860
3866
  exports.Schema = Schema;
3861
3867
  exports.Type = Type;
3862
3868
  exports.YAMLException = YAMLException;
3863
- exports.default = jsYaml;
3869
+ exports["default"] = jsYaml;
3864
3870
  exports.dump = dump;
3865
3871
  exports.load = load;
3866
3872
  exports.loadAll = loadAll;
@@ -3871,4 +3877,4 @@
3871
3877
 
3872
3878
  Object.defineProperty(exports, '__esModule', { value: true });
3873
3879
 
3874
- })));
3880
+ }));