@aws-solutions-constructs/core 2.32.0 → 2.34.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/.jsii +1250 -247
- package/lib/alb-defaults.d.ts +3 -0
- package/lib/alb-defaults.js +8 -1
- package/lib/alb-helper.d.ts +29 -0
- package/lib/alb-helper.js +34 -9
- package/lib/apigateway-defaults.d.ts +10 -0
- package/lib/apigateway-defaults.js +15 -1
- package/lib/apigateway-helper.d.ts +43 -12
- package/lib/apigateway-helper.js +50 -46
- package/lib/cloudfront-distribution-defaults.d.ts +9 -0
- package/lib/cloudfront-distribution-defaults.js +10 -1
- package/lib/cloudfront-distribution-helper.d.ts +31 -3
- package/lib/cloudfront-distribution-helper.js +20 -4
- package/lib/cloudwatch-log-group-defaults.d.ts +3 -0
- package/lib/cloudwatch-log-group-defaults.js +8 -1
- package/lib/cloudwatch-log-group-helper.d.ts +3 -0
- package/lib/cloudwatch-log-group-helper.js +14 -7
- package/lib/cognito-defaults.d.ts +6 -0
- package/lib/cognito-defaults.js +7 -1
- package/lib/cognito-helper.d.ts +15 -0
- package/lib/cognito-helper.js +20 -1
- package/lib/dynamodb-table-defaults.js +5 -1
- package/lib/dynamodb-table-helper.d.ts +22 -2
- package/lib/dynamodb-table-helper.js +22 -6
- package/lib/elasticache-defaults.d.ts +6 -0
- package/lib/elasticache-defaults.js +11 -1
- package/lib/elasticache-helper.d.ts +9 -0
- package/lib/elasticache-helper.js +10 -1
- package/lib/elasticsearch-defaults.d.ts +3 -0
- package/lib/elasticsearch-defaults.js +4 -1
- package/lib/elasticsearch-helper.d.ts +11 -1
- package/lib/elasticsearch-helper.js +12 -2
- package/lib/eventbridge-helper.d.ts +3 -0
- package/lib/eventbridge-helper.js +4 -1
- package/lib/events-rule-defaults.d.ts +3 -0
- package/lib/events-rule-defaults.js +4 -1
- package/lib/fargate-defaults.d.ts +15 -0
- package/lib/fargate-defaults.js +16 -1
- package/lib/fargate-helper.d.ts +14 -1
- package/lib/fargate-helper.js +15 -4
- package/lib/glue-database-defaults.d.ts +1 -1
- package/lib/glue-database-defaults.js +2 -2
- package/lib/glue-database-helper.d.ts +2 -0
- package/lib/glue-database-helper.js +7 -1
- package/lib/glue-job-defaults.d.ts +3 -0
- package/lib/glue-job-defaults.js +4 -1
- package/lib/glue-job-helper.d.ts +26 -2
- package/lib/glue-job-helper.js +48 -34
- package/lib/glue-table-defaults.d.ts +3 -0
- package/lib/glue-table-defaults.js +4 -1
- package/lib/glue-table-helper.d.ts +2 -0
- package/lib/glue-table-helper.js +7 -1
- package/lib/input-validation.d.ts +6 -0
- package/lib/input-validation.js +7 -1
- package/lib/iot-topic-rule-defaults.d.ts +3 -0
- package/lib/iot-topic-rule-defaults.js +4 -1
- package/lib/kinesis-analytics-defaults.js +1 -1
- package/lib/kinesis-analytics-helper.d.ts +3 -0
- package/lib/kinesis-analytics-helper.js +8 -1
- package/lib/kinesis-firehose-s3-defaults.d.ts +3 -0
- package/lib/kinesis-firehose-s3-defaults.js +4 -1
- package/lib/kinesis-streams-defaults.js +5 -1
- package/lib/kinesis-streams-helper.d.ts +6 -0
- package/lib/kinesis-streams-helper.js +11 -1
- package/lib/kms-defaults.js +1 -1
- package/lib/kms-helper.d.ts +3 -0
- package/lib/kms-helper.js +8 -1
- package/lib/lambda-defaults.d.ts +3 -0
- package/lib/lambda-defaults.js +8 -1
- package/lib/lambda-event-source-mapping-defaults.d.ts +9 -0
- package/lib/lambda-event-source-mapping-defaults.js +14 -5
- package/lib/lambda-helper.d.ts +16 -0
- package/lib/lambda-helper.js +22 -5
- package/lib/mediastore-defaults.d.ts +3 -0
- package/lib/mediastore-defaults.js +8 -1
- package/lib/mediastore-helper.d.ts +3 -0
- package/lib/mediastore-helper.js +8 -1
- package/lib/opensearch-defaults.d.ts +3 -0
- package/lib/opensearch-defaults.js +4 -1
- package/lib/opensearch-helper.d.ts +11 -1
- package/lib/opensearch-helper.js +12 -2
- package/lib/override-warning-service.d.ts +2 -0
- package/lib/override-warning-service.js +7 -1
- package/lib/s3-bucket-defaults.d.ts +6 -0
- package/lib/s3-bucket-defaults.js +11 -1
- package/lib/s3-bucket-helper.d.ts +17 -1
- package/lib/s3-bucket-helper.js +14 -2
- package/lib/sagemaker-defaults.d.ts +12 -0
- package/lib/sagemaker-defaults.js +13 -1
- package/lib/sagemaker-helper.d.ts +36 -3
- package/lib/sagemaker-helper.js +44 -22
- package/lib/secretsmanager-defaults.js +1 -1
- package/lib/secretsmanager-helper.d.ts +2 -0
- package/lib/secretsmanager-helper.js +7 -1
- package/lib/security-group-helper.d.ts +6 -0
- package/lib/security-group-helper.js +11 -1
- package/lib/sns-defaults.js +1 -1
- package/lib/sns-helper.d.ts +8 -1
- package/lib/sns-helper.js +10 -3
- package/lib/sqs-defaults.d.ts +3 -0
- package/lib/sqs-defaults.js +8 -1
- package/lib/sqs-helper.d.ts +11 -1
- package/lib/sqs-helper.js +15 -5
- package/lib/ssm-string-parameter-helper.d.ts +2 -0
- package/lib/ssm-string-parameter-helper.js +7 -1
- package/lib/step-function-defaults.d.ts +3 -0
- package/lib/step-function-defaults.js +8 -1
- package/lib/step-function-helper.d.ts +10 -1
- package/lib/step-function-helper.js +42 -34
- package/lib/utils.d.ts +15 -1
- package/lib/utils.js +23 -3
- package/lib/vpc-defaults.d.ts +3 -3
- package/lib/vpc-defaults.js +8 -4
- package/lib/vpc-helper.d.ts +9 -0
- package/lib/vpc-helper.js +14 -1
- package/lib/waf-defaults.d.ts +9 -0
- package/lib/waf-defaults.js +10 -1
- package/lib/waf-helper.d.ts +3 -0
- package/lib/waf-helper.js +4 -1
- package/node_modules/deepmerge/.eslintcache +1 -0
- package/node_modules/deepmerge/changelog.md +4 -0
- package/node_modules/deepmerge/index.d.ts +5 -1
- package/node_modules/deepmerge/package.json +3 -4
- package/node_modules/deepmerge/readme.md +1 -1
- package/node_modules/readable-stream/README.md +2 -2
- package/node_modules/readable-stream/lib/_stream_readable.js +4 -4
- package/node_modules/readable-stream/lib/_stream_writable.js +6 -8
- package/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -1
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +14 -4
- package/node_modules/readable-stream/package.json +1 -1
- package/package.json +4 -4
- package/test/alb-helper.test.js +3 -3
- package/test/apigateway-helper.test.js +24 -24
- package/test/cloudfront-distribution-api-gateway-helper.test.js +3 -3
- package/test/cloudfront-distribution-s3-helper.test.js +20 -20
- package/test/dynamo-table.test.js +22 -8
- package/test/elasticsearch-helper.test.js +25 -9
- package/test/fargate-helper.test.js +4 -2
- package/test/glue-job-helper.test.js +59 -58
- package/test/input-validation.test.js +3 -3
- package/test/lambda-helper.test.js +32 -1
- package/test/opensearch-helper.test.js +17 -11
- package/test/s3-bucket-helper.test.js +44 -15
- package/test/sagemaker-helper.test.js +26 -34
- package/test/sns-helper.test.js +10 -4
- package/test/sqs-helper.test.js +12 -23
- package/test/step-function-helper.test.js +74 -18
- package/test/utils.test.js +20 -16
package/test/sqs-helper.test.js
CHANGED
|
@@ -20,9 +20,6 @@ require("@aws-cdk/assert/jest");
|
|
|
20
20
|
const sqs_helper_1 = require("../lib/sqs-helper");
|
|
21
21
|
const kms = require("aws-cdk-lib/aws-kms");
|
|
22
22
|
const __1 = require("../");
|
|
23
|
-
// --------------------------------------------------------------
|
|
24
|
-
// Test deployment w/ imported encryption key
|
|
25
|
-
// --------------------------------------------------------------
|
|
26
23
|
test('Test deployment w/ encryptionMasterKey set on queueProps', () => {
|
|
27
24
|
const stack = new aws_cdk_lib_1.Stack();
|
|
28
25
|
const cmk = new kms.Key(stack, 'EncryptionKey', {
|
|
@@ -35,9 +32,6 @@ test('Test deployment w/ encryptionMasterKey set on queueProps', () => {
|
|
|
35
32
|
});
|
|
36
33
|
__1.expectKmsKeyAttachedToCorrectResource(stack, 'AWS::SQS::Queue', 'kms-key-description');
|
|
37
34
|
});
|
|
38
|
-
// --------------------------------------------------------------
|
|
39
|
-
// Test deployment w/ imported encryption key
|
|
40
|
-
// --------------------------------------------------------------
|
|
41
35
|
test('Test deployment w/ imported encryption key', () => {
|
|
42
36
|
// Stack
|
|
43
37
|
const stack = new aws_cdk_lib_1.Stack();
|
|
@@ -56,9 +50,6 @@ test('Test deployment w/ imported encryption key', () => {
|
|
|
56
50
|
EnableKeyRotation: true
|
|
57
51
|
});
|
|
58
52
|
});
|
|
59
|
-
// --------------------------------------------------------------
|
|
60
|
-
// Test deployment without imported encryption key
|
|
61
|
-
// --------------------------------------------------------------
|
|
62
53
|
test('Test deployment without imported encryption key', () => {
|
|
63
54
|
// Stack
|
|
64
55
|
const stack = new aws_cdk_lib_1.Stack();
|
|
@@ -73,14 +64,11 @@ test('Test deployment without imported encryption key', () => {
|
|
|
73
64
|
KmsMasterKeyId: "alias/aws/sqs"
|
|
74
65
|
});
|
|
75
66
|
});
|
|
76
|
-
// --------------------------------------------------------------
|
|
77
|
-
// Test deployment w/ construct created encryption key
|
|
78
|
-
// --------------------------------------------------------------
|
|
79
67
|
test('Test deployment w/ construct created encryption key', () => {
|
|
80
68
|
// Stack
|
|
81
69
|
const stack = new aws_cdk_lib_1.Stack();
|
|
82
70
|
// Helper declaration
|
|
83
|
-
const
|
|
71
|
+
const buildQueueResponse = defaults.buildQueue(stack, 'existing-queue', {
|
|
84
72
|
queueProps: {
|
|
85
73
|
queueName: 'existing-queue'
|
|
86
74
|
},
|
|
@@ -92,8 +80,8 @@ test('Test deployment w/ construct created encryption key', () => {
|
|
|
92
80
|
expect(stack).toHaveResource("AWS::KMS::Key", {
|
|
93
81
|
EnableKeyRotation: true
|
|
94
82
|
});
|
|
95
|
-
expect(queue).toBeDefined();
|
|
96
|
-
expect(key).toBeDefined();
|
|
83
|
+
expect(buildQueueResponse.queue).toBeDefined();
|
|
84
|
+
expect(buildQueueResponse.key).toBeDefined();
|
|
97
85
|
});
|
|
98
86
|
test('Test DLQ when existing Queue Provided', () => {
|
|
99
87
|
const stack = new aws_cdk_lib_1.Stack();
|
|
@@ -139,27 +127,28 @@ test('Test returning an existing Queue', () => {
|
|
|
139
127
|
const existingQueue = new sqs.Queue(stack, 'test-queue', {
|
|
140
128
|
queueName: testQueueName
|
|
141
129
|
});
|
|
142
|
-
const
|
|
130
|
+
const buildQueueResponse = defaults.buildQueue(stack, 'newQueue', {
|
|
143
131
|
existingQueueObj: existingQueue
|
|
144
132
|
});
|
|
145
133
|
expect(stack).toHaveResourceLike("AWS::SQS::Queue", {
|
|
146
134
|
QueueName: testQueueName,
|
|
147
135
|
});
|
|
148
|
-
expect(existingQueue.queueName).toEqual(
|
|
136
|
+
expect(existingQueue.queueName).toEqual(buildQueueResponse.queue.queueName);
|
|
137
|
+
expect(buildQueueResponse.key).not.toBeDefined();
|
|
149
138
|
});
|
|
150
139
|
test('Test creating a queue with a DLQ', () => {
|
|
151
140
|
const stack = new aws_cdk_lib_1.Stack();
|
|
152
141
|
const dlqInterface = sqs_helper_1.buildDeadLetterQueue(stack, {});
|
|
153
|
-
const
|
|
142
|
+
const buildQueueResponse = sqs_helper_1.buildQueue(stack, 'new-queue', {
|
|
154
143
|
deadLetterQueue: dlqInterface
|
|
155
144
|
});
|
|
156
145
|
expect(stack).toCountResources("AWS::SQS::Queue", 2);
|
|
157
|
-
expect(
|
|
158
|
-
expect(
|
|
146
|
+
expect(buildQueueResponse.queue).toBeDefined();
|
|
147
|
+
expect(buildQueueResponse.queue.deadLetterQueue).toBeDefined();
|
|
159
148
|
});
|
|
160
149
|
test('Test creating a FIFO queue', () => {
|
|
161
150
|
const stack = new aws_cdk_lib_1.Stack();
|
|
162
|
-
const
|
|
151
|
+
const buildQueueResponse = sqs_helper_1.buildQueue(stack, 'new-queue', {
|
|
163
152
|
queueProps: {
|
|
164
153
|
fifo: true
|
|
165
154
|
}
|
|
@@ -167,6 +156,6 @@ test('Test creating a FIFO queue', () => {
|
|
|
167
156
|
expect(stack).toHaveResourceLike("AWS::SQS::Queue", {
|
|
168
157
|
FifoQueue: true
|
|
169
158
|
});
|
|
170
|
-
expect(
|
|
159
|
+
expect(buildQueueResponse.queue.fifo).toBe(true);
|
|
171
160
|
});
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3FzLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQW9DO0FBQ3BDLDJDQUEyQztBQUMzQyxnQ0FBZ0M7QUFDaEMsZ0NBQThCO0FBQzlCLGtEQUFxRTtBQUNyRSwyQ0FBMkM7QUFDM0MsMkJBQTREO0FBRTVELGlFQUFpRTtBQUNqRSw2Q0FBNkM7QUFDN0MsaUVBQWlFO0FBQ2pFLElBQUksQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7SUFDcEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUU7UUFDOUMsV0FBVyxFQUFFLHFCQUFxQjtLQUNuQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7UUFDbEMsVUFBVSxFQUFFO1lBQ1YsbUJBQW1CLEVBQUUsR0FBRztTQUN6QjtLQUNGLENBQUMsQ0FBQztJQUVILHlDQUFxQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQyxDQUFDO0FBRUgsaUVBQWlFO0FBQ2pFLDZDQUE2QztBQUM3QyxpRUFBaUU7QUFDakUsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIscUJBQXFCO0lBQ3JCLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1FBQzNDLFVBQVUsRUFBRTtZQUNWLFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUI7UUFDRCxzQ0FBc0MsRUFBRSxJQUFJO1FBQzVD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RUFBRSxXQUFXLEVBQUU7UUFDcEQsVUFBVSxFQUFFO1lBQ1YsSUFBSSxFQUFFLElBQUk7U0FDWDtLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRTtRQUNsRCxTQUFTLEVBQUUsSUFBSTtLQUNoQixDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8vIEltcG9ydHNcbmltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgKiBhcyBzcXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi8nO1xuaW1wb3J0ICdAYXdzLWNkay9hc3NlcnQvamVzdCc7XG5pbXBvcnQgeyBidWlsZERlYWRMZXR0ZXJRdWV1ZSwgYnVpbGRRdWV1ZSB9IGZyb20gXCIuLi9saWIvc3FzLWhlbHBlclwiO1xuaW1wb3J0ICogYXMga21zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHsgZXhwZWN0S21zS2V5QXR0YWNoZWRUb0NvcnJlY3RSZXNvdXJjZSB9IGZyb20gXCIuLi9cIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZGVwbG95bWVudCB3LyBpbXBvcnRlZCBlbmNyeXB0aW9uIGtleVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBlbmNyeXB0aW9uTWFzdGVyS2V5IHNldCBvbiBxdWV1ZVByb3BzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGNtayA9IG5ldyBrbXMuS2V5KHN0YWNrLCAnRW5jcnlwdGlvbktleScsIHtcbiAgICBkZXNjcmlwdGlvbjogJ2ttcy1rZXktZGVzY3JpcHRpb24nXG4gIH0pO1xuXG4gIGRlZmF1bHRzLmJ1aWxkUXVldWUoc3RhY2ssICdxdWV1ZScsIHtcbiAgICBxdWV1ZVByb3BzOiB7XG4gICAgICBlbmNyeXB0aW9uTWFzdGVyS2V5OiBjbWtcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdEttc0tleUF0dGFjaGVkVG9Db3JyZWN0UmVzb3VyY2Uoc3RhY2ssICdBV1M6OlNRUzo6UXVldWUnLCAna21zLWtleS1kZXNjcmlwdGlvbicpO1xufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0IGRlcGxveW1lbnQgdy8gaW1wb3J0ZWQgZW5jcnlwdGlvbiBrZXlcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IGRlcGxveW1lbnQgdy8gaW1wb3J0ZWQgZW5jcnlwdGlvbiBrZXknLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZFF1ZXVlKHN0YWNrLCAnZXhpc3RpbmctcXVldWUnLCB7XG4gICAgcXVldWVQcm9wczoge1xuICAgICAgcXVldWVOYW1lOiAnZXhpc3RpbmctcXVldWUnXG4gICAgfSxcbiAgICBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleTogdHJ1ZSxcbiAgICBlbmNyeXB0aW9uS2V5OiBkZWZhdWx0cy5idWlsZEVuY3J5cHRpb25LZXkoc3RhY2spXG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OlNRUzo6UXVldWVcIiwge1xuICAgIFF1ZXVlTmFtZTogXCJleGlzdGluZy1xdWV1ZVwiXG4gIH0pO1xuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpLTVM6OktleVwiLCB7XG4gICAgRW5hYmxlS2V5Um90YXRpb246IHRydWVcbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZGVwbG95bWVudCB3aXRob3V0IGltcG9ydGVkIGVuY3J5cHRpb24ga2V5XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBkZXBsb3ltZW50IHdpdGhvdXQgaW1wb3J0ZWQgZW5jcnlwdGlvbiBrZXknLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZFF1ZXVlKHN0YWNrLCAnZXhpc3RpbmctcXVldWUnLCB7XG4gICAgcXVldWVQcm9wczoge1xuICAgICAgcXVldWVOYW1lOiAnZXhpc3RpbmctcXVldWUnXG4gICAgfVxuICB9KTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBRdWV1ZU5hbWU6IFwiZXhpc3RpbmctcXVldWVcIixcbiAgICBLbXNNYXN0ZXJLZXlJZDogXCJhbGlhcy9hd3Mvc3FzXCJcbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZGVwbG95bWVudCB3LyBjb25zdHJ1Y3QgY3JlYXRlZCBlbmNyeXB0aW9uIGtleVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBjb25zdHJ1Y3QgY3JlYXRlZCBlbmNyeXB0aW9uIGtleScsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gSGVscGVyIGRlY2xhcmF0aW9uXG4gIGNvbnN0IFtxdWV1ZSwga2V5XSA9IGRlZmF1bHRzLmJ1aWxkUXVldWUoc3RhY2ssICdleGlzdGluZy1xdWV1ZScsIHtcbiAgICBxdWV1ZVByb3BzOiB7XG4gICAgICBxdWV1ZU5hbWU6ICdleGlzdGluZy1xdWV1ZSdcbiAgICB9LFxuICAgIGVuYWJsZUVuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5OiB0cnVlLFxuICB9KTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBRdWV1ZU5hbWU6IFwiZXhpc3RpbmctcXVldWVcIlxuICB9KTtcbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZShcIkFXUzo6S01TOjpLZXlcIiwge1xuICAgIEVuYWJsZUtleVJvdGF0aW9uOiB0cnVlXG4gIH0pO1xuICBleHBlY3QocXVldWUpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChrZXkpLnRvQmVEZWZpbmVkKCk7XG59KTtcblxudGVzdCgnVGVzdCBETFEgd2hlbiBleGlzdGluZyBRdWV1ZSBQcm92aWRlZCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBleGlzdGluZ1F1ZXVlID0gbmV3IHNxcy5RdWV1ZShzdGFjaywgJ3Rlc3QtcXVldWUnKTtcbiAgY29uc3QgYnVpbGREbHFQcm9wczogZGVmYXVsdHMuQnVpbGREZWFkTGV0dGVyUXVldWVQcm9wcyA9IHtcbiAgICBleGlzdGluZ1F1ZXVlT2JqOiBleGlzdGluZ1F1ZXVlLFxuICB9O1xuXG4gIGNvbnN0IHJldHVybmVkUXVldWUgPSBkZWZhdWx0cy5idWlsZERlYWRMZXR0ZXJRdWV1ZShzdGFjaywgYnVpbGREbHFQcm9wcyk7XG5cbiAgZXhwZWN0KHJldHVybmVkUXVldWUpLnRvQmVVbmRlZmluZWQoKTtcbiAgZXhwZWN0KHN0YWNrKS50b0NvdW50UmVzb3VyY2VzKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIDEpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgRExRIHdpdGggYWxsIGRlZmF1bHRzJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGJ1aWxkRGVhZExldHRlclF1ZXVlKHN0YWNrLCB7fSk7XG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBLbXNNYXN0ZXJLZXlJZDogXCJhbGlhcy9hd3Mvc3FzXCJcbiAgfSk7XG59KTtcblxudGVzdChcIlRlc3QgRExRIHdpdGggYSBwcm92aWRlZCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgdGVzdFF1ZXVlTmFtZSA9IFwidGVzdC11bmlxdWUyNTJcIjtcblxuICBjb25zdCByZXR1cm5lZFF1ZXVlID0gYnVpbGREZWFkTGV0dGVyUXVldWUoc3RhY2ssIHtcbiAgICBkZWFkTGV0dGVyUXVldWVQcm9wczoge1xuICAgICAgcXVldWVOYW1lOiB0ZXN0UXVldWVOYW1lLFxuICAgIH0sXG4gIH0pO1xuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlTGlrZShcIkFXUzo6U1FTOjpRdWV1ZVwiLCB7XG4gICAgUXVldWVOYW1lOiB0ZXN0UXVldWVOYW1lLFxuICB9KTtcbiAgZXhwZWN0KHJldHVybmVkUXVldWUpLnRvQmVEZWZpbmVkKCk7XG59KTtcblxudGVzdCgnVGVzdCBETFEgd2l0aCBhIHByb3ZpZGVkIG1heFJlY2VpdmVDb3VudCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgdGVzdE1heFJlY2VpdmVDb3VudCA9IDMxO1xuXG4gIGNvbnN0IGRscUludGVyZmFjZSA9IGJ1aWxkRGVhZExldHRlclF1ZXVlKHN0YWNrLCB7XG4gICAgbWF4UmVjZWl2ZUNvdW50OiB0ZXN0TWF4UmVjZWl2ZUNvdW50XG4gIH0pO1xuICBleHBlY3QoZGxxSW50ZXJmYWNlPy5tYXhSZWNlaXZlQ291bnQpLnRvRXF1YWwodGVzdE1heFJlY2VpdmVDb3VudCk7XG59KTtcblxudGVzdCgnVGVzdCByZXR1cm5pbmcgYW4gZXhpc3RpbmcgUXVldWUnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHRlc3RRdWV1ZU5hbWUgPSAnZXhpc3RpbmctcXVldWUnO1xuXG4gIGNvbnN0IGV4aXN0aW5nUXVldWUgPSBuZXcgc3FzLlF1ZXVlKHN0YWNrLCAndGVzdC1xdWV1ZScsIHtcbiAgICBxdWV1ZU5hbWU6IHRlc3RRdWV1ZU5hbWVcbiAgfSk7XG5cbiAgY29uc3QgW3JldHVybmVkUXVldWVdID0gZGVmYXVsdHMuYnVpbGRRdWV1ZShzdGFjaywgJ25ld1F1ZXVlJywge1xuICAgIGV4aXN0aW5nUXVldWVPYmo6IGV4aXN0aW5nUXVldWVcbiAgfSk7XG5cbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OlNRUzo6UXVldWVcIiwge1xuICAgIFF1ZXVlTmFtZTogdGVzdFF1ZXVlTmFtZSxcbiAgfSk7XG4gIGV4cGVjdChleGlzdGluZ1F1ZXVlLnF1ZXVlTmFtZSkudG9FcXVhbChyZXR1cm5lZFF1ZXVlLnF1ZXVlTmFtZSk7XG59KTtcblxudGVzdCgnVGVzdCBjcmVhdGluZyBhIHF1ZXVlIHdpdGggYSBETFEnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgZGxxSW50ZXJmYWNlID0gYnVpbGREZWFkTGV0dGVyUXVldWUoc3RhY2ssIHt9KTtcblxuICBjb25zdCBbbmV3UXVldWVdID0gYnVpbGRRdWV1ZShzdGFjaywgJ25ldy1xdWV1ZScsIHtcbiAgICBkZWFkTGV0dGVyUXVldWU6IGRscUludGVyZmFjZVxuICB9KTtcblxuICBleHBlY3Qoc3RhY2spLnRvQ291bnRSZXNvdXJjZXMoXCJBV1M6OlNRUzo6UXVldWVcIiwgMik7XG4gIGV4cGVjdChuZXdRdWV1ZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KG5ld1F1ZXVlLmRlYWRMZXR0ZXJRdWV1ZSkudG9CZURlZmluZWQoKTtcbn0pO1xuXG50ZXN0KCdUZXN0IGNyZWF0aW5nIGEgRklGTyBxdWV1ZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBbbmV3Rmlmb1F1ZXVlXSA9IGJ1aWxkUXVldWUoc3RhY2ssICduZXctcXVldWUnLCB7XG4gICAgcXVldWVQcm9wczoge1xuICAgICAgZmlmbzogdHJ1ZVxuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OlNRUzo6UXVldWVcIiwge1xuICAgIEZpZm9RdWV1ZTogdHJ1ZVxuICB9KTtcbiAgZXhwZWN0KG5ld0ZpZm9RdWV1ZS5maWZvKS50b0JlKHRydWUpO1xufSk7XG4iXX0=
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLWhlbHBlci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3FzLWhlbHBlci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUFFSCxVQUFVO0FBQ1YsNkNBQW9DO0FBQ3BDLDJDQUEyQztBQUMzQyxnQ0FBZ0M7QUFDaEMsZ0NBQThCO0FBQzlCLGtEQUFxRTtBQUNyRSwyQ0FBMkM7QUFDM0MsMkJBQTREO0FBRTVELElBQUksQ0FBQywwREFBMEQsRUFBRSxHQUFHLEVBQUU7SUFDcEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFFMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUU7UUFDOUMsV0FBVyxFQUFFLHFCQUFxQjtLQUNuQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7UUFDbEMsVUFBVSxFQUFFO1lBQ1YsbUJBQW1CLEVBQUUsR0FBRztTQUN6QjtLQUNGLENBQUMsQ0FBQztJQUVILHlDQUFxQyxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pGLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIscUJBQXFCO0lBQ3JCLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1FBQzNDLFVBQVUsRUFBRTtZQUNWLFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUI7UUFDRCxzQ0FBc0MsRUFBRSxJQUFJO1FBQzVDLGFBQWEsRUFBRSxRQUFRLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0tBQ2xELENBQUMsQ0FBQztJQUVILE1BQU0sQ0FBQyxLQUFL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O0lBRUgsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFO1FBQ2xELFNBQVMsRUFBRSxJQUFJO0tBQ2hCLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIHNxcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3FzJztcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uLyc7XG5pbXBvcnQgJ0Bhd3MtY2RrL2Fzc2VydC9qZXN0JztcbmltcG9ydCB7IGJ1aWxkRGVhZExldHRlclF1ZXVlLCBidWlsZFF1ZXVlIH0gZnJvbSBcIi4uL2xpYi9zcXMtaGVscGVyXCI7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgeyBleHBlY3RLbXNLZXlBdHRhY2hlZFRvQ29ycmVjdFJlc291cmNlIH0gZnJvbSBcIi4uL1wiO1xuXG50ZXN0KCdUZXN0IGRlcGxveW1lbnQgdy8gZW5jcnlwdGlvbk1hc3RlcktleSBzZXQgb24gcXVldWVQcm9wcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBjbWsgPSBuZXcga21zLktleShzdGFjaywgJ0VuY3J5cHRpb25LZXknLCB7XG4gICAgZGVzY3JpcHRpb246ICdrbXMta2V5LWRlc2NyaXB0aW9uJ1xuICB9KTtcblxuICBkZWZhdWx0cy5idWlsZFF1ZXVlKHN0YWNrLCAncXVldWUnLCB7XG4gICAgcXVldWVQcm9wczoge1xuICAgICAgZW5jcnlwdGlvbk1hc3RlcktleTogY21rXG4gICAgfVxuICB9KTtcblxuICBleHBlY3RLbXNLZXlBdHRhY2hlZFRvQ29ycmVjdFJlc291cmNlKHN0YWNrLCAnQVdTOjpTUVM6OlF1ZXVlJywgJ2ttcy1rZXktZGVzY3JpcHRpb24nKTtcbn0pO1xuXG50ZXN0KCdUZXN0IGRlcGxveW1lbnQgdy8gaW1wb3J0ZWQgZW5jcnlwdGlvbiBrZXknLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZFF1ZXVlKHN0YWNrLCAnZXhpc3RpbmctcXVldWUnLCB7XG4gICAgcXVldWVQcm9wczoge1xuICAgICAgcXVldWVOYW1lOiAnZXhpc3RpbmctcXVldWUnXG4gICAgfSxcbiAgICBlbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleTogdHJ1ZSxcbiAgICBlbmNyeXB0aW9uS2V5OiBkZWZhdWx0cy5idWlsZEVuY3J5cHRpb25LZXkoc3RhY2spXG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OlNRUzo6UXVldWVcIiwge1xuICAgIFF1ZXVlTmFtZTogXCJleGlzdGluZy1xdWV1ZVwiXG4gIH0pO1xuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpLTVM6OktleVwiLCB7XG4gICAgRW5hYmxlS2V5Um90YXRpb246IHRydWVcbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBkZXBsb3ltZW50IHdpdGhvdXQgaW1wb3J0ZWQgZW5jcnlwdGlvbiBrZXknLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIEhlbHBlciBkZWNsYXJhdGlvblxuICBkZWZhdWx0cy5idWlsZFF1ZXVlKHN0YWNrLCAnZXhpc3RpbmctcXVldWUnLCB7XG4gICAgcXVldWVQcm9wczoge1xuICAgICAgcXVldWVOYW1lOiAnZXhpc3RpbmctcXVldWUnXG4gICAgfVxuICB9KTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBRdWV1ZU5hbWU6IFwiZXhpc3RpbmctcXVldWVcIixcbiAgICBLbXNNYXN0ZXJLZXlJZDogXCJhbGlhcy9hd3Mvc3FzXCJcbiAgfSk7XG59KTtcblxudGVzdCgnVGVzdCBkZXBsb3ltZW50IHcvIGNvbnN0cnVjdCBjcmVhdGVkIGVuY3J5cHRpb24ga2V5JywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAvLyBIZWxwZXIgZGVjbGFyYXRpb25cbiAgY29uc3QgYnVpbGRRdWV1ZVJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRRdWV1ZShzdGFjaywgJ2V4aXN0aW5nLXF1ZXVlJywge1xuICAgIHF1ZXVlUHJvcHM6IHtcbiAgICAgIHF1ZXVlTmFtZTogJ2V4aXN0aW5nLXF1ZXVlJ1xuICAgIH0sXG4gICAgZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXk6IHRydWUsXG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OlNRUzo6UXVldWVcIiwge1xuICAgIFF1ZXVlTmFtZTogXCJleGlzdGluZy1xdWV1ZVwiXG4gIH0pO1xuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpLTVM6OktleVwiLCB7XG4gICAgRW5hYmxlS2V5Um90YXRpb246IHRydWVcbiAgfSk7XG4gIGV4cGVjdChidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChidWlsZFF1ZXVlUmVzcG9uc2Uua2V5KS50b0JlRGVmaW5lZCgpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgRExRIHdoZW4gZXhpc3RpbmcgUXVldWUgUHJvdmlkZWQnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgZXhpc3RpbmdRdWV1ZSA9IG5ldyBzcXMuUXVldWUoc3RhY2ssICd0ZXN0LXF1ZXVlJyk7XG4gIGNvbnN0IGJ1aWxkRGxxUHJvcHM6IGRlZmF1bHRzLkJ1aWxkRGVhZExldHRlclF1ZXVlUHJvcHMgPSB7XG4gICAgZXhpc3RpbmdRdWV1ZU9iajogZXhpc3RpbmdRdWV1ZSxcbiAgfTtcblxuICBjb25zdCByZXR1cm5lZFF1ZXVlID0gZGVmYXVsdHMuYnVpbGREZWFkTGV0dGVyUXVldWUoc3RhY2ssIGJ1aWxkRGxxUHJvcHMpO1xuXG4gIGV4cGVjdChyZXR1cm5lZFF1ZXVlKS50b0JlVW5kZWZpbmVkKCk7XG4gIGV4cGVjdChzdGFjaykudG9Db3VudFJlc291cmNlcyhcIkFXUzo6U1FTOjpRdWV1ZVwiLCAxKTtcbn0pO1xuXG50ZXN0KCdUZXN0IERMUSB3aXRoIGFsbCBkZWZhdWx0cycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBidWlsZERlYWRMZXR0ZXJRdWV1ZShzdGFjaywge30pO1xuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlTGlrZShcIkFXUzo6U1FTOjpRdWV1ZVwiLCB7XG4gICAgS21zTWFzdGVyS2V5SWQ6IFwiYWxpYXMvYXdzL3Nxc1wiXG4gIH0pO1xufSk7XG5cbnRlc3QoXCJUZXN0IERMUSB3aXRoIGEgcHJvdmlkZWQgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHRlc3RRdWV1ZU5hbWUgPSBcInRlc3QtdW5pcXVlMjUyXCI7XG5cbiAgY29uc3QgcmV0dXJuZWRRdWV1ZSA9IGJ1aWxkRGVhZExldHRlclF1ZXVlKHN0YWNrLCB7XG4gICAgZGVhZExldHRlclF1ZXVlUHJvcHM6IHtcbiAgICAgIHF1ZXVlTmFtZTogdGVzdFF1ZXVlTmFtZSxcbiAgICB9LFxuICB9KTtcbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZUxpa2UoXCJBV1M6OlNRUzo6UXVldWVcIiwge1xuICAgIFF1ZXVlTmFtZTogdGVzdFF1ZXVlTmFtZSxcbiAgfSk7XG4gIGV4cGVjdChyZXR1cm5lZFF1ZXVlKS50b0JlRGVmaW5lZCgpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgRExRIHdpdGggYSBwcm92aWRlZCBtYXhSZWNlaXZlQ291bnQnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHRlc3RNYXhSZWNlaXZlQ291bnQgPSAzMTtcblxuICBjb25zdCBkbHFJbnRlcmZhY2UgPSBidWlsZERlYWRMZXR0ZXJRdWV1ZShzdGFjaywge1xuICAgIG1heFJlY2VpdmVDb3VudDogdGVzdE1heFJlY2VpdmVDb3VudFxuICB9KTtcbiAgZXhwZWN0KGRscUludGVyZmFjZT8ubWF4UmVjZWl2ZUNvdW50KS50b0VxdWFsKHRlc3RNYXhSZWNlaXZlQ291bnQpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgcmV0dXJuaW5nIGFuIGV4aXN0aW5nIFF1ZXVlJywgKCkgPT4ge1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCB0ZXN0UXVldWVOYW1lID0gJ2V4aXN0aW5nLXF1ZXVlJztcblxuICBjb25zdCBleGlzdGluZ1F1ZXVlID0gbmV3IHNxcy5RdWV1ZShzdGFjaywgJ3Rlc3QtcXVldWUnLCB7XG4gICAgcXVldWVOYW1lOiB0ZXN0UXVldWVOYW1lXG4gIH0pO1xuXG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkUXVldWUoc3RhY2ssICduZXdRdWV1ZScsIHtcbiAgICBleGlzdGluZ1F1ZXVlT2JqOiBleGlzdGluZ1F1ZXVlXG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBRdWV1ZU5hbWU6IHRlc3RRdWV1ZU5hbWUsXG4gIH0pO1xuICBleHBlY3QoZXhpc3RpbmdRdWV1ZS5xdWV1ZU5hbWUpLnRvRXF1YWwoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlLnF1ZXVlTmFtZSk7XG4gIGV4cGVjdChidWlsZFF1ZXVlUmVzcG9uc2Uua2V5KS5ub3QudG9CZURlZmluZWQoKTtcbn0pO1xuXG50ZXN0KCdUZXN0IGNyZWF0aW5nIGEgcXVldWUgd2l0aCBhIERMUScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBkbHFJbnRlcmZhY2UgPSBidWlsZERlYWRMZXR0ZXJRdWV1ZShzdGFjaywge30pO1xuXG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc3RhY2ssICduZXctcXVldWUnLCB7XG4gICAgZGVhZExldHRlclF1ZXVlOiBkbHFJbnRlcmZhY2VcbiAgfSk7XG5cbiAgZXhwZWN0KHN0YWNrKS50b0NvdW50UmVzb3VyY2VzKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIDIpO1xuICBleHBlY3QoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlKS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlLmRlYWRMZXR0ZXJRdWV1ZSkudG9CZURlZmluZWQoKTtcbn0pO1xuXG50ZXN0KCdUZXN0IGNyZWF0aW5nIGEgRklGTyBxdWV1ZScsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFF1ZXVlUmVzcG9uc2UgPSBidWlsZFF1ZXVlKHN0YWNrLCAnbmV3LXF1ZXVlJywge1xuICAgIHF1ZXVlUHJvcHM6IHtcbiAgICAgIGZpZm86IHRydWVcbiAgICB9XG4gIH0pO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2VMaWtlKFwiQVdTOjpTUVM6OlF1ZXVlXCIsIHtcbiAgICBGaWZvUXVldWU6IHRydWVcbiAgfSk7XG4gIGV4cGVjdChidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUuZmlmbykudG9CZSh0cnVlKTtcbn0pO1xuIl19
|
|
@@ -18,28 +18,25 @@ const defaults = require("../");
|
|
|
18
18
|
require("@aws-cdk/assert/jest");
|
|
19
19
|
const sfn = require("aws-cdk-lib/aws-stepfunctions");
|
|
20
20
|
const cloudwatch_log_group_helper_1 = require("../lib/cloudwatch-log-group-helper");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// --------------------------------------------------------------
|
|
21
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
22
|
+
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
24
23
|
test('Test deployment w/ custom properties', () => {
|
|
25
24
|
// Stack
|
|
26
25
|
const stack = new aws_cdk_lib_1.Stack();
|
|
27
26
|
// Step function definition
|
|
28
27
|
const startState = new sfn.Pass(stack, 'StartState');
|
|
29
28
|
// Build state machine
|
|
30
|
-
defaults.buildStateMachine(stack, {
|
|
29
|
+
const buildStateMachineResponse = defaults.buildStateMachine(stack, {
|
|
31
30
|
definition: startState,
|
|
32
31
|
stateMachineName: 'myStateMachine'
|
|
33
32
|
});
|
|
34
33
|
// Assertion
|
|
34
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
35
35
|
expect(stack).toCountResources("AWS::Logs::LogGroup", 1);
|
|
36
36
|
expect(stack).toHaveResource("AWS::StepFunctions::StateMachine", {
|
|
37
37
|
StateMachineName: "myStateMachine"
|
|
38
38
|
});
|
|
39
39
|
});
|
|
40
|
-
// --------------------------------------------------------------
|
|
41
|
-
// Test deployment w/ logging enabled
|
|
42
|
-
// --------------------------------------------------------------
|
|
43
40
|
test('Test deployment w/ logging enabled', () => {
|
|
44
41
|
// Stack
|
|
45
42
|
const stack = new aws_cdk_lib_1.Stack();
|
|
@@ -49,7 +46,7 @@ test('Test deployment w/ logging enabled', () => {
|
|
|
49
46
|
// const logGroup = new LogGroup(stack, 'myLogGroup', defaults.buildLogGroup(stack));
|
|
50
47
|
const logGroup = cloudwatch_log_group_helper_1.buildLogGroup(stack, 'StateMachineLogGroup');
|
|
51
48
|
// Build state machine
|
|
52
|
-
defaults.buildStateMachine(stack, {
|
|
49
|
+
const buildStateMachineResponse = defaults.buildStateMachine(stack, {
|
|
53
50
|
definition: startState,
|
|
54
51
|
logs: {
|
|
55
52
|
destination: logGroup,
|
|
@@ -58,6 +55,8 @@ test('Test deployment w/ logging enabled', () => {
|
|
|
58
55
|
});
|
|
59
56
|
// Assertion
|
|
60
57
|
expect(stack).toCountResources("AWS::Logs::LogGroup", 1);
|
|
58
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
59
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
61
60
|
expect(stack).toHaveResource("AWS::StepFunctions::StateMachine", {
|
|
62
61
|
LoggingConfiguration: {
|
|
63
62
|
Destinations: [{
|
|
@@ -74,19 +73,18 @@ test('Test deployment w/ logging enabled', () => {
|
|
|
74
73
|
}
|
|
75
74
|
});
|
|
76
75
|
});
|
|
77
|
-
// --------------------------------------------------------------
|
|
78
|
-
// Check default Cloudwatch permissions
|
|
79
|
-
// --------------------------------------------------------------
|
|
80
76
|
test('Check default Cloudwatch permissions', () => {
|
|
81
77
|
// Stack
|
|
82
78
|
const stack = new aws_cdk_lib_1.Stack();
|
|
83
79
|
// Step function definition
|
|
84
80
|
const startState = new sfn.Pass(stack, 'StartState');
|
|
85
81
|
// Build state machine
|
|
86
|
-
defaults.buildStateMachine(stack, {
|
|
82
|
+
const buildStateMachineResponse = defaults.buildStateMachine(stack, {
|
|
87
83
|
definition: startState
|
|
88
84
|
});
|
|
89
85
|
// Assertion
|
|
86
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
87
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
90
88
|
expect(stack).toHaveResource("AWS::IAM::Policy", {
|
|
91
89
|
PolicyDocument: {
|
|
92
90
|
Statement: [
|
|
@@ -134,19 +132,77 @@ test('Check default Cloudwatch permissions', () => {
|
|
|
134
132
|
}
|
|
135
133
|
});
|
|
136
134
|
});
|
|
137
|
-
// --------------------------------------------------------------
|
|
138
|
-
// Check CW Alarms
|
|
139
|
-
// --------------------------------------------------------------
|
|
140
135
|
test('Count State Machine CW Alarms', () => {
|
|
141
136
|
// Stack
|
|
142
137
|
const stack = new aws_cdk_lib_1.Stack();
|
|
143
138
|
// Step function definition
|
|
144
139
|
const startState = new sfn.Pass(stack, 'StartState');
|
|
145
140
|
// Build state machine
|
|
146
|
-
const
|
|
141
|
+
const buildStateMachineResponse = defaults.buildStateMachine(stack, {
|
|
147
142
|
definition: startState
|
|
148
143
|
});
|
|
149
|
-
const cwList = defaults.buildStepFunctionCWAlarms(stack,
|
|
144
|
+
const cwList = defaults.buildStepFunctionCWAlarms(stack, buildStateMachineResponse.stateMachine);
|
|
145
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
146
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
150
147
|
expect(cwList.length).toEqual(3);
|
|
151
148
|
});
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi1oZWxwZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0ZXAtZnVuY3Rpb24taGVscGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDViw2Q0FBb0M7QUFDcEMsZ0NBQWdDO0FBQ2hDLGdDQUE4QjtBQUM5QixxREFBcUQ7QUFDckQsb0ZBQW1FO0FBRW5FLGlFQUFpRTtBQUNqRSx1Q0FBdUM7QUFDdkMsaUVBQWlFO0FBQ2pFLElBQUksQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7SUFDaEQsUUFBUTtJQUNSLE1BQU0sS0FBSyxHQUFHLElBQUksbUJBQUssRUFBRSxDQUFDO0lBQzFCLDJCQUEyQjtJQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JELHNCQUFzQjtJQUN0QixRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO1FBQ2hDLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLGdCQUFnQixFQUFFLGdCQUFnQjtLQUNuQyxDQUFDLENBQUM7SUFDSCxZQUFZO0lBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpELE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsa0NBQWtDLEVBQUU7UUFDL0QsZ0JBQWdCLEVBQUUsZ0JBQWdCO0tBQ25DLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsaUVBQWlFO0FBQ2pFLHFDQUFxQztBQUNyQyxpRUFBaUU7QUFDakUsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtJQUM5QyxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsMkJBQTJCO0lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckQsWUFBWTtJQUNaLHFGQUFxRjtJQUNyRixNQUFNLFFBQVEsR0FBRywyQ0FBYSxDQUFDLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBRTlELHNCQUFzQjtJQUN0QixRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO1FBQ2hDLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLElBQUksRUFBRTtZQUNKLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLEtBQUssRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUs7U0FDMUI7S0FDRixDQUFDLENBQUM7SUFDSCxZQUFZO0lBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXpELE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsa0NBQWtDLEVBQUU7UUFDL0Qsb0JBQW9CLEVBQUU7WUFDcEIsWUFBWSxFQUFFLENBQUM7b0JBQ2Isc0JBQXNCLEVBQUU7d0JBQ3RCLFdBQVcsRUFBRTs0QkFDWCxZQUFZLEVBQUU7Z0NBQ1osOEJBQThCO2dDQUM5QixLQUFLOzZCQUNOO3lCQUNGO3FCQUNGO2lCQUNGLENBQUM7WUFDRixLQUFLLEVBQUUsT0FBTztTQUNmO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxpRUFBaUU7QUFDakUsdUNBQXVDO0FBQ3ZDLGlFQUFpRTtBQUNqRSxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUMxQiwyQkFBMkI7SUFDM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNyRCxzQkFBc0I7SUFDdEIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRTtRQUNoQyxVQUFVLEVBQUUsVUFBVTtLQUN2QixDQUFDLENBQUM7SUFDSCxZQUFZO0lBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsRUFBRTtRQUMvQyxjQUFjLEVBQUU7WUFDZCxTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3FCQUN6QjtvQkFDRCxNQUFNLEVBQUUsT0FBTztvQkFDZixRQUFRLEVBQUUsR0FBRztpQkFDZDtnQkFDRDtvQkFDRSxNQUFNLEVBQUU7d0JBQ04sd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLHdCQUF3QjtxQkFDekI7b0JBQ0QsTUFBTSxFQUFFLE9BQU87b0JBQ2YsUUFBUSxFQUFFO3dCQUNSLFVBQVUsRUFBRTs0QkFDVixFQUFFOzRCQUNGO2dDQUNFLE1BQU07Z0NBQ047b0NBQ0UsR0FBRyxFQUFFLGdCQUFnQjtpQ0FDdEI7Z0NBQ0QsUUFBUTtnQ0FDUjtvQ0FDRSxHQUFHLEVBQUUsYUFBYTtpQ0FDbkI7Z0NBQ0QsR0FBRztnQ0FDSDtvQ0FDRSxHQUFHLEVBQUUsZ0JBQWdCO2lDQUN0QjtnQ0FDRCxJQUFJOzZCQUNMO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsWUFBWTtTQUN0QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsaUVBQWlFO0FBQ2pFLGtCQUFrQjtBQUNsQixpRUFBaUU7QUFDakUsSUFBSSxDQUFDLCtCQUErQixFQUFFLEdBQUcsRUFBRTtJQUN6QyxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsMkJBQTJCO0lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckQsc0JBQXNCO0lBQ3RCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO1FBQzdDLFVBQVUsRUFBRSxVQUFVO0tBQ3ZCLENBQUMsQ0FBQztJQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFN0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgeyBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnLi4vJztcbmltcG9ydCAnQGF3cy1jZGsvYXNzZXJ0L2plc3QnO1xuaW1wb3J0ICogYXMgc2ZuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCB7IGJ1aWxkTG9nR3JvdXAgfSBmcm9tICcuLi9saWIvY2xvdWR3YXRjaC1sb2ctZ3JvdXAtaGVscGVyJztcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3QgZGVwbG95bWVudCB3LyBjdXN0b20gcHJvcGVydGllc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBjdXN0b20gcHJvcGVydGllcycsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gU3RlcCBmdW5jdGlvbiBkZWZpbml0aW9uXG4gIGNvbnN0IHN0YXJ0U3RhdGUgPSBuZXcgc2ZuLlBhc3Moc3RhY2ssICdTdGFydFN0YXRlJyk7XG4gIC8vIEJ1aWxkIHN0YXRlIG1hY2hpbmVcbiAgZGVmYXVsdHMuYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssIHtcbiAgICBkZWZpbml0aW9uOiBzdGFydFN0YXRlLFxuICAgIHN0YXRlTWFjaGluZU5hbWU6ICdteVN0YXRlTWFjaGluZSdcbiAgfSk7XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3Qoc3RhY2spLnRvQ291bnRSZXNvdXJjZXMoXCJBV1M6OkxvZ3M6OkxvZ0dyb3VwXCIsIDEpO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZVwiLCB7XG4gICAgU3RhdGVNYWNoaW5lTmFtZTogXCJteVN0YXRlTWFjaGluZVwiXG4gIH0pO1xufSk7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUZXN0IGRlcGxveW1lbnQgdy8gbG9nZ2luZyBlbmFibGVkXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBkZXBsb3ltZW50IHcvIGxvZ2dpbmcgZW5hYmxlZCcsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gU3RlcCBmdW5jdGlvbiBkZWZpbml0aW9uXG4gIGNvbnN0IHN0YXJ0U3RhdGUgPSBuZXcgc2ZuLlBhc3Moc3RhY2ssICdTdGFydFN0YXRlJyk7XG4gIC8vIExvZyBncm91cFxuICAvLyBjb25zdCBsb2dHcm91cCA9IG5ldyBMb2dHcm91cChzdGFjaywgJ215TG9nR3JvdXAnLCBkZWZhdWx0cy5idWlsZExvZ0dyb3VwKHN0YWNrKSk7XG4gIGNvbnN0IGxvZ0dyb3VwID0gYnVpbGRMb2dHcm91cChzdGFjaywgJ1N0YXRlTWFjaGluZUxvZ0dyb3VwJyk7XG5cbiAgLy8gQnVpbGQgc3RhdGUgbWFjaGluZVxuICBkZWZhdWx0cy5idWlsZFN0YXRlTWFjaGluZShzdGFjaywge1xuICAgIGRlZmluaXRpb246IHN0YXJ0U3RhdGUsXG4gICAgbG9nczoge1xuICAgICAgZGVzdGluYXRpb246IGxvZ0dyb3VwLFxuICAgICAgbGV2ZWw6IHNmbi5Mb2dMZXZlbC5GQVRBTFxuICAgIH1cbiAgfSk7XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3Qoc3RhY2spLnRvQ291bnRSZXNvdXJjZXMoXCJBV1M6OkxvZ3M6OkxvZ0dyb3VwXCIsIDEpO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZVwiLCB7XG4gICAgTG9nZ2luZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIERlc3RpbmF0aW9uczogW3tcbiAgICAgICAgQ2xvdWRXYXRjaExvZ3NMb2dHcm91cDoge1xuICAgICAgICAgIExvZ0dyb3VwQXJuOiB7XG4gICAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgICBcIlN0YXRlTWFjaGluZUxvZ0dyb3VwMTVCOTFCQ0JcIixcbiAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfV0sXG4gICAgICBMZXZlbDogJ0ZBVEFMJ1xuICAgIH1cbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIGRlZmF1bHQgQ2xvdWR3YXRjaCBwZXJtaXNzaW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ0NoZWNrIGRlZmF1bHQgQ2xvdWR3YXRjaCBwZXJtaXNzaW9ucycsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gU3RlcCBmdW5jdGlvbiBkZWZpbml0aW9uXG4gIGNvbnN0IHN0YXJ0U3RhdGUgPSBuZXcgc2ZuLlBhc3Moc3RhY2ssICdTdGFydFN0YXRlJyk7XG4gIC8vIEJ1aWxkIHN0YXRlIG1hY2hpbmVcbiAgZGVmYXVsdHMuYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssIHtcbiAgICBkZWZpbml0aW9uOiBzdGFydFN0YXRlXG4gIH0pO1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KHN0YWNrKS50b0hhdmVSZXNvdXJjZShcIkFXUzo6SUFNOjpQb2xpY3lcIiwge1xuICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogW1xuICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ0RlbGl2ZXJ5XCIsXG4gICAgICAgICAgICBcImxvZ3M6R2V0TG9nRGVsaXZlcnlcIixcbiAgICAgICAgICAgIFwibG9nczpVcGRhdGVMb2dEZWxpdmVyeVwiLFxuICAgICAgICAgICAgXCJsb2dzOkRlbGV0ZUxvZ0RlbGl2ZXJ5XCIsXG4gICAgICAgICAgICBcImxvZ3M6TGlzdExvZ0RlbGl2ZXJpZXNcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUmVzb3VyY2U6IFwiKlwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgIFwibG9nczpQdXRSZXNvdXJjZVBvbGljeVwiLFxuICAgICAgICAgICAgXCJsb2dzOkRlc2NyaWJlUmVzb3VyY2VQb2xpY2llc1wiLFxuICAgICAgICAgICAgXCJsb2dzOkRlc2NyaWJlTG9nR3JvdXBzXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFJlc291cmNlOiB7XG4gICAgICAgICAgICBcIkZuOjpKb2luXCI6IFtcbiAgICAgICAgICAgICAgXCJcIixcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFwiYXJuOlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OlBhcnRpdGlvblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIjpsb2dzOlwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIFJlZjogXCJBV1M6OlJlZ2lvblwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcIjpcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpBY2NvdW50SWRcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCI6KlwiXG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgIH1cbiAgfSk7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIENoZWNrIENXIEFsYXJtc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbnRlc3QoJ0NvdW50IFN0YXRlIE1hY2hpbmUgQ1cgQWxhcm1zJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAvLyBTdGVwIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgY29uc3Qgc3RhcnRTdGF0ZSA9IG5ldyBzZm4uUGFzcyhzdGFjaywgJ1N0YXJ0U3RhdGUnKTtcbiAgLy8gQnVpbGQgc3RhdGUgbWFjaGluZVxuICBjb25zdCBbc21dID0gZGVmYXVsdHMuYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssIHtcbiAgICBkZWZpbml0aW9uOiBzdGFydFN0YXRlXG4gIH0pO1xuICBjb25zdCBjd0xpc3QgPSBkZWZhdWx0cy5idWlsZFN0ZXBGdW5jdGlvbkNXQWxhcm1zKHN0YWNrLCBzbSk7XG5cbiAgZXhwZWN0KGN3TGlzdC5sZW5ndGgpLnRvRXF1YWwoMyk7XG59KTsiXX0=
|
|
149
|
+
test('Test deployment with custom role', () => {
|
|
150
|
+
const descriptionText = 'Custom role for State Machine';
|
|
151
|
+
// Stack
|
|
152
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
153
|
+
// Step function definition
|
|
154
|
+
const startState = new sfn.Pass(stack, 'StartState');
|
|
155
|
+
const customRole = new iam.Role(stack, 'custom-role', {
|
|
156
|
+
assumedBy: new iam.ServicePrincipal('states.amazonaws.com'),
|
|
157
|
+
description: descriptionText,
|
|
158
|
+
inlinePolicies: {
|
|
159
|
+
InvokePolicy: new iam.PolicyDocument({
|
|
160
|
+
statements: [new iam.PolicyStatement({
|
|
161
|
+
resources: [`arn:${aws_cdk_lib_1.Aws.PARTITION}:s3:${aws_cdk_lib_1.Aws.REGION}:${aws_cdk_lib_1.Aws.ACCOUNT_ID}:*`],
|
|
162
|
+
actions: ['s3:ListBucket']
|
|
163
|
+
})]
|
|
164
|
+
})
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
// Build state machine
|
|
168
|
+
const buildStateMachineResponse = defaults.buildStateMachine(stack, {
|
|
169
|
+
definition: startState,
|
|
170
|
+
role: customRole
|
|
171
|
+
});
|
|
172
|
+
// Assertion
|
|
173
|
+
expect(stack).toCountResources("AWS::IAM::Role", 1);
|
|
174
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
175
|
+
expect(stack).toHaveResource("AWS::IAM::Role", {
|
|
176
|
+
Description: descriptionText
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
test('Confirm format of name', () => {
|
|
180
|
+
// Stack
|
|
181
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
182
|
+
// Step function definition
|
|
183
|
+
const startState = new sfn.Pass(stack, 'StartState');
|
|
184
|
+
// Build state machine
|
|
185
|
+
const buildStateMachineResponse = defaults.buildStateMachine(stack, {
|
|
186
|
+
stateMachineName: 'myStateMachine',
|
|
187
|
+
definition: startState,
|
|
188
|
+
});
|
|
189
|
+
// Assertion
|
|
190
|
+
expect(buildStateMachineResponse.stateMachine).toBeDefined();
|
|
191
|
+
expect(stack).toHaveResource("AWS::StepFunctions::StateMachine", {
|
|
192
|
+
StateMachineName: "myStateMachine"
|
|
193
|
+
});
|
|
194
|
+
// Perform some fancy stuff to examine the specifics of the LogGroupName
|
|
195
|
+
const expectedPrefix = '/aws/vendedlogs/states/constructs/';
|
|
196
|
+
const lengthOfDatetimeSuffix = 13;
|
|
197
|
+
const LogGroup = assertions_1.Template.fromStack(stack).findResources("AWS::Logs::LogGroup");
|
|
198
|
+
const logName = LogGroup.StateMachineLogGroup15B91BCB.Properties.LogGroupName;
|
|
199
|
+
const suffix = logName.slice(-lengthOfDatetimeSuffix);
|
|
200
|
+
// Look for the expected Prefix and the 13 digit time suffix
|
|
201
|
+
expect(logName.slice(0, expectedPrefix.length)).toEqual(expectedPrefix);
|
|
202
|
+
expect(IsWholeNumber(suffix)).not.toBe(false);
|
|
203
|
+
});
|
|
204
|
+
function IsWholeNumber(target) {
|
|
205
|
+
const numberPattern = /[0-9]{13}/;
|
|
206
|
+
return target.match(numberPattern) !== null;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbi1oZWxwZXIudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0ZXAtZnVuY3Rpb24taGVscGVyLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDViw2Q0FBeUM7QUFDekMsZ0NBQWdDO0FBQ2hDLGdDQUE4QjtBQUM5QixxREFBcUQ7QUFDckQsb0ZBQW1FO0FBQ25FLDJDQUEyQztBQUMzQyx1REFBa0Q7QUFFbEQsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNoRCxRQUFRO0lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxFQUFFLENBQUM7SUFDMUIsMkJBQTJCO0lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckQsc0JBQXNCO0lBQ3RCLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRTtRQUNsRSxVQUFVLEVBQUUsVUFBVTtRQUN0QixnQkFBZ0IsRUFBRSxnQkFBZ0I7S0FDbkMsQ0FBQyxDQUFDO0lBQ0gsWUFBWTtJQUNaLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3RCxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFekQsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxrQ0FBa0MsRUFBRTtRQUMvRCxnQkFBZ0IsRUFBRSxnQkFBZ0I7S0FDbkMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO0lBQzlDLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJ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Z2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgU3RhY2ssIEF3cyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnLi4vJztcbmltcG9ydCAnQGF3cy1jZGsvYXNzZXJ0L2plc3QnO1xuaW1wb3J0ICogYXMgc2ZuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCB7IGJ1aWxkTG9nR3JvdXAgfSBmcm9tICcuLi9saWIvY2xvdWR3YXRjaC1sb2ctZ3JvdXAtaGVscGVyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSAnYXdzLWNkay1saWIvYXNzZXJ0aW9ucyc7XG5cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBjdXN0b20gcHJvcGVydGllcycsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gU3RlcCBmdW5jdGlvbiBkZWZpbml0aW9uXG4gIGNvbnN0IHN0YXJ0U3RhdGUgPSBuZXcgc2ZuLlBhc3Moc3RhY2ssICdTdGFydFN0YXRlJyk7XG4gIC8vIEJ1aWxkIHN0YXRlIG1hY2hpbmVcbiAgY29uc3QgYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkU3RhdGVNYWNoaW5lKHN0YWNrLCB7XG4gICAgZGVmaW5pdGlvbjogc3RhcnRTdGF0ZSxcbiAgICBzdGF0ZU1hY2hpbmVOYW1lOiAnbXlTdGF0ZU1hY2hpbmUnXG4gIH0pO1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lKS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3Qoc3RhY2spLnRvQ291bnRSZXNvdXJjZXMoXCJBV1M6OkxvZ3M6OkxvZ0dyb3VwXCIsIDEpO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZVwiLCB7XG4gICAgU3RhdGVNYWNoaW5lTmFtZTogXCJteVN0YXRlTWFjaGluZVwiXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3LyBsb2dnaW5nIGVuYWJsZWQnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIFN0ZXAgZnVuY3Rpb24gZGVmaW5pdGlvblxuICBjb25zdCBzdGFydFN0YXRlID0gbmV3IHNmbi5QYXNzKHN0YWNrLCAnU3RhcnRTdGF0ZScpO1xuICAvLyBMb2cgZ3JvdXBcbiAgLy8gY29uc3QgbG9nR3JvdXAgPSBuZXcgTG9nR3JvdXAoc3RhY2ssICdteUxvZ0dyb3VwJywgZGVmYXVsdHMuYnVpbGRMb2dHcm91cChzdGFjaykpO1xuICBjb25zdCBsb2dHcm91cCA9IGJ1aWxkTG9nR3JvdXAoc3RhY2ssICdTdGF0ZU1hY2hpbmVMb2dHcm91cCcpO1xuXG4gIC8vIEJ1aWxkIHN0YXRlIG1hY2hpbmVcbiAgY29uc3QgYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkU3RhdGVNYWNoaW5lKHN0YWNrLCB7XG4gICAgZGVmaW5pdGlvbjogc3RhcnRTdGF0ZSxcbiAgICBsb2dzOiB7XG4gICAgICBkZXN0aW5hdGlvbjogbG9nR3JvdXAsXG4gICAgICBsZXZlbDogc2ZuLkxvZ0xldmVsLkZBVEFMXG4gICAgfVxuICB9KTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChzdGFjaykudG9Db3VudFJlc291cmNlcyhcIkFXUzo6TG9nczo6TG9nR3JvdXBcIiwgMSk7XG4gIGV4cGVjdChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lKS50b0JlRGVmaW5lZCgpO1xuXG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZVwiLCB7XG4gICAgTG9nZ2luZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIERlc3RpbmF0aW9uczogW3tcbiAgICAgICAgQ2xvdWRXYXRjaExvZ3NMb2dHcm91cDoge1xuICAgICAgICAgIExvZ0dyb3VwQXJuOiB7XG4gICAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgICBcIlN0YXRlTWFjaGluZUxvZ0dyb3VwMTVCOTFCQ0JcIixcbiAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfV0sXG4gICAgICBMZXZlbDogJ0ZBVEFMJ1xuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnQ2hlY2sgZGVmYXVsdCBDbG91ZHdhdGNoIHBlcm1pc3Npb25zJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAvLyBTdGVwIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgY29uc3Qgc3RhcnRTdGF0ZSA9IG5ldyBzZm4uUGFzcyhzdGFjaywgJ1N0YXJ0U3RhdGUnKTtcbiAgLy8gQnVpbGQgc3RhdGUgbWFjaGluZVxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssIHtcbiAgICBkZWZpbml0aW9uOiBzdGFydFN0YXRlXG4gIH0pO1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lKS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUpLnRvQmVEZWZpbmVkKCk7XG4gIGV4cGVjdChzdGFjaykudG9IYXZlUmVzb3VyY2UoXCJBV1M6OklBTTo6UG9saWN5XCIsIHtcbiAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgIFwibG9nczpDcmVhdGVMb2dEZWxpdmVyeVwiLFxuICAgICAgICAgICAgXCJsb2dzOkdldExvZ0RlbGl2ZXJ5XCIsXG4gICAgICAgICAgICBcImxvZ3M6VXBkYXRlTG9nRGVsaXZlcnlcIixcbiAgICAgICAgICAgIFwibG9nczpEZWxldGVMb2dEZWxpdmVyeVwiLFxuICAgICAgICAgICAgXCJsb2dzOkxpc3RMb2dEZWxpdmVyaWVzXCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgIFJlc291cmNlOiBcIipcIlxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICBcImxvZ3M6UHV0UmVzb3VyY2VQb2xpY3lcIixcbiAgICAgICAgICAgIFwibG9nczpEZXNjcmliZVJlc291cmNlUG9saWNpZXNcIixcbiAgICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ0dyb3Vwc1wiXG4gICAgICAgICAgXSxcbiAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgXCJGbjo6Sm9pblwiOiBbXG4gICAgICAgICAgICAgIFwiXCIsXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcImFybjpcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpQYXJ0aXRpb25cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCI6bG9nczpcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBSZWY6IFwiQVdTOjpSZWdpb25cIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCI6XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgUmVmOiBcIkFXUzo6QWNjb3VudElkXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwiOipcIlxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICB9XG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NvdW50IFN0YXRlIE1hY2hpbmUgQ1cgQWxhcm1zJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICAvLyBTdGVwIGZ1bmN0aW9uIGRlZmluaXRpb25cbiAgY29uc3Qgc3RhcnRTdGF0ZSA9IG5ldyBzZm4uUGFzcyhzdGFjaywgJ1N0YXJ0U3RhdGUnKTtcbiAgLy8gQnVpbGQgc3RhdGUgbWFjaGluZVxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssIHtcbiAgICBkZWZpbml0aW9uOiBzdGFydFN0YXRlXG4gIH0pO1xuICBjb25zdCBjd0xpc3QgPSBkZWZhdWx0cy5idWlsZFN0ZXBGdW5jdGlvbkNXQWxhcm1zKHN0YWNrLCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSk7XG4gIGV4cGVjdChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lKS50b0JlRGVmaW5lZCgpO1xuXG4gIGV4cGVjdChjd0xpc3QubGVuZ3RoKS50b0VxdWFsKDMpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZGVwbG95bWVudCB3aXRoIGN1c3RvbSByb2xlJywgKCkgPT4ge1xuICBjb25zdCBkZXNjcmlwdGlvblRleHQgPSAnQ3VzdG9tIHJvbGUgZm9yIFN0YXRlIE1hY2hpbmUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIC8vIFN0ZXAgZnVuY3Rpb24gZGVmaW5pdGlvblxuICBjb25zdCBzdGFydFN0YXRlID0gbmV3IHNmbi5QYXNzKHN0YWNrLCAnU3RhcnRTdGF0ZScpO1xuXG4gIGNvbnN0IGN1c3RvbVJvbGUgPSBuZXcgaWFtLlJvbGUoc3RhY2ssICdjdXN0b20tcm9sZScsIHtcbiAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnc3RhdGVzLmFtYXpvbmF3cy5jb20nKSxcbiAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25UZXh0LFxuICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICBJbnZva2VQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICBzdGF0ZW1lbnRzOiBbbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIHJlc291cmNlczogW2Bhcm46JHtBd3MuUEFSVElUSU9OfTpzMzoke0F3cy5SRUdJT059OiR7QXdzLkFDQ09VTlRfSUR9OipgXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ3MzOkxpc3RCdWNrZXQnXVxuICAgICAgICB9KV1cbiAgICAgIH0pXG4gICAgfVxuICB9KTtcblxuICAvLyBCdWlsZCBzdGF0ZSBtYWNoaW5lXG4gIGNvbnN0IGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2UgPSBkZWZhdWx0cy5idWlsZFN0YXRlTWFjaGluZShzdGFjaywge1xuICAgIGRlZmluaXRpb246IHN0YXJ0U3RhdGUsXG4gICAgcm9sZTogY3VzdG9tUm9sZVxuICB9KTtcblxuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KHN0YWNrKS50b0NvdW50UmVzb3VyY2VzKFwiQVdTOjpJQU06OlJvbGVcIiwgMSk7XG4gIGV4cGVjdChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSkudG9CZURlZmluZWQoKTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpJQU06OlJvbGVcIiwge1xuICAgIERlc2NyaXB0aW9uOiBkZXNjcmlwdGlvblRleHRcbiAgfSk7XG59KTtcblxudGVzdCgnQ29uZmlybSBmb3JtYXQgb2YgbmFtZScsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgLy8gU3RlcCBmdW5jdGlvbiBkZWZpbml0aW9uXG4gIGNvbnN0IHN0YXJ0U3RhdGUgPSBuZXcgc2ZuLlBhc3Moc3RhY2ssICdTdGFydFN0YXRlJyk7XG4gIC8vIEJ1aWxkIHN0YXRlIG1hY2hpbmVcbiAgY29uc3QgYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZSA9IGRlZmF1bHRzLmJ1aWxkU3RhdGVNYWNoaW5lKHN0YWNrLCB7XG4gICAgc3RhdGVNYWNoaW5lTmFtZTogJ215U3RhdGVNYWNoaW5lJyxcbiAgICBkZWZpbml0aW9uOiBzdGFydFN0YXRlLFxuICB9KTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSkudG9CZURlZmluZWQoKTtcblxuICBleHBlY3Qoc3RhY2spLnRvSGF2ZVJlc291cmNlKFwiQVdTOjpTdGVwRnVuY3Rpb25zOjpTdGF0ZU1hY2hpbmVcIiwge1xuICAgIFN0YXRlTWFjaGluZU5hbWU6IFwibXlTdGF0ZU1hY2hpbmVcIlxuICB9KTtcblxuICAvLyBQZXJmb3JtIHNvbWUgZmFuY3kgc3R1ZmYgdG8gZXhhbWluZSB0aGUgc3BlY2lmaWNzIG9mIHRoZSBMb2dHcm91cE5hbWVcbiAgY29uc3QgZXhwZWN0ZWRQcmVmaXggPSAnL2F3cy92ZW5kZWRsb2dzL3N0YXRlcy9jb25zdHJ1Y3RzLyc7XG4gIGNvbnN0IGxlbmd0aE9mRGF0ZXRpbWVTdWZmaXggPSAxMztcblxuICBjb25zdCBMb2dHcm91cCA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjaykuZmluZFJlc291cmNlcyhcIkFXUzo6TG9nczo6TG9nR3JvdXBcIik7XG4gIGNvbnN0IGxvZ05hbWUgPSBMb2dHcm91cC5TdGF0ZU1hY2hpbmVMb2dHcm91cDE1QjkxQkNCLlByb3BlcnRpZXMuTG9nR3JvdXBOYW1lO1xuICBjb25zdCBzdWZmaXggPSBsb2dOYW1lLnNsaWNlKC1sZW5ndGhPZkRhdGV0aW1lU3VmZml4KTtcblxuICAvLyBMb29rIGZvciB0aGUgZXhwZWN0ZWQgUHJlZml4IGFuZCB0aGUgMTMgZGlnaXQgdGltZSBzdWZmaXhcbiAgZXhwZWN0KGxvZ05hbWUuc2xpY2UoMCwgZXhwZWN0ZWRQcmVmaXgubGVuZ3RoKSkudG9FcXVhbChleHBlY3RlZFByZWZpeCk7XG4gIGV4cGVjdChJc1dob2xlTnVtYmVyKHN1ZmZpeCkpLm5vdC50b0JlKGZhbHNlKTtcbn0pO1xuXG5mdW5jdGlvbiBJc1dob2xlTnVtYmVyKHRhcmdldDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IG51bWJlclBhdHRlcm4gPSAvWzAtOV17MTN9LztcbiAgcmV0dXJuIHRhcmdldC5tYXRjaChudW1iZXJQYXR0ZXJuKSAhPT0gbnVsbDtcbn1cbiJdfQ==
|
package/test/utils.test.js
CHANGED
|
@@ -19,34 +19,38 @@ const cdk = require("aws-cdk-lib");
|
|
|
19
19
|
// so we can explicitly find them in the results.
|
|
20
20
|
const parts = ['firstportionislong', 'secondsection'];
|
|
21
21
|
const nonAlphaParts = ['part-one', 'part-two'];
|
|
22
|
-
|
|
23
|
-
// Test with a truncated part
|
|
24
|
-
// --------------------------------------------------------------
|
|
25
|
-
test('Test with a truncated part', () => {
|
|
22
|
+
test('Test generateResourceName with a truncated part', () => {
|
|
26
23
|
const result = defaults.generateResourceName(parts, 38);
|
|
27
24
|
expect(result).toContain(parts[1]);
|
|
28
25
|
expect(result).not.toContain(parts[0]);
|
|
29
26
|
expect(result).toContain(parts[0].slice(0, 13));
|
|
30
27
|
});
|
|
31
|
-
|
|
32
|
-
// Test with no truncated parts
|
|
33
|
-
// --------------------------------------------------------------
|
|
34
|
-
test('Test with no truncated parts', () => {
|
|
28
|
+
test('Test generateResourceName with no truncated parts', () => {
|
|
35
29
|
const result = defaults.generateResourceName(parts, 100);
|
|
36
30
|
expect(result).toContain(parts[1]);
|
|
37
31
|
expect(result).toContain(parts[0]);
|
|
38
32
|
expect(result.length).toEqual(parts[0].length + parts[1].length + 12);
|
|
39
33
|
});
|
|
40
|
-
|
|
41
|
-
// Test with non Aphanumeric
|
|
42
|
-
// --------------------------------------------------------------
|
|
43
|
-
test('Test with non Aphanumeric', () => {
|
|
34
|
+
test('Test generateResourceName with non Aphanumeric', () => {
|
|
44
35
|
const result = defaults.generateResourceName(nonAlphaParts, 100);
|
|
45
36
|
expect(result).toContain('partoneparttwo');
|
|
46
37
|
});
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
38
|
+
test('Test generateResourceName with randomized extension', () => {
|
|
39
|
+
const resultOne = defaults.generateResourceName(parts, 512, true);
|
|
40
|
+
const startTime = (new Date()).getTime();
|
|
41
|
+
// We need to ensure the time value appended changes between callls
|
|
42
|
+
let currTime = startTime;
|
|
43
|
+
while (currTime === startTime) {
|
|
44
|
+
currTime = (new Date()).getTime();
|
|
45
|
+
}
|
|
46
|
+
const resultTwo = defaults.generateResourceName(parts, 512, true);
|
|
47
|
+
expect(resultOne).toContain(parts[1]);
|
|
48
|
+
expect(resultOne).toContain(parts[0]);
|
|
49
|
+
expect(resultTwo).toContain(parts[1]);
|
|
50
|
+
expect(resultTwo).toContain(parts[0]);
|
|
51
|
+
expect(resultOne).not.toEqual(resultTwo);
|
|
52
|
+
expect(resultOne.slice(0, -13)).toEqual(resultTwo.slice(0, -13));
|
|
53
|
+
});
|
|
50
54
|
test('Test generateIntegStackName', () => {
|
|
51
55
|
const result = defaults.generateIntegStackName('integ.apigateway-dynamodb-CRUD.js');
|
|
52
56
|
expect(result).toContain('apigateway-dynamodb-CRUD');
|
|
@@ -145,4 +149,4 @@ test('Test generateName uniqueness', () => {
|
|
|
145
149
|
const nameTwo = defaults.generateName(stackTwo, "");
|
|
146
150
|
expect(nameOne === nameTwo).toBe(false);
|
|
147
151
|
});
|
|
148
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWxzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDVixnQ0FBZ0M7QUFDaEMsbUNBQW1DO0FBRW5DLHVDQUF1QztBQUN2QyxpREFBaUQ7QUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUN2RCxNQUFNLGFBQWEsR0FBRyxDQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVoRCxpRUFBaUU7QUFDakUsNkJBQTZCO0FBQzdCLGlFQUFpRTtBQUNqRSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFbEQsQ0FBQyxDQUFDLENBQUM7QUFFSCxpRUFBaUU7QUFDakUsK0JBQStCO0FBQy9CLGlFQUFpRTtBQUNqRSxJQUFJLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFekQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN4RSxDQUFDLENBQUMsQ0FBQztBQUVILGlFQUFpRTtBQUNqRSw0QkFBNEI7QUFDNUIsaUVBQWlFO0FBQ2pFLElBQUksQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDckMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUVqRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDLENBQUM7QUFFSCxpRUFBaUU7QUFDakUsOEJBQThCO0FBQzlCLGlFQUFpRTtBQUNqRSxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUVyRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsc0JBQXNCLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNuRixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO0lBQ2hELE1BQU0sSUFBSSxHQUFHO1FBQ1gsSUFBSSxFQUFFLEVBQUU7UUFDUixJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHO1FBQ1gsSUFBSSxFQUFFLEVBQUU7UUFDUixJQUFJLEVBQUUsRUFBRTtLQUNULENBQUM7SUFFRixNQUFNLElBQUksR0FBRztRQUNYLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTNELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDckIsSUFBSSxFQUFFLEVBQUU7UUFDUixJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQyxDQUFDO0FBRUwsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsa0RBQWtELEVBQUUsR0FBRyxFQUFFO0lBQzVELE1BQU0sSUFBSSxHQUFHO1FBQ1gsSUFBSSxFQUFFLEVBQUU7UUFDUixJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQztJQUVGLE1BQU0sSUFBSSxHQUFHO1FBQ1gsSUFBSSxFQUFFLEVBQUU7S0FDVCxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNyQixJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEVBQUU7S0FDVCxDQUFDLENBQUM7QUFFTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7SUFDN0QsTUFBTSxJQUFJLEdBQUc7UUFDWCxJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEVBQUU7S0FDVCxDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUc7UUFDWCxJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQztJQUVGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFckQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNyQixJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEVBQUU7S0FDVCxDQUFDLENBQUM7QUFFTCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7SUFDL0MsTUFBTSxJQUFJLEdBQUc7UUFDWCxJQUFJLEVBQUUsRUFBRTtRQUNSLElBQUksRUFBRSxFQUFFO1FBQ1IsSUFBSSxFQUFFLEVBQUU7S0FDVCxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBRS9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFL0IsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsZ0ZBQWdGLEVBQUUsR0FBRyxFQUFFO0lBQzFGLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFdEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QywyRkFBMkY7SUFDM0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO0lBQzdELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFdEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO0lBQzNELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFdEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsNkNBQTZDLEVBQUUsR0FBRyxFQUFFO0lBQ3ZELE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDdEQsTUFBTSxvQkFBb0IsR0FBRyx3RUFBd0UsQ0FBQztJQUN0RyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtJQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFdEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsTUFBTSxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDMUMsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgKiBhcyBkZWZhdWx0cyBmcm9tICcuLi8nO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuLy8gTmVlZCAyIHBhcnRzLCBidXQgdGhleSBjYW4ndCBvdmVybGFwXG4vLyBzbyB3ZSBjYW4gZXhwbGljaXRseSBmaW5kIHRoZW0gaW4gdGhlIHJlc3VsdHMuXG5jb25zdCBwYXJ0cyA9IFsgJ2ZpcnN0cG9ydGlvbmlzbG9uZycsICdzZWNvbmRzZWN0aW9uJ107XG5jb25zdCBub25BbHBoYVBhcnRzID0gWyAncGFydC1vbmUnLCAncGFydC10d28nXTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3Qgd2l0aCBhIHRydW5jYXRlZCBwYXJ0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCB3aXRoIGEgdHJ1bmNhdGVkIHBhcnQnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKHBhcnRzLCAzOCk7XG5cbiAgZXhwZWN0KHJlc3VsdCkudG9Db250YWluKHBhcnRzWzFdKTtcbiAgZXhwZWN0KHJlc3VsdCkubm90LnRvQ29udGFpbihwYXJ0c1swXSk7XG4gIGV4cGVjdChyZXN1bHQpLnRvQ29udGFpbihwYXJ0c1swXS5zbGljZSgwLCAxMykpO1xuXG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3Qgd2l0aCBubyB0cnVuY2F0ZWQgcGFydHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IHdpdGggbm8gdHJ1bmNhdGVkIHBhcnRzJywgKCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5nZW5lcmF0ZVJlc291cmNlTmFtZShwYXJ0cywgMTAwKTtcblxuICBleHBlY3QocmVzdWx0KS50b0NvbnRhaW4ocGFydHNbMV0pO1xuICBleHBlY3QocmVzdWx0KS50b0NvbnRhaW4ocGFydHNbMF0pO1xuICBleHBlY3QocmVzdWx0Lmxlbmd0aCkudG9FcXVhbChwYXJ0c1swXS5sZW5ndGggKyBwYXJ0c1sxXS5sZW5ndGggKyAxMik7XG59KTtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFRlc3Qgd2l0aCBub24gQXBoYW51bWVyaWNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG50ZXN0KCdUZXN0IHdpdGggbm9uIEFwaGFudW1lcmljJywgKCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5nZW5lcmF0ZVJlc291cmNlTmFtZShub25BbHBoYVBhcnRzLCAxMDApO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvQ29udGFpbigncGFydG9uZXBhcnR0d28nKTtcbn0pO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGVzdCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxudGVzdCgnVGVzdCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lJywgKCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5nZW5lcmF0ZUludGVnU3RhY2tOYW1lKCdpbnRlZy5hcGlnYXRld2F5LWR5bmFtb2RiLUNSVUQuanMnKTtcbiAgZXhwZWN0KHJlc3VsdCkudG9Db250YWluKCdhcGlnYXRld2F5LWR5bmFtb2RiLUNSVUQnKTtcblxuICBjb25zdCByZXN1bHQxID0gZGVmYXVsdHMuZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSgnaW50ZWcub3ZlcnJpZGVfYXV0aF9hcGlfa2V5cy50cycpO1xuICBleHBlY3QocmVzdWx0MSkudG9Db250YWluKCdvdmVycmlkZS1hdXRoLWFwaS1rZXlzJyk7XG59KTtcblxudGVzdCgnVGVzdCBjb25zb2xpZGF0ZSBwcm9wcyB3aXRoIGFsbCBhcmdzJywgKCkgPT4ge1xuICBjb25zdCBhcmcxID0ge1xuICAgIHZhbDE6IDExLFxuICAgIHZhbDI6IDEyLFxuICAgIHZhbDM6IDEzLFxuICB9O1xuXG4gIGNvbnN0IGFyZzIgPSB7XG4gICAgdmFsMTogMjEsXG4gICAgdmFsMjogMjIsXG4gIH07XG5cbiAgY29uc3QgYXJnMyA9IHtcbiAgICB2YWwxOiAzMSxcbiAgfTtcblxuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGFyZzEsIGFyZzIsIGFyZzMpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZhbDE6IDMxLFxuICAgIHZhbDI6IDIyLFxuICAgIHZhbDM6IDEzLFxuICB9KTtcblxufSk7XG5cbnRlc3QoJ1Rlc3QgY29uc29saWRhdGUgcHJvcHMgd2l0aCBmaXJzdCBhbmQgdGhpcmQgYXJncycsICgpID0+IHtcbiAgY29uc3QgYXJnMSA9IHtcbiAgICB2YWwxOiAxMSxcbiAgICB2YWwyOiAxMixcbiAgICB2YWwzOiAxMyxcbiAgfTtcblxuICBjb25zdCBhcmczID0ge1xuICAgIHZhbDE6IDMxLFxuICB9O1xuXG4gIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRzLmNvbnNvbGlkYXRlUHJvcHMoYXJnMSwgdW5kZWZpbmVkLCBhcmczKTtcblxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2YWwxOiAzMSxcbiAgICB2YWwyOiAxMixcbiAgICB2YWwzOiAxMyxcbiAgfSk7XG5cbn0pO1xuXG50ZXN0KCdUZXN0IGNvbnNvbGlkYXRlIHByb3BzIHdpdGggZmlyc3QgYW5kIHNlY29uZCBhcmdzJywgKCkgPT4ge1xuICBjb25zdCBhcmcxID0ge1xuICAgIHZhbDE6IDExLFxuICAgIHZhbDI6IDEyLFxuICAgIHZhbDM6IDEzLFxuICB9O1xuXG4gIGNvbnN0IGFyZzIgPSB7XG4gICAgdmFsMTogMjEsXG4gICAgdmFsMjogMjIsXG4gIH07XG5cbiAgY29uc3QgcmVzdWx0ID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhhcmcxLCBhcmcyKTtcblxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2YWwxOiAyMSxcbiAgICB2YWwyOiAyMixcbiAgICB2YWwzOiAxMyxcbiAgfSk7XG5cbn0pO1xuXG50ZXN0KCdUZXN0IGNvbnNvbGlkYXRlIHByb3BzIHdpdGggb25lIGFyZycsICgpID0+IHtcbiAgY29uc3QgYXJnMSA9IHtcbiAgICB2YWwxOiAxMSxcbiAgICB2YWwyOiAxMixcbiAgICB2YWwzOiAxMyxcbiAgfTtcblxuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGFyZzEpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoYXJnMSk7XG5cbn0pO1xuXG50ZXN0KCdUZXN0IGdlbmVyYXRlTmFtZSBzdW5ueSBkYXkgZm9yIGN1cnJlbnQgY29uc3RydWN0IHdpdGggdW5kZWZpbmVkIG5hbWUgYXJndW1lbnQnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsIFwic29tZS1uZXctaWRcIik7XG5cbiAgY29uc3QgbmV3TmFtZSA9IGRlZmF1bHRzLmdlbmVyYXRlTmFtZShzdGFjayk7XG4gIC8vIDUgaXMgbm90IHNwZWNpZmljLCBqdXN0IGNoZWNraW5nIHRoZSBuYW1lIGlzIHNldmVyYWwgY2hhcmFjdGVycyBsb25nZXIgdGhhbiBqdXN0IGEgQ1IvTEZcbiAgZXhwZWN0KG5ld05hbWUubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oNSk7XG59KTtcblxudGVzdCgnVGVzdCBnZW5lcmF0ZU5hbWUgc3VubnkgZGF5IGZvciBjdXJyZW50IGNvbnN0cnVjdCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgXCJzb21lLW5ldy1pZFwiKTtcblxuICBjb25zdCBuZXdOYW1lID0gZGVmYXVsdHMuZ2VuZXJhdGVOYW1lKHN0YWNrLCBcIlwiKTtcbiAgZXhwZWN0KG5ld05hbWUubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oNSk7XG59KTtcblxudGVzdCgnVGVzdCBnZW5lcmF0ZU5hbWUgc3VubnkgZGF5IGZvciBjaGlsZCBjb25zdHJ1Y3QnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsIFwic29tZS1uZXctaWRcIik7XG5cbiAgY29uc3QgbmV3TmFtZSA9IGRlZmF1bHRzLmdlbmVyYXRlTmFtZShzdGFjaywgXCJjaGlsZFwiKTtcbiAgZXhwZWN0KG5ld05hbWUubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oNSk7XG4gIGV4cGVjdChuZXdOYW1lLmluY2x1ZGVzKG5ld05hbWUpKS50b0JlKHRydWUpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZ2VuZXJhdGVOYW1lIGxvbmdlciB0aGFuIDY0IGNoYXJhY3RlcnMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsIFwic29tZS1uZXctaWRcIik7XG4gIGNvbnN0IHNldmVudHlDaGFyYWN0ZXJOYW1lID0gJzEyMzQ1Njc4OS0xMjM0NTY3ODktMTIzNDU2Nzg5LTEyMzQ1Njc4OS0xMjM0NTY3ODktMTIzNDU2Nzg5LTEyMzQ1Njc4OS0nO1xuICBjb25zdCBuZXdOYW1lID0gZGVmYXVsdHMuZ2VuZXJhdGVOYW1lKHN0YWNrLCBzZXZlbnR5Q2hhcmFjdGVyTmFtZSk7XG4gIGV4cGVjdChuZXdOYW1lLmxlbmd0aCkudG9FcXVhbCg2NCk7XG59KTtcblxudGVzdCgnVGVzdCBnZW5lcmF0ZU5hbWUgdW5pcXVlbmVzcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2tPbmUgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgXCJzb21lLW5ldy1pZFwiKTtcbiAgY29uc3Qgc3RhY2tUd28gPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgXCJvdGhlci1pZFwiKTtcblxuICBjb25zdCBuYW1lT25lID0gZGVmYXVsdHMuZ2VuZXJhdGVOYW1lKHN0YWNrT25lLCBcIlwiKTtcbiAgY29uc3QgbmFtZVR3byA9IGRlZmF1bHRzLmdlbmVyYXRlTmFtZShzdGFja1R3bywgXCJcIik7XG4gIGV4cGVjdChuYW1lT25lID09PSBuYW1lVHdvKS50b0JlKGZhbHNlKTtcbn0pO1xuIl19
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWxzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDVixnQ0FBZ0M7QUFDaEMsbUNBQW1DO0FBRW5DLHVDQUF1QztBQUN2QyxpREFBaUQ7QUFDakQsTUFBTSxLQUFLLEdBQUcsQ0FBRSxvQkFBb0IsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUN2RCxNQUFNLGFBQWEsR0FBRyxDQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVoRCxJQUFJLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO0lBQzNELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFbEQsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO0lBQzdELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFFekQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FB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QU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0ICogYXMgZGVmYXVsdHMgZnJvbSAnLi4vJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5cbi8vIE5lZWQgMiBwYXJ0cywgYnV0IHRoZXkgY2FuJ3Qgb3ZlcmxhcFxuLy8gc28gd2UgY2FuIGV4cGxpY2l0bHkgZmluZCB0aGVtIGluIHRoZSByZXN1bHRzLlxuY29uc3QgcGFydHMgPSBbICdmaXJzdHBvcnRpb25pc2xvbmcnLCAnc2Vjb25kc2VjdGlvbiddO1xuY29uc3Qgbm9uQWxwaGFQYXJ0cyA9IFsgJ3BhcnQtb25lJywgJ3BhcnQtdHdvJ107XG5cbnRlc3QoJ1Rlc3QgZ2VuZXJhdGVSZXNvdXJjZU5hbWUgd2l0aCBhIHRydW5jYXRlZCBwYXJ0JywgKCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5nZW5lcmF0ZVJlc291cmNlTmFtZShwYXJ0cywgMzgpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvQ29udGFpbihwYXJ0c1sxXSk7XG4gIGV4cGVjdChyZXN1bHQpLm5vdC50b0NvbnRhaW4ocGFydHNbMF0pO1xuICBleHBlY3QocmVzdWx0KS50b0NvbnRhaW4ocGFydHNbMF0uc2xpY2UoMCwgMTMpKTtcblxufSk7XG5cbnRlc3QoJ1Rlc3QgZ2VuZXJhdGVSZXNvdXJjZU5hbWUgd2l0aCBubyB0cnVuY2F0ZWQgcGFydHMnLCAoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKHBhcnRzLCAxMDApO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvQ29udGFpbihwYXJ0c1sxXSk7XG4gIGV4cGVjdChyZXN1bHQpLnRvQ29udGFpbihwYXJ0c1swXSk7XG4gIGV4cGVjdChyZXN1bHQubGVuZ3RoKS50b0VxdWFsKHBhcnRzWzBdLmxlbmd0aCArIHBhcnRzWzFdLmxlbmd0aCArIDEyKTtcbn0pO1xuXG50ZXN0KCdUZXN0IGdlbmVyYXRlUmVzb3VyY2VOYW1lIHdpdGggbm9uIEFwaGFudW1lcmljJywgKCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5nZW5lcmF0ZVJlc291cmNlTmFtZShub25BbHBoYVBhcnRzLCAxMDApO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvQ29udGFpbigncGFydG9uZXBhcnR0d28nKTtcbn0pO1xuXG50ZXN0KCdUZXN0IGdlbmVyYXRlUmVzb3VyY2VOYW1lIHdpdGggcmFuZG9taXplZCBleHRlbnNpb24nLCAoKSA9PiB7XG4gIGNvbnN0IHJlc3VsdE9uZSA9IGRlZmF1bHRzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKHBhcnRzLCA1MTIsIHRydWUpO1xuICBjb25zdCBzdGFydFRpbWUgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuXG4gIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSB0aW1lIHZhbHVlIGFwcGVuZGVkIGNoYW5nZXMgYmV0d2VlbiBjYWxsbHNcbiAgbGV0IGN1cnJUaW1lID0gc3RhcnRUaW1lO1xuICB3aGlsZSAoY3VyclRpbWUgID09PSBzdGFydFRpbWUpIHtcbiAgICBjdXJyVGltZSA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gIH1cblxuICBjb25zdCByZXN1bHRUd28gPSBkZWZhdWx0cy5nZW5lcmF0ZVJlc291cmNlTmFtZShwYXJ0cywgNTEyLCB0cnVlKTtcblxuICBleHBlY3QocmVzdWx0T25lKS50b0NvbnRhaW4ocGFydHNbMV0pO1xuICBleHBlY3QocmVzdWx0T25lKS50b0NvbnRhaW4ocGFydHNbMF0pO1xuICBleHBlY3QocmVzdWx0VHdvKS50b0NvbnRhaW4ocGFydHNbMV0pO1xuICBleHBlY3QocmVzdWx0VHdvKS50b0NvbnRhaW4ocGFydHNbMF0pO1xuICBleHBlY3QocmVzdWx0T25lKS5ub3QudG9FcXVhbChyZXN1bHRUd28pO1xuICBleHBlY3QocmVzdWx0T25lLnNsaWNlKDAsIC0xMykpLnRvRXF1YWwocmVzdWx0VHdvLnNsaWNlKDAsIC0xMykpO1xuXG59KTtcblxudGVzdCgnVGVzdCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lJywgKCkgPT4ge1xuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5nZW5lcmF0ZUludGVnU3RhY2tOYW1lKCdpbnRlZy5hcGlnYXRld2F5LWR5bmFtb2RiLUNSVUQuanMnKTtcbiAgZXhwZWN0KHJlc3VsdCkudG9Db250YWluKCdhcGlnYXRld2F5LWR5bmFtb2RiLUNSVUQnKTtcblxuICBjb25zdCByZXN1bHQxID0gZGVmYXVsdHMuZ2VuZXJhdGVJbnRlZ1N0YWNrTmFtZSgnaW50ZWcub3ZlcnJpZGVfYXV0aF9hcGlfa2V5cy50cycpO1xuICBleHBlY3QocmVzdWx0MSkudG9Db250YWluKCdvdmVycmlkZS1hdXRoLWFwaS1rZXlzJyk7XG59KTtcblxudGVzdCgnVGVzdCBjb25zb2xpZGF0ZSBwcm9wcyB3aXRoIGFsbCBhcmdzJywgKCkgPT4ge1xuICBjb25zdCBhcmcxID0ge1xuICAgIHZhbDE6IDExLFxuICAgIHZhbDI6IDEyLFxuICAgIHZhbDM6IDEzLFxuICB9O1xuXG4gIGNvbnN0IGFyZzIgPSB7XG4gICAgdmFsMTogMjEsXG4gICAgdmFsMjogMjIsXG4gIH07XG5cbiAgY29uc3QgYXJnMyA9IHtcbiAgICB2YWwxOiAzMSxcbiAgfTtcblxuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGFyZzEsIGFyZzIsIGFyZzMpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoe1xuICAgIHZhbDE6IDMxLFxuICAgIHZhbDI6IDIyLFxuICAgIHZhbDM6IDEzLFxuICB9KTtcblxufSk7XG5cbnRlc3QoJ1Rlc3QgY29uc29saWRhdGUgcHJvcHMgd2l0aCBmaXJzdCBhbmQgdGhpcmQgYXJncycsICgpID0+IHtcbiAgY29uc3QgYXJnMSA9IHtcbiAgICB2YWwxOiAxMSxcbiAgICB2YWwyOiAxMixcbiAgICB2YWwzOiAxMyxcbiAgfTtcblxuICBjb25zdCBhcmczID0ge1xuICAgIHZhbDE6IDMxLFxuICB9O1xuXG4gIGNvbnN0IHJlc3VsdCA9IGRlZmF1bHRzLmNvbnNvbGlkYXRlUHJvcHMoYXJnMSwgdW5kZWZpbmVkLCBhcmczKTtcblxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2YWwxOiAzMSxcbiAgICB2YWwyOiAxMixcbiAgICB2YWwzOiAxMyxcbiAgfSk7XG5cbn0pO1xuXG50ZXN0KCdUZXN0IGNvbnNvbGlkYXRlIHByb3BzIHdpdGggZmlyc3QgYW5kIHNlY29uZCBhcmdzJywgKCkgPT4ge1xuICBjb25zdCBhcmcxID0ge1xuICAgIHZhbDE6IDExLFxuICAgIHZhbDI6IDEyLFxuICAgIHZhbDM6IDEzLFxuICB9O1xuXG4gIGNvbnN0IGFyZzIgPSB7XG4gICAgdmFsMTogMjEsXG4gICAgdmFsMjogMjIsXG4gIH07XG5cbiAgY29uc3QgcmVzdWx0ID0gZGVmYXVsdHMuY29uc29saWRhdGVQcm9wcyhhcmcxLCBhcmcyKTtcblxuICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcbiAgICB2YWwxOiAyMSxcbiAgICB2YWwyOiAyMixcbiAgICB2YWwzOiAxMyxcbiAgfSk7XG5cbn0pO1xuXG50ZXN0KCdUZXN0IGNvbnNvbGlkYXRlIHByb3BzIHdpdGggb25lIGFyZycsICgpID0+IHtcbiAgY29uc3QgYXJnMSA9IHtcbiAgICB2YWwxOiAxMSxcbiAgICB2YWwyOiAxMixcbiAgICB2YWwzOiAxMyxcbiAgfTtcblxuICBjb25zdCByZXN1bHQgPSBkZWZhdWx0cy5jb25zb2xpZGF0ZVByb3BzKGFyZzEpO1xuXG4gIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoYXJnMSk7XG5cbn0pO1xuXG50ZXN0KCdUZXN0IGdlbmVyYXRlTmFtZSBzdW5ueSBkYXkgZm9yIGN1cnJlbnQgY29uc3RydWN0IHdpdGggdW5kZWZpbmVkIG5hbWUgYXJndW1lbnQnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsIFwic29tZS1uZXctaWRcIik7XG5cbiAgY29uc3QgbmV3TmFtZSA9IGRlZmF1bHRzLmdlbmVyYXRlTmFtZShzdGFjayk7XG4gIC8vIDUgaXMgbm90IHNwZWNpZmljLCBqdXN0IGNoZWNraW5nIHRoZSBuYW1lIGlzIHNldmVyYWwgY2hhcmFjdGVycyBsb25nZXIgdGhhbiBqdXN0IGEgQ1IvTEZcbiAgZXhwZWN0KG5ld05hbWUubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oNSk7XG59KTtcblxudGVzdCgnVGVzdCBnZW5lcmF0ZU5hbWUgc3VubnkgZGF5IGZvciBjdXJyZW50IGNvbnN0cnVjdCcsICgpID0+IHtcbiAgY29uc3Qgc3RhY2sgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgXCJzb21lLW5ldy1pZFwiKTtcblxuICBjb25zdCBuZXdOYW1lID0gZGVmYXVsdHMuZ2VuZXJhdGVOYW1lKHN0YWNrLCBcIlwiKTtcbiAgZXhwZWN0KG5ld05hbWUubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oNSk7XG59KTtcblxudGVzdCgnVGVzdCBnZW5lcmF0ZU5hbWUgc3VubnkgZGF5IGZvciBjaGlsZCBjb25zdHJ1Y3QnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsIFwic29tZS1uZXctaWRcIik7XG5cbiAgY29uc3QgbmV3TmFtZSA9IGRlZmF1bHRzLmdlbmVyYXRlTmFtZShzdGFjaywgXCJjaGlsZFwiKTtcbiAgZXhwZWN0KG5ld05hbWUubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oNSk7XG4gIGV4cGVjdChuZXdOYW1lLmluY2x1ZGVzKG5ld05hbWUpKS50b0JlKHRydWUpO1xufSk7XG5cbnRlc3QoJ1Rlc3QgZ2VuZXJhdGVOYW1lIGxvbmdlciB0aGFuIDY0IGNoYXJhY3RlcnMnLCAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrID0gbmV3IGNkay5TdGFjayh1bmRlZmluZWQsIFwic29tZS1uZXctaWRcIik7XG4gIGNvbnN0IHNldmVudHlDaGFyYWN0ZXJOYW1lID0gJzEyMzQ1Njc4OS0xMjM0NTY3ODktMTIzNDU2Nzg5LTEyMzQ1Njc4OS0xMjM0NTY3ODktMTIzNDU2Nzg5LTEyMzQ1Njc4OS0nO1xuICBjb25zdCBuZXdOYW1lID0gZGVmYXVsdHMuZ2VuZXJhdGVOYW1lKHN0YWNrLCBzZXZlbnR5Q2hhcmFjdGVyTmFtZSk7XG4gIGV4cGVjdChuZXdOYW1lLmxlbmd0aCkudG9FcXVhbCg2NCk7XG59KTtcblxudGVzdCgnVGVzdCBnZW5lcmF0ZU5hbWUgdW5pcXVlbmVzcycsICgpID0+IHtcbiAgY29uc3Qgc3RhY2tPbmUgPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgXCJzb21lLW5ldy1pZFwiKTtcbiAgY29uc3Qgc3RhY2tUd28gPSBuZXcgY2RrLlN0YWNrKHVuZGVmaW5lZCwgXCJvdGhlci1pZFwiKTtcblxuICBjb25zdCBuYW1lT25lID0gZGVmYXVsdHMuZ2VuZXJhdGVOYW1lKHN0YWNrT25lLCBcIlwiKTtcbiAgY29uc3QgbmFtZVR3byA9IGRlZmF1bHRzLmdlbmVyYXRlTmFtZShzdGFja1R3bywgXCJcIik7XG4gIGV4cGVjdChuYW1lT25lID09PSBuYW1lVHdvKS50b0JlKGZhbHNlKTtcbn0pO1xuIl19
|