@gemeentenijmegen/webapp 1.1.0 → 1.1.2
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 +12 -12
- package/assets/webapp/auth/auth.lambda/index.js +54 -33
- package/assets/webapp/login/login.lambda/index.js +54 -33
- package/assets/webapp/logout/logout.lambda/index.js +53 -32
- package/lib/webapp/Criticality.js +1 -1
- package/lib/webapp/Webapp.js +1 -1
- package/lib/webapp/Webpage.js +1 -1
- package/lib/webapp/util/Files.js +1 -1
- package/node_modules/@aws-sdk/client-dynamodb/README.md +1 -1
- package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/index.js +35 -30
- package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-dynamodb/dist-cjs/runtimeConfig.js +2 -1
- package/node_modules/@aws-sdk/client-dynamodb/dist-es/DynamoDBClient.js +12 -10
- package/node_modules/@aws-sdk/client-dynamodb/dist-es/models/models_0.js +15 -15
- package/node_modules/@aws-sdk/client-dynamodb/dist-es/protocols/Aws_json1_0.js +3 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-es/runtimeConfig.browser.js +2 -2
- package/node_modules/@aws-sdk/client-dynamodb/dist-es/runtimeConfig.js +3 -2
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/DynamoDBClient.d.ts +3 -3
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/CreateGlobalTableCommand.d.ts +10 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/CreateTableCommand.d.ts +28 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DeleteTableCommand.d.ts +20 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeGlobalTableCommand.d.ts +10 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeImportCommand.d.ts +4 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/DescribeTableCommand.d.ts +20 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/ImportTableCommand.d.ts +8 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/RestoreTableFromBackupCommand.d.ts +24 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/RestoreTableToPointInTimeCommand.d.ts +24 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateGlobalTableCommand.d.ts +10 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/commands/UpdateTableCommand.d.ts +32 -0
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/models/models_0.d.ts +758 -655
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/runtimeConfig.browser.d.ts +2 -1
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/runtimeConfig.d.ts +2 -1
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/runtimeConfig.native.d.ts +2 -1
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/DynamoDBClient.d.ts +7 -1
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/models/models_0.d.ts +744 -641
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
- package/node_modules/@aws-sdk/client-dynamodb/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
- package/node_modules/@aws-sdk/client-dynamodb/package.json +38 -38
- package/node_modules/@aws-sdk/client-s3/README.md +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-cjs/index.js +240 -179
- package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.js +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectsCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAccelerateConfigurationCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketAclCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketCorsCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketEncryptionCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLifecycleConfigurationCommand.js +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketLoggingCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketOwnershipControlsCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketPolicyCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketReplicationCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketRequestPaymentCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketTaggingCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketVersioningCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutBucketWebsiteCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectAclCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLegalHoldCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectLockConfigurationCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectRetentionCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectTaggingCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutPublicAccessBlockCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/RestoreObjectCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/commands/UploadPartCommand.js +0 -1
- package/node_modules/@aws-sdk/client-s3/dist-es/models/models_0.js +4 -28
- package/node_modules/@aws-sdk/client-s3/dist-es/models/models_1.js +48 -0
- package/node_modules/@aws-sdk/client-s3/dist-es/protocols/Aws_restXml.js +131 -100
- package/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.browser.js +2 -2
- package/node_modules/@aws-sdk/client-s3/dist-es/runtimeConfig.js +3 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/AbortMultipartUploadCommand.d.ts +16 -13
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/CompleteMultipartUploadCommand.d.ts +47 -42
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/CopyObjectCommand.d.ts +77 -57
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketCommand.d.ts +60 -45
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateMultipartUploadCommand.d.ts +92 -66
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateSessionCommand.d.ts +31 -17
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketAnalyticsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCommand.d.ts +10 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketCorsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketEncryptionCommand.d.ts +18 -10
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketInventoryConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketLifecycleCommand.d.ts +52 -9
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketMetricsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketOwnershipControlsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketPolicyCommand.d.ts +25 -21
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketReplicationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteBucketWebsiteCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectCommand.d.ts +44 -50
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectsCommand.d.ts +63 -49
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeletePublicAccessBlockCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAccelerateConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketAnalyticsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketCorsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketEncryptionCommand.d.ts +18 -10
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketInventoryConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLifecycleConfigurationCommand.d.ts +63 -18
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLocationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketLoggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetricsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketNotificationConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketOwnershipControlsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyCommand.d.ts +30 -21
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketPolicyStatusCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketReplicationCommand.d.ts +2 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketRequestPaymentCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketVersioningCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketWebsiteCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAttributesCommand.d.ts +62 -44
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectCommand.d.ts +81 -62
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLegalHoldCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectLockConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectRetentionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTaggingCommand.d.ts +20 -20
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectTorrentCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetPublicAccessBlockCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadBucketCommand.d.ts +32 -16
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/HeadObjectCommand.d.ts +61 -39
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketAnalyticsConfigurationsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketIntelligentTieringConfigurationsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketInventoryConfigurationsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketMetricsConfigurationsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListBucketsCommand.d.ts +14 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListDirectoryBucketsCommand.d.ts +13 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListMultipartUploadsCommand.d.ts +82 -65
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectVersionsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectsV2Command.d.ts +23 -14
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListPartsCommand.d.ts +22 -17
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAccelerateConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketAnalyticsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketCorsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketEncryptionCommand.d.ts +48 -33
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketIntelligentTieringConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketInventoryConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLifecycleConfigurationCommand.d.ts +93 -53
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketLoggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketMetricsConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts +2 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketOwnershipControlsCommand.d.ts +2 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketPolicyCommand.d.ts +30 -21
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketReplicationCommand.d.ts +4 -5
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketRequestPaymentCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketVersioningCommand.d.ts +3 -6
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketWebsiteCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAclCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectCommand.d.ts +123 -75
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLegalHoldCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectLockConfigurationCommand.d.ts +3 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectRetentionCommand.d.ts +2 -2
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectTaggingCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutPublicAccessBlockCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts +1 -5
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/SelectObjectContentCommand.d.ts +1 -5
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCommand.d.ts +52 -41
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/UploadPartCopyCommand.d.ts +66 -52
- package/node_modules/@aws-sdk/client-s3/dist-types/commands/WriteGetObjectResponseCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts +1835 -1569
- package/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts +613 -459
- package/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.browser.d.ts +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.d.ts +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/runtimeConfig.native.d.ts +2 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketLifecycleConfigurationCommand.d.ts +7 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketNotificationConfigurationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutBucketOwnershipControlsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_0.d.ts +812 -882
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_1.d.ts +313 -275
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.d.ts +8 -3
- package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
- package/node_modules/@aws-sdk/client-s3/package.json +58 -59
- package/node_modules/@aws-sdk/client-secrets-manager/README.md +1 -1
- package/node_modules/@aws-sdk/client-secrets-manager/dist-cjs/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-secrets-manager/dist-cjs/runtimeConfig.js +2 -1
- package/node_modules/@aws-sdk/client-secrets-manager/dist-es/runtimeConfig.browser.js +2 -2
- package/node_modules/@aws-sdk/client-secrets-manager/dist-es/runtimeConfig.js +3 -2
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/models/models_0.d.ts +184 -184
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeConfig.browser.d.ts +2 -1
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeConfig.d.ts +2 -1
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/runtimeConfig.native.d.ts +2 -1
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/models/models_0.d.ts +184 -184
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
- package/node_modules/@aws-sdk/client-secrets-manager/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
- package/node_modules/@aws-sdk/client-secrets-manager/package.json +36 -36
- package/node_modules/@aws-sdk/client-ssm/README.md +40 -8
- package/node_modules/@aws-sdk/client-ssm/dist-cjs/index.js +834 -437
- package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.js +2 -1
- package/node_modules/@aws-sdk/client-ssm/dist-es/SSM.js +8 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/commands/GetExecutionPreviewCommand.js +22 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/commands/ListNodesCommand.js +23 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/commands/ListNodesSummaryCommand.js +22 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/commands/SendCommandCommand.js +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-es/commands/StartExecutionPreviewCommand.js +22 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/commands/index.js +4 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/models/models_1.js +99 -144
- package/node_modules/@aws-sdk/client-ssm/dist-es/models/models_2.js +167 -1
- package/node_modules/@aws-sdk/client-ssm/dist-es/pagination/ListNodesPaginator.js +4 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/pagination/ListNodesSummaryPaginator.js +4 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/pagination/index.js +2 -0
- package/node_modules/@aws-sdk/client-ssm/dist-es/protocols/Aws_json1_1.js +159 -3
- package/node_modules/@aws-sdk/client-ssm/dist-es/runtimeConfig.browser.js +2 -2
- package/node_modules/@aws-sdk/client-ssm/dist-es/runtimeConfig.js +3 -2
- package/node_modules/@aws-sdk/client-ssm/dist-types/SSM.d.ts +29 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/SSMClient.d.ts +6 -2
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/CreateResourceDataSyncCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DeleteActivationCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeActivationsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePatchStatesForPatchGroupCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePatchesCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/DescribeInstancePropertiesCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetExecutionPreviewCommand.d.ts +98 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetInventoryCommand.d.ts +3 -4
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/GetOpsSummaryCommand.d.ts +3 -4
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListComplianceItemsCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListComplianceSummariesCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListInventoryEntriesCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListNodesCommand.d.ts +123 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListNodesSummaryCommand.d.ts +123 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ListResourceComplianceSummariesCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ResetServiceSettingCommand.d.ts +2 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/ResumeSessionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/SendAutomationSignalCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/SendCommandCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartAssociationsOnceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartAutomationExecutionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/StartExecutionPreviewCommand.d.ts +141 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/commands/index.d.ts +4 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_0.d.ts +711 -706
- package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_1.d.ts +2303 -2337
- package/node_modules/@aws-sdk/client-ssm/dist-types/models/models_2.d.ts +961 -196
- package/node_modules/@aws-sdk/client-ssm/dist-types/pagination/ListNodesPaginator.d.ts +7 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/pagination/ListNodesSummaryPaginator.d.ts +7 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/pagination/index.d.ts +2 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/protocols/Aws_json1_1.d.ts +36 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/runtimeConfig.browser.d.ts +2 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/runtimeConfig.d.ts +2 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/runtimeConfig.native.d.ts +2 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/SSM.d.ts +69 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/SSMClient.d.ts +24 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/GetExecutionPreviewCommand.d.ts +51 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ListNodesCommand.d.ts +47 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ListNodesSummaryCommand.d.ts +48 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ResetServiceSettingCommand.d.ts +2 -4
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/ResumeSessionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/SendAutomationSignalCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/SendCommandCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/StartAssociationsOnceCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/StartAutomationExecutionCommand.d.ts +1 -1
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/StartExecutionPreviewCommand.d.ts +51 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/commands/index.d.ts +4 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_0.d.ts +706 -702
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_1.d.ts +1010 -1004
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/models/models_2.d.ts +436 -198
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/pagination/ListNodesPaginator.d.ts +11 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/pagination/ListNodesSummaryPaginator.d.ts +11 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/pagination/index.d.ts +2 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/protocols/Aws_json1_1.d.ts +48 -0
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
- package/node_modules/@aws-sdk/client-ssm/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
- package/node_modules/@aws-sdk/client-ssm/package.json +37 -37
- package/node_modules/@aws-sdk/client-sso/README.md +1 -1
- package/node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js +2 -1
- package/node_modules/@aws-sdk/client-sso/dist-es/runtimeConfig.browser.js +2 -2
- package/node_modules/@aws-sdk/client-sso/dist-es/runtimeConfig.js +3 -2
- package/node_modules/@aws-sdk/client-sso/dist-types/models/models_0.d.ts +18 -18
- package/node_modules/@aws-sdk/client-sso/dist-types/runtimeConfig.browser.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/runtimeConfig.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/runtimeConfig.native.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/models/models_0.d.ts +18 -18
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
- package/node_modules/@aws-sdk/client-sso/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
- package/node_modules/@aws-sdk/client-sso/package.json +32 -32
- package/node_modules/@aws-sdk/client-sso-oidc/README.md +1 -1
- package/node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.js +2 -1
- package/node_modules/@aws-sdk/client-sso-oidc/dist-es/runtimeConfig.browser.js +2 -2
- package/node_modules/@aws-sdk/client-sso-oidc/dist-es/runtimeConfig.js +3 -2
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/models/models_0.d.ts +74 -74
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/runtimeConfig.browser.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/runtimeConfig.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/runtimeConfig.native.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/models/models_0.d.ts +74 -74
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
- package/node_modules/@aws-sdk/client-sso-oidc/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
- package/node_modules/@aws-sdk/client-sso-oidc/package.json +34 -34
- package/node_modules/@aws-sdk/client-sts/README.md +9 -1
- package/node_modules/@aws-sdk/client-sts/dist-cjs/index.js +99 -14
- package/node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.browser.js +1 -1
- package/node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js +2 -1
- package/node_modules/@aws-sdk/client-sts/dist-es/STS.js +2 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/commands/AssumeRootCommand.js +23 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/commands/index.js +1 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/defaultStsRoleAssumers.js +10 -2
- package/node_modules/@aws-sdk/client-sts/dist-es/models/models_0.js +4 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/protocols/Aws_query.js +53 -0
- package/node_modules/@aws-sdk/client-sts/dist-es/runtimeConfig.browser.js +2 -2
- package/node_modules/@aws-sdk/client-sts/dist-es/runtimeConfig.js +3 -2
- package/node_modules/@aws-sdk/client-sts/dist-types/STS.d.ts +7 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/STSClient.d.ts +3 -2
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleCommand.d.ts +13 -13
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleWithSAMLCommand.d.ts +8 -8
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRoleWithWebIdentityCommand.d.ts +15 -30
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/AssumeRootCommand.d.ts +129 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/DecodeAuthorizationMessageCommand.d.ts +2 -2
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetFederationTokenCommand.d.ts +8 -8
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/GetSessionTokenCommand.d.ts +6 -6
- package/node_modules/@aws-sdk/client-sts/dist-types/commands/index.d.ts +1 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/models/models_0.d.ts +202 -88
- package/node_modules/@aws-sdk/client-sts/dist-types/protocols/Aws_query.d.ts +9 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/runtimeConfig.browser.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sts/dist-types/runtimeConfig.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sts/dist-types/runtimeConfig.native.d.ts +2 -1
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/STS.d.ts +17 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/STSClient.d.ts +6 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/commands/AssumeRootCommand.d.ts +47 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/commands/index.d.ts +1 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/models/models_0.d.ts +68 -56
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/protocols/Aws_query.d.ts +12 -0
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/runtimeConfig.browser.d.ts +9 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/runtimeConfig.d.ts +6 -3
- package/node_modules/@aws-sdk/client-sts/dist-types/ts3.4/runtimeConfig.native.d.ts +9 -3
- package/node_modules/@aws-sdk/client-sts/package.json +36 -36
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js +3 -3
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +36 -5
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +6 -1
- package/node_modules/@aws-sdk/core/dist-es/submodules/account-id-endpoint/AccountIdEndpointModeConfigResolver.js +1 -1
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/emitWarningIfUnsupportedVersion.js +5 -3
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/index.js +2 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js +7 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js +11 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js +6 -1
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/emitWarningIfUnsupportedVersion.d.ts +3 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/index.d.ts +2 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/setCredentialFeature.d.ts +7 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts +12 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/emitWarningIfUnsupportedVersion.d.ts +3 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/index.d.ts +2 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setCredentialFeature.d.ts +11 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/client/setFeature.d.ts +6 -0
- package/node_modules/@aws-sdk/core/package.json +14 -11
- package/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +4 -1
- package/node_modules/@aws-sdk/credential-provider-env/dist-es/fromEnv.js +4 -1
- package/node_modules/@aws-sdk/credential-provider-env/package.json +7 -5
- package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +2 -1
- package/node_modules/@aws-sdk/credential-provider-http/dist-es/fromHttp/fromHttp.js +2 -1
- package/node_modules/@aws-sdk/credential-provider-http/package.json +12 -10
- package/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +29 -13
- package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveAssumeRoleCredentials.js +3 -2
- package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveCredentialSource.js +5 -3
- package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js +2 -1
- package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProfileData.js +1 -1
- package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveSsoCredentials.js +10 -2
- package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveStaticCredentials.js +5 -3
- package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js +2 -1
- package/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveAssumeRoleCredentials.d.ts +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/dist-types/resolveSsoCredentials.d.ts +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveAssumeRoleCredentials.d.ts +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/dist-types/ts3.4/resolveSsoCredentials.d.ts +3 -2
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +15 -13
- package/node_modules/@aws-sdk/credential-provider-node/package.json +15 -14
- package/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +4 -1
- package/node_modules/@aws-sdk/credential-provider-process/dist-es/getValidatedProcessCredentials.js +4 -1
- package/node_modules/@aws-sdk/credential-provider-process/package.json +8 -6
- package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +8 -1
- package/node_modules/@aws-sdk/credential-provider-sso/dist-es/resolveSSOCredentials.js +9 -1
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +10 -8
- package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +6 -1
- package/node_modules/@aws-sdk/credential-provider-web-identity/dist-es/fromTokenFile.js +6 -1
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +10 -8
- package/node_modules/@aws-sdk/endpoint-cache/package.json +3 -2
- package/node_modules/@aws-sdk/middleware-bucket-endpoint/package.json +8 -7
- package/node_modules/@aws-sdk/middleware-endpoint-discovery/package.json +10 -8
- package/node_modules/@aws-sdk/middleware-expect-continue/package.json +8 -6
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.browser.js +6 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/getCrc32ChecksumAlgorithmFunction.js +28 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js +35 -10
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/flexibleChecksumsMiddleware.js +18 -2
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getChecksum.js +1 -5
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.browser.js +2 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/getCrc32ChecksumAlgorithmFunction.js +23 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/selectChecksumAlgorithmFunction.js +2 -2
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-es/validateChecksumFromResponse.js +14 -2
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/flexibleChecksumsMiddleware.d.ts +0 -3
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getChecksum.d.ts +2 -3
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.browser.d.ts +2 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/getCrc32ChecksumAlgorithmFunction.d.ts +10 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/flexibleChecksumsMiddleware.d.ts +0 -1
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getChecksum.d.ts +2 -8
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.browser.d.ts +2 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-types/ts3.4/getCrc32ChecksumAlgorithmFunction.d.ts +12 -0
- package/node_modules/@aws-sdk/middleware-flexible-checksums/package.json +17 -9
- package/node_modules/@aws-sdk/middleware-host-header/package.json +8 -6
- package/node_modules/@aws-sdk/middleware-location-constraint/package.json +7 -5
- package/node_modules/@aws-sdk/middleware-logger/package.json +7 -5
- package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +8 -6
- package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js +18 -15
- package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js +13 -13
- package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js +2 -0
- package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +20 -16
- package/node_modules/@aws-sdk/middleware-ssec/package.json +7 -5
- package/node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js +112 -4
- package/node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js +49 -0
- package/node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js +22 -0
- package/node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js +18 -0
- package/node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js +11 -1
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/check-features.d.ts +18 -0
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/configurations.d.ts +14 -1
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/encode-features.d.ts +5 -0
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/check-features.d.ts +20 -0
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/configurations.d.ts +5 -1
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/encode-features.d.ts +2 -0
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/ts3.4/user-agent-middleware.d.ts +2 -1
- package/node_modules/@aws-sdk/middleware-user-agent/dist-types/user-agent-middleware.d.ts +2 -1
- package/node_modules/@aws-sdk/middleware-user-agent/package.json +12 -8
- package/node_modules/@aws-sdk/region-config-resolver/package.json +7 -6
- package/node_modules/@aws-sdk/s3-request-presigner/README.md +23 -41
- package/node_modules/@aws-sdk/s3-request-presigner/dist-cjs/index.js +24 -6
- package/node_modules/@aws-sdk/s3-request-presigner/dist-es/presigner.js +8 -4
- package/node_modules/@aws-sdk/s3-request-presigner/dist-types/presigner.d.ts +2 -2
- package/node_modules/@aws-sdk/s3-request-presigner/dist-types/ts3.4/presigner.d.ts +2 -0
- package/node_modules/@aws-sdk/s3-request-presigner/package.json +12 -11
- package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +8 -7
- package/node_modules/@aws-sdk/token-providers/package.json +8 -7
- package/node_modules/@aws-sdk/types/dist-es/feature-ids.js +1 -0
- package/node_modules/@aws-sdk/types/dist-es/index.js +1 -0
- package/node_modules/@aws-sdk/types/dist-types/feature-ids.d.ts +59 -0
- package/node_modules/@aws-sdk/types/dist-types/identity/AwsCredentialIdentity.d.ts +5 -0
- package/node_modules/@aws-sdk/types/dist-types/index.d.ts +1 -0
- package/node_modules/@aws-sdk/types/dist-types/middleware.d.ts +12 -0
- package/node_modules/@aws-sdk/types/dist-types/ts3.4/feature-ids.d.ts +54 -0
- package/node_modules/@aws-sdk/types/dist-types/ts3.4/identity/AwsCredentialIdentity.d.ts +5 -0
- package/node_modules/@aws-sdk/types/dist-types/ts3.4/index.d.ts +1 -0
- package/node_modules/@aws-sdk/types/dist-types/ts3.4/middleware.d.ts +7 -0
- package/node_modules/@aws-sdk/types/package.json +2 -2
- package/node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js +1 -0
- package/node_modules/@aws-sdk/util-arn-parser/package.json +3 -2
- package/node_modules/@aws-sdk/util-endpoints/package.json +8 -6
- package/node_modules/@aws-sdk/util-format-url/package.json +6 -5
- package/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js +1 -0
- package/node_modules/@aws-sdk/util-locate-window/package.json +3 -2
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.js +9 -4
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-cjs/index.native.js +9 -4
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js +7 -2
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.native.js +7 -2
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.d.ts +9 -1
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/index.native.d.ts +9 -1
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.d.ts +12 -1
- package/node_modules/@aws-sdk/util-user-agent-browser/dist-types/ts3.4/index.native.d.ts +12 -1
- package/node_modules/@aws-sdk/util-user-agent-browser/package.json +5 -4
- package/node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js +46 -39
- package/node_modules/@aws-sdk/util-user-agent-node/dist-es/defaultUserAgent.js +29 -0
- package/node_modules/@aws-sdk/util-user-agent-node/dist-es/index.js +2 -39
- package/node_modules/@aws-sdk/util-user-agent-node/dist-es/nodeAppIdConfigOptions.js +8 -0
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/defaultUserAgent.d.ts +23 -0
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/index.d.ts +2 -20
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/nodeAppIdConfigOptions.d.ts +13 -0
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/defaultUserAgent.d.ts +21 -0
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/index.d.ts +2 -12
- package/node_modules/@aws-sdk/util-user-agent-node/dist-types/ts3.4/nodeAppIdConfigOptions.d.ts +6 -0
- package/node_modules/@aws-sdk/util-user-agent-node/package.json +7 -5
- package/node_modules/@aws-sdk/xml-builder/package.json +4 -3
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/.jsii +5 -5
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/lib/index.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/.jsii +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/.jsii.tabl.json.gz +0 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/api-call-base.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/assertions.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/common.js +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/http-call.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/match.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/providers/provider.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/sdk.js +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/assertions/waiter-state-machine.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/lib/test-case.js +3 -3
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-cdk/integ-tests-alpha/package.json +7 -7
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/.jsii +325 -18
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/index.d.ts +2 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/index.js +3 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/apigateway-defaults.js +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/cloudfront-distribution-helper.js +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kendra-defaults.js +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/kendra-helper.js +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-defaults.d.ts +15 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-defaults.js +33 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-helper.d.ts +56 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/pipes-helper.js +197 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/step-function-helper.d.ts +2 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/step-function-helper.js +10 -4
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/utils.d.ts +9 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/lib/utils.js +28 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/package.json +4 -4
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/pipes-helper.test.d.ts +13 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/pipes-helper.test.js +695 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/step-function-helper.test.js +35 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/test-helper.d.ts +1 -0
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/test-helper.js +8 -3
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/@aws-solutions-constructs/core/test/utils.test.js +16 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/.jsii +85 -45
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/API.md +841 -255
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/Dockerfile +2 -2
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/README.md +5 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/construct.d.ts +20 -3
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/construct.js +36 -30
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/dependency.d.ts +0 -4
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/dependency.js +5 -9
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/private/stack-trace.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/lib/private/uniqueid.js +1 -1
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/package.json +35 -31
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/package.json +6 -6
- package/node_modules/@gemeentenijmegen/apiclient/package.json +8 -8
- package/node_modules/@gemeentenijmegen/apigateway-http/package.json +5 -5
- package/node_modules/@gemeentenijmegen/session/package.json +6 -6
- package/node_modules/@gemeentenijmegen/utils/package.json +8 -8
- package/node_modules/@smithy/abort-controller/package.json +4 -3
- package/node_modules/@smithy/chunked-blob-reader/dist-cjs/index.js +8 -23
- package/node_modules/@smithy/chunked-blob-reader/dist-es/index.js +8 -22
- package/node_modules/@smithy/chunked-blob-reader/dist-types/index.d.ts +1 -0
- package/node_modules/@smithy/chunked-blob-reader/dist-types/ts3.4/index.d.ts +1 -0
- package/node_modules/@smithy/chunked-blob-reader/package.json +2 -2
- package/node_modules/@smithy/chunked-blob-reader-native/package.json +2 -2
- package/node_modules/@smithy/config-resolver/package.json +7 -6
- package/node_modules/@smithy/core/dist-cjs/index.js +79 -158
- package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +34 -9
- package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +164 -0
- package/node_modules/@smithy/core/dist-es/index.js +4 -3
- package/node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js +1 -2
- package/node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js +1 -2
- package/node_modules/@smithy/core/dist-es/protocols/requestBuilder.js +1 -67
- package/node_modules/@smithy/core/dist-es/setFeature.js +11 -0
- package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js +2 -2
- package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js +11 -1
- package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-types.js +5 -0
- package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js +8 -2
- package/node_modules/@smithy/core/dist-es/submodules/cbor/index.js +1 -0
- package/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +4 -3
- package/node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js +11 -0
- package/node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js +5 -0
- package/node_modules/@smithy/core/dist-es/submodules/protocols/index.js +4 -0
- package/node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js +67 -0
- package/node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js +19 -0
- package/node_modules/@smithy/core/dist-types/index.d.ts +4 -3
- package/node_modules/@smithy/core/dist-types/protocols/requestBuilder.d.ts +2 -48
- package/node_modules/@smithy/core/dist-types/setFeature.d.ts +12 -0
- package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-types.d.ts +23 -0
- package/node_modules/@smithy/core/dist-types/submodules/cbor/index.d.ts +1 -0
- package/node_modules/@smithy/core/dist-types/submodules/cbor/parseCborBody.d.ts +4 -2
- package/node_modules/@smithy/core/dist-types/submodules/protocols/collect-stream-body.d.ts +10 -0
- package/node_modules/@smithy/core/dist-types/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
- package/node_modules/@smithy/core/dist-types/submodules/protocols/index.d.ts +4 -0
- package/node_modules/@smithy/core/dist-types/submodules/protocols/requestBuilder.d.ts +51 -0
- package/node_modules/@smithy/core/dist-types/submodules/protocols/resolve-path.d.ts +4 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/index.d.ts +4 -3
- package/node_modules/@smithy/core/dist-types/ts3.4/protocols/requestBuilder.d.ts +2 -48
- package/node_modules/@smithy/core/dist-types/ts3.4/setFeature.d.ts +12 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/cbor-types.d.ts +23 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/index.d.ts +1 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/cbor/parseCborBody.d.ts +4 -2
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/collect-stream-body.d.ts +10 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/extended-encode-uri-component.d.ts +7 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/index.d.ts +4 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/requestBuilder.d.ts +51 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/protocols/resolve-path.d.ts +4 -0
- package/node_modules/@smithy/core/package.json +19 -11
- package/node_modules/@smithy/core/protocols.d.ts +7 -0
- package/node_modules/@smithy/core/protocols.js +6 -0
- package/node_modules/@smithy/credential-provider-imds/package.json +7 -7
- package/node_modules/@smithy/eventstream-codec/package.json +4 -3
- package/node_modules/@smithy/eventstream-serde-browser/package.json +3 -3
- package/node_modules/@smithy/eventstream-serde-config-resolver/package.json +5 -4
- package/node_modules/@smithy/eventstream-serde-node/package.json +3 -3
- package/node_modules/@smithy/eventstream-serde-universal/package.json +5 -4
- package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +12 -30
- package/node_modules/@smithy/fetch-http-handler/dist-es/create-request.js +3 -0
- package/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js +3 -2
- package/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +3 -26
- package/node_modules/@smithy/fetch-http-handler/dist-types/create-request.d.ts +6 -0
- package/node_modules/@smithy/fetch-http-handler/dist-types/fetch-http-handler.d.ts +6 -0
- package/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/create-request.d.ts +6 -0
- package/node_modules/@smithy/fetch-http-handler/dist-types/ts3.4/fetch-http-handler.d.ts +6 -0
- package/node_modules/@smithy/fetch-http-handler/package.json +9 -6
- package/node_modules/@smithy/hash-blob-browser/package.json +6 -5
- package/node_modules/@smithy/hash-node/package.json +4 -3
- package/node_modules/@smithy/hash-stream-node/package.json +4 -3
- package/node_modules/@smithy/invalid-dependency/package.json +4 -3
- package/node_modules/@smithy/md5-js/package.json +4 -3
- package/node_modules/@smithy/middleware-content-length/package.json +5 -4
- package/node_modules/@smithy/middleware-endpoint/dist-cjs/index.js +4 -0
- package/node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js +4 -0
- package/node_modules/@smithy/middleware-endpoint/package.json +11 -9
- package/node_modules/@smithy/middleware-retry/package.json +12 -10
- package/node_modules/@smithy/middleware-serde/package.json +6 -4
- package/node_modules/@smithy/middleware-stack/package.json +4 -3
- package/node_modules/@smithy/node-config-provider/package.json +6 -5
- package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +20 -14
- package/node_modules/@smithy/node-http-handler/dist-cjs/timing.js +1 -0
- package/node_modules/@smithy/node-http-handler/dist-es/node-http-handler.js +5 -4
- package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +1 -1
- package/node_modules/@smithy/node-http-handler/dist-es/server.mock.js +9 -2
- package/node_modules/@smithy/node-http-handler/dist-es/set-connection-timeout.js +5 -4
- package/node_modules/@smithy/node-http-handler/dist-es/set-socket-keep-alive.js +2 -1
- package/node_modules/@smithy/node-http-handler/dist-es/set-socket-timeout.js +2 -1
- package/node_modules/@smithy/node-http-handler/dist-es/timing.js +4 -0
- package/node_modules/@smithy/node-http-handler/dist-es/write-request-body.js +4 -3
- package/node_modules/@smithy/node-http-handler/dist-types/timing.d.ts +8 -0
- package/node_modules/@smithy/node-http-handler/dist-types/ts3.4/timing.d.ts +8 -0
- package/node_modules/@smithy/node-http-handler/package.json +7 -6
- package/node_modules/@smithy/property-provider/package.json +4 -3
- package/node_modules/@smithy/protocol-http/package.json +4 -3
- package/node_modules/@smithy/querystring-builder/package.json +2 -2
- package/node_modules/@smithy/querystring-parser/package.json +4 -3
- package/node_modules/@smithy/service-error-classification/package.json +4 -3
- package/node_modules/@smithy/shared-ini-file-loader/package.json +4 -3
- package/node_modules/@smithy/signature-v4/package.json +6 -5
- package/node_modules/@smithy/smithy-client/dist-cjs/index.js +59 -36
- package/node_modules/@smithy/smithy-client/dist-cjs/quote-header.js +1 -0
- package/node_modules/@smithy/smithy-client/dist-cjs/split-header.js +1 -0
- package/node_modules/@smithy/smithy-client/dist-es/collect-stream-body.js +1 -11
- package/node_modules/@smithy/smithy-client/dist-es/extended-encode-uri-component.js +1 -5
- package/node_modules/@smithy/smithy-client/dist-es/index.js +2 -0
- package/node_modules/@smithy/smithy-client/dist-es/quote-header.js +6 -0
- package/node_modules/@smithy/smithy-client/dist-es/resolve-path.js +1 -19
- package/node_modules/@smithy/smithy-client/dist-es/split-header.js +37 -0
- package/node_modules/@smithy/smithy-client/dist-types/collect-stream-body.d.ts +2 -7
- package/node_modules/@smithy/smithy-client/dist-types/extended-encode-uri-component.d.ts +2 -4
- package/node_modules/@smithy/smithy-client/dist-types/index.d.ts +2 -0
- package/node_modules/@smithy/smithy-client/dist-types/quote-header.d.ts +6 -0
- package/node_modules/@smithy/smithy-client/dist-types/resolve-path.d.ts +2 -1
- package/node_modules/@smithy/smithy-client/dist-types/split-header.d.ts +5 -0
- package/node_modules/@smithy/smithy-client/dist-types/ts3.4/collect-stream-body.d.ts +2 -7
- package/node_modules/@smithy/smithy-client/dist-types/ts3.4/extended-encode-uri-component.d.ts +2 -4
- package/node_modules/@smithy/smithy-client/dist-types/ts3.4/index.d.ts +2 -0
- package/node_modules/@smithy/smithy-client/dist-types/ts3.4/quote-header.d.ts +6 -0
- package/node_modules/@smithy/smithy-client/dist-types/ts3.4/resolve-path.d.ts +2 -1
- package/node_modules/@smithy/smithy-client/dist-types/ts3.4/split-header.d.ts +5 -0
- package/node_modules/@smithy/smithy-client/package.json +9 -7
- package/node_modules/@smithy/types/dist-cjs/feature-ids.js +1 -0
- package/node_modules/@smithy/types/dist-es/feature-ids.js +1 -0
- package/node_modules/@smithy/types/dist-es/index.js +1 -0
- package/node_modules/@smithy/types/dist-types/feature-ids.d.ts +16 -0
- package/node_modules/@smithy/types/dist-types/http.d.ts +1 -0
- package/node_modules/@smithy/types/dist-types/index.d.ts +1 -0
- package/node_modules/@smithy/types/dist-types/middleware.d.ts +30 -6
- package/node_modules/@smithy/types/dist-types/transform/no-undefined.d.ts +3 -2
- package/node_modules/@smithy/types/dist-types/ts3.4/feature-ids.d.ts +16 -0
- package/node_modules/@smithy/types/dist-types/ts3.4/http.d.ts +1 -0
- package/node_modules/@smithy/types/dist-types/ts3.4/index.d.ts +1 -0
- package/node_modules/@smithy/types/dist-types/ts3.4/middleware.d.ts +26 -2
- package/node_modules/@smithy/types/dist-types/ts3.4/transform/no-undefined.d.ts +3 -2
- package/node_modules/@smithy/types/package.json +1 -1
- package/node_modules/@smithy/url-parser/package.json +5 -4
- package/node_modules/@smithy/util-defaults-mode-browser/package.json +6 -5
- package/node_modules/@smithy/util-defaults-mode-node/package.json +9 -8
- package/node_modules/@smithy/util-endpoints/package.json +7 -5
- package/node_modules/@smithy/util-middleware/package.json +4 -3
- package/node_modules/@smithy/util-retry/dist-cjs/index.js +5 -1
- package/node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js +2 -1
- package/node_modules/@smithy/util-retry/dist-types/DefaultRateLimiter.d.ts +4 -0
- package/node_modules/@smithy/util-retry/dist-types/ts3.4/DefaultRateLimiter.d.ts +4 -0
- package/node_modules/@smithy/util-retry/package.json +5 -4
- package/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.browser.js +7 -0
- package/node_modules/@smithy/util-stream/dist-cjs/checksum/ChecksumStream.js +49 -0
- package/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.browser.js +40 -0
- package/node_modules/@smithy/util-stream/dist-cjs/checksum/createChecksumStream.js +13 -0
- package/node_modules/@smithy/util-stream/dist-cjs/index.js +6 -1
- package/node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js +1 -2
- package/node_modules/@smithy/util-stream/dist-cjs/splitStream.js +1 -1
- package/node_modules/@smithy/util-stream/dist-cjs/stream-type-check.js +6 -1
- package/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js +3 -0
- package/node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.js +44 -0
- package/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js +35 -0
- package/node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.js +9 -0
- package/node_modules/@smithy/util-stream/dist-es/index.js +2 -0
- package/node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.js +0 -1
- package/node_modules/@smithy/util-stream/dist-es/splitStream.js +2 -2
- package/node_modules/@smithy/util-stream/dist-es/stream-type-check.js +3 -0
- package/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.browser.d.ts +37 -0
- package/node_modules/@smithy/util-stream/dist-types/checksum/ChecksumStream.d.ts +61 -0
- package/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.browser.d.ts +15 -0
- package/node_modules/@smithy/util-stream/dist-types/checksum/createChecksumStream.d.ts +12 -0
- package/node_modules/@smithy/util-stream/dist-types/index.d.ts +2 -0
- package/node_modules/@smithy/util-stream/dist-types/stream-type-check.d.ts +4 -0
- package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.browser.d.ts +37 -0
- package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/ChecksumStream.d.ts +60 -0
- package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.browser.d.ts +15 -0
- package/node_modules/@smithy/util-stream/dist-types/ts3.4/checksum/createChecksumStream.d.ts +12 -0
- package/node_modules/@smithy/util-stream/dist-types/ts3.4/index.d.ts +2 -0
- package/node_modules/@smithy/util-stream/dist-types/ts3.4/stream-type-check.d.ts +4 -0
- package/node_modules/@smithy/util-stream/package.json +16 -6
- package/node_modules/@smithy/util-waiter/package.json +5 -4
- package/node_modules/@types/uuid/LICENSE +21 -0
- package/node_modules/@types/uuid/README.md +15 -0
- package/node_modules/@types/uuid/index.d.mts +12 -0
- package/node_modules/@types/uuid/index.d.ts +86 -0
- package/node_modules/@types/uuid/package.json +54 -0
- package/node_modules/cookie/index.js +118 -57
- package/node_modules/cookie/package.json +3 -3
- package/node_modules/form-data/Readme.md +4 -4
- package/node_modules/form-data/lib/form_data.js +1 -1
- package/node_modules/form-data/package.json +9 -6
- package/node_modules/tslib/modules/index.d.ts +1 -0
- package/node_modules/tslib/modules/index.js +2 -0
- package/node_modules/tslib/package.json +1 -1
- package/node_modules/tslib/tslib.d.ts +7 -0
- package/node_modules/tslib/tslib.es6.js +24 -1
- package/node_modules/tslib/tslib.es6.mjs +24 -1
- package/node_modules/tslib/tslib.js +56 -1
- package/package.json +18 -18
- package/node_modules/@aws-solutions-constructs/aws-lambda-dynamodb/node_modules/constructs/.gitattributes +0 -28
- package/node_modules/cookie/HISTORY.md +0 -147
- package/node_modules/form-data/README.md.bak +0 -358
- /package/node_modules/{@aws-sdk/endpoint-cache/dist-cjs/Endpoint.js → @smithy/core/dist-cjs/setFeature.js} +0 -0
- /package/node_modules/{@aws-sdk/endpoint-cache/dist-cjs/EndpointCache.js → @smithy/fetch-http-handler/dist-cjs/create-request.js} +0 -0
|
@@ -0,0 +1,695 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
|
|
6
|
+
* with the License. A copy of the License is located at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
|
|
11
|
+
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
|
|
12
|
+
* and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const sqs_helper_1 = require("../lib/sqs-helper");
|
|
16
|
+
const step_function_helper_1 = require("../lib/step-function-helper");
|
|
17
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
18
|
+
const defaults = require("../");
|
|
19
|
+
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
20
|
+
const s3 = require("aws-cdk-lib/aws-s3");
|
|
21
|
+
const assertions_1 = require("aws-cdk-lib/assertions");
|
|
22
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
23
|
+
// =================================
|
|
24
|
+
// Test sources and targets generation
|
|
25
|
+
// =================================
|
|
26
|
+
test('Create a default SQS Source', () => {
|
|
27
|
+
// Stack
|
|
28
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
29
|
+
const buildQueueResponse = (0, sqs_helper_1.buildQueue)(stack, 'test-queue', {});
|
|
30
|
+
const sqsSource = defaults.CreateSqsSource(buildQueueResponse.queue);
|
|
31
|
+
expect(sqsSource.sourceArn).toEqual(buildQueueResponse.queue.queueArn);
|
|
32
|
+
expect(Object.keys(sqsSource.sourceParameters).length).toEqual(0);
|
|
33
|
+
// best we can do here, confirm values when we instantiate the actual pipe
|
|
34
|
+
expect(sqsSource.sourcePolicy.statementCount).toEqual(1);
|
|
35
|
+
assertions_1.Template.fromStack(stack);
|
|
36
|
+
});
|
|
37
|
+
test('Create an SQS Source with overrides', () => {
|
|
38
|
+
// Stack
|
|
39
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
40
|
+
const buildQueueResponse = (0, sqs_helper_1.buildQueue)(stack, 'test-queue', {});
|
|
41
|
+
const sqsSource = defaults.CreateSqsSource(buildQueueResponse.queue, {
|
|
42
|
+
sqsQueueParameters: {
|
|
43
|
+
batchSize: 123,
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
expect(sqsSource.sourceArn).toEqual(buildQueueResponse.queue.queueArn);
|
|
47
|
+
// Because sqsQueueParameters type include 'IResolvable |', we need to extract the property this way
|
|
48
|
+
const batchSizeProp = sqsSource.sourceParameters.sqsQueueParameters.batchSize;
|
|
49
|
+
expect(batchSizeProp).toEqual(123);
|
|
50
|
+
// best we can do here, confirm values when we instantiate the actual pipe
|
|
51
|
+
expect(sqsSource.sourcePolicy.statementCount).toEqual(1);
|
|
52
|
+
});
|
|
53
|
+
test('Create a default Step Functions Target', () => {
|
|
54
|
+
// Stack
|
|
55
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
56
|
+
const buildStateMachineResponse = (0, step_function_helper_1.buildStateMachine)(stack, 'test-state-machine', {
|
|
57
|
+
stateMachineProps: {
|
|
58
|
+
definitionBody: defaults.CreateTestStateMachineDefinitionBody(stack, 'stub-state-machine')
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
const stateMachineTarget = defaults.CreateStateMachineTarget(buildStateMachineResponse.stateMachine);
|
|
62
|
+
expect(stateMachineTarget.targetArn).toEqual(buildStateMachineResponse.stateMachine.stateMachineArn);
|
|
63
|
+
expect(stateMachineTarget.targetParameters.stepFunctionStateMachineParameters).toBeDefined();
|
|
64
|
+
const invocationType = stateMachineTarget.targetParameters.stepFunctionStateMachineParameters.invocationType;
|
|
65
|
+
expect(invocationType).toEqual('FIRE_AND_FORGET');
|
|
66
|
+
expect(Object.keys(stateMachineTarget.targetParameters).length).toEqual(1);
|
|
67
|
+
// best we can do here, confirm values when we instantiate the actual pipe
|
|
68
|
+
expect(stateMachineTarget.targetPolicy.statementCount).toEqual(1);
|
|
69
|
+
assertions_1.Template.fromStack(stack);
|
|
70
|
+
});
|
|
71
|
+
test('Create a Step Functions Target with overrides', () => {
|
|
72
|
+
// Stack
|
|
73
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
74
|
+
const buildStateMachineResponse = (0, step_function_helper_1.buildStateMachine)(stack, 'test-state-machine', {
|
|
75
|
+
stateMachineProps: {
|
|
76
|
+
definitionBody: defaults.CreateTestStateMachineDefinitionBody(stack, 'stub-state-machine')
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const stateMachineTarget = defaults.CreateStateMachineTarget(buildStateMachineResponse.stateMachine, {
|
|
80
|
+
stepFunctionStateMachineParameters: {
|
|
81
|
+
invocationType: 'REQUEST_RESPONSE'
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
expect(stateMachineTarget.targetArn).toEqual(buildStateMachineResponse.stateMachine.stateMachineArn);
|
|
85
|
+
expect(stateMachineTarget.targetParameters.stepFunctionStateMachineParameters).toBeDefined();
|
|
86
|
+
const invocationType = stateMachineTarget.targetParameters.stepFunctionStateMachineParameters.invocationType;
|
|
87
|
+
expect(invocationType).toEqual('REQUEST_RESPONSE');
|
|
88
|
+
expect(Object.keys(stateMachineTarget.targetParameters).length).toEqual(1);
|
|
89
|
+
// best we can do here, confirm values when we instantiate the actual pipe
|
|
90
|
+
expect(stateMachineTarget.targetPolicy.statementCount).toEqual(1);
|
|
91
|
+
});
|
|
92
|
+
// =================================
|
|
93
|
+
// Test pipe creation
|
|
94
|
+
// =================================
|
|
95
|
+
test('Create a default pipe', () => {
|
|
96
|
+
const prerequisiteId = 'alldefault';
|
|
97
|
+
const pipeId = 'defaultpipe';
|
|
98
|
+
// Stack
|
|
99
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
100
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
101
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
102
|
+
source: prerequisites.source,
|
|
103
|
+
target: prerequisites.target,
|
|
104
|
+
clientProps: {}
|
|
105
|
+
});
|
|
106
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
107
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
108
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
109
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
110
|
+
CheckPipeRole(template, prerequisiteId);
|
|
111
|
+
CheckLogGroup(template);
|
|
112
|
+
});
|
|
113
|
+
test('Create a pipe with overrides', () => {
|
|
114
|
+
const prerequisiteId = 'overridestest';
|
|
115
|
+
const pipeId = 'overridespipe';
|
|
116
|
+
// Stack
|
|
117
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
118
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
119
|
+
const testDescription = 'test-description';
|
|
120
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
121
|
+
source: prerequisites.source,
|
|
122
|
+
target: prerequisites.target,
|
|
123
|
+
clientProps: {
|
|
124
|
+
description: testDescription
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
128
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
129
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
130
|
+
CheckPipeRole(template, prerequisiteId);
|
|
131
|
+
CheckLogGroup(template);
|
|
132
|
+
// The description is unique to this test, so check it here
|
|
133
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
134
|
+
Description: testDescription
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
test('Create a pipe with a filter', () => {
|
|
138
|
+
const prerequisiteId = 'filtertest';
|
|
139
|
+
const pipeId = 'filterpipe';
|
|
140
|
+
// Stack
|
|
141
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
142
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
143
|
+
const testFilterPattern = `{
|
|
144
|
+
"body": {
|
|
145
|
+
"state": ["open"]
|
|
146
|
+
}
|
|
147
|
+
}`;
|
|
148
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
149
|
+
source: prerequisites.source,
|
|
150
|
+
target: prerequisites.target,
|
|
151
|
+
clientProps: {
|
|
152
|
+
sourceParameters: {
|
|
153
|
+
filterCriteria: {
|
|
154
|
+
filters: [{ pattern: testFilterPattern }],
|
|
155
|
+
},
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
160
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
161
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
162
|
+
CheckPipeRole(template, prerequisiteId);
|
|
163
|
+
CheckLogGroup(template);
|
|
164
|
+
// SourceParameters is unique to this test, so check it here
|
|
165
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
166
|
+
SourceParameters: {
|
|
167
|
+
FilterCriteria: {
|
|
168
|
+
Filters: [
|
|
169
|
+
{
|
|
170
|
+
Pattern: testFilterPattern
|
|
171
|
+
}
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
test('Create a pipe with Lambda function enrichment', () => {
|
|
178
|
+
const prerequisiteId = 'lambdaenrichtest';
|
|
179
|
+
const pipeId = 'lambdaenrichpipe';
|
|
180
|
+
// Stack
|
|
181
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
182
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
183
|
+
const enrichmentFunction = new lambda.Function(stack, 'enrichment-function', {
|
|
184
|
+
code: lambda.Code.fromAsset(`${__dirname}/lambda-test`),
|
|
185
|
+
handler: "index.handler",
|
|
186
|
+
runtime: lambda.Runtime.NODEJS_20_X,
|
|
187
|
+
});
|
|
188
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
189
|
+
source: prerequisites.source,
|
|
190
|
+
target: prerequisites.target,
|
|
191
|
+
enrichmentFunction
|
|
192
|
+
});
|
|
193
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
194
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
195
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
196
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
197
|
+
CheckLogGroup(template);
|
|
198
|
+
// Enrichment is unique to this test so check it here
|
|
199
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
200
|
+
Enrichment: {
|
|
201
|
+
"Fn::GetAtt": [
|
|
202
|
+
assertions_1.Match.stringLikeRegexp('enrichmentfunction.*'),
|
|
203
|
+
"Arn"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
// This checks for everything but enrichment
|
|
208
|
+
CheckPipeRole(template, prerequisiteId);
|
|
209
|
+
// This checks for enrichment permissions
|
|
210
|
+
template.hasResourceProperties('AWS::IAM::Policy', {
|
|
211
|
+
PolicyDocument: {
|
|
212
|
+
Statement: [
|
|
213
|
+
{
|
|
214
|
+
Action: "lambda:InvokeFunction",
|
|
215
|
+
Effect: "Allow",
|
|
216
|
+
Resource: {
|
|
217
|
+
"Fn::GetAtt": [
|
|
218
|
+
assertions_1.Match.stringLikeRegexp('enrichmentfunction.*'),
|
|
219
|
+
"Arn"
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
],
|
|
224
|
+
Version: "2012-10-17"
|
|
225
|
+
},
|
|
226
|
+
PolicyName: assertions_1.Match.stringLikeRegexp(`enrichmentpolicy${pipeId}.*`),
|
|
227
|
+
Roles: [
|
|
228
|
+
{
|
|
229
|
+
Ref: assertions_1.Match.stringLikeRegexp(`PipeRole${pipeId}.*`)
|
|
230
|
+
}
|
|
231
|
+
]
|
|
232
|
+
});
|
|
233
|
+
});
|
|
234
|
+
test('Create a pipe with state machine enrichment', () => {
|
|
235
|
+
const prerequisiteId = 'smenrichtest';
|
|
236
|
+
const pipeId = 'smenrichpipe';
|
|
237
|
+
// Stack
|
|
238
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
239
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
240
|
+
const enrichmentStateMachine = defaults.CreateTestStateMachine(stack, 'state-machine-enrichment');
|
|
241
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
242
|
+
source: prerequisites.source,
|
|
243
|
+
target: prerequisites.target,
|
|
244
|
+
enrichmentStateMachine
|
|
245
|
+
});
|
|
246
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
247
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
248
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
249
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
250
|
+
CheckPipeRole(template, prerequisiteId);
|
|
251
|
+
CheckLogGroup(template);
|
|
252
|
+
// Look for additional enrichment permision
|
|
253
|
+
template.hasResourceProperties('AWS::IAM::Policy', {
|
|
254
|
+
PolicyDocument: {
|
|
255
|
+
Statement: [
|
|
256
|
+
{
|
|
257
|
+
// This won't run if we actually launched it as the enrichmentStateMachine is not EXPRESS
|
|
258
|
+
Action: "states:StartSyncExecution",
|
|
259
|
+
Effect: "Allow",
|
|
260
|
+
Resource: {
|
|
261
|
+
Ref: assertions_1.Match.stringLikeRegexp('statemachineenrichment.*'),
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
Version: "2012-10-17"
|
|
266
|
+
},
|
|
267
|
+
PolicyName: assertions_1.Match.stringLikeRegexp(`enrichmentpolicy${pipeId}.*`),
|
|
268
|
+
Roles: [
|
|
269
|
+
{
|
|
270
|
+
Ref: assertions_1.Match.stringLikeRegexp(`PipeRole${pipeId}.*`)
|
|
271
|
+
}
|
|
272
|
+
]
|
|
273
|
+
});
|
|
274
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
275
|
+
Enrichment: {
|
|
276
|
+
Ref: assertions_1.Match.stringLikeRegexp("statemachineenrichment.*")
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
});
|
|
280
|
+
test('Provide replacement LogConfiguration', () => {
|
|
281
|
+
const prerequisiteId = 'logconfigtest';
|
|
282
|
+
const pipeId = 'logconfigpipe';
|
|
283
|
+
// Stack
|
|
284
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
285
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
286
|
+
const customLogConfiguration = {
|
|
287
|
+
s3LogDestination: {
|
|
288
|
+
bucketName: new s3.Bucket(stack, 'test').bucketName,
|
|
289
|
+
},
|
|
290
|
+
level: defaults.PipesLogLevel.ERROR
|
|
291
|
+
};
|
|
292
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
293
|
+
source: prerequisites.source,
|
|
294
|
+
target: prerequisites.target,
|
|
295
|
+
clientProps: {
|
|
296
|
+
logConfiguration: customLogConfiguration
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
300
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
301
|
+
CheckPipeSourceAndTarget(template, prerequisiteId);
|
|
302
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
303
|
+
LogConfiguration: {
|
|
304
|
+
Level: "ERROR",
|
|
305
|
+
S3LogDestination: {
|
|
306
|
+
BucketName: {
|
|
307
|
+
Ref: assertions_1.Match.stringLikeRegexp("test.*")
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
313
|
+
CheckPipeRole(template, prerequisiteId);
|
|
314
|
+
});
|
|
315
|
+
test('Override the default log level', () => {
|
|
316
|
+
const prerequisiteId = 'loglevelttest';
|
|
317
|
+
const pipeId = 'loglevelpipe';
|
|
318
|
+
// Stack
|
|
319
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
320
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
321
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
322
|
+
source: prerequisites.source,
|
|
323
|
+
target: prerequisites.target,
|
|
324
|
+
logLevel: defaults.PipesLogLevel.ERROR
|
|
325
|
+
});
|
|
326
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
327
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
328
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
329
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
330
|
+
CheckPipeRole(template, prerequisiteId);
|
|
331
|
+
CheckLogGroup(template);
|
|
332
|
+
// Level is unique to this test
|
|
333
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
334
|
+
LogConfiguration: {
|
|
335
|
+
Level: defaults.PipesLogLevel.ERROR,
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
test('Test no logging', () => {
|
|
340
|
+
const prerequisiteId = 'nologs';
|
|
341
|
+
const pipeId = 'testpipe';
|
|
342
|
+
// Stack
|
|
343
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
344
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
345
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
346
|
+
source: prerequisites.source,
|
|
347
|
+
target: prerequisites.target,
|
|
348
|
+
logLevel: defaults.PipesLogLevel.OFF
|
|
349
|
+
});
|
|
350
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
351
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
352
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
353
|
+
CheckPipeSourceAndTarget(template, prerequisiteId);
|
|
354
|
+
CheckPipeRole(template, prerequisiteId);
|
|
355
|
+
// One log group for the state machine, none for the pipe
|
|
356
|
+
template.resourceCountIs('AWS::Logs::LogGroup', 1);
|
|
357
|
+
});
|
|
358
|
+
test('Override a subset of SQS source paramters', () => {
|
|
359
|
+
const prerequisiteId = 'srcparamtest';
|
|
360
|
+
const pipeId = 'srcparampipe';
|
|
361
|
+
const testBatchSize = 7;
|
|
362
|
+
// Stack
|
|
363
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
364
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
365
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
366
|
+
source: prerequisites.source,
|
|
367
|
+
target: prerequisites.target,
|
|
368
|
+
clientProps: {
|
|
369
|
+
sourceParameters: {
|
|
370
|
+
sqsQueueParameters: {
|
|
371
|
+
batchSize: testBatchSize,
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
377
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
378
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
379
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
380
|
+
CheckPipeRole(template, prerequisiteId);
|
|
381
|
+
CheckLogGroup(template);
|
|
382
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
383
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
384
|
+
SourceParameters: {
|
|
385
|
+
SqsQueueParameters: {
|
|
386
|
+
BatchSize: testBatchSize
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
test('Provide pipeLogProps', () => {
|
|
392
|
+
const prerequisiteId = 'pipelogpropstest';
|
|
393
|
+
const pipeId = 'pipelogpropspipe';
|
|
394
|
+
// While this is an enum we need to use, in the template
|
|
395
|
+
// it is converted to days, in this case 120
|
|
396
|
+
const testRetention = aws_logs_1.RetentionDays.FOUR_MONTHS;
|
|
397
|
+
// Stack
|
|
398
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
399
|
+
const prerequisites = CreatePrerequisites(stack, prerequisiteId);
|
|
400
|
+
const pipeResponse = defaults.BuildPipe(stack, pipeId, {
|
|
401
|
+
source: prerequisites.source,
|
|
402
|
+
target: prerequisites.target,
|
|
403
|
+
pipeLogProps: {
|
|
404
|
+
retention: testRetention
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
CheckPipeResponseProperties(pipeResponse, prerequisites);
|
|
408
|
+
const template = assertions_1.Template.fromStack(stack);
|
|
409
|
+
template.resourceCountIs('AWS::Pipes::Pipe', 1);
|
|
410
|
+
CheckPipeResource(template, pipeId, prerequisiteId);
|
|
411
|
+
CheckPipeRole(template, prerequisiteId);
|
|
412
|
+
CheckLogGroup(template);
|
|
413
|
+
CheckPipeLogConfiguration(template, pipeId);
|
|
414
|
+
// Look for additional property we passed in pipeLogProps
|
|
415
|
+
template.hasResourceProperties('AWS::Logs::LogGroup', {
|
|
416
|
+
RetentionInDays: 120,
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
test('Check for error when providing source in CfnProps', () => {
|
|
420
|
+
// Stack
|
|
421
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
422
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
423
|
+
const app = () => {
|
|
424
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
425
|
+
source: prerequisites.source,
|
|
426
|
+
target: prerequisites.target,
|
|
427
|
+
clientProps: {
|
|
428
|
+
source: prerequisites.source.sourceArn
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
};
|
|
432
|
+
// Assertion
|
|
433
|
+
expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
|
|
434
|
+
});
|
|
435
|
+
test('Check for error when providing target in CfnProps', () => {
|
|
436
|
+
// Stack
|
|
437
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
438
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
439
|
+
const app = () => {
|
|
440
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
441
|
+
source: prerequisites.source,
|
|
442
|
+
target: prerequisites.target,
|
|
443
|
+
clientProps: {
|
|
444
|
+
target: prerequisites.target.targetArn,
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
};
|
|
448
|
+
// Assertion
|
|
449
|
+
expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
|
|
450
|
+
});
|
|
451
|
+
test('Check for error when providing a roleArn', () => {
|
|
452
|
+
// Stack
|
|
453
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
454
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
455
|
+
const app = () => {
|
|
456
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
457
|
+
source: prerequisites.source,
|
|
458
|
+
target: prerequisites.target,
|
|
459
|
+
clientProps: {
|
|
460
|
+
roleArn: "some-arn",
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
};
|
|
464
|
+
// Assertion
|
|
465
|
+
expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
|
|
466
|
+
});
|
|
467
|
+
test('Check for error when providing enrichment', () => {
|
|
468
|
+
// Stack
|
|
469
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
470
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
471
|
+
const app = () => {
|
|
472
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
473
|
+
source: prerequisites.source,
|
|
474
|
+
target: prerequisites.target,
|
|
475
|
+
clientProps: {
|
|
476
|
+
enrichment: "functionArn",
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
};
|
|
480
|
+
// Assertion
|
|
481
|
+
expect(app).toThrowError('ERROR - BuildPipeProps cannot specify source, target, roleArn, or enrichment');
|
|
482
|
+
});
|
|
483
|
+
test('Check for error when log level and log configuration are both provided', () => {
|
|
484
|
+
// Stack
|
|
485
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
486
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
487
|
+
const app = () => {
|
|
488
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
489
|
+
source: prerequisites.source,
|
|
490
|
+
target: prerequisites.target,
|
|
491
|
+
logLevel: defaults.PipesLogLevel.ERROR,
|
|
492
|
+
clientProps: {
|
|
493
|
+
logConfiguration: { some: "object" },
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
};
|
|
497
|
+
// Assertion
|
|
498
|
+
expect(app).toThrowError('ERROR - BuildPipeProps cannot specify logLevel and logConfiguration');
|
|
499
|
+
});
|
|
500
|
+
test('Check for error when pipeLogProps and log configuration are both provided', () => {
|
|
501
|
+
// Stack
|
|
502
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
503
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
504
|
+
const app = () => {
|
|
505
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
506
|
+
source: prerequisites.source,
|
|
507
|
+
target: prerequisites.target,
|
|
508
|
+
pipeLogProps: { logGroupName: "anyvalue" },
|
|
509
|
+
clientProps: {
|
|
510
|
+
logConfiguration: { some: "object" },
|
|
511
|
+
}
|
|
512
|
+
});
|
|
513
|
+
};
|
|
514
|
+
// Assertion
|
|
515
|
+
expect(app).toThrowError('ERROR - BuildPipeProps cannot specify pipeLogProps and logConfiguration');
|
|
516
|
+
});
|
|
517
|
+
test('Check for error when enrichmentFunction and enrichmentStateMachine are both provided', () => {
|
|
518
|
+
// Stack
|
|
519
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
520
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
521
|
+
const app = () => {
|
|
522
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
523
|
+
source: prerequisites.source,
|
|
524
|
+
target: prerequisites.target,
|
|
525
|
+
enrichmentFunction: { place: "holder" },
|
|
526
|
+
enrichmentStateMachine: { place: "holder" }
|
|
527
|
+
});
|
|
528
|
+
};
|
|
529
|
+
// Assertion
|
|
530
|
+
expect(app).toThrowError('ERROR - Only one of enrichmentFunction or enrichmentStateMachine can be provided');
|
|
531
|
+
});
|
|
532
|
+
test('Check for error when pipeLogProps and log level is set to OFF', () => {
|
|
533
|
+
// Stack
|
|
534
|
+
const stack = new aws_cdk_lib_1.Stack();
|
|
535
|
+
const prerequisites = CreatePrerequisites(stack, 'log-level-test');
|
|
536
|
+
const app = () => {
|
|
537
|
+
defaults.BuildPipe(stack, 'test-pipe', {
|
|
538
|
+
source: prerequisites.source,
|
|
539
|
+
target: prerequisites.target,
|
|
540
|
+
logLevel: defaults.PipesLogLevel.OFF,
|
|
541
|
+
pipeLogProps: { logGroupName: "anyvalue" },
|
|
542
|
+
});
|
|
543
|
+
};
|
|
544
|
+
// Assertion
|
|
545
|
+
expect(app).toThrowError('ERROR - BuildPipeProps cannot specify pipeLogProps and log level OFF');
|
|
546
|
+
});
|
|
547
|
+
test('Test all of CheckPipesProps', () => {
|
|
548
|
+
const app = () => {
|
|
549
|
+
defaults.CheckPipesProps({
|
|
550
|
+
pipesProps: { source: "value" },
|
|
551
|
+
});
|
|
552
|
+
};
|
|
553
|
+
// Assertion
|
|
554
|
+
expect(app).toThrowError('Do not set source in pipesProps. It is set by the construct.\n');
|
|
555
|
+
const appTwo = () => {
|
|
556
|
+
defaults.CheckPipesProps({
|
|
557
|
+
pipesProps: { target: "value" },
|
|
558
|
+
});
|
|
559
|
+
};
|
|
560
|
+
// Assertion
|
|
561
|
+
expect(appTwo).toThrowError('Do not set target in pipesProps. It is set by the construct.\n');
|
|
562
|
+
});
|
|
563
|
+
function CreatePrerequisites(scope, id) {
|
|
564
|
+
const buildQueueResponse = (0, sqs_helper_1.buildQueue)(scope, `${id}-source-queue`, {});
|
|
565
|
+
const sqsSource = defaults.CreateSqsSource(buildQueueResponse.queue);
|
|
566
|
+
const buildStateMachineResponse = (0, step_function_helper_1.buildStateMachine)(scope, `${id}-target-state-machine`, {
|
|
567
|
+
stateMachineProps: {
|
|
568
|
+
definitionBody: defaults.CreateTestStateMachineDefinitionBody(scope, `${id}-steps`)
|
|
569
|
+
}
|
|
570
|
+
});
|
|
571
|
+
const stateMachineTarget = defaults.CreateStateMachineTarget(buildStateMachineResponse.stateMachine, {
|
|
572
|
+
stepFunctionStateMachineParameters: {
|
|
573
|
+
invocationType: 'REQUEST_RESPONSE'
|
|
574
|
+
}
|
|
575
|
+
});
|
|
576
|
+
return {
|
|
577
|
+
source: sqsSource,
|
|
578
|
+
target: stateMachineTarget
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
// ==============================
|
|
582
|
+
// Shared functions that check default settings
|
|
583
|
+
// ==============================
|
|
584
|
+
function CheckPipeResponseProperties(pipeResponse, prerequisites) {
|
|
585
|
+
expect(pipeResponse.pipe).toBeDefined();
|
|
586
|
+
expect(pipeResponse.pipe.source).toEqual(prerequisites.source.sourceArn);
|
|
587
|
+
expect(pipeResponse.pipe.target).toEqual(prerequisites.target.targetArn);
|
|
588
|
+
expect(pipeResponse.pipeRole).toBeDefined();
|
|
589
|
+
expect(pipeResponse.pipeRole.node).toBeDefined();
|
|
590
|
+
}
|
|
591
|
+
function CheckPipeResource(template, pipeId, prerequisiteId) {
|
|
592
|
+
CheckPipeSourceAndTarget(template, prerequisiteId);
|
|
593
|
+
CheckPipeLogConfiguration(template, pipeId);
|
|
594
|
+
}
|
|
595
|
+
function CheckPipeSourceAndTarget(template, prerequisiteId) {
|
|
596
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
597
|
+
Source: {
|
|
598
|
+
"Fn::GetAtt": [
|
|
599
|
+
assertions_1.Match.stringLikeRegexp(`${prerequisiteId}sourcequeue.*`),
|
|
600
|
+
"Arn"
|
|
601
|
+
]
|
|
602
|
+
},
|
|
603
|
+
Target: {
|
|
604
|
+
Ref: assertions_1.Match.stringLikeRegexp(`StateMachine${prerequisiteId}targetstatemachine.*`),
|
|
605
|
+
},
|
|
606
|
+
});
|
|
607
|
+
}
|
|
608
|
+
function CheckPipeLogConfiguration(template, pipeId) {
|
|
609
|
+
template.hasResourceProperties('AWS::Pipes::Pipe', {
|
|
610
|
+
LogConfiguration: {
|
|
611
|
+
CloudwatchLogsLogDestination: {
|
|
612
|
+
LogGroupArn: {
|
|
613
|
+
"Fn::GetAtt": [
|
|
614
|
+
assertions_1.Match.stringLikeRegexp(`LogGroup${pipeId}.*`),
|
|
615
|
+
"Arn"
|
|
616
|
+
]
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
});
|
|
621
|
+
}
|
|
622
|
+
function CheckPipeRole(template, prerequisiteId) {
|
|
623
|
+
template.hasResourceProperties('AWS::IAM::Role', {
|
|
624
|
+
AssumeRolePolicyDocument: {
|
|
625
|
+
Statement: [
|
|
626
|
+
{
|
|
627
|
+
Action: "sts:AssumeRole",
|
|
628
|
+
Effect: "Allow",
|
|
629
|
+
Principal: {
|
|
630
|
+
Service: "pipes.amazonaws.com"
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
],
|
|
634
|
+
Version: "2012-10-17"
|
|
635
|
+
},
|
|
636
|
+
Policies: [
|
|
637
|
+
{
|
|
638
|
+
PolicyDocument: {
|
|
639
|
+
Statement: [
|
|
640
|
+
{
|
|
641
|
+
Action: [
|
|
642
|
+
"sqs:ReceiveMessage",
|
|
643
|
+
"sqs:DeleteMessage",
|
|
644
|
+
"sqs:GetQueueAttributes"
|
|
645
|
+
],
|
|
646
|
+
Effect: "Allow",
|
|
647
|
+
Resource: {
|
|
648
|
+
"Fn::GetAtt": [
|
|
649
|
+
assertions_1.Match.stringLikeRegexp(`${prerequisiteId}sourcequeue.*`),
|
|
650
|
+
"Arn"
|
|
651
|
+
]
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
],
|
|
655
|
+
Version: "2012-10-17"
|
|
656
|
+
},
|
|
657
|
+
PolicyName: "sourcePolicy"
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
PolicyDocument: {
|
|
661
|
+
Statement: [
|
|
662
|
+
{
|
|
663
|
+
Action: "states:StartExecution",
|
|
664
|
+
Effect: "Allow",
|
|
665
|
+
Resource: {
|
|
666
|
+
Ref: assertions_1.Match.stringLikeRegexp(`StateMachine${prerequisiteId}targetstatemachine.*`)
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
],
|
|
670
|
+
Version: "2012-10-17"
|
|
671
|
+
},
|
|
672
|
+
PolicyName: "targetPolicy"
|
|
673
|
+
}
|
|
674
|
+
]
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
function CheckLogGroup(template) {
|
|
678
|
+
template.hasResourceProperties('AWS::Logs::LogGroup', {
|
|
679
|
+
LogGroupName: {
|
|
680
|
+
"Fn::Join": [
|
|
681
|
+
"",
|
|
682
|
+
[
|
|
683
|
+
assertions_1.Match.stringLikeRegexp('\/aws\/vendedlogs\/pipes\/constructs'),
|
|
684
|
+
{
|
|
685
|
+
"Fn::Select": [
|
|
686
|
+
2,
|
|
687
|
+
assertions_1.Match.anyValue()
|
|
688
|
+
]
|
|
689
|
+
}
|
|
690
|
+
]
|
|
691
|
+
]
|
|
692
|
+
},
|
|
693
|
+
});
|
|
694
|
+
}
|
|
695
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMtaGVscGVyLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlcy1oZWxwZXIudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBRUgsa0RBQStDO0FBQy9DLHNFQUFnRTtBQUNoRSw2Q0FBb0M7QUFDcEMsZ0NBQWdDO0FBRWhDLGlEQUFpRDtBQUVqRCx5Q0FBeUM7QUFDekMsdURBQXlEO0FBQ3pELG1EQUFxRDtBQUVyRCxvQ0FBb0M7QUFDcEMsc0NBQXNDO0FBQ3RDLG9DQUFvQztBQUVwQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLFFBQVE7SUFDUixNQUFNLEtBQUssR0FBRyxJQUFJLG1CQUFLLEVBQUUsQ0FBQztJQUUxQixNQUFNLGtCQUFrQixHQUFHLElBQUEsdUJBQVUsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFckUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSwwRUFBMEU7SUFDMUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pELHFCQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUMvQyxR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cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IGJ1aWxkUXVldWUgfSBmcm9tIFwiLi4vbGliL3Nxcy1oZWxwZXJcIjtcbmltcG9ydCB7IGJ1aWxkU3RhdGVNYWNoaW5lIH0gZnJvbSBcIi4uL2xpYi9zdGVwLWZ1bmN0aW9uLWhlbHBlclwiO1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gJy4uLyc7XG5pbXBvcnQgKiBhcyBwaXBlcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcGlwZXMnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgc2ZuIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBNYXRjaCwgVGVtcGxhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXNzZXJ0aW9uc1wiO1xuaW1wb3J0IHsgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRlc3Qgc291cmNlcyBhbmQgdGFyZ2V0cyBnZW5lcmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBTUVMgU291cmNlJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc3RhY2ssICd0ZXN0LXF1ZXVlJywge30pO1xuICBjb25zdCBzcXNTb3VyY2UgPSBkZWZhdWx0cy5DcmVhdGVTcXNTb3VyY2UoYnVpbGRRdWV1ZVJlc3BvbnNlLnF1ZXVlKTtcblxuICBleHBlY3Qoc3FzU291cmNlLnNvdXJjZUFybikudG9FcXVhbChidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUucXVldWVBcm4pO1xuICBleHBlY3QoT2JqZWN0LmtleXMoc3FzU291cmNlLnNvdXJjZVBhcmFtZXRlcnMpLmxlbmd0aCkudG9FcXVhbCgwKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHNxc1NvdXJjZS5zb3VyY2VQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG4gIFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGFuIFNRUyBTb3VyY2Ugd2l0aCBvdmVycmlkZXMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG5cbiAgY29uc3QgYnVpbGRRdWV1ZVJlc3BvbnNlID0gYnVpbGRRdWV1ZShzdGFjaywgJ3Rlc3QtcXVldWUnLCB7fSk7XG4gIGNvbnN0IHNxc1NvdXJjZSA9IGRlZmF1bHRzLkNyZWF0ZVNxc1NvdXJjZShidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUsIHtcbiAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgIGJhdGNoU2l6ZTogMTIzLFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChzcXNTb3VyY2Uuc291cmNlQXJuKS50b0VxdWFsKGJ1aWxkUXVldWVSZXNwb25zZS5xdWV1ZS5xdWV1ZUFybik7XG4gIC8vIEJlY2F1c2Ugc3FzUXVldWVQYXJhbWV0ZXJzIHR5cGUgaW5jbHVkZSAnSVJlc29sdmFibGUgfCcsIHdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgcHJvcGVydHkgdGhpcyB3YXlcbiAgY29uc3QgYmF0Y2hTaXplUHJvcCA9XG4gICAgKHNxc1NvdXJjZS5zb3VyY2VQYXJhbWV0ZXJzLnNxc1F1ZXVlUGFyYW1ldGVycyBhcyBwaXBlcy5DZm5QaXBlLlBpcGVTb3VyY2VTcXNRdWV1ZVBhcmFtZXRlcnNQcm9wZXJ0eSkhLmJhdGNoU2l6ZTtcbiAgZXhwZWN0KGJhdGNoU2l6ZVByb3ApLnRvRXF1YWwoMTIzKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHNxc1NvdXJjZS5zb3VyY2VQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgZGVmYXVsdCBTdGVwIEZ1bmN0aW9ucyBUYXJnZXQnLCAoKSA9PiB7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcblxuICBjb25zdCBidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlID0gYnVpbGRTdGF0ZU1hY2hpbmUoc3RhY2ssICd0ZXN0LXN0YXRlLW1hY2hpbmUnLCB7XG4gICAgc3RhdGVNYWNoaW5lUHJvcHM6IHtcbiAgICAgIGRlZmluaXRpb25Cb2R5OiBkZWZhdWx0cy5DcmVhdGVUZXN0U3RhdGVNYWNoaW5lRGVmaW5pdGlvbkJvZHkoc3RhY2ssICdzdHViLXN0YXRlLW1hY2hpbmUnKVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0YXRlTWFjaGluZVRhcmdldCA9IGRlZmF1bHRzLkNyZWF0ZVN0YXRlTWFjaGluZVRhcmdldChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnRklSRV9BTkRfRk9SR0VUJyk7XG4gIGV4cGVjdChPYmplY3Qua2V5cyhzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycykubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAvLyBiZXN0IHdlIGNhbiBkbyBoZXJlLCBjb25maXJtIHZhbHVlcyB3aGVuIHdlIGluc3RhbnRpYXRlIHRoZSBhY3R1YWwgcGlwZVxuICBleHBlY3Qoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBvbGljeS5zdGF0ZW1lbnRDb3VudCkudG9FcXVhbCgxKTtcbiAgVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIFN0ZXAgRnVuY3Rpb25zIFRhcmdldCB3aXRoIG92ZXJyaWRlcycsICgpID0+IHtcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuXG4gIGNvbnN0IGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2UgPSBidWlsZFN0YXRlTWFjaGluZShzdGFjaywgJ3Rlc3Qtc3RhdGUtbWFjaGluZScsIHtcbiAgICBzdGF0ZU1hY2hpbmVQcm9wczoge1xuICAgICAgZGVmaW5pdGlvbkJvZHk6IGRlZmF1bHRzLkNyZWF0ZVRlc3RTdGF0ZU1hY2hpbmVEZWZpbml0aW9uQm9keShzdGFjaywgJ3N0dWItc3RhdGUtbWFjaGluZScpXG4gICAgfVxuICB9KTtcbiAgY29uc3Qgc3RhdGVNYWNoaW5lVGFyZ2V0ID0gZGVmYXVsdHMuQ3JlYXRlU3RhdGVNYWNoaW5lVGFyZ2V0KGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2Uuc3RhdGVNYWNoaW5lLCB7XG4gICAgc3RlcEZ1bmN0aW9uU3RhdGVNYWNoaW5lUGFyYW1ldGVyczoge1xuICAgICAgaW52b2NhdGlvblR5cGU6ICdSRVFVRVNUX1JFU1BPTlNFJ1xuICAgIH1cbiAgfSk7XG5cbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRBcm4pLnRvRXF1YWwoYnVpbGRTdGF0ZU1hY2hpbmVSZXNwb25zZS5zdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lQXJuKTtcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQYXJhbWV0ZXJzLnN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnMpLnRvQmVEZWZpbmVkKCk7XG4gIGNvbnN0IGludm9jYXRpb25UeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgIChzdGF0ZU1hY2hpbmVUYXJnZXQudGFyZ2V0UGFyYW1ldGVycy5zdGVwRnVuY3Rpb25TdGF0ZU1hY2hpbmVQYXJhbWV0ZXJzIGFzIHBpcGVzLkNmblBpcGUuUGlwZVRhcmdldFN0YXRlTWFjaGluZVBhcmFtZXRlcnNQcm9wZXJ0eSkuaW52b2NhdGlvblR5cGU7XG4gIGV4cGVjdChpbnZvY2F0aW9uVHlwZSkudG9FcXVhbCgnUkVRVUVTVF9SRVNQT05TRScpO1xuICBleHBlY3QoT2JqZWN0LmtleXMoc3RhdGVNYWNoaW5lVGFyZ2V0LnRhcmdldFBhcmFtZXRlcnMpLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgLy8gYmVzdCB3ZSBjYW4gZG8gaGVyZSwgY29uZmlybSB2YWx1ZXMgd2hlbiB3ZSBpbnN0YW50aWF0ZSB0aGUgYWN0dWFsIHBpcGVcbiAgZXhwZWN0KHN0YXRlTWFjaGluZVRhcmdldC50YXJnZXRQb2xpY3kuc3RhdGVtZW50Q291bnQpLnRvRXF1YWwoMSk7XG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUZXN0IHBpcGUgY3JlYXRpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG50ZXN0KCdDcmVhdGUgYSBkZWZhdWx0IHBpcGUnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2FsbGRlZmF1bHQnO1xuICBjb25zdCBwaXBlSWQgPSAnZGVmYXVsdHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHt9XG4gIH0pO1xuXG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcbn0pO1xuXG50ZXN0KCdDcmVhdGUgYSBwaXBlIHdpdGggb3ZlcnJpZGVzJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdvdmVycmlkZXN0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ292ZXJyaWRlc3BpcGUnO1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHRlc3REZXNjcmlwdGlvbiA9ICd0ZXN0LWRlc2NyaXB0aW9uJztcbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgY2xpZW50UHJvcHM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiB0ZXN0RGVzY3JpcHRpb25cbiAgICB9XG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBUaGUgZGVzY3JpcHRpb24gaXMgdW5pcXVlIHRvIHRoaXMgdGVzdCwgc28gY2hlY2sgaXQgaGVyZVxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgRGVzY3JpcHRpb246IHRlc3REZXNjcmlwdGlvblxuICB9KTtcblxufSk7XG5cbnRlc3QoJ0NyZWF0ZSBhIHBpcGUgd2l0aCBhIGZpbHRlcicsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnZmlsdGVydGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdmaWx0ZXJwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHRlc3RGaWx0ZXJQYXR0ZXJuID0gYHtcbiAgICBcImJvZHlcIjoge1xuICAgICAgXCJzdGF0ZVwiOiBbXCJvcGVuXCJdXG4gICAgfVxuICB9YDtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBjbGllbnRQcm9wczoge1xuICAgICAgc291cmNlUGFyYW1ldGVyczoge1xuICAgICAgICBmaWx0ZXJDcml0ZXJpYToge1xuICAgICAgICAgIGZpbHRlcnM6IFt7IHBhdHRlcm46IHRlc3RGaWx0ZXJQYXR0ZXJuIH1dLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBTb3VyY2VQYXJhbWV0ZXJzIGlzIHVuaXF1ZSB0byB0aGlzIHRlc3QsIHNvIGNoZWNrIGl0IGhlcmVcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIFNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgIEZpbHRlckNyaXRlcmlhOiB7XG4gICAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBQYXR0ZXJuOiB0ZXN0RmlsdGVyUGF0dGVyblxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgcGlwZSB3aXRoIExhbWJkYSBmdW5jdGlvbiBlbnJpY2htZW50JywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdsYW1iZGFlbnJpY2h0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ2xhbWJkYWVucmljaHBpcGUnO1xuXG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgY29uc3QgZW5yaWNobWVudEZ1bmN0aW9uID0gbmV3IGxhbWJkYS5GdW5jdGlvbihzdGFjaywgJ2VucmljaG1lbnQtZnVuY3Rpb24nLCB7XG4gICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGAke19fZGlybmFtZX0vbGFtYmRhLXRlc3RgKSxcbiAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjBfWCxcbiAgfSk7XG5cbiAgY29uc3QgcGlwZVJlc3BvbnNlID0gZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCBwaXBlSWQsIHtcbiAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgZW5yaWNobWVudEZ1bmN0aW9uXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrTG9nR3JvdXAodGVtcGxhdGUpO1xuXG4gIC8vIEVucmljaG1lbnQgaXMgdW5pcXVlIHRvIHRoaXMgdGVzdCBzbyBjaGVjayBpdCBoZXJlXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpQaXBlczo6UGlwZScsIHtcbiAgICBFbnJpY2htZW50OiB7XG4gICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKCdlbnJpY2htZW50ZnVuY3Rpb24uKicpLFxuICAgICAgICBcIkFyblwiXG4gICAgICBdXG4gICAgfSxcbiAgfSk7XG4gIC8vIFRoaXMgY2hlY2tzIGZvciBldmVyeXRoaW5nIGJ1dCBlbnJpY2htZW50XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgLy8gVGhpcyBjaGVja3MgZm9yIGVucmljaG1lbnQgcGVybWlzc2lvbnNcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6UG9saWN5Jywge1xuICAgIFBvbGljeURvY3VtZW50OiB7XG4gICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIEFjdGlvbjogXCJsYW1iZGE6SW52b2tlRnVuY3Rpb25cIixcbiAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cCgnZW5yaWNobWVudGZ1bmN0aW9uLionKSxcbiAgICAgICAgICAgICAgXCJBcm5cIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgfSxcbiAgICBQb2xpY3lOYW1lOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBlbnJpY2htZW50cG9saWN5JHtwaXBlSWR9LipgKSxcbiAgICBSb2xlczogW1xuICAgICAge1xuICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYFBpcGVSb2xlJHtwaXBlSWR9LipgKVxuICAgICAgfVxuICAgIF1cbiAgfSk7XG59KTtcblxudGVzdCgnQ3JlYXRlIGEgcGlwZSB3aXRoIHN0YXRlIG1hY2hpbmUgZW5yaWNobWVudCcsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnc21lbnJpY2h0ZXN0JztcbiAgY29uc3QgcGlwZUlkID0gJ3NtZW5yaWNocGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBlbnJpY2htZW50U3RhdGVNYWNoaW5lID0gZGVmYXVsdHMuQ3JlYXRlVGVzdFN0YXRlTWFjaGluZShzdGFjaywgJ3N0YXRlLW1hY2hpbmUtZW5yaWNobWVudCcpO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGVucmljaG1lbnRTdGF0ZU1hY2hpbmVcbiAgfSk7XG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICAvLyBMb29rIGZvciBhZGRpdGlvbmFsIGVucmljaG1lbnQgcGVybWlzaW9uXG4gIHRlbXBsYXRlLmhhc1Jlc291cmNlUHJvcGVydGllcygnQVdTOjpJQU06OlBvbGljeScsIHtcbiAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgIHtcbiAgICAgICAgICAvLyBUaGlzIHdvbid0IHJ1biBpZiB3ZSBhY3R1YWxseSBsYXVuY2hlZCBpdCBhcyB0aGUgZW5yaWNobWVudFN0YXRlTWFjaGluZSBpcyBub3QgRVhQUkVTU1xuICAgICAgICAgIEFjdGlvbjogXCJzdGF0ZXM6U3RhcnRTeW5jRXhlY3V0aW9uXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cCgnc3RhdGVtYWNoaW5lZW5yaWNobWVudC4qJyksXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgVmVyc2lvbjogXCIyMDEyLTEwLTE3XCJcbiAgICB9LFxuICAgIFBvbGljeU5hbWU6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoYGVucmljaG1lbnRwb2xpY3kke3BpcGVJZH0uKmApLFxuICAgIFJvbGVzOiBbXG4gICAgICB7XG4gICAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgUGlwZVJvbGUke3BpcGVJZH0uKmApXG4gICAgICB9XG4gICAgXVxuICB9KTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIEVucmljaG1lbnQ6IHtcbiAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChcInN0YXRlbWFjaGluZWVucmljaG1lbnQuKlwiKVxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ1Byb3ZpZGUgcmVwbGFjZW1lbnQgTG9nQ29uZmlndXJhdGlvbicsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAnbG9nY29uZmlndGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdsb2djb25maWdwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IGN1c3RvbUxvZ0NvbmZpZ3VyYXRpb246IHBpcGVzLkNmblBpcGUuUGlwZUxvZ0NvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9IHtcbiAgICBzM0xvZ0Rlc3RpbmF0aW9uOiB7XG4gICAgICBidWNrZXROYW1lOiBuZXcgczMuQnVja2V0KHN0YWNrLCAndGVzdCcpLmJ1Y2tldE5hbWUsXG4gICAgfSxcbiAgICBsZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5FUlJPUlxuICB9O1xuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBjbGllbnRQcm9wczoge1xuICAgICAgbG9nQ29uZmlndXJhdGlvbjogY3VzdG9tTG9nQ29uZmlndXJhdGlvblxuICAgIH1cbiAgfSk7XG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgQ2hlY2tQaXBlU291cmNlQW5kVGFyZ2V0KHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIExvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgIExldmVsOiBcIkVSUk9SXCIsXG4gICAgICBTM0xvZ0Rlc3RpbmF0aW9uOiB7XG4gICAgICAgIEJ1Y2tldE5hbWU6IHtcbiAgICAgICAgICBSZWY6IE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoXCJ0ZXN0LipcIilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbn0pO1xuXG50ZXN0KCdPdmVycmlkZSB0aGUgZGVmYXVsdCBsb2cgbGV2ZWwnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ2xvZ2xldmVsdHRlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnbG9nbGV2ZWxwaXBlJztcblxuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgcHJlcmVxdWlzaXRlSWQpO1xuXG4gIGNvbnN0IHBpcGVSZXNwb25zZSA9IGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgcGlwZUlkLCB7XG4gICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgIGxvZ0xldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLkVSUk9SXG4gIH0pO1xuICBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlLCBwcmVyZXF1aXNpdGVzKTtcblxuICBjb25zdCB0ZW1wbGF0ZSA9IFRlbXBsYXRlLmZyb21TdGFjayhzdGFjayk7XG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpQaXBlczo6UGlwZScsIDEpO1xuICBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZSwgcGlwZUlkLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZVJvbGUodGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tMb2dHcm91cCh0ZW1wbGF0ZSk7XG5cbiAgLy8gTGV2ZWwgaXMgdW5pcXVlIHRvIHRoaXMgdGVzdFxuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgTG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgTGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuRVJST1IsXG4gICAgfVxuICB9KTtcbn0pO1xuXG50ZXN0KCdUZXN0IG5vIGxvZ2dpbmcnLCAoKSA9PiB7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZUlkID0gJ25vbG9ncyc7XG4gIGNvbnN0IHBpcGVJZCA9ICd0ZXN0cGlwZSc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBsb2dMZXZlbDogZGVmYXVsdHMuUGlwZXNMb2dMZXZlbC5PRkZcbiAgfSk7XG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG5cbiAgLy8gT25lIGxvZyBncm91cCBmb3IgdGhlIHN0YXRlIG1hY2hpbmUsIG5vbmUgZm9yIHRoZSBwaXBlXG4gIHRlbXBsYXRlLnJlc291cmNlQ291bnRJcygnQVdTOjpMb2dzOjpMb2dHcm91cCcsIDEpO1xufSk7XG5cbnRlc3QoJ092ZXJyaWRlIGEgc3Vic2V0IG9mIFNRUyBzb3VyY2UgcGFyYW10ZXJzJywgKCkgPT4ge1xuICBjb25zdCBwcmVyZXF1aXNpdGVJZCA9ICdzcmNwYXJhbXRlc3QnO1xuICBjb25zdCBwaXBlSWQgPSAnc3JjcGFyYW1waXBlJztcbiAgY29uc3QgdGVzdEJhdGNoU2l6ZSA9IDc7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBjbGllbnRQcm9wczoge1xuICAgICAgc291cmNlUGFyYW1ldGVyczoge1xuICAgICAgICBzcXNRdWV1ZVBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBiYXRjaFNpemU6IHRlc3RCYXRjaFNpemUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIENoZWNrUGlwZVJlc3BvbnNlUHJvcGVydGllcyhwaXBlUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXMpO1xuXG4gIGNvbnN0IHRlbXBsYXRlID0gVGVtcGxhdGUuZnJvbVN0YWNrKHN0YWNrKTtcbiAgdGVtcGxhdGUucmVzb3VyY2VDb3VudElzKCdBV1M6OlBpcGVzOjpQaXBlJywgMSk7XG4gIENoZWNrUGlwZVJlc291cmNlKHRlbXBsYXRlLCBwaXBlSWQsIHByZXJlcXVpc2l0ZUlkKTtcbiAgQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZSwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlKTtcblxuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIFNvdXJjZVBhcmFtZXRlcnM6IHtcbiAgICAgIFNxc1F1ZXVlUGFyYW1ldGVyczoge1xuICAgICAgICBCYXRjaFNpemU6IHRlc3RCYXRjaFNpemVcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdQcm92aWRlIHBpcGVMb2dQcm9wcycsICgpID0+IHtcbiAgY29uc3QgcHJlcmVxdWlzaXRlSWQgPSAncGlwZWxvZ3Byb3BzdGVzdCc7XG4gIGNvbnN0IHBpcGVJZCA9ICdwaXBlbG9ncHJvcHNwaXBlJztcbiAgLy8gV2hpbGUgdGhpcyBpcyBhbiBlbnVtIHdlIG5lZWQgdG8gdXNlLCBpbiB0aGUgdGVtcGxhdGVcbiAgLy8gaXQgaXMgY29udmVydGVkIHRvIGRheXMsIGluIHRoaXMgY2FzZSAxMjBcbiAgY29uc3QgdGVzdFJldGVudGlvbiA9IFJldGVudGlvbkRheXMuRk9VUl9NT05USFM7XG5cbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssIHByZXJlcXVpc2l0ZUlkKTtcblxuICBjb25zdCBwaXBlUmVzcG9uc2UgPSBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssIHBpcGVJZCwge1xuICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICBwaXBlTG9nUHJvcHM6IHtcbiAgICAgIHJldGVudGlvbjogdGVzdFJldGVudGlvblxuICAgIH1cbiAgfSk7XG5cbiAgQ2hlY2tQaXBlUmVzcG9uc2VQcm9wZXJ0aWVzKHBpcGVSZXNwb25zZSwgcHJlcmVxdWlzaXRlcyk7XG5cbiAgY29uc3QgdGVtcGxhdGUgPSBUZW1wbGF0ZS5mcm9tU3RhY2soc3RhY2spO1xuICB0ZW1wbGF0ZS5yZXNvdXJjZUNvdW50SXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCAxKTtcbiAgQ2hlY2tQaXBlUmVzb3VyY2UodGVtcGxhdGUsIHBpcGVJZCwgcHJlcmVxdWlzaXRlSWQpO1xuICBDaGVja1BpcGVSb2xlKHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrTG9nR3JvdXAodGVtcGxhdGUpO1xuICBDaGVja1BpcGVMb2dDb25maWd1cmF0aW9uKHRlbXBsYXRlLCBwaXBlSWQpO1xuXG4gIC8vIExvb2sgZm9yIGFkZGl0aW9uYWwgcHJvcGVydHkgd2UgcGFzc2VkIGluIHBpcGVMb2dQcm9wc1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TG9nczo6TG9nR3JvdXAnLCB7XG4gICAgUmV0ZW50aW9uSW5EYXlzOiAxMjAsXG4gIH0pO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyBzb3VyY2UgaW4gQ2ZuUHJvcHMnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLnNvdXJjZUFyblxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50Jyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcHJvdmlkaW5nIHRhcmdldCBpbiBDZm5Qcm9wcycsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQudGFyZ2V0QXJuLFxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50Jyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gcHJvdmlkaW5nIGEgcm9sZUFybicsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGNsaWVudFByb3BzOiB7XG4gICAgICAgIHJvbGVBcm46IFwic29tZS1hcm5cIixcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBzb3VyY2UsIHRhcmdldCwgcm9sZUFybiwgb3IgZW5yaWNobWVudCcpO1xufSk7XG5cbnRlc3QoJ0NoZWNrIGZvciBlcnJvciB3aGVuIHByb3ZpZGluZyBlbnJpY2htZW50JywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgZW5yaWNobWVudDogXCJmdW5jdGlvbkFyblwiLFxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuICAvLyBBc3NlcnRpb25cbiAgZXhwZWN0KGFwcCkudG9UaHJvd0Vycm9yKCdFUlJPUiAtIEJ1aWxkUGlwZVByb3BzIGNhbm5vdCBzcGVjaWZ5IHNvdXJjZSwgdGFyZ2V0LCByb2xlQXJuLCBvciBlbnJpY2htZW50Jyk7XG59KTtcblxudGVzdCgnQ2hlY2sgZm9yIGVycm9yIHdoZW4gbG9nIGxldmVsIGFuZCBsb2cgY29uZmlndXJhdGlvbiBhcmUgYm90aCBwcm92aWRlZCcsICgpID0+IHtcbiAgLy8gU3RhY2tcbiAgY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgY29uc3QgcHJlcmVxdWlzaXRlcyA9IENyZWF0ZVByZXJlcXVpc2l0ZXMoc3RhY2ssICdsb2ctbGV2ZWwtdGVzdCcpO1xuXG4gIGNvbnN0IGFwcCA9ICgpID0+IHtcbiAgICBkZWZhdWx0cy5CdWlsZFBpcGUoc3RhY2ssICd0ZXN0LXBpcGUnLCB7XG4gICAgICBzb3VyY2U6IHByZXJlcXVpc2l0ZXMuc291cmNlLFxuICAgICAgdGFyZ2V0OiBwcmVyZXF1aXNpdGVzLnRhcmdldCxcbiAgICAgIGxvZ0xldmVsOiBkZWZhdWx0cy5QaXBlc0xvZ0xldmVsLkVSUk9SLFxuICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgbG9nQ29uZmlndXJhdGlvbjogeyBzb21lOiBcIm9iamVjdFwiIH0sXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgbG9nTGV2ZWwgYW5kIGxvZ0NvbmZpZ3VyYXRpb24nKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwaXBlTG9nUHJvcHMgYW5kIGxvZyBjb25maWd1cmF0aW9uIGFyZSBib3RoIHByb3ZpZGVkJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgcGlwZUxvZ1Byb3BzOiB7IGxvZ0dyb3VwTmFtZTogXCJhbnl2YWx1ZVwiIH0sXG4gICAgICBjbGllbnRQcm9wczoge1xuICAgICAgICBsb2dDb25maWd1cmF0aW9uOiB7IHNvbWU6IFwib2JqZWN0XCIgfSxcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBCdWlsZFBpcGVQcm9wcyBjYW5ub3Qgc3BlY2lmeSBwaXBlTG9nUHJvcHMgYW5kIGxvZ0NvbmZpZ3VyYXRpb24nKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBlbnJpY2htZW50RnVuY3Rpb24gYW5kIGVucmljaG1lbnRTdGF0ZU1hY2hpbmUgYXJlIGJvdGggcHJvdmlkZWQnLCAoKSA9PiB7XG4gIC8vIFN0YWNrXG4gIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKCk7XG4gIGNvbnN0IHByZXJlcXVpc2l0ZXMgPSBDcmVhdGVQcmVyZXF1aXNpdGVzKHN0YWNrLCAnbG9nLWxldmVsLXRlc3QnKTtcblxuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQnVpbGRQaXBlKHN0YWNrLCAndGVzdC1waXBlJywge1xuICAgICAgc291cmNlOiBwcmVyZXF1aXNpdGVzLnNvdXJjZSxcbiAgICAgIHRhcmdldDogcHJlcmVxdWlzaXRlcy50YXJnZXQsXG4gICAgICBlbnJpY2htZW50RnVuY3Rpb246IHsgcGxhY2U6IFwiaG9sZGVyXCIgfSBhcyB1bmtub3duIGFzIGxhbWJkYS5GdW5jdGlvbixcbiAgICAgIGVucmljaG1lbnRTdGF0ZU1hY2hpbmU6IHsgcGxhY2U6IFwiaG9sZGVyXCIgfSBhcyB1bmtub3duIGFzIHNmbi5TdGF0ZU1hY2hpbmVcbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRVJST1IgLSBPbmx5IG9uZSBvZiBlbnJpY2htZW50RnVuY3Rpb24gb3IgZW5yaWNobWVudFN0YXRlTWFjaGluZSBjYW4gYmUgcHJvdmlkZWQnKTtcbn0pO1xuXG50ZXN0KCdDaGVjayBmb3IgZXJyb3Igd2hlbiBwaXBlTG9nUHJvcHMgYW5kIGxvZyBsZXZlbCBpcyBzZXQgdG8gT0ZGJywgKCkgPT4ge1xuICAvLyBTdGFja1xuICBjb25zdCBzdGFjayA9IG5ldyBTdGFjaygpO1xuICBjb25zdCBwcmVyZXF1aXNpdGVzID0gQ3JlYXRlUHJlcmVxdWlzaXRlcyhzdGFjaywgJ2xvZy1sZXZlbC10ZXN0Jyk7XG5cbiAgY29uc3QgYXBwID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkJ1aWxkUGlwZShzdGFjaywgJ3Rlc3QtcGlwZScsIHtcbiAgICAgIHNvdXJjZTogcHJlcmVxdWlzaXRlcy5zb3VyY2UsXG4gICAgICB0YXJnZXQ6IHByZXJlcXVpc2l0ZXMudGFyZ2V0LFxuICAgICAgbG9nTGV2ZWw6IGRlZmF1bHRzLlBpcGVzTG9nTGV2ZWwuT0ZGLFxuICAgICAgcGlwZUxvZ1Byb3BzOiB7IGxvZ0dyb3VwTmFtZTogXCJhbnl2YWx1ZVwiIH0sXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwKS50b1Rocm93RXJyb3IoJ0VSUk9SIC0gQnVpbGRQaXBlUHJvcHMgY2Fubm90IHNwZWNpZnkgcGlwZUxvZ1Byb3BzIGFuZCBsb2cgbGV2ZWwgT0ZGJyk7XG59KTtcblxudGVzdCgnVGVzdCBhbGwgb2YgQ2hlY2tQaXBlc1Byb3BzJywgKCkgPT4ge1xuICBjb25zdCBhcHAgPSAoKSA9PiB7XG4gICAgZGVmYXVsdHMuQ2hlY2tQaXBlc1Byb3BzKHtcbiAgICAgIHBpcGVzUHJvcHM6IHsgc291cmNlOiBcInZhbHVlXCIgfSxcbiAgICB9KTtcbiAgfTtcbiAgLy8gQXNzZXJ0aW9uXG4gIGV4cGVjdChhcHApLnRvVGhyb3dFcnJvcignRG8gbm90IHNldCBzb3VyY2UgaW4gcGlwZXNQcm9wcy4gSXQgaXMgc2V0IGJ5IHRoZSBjb25zdHJ1Y3QuXFxuJyk7XG5cbiAgY29uc3QgYXBwVHdvID0gKCkgPT4ge1xuICAgIGRlZmF1bHRzLkNoZWNrUGlwZXNQcm9wcyh7XG4gICAgICBwaXBlc1Byb3BzOiB7IHRhcmdldDogXCJ2YWx1ZVwiIH0sXG4gICAgfSk7XG4gIH07XG4gIC8vIEFzc2VydGlvblxuICBleHBlY3QoYXBwVHdvKS50b1Rocm93RXJyb3IoJ0RvIG5vdCBzZXQgdGFyZ2V0IGluIHBpcGVzUHJvcHMuIEl0IGlzIHNldCBieSB0aGUgY29uc3RydWN0LlxcbicpO1xuXG59KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTaGFyZWQgc2V0dXAgZnVuY3Rpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5pbnRlcmZhY2UgUHJlcmVxdWlzaXRlcyB7XG4gIHNvdXJjZTogZGVmYXVsdHMuQ3JlYXRlU291cmNlUmVzcG9uc2UsXG4gIHRhcmdldDogZGVmYXVsdHMuQ3JlYXRlVGFyZ2V0UmVzcG9uc2UsXG59XG5cbmZ1bmN0aW9uIENyZWF0ZVByZXJlcXVpc2l0ZXMoc2NvcGU6IFN0YWNrLCBpZDogc3RyaW5nKTogUHJlcmVxdWlzaXRlcyB7XG4gIGNvbnN0IGJ1aWxkUXVldWVSZXNwb25zZSA9IGJ1aWxkUXVldWUoc2NvcGUsIGAke2lkfS1zb3VyY2UtcXVldWVgLCB7fSk7XG4gIGNvbnN0IHNxc1NvdXJjZSA9IGRlZmF1bHRzLkNyZWF0ZVNxc1NvdXJjZShidWlsZFF1ZXVlUmVzcG9uc2UucXVldWUpO1xuXG4gIGNvbnN0IGJ1aWxkU3RhdGVNYWNoaW5lUmVzcG9uc2UgPSBidWlsZFN0YXRlTWFjaGluZShzY29wZSwgYCR7aWR9LXRhcmdldC1zdGF0ZS1tYWNoaW5lYCwge1xuICAgIHN0YXRlTWFjaGluZVByb3BzOiB7XG4gICAgICBkZWZpbml0aW9uQm9keTogZGVmYXVsdHMuQ3JlYXRlVGVzdFN0YXRlTWFjaGluZURlZmluaXRpb25Cb2R5KHNjb3BlLCBgJHtpZH0tc3RlcHNgKVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IHN0YXRlTWFjaGluZVRhcmdldCA9IGRlZmF1bHRzLkNyZWF0ZVN0YXRlTWFjaGluZVRhcmdldChidWlsZFN0YXRlTWFjaGluZVJlc3BvbnNlLnN0YXRlTWFjaGluZSwge1xuICAgIHN0ZXBGdW5jdGlvblN0YXRlTWFjaGluZVBhcmFtZXRlcnM6IHtcbiAgICAgIGludm9jYXRpb25UeXBlOiAnUkVRVUVTVF9SRVNQT05TRSdcbiAgICB9XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHNvdXJjZTogc3FzU291cmNlLFxuICAgIHRhcmdldDogc3RhdGVNYWNoaW5lVGFyZ2V0XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2hhcmVkIGZ1bmN0aW9ucyB0aGF0IGNoZWNrIGRlZmF1bHQgc2V0dGluZ3Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBDaGVja1BpcGVSZXNwb25zZVByb3BlcnRpZXMocGlwZVJlc3BvbnNlOiBkZWZhdWx0cy5CdWlsZFBpcGVzUmVzcG9uc2UsIHByZXJlcXVpc2l0ZXM6IFByZXJlcXVpc2l0ZXMpIHtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlKS50b0JlRGVmaW5lZCgpO1xuICBleHBlY3QocGlwZVJlc3BvbnNlLnBpcGUuc291cmNlKS50b0VxdWFsKHByZXJlcXVpc2l0ZXMuc291cmNlLnNvdXJjZUFybik7XG4gIGV4cGVjdChwaXBlUmVzcG9uc2UucGlwZS50YXJnZXQpLnRvRXF1YWwocHJlcmVxdWlzaXRlcy50YXJnZXQudGFyZ2V0QXJuKTtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlUm9sZSkudG9CZURlZmluZWQoKTtcbiAgZXhwZWN0KHBpcGVSZXNwb25zZS5waXBlUm9sZS5ub2RlKS50b0JlRGVmaW5lZCgpO1xufVxuXG5mdW5jdGlvbiBDaGVja1BpcGVSZXNvdXJjZSh0ZW1wbGF0ZTogVGVtcGxhdGUsXG4gIHBpcGVJZDogc3RyaW5nLFxuICBwcmVyZXF1aXNpdGVJZDogc3RyaW5nXG4pIHtcbiAgQ2hlY2tQaXBlU291cmNlQW5kVGFyZ2V0KHRlbXBsYXRlLCBwcmVyZXF1aXNpdGVJZCk7XG4gIENoZWNrUGlwZUxvZ0NvbmZpZ3VyYXRpb24odGVtcGxhdGUsIHBpcGVJZCk7XG59XG5cbmZ1bmN0aW9uIENoZWNrUGlwZVNvdXJjZUFuZFRhcmdldCh0ZW1wbGF0ZTogVGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkOiBzdHJpbmcpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OlBpcGVzOjpQaXBlJywge1xuICAgIFNvdXJjZToge1xuICAgICAgXCJGbjo6R2V0QXR0XCI6IFtcbiAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgJHtwcmVyZXF1aXNpdGVJZH1zb3VyY2VxdWV1ZS4qYCksXG4gICAgICAgIFwiQXJuXCJcbiAgICAgIF1cbiAgICB9LFxuICAgIFRhcmdldDoge1xuICAgICAgUmVmOiBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBTdGF0ZU1hY2hpbmUke3ByZXJlcXVpc2l0ZUlkfXRhcmdldHN0YXRlbWFjaGluZS4qYCksXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIENoZWNrUGlwZUxvZ0NvbmZpZ3VyYXRpb24odGVtcGxhdGU6IFRlbXBsYXRlLCBwaXBlSWQ6IHN0cmluZykge1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6UGlwZXM6OlBpcGUnLCB7XG4gICAgTG9nQ29uZmlndXJhdGlvbjoge1xuICAgICAgQ2xvdWR3YXRjaExvZ3NMb2dEZXN0aW5hdGlvbjoge1xuICAgICAgICBMb2dHcm91cEFybjoge1xuICAgICAgICAgIFwiRm46OkdldEF0dFwiOiBbXG4gICAgICAgICAgICBNYXRjaC5zdHJpbmdMaWtlUmVnZXhwKGBMb2dHcm91cCR7cGlwZUlkfS4qYCksXG4gICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgXVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gQ2hlY2tQaXBlUm9sZSh0ZW1wbGF0ZTogVGVtcGxhdGUsIHByZXJlcXVpc2l0ZUlkOiBzdHJpbmcpIHtcbiAgdGVtcGxhdGUuaGFzUmVzb3VyY2VQcm9wZXJ0aWVzKCdBV1M6OklBTTo6Um9sZScsIHtcbiAgICBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQ6IHtcbiAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICB7XG4gICAgICAgICAgQWN0aW9uOiBcInN0czpBc3N1bWVSb2xlXCIsXG4gICAgICAgICAgRWZmZWN0OiBcIkFsbG93XCIsXG4gICAgICAgICAgUHJpbmNpcGFsOiB7XG4gICAgICAgICAgICBTZXJ2aWNlOiBcInBpcGVzLmFtYXpvbmF3cy5jb21cIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgfSxcbiAgICBQb2xpY2llczogW1xuICAgICAge1xuICAgICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgICAgICBcInNxczpSZWNlaXZlTWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgIFwic3FzOkRlbGV0ZU1lc3NhZ2VcIixcbiAgICAgICAgICAgICAgICBcInNxczpHZXRRdWV1ZUF0dHJpYnV0ZXNcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBFZmZlY3Q6IFwiQWxsb3dcIixcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBcIkZuOjpHZXRBdHRcIjogW1xuICAgICAgICAgICAgICAgICAgTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgJHtwcmVyZXF1aXNpdGVJZH1zb3VyY2VxdWV1ZS4qYCksXG4gICAgICAgICAgICAgICAgICBcIkFyblwiXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBWZXJzaW9uOiBcIjIwMTItMTAtMTdcIlxuICAgICAgICB9LFxuICAgICAgICBQb2xpY3lOYW1lOiBcInNvdXJjZVBvbGljeVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBQb2xpY3lEb2N1bWVudDoge1xuICAgICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBY3Rpb246IFwic3RhdGVzOlN0YXJ0RXhlY3V0aW9uXCIsXG4gICAgICAgICAgICAgIEVmZmVjdDogXCJBbGxvd1wiLFxuICAgICAgICAgICAgICBSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFJlZjogTWF0Y2guc3RyaW5nTGlrZVJlZ2V4cChgU3RhdGVNYWNoaW5lJHtwcmVyZXF1aXNpdGVJZH10YXJnZXRzdGF0ZW1hY2hpbmUuKmApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIFZlcnNpb246IFwiMjAxMi0xMC0xN1wiXG4gICAgICAgIH0sXG4gICAgICAgIFBvbGljeU5hbWU6IFwidGFyZ2V0UG9saWN5XCJcbiAgICAgIH1cbiAgICBdXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBDaGVja0xvZ0dyb3VwKHRlbXBsYXRlOiBUZW1wbGF0ZSkge1xuICB0ZW1wbGF0ZS5oYXNSZXNvdXJjZVByb3BlcnRpZXMoJ0FXUzo6TG9nczo6TG9nR3JvdXAnLCB7XG4gICAgTG9nR3JvdXBOYW1lOiB7XG4gICAgICBcIkZuOjpKb2luXCI6IFtcbiAgICAgICAgXCJcIixcbiAgICAgICAgW1xuICAgICAgICAgIE1hdGNoLnN0cmluZ0xpa2VSZWdleHAoJ1xcL2F3c1xcL3ZlbmRlZGxvZ3NcXC9waXBlc1xcL2NvbnN0cnVjdHMnKSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkZuOjpTZWxlY3RcIjogW1xuICAgICAgICAgICAgICAyLFxuICAgICAgICAgICAgICBNYXRjaC5hbnlWYWx1ZSgpXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICBdXG4gICAgfSxcbiAgfSk7XG59Il19
|