@orcabus/platform-cdk-constructs 1.0.7 → 1.0.8

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 CHANGED
@@ -9022,8 +9022,7 @@
9022
9022
  "assembly": "@orcabus/platform-cdk-constructs",
9023
9023
  "datatype": true,
9024
9024
  "docs": {
9025
- "remarks": "If specified, the bucket under\n`CODEBUILD_CACHE_BUCKET` will be used for caching. This bucket is managed by the shared-resources\nservice.\n\nThe partial buildspec must still contain definitions for paths and keys if used.",
9026
- "see": "https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.cache",
9025
+ "remarks": "If specified, the bucket under\n`CODEBUILD_CACHE_BUCKET` will be used for caching. This bucket is managed by the shared-resources\nservice.",
9027
9026
  "stability": "experimental",
9028
9027
  "summary": "Options for creating an S3 cache to use across build steps."
9029
9028
  },
@@ -9031,7 +9030,7 @@
9031
9030
  "kind": "interface",
9032
9031
  "locationInModule": {
9033
9032
  "filename": "deployment-stack-pipeline/pipeline.ts",
9034
- "line": 250
9033
+ "line": 267
9035
9034
  },
9036
9035
  "name": "CacheOptions",
9037
9036
  "namespace": "deploymentPipeline",
@@ -9046,12 +9045,54 @@
9046
9045
  "immutable": true,
9047
9046
  "locationInModule": {
9048
9047
  "filename": "deployment-stack-pipeline/pipeline.ts",
9049
- "line": 255
9048
+ "line": 272
9050
9049
  },
9051
9050
  "name": "namespace",
9052
9051
  "type": {
9053
9052
  "primitive": "string"
9054
9053
  }
9054
+ },
9055
+ {
9056
+ "abstract": true,
9057
+ "docs": {
9058
+ "remarks": "Note that if the cache is specified in the buildspec, that config will take precedence. This option is only used\nas a convenience to specify paths, and will not override the buildspec cache config.",
9059
+ "see": "https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.cache",
9060
+ "stability": "experimental",
9061
+ "summary": "The paths to cache. This will default to the `node_modules` directory if unspecified."
9062
+ },
9063
+ "immutable": true,
9064
+ "locationInModule": {
9065
+ "filename": "deployment-stack-pipeline/pipeline.ts",
9066
+ "line": 284
9067
+ },
9068
+ "name": "paths",
9069
+ "optional": true,
9070
+ "type": {
9071
+ "collection": {
9072
+ "elementtype": {
9073
+ "primitive": "string"
9074
+ },
9075
+ "kind": "array"
9076
+ }
9077
+ }
9078
+ },
9079
+ {
9080
+ "abstract": true,
9081
+ "docs": {
9082
+ "remarks": "If left unspecified, this will default to the namespace.",
9083
+ "stability": "experimental",
9084
+ "summary": "The prefix for the cache controlling the prefix on S3."
9085
+ },
9086
+ "immutable": true,
9087
+ "locationInModule": {
9088
+ "filename": "deployment-stack-pipeline/pipeline.ts",
9089
+ "line": 276
9090
+ },
9091
+ "name": "prefix",
9092
+ "optional": true,
9093
+ "type": {
9094
+ "primitive": "string"
9095
+ }
9055
9096
  }
9056
9097
  ],
9057
9098
  "symbolId": "deployment-stack-pipeline/pipeline:CacheOptions"
@@ -9066,7 +9107,7 @@
9066
9107
  "kind": "interface",
9067
9108
  "locationInModule": {
9068
9109
  "filename": "deployment-stack-pipeline/pipeline.ts",
9069
- "line": 104
9110
+ "line": 117
9070
9111
  },
9071
9112
  "name": "CodeBuildStepProps",
9072
9113
  "namespace": "deploymentPipeline",
@@ -9080,7 +9121,7 @@
9080
9121
  "immutable": true,
9081
9122
  "locationInModule": {
9082
9123
  "filename": "deployment-stack-pipeline/pipeline.ts",
9083
- "line": 108
9124
+ "line": 121
9084
9125
  },
9085
9126
  "name": "command",
9086
9127
  "type": {
@@ -9101,7 +9142,7 @@
9101
9142
  "immutable": true,
9102
9143
  "locationInModule": {
9103
9144
  "filename": "deployment-stack-pipeline/pipeline.ts",
9104
- "line": 116
9145
+ "line": 129
9105
9146
  },
9106
9147
  "name": "installCommands",
9107
9148
  "optional": true,
@@ -9123,7 +9164,7 @@
9123
9164
  "immutable": true,
9124
9165
  "locationInModule": {
9125
9166
  "filename": "deployment-stack-pipeline/pipeline.ts",
9126
- "line": 112
9167
+ "line": 125
9127
9168
  },
9128
9169
  "name": "partialBuildSpec",
9129
9170
  "optional": true,
@@ -9261,7 +9302,7 @@
9261
9302
  },
9262
9303
  "locationInModule": {
9263
9304
  "filename": "deployment-stack-pipeline/pipeline.ts",
9264
- "line": 270
9305
+ "line": 299
9265
9306
  },
9266
9307
  "parameters": [
9267
9308
  {
@@ -9287,7 +9328,7 @@
9287
9328
  "kind": "class",
9288
9329
  "locationInModule": {
9289
9330
  "filename": "deployment-stack-pipeline/pipeline.ts",
9290
- "line": 264
9331
+ "line": 293
9291
9332
  },
9292
9333
  "name": "DeploymentStackPipeline",
9293
9334
  "namespace": "deploymentPipeline",
@@ -9300,7 +9341,7 @@
9300
9341
  "immutable": true,
9301
9342
  "locationInModule": {
9302
9343
  "filename": "deployment-stack-pipeline/pipeline.ts",
9303
- "line": 268
9344
+ "line": 297
9304
9345
  },
9305
9346
  "name": "pipeline",
9306
9347
  "type": {
@@ -9320,7 +9361,7 @@
9320
9361
  "kind": "interface",
9321
9362
  "locationInModule": {
9322
9363
  "filename": "deployment-stack-pipeline/pipeline.ts",
9323
- "line": 119
9364
+ "line": 132
9324
9365
  },
9325
9366
  "name": "DeploymentStackPipelineProps",
9326
9367
  "namespace": "deploymentPipeline",
@@ -9335,7 +9376,7 @@
9335
9376
  "immutable": true,
9336
9377
  "locationInModule": {
9337
9378
  "filename": "deployment-stack-pipeline/pipeline.ts",
9338
- "line": 165
9379
+ "line": 178
9339
9380
  },
9340
9381
  "name": "cdkSynthCmd",
9341
9382
  "type": {
@@ -9360,7 +9401,7 @@
9360
9401
  "immutable": true,
9361
9402
  "locationInModule": {
9362
9403
  "filename": "deployment-stack-pipeline/pipeline.ts",
9363
- "line": 126
9404
+ "line": 139
9364
9405
  },
9365
9406
  "name": "githubBranch",
9366
9407
  "type": {
@@ -9377,7 +9418,7 @@
9377
9418
  "immutable": true,
9378
9419
  "locationInModule": {
9379
9420
  "filename": "deployment-stack-pipeline/pipeline.ts",
9380
- "line": 130
9421
+ "line": 143
9381
9422
  },
9382
9423
  "name": "githubRepo",
9383
9424
  "type": {
@@ -9393,7 +9434,7 @@
9393
9434
  "immutable": true,
9394
9435
  "locationInModule": {
9395
9436
  "filename": "deployment-stack-pipeline/pipeline.ts",
9396
- "line": 147
9437
+ "line": 160
9397
9438
  },
9398
9439
  "name": "pipelineName",
9399
9440
  "type": {
@@ -9409,7 +9450,7 @@
9409
9450
  "immutable": true,
9410
9451
  "locationInModule": {
9411
9452
  "filename": "deployment-stack-pipeline/pipeline.ts",
9412
- "line": 134
9453
+ "line": 147
9413
9454
  },
9414
9455
  "name": "stack",
9415
9456
  "type": {
@@ -9425,7 +9466,7 @@
9425
9466
  "immutable": true,
9426
9467
  "locationInModule": {
9427
9468
  "filename": "deployment-stack-pipeline/pipeline.ts",
9428
- "line": 143
9469
+ "line": 156
9429
9470
  },
9430
9471
  "name": "stackConfig",
9431
9472
  "type": {
@@ -9442,7 +9483,7 @@
9442
9483
  "immutable": true,
9443
9484
  "locationInModule": {
9444
9485
  "filename": "deployment-stack-pipeline/pipeline.ts",
9445
- "line": 139
9486
+ "line": 152
9446
9487
  },
9447
9488
  "name": "stackName",
9448
9489
  "type": {
@@ -9459,7 +9500,7 @@
9459
9500
  "immutable": true,
9460
9501
  "locationInModule": {
9461
9502
  "filename": "deployment-stack-pipeline/pipeline.ts",
9462
- "line": 185
9503
+ "line": 205
9463
9504
  },
9464
9505
  "name": "unitAppTestConfig",
9465
9506
  "type": {
@@ -9477,7 +9518,7 @@
9477
9518
  "immutable": true,
9478
9519
  "locationInModule": {
9479
9520
  "filename": "deployment-stack-pipeline/pipeline.ts",
9480
- "line": 239
9521
+ "line": 259
9481
9522
  },
9482
9523
  "name": "cacheOptions",
9483
9524
  "optional": true,
@@ -9495,7 +9536,7 @@
9495
9536
  "immutable": true,
9496
9537
  "locationInModule": {
9497
9538
  "filename": "deployment-stack-pipeline/pipeline.ts",
9498
- "line": 171
9539
+ "line": 184
9499
9540
  },
9500
9541
  "name": "cdkOut",
9501
9542
  "optional": true,
@@ -9513,7 +9554,7 @@
9513
9554
  "immutable": true,
9514
9555
  "locationInModule": {
9515
9556
  "filename": "deployment-stack-pipeline/pipeline.ts",
9516
- "line": 231
9557
+ "line": 251
9517
9558
  },
9518
9559
  "name": "driftCheckConfig",
9519
9560
  "optional": true,
@@ -9531,7 +9572,7 @@
9531
9572
  "immutable": true,
9532
9573
  "locationInModule": {
9533
9574
  "filename": "deployment-stack-pipeline/pipeline.ts",
9534
- "line": 202
9575
+ "line": 222
9535
9576
  },
9536
9577
  "name": "enableSlackNotification",
9537
9578
  "optional": true,
@@ -9549,7 +9590,7 @@
9549
9590
  "immutable": true,
9550
9591
  "locationInModule": {
9551
9592
  "filename": "deployment-stack-pipeline/pipeline.ts",
9552
- "line": 161
9593
+ "line": 174
9553
9594
  },
9554
9595
  "name": "excludedFilePaths",
9555
9596
  "optional": true,
@@ -9572,7 +9613,7 @@
9572
9613
  "immutable": true,
9573
9614
  "locationInModule": {
9574
9615
  "filename": "deployment-stack-pipeline/pipeline.ts",
9575
- "line": 154
9616
+ "line": 167
9576
9617
  },
9577
9618
  "name": "includedFilePaths",
9578
9619
  "optional": true,
@@ -9596,7 +9637,7 @@
9596
9637
  "immutable": true,
9597
9638
  "locationInModule": {
9598
9639
  "filename": "deployment-stack-pipeline/pipeline.ts",
9599
- "line": 210
9640
+ "line": 230
9600
9641
  },
9601
9642
  "name": "notificationEvents",
9602
9643
  "optional": true,
@@ -9620,7 +9661,7 @@
9620
9661
  "immutable": true,
9621
9662
  "locationInModule": {
9622
9663
  "filename": "deployment-stack-pipeline/pipeline.ts",
9623
- "line": 218
9664
+ "line": 238
9624
9665
  },
9625
9666
  "name": "reuseExistingArtifactBucket",
9626
9667
  "optional": true,
@@ -9637,7 +9678,7 @@
9637
9678
  "immutable": true,
9638
9679
  "locationInModule": {
9639
9680
  "filename": "deployment-stack-pipeline/pipeline.ts",
9640
- "line": 197
9681
+ "line": 217
9641
9682
  },
9642
9683
  "name": "stageEnv",
9643
9684
  "optional": true,
@@ -9656,7 +9697,7 @@
9656
9697
  "immutable": true,
9657
9698
  "locationInModule": {
9658
9699
  "filename": "deployment-stack-pipeline/pipeline.ts",
9659
- "line": 226
9700
+ "line": 246
9660
9701
  },
9661
9702
  "name": "stripAssemblyAssets",
9662
9703
  "optional": true,
@@ -9667,15 +9708,15 @@
9667
9708
  {
9668
9709
  "abstract": true,
9669
9710
  "docs": {
9670
- "default": "DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC",
9671
- "remarks": "It will passed as the `partialBuildSpec` to the `CodeBuildStep`.",
9711
+ "default": "DEFAULT_PARTIAL_BUILD_SPEC",
9712
+ "remarks": "It will be passed as the\n`partialBuildSpec` to the `CodeBuildStep`.",
9672
9713
  "stability": "experimental",
9673
9714
  "summary": "Additional configuration for the CodeBuild step during the CDK synth phase."
9674
9715
  },
9675
9716
  "immutable": true,
9676
9717
  "locationInModule": {
9677
9718
  "filename": "deployment-stack-pipeline/pipeline.ts",
9678
- "line": 177
9719
+ "line": 191
9679
9720
  },
9680
9721
  "name": "synthBuildSpec",
9681
9722
  "optional": true,
@@ -9688,6 +9729,29 @@
9688
9729
  }
9689
9730
  }
9690
9731
  },
9732
+ {
9733
+ "abstract": true,
9734
+ "docs": {
9735
+ "default": "DEFAULT_INSTALL_COMMANDS",
9736
+ "stability": "experimental",
9737
+ "summary": "The install commands for the synth step."
9738
+ },
9739
+ "immutable": true,
9740
+ "locationInModule": {
9741
+ "filename": "deployment-stack-pipeline/pipeline.ts",
9742
+ "line": 197
9743
+ },
9744
+ "name": "synthInstallCommands",
9745
+ "optional": true,
9746
+ "type": {
9747
+ "collection": {
9748
+ "elementtype": {
9749
+ "primitive": "string"
9750
+ },
9751
+ "kind": "array"
9752
+ }
9753
+ }
9754
+ },
9691
9755
  {
9692
9756
  "abstract": true,
9693
9757
  "docs": {
@@ -9698,7 +9762,7 @@
9698
9762
  "immutable": true,
9699
9763
  "locationInModule": {
9700
9764
  "filename": "deployment-stack-pipeline/pipeline.ts",
9701
- "line": 193
9765
+ "line": 213
9702
9766
  },
9703
9767
  "name": "unitIacTestConfig",
9704
9768
  "optional": true,
@@ -9720,7 +9784,7 @@
9720
9784
  "kind": "interface",
9721
9785
  "locationInModule": {
9722
9786
  "filename": "deployment-stack-pipeline/pipeline.ts",
9723
- "line": 87
9787
+ "line": 100
9724
9788
  },
9725
9789
  "name": "DriftCheckConfig",
9726
9790
  "namespace": "deploymentPipeline",
@@ -9735,7 +9799,7 @@
9735
9799
  "immutable": true,
9736
9800
  "locationInModule": {
9737
9801
  "filename": "deployment-stack-pipeline/pipeline.ts",
9738
- "line": 93
9802
+ "line": 106
9739
9803
  },
9740
9804
  "name": "cdkCommand",
9741
9805
  "type": {
@@ -9752,7 +9816,7 @@
9752
9816
  "immutable": true,
9753
9817
  "locationInModule": {
9754
9818
  "filename": "deployment-stack-pipeline/pipeline.ts",
9755
- "line": 101
9819
+ "line": 114
9756
9820
  },
9757
9821
  "name": "installCommand",
9758
9822
  "optional": true,
@@ -9773,7 +9837,7 @@
9773
9837
  "kind": "interface",
9774
9838
  "locationInModule": {
9775
9839
  "filename": "deployment-stack-pipeline/pipeline.ts",
9776
- "line": 689
9840
+ "line": 718
9777
9841
  },
9778
9842
  "name": "FailOnDriftBuildStepProps",
9779
9843
  "namespace": "deploymentPipeline",
@@ -9788,7 +9852,7 @@
9788
9852
  "immutable": true,
9789
9853
  "locationInModule": {
9790
9854
  "filename": "deployment-stack-pipeline/pipeline.ts",
9791
- "line": 694
9855
+ "line": 723
9792
9856
  },
9793
9857
  "name": "accountEnv",
9794
9858
  "type": {
@@ -9805,7 +9869,7 @@
9805
9869
  "immutable": true,
9806
9870
  "locationInModule": {
9807
9871
  "filename": "deployment-stack-pipeline/pipeline.ts",
9808
- "line": 708
9872
+ "line": 737
9809
9873
  },
9810
9874
  "name": "cdkCommand",
9811
9875
  "type": {
@@ -9822,7 +9886,7 @@
9822
9886
  "immutable": true,
9823
9887
  "locationInModule": {
9824
9888
  "filename": "deployment-stack-pipeline/pipeline.ts",
9825
- "line": 702
9889
+ "line": 731
9826
9890
  },
9827
9891
  "name": "stackId",
9828
9892
  "type": {
@@ -9832,14 +9896,15 @@
9832
9896
  {
9833
9897
  "abstract": true,
9834
9898
  "docs": {
9835
- "remarks": "If your app is in a subdirectory, prefix with \"cd <dir> &&\".\nExample: \"cd dev && pnpm install --frozen-lockfile --ignore-scripts\"\n\nDefault: \"pnpm install --frozen-lockfile --ignore-scripts\"",
9899
+ "default": "DEFAULT_INSTALL_COMMANDS merged with &&.",
9900
+ "remarks": "If your app is in a subdirectory, prefix with \"cd <dir> &&\".\nExample: \"cd dev && pnpm install --frozen-lockfile --ignore-scripts\"",
9836
9901
  "stability": "experimental",
9837
9902
  "summary": "Command to install dependencies before running CDK."
9838
9903
  },
9839
9904
  "immutable": true,
9840
9905
  "locationInModule": {
9841
9906
  "filename": "deployment-stack-pipeline/pipeline.ts",
9842
- "line": 716
9907
+ "line": 745
9843
9908
  },
9844
9909
  "name": "installCommand",
9845
9910
  "optional": true,
@@ -9909,7 +9974,7 @@
9909
9974
  "kind": "interface",
9910
9975
  "locationInModule": {
9911
9976
  "filename": "deployment-stack-pipeline/pipeline.ts",
9912
- "line": 69
9977
+ "line": 82
9913
9978
  },
9914
9979
  "name": "StackConfigProps",
9915
9980
  "namespace": "deploymentPipeline",
@@ -9923,7 +9988,7 @@
9923
9988
  "immutable": true,
9924
9989
  "locationInModule": {
9925
9990
  "filename": "deployment-stack-pipeline/pipeline.ts",
9926
- "line": 73
9991
+ "line": 86
9927
9992
  },
9928
9993
  "name": "beta",
9929
9994
  "type": {
@@ -9944,7 +10009,7 @@
9944
10009
  "immutable": true,
9945
10010
  "locationInModule": {
9946
10011
  "filename": "deployment-stack-pipeline/pipeline.ts",
9947
- "line": 77
10012
+ "line": 90
9948
10013
  },
9949
10014
  "name": "gamma",
9950
10015
  "type": {
@@ -9965,7 +10030,7 @@
9965
10030
  "immutable": true,
9966
10031
  "locationInModule": {
9967
10032
  "filename": "deployment-stack-pipeline/pipeline.ts",
9968
- "line": 81
10033
+ "line": 94
9969
10034
  },
9970
10035
  "name": "prod",
9971
10036
  "type": {
@@ -9990,7 +10055,7 @@
9990
10055
  "kind": "interface",
9991
10056
  "locationInModule": {
9992
10057
  "filename": "deployment-stack-pipeline/pipeline.ts",
9993
- "line": 54
10058
+ "line": 67
9994
10059
  },
9995
10060
  "name": "StageEnvProps",
9996
10061
  "namespace": "deploymentPipeline",
@@ -10004,7 +10069,7 @@
10004
10069
  "immutable": true,
10005
10070
  "locationInModule": {
10006
10071
  "filename": "deployment-stack-pipeline/pipeline.ts",
10007
- "line": 58
10072
+ "line": 71
10008
10073
  },
10009
10074
  "name": "beta",
10010
10075
  "type": {
@@ -10020,7 +10085,7 @@
10020
10085
  "immutable": true,
10021
10086
  "locationInModule": {
10022
10087
  "filename": "deployment-stack-pipeline/pipeline.ts",
10023
- "line": 62
10088
+ "line": 75
10024
10089
  },
10025
10090
  "name": "gamma",
10026
10091
  "type": {
@@ -10036,7 +10101,7 @@
10036
10101
  "immutable": true,
10037
10102
  "locationInModule": {
10038
10103
  "filename": "deployment-stack-pipeline/pipeline.ts",
10039
- "line": 66
10104
+ "line": 79
10040
10105
  },
10041
10106
  "name": "prod",
10042
10107
  "type": {
@@ -11911,6 +11976,6 @@
11911
11976
  "symbolId": "shared-config/slack:SlackAlerts"
11912
11977
  }
11913
11978
  },
11914
- "version": "1.0.7",
11915
- "fingerprint": "3K0vqWlQ0je14SxTocoVLIWtn5vCsIAdZuNEqOBF++I="
11979
+ "version": "1.0.8",
11980
+ "fingerprint": "FbusKS03wBD6YCGgC5/Hmvr+lBor5gfeQqC7JuDFE5g="
11916
11981
  }
@@ -15,7 +15,7 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
15
15
  const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
16
16
  const config_1 = require("./config");
17
17
  class OrcaBusApiGateway extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "1.0.7" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.apigateway.OrcaBusApiGateway", version: "1.0.8" };
19
19
  /**
20
20
  * The AWS region where the API Gateway is deployed.
21
21
  */
@@ -13,7 +13,7 @@ exports.CROSS_DEPLOYMENT_ARTIFACT_BUCKET_NAME = "orcabus-cross-deployment-codepi
13
13
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ALIAS = "orcabus-cross-deployment-codepipeline-artifact";
14
14
  exports.CROSS_DEPLOYMENT_ARTIFACT_KMS_ARN_SSM_PARAMETER_NAME = "/orcabus/deployment-stack-pipeline/artifact-bucket/kms-key-arn";
15
15
  class CrossDeploymentArtifactBucket extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "1.0.7" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.CrossDeploymentArtifactBucket", version: "1.0.8" };
17
17
  /**
18
18
  * The S3 bucket used to store artifacts for cross-deployment pipelines.
19
19
  */
@@ -40,4 +40,4 @@ class CodeBuildCacheBucket extends constructs_1.Construct {
40
40
  }
41
41
  }
42
42
  exports.CodeBuildCacheBucket = CodeBuildCacheBucket;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2FjaGUtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QywrQ0FBcUQ7QUFDckQsNkNBQTRDO0FBRTVDOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyxzQ0FBc0MsQ0FBQztBQVM3RTs7R0FFRztBQUNILE1BQWEsb0JBQ1gsU0FBUSxzQkFBUztJQUdqQjs7T0FFRztJQUNhLFdBQVcsQ0FBVTtJQUVyQyxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNqRCxVQUFVLEVBQUUsOEJBQXNCO1lBQ2xDLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE1BQU07WUFDbkMsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLGVBQU0sQ0FBQyxvQkFBb0IsQ0FDN0MsS0FBSyxFQUNMLGFBQWEsRUFDYjtZQUNFLFVBQVUsRUFBRSw4QkFBc0I7U0FDbkMsQ0FDRixDQUFDO1FBRUYsT0FBTztZQUNMLFdBQVc7U0FDWixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdENELG9EQXNDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBCdWNrZXQsIElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbi8qKlxuICogVGhlIENvZGVCdWlsZCBjYWNoZSBidWNrZXQuXG4gKi9cbmV4cG9ydCBjb25zdCBDT0RFQlVJTERfQ0FDSEVfQlVDS0VUID0gXCJvcmNhYnVzLWNvZGVidWlsZC1jYWNoZS0zODM4NTY3OTE2NjhcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJQ2FjaGVCdWNrZXQge1xuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB1c2VkIHRvIGNhY2hlIENvZGVCdWlsZCBidWlsZHMuXG4gICAqL1xuICByZWFkb25seSBjYWNoZUJ1Y2tldDogSUJ1Y2tldDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgY2FjaGUgYnVja2V0IGZvciB1c2Ugd2l0aCBDb2RlQnVpbGQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlQnVpbGRDYWNoZUJ1Y2tldFxuICBleHRlbmRzIENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElDYWNoZUJ1Y2tldFxue1xuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB1c2VkIHRvIGNhY2hlIENvZGVCdWlsZCBidWlsZHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVCdWNrZXQ6IElCdWNrZXQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmNhY2hlQnVja2V0ID0gbmV3IEJ1Y2tldCh0aGlzLCBcIkNhY2hlQnVja2V0XCIsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IENPREVCVUlMRF9DQUNIRV9CVUNLRVQsXG4gICAgICB2ZXJzaW9uZWQ6IGZhbHNlLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYW4gZXhpc3RpbmcgY2FjaGUgYnVja2V0IHVzaW5nIHJlc291cmNlIGxvb2t1cHMuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gbG9vayB1cCB0aGUgYXJ0aWZhY3QgYnVja2V0LlxuICAgKiBAcmV0dXJucyBJQ2FjaGVCdWNrZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxvb2t1cChzY29wZTogQ29uc3RydWN0KTogSUNhY2hlQnVja2V0IHtcbiAgICBjb25zdCBjYWNoZUJ1Y2tldCA9IEJ1Y2tldC5mcm9tQnVja2V0QXR0cmlidXRlcyhcbiAgICAgIHNjb3BlLFxuICAgICAgXCJDYWNoZUJ1Y2tldFwiLFxuICAgICAge1xuICAgICAgICBidWNrZXROYW1lOiBDT0RFQlVJTERfQ0FDSEVfQlVDS0VULFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNhY2hlQnVja2V0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2FjaGUtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QywrQ0FBcUQ7QUFDckQsNkNBQTRDO0FBRTVDOztHQUVHO0FBQ1UsUUFBQSxzQkFBc0IsR0FBRyxzQ0FBc0MsQ0FBQztBQVM3RTs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7SUFDakQ7O09BRUc7SUFDYSxXQUFXLENBQVU7SUFFckMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBTSxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDakQsVUFBVSxFQUFFLDhCQUFzQjtZQUNsQyxTQUFTLEVBQUUsS0FBSztZQUNoQixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO1lBQ25DLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFnQjtRQUN2QyxNQUFNLFdBQVcsR0FBRyxlQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUNwRSxVQUFVLEVBQUUsOEJBQXNCO1NBQ25DLENBQUMsQ0FBQztRQUVILE9BQU87WUFDTCxXQUFXO1NBQ1osQ0FBQztJQUNKLENBQUM7Q0FDRjtBQS9CRCxvREErQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQnVja2V0LCBJQnVja2V0IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG4vKipcbiAqIFRoZSBDb2RlQnVpbGQgY2FjaGUgYnVja2V0LlxuICovXG5leHBvcnQgY29uc3QgQ09ERUJVSUxEX0NBQ0hFX0JVQ0tFVCA9IFwib3JjYWJ1cy1jb2RlYnVpbGQtY2FjaGUtMzgzODU2NzkxNjY4XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNhY2hlQnVja2V0IHtcbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgdXNlZCB0byBjYWNoZSBDb2RlQnVpbGQgYnVpbGRzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVCdWNrZXQ6IElCdWNrZXQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNhY2hlIGJ1Y2tldCBmb3IgdXNlIHdpdGggQ29kZUJ1aWxkLlxuICovXG5leHBvcnQgY2xhc3MgQ29kZUJ1aWxkQ2FjaGVCdWNrZXQgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ2FjaGVCdWNrZXQge1xuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB1c2VkIHRvIGNhY2hlIENvZGVCdWlsZCBidWlsZHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY2FjaGVCdWNrZXQ6IElCdWNrZXQ7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmNhY2hlQnVja2V0ID0gbmV3IEJ1Y2tldCh0aGlzLCBcIkNhY2hlQnVja2V0XCIsIHtcbiAgICAgIGJ1Y2tldE5hbWU6IENPREVCVUlMRF9DQUNIRV9CVUNLRVQsXG4gICAgICB2ZXJzaW9uZWQ6IGZhbHNlLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYW4gZXhpc3RpbmcgY2FjaGUgYnVja2V0IHVzaW5nIHJlc291cmNlIGxvb2t1cHMuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gbG9vayB1cCB0aGUgYXJ0aWZhY3QgYnVja2V0LlxuICAgKiBAcmV0dXJucyBJQ2FjaGVCdWNrZXRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxvb2t1cChzY29wZTogQ29uc3RydWN0KTogSUNhY2hlQnVja2V0IHtcbiAgICBjb25zdCBjYWNoZUJ1Y2tldCA9IEJ1Y2tldC5mcm9tQnVja2V0QXR0cmlidXRlcyhzY29wZSwgXCJDYWNoZUJ1Y2tldFwiLCB7XG4gICAgICBidWNrZXROYW1lOiBDT0RFQlVJTERfQ0FDSEVfQlVDS0VULFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNhY2hlQnVja2V0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -2,9 +2,9 @@ import { Construct } from "constructs";
2
2
  import { Environment } from "aws-cdk-lib";
3
3
  import { Pipeline, PipelineNotificationEvents } from "aws-cdk-lib/aws-codepipeline";
4
4
  /**
5
- * The default partial build spec for the synth step in the pipeline.
5
+ * The default partial build spec for code build steps in the pipeline.
6
6
  */
7
- export declare const DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC: {
7
+ export declare const DEFAULT_PARTIAL_BUILD_SPEC: {
8
8
  phases: {
9
9
  install: {
10
10
  "runtime-versions": {
@@ -12,7 +12,12 @@ export declare const DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC: {
12
12
  };
13
13
  };
14
14
  };
15
+ version: string;
15
16
  };
17
+ /**
18
+ * The default install commands for CodeBuild steps.
19
+ */
20
+ export declare const DEFAULT_INSTALL_COMMANDS: string[];
16
21
  export interface StageEnvProps {
17
22
  /**
18
23
  * The environment for the beta stage
@@ -128,11 +133,18 @@ export interface DeploymentStackPipelineProps {
128
133
  */
129
134
  readonly cdkOut?: string;
130
135
  /**
131
- * Additional configuration for the CodeBuild step during the CDK synth phase. It will passed as the `partialBuildSpec` to the `CodeBuildStep`.
136
+ * Additional configuration for the CodeBuild step during the CDK synth phase. It will be passed as the
137
+ * `partialBuildSpec` to the `CodeBuildStep`.
132
138
  *
133
- * @default DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC
139
+ * @default DEFAULT_PARTIAL_BUILD_SPEC
134
140
  */
135
141
  readonly synthBuildSpec?: Record<string, any>;
142
+ /**
143
+ * The install commands for the synth step.
144
+ *
145
+ * @default DEFAULT_INSTALL_COMMANDS
146
+ */
147
+ readonly synthInstallCommands?: string[];
136
148
  /**
137
149
  * Configuration for the CodeBuild step that runs unit tests for the main application code.
138
150
  * This step will execute in parallel with {@link unitIacTestConfig} as part of the synth stage dependencies.
@@ -198,9 +210,6 @@ export interface DeploymentStackPipelineProps {
198
210
  * Options for creating an S3 cache to use across build steps. If specified, the bucket under
199
211
  * `CODEBUILD_CACHE_BUCKET` will be used for caching. This bucket is managed by the shared-resources
200
212
  * service.
201
- *
202
- * The partial buildspec must still contain definitions for paths and keys if used.
203
- * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.cache
204
213
  */
205
214
  export interface CacheOptions {
206
215
  /**
@@ -208,6 +217,18 @@ export interface CacheOptions {
208
217
  * all projects so a namespace is required to uniquely identify the cache. Use the project name, e.g. `filemanager`.
209
218
  */
210
219
  readonly namespace: string;
220
+ /**
221
+ * The prefix for the cache controlling the prefix on S3. If left unspecified, this will default to the namespace.
222
+ */
223
+ readonly prefix?: string;
224
+ /**
225
+ * The paths to cache. This will default to the `node_modules` directory if unspecified.
226
+ *
227
+ * Note that if the cache is specified in the buildspec, that config will take precedence. This option is only used
228
+ * as a convenience to specify paths, and will not override the buildspec cache config.
229
+ * @see https://docs.aws.amazon.com/codebuild/latest/userguide/build-spec-ref.html#build-spec.cache
230
+ */
231
+ readonly paths?: string[];
211
232
  }
212
233
  /**
213
234
  * A CDK construct that creates a deployment pipeline across environments for the OrcaBus project.
@@ -247,7 +268,7 @@ export interface FailOnDriftBuildStepProps {
247
268
  * If your app is in a subdirectory, prefix with "cd <dir> &&".
248
269
  * Example: "cd dev && pnpm install --frozen-lockfile --ignore-scripts"
249
270
  *
250
- * Default: "pnpm install --frozen-lockfile --ignore-scripts"
271
+ * @default DEFAULT_INSTALL_COMMANDS merged with &&.
251
272
  */
252
273
  readonly installCommand?: string;
253
274
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DeploymentStackPipeline = exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = void 0;
3
+ exports.DeploymentStackPipeline = exports.DEFAULT_INSTALL_COMMANDS = exports.DEFAULT_PARTIAL_BUILD_SPEC = void 0;
4
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
5
  const constructs_1 = require("constructs");
6
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
@@ -16,9 +16,9 @@ const aws_codepipeline_actions_1 = require("aws-cdk-lib/aws-codepipeline-actions
16
16
  const aws_iam_1 = require("aws-cdk-lib/aws-iam");
17
17
  const cache_bucket_1 = require("./cache-bucket");
18
18
  /**
19
- * The default partial build spec for the synth step in the pipeline.
19
+ * The default partial build spec for code build steps in the pipeline.
20
20
  */
21
- exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
21
+ exports.DEFAULT_PARTIAL_BUILD_SPEC = {
22
22
  phases: {
23
23
  install: {
24
24
  "runtime-versions": {
@@ -26,7 +26,18 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
26
26
  },
27
27
  },
28
28
  },
29
+ version: "0.2",
29
30
  };
31
+ /**
32
+ * The default install commands for CodeBuild steps.
33
+ */
34
+ exports.DEFAULT_INSTALL_COMMANDS = [
35
+ "npm install --global corepack@latest",
36
+ "corepack enable",
37
+ "node -v",
38
+ "corepack --version",
39
+ "pnpm install --frozen-lockfile --ignore-scripts",
40
+ ];
30
41
  /**
31
42
  * A CDK construct that creates a deployment pipeline across environments for the OrcaBus project.
32
43
  *
@@ -34,7 +45,7 @@ exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC = {
34
45
  * before using this construct.
35
46
  */
36
47
  class DeploymentStackPipeline extends constructs_1.Construct {
37
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "1.0.7" };
48
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.deploymentPipeline.DeploymentStackPipeline", version: "1.0.8" };
38
49
  /**
39
50
  * The code pipeline construct that is created.
40
51
  */
@@ -92,25 +103,21 @@ class DeploymentStackPipeline extends constructs_1.Construct {
92
103
  let cacheOptions = undefined;
93
104
  if (props.cacheOptions !== undefined) {
94
105
  cacheBucket = cache_bucket_1.CodeBuildCacheBucket.fromLookup(this).cacheBucket;
95
- cacheOptions = { cacheNamespace: props.cacheOptions.namespace };
106
+ cacheOptions = {
107
+ cacheNamespace: props.cacheOptions.namespace,
108
+ prefix: props.cacheOptions.prefix ?? props.cacheOptions.namespace,
109
+ };
96
110
  }
111
+ const setCachePaths = (buildSpec) => {
112
+ if (buildSpec !== undefined && !("cache" in buildSpec)) {
113
+ buildSpec["cache"] = {
114
+ paths: props.cacheOptions?.paths ?? ["node_modules/**/*"],
115
+ };
116
+ }
117
+ };
97
118
  // Add unit test for IaC at the root of the
98
- const { installCommands: unitIacTestInstall = [
99
- "npm install --global corepack@latest",
100
- "corepack enable",
101
- "pnpm install --frozen-lockfile --ignore-scripts",
102
- ], command: unitIacTestCommand = [
103
- "pnpm test",
104
- ], partialBuildSpec: unitIacPartialBuildSpec = {
105
- phases: {
106
- install: {
107
- "runtime-versions": {
108
- nodejs: "22",
109
- },
110
- },
111
- },
112
- version: "0.2",
113
- }, } = props.unitIacTestConfig || {};
119
+ const { installCommands: unitIacTestInstall = exports.DEFAULT_INSTALL_COMMANDS, command: unitIacTestCommand = ["pnpm test"], partialBuildSpec: unitIacPartialBuildSpec = structuredClone(exports.DEFAULT_PARTIAL_BUILD_SPEC), } = props.unitIacTestConfig || {};
120
+ setCachePaths(unitIacPartialBuildSpec);
114
121
  const unitIacTest = new pipelines_1.CodeBuildStep("UnitIacTest", {
115
122
  installCommands: unitIacTestInstall,
116
123
  commands: unitIacTestCommand,
@@ -131,7 +138,8 @@ class DeploymentStackPipeline extends constructs_1.Construct {
131
138
  cache: cacheBucket ? aws_codebuild_1.Cache.bucket(cacheBucket, cacheOptions) : undefined,
132
139
  });
133
140
  // Adding unit test for the main app
134
- const { command: unitAppTestCommand, installCommands: unitAppTestInstall = undefined, partialBuildSpec: unitAppPartialBuildSpec = undefined, } = props.unitAppTestConfig;
141
+ const { command: unitAppTestCommand, installCommands: unitAppTestInstall = exports.DEFAULT_INSTALL_COMMANDS, partialBuildSpec: unitAppPartialBuildSpec = structuredClone(exports.DEFAULT_PARTIAL_BUILD_SPEC), } = props.unitAppTestConfig;
142
+ setCachePaths(unitAppPartialBuildSpec);
135
143
  const unitAppTest = new pipelines_1.CodeBuildStep("UnitAppTest", {
136
144
  commands: unitAppTestCommand,
137
145
  installCommands: unitAppTestInstall,
@@ -151,14 +159,10 @@ class DeploymentStackPipeline extends constructs_1.Construct {
151
159
  : undefined,
152
160
  cache: cacheBucket ? aws_codebuild_1.Cache.bucket(cacheBucket, cacheOptions) : undefined,
153
161
  });
154
- const { synthBuildSpec = exports.DEFAULT_SYNTH_STEP_PARTIAL_BUILD_SPEC } = props;
162
+ const { synthInstallCommands = exports.DEFAULT_INSTALL_COMMANDS, synthBuildSpec = structuredClone(exports.DEFAULT_PARTIAL_BUILD_SPEC), } = props;
163
+ setCachePaths(synthBuildSpec);
155
164
  const synthStep = new pipelines_1.CodeBuildStep("CdkSynth", {
156
- installCommands: [
157
- "node -v",
158
- "npm install --global corepack@latest",
159
- "corepack --version",
160
- "corepack enable",
161
- ],
165
+ installCommands: synthInstallCommands,
162
166
  commands: props.cdkSynthCmd,
163
167
  input: sourceFile,
164
168
  primaryOutputDirectory: props.cdkOut || "cdk.out",
@@ -218,8 +222,7 @@ class DeploymentStackPipeline extends constructs_1.Construct {
218
222
  const getStackId = (envName) => `${rootStackName}/${constructId}/${envName}/${props.stackName}`;
219
223
  // Drift check config
220
224
  const isDriftCheckStep = !!props.driftCheckConfig;
221
- const cdkInstallCmd = props.driftCheckConfig?.installCommand ??
222
- "pnpm install --frozen-lockfile --ignore-scripts";
225
+ const cdkInstallCmd = props.driftCheckConfig?.installCommand;
223
226
  const cdkRunCmd = props.driftCheckConfig?.cdkCommand ?? ``;
224
227
  const betaEnvName = "OrcaBusBeta";
225
228
  cdkPipeline.addStage(new DeploymentStage(this, betaEnvName, stageEnv.beta, props.stackName, props.stack, props.stackConfig.beta, props.githubRepo, props.githubBranch), {
@@ -338,13 +341,9 @@ class FailOnDriftBuildStep extends pipelines_1.CodeBuildStep {
338
341
  constructor(id, { accountEnv, stackId, cdkCommand, installCommand, }) {
339
342
  const cdkInstall = installCommand
340
343
  ? installCommand
341
- : "pnpm install --frozen-lockfile --ignore-scripts";
344
+ : exports.DEFAULT_INSTALL_COMMANDS.join(" && ");
342
345
  super(id, {
343
346
  commands: [
344
- "node -v",
345
- "npm install --global corepack@latest",
346
- "corepack --version",
347
- "corepack enable",
348
347
  cdkInstall,
349
348
  `LOOKUP_ROLE_ARN="arn:aws:iam::${accountEnv.account}:role/cdk-hnb659fds-lookup-role-${accountEnv.account}-${accountEnv.region}"`,
350
349
  'SESSION_NAME="drift-check"',
@@ -361,8 +360,8 @@ class FailOnDriftBuildStep extends pipelines_1.CodeBuildStep {
361
360
  `arn:aws:iam::${accountEnv.account}:role/cdk-hnb659fds-lookup-role-${accountEnv.account}-${accountEnv.region}`,
362
361
  ],
363
362
  }),
364
- ]
363
+ ],
365
364
  });
366
365
  }
367
366
  }
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFrRTtBQUNsRSw2REFLbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQVErQjtBQUMvQixtRUFNc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBQ2xFLG1GQUc4QztBQUM5QyxpREFBc0Q7QUFDdEQsaURBQXNEO0FBRXREOztHQUVHO0FBQ1UsUUFBQSxxQ0FBcUMsR0FBRztJQUNuRCxNQUFNLEVBQUU7UUFDTixPQUFPLEVBQUU7WUFDUCxrQkFBa0IsRUFBRTtnQkFDbEIsTUFBTSxFQUFFLE1BQU07YUFDZjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBOE1GOzs7OztHQUtHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUzs7SUFDcEQ7O09BRUc7SUFDTSxRQUFRLENBQVc7SUFFNUIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFdBQVcsR0FBRyx5QkFBZSxDQUFDLHVCQUF1QixDQUN6RCxJQUFJLEVBQ0oscUJBQXFCLENBQ3RCLENBQUM7UUFDRixNQUFNLHdCQUF3QixHQUFHLGNBQWMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyw4QkFBa0IsQ0FBQyxVQUFVLENBQzlDLFdBQVcsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUM3QixLQUFLLENBQUMsWUFBWSxFQUNsQjtZQUNFLGFBQWEsRUFBRSxXQUFXO1lBQzFCLFVBQVUsRUFBRSx3QkFBd0I7WUFDcEMsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FDRixDQUFDO1FBRUYsTUFBTSwrQkFBK0IsR0FDbkMsS0FBSyxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRywrQkFBK0I7WUFDcEQsQ0FBQyxDQUFDLCtDQUE2QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjO1lBQy9ELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDM0QsY0FBYyxFQUFFLGNBQWM7WUFDOUIsWUFBWSxFQUFFLCtCQUFZLENBQUMsRUFBRTtZQUM3QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixrQ0FBa0M7WUFDbEMsaUdBQWlHO1lBQ2pHLHdCQUF3QixFQUFFLElBQUk7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkQsTUFBTSxTQUFTLEdBQTZCLEVBQUUsQ0FBQztZQUUvQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUM1QixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUM1QixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQ2xELENBQUM7WUFFRCxnRkFBZ0Y7WUFDaEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBMkIsQ0FBQztZQUNuRSxXQUFXLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO2dCQUMxQztvQkFDRSxnQkFBZ0IsRUFBRTt3QkFDaEIsSUFBSSxFQUFFOzRCQUNKO2dDQUNFLFFBQVEsRUFBRTtvQ0FDUixRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2lDQUMvQjtnQ0FDRCxTQUFTLEVBQUUsU0FBUzs2QkFDckI7eUJBQ0Y7d0JBQ0QsZ0JBQWdCLEVBQUUsd0JBQXdCO3FCQUMzQztvQkFDRCxZQUFZLEVBQUUsMEJBQTBCO2lCQUN6QzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxZQUFZLEdBQW1DLFNBQVMsQ0FBQztRQUM3RCxJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsV0FBVyxHQUFHLG1DQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDaEUsWUFBWSxHQUFHLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUE7UUFDakUsQ0FBQztRQUdELDJDQUEyQztRQUMzQyxNQUFNLEVBQ0osZUFBZSxFQUFFLGtCQUFrQixHQUFHO1lBQ3BDLHNDQUFzQztZQUN0QyxpQkFBaUI7WUFDakIsaURBQWlEO1NBQ2xELEVBQ0QsT0FBTyxFQUFFLGtCQUFrQixHQUFHO1lBQzVCLFdBQVc7U0FDWixFQUNELGdCQUFnQixFQUFFLHVCQUF1QixHQUFHO1lBQzFDLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUU7b0JBQ1Asa0JBQWtCLEVBQUU7d0JBQ2xCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsS0FBSztTQUNmLEdBQ0YsR0FBRyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUFDO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQWEsQ0FBQyxhQUFhLEVBQUU7WUFDbkQsZUFBZSxFQUFFLGtCQUFrQjtZQUNuQyxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLGdCQUFnQixFQUFFO2dCQUNoQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsV0FBVyxFQUFFLDJCQUFXLENBQUMsS0FBSztnQkFDOUIsVUFBVSxFQUFFLGtDQUFrQixDQUFDLDJCQUEyQjtnQkFDMUQsb0JBQW9CLEVBQUU7b0JBQ3BCLFlBQVksRUFBRTt3QkFDWixLQUFLLEVBQUUsMkJBQTJCO3FCQUNuQztpQkFDRjthQUNGO1lBQ0QsZ0JBQWdCLEVBQUUsdUJBQXVCO2dCQUN2QyxDQUFDLENBQUMseUJBQVMsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxTQUFTO1lBQ2IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMscUJBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3pFLENBQUMsQ0FBQztRQUVILG9DQUFvQztRQUNwQyxNQUFNLEVBQ0osT0FBTyxFQUFFLGtCQUFrQixFQUMzQixlQUFlLEVBQUUsa0JBQWtCLEdBQUcsU0FBUyxFQUMvQyxnQkFBZ0IsRUFBRSx1QkFBdUIsR0FBRyxTQUFTLEdBQ3RELEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1FBQzVCLE1BQU0sV0FBVyxHQUFHLElBQUkseUJBQWEsQ0FBQyxhQUFhLEVBQUU7WUFDbkQsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLEtBQUssRUFBRSxVQUFVO1lBQ2pCLGdCQUFnQixFQUFFO2dCQUNoQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsV0FBVyxFQUFFLDJCQUFXLENBQUMsS0FBSztnQkFDOUIsVUFBVSxFQUFFLGtDQUFrQixDQUFDLDJCQUEyQjtnQkFDMUQsb0JBQW9CLEVBQUU7b0JBQ3BCLFlBQVksRUFBRTt3QkFDWixLQUFLLEVBQUUsMkJBQTJCO3FCQUNuQztpQkFDRjthQUNGO1lBQ0QsZ0JBQWdCLEVBQUUsdUJBQXVCO2dCQUN2QyxDQUFDLENBQUMseUJBQVMsQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxTQUFTO1lBQ2IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMscUJBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3pFLENBQUMsQ0FBQztRQUVILE1BQU0sRUFBRSxjQUFjLEdBQUcsNkNBQXFDLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsSUFBSSx5QkFBYSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxlQUFlLEVBQUU7Z0JBQ2YsU0FBUztnQkFDVCxzQ0FBc0M7Z0JBQ3RDLG9CQUFvQjtnQkFDcEIsaUJBQWlCO2FBQ2xCO1lBQ0QsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzNCLEtBQUssRUFBRSxVQUFVO1lBQ2pCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksU0FBUztZQUNqRCxnQkFBZ0IsRUFBRSx5QkFBUyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7WUFDdEQsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMscUJBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3pFLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QyxTQUFTLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFekMsTUFBTSxXQUFXLEdBQUcsSUFBSSx3QkFBWSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUM1RCxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDM0IsS0FBSyxFQUFFLFNBQVM7WUFDaEIsWUFBWSxFQUFFLElBQUk7WUFDbEIsaUJBQWlCLEVBQUU7Z0JBQ2pCLGdCQUFnQixFQUFFO29CQUNoQixXQUFXLEVBQUUsMkJBQVcsQ0FBQyxLQUFLO29CQUM5QixVQUFVLEVBQUUsa0NBQWtCLENBQUMsMkJBQTJCO29CQUMxRCxvQkFBb0IsRUFBRTt3QkFDcEIsWUFBWSxFQUFFOzRCQUNaLEtBQUssRUFBRSwyQkFBMkI7eUJBQ25DO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLGVBQWUsR0FBa0I7WUFDckMsSUFBSSxFQUFFLHlCQUFnQjtZQUN0QixLQUFLLEVBQUUsMEJBQWlCO1lBQ3hCLElBQUksRUFBRSx5QkFBZ0I7U0FDdkIsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLElBQUksZUFBZSxDQUFDO1FBRW5ELDhFQUE4RTtRQUM5RSwyREFBMkQ7UUFDM0QsNkNBQTZDO1FBQzdDLElBQUksdUJBQWtELENBQUM7UUFDdkQsSUFBSSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM5Qix1QkFBdUIsR0FBRyxJQUFJLHlCQUFhLENBQUMseUJBQXlCLEVBQUU7Z0JBQ3JFLEtBQUssRUFBRSxXQUFXLENBQUMsb0JBQW9CO2dCQUN2QyxRQUFRLEVBQUU7b0JBQ1IscURBQXFEO29CQUNyRCxrQ0FBa0M7b0JBQ2xDLGVBQWU7b0JBQ2YsbUJBQW1CO29CQUNuQixJQUFJO29CQUNKLGlCQUFpQjtvQkFDakIsNkJBQTZCO29CQUM3QixJQUFJO29CQUNKLHNDQUFzQztpQkFDdkM7YUFDRixDQUFDLENBQUM7WUFFSCxXQUFXLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFO2dCQUMzQyxHQUFHLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzthQUMvQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsb0RBQW9EO1FBQ3BELE1BQU0sYUFBYSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUMvQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQWUsRUFBRSxFQUFFLENBQ3JDLEdBQUcsYUFBYSxJQUFJLFdBQVcsSUFBSSxPQUFPLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWxFLHFCQUFxQjtRQUNyQixNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7UUFDbEQsTUFBTSxhQUFhLEdBQ2pCLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjO1lBQ3RDLGlEQUFpRCxDQUFDO1FBQ3BELE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDO1FBRTNELE1BQU0sV0FBVyxHQUFHLGFBQWEsQ0FBQztRQUNsQyxXQUFXLENBQUMsUUFBUSxDQUNsQixJQUFJLGVBQWUsQ0FDakIsSUFBSSxFQUNKLFdBQVcsRUFDWCxRQUFRLENBQUMsSUFBSSxFQUNiLEtBQUssQ0FBQyxTQUFTLEVBQ2YsS0FBSyxDQUFDLEtBQUssRUFDWCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFDdEIsS0FBSyxDQUFDLFVBQVUsRUFDaEIsS0FBSyxDQUFDLFlBQVksQ0FDbkIsRUFDRDtZQUNFLEdBQUcsRUFBRSxnQkFBZ0I7Z0JBQ25CLENBQUMsQ0FBQztvQkFDRSxJQUFJLG9CQUFvQixDQUFDLHNCQUFzQixFQUFFO3dCQUMvQyxVQUFVLEVBQUUsUUFBUSxDQUFDLElBQUk7d0JBQ3pCLE9BQU8sRUFBRSxVQUFVLENBQUMsV0FBVyxDQUFDO3dCQUNoQyxVQUFVLEVBQUUsU0FBUzt3QkFDckIsY0FBYyxFQUFFLGFBQWE7cUJBQzlCLENBQUM7aUJBQ0g7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7U0FDZCxDQUNGLENBQUM7UUFFRjs7V0FFRztRQUNILE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQztRQUVwQyxXQUFXLENBQUMsUUFBUSxDQUNsQixJQUFJLGVBQWUsQ0FDakIsSUFBSSxFQUNKLFlBQVksRUFDWixRQUFRLENBQUMsS0FBSyxFQUNkLEtBQUssQ0FBQyxTQUFTLEVBQ2YsS0FBSyxDQUFDLEtBQUssRUFDWCxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssRUFDdkIsS0FBSyxDQUFDLFVBQVUsRUFDaEIsS0FBSyxDQUFDLFlBQVksQ0FDbkIsRUFDRDtZQUNFLEdBQUcsRUFBRSxnQkFBZ0I7Z0JBQ25CLENBQUMsQ0FBQztvQkFDRSxJQUFJLG9CQUFvQixDQUFDLHVCQUF1QixFQUFFO3dCQUNoRCxVQUFVLEVBQUUsUUFBUSxDQUFDLEtBQUs7d0JBQzFCLE9BQU8sRUFBRSxVQUFVLENBQUMsWUFBWSxDQUFDO3dCQUNqQyxVQUFVLEVBQUUsU0FBUzt3QkFDckIsY0FBYyxFQUFFLGFBQWE7cUJBQzlCLENBQUM7aUJBQ0g7Z0JBQ0gsQ0FBQyxDQUFDLFNBQVM7WUFDYixJQUFJLEVBQUU7Z0JBQ0osSUFBSSx3QkFBd0IsQ0FBQyxlQUFlLEVBQUU7b0JBQzVDLFVBQVUsRUFBRSxlQUFlO29CQUMzQixtRkFBbUY7b0JBQ25GLDRFQUE0RTtvQkFDNUUsMkVBQTJFO29CQUMzRSxRQUFRLEVBQUUsQ0FBQztvQkFDWCxxRkFBcUY7b0JBQ3JGLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7aUJBQzlCLENBQUM7YUFDSDtTQUNGLENBQ0YsQ0FBQztRQUVGOztXQUVHO1FBQ0gsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBRWxDLFdBQVcsQ0FBQyxRQUFRLENBQ2xCLElBQUksZUFBZSxDQUNqQixJQUFJLEVBQ0osV0FBVyxFQUNYLFFBQVEsQ0FBQyxJQUFJLEVBQ2IsS0FBSyxDQUFDLFNBQVMsRUFDZixLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQixLQUFLLENBQUMsWUFBWSxDQUNuQixFQUNEO1lBQ0UsR0FBRyxFQUFFLGdCQUFnQjtnQkFDbkIsQ0FBQyxDQUFDO29CQUNFLElBQUksb0JBQW9CLENBQUMsc0JBQXNCLEVBQUU7d0JBQy9DLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSTt3QkFDekIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUM7d0JBQ2hDLFVBQVUsRUFBRSxTQUFTO3dCQUNyQixjQUFjLEVBQUUsYUFBYTtxQkFDOUIsQ0FBQztpQkFDSDtnQkFDSCxDQUFDLENBQUMsU0FBUztTQUNkLENBQ0YsQ0FBQztRQUVGLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUU1QixJQUFJLHVCQUF1QixFQUFFLENBQUM7WUFDNUIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUNoRCx1QkFBdUIsQ0FBQyxPQUFPLENBQ2hDLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsdUJBQXVCLElBQUksSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSx5QkFBeUIsR0FBRyx5QkFBZSxDQUFDLHVCQUF1QixDQUN2RSxJQUFJLEVBQ0osaUNBQWlDLENBQ2xDLENBQUM7WUFDRixNQUFNLE1BQU0sR0FBRyx1Q0FBeUIsQ0FBQyxnQ0FBZ0MsQ0FDdkUsSUFBSSxFQUNKLDJCQUEyQixFQUMzQix5QkFBeUIsQ0FDMUIsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLDJCQUEyQixFQUFFLE1BQU0sRUFBRTtnQkFDMUQsTUFBTSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsSUFBSTtvQkFDbEMsNkNBQTBCLENBQUMseUJBQXlCO2lCQUNyRDtnQkFDRCxVQUFVLEVBQUUsc0NBQVUsQ0FBQyxJQUFJO2dCQUMzQixvQkFBb0IsRUFBRSxXQUFXLEtBQUssQ0FBQyxZQUFZLEVBQUU7YUFDdEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBaFdILDBEQWlXQztBQVlEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx3QkFDSixTQUFRLGdCQUFJO0lBR0sseUJBQXlCLENBQWdDO0lBQzFFLFlBQVksRUFBVSxFQUFFLE9BQXNDO1FBQzVELEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNWLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxPQUFPLENBQUM7SUFDM0MsQ0FBQztJQUVNLGFBQWEsQ0FDbEIsS0FBYSxFQUNiLE9BQTZCO1FBRTdCLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSwrQ0FBb0IsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1FBRTFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLGVBQWdCLFNBQVEsbUJBQUs7SUFDakMsWUFDRSxLQUFnQixFQUNoQixlQUF1QixFQUN2QixHQUFnQixFQUNoQixTQUFpQixFQUNqQixVQUFtRSxFQUNuRSxhQUFrQixFQUNsQixVQUFrQixFQUNsQixZQUFxQjtRQUVyQixLQUFLLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLElBQUksTUFBTSxHQUFHLDhCQUE4QixVQUFVLEVBQUUsQ0FBQztRQUN4RCxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksWUFBWSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzFELE1BQU0sR0FBRyxHQUFHLE1BQU0sU0FBUyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUM5QixHQUFHLEVBQUUsR0FBRztZQUNSLElBQUksRUFBRTtnQkFDSixtQkFBbUIsRUFBRSxTQUFTO2dCQUM5QixtQkFBbUIsRUFBRSxLQUFLO2dCQUMxQixtQkFBbUIsRUFBRSxTQUFTO2dCQUM5QixrQkFBa0IsRUFBRSxNQUFNO2FBQzNCO1lBQ0QsR0FBRyxhQUFhO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWdDRCxNQUFNLG9CQUFxQixTQUFRLHlCQUFhO0lBQzlDLFlBQ0UsRUFBVSxFQUNWLEVBQ0UsVUFBVSxFQUNWLE9BQU8sRUFDUCxVQUFVLEVBQ1YsY0FBYyxHQUNZO1FBRTVCLE1BQU0sVUFBVSxHQUFHLGNBQWM7WUFDL0IsQ0FBQyxDQUFDLGNBQWM7WUFDaEIsQ0FBQyxDQUFDLGlEQUFpRCxDQUFDO1FBRXRELEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUU7Z0JBQ1IsU0FBUztnQkFDVCxzQ0FBc0M7Z0JBQ3RDLG9CQUFvQjtnQkFDcEIsaUJBQWlCO2dCQUNqQixVQUFVO2dCQUVWLGlDQUFpQyxVQUFVLENBQUMsT0FBTyxtQ0FBbUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHO2dCQUNoSSw0QkFBNEI7Z0JBQzVCLG1RQUFtUTtnQkFDblEsa0VBQWtFO2dCQUNsRSw4QkFBOEIsVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDbEQsNkJBQTZCO2dCQUU3QixNQUFNLFVBQVUsbUJBQW1CLE9BQU8sdUJBQXVCLE9BQU8sbUNBQW1DLFVBQVUsV0FBVyxPQUFPLCtFQUErRTthQUN2TjtZQUNELG9CQUFvQixFQUFFO2dCQUNwQixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDO29CQUMzQixTQUFTLEVBQUU7d0JBQ1QsZ0JBQWdCLFVBQVUsQ0FBQyxPQUFPLG1DQUFtQyxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUU7cUJBQy9HO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiwgRW52aXJvbm1lbnQsIFN0YWNrLCBTdGFnZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQnVja2V0Q2FjaGVPcHRpb25zLFxuICBCdWlsZFNwZWMsIENhY2hlLFxuICBDb21wdXRlVHlwZSxcbiAgTGludXhBcm1CdWlsZEltYWdlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZFwiO1xuaW1wb3J0IHsgU3RyaW5nUGFyYW1ldGVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7XG4gIENvZGVCdWlsZFN0ZXAsXG4gIENvZGVQaXBlbGluZSxcbiAgQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeVJlc3VsdCxcbiAgQ29kZVBpcGVsaW5lU291cmNlLFxuICBJQ29kZVBpcGVsaW5lQWN0aW9uRmFjdG9yeSxcbiAgUHJvZHVjZUFjdGlvbk9wdGlvbnMsXG4gIFN0ZXAsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9waXBlbGluZXNcIjtcbmltcG9ydCB7XG4gIFBpcGVsaW5lLFxuICBDZm5QaXBlbGluZSxcbiAgUGlwZWxpbmVUeXBlLFxuICBQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cyxcbiAgSVN0YWdlLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZVwiO1xuaW1wb3J0IHtcbiAgQkVUQV9FTlZJUk9OTUVOVCxcbiAgR0FNTUFfRU5WSVJPTk1FTlQsXG4gIFBST0RfRU5WSVJPTk1FTlQsXG59IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2hhdGJvdFwiO1xuaW1wb3J0IHsgRGV0YWlsVHlwZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXN0YXJub3RpZmljYXRpb25zXCI7XG5pbXBvcnQgeyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldCB9IGZyb20gXCIuL2FydGlmYWN0LWJ1Y2tldFwiO1xuaW1wb3J0IHtcbiAgTWFudWFsQXBwcm92YWxBY3Rpb24sXG4gIE1hbnVhbEFwcHJvdmFsQWN0aW9uUHJvcHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lLWFjdGlvbnNcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQgeyBDb2RlQnVpbGRDYWNoZUJ1Y2tldCB9IGZyb20gXCIuL2NhY2hlLWJ1Y2tldFwiO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHBhcnRpYWwgYnVpbGQgc3BlYyBmb3IgdGhlIHN5bnRoIHN0ZXAgaW4gdGhlIHBpcGVsaW5lLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9TWU5USF9TVEVQX1BBUlRJQUxfQlVJTERfU1BFQyA9IHtcbiAgcGhhc2VzOiB7XG4gICAgaW5zdGFsbDoge1xuICAgICAgXCJydW50aW1lLXZlcnNpb25zXCI6IHtcbiAgICAgICAgbm9kZWpzOiBcIjIyLnhcIixcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VFbnZQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBiZXRhIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBiZXRhOiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGdhbW1hIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBnYW1tYTogRW52aXJvbm1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBwcm9kIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBwcm9kOiBFbnZpcm9ubWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0NvbmZpZ1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYmV0YSAoZGV2KSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgYmV0YTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2FtbWEgKHN0Zykgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGdhbW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwcm9kIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBwcm9kOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHByZS1kZXBsb3ltZW50IGRyaWZ0IGRldGVjdGlvbiBjaGVja3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHJpZnRDaGVja0NvbmZpZyB7XG4gIC8qKlxuICAgKiBDREsgQ0xJIGVudHJ5cG9pbnQgdXNlZCB0byBydW4gdGhlIGRyaWZ0IGNvbW1hbmQuXG4gICAqIEV4YW1wbGVzOiBcInBucG0gY2RrXCIsIFwicG5wbSBjZGstc3RhdGVmdWxcIiwgXCJwbnBtIGNkay1zdGF0ZWxlc3NcIi5cbiAgICogTXVzdCBzdXBwb3J0OiBcImRyaWZ0IDxzdGFja0lkPlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrQ29tbWFuZDogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbWFuZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcyBiZWZvcmUgcnVubmluZyBDREsuXG4gICAqIElmIHlvdXIgYXBwIGlzIGluIGEgc3ViZGlyZWN0b3J5LCBwcmVmaXggd2l0aCBcImNkIDxkaXI+ICYmXCIuXG4gICAqIEV4YW1wbGU6IFwiY2QgZGV2ICYmIHBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCJcbiAgICpcbiAgICogRGVmYXVsdDogXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsQ29tbWFuZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGRTdGVwUHJvcHMge1xuICAvKipcbiAgICogdGhlIG1haW4gY29tbWFuZCBmb3IgdGhlIGJ1aWxkIHN0ZXAgdG8gcnVuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFBhcnRpYWwgYnVpbGRzcGVjIGZvciB0aGlzIENvZGVCdWlsZFN0ZXBcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpYWxCdWlsZFNwZWM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIGluc3RhbGwgY29tbWFuZHMgdG8gcnVuIGJlZm9yZSB0aGUgbWFpbiBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbENvbW1hbmRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95bWVudFN0YWNrUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIGJyYW5jaCBuYW1lIHRoZSBwaXBlbGluZSB3aWxsIGxpc3RlbiB0by5cbiAgICogQXZvaWQgdXNpbmcgYnJhbmNoIG5hbWVzIHRoYXQgY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgc3VjaCBhcyBwYXJlbnRoZXNlcy5cbiAgICogQWxsb3dlZCBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlOiBcIisgLSA9IC4gXyA6IC8gQFwiLlxuICAgKiBUaGlzIHJlc3RyaWN0aW9uIGlzIGR1ZSB0byBBV1MgcmVzb3VyY2UgdGFnZ2luZyByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJCcmFuY2g6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IG5hbWUgdGhhdCBleGlzdCBpbiB0aGUgJ09yY2FCdXMnIGdpdGh1YiBvcmdhbmlzYXRpb24uIGUuZy4gYGEtbWljcm8tc2VydmljZS1yZXBvYFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViUmVwbzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIHdoaWNoIHRoZSBwaXBlbGluZSB3aWxsIGJlIGRlcGxveWluZyB0byBpdHMgcmVzcGVjdGl2ZSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBzdGFjazogYW55O1xuICAvKipcbiAgICogVGhlIHN0YWNrIG5hbWUgKGluIGNsb3VkZm9ybWF0aW9uKSBmb3IgdGhlIHN0YWNrIGRlZmluZWQgaW4gYHN0YWNrYC4gVGhlIHN0YWNrIG5hbWUgd2lsbCBwcmVwZW5kIHdpdGggdGhlIHN0YWdlXG4gICAqIG5hbWUgZS5nLiBgT3JjYUJ1c0JldGEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c0dhbW1hLTxzdGFja05hbWU+YCwgYE9yY2FCdXNQcm9kLTxzdGFja05hbWU+YFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgY29uZmlndXJhdGlvbi9jb25zdGFudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgc3RhY2sgcHJvcHMuXG4gICAqL1xuICByZWFkb25seSBzdGFja0NvbmZpZzogU3RhY2tDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFRoZSBwaXBlbGluZSBuYW1lIGluIHRoZSBiYXN0aW9uIGFjY291bnQuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBJTkNMVURFRCBhcyBjcml0ZXJpYSB0aGF0IHN0YXJ0cyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBwYXR0ZXJucyBvZiBHaXQgcmVwb3NpdG9yeSBmaWxlIHBhdGhzIHRoYXQsIHdoZW4gYSBjb21taXQgaXMgcHVzaGVkLCBhcmUgdG8gYmUgRVhDTFVERUQgZnJvbSBzdGFydGluZyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBydW4gdG8gc3ludGggdGhlIGNkayBzdGFjayB3aGljaCBhbHNvIGluc3RhbGxpbmcgdGhlIGNkayBkZXBlbmRlbmNpZXMuIGUuZy4gW1wicG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlXCIsIFwicG5wbSBjZGsgc3ludGhcIl1cbiAgICovXG4gIHJlYWRvbmx5IGNka1N5bnRoQ21kOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgY2RrIG91dHB1dCB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrT3V0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgZHVyaW5nIHRoZSBDREsgc3ludGggcGhhc2UuIEl0IHdpbGwgcGFzc2VkIGFzIHRoZSBgcGFydGlhbEJ1aWxkU3BlY2AgdG8gdGhlIGBDb2RlQnVpbGRTdGVwYC5cbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVF9TWU5USF9TVEVQX1BBUlRJQUxfQlVJTERfU1BFQ1xuICAgKi9cbiAgcmVhZG9ubHkgc3ludGhCdWlsZFNwZWM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBzdGVwIHRoYXQgcnVucyB1bml0IHRlc3RzIGZvciB0aGUgbWFpbiBhcHBsaWNhdGlvbiBjb2RlLlxuICAgKiBUaGlzIHN0ZXAgd2lsbCBleGVjdXRlIGluIHBhcmFsbGVsIHdpdGgge0BsaW5rIHVuaXRJYWNUZXN0Q29uZmlnfSBhcyBwYXJ0IG9mIHRoZSBzeW50aCBzdGFnZSBkZXBlbmRlbmNpZXMuXG4gICAqIEJvdGggbXVzdCBzdWNjZWVkIGJlZm9yZSB0aGUgc3ludGggc3RlcCBydW5zLlxuICAgKlxuICAgKiBlbnN1cmUgeW91ciBjb21tYW5kIGluY2x1ZGVzICdjZCcgdG8gdGhlIG1haW4gYXBwIGRpcmVjdG9yeSwgYXMgdGhlIGJ1aWxkIGNvbnRleHQgc3RhcnRzIGZyb20gdGhlIHJvb3QuXG4gICAqL1xuICByZWFkb25seSB1bml0QXBwVGVzdENvbmZpZzogQ29kZUJ1aWxkU3RlcFByb3BzO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBzdGVwIHRoYXQgcnVucyB1bml0IHRlc3RzIGZvciBJbmZyYXN0cnVjdHVyZS1hcy1Db2RlIChJYUMpIGF0IHRoZSByZXBvc2l0b3J5IHJvb3QuXG4gICAqIFRoaXMgc3RlcCB3aWxsIGV4ZWN1dGUgaW4gcGFyYWxsZWwgd2l0aCB7QGxpbmsgdW5pdEFwcFRlc3RDb25maWd9IGFzIHBhcnQgb2YgdGhlIHN5bnRoIHN0YWdlIGRlcGVuZGVuY2llcy5cbiAgICogQm90aCBtdXN0IHN1Y2NlZWQgYmVmb3JlIHRoZSBzeW50aCBzdGVwIHJ1bnMuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGNvbW1hbmQgd2lsbCBiZSBmcm9tIHRoZSByb290IG9mIHRoZSByZXBvOiBbXCJucG0gaW5zdGFsbCAtLWdsb2JhbCBjb3JlcGFja0BsYXRlc3RcIiwgXCJjb3JlcGFjayBlbmFibGVcIiwgXCJtYWtlIGluc3RhbGxcIiwgXCJtYWtlIHRlc3RcIl1cbiAgICovXG4gIHJlYWRvbmx5IHVuaXRJYWNUZXN0Q29uZmlnPzogQ29kZUJ1aWxkU3RlcFByb3BzO1xuICAvKipcbiAgICogVGhlIHN0YWdlIGVudmlyb25tZW50IGZvciB0aGUgZGVwbG95bWVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VFbnY/OiBTdGFnZUVudlByb3BzO1xuICAvKipcbiAgICogRW5hYmxlIG5vdGlmaWNhdGlvbiB0byB0aGUgJ2FsZXJ0cy1idWlsZCcgc2xhY2sgY2hhbm5lbC5cbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU2xhY2tOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5vdGlmaWNhdGlvbiBldmVudHMgdGhhdCB3aWxsIHRyaWdnZXIgYSBTbGFjayBjaGFubmVsIG5vdGlmaWNhdGlvbi5cbiAgICogT25seSBhcHBsaWVzIGlmIGBlbmFibGVTbGFja05vdGlmaWNhdGlvbmAgaXMgc2V0IHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVEXSDigJNcbiAgICogICBPbmx5IGZhaWxlZCBwaXBlbGluZSBleGVjdXRpb25zIHdpbGwgdHJpZ2dlciBhIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkV2ZW50cz86IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV1c2UgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBmb3IgY3Jvc3MtZGVwbG95bWVudCBwaXBlbGluZXMuXG4gICAqIElmIHNldCB0byB0cnVlLCBpdCB3aWxsIGxvb2sgdXAgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBpbiB0aGUgVE9PTENIQUlOIGFjY291bnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhc3NldHMgZnJvbSB0aGUgQ0RLIGFzc2VtYmx5IHByZS1kZXBsb3ltZW50IHRvIHByZXZlbnQgaGl0dGluZyBDb2RlUGlwZWxpbmUncyAyNTYgTUIgYXJ0aWZhY3Qgc2l6ZSBsaW1pdC5cbiAgICogVXNlZnVsIHdoZW4gQ0RLIGFzc2V0cyAoTGFtYmRhIGNvZGUsIERvY2tlciBpbWFnZXMsIGV0Yy4pIGFyZSBsYXJnZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk5MTdcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwQXNzZW1ibHlBc3NldHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZHJpZnQgZGV0ZWN0aW9uIGNoZWNrcyBiZWZvcmUgZGVwbG95bWVudC5cbiAgICogSWYgc3BlY2lmaWVkLCB0aGUgcGlwZWxpbmUgd2lsbCBjaGVjayBmb3IgQ2xvdWRGb3JtYXRpb24gZHJpZnQgYW5kIGZhaWwgaWYgZGV0ZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSBkcmlmdENoZWNrQ29uZmlnPzogRHJpZnRDaGVja0NvbmZpZztcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgYGNhY2hlYCBvcHRpb25zIGZvciBlYWNoIGBDb2RlQnVpbGRTdGVwYC4gVGhpcyB3aWxsIGFsbG93IENvZGVCdWlsZCB0byB1c2VcbiAgICogUzMgY2FjaGluZyB3aXRoIHRoZSBgQ09ERUJVSUxEX0NBQ0hFX0JVQ0tFVGAgYnVja2V0LlxuICAgKlxuICAgKiBUaGUgcGFydGlhbCBidWlsZHNwZWMgbXVzdCBzdGlsbCBjb250YWluIGRlZmluaXRpb25zIGZvciBjYWNoZSBwYXRocyBhbmQga2V5cyBpZiB1c2VkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb2RlYnVpbGQvbGF0ZXN0L3VzZXJndWlkZS9idWlsZC1zcGVjLXJlZi5odG1sI2J1aWxkLXNwZWMuY2FjaGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlT3B0aW9ucz86IENhY2hlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBTMyBjYWNoZSB0byB1c2UgYWNyb3NzIGJ1aWxkIHN0ZXBzLiBJZiBzcGVjaWZpZWQsIHRoZSBidWNrZXQgdW5kZXJcbiAqIGBDT0RFQlVJTERfQ0FDSEVfQlVDS0VUYCB3aWxsIGJlIHVzZWQgZm9yIGNhY2hpbmcuIFRoaXMgYnVja2V0IGlzIG1hbmFnZWQgYnkgdGhlIHNoYXJlZC1yZXNvdXJjZXNcbiAqIHNlcnZpY2UuXG4gKlxuICogVGhlIHBhcnRpYWwgYnVpbGRzcGVjIG11c3Qgc3RpbGwgY29udGFpbiBkZWZpbml0aW9ucyBmb3IgcGF0aHMgYW5kIGtleXMgaWYgdXNlZC5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NvZGVidWlsZC9sYXRlc3QvdXNlcmd1aWRlL2J1aWxkLXNwZWMtcmVmLmh0bWwjYnVpbGQtc3BlYy5jYWNoZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBuYW1lc3BhY2UgZm9yIHRoZSBjYWNoZS4gVGhpcyBvcHRpb24gaXMgcmVxdWlyZWQgYmVjYXVzZSB0aGUgY2FjaGUgYnVja2V0IGlzIHNoYXJlZCBhY3Jvc3NcbiAgICogYWxsIHByb2plY3RzIHNvIGEgbmFtZXNwYWNlIGlzIHJlcXVpcmVkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoZSBjYWNoZS4gVXNlIHRoZSBwcm9qZWN0IG5hbWUsIGUuZy4gYGZpbGVtYW5hZ2VyYC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVzcGFjZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBkZXBsb3ltZW50IHBpcGVsaW5lIGFjcm9zcyBlbnZpcm9ubWVudHMgZm9yIHRoZSBPcmNhQnVzIHByb2plY3QuXG4gKlxuICogUHJlcmVxdWlzaXRlOiBFbnN1cmUgdGhhdCB0aGUgXCJDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldFwiIHN0YWNrIGlzIGRlcGxveWVkIGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudFxuICogYmVmb3JlIHVzaW5nIHRoaXMgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudFN0YWNrUGlwZWxpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGNvZGUgcGlwZWxpbmUgY29uc3RydWN0IHRoYXQgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IERlcGxveW1lbnRTdGFja1BpcGVsaW5lUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb2RlU3RhckFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBcImNvZGVzdGFyX2dpdGh1Yl9hcm5cIixcbiAgICApO1xuICAgIGNvbnN0IGNvZGVTdGFyU291cmNlQWN0aW9uTmFtZSA9IFwicGlwZWxpbmUtc3JjXCI7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IENvZGVQaXBlbGluZVNvdXJjZS5jb25uZWN0aW9uKFxuICAgICAgYE9yY2FCdXMvJHtwcm9wcy5naXRodWJSZXBvfWAsXG4gICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3Rpb25Bcm46IGNvZGVTdGFyQXJuLFxuICAgICAgICBhY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgIHRyaWdnZXJPblB1c2g6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBpc1JldXNpbmdFeGlzdGluZ0FydGlmYWN0QnVja2V0ID1cbiAgICAgIHByb3BzLnJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldCA/PyB0cnVlO1xuICAgIGNvbnN0IGFydGlmYWN0QnVja2V0ID0gaXNSZXVzaW5nRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldFxuICAgICAgPyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldC5mcm9tTG9va3VwKHRoaXMpLmFydGlmYWN0QnVja2V0XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgUGlwZWxpbmUodGhpcywgXCJEZXBsb3ltZW50Q29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiBhcnRpZmFjdEJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBjcm9zc0FjY291bnRLZXlzOiB0cnVlLFxuICAgICAgLy8gZW5hYmxlIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZVxuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzU3MDE3NzYvdXBkYXRlcGlwZWxpbmUtc3RhZ2UtaW4tY2RrLXBpcGVsaW5lLWlzLWNhbmNlbGxlZFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzIHx8IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG4gICAgICBpZiAocHJvcHMuaW5jbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgICAgZmlsZVBhdGhzW1wiSW5jbHVkZXNcIl0gPSBwcm9wcy5pbmNsdWRlZEZpbGVQYXRocztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5leGNsdWRlZEZpbGVQYXRocykge1xuICAgICAgICBmaWxlUGF0aHNbXCJFeGNsdWRlc1wiXSA9IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgZXZlbnQgZmlsdGVyIHRvIG9ubHkgdHJpZ2dlciBpZiB0aGUgcHVzaCBldmVudCBpcyBmcm9tIGBkZXBsb3lgIGRpcmVjdG9yeVxuICAgICAgY29uc3QgY2ZuUGlwZWxpbmUgPSB0aGlzLnBpcGVsaW5lLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblBpcGVsaW5lO1xuICAgICAgY2ZuUGlwZWxpbmUuYWRkUHJvcGVydHlPdmVycmlkZShcIlRyaWdnZXJzXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIEdpdENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIFB1c2g6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEJyYW5jaGVzOiB7XG4gICAgICAgICAgICAgICAgICBJbmNsdWRlczogW3Byb3BzLmdpdGh1YkJyYW5jaF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGaWxlUGF0aHM6IGZpbGVQYXRocyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBTb3VyY2VBY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBQcm92aWRlclR5cGU6IFwiQ29kZVN0YXJTb3VyY2VDb25uZWN0aW9uXCIsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGVCdWNrZXQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGNhY2hlT3B0aW9uczogQnVja2V0Q2FjaGVPcHRpb25zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5jYWNoZU9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FjaGVCdWNrZXQgPSBDb2RlQnVpbGRDYWNoZUJ1Y2tldC5mcm9tTG9va3VwKHRoaXMpLmNhY2hlQnVja2V0O1xuICAgICAgY2FjaGVPcHRpb25zID0geyBjYWNoZU5hbWVzcGFjZTogcHJvcHMuY2FjaGVPcHRpb25zLm5hbWVzcGFjZSB9XG4gICAgfVxuXG5cbiAgICAvLyBBZGQgdW5pdCB0ZXN0IGZvciBJYUMgYXQgdGhlIHJvb3Qgb2YgdGhlXG4gICAgY29uc3Qge1xuICAgICAgaW5zdGFsbENvbW1hbmRzOiB1bml0SWFjVGVzdEluc3RhbGwgPSBbXG4gICAgICAgIFwibnBtIGluc3RhbGwgLS1nbG9iYWwgY29yZXBhY2tAbGF0ZXN0XCIsXG4gICAgICAgIFwiY29yZXBhY2sgZW5hYmxlXCIsXG4gICAgICAgIFwicG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0taWdub3JlLXNjcmlwdHNcIixcbiAgICAgIF0sXG4gICAgICBjb21tYW5kOiB1bml0SWFjVGVzdENvbW1hbmQgPSBbXG4gICAgICAgIFwicG5wbSB0ZXN0XCIsXG4gICAgICBdLFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogdW5pdElhY1BhcnRpYWxCdWlsZFNwZWMgPSB7XG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIGluc3RhbGw6IHtcbiAgICAgICAgICAgIFwicnVudGltZS12ZXJzaW9uc1wiOiB7XG4gICAgICAgICAgICAgIG5vZGVqczogXCIyMlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB2ZXJzaW9uOiBcIjAuMlwiLFxuICAgICAgfSxcbiAgICB9ID0gcHJvcHMudW5pdElhY1Rlc3RDb25maWcgfHwge307XG4gICAgY29uc3QgdW5pdElhY1Rlc3QgPSBuZXcgQ29kZUJ1aWxkU3RlcChcIlVuaXRJYWNUZXN0XCIsIHtcbiAgICAgIGluc3RhbGxDb21tYW5kczogdW5pdElhY1Rlc3RJbnN0YWxsLFxuICAgICAgY29tbWFuZHM6IHVuaXRJYWNUZXN0Q29tbWFuZCxcbiAgICAgIGlucHV0OiBzb3VyY2VGaWxlLFxuICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICBwcml2aWxlZ2VkOiB0cnVlLFxuICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgICAgTk9ERV9PUFRJT05TOiB7XG4gICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiB1bml0SWFjUGFydGlhbEJ1aWxkU3BlY1xuICAgICAgICA/IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHVuaXRJYWNQYXJ0aWFsQnVpbGRTcGVjKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGNhY2hlOiBjYWNoZUJ1Y2tldCA/IENhY2hlLmJ1Y2tldChjYWNoZUJ1Y2tldCwgY2FjaGVPcHRpb25zKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIC8vIEFkZGluZyB1bml0IHRlc3QgZm9yIHRoZSBtYWluIGFwcFxuICAgIGNvbnN0IHtcbiAgICAgIGNvbW1hbmQ6IHVuaXRBcHBUZXN0Q29tbWFuZCxcbiAgICAgIGluc3RhbGxDb21tYW5kczogdW5pdEFwcFRlc3RJbnN0YWxsID0gdW5kZWZpbmVkLFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogdW5pdEFwcFBhcnRpYWxCdWlsZFNwZWMgPSB1bmRlZmluZWQsXG4gICAgfSA9IHByb3BzLnVuaXRBcHBUZXN0Q29uZmlnO1xuICAgIGNvbnN0IHVuaXRBcHBUZXN0ID0gbmV3IENvZGVCdWlsZFN0ZXAoXCJVbml0QXBwVGVzdFwiLCB7XG4gICAgICBjb21tYW5kczogdW5pdEFwcFRlc3RDb21tYW5kLFxuICAgICAgaW5zdGFsbENvbW1hbmRzOiB1bml0QXBwVGVzdEluc3RhbGwsXG4gICAgICBpbnB1dDogc291cmNlRmlsZSxcbiAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgcHJpdmlsZWdlZDogdHJ1ZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICBidWlsZEltYWdlOiBMaW51eEFybUJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzJfU1RBTkRBUkRfM18wLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgIE5PREVfT1BUSU9OUzoge1xuICAgICAgICAgICAgdmFsdWU6IFwiLS1tYXgtb2xkLXNwYWNlLXNpemU9ODE5MlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogdW5pdEFwcFBhcnRpYWxCdWlsZFNwZWNcbiAgICAgICAgPyBCdWlsZFNwZWMuZnJvbU9iamVjdCh1bml0QXBwUGFydGlhbEJ1aWxkU3BlYylcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBjYWNoZTogY2FjaGVCdWNrZXQgPyBDYWNoZS5idWNrZXQoY2FjaGVCdWNrZXQsIGNhY2hlT3B0aW9ucykgOiB1bmRlZmluZWQsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHN5bnRoQnVpbGRTcGVjID0gREVGQVVMVF9TWU5USF9TVEVQX1BBUlRJQUxfQlVJTERfU1BFQyB9ID0gcHJvcHM7XG4gICAgY29uc3Qgc3ludGhTdGVwID0gbmV3IENvZGVCdWlsZFN0ZXAoXCJDZGtTeW50aFwiLCB7XG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IFtcbiAgICAgICAgXCJub2RlIC12XCIsXG4gICAgICAgIFwibnBtIGluc3RhbGwgLS1nbG9iYWwgY29yZXBhY2tAbGF0ZXN0XCIsXG4gICAgICAgIFwiY29yZXBhY2sgLS12ZXJzaW9uXCIsXG4gICAgICAgIFwiY29yZXBhY2sgZW5hYmxlXCIsXG4gICAgICBdLFxuICAgICAgY29tbWFuZHM6IHByb3BzLmNka1N5bnRoQ21kLFxuICAgICAgaW5wdXQ6IHNvdXJjZUZpbGUsXG4gICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwcm9wcy5jZGtPdXQgfHwgXCJjZGsub3V0XCIsXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdChzeW50aEJ1aWxkU3BlYyksXG4gICAgICBjYWNoZTogY2FjaGVCdWNrZXQgPyBDYWNoZS5idWNrZXQoY2FjaGVCdWNrZXQsIGNhY2hlT3B0aW9ucykgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgc3ludGhTdGVwLmFkZFN0ZXBEZXBlbmRlbmN5KHVuaXRJYWNUZXN0KTtcbiAgICBzeW50aFN0ZXAuYWRkU3RlcERlcGVuZGVuY3kodW5pdEFwcFRlc3QpO1xuXG4gICAgY29uc3QgY2RrUGlwZWxpbmUgPSBuZXcgQ29kZVBpcGVsaW5lKHRoaXMsIFwiQ0RLQ29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgIHN5bnRoOiBzeW50aFN0ZXAsXG4gICAgICBzZWxmTXV0YXRpb246IHRydWUsXG4gICAgICBjb2RlQnVpbGREZWZhdWx0czoge1xuICAgICAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgICAgIE5PREVfT1BUSU9OUzoge1xuICAgICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVmYXVsdFN0YWdlRW52OiBTdGFnZUVudlByb3BzID0ge1xuICAgICAgYmV0YTogQkVUQV9FTlZJUk9OTUVOVCxcbiAgICAgIGdhbW1hOiBHQU1NQV9FTlZJUk9OTUVOVCxcbiAgICAgIHByb2Q6IFBST0RfRU5WSVJPTk1FTlQsXG4gICAgfTtcbiAgICBjb25zdCBzdGFnZUVudiA9IHByb3BzLnN0YWdlRW52IHx8IGRlZmF1bHRTdGFnZUVudjtcblxuICAgIC8vIEFmdGVyIGFzc2V0cyBhcmUgcHVibGlzaGVkLCB0aGV5IGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIGFzc2VtYmx5IGRpcmVjdG9yeVxuICAgIC8vIHRvIGhlbHAgcHJldmVudCBoaXR0aW5nIHRoZSBDb2RlUGlwZWxpbmUgYXJ0aWZhY3QgbGltaXQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy85OTE3XG4gICAgbGV0IHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5OiBDb2RlQnVpbGRTdGVwIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5zdHJpcEFzc2VtYmx5QXNzZXRzKSB7XG4gICAgICBzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseSA9IG5ldyBDb2RlQnVpbGRTdGVwKFwiU3RyaXBBc3NldHNGcm9tQXNzZW1ibHlcIiwge1xuICAgICAgICBpbnB1dDogY2RrUGlwZWxpbmUuY2xvdWRBc3NlbWJseUZpbGVTZXQsXG4gICAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICAgJ1MzX1BBVEg9JHtDT0RFQlVJTERfU09VUkNFX1ZFUlNJT04jXCJhcm46YXdzOnMzOjo6XCJ9JyxcbiAgICAgICAgICBcIlpJUF9BUkNISVZFPSQoYmFzZW5hbWUgJFMzX1BBVEgpXCIsXG4gICAgICAgICAgXCJlY2hvICRTM19QQVRIXCIsXG4gICAgICAgICAgXCJlY2hvICRaSVBfQVJDSElWRVwiLFxuICAgICAgICAgIFwibHNcIixcbiAgICAgICAgICBcInJtIC1yZnYgYXNzZXQuKlwiLFxuICAgICAgICAgIFwiemlwIC1yIC1xIC1BICRaSVBfQVJDSElWRSAqXCIsXG4gICAgICAgICAgXCJsc1wiLFxuICAgICAgICAgIFwiYXdzIHMzIGNwICRaSVBfQVJDSElWRSBzMzovLyRTM19QQVRIXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY2RrUGlwZWxpbmUuYWRkV2F2ZShcIkJlZm9yZVN0YWdlRGVwbG95bWVudFwiLCB7XG4gICAgICAgIHByZTogW3N0cmlwQXNzZXRzRnJvbUFzc2VtYmx5XSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENvbnN0cnVjdCBmdW5jdGlvbiB0byBnZXQgU3RhY2tJZCBmb3IgZHJpZnQgY2hlY2tcbiAgICBjb25zdCByb290U3RhY2tOYW1lID0gU3RhY2sub2YodGhpcykuc3RhY2tOYW1lO1xuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gdGhpcy5ub2RlLmlkO1xuICAgIGNvbnN0IGdldFN0YWNrSWQgPSAoZW52TmFtZTogc3RyaW5nKSA9PlxuICAgICAgYCR7cm9vdFN0YWNrTmFtZX0vJHtjb25zdHJ1Y3RJZH0vJHtlbnZOYW1lfS8ke3Byb3BzLnN0YWNrTmFtZX1gO1xuXG4gICAgLy8gRHJpZnQgY2hlY2sgY29uZmlnXG4gICAgY29uc3QgaXNEcmlmdENoZWNrU3RlcCA9ICEhcHJvcHMuZHJpZnRDaGVja0NvbmZpZztcbiAgICBjb25zdCBjZGtJbnN0YWxsQ21kID1cbiAgICAgIHByb3BzLmRyaWZ0Q2hlY2tDb25maWc/Lmluc3RhbGxDb21tYW5kID8/XG4gICAgICBcInBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCI7XG4gICAgY29uc3QgY2RrUnVuQ21kID0gcHJvcHMuZHJpZnRDaGVja0NvbmZpZz8uY2RrQ29tbWFuZCA/PyBgYDtcblxuICAgIGNvbnN0IGJldGFFbnZOYW1lID0gXCJPcmNhQnVzQmV0YVwiO1xuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYmV0YUVudk5hbWUsXG4gICAgICAgIHN0YWdlRW52LmJldGEsXG4gICAgICAgIHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgcHJvcHMuc3RhY2ssXG4gICAgICAgIHByb3BzLnN0YWNrQ29uZmlnLmJldGEsXG4gICAgICAgIHByb3BzLmdpdGh1YlJlcG8sXG4gICAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIHByZTogaXNEcmlmdENoZWNrU3RlcFxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBuZXcgRmFpbE9uRHJpZnRCdWlsZFN0ZXAoXCJEcmlmdE9uRmFpbEJldGFDaGVja1wiLCB7XG4gICAgICAgICAgICAgICAgYWNjb3VudEVudjogc3RhZ2VFbnYuYmV0YSxcbiAgICAgICAgICAgICAgICBzdGFja0lkOiBnZXRTdGFja0lkKGJldGFFbnZOYW1lKSxcbiAgICAgICAgICAgICAgICBjZGtDb21tYW5kOiBjZGtSdW5DbWQsXG4gICAgICAgICAgICAgICAgaW5zdGFsbENvbW1hbmQ6IGNka0luc3RhbGxDbWQsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogR0FNTUFcbiAgICAgKi9cbiAgICBjb25zdCBnYW1tYUVudk5hbWUgPSBcIk9yY2FCdXNHYW1tYVwiO1xuXG4gICAgY2RrUGlwZWxpbmUuYWRkU3RhZ2UoXG4gICAgICBuZXcgRGVwbG95bWVudFN0YWdlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBnYW1tYUVudk5hbWUsXG4gICAgICAgIHN0YWdlRW52LmdhbW1hLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5nYW1tYSxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgcHJlOiBpc0RyaWZ0Q2hlY2tTdGVwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIG5ldyBGYWlsT25EcmlmdEJ1aWxkU3RlcChcIkRyaWZ0T25GYWlsR2FtbWFDaGVja1wiLCB7XG4gICAgICAgICAgICAgICAgYWNjb3VudEVudjogc3RhZ2VFbnYuZ2FtbWEsXG4gICAgICAgICAgICAgICAgc3RhY2tJZDogZ2V0U3RhY2tJZChnYW1tYUVudk5hbWUpLFxuICAgICAgICAgICAgICAgIGNka0NvbW1hbmQ6IGNka1J1bkNtZCxcbiAgICAgICAgICAgICAgICBpbnN0YWxsQ29tbWFuZDogY2RrSW5zdGFsbENtZCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHBvc3Q6IFtcbiAgICAgICAgICBuZXcgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwKFwiUHJvbW90ZVRvUHJvZFwiLCB7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcIlByb21vdGVUb1Byb2RcIixcbiAgICAgICAgICAgIC8vIEN1c3RvbSBzdGVwcyBieXBhc3Mgc3RhZ2UgcHJlL3Bvc3Qgb3JkZXJpbmcsIHNvIHJ1bk9yZGVyIG11c3QgYmUgZXhwbGljaXRseSBzZXQuXG4gICAgICAgICAgICAvLyBTZXQgdG8gNSB0byBlbnN1cmUgdGhpcyBydW5zIGFmdGVyIGFsbCBPcmNhQnVzR2FtbWEgc3RhZ2Ugc3RlcHMgY29tcGxldGUuXG4gICAgICAgICAgICAvLyAoR2FtbWEgZGVwbG95bWVudCB0eXBpY2FsbHkgdXNlcyAyIHN0ZXBzLCBzbyA1IHByb3ZpZGVzIGFkZXF1YXRlIGJ1ZmZlcilcbiAgICAgICAgICAgIHJ1bk9yZGVyOiA1LFxuICAgICAgICAgICAgLy8gNjAtbWludXRlIHRpbWVvdXQgYWxsb3dzIHF1ZXVlZCBwaXBlbGluZSBleGVjdXRpb25zIHRvIHByb2NlZWQgaWYgYXBwcm92YWwgZXhwaXJlc1xuICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBQUk9EXG4gICAgICovXG4gICAgY29uc3QgcHJvZEVudk5hbWUgPSBcIk9yY2FCdXNQcm9kXCI7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb2RFbnZOYW1lLFxuICAgICAgICBzdGFnZUVudi5wcm9kLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5wcm9kLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBwcmU6IGlzRHJpZnRDaGVja1N0ZXBcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgbmV3IEZhaWxPbkRyaWZ0QnVpbGRTdGVwKFwiRHJpZnRPbkZhaWxQcm9kQ2hlY2tcIiwge1xuICAgICAgICAgICAgICAgIGFjY291bnRFbnY6IHN0YWdlRW52LnByb2QsXG4gICAgICAgICAgICAgICAgc3RhY2tJZDogZ2V0U3RhY2tJZChwcm9kRW52TmFtZSksXG4gICAgICAgICAgICAgICAgY2RrQ29tbWFuZDogY2RrUnVuQ21kLFxuICAgICAgICAgICAgICAgIGluc3RhbGxDb21tYW5kOiBjZGtJbnN0YWxsQ21kLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNka1BpcGVsaW5lLmJ1aWxkUGlwZWxpbmUoKTtcblxuICAgIGlmIChzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseSkge1xuICAgICAgY2RrUGlwZWxpbmUucGlwZWxpbmUuYXJ0aWZhY3RCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICAgIHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5LnByb2plY3QsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5lbmFibGVTbGFja05vdGlmaWNhdGlvbiA/PyB0cnVlKSB7XG4gICAgICBjb25zdCBhbGVydHNCdWlsZFNsYWNrQ29uZmlnQXJuID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIi9jaGF0Ym90X2Fybi9zbGFjay9hbGVydHMtYnVpbGRcIixcbiAgICAgICk7XG4gICAgICBjb25zdCB0YXJnZXQgPSBTbGFja0NoYW5uZWxDb25maWd1cmF0aW9uLmZyb21TbGFja0NoYW5uZWxDb25maWd1cmF0aW9uQXJuKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIlNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgYWxlcnRzQnVpbGRTbGFja0NvbmZpZ0FybixcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucGlwZWxpbmUubm90aWZ5T24oXCJQaXBlbGluZVNsYWNrTm90aWZpY2F0aW9uXCIsIHRhcmdldCwge1xuICAgICAgICBldmVudHM6IHByb3BzLm5vdGlmaWNhdGlvbkV2ZW50cyB8fCBbXG4gICAgICAgICAgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX0ZBSUxFRCxcbiAgICAgICAgXSxcbiAgICAgICAgZGV0YWlsVHlwZTogRGV0YWlsVHlwZS5GVUxMLFxuICAgICAgICBub3RpZmljYXRpb25SdWxlTmFtZTogYE9yY2FCdXMtJHtwcm9wcy5waXBlbGluZU5hbWV9YCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcCB3aXRoIHJlcXVpcmVkIHJ1bk9yZGVyLlxuICovXG5pbnRlcmZhY2UgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwUHJvcHMgZXh0ZW5kcyBNYW51YWxBcHByb3ZhbEFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBydW4gb3JkZXIgZm9yIHRoaXMgYWN0aW9uIGluIHRoZSBwaXBlbGluZSBzdGFnZS4gVGhlIHN0YWdlIFByZS9Qb3N0IG9yZGVyIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgY3VzdG9tXG4gICAqIHN0ZXAvYWN0aW9uLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCB0aGUgcnVuT3JkZXIuXG4gICAqL1xuICBydW5PcmRlcjogbnVtYmVyO1xufVxuLyoqXG4gKiBDdXN0b20gbWFudWFsIGFwcHJvdmFsIHN0ZXAgZm9yIENESyBDb2RlUGlwZWxpbmUuXG4gKlxuICogVGhpcyBjbGFzcyBicmlkZ2VzIHRoZSBnYXAgdG8gZW5hYmxlIHVzaW5nIE1hbnVhbEFwcHJvdmFsQWN0aW9uIHdpdGhpbiBhIFN0ZXAgY2xhc3MsXG4gKiBtYWtpbmcgaXQgY29tcGF0aWJsZSB3aXRoIGNkay5waXBlbGluZXMgY29uc3RydWN0cy5cbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGVwLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcHJvcGVydGllcyBmb3IgdGhlIG1hbnVhbCBhcHByb3ZhbCBhY3Rpb24sIGluY2x1ZGluZ1xuICovXG5jbGFzcyBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBcbiAgZXh0ZW5kcyBTdGVwXG4gIGltcGxlbWVudHMgSUNvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlcbntcbiAgcHJpdmF0ZSByZWFkb25seSBtYW51YWxBcHByb3ZhbEFjdGlvblByb3BzOiBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcztcbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgb3B0aW9uczogTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwUHJvcHMpIHtcbiAgICBzdXBlcihpZCk7XG4gICAgdGhpcy5tYW51YWxBcHByb3ZhbEFjdGlvblByb3BzID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBwcm9kdWNlQWN0aW9uKFxuICAgIHN0YWdlOiBJU3RhZ2UsXG4gICAgb3B0aW9uczogUHJvZHVjZUFjdGlvbk9wdGlvbnMsXG4gICk6IENvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlSZXN1bHQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgTWFudWFsQXBwcm92YWxBY3Rpb24odGhpcy5tYW51YWxBcHByb3ZhbEFjdGlvblByb3BzKSk7XG5cbiAgICByZXR1cm4geyBydW5PcmRlcnNDb25zdW1lZDogMSB9O1xuICB9XG59XG5cbmNsYXNzIERlcGxveW1lbnRTdGFnZSBleHRlbmRzIFN0YWdlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBlbnZpcm9ubWVudE5hbWU6IHN0cmluZyxcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHN0YWNrTmFtZTogc3RyaW5nLFxuICAgIHN0YWNrQ2xhc3M6IG5ldyAoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IGFueSkgPT4gU3RhY2ssXG4gICAgYXBwU3RhY2tQcm9wczogYW55LFxuICAgIGdpdGh1YlJlcG86IHN0cmluZyxcbiAgICBnaXRodWJCcmFuY2g/OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBlbnZpcm9ubWVudE5hbWUsIHsgZW52OiBlbnYgfSk7XG5cbiAgICBsZXQgc291cmNlID0gYGh0dHBzOi8vZ2l0aHViLmNvbS9PcmNhQnVzLyR7Z2l0aHViUmVwb31gO1xuICAgIGlmIChnaXRodWJCcmFuY2ggIT09IHVuZGVmaW5lZCAmJiBnaXRodWJCcmFuY2ggIT09IFwibWFpblwiKSB7XG4gICAgICBzb3VyY2UgPSBgJHtzb3VyY2V9L3RyZWUvJHtnaXRodWJCcmFuY2h9YDtcbiAgICB9XG5cbiAgICBuZXcgc3RhY2tDbGFzcyh0aGlzLCBzdGFja05hbWUsIHtcbiAgICAgIGVudjogZW52LFxuICAgICAgdGFnczoge1xuICAgICAgICBcInVtY2NyLW9yZzpQcm9kdWN0XCI6IFwiT3JjYUJ1c1wiLFxuICAgICAgICBcInVtY2NyLW9yZzpDcmVhdG9yXCI6IFwiQ0RLXCIsXG4gICAgICAgIFwidW1jY3Itb3JnOlNlcnZpY2VcIjogc3RhY2tOYW1lLFxuICAgICAgICBcInVtY2NyLW9yZzpTb3VyY2VcIjogc291cmNlLFxuICAgICAgfSxcbiAgICAgIC4uLmFwcFN0YWNrUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsT25EcmlmdEJ1aWxkU3RlcFByb3BzIHtcbiAgLyoqXG4gICAqIEFXUyBhY2NvdW50IGFuZCByZWdpb24gd2hlcmUgdGhlIGRyaWZ0IGNoZWNrIHJ1bnMuXG4gICAqIFVzZWQgdG8gYXNzdW1lIHRoZSBDREsgbG9va3VwIHJvbGUgYW5kIHNldCBBV1NfREVGQVVMVF9SRUdJT04uXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50RW52OiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIEZ1bGx5IHF1YWxpZmllZCBDREsgc3RhY2sgSUQgdG8gY2hlY2sgZm9yIGRyaWZ0LlxuICAgKlxuICAgKiBGb3JtYXQ6IGA8cm9vdFN0YWNrPi88Y29uc3RydWN0SWQ+LzxlbnZOYW1lPi88c3RhY2tOYW1lPmBcbiAgICpcbiAgICogRXhhbXBsZTogYERldlN0YWNrL0RlcGxveW1lbnRQaXBlbGluZS9PcmNhQnVzQmV0YS9UZXN0U3RhY2tgXG4gICAqL1xuICByZWFkb25seSBzdGFja0lkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDREsgQ0xJIGVudHJ5cG9pbnQgdXNlZCB0byBydW4gdGhlIGRyaWZ0IGNvbW1hbmQuXG4gICAqIEV4YW1wbGVzOiBcInBucG0gY2RrXCIsIFwicG5wbSBjZGstc3RhdGVmdWxcIiwgXCJwbnBtIGNkay1zdGF0ZWxlc3NcIi5cbiAgICogTXVzdCBzdXBwb3J0OiBcImRyaWZ0IDxzdGFja0lkPlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrQ29tbWFuZDogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbWFuZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcyBiZWZvcmUgcnVubmluZyBDREsuXG4gICAqIElmIHlvdXIgYXBwIGlzIGluIGEgc3ViZGlyZWN0b3J5LCBwcmVmaXggd2l0aCBcImNkIDxkaXI+ICYmXCIuXG4gICAqIEV4YW1wbGU6IFwiY2QgZGV2ICYmIHBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCJcbiAgICpcbiAgICogRGVmYXVsdDogXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsQ29tbWFuZD86IHN0cmluZztcbn1cblxuY2xhc3MgRmFpbE9uRHJpZnRCdWlsZFN0ZXAgZXh0ZW5kcyBDb2RlQnVpbGRTdGVwIHtcbiAgY29uc3RydWN0b3IoXG4gICAgaWQ6IHN0cmluZyxcbiAgICB7XG4gICAgICBhY2NvdW50RW52LFxuICAgICAgc3RhY2tJZCxcbiAgICAgIGNka0NvbW1hbmQsXG4gICAgICBpbnN0YWxsQ29tbWFuZCxcbiAgICB9OiBGYWlsT25EcmlmdEJ1aWxkU3RlcFByb3BzLFxuICApIHtcbiAgICBjb25zdCBjZGtJbnN0YWxsID0gaW5zdGFsbENvbW1hbmRcbiAgICAgID8gaW5zdGFsbENvbW1hbmRcbiAgICAgIDogXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiO1xuXG4gICAgc3VwZXIoaWQsIHtcbiAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgIFwibm9kZSAtdlwiLFxuICAgICAgICBcIm5wbSBpbnN0YWxsIC0tZ2xvYmFsIGNvcmVwYWNrQGxhdGVzdFwiLFxuICAgICAgICBcImNvcmVwYWNrIC0tdmVyc2lvblwiLFxuICAgICAgICBcImNvcmVwYWNrIGVuYWJsZVwiLFxuICAgICAgICBjZGtJbnN0YWxsLFxuXG4gICAgICAgIGBMT09LVVBfUk9MRV9BUk49XCJhcm46YXdzOmlhbTo6JHthY2NvdW50RW52LmFjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1sb29rdXAtcm9sZS0ke2FjY291bnRFbnYuYWNjb3VudH0tJHthY2NvdW50RW52LnJlZ2lvbn1cImAsXG4gICAgICAgICdTRVNTSU9OX05BTUU9XCJkcmlmdC1jaGVja1wiJyxcbiAgICAgICAgJ3JlYWQgQVdTX0FDQ0VTU19LRVlfSUQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIEFXU19TRVNTSU9OX1RPS0VOIDwgPChhd3Mgc3RzIGFzc3VtZS1yb2xlIC0tcm9sZS1hcm4gXCIkTE9PS1VQX1JPTEVfQVJOXCIgLS1yb2xlLXNlc3Npb24tbmFtZSBcIiRTRVNTSU9OX05BTUVcIiAtLWR1cmF0aW9uLXNlY29uZHMgOTAwIC0tcXVlcnkgXFwnQ3JlZGVudGlhbHMuW0FjY2Vzc0tleUlkLFNlY3JldEFjY2Vzc0tleSxTZXNzaW9uVG9rZW5dXFwnIC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICAgXCJleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIEFXU19TRVNTSU9OX1RPS0VOXCIsXG4gICAgICAgIGBleHBvcnQgQVdTX0RFRkFVTFRfUkVHSU9OPVwiJHthY2NvdW50RW52LnJlZ2lvbn1cImAsXG4gICAgICAgIFwiYXdzIHN0cyBnZXQtY2FsbGVyLWlkZW50aXR5XCIsXG5cbiAgICAgICAgYGlmICR7Y2RrQ29tbWFuZH0gbHMgfCBncmVwIC1GcSBcIiR7c3RhY2tJZH1cIjsgdGhlbiBlY2hvIFwiU3RhY2sgJHtzdGFja0lkfSBmb3VuZDsgY2hlY2tpbmcgZm9yIGRyaWZ0Li4uXCI7ICR7Y2RrQ29tbWFuZH0gZHJpZnQgXCIke3N0YWNrSWR9XCIgLWUgLS1mYWlsOyBlbHNlIGVjaG8gXCJTdGFjayBub3QgZm91bmQgaW4gY2RrIGxzOyBza2lwcGluZyBkcmlmdCBjaGVjay5cIjsgZmlgLFxuICAgICAgXSxcbiAgICAgIHJvbGVQb2xpY3lTdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6aWFtOjoke2FjY291bnRFbnYuYWNjb3VudH06cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLSR7YWNjb3VudEVudi5hY2NvdW50fS0ke2FjY291bnRFbnYucmVnaW9ufWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICBdXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwaXBlbGluZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUFrRTtBQUNsRSw2REFNbUM7QUFDbkMsaURBQXNEO0FBQ3RELHFEQVErQjtBQUMvQixtRUFNc0M7QUFDdEMscUNBSWtCO0FBQ2xCLHlEQUFvRTtBQUNwRSxxRkFBbUU7QUFDbkUsdURBQWtFO0FBQ2xFLG1GQUc4QztBQUM5QyxpREFBc0Q7QUFDdEQsaURBQXNEO0FBRXREOztHQUVHO0FBQ1UsUUFBQSwwQkFBMEIsR0FBRztJQUN4QyxNQUFNLEVBQUU7UUFDTixPQUFPLEVBQUU7WUFDUCxrQkFBa0IsRUFBRTtnQkFDbEIsTUFBTSxFQUFFLE1BQU07YUFDZjtTQUNGO0tBQ0Y7SUFDRCxPQUFPLEVBQUUsS0FBSztDQUNmLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEsd0JBQXdCLEdBQUc7SUFDdEMsc0NBQXNDO0lBQ3RDLGlCQUFpQjtJQUNqQixTQUFTO0lBQ1Qsb0JBQW9CO0lBQ3BCLGlEQUFpRDtDQUNsRCxDQUFDO0FBOE5GOzs7OztHQUtHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUzs7SUFDcEQ7O09BRUc7SUFDTSxRQUFRLENBQVc7SUFFNUIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFdBQVcsR0FBRyx5QkFBZSxDQUFDLHVCQUF1QixDQUN6RCxJQUFJLEVBQ0oscUJBQXFCLENBQ3RCLENBQUM7UUFDRixNQUFNLHdCQUF3QixHQUFHLGNBQWMsQ0FBQztRQUNoRCxNQUFNLFVBQVUsR0FBRyw4QkFBa0IsQ0FBQyxVQUFVLENBQzlDLFdBQVcsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUM3QixLQUFLLENBQUMsWUFBWSxFQUNsQjtZQUNFLGFBQWEsRUFBRSxXQUFXO1lBQzFCLFVBQVUsRUFBRSx3QkFBd0I7WUFDcEMsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FDRixDQUFDO1FBRUYsTUFBTSwrQkFBK0IsR0FDbkMsS0FBSyxDQUFDLDJCQUEyQixJQUFJLElBQUksQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRywrQkFBK0I7WUFDcEQsQ0FBQyxDQUFDLCtDQUE2QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjO1lBQy9ELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksMkJBQVEsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUU7WUFDM0QsY0FBYyxFQUFFLGNBQWM7WUFDOUIsWUFBWSxFQUFFLCtCQUFZLENBQUMsRUFBRTtZQUM3QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixrQ0FBa0M7WUFDbEMsaUdBQWlHO1lBQ2pHLHdCQUF3QixFQUFFLElBQUk7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxLQUFLLENBQUMsaUJBQWlCLElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkQsTUFBTSxTQUFTLEdBQTZCLEVBQUUsQ0FBQztZQUUvQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUM1QixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQ2xELENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUM1QixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQ2xELENBQUM7WUFFRCxnRkFBZ0Y7WUFDaEYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBMkIsQ0FBQztZQUNuRSxXQUFXLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFO2dCQUMxQztvQkFDRSxnQkFBZ0IsRUFBRTt3QkFDaEIsSUFBSSxFQUFFOzRCQUNKO2dDQUNFLFFBQVEsRUFBRTtvQ0FDUixRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2lDQUMvQjtnQ0FDRCxTQUFTLEVBQUUsU0FBUzs2QkFDckI7eUJBQ0Y7d0JBQ0QsZ0JBQWdCLEVBQUUsd0JBQXdCO3FCQUMzQztvQkFDRCxZQUFZLEVBQUUsMEJBQTBCO2lCQUN6QzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFdBQVcsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxZQUFZLEdBQW1DLFNBQVMsQ0FBQztRQUM3RCxJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsV0FBVyxHQUFHLG1DQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDaEUsWUFBWSxHQUFHO2dCQUNiLGNBQWMsRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVM7Z0JBQzVDLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQVM7YUFDbEUsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxDQUFDLFNBQTBDLEVBQUUsRUFBRTtZQUNuRSxJQUFJLFNBQVMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUc7b0JBQ25CLEtBQUssRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssSUFBSSxDQUFDLG1CQUFtQixDQUFDO2lCQUMxRCxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQztRQUVGLDJDQUEyQztRQUMzQyxNQUFNLEVBQ0osZUFBZSxFQUFFLGtCQUFrQixHQUFHLGdDQUF3QixFQUM5RCxPQUFPLEVBQUUsa0JBQWtCLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFDM0MsZ0JBQWdCLEVBQUUsdUJBQXVCLEdBQUcsZUFBZSxDQUN6RCxrQ0FBMEIsQ0FDM0IsR0FDRixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDbEMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFFdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSx5QkFBYSxDQUFDLGFBQWEsRUFBRTtZQUNuRCxlQUFlLEVBQUUsa0JBQWtCO1lBQ25DLFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsS0FBSyxFQUFFLFVBQVU7WUFDakIsZ0JBQWdCLEVBQUU7Z0JBQ2hCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixXQUFXLEVBQUUsMkJBQVcsQ0FBQyxLQUFLO2dCQUM5QixVQUFVLEVBQUUsa0NBQWtCLENBQUMsMkJBQTJCO2dCQUMxRCxvQkFBb0IsRUFBRTtvQkFDcEIsWUFBWSxFQUFFO3dCQUNaLEtBQUssRUFBRSwyQkFBMkI7cUJBQ25DO2lCQUNGO2FBQ0Y7WUFDRCxnQkFBZ0IsRUFBRSx1QkFBdUI7Z0JBQ3ZDLENBQUMsQ0FBQyx5QkFBUyxDQUFDLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLFNBQVM7WUFDYixLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxxQkFBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDekUsQ0FBQyxDQUFDO1FBRUgsb0NBQW9DO1FBQ3BDLE1BQU0sRUFDSixPQUFPLEVBQUUsa0JBQWtCLEVBQzNCLGVBQWUsRUFBRSxrQkFBa0IsR0FBRyxnQ0FBd0IsRUFDOUQsZ0JBQWdCLEVBQUUsdUJBQXVCLEdBQUcsZUFBZSxDQUN6RCxrQ0FBMEIsQ0FDM0IsR0FDRixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUM1QixhQUFhLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUV2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLHlCQUFhLENBQUMsYUFBYSxFQUFFO1lBQ25ELFFBQVEsRUFBRSxrQkFBa0I7WUFDNUIsZUFBZSxFQUFFLGtCQUFrQjtZQUNuQyxLQUFLLEVBQUUsVUFBVTtZQUNqQixnQkFBZ0IsRUFBRTtnQkFDaEIsVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLFdBQVcsRUFBRSwyQkFBVyxDQUFDLEtBQUs7Z0JBQzlCLFVBQVUsRUFBRSxrQ0FBa0IsQ0FBQywyQkFBMkI7Z0JBQzFELG9CQUFvQixFQUFFO29CQUNwQixZQUFZLEVBQUU7d0JBQ1osS0FBSyxFQUFFLDJCQUEyQjtxQkFDbkM7aUJBQ0Y7YUFDRjtZQUNELGdCQUFnQixFQUFFLHVCQUF1QjtnQkFDdkMsQ0FBQyxDQUFDLHlCQUFTLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDO2dCQUMvQyxDQUFDLENBQUMsU0FBUztZQUNiLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLHFCQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN6RSxDQUFDLENBQUM7UUFFSCxNQUFNLEVBQ0osb0JBQW9CLEdBQUcsZ0NBQXdCLEVBQy9DLGNBQWMsR0FBRyxlQUFlLENBQUMsa0NBQTBCLENBQUMsR0FDN0QsR0FBRyxLQUFLLENBQUM7UUFDVixhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFOUIsTUFBTSxTQUFTLEdBQUcsSUFBSSx5QkFBYSxDQUFDLFVBQVUsRUFBRTtZQUM5QyxlQUFlLEVBQUUsb0JBQW9CO1lBQ3JDLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVztZQUMzQixLQUFLLEVBQUUsVUFBVTtZQUNqQixzQkFBc0IsRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLFNBQVM7WUFDakQsZ0JBQWdCLEVBQUUseUJBQVMsQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO1lBQ3RELEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLHFCQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN6RSxDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXpDLE1BQU0sV0FBVyxHQUFHLElBQUksd0JBQVksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDNUQsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQzNCLEtBQUssRUFBRSxTQUFTO1lBQ2hCLFlBQVksRUFBRSxJQUFJO1lBQ2xCLGlCQUFpQixFQUFFO2dCQUNqQixnQkFBZ0IsRUFBRTtvQkFDaEIsV0FBVyxFQUFFLDJCQUFXLENBQUMsS0FBSztvQkFDOUIsVUFBVSxFQUFFLGtDQUFrQixDQUFDLDJCQUEyQjtvQkFDMUQsb0JBQW9CLEVBQUU7d0JBQ3BCLFlBQVksRUFBRTs0QkFDWixLQUFLLEVBQUUsMkJBQTJCO3lCQUNuQztxQkFDRjtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxlQUFlLEdBQWtCO1lBQ3JDLElBQUksRUFBRSx5QkFBZ0I7WUFDdEIsS0FBSyxFQUFFLDBCQUFpQjtZQUN4QixJQUFJLEVBQUUseUJBQWdCO1NBQ3ZCLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGVBQWUsQ0FBQztRQUVuRCw4RUFBOEU7UUFDOUUsMkRBQTJEO1FBQzNELDZDQUE2QztRQUM3QyxJQUFJLHVCQUFrRCxDQUFDO1FBQ3ZELElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDOUIsdUJBQXVCLEdBQUcsSUFBSSx5QkFBYSxDQUFDLHlCQUF5QixFQUFFO2dCQUNyRSxLQUFLLEVBQUUsV0FBVyxDQUFDLG9CQUFvQjtnQkFDdkMsUUFBUSxFQUFFO29CQUNSLHFEQUFxRDtvQkFDckQsa0NBQWtDO29CQUNsQyxlQUFlO29CQUNmLG1CQUFtQjtvQkFDbkIsSUFBSTtvQkFDSixpQkFBaUI7b0JBQ2pCLDZCQUE2QjtvQkFDN0IsSUFBSTtvQkFDSixzQ0FBc0M7aUJBQ3ZDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsV0FBVyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRTtnQkFDM0MsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7YUFDL0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELG9EQUFvRDtRQUNwRCxNQUFNLGFBQWEsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDL0MsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDakMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUNyQyxHQUFHLGFBQWEsSUFBSSxXQUFXLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVsRSxxQkFBcUI7UUFDckIsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLENBQUM7UUFDN0QsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFFM0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQ2xDLFdBQVcsQ0FBQyxRQUFRLENBQ2xCLElBQUksZUFBZSxDQUNqQixJQUFJLEVBQ0osV0FBVyxFQUNYLFFBQVEsQ0FBQyxJQUFJLEVBQ2IsS0FBSyxDQUFDLFNBQVMsRUFDZixLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUN0QixLQUFLLENBQUMsVUFBVSxFQUNoQixLQUFLLENBQUMsWUFBWSxDQUNuQixFQUNEO1lBQ0UsR0FBRyxFQUFFLGdCQUFnQjtnQkFDbkIsQ0FBQyxDQUFDO29CQUNFLElBQUksb0JBQW9CLENBQUMsc0JBQXNCLEVBQUU7d0JBQy9DLFVBQVUsRUFBRSxRQUFRLENBQUMsSUFBSTt3QkFDekIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxXQUFXLENBQUM7d0JBQ2hDLFVBQVUsRUFBRSxTQUFTO3dCQUNyQixjQUFjLEVBQUUsYUFBYTtxQkFDOUIsQ0FBQztpQkFDSDtnQkFDSCxDQUFDLENBQUMsU0FBUztTQUNkLENBQ0YsQ0FBQztRQUVGOztXQUVHO1FBQ0gsTUFBTSxZQUFZLEdBQUcsY0FBYyxDQUFDO1FBRXBDLFdBQVcsQ0FBQyxRQUFRLENBQ2xCLElBQUksZUFBZSxDQUNqQixJQUFJLEVBQ0osWUFBWSxFQUNaLFFBQVEsQ0FBQyxLQUFLLEVBQ2QsS0FBSyxDQUFDLFNBQVMsRUFDZixLQUFLLENBQUMsS0FBSyxFQUNYLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUN2QixLQUFLLENBQUMsVUFBVSxFQUNoQixLQUFLLENBQUMsWUFBWSxDQUNuQixFQUNEO1lBQ0UsR0FBRyxFQUFFLGdCQUFnQjtnQkFDbkIsQ0FBQyxDQUFDO29CQUNFLElBQUksb0JBQW9CLENBQUMsdUJBQXVCLEVBQUU7d0JBQ2hELFVBQVUsRUFBRSxRQUFRLENBQUMsS0FBSzt3QkFDMUIsT0FBTyxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUM7d0JBQ2pDLFVBQVUsRUFBRSxTQUFTO3dCQUNyQixjQUFjLEVBQUUsYUFBYTtxQkFDOUIsQ0FBQztpQkFDSDtnQkFDSCxDQUFDLENBQUMsU0FBUztZQUNiLElBQUksRUFBRTtnQkFDSixJQUFJLHdCQUF3QixDQUFDLGVBQWUsRUFBRTtvQkFDNUMsVUFBVSxFQUFFLGVBQWU7b0JBQzNCLG1GQUFtRjtvQkFDbkYsNEVBQTRFO29CQUM1RSwyRUFBMkU7b0JBQzNFLFFBQVEsRUFBRSxDQUFDO29CQUNYLHFGQUFxRjtvQkFDckYsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztpQkFDOUIsQ0FBQzthQUNIO1NBQ0YsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUM7UUFFbEMsV0FBVyxDQUFDLFFBQVEsQ0FDbEIsSUFBSSxlQUFlLENBQ2pCLElBQUksRUFDSixXQUFXLEVBQ1gsUUFBUSxDQUFDLElBQUksRUFDYixLQUFLLENBQUMsU0FBUyxFQUNmLEtBQUssQ0FBQyxLQUFLLEVBQ1gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQ3RCLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLEtBQUssQ0FBQyxZQUFZLENBQ25CLEVBQ0Q7WUFDRSxHQUFHLEVBQUUsZ0JBQWdCO2dCQUNuQixDQUFDLENBQUM7b0JBQ0UsSUFBSSxvQkFBb0IsQ0FBQyxzQkFBc0IsRUFBRTt3QkFDL0MsVUFBVSxFQUFFLFFBQVEsQ0FBQyxJQUFJO3dCQUN6QixPQUFPLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQzt3QkFDaEMsVUFBVSxFQUFFLFNBQVM7d0JBQ3JCLGNBQWMsRUFBRSxhQUFhO3FCQUM5QixDQUFDO2lCQUNIO2dCQUNILENBQUMsQ0FBQyxTQUFTO1NBQ2QsQ0FDRixDQUFDO1FBRUYsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTVCLElBQUksdUJBQXVCLEVBQUUsQ0FBQztZQUM1QixXQUFXLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQ2hELHVCQUF1QixDQUFDLE9BQU8sQ0FDaEMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLHlCQUF5QixHQUFHLHlCQUFlLENBQUMsdUJBQXVCLENBQ3ZFLElBQUksRUFDSixpQ0FBaUMsQ0FDbEMsQ0FBQztZQUNGLE1BQU0sTUFBTSxHQUFHLHVDQUF5QixDQUFDLGdDQUFnQyxDQUN2RSxJQUFJLEVBQ0osMkJBQTJCLEVBQzNCLHlCQUF5QixDQUMxQixDQUFDO1lBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsTUFBTSxFQUFFO2dCQUMxRCxNQUFNLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixJQUFJO29CQUNsQyw2Q0FBMEIsQ0FBQyx5QkFBeUI7aUJBQ3JEO2dCQUNELFVBQVUsRUFBRSxzQ0FBVSxDQUFDLElBQUk7Z0JBQzNCLG9CQUFvQixFQUFFLFdBQVcsS0FBSyxDQUFDLFlBQVksRUFBRTthQUN0RCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFoV0gsMERBaVdDO0FBWUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLHdCQUNKLFNBQVEsZ0JBQUk7SUFHSyx5QkFBeUIsQ0FBZ0M7SUFDMUUsWUFBWSxFQUFVLEVBQUUsT0FBc0M7UUFDNUQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ1YsSUFBSSxDQUFDLHlCQUF5QixHQUFHLE9BQU8sQ0FBQztJQUMzQyxDQUFDO0lBRU0sYUFBYSxDQUNsQixLQUFhLEVBQ2IsT0FBNkI7UUFFN0IsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLCtDQUFvQixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQUM7UUFFMUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Q0FDRjtBQUVELE1BQU0sZUFBZ0IsU0FBUSxtQkFBSztJQUNqQyxZQUNFLEtBQWdCLEVBQ2hCLGVBQXVCLEVBQ3ZCLEdBQWdCLEVBQ2hCLFNBQWlCLEVBQ2pCLFVBQW1FLEVBQ25FLGFBQWtCLEVBQ2xCLFVBQWtCLEVBQ2xCLFlBQXFCO1FBRXJCLEtBQUssQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFNUMsSUFBSSxNQUFNLEdBQUcsOEJBQThCLFVBQVUsRUFBRSxDQUFDO1FBQ3hELElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxTQUFTLFlBQVksRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzlCLEdBQUcsRUFBRSxHQUFHO1lBQ1IsSUFBSSxFQUFFO2dCQUNKLG1CQUFtQixFQUFFLFNBQVM7Z0JBQzlCLG1CQUFtQixFQUFFLEtBQUs7Z0JBQzFCLG1CQUFtQixFQUFFLFNBQVM7Z0JBQzlCLGtCQUFrQixFQUFFLE1BQU07YUFDM0I7WUFDRCxHQUFHLGFBQWE7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBZ0NELE1BQU0sb0JBQXFCLFNBQVEseUJBQWE7SUFDOUMsWUFDRSxFQUFVLEVBQ1YsRUFDRSxVQUFVLEVBQ1YsT0FBTyxFQUNQLFVBQVUsRUFDVixjQUFjLEdBQ1k7UUFFNUIsTUFBTSxVQUFVLEdBQUcsY0FBYztZQUMvQixDQUFDLENBQUMsY0FBYztZQUNoQixDQUFDLENBQUMsZ0NBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFDLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDUixRQUFRLEVBQUU7Z0JBQ1IsVUFBVTtnQkFFVixpQ0FBaUMsVUFBVSxDQUFDLE9BQU8sbUNBQW1DLFVBQVUsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRztnQkFDaEksNEJBQTRCO2dCQUM1QixtUUFBbVE7Z0JBQ25RLGtFQUFrRTtnQkFDbEUsOEJBQThCLFVBQVUsQ0FBQyxNQUFNLEdBQUc7Z0JBQ2xELDZCQUE2QjtnQkFFN0IsTUFBTSxVQUFVLG1CQUFtQixPQUFPLHVCQUF1QixPQUFPLG1DQUFtQyxVQUFVLFdBQVcsT0FBTywrRUFBK0U7YUFDdk47WUFDRCxvQkFBb0IsRUFBRTtnQkFDcEIsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsU0FBUyxFQUFFO3dCQUNULGdCQUFnQixVQUFVLENBQUMsT0FBTyxtQ0FBbUMsVUFBVSxDQUFDLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFO3FCQUMvRztpQkFDRixDQUFDO2FBQ0g7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRHVyYXRpb24sIEVudmlyb25tZW50LCBTdGFjaywgU3RhZ2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEJ1Y2tldENhY2hlT3B0aW9ucyxcbiAgQnVpbGRTcGVjLFxuICBDYWNoZSxcbiAgQ29tcHV0ZVR5cGUsXG4gIExpbnV4QXJtQnVpbGRJbWFnZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlYnVpbGRcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQge1xuICBDb2RlQnVpbGRTdGVwLFxuICBDb2RlUGlwZWxpbmUsXG4gIENvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlSZXN1bHQsXG4gIENvZGVQaXBlbGluZVNvdXJjZSxcbiAgSUNvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnksXG4gIFByb2R1Y2VBY3Rpb25PcHRpb25zLFxuICBTdGVwLFxufSBmcm9tIFwiYXdzLWNkay1saWIvcGlwZWxpbmVzXCI7XG5pbXBvcnQge1xuICBQaXBlbGluZSxcbiAgQ2ZuUGlwZWxpbmUsXG4gIFBpcGVsaW5lVHlwZSxcbiAgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMsXG4gIElTdGFnZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmVcIjtcbmltcG9ydCB7XG4gIEJFVEFfRU5WSVJPTk1FTlQsXG4gIEdBTU1BX0VOVklST05NRU5ULFxuICBQUk9EX0VOVklST05NRU5ULFxufSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IFNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNoYXRib3RcIjtcbmltcG9ydCB7IERldGFpbFR5cGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVzdGFybm90aWZpY2F0aW9uc1wiO1xuaW1wb3J0IHsgQ3Jvc3NEZXBsb3ltZW50QXJ0aWZhY3RCdWNrZXQgfSBmcm9tIFwiLi9hcnRpZmFjdC1idWNrZXRcIjtcbmltcG9ydCB7XG4gIE1hbnVhbEFwcHJvdmFsQWN0aW9uLFxuICBNYW51YWxBcHByb3ZhbEFjdGlvblByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ29kZUJ1aWxkQ2FjaGVCdWNrZXQgfSBmcm9tIFwiLi9jYWNoZS1idWNrZXRcIjtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBwYXJ0aWFsIGJ1aWxkIHNwZWMgZm9yIGNvZGUgYnVpbGQgc3RlcHMgaW4gdGhlIHBpcGVsaW5lLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQVJUSUFMX0JVSUxEX1NQRUMgPSB7XG4gIHBoYXNlczoge1xuICAgIGluc3RhbGw6IHtcbiAgICAgIFwicnVudGltZS12ZXJzaW9uc1wiOiB7XG4gICAgICAgIG5vZGVqczogXCIyMi54XCIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHZlcnNpb246IFwiMC4yXCIsXG59O1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IGluc3RhbGwgY29tbWFuZHMgZm9yIENvZGVCdWlsZCBzdGVwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSU5TVEFMTF9DT01NQU5EUyA9IFtcbiAgXCJucG0gaW5zdGFsbCAtLWdsb2JhbCBjb3JlcGFja0BsYXRlc3RcIixcbiAgXCJjb3JlcGFjayBlbmFibGVcIixcbiAgXCJub2RlIC12XCIsXG4gIFwiY29yZXBhY2sgLS12ZXJzaW9uXCIsXG4gIFwicG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlIC0taWdub3JlLXNjcmlwdHNcIixcbl07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhZ2VFbnZQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBiZXRhIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBiZXRhOiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIGdhbW1hIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBnYW1tYTogRW52aXJvbm1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgZm9yIHRoZSBwcm9kIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBwcm9kOiBFbnZpcm9ubWVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0NvbmZpZ1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgYmV0YSAoZGV2KSBzdGFnZVxuICAgKi9cbiAgcmVhZG9ubHkgYmV0YTogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgZ2FtbWEgKHN0Zykgc3RhZ2VcbiAgICovXG4gIHJlYWRvbmx5IGdhbW1hOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwcm9kIHN0YWdlXG4gICAqL1xuICByZWFkb25seSBwcm9kOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHByZS1kZXBsb3ltZW50IGRyaWZ0IGRldGVjdGlvbiBjaGVja3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRHJpZnRDaGVja0NvbmZpZyB7XG4gIC8qKlxuICAgKiBDREsgQ0xJIGVudHJ5cG9pbnQgdXNlZCB0byBydW4gdGhlIGRyaWZ0IGNvbW1hbmQuXG4gICAqIEV4YW1wbGVzOiBcInBucG0gY2RrXCIsIFwicG5wbSBjZGstc3RhdGVmdWxcIiwgXCJwbnBtIGNkay1zdGF0ZWxlc3NcIi5cbiAgICogTXVzdCBzdXBwb3J0OiBcImRyaWZ0IDxzdGFja0lkPlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrQ29tbWFuZDogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbWFuZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcyBiZWZvcmUgcnVubmluZyBDREsuXG4gICAqIElmIHlvdXIgYXBwIGlzIGluIGEgc3ViZGlyZWN0b3J5LCBwcmVmaXggd2l0aCBcImNkIDxkaXI+ICYmXCIuXG4gICAqIEV4YW1wbGU6IFwiY2QgZGV2ICYmIHBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCJcbiAgICpcbiAgICogRGVmYXVsdDogXCJwbnBtIGluc3RhbGwgLS1mcm96ZW4tbG9ja2ZpbGUgLS1pZ25vcmUtc2NyaXB0c1wiXG4gICAqL1xuICByZWFkb25seSBpbnN0YWxsQ29tbWFuZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb2RlQnVpbGRTdGVwUHJvcHMge1xuICAvKipcbiAgICogdGhlIG1haW4gY29tbWFuZCBmb3IgdGhlIGJ1aWxkIHN0ZXAgdG8gcnVuXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFBhcnRpYWwgYnVpbGRzcGVjIGZvciB0aGlzIENvZGVCdWlsZFN0ZXBcbiAgICovXG4gIHJlYWRvbmx5IHBhcnRpYWxCdWlsZFNwZWM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKipcbiAgICogVGhlIGluc3RhbGwgY29tbWFuZHMgdG8gcnVuIGJlZm9yZSB0aGUgbWFpbiBjb21tYW5kLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbENvbW1hbmRzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95bWVudFN0YWNrUGlwZWxpbmVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgR2l0SHViIGJyYW5jaCBuYW1lIHRoZSBwaXBlbGluZSB3aWxsIGxpc3RlbiB0by5cbiAgICogQXZvaWQgdXNpbmcgYnJhbmNoIG5hbWVzIHRoYXQgY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMgc3VjaCBhcyBwYXJlbnRoZXNlcy5cbiAgICogQWxsb3dlZCBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlOiBcIisgLSA9IC4gXyA6IC8gQFwiLlxuICAgKiBUaGlzIHJlc3RyaWN0aW9uIGlzIGR1ZSB0byBBV1MgcmVzb3VyY2UgdGFnZ2luZyByZXF1aXJlbWVudHMuXG4gICAqL1xuICByZWFkb25seSBnaXRodWJCcmFuY2g6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IG5hbWUgdGhhdCBleGlzdCBpbiB0aGUgJ09yY2FCdXMnIGdpdGh1YiBvcmdhbmlzYXRpb24uIGUuZy4gYGEtbWljcm8tc2VydmljZS1yZXBvYFxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViUmVwbzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN0YWNrIHRvIHdoaWNoIHRoZSBwaXBlbGluZSB3aWxsIGJlIGRlcGxveWluZyB0byBpdHMgcmVzcGVjdGl2ZSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBzdGFjazogYW55O1xuICAvKipcbiAgICogVGhlIHN0YWNrIG5hbWUgKGluIGNsb3VkZm9ybWF0aW9uKSBmb3IgdGhlIHN0YWNrIGRlZmluZWQgaW4gYHN0YWNrYC4gVGhlIHN0YWNrIG5hbWUgd2lsbCBwcmVwZW5kIHdpdGggdGhlIHN0YWdlXG4gICAqIG5hbWUgZS5nLiBgT3JjYUJ1c0JldGEtPHN0YWNrTmFtZT5gLCBgT3JjYUJ1c0dhbW1hLTxzdGFja05hbWU+YCwgYE9yY2FCdXNQcm9kLTxzdGFja05hbWU+YFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgY29uZmlndXJhdGlvbi9jb25zdGFudHMgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgc3RhY2sgcHJvcHMuXG4gICAqL1xuICByZWFkb25seSBzdGFja0NvbmZpZzogU3RhY2tDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFRoZSBwaXBlbGluZSBuYW1lIGluIHRoZSBiYXN0aW9uIGFjY291bnQuXG4gICAqL1xuICByZWFkb25seSBwaXBlbGluZU5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHBhdHRlcm5zIG9mIEdpdCByZXBvc2l0b3J5IGZpbGUgcGF0aHMgdGhhdCwgd2hlbiBhIGNvbW1pdCBpcyBwdXNoZWQsIGFyZSB0byBiZSBJTkNMVURFRCBhcyBjcml0ZXJpYSB0aGF0IHN0YXJ0cyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBwYXR0ZXJucyBvZiBHaXQgcmVwb3NpdG9yeSBmaWxlIHBhdGhzIHRoYXQsIHdoZW4gYSBjb21taXQgaXMgcHVzaGVkLCBhcmUgdG8gYmUgRVhDTFVERUQgZnJvbSBzdGFydGluZyB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWNvZGVwaXBlbGluZS1waXBlbGluZS1naXRmaWxlcGF0aGZpbHRlcmNyaXRlcmlhLmh0bWxcbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGVkRmlsZVBhdGhzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBydW4gdG8gc3ludGggdGhlIGNkayBzdGFjayB3aGljaCBhbHNvIGluc3RhbGxpbmcgdGhlIGNkayBkZXBlbmRlbmNpZXMuIGUuZy4gW1wicG5wbSBpbnN0YWxsIC0tZnJvemVuLWxvY2tmaWxlXCIsIFwicG5wbSBjZGsgc3ludGhcIl1cbiAgICovXG4gIHJlYWRvbmx5IGNka1N5bnRoQ21kOiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgY2RrIG91dHB1dCB3aWxsIGJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgY2RrLm91dFxuICAgKi9cbiAgcmVhZG9ubHkgY2RrT3V0Pzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgQ29kZUJ1aWxkIHN0ZXAgZHVyaW5nIHRoZSBDREsgc3ludGggcGhhc2UuIEl0IHdpbGwgYmUgcGFzc2VkIGFzIHRoZVxuICAgKiBgcGFydGlhbEJ1aWxkU3BlY2AgdG8gdGhlIGBDb2RlQnVpbGRTdGVwYC5cbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVF9QQVJUSUFMX0JVSUxEX1NQRUNcbiAgICovXG4gIHJlYWRvbmx5IHN5bnRoQnVpbGRTcGVjPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqXG4gICAqIFRoZSBpbnN0YWxsIGNvbW1hbmRzIGZvciB0aGUgc3ludGggc3RlcC5cbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVF9JTlNUQUxMX0NPTU1BTkRTXG4gICAqL1xuICByZWFkb25seSBzeW50aEluc3RhbGxDb21tYW5kcz86IHN0cmluZ1tdO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBzdGVwIHRoYXQgcnVucyB1bml0IHRlc3RzIGZvciB0aGUgbWFpbiBhcHBsaWNhdGlvbiBjb2RlLlxuICAgKiBUaGlzIHN0ZXAgd2lsbCBleGVjdXRlIGluIHBhcmFsbGVsIHdpdGgge0BsaW5rIHVuaXRJYWNUZXN0Q29uZmlnfSBhcyBwYXJ0IG9mIHRoZSBzeW50aCBzdGFnZSBkZXBlbmRlbmNpZXMuXG4gICAqIEJvdGggbXVzdCBzdWNjZWVkIGJlZm9yZSB0aGUgc3ludGggc3RlcCBydW5zLlxuICAgKlxuICAgKiBlbnN1cmUgeW91ciBjb21tYW5kIGluY2x1ZGVzICdjZCcgdG8gdGhlIG1haW4gYXBwIGRpcmVjdG9yeSwgYXMgdGhlIGJ1aWxkIGNvbnRleHQgc3RhcnRzIGZyb20gdGhlIHJvb3QuXG4gICAqL1xuICByZWFkb25seSB1bml0QXBwVGVzdENvbmZpZzogQ29kZUJ1aWxkU3RlcFByb3BzO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIENvZGVCdWlsZCBzdGVwIHRoYXQgcnVucyB1bml0IHRlc3RzIGZvciBJbmZyYXN0cnVjdHVyZS1hcy1Db2RlIChJYUMpIGF0IHRoZSByZXBvc2l0b3J5IHJvb3QuXG4gICAqIFRoaXMgc3RlcCB3aWxsIGV4ZWN1dGUgaW4gcGFyYWxsZWwgd2l0aCB7QGxpbmsgdW5pdEFwcFRlc3RDb25maWd9IGFzIHBhcnQgb2YgdGhlIHN5bnRoIHN0YWdlIGRlcGVuZGVuY2llcy5cbiAgICogQm90aCBtdXN0IHN1Y2NlZWQgYmVmb3JlIHRoZSBzeW50aCBzdGVwIHJ1bnMuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGNvbW1hbmQgd2lsbCBiZSBmcm9tIHRoZSByb290IG9mIHRoZSByZXBvOiBbXCJucG0gaW5zdGFsbCAtLWdsb2JhbCBjb3JlcGFja0BsYXRlc3RcIiwgXCJjb3JlcGFjayBlbmFibGVcIiwgXCJtYWtlIGluc3RhbGxcIiwgXCJtYWtlIHRlc3RcIl1cbiAgICovXG4gIHJlYWRvbmx5IHVuaXRJYWNUZXN0Q29uZmlnPzogQ29kZUJ1aWxkU3RlcFByb3BzO1xuICAvKipcbiAgICogVGhlIHN0YWdlIGVudmlyb25tZW50IGZvciB0aGUgZGVwbG95bWVudCBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2VFbnY/OiBTdGFnZUVudlByb3BzO1xuICAvKipcbiAgICogRW5hYmxlIG5vdGlmaWNhdGlvbiB0byB0aGUgJ2FsZXJ0cy1idWlsZCcgc2xhY2sgY2hhbm5lbC5cbiAgICogQGRlZmF1bHQgVHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlU2xhY2tOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICAvKipcbiAgICogVGhlIHBpcGVsaW5lIG5vdGlmaWNhdGlvbiBldmVudHMgdGhhdCB3aWxsIHRyaWdnZXIgYSBTbGFjayBjaGFubmVsIG5vdGlmaWNhdGlvbi5cbiAgICogT25seSBhcHBsaWVzIGlmIGBlbmFibGVTbGFja05vdGlmaWNhdGlvbmAgaXMgc2V0IHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtQaXBlbGluZU5vdGlmaWNhdGlvbkV2ZW50cy5QSVBFTElORV9FWEVDVVRJT05fRkFJTEVEXSDigJNcbiAgICogICBPbmx5IGZhaWxlZCBwaXBlbGluZSBleGVjdXRpb25zIHdpbGwgdHJpZ2dlciBhIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbkV2ZW50cz86IFBpcGVsaW5lTm90aWZpY2F0aW9uRXZlbnRzW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmV1c2UgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBmb3IgY3Jvc3MtZGVwbG95bWVudCBwaXBlbGluZXMuXG4gICAqIElmIHNldCB0byB0cnVlLCBpdCB3aWxsIGxvb2sgdXAgdGhlIGV4aXN0aW5nIGFydGlmYWN0IGJ1Y2tldCBpbiB0aGUgVE9PTENIQUlOIGFjY291bnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhc3NldHMgZnJvbSB0aGUgQ0RLIGFzc2VtYmx5IHByZS1kZXBsb3ltZW50IHRvIHByZXZlbnQgaGl0dGluZyBDb2RlUGlwZWxpbmUncyAyNTYgTUIgYXJ0aWZhY3Qgc2l6ZSBsaW1pdC5cbiAgICogVXNlZnVsIHdoZW4gQ0RLIGFzc2V0cyAoTGFtYmRhIGNvZGUsIERvY2tlciBpbWFnZXMsIGV0Yy4pIGFyZSBsYXJnZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzk5MTdcbiAgICovXG4gIHJlYWRvbmx5IHN0cmlwQXNzZW1ibHlBc3NldHM/OiBib29sZWFuO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgZHJpZnQgZGV0ZWN0aW9uIGNoZWNrcyBiZWZvcmUgZGVwbG95bWVudC5cbiAgICogSWYgc3BlY2lmaWVkLCB0aGUgcGlwZWxpbmUgd2lsbCBjaGVjayBmb3IgQ2xvdWRGb3JtYXRpb24gZHJpZnQgYW5kIGZhaWwgaWYgZGV0ZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSBkcmlmdENoZWNrQ29uZmlnPzogRHJpZnRDaGVja0NvbmZpZztcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB0aGUgYGNhY2hlYCBvcHRpb25zIGZvciBlYWNoIGBDb2RlQnVpbGRTdGVwYC4gVGhpcyB3aWxsIGFsbG93IENvZGVCdWlsZCB0byB1c2VcbiAgICogUzMgY2FjaGluZyB3aXRoIHRoZSBgQ09ERUJVSUxEX0NBQ0hFX0JVQ0tFVGAgYnVja2V0LlxuICAgKlxuICAgKiBUaGUgcGFydGlhbCBidWlsZHNwZWMgbXVzdCBzdGlsbCBjb250YWluIGRlZmluaXRpb25zIGZvciBjYWNoZSBwYXRocyBhbmQga2V5cyBpZiB1c2VkLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jb2RlYnVpbGQvbGF0ZXN0L3VzZXJndWlkZS9idWlsZC1zcGVjLXJlZi5odG1sI2J1aWxkLXNwZWMuY2FjaGVcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlT3B0aW9ucz86IENhY2hlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBTMyBjYWNoZSB0byB1c2UgYWNyb3NzIGJ1aWxkIHN0ZXBzLiBJZiBzcGVjaWZpZWQsIHRoZSBidWNrZXQgdW5kZXJcbiAqIGBDT0RFQlVJTERfQ0FDSEVfQlVDS0VUYCB3aWxsIGJlIHVzZWQgZm9yIGNhY2hpbmcuIFRoaXMgYnVja2V0IGlzIG1hbmFnZWQgYnkgdGhlIHNoYXJlZC1yZXNvdXJjZXNcbiAqIHNlcnZpY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIG5hbWVzcGFjZSBmb3IgdGhlIGNhY2hlLiBUaGlzIG9wdGlvbiBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZSBjYWNoZSBidWNrZXQgaXMgc2hhcmVkIGFjcm9zc1xuICAgKiBhbGwgcHJvamVjdHMgc28gYSBuYW1lc3BhY2UgaXMgcmVxdWlyZWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlIGNhY2hlLiBVc2UgdGhlIHByb2plY3QgbmFtZSwgZS5nLiBgZmlsZW1hbmFnZXJgLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IGZvciB0aGUgY2FjaGUgY29udHJvbGxpbmcgdGhlIHByZWZpeCBvbiBTMy4gSWYgbGVmdCB1bnNwZWNpZmllZCwgdGhpcyB3aWxsIGRlZmF1bHQgdG8gdGhlIG5hbWVzcGFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwYXRocyB0byBjYWNoZS4gVGhpcyB3aWxsIGRlZmF1bHQgdG8gdGhlIGBub2RlX21vZHVsZXNgIGRpcmVjdG9yeSBpZiB1bnNwZWNpZmllZC5cbiAgICpcbiAgICogTm90ZSB0aGF0IGlmIHRoZSBjYWNoZSBpcyBzcGVjaWZpZWQgaW4gdGhlIGJ1aWxkc3BlYywgdGhhdCBjb25maWcgd2lsbCB0YWtlIHByZWNlZGVuY2UuIFRoaXMgb3B0aW9uIGlzIG9ubHkgdXNlZFxuICAgKiBhcyBhIGNvbnZlbmllbmNlIHRvIHNwZWNpZnkgcGF0aHMsIGFuZCB3aWxsIG5vdCBvdmVycmlkZSB0aGUgYnVpbGRzcGVjIGNhY2hlIGNvbmZpZy5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY29kZWJ1aWxkL2xhdGVzdC91c2VyZ3VpZGUvYnVpbGQtc3BlYy1yZWYuaHRtbCNidWlsZC1zcGVjLmNhY2hlXG4gICAqL1xuICByZWFkb25seSBwYXRocz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgQ0RLIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYSBkZXBsb3ltZW50IHBpcGVsaW5lIGFjcm9zcyBlbnZpcm9ubWVudHMgZm9yIHRoZSBPcmNhQnVzIHByb2plY3QuXG4gKlxuICogUHJlcmVxdWlzaXRlOiBFbnN1cmUgdGhhdCB0aGUgXCJDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldFwiIHN0YWNrIGlzIGRlcGxveWVkIGluIHRoZSBUT09MQ0hBSU4gYWNjb3VudFxuICogYmVmb3JlIHVzaW5nIHRoaXMgY29uc3RydWN0LlxuICovXG5leHBvcnQgY2xhc3MgRGVwbG95bWVudFN0YWNrUGlwZWxpbmUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGNvZGUgcGlwZWxpbmUgY29uc3RydWN0IHRoYXQgaXMgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBpcGVsaW5lOiBQaXBlbGluZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IERlcGxveW1lbnRTdGFja1BpcGVsaW5lUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb2RlU3RhckFybiA9IFN0cmluZ1BhcmFtZXRlci52YWx1ZUZvclN0cmluZ1BhcmFtZXRlcihcbiAgICAgIHRoaXMsXG4gICAgICBcImNvZGVzdGFyX2dpdGh1Yl9hcm5cIixcbiAgICApO1xuICAgIGNvbnN0IGNvZGVTdGFyU291cmNlQWN0aW9uTmFtZSA9IFwicGlwZWxpbmUtc3JjXCI7XG4gICAgY29uc3Qgc291cmNlRmlsZSA9IENvZGVQaXBlbGluZVNvdXJjZS5jb25uZWN0aW9uKFxuICAgICAgYE9yY2FCdXMvJHtwcm9wcy5naXRodWJSZXBvfWAsXG4gICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICB7XG4gICAgICAgIGNvbm5lY3Rpb25Bcm46IGNvZGVTdGFyQXJuLFxuICAgICAgICBhY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgIHRyaWdnZXJPblB1c2g6IHRydWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBpc1JldXNpbmdFeGlzdGluZ0FydGlmYWN0QnVja2V0ID1cbiAgICAgIHByb3BzLnJldXNlRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldCA/PyB0cnVlO1xuICAgIGNvbnN0IGFydGlmYWN0QnVja2V0ID0gaXNSZXVzaW5nRXhpc3RpbmdBcnRpZmFjdEJ1Y2tldFxuICAgICAgPyBDcm9zc0RlcGxveW1lbnRBcnRpZmFjdEJ1Y2tldC5mcm9tTG9va3VwKHRoaXMpLmFydGlmYWN0QnVja2V0XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgUGlwZWxpbmUodGhpcywgXCJEZXBsb3ltZW50Q29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGFydGlmYWN0QnVja2V0OiBhcnRpZmFjdEJ1Y2tldCxcbiAgICAgIHBpcGVsaW5lVHlwZTogUGlwZWxpbmVUeXBlLlYyLFxuICAgICAgcGlwZWxpbmVOYW1lOiBwcm9wcy5waXBlbGluZU5hbWUsXG4gICAgICBjcm9zc0FjY291bnRLZXlzOiB0cnVlLFxuICAgICAgLy8gZW5hYmxlIHJlc3RhcnRFeGVjdXRpb25PblVwZGF0ZVxuICAgICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNzU3MDE3NzYvdXBkYXRlcGlwZWxpbmUtc3RhZ2UtaW4tY2RrLXBpcGVsaW5lLWlzLWNhbmNlbGxlZFxuICAgICAgcmVzdGFydEV4ZWN1dGlvbk9uVXBkYXRlOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgaWYgKHByb3BzLmluY2x1ZGVkRmlsZVBhdGhzIHx8IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzKSB7XG4gICAgICBjb25zdCBmaWxlUGF0aHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuXG4gICAgICBpZiAocHJvcHMuaW5jbHVkZWRGaWxlUGF0aHMpIHtcbiAgICAgICAgZmlsZVBhdGhzW1wiSW5jbHVkZXNcIl0gPSBwcm9wcy5pbmNsdWRlZEZpbGVQYXRocztcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5leGNsdWRlZEZpbGVQYXRocykge1xuICAgICAgICBmaWxlUGF0aHNbXCJFeGNsdWRlc1wiXSA9IHByb3BzLmV4Y2x1ZGVkRmlsZVBhdGhzO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgZXZlbnQgZmlsdGVyIHRvIG9ubHkgdHJpZ2dlciBpZiB0aGUgcHVzaCBldmVudCBpcyBmcm9tIGBkZXBsb3lgIGRpcmVjdG9yeVxuICAgICAgY29uc3QgY2ZuUGlwZWxpbmUgPSB0aGlzLnBpcGVsaW5lLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblBpcGVsaW5lO1xuICAgICAgY2ZuUGlwZWxpbmUuYWRkUHJvcGVydHlPdmVycmlkZShcIlRyaWdnZXJzXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIEdpdENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIFB1c2g6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEJyYW5jaGVzOiB7XG4gICAgICAgICAgICAgICAgICBJbmNsdWRlczogW3Byb3BzLmdpdGh1YkJyYW5jaF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBGaWxlUGF0aHM6IGZpbGVQYXRocyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBTb3VyY2VBY3Rpb25OYW1lOiBjb2RlU3RhclNvdXJjZUFjdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBQcm92aWRlclR5cGU6IFwiQ29kZVN0YXJTb3VyY2VDb25uZWN0aW9uXCIsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG5cbiAgICBsZXQgY2FjaGVCdWNrZXQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGNhY2hlT3B0aW9uczogQnVja2V0Q2FjaGVPcHRpb25zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5jYWNoZU9wdGlvbnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2FjaGVCdWNrZXQgPSBDb2RlQnVpbGRDYWNoZUJ1Y2tldC5mcm9tTG9va3VwKHRoaXMpLmNhY2hlQnVja2V0O1xuICAgICAgY2FjaGVPcHRpb25zID0ge1xuICAgICAgICBjYWNoZU5hbWVzcGFjZTogcHJvcHMuY2FjaGVPcHRpb25zLm5hbWVzcGFjZSxcbiAgICAgICAgcHJlZml4OiBwcm9wcy5jYWNoZU9wdGlvbnMucHJlZml4ID8/IHByb3BzLmNhY2hlT3B0aW9ucy5uYW1lc3BhY2UsXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCBzZXRDYWNoZVBhdGhzID0gKGJ1aWxkU3BlYzogUmVjb3JkPHN0cmluZywgYW55PiB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgaWYgKGJ1aWxkU3BlYyAhPT0gdW5kZWZpbmVkICYmICEoXCJjYWNoZVwiIGluIGJ1aWxkU3BlYykpIHtcbiAgICAgICAgYnVpbGRTcGVjW1wiY2FjaGVcIl0gPSB7XG4gICAgICAgICAgcGF0aHM6IHByb3BzLmNhY2hlT3B0aW9ucz8ucGF0aHMgPz8gW1wibm9kZV9tb2R1bGVzLyoqLypcIl0sXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIEFkZCB1bml0IHRlc3QgZm9yIElhQyBhdCB0aGUgcm9vdCBvZiB0aGVcbiAgICBjb25zdCB7XG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IHVuaXRJYWNUZXN0SW5zdGFsbCA9IERFRkFVTFRfSU5TVEFMTF9DT01NQU5EUyxcbiAgICAgIGNvbW1hbmQ6IHVuaXRJYWNUZXN0Q29tbWFuZCA9IFtcInBucG0gdGVzdFwiXSxcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IHVuaXRJYWNQYXJ0aWFsQnVpbGRTcGVjID0gc3RydWN0dXJlZENsb25lKFxuICAgICAgICBERUZBVUxUX1BBUlRJQUxfQlVJTERfU1BFQyxcbiAgICAgICksXG4gICAgfSA9IHByb3BzLnVuaXRJYWNUZXN0Q29uZmlnIHx8IHt9O1xuICAgIHNldENhY2hlUGF0aHModW5pdElhY1BhcnRpYWxCdWlsZFNwZWMpO1xuXG4gICAgY29uc3QgdW5pdElhY1Rlc3QgPSBuZXcgQ29kZUJ1aWxkU3RlcChcIlVuaXRJYWNUZXN0XCIsIHtcbiAgICAgIGluc3RhbGxDb21tYW5kczogdW5pdElhY1Rlc3RJbnN0YWxsLFxuICAgICAgY29tbWFuZHM6IHVuaXRJYWNUZXN0Q29tbWFuZCxcbiAgICAgIGlucHV0OiBzb3VyY2VGaWxlLFxuICAgICAgYnVpbGRFbnZpcm9ubWVudDoge1xuICAgICAgICBwcml2aWxlZ2VkOiB0cnVlLFxuICAgICAgICBjb21wdXRlVHlwZTogQ29tcHV0ZVR5cGUuTEFSR0UsXG4gICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgICAgTk9ERV9PUFRJT05TOiB7XG4gICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiB1bml0SWFjUGFydGlhbEJ1aWxkU3BlY1xuICAgICAgICA/IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHVuaXRJYWNQYXJ0aWFsQnVpbGRTcGVjKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGNhY2hlOiBjYWNoZUJ1Y2tldCA/IENhY2hlLmJ1Y2tldChjYWNoZUJ1Y2tldCwgY2FjaGVPcHRpb25zKSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIC8vIEFkZGluZyB1bml0IHRlc3QgZm9yIHRoZSBtYWluIGFwcFxuICAgIGNvbnN0IHtcbiAgICAgIGNvbW1hbmQ6IHVuaXRBcHBUZXN0Q29tbWFuZCxcbiAgICAgIGluc3RhbGxDb21tYW5kczogdW5pdEFwcFRlc3RJbnN0YWxsID0gREVGQVVMVF9JTlNUQUxMX0NPTU1BTkRTLFxuICAgICAgcGFydGlhbEJ1aWxkU3BlYzogdW5pdEFwcFBhcnRpYWxCdWlsZFNwZWMgPSBzdHJ1Y3R1cmVkQ2xvbmUoXG4gICAgICAgIERFRkFVTFRfUEFSVElBTF9CVUlMRF9TUEVDLFxuICAgICAgKSxcbiAgICB9ID0gcHJvcHMudW5pdEFwcFRlc3RDb25maWc7XG4gICAgc2V0Q2FjaGVQYXRocyh1bml0QXBwUGFydGlhbEJ1aWxkU3BlYyk7XG5cbiAgICBjb25zdCB1bml0QXBwVGVzdCA9IG5ldyBDb2RlQnVpbGRTdGVwKFwiVW5pdEFwcFRlc3RcIiwge1xuICAgICAgY29tbWFuZHM6IHVuaXRBcHBUZXN0Q29tbWFuZCxcbiAgICAgIGluc3RhbGxDb21tYW5kczogdW5pdEFwcFRlc3RJbnN0YWxsLFxuICAgICAgaW5wdXQ6IHNvdXJjZUZpbGUsXG4gICAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICAgIHByaXZpbGVnZWQ6IHRydWUsXG4gICAgICAgIGNvbXB1dGVUeXBlOiBDb21wdXRlVHlwZS5MQVJHRSxcbiAgICAgICAgYnVpbGRJbWFnZTogTGludXhBcm1CdWlsZEltYWdlLkFNQVpPTl9MSU5VWF8yX1NUQU5EQVJEXzNfMCxcbiAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgICBOT0RFX09QVElPTlM6IHtcbiAgICAgICAgICAgIHZhbHVlOiBcIi0tbWF4LW9sZC1zcGFjZS1zaXplPTgxOTJcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IHVuaXRBcHBQYXJ0aWFsQnVpbGRTcGVjXG4gICAgICAgID8gQnVpbGRTcGVjLmZyb21PYmplY3QodW5pdEFwcFBhcnRpYWxCdWlsZFNwZWMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgY2FjaGU6IGNhY2hlQnVja2V0ID8gQ2FjaGUuYnVja2V0KGNhY2hlQnVja2V0LCBjYWNoZU9wdGlvbnMpIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgc3ludGhJbnN0YWxsQ29tbWFuZHMgPSBERUZBVUxUX0lOU1RBTExfQ09NTUFORFMsXG4gICAgICBzeW50aEJ1aWxkU3BlYyA9IHN0cnVjdHVyZWRDbG9uZShERUZBVUxUX1BBUlRJQUxfQlVJTERfU1BFQyksXG4gICAgfSA9IHByb3BzO1xuICAgIHNldENhY2hlUGF0aHMoc3ludGhCdWlsZFNwZWMpO1xuXG4gICAgY29uc3Qgc3ludGhTdGVwID0gbmV3IENvZGVCdWlsZFN0ZXAoXCJDZGtTeW50aFwiLCB7XG4gICAgICBpbnN0YWxsQ29tbWFuZHM6IHN5bnRoSW5zdGFsbENvbW1hbmRzLFxuICAgICAgY29tbWFuZHM6IHByb3BzLmNka1N5bnRoQ21kLFxuICAgICAgaW5wdXQ6IHNvdXJjZUZpbGUsXG4gICAgICBwcmltYXJ5T3V0cHV0RGlyZWN0b3J5OiBwcm9wcy5jZGtPdXQgfHwgXCJjZGsub3V0XCIsXG4gICAgICBwYXJ0aWFsQnVpbGRTcGVjOiBCdWlsZFNwZWMuZnJvbU9iamVjdChzeW50aEJ1aWxkU3BlYyksXG4gICAgICBjYWNoZTogY2FjaGVCdWNrZXQgPyBDYWNoZS5idWNrZXQoY2FjaGVCdWNrZXQsIGNhY2hlT3B0aW9ucykgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gICAgc3ludGhTdGVwLmFkZFN0ZXBEZXBlbmRlbmN5KHVuaXRJYWNUZXN0KTtcbiAgICBzeW50aFN0ZXAuYWRkU3RlcERlcGVuZGVuY3kodW5pdEFwcFRlc3QpO1xuXG4gICAgY29uc3QgY2RrUGlwZWxpbmUgPSBuZXcgQ29kZVBpcGVsaW5lKHRoaXMsIFwiQ0RLQ29kZVBpcGVsaW5lXCIsIHtcbiAgICAgIGNvZGVQaXBlbGluZTogdGhpcy5waXBlbGluZSxcbiAgICAgIHN5bnRoOiBzeW50aFN0ZXAsXG4gICAgICBzZWxmTXV0YXRpb246IHRydWUsXG4gICAgICBjb2RlQnVpbGREZWZhdWx0czoge1xuICAgICAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICAgICAgY29tcHV0ZVR5cGU6IENvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICAgIGJ1aWxkSW1hZ2U6IExpbnV4QXJtQnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl9TVEFOREFSRF8zXzAsXG4gICAgICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgICAgIE5PREVfT1BUSU9OUzoge1xuICAgICAgICAgICAgICB2YWx1ZTogXCItLW1heC1vbGQtc3BhY2Utc2l6ZT04MTkyXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVmYXVsdFN0YWdlRW52OiBTdGFnZUVudlByb3BzID0ge1xuICAgICAgYmV0YTogQkVUQV9FTlZJUk9OTUVOVCxcbiAgICAgIGdhbW1hOiBHQU1NQV9FTlZJUk9OTUVOVCxcbiAgICAgIHByb2Q6IFBST0RfRU5WSVJPTk1FTlQsXG4gICAgfTtcbiAgICBjb25zdCBzdGFnZUVudiA9IHByb3BzLnN0YWdlRW52IHx8IGRlZmF1bHRTdGFnZUVudjtcblxuICAgIC8vIEFmdGVyIGFzc2V0cyBhcmUgcHVibGlzaGVkLCB0aGV5IGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIGFzc2VtYmx5IGRpcmVjdG9yeVxuICAgIC8vIHRvIGhlbHAgcHJldmVudCBoaXR0aW5nIHRoZSBDb2RlUGlwZWxpbmUgYXJ0aWZhY3QgbGltaXQuXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy85OTE3XG4gICAgbGV0IHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5OiBDb2RlQnVpbGRTdGVwIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5zdHJpcEFzc2VtYmx5QXNzZXRzKSB7XG4gICAgICBzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseSA9IG5ldyBDb2RlQnVpbGRTdGVwKFwiU3RyaXBBc3NldHNGcm9tQXNzZW1ibHlcIiwge1xuICAgICAgICBpbnB1dDogY2RrUGlwZWxpbmUuY2xvdWRBc3NlbWJseUZpbGVTZXQsXG4gICAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICAgJ1MzX1BBVEg9JHtDT0RFQlVJTERfU09VUkNFX1ZFUlNJT04jXCJhcm46YXdzOnMzOjo6XCJ9JyxcbiAgICAgICAgICBcIlpJUF9BUkNISVZFPSQoYmFzZW5hbWUgJFMzX1BBVEgpXCIsXG4gICAgICAgICAgXCJlY2hvICRTM19QQVRIXCIsXG4gICAgICAgICAgXCJlY2hvICRaSVBfQVJDSElWRVwiLFxuICAgICAgICAgIFwibHNcIixcbiAgICAgICAgICBcInJtIC1yZnYgYXNzZXQuKlwiLFxuICAgICAgICAgIFwiemlwIC1yIC1xIC1BICRaSVBfQVJDSElWRSAqXCIsXG4gICAgICAgICAgXCJsc1wiLFxuICAgICAgICAgIFwiYXdzIHMzIGNwICRaSVBfQVJDSElWRSBzMzovLyRTM19QQVRIXCIsXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY2RrUGlwZWxpbmUuYWRkV2F2ZShcIkJlZm9yZVN0YWdlRGVwbG95bWVudFwiLCB7XG4gICAgICAgIHByZTogW3N0cmlwQXNzZXRzRnJvbUFzc2VtYmx5XSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIENvbnN0cnVjdCBmdW5jdGlvbiB0byBnZXQgU3RhY2tJZCBmb3IgZHJpZnQgY2hlY2tcbiAgICBjb25zdCByb290U3RhY2tOYW1lID0gU3RhY2sub2YodGhpcykuc3RhY2tOYW1lO1xuICAgIGNvbnN0IGNvbnN0cnVjdElkID0gdGhpcy5ub2RlLmlkO1xuICAgIGNvbnN0IGdldFN0YWNrSWQgPSAoZW52TmFtZTogc3RyaW5nKSA9PlxuICAgICAgYCR7cm9vdFN0YWNrTmFtZX0vJHtjb25zdHJ1Y3RJZH0vJHtlbnZOYW1lfS8ke3Byb3BzLnN0YWNrTmFtZX1gO1xuXG4gICAgLy8gRHJpZnQgY2hlY2sgY29uZmlnXG4gICAgY29uc3QgaXNEcmlmdENoZWNrU3RlcCA9ICEhcHJvcHMuZHJpZnRDaGVja0NvbmZpZztcbiAgICBjb25zdCBjZGtJbnN0YWxsQ21kID0gcHJvcHMuZHJpZnRDaGVja0NvbmZpZz8uaW5zdGFsbENvbW1hbmQ7XG4gICAgY29uc3QgY2RrUnVuQ21kID0gcHJvcHMuZHJpZnRDaGVja0NvbmZpZz8uY2RrQ29tbWFuZCA/PyBgYDtcblxuICAgIGNvbnN0IGJldGFFbnZOYW1lID0gXCJPcmNhQnVzQmV0YVwiO1xuICAgIGNka1BpcGVsaW5lLmFkZFN0YWdlKFxuICAgICAgbmV3IERlcGxveW1lbnRTdGFnZShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgYmV0YUVudk5hbWUsXG4gICAgICAgIHN0YWdlRW52LmJldGEsXG4gICAgICAgIHByb3BzLnN0YWNrTmFtZSxcbiAgICAgICAgcHJvcHMuc3RhY2ssXG4gICAgICAgIHByb3BzLnN0YWNrQ29uZmlnLmJldGEsXG4gICAgICAgIHByb3BzLmdpdGh1YlJlcG8sXG4gICAgICAgIHByb3BzLmdpdGh1YkJyYW5jaCxcbiAgICAgICksXG4gICAgICB7XG4gICAgICAgIHByZTogaXNEcmlmdENoZWNrU3RlcFxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICBuZXcgRmFpbE9uRHJpZnRCdWlsZFN0ZXAoXCJEcmlmdE9uRmFpbEJldGFDaGVja1wiLCB7XG4gICAgICAgICAgICAgICAgYWNjb3VudEVudjogc3RhZ2VFbnYuYmV0YSxcbiAgICAgICAgICAgICAgICBzdGFja0lkOiBnZXRTdGFja0lkKGJldGFFbnZOYW1lKSxcbiAgICAgICAgICAgICAgICBjZGtDb21tYW5kOiBjZGtSdW5DbWQsXG4gICAgICAgICAgICAgICAgaW5zdGFsbENvbW1hbmQ6IGNka0luc3RhbGxDbWQsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICogR0FNTUFcbiAgICAgKi9cbiAgICBjb25zdCBnYW1tYUVudk5hbWUgPSBcIk9yY2FCdXNHYW1tYVwiO1xuXG4gICAgY2RrUGlwZWxpbmUuYWRkU3RhZ2UoXG4gICAgICBuZXcgRGVwbG95bWVudFN0YWdlKFxuICAgICAgICB0aGlzLFxuICAgICAgICBnYW1tYUVudk5hbWUsXG4gICAgICAgIHN0YWdlRW52LmdhbW1hLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5nYW1tYSxcbiAgICAgICAgcHJvcHMuZ2l0aHViUmVwbyxcbiAgICAgICAgcHJvcHMuZ2l0aHViQnJhbmNoLFxuICAgICAgKSxcbiAgICAgIHtcbiAgICAgICAgcHJlOiBpc0RyaWZ0Q2hlY2tTdGVwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIG5ldyBGYWlsT25EcmlmdEJ1aWxkU3RlcChcIkRyaWZ0T25GYWlsR2FtbWFDaGVja1wiLCB7XG4gICAgICAgICAgICAgICAgYWNjb3VudEVudjogc3RhZ2VFbnYuZ2FtbWEsXG4gICAgICAgICAgICAgICAgc3RhY2tJZDogZ2V0U3RhY2tJZChnYW1tYUVudk5hbWUpLFxuICAgICAgICAgICAgICAgIGNka0NvbW1hbmQ6IGNka1J1bkNtZCxcbiAgICAgICAgICAgICAgICBpbnN0YWxsQ29tbWFuZDogY2RrSW5zdGFsbENtZCxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHBvc3Q6IFtcbiAgICAgICAgICBuZXcgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwKFwiUHJvbW90ZVRvUHJvZFwiLCB7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiBcIlByb21vdGVUb1Byb2RcIixcbiAgICAgICAgICAgIC8vIEN1c3RvbSBzdGVwcyBieXBhc3Mgc3RhZ2UgcHJlL3Bvc3Qgb3JkZXJpbmcsIHNvIHJ1bk9yZGVyIG11c3QgYmUgZXhwbGljaXRseSBzZXQuXG4gICAgICAgICAgICAvLyBTZXQgdG8gNSB0byBlbnN1cmUgdGhpcyBydW5zIGFmdGVyIGFsbCBPcmNhQnVzR2FtbWEgc3RhZ2Ugc3RlcHMgY29tcGxldGUuXG4gICAgICAgICAgICAvLyAoR2FtbWEgZGVwbG95bWVudCB0eXBpY2FsbHkgdXNlcyAyIHN0ZXBzLCBzbyA1IHByb3ZpZGVzIGFkZXF1YXRlIGJ1ZmZlcilcbiAgICAgICAgICAgIHJ1bk9yZGVyOiA1LFxuICAgICAgICAgICAgLy8gNjAtbWludXRlIHRpbWVvdXQgYWxsb3dzIHF1ZXVlZCBwaXBlbGluZSBleGVjdXRpb25zIHRvIHByb2NlZWQgaWYgYXBwcm92YWwgZXhwaXJlc1xuICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBQUk9EXG4gICAgICovXG4gICAgY29uc3QgcHJvZEVudk5hbWUgPSBcIk9yY2FCdXNQcm9kXCI7XG5cbiAgICBjZGtQaXBlbGluZS5hZGRTdGFnZShcbiAgICAgIG5ldyBEZXBsb3ltZW50U3RhZ2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHByb2RFbnZOYW1lLFxuICAgICAgICBzdGFnZUVudi5wcm9kLFxuICAgICAgICBwcm9wcy5zdGFja05hbWUsXG4gICAgICAgIHByb3BzLnN0YWNrLFxuICAgICAgICBwcm9wcy5zdGFja0NvbmZpZy5wcm9kLFxuICAgICAgICBwcm9wcy5naXRodWJSZXBvLFxuICAgICAgICBwcm9wcy5naXRodWJCcmFuY2gsXG4gICAgICApLFxuICAgICAge1xuICAgICAgICBwcmU6IGlzRHJpZnRDaGVja1N0ZXBcbiAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgbmV3IEZhaWxPbkRyaWZ0QnVpbGRTdGVwKFwiRHJpZnRPbkZhaWxQcm9kQ2hlY2tcIiwge1xuICAgICAgICAgICAgICAgIGFjY291bnRFbnY6IHN0YWdlRW52LnByb2QsXG4gICAgICAgICAgICAgICAgc3RhY2tJZDogZ2V0U3RhY2tJZChwcm9kRW52TmFtZSksXG4gICAgICAgICAgICAgICAgY2RrQ29tbWFuZDogY2RrUnVuQ21kLFxuICAgICAgICAgICAgICAgIGluc3RhbGxDb21tYW5kOiBjZGtJbnN0YWxsQ21kLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNka1BpcGVsaW5lLmJ1aWxkUGlwZWxpbmUoKTtcblxuICAgIGlmIChzdHJpcEFzc2V0c0Zyb21Bc3NlbWJseSkge1xuICAgICAgY2RrUGlwZWxpbmUucGlwZWxpbmUuYXJ0aWZhY3RCdWNrZXQuZ3JhbnRSZWFkV3JpdGUoXG4gICAgICAgIHN0cmlwQXNzZXRzRnJvbUFzc2VtYmx5LnByb2plY3QsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5lbmFibGVTbGFja05vdGlmaWNhdGlvbiA/PyB0cnVlKSB7XG4gICAgICBjb25zdCBhbGVydHNCdWlsZFNsYWNrQ29uZmlnQXJuID0gU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yU3RyaW5nUGFyYW1ldGVyKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIi9jaGF0Ym90X2Fybi9zbGFjay9hbGVydHMtYnVpbGRcIixcbiAgICAgICk7XG4gICAgICBjb25zdCB0YXJnZXQgPSBTbGFja0NoYW5uZWxDb25maWd1cmF0aW9uLmZyb21TbGFja0NoYW5uZWxDb25maWd1cmF0aW9uQXJuKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIlNsYWNrQ2hhbm5lbENvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgYWxlcnRzQnVpbGRTbGFja0NvbmZpZ0FybixcbiAgICAgICk7XG5cbiAgICAgIHRoaXMucGlwZWxpbmUubm90aWZ5T24oXCJQaXBlbGluZVNsYWNrTm90aWZpY2F0aW9uXCIsIHRhcmdldCwge1xuICAgICAgICBldmVudHM6IHByb3BzLm5vdGlmaWNhdGlvbkV2ZW50cyB8fCBbXG4gICAgICAgICAgUGlwZWxpbmVOb3RpZmljYXRpb25FdmVudHMuUElQRUxJTkVfRVhFQ1VUSU9OX0ZBSUxFRCxcbiAgICAgICAgXSxcbiAgICAgICAgZGV0YWlsVHlwZTogRGV0YWlsVHlwZS5GVUxMLFxuICAgICAgICBub3RpZmljYXRpb25SdWxlTmFtZTogYE9yY2FCdXMtJHtwcm9wcy5waXBlbGluZU5hbWV9YCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIE1hbnVhbEFwcHJvdmFsQWN0aW9uU3RlcCB3aXRoIHJlcXVpcmVkIHJ1bk9yZGVyLlxuICovXG5pbnRlcmZhY2UgTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwUHJvcHMgZXh0ZW5kcyBNYW51YWxBcHByb3ZhbEFjdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBydW4gb3JkZXIgZm9yIHRoaXMgYWN0aW9uIGluIHRoZSBwaXBlbGluZSBzdGFnZS4gVGhlIHN0YWdlIFByZS9Qb3N0IG9yZGVyIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgY3VzdG9tXG4gICAqIHN0ZXAvYWN0aW9uLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCB0aGUgcnVuT3JkZXIuXG4gICAqL1xuICBydW5PcmRlcjogbnVtYmVyO1xufVxuLyoqXG4gKiBDdXN0b20gbWFudWFsIGFwcHJvdmFsIHN0ZXAgZm9yIENESyBDb2RlUGlwZWxpbmUuXG4gKlxuICogVGhpcyBjbGFzcyBicmlkZ2VzIHRoZSBnYXAgdG8gZW5hYmxlIHVzaW5nIE1hbnVhbEFwcHJvdmFsQWN0aW9uIHdpdGhpbiBhIFN0ZXAgY2xhc3MsXG4gKiBtYWtpbmcgaXQgY29tcGF0aWJsZSB3aXRoIGNkay5waXBlbGluZXMgY29uc3RydWN0cy5cbiAqXG4gKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzdGVwLlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgcHJvcGVydGllcyBmb3IgdGhlIG1hbnVhbCBhcHByb3ZhbCBhY3Rpb24sIGluY2x1ZGluZ1xuICovXG5jbGFzcyBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBcbiAgZXh0ZW5kcyBTdGVwXG4gIGltcGxlbWVudHMgSUNvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlcbntcbiAgcHJpdmF0ZSByZWFkb25seSBtYW51YWxBcHByb3ZhbEFjdGlvblByb3BzOiBNYW51YWxBcHByb3ZhbEFjdGlvblN0ZXBQcm9wcztcbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgb3B0aW9uczogTWFudWFsQXBwcm92YWxBY3Rpb25TdGVwUHJvcHMpIHtcbiAgICBzdXBlcihpZCk7XG4gICAgdGhpcy5tYW51YWxBcHByb3ZhbEFjdGlvblByb3BzID0gb3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBwcm9kdWNlQWN0aW9uKFxuICAgIHN0YWdlOiBJU3RhZ2UsXG4gICAgb3B0aW9uczogUHJvZHVjZUFjdGlvbk9wdGlvbnMsXG4gICk6IENvZGVQaXBlbGluZUFjdGlvbkZhY3RvcnlSZXN1bHQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgTWFudWFsQXBwcm92YWxBY3Rpb24odGhpcy5tYW51YWxBcHByb3ZhbEFjdGlvblByb3BzKSk7XG5cbiAgICByZXR1cm4geyBydW5PcmRlcnNDb25zdW1lZDogMSB9O1xuICB9XG59XG5cbmNsYXNzIERlcGxveW1lbnRTdGFnZSBleHRlbmRzIFN0YWdlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBlbnZpcm9ubWVudE5hbWU6IHN0cmluZyxcbiAgICBlbnY6IEVudmlyb25tZW50LFxuICAgIHN0YWNrTmFtZTogc3RyaW5nLFxuICAgIHN0YWNrQ2xhc3M6IG5ldyAoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IGFueSkgPT4gU3RhY2ssXG4gICAgYXBwU3RhY2tQcm9wczogYW55LFxuICAgIGdpdGh1YlJlcG86IHN0cmluZyxcbiAgICBnaXRodWJCcmFuY2g/OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBlbnZpcm9ubWVudE5hbWUsIHsgZW52OiBlbnYgfSk7XG5cbiAgICBsZXQgc291cmNlID0gYGh0dHBzOi8vZ2l0aHViLmNvbS9PcmNhQnVzLyR7Z2l0aHViUmVwb31gO1xuICAgIGlmIChnaXRodWJCcmFuY2ggIT09IHVuZGVmaW5lZCAmJiBnaXRodWJCcmFuY2ggIT09IFwibWFpblwiKSB7XG4gICAgICBzb3VyY2UgPSBgJHtzb3VyY2V9L3RyZWUvJHtnaXRodWJCcmFuY2h9YDtcbiAgICB9XG5cbiAgICBuZXcgc3RhY2tDbGFzcyh0aGlzLCBzdGFja05hbWUsIHtcbiAgICAgIGVudjogZW52LFxuICAgICAgdGFnczoge1xuICAgICAgICBcInVtY2NyLW9yZzpQcm9kdWN0XCI6IFwiT3JjYUJ1c1wiLFxuICAgICAgICBcInVtY2NyLW9yZzpDcmVhdG9yXCI6IFwiQ0RLXCIsXG4gICAgICAgIFwidW1jY3Itb3JnOlNlcnZpY2VcIjogc3RhY2tOYW1lLFxuICAgICAgICBcInVtY2NyLW9yZzpTb3VyY2VcIjogc291cmNlLFxuICAgICAgfSxcbiAgICAgIC4uLmFwcFN0YWNrUHJvcHMsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGYWlsT25EcmlmdEJ1aWxkU3RlcFByb3BzIHtcbiAgLyoqXG4gICAqIEFXUyBhY2NvdW50IGFuZCByZWdpb24gd2hlcmUgdGhlIGRyaWZ0IGNoZWNrIHJ1bnMuXG4gICAqIFVzZWQgdG8gYXNzdW1lIHRoZSBDREsgbG9va3VwIHJvbGUgYW5kIHNldCBBV1NfREVGQVVMVF9SRUdJT04uXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50RW52OiBFbnZpcm9ubWVudDtcbiAgLyoqXG4gICAqIEZ1bGx5IHF1YWxpZmllZCBDREsgc3RhY2sgSUQgdG8gY2hlY2sgZm9yIGRyaWZ0LlxuICAgKlxuICAgKiBGb3JtYXQ6IGA8cm9vdFN0YWNrPi88Y29uc3RydWN0SWQ+LzxlbnZOYW1lPi88c3RhY2tOYW1lPmBcbiAgICpcbiAgICogRXhhbXBsZTogYERldlN0YWNrL0RlcGxveW1lbnRQaXBlbGluZS9PcmNhQnVzQmV0YS9UZXN0U3RhY2tgXG4gICAqL1xuICByZWFkb25seSBzdGFja0lkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDREsgQ0xJIGVudHJ5cG9pbnQgdXNlZCB0byBydW4gdGhlIGRyaWZ0IGNvbW1hbmQuXG4gICAqIEV4YW1wbGVzOiBcInBucG0gY2RrXCIsIFwicG5wbSBjZGstc3RhdGVmdWxcIiwgXCJwbnBtIGNkay1zdGF0ZWxlc3NcIi5cbiAgICogTXVzdCBzdXBwb3J0OiBcImRyaWZ0IDxzdGFja0lkPlwiLlxuICAgKi9cbiAgcmVhZG9ubHkgY2RrQ29tbWFuZDogc3RyaW5nO1xuICAvKipcbiAgICogQ29tbWFuZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llcyBiZWZvcmUgcnVubmluZyBDREsuXG4gICAqIElmIHlvdXIgYXBwIGlzIGluIGEgc3ViZGlyZWN0b3J5LCBwcmVmaXggd2l0aCBcImNkIDxkaXI+ICYmXCIuXG4gICAqIEV4YW1wbGU6IFwiY2QgZGV2ICYmIHBucG0gaW5zdGFsbCAtLWZyb3plbi1sb2NrZmlsZSAtLWlnbm9yZS1zY3JpcHRzXCJcbiAgICpcbiAgICogQGRlZmF1bHQgREVGQVVMVF9JTlNUQUxMX0NPTU1BTkRTIG1lcmdlZCB3aXRoICYmLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbENvbW1hbmQ/OiBzdHJpbmc7XG59XG5cbmNsYXNzIEZhaWxPbkRyaWZ0QnVpbGRTdGVwIGV4dGVuZHMgQ29kZUJ1aWxkU3RlcCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAge1xuICAgICAgYWNjb3VudEVudixcbiAgICAgIHN0YWNrSWQsXG4gICAgICBjZGtDb21tYW5kLFxuICAgICAgaW5zdGFsbENvbW1hbmQsXG4gICAgfTogRmFpbE9uRHJpZnRCdWlsZFN0ZXBQcm9wcyxcbiAgKSB7XG4gICAgY29uc3QgY2RrSW5zdGFsbCA9IGluc3RhbGxDb21tYW5kXG4gICAgICA/IGluc3RhbGxDb21tYW5kXG4gICAgICA6IERFRkFVTFRfSU5TVEFMTF9DT01NQU5EUy5qb2luKFwiICYmIFwiKTtcblxuICAgIHN1cGVyKGlkLCB7XG4gICAgICBjb21tYW5kczogW1xuICAgICAgICBjZGtJbnN0YWxsLFxuXG4gICAgICAgIGBMT09LVVBfUk9MRV9BUk49XCJhcm46YXdzOmlhbTo6JHthY2NvdW50RW52LmFjY291bnR9OnJvbGUvY2RrLWhuYjY1OWZkcy1sb29rdXAtcm9sZS0ke2FjY291bnRFbnYuYWNjb3VudH0tJHthY2NvdW50RW52LnJlZ2lvbn1cImAsXG4gICAgICAgICdTRVNTSU9OX05BTUU9XCJkcmlmdC1jaGVja1wiJyxcbiAgICAgICAgJ3JlYWQgQVdTX0FDQ0VTU19LRVlfSUQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIEFXU19TRVNTSU9OX1RPS0VOIDwgPChhd3Mgc3RzIGFzc3VtZS1yb2xlIC0tcm9sZS1hcm4gXCIkTE9PS1VQX1JPTEVfQVJOXCIgLS1yb2xlLXNlc3Npb24tbmFtZSBcIiRTRVNTSU9OX05BTUVcIiAtLWR1cmF0aW9uLXNlY29uZHMgOTAwIC0tcXVlcnkgXFwnQ3JlZGVudGlhbHMuW0FjY2Vzc0tleUlkLFNlY3JldEFjY2Vzc0tleSxTZXNzaW9uVG9rZW5dXFwnIC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICAgXCJleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZIEFXU19TRVNTSU9OX1RPS0VOXCIsXG4gICAgICAgIGBleHBvcnQgQVdTX0RFRkFVTFRfUkVHSU9OPVwiJHthY2NvdW50RW52LnJlZ2lvbn1cImAsXG4gICAgICAgIFwiYXdzIHN0cyBnZXQtY2FsbGVyLWlkZW50aXR5XCIsXG5cbiAgICAgICAgYGlmICR7Y2RrQ29tbWFuZH0gbHMgfCBncmVwIC1GcSBcIiR7c3RhY2tJZH1cIjsgdGhlbiBlY2hvIFwiU3RhY2sgJHtzdGFja0lkfSBmb3VuZDsgY2hlY2tpbmcgZm9yIGRyaWZ0Li4uXCI7ICR7Y2RrQ29tbWFuZH0gZHJpZnQgXCIke3N0YWNrSWR9XCIgLWUgLS1mYWlsOyBlbHNlIGVjaG8gXCJTdGFjayBub3QgZm91bmQgaW4gY2RrIGxzOyBza2lwcGluZyBkcmlmdCBjaGVjay5cIjsgZmlgLFxuICAgICAgXSxcbiAgICAgIHJvbGVQb2xpY3lTdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcInN0czpBc3N1bWVSb2xlXCJdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6aWFtOjoke2FjY291bnRFbnYuYWNjb3VudH06cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLSR7YWNjb3VudEVudi5hY2NvdW50fS0ke2FjY291bnRFbnYucmVnaW9ufWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
package/dynamodb/index.js CHANGED
@@ -40,7 +40,7 @@ const dynamodb = __importStar(require("aws-cdk-lib/aws-dynamodb"));
40
40
  const aws_cdk_lib_1 = require("aws-cdk-lib");
41
41
  const config_1 = require("./config");
42
42
  class DynamoDbPartitionedConstruct extends constructs_1.Construct {
43
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "1.0.7" };
43
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbPartitionedConstruct", version: "1.0.8" };
44
44
  table;
45
45
  constructor(scope, id, props) {
46
46
  super(scope, id);
@@ -75,7 +75,7 @@ class DynamoDbPartitionedConstruct extends constructs_1.Construct {
75
75
  }
76
76
  exports.DynamoDbPartitionedConstruct = DynamoDbPartitionedConstruct;
77
77
  class DynamoDbNonPartitionedConstruct extends constructs_1.Construct {
78
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "1.0.7" };
78
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.dynamodb.DynamoDbNonPartitionedConstruct", version: "1.0.8" };
79
79
  table;
80
80
  constructor(scope, id, props) {
81
81
  super(scope, id);
package/ecs/index.js CHANGED
@@ -55,7 +55,7 @@ exports.LAMBDA_ARCHITECTURE_MAP = {
55
55
  ['ARM64']: lambda.Architecture.ARM_64
56
56
  };
57
57
  class EcsFargateTaskConstruct extends constructs_1.Construct {
58
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "1.0.7" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.ecs.EcsFargateTaskConstruct", version: "1.0.8" };
59
59
  cluster;
60
60
  taskDefinition;
61
61
  taskExecutionRole;
@@ -17,7 +17,7 @@ var SfnEventStatus;
17
17
  SfnEventStatus["ABORTED"] = "ABORTED";
18
18
  })(SfnEventStatus || (exports.SfnEventStatus = SfnEventStatus = {}));
19
19
  class SfnSlackNotification extends constructs_1.Construct {
20
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "1.0.7" };
20
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.eventbridgeRule.SfnSlackNotification", version: "1.0.8" };
21
21
  rule;
22
22
  constructor(scope, id, props) {
23
23
  super(scope, id);
package/lambda/index.js CHANGED
@@ -57,7 +57,7 @@ function getPythonUvDockerImage() {
57
57
  return aws_cdk_lib_1.DockerImage.fromBuild(path_1.default.join(__dirname, 'build_python'));
58
58
  }
59
59
  class PythonUvFunction extends aws_lambda_python_alpha_1.PythonFunction {
60
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "1.0.7" };
60
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.lambda.PythonUvFunction", version: "1.0.8" };
61
61
  // Class constructs, to be used for caching the layers
62
62
  // This means that if there are multiple lambdas throughout the stack
63
63
  // They will all use the same layer
@@ -39,6 +39,7 @@ class WESPatchRequest(TypedDict):
39
39
  icav2AnalysisId: NotRequired[str]
40
40
  errorType: NotRequired[str]
41
41
  errorMessageUri: NotRequired[str]
42
+ stepsLaunchExecutionArn: NotRequired[str]
42
43
 
43
44
 
44
45
  class WESResponse(TypedDict):
@@ -13,7 +13,7 @@ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
13
13
  * SNS topic.
14
14
  */
15
15
  class MonitoredQueue extends constructs_1.Construct {
16
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "1.0.7" };
16
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.monitoredQueue.MonitoredQueue", version: "1.0.8" };
17
17
  queue;
18
18
  deadLetterQueue;
19
19
  alarm;
@@ -7,7 +7,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
7
  * A construct which represents a named role that a Lambda function can assume.
8
8
  */
9
9
  class NamedLambdaRole extends aws_iam_1.Role {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "1.0.7" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.namedLambdaRole.NamedLambdaRole", version: "1.0.8" };
11
11
  constructor(scope, id, props) {
12
12
  super(scope, id, {
13
13
  assumedBy: new aws_iam_1.ServicePrincipal("lambda.amazonaws.com"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orcabus/platform-cdk-constructs",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "CDK Package for OrcaBus infrastructure.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -15,7 +15,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
15
15
  * to the provider framework.
16
16
  */
17
17
  class ProviderFunction extends constructs_1.Construct {
18
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "1.0.7" };
18
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.provider.ProviderFunction", version: "1.0.8" };
19
19
  _function;
20
20
  _response;
21
21
  constructor(scope, id, props) {
@@ -23,7 +23,7 @@ exports.VPC_LOOKUP_PROPS = {
23
23
  * Helper for looking up the shared OrcaBus VPC.
24
24
  */
25
25
  class OrcaBusVpc {
26
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "1.0.7" };
26
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusVpc", version: "1.0.8" };
27
27
  /**
28
28
  * The shared VPC that is used by OrcaBus.
29
29
  * @param scope
@@ -42,7 +42,7 @@ exports.SHARED_SECURITY_GROUP_NAME = "OrcaBusSharedComputeSecurityGroup";
42
42
  * Helper for looking up the shared compute security group by name.
43
43
  */
44
44
  class OrcaBusSharedComputeSecurityGroup {
45
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "1.0.7" };
45
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.networking.OrcaBusSharedComputeSecurityGroup", version: "1.0.8" };
46
46
  /**
47
47
  * The shared security group that is used by compute resources to access the database.
48
48
  * @param scope
@@ -11,7 +11,7 @@ exports.SLACK_ALERTS_SNS_TOPIC = "AwsChatBotTopic-alerts";
11
11
  * A helper class to construct the arn for the slack SNS topic.
12
12
  */
13
13
  class SlackAlerts {
14
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "1.0.7" };
14
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@orcabus/platform-cdk-constructs.sharedConfig.slack.SlackAlerts", version: "1.0.8" };
15
15
  /**
16
16
  * Format the ARN for the slack alerts SNS topic for the current stack.
17
17
  * @param stack