@rio-cloud/cdk-v2-constructs 8.7.1-alpha.1 → 8.8.0-alpha.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 +416 -54
- package/lib/sbom-catalog/catalog-project.d.ts +28 -0
- package/lib/sbom-catalog/catalog-project.js +49 -1
- package/package.json +3 -3
- package/version.json +1 -1
package/.jsii
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@pepperize/cdk-autoscaling-gitlab-runner": "^0.2.624",
|
|
28
|
-
"aws-cdk-lib": "^2.
|
|
28
|
+
"aws-cdk-lib": "^2.266.0",
|
|
29
29
|
"constructs": "^10.5.1",
|
|
30
30
|
"datadog-cdk-constructs-v2": "^4.0.0"
|
|
31
31
|
},
|
|
@@ -553,6 +553,19 @@
|
|
|
553
553
|
}
|
|
554
554
|
}
|
|
555
555
|
},
|
|
556
|
+
"aws-cdk-lib.aws_artifact": {
|
|
557
|
+
"targets": {
|
|
558
|
+
"dotnet": {
|
|
559
|
+
"namespace": "Amazon.CDK.AWS.Artifact"
|
|
560
|
+
},
|
|
561
|
+
"java": {
|
|
562
|
+
"package": "software.amazon.awscdk.services.artifact"
|
|
563
|
+
},
|
|
564
|
+
"python": {
|
|
565
|
+
"module": "aws_cdk.aws_artifact"
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
},
|
|
556
569
|
"aws-cdk-lib.aws_athena": {
|
|
557
570
|
"targets": {
|
|
558
571
|
"dotnet": {
|
|
@@ -683,6 +696,19 @@
|
|
|
683
696
|
}
|
|
684
697
|
}
|
|
685
698
|
},
|
|
699
|
+
"aws-cdk-lib.aws_backupsearch": {
|
|
700
|
+
"targets": {
|
|
701
|
+
"dotnet": {
|
|
702
|
+
"namespace": "Amazon.CDK.AWS.BackupSearch"
|
|
703
|
+
},
|
|
704
|
+
"java": {
|
|
705
|
+
"package": "software.amazon.awscdk.services.backupsearch"
|
|
706
|
+
},
|
|
707
|
+
"python": {
|
|
708
|
+
"module": "aws_cdk.aws_backupsearch"
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
},
|
|
686
712
|
"aws-cdk-lib.aws_batch": {
|
|
687
713
|
"targets": {
|
|
688
714
|
"dotnet": {
|
|
@@ -1178,6 +1204,19 @@
|
|
|
1178
1204
|
}
|
|
1179
1205
|
}
|
|
1180
1206
|
},
|
|
1207
|
+
"aws-cdk-lib.aws_cognitosync": {
|
|
1208
|
+
"targets": {
|
|
1209
|
+
"dotnet": {
|
|
1210
|
+
"namespace": "Amazon.CDK.AWS.CognitoSync"
|
|
1211
|
+
},
|
|
1212
|
+
"java": {
|
|
1213
|
+
"package": "software.amazon.awscdk.services.cognitosync"
|
|
1214
|
+
},
|
|
1215
|
+
"python": {
|
|
1216
|
+
"module": "aws_cdk.aws_cognitosync"
|
|
1217
|
+
}
|
|
1218
|
+
}
|
|
1219
|
+
},
|
|
1181
1220
|
"aws-cdk-lib.aws_comprehend": {
|
|
1182
1221
|
"targets": {
|
|
1183
1222
|
"dotnet": {
|
|
@@ -1321,19 +1360,6 @@
|
|
|
1321
1360
|
}
|
|
1322
1361
|
}
|
|
1323
1362
|
},
|
|
1324
|
-
"aws-cdk-lib.aws_dataexchange": {
|
|
1325
|
-
"targets": {
|
|
1326
|
-
"dotnet": {
|
|
1327
|
-
"namespace": "Amazon.CDK.AWS.DataExchange"
|
|
1328
|
-
},
|
|
1329
|
-
"java": {
|
|
1330
|
-
"package": "software.amazon.awscdk.services.dataexchange"
|
|
1331
|
-
},
|
|
1332
|
-
"python": {
|
|
1333
|
-
"module": "aws_cdk.aws_dataexchange"
|
|
1334
|
-
}
|
|
1335
|
-
}
|
|
1336
|
-
},
|
|
1337
1363
|
"aws-cdk-lib.aws_datapipeline": {
|
|
1338
1364
|
"targets": {
|
|
1339
1365
|
"dotnet": {
|
|
@@ -2952,6 +2978,19 @@
|
|
|
2952
2978
|
}
|
|
2953
2979
|
}
|
|
2954
2980
|
},
|
|
2981
|
+
"aws-cdk-lib.aws_networkflowmonitor": {
|
|
2982
|
+
"targets": {
|
|
2983
|
+
"dotnet": {
|
|
2984
|
+
"namespace": "Amazon.CDK.AWS.NetworkFlowMonitor"
|
|
2985
|
+
},
|
|
2986
|
+
"java": {
|
|
2987
|
+
"package": "software.amazon.awscdk.services.networkflowmonitor"
|
|
2988
|
+
},
|
|
2989
|
+
"python": {
|
|
2990
|
+
"module": "aws_cdk.aws_networkflowmonitor"
|
|
2991
|
+
}
|
|
2992
|
+
}
|
|
2993
|
+
},
|
|
2955
2994
|
"aws-cdk-lib.aws_networkmanager": {
|
|
2956
2995
|
"targets": {
|
|
2957
2996
|
"dotnet": {
|
|
@@ -3826,6 +3865,19 @@
|
|
|
3826
3865
|
}
|
|
3827
3866
|
}
|
|
3828
3867
|
},
|
|
3868
|
+
"aws-cdk-lib.aws_scn": {
|
|
3869
|
+
"targets": {
|
|
3870
|
+
"dotnet": {
|
|
3871
|
+
"namespace": "Amazon.CDK.AWS.SCN"
|
|
3872
|
+
},
|
|
3873
|
+
"java": {
|
|
3874
|
+
"package": "software.amazon.awscdk.services.scn"
|
|
3875
|
+
},
|
|
3876
|
+
"python": {
|
|
3877
|
+
"module": "aws_cdk.aws_scn"
|
|
3878
|
+
}
|
|
3879
|
+
}
|
|
3880
|
+
},
|
|
3829
3881
|
"aws-cdk-lib.aws_sdb": {
|
|
3830
3882
|
"targets": {
|
|
3831
3883
|
"dotnet": {
|
|
@@ -4125,6 +4177,19 @@
|
|
|
4125
4177
|
}
|
|
4126
4178
|
}
|
|
4127
4179
|
},
|
|
4180
|
+
"aws-cdk-lib.aws_states": {
|
|
4181
|
+
"targets": {
|
|
4182
|
+
"dotnet": {
|
|
4183
|
+
"namespace": "Amazon.CDK.AWS.States"
|
|
4184
|
+
},
|
|
4185
|
+
"java": {
|
|
4186
|
+
"package": "software.amazon.awscdk.services.states"
|
|
4187
|
+
},
|
|
4188
|
+
"python": {
|
|
4189
|
+
"module": "aws_cdk.aws_states"
|
|
4190
|
+
}
|
|
4191
|
+
}
|
|
4192
|
+
},
|
|
4128
4193
|
"aws-cdk-lib.aws_stepfunctions": {
|
|
4129
4194
|
"targets": {
|
|
4130
4195
|
"dotnet": {
|
|
@@ -4151,6 +4216,19 @@
|
|
|
4151
4216
|
}
|
|
4152
4217
|
}
|
|
4153
4218
|
},
|
|
4219
|
+
"aws-cdk-lib.aws_storagegateway": {
|
|
4220
|
+
"targets": {
|
|
4221
|
+
"dotnet": {
|
|
4222
|
+
"namespace": "Amazon.CDK.AWS.StorageGateway"
|
|
4223
|
+
},
|
|
4224
|
+
"java": {
|
|
4225
|
+
"package": "software.amazon.awscdk.services.storagegateway"
|
|
4226
|
+
},
|
|
4227
|
+
"python": {
|
|
4228
|
+
"module": "aws_cdk.aws_storagegateway"
|
|
4229
|
+
}
|
|
4230
|
+
}
|
|
4231
|
+
},
|
|
4154
4232
|
"aws-cdk-lib.aws_supportapp": {
|
|
4155
4233
|
"targets": {
|
|
4156
4234
|
"dotnet": {
|
|
@@ -4190,6 +4268,19 @@
|
|
|
4190
4268
|
}
|
|
4191
4269
|
}
|
|
4192
4270
|
},
|
|
4271
|
+
"aws-cdk-lib.aws_thinclient": {
|
|
4272
|
+
"targets": {
|
|
4273
|
+
"dotnet": {
|
|
4274
|
+
"namespace": "Amazon.CDK.AWS.ThinClient"
|
|
4275
|
+
},
|
|
4276
|
+
"java": {
|
|
4277
|
+
"package": "software.amazon.awscdk.services.thinclient"
|
|
4278
|
+
},
|
|
4279
|
+
"python": {
|
|
4280
|
+
"module": "aws_cdk.aws_thinclient"
|
|
4281
|
+
}
|
|
4282
|
+
}
|
|
4283
|
+
},
|
|
4193
4284
|
"aws-cdk-lib.aws_timestream": {
|
|
4194
4285
|
"targets": {
|
|
4195
4286
|
"dotnet": {
|
|
@@ -4203,6 +4294,19 @@
|
|
|
4203
4294
|
}
|
|
4204
4295
|
}
|
|
4205
4296
|
},
|
|
4297
|
+
"aws-cdk-lib.aws_transcribe": {
|
|
4298
|
+
"targets": {
|
|
4299
|
+
"dotnet": {
|
|
4300
|
+
"namespace": "Amazon.CDK.AWS.Transcribe"
|
|
4301
|
+
},
|
|
4302
|
+
"java": {
|
|
4303
|
+
"package": "software.amazon.awscdk.services.transcribe"
|
|
4304
|
+
},
|
|
4305
|
+
"python": {
|
|
4306
|
+
"module": "aws_cdk.aws_transcribe"
|
|
4307
|
+
}
|
|
4308
|
+
}
|
|
4309
|
+
},
|
|
4206
4310
|
"aws-cdk-lib.aws_transfer": {
|
|
4207
4311
|
"targets": {
|
|
4208
4312
|
"dotnet": {
|
|
@@ -4216,6 +4320,19 @@
|
|
|
4216
4320
|
}
|
|
4217
4321
|
}
|
|
4218
4322
|
},
|
|
4323
|
+
"aws-cdk-lib.aws_usernotifications": {
|
|
4324
|
+
"targets": {
|
|
4325
|
+
"dotnet": {
|
|
4326
|
+
"namespace": "Amazon.CDK.AWS.UserNotifications"
|
|
4327
|
+
},
|
|
4328
|
+
"java": {
|
|
4329
|
+
"package": "software.amazon.awscdk.services.usernotifications"
|
|
4330
|
+
},
|
|
4331
|
+
"python": {
|
|
4332
|
+
"module": "aws_cdk.aws_usernotifications"
|
|
4333
|
+
}
|
|
4334
|
+
}
|
|
4335
|
+
},
|
|
4219
4336
|
"aws-cdk-lib.aws_uxc": {
|
|
4220
4337
|
"targets": {
|
|
4221
4338
|
"dotnet": {
|
|
@@ -4307,6 +4424,19 @@
|
|
|
4307
4424
|
}
|
|
4308
4425
|
}
|
|
4309
4426
|
},
|
|
4427
|
+
"aws-cdk-lib.aws_wellarchitected": {
|
|
4428
|
+
"targets": {
|
|
4429
|
+
"dotnet": {
|
|
4430
|
+
"namespace": "Amazon.CDK.AWS.WellArchitected"
|
|
4431
|
+
},
|
|
4432
|
+
"java": {
|
|
4433
|
+
"package": "software.amazon.awscdk.services.wellarchitected"
|
|
4434
|
+
},
|
|
4435
|
+
"python": {
|
|
4436
|
+
"module": "aws_cdk.aws_wellarchitected"
|
|
4437
|
+
}
|
|
4438
|
+
}
|
|
4439
|
+
},
|
|
4310
4440
|
"aws-cdk-lib.aws_wisdom": {
|
|
4311
4441
|
"targets": {
|
|
4312
4442
|
"dotnet": {
|
|
@@ -4809,6 +4939,22 @@
|
|
|
4809
4939
|
}
|
|
4810
4940
|
}
|
|
4811
4941
|
},
|
|
4942
|
+
"aws-cdk-lib.interfaces.aws_artifact": {
|
|
4943
|
+
"targets": {
|
|
4944
|
+
"dotnet": {
|
|
4945
|
+
"namespace": "Amazon.CDK.Interfaces.Artifact"
|
|
4946
|
+
},
|
|
4947
|
+
"go": {
|
|
4948
|
+
"packageName": "interfacesawsartifact"
|
|
4949
|
+
},
|
|
4950
|
+
"java": {
|
|
4951
|
+
"package": "software.amazon.awscdk.interfaces.artifact"
|
|
4952
|
+
},
|
|
4953
|
+
"python": {
|
|
4954
|
+
"module": "aws_cdk.interfaces.aws_artifact"
|
|
4955
|
+
}
|
|
4956
|
+
}
|
|
4957
|
+
},
|
|
4812
4958
|
"aws-cdk-lib.interfaces.aws_athena": {
|
|
4813
4959
|
"targets": {
|
|
4814
4960
|
"dotnet": {
|
|
@@ -4937,6 +5083,22 @@
|
|
|
4937
5083
|
}
|
|
4938
5084
|
}
|
|
4939
5085
|
},
|
|
5086
|
+
"aws-cdk-lib.interfaces.aws_backupsearch": {
|
|
5087
|
+
"targets": {
|
|
5088
|
+
"dotnet": {
|
|
5089
|
+
"namespace": "Amazon.CDK.Interfaces.BackupSearch"
|
|
5090
|
+
},
|
|
5091
|
+
"go": {
|
|
5092
|
+
"packageName": "interfacesawsbackupsearch"
|
|
5093
|
+
},
|
|
5094
|
+
"java": {
|
|
5095
|
+
"package": "software.amazon.awscdk.interfaces.backupsearch"
|
|
5096
|
+
},
|
|
5097
|
+
"python": {
|
|
5098
|
+
"module": "aws_cdk.interfaces.aws_backupsearch"
|
|
5099
|
+
}
|
|
5100
|
+
}
|
|
5101
|
+
},
|
|
4940
5102
|
"aws-cdk-lib.interfaces.aws_batch": {
|
|
4941
5103
|
"targets": {
|
|
4942
5104
|
"dotnet": {
|
|
@@ -5513,6 +5675,22 @@
|
|
|
5513
5675
|
}
|
|
5514
5676
|
}
|
|
5515
5677
|
},
|
|
5678
|
+
"aws-cdk-lib.interfaces.aws_cognitosync": {
|
|
5679
|
+
"targets": {
|
|
5680
|
+
"dotnet": {
|
|
5681
|
+
"namespace": "Amazon.CDK.Interfaces.CognitoSync"
|
|
5682
|
+
},
|
|
5683
|
+
"go": {
|
|
5684
|
+
"packageName": "interfacesawscognitosync"
|
|
5685
|
+
},
|
|
5686
|
+
"java": {
|
|
5687
|
+
"package": "software.amazon.awscdk.interfaces.cognitosync"
|
|
5688
|
+
},
|
|
5689
|
+
"python": {
|
|
5690
|
+
"module": "aws_cdk.interfaces.aws_cognitosync"
|
|
5691
|
+
}
|
|
5692
|
+
}
|
|
5693
|
+
},
|
|
5516
5694
|
"aws-cdk-lib.interfaces.aws_comprehend": {
|
|
5517
5695
|
"targets": {
|
|
5518
5696
|
"dotnet": {
|
|
@@ -5689,22 +5867,6 @@
|
|
|
5689
5867
|
}
|
|
5690
5868
|
}
|
|
5691
5869
|
},
|
|
5692
|
-
"aws-cdk-lib.interfaces.aws_dataexchange": {
|
|
5693
|
-
"targets": {
|
|
5694
|
-
"dotnet": {
|
|
5695
|
-
"namespace": "Amazon.CDK.Interfaces.DataExchange"
|
|
5696
|
-
},
|
|
5697
|
-
"go": {
|
|
5698
|
-
"packageName": "interfacesawsdataexchange"
|
|
5699
|
-
},
|
|
5700
|
-
"java": {
|
|
5701
|
-
"package": "software.amazon.awscdk.interfaces.dataexchange"
|
|
5702
|
-
},
|
|
5703
|
-
"python": {
|
|
5704
|
-
"module": "aws_cdk.interfaces.aws_dataexchange"
|
|
5705
|
-
}
|
|
5706
|
-
}
|
|
5707
|
-
},
|
|
5708
5870
|
"aws-cdk-lib.interfaces.aws_datapipeline": {
|
|
5709
5871
|
"targets": {
|
|
5710
5872
|
"dotnet": {
|
|
@@ -7481,6 +7643,22 @@
|
|
|
7481
7643
|
}
|
|
7482
7644
|
}
|
|
7483
7645
|
},
|
|
7646
|
+
"aws-cdk-lib.interfaces.aws_networkflowmonitor": {
|
|
7647
|
+
"targets": {
|
|
7648
|
+
"dotnet": {
|
|
7649
|
+
"namespace": "Amazon.CDK.Interfaces.NetworkFlowMonitor"
|
|
7650
|
+
},
|
|
7651
|
+
"go": {
|
|
7652
|
+
"packageName": "interfacesawsnetworkflowmonitor"
|
|
7653
|
+
},
|
|
7654
|
+
"java": {
|
|
7655
|
+
"package": "software.amazon.awscdk.interfaces.networkflowmonitor"
|
|
7656
|
+
},
|
|
7657
|
+
"python": {
|
|
7658
|
+
"module": "aws_cdk.interfaces.aws_networkflowmonitor"
|
|
7659
|
+
}
|
|
7660
|
+
}
|
|
7661
|
+
},
|
|
7484
7662
|
"aws-cdk-lib.interfaces.aws_networkmanager": {
|
|
7485
7663
|
"targets": {
|
|
7486
7664
|
"dotnet": {
|
|
@@ -8441,6 +8619,22 @@
|
|
|
8441
8619
|
}
|
|
8442
8620
|
}
|
|
8443
8621
|
},
|
|
8622
|
+
"aws-cdk-lib.interfaces.aws_scn": {
|
|
8623
|
+
"targets": {
|
|
8624
|
+
"dotnet": {
|
|
8625
|
+
"namespace": "Amazon.CDK.Interfaces.SCN"
|
|
8626
|
+
},
|
|
8627
|
+
"go": {
|
|
8628
|
+
"packageName": "interfacesawsscn"
|
|
8629
|
+
},
|
|
8630
|
+
"java": {
|
|
8631
|
+
"package": "software.amazon.awscdk.interfaces.scn"
|
|
8632
|
+
},
|
|
8633
|
+
"python": {
|
|
8634
|
+
"module": "aws_cdk.interfaces.aws_scn"
|
|
8635
|
+
}
|
|
8636
|
+
}
|
|
8637
|
+
},
|
|
8444
8638
|
"aws-cdk-lib.interfaces.aws_sdb": {
|
|
8445
8639
|
"targets": {
|
|
8446
8640
|
"dotnet": {
|
|
@@ -8777,6 +8971,22 @@
|
|
|
8777
8971
|
}
|
|
8778
8972
|
}
|
|
8779
8973
|
},
|
|
8974
|
+
"aws-cdk-lib.interfaces.aws_states": {
|
|
8975
|
+
"targets": {
|
|
8976
|
+
"dotnet": {
|
|
8977
|
+
"namespace": "Amazon.CDK.Interfaces.States"
|
|
8978
|
+
},
|
|
8979
|
+
"go": {
|
|
8980
|
+
"packageName": "interfacesawsstates"
|
|
8981
|
+
},
|
|
8982
|
+
"java": {
|
|
8983
|
+
"package": "software.amazon.awscdk.interfaces.states"
|
|
8984
|
+
},
|
|
8985
|
+
"python": {
|
|
8986
|
+
"module": "aws_cdk.interfaces.aws_states"
|
|
8987
|
+
}
|
|
8988
|
+
}
|
|
8989
|
+
},
|
|
8780
8990
|
"aws-cdk-lib.interfaces.aws_stepfunctions": {
|
|
8781
8991
|
"targets": {
|
|
8782
8992
|
"dotnet": {
|
|
@@ -8793,6 +9003,22 @@
|
|
|
8793
9003
|
}
|
|
8794
9004
|
}
|
|
8795
9005
|
},
|
|
9006
|
+
"aws-cdk-lib.interfaces.aws_storagegateway": {
|
|
9007
|
+
"targets": {
|
|
9008
|
+
"dotnet": {
|
|
9009
|
+
"namespace": "Amazon.CDK.Interfaces.StorageGateway"
|
|
9010
|
+
},
|
|
9011
|
+
"go": {
|
|
9012
|
+
"packageName": "interfacesawsstoragegateway"
|
|
9013
|
+
},
|
|
9014
|
+
"java": {
|
|
9015
|
+
"package": "software.amazon.awscdk.interfaces.storagegateway"
|
|
9016
|
+
},
|
|
9017
|
+
"python": {
|
|
9018
|
+
"module": "aws_cdk.interfaces.aws_storagegateway"
|
|
9019
|
+
}
|
|
9020
|
+
}
|
|
9021
|
+
},
|
|
8796
9022
|
"aws-cdk-lib.interfaces.aws_supportapp": {
|
|
8797
9023
|
"targets": {
|
|
8798
9024
|
"dotnet": {
|
|
@@ -8841,6 +9067,22 @@
|
|
|
8841
9067
|
}
|
|
8842
9068
|
}
|
|
8843
9069
|
},
|
|
9070
|
+
"aws-cdk-lib.interfaces.aws_thinclient": {
|
|
9071
|
+
"targets": {
|
|
9072
|
+
"dotnet": {
|
|
9073
|
+
"namespace": "Amazon.CDK.Interfaces.ThinClient"
|
|
9074
|
+
},
|
|
9075
|
+
"go": {
|
|
9076
|
+
"packageName": "interfacesawsthinclient"
|
|
9077
|
+
},
|
|
9078
|
+
"java": {
|
|
9079
|
+
"package": "software.amazon.awscdk.interfaces.thinclient"
|
|
9080
|
+
},
|
|
9081
|
+
"python": {
|
|
9082
|
+
"module": "aws_cdk.interfaces.aws_thinclient"
|
|
9083
|
+
}
|
|
9084
|
+
}
|
|
9085
|
+
},
|
|
8844
9086
|
"aws-cdk-lib.interfaces.aws_timestream": {
|
|
8845
9087
|
"targets": {
|
|
8846
9088
|
"dotnet": {
|
|
@@ -8857,6 +9099,22 @@
|
|
|
8857
9099
|
}
|
|
8858
9100
|
}
|
|
8859
9101
|
},
|
|
9102
|
+
"aws-cdk-lib.interfaces.aws_transcribe": {
|
|
9103
|
+
"targets": {
|
|
9104
|
+
"dotnet": {
|
|
9105
|
+
"namespace": "Amazon.CDK.Interfaces.Transcribe"
|
|
9106
|
+
},
|
|
9107
|
+
"go": {
|
|
9108
|
+
"packageName": "interfacesawstranscribe"
|
|
9109
|
+
},
|
|
9110
|
+
"java": {
|
|
9111
|
+
"package": "software.amazon.awscdk.interfaces.transcribe"
|
|
9112
|
+
},
|
|
9113
|
+
"python": {
|
|
9114
|
+
"module": "aws_cdk.interfaces.aws_transcribe"
|
|
9115
|
+
}
|
|
9116
|
+
}
|
|
9117
|
+
},
|
|
8860
9118
|
"aws-cdk-lib.interfaces.aws_transfer": {
|
|
8861
9119
|
"targets": {
|
|
8862
9120
|
"dotnet": {
|
|
@@ -8873,6 +9131,22 @@
|
|
|
8873
9131
|
}
|
|
8874
9132
|
}
|
|
8875
9133
|
},
|
|
9134
|
+
"aws-cdk-lib.interfaces.aws_usernotifications": {
|
|
9135
|
+
"targets": {
|
|
9136
|
+
"dotnet": {
|
|
9137
|
+
"namespace": "Amazon.CDK.Interfaces.UserNotifications"
|
|
9138
|
+
},
|
|
9139
|
+
"go": {
|
|
9140
|
+
"packageName": "interfacesawsusernotifications"
|
|
9141
|
+
},
|
|
9142
|
+
"java": {
|
|
9143
|
+
"package": "software.amazon.awscdk.interfaces.usernotifications"
|
|
9144
|
+
},
|
|
9145
|
+
"python": {
|
|
9146
|
+
"module": "aws_cdk.interfaces.aws_usernotifications"
|
|
9147
|
+
}
|
|
9148
|
+
}
|
|
9149
|
+
},
|
|
8876
9150
|
"aws-cdk-lib.interfaces.aws_uxc": {
|
|
8877
9151
|
"targets": {
|
|
8878
9152
|
"dotnet": {
|
|
@@ -8985,6 +9259,22 @@
|
|
|
8985
9259
|
}
|
|
8986
9260
|
}
|
|
8987
9261
|
},
|
|
9262
|
+
"aws-cdk-lib.interfaces.aws_wellarchitected": {
|
|
9263
|
+
"targets": {
|
|
9264
|
+
"dotnet": {
|
|
9265
|
+
"namespace": "Amazon.CDK.Interfaces.WellArchitected"
|
|
9266
|
+
},
|
|
9267
|
+
"go": {
|
|
9268
|
+
"packageName": "interfacesawswellarchitected"
|
|
9269
|
+
},
|
|
9270
|
+
"java": {
|
|
9271
|
+
"package": "software.amazon.awscdk.interfaces.wellarchitected"
|
|
9272
|
+
},
|
|
9273
|
+
"python": {
|
|
9274
|
+
"module": "aws_cdk.interfaces.aws_wellarchitected"
|
|
9275
|
+
}
|
|
9276
|
+
}
|
|
9277
|
+
},
|
|
8988
9278
|
"aws-cdk-lib.interfaces.aws_wisdom": {
|
|
8989
9279
|
"targets": {
|
|
8990
9280
|
"dotnet": {
|
|
@@ -18201,7 +18491,7 @@
|
|
|
18201
18491
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
18202
18492
|
"base": "constructs.Construct",
|
|
18203
18493
|
"docs": {
|
|
18204
|
-
"remarks": "Use this construct when one stack produces between one and three related projects that should share a catalog\ncollection. Shared tags are inherited by every child, while child tags with the same key override them. The RIO\nLanding Zone `team_identifier` tag is always included.\n\nThe files are uploaded after the stack reaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. The EventBridge event time\nand ID identify the upload. All SBOM catalog constructs in the same stack reuse one upload Lambda.\n\nExample:\n```ts\nconst apiSbom = new s3Assets.Asset(this, 'ApiSbomAsset', {\n path: 'build/api-sbom.json',\n});\nconst infrastructureSbom = new s3Assets.Asset(this, 'InfrastructureSbomAsset', {\n path: 'build/infrastructure-sbom.json',\n});\n\nnew SbomCatalogProject(this, 'CatalogUpload', {\n collectionName: 'billing',\n collectionVersion: '1.4.0',\n sharedTags: ['domain:billing'],\n children: [\n {\n name: 'api',\n sbom: apiSbom,\n additionalTags: ['component:backend'],\n },\n {\n name: 'infrastructure',\n sbom: infrastructureSbom,\n additionalTags: ['component:infrastructure'],\n },\n ],\n});\n```",
|
|
18494
|
+
"remarks": "Use this construct when one stack produces between one and three related projects that should share a catalog\ncollection. Shared tags are inherited by every child, while child tags with the same key override them. The RIO\nLanding Zone `team_identifier` tag is always included.\n\nThe files are uploaded after the stack reaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. The EventBridge event time\nand ID identify the upload. All SBOM catalog constructs in the same stack reuse one upload Lambda.\n\nExample:\n```ts\nconst apiSbom = new s3Assets.Asset(this, 'ApiSbomAsset', {\n path: 'build/api-sbom.json',\n});\nconst infrastructureSbom = new s3Assets.Asset(this, 'InfrastructureSbomAsset', {\n path: 'build/infrastructure-sbom.json',\n});\n\nnew SbomCatalogProject(this, 'CatalogUpload', {\n collectionName: 'billing',\n collectionVersion: '1.4.0',\n sharedTags: ['domain:billing'],\n children: [\n {\n name: 'api',\n sbom: apiSbom,\n additionalTags: ['component:backend'],\n },\n {\n name: 'infrastructure',\n sbom: infrastructureSbom,\n additionalTags: ['component:infrastructure'],\n },\n ],\n vulnerabilityMonitorProps: {\n notification: new datadogv2.DefaultSlackNotification(),\n },\n});\n```",
|
|
18205
18495
|
"stability": "stable",
|
|
18206
18496
|
"summary": "Registers a collection of related project SBOMs and optional VEX files in the central SBOM catalog."
|
|
18207
18497
|
},
|
|
@@ -18212,7 +18502,7 @@
|
|
|
18212
18502
|
},
|
|
18213
18503
|
"locationInModule": {
|
|
18214
18504
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18215
|
-
"line":
|
|
18505
|
+
"line": 223
|
|
18216
18506
|
},
|
|
18217
18507
|
"parameters": [
|
|
18218
18508
|
{
|
|
@@ -18238,7 +18528,7 @@
|
|
|
18238
18528
|
"kind": "class",
|
|
18239
18529
|
"locationInModule": {
|
|
18240
18530
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18241
|
-
"line":
|
|
18531
|
+
"line": 222
|
|
18242
18532
|
},
|
|
18243
18533
|
"name": "SbomCatalogProject",
|
|
18244
18534
|
"symbolId": "src/sbom-catalog/catalog-project:SbomCatalogProject"
|
|
@@ -18254,7 +18544,7 @@
|
|
|
18254
18544
|
"kind": "interface",
|
|
18255
18545
|
"locationInModule": {
|
|
18256
18546
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18257
|
-
"line":
|
|
18547
|
+
"line": 66
|
|
18258
18548
|
},
|
|
18259
18549
|
"name": "SbomCatalogProjectChild",
|
|
18260
18550
|
"properties": [
|
|
@@ -18267,7 +18557,7 @@
|
|
|
18267
18557
|
"immutable": true,
|
|
18268
18558
|
"locationInModule": {
|
|
18269
18559
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18270
|
-
"line":
|
|
18560
|
+
"line": 70
|
|
18271
18561
|
},
|
|
18272
18562
|
"name": "name",
|
|
18273
18563
|
"type": {
|
|
@@ -18283,7 +18573,7 @@
|
|
|
18283
18573
|
"immutable": true,
|
|
18284
18574
|
"locationInModule": {
|
|
18285
18575
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18286
|
-
"line":
|
|
18576
|
+
"line": 84
|
|
18287
18577
|
},
|
|
18288
18578
|
"name": "sbom",
|
|
18289
18579
|
"type": {
|
|
@@ -18300,7 +18590,7 @@
|
|
|
18300
18590
|
"immutable": true,
|
|
18301
18591
|
"locationInModule": {
|
|
18302
18592
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18303
|
-
"line":
|
|
18593
|
+
"line": 81
|
|
18304
18594
|
},
|
|
18305
18595
|
"name": "additionalTags",
|
|
18306
18596
|
"optional": true,
|
|
@@ -18323,7 +18613,7 @@
|
|
|
18323
18613
|
"immutable": true,
|
|
18324
18614
|
"locationInModule": {
|
|
18325
18615
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18326
|
-
"line":
|
|
18616
|
+
"line": 73
|
|
18327
18617
|
},
|
|
18328
18618
|
"name": "version",
|
|
18329
18619
|
"optional": true,
|
|
@@ -18340,7 +18630,7 @@
|
|
|
18340
18630
|
"immutable": true,
|
|
18341
18631
|
"locationInModule": {
|
|
18342
18632
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18343
|
-
"line":
|
|
18633
|
+
"line": 87
|
|
18344
18634
|
},
|
|
18345
18635
|
"name": "vex",
|
|
18346
18636
|
"optional": true,
|
|
@@ -18361,7 +18651,7 @@
|
|
|
18361
18651
|
"kind": "interface",
|
|
18362
18652
|
"locationInModule": {
|
|
18363
18653
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18364
|
-
"line":
|
|
18654
|
+
"line": 90
|
|
18365
18655
|
},
|
|
18366
18656
|
"name": "SbomCatalogProjectProps",
|
|
18367
18657
|
"properties": [
|
|
@@ -18375,7 +18665,7 @@
|
|
|
18375
18665
|
"immutable": true,
|
|
18376
18666
|
"locationInModule": {
|
|
18377
18667
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18378
|
-
"line":
|
|
18668
|
+
"line": 106
|
|
18379
18669
|
},
|
|
18380
18670
|
"name": "children",
|
|
18381
18671
|
"type": {
|
|
@@ -18396,7 +18686,7 @@
|
|
|
18396
18686
|
"immutable": true,
|
|
18397
18687
|
"locationInModule": {
|
|
18398
18688
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18399
|
-
"line":
|
|
18689
|
+
"line": 92
|
|
18400
18690
|
},
|
|
18401
18691
|
"name": "collectionName",
|
|
18402
18692
|
"type": {
|
|
@@ -18413,7 +18703,7 @@
|
|
|
18413
18703
|
"immutable": true,
|
|
18414
18704
|
"locationInModule": {
|
|
18415
18705
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18416
|
-
"line":
|
|
18706
|
+
"line": 95
|
|
18417
18707
|
},
|
|
18418
18708
|
"name": "collectionVersion",
|
|
18419
18709
|
"optional": true,
|
|
@@ -18431,7 +18721,7 @@
|
|
|
18431
18721
|
"immutable": true,
|
|
18432
18722
|
"locationInModule": {
|
|
18433
18723
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18434
|
-
"line":
|
|
18724
|
+
"line": 103
|
|
18435
18725
|
},
|
|
18436
18726
|
"name": "sharedTags",
|
|
18437
18727
|
"optional": true,
|
|
@@ -18443,10 +18733,63 @@
|
|
|
18443
18733
|
"kind": "array"
|
|
18444
18734
|
}
|
|
18445
18735
|
}
|
|
18736
|
+
},
|
|
18737
|
+
{
|
|
18738
|
+
"abstract": true,
|
|
18739
|
+
"docs": {
|
|
18740
|
+
"default": "Vulnerability monitors using {@link datadogv2.DefaultSlackNotification }",
|
|
18741
|
+
"remarks": "When omitted, the monitors use {@link datadogv2.DefaultSlackNotification}.",
|
|
18742
|
+
"stability": "stable",
|
|
18743
|
+
"summary": "Optional vulnerability monitor configuration shared by all child monitors."
|
|
18744
|
+
},
|
|
18745
|
+
"immutable": true,
|
|
18746
|
+
"locationInModule": {
|
|
18747
|
+
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18748
|
+
"line": 115
|
|
18749
|
+
},
|
|
18750
|
+
"name": "vulnerabilityMonitorProps",
|
|
18751
|
+
"optional": true,
|
|
18752
|
+
"type": {
|
|
18753
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.SbomCatalogVulnerabilityMonitorProps"
|
|
18754
|
+
}
|
|
18446
18755
|
}
|
|
18447
18756
|
],
|
|
18448
18757
|
"symbolId": "src/sbom-catalog/catalog-project:SbomCatalogProjectProps"
|
|
18449
18758
|
},
|
|
18759
|
+
"@rio-cloud/cdk-v2-constructs.SbomCatalogVulnerabilityMonitorProps": {
|
|
18760
|
+
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
18761
|
+
"datatype": true,
|
|
18762
|
+
"docs": {
|
|
18763
|
+
"stability": "stable",
|
|
18764
|
+
"summary": "Notification configuration for an SBOM catalog vulnerability monitor."
|
|
18765
|
+
},
|
|
18766
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.SbomCatalogVulnerabilityMonitorProps",
|
|
18767
|
+
"kind": "interface",
|
|
18768
|
+
"locationInModule": {
|
|
18769
|
+
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18770
|
+
"line": 29
|
|
18771
|
+
},
|
|
18772
|
+
"name": "SbomCatalogVulnerabilityMonitorProps",
|
|
18773
|
+
"properties": [
|
|
18774
|
+
{
|
|
18775
|
+
"abstract": true,
|
|
18776
|
+
"docs": {
|
|
18777
|
+
"stability": "stable",
|
|
18778
|
+
"summary": "Notification sent when the vulnerability monitor changes state."
|
|
18779
|
+
},
|
|
18780
|
+
"immutable": true,
|
|
18781
|
+
"locationInModule": {
|
|
18782
|
+
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
18783
|
+
"line": 31
|
|
18784
|
+
},
|
|
18785
|
+
"name": "notification",
|
|
18786
|
+
"type": {
|
|
18787
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.datadogv2.INotification"
|
|
18788
|
+
}
|
|
18789
|
+
}
|
|
18790
|
+
],
|
|
18791
|
+
"symbolId": "src/sbom-catalog/catalog-project:SbomCatalogVulnerabilityMonitorProps"
|
|
18792
|
+
},
|
|
18450
18793
|
"@rio-cloud/cdk-v2-constructs.Schema": {
|
|
18451
18794
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
18452
18795
|
"docs": {
|
|
@@ -19166,7 +19509,7 @@
|
|
|
19166
19509
|
"assembly": "@rio-cloud/cdk-v2-constructs",
|
|
19167
19510
|
"base": "constructs.Construct",
|
|
19168
19511
|
"docs": {
|
|
19169
|
-
"remarks": "Use this construct when a stack owns one independently versioned project. The files are uploaded after the stack\nreaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. The EventBridge event time and ID identify the upload.\n\nThe construct automatically adds the RIO Landing Zone `team_identifier` tag and grants the generated upload Lambda\npermission to read the source assets and write them to the central catalog bucket. All SBOM catalog constructs in\nthe same stack reuse one upload Lambda.\n\nExample:\n```ts\nconst sbom = new s3Assets.Asset(this, 'SbomAsset', {\n path: 'build/sbom.json',\n});\nconst vex = new s3Assets.Asset(this, 'VexAsset', {\n path: 'build/vex.json',\n});\n\nnew StandaloneSbomCatalogProject(this, 'CatalogUpload', {\n name: 'billing-api',\n version: '1.4.0',\n additionalTags: ['component:backend'],\n sbom,\n vex,\n});\n```",
|
|
19512
|
+
"remarks": "Use this construct when a stack owns one independently versioned project. The files are uploaded after the stack\nreaches `CREATE_COMPLETE` or `UPDATE_COMPLETE`. The EventBridge event time and ID identify the upload.\n\nThe construct automatically adds the RIO Landing Zone `team_identifier` tag and grants the generated upload Lambda\npermission to read the source assets and write them to the central catalog bucket. All SBOM catalog constructs in\nthe same stack reuse one upload Lambda.\n\nExample:\n```ts\nconst sbom = new s3Assets.Asset(this, 'SbomAsset', {\n path: 'build/sbom.json',\n});\nconst vex = new s3Assets.Asset(this, 'VexAsset', {\n path: 'build/vex.json',\n});\n\nnew StandaloneSbomCatalogProject(this, 'CatalogUpload', {\n name: 'billing-api',\n version: '1.4.0',\n additionalTags: ['component:backend'],\n sbom,\n vex,\n vulnerabilityMonitorProps: {\n notification: new datadogv2.DefaultSlackNotification(),\n },\n});\n```",
|
|
19170
19513
|
"stability": "stable",
|
|
19171
19514
|
"summary": "Registers one project's SBOM and optional VEX in the central SBOM catalog."
|
|
19172
19515
|
},
|
|
@@ -19177,7 +19520,7 @@
|
|
|
19177
19520
|
},
|
|
19178
19521
|
"locationInModule": {
|
|
19179
19522
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19180
|
-
"line":
|
|
19523
|
+
"line": 150
|
|
19181
19524
|
},
|
|
19182
19525
|
"parameters": [
|
|
19183
19526
|
{
|
|
@@ -19203,7 +19546,7 @@
|
|
|
19203
19546
|
"kind": "class",
|
|
19204
19547
|
"locationInModule": {
|
|
19205
19548
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19206
|
-
"line":
|
|
19549
|
+
"line": 149
|
|
19207
19550
|
},
|
|
19208
19551
|
"name": "StandaloneSbomCatalogProject",
|
|
19209
19552
|
"symbolId": "src/sbom-catalog/catalog-project:StandaloneSbomCatalogProject"
|
|
@@ -19218,7 +19561,7 @@
|
|
|
19218
19561
|
"kind": "interface",
|
|
19219
19562
|
"locationInModule": {
|
|
19220
19563
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19221
|
-
"line":
|
|
19564
|
+
"line": 34
|
|
19222
19565
|
},
|
|
19223
19566
|
"name": "StandaloneSbomCatalogProjectProps",
|
|
19224
19567
|
"properties": [
|
|
@@ -19231,7 +19574,7 @@
|
|
|
19231
19574
|
"immutable": true,
|
|
19232
19575
|
"locationInModule": {
|
|
19233
19576
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19234
|
-
"line":
|
|
19577
|
+
"line": 36
|
|
19235
19578
|
},
|
|
19236
19579
|
"name": "name",
|
|
19237
19580
|
"type": {
|
|
@@ -19247,7 +19590,7 @@
|
|
|
19247
19590
|
"immutable": true,
|
|
19248
19591
|
"locationInModule": {
|
|
19249
19592
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19250
|
-
"line":
|
|
19593
|
+
"line": 50
|
|
19251
19594
|
},
|
|
19252
19595
|
"name": "sbom",
|
|
19253
19596
|
"type": {
|
|
@@ -19264,7 +19607,7 @@
|
|
|
19264
19607
|
"immutable": true,
|
|
19265
19608
|
"locationInModule": {
|
|
19266
19609
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19267
|
-
"line":
|
|
19610
|
+
"line": 47
|
|
19268
19611
|
},
|
|
19269
19612
|
"name": "additionalTags",
|
|
19270
19613
|
"optional": true,
|
|
@@ -19287,7 +19630,7 @@
|
|
|
19287
19630
|
"immutable": true,
|
|
19288
19631
|
"locationInModule": {
|
|
19289
19632
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19290
|
-
"line":
|
|
19633
|
+
"line": 39
|
|
19291
19634
|
},
|
|
19292
19635
|
"name": "version",
|
|
19293
19636
|
"optional": true,
|
|
@@ -19304,13 +19647,32 @@
|
|
|
19304
19647
|
"immutable": true,
|
|
19305
19648
|
"locationInModule": {
|
|
19306
19649
|
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19307
|
-
"line":
|
|
19650
|
+
"line": 53
|
|
19308
19651
|
},
|
|
19309
19652
|
"name": "vex",
|
|
19310
19653
|
"optional": true,
|
|
19311
19654
|
"type": {
|
|
19312
19655
|
"fqn": "aws-cdk-lib.aws_s3_assets.Asset"
|
|
19313
19656
|
}
|
|
19657
|
+
},
|
|
19658
|
+
{
|
|
19659
|
+
"abstract": true,
|
|
19660
|
+
"docs": {
|
|
19661
|
+
"default": "A vulnerability monitor using {@link datadogv2.DefaultSlackNotification }",
|
|
19662
|
+
"remarks": "When omitted, the monitor uses {@link datadogv2.DefaultSlackNotification}.",
|
|
19663
|
+
"stability": "stable",
|
|
19664
|
+
"summary": "Optional vulnerability monitor configuration."
|
|
19665
|
+
},
|
|
19666
|
+
"immutable": true,
|
|
19667
|
+
"locationInModule": {
|
|
19668
|
+
"filename": "src/sbom-catalog/catalog-project.ts",
|
|
19669
|
+
"line": 62
|
|
19670
|
+
},
|
|
19671
|
+
"name": "vulnerabilityMonitorProps",
|
|
19672
|
+
"optional": true,
|
|
19673
|
+
"type": {
|
|
19674
|
+
"fqn": "@rio-cloud/cdk-v2-constructs.SbomCatalogVulnerabilityMonitorProps"
|
|
19675
|
+
}
|
|
19314
19676
|
}
|
|
19315
19677
|
],
|
|
19316
19678
|
"symbolId": "src/sbom-catalog/catalog-project:StandaloneSbomCatalogProjectProps"
|
|
@@ -29632,5 +29994,5 @@
|
|
|
29632
29994
|
}
|
|
29633
29995
|
},
|
|
29634
29996
|
"version": "0.0.0",
|
|
29635
|
-
"fingerprint": "
|
|
29997
|
+
"fingerprint": "XZphhq0PqcKQAClIl1Rt5V+SNxfN9zK3Twvs2jxjIJc="
|
|
29636
29998
|
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import * as s3Assets from 'aws-cdk-lib/aws-s3-assets';
|
|
2
2
|
import { Construct } from 'constructs';
|
|
3
|
+
import * as datadogv2 from '../datadogv2';
|
|
4
|
+
/** Notification configuration for an SBOM catalog vulnerability monitor. */
|
|
5
|
+
export interface SbomCatalogVulnerabilityMonitorProps {
|
|
6
|
+
/** Notification sent when the vulnerability monitor changes state. */
|
|
7
|
+
readonly notification: datadogv2.INotification;
|
|
8
|
+
}
|
|
3
9
|
export interface StandaloneSbomCatalogProjectProps {
|
|
4
10
|
/** Must be non-empty and must not contain `/`. */
|
|
5
11
|
readonly name: string;
|
|
@@ -16,6 +22,14 @@ export interface StandaloneSbomCatalogProjectProps {
|
|
|
16
22
|
readonly sbom: s3Assets.Asset;
|
|
17
23
|
/** Optional JSON VEX file asset to upload. */
|
|
18
24
|
readonly vex?: s3Assets.Asset;
|
|
25
|
+
/**
|
|
26
|
+
* Optional vulnerability monitor configuration.
|
|
27
|
+
*
|
|
28
|
+
* When omitted, the monitor uses {@link datadogv2.DefaultSlackNotification}.
|
|
29
|
+
*
|
|
30
|
+
* @defaultValue A vulnerability monitor using {@link datadogv2.DefaultSlackNotification}
|
|
31
|
+
*/
|
|
32
|
+
readonly vulnerabilityMonitorProps?: SbomCatalogVulnerabilityMonitorProps;
|
|
19
33
|
}
|
|
20
34
|
/** A child project in an SBOM catalog collection. */
|
|
21
35
|
export interface SbomCatalogProjectChild {
|
|
@@ -51,6 +65,14 @@ export interface SbomCatalogProjectProps {
|
|
|
51
65
|
readonly sharedTags?: string[];
|
|
52
66
|
/** Child catalog projects. Must contain between one and three projects. */
|
|
53
67
|
readonly children: SbomCatalogProjectChild[];
|
|
68
|
+
/**
|
|
69
|
+
* Optional vulnerability monitor configuration shared by all child monitors.
|
|
70
|
+
*
|
|
71
|
+
* When omitted, the monitors use {@link datadogv2.DefaultSlackNotification}.
|
|
72
|
+
*
|
|
73
|
+
* @defaultValue Vulnerability monitors using {@link datadogv2.DefaultSlackNotification}
|
|
74
|
+
*/
|
|
75
|
+
readonly vulnerabilityMonitorProps?: SbomCatalogVulnerabilityMonitorProps;
|
|
54
76
|
}
|
|
55
77
|
/**
|
|
56
78
|
* Registers one project's SBOM and optional VEX in the central SBOM catalog.
|
|
@@ -77,6 +99,9 @@ export interface SbomCatalogProjectProps {
|
|
|
77
99
|
* additionalTags: ['component:backend'],
|
|
78
100
|
* sbom,
|
|
79
101
|
* vex,
|
|
102
|
+
* vulnerabilityMonitorProps: {
|
|
103
|
+
* notification: new datadogv2.DefaultSlackNotification(),
|
|
104
|
+
* },
|
|
80
105
|
* });
|
|
81
106
|
* ```
|
|
82
107
|
*/
|
|
@@ -118,6 +143,9 @@ export declare class StandaloneSbomCatalogProject extends Construct {
|
|
|
118
143
|
* additionalTags: ['component:infrastructure'],
|
|
119
144
|
* },
|
|
120
145
|
* ],
|
|
146
|
+
* vulnerabilityMonitorProps: {
|
|
147
|
+
* notification: new datadogv2.DefaultSlackNotification(),
|
|
148
|
+
* },
|
|
121
149
|
* });
|
|
122
150
|
* ```
|
|
123
151
|
*/
|
|
@@ -12,6 +12,7 @@ const logs = require("aws-cdk-lib/aws-logs");
|
|
|
12
12
|
const constructs_1 = require("constructs");
|
|
13
13
|
const path = require("path");
|
|
14
14
|
const constants_1 = require("../constants");
|
|
15
|
+
const datadogv2 = require("../datadogv2");
|
|
15
16
|
const rio_landing_zone_1 = require("../rio-landing-zone");
|
|
16
17
|
const constants_2 = require("./constants");
|
|
17
18
|
const DEFAULT_VERSION = 'main';
|
|
@@ -45,6 +46,9 @@ const UPLOAD_LOG_GROUP_ID = 'SbomCatalogUploadLogGroup';
|
|
|
45
46
|
* additionalTags: ['component:backend'],
|
|
46
47
|
* sbom,
|
|
47
48
|
* vex,
|
|
49
|
+
* vulnerabilityMonitorProps: {
|
|
50
|
+
* notification: new datadogv2.DefaultSlackNotification(),
|
|
51
|
+
* },
|
|
48
52
|
* });
|
|
49
53
|
* ```
|
|
50
54
|
*/
|
|
@@ -68,6 +72,12 @@ class StandaloneSbomCatalogProject extends constructs_1.Construct {
|
|
|
68
72
|
...(props.vex === undefined ? {} : { vex: assetLocation(props.vex) }),
|
|
69
73
|
};
|
|
70
74
|
createUploadResources(this, configuration, [props.sbom, ...(props.vex === undefined ? [] : [props.vex])]);
|
|
75
|
+
createVulnerabilityMonitor({
|
|
76
|
+
scope: this,
|
|
77
|
+
projectName: props.name,
|
|
78
|
+
accountName: configuration.originAccountName,
|
|
79
|
+
notification: props.vulnerabilityMonitorProps?.notification ?? new datadogv2.DefaultSlackNotification(),
|
|
80
|
+
});
|
|
71
81
|
}
|
|
72
82
|
}
|
|
73
83
|
exports.StandaloneSbomCatalogProject = StandaloneSbomCatalogProject;
|
|
@@ -108,6 +118,9 @@ StandaloneSbomCatalogProject[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.Standalo
|
|
|
108
118
|
* additionalTags: ['component:infrastructure'],
|
|
109
119
|
* },
|
|
110
120
|
* ],
|
|
121
|
+
* vulnerabilityMonitorProps: {
|
|
122
|
+
* notification: new datadogv2.DefaultSlackNotification(),
|
|
123
|
+
* },
|
|
111
124
|
* });
|
|
112
125
|
* ```
|
|
113
126
|
*/
|
|
@@ -137,11 +150,46 @@ class SbomCatalogProject extends constructs_1.Construct {
|
|
|
137
150
|
})),
|
|
138
151
|
};
|
|
139
152
|
createUploadResources(this, configuration, props.children.flatMap(child => [child.sbom, ...(child.vex === undefined ? [] : [child.vex])]));
|
|
153
|
+
const notification = props.vulnerabilityMonitorProps?.notification ?? new datadogv2.DefaultSlackNotification();
|
|
154
|
+
props.children.forEach(child => createVulnerabilityMonitor({
|
|
155
|
+
scope: this,
|
|
156
|
+
projectName: child.name,
|
|
157
|
+
accountName: configuration.originAccountName,
|
|
158
|
+
notification,
|
|
159
|
+
}));
|
|
140
160
|
}
|
|
141
161
|
}
|
|
142
162
|
exports.SbomCatalogProject = SbomCatalogProject;
|
|
143
163
|
_b = JSII_RTTI_SYMBOL_1;
|
|
144
164
|
SbomCatalogProject[_b] = { fqn: "@rio-cloud/cdk-v2-constructs.SbomCatalogProject", version: "0.0.0" };
|
|
165
|
+
function createVulnerabilityMonitor(props) {
|
|
166
|
+
new datadogv2.DatadogMonitor(props.scope, `${props.projectName}VulnerabilityMonitor`, {
|
|
167
|
+
name: `${props.accountName} VulnerabilityMonitor`,
|
|
168
|
+
serviceName: props.projectName,
|
|
169
|
+
monitorType: datadogv2.DatadogMonitorQueryAlertType.METRIC_ALERT,
|
|
170
|
+
query: `max(last_15m):max:service.vulnerabilities{project_name:${props.projectName}} > 0`,
|
|
171
|
+
lowercaseQuery: true,
|
|
172
|
+
message: [
|
|
173
|
+
'{{#is_alert}}',
|
|
174
|
+
`Project ${props.projectName} has {{value}} known vulnerabilities.`,
|
|
175
|
+
'{{/is_alert}}',
|
|
176
|
+
'',
|
|
177
|
+
'{{#is_recovery}}',
|
|
178
|
+
`Project ${props.projectName} no longer reports vulnerabilities.`,
|
|
179
|
+
'{{/is_recovery}}',
|
|
180
|
+
].join('\n'),
|
|
181
|
+
notification: props.notification,
|
|
182
|
+
priority: 3,
|
|
183
|
+
extraTags: ['monitor_type:vulnerability'],
|
|
184
|
+
optionOverrides: {
|
|
185
|
+
thresholds: {
|
|
186
|
+
critical: 0,
|
|
187
|
+
},
|
|
188
|
+
notifyNoData: false,
|
|
189
|
+
requireFullWindow: false,
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
}
|
|
145
193
|
function createUploadResources(scope, configuration, sourceAssets) {
|
|
146
194
|
const stack = aws_cdk_lib_1.Stack.of(scope);
|
|
147
195
|
const uploadFunction = new lambda.SingletonFunction(scope, 'UploadFunction', {
|
|
@@ -277,4 +325,4 @@ function parseTagsWithValidUniqueKeys(tags, propertyName, allowManagedTags = fal
|
|
|
277
325
|
function optionalTags(tags) {
|
|
278
326
|
return tags === undefined ? {} : { tags };
|
|
279
327
|
}
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nib20tY2F0YWxvZy9jYXRhbG9nLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUU3QywyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDRDQUFvRDtBQUNwRCwwREFBcUQ7QUFDckQsMkNBQXNEO0FBUXRELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQztBQUMvQixNQUFNLFlBQVksR0FBRyxDQUFDLENBQUM7QUFDdkIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFDcEUsTUFBTSxvQkFBb0IsR0FBRyxzQ0FBc0MsQ0FBQztBQUNwRSxNQUFNLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDO0FBQ3BELE1BQU0sbUJBQW1CLEdBQUcsMkJBQTJCLENBQUM7QUFvRXhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLHNCQUFTO0lBQ3pELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0M7UUFDaEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWUsQ0FBQztRQUNqRCxNQUFNLGNBQWMsR0FBRyxpQ0FBYyxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNuRixNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxtQkFBbUIsY0FBYyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFGLGlDQUFp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SSxDQUFDLElBQUksY0FBYyxLQUFLLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksU0FBUyxHQUFHLGdFQUFnRSxDQUFDLENBQUM7UUFDL0csQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNuRCxNQUFNLElBQUksS0FBSyxDQUFDLEdBQUcsWUFBWSxrQ0FBa0MsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksZ0NBQWdDLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsSUFBZTtJQUNuQyxPQUFPLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGV2ZW50cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZXZlbnRzJztcbmltcG9ydCAqIGFzIGV2ZW50c1RhcmdldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczNBc3NldHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBERUZBVUxUX05PREVfUlVOVElNRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSaW9MYW5kaW5nWm9uZSB9IGZyb20gJy4uL3Jpby1sYW5kaW5nLXpvbmUnO1xuaW1wb3J0IHsgU0JPTV9DQVRBTE9HX0JVQ0tFVF9BUk4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2V0TG9jYXRpb24sXG4gIENhdGFsb2dVcGxvYWRDb25maWd1cmF0aW9uLFxuICBTdGFuZGFsb25lVXBsb2FkQ29uZmlndXJhdGlvbixcbiAgVXBsb2FkQ29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi9sYW1iZGEvdHlwZXMnO1xuXG5jb25zdCBERUZBVUxUX1ZFUlNJT04gPSAnbWFpbic7XG5jb25zdCBNQVhfQ0hJTERSRU4gPSAzO1xuY29uc3QgTUFOQUdFRF9UQUdfS0VZUyA9IG5ldyBTZXQoWydhY2NvdW50X2lkJywgJ3RlYW1faWRlbnRpZmllciddKTtcbmNvbnN0IFVQTE9BRF9GVU5DVElPTl9VVUlEID0gJ2QyMGI5ZjQ2LTA3MDItNDdkZC04OWMyLTllYTRiZGRhYWNmYyc7XG5jb25zdCBVUExPQURfRlVOQ1RJT05fUFVSUE9TRSA9ICdTYm9tQ2F0YWxvZ1VwbG9hZCc7XG5jb25zdCBVUExPQURfTE9HX0dST1VQX0lEID0gJ1Nib21DYXRhbG9nVXBsb2FkTG9nR3JvdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcyB7XG4gIC8qKiBNdXN0IGJlIG5vbi1lbXB0eSBhbmQgbXVzdCBub3QgY29udGFpbiBgL2AuICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogUHJvamVjdCB2ZXJzaW9uLiBEZWZhdWx0cyB0byBgbWFpbmAuICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgcHJvamVjdCB0YWdzIHVzaW5nIHRoZSBga2V5OnZhbHVlYCBmb3JtYXQuXG4gICAqXG4gICAqIGB0ZWFtX2lkZW50aWZpZXJgIGlzIGFsd2F5cyBhZGRlZCBmcm9tIHRoZSBSSU8gTGFuZGluZyBab25lIGNvbmZpZ3VyYXRpb24uIERvIG5vdCBwcm92aWRlIGB0ZWFtX2lkZW50aWZpZXJgIG9yXG4gICAqIGBhY2NvdW50X2lkYDsgYm90aCBhcmUgbWFuYWdlZCB0YWcga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIEpTT04gU0JPTSBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgc2JvbTogczNBc3NldHMuQXNzZXQ7XG5cbiAgLyoqIE9wdGlvbmFsIEpTT04gVkVYIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSB2ZXg/OiBzM0Fzc2V0cy5Bc3NldDtcbn1cblxuLyoqIEEgY2hpbGQgcHJvamVjdCBpbiBhbiBTQk9NIGNhdGFsb2cgY29sbGVjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JvbUNhdGFsb2dQcm9qZWN0Q2hpbGQge1xuICAvKipcbiAgICogTXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbGxlY3Rpb24sIGFuZCBtdXN0IG5vdCBjb250YWluIGAvYC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogQ2hpbGQgcHJvamVjdCB2ZXJzaW9uLiBEZWZhdWx0cyB0byBgbWFpbmAuICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgYWRkZWQgdG8gdGhpcyBjaGlsZCwgdXNpbmcgdGhlIGBrZXk6dmFsdWVgIGZvcm1hdC5cbiAgICpcbiAgICogQ2hpbGQgdGFncyBvdmVycmlkZSBzaGFyZWQgdGFncyB3aXRoIHRoZSBzYW1lIGtleS4gYHRlYW1faWRlbnRpZmllcmAgaXMgYWx3YXlzIGluaGVyaXRlZCBmcm9tIHRoZSBSSU8gTGFuZGluZyBab25lXG4gICAqIGNvbmZpZ3VyYXRpb24uIERvIG5vdCBwcm92aWRlIGB0ZWFtX2lkZW50aWZpZXJgIG9yIGBhY2NvdW50X2lkYDsgYm90aCBhcmUgbWFuYWdlZCB0YWcga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIEpTT04gU0JPTSBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgc2JvbTogczNBc3NldHMuQXNzZXQ7XG5cbiAgLyoqIE9wdGlvbmFsIEpTT04gVkVYIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSB2ZXg/OiBzM0Fzc2V0cy5Bc3NldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcyB7XG4gIC8qKiBDb2xsZWN0aW9uIG5hbWUgc3RvcmVkIGluIHRoZSBtYW5pZmVzdCBhbmQgdXNlZCBpbiB0aGUgZGVzdGluYXRpb24ga2V5LiAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBDb2xsZWN0aW9uIHZlcnNpb24uIERlZmF1bHRzIHRvIGBtYWluYC4gKi9cbiAgcmVhZG9ubHkgY29sbGVjdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgaW5oZXJpdGVkIGJ5IGV2ZXJ5IGNoaWxkLCB1c2luZyB0aGUgYGtleTp2YWx1ZWAgZm9ybWF0LlxuICAgKlxuICAgKiBBIGNoaWxkJ3MgYWRkaXRpb25hbCB0YWdzIG92ZXJyaWRlIHNoYXJlZCB0YWdzIHdpdGggdGhlIHNhbWUga2V5LiBgdGVhbV9pZGVudGlmaWVyYCBpcyBhbHdheXMgYWRkZWQgZnJvbSB0aGUgUklPXG4gICAqIExhbmRpbmcgWm9uZSBjb25maWd1cmF0aW9uLiBEbyBub3QgcHJvdmlkZSBgdGVhbV9pZGVudGlmaWVyYCBvciBgYWNjb3VudF9pZGA7IGJvdGggYXJlIG1hbmFnZWQgdGFnIGtleXMuXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIENoaWxkIGNhdGFsb2cgcHJvamVjdHMuIE11c3QgY29udGFpbiBiZXR3ZWVuIG9uZSBhbmQgdGhyZWUgcHJvamVjdHMuICovXG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBTYm9tQ2F0YWxvZ1Byb2plY3RDaGlsZFtdO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBvbmUgcHJvamVjdCdzIFNCT00gYW5kIG9wdGlvbmFsIFZFWCBpbiB0aGUgY2VudHJhbCBTQk9NIGNhdGFsb2cuXG4gKlxuICogVXNlIHRoaXMgY29uc3RydWN0IHdoZW4gYSBzdGFjayBvd25zIG9uZSBpbmRlcGVuZGVudGx5IHZlcnNpb25lZCBwcm9qZWN0LiBUaGUgZmlsZXMgYXJlIHVwbG9hZGVkIGFmdGVyIHRoZSBzdGFja1xuICogcmVhY2hlcyBgQ1JFQVRFX0NPTVBMRVRFYCBvciBgVVBEQVRFX0NPTVBMRVRFYC4gVGhlIEV2ZW50QnJpZGdlIGV2ZW50IHRpbWUgYW5kIElEIGlkZW50aWZ5IHRoZSB1cGxvYWQuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBhdXRvbWF0aWNhbGx5IGFkZHMgdGhlIFJJTyBMYW5kaW5nIFpvbmUgYHRlYW1faWRlbnRpZmllcmAgdGFnIGFuZCBncmFudHMgdGhlIGdlbmVyYXRlZCB1cGxvYWQgTGFtYmRhXG4gKiBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlIHNvdXJjZSBhc3NldHMgYW5kIHdyaXRlIHRoZW0gdG8gdGhlIGNlbnRyYWwgY2F0YWxvZyBidWNrZXQuIEFsbCBTQk9NIGNhdGFsb2cgY29uc3RydWN0cyBpblxuICogdGhlIHNhbWUgc3RhY2sgcmV1c2Ugb25lIHVwbG9hZCBMYW1iZGEuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHRzXG4gKiBjb25zdCBzYm9tID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9zYm9tLmpzb24nLFxuICogfSk7XG4gKiBjb25zdCB2ZXggPSBuZXcgczNBc3NldHMuQXNzZXQodGhpcywgJ1ZleEFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvdmV4Lmpzb24nLFxuICogfSk7XG4gKlxuICogbmV3IFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3QodGhpcywgJ0NhdGFsb2dVcGxvYWQnLCB7XG4gKiAgIG5hbWU6ICdiaWxsaW5nLWFwaScsXG4gKiAgIHZlcnNpb246ICcxLjQuMCcsXG4gKiAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDpiYWNrZW5kJ10sXG4gKiAgIHNib20sXG4gKiAgIHZleCxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcHJvcHMudmVyc2lvbiA/PyBERUZBVUxUX1ZFUlNJT047XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0YWdzID0gbWVyZ2VUYWdzKFtgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YF0sIHByb3BzLmFkZGl0aW9uYWxUYWdzKSA/PyBbXTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ25hbWUnLCBwcm9wcy5uYW1lKTtcbiAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oJ3ZlcnNpb24nLCB2ZXJzaW9uKTtcbiAgICBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKHByb3BzLmFkZGl0aW9uYWxUYWdzID8/IFtdLCAnYWRkaXRpb25hbFRhZ3MnKTtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogU3RhbmRhbG9uZVVwbG9hZENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBvcmlnaW5BY2NvdW50SWQ6IHN0YWNrLmFjY291bnQsXG4gICAgICBvcmlnaW5BY2NvdW50TmFtZTogUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWUsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHRhZ3MsXG4gICAgICBzYm9tOiBhc3NldExvY2F0aW9uKHByb3BzLnNib20pLFxuICAgICAgLi4uKHByb3BzLnZleCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHZleDogYXNzZXRMb2NhdGlvbihwcm9wcy52ZXgpIH0pLFxuICAgIH07XG5cbiAgICBjcmVhdGVVcGxvYWRSZXNvdXJjZXModGhpcywgY29uZmlndXJhdGlvbiwgW3Byb3BzLnNib20sIC4uLihwcm9wcy52ZXggPT09IHVuZGVmaW5lZCA/IFtdIDogW3Byb3BzLnZleF0pXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZWdpc3RlcnMgYSBjb2xsZWN0aW9uIG9mIHJlbGF0ZWQgcHJvamVjdCBTQk9NcyBhbmQgb3B0aW9uYWwgVkVYIGZpbGVzIGluIHRoZSBjZW50cmFsIFNCT00gY2F0YWxvZy5cbiAqXG4gKiBVc2UgdGhpcyBjb25zdHJ1Y3Qgd2hlbiBvbmUgc3RhY2sgcHJvZHVjZXMgYmV0d2VlbiBvbmUgYW5kIHRocmVlIHJlbGF0ZWQgcHJvamVjdHMgdGhhdCBzaG91bGQgc2hhcmUgYSBjYXRhbG9nXG4gKiBjb2xsZWN0aW9uLiBTaGFyZWQgdGFncyBhcmUgaW5oZXJpdGVkIGJ5IGV2ZXJ5IGNoaWxkLCB3aGlsZSBjaGlsZCB0YWdzIHdpdGggdGhlIHNhbWUga2V5IG92ZXJyaWRlIHRoZW0uIFRoZSBSSU9cbiAqIExhbmRpbmcgWm9uZSBgdGVhbV9pZGVudGlmaWVyYCB0YWcgaXMgYWx3YXlzIGluY2x1ZGVkLlxuICpcbiAqIFRoZSBmaWxlcyBhcmUgdXBsb2FkZWQgYWZ0ZXIgdGhlIHN0YWNrIHJlYWNoZXMgYENSRUFURV9DT01QTEVURWAgb3IgYFVQREFURV9DT01QTEVURWAuIFRoZSBFdmVudEJyaWRnZSBldmVudCB0aW1lXG4gKiBhbmQgSUQgaWRlbnRpZnkgdGhlIHVwbG9hZC4gQWxsIFNCT00gY2F0YWxvZyBjb25zdHJ1Y3RzIGluIHRoZSBzYW1lIHN0YWNrIHJldXNlIG9uZSB1cGxvYWQgTGFtYmRhLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0c1xuICogY29uc3QgYXBpU2JvbSA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnQXBpU2JvbUFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvYXBpLXNib20uanNvbicsXG4gKiB9KTtcbiAqIGNvbnN0IGluZnJhc3RydWN0dXJlU2JvbSA9IG5ldyBzM0Fzc2V0cy5Bc3NldCh0aGlzLCAnSW5mcmFzdHJ1Y3R1cmVTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9pbmZyYXN0cnVjdHVyZS1zYm9tLmpzb24nLFxuICogfSk7XG4gKlxuICogbmV3IFNib21DYXRhbG9nUHJvamVjdCh0aGlzLCAnQ2F0YWxvZ1VwbG9hZCcsIHtcbiAqICAgY29sbGVjdGlvbk5hbWU6ICdiaWxsaW5nJyxcbiAqICAgY29sbGVjdGlvblZlcnNpb246ICcxLjQuMCcsXG4gKiAgIHNoYXJlZFRhZ3M6IFsnZG9tYWluOmJpbGxpbmcnXSxcbiAqICAgY2hpbGRyZW46IFtcbiAqICAgICB7XG4gKiAgICAgICBuYW1lOiAnYXBpJyxcbiAqICAgICAgIHNib206IGFwaVNib20sXG4gKiAgICAgICBhZGRpdGlvbmFsVGFnczogWydjb21wb25lbnQ6YmFja2VuZCddLFxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgbmFtZTogJ2luZnJhc3RydWN0dXJlJyxcbiAqICAgICAgIHNib206IGluZnJhc3RydWN0dXJlU2JvbSxcbiAqICAgICAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDppbmZyYXN0cnVjdHVyZSddLFxuICogICAgIH0sXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgU2JvbUNhdGFsb2dQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNib21DYXRhbG9nUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNvbGxlY3Rpb25WZXJzaW9uID0gcHJvcHMuY29sbGVjdGlvblZlcnNpb24gPz8gREVGQVVMVF9WRVJTSU9OO1xuICAgIGNvbnN0IHRlYW1JZGVudGlmaWVyID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUlkZW50aWZpZXJQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWU7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCdjb2xsZWN0aW9uTmFtZScsIHByb3BzLmNvbGxlY3Rpb25OYW1lKTtcbiAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oJ2NvbGxlY3Rpb25WZXJzaW9uJywgY29sbGVjdGlvblZlcnNpb24pO1xuICAgIHZhbGlkYXRlQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pO1xuICAgIHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMocHJvcHMuc2hhcmVkVGFncyA/PyBbXSwgJ3NoYXJlZFRhZ3MnKTtcbiAgICBjb25zdCBzaGFyZWRUYWdzID0gbWVyZ2VUYWdzKFtgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YF0sIHByb3BzLnNoYXJlZFRhZ3MpID8/IFtdO1xuXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBDYXRhbG9nVXBsb2FkQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIG9yaWdpbkFjY291bnRJZDogc3RhY2suYWNjb3VudCxcbiAgICAgIG9yaWdpbkFjY291bnROYW1lOiBSaW9MYW5kaW5nWm9uZS5nZXRBY2NvdW50TmFtZVBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZSxcbiAgICAgIGNvbGxlY3Rpb25OYW1lOiBwcm9wcy5jb2xsZWN0aW9uTmFtZSxcbiAgICAgIGNvbGxlY3Rpb25WZXJzaW9uLFxuICAgICAgdGFnczogW2B0ZWFtX2lkZW50aWZpZXI6JHt0ZWFtSWRlbnRpZmllcn1gXSxcbiAgICAgIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlbi5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgbmFtZTogY2hpbGQubmFtZSxcbiAgICAgICAgdmVyc2lvbjogY2hpbGQudmVyc2lvbiA/PyBERUZBVUxUX1ZFUlNJT04sXG4gICAgICAgIC4uLm9wdGlvbmFsVGFncyhtZXJnZVRhZ3Moc2hhcmVkVGFncywgY2hpbGQuYWRkaXRpb25hbFRhZ3MpKSxcbiAgICAgICAgc2JvbTogYXNzZXRMb2NhdGlvbihjaGlsZC5zYm9tKSxcbiAgICAgICAgLi4uKGNoaWxkLnZleCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHZleDogYXNzZXRMb2NhdGlvbihjaGlsZC52ZXgpIH0pLFxuICAgICAgfSkpLFxuICAgIH07XG5cbiAgICBjcmVhdGVVcGxvYWRSZXNvdXJjZXMoXG4gICAgICB0aGlzLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgIHByb3BzLmNoaWxkcmVuLmZsYXRNYXAoY2hpbGQgPT4gW2NoaWxkLnNib20sIC4uLihjaGlsZC52ZXggPT09IHVuZGVmaW5lZCA/IFtdIDogW2NoaWxkLnZleF0pXSlcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVwbG9hZFJlc291cmNlcyhcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgY29uZmlndXJhdGlvbjogVXBsb2FkQ29uZmlndXJhdGlvbixcbiAgc291cmNlQXNzZXRzOiBzM0Fzc2V0cy5Bc3NldFtdXG4pOiB2b2lkIHtcbiAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG5cbiAgY29uc3QgdXBsb2FkRnVuY3Rpb24gPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHNjb3BlLCAnVXBsb2FkRnVuY3Rpb24nLCB7XG4gICAgdXVpZDogVVBMT0FEX0ZVTkNUSU9OX1VVSUQsXG4gICAgbGFtYmRhUHVycG9zZTogVVBMT0FEX0ZVTkNUSU9OX1BVUlBPU0UsXG4gICAgcnVudGltZTogREVGQVVMVF9OT0RFX1JVTlRJTUUsXG4gICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICBoYW5kbGVyOiAnaGFuZGxlci5oYW5kbGVyJyxcbiAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ2xhbWJkYScpLCB7XG4gICAgICBleGNsdWRlOiBbJyouanMnLCAnKi5kLnRzJ10sXG4gICAgfSksXG4gICAgbG9nZ2luZ0Zvcm1hdDogbGFtYmRhLkxvZ2dpbmdGb3JtYXQuSlNPTixcbiAgICBsb2dHcm91cDogZ2V0T3JDcmVhdGVVcGxvYWRMb2dHcm91cChzdGFjayksXG4gICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ3MzOlB1dE9iamVjdCddLFxuICAgICAgICByZXNvdXJjZXM6IFtgJHtTQk9NX0NBVEFMT0dfQlVDS0VUX0FSTn0vKmBdLFxuICAgICAgfSksXG4gICAgXSxcbiAgICBtZW1vcnlTaXplOiAyNTYsXG4gICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxKSxcbiAgfSk7XG5cbiAgZm9yIChjb25zdCBhc3NldCBvZiBzb3VyY2VBc3NldHMpIHtcbiAgICBhc3NldC5ncmFudFJlYWQodXBsb2FkRnVuY3Rpb24pO1xuICB9XG5cbiAgbmV3IGV2ZW50cy5SdWxlKHNjb3BlLCAnU3RhY2tDb21wbGV0aW9uUnVsZScsIHtcbiAgICBldmVudFBhdHRlcm46IHtcbiAgICAgIHNvdXJjZTogWydhd3MuY2xvdWRmb3JtYXRpb24nXSxcbiAgICAgIGRldGFpbFR5cGU6IFsnQ2xvdWRGb3JtYXRpb24gU3RhY2sgU3RhdHVzIENoYW5nZSddLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgICdzdGFjay1pZCc6IFtzdGFjay5zdGFja0lkXSxcbiAgICAgICAgJ3N0YXR1cy1kZXRhaWxzJzoge1xuICAgICAgICAgIHN0YXR1czogWydDUkVBVEVfQ09NUExFVEUnLCAnVVBEQVRFX0NPTVBMRVRFJ10sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgdGFyZ2V0czogW1xuICAgICAgbmV3IGV2ZW50c1RhcmdldHMuTGFtYmRhRnVuY3Rpb24odXBsb2FkRnVuY3Rpb24sIHtcbiAgICAgICAgZXZlbnQ6IGV2ZW50cy5SdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCh7XG4gICAgICAgICAgZXZlbnRJZDogZXZlbnRzLkV2ZW50RmllbGQuZXZlbnRJZCxcbiAgICAgICAgICBldmVudFRpbWU6IGV2ZW50cy5FdmVudEZpZWxkLmZyb21QYXRoKCckLnRpbWUnKSxcbiAgICAgICAgICBzdGFja0lkOiBldmVudHMuRXZlbnRGaWVsZC5mcm9tUGF0aCgnJC5kZXRhaWwuc3RhY2staWQnKSxcbiAgICAgICAgICBzdGFja1N0YXR1czogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQuZGV0YWlsLnN0YXR1cy1kZXRhaWxzLnN0YXR1cycpLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgXSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGdldE9yQ3JlYXRlVXBsb2FkTG9nR3JvdXAoc3RhY2s6IFN0YWNrKTogbG9ncy5Mb2dHcm91cCB7XG4gIGNvbnN0IGV4aXN0aW5nTG9nR3JvdXAgPSBzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChVUExPQURfTE9HX0dST1VQX0lEKTtcbiAgaWYgKGV4aXN0aW5nTG9nR3JvdXAgaW5zdGFuY2VvZiBsb2dzLkxvZ0dyb3VwKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nTG9nR3JvdXA7XG4gIH1cbiAgaWYgKGV4aXN0aW5nTG9nR3JvdXAgIT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgU3RhY2sgYWxyZWFkeSBjb250YWlucyBhIGNvbnN0cnVjdCBuYW1lZCAnJHtVUExPQURfTE9HX0dST1VQX0lEfSdgKTtcbiAgfVxuICByZXR1cm4gbmV3IGxvZ3MuTG9nR3JvdXAoc3RhY2ssIFVQTE9BRF9MT0dfR1JPVVBfSUQsIHtcbiAgICByZXRlbnRpb246IGxvZ3MuUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2V0TG9jYXRpb24oYXNzZXQ6IHMzQXNzZXRzLkFzc2V0KTogQXNzZXRMb2NhdGlvbiB7XG4gIHJldHVybiB7XG4gICAgYnVja2V0TmFtZTogYXNzZXQuczNCdWNrZXROYW1lLFxuICAgIG9iamVjdEtleTogYXNzZXQuczNPYmplY3RLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFzc2VydE5vbkVtcHR5VmFsdWVXaXRob3V0U2xhc2hlcyhuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCB8fCB2YWx1ZS5pbmNsdWRlcygnLycpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke25hbWV9IG11c3QgYmUgYSBub24tZW1wdHkgdmFsdWUgd2l0aG91dCAnLydgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnROb25FbXB0eVZlcnNpb24obmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQodmFsdWUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmdgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUNoaWxkcmVuKGNoaWxkcmVuOiBTYm9tQ2F0YWxvZ1Byb2plY3RDaGlsZFtdKTogdm9pZCB7XG4gIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NoaWxkcmVuIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgcHJvamVjdCcpO1xuICB9XG4gIGlmIChjaGlsZHJlbi5sZW5ndGggPiBNQVhfQ0hJTERSRU4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNoaWxkcmVuIG11c3QgY29udGFpbiBhdCBtb3N0ICR7TUFYX0NISUxEUkVOfSBwcm9qZWN0c2ApO1xuICB9XG5cbiAgY29uc3QgbmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIGFzc2VydE5vbkVtcHR5VmFsdWVXaXRob3V0U2xhc2hlcygnY2hpbGQgbmFtZScsIGNoaWxkLm5hbWUpO1xuICAgIGlmIChjaGlsZC52ZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFzc2VydE5vbkVtcHR5VmVyc2lvbihgdmVyc2lvbiBmb3IgY2hpbGQgJyR7Y2hpbGQubmFtZX0nYCwgY2hpbGQudmVyc2lvbik7XG4gICAgfVxuICAgIHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoY2hpbGQuYWRkaXRpb25hbFRhZ3MgPz8gW10sIGBhZGRpdGlvbmFsVGFncyBmb3IgY2hpbGQgJyR7Y2hpbGQubmFtZX0nYCk7XG4gICAgaWYgKG5hbWVzLmhhcyhjaGlsZC5uYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjaGlsZCBuYW1lICcke2NoaWxkLm5hbWV9JyBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbGxlY3Rpb25gKTtcbiAgICB9XG4gICAgbmFtZXMuYWRkKGNoaWxkLm5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1lcmdlVGFncyhzaGFyZWRUYWdzPzogc3RyaW5nW10sIGFkZGl0aW9uYWxUYWdzPzogc3RyaW5nW10pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gIGlmIChzaGFyZWRUYWdzID09PSB1bmRlZmluZWQgJiYgYWRkaXRpb25hbFRhZ3MgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBzaGFyZWQgPSBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKHNoYXJlZFRhZ3MgPz8gW10sICdzaGFyZWRUYWdzJywgdHJ1ZSk7XG4gIGNvbnN0IGFkZGl0aW9uYWwgPSBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKGFkZGl0aW9uYWxUYWdzID8/IFtdLCAnYWRkaXRpb25hbFRhZ3MnKTtcbiAgY29uc3QgbWVyZ2VkID0gbmV3IE1hcChzaGFyZWQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHRhZ10gb2YgYWRkaXRpb25hbCkgbWVyZ2VkLnNldChrZXksIHRhZyk7XG4gIHJldHVybiBbLi4ubWVyZ2VkLnZhbHVlcygpXTtcbn1cblxuZnVuY3Rpb24gcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhcbiAgdGFnczogc3RyaW5nW10sXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICBhbGxvd01hbmFnZWRUYWdzID0gZmFsc2Vcbik6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgY29uc3Qgc2VwYXJhdG9ySW5kZXggPSB0YWcuaW5kZXhPZignOicpO1xuICAgIGlmIChzZXBhcmF0b3JJbmRleCA8PSAwIHx8IHNlcGFyYXRvckluZGV4ID09PSB0YWcubGVuZ3RoIC0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gdGFnICcke3RhZ30nIG11c3QgdXNlIHRoZSBmb3JtYXQga2V5OnZhbHVlIHdpdGggYSBub24tZW1wdHkga2V5IGFuZCB2YWx1ZWApO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRhZy5zbGljZSgwLCBzZXBhcmF0b3JJbmRleCk7XG4gICAgaWYgKE1BTkFHRURfVEFHX0tFWVMuaGFzKGtleSkgJiYgIWFsbG93TWFuYWdlZFRhZ3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtwcm9wZXJ0eU5hbWV9IG11c3Qgbm90IHNldCBtYW5hZ2VkIHRhZyBrZXkgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdC5oYXMoa2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gY29udGFpbnMgZHVwbGljYXRlIHRhZyBrZXkgJyR7a2V5fSdgKTtcbiAgICB9XG4gICAgcmVzdWx0LnNldChrZXksIHRhZyk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gb3B0aW9uYWxUYWdzKHRhZ3M/OiBzdHJpbmdbXSk6IHsgcmVhZG9ubHkgdGFncz86IHN0cmluZ1tdIH0ge1xuICByZXR1cm4gdGFncyA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHRhZ3MgfTtcbn1cbiJdfQ==
|
|
328
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nib20tY2F0YWxvZy9jYXRhbG9nLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBcUQ7QUFDckQsaURBQWlEO0FBQ2pELGdFQUFnRTtBQUNoRSwyQ0FBMkM7QUFDM0MsaURBQWlEO0FBQ2pELDZDQUE2QztBQUU3QywyQ0FBdUM7QUFDdkMsNkJBQTZCO0FBQzdCLDRDQUFvRDtBQUNwRCwwQ0FBMEM7QUFDMUMsMERBQXFEO0FBQ3JELDJDQUFzRDtBQVF0RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUM7QUFDL0IsTUFBTSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBQ3BFLE1BQU0sb0JBQW9CLEdBQUcsc0NBQXNDLENBQUM7QUFDcEUsTUFBTSx1QkFBdUIsR0FBRyxtQkFBbUIsQ0FBQztBQUNwRCxNQUFNLG1CQUFtQixHQUFHLDJCQUEyQixDQUFDO0FBNEZ4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJHO0FBQ0gsTUFBYSw0QkFBNkIsU0FBUSxzQkFBUztJQUN6RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdDO1FBQ2hGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7UUFDakQsTUFBTSxjQUFjLEdBQUcsaUNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDbkYsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsbUJBQW1CLGNBQWMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUs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SUFBSSxFQUFFLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uLCBTdGFjaywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBldmVudHMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cyc7XG5pbXBvcnQgKiBhcyBldmVudHNUYXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMtdGFyZ2V0cyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHMzQXNzZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgREVGQVVMVF9OT0RFX1JVTlRJTUUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgZGF0YWRvZ3YyIGZyb20gJy4uL2RhdGFkb2d2Mic7XG5pbXBvcnQgeyBSaW9MYW5kaW5nWm9uZSB9IGZyb20gJy4uL3Jpby1sYW5kaW5nLXpvbmUnO1xuaW1wb3J0IHsgU0JPTV9DQVRBTE9HX0JVQ0tFVF9BUk4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIEFzc2V0TG9jYXRpb24sXG4gIENhdGFsb2dVcGxvYWRDb25maWd1cmF0aW9uLFxuICBTdGFuZGFsb25lVXBsb2FkQ29uZmlndXJhdGlvbixcbiAgVXBsb2FkQ29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi9sYW1iZGEvdHlwZXMnO1xuXG5jb25zdCBERUZBVUxUX1ZFUlNJT04gPSAnbWFpbic7XG5jb25zdCBNQVhfQ0hJTERSRU4gPSAzO1xuY29uc3QgTUFOQUdFRF9UQUdfS0VZUyA9IG5ldyBTZXQoWydhY2NvdW50X2lkJywgJ3RlYW1faWRlbnRpZmllciddKTtcbmNvbnN0IFVQTE9BRF9GVU5DVElPTl9VVUlEID0gJ2QyMGI5ZjQ2LTA3MDItNDdkZC04OWMyLTllYTRiZGRhYWNmYyc7XG5jb25zdCBVUExPQURfRlVOQ1RJT05fUFVSUE9TRSA9ICdTYm9tQ2F0YWxvZ1VwbG9hZCc7XG5jb25zdCBVUExPQURfTE9HX0dST1VQX0lEID0gJ1Nib21DYXRhbG9nVXBsb2FkTG9nR3JvdXAnO1xuXG4vKiogTm90aWZpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGFuIFNCT00gY2F0YWxvZyB2dWxuZXJhYmlsaXR5IG1vbml0b3IuICovXG5leHBvcnQgaW50ZXJmYWNlIFNib21DYXRhbG9nVnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wcyB7XG4gIC8qKiBOb3RpZmljYXRpb24gc2VudCB3aGVuIHRoZSB2dWxuZXJhYmlsaXR5IG1vbml0b3IgY2hhbmdlcyBzdGF0ZS4gKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uOiBkYXRhZG9ndjIuSU5vdGlmaWNhdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0UHJvcHMge1xuICAvKiogTXVzdCBiZSBub24tZW1wdHkgYW5kIG11c3Qgbm90IGNvbnRhaW4gYC9gLiAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqIFByb2plY3QgdmVyc2lvbi4gRGVmYXVsdHMgdG8gYG1haW5gLiAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHByb2plY3QgdGFncyB1c2luZyB0aGUgYGtleTp2YWx1ZWAgZm9ybWF0LlxuICAgKlxuICAgKiBgdGVhbV9pZGVudGlmaWVyYCBpcyBhbHdheXMgYWRkZWQgZnJvbSB0aGUgUklPIExhbmRpbmcgWm9uZSBjb25maWd1cmF0aW9uLiBEbyBub3QgcHJvdmlkZSBgdGVhbV9pZGVudGlmaWVyYCBvclxuICAgKiBgYWNjb3VudF9pZGA7IGJvdGggYXJlIG1hbmFnZWQgdGFnIGtleXMuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsVGFncz86IHN0cmluZ1tdO1xuXG4gIC8qKiBKU09OIFNCT00gZmlsZSBhc3NldCB0byB1cGxvYWQuICovXG4gIHJlYWRvbmx5IHNib206IHMzQXNzZXRzLkFzc2V0O1xuXG4gIC8qKiBPcHRpb25hbCBKU09OIFZFWCBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgdmV4PzogczNBc3NldHMuQXNzZXQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHZ1bG5lcmFiaWxpdHkgbW9uaXRvciBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBXaGVuIG9taXR0ZWQsIHRoZSBtb25pdG9yIHVzZXMge0BsaW5rIGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb259LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIEEgdnVsbmVyYWJpbGl0eSBtb25pdG9yIHVzaW5nIHtAbGluayBkYXRhZG9ndjIuRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9ufVxuICAgKi9cbiAgcmVhZG9ubHkgdnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wcz86IFNib21DYXRhbG9nVnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wcztcbn1cblxuLyoqIEEgY2hpbGQgcHJvamVjdCBpbiBhbiBTQk9NIGNhdGFsb2cgY29sbGVjdGlvbi4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2JvbUNhdGFsb2dQcm9qZWN0Q2hpbGQge1xuICAvKipcbiAgICogTXVzdCBiZSBub24tZW1wdHksIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbGxlY3Rpb24sIGFuZCBtdXN0IG5vdCBjb250YWluIGAvYC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKiogQ2hpbGQgcHJvamVjdCB2ZXJzaW9uLiBEZWZhdWx0cyB0byBgbWFpbmAuICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgYWRkZWQgdG8gdGhpcyBjaGlsZCwgdXNpbmcgdGhlIGBrZXk6dmFsdWVgIGZvcm1hdC5cbiAgICpcbiAgICogQ2hpbGQgdGFncyBvdmVycmlkZSBzaGFyZWQgdGFncyB3aXRoIHRoZSBzYW1lIGtleS4gYHRlYW1faWRlbnRpZmllcmAgaXMgYWx3YXlzIGluaGVyaXRlZCBmcm9tIHRoZSBSSU8gTGFuZGluZyBab25lXG4gICAqIGNvbmZpZ3VyYXRpb24uIERvIG5vdCBwcm92aWRlIGB0ZWFtX2lkZW50aWZpZXJgIG9yIGBhY2NvdW50X2lkYDsgYm90aCBhcmUgbWFuYWdlZCB0YWcga2V5cy5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIEpTT04gU0JPTSBmaWxlIGFzc2V0IHRvIHVwbG9hZC4gKi9cbiAgcmVhZG9ubHkgc2JvbTogczNBc3NldHMuQXNzZXQ7XG5cbiAgLyoqIE9wdGlvbmFsIEpTT04gVkVYIGZpbGUgYXNzZXQgdG8gdXBsb2FkLiAqL1xuICByZWFkb25seSB2ZXg/OiBzM0Fzc2V0cy5Bc3NldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcyB7XG4gIC8qKiBDb2xsZWN0aW9uIG5hbWUgc3RvcmVkIGluIHRoZSBtYW5pZmVzdCBhbmQgdXNlZCBpbiB0aGUgZGVzdGluYXRpb24ga2V5LiAqL1xuICByZWFkb25seSBjb2xsZWN0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKiBDb2xsZWN0aW9uIHZlcnNpb24uIERlZmF1bHRzIHRvIGBtYWluYC4gKi9cbiAgcmVhZG9ubHkgY29sbGVjdGlvblZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhZ3MgaW5oZXJpdGVkIGJ5IGV2ZXJ5IGNoaWxkLCB1c2luZyB0aGUgYGtleTp2YWx1ZWAgZm9ybWF0LlxuICAgKlxuICAgKiBBIGNoaWxkJ3MgYWRkaXRpb25hbCB0YWdzIG92ZXJyaWRlIHNoYXJlZCB0YWdzIHdpdGggdGhlIHNhbWUga2V5LiBgdGVhbV9pZGVudGlmaWVyYCBpcyBhbHdheXMgYWRkZWQgZnJvbSB0aGUgUklPXG4gICAqIExhbmRpbmcgWm9uZSBjb25maWd1cmF0aW9uLiBEbyBub3QgcHJvdmlkZSBgdGVhbV9pZGVudGlmaWVyYCBvciBgYWNjb3VudF9pZGA7IGJvdGggYXJlIG1hbmFnZWQgdGFnIGtleXMuXG4gICAqL1xuICByZWFkb25seSBzaGFyZWRUYWdzPzogc3RyaW5nW107XG5cbiAgLyoqIENoaWxkIGNhdGFsb2cgcHJvamVjdHMuIE11c3QgY29udGFpbiBiZXR3ZWVuIG9uZSBhbmQgdGhyZWUgcHJvamVjdHMuICovXG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBTYm9tQ2F0YWxvZ1Byb2plY3RDaGlsZFtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB2dWxuZXJhYmlsaXR5IG1vbml0b3IgY29uZmlndXJhdGlvbiBzaGFyZWQgYnkgYWxsIGNoaWxkIG1vbml0b3JzLlxuICAgKlxuICAgKiBXaGVuIG9taXR0ZWQsIHRoZSBtb25pdG9ycyB1c2Uge0BsaW5rIGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb259LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIFZ1bG5lcmFiaWxpdHkgbW9uaXRvcnMgdXNpbmcge0BsaW5rIGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb259XG4gICAqL1xuICByZWFkb25seSB2dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzPzogU2JvbUNhdGFsb2dWdWxuZXJhYmlsaXR5TW9uaXRvclByb3BzO1xufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBvbmUgcHJvamVjdCdzIFNCT00gYW5kIG9wdGlvbmFsIFZFWCBpbiB0aGUgY2VudHJhbCBTQk9NIGNhdGFsb2cuXG4gKlxuICogVXNlIHRoaXMgY29uc3RydWN0IHdoZW4gYSBzdGFjayBvd25zIG9uZSBpbmRlcGVuZGVudGx5IHZlcnNpb25lZCBwcm9qZWN0LiBUaGUgZmlsZXMgYXJlIHVwbG9hZGVkIGFmdGVyIHRoZSBzdGFja1xuICogcmVhY2hlcyBgQ1JFQVRFX0NPTVBMRVRFYCBvciBgVVBEQVRFX0NPTVBMRVRFYC4gVGhlIEV2ZW50QnJpZGdlIGV2ZW50IHRpbWUgYW5kIElEIGlkZW50aWZ5IHRoZSB1cGxvYWQuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBhdXRvbWF0aWNhbGx5IGFkZHMgdGhlIFJJTyBMYW5kaW5nIFpvbmUgYHRlYW1faWRlbnRpZmllcmAgdGFnIGFuZCBncmFudHMgdGhlIGdlbmVyYXRlZCB1cGxvYWQgTGFtYmRhXG4gKiBwZXJtaXNzaW9uIHRvIHJlYWQgdGhlIHNvdXJjZSBhc3NldHMgYW5kIHdyaXRlIHRoZW0gdG8gdGhlIGNlbnRyYWwgY2F0YWxvZyBidWNrZXQuIEFsbCBTQk9NIGNhdGFsb2cgY29uc3RydWN0cyBpblxuICogdGhlIHNhbWUgc3RhY2sgcmV1c2Ugb25lIHVwbG9hZCBMYW1iZGEuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHRzXG4gKiBjb25zdCBzYm9tID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9zYm9tLmpzb24nLFxuICogfSk7XG4gKiBjb25zdCB2ZXggPSBuZXcgczNBc3NldHMuQXNzZXQodGhpcywgJ1ZleEFzc2V0Jywge1xuICogICBwYXRoOiAnYnVpbGQvdmV4Lmpzb24nLFxuICogfSk7XG4gKlxuICogbmV3IFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3QodGhpcywgJ0NhdGFsb2dVcGxvYWQnLCB7XG4gKiAgIG5hbWU6ICdiaWxsaW5nLWFwaScsXG4gKiAgIHZlcnNpb246ICcxLjQuMCcsXG4gKiAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDpiYWNrZW5kJ10sXG4gKiAgIHNib20sXG4gKiAgIHZleCxcbiAqICAgdnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wczoge1xuICogICAgIG5vdGlmaWNhdGlvbjogbmV3IGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKSxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFuZGFsb25lU2JvbUNhdGFsb2dQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YW5kYWxvbmVTYm9tQ2F0YWxvZ1Byb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gcHJvcHMudmVyc2lvbiA/PyBERUZBVUxUX1ZFUlNJT047XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCB0YWdzID0gbWVyZ2VUYWdzKFtgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YF0sIHByb3BzLmFkZGl0aW9uYWxUYWdzKSA/PyBbXTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ25hbWUnLCBwcm9wcy5uYW1lKTtcbiAgICBhc3NlcnROb25FbXB0eVZlcnNpb24oJ3ZlcnNpb24nLCB2ZXJzaW9uKTtcbiAgICBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKHByb3BzLmFkZGl0aW9uYWxUYWdzID8/IFtdLCAnYWRkaXRpb25hbFRhZ3MnKTtcblxuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbjogU3RhbmRhbG9uZVVwbG9hZENvbmZpZ3VyYXRpb24gPSB7XG4gICAgICBvcmlnaW5BY2NvdW50SWQ6IHN0YWNrLmFjY291bnQsXG4gICAgICBvcmlnaW5BY2NvdW50TmFtZTogUmlvTGFuZGluZ1pvbmUuZ2V0QWNjb3VudE5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWUsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgdmVyc2lvbixcbiAgICAgIHRhZ3MsXG4gICAgICBzYm9tOiBhc3NldExvY2F0aW9uKHByb3BzLnNib20pLFxuICAgICAgLi4uKHByb3BzLnZleCA9PT0gdW5kZWZpbmVkID8ge30gOiB7IHZleDogYXNzZXRMb2NhdGlvbihwcm9wcy52ZXgpIH0pLFxuICAgIH07XG5cbiAgICBjcmVhdGVVcGxvYWRSZXNvdXJjZXModGhpcywgY29uZmlndXJhdGlvbiwgW3Byb3BzLnNib20sIC4uLihwcm9wcy52ZXggPT09IHVuZGVmaW5lZCA/IFtdIDogW3Byb3BzLnZleF0pXSk7XG4gICAgY3JlYXRlVnVsbmVyYWJpbGl0eU1vbml0b3Ioe1xuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgICBwcm9qZWN0TmFtZTogcHJvcHMubmFtZSxcbiAgICAgIGFjY291bnROYW1lOiBjb25maWd1cmF0aW9uLm9yaWdpbkFjY291bnROYW1lLFxuICAgICAgbm90aWZpY2F0aW9uOiBwcm9wcy52dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzPy5ub3RpZmljYXRpb24gPz8gbmV3IGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIGNvbGxlY3Rpb24gb2YgcmVsYXRlZCBwcm9qZWN0IFNCT01zIGFuZCBvcHRpb25hbCBWRVggZmlsZXMgaW4gdGhlIGNlbnRyYWwgU0JPTSBjYXRhbG9nLlxuICpcbiAqIFVzZSB0aGlzIGNvbnN0cnVjdCB3aGVuIG9uZSBzdGFjayBwcm9kdWNlcyBiZXR3ZWVuIG9uZSBhbmQgdGhyZWUgcmVsYXRlZCBwcm9qZWN0cyB0aGF0IHNob3VsZCBzaGFyZSBhIGNhdGFsb2dcbiAqIGNvbGxlY3Rpb24uIFNoYXJlZCB0YWdzIGFyZSBpbmhlcml0ZWQgYnkgZXZlcnkgY2hpbGQsIHdoaWxlIGNoaWxkIHRhZ3Mgd2l0aCB0aGUgc2FtZSBrZXkgb3ZlcnJpZGUgdGhlbS4gVGhlIFJJT1xuICogTGFuZGluZyBab25lIGB0ZWFtX2lkZW50aWZpZXJgIHRhZyBpcyBhbHdheXMgaW5jbHVkZWQuXG4gKlxuICogVGhlIGZpbGVzIGFyZSB1cGxvYWRlZCBhZnRlciB0aGUgc3RhY2sgcmVhY2hlcyBgQ1JFQVRFX0NPTVBMRVRFYCBvciBgVVBEQVRFX0NPTVBMRVRFYC4gVGhlIEV2ZW50QnJpZGdlIGV2ZW50IHRpbWVcbiAqIGFuZCBJRCBpZGVudGlmeSB0aGUgdXBsb2FkLiBBbGwgU0JPTSBjYXRhbG9nIGNvbnN0cnVjdHMgaW4gdGhlIHNhbWUgc3RhY2sgcmV1c2Ugb25lIHVwbG9hZCBMYW1iZGEuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHRzXG4gKiBjb25zdCBhcGlTYm9tID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdBcGlTYm9tQXNzZXQnLCB7XG4gKiAgIHBhdGg6ICdidWlsZC9hcGktc2JvbS5qc29uJyxcbiAqIH0pO1xuICogY29uc3QgaW5mcmFzdHJ1Y3R1cmVTYm9tID0gbmV3IHMzQXNzZXRzLkFzc2V0KHRoaXMsICdJbmZyYXN0cnVjdHVyZVNib21Bc3NldCcsIHtcbiAqICAgcGF0aDogJ2J1aWxkL2luZnJhc3RydWN0dXJlLXNib20uanNvbicsXG4gKiB9KTtcbiAqXG4gKiBuZXcgU2JvbUNhdGFsb2dQcm9qZWN0KHRoaXMsICdDYXRhbG9nVXBsb2FkJywge1xuICogICBjb2xsZWN0aW9uTmFtZTogJ2JpbGxpbmcnLFxuICogICBjb2xsZWN0aW9uVmVyc2lvbjogJzEuNC4wJyxcbiAqICAgc2hhcmVkVGFnczogWydkb21haW46YmlsbGluZyddLFxuICogICBjaGlsZHJlbjogW1xuICogICAgIHtcbiAqICAgICAgIG5hbWU6ICdhcGknLFxuICogICAgICAgc2JvbTogYXBpU2JvbSxcbiAqICAgICAgIGFkZGl0aW9uYWxUYWdzOiBbJ2NvbXBvbmVudDpiYWNrZW5kJ10sXG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBuYW1lOiAnaW5mcmFzdHJ1Y3R1cmUnLFxuICogICAgICAgc2JvbTogaW5mcmFzdHJ1Y3R1cmVTYm9tLFxuICogICAgICAgYWRkaXRpb25hbFRhZ3M6IFsnY29tcG9uZW50OmluZnJhc3RydWN0dXJlJ10sXG4gKiAgICAgfSxcbiAqICAgXSxcbiAqICAgdnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wczoge1xuICogICAgIG5vdGlmaWNhdGlvbjogbmV3IGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKSxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTYm9tQ2F0YWxvZ1Byb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2JvbUNhdGFsb2dQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29sbGVjdGlvblZlcnNpb24gPSBwcm9wcy5jb2xsZWN0aW9uVmVyc2lvbiA/PyBERUZBVUxUX1ZFUlNJT047XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcbiAgICBhc3NlcnROb25FbXB0eVZhbHVlV2l0aG91dFNsYXNoZXMoJ2NvbGxlY3Rpb25OYW1lJywgcHJvcHMuY29sbGVjdGlvbk5hbWUpO1xuICAgIGFzc2VydE5vbkVtcHR5VmVyc2lvbignY29sbGVjdGlvblZlcnNpb24nLCBjb2xsZWN0aW9uVmVyc2lvbik7XG4gICAgdmFsaWRhdGVDaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7XG4gICAgcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhwcm9wcy5zaGFyZWRUYWdzID8/IFtdLCAnc2hhcmVkVGFncycpO1xuICAgIGNvbnN0IHNoYXJlZFRhZ3MgPSBtZXJnZVRhZ3MoW2B0ZWFtX2lkZW50aWZpZXI6JHt0ZWFtSWRlbnRpZmllcn1gXSwgcHJvcHMuc2hhcmVkVGFncykgPz8gW107XG5cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IENhdGFsb2dVcGxvYWRDb25maWd1cmF0aW9uID0ge1xuICAgICAgb3JpZ2luQWNjb3VudElkOiBzdGFjay5hY2NvdW50LFxuICAgICAgb3JpZ2luQWNjb3VudE5hbWU6IFJpb0xhbmRpbmdab25lLmdldEFjY291bnROYW1lUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlLFxuICAgICAgY29sbGVjdGlvbk5hbWU6IHByb3BzLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgY29sbGVjdGlvblZlcnNpb24sXG4gICAgICB0YWdzOiBbYHRlYW1faWRlbnRpZmllcjoke3RlYW1JZGVudGlmaWVyfWBdLFxuICAgICAgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuLm1hcChjaGlsZCA9PiAoe1xuICAgICAgICBuYW1lOiBjaGlsZC5uYW1lLFxuICAgICAgICB2ZXJzaW9uOiBjaGlsZC52ZXJzaW9uID8/IERFRkFVTFRfVkVSU0lPTixcbiAgICAgICAgLi4ub3B0aW9uYWxUYWdzKG1lcmdlVGFncyhzaGFyZWRUYWdzLCBjaGlsZC5hZGRpdGlvbmFsVGFncykpLFxuICAgICAgICBzYm9tOiBhc3NldExvY2F0aW9uKGNoaWxkLnNib20pLFxuICAgICAgICAuLi4oY2hpbGQudmV4ID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdmV4OiBhc3NldExvY2F0aW9uKGNoaWxkLnZleCkgfSksXG4gICAgICB9KSksXG4gICAgfTtcblxuICAgIGNyZWF0ZVVwbG9hZFJlc291cmNlcyhcbiAgICAgIHRoaXMsXG4gICAgICBjb25maWd1cmF0aW9uLFxuICAgICAgcHJvcHMuY2hpbGRyZW4uZmxhdE1hcChjaGlsZCA9PiBbY2hpbGQuc2JvbSwgLi4uKGNoaWxkLnZleCA9PT0gdW5kZWZpbmVkID8gW10gOiBbY2hpbGQudmV4XSldKVxuICAgICk7XG5cbiAgICBjb25zdCBub3RpZmljYXRpb24gPSBwcm9wcy52dWxuZXJhYmlsaXR5TW9uaXRvclByb3BzPy5ub3RpZmljYXRpb24gPz8gbmV3IGRhdGFkb2d2Mi5EZWZhdWx0U2xhY2tOb3RpZmljYXRpb24oKTtcbiAgICBwcm9wcy5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+XG4gICAgICBjcmVhdGVWdWxuZXJhYmlsaXR5TW9uaXRvcih7XG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICBwcm9qZWN0TmFtZTogY2hpbGQubmFtZSxcbiAgICAgICAgYWNjb3VudE5hbWU6IGNvbmZpZ3VyYXRpb24ub3JpZ2luQWNjb3VudE5hbWUsXG4gICAgICAgIG5vdGlmaWNhdGlvbixcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgQ3JlYXRlVnVsbmVyYWJpbGl0eU1vbml0b3JQcm9wcyB7XG4gIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG4gIHJlYWRvbmx5IHByb2plY3ROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjY291bnROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbjogZGF0YWRvZ3YyLklOb3RpZmljYXRpb247XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZ1bG5lcmFiaWxpdHlNb25pdG9yKHByb3BzOiBDcmVhdGVWdWxuZXJhYmlsaXR5TW9uaXRvclByb3BzKTogdm9pZCB7XG4gIG5ldyBkYXRhZG9ndjIuRGF0YWRvZ01vbml0b3IocHJvcHMuc2NvcGUsIGAke3Byb3BzLnByb2plY3ROYW1lfVZ1bG5lcmFiaWxpdHlNb25pdG9yYCwge1xuICAgIG5hbWU6IGAke3Byb3BzLmFjY291bnROYW1lfSBWdWxuZXJhYmlsaXR5TW9uaXRvcmAsXG4gICAgc2VydmljZU5hbWU6IHByb3BzLnByb2plY3ROYW1lLFxuICAgIG1vbml0b3JUeXBlOiBkYXRhZG9ndjIuRGF0YWRvZ01vbml0b3JRdWVyeUFsZXJ0VHlwZS5NRVRSSUNfQUxFUlQsXG4gICAgcXVlcnk6IGBtYXgobGFzdF8xNW0pOm1heDpzZXJ2aWNlLnZ1bG5lcmFiaWxpdGllc3twcm9qZWN0X25hbWU6JHtwcm9wcy5wcm9qZWN0TmFtZX19ID4gMGAsXG4gICAgbG93ZXJjYXNlUXVlcnk6IHRydWUsXG4gICAgbWVzc2FnZTogW1xuICAgICAgJ3t7I2lzX2FsZXJ0fX0nLFxuICAgICAgYFByb2plY3QgJHtwcm9wcy5wcm9qZWN0TmFtZX0gaGFzIHt7dmFsdWV9fSBrbm93biB2dWxuZXJhYmlsaXRpZXMuYCxcbiAgICAgICd7ey9pc19hbGVydH19JyxcbiAgICAgICcnLFxuICAgICAgJ3t7I2lzX3JlY292ZXJ5fX0nLFxuICAgICAgYFByb2plY3QgJHtwcm9wcy5wcm9qZWN0TmFtZX0gbm8gbG9uZ2VyIHJlcG9ydHMgdnVsbmVyYWJpbGl0aWVzLmAsXG4gICAgICAne3svaXNfcmVjb3Zlcnl9fScsXG4gICAgXS5qb2luKCdcXG4nKSxcbiAgICBub3RpZmljYXRpb246IHByb3BzLm5vdGlmaWNhdGlvbixcbiAgICBwcmlvcml0eTogMyxcbiAgICBleHRyYVRhZ3M6IFsnbW9uaXRvcl90eXBlOnZ1bG5lcmFiaWxpdHknXSxcbiAgICBvcHRpb25PdmVycmlkZXM6IHtcbiAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgY3JpdGljYWw6IDAsXG4gICAgICB9LFxuICAgICAgbm90aWZ5Tm9EYXRhOiBmYWxzZSxcbiAgICAgIHJlcXVpcmVGdWxsV2luZG93OiBmYWxzZSxcbiAgICB9LFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlVXBsb2FkUmVzb3VyY2VzKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBjb25maWd1cmF0aW9uOiBVcGxvYWRDb25maWd1cmF0aW9uLFxuICBzb3VyY2VBc3NldHM6IHMzQXNzZXRzLkFzc2V0W11cbik6IHZvaWQge1xuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcblxuICBjb25zdCB1cGxvYWRGdW5jdGlvbiA9IG5ldyBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24oc2NvcGUsICdVcGxvYWRGdW5jdGlvbicsIHtcbiAgICB1dWlkOiBVUExPQURfRlVOQ1RJT05fVVVJRCxcbiAgICBsYW1iZGFQdXJwb3NlOiBVUExPQURfRlVOQ1RJT05fUFVSUE9TRSxcbiAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICBhcmNoaXRlY3R1cmU6IGxhbWJkYS5BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgIGhhbmRsZXI6ICdoYW5kbGVyLmhhbmRsZXInLFxuICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnbGFtYmRhJyksIHtcbiAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICB9KSxcbiAgICBsb2dnaW5nRm9ybWF0OiBsYW1iZGEuTG9nZ2luZ0Zvcm1hdC5KU09OLFxuICAgIGxvZ0dyb3VwOiBnZXRPckNyZWF0ZVVwbG9hZExvZ0dyb3VwKHN0YWNrKSxcbiAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnczM6UHV0T2JqZWN0J10sXG4gICAgICAgIHJlc291cmNlczogW2Ake1NCT01fQ0FUQUxPR19CVUNLRVRfQVJOfS8qYF0sXG4gICAgICB9KSxcbiAgICBdLFxuICAgIG1lbW9yeVNpemU6IDI1NixcbiAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDEpLFxuICB9KTtcblxuICBmb3IgKGNvbnN0IGFzc2V0IG9mIHNvdXJjZUFzc2V0cykge1xuICAgIGFzc2V0LmdyYW50UmVhZCh1cGxvYWRGdW5jdGlvbik7XG4gIH1cblxuICBuZXcgZXZlbnRzLlJ1bGUoc2NvcGUsICdTdGFja0NvbXBsZXRpb25SdWxlJywge1xuICAgIGV2ZW50UGF0dGVybjoge1xuICAgICAgc291cmNlOiBbJ2F3cy5jbG91ZGZvcm1hdGlvbiddLFxuICAgICAgZGV0YWlsVHlwZTogWydDbG91ZEZvcm1hdGlvbiBTdGFjayBTdGF0dXMgQ2hhbmdlJ10sXG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgJ3N0YWNrLWlkJzogW3N0YWNrLnN0YWNrSWRdLFxuICAgICAgICAnc3RhdHVzLWRldGFpbHMnOiB7XG4gICAgICAgICAgc3RhdHVzOiBbJ0NSRUFURV9DT01QTEVURScsICdVUERBVEVfQ09NUExFVEUnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0YXJnZXRzOiBbXG4gICAgICBuZXcgZXZlbnRzVGFyZ2V0cy5MYW1iZGFGdW5jdGlvbih1cGxvYWRGdW5jdGlvbiwge1xuICAgICAgICBldmVudDogZXZlbnRzLlJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KHtcbiAgICAgICAgICBldmVudElkOiBldmVudHMuRXZlbnRGaWVsZC5ldmVudElkLFxuICAgICAgICAgIGV2ZW50VGltZTogZXZlbnRzLkV2ZW50RmllbGQuZnJvbVBhdGgoJyQudGltZScpLFxuICAgICAgICAgIHN0YWNrSWQ6IGV2ZW50cy5FdmVudEZpZWxkLmZyb21QYXRoKCckLmRldGFpbC5zdGFjay1pZCcpLFxuICAgICAgICAgIHN0YWNrU3RhdHVzOiBldmVudHMuRXZlbnRGaWVsZC5mcm9tUGF0aCgnJC5kZXRhaWwuc3RhdHVzLWRldGFpbHMuc3RhdHVzJyksXG4gICAgICAgICAgY29uZmlndXJhdGlvbixcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICBdLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0T3JDcmVhdGVVcGxvYWRMb2dHcm91cChzdGFjazogU3RhY2spOiBsb2dzLkxvZ0dyb3VwIHtcbiAgY29uc3QgZXhpc3RpbmdMb2dHcm91cCA9IHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKFVQTE9BRF9MT0dfR1JPVVBfSUQpO1xuICBpZiAoZXhpc3RpbmdMb2dHcm91cCBpbnN0YW5jZW9mIGxvZ3MuTG9nR3JvdXApIHtcbiAgICByZXR1cm4gZXhpc3RpbmdMb2dHcm91cDtcbiAgfVxuICBpZiAoZXhpc3RpbmdMb2dHcm91cCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdGFjayBhbHJlYWR5IGNvbnRhaW5zIGEgY29uc3RydWN0IG5hbWVkICcke1VQTE9BRF9MT0dfR1JPVVBfSUR9J2ApO1xuICB9XG4gIHJldHVybiBuZXcgbG9ncy5Mb2dHcm91cChzdGFjaywgVVBMT0FEX0xPR19HUk9VUF9JRCwge1xuICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzZXRMb2NhdGlvbihhc3NldDogczNBc3NldHMuQXNzZXQpOiBBc3NldExvY2F0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICBidWNrZXROYW1lOiBhc3NldC5zM0J1Y2tldE5hbWUsXG4gICAgb2JqZWN0S2V5OiBhc3NldC5zM09iamVjdEtleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHZhbHVlKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodmFsdWUubGVuZ3RoID09PSAwIHx8IHZhbHVlLmluY2x1ZGVzKCcvJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bmFtZX0gbXVzdCBiZSBhIG5vbi1lbXB0eSB2YWx1ZSB3aXRob3V0ICcvJ2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydE5vbkVtcHR5VmVyc2lvbihuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZ2ApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRyZW4oY2hpbGRyZW46IFNib21DYXRhbG9nUHJvamVjdENoaWxkW10pOiB2b2lkIHtcbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2hpbGRyZW4gbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBwcm9qZWN0Jyk7XG4gIH1cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCA+IE1BWF9DSElMRFJFTikge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2hpbGRyZW4gbXVzdCBjb250YWluIGF0IG1vc3QgJHtNQVhfQ0hJTERSRU59IHByb2plY3RzYCk7XG4gIH1cblxuICBjb25zdCBuYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgYXNzZXJ0Tm9uRW1wdHlWYWx1ZVdpdGhvdXRTbGFzaGVzKCdjaGlsZCBuYW1lJywgY2hpbGQubmFtZSk7XG4gICAgaWYgKGNoaWxkLnZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgYXNzZXJ0Tm9uRW1wdHlWZXJzaW9uKGB2ZXJzaW9uIGZvciBjaGlsZCAnJHtjaGlsZC5uYW1lfSdgLCBjaGlsZC52ZXJzaW9uKTtcbiAgICB9XG4gICAgcGFyc2VUYWdzV2l0aFZhbGlkVW5pcXVlS2V5cyhjaGlsZC5hZGRpdGlvbmFsVGFncyA/PyBbXSwgYGFkZGl0aW9uYWxUYWdzIGZvciBjaGlsZCAnJHtjaGlsZC5uYW1lfSdgKTtcbiAgICBpZiAobmFtZXMuaGFzKGNoaWxkLm5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNoaWxkIG5hbWUgJyR7Y2hpbGQubmFtZX0nIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgY29sbGVjdGlvbmApO1xuICAgIH1cbiAgICBuYW1lcy5hZGQoY2hpbGQubmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VUYWdzKHNoYXJlZFRhZ3M/OiBzdHJpbmdbXSwgYWRkaXRpb25hbFRhZ3M/OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHNoYXJlZFRhZ3MgPT09IHVuZGVmaW5lZCAmJiBhZGRpdGlvbmFsVGFncyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHNoYXJlZCA9IHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoc2hhcmVkVGFncyA/PyBbXSwgJ3NoYXJlZFRhZ3MnLCB0cnVlKTtcbiAgY29uc3QgYWRkaXRpb25hbCA9IHBhcnNlVGFnc1dpdGhWYWxpZFVuaXF1ZUtleXMoYWRkaXRpb25hbFRhZ3MgPz8gW10sICdhZGRpdGlvbmFsVGFncycpO1xuICBjb25zdCBtZXJnZWQgPSBuZXcgTWFwKHNoYXJlZCk7XG4gIGZvciAoY29uc3QgW2tleSwgdGFnXSBvZiBhZGRpdGlvbmFsKSBtZXJnZWQuc2V0KGtleSwgdGFnKTtcbiAgcmV0dXJuIFsuLi5tZXJnZWQudmFsdWVzKCldO1xufVxuXG5mdW5jdGlvbiBwYXJzZVRhZ3NXaXRoVmFsaWRVbmlxdWVLZXlzKFxuICB0YWdzOiBzdHJpbmdbXSxcbiAgcHJvcGVydHlOYW1lOiBzdHJpbmcsXG4gIGFsbG93TWFuYWdlZFRhZ3MgPSBmYWxzZVxuKTogTWFwPHN0cmluZywgc3RyaW5nPiB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICBjb25zdCBzZXBhcmF0b3JJbmRleCA9IHRhZy5pbmRleE9mKCc6Jyk7XG4gICAgaWYgKHNlcGFyYXRvckluZGV4IDw9IDAgfHwgc2VwYXJhdG9ySW5kZXggPT09IHRhZy5sZW5ndGggLSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHlOYW1lfSB0YWcgJyR7dGFnfScgbXVzdCB1c2UgdGhlIGZvcm1hdCBrZXk6dmFsdWUgd2l0aCBhIG5vbi1lbXB0eSBrZXkgYW5kIHZhbHVlYCk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gdGFnLnNsaWNlKDAsIHNlcGFyYXRvckluZGV4KTtcbiAgICBpZiAoTUFOQUdFRF9UQUdfS0VZUy5oYXMoa2V5KSAmJiAhYWxsb3dNYW5hZ2VkVGFncykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3Byb3BlcnR5TmFtZX0gbXVzdCBub3Qgc2V0IG1hbmFnZWQgdGFnIGtleSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgICBpZiAocmVzdWx0LmhhcyhrZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7cHJvcGVydHlOYW1lfSBjb250YWlucyBkdXBsaWNhdGUgdGFnIGtleSAnJHtrZXl9J2ApO1xuICAgIH1cbiAgICByZXN1bHQuc2V0KGtleSwgdGFnKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBvcHRpb25hbFRhZ3ModGFncz86IHN0cmluZ1tdKTogeyByZWFkb25seSB0YWdzPzogc3RyaW5nW10gfSB7XG4gIHJldHVybiB0YWdzID09PSB1bmRlZmluZWQgPyB7fSA6IHsgdGFncyB9O1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
],
|
|
16
16
|
"main": "lib/index.js",
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
|
-
"version": "8.
|
|
18
|
+
"version": "8.8.0-alpha.2",
|
|
19
19
|
"types": "lib/index.d.ts",
|
|
20
20
|
"stability": "stable",
|
|
21
21
|
"exports": {
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"@types/node": "24.13.2",
|
|
92
92
|
"@types/tmp": "^0.2.6",
|
|
93
93
|
"aws-cdk": "^2.179.0",
|
|
94
|
-
"aws-cdk-lib": "2.
|
|
94
|
+
"aws-cdk-lib": "2.266.0",
|
|
95
95
|
"aws-sdk-client-mock": "^4.1.0",
|
|
96
96
|
"commit-and-tag-version": "^12.5.0",
|
|
97
97
|
"constructs": "10.5.1",
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
"vitest": "4.1.9"
|
|
107
107
|
},
|
|
108
108
|
"peerDependencies": {
|
|
109
|
-
"aws-cdk-lib": "^2.
|
|
109
|
+
"aws-cdk-lib": "^2.266.0",
|
|
110
110
|
"constructs": "^10.5.1",
|
|
111
111
|
"datadog-cdk-constructs-v2": "^4.0.0"
|
|
112
112
|
},
|
package/version.json
CHANGED