@aws-solutions-constructs/aws-cloudfront-s3 2.46.0 → 2.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.eslintignore +2 -2
  2. package/.jsii +61 -24
  3. package/README.md +7 -6
  4. package/lib/index.d.ts +1 -0
  5. package/lib/index.js +70 -8
  6. package/package.json +7 -5
  7. package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.expected.json +958 -0
  8. package/test/integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.js +44 -0
  9. package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.expected.json +592 -0
  10. package/test/integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.js +39 -0
  11. package/test/integ.cfts3-bucket-with-http-origin.d.ts +13 -0
  12. package/test/integ.cfts3-bucket-with-http-origin.expected.json +559 -0
  13. package/test/integ.cfts3-bucket-with-http-origin.js +44 -0
  14. package/test/integ.cfts3-cmk-encryption.expected.json +527 -0
  15. package/test/integ.cfts3-cmk-provided-as-bucket-prop.d.ts +13 -0
  16. package/test/integ.cfts3-cmk-provided-as-bucket-prop.expected.json +958 -0
  17. package/test/integ.cfts3-cmk-provided-as-bucket-prop.js +41 -0
  18. package/test/integ.cfts3-custom-headers.expected.json +307 -27
  19. package/test/integ.cfts3-custom-headers.js +6 -2
  20. package/test/integ.cfts3-custom-originPath.expected.json +307 -27
  21. package/test/integ.cfts3-custom-originPath.js +6 -2
  22. package/test/integ.cfts3-customCloudFrontLoggingBucket.expected.json +54 -23
  23. package/test/integ.cfts3-customLoggingBuckets.d.ts +13 -0
  24. package/test/{integ.cfts3-customLoggingBucket.expected.json → integ.cfts3-customLoggingBuckets.expected.json} +285 -31
  25. package/test/integ.cfts3-customLoggingBuckets.js +58 -0
  26. package/test/integ.cfts3-existing-bucket.expected.json +493 -80
  27. package/test/integ.cfts3-existing-bucket.js +2 -2
  28. package/test/integ.cfts3-no-arguments.expected.json +430 -27
  29. package/test/integ.cfts3-no-arguments.js +5 -2
  30. package/test/integ.cfts3-no-security-headers.expected.json +307 -27
  31. package/test/integ.cfts3-no-security-headers.js +5 -1
  32. package/test/test.cloudfront-s3.test.js +149 -28
  33. package/test/integ.cfts3-customCloudFrontLoggingBucket.js +0 -39
  34. package/test/integ.cfts3-customLoggingBucket.js +0 -42
  35. /package/test/{integ.cfts3-customCloudFrontLoggingBucket.d.ts → integ.cfts3-bucket-encrypted-with-cmk-provided-as-existingbucket.d.ts} +0 -0
  36. /package/test/{integ.cfts3-customLoggingBucket.d.ts → integ.cfts3-bucket-encrypted-with-managed-key-provided-as-existingbucket.d.ts} +0 -0
@@ -19,6 +19,12 @@
19
19
  "IgnorePublicAcls": true,
20
20
  "RestrictPublicBuckets": true
21
21
  },
22
+ "Tags": [
23
+ {
24
+ "Key": "aws-cdk:auto-delete-objects",
25
+ "Value": "true"
26
+ }
27
+ ],
22
28
  "VersioningConfiguration": {
23
29
  "Status": "Enabled"
24
30
  }
@@ -78,6 +84,45 @@
78
84
  }
79
85
  ]
80
86
  },
87
+ {
88
+ "Action": [
89
+ "s3:PutBucketPolicy",
90
+ "s3:GetBucket*",
91
+ "s3:List*",
92
+ "s3:DeleteObject*"
93
+ ],
94
+ "Effect": "Allow",
95
+ "Principal": {
96
+ "AWS": {
97
+ "Fn::GetAtt": [
98
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
99
+ "Arn"
100
+ ]
101
+ }
102
+ },
103
+ "Resource": [
104
+ {
105
+ "Fn::GetAtt": [
106
+ "testcloudfronts3nosecurityheadersS3LoggingBucketF644B35F",
107
+ "Arn"
108
+ ]
109
+ },
110
+ {
111
+ "Fn::Join": [
112
+ "",
113
+ [
114
+ {
115
+ "Fn::GetAtt": [
116
+ "testcloudfronts3nosecurityheadersS3LoggingBucketF644B35F",
117
+ "Arn"
118
+ ]
119
+ },
120
+ "/*"
121
+ ]
122
+ ]
123
+ }
124
+ ]
125
+ },
81
126
  {
82
127
  "Action": "s3:PutObject",
83
128
  "Condition": {
@@ -119,6 +164,25 @@
119
164
  }
120
165
  }
121
166
  },
167
+ "testcloudfronts3nosecurityheadersS3LoggingBucketAutoDeleteObjectsCustomResourceB6D397D3": {
168
+ "Type": "Custom::S3AutoDeleteObjects",
169
+ "Properties": {
170
+ "ServiceToken": {
171
+ "Fn::GetAtt": [
172
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
173
+ "Arn"
174
+ ]
175
+ },
176
+ "BucketName": {
177
+ "Ref": "testcloudfronts3nosecurityheadersS3LoggingBucketF644B35F"
178
+ }
179
+ },
180
+ "DependsOn": [
181
+ "testcloudfronts3nosecurityheadersS3LoggingBucketPolicy264DE8B6"
182
+ ],
183
+ "UpdateReplacePolicy": "Delete",
184
+ "DeletionPolicy": "Delete"
185
+ },
122
186
  "testcloudfronts3nosecurityheadersS3Bucket4D06173D": {
123
187
  "Type": "AWS::S3::Bucket",
124
188
  "Properties": {
@@ -251,14 +315,28 @@
251
315
  },
252
316
  {
253
317
  "Action": "s3:GetObject",
318
+ "Condition": {
319
+ "StringEquals": {
320
+ "AWS:SourceArn": {
321
+ "Fn::Join": [
322
+ "",
323
+ [
324
+ "arn:aws:cloudfront::",
325
+ {
326
+ "Ref": "AWS::AccountId"
327
+ },
328
+ ":distribution/",
329
+ {
330
+ "Ref": "testcloudfronts3nosecurityheadersCloudFrontDistribution3BC8CDED"
331
+ }
332
+ ]
333
+ ]
334
+ }
335
+ }
336
+ },
254
337
  "Effect": "Allow",
255
338
  "Principal": {
256
- "CanonicalUser": {
257
- "Fn::GetAtt": [
258
- "testcloudfronts3nosecurityheadersCloudFrontDistributionOrigin1S3Origin38CFDB89",
259
- "S3CanonicalUserId"
260
- ]
261
- }
339
+ "Service": "cloudfront.amazonaws.com"
262
340
  },
263
341
  "Resource": {
264
342
  "Fn::Join": [
@@ -309,10 +387,9 @@
309
387
  "UpdateReplacePolicy": "Delete",
310
388
  "DeletionPolicy": "Delete"
311
389
  },
312
- "testcloudfronts3nosecurityheadersCloudfrontLoggingBucket92A5E2A5": {
390
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1": {
313
391
  "Type": "AWS::S3::Bucket",
314
392
  "Properties": {
315
- "AccessControl": "LogDeliveryWrite",
316
393
  "BucketEncryption": {
317
394
  "ServerSideEncryptionConfiguration": [
318
395
  {
@@ -352,12 +429,197 @@
352
429
  "rules_to_suppress": [
353
430
  {
354
431
  "id": "W35",
355
- "reason": "This S3 bucket is used as the access logging bucket for CloudFront Distribution"
432
+ "reason": "This S3 bucket is used as the access logging bucket for another bucket"
356
433
  }
357
434
  ]
358
435
  }
359
436
  }
360
437
  },
438
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogPolicy3DF5F522": {
439
+ "Type": "AWS::S3::BucketPolicy",
440
+ "Properties": {
441
+ "Bucket": {
442
+ "Ref": "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1"
443
+ },
444
+ "PolicyDocument": {
445
+ "Statement": [
446
+ {
447
+ "Action": "s3:*",
448
+ "Condition": {
449
+ "Bool": {
450
+ "aws:SecureTransport": "false"
451
+ }
452
+ },
453
+ "Effect": "Deny",
454
+ "Principal": {
455
+ "AWS": "*"
456
+ },
457
+ "Resource": [
458
+ {
459
+ "Fn::GetAtt": [
460
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1",
461
+ "Arn"
462
+ ]
463
+ },
464
+ {
465
+ "Fn::Join": [
466
+ "",
467
+ [
468
+ {
469
+ "Fn::GetAtt": [
470
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1",
471
+ "Arn"
472
+ ]
473
+ },
474
+ "/*"
475
+ ]
476
+ ]
477
+ }
478
+ ]
479
+ },
480
+ {
481
+ "Action": [
482
+ "s3:PutBucketPolicy",
483
+ "s3:GetBucket*",
484
+ "s3:List*",
485
+ "s3:DeleteObject*"
486
+ ],
487
+ "Effect": "Allow",
488
+ "Principal": {
489
+ "AWS": {
490
+ "Fn::GetAtt": [
491
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
492
+ "Arn"
493
+ ]
494
+ }
495
+ },
496
+ "Resource": [
497
+ {
498
+ "Fn::GetAtt": [
499
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1",
500
+ "Arn"
501
+ ]
502
+ },
503
+ {
504
+ "Fn::Join": [
505
+ "",
506
+ [
507
+ {
508
+ "Fn::GetAtt": [
509
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1",
510
+ "Arn"
511
+ ]
512
+ },
513
+ "/*"
514
+ ]
515
+ ]
516
+ }
517
+ ]
518
+ },
519
+ {
520
+ "Action": "s3:PutObject",
521
+ "Condition": {
522
+ "ArnLike": {
523
+ "aws:SourceArn": {
524
+ "Fn::GetAtt": [
525
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucket92A5E2A5",
526
+ "Arn"
527
+ ]
528
+ }
529
+ },
530
+ "StringEquals": {
531
+ "aws:SourceAccount": {
532
+ "Ref": "AWS::AccountId"
533
+ }
534
+ }
535
+ },
536
+ "Effect": "Allow",
537
+ "Principal": {
538
+ "Service": "logging.s3.amazonaws.com"
539
+ },
540
+ "Resource": {
541
+ "Fn::Join": [
542
+ "",
543
+ [
544
+ {
545
+ "Fn::GetAtt": [
546
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1",
547
+ "Arn"
548
+ ]
549
+ },
550
+ "/*"
551
+ ]
552
+ ]
553
+ }
554
+ }
555
+ ],
556
+ "Version": "2012-10-17"
557
+ }
558
+ }
559
+ },
560
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogAutoDeleteObjectsCustomResource20738403": {
561
+ "Type": "Custom::S3AutoDeleteObjects",
562
+ "Properties": {
563
+ "ServiceToken": {
564
+ "Fn::GetAtt": [
565
+ "CustomS3AutoDeleteObjectsCustomResourceProviderHandler9D90184F",
566
+ "Arn"
567
+ ]
568
+ },
569
+ "BucketName": {
570
+ "Ref": "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1"
571
+ }
572
+ },
573
+ "DependsOn": [
574
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogPolicy3DF5F522"
575
+ ],
576
+ "UpdateReplacePolicy": "Delete",
577
+ "DeletionPolicy": "Delete"
578
+ },
579
+ "testcloudfronts3nosecurityheadersCloudfrontLoggingBucket92A5E2A5": {
580
+ "Type": "AWS::S3::Bucket",
581
+ "Properties": {
582
+ "AccessControl": "LogDeliveryWrite",
583
+ "BucketEncryption": {
584
+ "ServerSideEncryptionConfiguration": [
585
+ {
586
+ "ServerSideEncryptionByDefault": {
587
+ "SSEAlgorithm": "AES256"
588
+ }
589
+ }
590
+ ]
591
+ },
592
+ "LoggingConfiguration": {
593
+ "DestinationBucketName": {
594
+ "Ref": "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketAccessLogA3FF51B1"
595
+ }
596
+ },
597
+ "OwnershipControls": {
598
+ "Rules": [
599
+ {
600
+ "ObjectOwnership": "ObjectWriter"
601
+ }
602
+ ]
603
+ },
604
+ "PublicAccessBlockConfiguration": {
605
+ "BlockPublicAcls": true,
606
+ "BlockPublicPolicy": true,
607
+ "IgnorePublicAcls": true,
608
+ "RestrictPublicBuckets": true
609
+ },
610
+ "Tags": [
611
+ {
612
+ "Key": "aws-cdk:auto-delete-objects",
613
+ "Value": "true"
614
+ }
615
+ ],
616
+ "VersioningConfiguration": {
617
+ "Status": "Enabled"
618
+ }
619
+ },
620
+ "UpdateReplacePolicy": "Delete",
621
+ "DeletionPolicy": "Delete"
622
+ },
361
623
  "testcloudfronts3nosecurityheadersCloudfrontLoggingBucketPolicy7D709982": {
362
624
  "Type": "AWS::S3::BucketPolicy",
363
625
  "Properties": {
@@ -463,11 +725,35 @@
463
725
  "UpdateReplacePolicy": "Delete",
464
726
  "DeletionPolicy": "Delete"
465
727
  },
466
- "testcloudfronts3nosecurityheadersCloudFrontDistributionOrigin1S3Origin38CFDB89": {
467
- "Type": "AWS::CloudFront::CloudFrontOriginAccessIdentity",
728
+ "testcloudfronts3nosecurityheadersCloudFrontOac7954FB73": {
729
+ "Type": "AWS::CloudFront::OriginAccessControl",
468
730
  "Properties": {
469
- "CloudFrontOriginAccessIdentityConfig": {
470
- "Comment": "Identity for cfts3nosecurityheaderstestcloudfronts3nosecurityheadersCloudFrontDistributionOrigin1A0125E27"
731
+ "OriginAccessControlConfig": {
732
+ "Description": "Origin access control provisioned by aws-cloudfront-s3",
733
+ "Name": {
734
+ "Fn::Join": [
735
+ "",
736
+ [
737
+ "aws-cloudfront-s3-testaders-",
738
+ {
739
+ "Fn::Select": [
740
+ 2,
741
+ {
742
+ "Fn::Split": [
743
+ "/",
744
+ {
745
+ "Ref": "AWS::StackId"
746
+ }
747
+ ]
748
+ }
749
+ ]
750
+ }
751
+ ]
752
+ ]
753
+ },
754
+ "OriginAccessControlOriginType": "s3",
755
+ "SigningBehavior": "always",
756
+ "SigningProtocol": "sigv4"
471
757
  }
472
758
  }
473
759
  },
@@ -502,19 +788,13 @@
502
788
  ]
503
789
  },
504
790
  "Id": "cfts3nosecurityheaderstestcloudfronts3nosecurityheadersCloudFrontDistributionOrigin1A0125E27",
505
- "S3OriginConfig": {
506
- "OriginAccessIdentity": {
507
- "Fn::Join": [
508
- "",
509
- [
510
- "origin-access-identity/cloudfront/",
511
- {
512
- "Ref": "testcloudfronts3nosecurityheadersCloudFrontDistributionOrigin1S3Origin38CFDB89"
513
- }
514
- ]
515
- ]
516
- }
517
- }
791
+ "OriginAccessControlId": {
792
+ "Fn::GetAtt": [
793
+ "testcloudfronts3nosecurityheadersCloudFrontOac7954FB73",
794
+ "Id"
795
+ ]
796
+ },
797
+ "S3OriginConfig": {}
518
798
  }
519
799
  ]
520
800
  }
@@ -577,7 +857,7 @@
577
857
  [
578
858
  "Lambda function for auto-deleting objects in ",
579
859
  {
580
- "Ref": "testcloudfronts3nosecurityheadersS3Bucket4D06173D"
860
+ "Ref": "testcloudfronts3nosecurityheadersS3LoggingBucketF644B35F"
581
861
  },
582
862
  " S3 bucket."
583
863
  ]
@@ -31,9 +31,13 @@ const props = {
31
31
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
32
32
  autoDeleteObjects: true
33
33
  },
34
+ loggingBucketProps: {
35
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
36
+ autoDeleteObjects: true
37
+ },
34
38
  };
35
39
  new lib_1.CloudFrontToS3(stack, 'test-cloudfront-s3-no-security-headers', props);
36
40
  core_1.suppressAutoDeleteHandlerWarnings(stack);
37
41
  // Synth
38
42
  app.synth();
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY2Z0czMtbm8tc2VjdXJpdHktaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLmNmdHMzLW5vLXNlY3VyaXR5LWhlYWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDViw2Q0FBd0Q7QUFDeEQsZ0NBQTZEO0FBQzdELHlEQUEyRztBQUUzRyxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0FBRTdFLGNBQWM7QUFDZCxNQUFNLEtBQUssR0FBd0I7SUFDakMsNEJBQTRCLEVBQUU7UUFDNUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0lBQ0QseUJBQXlCLEVBQUUsS0FBSztJQUNoQyxXQUFXLEVBQUU7UUFDWCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1FBQ3BDLGlCQUFpQixFQUFFLElBQUk7S0FDeEI7Q0FDRixDQUFDO0FBRUYsSUFBSSxvQkFBYyxDQUFDLEtBQUssRUFBRSx3Q0FBd0MsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUUzRSx3Q0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjaywgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRvUzMsIENsb3VkRnJvbnRUb1MzUHJvcHMgfSBmcm9tIFwiLi4vbGliXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUludGVnU3RhY2tOYW1lLCBzdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3MgfSBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpKTtcbnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9ICdJbnRlZ3JhdGlvbiBUZXN0IGZvciBhd3MtY2xvdWRmcm9udC1zMyc7XG5cbi8vIERlZmluaXRpb25zXG5jb25zdCBwcm9wczogQ2xvdWRGcm9udFRvUzNQcm9wcyA9IHtcbiAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9LFxuICBpbnNlcnRIdHRwU2VjdXJpdHlIZWFkZXJzOiBmYWxzZSxcbiAgYnVja2V0UHJvcHM6IHtcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWVcbiAgfSxcbn07XG5cbm5ldyBDbG91ZEZyb250VG9TMyhzdGFjaywgJ3Rlc3QtY2xvdWRmcm9udC1zMy1uby1zZWN1cml0eS1oZWFkZXJzJywgcHJvcHMpO1xuXG5zdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3Moc3RhY2spO1xuLy8gU3ludGhcbmFwcC5zeW50aCgpO1xuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWcuY2Z0czMtbm8tc2VjdXJpdHktaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImludGVnLmNmdHMzLW5vLXNlY3VyaXR5LWhlYWRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILFVBQVU7QUFDViw2Q0FBd0Q7QUFDeEQsZ0NBQTZEO0FBQzdELHlEQUEyRztBQUUzRyxRQUFRO0FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBRyxFQUFFLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxtQkFBSyxDQUFDLEdBQUcsRUFBRSw2QkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLEtBQUssQ0FBQyxlQUFlLENBQUMsV0FBVyxHQUFHLHdDQUF3QyxDQUFDO0FBRTdFLGNBQWM7QUFDZCxNQUFNLEtBQUssR0FBd0I7SUFDakMsNEJBQTRCLEVBQUU7UUFDNUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxpQkFBaUIsRUFBRSxJQUFJO0tBQ3hCO0lBQ0QseUJBQXlCLEVBQUUsS0FBSztJQUNoQyxXQUFXLEVBQUU7UUFDWCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1FBQ3BDLGlCQUFpQixFQUFFLElBQUk7S0FDeEI7SUFDRCxrQkFBa0IsRUFBRTtRQUNsQixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1FBQ3BDLGlCQUFpQixFQUFFLElBQUk7S0FDeEI7Q0FDRixDQUFDO0FBRUYsSUFBSSxvQkFBYyxDQUFDLEtBQUssRUFBRSx3Q0FBd0MsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUUzRSx3Q0FBaUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxRQUFRO0FBQ1IsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gSW1wb3J0c1xuaW1wb3J0IHsgQXBwLCBTdGFjaywgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRvUzMsIENsb3VkRnJvbnRUb1MzUHJvcHMgfSBmcm9tIFwiLi4vbGliXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUludGVnU3RhY2tOYW1lLCBzdXBwcmVzc0F1dG9EZWxldGVIYW5kbGVyV2FybmluZ3MgfSBmcm9tICdAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmUnO1xuXG4vLyBTZXR1cFxuY29uc3QgYXBwID0gbmV3IEFwcCgpO1xuY29uc3Qgc3RhY2sgPSBuZXcgU3RhY2soYXBwLCBnZW5lcmF0ZUludGVnU3RhY2tOYW1lKF9fZmlsZW5hbWUpKTtcbnN0YWNrLnRlbXBsYXRlT3B0aW9ucy5kZXNjcmlwdGlvbiA9ICdJbnRlZ3JhdGlvbiBUZXN0IGZvciBhd3MtY2xvdWRmcm9udC1zMyc7XG5cbi8vIERlZmluaXRpb25zXG5jb25zdCBwcm9wczogQ2xvdWRGcm9udFRvUzNQcm9wcyA9IHtcbiAgY2xvdWRGcm9udExvZ2dpbmdCdWNrZXRQcm9wczoge1xuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICB9LFxuICBpbnNlcnRIdHRwU2VjdXJpdHlIZWFkZXJzOiBmYWxzZSxcbiAgYnVja2V0UHJvcHM6IHtcbiAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWVcbiAgfSxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiB7XG4gICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlXG4gIH0sXG59O1xuXG5uZXcgQ2xvdWRGcm9udFRvUzMoc3RhY2ssICd0ZXN0LWNsb3VkZnJvbnQtczMtbm8tc2VjdXJpdHktaGVhZGVycycsIHByb3BzKTtcblxuc3VwcHJlc3NBdXRvRGVsZXRlSGFuZGxlcldhcm5pbmdzKHN0YWNrKTtcbi8vIFN5bnRoXG5hcHAuc3ludGgoKTtcbiJdfQ==