@aws-solutions-constructs/core 2.33.0 → 2.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/.jsii +252 -252
  2. package/lib/alb-defaults.d.ts +3 -0
  3. package/lib/alb-defaults.js +8 -1
  4. package/lib/alb-helper.d.ts +29 -0
  5. package/lib/alb-helper.js +34 -9
  6. package/lib/apigateway-defaults.d.ts +10 -0
  7. package/lib/apigateway-defaults.js +15 -1
  8. package/lib/apigateway-helper.d.ts +11 -0
  9. package/lib/apigateway-helper.js +12 -1
  10. package/lib/cloudfront-distribution-defaults.d.ts +9 -0
  11. package/lib/cloudfront-distribution-defaults.js +10 -1
  12. package/lib/cloudfront-distribution-helper.d.ts +12 -0
  13. package/lib/cloudfront-distribution-helper.js +17 -1
  14. package/lib/cloudwatch-log-group-defaults.d.ts +3 -0
  15. package/lib/cloudwatch-log-group-defaults.js +8 -1
  16. package/lib/cloudwatch-log-group-helper.d.ts +3 -0
  17. package/lib/cloudwatch-log-group-helper.js +14 -7
  18. package/lib/cognito-defaults.d.ts +6 -0
  19. package/lib/cognito-defaults.js +7 -1
  20. package/lib/cognito-helper.d.ts +15 -0
  21. package/lib/cognito-helper.js +20 -1
  22. package/lib/dynamodb-table-defaults.js +5 -1
  23. package/lib/dynamodb-table-helper.d.ts +12 -0
  24. package/lib/dynamodb-table-helper.js +17 -1
  25. package/lib/elasticache-defaults.d.ts +6 -0
  26. package/lib/elasticache-defaults.js +11 -1
  27. package/lib/elasticache-helper.d.ts +9 -0
  28. package/lib/elasticache-helper.js +10 -1
  29. package/lib/elasticsearch-defaults.d.ts +3 -0
  30. package/lib/elasticsearch-defaults.js +4 -1
  31. package/lib/elasticsearch-helper.d.ts +6 -0
  32. package/lib/elasticsearch-helper.js +11 -1
  33. package/lib/eventbridge-helper.d.ts +3 -0
  34. package/lib/eventbridge-helper.js +4 -1
  35. package/lib/events-rule-defaults.d.ts +3 -0
  36. package/lib/events-rule-defaults.js +4 -1
  37. package/lib/fargate-defaults.d.ts +15 -0
  38. package/lib/fargate-defaults.js +16 -1
  39. package/lib/fargate-helper.d.ts +9 -0
  40. package/lib/fargate-helper.js +10 -1
  41. package/lib/glue-database-defaults.d.ts +1 -1
  42. package/lib/glue-database-defaults.js +2 -2
  43. package/lib/glue-database-helper.d.ts +2 -0
  44. package/lib/glue-database-helper.js +7 -1
  45. package/lib/glue-job-defaults.d.ts +3 -0
  46. package/lib/glue-job-defaults.js +4 -1
  47. package/lib/glue-job-helper.d.ts +12 -0
  48. package/lib/glue-job-helper.js +13 -1
  49. package/lib/glue-table-defaults.d.ts +3 -0
  50. package/lib/glue-table-defaults.js +4 -1
  51. package/lib/glue-table-helper.d.ts +2 -0
  52. package/lib/glue-table-helper.js +7 -1
  53. package/lib/input-validation.d.ts +6 -0
  54. package/lib/input-validation.js +7 -1
  55. package/lib/iot-topic-rule-defaults.d.ts +3 -0
  56. package/lib/iot-topic-rule-defaults.js +4 -1
  57. package/lib/kinesis-analytics-defaults.js +1 -1
  58. package/lib/kinesis-analytics-helper.d.ts +3 -0
  59. package/lib/kinesis-analytics-helper.js +8 -1
  60. package/lib/kinesis-firehose-s3-defaults.d.ts +3 -0
  61. package/lib/kinesis-firehose-s3-defaults.js +4 -1
  62. package/lib/kinesis-streams-defaults.js +5 -1
  63. package/lib/kinesis-streams-helper.d.ts +6 -0
  64. package/lib/kinesis-streams-helper.js +11 -1
  65. package/lib/kms-defaults.js +1 -1
  66. package/lib/kms-helper.d.ts +3 -0
  67. package/lib/kms-helper.js +8 -1
  68. package/lib/lambda-defaults.d.ts +3 -0
  69. package/lib/lambda-defaults.js +8 -1
  70. package/lib/lambda-event-source-mapping-defaults.d.ts +9 -0
  71. package/lib/lambda-event-source-mapping-defaults.js +10 -1
  72. package/lib/lambda-helper.d.ts +16 -0
  73. package/lib/lambda-helper.js +21 -4
  74. package/lib/mediastore-defaults.d.ts +3 -0
  75. package/lib/mediastore-defaults.js +8 -1
  76. package/lib/mediastore-helper.d.ts +3 -0
  77. package/lib/mediastore-helper.js +8 -1
  78. package/lib/opensearch-defaults.d.ts +3 -0
  79. package/lib/opensearch-defaults.js +4 -1
  80. package/lib/opensearch-helper.d.ts +6 -0
  81. package/lib/opensearch-helper.js +11 -1
  82. package/lib/override-warning-service.d.ts +2 -0
  83. package/lib/override-warning-service.js +7 -1
  84. package/lib/s3-bucket-defaults.d.ts +6 -0
  85. package/lib/s3-bucket-defaults.js +11 -1
  86. package/lib/s3-bucket-helper.d.ts +12 -0
  87. package/lib/s3-bucket-helper.js +13 -1
  88. package/lib/sagemaker-defaults.d.ts +12 -0
  89. package/lib/sagemaker-defaults.js +13 -1
  90. package/lib/sagemaker-helper.d.ts +18 -0
  91. package/lib/sagemaker-helper.js +23 -1
  92. package/lib/secretsmanager-defaults.js +1 -1
  93. package/lib/secretsmanager-helper.d.ts +2 -0
  94. package/lib/secretsmanager-helper.js +7 -1
  95. package/lib/security-group-helper.d.ts +6 -0
  96. package/lib/security-group-helper.js +11 -1
  97. package/lib/sns-defaults.js +1 -1
  98. package/lib/sns-helper.d.ts +3 -0
  99. package/lib/sns-helper.js +8 -1
  100. package/lib/sqs-defaults.d.ts +3 -0
  101. package/lib/sqs-defaults.js +8 -1
  102. package/lib/sqs-helper.d.ts +6 -0
  103. package/lib/sqs-helper.js +11 -1
  104. package/lib/ssm-string-parameter-helper.d.ts +2 -0
  105. package/lib/ssm-string-parameter-helper.js +7 -1
  106. package/lib/step-function-defaults.d.ts +3 -0
  107. package/lib/step-function-defaults.js +8 -1
  108. package/lib/step-function-helper.d.ts +5 -0
  109. package/lib/step-function-helper.js +37 -29
  110. package/lib/utils.d.ts +15 -1
  111. package/lib/utils.js +23 -3
  112. package/lib/vpc-defaults.d.ts +3 -3
  113. package/lib/vpc-defaults.js +8 -4
  114. package/lib/vpc-helper.d.ts +9 -0
  115. package/lib/vpc-helper.js +14 -1
  116. package/lib/waf-defaults.d.ts +9 -0
  117. package/lib/waf-defaults.js +10 -1
  118. package/lib/waf-helper.d.ts +3 -0
  119. package/lib/waf-helper.js +4 -1
  120. package/node_modules/deepmerge/.eslintcache +1 -0
  121. package/node_modules/deepmerge/changelog.md +4 -0
  122. package/node_modules/deepmerge/index.d.ts +5 -1
  123. package/node_modules/deepmerge/package.json +3 -4
  124. package/node_modules/deepmerge/readme.md +1 -1
  125. package/package.json +4 -4
  126. package/test/step-function-helper.test.js +62 -14
  127. package/test/utils.test.js +20 -16
@@ -18,6 +18,9 @@ const s3_bucket_defaults_1 = require("./s3-bucket-defaults");
18
18
  const utils_1 = require("./utils");
19
19
  const aws_s3_1 = require("aws-cdk-lib/aws-s3");
20
20
  const aws_cdk_lib_1 = require("aws-cdk-lib");
21
+ /**
22
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
23
+ */
21
24
  function createLoggingBucket(scope, bucketId, loggingBucketProps) {
22
25
  // Create the Logging Bucket
23
26
  const loggingBucket = new s3.Bucket(scope, bucketId, loggingBucketProps);
@@ -40,6 +43,9 @@ function createLoggingBucket(scope, bucketId, loggingBucketProps) {
40
43
  return loggingBucket;
41
44
  }
42
45
  exports.createLoggingBucket = createLoggingBucket;
46
+ /**
47
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
48
+ */
43
49
  function createAlbLoggingBucket(scope, bucketId, loggingBucketProps) {
44
50
  // Create the Logging Bucket
45
51
  const loggingBucket = new s3.Bucket(scope, bucketId, loggingBucketProps);
@@ -54,6 +60,9 @@ function createAlbLoggingBucket(scope, bucketId, loggingBucketProps) {
54
60
  return loggingBucket;
55
61
  }
56
62
  exports.createAlbLoggingBucket = createAlbLoggingBucket;
63
+ /**
64
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
65
+ */
57
66
  function buildS3Bucket(scope, props, bucketId) {
58
67
  /** Default Life Cycle policy to transition older versions to Glacier after 90 days */
59
68
  const lifecycleRules = [{
@@ -94,6 +103,9 @@ function buildS3Bucket(scope, props, bucketId) {
94
103
  return { bucket: s3Bucket, loggingBucket };
95
104
  }
96
105
  exports.buildS3Bucket = buildS3Bucket;
106
+ /**
107
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
108
+ */
97
109
  function addCfnNagS3BucketNotificationRulesToSuppress(stackRoot, logicalId) {
98
110
  const notificationsResourceHandler = stackRoot.node.tryFindChild(logicalId);
99
111
  const notificationsResourceHandlerRoleRole = notificationsResourceHandler.node.findChild('Role');
@@ -124,4 +136,4 @@ function addCfnNagS3BucketNotificationRulesToSuppress(stackRoot, logicalId) {
124
136
  ]);
125
137
  }
126
138
  exports.addCfnNagS3BucketNotificationRulesToSuppress = addCfnNagS3BucketNotificationRulesToSuppress;
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInMzLWJ1Y2tldC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFJSCx5Q0FBeUM7QUFFekMsNkRBQXNEO0FBQ3RELG1DQUE2RDtBQUM3RCwrQ0FBa0Q7QUFDbEQsNkNBQXVDO0FBMEJ2QyxTQUFnQixtQkFBbUIsQ0FBQyxLQUFnQixFQUNsRCxRQUFnQixFQUNoQixrQkFBa0M7SUFFbEMsNEJBQTRCO0lBQzVCLE1BQU0sYUFBYSxHQUFjLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFcEYsK0NBQStDO0lBQy9DLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFpQixDQUFDO0lBRXZGLCtFQUErRTtJQUMvRSxxQkFBcUIsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUUvRSxtRUFBbUU7SUFDbkUscUJBQXFCLENBQUMsMkJBQTJCLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUVsRixJQUFJLE9BQU8sR0FBRyx3RUFBd0UsQ0FBQztJQUV2RixJQUFJLFFBQVEsS0FBSyx5QkFBeUIsRUFBRTtRQUMxQyxPQUFPLEdBQUcsaUZBQWlGLENBQUM7S0FDN0Y7SUFFRCwyQkFBbUIsQ0FBQyxxQkFBcUIsRUFBRTtRQUN6QztZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLE9BQU87U0FDaEI7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBOUJELGtEQThCQztBQUVELFNBQWdCLHNCQUFzQixDQUFDLEtBQWdCLEVBQ3JELFFBQWdCLEVBQ2hCLGtCQUFrQztJQUVsQyw0QkFBNEI7SUFDNUIsTUFBTSxhQUFhLEdBQWMsSUFBSSxF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Q0FBQyxZQUFZLENBQUMsU0FBUyxDQUFvQixDQUFDO0lBQy9GLE1BQU0sb0NBQW9DLEdBQUcsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQWEsQ0FBQztJQUM3RyxNQUFNLHNDQUFzQyxHQUFHLG9DQUFvQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFlLENBQUM7SUFFbEksNENBQTRDO0lBQzVDLE1BQU0sVUFBVSxHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUF1QixDQUFDO0lBQ2pHLDJCQUFtQixDQUFDLFVBQVUsRUFBRTtRQUM5QjtZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLG9NQUFvTTtTQUM3TTtRQUNEO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsaUZBQWlGO1NBQzFGO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFBRSxpRUFBaUU7U0FDMUU7S0FDRixDQUFDLENBQUM7SUFFSCw0Q0FBNEM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsc0NBQXNDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQWtCLENBQUM7SUFDMUcsMkJBQW1CLENBQUMsY0FBYyxFQUFFO1FBQ2xDO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsa0dBQWtHO1NBQzNHO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQTlCRCxvR0E4QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IERlZmF1bHRTM1Byb3BzIH0gZnJvbSAnLi9zMy1idWNrZXQtZGVmYXVsdHMnO1xuaW1wb3J0IHsgb3ZlcnJpZGVQcm9wcywgYWRkQ2ZuU3VwcHJlc3NSdWxlcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU3RvcmFnZUNsYXNzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTM0J1Y2tldFByb3BzIHtcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBTMyBCdWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcztcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBTMyBMb2dnaW5nIEJ1Y2tldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nQnVja2V0UHJvcHM/OiBzMy5CdWNrZXRQcm9wcztcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdHVybiBvbiBBY2Nlc3MgTG9ncyBmb3IgUzMuIFVzZXMgYW4gUzMgYnVja2V0IHdpdGggYXNzb2NpYXRlZCBzdG9yYWdlIGNvc3RzLlxuICAgKiBFbmFibGluZyBBY2Nlc3MgTG9nZ2luZyBpcyBhIGJlc3QgcHJhY3RpY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nUzNBY2Nlc3NMb2dzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyk6IHMzLkJ1Y2tldCB7XG5cbiAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICBjb25zdCBsb2dnaW5nQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBidWNrZXRJZCwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5CdWNrZXQgZnJvbSB0aGUgbG9nZ2luZ0J1Y2tldFxuICBjb25zdCBsb2dnaW5nQnVja2V0UmVzb3VyY2UgPSBsb2dnaW5nQnVja2V0Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIHMzLkNmbkJ1Y2tldDtcblxuICAvLyBPdmVycmlkZSBhY2Nlc3NDb250cm9sIGNvbmZpZ3VyYXRpb24gYW5kIGFkZCBtZXRhZGF0YSBmb3IgdGhlIGxvZ2dpbmcgYnVja2V0XG4gIGxvZ2dpbmdCdWNrZXRSZXNvdXJjZS5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdBY2Nlc3NDb250cm9sJywgJ0xvZ0RlbGl2ZXJ5V3JpdGUnKTtcblxuICAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgTGlmZWN5Y2xlQ29uZmlndXJhdGlvbiBmb3IgdGhlIExvZ2dpbmcgQnVja2V0XG4gIGxvZ2dpbmdCdWNrZXRSZXNvdXJjZS5hZGRQcm9wZXJ0eURlbGV0aW9uT3ZlcnJpZGUoJ0xpZmVjeWNsZUNvbmZpZ3VyYXRpb24uUnVsZXMnKTtcblxuICBsZXQgX3JlYXNvbiA9IFwiVGhpcyBTMyBidWNrZXQgaXMgdXNlZCBhcyB0aGUgYWNjZXNzIGxvZ2dpbmcgYnVja2V0IGZvciBhbm90aGVyIGJ1Y2tldFwiO1xuXG4gIGlmIChidWNrZXRJZCA9PT0gJ0Nsb3VkZnJvbnRMb2dnaW5nQnVja2V0Jykge1xuICAgIF9yZWFzb24gPSBcIlRoaXMgUzMgYnVja2V0IGlzIHVzZWQgYXMgdGhlIGFjY2VzcyBsb2dnaW5nIGJ1Y2tldCBmb3IgQ2xvdWRGcm9udCBEaXN0cmlidXRpb25cIjtcbiAgfVxuXG4gIGFkZENmblN1cHByZXNzUnVsZXMobG9nZ2luZ0J1Y2tldFJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXMzUnLFxuICAgICAgcmVhc29uOiBfcmVhc29uXG4gICAgfVxuICBdKTtcblxuICByZXR1cm4gbG9nZ2luZ0J1Y2tldDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFsYkxvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyk6IHMzLkJ1Y2tldCB7XG5cbiAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICBjb25zdCBsb2dnaW5nQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBidWNrZXRJZCwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5CdWNrZXQgZnJvbSB0aGUgbG9nZ2luZ0J1Y2tldFxuICBjb25zdCBsb2dnaW5nQnVja2V0UmVzb3VyY2UgPSBsb2dnaW5nQnVja2V0Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIHMzLkNmbkJ1Y2tldDtcblxuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGxvZ2dpbmdCdWNrZXRSZXNvdXJjZSwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzM1JyxcbiAgICAgIHJlYXNvbjogXCJUaGlzIGlzIGEgbG9nIGJ1Y2tldCBmb3IgYW4gQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclwiXG4gICAgfVxuICBdKTtcblxuICByZXR1cm4gbG9nZ2luZ0J1Y2tldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFMzQnVja2V0UmVzcG9uc2Uge1xuICByZWFkb25seSBidWNrZXQ6IHMzLkJ1Y2tldCxcbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldD86IHMzLkJ1Y2tldFxufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTM0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBwcm9wczogQnVpbGRTM0J1Y2tldFByb3BzLFxuICBidWNrZXRJZD86IHN0cmluZyk6IEJ1aWxkUzNCdWNrZXRSZXNwb25zZSB7XG5cbiAgLyoqIERlZmF1bHQgTGlmZSBDeWNsZSBwb2xpY3kgdG8gdHJhbnNpdGlvbiBvbGRlciB2ZXJzaW9ucyB0byBHbGFjaWVyIGFmdGVyIDkwIGRheXMgKi9cbiAgY29uc3QgbGlmZWN5Y2xlUnVsZXM6IHMzLkxpZmVjeWNsZVJ1bGVbXSA9IFt7XG4gICAgbm9uY3VycmVudFZlcnNpb25UcmFuc2l0aW9uczogW3tcbiAgICAgIHN0b3JhZ2VDbGFzczogU3RvcmFnZUNsYXNzLkdMQUNJRVIsXG4gICAgICB0cmFuc2l0aW9uQWZ0ZXI6IER1cmF0aW9uLmRheXMoOTApXG4gICAgfV1cbiAgfV07XG5cbiAgLy8gQ3JlYXRlIHRoZSBBcHBsaWNhdGlvbiBCdWNrZXRcbiAgbGV0IGN1c3RvbUJ1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcztcbiAgbGV0IGxvZ2dpbmdCdWNrZXQ7XG4gIGNvbnN0IF9idWNrZXRJZCA9IGJ1Y2tldElkID8gYnVja2V0SWQgKyAnUzNCdWNrZXQnIDogJ1MzQnVja2V0JztcbiAgY29uc3QgX2xvZ2dpbmdCdWNrZXRJZCA9IGJ1Y2tldElkID8gYnVja2V0SWQgKyAnUzNMb2dnaW5nQnVja2V0JyA6ICdTM0xvZ2dpbmdCdWNrZXQnO1xuXG4gIC8vIElmIGxvZ2dpbmcgUzMgYWNjZXNzIGxvZ3MgaXMgZW5hYmxlZC91bmRlZmluZWQgYW5kIGFuIGV4aXN0aW5nIGJ1Y2tldCBvYmplY3QgaXMgbm90IHByb3ZpZGVkXG4gIGlmIChwcm9wcy5sb2dTM0FjY2Vzc0xvZ3MgIT09IGZhbHNlICYmICEocHJvcHMuYnVja2V0UHJvcHM/LnNlcnZlckFjY2Vzc0xvZ3NCdWNrZXQpKSB7XG4gICAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICAgIGxldCBsb2dnaW5nQnVja2V0UHJvcHMgPSBEZWZhdWx0UzNQcm9wcygpO1xuXG4gICAgaWYgKHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcykge1xuICAgICAgLy8gVXNlciBwcm92aWRlZCBsb2dnaW5nIGJ1Y2tldCBwcm9wc1xuICAgICAgbG9nZ2luZ0J1Y2tldFByb3BzID0gb3ZlcnJpZGVQcm9wcyhsb2dnaW5nQnVja2V0UHJvcHMsIHByb3BzLmxvZ2dpbmdCdWNrZXRQcm9wcyk7XG4gICAgfSBlbHNlIGlmIChwcm9wcy5idWNrZXRQcm9wcz8ucmVtb3ZhbFBvbGljeSkge1xuICAgICAgLy8gSWYgdGhlIGNsaWVudCBleHBsaWNpdGx5IHNwZWNpZmllZCBhIHJlbW92YWwgcG9saWN5IGZvciB0aGUgbWFpbiBidWNrZXQsXG4gICAgICAvLyB0aGVuIHJlcGxpY2F0ZSB0aGF0IHBvbGljeSBvbiB0aGUgbG9nZ2luZyBidWNrZXRcbiAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMobG9nZ2luZ0J1Y2tldFByb3BzLCB7IHJlbW92YWxQb2xpY3k6IHByb3BzLmJ1Y2tldFByb3BzLnJlbW92YWxQb2xpY3kgfSk7XG4gICAgfVxuXG4gICAgbG9nZ2luZ0J1Y2tldCA9IGNyZWF0ZUxvZ2dpbmdCdWNrZXQoc2NvcGUsIF9sb2dnaW5nQnVja2V0SWQsIGxvZ2dpbmdCdWNrZXRQcm9wcyk7XG4gIH1cbiAgLy8gQXR0YWNoIHRoZSBEZWZhdWx0IExpZmUgQ3ljbGUgcG9saWN5IE9OTFkgSUYgdGhlIHZlcnNpb25pbmcgaXMgRU5BQkxFRFxuICBpZiAocHJvcHMuYnVja2V0UHJvcHM/LnZlcnNpb25lZCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmJ1Y2tldFByb3BzLnZlcnNpb25lZCkge1xuICAgIGN1c3RvbUJ1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMobG9nZ2luZ0J1Y2tldCwgbGlmZWN5Y2xlUnVsZXMpO1xuICB9IGVsc2Uge1xuICAgIGN1c3RvbUJ1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMobG9nZ2luZ0J1Y2tldCk7XG4gIH1cblxuICBjdXN0b21CdWNrZXRQcm9wcyA9IHByb3BzLmJ1Y2tldFByb3BzID8gb3ZlcnJpZGVQcm9wcyhjdXN0b21CdWNrZXRQcm9wcywgcHJvcHMuYnVja2V0UHJvcHMpIDogY3VzdG9tQnVja2V0UHJvcHM7XG5cbiAgY29uc3QgczNCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIF9idWNrZXRJZCwgY3VzdG9tQnVja2V0UHJvcHMgKTtcblxuICByZXR1cm4geyBidWNrZXQ6IHMzQnVja2V0LCBsb2dnaW5nQnVja2V0IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRDZm5OYWdTM0J1Y2tldE5vdGlmaWNhdGlvblJ1bGVzVG9TdXBwcmVzcyhzdGFja1Jvb3Q6IGNkay5TdGFjaywgbG9naWNhbElkOiBzdHJpbmcpIHtcbiAgY29uc3Qgbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlciA9IHN0YWNrUm9vdC5ub2RlLnRyeUZpbmRDaGlsZChsb2dpY2FsSWQpIGFzIGxhbWJkYS5GdW5jdGlvbjtcbiAgY29uc3Qgbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlclJvbGVSb2xlID0gbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlci5ub2RlLmZpbmRDaGlsZCgnUm9sZScpIGFzIGlhbS5Sb2xlO1xuICBjb25zdCBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyUm9sZVBvbGljeSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXJSb2xlUm9sZS5ub2RlLmZpbmRDaGlsZCgnRGVmYXVsdFBvbGljeScpIGFzIGlhbS5Qb2xpY3k7XG5cbiAgLy8gRXh0cmFjdCB0aGUgQ2ZuRnVuY3Rpb24gZnJvbSB0aGUgRnVuY3Rpb25cbiAgY29uc3QgZm5SZXNvdXJjZSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXIubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgbGFtYmRhLkNmbkZ1bmN0aW9uO1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGZuUmVzb3VyY2UsIFtcbiAgICB7XG4gICAgICBpZDogJ1c1OCcsXG4gICAgICByZWFzb246IGBMYW1iZGEgZnVuY3Rpb25zIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbiB0byB3cml0ZSBDbG91ZFdhdGNoIExvZ3MuIEl0IHVzZXMgY3VzdG9tIHBvbGljeSBpbnN0ZWFkIG9mIGFybjphd3M6aWFtOjphd3M6cG9saWN5L3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUgd2l0aCB0aWdodGVyIHBlcm1pc3Npb25zLmBcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnVzg5JyxcbiAgICAgIHJlYXNvbjogYFRoaXMgaXMgbm90IGEgcnVsZSBmb3IgdGhlIGdlbmVyYWwgY2FzZSwganVzdCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzL2luZHVzdHJpZXNgXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ1c5MicsXG4gICAgICByZWFzb246IGBJbXBvc3NpYmxlIGZvciB1cyB0byBkZWZpbmUgdGhlIGNvcnJlY3QgY29uY3VycmVuY3kgZm9yIGNsaWVudHNgXG4gICAgfVxuICBdKTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5Qb2xpY3kgZnJvbSB0aGUgaWFtLlBvbGljeVxuICBjb25zdCBwb2xpY3lSZXNvdXJjZSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXJSb2xlUG9saWN5Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGlhbS5DZm5Qb2xpY3k7XG4gIGFkZENmblN1cHByZXNzUnVsZXMocG9saWN5UmVzb3VyY2UsIFtcbiAgICB7XG4gICAgICBpZDogJ1cxMicsXG4gICAgICByZWFzb246IGBCdWNrZXQgcmVzb3VyY2UgaXMgJyonIGR1ZSB0byBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggYnVja2V0IGFuZCByb2xlIGNyZWF0aW9uIGF0IHRoZSBzYW1lIHRpbWVgXG4gICAgfVxuICBdKTtcbn1cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtYnVja2V0LWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInMzLWJ1Y2tldC1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFTSCx5Q0FBeUM7QUFFekMsNkRBQXNEO0FBQ3RELG1DQUE2RDtBQUM3RCwrQ0FBa0Q7QUFDbEQsNkNBQXVDO0FBMEJ2Qzs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLEtBQWdCLEVBQ2xELFFBQWdCLEVBQ2hCLGtCQUFrQztJQUVsQyw0QkFBNEI7SUFDNUIsTUFBTSxhQUFhLEdBQWMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUVwRiwrQ0FBK0M7SUFDL0MsTUFBTSxxQkFBcUIsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQWlCLENBQUM7SUFFdkYsK0VBQStFO0lBQy9FLHFCQUFxQixDQUFDLG1CQUFtQixDQUFDLGVBQWUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBRS9FLG1FQUFtRTtJQUNuRSxxQkFBcUIsQ0FBQywyQkFBMkIsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBRWxGLElBQUksT0FBTyxHQUFHLHdFQUF3RSxDQUFDO0lBRXZGLElBQUksUUFBUSxLQUFLLHlCQUF5QixFQUFFO1FBQzFDLE9BQU8sR0FBRyxpRkFBaUYsQ0FBQztLQUM3RjtJQUVELDJCQUFtQixDQUFDLHFCQUFxQixFQUFFO1FBQ3pDO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsT0FBTztTQUNoQjtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUE5QkQsa0RBOEJDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFnQixFQUNyRCxRQUFnQixFQUNoQixrQkFBa0M7SUFFbEMsNEJBQTRCO0lBQzVC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U0FBaUI7SUFDbEcsTUFBTSw0QkFBNEIsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQW9CLENBQUM7SUFDL0YsTUFBTSxvQ0FBb0MsR0FBRyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBYSxDQUFDO0lBQzdHLE1BQU0sc0NBQXNDLEdBQUcsb0NBQW9DLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQWUsQ0FBQztJQUVsSSw0Q0FBNEM7SUFDNUMsTUFBTSxVQUFVLEdBQUcsNEJBQTRCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQXVCLENBQUM7SUFDakcsMkJBQW1CLENBQUMsVUFBVSxFQUFFO1FBQzlCO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsb01BQW9NO1NBQzdNO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFBRSxpRkFBaUY7U0FDMUY7UUFDRDtZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLGlFQUFpRTtTQUMxRTtLQUNGLENBQUMsQ0FBQztJQUVILDRDQUE0QztJQUM1QyxNQUFNLGNBQWMsR0FBRyxzQ0FBc0MsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBa0IsQ0FBQztJQUMxRywyQkFBbUIsQ0FBQyxjQUFjLEVBQUU7UUFDbEM7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFBRSxrR0FBa0c7U0FDM0c7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBOUJELG9HQThCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEZWZhdWx0UzNQcm9wcyB9IGZyb20gJy4vczMtYnVja2V0LWRlZmF1bHRzJztcbmltcG9ydCB7IG92ZXJyaWRlUHJvcHMsIGFkZENmblN1cHByZXNzUnVsZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFN0b3JhZ2VDbGFzcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUzNCdWNrZXRQcm9wcyB7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgUzMgQnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgUzMgTG9nZ2luZyBCdWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2luZ0J1Y2tldFByb3BzPzogczMuQnVja2V0UHJvcHM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHR1cm4gb24gQWNjZXNzIExvZ3MgZm9yIFMzLiBVc2VzIGFuIFMzIGJ1Y2tldCB3aXRoIGFzc29jaWF0ZWQgc3RvcmFnZSBjb3N0cy5cbiAgICogRW5hYmxpbmcgQWNjZXNzIExvZ2dpbmcgaXMgYSBiZXN0IHByYWN0aWNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxvZ1MzQWNjZXNzTG9ncz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvZ2dpbmdCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgYnVja2V0SWQ6IHN0cmluZyxcbiAgbG9nZ2luZ0J1Y2tldFByb3BzOiBzMy5CdWNrZXRQcm9wcyk6IHMzLkJ1Y2tldCB7XG5cbiAgLy8gQ3JlYXRlIHRoZSBMb2dnaW5nIEJ1Y2tldFxuICBjb25zdCBsb2dnaW5nQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBidWNrZXRJZCwgbG9nZ2luZ0J1Y2tldFByb3BzKTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5CdWNrZXQgZnJvbSB0aGUgbG9nZ2luZ0J1Y2tldFxuICBjb25zdCBsb2dnaW5nQnVja2V0UmVzb3VyY2UgPSBsb2dnaW5nQnVja2V0Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIHMzLkNmbkJ1Y2tldDtcblxuICAvLyBPdmVycmlkZSBhY2Nlc3NDb250cm9sIGNvbmZpZ3VyYXRpb24gYW5kIGFkZCBtZXRhZGF0YSBmb3IgdGhlIGxvZ2dpbmcgYnVja2V0XG4gIGxvZ2dpbmdCdWNrZXRSZXNvdXJjZS5hZGRQcm9wZXJ0eU92ZXJyaWRlKCdBY2Nlc3NDb250cm9sJywgJ0xvZ0RlbGl2ZXJ5V3JpdGUnKTtcblxuICAvLyBSZW1vdmUgdGhlIGRlZmF1bHQgTGlmZWN5Y2xlQ29uZmlndXJhdGlvbiBmb3IgdGhlIExvZ2dpbmcgQnVja2V0XG4gIGxvZ2dpbmdCdWNrZXRSZXNvdXJjZS5hZGRQcm9wZXJ0eURlbGV0aW9uT3ZlcnJpZGUoJ0xpZmVjeWNsZUNvbmZpZ3VyYXRpb24uUnVsZXMnKTtcblxuICBsZXQgX3JlYXNvbiA9IFwiVGhpcyBTMyBidWNrZXQgaXMgdXNlZCBhcyB0aGUgYWNjZXNzIGxvZ2dpbmcgYnVja2V0IGZvciBhbm90aGVyIGJ1Y2tldFwiO1xuXG4gIGlmIChidWNrZXRJZCA9PT0gJ0Nsb3VkZnJvbnRMb2dnaW5nQnVja2V0Jykge1xuICAgIF9yZWFzb24gPSBcIlRoaXMgUzMgYnVja2V0IGlzIHVzZWQgYXMgdGhlIGFjY2VzcyBsb2dnaW5nIGJ1Y2tldCBmb3IgQ2xvdWRGcm9udCBEaXN0cmlidXRpb25cIjtcbiAgfVxuXG4gIGFkZENmblN1cHByZXNzUnVsZXMobG9nZ2luZ0J1Y2tldFJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXMzUnLFxuICAgICAgcmVhc29uOiBfcmVhc29uXG4gICAgfVxuICBdKTtcblxuICByZXR1cm4gbG9nZ2luZ0J1Y2tldDtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQWxiTG9nZ2luZ0J1Y2tldChzY29wZTogQ29uc3RydWN0LFxuICBidWNrZXRJZDogc3RyaW5nLFxuICBsb2dnaW5nQnVja2V0UHJvcHM6IHMzLkJ1Y2tldFByb3BzKTogczMuQnVja2V0IHtcblxuICAvLyBDcmVhdGUgdGhlIExvZ2dpbmcgQnVja2V0XG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXQ6IHMzLkJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsIGJ1Y2tldElkLCBsb2dnaW5nQnVja2V0UHJvcHMpO1xuXG4gIC8vIEV4dHJhY3QgdGhlIENmbkJ1Y2tldCBmcm9tIHRoZSBsb2dnaW5nQnVja2V0XG4gIGNvbnN0IGxvZ2dpbmdCdWNrZXRSZXNvdXJjZSA9IGxvZ2dpbmdCdWNrZXQubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgczMuQ2ZuQnVja2V0O1xuXG4gIGFkZENmblN1cHByZXNzUnVsZXMobG9nZ2luZ0J1Y2tldFJlc291cmNlLCBbXG4gICAge1xuICAgICAgaWQ6ICdXMzUnLFxuICAgICAgcmVhc29uOiBcIlRoaXMgaXMgYSBsb2cgYnVja2V0IGZvciBhbiBBcHBsaWNhdGlvbiBMb2FkIEJhbGFuY2VyXCJcbiAgICB9XG4gIF0pO1xuXG4gIHJldHVybiBsb2dnaW5nQnVja2V0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkUzNCdWNrZXRSZXNwb25zZSB7XG4gIHJlYWRvbmx5IGJ1Y2tldDogczMuQnVja2V0LFxuICByZWFkb25seSBsb2dnaW5nQnVja2V0PzogczMuQnVja2V0XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUzNCdWNrZXQoc2NvcGU6IENvbnN0cnVjdCxcbiAgcHJvcHM6IEJ1aWxkUzNCdWNrZXRQcm9wcyxcbiAgYnVja2V0SWQ/OiBzdHJpbmcpOiBCdWlsZFMzQnVja2V0UmVzcG9uc2Uge1xuXG4gIC8qKiBEZWZhdWx0IExpZmUgQ3ljbGUgcG9saWN5IHRvIHRyYW5zaXRpb24gb2xkZXIgdmVyc2lvbnMgdG8gR2xhY2llciBhZnRlciA5MCBkYXlzICovXG4gIGNvbnN0IGxpZmVjeWNsZVJ1bGVzOiBzMy5MaWZlY3ljbGVSdWxlW10gPSBbe1xuICAgIG5vbmN1cnJlbnRWZXJzaW9uVHJhbnNpdGlvbnM6IFt7XG4gICAgICBzdG9yYWdlQ2xhc3M6IFN0b3JhZ2VDbGFzcy5HTEFDSUVSLFxuICAgICAgdHJhbnNpdGlvbkFmdGVyOiBEdXJhdGlvbi5kYXlzKDkwKVxuICAgIH1dXG4gIH1dO1xuXG4gIC8vIENyZWF0ZSB0aGUgQXBwbGljYXRpb24gQnVja2V0XG4gIGxldCBjdXN0b21CdWNrZXRQcm9wczogczMuQnVja2V0UHJvcHM7XG4gIGxldCBsb2dnaW5nQnVja2V0O1xuICBjb25zdCBfYnVja2V0SWQgPSBidWNrZXRJZCA/IGJ1Y2tldElkICsgJ1MzQnVja2V0JyA6ICdTM0J1Y2tldCc7XG4gIGNvbnN0IF9sb2dnaW5nQnVja2V0SWQgPSBidWNrZXRJZCA/IGJ1Y2tldElkICsgJ1MzTG9nZ2luZ0J1Y2tldCcgOiAnUzNMb2dnaW5nQnVja2V0JztcblxuICAvLyBJZiBsb2dnaW5nIFMzIGFjY2VzcyBsb2dzIGlzIGVuYWJsZWQvdW5kZWZpbmVkIGFuZCBhbiBleGlzdGluZyBidWNrZXQgb2JqZWN0IGlzIG5vdCBwcm92aWRlZFxuICBpZiAocHJvcHMubG9nUzNBY2Nlc3NMb2dzICE9PSBmYWxzZSAmJiAhKHByb3BzLmJ1Y2tldFByb3BzPy5zZXJ2ZXJBY2Nlc3NMb2dzQnVja2V0KSkge1xuICAgIC8vIENyZWF0ZSB0aGUgTG9nZ2luZyBCdWNrZXRcbiAgICBsZXQgbG9nZ2luZ0J1Y2tldFByb3BzID0gRGVmYXVsdFMzUHJvcHMoKTtcblxuICAgIGlmIChwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpIHtcbiAgICAgIC8vIFVzZXIgcHJvdmlkZWQgbG9nZ2luZyBidWNrZXQgcHJvcHNcbiAgICAgIGxvZ2dpbmdCdWNrZXRQcm9wcyA9IG92ZXJyaWRlUHJvcHMobG9nZ2luZ0J1Y2tldFByb3BzLCBwcm9wcy5sb2dnaW5nQnVja2V0UHJvcHMpO1xuICAgIH0gZWxzZSBpZiAocHJvcHMuYnVja2V0UHJvcHM/LnJlbW92YWxQb2xpY3kpIHtcbiAgICAgIC8vIElmIHRoZSBjbGllbnQgZXhwbGljaXRseSBzcGVjaWZpZWQgYSByZW1vdmFsIHBvbGljeSBmb3IgdGhlIG1haW4gYnVja2V0LFxuICAgICAgLy8gdGhlbiByZXBsaWNhdGUgdGhhdCBwb2xpY3kgb24gdGhlIGxvZ2dpbmcgYnVja2V0XG4gICAgICBsb2dnaW5nQnVja2V0UHJvcHMgPSBvdmVycmlkZVByb3BzKGxvZ2dpbmdCdWNrZXRQcm9wcywgeyByZW1vdmFsUG9saWN5OiBwcm9wcy5idWNrZXRQcm9wcy5yZW1vdmFsUG9saWN5IH0pO1xuICAgIH1cblxuICAgIGxvZ2dpbmdCdWNrZXQgPSBjcmVhdGVMb2dnaW5nQnVja2V0KHNjb3BlLCBfbG9nZ2luZ0J1Y2tldElkLCBsb2dnaW5nQnVja2V0UHJvcHMpO1xuICB9XG4gIC8vIEF0dGFjaCB0aGUgRGVmYXVsdCBMaWZlIEN5Y2xlIHBvbGljeSBPTkxZIElGIHRoZSB2ZXJzaW9uaW5nIGlzIEVOQUJMRURcbiAgaWYgKHByb3BzLmJ1Y2tldFByb3BzPy52ZXJzaW9uZWQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5idWNrZXRQcm9wcy52ZXJzaW9uZWQpIHtcbiAgICBjdXN0b21CdWNrZXRQcm9wcyA9IERlZmF1bHRTM1Byb3BzKGxvZ2dpbmdCdWNrZXQsIGxpZmVjeWNsZVJ1bGVzKTtcbiAgfSBlbHNlIHtcbiAgICBjdXN0b21CdWNrZXRQcm9wcyA9IERlZmF1bHRTM1Byb3BzKGxvZ2dpbmdCdWNrZXQpO1xuICB9XG5cbiAgY3VzdG9tQnVja2V0UHJvcHMgPSBwcm9wcy5idWNrZXRQcm9wcyA/IG92ZXJyaWRlUHJvcHMoY3VzdG9tQnVja2V0UHJvcHMsIHByb3BzLmJ1Y2tldFByb3BzKSA6IGN1c3RvbUJ1Y2tldFByb3BzO1xuXG4gIGNvbnN0IHMzQnVja2V0OiBzMy5CdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCBfYnVja2V0SWQsIGN1c3RvbUJ1Y2tldFByb3BzICk7XG5cbiAgcmV0dXJuIHsgYnVja2V0OiBzM0J1Y2tldCwgbG9nZ2luZ0J1Y2tldCB9O1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDZm5OYWdTM0J1Y2tldE5vdGlmaWNhdGlvblJ1bGVzVG9TdXBwcmVzcyhzdGFja1Jvb3Q6IGNkay5TdGFjaywgbG9naWNhbElkOiBzdHJpbmcpIHtcbiAgY29uc3Qgbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlciA9IHN0YWNrUm9vdC5ub2RlLnRyeUZpbmRDaGlsZChsb2dpY2FsSWQpIGFzIGxhbWJkYS5GdW5jdGlvbjtcbiAgY29uc3Qgbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlclJvbGVSb2xlID0gbm90aWZpY2F0aW9uc1Jlc291cmNlSGFuZGxlci5ub2RlLmZpbmRDaGlsZCgnUm9sZScpIGFzIGlhbS5Sb2xlO1xuICBjb25zdCBub3RpZmljYXRpb25zUmVzb3VyY2VIYW5kbGVyUm9sZVBvbGljeSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXJSb2xlUm9sZS5ub2RlLmZpbmRDaGlsZCgnRGVmYXVsdFBvbGljeScpIGFzIGlhbS5Qb2xpY3k7XG5cbiAgLy8gRXh0cmFjdCB0aGUgQ2ZuRnVuY3Rpb24gZnJvbSB0aGUgRnVuY3Rpb25cbiAgY29uc3QgZm5SZXNvdXJjZSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXIubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgbGFtYmRhLkNmbkZ1bmN0aW9uO1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKGZuUmVzb3VyY2UsIFtcbiAgICB7XG4gICAgICBpZDogJ1c1OCcsXG4gICAgICByZWFzb246IGBMYW1iZGEgZnVuY3Rpb25zIGhhcyB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbiB0byB3cml0ZSBDbG91ZFdhdGNoIExvZ3MuIEl0IHVzZXMgY3VzdG9tIHBvbGljeSBpbnN0ZWFkIG9mIGFybjphd3M6aWFtOjphd3M6cG9saWN5L3NlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUgd2l0aCB0aWdodGVyIHBlcm1pc3Npb25zLmBcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnVzg5JyxcbiAgICAgIHJlYXNvbjogYFRoaXMgaXMgbm90IGEgcnVsZSBmb3IgdGhlIGdlbmVyYWwgY2FzZSwganVzdCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzL2luZHVzdHJpZXNgXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ1c5MicsXG4gICAgICByZWFzb246IGBJbXBvc3NpYmxlIGZvciB1cyB0byBkZWZpbmUgdGhlIGNvcnJlY3QgY29uY3VycmVuY3kgZm9yIGNsaWVudHNgXG4gICAgfVxuICBdKTtcblxuICAvLyBFeHRyYWN0IHRoZSBDZm5Qb2xpY3kgZnJvbSB0aGUgaWFtLlBvbGljeVxuICBjb25zdCBwb2xpY3lSZXNvdXJjZSA9IG5vdGlmaWNhdGlvbnNSZXNvdXJjZUhhbmRsZXJSb2xlUG9saWN5Lm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGlhbS5DZm5Qb2xpY3k7XG4gIGFkZENmblN1cHByZXNzUnVsZXMocG9saWN5UmVzb3VyY2UsIFtcbiAgICB7XG4gICAgICBpZDogJ1cxMicsXG4gICAgICByZWFzb246IGBCdWNrZXQgcmVzb3VyY2UgaXMgJyonIGR1ZSB0byBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggYnVja2V0IGFuZCByb2xlIGNyZWF0aW9uIGF0IHRoZSBzYW1lIHRpbWVgXG4gICAgfVxuICBdKTtcbn1cbiJdfQ==
@@ -11,7 +11,19 @@
11
11
  * and limitations under the License.
12
12
  */
13
13
  import { CfnNotebookInstanceProps, CfnModelProps, CfnModel, CfnEndpointConfigProps, CfnEndpointProps } from 'aws-cdk-lib/aws-sagemaker';
14
+ /**
15
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
16
+ */
14
17
  export declare function DefaultSagemakerNotebookProps(roleArn: string, kmsKeyId: string, subnetId?: string, securityGroupIds?: string[]): CfnNotebookInstanceProps;
18
+ /**
19
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
20
+ */
15
21
  export declare function DefaultSagemakerModelProps(executionRoleArn: string, primaryContainer: CfnModel.ContainerDefinitionProperty, vpcConfig?: CfnModel.VpcConfigProperty): CfnModelProps;
22
+ /**
23
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
24
+ */
16
25
  export declare function DefaultSagemakerEndpointConfigProps(modelName: string, kmsKeyId?: string): CfnEndpointConfigProps;
26
+ /**
27
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
28
+ */
17
29
  export declare function DefaultSagemakerEndpointProps(endpointConfigName: string): CfnEndpointProps;
@@ -13,6 +13,9 @@
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.DefaultSagemakerEndpointProps = exports.DefaultSagemakerEndpointConfigProps = exports.DefaultSagemakerModelProps = exports.DefaultSagemakerNotebookProps = void 0;
16
+ /**
17
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
18
+ */
16
19
  function DefaultSagemakerNotebookProps(roleArn, kmsKeyId, subnetId, securityGroupIds) {
17
20
  return {
18
21
  instanceType: 'ml.t2.medium',
@@ -23,6 +26,9 @@ function DefaultSagemakerNotebookProps(roleArn, kmsKeyId, subnetId, securityGrou
23
26
  };
24
27
  }
25
28
  exports.DefaultSagemakerNotebookProps = DefaultSagemakerNotebookProps;
29
+ /**
30
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
31
+ */
26
32
  function DefaultSagemakerModelProps(executionRoleArn, primaryContainer, vpcConfig) {
27
33
  return {
28
34
  executionRoleArn,
@@ -31,6 +37,9 @@ function DefaultSagemakerModelProps(executionRoleArn, primaryContainer, vpcConfi
31
37
  };
32
38
  }
33
39
  exports.DefaultSagemakerModelProps = DefaultSagemakerModelProps;
40
+ /**
41
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
42
+ */
34
43
  function DefaultSagemakerEndpointConfigProps(modelName, kmsKeyId) {
35
44
  return {
36
45
  productionVariants: [
@@ -46,10 +55,13 @@ function DefaultSagemakerEndpointConfigProps(modelName, kmsKeyId) {
46
55
  };
47
56
  }
48
57
  exports.DefaultSagemakerEndpointConfigProps = DefaultSagemakerEndpointConfigProps;
58
+ /**
59
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
60
+ */
49
61
  function DefaultSagemakerEndpointProps(endpointConfigName) {
50
62
  return {
51
63
  endpointConfigName,
52
64
  };
53
65
  }
54
66
  exports.DefaultSagemakerEndpointProps = DefaultSagemakerEndpointProps;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FnZW1ha2VyLWRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2FnZW1ha2VyLWRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBVUgsU0FBZ0IsNkJBQTZCLENBQzNDLE9BQWUsRUFDZixRQUFnQixFQUNoQixRQUFpQixFQUNqQixnQkFBMkI7SUFFM0IsT0FBTztRQUNMLFlBQVksRUFBRSxjQUFjO1FBQzVCLE9BQU87UUFDUCxRQUFRO1FBQ1IsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUMvRCxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxDQUFDO0tBQ2xCLENBQUM7QUFDaEMsQ0FBQztBQWJELHNFQWFDO0FBRUQsU0FBZ0IsMEJBQTBCLENBQ3hDLGdCQUF3QixFQUN4QixnQkFBc0QsRUFDdEQsU0FBc0M7SUFFdEMsT0FBTztRQUNMLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIsR0FBRyxDQUFDLFNBQVMsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDO0tBQ2YsQ0FBQztBQUNyQixDQUFDO0FBVkQsZ0VBVUM7QUFFRCxTQUFnQixtQ0FBbUMsQ0FBQyxTQUFpQixFQUFFLFFBQWlCO0lBQ3RGLE9BQU87UUFDTCxrQkFBa0IsRUFBRTtZQUNsQjtnQkFDRSxTQUFTO2dCQUNULG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLG9CQUFvQixFQUFFLEdBQUc7Z0JBQ3pCLFlBQVksRUFBRSxjQUFjO2dCQUM1QixXQUFXLEVBQUUsWUFBWTthQUMxQjtTQUNGO1FBQ0QsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBQ0osQ0FBQztBQUM5QixDQUFDO0FBYkQsa0ZBYUM7QUFFRCxTQUFnQiw2QkFBNkIsQ0FBQyxrQkFBMEI7SUFDdEUsT0FBTztRQUNMLGtCQUFrQjtLQUNDLENBQUM7QUFDeEIsQ0FBQztBQUpELHNFQUlDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ2ZuTm90ZWJvb2tJbnN0YW5jZVByb3BzLFxuICBDZm5Nb2RlbFByb3BzLFxuICBDZm5Nb2RlbCxcbiAgQ2ZuRW5kcG9pbnRDb25maWdQcm9wcyxcbiAgQ2ZuRW5kcG9pbnRQcm9wcyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNhZ2VtYWtlcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyhcbiAgcm9sZUFybjogc3RyaW5nLFxuICBrbXNLZXlJZDogc3RyaW5nLFxuICBzdWJuZXRJZD86IHN0cmluZyxcbiAgc2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG4pOiBDZm5Ob3RlYm9va0luc3RhbmNlUHJvcHMge1xuICByZXR1cm4ge1xuICAgIGluc3RhbmNlVHlwZTogJ21sLnQyLm1lZGl1bScsXG4gICAgcm9sZUFybixcbiAgICBrbXNLZXlJZCxcbiAgICAuLi4oc3VibmV0SWQgJiYgeyBzdWJuZXRJZCwgZGlyZWN0SW50ZXJuZXRBY2Nlc3M6ICdEaXNhYmxlZCcgfSksXG4gICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICB9IGFzIENmbk5vdGVib29rSW5zdGFuY2VQcm9wcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIERlZmF1bHRTYWdlbWFrZXJNb2RlbFByb3BzKFxuICBleGVjdXRpb25Sb2xlQXJuOiBzdHJpbmcsXG4gIHByaW1hcnlDb250YWluZXI6IENmbk1vZGVsLkNvbnRhaW5lckRlZmluaXRpb25Qcm9wZXJ0eSxcbiAgdnBjQ29uZmlnPzogQ2ZuTW9kZWwuVnBjQ29uZmlnUHJvcGVydHlcbik6IENmbk1vZGVsUHJvcHMge1xuICByZXR1cm4ge1xuICAgIGV4ZWN1dGlvblJvbGVBcm4sXG4gICAgcHJpbWFyeUNvbnRhaW5lcixcbiAgICAuLi4odnBjQ29uZmlnICYmIHsgdnBjQ29uZmlnIH0pLFxuICB9IGFzIENmbk1vZGVsUHJvcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEZWZhdWx0U2FnZW1ha2VyRW5kcG9pbnRDb25maWdQcm9wcyhtb2RlbE5hbWU6IHN0cmluZywga21zS2V5SWQ/OiBzdHJpbmcpOiBDZm5FbmRwb2ludENvbmZpZ1Byb3BzIHtcbiAgcmV0dXJuIHtcbiAgICBwcm9kdWN0aW9uVmFyaWFudHM6IFtcbiAgICAgIHtcbiAgICAgICAgbW9kZWxOYW1lLFxuICAgICAgICBpbml0aWFsSW5zdGFuY2VDb3VudDogMSxcbiAgICAgICAgaW5pdGlhbFZhcmlhbnRXZWlnaHQ6IDEuMCxcbiAgICAgICAgaW5zdGFuY2VUeXBlOiAnbWwubTQueGxhcmdlJyxcbiAgICAgICAgdmFyaWFudE5hbWU6ICdBbGxUcmFmZmljJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgICAuLi4oa21zS2V5SWQgJiYgeyBrbXNLZXlJZCB9KSxcbiAgfSBhcyBDZm5FbmRwb2ludENvbmZpZ1Byb3BzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50UHJvcHMoZW5kcG9pbnRDb25maWdOYW1lOiBzdHJpbmcpOiBDZm5FbmRwb2ludFByb3BzIHtcbiAgcmV0dXJuIHtcbiAgICBlbmRwb2ludENvbmZpZ05hbWUsXG4gIH0gYXMgQ2ZuRW5kcG9pbnRQcm9wcztcbn1cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FnZW1ha2VyLWRlZmF1bHRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2FnZW1ha2VyLWRlZmF1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBZUg7O0dBRUc7QUFDSCxTQUFnQiw2QkFBNkIsQ0FDM0MsT0FBZSxFQUNmLFFBQWdCLEVBQ2hCLFFBQWlCLEVBQ2pCLGdCQUEyQjtJQUUzQixPQUFPO1FBQ0wsWUFBWSxFQUFFLGNBQWM7UUFDNUIsT0FBTztRQUNQLFFBQVE7UUFDUixHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQy9ELEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUM7S0FDbEIsQ0FBQztBQUNoQyxDQUFDO0FBYkQsc0VBYUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDBCQUEwQixDQUN4QyxnQkFBd0IsRUFDeEIsZ0JBQXNELEVBQ3RELFNBQXNDO0lBRXRDLE9BQU87UUFDTCxnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQztLQUNmLENBQUM7QUFDckIsQ0FBQztBQVZELGdFQVVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQ0FBbUMsQ0FBQyxTQUFpQixFQUFFLFFBQWlCO0lBQ3RGLE9BQU87UUFDTCxrQkFBa0IsRUFBRTtZQUNsQjtnQkFDRSxTQUFTO2dCQUNULG9CQUFvQixFQUFFLENBQUM7Z0JBQ3ZCLG9CQUFvQixFQUFFLEdBQUc7Z0JBQ3pCLFlBQVksRUFBRSxjQUFjO2dCQUM1QixXQUFXLEVBQUUsWUFBWTthQUMxQjtTQUNGO1FBQ0QsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0tBQ0osQ0FBQztBQUM5QixDQUFDO0FBYkQsa0ZBYUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDZCQUE2QixDQUFDLGtCQUEwQjtJQUN0RSxPQUFPO1FBQ0wsa0JBQWtCO0tBQ0MsQ0FBQztBQUN4QixDQUFDO0FBSkQsc0VBSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCB7XG4gIENmbk5vdGVib29rSW5zdGFuY2VQcm9wcyxcbiAgQ2ZuTW9kZWxQcm9wcyxcbiAgQ2ZuTW9kZWwsXG4gIENmbkVuZHBvaW50Q29uZmlnUHJvcHMsXG4gIENmbkVuZHBvaW50UHJvcHMsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zYWdlbWFrZXInO1xuXG4vKipcbiAqIEBpbnRlcm5hbCBUaGlzIGlzIGFuIGludGVybmFsIGNvcmUgZnVuY3Rpb24gYW5kIHNob3VsZCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IFNvbHV0aW9ucyBDb25zdHJ1Y3RzIGNsaWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyhcbiAgcm9sZUFybjogc3RyaW5nLFxuICBrbXNLZXlJZDogc3RyaW5nLFxuICBzdWJuZXRJZD86IHN0cmluZyxcbiAgc2VjdXJpdHlHcm91cElkcz86IHN0cmluZ1tdXG4pOiBDZm5Ob3RlYm9va0luc3RhbmNlUHJvcHMge1xuICByZXR1cm4ge1xuICAgIGluc3RhbmNlVHlwZTogJ21sLnQyLm1lZGl1bScsXG4gICAgcm9sZUFybixcbiAgICBrbXNLZXlJZCxcbiAgICAuLi4oc3VibmV0SWQgJiYgeyBzdWJuZXRJZCwgZGlyZWN0SW50ZXJuZXRBY2Nlc3M6ICdEaXNhYmxlZCcgfSksXG4gICAgLi4uKHNlY3VyaXR5R3JvdXBJZHMgJiYgeyBzZWN1cml0eUdyb3VwSWRzIH0pLFxuICB9IGFzIENmbk5vdGVib29rSW5zdGFuY2VQcm9wcztcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdFNhZ2VtYWtlck1vZGVsUHJvcHMoXG4gIGV4ZWN1dGlvblJvbGVBcm46IHN0cmluZyxcbiAgcHJpbWFyeUNvbnRhaW5lcjogQ2ZuTW9kZWwuQ29udGFpbmVyRGVmaW5pdGlvblByb3BlcnR5LFxuICB2cGNDb25maWc/OiBDZm5Nb2RlbC5WcGNDb25maWdQcm9wZXJ0eVxuKTogQ2ZuTW9kZWxQcm9wcyB7XG4gIHJldHVybiB7XG4gICAgZXhlY3V0aW9uUm9sZUFybixcbiAgICBwcmltYXJ5Q29udGFpbmVyLFxuICAgIC4uLih2cGNDb25maWcgJiYgeyB2cGNDb25maWcgfSksXG4gIH0gYXMgQ2ZuTW9kZWxQcm9wcztcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50Q29uZmlnUHJvcHMobW9kZWxOYW1lOiBzdHJpbmcsIGttc0tleUlkPzogc3RyaW5nKTogQ2ZuRW5kcG9pbnRDb25maWdQcm9wcyB7XG4gIHJldHVybiB7XG4gICAgcHJvZHVjdGlvblZhcmlhbnRzOiBbXG4gICAgICB7XG4gICAgICAgIG1vZGVsTmFtZSxcbiAgICAgICAgaW5pdGlhbEluc3RhbmNlQ291bnQ6IDEsXG4gICAgICAgIGluaXRpYWxWYXJpYW50V2VpZ2h0OiAxLjAsXG4gICAgICAgIGluc3RhbmNlVHlwZTogJ21sLm00LnhsYXJnZScsXG4gICAgICAgIHZhcmlhbnROYW1lOiAnQWxsVHJhZmZpYycsXG4gICAgICB9LFxuICAgIF0sXG4gICAgLi4uKGttc0tleUlkICYmIHsga21zS2V5SWQgfSksXG4gIH0gYXMgQ2ZuRW5kcG9pbnRDb25maWdQcm9wcztcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50UHJvcHMoZW5kcG9pbnRDb25maWdOYW1lOiBzdHJpbmcpOiBDZm5FbmRwb2ludFByb3BzIHtcbiAgcmV0dXJuIHtcbiAgICBlbmRwb2ludENvbmZpZ05hbWUsXG4gIH0gYXMgQ2ZuRW5kcG9pbnRQcm9wcztcbn1cbiJdfQ==
@@ -46,6 +46,9 @@ export interface BuildSagemakerNotebookResponse {
46
46
  readonly vpc?: ec2.IVpc;
47
47
  readonly securityGroup?: ec2.SecurityGroup;
48
48
  }
49
+ /**
50
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
51
+ */
49
52
  export declare function buildSagemakerNotebook(scope: Construct, props: BuildSagemakerNotebookProps): BuildSagemakerNotebookResponse;
50
53
  export interface BuildSagemakerEndpointProps {
51
54
  /**
@@ -84,13 +87,28 @@ export interface BuildSagemakerEndpointResponse {
84
87
  readonly endpointConfig?: sagemaker.CfnEndpointConfig;
85
88
  readonly model?: sagemaker.CfnModel;
86
89
  }
90
+ /**
91
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
92
+ */
87
93
  export declare function BuildSagemakerEndpoint(scope: Construct, props: BuildSagemakerEndpointProps): BuildSagemakerEndpointResponse;
88
94
  export interface DeploySagemakerEndpointResponse {
89
95
  readonly endpoint: sagemaker.CfnEndpoint;
90
96
  readonly endpointConfig?: sagemaker.CfnEndpointConfig;
91
97
  readonly model?: sagemaker.CfnModel;
92
98
  }
99
+ /**
100
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
101
+ */
93
102
  export declare function deploySagemakerEndpoint(scope: Construct, props: BuildSagemakerEndpointProps): DeploySagemakerEndpointResponse;
103
+ /**
104
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
105
+ */
94
106
  export declare function createSagemakerModel(scope: Construct, modelProps: sagemaker.CfnModelProps, role: iam.Role, vpc?: ec2.IVpc): sagemaker.CfnModel;
107
+ /**
108
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
109
+ */
95
110
  export declare function createSagemakerEndpointConfig(scope: Construct, modelName: string, endpointConfigProps?: sagemaker.CfnEndpointConfigProps): sagemaker.CfnEndpointConfig;
111
+ /**
112
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
113
+ */
96
114
  export declare function createSagemakerEndpoint(scope: Construct, endpointConfigName: string, endpointProps?: sagemaker.CfnEndpointProps): sagemaker.CfnEndpoint;
@@ -13,6 +13,10 @@
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.createSagemakerEndpoint = exports.createSagemakerEndpointConfig = exports.createSagemakerModel = exports.deploySagemakerEndpoint = exports.BuildSagemakerEndpoint = exports.buildSagemakerNotebook = void 0;
16
+ /*
17
+ * The functions found here in the core library are for internal use and can be changed
18
+ * or removed outside of a major release. We recommend against calling them directly from client code.
19
+ */
16
20
  const sagemaker = require("aws-cdk-lib/aws-sagemaker");
17
21
  const ec2 = require("aws-cdk-lib/aws-ec2");
18
22
  const kms_helper_1 = require("./kms-helper");
@@ -149,6 +153,9 @@ function addPermissions(role, props) {
149
153
  }
150
154
  ]);
151
155
  }
156
+ /**
157
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
158
+ */
152
159
  function buildSagemakerNotebook(scope, props) {
153
160
  // Setup the notebook properties
154
161
  let sagemakerNotebookProps;
@@ -207,6 +214,9 @@ function buildSagemakerNotebook(scope, props) {
207
214
  }
208
215
  }
209
216
  exports.buildSagemakerNotebook = buildSagemakerNotebook;
217
+ /**
218
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
219
+ */
210
220
  function BuildSagemakerEndpoint(scope, props) {
211
221
  /** Conditional Sagemaker endpoint creation */
212
222
  if (!props.existingSagemakerEndpointObj) {
@@ -224,6 +234,9 @@ function BuildSagemakerEndpoint(scope, props) {
224
234
  }
225
235
  }
226
236
  exports.BuildSagemakerEndpoint = BuildSagemakerEndpoint;
237
+ /**
238
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
239
+ */
227
240
  function deploySagemakerEndpoint(scope, props) {
228
241
  let model;
229
242
  let endpointConfig;
@@ -260,6 +273,9 @@ function deploySagemakerEndpoint(scope, props) {
260
273
  }
261
274
  }
262
275
  exports.deploySagemakerEndpoint = deploySagemakerEndpoint;
276
+ /**
277
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
278
+ */
263
279
  function createSagemakerModel(scope, modelProps, role, vpc) {
264
280
  let finalModelProps;
265
281
  let primaryContainer;
@@ -312,6 +328,9 @@ function createSagemakerModel(scope, modelProps, role, vpc) {
312
328
  }
313
329
  }
314
330
  exports.createSagemakerModel = createSagemakerModel;
331
+ /**
332
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
333
+ */
315
334
  function createSagemakerEndpointConfig(scope, modelName, endpointConfigProps) {
316
335
  let finalEndpointConfigProps;
317
336
  let kmsKeyId;
@@ -330,6 +349,9 @@ function createSagemakerEndpointConfig(scope, modelName, endpointConfigProps) {
330
349
  return endpointConfig;
331
350
  }
332
351
  exports.createSagemakerEndpointConfig = createSagemakerEndpointConfig;
352
+ /**
353
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
354
+ */
333
355
  function createSagemakerEndpoint(scope, endpointConfigName, endpointProps) {
334
356
  let finalEndpointProps;
335
357
  let endpoint;
@@ -340,4 +362,4 @@ function createSagemakerEndpoint(scope, endpointConfigName, endpointProps) {
340
362
  return endpoint;
341
363
  }
342
364
  exports.createSagemakerEndpoint = createSagemakerEndpoint;
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FnZW1ha2VyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNhZ2VtYWtlci1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSCx1REFBdUQ7QUFDdkQsMkNBQTJDO0FBQzNDLDZDQUFrRDtBQUNsRCw2REFLOEI7QUFDOUIsbUNBQW1DO0FBQ25DLG1DQUFnRTtBQUNoRSw2Q0FBd0M7QUFDeEMsMkNBQTJDO0FBQzNDLDZDQUFrQztBQUNsQyxpREFBOEQ7QUFDOUQsbUVBQTZEO0FBZ0M3RCxTQUFTLGNBQWMsQ0FBQyxJQUFjLEVBQUUsS0FBbUM7SUFDekUsNEVBQTRFO0lBQzVFLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8saUJBQUcsQ0FBQyxTQUFTLGNBQWMsaUJBQUcsQ0FBQyxNQUFNLElBQUksaUJBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQztRQUMvRSxPQUFPLEVBQUU7WUFDUCw2QkFBNkI7WUFDN0IsK0JBQStCO1lBQy9CLHVCQUF1QjtZQUN2Qix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLDBCQUEwQjtZQUMxQixnQ0FBZ0M7WUFDaEMsNEJBQTRCO1lBQzVCLGtDQUFrQztZQUNsQywwQkFBMEI7WUFDMUIsZ0NBQWdDO1lBQ2hDLDBCQUEwQjtTQUMzQjtLQUNGLENBQUMsQ0FDSCxDQUFDO0lBRUYsdUNBQXVDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLDZCQUE2QixDQUFDO1FBQy9HLE9BQU8sRUFBRTtZQUNQLHFCQUFxQjtZQUNyQixzQkFBc0I7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QWtCLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUV4RyxrQ0FBa0M7SUFDbEMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUVyRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBZkQsMERBZUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBzYWdlbWFrZXIgZnJvbSAnYXdzLWNkay1saWIvYXdzLXNhZ2VtYWtlcic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBidWlsZEVuY3J5cHRpb25LZXkgfSBmcm9tICcuL2ttcy1oZWxwZXInO1xuaW1wb3J0IHtcbiAgRGVmYXVsdFNhZ2VtYWtlck5vdGVib29rUHJvcHMsXG4gIERlZmF1bHRTYWdlbWFrZXJNb2RlbFByb3BzLFxuICBEZWZhdWx0U2FnZW1ha2VyRW5kcG9pbnRDb25maWdQcm9wcyxcbiAgRGVmYXVsdFNhZ2VtYWtlckVuZHBvaW50UHJvcHMsXG59IGZyb20gJy4vc2FnZW1ha2VyLWRlZmF1bHRzJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBhZGRDZm5TdXBwcmVzc1J1bGVzLCBjb25zb2xpZGF0ZVByb3BzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBidWlsZFZwYyB9IGZyb20gJy4vdnBjLWhlbHBlcic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEZWZhdWx0UHVibGljUHJpdmF0ZVZwY1Byb3BzIH0gZnJvbSAnLi92cGMtZGVmYXVsdHMnO1xuaW1wb3J0IHsgYnVpbGRTZWN1cml0eUdyb3VwIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1oZWxwZXInO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Byb3BzIHtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXIgcHJvdmlkZWQgcHJvcHMgZm9yIENmbk5vdGVib29rSW5zdGFuY2VQcm9wc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgcHJvcHMgYXJlIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHNhZ2VtYWtlck5vdGVib29rUHJvcHM/OiBzYWdlbWFrZXIuQ2ZuTm90ZWJvb2tJbnN0YW5jZVByb3BzIHwgYW55O1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyB0byBkZXBsb3kgaW5zaWRlIHZwY1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveUluc2lkZVZwYz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCwgRXhpc3RpbmcgaW5zdGFuY2Ugb2Ygbm90ZWJvb2sgb2JqZWN0LlxuICAgKiBJZiB0aGlzIGlzIHNldCB0aGVuIHRoZSBzYWdlbWFrZXJOb3RlYm9va1Byb3BzIGlzIGlnbm9yZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ05vdGVib29rT2JqPzogc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2U7XG4gIC8qKlxuICAgKiBJQU0gUm9sZSBBcm4gZm9yIFNhZ2VtYWtlciBOb3RlQm9va0luc3RhbmNlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZTogaWFtLlJvbGU7XG59XG5cbmZ1bmN0aW9uIGFkZFBlcm1pc3Npb25zKHJvbGU6IGlhbS5Sb2xlLCBwcm9wcz86IEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRQcm9wcykge1xuICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBOb3RlQm9va0luc3RhbmNlIGZvciBjcmVhdGluZyBhbmQgdHJhaW5pbmcgdGhlIG1vZGVsXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke0F3cy5QQVJUSVRJT059OnNhZ2VtYWtlcjoke0F3cy5SRUdJT059OiR7QXdzLkFDQ09VTlRfSUR9OipgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVUcmFpbmluZ0pvYicsXG4gICAgICAgICdzYWdlbWFrZXI6RGVzY3JpYmVUcmFpbmluZ0pvYicsXG4gICAgICAgICdzYWdlbWFrZXI6Q3JlYXRlTW9kZWwnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlTW9kZWwnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlbGV0ZU1vZGVsJyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVFbmRwb2ludCcsXG4gICAgICAgICdzYWdlbWFrZXI6Q3JlYXRlRW5kcG9pbnRDb25maWcnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlRW5kcG9pbnQnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlc2NyaWJlRW5kcG9pbnRDb25maWcnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlbGV0ZUVuZHBvaW50JyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpEZWxldGVFbmRwb2ludENvbmZpZycsXG4gICAgICAgICdzYWdlbWFrZXI6SW52b2tlRW5kcG9pbnQnLFxuICAgICAgXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEdyYW50IENsb3VkV2F0Y2ggTG9nZ2luZyBwZXJtaXNzaW9uc1xuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW2Bhcm46JHtjZGsuQXdzLlBBUlRJVElPTn06bG9nczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06bG9nLWdyb3VwOi9hd3Mvc2FnZW1ha2VyLypgXSxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLFxuICAgICAgICAnbG9nczpDcmVhdGVMb2dTdHJlYW0nLFxuICAgICAgICAnbG9nczpEZXNjcmliZUxvZ1N0cmVhbXMnLFxuICAgICAgICAnbG9nczpHZXRMb2dFdmVudHMnLFxuICAgICAgICAnbG9nczpQdXRMb2dFdmVudHMnLFxuICAgICAgXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIFRvIHBsYWNlIHRoZSBTYWdlbWFrZXIgZW5kcG9pbnQgaW4gYSBWUENcbiAgaWYgKHByb3BzICYmIHByb3BzLnZwYykge1xuICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnZWMyOkNyZWF0ZU5ldHdvcmtJbnRlcmZhY2UnLFxuICAgICAgICAgICdlYzI6Q3JlYXRlTmV0d29ya0ludGVyZmFjZVBlcm1pc3Npb24nLFxuICAgICAgICAgICdlYzI6RGVsZXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgJ2VjMjpEZWxldGVOZXR3b3JrSW50ZXJmYWNlUGVybWlzc2lvbicsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZU5ldHdvcmtJbnRlcmZhY2VzJyxcbiAgICAgICAgICAnZWMyOkFzc2lnblByaXZhdGVJcEFkZHJlc3NlcycsXG4gICAgICAgICAgJ2VjMjpVbmFzc2lnblByaXZhdGVJcEFkZHJlc3NlcycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVZwY3MnLFxuICAgICAgICAgICdlYzI6RGVzY3JpYmVEaGNwT3B0aW9ucycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVN1Ym5ldHMnLFxuICAgICAgICAgICdlYzI6RGVzY3JpYmVTZWN1cml0eUdyb3VwcycsXG4gICAgICAgIF0sXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBUbyBjcmVhdGUgYSBTYWdlbWFrZXIgbW9kZWwgdXNpbmcgQnJpbmctWW91ci1Pd24tTW9kZWwgKEJZT00pIGFsZ29yaXRoIGltYWdlXG4gIC8vIFRoZSBpbWFnZSBVUkwgaXMgc3BlY2lmaWVkIGluIHRoZSBtb2RlbFByb3BzXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTplY3I6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OnJlcG9zaXRvcnkvKmBdLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnZWNyOkJhdGNoQ2hlY2tMYXllckF2YWlsYWJpbGl0eScsXG4gICAgICAgICdlY3I6R2V0RG93bmxvYWRVcmxGb3JMYXllcicsXG4gICAgICAgICdlY3I6RGVzY3JpYmVSZXBvc2l0b3JpZXMnLFxuICAgICAgICAnZWNyOkRlc2NyaWJlSW1hZ2VzJyxcbiAgICAgICAgJ2VjcjpCYXRjaEdldEltYWdlJyxcbiAgICAgIF0sXG4gICAgfSlcbiAgKTtcblxuICAvLyBBZGQgR2V0QXV0aG9yaXphdGlvblRva2VuIChpdCBjYW4gbm90IGJlIGJvdW5kIHRvIHJlc291cmNlcyBvdGhlciB0aGFuICopXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIGFjdGlvbnM6IFsnZWNyOkdldEF1dGhvcml6YXRpb25Ub2tlbiddLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gYWRkIHBlcm1pc3Npb24gdG8gdXNlIEVsYXN0aWMgSW5mZXJlbmNlIGFjY2VsZXJhdG9yXG4gIGlmIChwcm9wcyAmJiBwcm9wcy5lbmRwb2ludENvbmZpZ1Byb3BzKSB7XG4gICAgLy8gR2V0IHRoZSBhY2NlbGVyYXRvclR5cGUsIGlmIGFueVxuICAgIGNvbnN0IGFjY2VsZXJhdG9yVHlwZSA9IChwcm9wcy5lbmRwb2ludENvbmZpZ1Byb3BzXG4gICAgICA/LnByb2R1Y3Rpb25WYXJpYW50cyBhcyBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWcuUHJvZHVjdGlvblZhcmlhbnRQcm9wZXJ0eVtdKVswXS5hY2NlbGVyYXRvclR5cGU7XG4gICAgaWYgKGFjY2VsZXJhdG9yVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByb2xlLmFkZFRvUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICBhY3Rpb25zOiBbJ2VsYXN0aWMtaW5mZXJlbmNlOkNvbm5lY3QnXSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gYWRkIGttcyBwZXJtaXNzaW9uc1xuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIC8vIHRoZSBrbXNLZXlJZCBpbiB0aGUgZW5kcG9pbnRDb25maWdQcm9wcyBjYW4gYmUgYW55IG9mIHRoZSBmb2xsb3dpbmcgZm9ybWF0czpcbiAgICAgIC8vIEtleSBJRDogMTIzNGFiY2QtMTJhYi0zNGNkLTU2ZWYtMTIzNDU2Nzg5MGFiXG4gICAgICAvLyBLZXkgQVJOOiBhcm46YXdzOmttczo8cmVnaW9uPjo8YWNjb3VudElEPjprZXkvMTIzNGFiY2QtMTJhYi0zNGNkLTU2ZWYtMTIzNDU2Nzg5MGFiXG4gICAgICAvLyBBbGlhcyBuYW1lOiBhbGlhcy9FeGFtcGxlQWxpYXNcbiAgICAgIC8vIEFsaWFzIG5hbWUgQVJOOiBhcm46YXdzOmttczo8cmVnaW9uPjo8YWNjb3VudElEPjphbGlhcy9FeGFtcGxlQWxpYXNcbiAgICAgIC8vIHRoZSBrZXkgaXMgdXNlZCB0byBlbmNyeXB0L2RlY3J5cHQgZGF0YSBjYXB0dXJlZCBieSB0aGUgU2FnZW1ha2VyIGVuZHBvaW50IGFuZCBzdG9yZWQgaW4gUzMgYnVja2V0XG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTprbXM6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OmtleS8qYCxcbiAgICAgICAgYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTprbXM6JHtjZGsuQXdzLlJFR0lPTn06JHtjZGsuQXdzLkFDQ09VTlRfSUR9OmFsaWFzLypgLFxuICAgICAgXSxcbiAgICAgIGFjdGlvbnM6IFsna21zOkVuY3J5cHQnLCAna21zOkRlY3J5cHQnLCAna21zOlJlRW5jcnlwdConLCAna21zOkdlbmVyYXRlRGF0YUtleSonLCAna21zOkRlc2NyaWJlS2V5J10sXG4gICAgfSlcbiAgKTtcblxuICAvLyBBZGQgUzMgcGVybWlzc2lvbnMgdG8gZ2V0IE1vZGVsIGFydGlmYWN0LCBwdXQgZGF0YSBjYXB0dXJlIGZpbGVzLCBldGMuXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzMzpHZXRPYmplY3QnLCAnczM6UHV0T2JqZWN0JywgJ3MzOkRlbGV0ZU9iamVjdCcsICdzMzpMaXN0QnVja2V0J10sXG4gICAgICByZXNvdXJjZXM6IFsnYXJuOmF3czpzMzo6OionXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEdyYW50IEdldFJvbGUgcGVybWlzc2lvbnMgdG8gdGhlIFNhZ2VtYWtlciBzZXJ2aWNlXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbcm9sZS5yb2xlQXJuXSxcbiAgICAgIGFjdGlvbnM6IFsnaWFtOkdldFJvbGUnXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEdyYW50IFBhc3NSb2xlIHBlcm1pc3Npb25zIHRvIHRoZSBTYWdlbWFrZXIgc2VydmljZVxuICByb2xlLmFkZFRvUG9saWN5KFxuICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW3JvbGUucm9sZUFybl0sXG4gICAgICBhY3Rpb25zOiBbJ2lhbTpQYXNzUm9sZSddLFxuICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICBTdHJpbmdMaWtlOiB7ICdpYW06UGFzc2VkVG9TZXJ2aWNlJzogJ3NhZ2VtYWtlci5hbWF6b25hd3MuY29tJyB9LFxuICAgICAgfSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEFkZCBDRk4gTkFHIHVwcHJlc3MgdG8gYWxsb3cgZm9yIFwiUmVzb3VyY2VcIjogXCIqXCIgZm9yIEVOSSBhY2Nlc3MgaW4gVlBDLFxuICAvLyBFQ1IgYXV0aG9yaXphdGlvbiB0b2tlbiBmb3IgY3VzdG9tIG1vZGVsIGltYWdlcywgYW5kIGVsYXN0aWMgaW5mZXJlbmNlXG4gIC8vIEFkZCBDRk4gTkFHIGZvciBDb21wbGV4IFJvbGUgYmVjYXVzZSBTYWdtYWtlciBuZWVkcyBwZXJtaXNzaW9ucyB0byBhY2Nlc3Mgc2V2ZXJhbCBzZXJ2aWNlc1xuICBjb25zdCByb2xlRGVmYXVsdFBvbGljeSA9IHJvbGUubm9kZS50cnlGaW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKT8ubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgaWFtLkNmblBvbGljeTtcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhyb2xlRGVmYXVsdFBvbGljeSwgW1xuICAgIHtcbiAgICAgIGlkOiAnVzEyJyxcbiAgICAgIHJlYXNvbjogYFNhZ2VtYWtlciBuZWVkcyB0aGUgZm9sbG93aW5nIG1pbmltdW0gcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gYWNjZXNzIEVOSXMgaW4gYSBWUEMsIEVDUiBmb3IgY3VzdG9tIG1vZGVsIGltYWdlcywgYW5kIGVsYXN0aWMgaW5mZXJlbmNlLmAsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogJ1c3NicsXG4gICAgICByZWFzb246ICdDb21wbGV4IHJvbGUgYmVjdWFzZSBTYWdlbWFrZXIgbmVlZHMgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHNldmVyYWwgc2VydmljZXMnLFxuICAgIH1cbiAgXSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Jlc3BvbnNlIHtcbiAgcmVhZG9ubHkgbm90ZWJvb2s6IHNhZ2VtYWtlci5DZm5Ob3RlYm9va0luc3RhbmNlLFxuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYyxcbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cD86IGVjMi5TZWN1cml0eUdyb3VwXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNhZ2VtYWtlck5vdGVib29rKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBwcm9wczogQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Byb3BzXG4pOiBCdWlsZFNhZ2VtYWtlck5vdGVib29rUmVzcG9uc2Uge1xuICAvLyBTZXR1cCB0aGUgbm90ZWJvb2sgcHJvcGVydGllc1xuICBsZXQgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcztcbiAgbGV0IHZwY0luc3RhbmNlO1xuICBsZXQgc2VjdXJpdHlHcm91cDtcbiAgbGV0IGttc0tleUlkOiBzdHJpbmc7XG4gIGxldCBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8vIENvbmRpdGlvbmFsIFNhZ2VtYWtlciBOb3RlYm9vayBjcmVhdGlvblxuICBpZiAoIXByb3BzLmV4aXN0aW5nTm90ZWJvb2tPYmopIHtcbiAgICBpZiAoXG4gICAgICAocHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc3VibmV0SWQgJiYgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc2VjdXJpdHlHcm91cElkcyA9PT0gdW5kZWZpbmVkKSB8fFxuICAgICAgKHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnN1Ym5ldElkID09PSB1bmRlZmluZWQgJiYgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc2VjdXJpdHlHcm91cElkcylcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBkZWZpbmUgYm90aCBzYWdlbWFrZXJOb3RlYm9va1Byb3BzLnN1Ym5ldElkIGFuZCBzYWdlbWFrZXJOb3RlYm9va1Byb3BzLnNlY3VyaXR5R3JvdXBJZHMnKTtcbiAgICB9XG5cbiAgICBhZGRQZXJtaXNzaW9ucyhwcm9wcy5yb2xlKTtcblxuICAgIGlmIChwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5rbXNLZXlJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBrbXNLZXlJZCA9IGJ1aWxkRW5jcnlwdGlvbktleShzY29wZSkua2V5SWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGttc0tleUlkID0gcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcy5rbXNLZXlJZDtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGVwbG95SW5zaWRlVnBjID09PSB1bmRlZmluZWQgfHwgcHJvcHMuZGVwbG95SW5zaWRlVnBjKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnN1Ym5ldElkID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc2VjdXJpdHlHcm91cElkcyA9PT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgdnBjSW5zdGFuY2UgPSBidWlsZFZwYyhzY29wZSwge1xuICAgICAgICAgIGRlZmF1bHRWcGNQcm9wczogRGVmYXVsdFB1YmxpY1ByaXZhdGVWcGNQcm9wcygpLFxuICAgICAgICB9KTtcbiAgICAgICAgc2VjdXJpdHlHcm91cCA9IGJ1aWxkU2VjdXJpdHlHcm91cChcbiAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAnU2VjdXJpdHlHcm91cCcsXG4gICAgICAgICAge1xuICAgICAgICAgICAgdnBjOiB2cGNJbnN0YW5jZSxcbiAgICAgICAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgW3sgcGVlcjogZWMyLlBlZXIuYW55SXB2NCgpLCBjb25uZWN0aW9uOiBlYzIuUG9ydC50Y3AoNDQzKSB9XVxuICAgICAgICApO1xuXG4gICAgICAgIHN1Ym5ldElkID0gdnBjSW5zdGFuY2UucHJpdmF0ZVN1Ym5ldHNbMF0uc3VibmV0SWQ7XG5cbiAgICAgICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyA9IERlZmF1bHRTYWdlbWFrZXJOb3RlYm9va1Byb3BzKHByb3BzLnJvbGUucm9sZUFybiwga21zS2V5SWQsIHN1Ym5ldElkLCBbXG4gICAgICAgICAgc2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgICAgIF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyA9IERlZmF1bHRTYWdlbWFrZXJOb3RlYm9va1Byb3BzKFxuICAgICAgICAgIHByb3BzLnJvbGUucm9sZUFybixcbiAgICAgICAgICBrbXNLZXlJZCxcbiAgICAgICAgICBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zdWJuZXRJZCxcbiAgICAgICAgICBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zZWN1cml0eUdyb3VwSWRzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNhZ2VtYWtlck5vdGVib29rUHJvcHMgPSBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyhwcm9wcy5yb2xlLnJvbGVBcm4sIGttc0tleUlkKTtcbiAgICB9XG5cbiAgICBzYWdlbWFrZXJOb3RlYm9va1Byb3BzID0gY29uc29saWRhdGVQcm9wcyhzYWdlbWFrZXJOb3RlYm9va1Byb3BzLCBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgbm90ZWJvb2tcbiAgICBjb25zdCBzYWdlbWFrZXJJbnN0YW5jZTogc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2UgPSBuZXcgc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2UoXG4gICAgICBzY29wZSxcbiAgICAgICdTYWdlbWFrZXJOb3RlYm9vaycsXG4gICAgICBzYWdlbWFrZXJOb3RlYm9va1Byb3BzXG4gICAgKTtcbiAgICBpZiAodnBjSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiB7IG5vdGVib29rOiBzYWdlbWFrZXJJbnN0YW5jZSwgdnBjOiB2cGNJbnN0YW5jZSwgc2VjdXJpdHlHcm91cCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyBub3RlYm9vazogc2FnZW1ha2VySW5zdGFuY2UgfTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gUmV0dXJuIGV4aXN0aW5nIG5vdGVib29rIG9iamVjdFxuICAgIHJldHVybiB7IG5vdGVib29rOiBwcm9wcy5leGlzdGluZ05vdGVib29rT2JqIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UHJvcHMge1xuICAvKipcbiAgICogRXhpc3RpbmcgU2FnZW1ha2VyIEVucG9pbnQgb2JqZWN0LCBpZiB0aGlzIGlzIHNldCB0aGVuIHRoZSBtb2RlbFByb3BzLCBlbmRwb2ludENvbmZpZ1Byb3BzLCBhbmQgZW5kcG9pbnRQcm9wcyBhcmUgaWdub3JlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmo/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQ7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIGNyZWF0ZSBTYWdlbWFrZXIgTW9kZWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBtb2RlbFByb3BzPzogc2FnZW1ha2VyLkNmbk1vZGVsUHJvcHMgfCBhbnk7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIGNyZWF0ZSBTYWdlbWFrZXIgRW5kcG9pbnQgQ29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50Q29uZmlnUHJvcHM/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFVzZXIgcHJvdmlkZWQgcHJvcHMgdG8gY3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50UHJvcHM/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRQcm9wcztcbiAgLyoqXG4gICAqIEEgVlBDIHdoZXJlIHRoZSBTYWdlbWFrZXIgRW5kcG9pbnQgd2lsbCBiZSBwbGFjZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2Uge1xuICByZWFkb25seSBlbmRwb2ludDogc2FnZW1ha2VyLkNmbkVuZHBvaW50LFxuICByZWFkb25seSBlbmRwb2ludENvbmZpZz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyxcbiAgcmVhZG9ubHkgbW9kZWw/OiBzYWdlbWFrZXIuQ2ZuTW9kZWxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnQoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHByb3BzOiBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UHJvcHNcbik6IEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRSZXNwb25zZSB7XG4gIC8qKiBDb25kaXRpb25hbCBTYWdlbWFrZXIgZW5kcG9pbnQgY3JlYXRpb24gKi9cbiAgaWYgKCFwcm9wcy5leGlzdGluZ1NhZ2VtYWtlckVuZHBvaW50T2JqKSB7XG4gICAgaWYgKHByb3BzLm1vZGVsUHJvcHMpIHtcbiAgICAgIGNvbnN0IGRlcGxveVNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2UgPSBkZXBsb3lTYWdlbWFrZXJFbmRwb2ludChzY29wZSwgcHJvcHMpO1xuICAgICAgcmV0dXJuIHsgLi4uZGVwbG95U2FnZW1ha2VyRW5kcG9pbnRSZXNwb25zZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcignRWl0aGVyIGV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmogb3IgYXQgbGVhc3QgbW9kZWxQcm9wcyBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvKiogT3RoZXJ3aXNlLCByZXR1cm4gW2VuZHBvaW50XSAqL1xuICAgIHJldHVybiB7IGVuZHBvaW50OiBwcm9wcy5leGlzdGluZ1NhZ2VtYWtlckVuZHBvaW50T2JqIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3lTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHNhZ2VtYWtlci5DZm5FbmRwb2ludCxcbiAgcmVhZG9ubHkgZW5kcG9pbnRDb25maWc/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWcsXG4gIHJlYWRvbmx5IG1vZGVsPzogc2FnZW1ha2VyLkNmbk1vZGVsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZXBsb3lTYWdlbWFrZXJFbmRwb2ludChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgcHJvcHM6IEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRQcm9wc1xuKTogRGVwbG95U2FnZW1ha2VyRW5kcG9pbnRSZXNwb25zZSB7XG4gIGxldCBtb2RlbDogc2FnZW1ha2VyLkNmbk1vZGVsO1xuICBsZXQgZW5kcG9pbnRDb25maWc6IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZztcbiAgbGV0IGVuZHBvaW50OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQ7XG4gIGxldCBzYWdlbWFrZXJSb2xlOiBpYW0uUm9sZTtcblxuICAvLyBDcmVhdGUgU2FnZW1ha2VyJ3MgbW9kZWwsIGVuZHBvaW50Q29uZmlnLCBhbmQgZW5kcG9pbnRcbiAgaWYgKHByb3BzLm1vZGVsUHJvcHMpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgY2xpZW50IGhhcyBwcm92aWRlZCBleGVjdXRpb25Sb2xlQXJuXG4gICAgaWYgKHByb3BzLm1vZGVsUHJvcHMuZXhlY3V0aW9uUm9sZUFybikge1xuICAgICAgc2FnZW1ha2VyUm9sZSA9IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKFxuICAgICAgICBzY29wZSxcbiAgICAgICAgJ1NhZ2VtYWtlclJvbGVDdXN0b21lcicsXG4gICAgICAgIHByb3BzLm1vZGVsUHJvcHMuZXhlY3V0aW9uUm9sZUFyblxuICAgICAgKSBhcyBpYW0uUm9sZTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ3JlYXRlIHRoZSBTYWdlbWFrZXIgUm9sZVxuICAgICAgc2FnZW1ha2VyUm9sZSA9IG5ldyBpYW0uUm9sZShzY29wZSwgJ1NhZ2VtYWtlclJvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdzYWdlbWFrZXIuYW1hem9uYXdzLmNvbScpLFxuICAgICAgfSk7XG4gICAgICAvLyBBZGQgcmVxdWlyZWQgcGVybWlzc2lvbnNcbiAgICAgIGFkZFBlcm1pc3Npb25zKHNhZ2VtYWtlclJvbGUsIHByb3BzKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgU2FnZW1ha2VyIE1vZGVsXG4gICAgbW9kZWwgPSBjcmVhdGVTYWdlbWFrZXJNb2RlbChzY29wZSwgcHJvcHMubW9kZWxQcm9wcywgc2FnZW1ha2VyUm9sZSwgcHJvcHMudnBjKTtcbiAgICAvLyBDcmVhdGUgU2FnZW1ha2VyIEVuZHBvaW50Q29uZmlnXG4gICAgZW5kcG9pbnRDb25maWcgPSBjcmVhdGVTYWdlbWFrZXJFbmRwb2ludENvbmZpZyhzY29wZSwgbW9kZWwuYXR0ck1vZGVsTmFtZSwgcHJvcHMuZW5kcG9pbnRDb25maWdQcm9wcyk7XG4gICAgLy8gQWRkIGRlcGVuZGVuY3kgb24gbW9kZWxcbiAgICBlbmRwb2ludENvbmZpZy5hZGREZXBlbmRlbmN5KG1vZGVsKTtcbiAgICAvLyBDcmVhdGUgU2FnZW1ha2VyIEVuZHBvaW50XG4gICAgZW5kcG9pbnQgPSBjcmVhdGVTYWdlbWFrZXJFbmRwb2ludChzY29wZSwgZW5kcG9pbnRDb25maWcuYXR0ckVuZHBvaW50Q29uZmlnTmFtZSwgcHJvcHMuZW5kcG9pbnRQcm9wcyk7XG4gICAgLy8gQWRkIGRlcGVuZGVuY3kgb24gRW5kcG9pbnRDb25maWdcbiAgICBlbmRwb2ludC5hZGREZXBlbmRlbmN5KGVuZHBvaW50Q29uZmlnKTtcblxuICAgIHJldHVybiB7IGVuZHBvaW50LCBlbmRwb2ludENvbmZpZywgbW9kZWwgfTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBFcnJvcignWW91IG5lZWQgdG8gcHJvdmlkZSBhdCBsZWFzdCBtb2RlbFByb3BzIHRvIGNyZWF0ZSBTYWdlbWFrZXIgRW5kcG9pbnQnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2FnZW1ha2VyTW9kZWwoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIG1vZGVsUHJvcHM6IHNhZ2VtYWtlci5DZm5Nb2RlbFByb3BzLFxuICByb2xlOiBpYW0uUm9sZSxcbiAgdnBjPzogZWMyLklWcGNcbik6IHNhZ2VtYWtlci5DZm5Nb2RlbCB7XG4gIGxldCBmaW5hbE1vZGVsUHJvcHM6IHNhZ2VtYWtlci5DZm5Nb2RlbFByb3BzO1xuICBsZXQgcHJpbWFyeUNvbnRhaW5lcjogc2FnZW1ha2VyLkNmbk1vZGVsLkNvbnRhaW5lckRlZmluaXRpb25Qcm9wZXJ0eTtcbiAgbGV0IHZwY0NvbmZpZzogc2FnZW1ha2VyLkNmbk1vZGVsLlZwY0NvbmZpZ1Byb3BlcnR5IHwgdW5kZWZpbmVkO1xuICBsZXQgbW9kZWw6IHNhZ2VtYWtlci5DZm5Nb2RlbDtcblxuICBpZiAodnBjKSB7XG4gICAgY29uc3QgbW9kZWxEZWZhdWx0U2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChzY29wZSwgJ1JlcGxhY2VNb2RlbERlZmF1bHRTZWN1cml0eUdyb3VwJywge1xuICAgICAgdnBjLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IGh0dHBzIHRyYWZmaWMgZnJvbSB3aXRoaW4gdGhlIFZQQ1xuICAgIG1vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUoZWMyLlBlZXIuaXB2NCh2cGMudnBjQ2lkckJsb2NrKSwgZWMyLlBvcnQudGNwKDQ0MykpO1xuXG4gICAgY29uc3QgY2ZuU2VjdXJpdHlHcm91cCA9IG1vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAubm9kZS5maW5kQ2hpbGQoJ1Jlc291cmNlJykgYXMgZWMyLkNmblNlY3VyaXR5R3JvdXA7XG4gICAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhjZm5TZWN1cml0eUdyb3VwLCBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzUnLFxuICAgICAgICByZWFzb246ICdFZ3Jlc3Mgb2YgMC4wLjAuMC8wIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnVzQwJyxcbiAgICAgICAgcmVhc29uOiAnRWdyZXNzIElQUHJvdG9jb2wgb2YgLTEgaXMgZGVmYXVsdCBhbmQgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgT0snLFxuICAgICAgfVxuICAgIF0pO1xuXG4gICAgLy8gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIFZQQyBkb2VzIG5vdCBjb250YWluIHByaXZhdGUgb3IgaXNvbGF0ZWQgc3VibmV0c1xuICAgIGlmICh2cGMucHJpdmF0ZVN1Ym5ldHMubGVuZ3RoID09PSAwICYmIHZwYy5pc29sYXRlZFN1Ym5ldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcignVlBDIG11c3QgY29udGFpbiBwcml2YXRlIG9yIGlzb2xhdGVkIHN1Ym5ldHMgdG8gZGVwbG95IHRoZSBTYWdlbWFrZXIgZW5kcG9pbnQgaW4gYSB2cGMnKTtcbiAgICB9XG5cbiAgICB2cGNDb25maWcgPSB7XG4gICAgICAvLyBkZWZhdWx0IFN1Ym5ldFR5cGUuUFJJVkFURSAob3IgSVNPTEFURUQgb3IgUFVCTElDIGlmIHRoZXJlIGFyZSBubyBQUklWQVRFIHN1Ym5ldHMpXG4gICAgICAvLyBTbywgcHJpdmF0ZSBzdWJuZXRzIHdpbGwgYmUgdXNlZCBpZiBwcm92aWRlZCBieSBjdXN0b21lci4gT3RoZXJ3aXNlLCB1c2UgdGhlIGRlZmF1bHQgaXNvbGF0ZWQgc3VibmV0cyxcbiAgICAgIHN1Ym5ldHM6IHZwYy5zZWxlY3RTdWJuZXRzKHtcbiAgICAgICAgb25lUGVyQXo6IHRydWUsXG4gICAgICB9KS5zdWJuZXRJZHMsXG4gICAgICBzZWN1cml0eUdyb3VwSWRzOiBbbW9kZWxEZWZhdWx0U2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWRdLFxuICAgIH07XG4gIH1cblxuICBpZiAobW9kZWxQcm9wcy5wcmltYXJ5Q29udGFpbmVyKSB7XG4gICAgLy8gR2V0IHVzZXIgcHJvdmlkZWQgTW9kZWwncyBwcmltYXJ5IGNvbnRhaW5lclxuICAgIHByaW1hcnlDb250YWluZXIgPSBtb2RlbFByb3BzLnByaW1hcnlDb250YWluZXIgYXMgc2FnZW1ha2VyLkNmbk1vZGVsLkNvbnRhaW5lckRlZmluaXRpb25Qcm9wZXJ0eTtcbiAgICAvLyBHZXQgZGVmYXVsdCBNb2RlbCBwcm9wc1xuICAgIGZpbmFsTW9kZWxQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNhZ2VtYWtlck1vZGVsUHJvcHMocm9sZS5yb2xlQXJuLCBwcmltYXJ5Q29udGFpbmVyLCB2cGNDb25maWcpLCBtb2RlbFByb3BzKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyJ3MgTW9kZWxcbiAgICBtb2RlbCA9IG5ldyBzYWdlbWFrZXIuQ2ZuTW9kZWwoc2NvcGUsICdTYWdlbWFrZXJNb2RlbCcsIGZpbmFsTW9kZWxQcm9wcyk7XG4gICAgLy8gQWRkIGRlcGVuZGVuY3kgb24gdGhlIFNhZ2VtYWtlcidzIHJvbGVcbiAgICBtb2RlbC5ub2RlLmFkZERlcGVuZGVuY3kocm9sZSk7XG5cbiAgICByZXR1cm4gbW9kZWw7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgRXJyb3IoJ1lvdSBuZWVkIHRvIHByb3ZpZGUgYXQgbGVhc3QgcHJpbWFyeUNvbnRhaW5lciB0byBjcmVhdGUgU2FnZW1ha2VyIE1vZGVsJyk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhZ2VtYWtlckVuZHBvaW50Q29uZmlnKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgZW5kcG9pbnRDb25maWdQcm9wcz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZ1Byb3BzXG4pOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWcge1xuICBsZXQgZmluYWxFbmRwb2ludENvbmZpZ1Byb3BzOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWdQcm9wcztcbiAgbGV0IGttc0tleUlkOiBzdHJpbmc7XG4gIGxldCBlbmRwb2ludENvbmZpZzogc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnO1xuXG4gIC8vIENyZWF0ZSBlbmNyeXB0aW9uIGtleSBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gIGlmIChlbmRwb2ludENvbmZpZ1Byb3BzICYmIGVuZHBvaW50Q29uZmlnUHJvcHMua21zS2V5SWQpIHtcbiAgICBrbXNLZXlJZCA9IGVuZHBvaW50Q29uZmlnUHJvcHMua21zS2V5SWQ7XG4gIH0gZWxzZSB7XG4gICAga21zS2V5SWQgPSBidWlsZEVuY3J5cHRpb25LZXkoc2NvcGUpLmtleUlkO1xuICB9XG5cbiAgLy8gT3ZlcndyaXRlIGRlZmF1bHQgRW5kcG9pbnRDb25maWcgcHJvcGVydGllc1xuICBmaW5hbEVuZHBvaW50Q29uZmlnUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTYWdlbWFrZXJFbmRwb2ludENvbmZpZ1Byb3BzKG1vZGVsTmFtZSwga21zS2V5SWQpLCBlbmRwb2ludENvbmZpZ1Byb3BzKTtcblxuICAvLyBDcmVhdGUgdGhlIFNhZ2VtYWtlcidzIEVuZHBvaW50Q29uZmlnXG4gIGVuZHBvaW50Q29uZmlnID0gbmV3IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyhzY29wZSwgJ1NhZ2VtYWtlckVuZHBvaW50Q29uZmlnJywgZmluYWxFbmRwb2ludENvbmZpZ1Byb3BzKTtcblxuICByZXR1cm4gZW5kcG9pbnRDb25maWc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYWdlbWFrZXJFbmRwb2ludChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgZW5kcG9pbnRDb25maWdOYW1lOiBzdHJpbmcsXG4gIGVuZHBvaW50UHJvcHM/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRQcm9wc1xuKTogc2FnZW1ha2VyLkNmbkVuZHBvaW50IHtcbiAgbGV0IGZpbmFsRW5kcG9pbnRQcm9wczogc2FnZW1ha2VyLkNmbkVuZHBvaW50UHJvcHM7XG4gIGxldCBlbmRwb2ludDogc2FnZW1ha2VyLkNmbkVuZHBvaW50O1xuXG4gIC8vIE92ZXJ3cml0ZSBkZWZhdWx0IEVuZHBvaW50IHByb3BlcnRpZXNcbiAgZmluYWxFbmRwb2ludFByb3BzID0gY29uc29saWRhdGVQcm9wcyhEZWZhdWx0U2FnZW1ha2VyRW5kcG9pbnRQcm9wcyhlbmRwb2ludENvbmZpZ05hbWUpLCBlbmRwb2ludFByb3BzKTtcblxuICAvLyBDcmVhdGUgdGhlIFNhZ2VtYWtlcidzIEVuZHBvaW50XG4gIGVuZHBvaW50ID0gbmV3IHNhZ2VtYWtlci5DZm5FbmRwb2ludChzY29wZSwgJ1NhZ2VtYWtlckVuZHBvaW50JywgZmluYWxFbmRwb2ludFByb3BzKTtcblxuICByZXR1cm4gZW5kcG9pbnQ7XG59XG4iXX0=
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FnZW1ha2VyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNhZ2VtYWtlci1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7OztHQVdHOzs7QUFFSDs7O0dBR0c7QUFFSCx1REFBdUQ7QUFDdkQsMkNBQTJDO0FBQzNDLDZDQUFrRDtBQUNsRCw2REFLOEI7QUFDOUIsbUNBQW1DO0FBQ25DLG1DQUFnRTtBQUNoRSw2Q0FBd0M7QUFDeEMsMkNBQTJDO0FBQzNDLDZDQUFrQztBQUNsQyxpREFBOEQ7QUFDOUQsbUVBQTZEO0FBZ0M3RCxTQUFTLGNBQWMsQ0FBQyxJQUFjLEVBQUUsS0FBbUM7SUFDekUsNEVBQTRFO0lBQzVFLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8saUJBQUcsQ0FBQyxTQUFTLGNBQWMsaUJBQUcsQ0FBQyxNQUFNLElBQUksaUJBQUcsQ0FBQyxVQUFVLElBQUksQ0FBQztRQUMvRSxPQUFPLEVBQUU7WUFDUCw2QkFBNkI7WUFDN0IsK0JBQStCO1lBQy9CLHVCQUF1QjtZQUN2Qix5QkFBeUI7WUFDekIsdUJBQXVCO1lBQ3ZCLDBCQUEwQjtZQUMxQixnQ0FBZ0M7WUFDaEMsNEJBQTRCO1lBQzVCLGtDQUFrQztZQUNsQywwQkFBMEI7WUFDMUIsZ0NBQWdDO1lBQ2hDLDBCQUEwQjtTQUMzQjtLQUNGLENBQUMsQ0FDSCxDQUFDO0lBRUYsdUNBQXVDO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQ2QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1FBQ3RCLFNBQVMsRUFBRSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxTQUFTLFNBQVMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLDZCQUE2QixDQUFDO1FBQy9HLE9BQU8sRUFBRTtZQUNQLHFCQUFxQjtZ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Q25ELElBQUksUUFBK0IsQ0FBQztJQUVwQyx3Q0FBd0M7SUFDeEMsa0JBQWtCLEdBQUcsd0JBQWdCLENBQUMsa0RBQTZCLENBQUMsa0JBQWtCLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUV4RyxrQ0FBa0M7SUFDbEMsUUFBUSxHQUFHLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUVyRixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBZkQsMERBZUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCAqIGFzIHNhZ2VtYWtlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2FnZW1ha2VyJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IGJ1aWxkRW5jcnlwdGlvbktleSB9IGZyb20gJy4va21zLWhlbHBlcic7XG5pbXBvcnQge1xuICBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyxcbiAgRGVmYXVsdFNhZ2VtYWtlck1vZGVsUHJvcHMsXG4gIERlZmF1bHRTYWdlbWFrZXJFbmRwb2ludENvbmZpZ1Byb3BzLFxuICBEZWZhdWx0U2FnZW1ha2VyRW5kcG9pbnRQcm9wcyxcbn0gZnJvbSAnLi9zYWdlbWFrZXItZGVmYXVsdHMnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IGFkZENmblN1cHByZXNzUnVsZXMsIGNvbnNvbGlkYXRlUHJvcHMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGJ1aWxkVnBjIH0gZnJvbSAnLi92cGMtaGVscGVyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEF3cyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IERlZmF1bHRQdWJsaWNQcml2YXRlVnBjUHJvcHMgfSBmcm9tICcuL3ZwYy1kZWZhdWx0cyc7XG5pbXBvcnQgeyBidWlsZFNlY3VyaXR5R3JvdXAgfSBmcm9tICcuL3NlY3VyaXR5LWdyb3VwLWhlbHBlcic7XG4vLyBOb3RlOiBUbyBlbnN1cmUgQ0RLdjIgY29tcGF0aWJpbGl0eSwga2VlcCB0aGUgaW1wb3J0IHN0YXRlbWVudCBmb3IgQ29uc3RydWN0IHNlcGFyYXRlXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNhZ2VtYWtlck5vdGVib29rUHJvcHMge1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wcyBmb3IgQ2ZuTm90ZWJvb2tJbnN0YW5jZVByb3BzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz86IHNhZ2VtYWtlci5DZm5Ob3RlYm9va0luc3RhbmNlUHJvcHMgfCBhbnk7XG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyIHByb3ZpZGVkIHByb3BzIHRvIGRlcGxveSBpbnNpZGUgdnBjXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95SW5zaWRlVnBjPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsLCBFeGlzdGluZyBpbnN0YW5jZSBvZiBub3RlYm9vayBvYmplY3QuXG4gICAqIElmIHRoaXMgaXMgc2V0IHRoZW4gdGhlIHNhZ2VtYWtlck5vdGVib29rUHJvcHMgaXMgaWdub3JlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nTm90ZWJvb2tPYmo/OiBzYWdlbWFrZXIuQ2ZuTm90ZWJvb2tJbnN0YW5jZTtcbiAgLyoqXG4gICAqIElBTSBSb2xlIEFybiBmb3IgU2FnZW1ha2VyIE5vdGVCb29rSW5zdGFuY2VcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSByb2xlOiBpYW0uUm9sZTtcbn1cblxuZnVuY3Rpb24gYWRkUGVybWlzc2lvbnMocm9sZTogaWFtLlJvbGUsIHByb3BzPzogQnVpbGRTYWdlbWFrZXJFbmRwb2ludFByb3BzKSB7XG4gIC8vIEdyYW50IHBlcm1pc3Npb25zIHRvIE5vdGVCb29rSW5zdGFuY2UgZm9yIGNyZWF0aW5nIGFuZCB0cmFpbmluZyB0aGUgbW9kZWxcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06c2FnZW1ha2VyOiR7QXdzLlJFR0lPTn06JHtBd3MuQUNDT1VOVF9JRH06KmBdLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnc2FnZW1ha2VyOkNyZWF0ZVRyYWluaW5nSm9iJyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpEZXNjcmliZVRyYWluaW5nSm9iJyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVNb2RlbCcsXG4gICAgICAgICdzYWdlbWFrZXI6RGVzY3JpYmVNb2RlbCcsXG4gICAgICAgICdzYWdlbWFrZXI6RGVsZXRlTW9kZWwnLFxuICAgICAgICAnc2FnZW1ha2VyOkNyZWF0ZUVuZHBvaW50JyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpDcmVhdGVFbmRwb2ludENvbmZpZycsXG4gICAgICAgICdzYWdlbWFrZXI6RGVzY3JpYmVFbmRwb2ludCcsXG4gICAgICAgICdzYWdlbWFrZXI6RGVzY3JpYmVFbmRwb2ludENvbmZpZycsXG4gICAgICAgICdzYWdlbWFrZXI6RGVsZXRlRW5kcG9pbnQnLFxuICAgICAgICAnc2FnZW1ha2VyOkRlbGV0ZUVuZHBvaW50Q29uZmlnJyxcbiAgICAgICAgJ3NhZ2VtYWtlcjpJbnZva2VFbmRwb2ludCcsXG4gICAgICBdLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gR3JhbnQgQ2xvdWRXYXRjaCBMb2dnaW5nIHBlcm1pc3Npb25zXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke2Nkay5Bd3MuUEFSVElUSU9OfTpsb2dzOiR7Y2RrLkF3cy5SRUdJT059OiR7Y2RrLkF3cy5BQ0NPVU5UX0lEfTpsb2ctZ3JvdXA6L2F3cy9zYWdlbWFrZXIvKmBdLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnbG9nczpDcmVhdGVMb2dHcm91cCcsXG4gICAgICAgICdsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsXG4gICAgICAgICdsb2dzOkRlc2NyaWJlTG9nU3RyZWFtcycsXG4gICAgICAgICdsb2dzOkdldExvZ0V2ZW50cycsXG4gICAgICAgICdsb2dzOlB1dExvZ0V2ZW50cycsXG4gICAgICBdLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gVG8gcGxhY2UgdGhlIFNhZ2VtYWtlciBlbmRwb2ludCBpbiBhIFZQQ1xuICBpZiAocHJvcHMgJiYgcHJvcHMudnBjKSB7XG4gICAgcm9sZS5hZGRUb1BvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdlYzI6Q3JlYXRlTmV0d29ya0ludGVyZmFjZScsXG4gICAgICAgICAgJ2VjMjpDcmVhdGVOZXR3b3JrSW50ZXJmYWNlUGVybWlzc2lvbicsXG4gICAgICAgICAgJ2VjMjpEZWxldGVOZXR3b3JrSW50ZXJmYWNlJyxcbiAgICAgICAgICAnZWMyOkRlbGV0ZU5ldHdvcmtJbnRlcmZhY2VQZXJtaXNzaW9uJyxcbiAgICAgICAgICAnZWMyOkRlc2NyaWJlTmV0d29ya0ludGVyZmFjZXMnLFxuICAgICAgICAgICdlYzI6QXNzaWduUHJpdmF0ZUlwQWRkcmVzc2VzJyxcbiAgICAgICAgICAnZWMyOlVuYXNzaWduUHJpdmF0ZUlwQWRkcmVzc2VzJyxcbiAgICAgICAgICAnZWMyOkRlc2NyaWJlVnBjcycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZURoY3BPcHRpb25zJyxcbiAgICAgICAgICAnZWMyOkRlc2NyaWJlU3VibmV0cycsXG4gICAgICAgICAgJ2VjMjpEZXNjcmliZVNlY3VyaXR5R3JvdXBzJyxcbiAgICAgICAgXSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8vIFRvIGNyZWF0ZSBhIFNhZ2VtYWtlciBtb2RlbCB1c2luZyBCcmluZy1Zb3VyLU93bi1Nb2RlbCAoQllPTSkgYWxnb3JpdGggaW1hZ2VcbiAgLy8gVGhlIGltYWdlIFVSTCBpcyBzcGVjaWZpZWQgaW4gdGhlIG1vZGVsUHJvcHNcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFtgYXJuOiR7Y2RrLkF3cy5QQVJUSVRJT059OmVjcjoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06cmVwb3NpdG9yeS8qYF0sXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdlY3I6QmF0Y2hDaGVja0xheWVyQXZhaWxhYmlsaXR5JyxcbiAgICAgICAgJ2VjcjpHZXREb3dubG9hZFVybEZvckxheWVyJyxcbiAgICAgICAgJ2VjcjpEZXNjcmliZVJlcG9zaXRvcmllcycsXG4gICAgICAgICdlY3I6RGVzY3JpYmVJbWFnZXMnLFxuICAgICAgICAnZWNyOkJhdGNoR2V0SW1hZ2UnLFxuICAgICAgXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEFkZCBHZXRBdXRob3JpemF0aW9uVG9rZW4gKGl0IGNhbiBub3QgYmUgYm91bmQgdG8gcmVzb3VyY2VzIG90aGVyIHRoYW4gKilcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgYWN0aW9uczogWydlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJ10sXG4gICAgfSlcbiAgKTtcblxuICAvLyBhZGQgcGVybWlzc2lvbiB0byB1c2UgRWxhc3RpYyBJbmZlcmVuY2UgYWNjZWxlcmF0b3JcbiAgaWYgKHByb3BzICYmIHByb3BzLmVuZHBvaW50Q29uZmlnUHJvcHMpIHtcbiAgICAvLyBHZXQgdGhlIGFjY2VsZXJhdG9yVHlwZSwgaWYgYW55XG4gICAgY29uc3QgYWNjZWxlcmF0b3JUeXBlID0gKHByb3BzLmVuZHBvaW50Q29uZmlnUHJvcHNcbiAgICAgID8ucHJvZHVjdGlvblZhcmlhbnRzIGFzIHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZy5Qcm9kdWN0aW9uVmFyaWFudFByb3BlcnR5W10pWzBdLmFjY2VsZXJhdG9yVHlwZTtcbiAgICBpZiAoYWNjZWxlcmF0b3JUeXBlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIGFjdGlvbnM6IFsnZWxhc3RpYy1pbmZlcmVuY2U6Q29ubmVjdCddLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBhZGQga21zIHBlcm1pc3Npb25zXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgLy8gdGhlIGttc0tleUlkIGluIHRoZSBlbmRwb2ludENvbmZpZ1Byb3BzIGNhbiBiZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXRzOlxuICAgICAgLy8gS2V5IElEOiAxMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJcbiAgICAgIC8vIEtleSBBUk46IGFybjphd3M6a21zOjxyZWdpb24+OjxhY2NvdW50SUQ+OmtleS8xMjM0YWJjZC0xMmFiLTM0Y2QtNTZlZi0xMjM0NTY3ODkwYWJcbiAgICAgIC8vIEFsaWFzIG5hbWU6IGFsaWFzL0V4YW1wbGVBbGlhc1xuICAgICAgLy8gQWxpYXMgbmFtZSBBUk46IGFybjphd3M6a21zOjxyZWdpb24+OjxhY2NvdW50SUQ+OmFsaWFzL0V4YW1wbGVBbGlhc1xuICAgICAgLy8gdGhlIGtleSBpcyB1c2VkIHRvIGVuY3J5cHQvZGVjcnlwdCBkYXRhIGNhcHR1cmVkIGJ5IHRoZSBTYWdlbWFrZXIgZW5kcG9pbnQgYW5kIHN0b3JlZCBpbiBTMyBidWNrZXRcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBgYXJuOiR7Y2RrLkF3cy5QQVJUSVRJT059Omttczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06a2V5LypgLFxuICAgICAgICBgYXJuOiR7Y2RrLkF3cy5QQVJUSVRJT059Omttczoke2Nkay5Bd3MuUkVHSU9OfToke2Nkay5Bd3MuQUNDT1VOVF9JRH06YWxpYXMvKmAsXG4gICAgICBdLFxuICAgICAgYWN0aW9uczogWydrbXM6RW5jcnlwdCcsICdrbXM6RGVjcnlwdCcsICdrbXM6UmVFbmNyeXB0KicsICdrbXM6R2VuZXJhdGVEYXRhS2V5KicsICdrbXM6RGVzY3JpYmVLZXknXSxcbiAgICB9KVxuICApO1xuXG4gIC8vIEFkZCBTMyBwZXJtaXNzaW9ucyB0byBnZXQgTW9kZWwgYXJ0aWZhY3QsIHB1dCBkYXRhIGNhcHR1cmUgZmlsZXMsIGV0Yy5cbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCcsICdzMzpQdXRPYmplY3QnLCAnczM6RGVsZXRlT2JqZWN0JywgJ3MzOkxpc3RCdWNrZXQnXSxcbiAgICAgIHJlc291cmNlczogWydhcm46YXdzOnMzOjo6KiddLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gR3JhbnQgR2V0Um9sZSBwZXJtaXNzaW9ucyB0byB0aGUgU2FnZW1ha2VyIHNlcnZpY2VcbiAgcm9sZS5hZGRUb1BvbGljeShcbiAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFtyb2xlLnJvbGVBcm5dLFxuICAgICAgYWN0aW9uczogWydpYW06R2V0Um9sZSddLFxuICAgIH0pXG4gICk7XG5cbiAgLy8gR3JhbnQgUGFzc1JvbGUgcGVybWlzc2lvbnMgdG8gdGhlIFNhZ2VtYWtlciBzZXJ2aWNlXG4gIHJvbGUuYWRkVG9Qb2xpY3koXG4gICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgcmVzb3VyY2VzOiBbcm9sZS5yb2xlQXJuXSxcbiAgICAgIGFjdGlvbnM6IFsnaWFtOlBhc3NSb2xlJ10sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgIFN0cmluZ0xpa2U6IHsgJ2lhbTpQYXNzZWRUb1NlcnZpY2UnOiAnc2FnZW1ha2VyLmFtYXpvbmF3cy5jb20nIH0sXG4gICAgICB9LFxuICAgIH0pXG4gICk7XG5cbiAgLy8gQWRkIENGTiBOQUcgdXBwcmVzcyB0byBhbGxvdyBmb3IgXCJSZXNvdXJjZVwiOiBcIipcIiBmb3IgRU5JIGFjY2VzcyBpbiBWUEMsXG4gIC8vIEVDUiBhdXRob3JpemF0aW9uIHRva2VuIGZvciBjdXN0b20gbW9kZWwgaW1hZ2VzLCBhbmQgZWxhc3RpYyBpbmZlcmVuY2VcbiAgLy8gQWRkIENGTiBOQUcgZm9yIENvbXBsZXggUm9sZSBiZWNhdXNlIFNhZ21ha2VyIG5lZWRzIHBlcm1pc3Npb25zIHRvIGFjY2VzcyBzZXZlcmFsIHNlcnZpY2VzXG4gIGNvbnN0IHJvbGVEZWZhdWx0UG9saWN5ID0gcm9sZS5ub2RlLnRyeUZpbmRDaGlsZCgnRGVmYXVsdFBvbGljeScpPy5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBpYW0uQ2ZuUG9saWN5O1xuICBhZGRDZm5TdXBwcmVzc1J1bGVzKHJvbGVEZWZhdWx0UG9saWN5LCBbXG4gICAge1xuICAgICAgaWQ6ICdXMTInLFxuICAgICAgcmVhc29uOiBgU2FnZW1ha2VyIG5lZWRzIHRoZSBmb2xsb3dpbmcgbWluaW11bSByZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgRU5JcyBpbiBhIFZQQywgRUNSIGZvciBjdXN0b20gbW9kZWwgaW1hZ2VzLCBhbmQgZWxhc3RpYyBpbmZlcmVuY2UuYCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiAnVzc2JyxcbiAgICAgIHJlYXNvbjogJ0NvbXBsZXggcm9sZSBiZWN1YXNlIFNhZ2VtYWtlciBuZWVkcyBwZXJtaXNzaW9ucyB0byBhY2Nlc3Mgc2V2ZXJhbCBzZXJ2aWNlcycsXG4gICAgfVxuICBdKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNhZ2VtYWtlck5vdGVib29rUmVzcG9uc2Uge1xuICByZWFkb25seSBub3RlYm9vazogc2FnZW1ha2VyLkNmbk5vdGVib29rSW5zdGFuY2UsXG4gIHJlYWRvbmx5IHZwYz86IGVjMi5JVnBjLFxuICByZWFkb25seSBzZWN1cml0eUdyb3VwPzogZWMyLlNlY3VyaXR5R3JvdXBcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRTYWdlbWFrZXJOb3RlYm9vayhcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgcHJvcHM6IEJ1aWxkU2FnZW1ha2VyTm90ZWJvb2tQcm9wc1xuKTogQnVpbGRTYWdlbWFrZXJOb3RlYm9va1Jlc3BvbnNlIHtcbiAgLy8gU2V0dXAgdGhlIG5vdGVib29rIHByb3BlcnRpZXNcbiAgbGV0IHNhZ2VtYWtlck5vdGVib29rUHJvcHM7XG4gIGxldCB2cGNJbnN0YW5jZTtcbiAgbGV0IHNlY3VyaXR5R3JvdXA7XG4gIGxldCBrbXNLZXlJZDogc3RyaW5nO1xuICBsZXQgc3VibmV0SWQ6IHN0cmluZztcblxuICAvLyBDb25kaXRpb25hbCBTYWdlbWFrZXIgTm90ZWJvb2sgY3JlYXRpb25cbiAgaWYgKCFwcm9wcy5leGlzdGluZ05vdGVib29rT2JqKSB7XG4gICAgaWYgKFxuICAgICAgKHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnN1Ym5ldElkICYmIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnNlY3VyaXR5R3JvdXBJZHMgPT09IHVuZGVmaW5lZCkgfHxcbiAgICAgIChwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zdWJuZXRJZCA9PT0gdW5kZWZpbmVkICYmIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnNlY3VyaXR5R3JvdXBJZHMpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgZGVmaW5lIGJvdGggc2FnZW1ha2VyTm90ZWJvb2tQcm9wcy5zdWJuZXRJZCBhbmQgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcy5zZWN1cml0eUdyb3VwSWRzJyk7XG4gICAgfVxuXG4gICAgYWRkUGVybWlzc2lvbnMocHJvcHMucm9sZSk7XG5cbiAgICBpZiAocHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8ua21zS2V5SWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAga21zS2V5SWQgPSBidWlsZEVuY3J5cHRpb25LZXkoc2NvcGUpLmtleUlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBrbXNLZXlJZCA9IHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHMua21zS2V5SWQ7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRlcGxveUluc2lkZVZwYyA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmRlcGxveUluc2lkZVZwYykge1xuICAgICAgaWYgKFxuICAgICAgICBwcm9wcy5zYWdlbWFrZXJOb3RlYm9va1Byb3BzPy5zdWJuZXRJZCA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgIHByb3BzLnNhZ2VtYWtlck5vdGVib29rUHJvcHM/LnNlY3VyaXR5R3JvdXBJZHMgPT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIHZwY0luc3RhbmNlID0gYnVpbGRWcGMoc2NvcGUsIHtcbiAgICAgICAgICBkZWZhdWx0VnBjUHJvcHM6IERlZmF1bHRQdWJsaWNQcml2YXRlVnBjUHJvcHMoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIHNlY3VyaXR5R3JvdXAgPSBidWlsZFNlY3VyaXR5R3JvdXAoXG4gICAgICAgICAgc2NvcGUsXG4gICAgICAgICAgJ1NlY3VyaXR5R3JvdXAnLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHZwYzogdnBjSW5zdGFuY2UsXG4gICAgICAgICAgICBhbGxvd0FsbE91dGJvdW5kOiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIFt7IHBlZXI6IGVjMi5QZWVyLmFueUlwdjQoKSwgY29ubmVjdGlvbjogZWMyLlBvcnQudGNwKDQ0MykgfV1cbiAgICAgICAgKTtcblxuICAgICAgICBzdWJuZXRJZCA9IHZwY0luc3RhbmNlLnByaXZhdGVTdWJuZXRzWzBdLnN1Ym5ldElkO1xuXG4gICAgICAgIHNhZ2VtYWtlck5vdGVib29rUHJvcHMgPSBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyhwcm9wcy5yb2xlLnJvbGVBcm4sIGttc0tleUlkLCBzdWJuZXRJZCwgW1xuICAgICAgICAgIHNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkLFxuICAgICAgICBdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNhZ2VtYWtlck5vdGVib29rUHJvcHMgPSBEZWZhdWx0U2FnZW1ha2VyTm90ZWJvb2tQcm9wcyhcbiAgICAgICAgICBwcm9wcy5yb2xlLnJvbGVBcm4sXG4gICAgICAgICAga21zS2V5SWQsXG4gICAgICAgICAgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc3VibmV0SWQsXG4gICAgICAgICAgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcz8uc2VjdXJpdHlHcm91cElkc1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzYWdlbWFrZXJOb3RlYm9va1Byb3BzID0gRGVmYXVsdFNhZ2VtYWtlck5vdGVib29rUHJvcHMocHJvcHMucm9sZS5yb2xlQXJuLCBrbXNLZXlJZCk7XG4gICAgfVxuXG4gICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoc2FnZW1ha2VyTm90ZWJvb2tQcm9wcywgcHJvcHMuc2FnZW1ha2VyTm90ZWJvb2tQcm9wcyk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIG5vdGVib29rXG4gICAgY29uc3Qgc2FnZW1ha2VySW5zdGFuY2U6IHNhZ2VtYWtlci5DZm5Ob3RlYm9va0luc3RhbmNlID0gbmV3IHNhZ2VtYWtlci5DZm5Ob3RlYm9va0luc3RhbmNlKFxuICAgICAgc2NvcGUsXG4gICAgICAnU2FnZW1ha2VyTm90ZWJvb2snLFxuICAgICAgc2FnZW1ha2VyTm90ZWJvb2tQcm9wc1xuICAgICk7XG4gICAgaWYgKHZwY0luc3RhbmNlKSB7XG4gICAgICByZXR1cm4geyBub3RlYm9vazogc2FnZW1ha2VySW5zdGFuY2UsIHZwYzogdnBjSW5zdGFuY2UsIHNlY3VyaXR5R3JvdXAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgbm90ZWJvb2s6IHNhZ2VtYWtlckluc3RhbmNlIH07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFJldHVybiBleGlzdGluZyBub3RlYm9vayBvYmplY3RcbiAgICByZXR1cm4geyBub3RlYm9vazogcHJvcHMuZXhpc3RpbmdOb3RlYm9va09iaiB9O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTYWdlbWFrZXJFbmRwb2ludFByb3BzIHtcbiAgLyoqXG4gICAqIEV4aXN0aW5nIFNhZ2VtYWtlciBFbnBvaW50IG9iamVjdCwgaWYgdGhpcyBpcyBzZXQgdGhlbiB0aGUgbW9kZWxQcm9wcywgZW5kcG9pbnRDb25maWdQcm9wcywgYW5kIGVuZHBvaW50UHJvcHMgYXJlIGlnbm9yZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1NhZ2VtYWtlckVuZHBvaW50T2JqPzogc2FnZW1ha2VyLkNmbkVuZHBvaW50O1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBjcmVhdGUgU2FnZW1ha2VyIE1vZGVsXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbW9kZWxQcm9wcz86IHNhZ2VtYWtlci5DZm5Nb2RlbFByb3BzIHwgYW55O1xuICAvKipcbiAgICogVXNlciBwcm92aWRlZCBwcm9wcyB0byBjcmVhdGUgU2FnZW1ha2VyIEVuZHBvaW50IENvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludENvbmZpZ1Byb3BzPzogc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnUHJvcHM7XG4gIC8qKlxuICAgKiBVc2VyIHByb3ZpZGVkIHByb3BzIHRvIGNyZWF0ZSBTYWdlbWFrZXIgRW5kcG9pbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludFByb3BzPzogc2FnZW1ha2VyLkNmbkVuZHBvaW50UHJvcHM7XG4gIC8qKlxuICAgKiBBIFZQQyB3aGVyZSB0aGUgU2FnZW1ha2VyIEVuZHBvaW50IHdpbGwgYmUgcGxhY2VkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHNhZ2VtYWtlci5DZm5FbmRwb2ludCxcbiAgcmVhZG9ubHkgZW5kcG9pbnRDb25maWc/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWcsXG4gIHJlYWRvbmx5IG1vZGVsPzogc2FnZW1ha2VyLkNmbk1vZGVsXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnQoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIHByb3BzOiBCdWlsZFNhZ2VtYWtlckVuZHBvaW50UHJvcHNcbik6IEJ1aWxkU2FnZW1ha2VyRW5kcG9pbnRSZXNwb25zZSB7XG4gIC8qKiBDb25kaXRpb25hbCBTYWdlbWFrZXIgZW5kcG9pbnQgY3JlYXRpb24gKi9cbiAgaWYgKCFwcm9wcy5leGlzdGluZ1NhZ2VtYWtlckVuZHBvaW50T2JqKSB7XG4gICAgaWYgKHByb3BzLm1vZGVsUHJvcHMpIHtcbiAgICAgIGNvbnN0IGRlcGxveVNhZ2VtYWtlckVuZHBvaW50UmVzcG9uc2UgPSBkZXBsb3lTYWdlbWFrZXJFbmRwb2ludChzY29wZSwgcHJvcHMpO1xuICAgICAgcmV0dXJuIHsgLi4uZGVwbG95U2FnZW1ha2VyRW5kcG9pbnRSZXNwb25zZSB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcignRWl0aGVyIGV4aXN0aW5nU2FnZW1ha2VyRW5kcG9pbnRPYmogb3IgYXQgbGVhc3QgbW9kZWxQcm9wcyBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvKiogT3RoZXJ3aXNlLCByZXR1cm4gW2VuZHBvaW50XSAqL1xuICAgIHJldHVybiB7IGVuZHBvaW50OiBwcm9wcy5leGlzdGluZ1NhZ2VtYWtlckVuZHBvaW50T2JqIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXBsb3lTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlIHtcbiAgcmVhZG9ubHkgZW5kcG9pbnQ6IHNhZ2VtYWtlci5DZm5FbmRwb2ludCxcbiAgcmVhZG9ubHkgZW5kcG9pbnRDb25maWc/OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWcsXG4gIHJlYWRvbmx5IG1vZGVsPzogc2FnZW1ha2VyLkNmbk1vZGVsXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlcGxveVNhZ2VtYWtlckVuZHBvaW50KFxuICBzY29wZTogQ29uc3RydWN0LFxuICBwcm9wczogQnVpbGRTYWdlbWFrZXJFbmRwb2ludFByb3BzXG4pOiBEZXBsb3lTYWdlbWFrZXJFbmRwb2ludFJlc3BvbnNlIHtcbiAgbGV0IG1vZGVsOiBzYWdlbWFrZXIuQ2ZuTW9kZWw7XG4gIGxldCBlbmRwb2ludENvbmZpZzogc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnO1xuICBsZXQgZW5kcG9pbnQ6IHNhZ2VtYWtlci5DZm5FbmRwb2ludDtcbiAgbGV0IHNhZ2VtYWtlclJvbGU6IGlhbS5Sb2xlO1xuXG4gIC8vIENyZWF0ZSBTYWdlbWFrZXIncyBtb2RlbCwgZW5kcG9pbnRDb25maWcsIGFuZCBlbmRwb2ludFxuICBpZiAocHJvcHMubW9kZWxQcm9wcykge1xuICAgIC8vIENoZWNrIGlmIHRoZSBjbGllbnQgaGFzIHByb3ZpZGVkIGV4ZWN1dGlvblJvbGVBcm5cbiAgICBpZiAocHJvcHMubW9kZWxQcm9wcy5leGVjdXRpb25Sb2xlQXJuKSB7XG4gICAgICBzYWdlbWFrZXJSb2xlID0gaWFtLlJvbGUuZnJvbVJvbGVBcm4oXG4gICAgICAgIHNjb3BlLFxuICAgICAgICAnU2FnZW1ha2VyUm9sZUN1c3RvbWVyJyxcbiAgICAgICAgcHJvcHMubW9kZWxQcm9wcy5leGVjdXRpb25Sb2xlQXJuXG4gICAgICApIGFzIGlhbS5Sb2xlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDcmVhdGUgdGhlIFNhZ2VtYWtlciBSb2xlXG4gICAgICBzYWdlbWFrZXJSb2xlID0gbmV3IGlhbS5Sb2xlKHNjb3BlLCAnU2FnZW1ha2VyUm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ3NhZ2VtYWtlci5hbWF6b25hd3MuY29tJyksXG4gICAgICB9KTtcbiAgICAgIC8vIEFkZCByZXF1aXJlZCBwZXJtaXNzaW9uc1xuICAgICAgYWRkUGVybWlzc2lvbnMoc2FnZW1ha2VyUm9sZSwgcHJvcHMpO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBTYWdlbWFrZXIgTW9kZWxcbiAgICBtb2RlbCA9IGNyZWF0ZVNhZ2VtYWtlck1vZGVsKHNjb3BlLCBwcm9wcy5tb2RlbFByb3BzLCBzYWdlbWFrZXJSb2xlLCBwcm9wcy52cGMpO1xuICAgIC8vIENyZWF0ZSBTYWdlbWFrZXIgRW5kcG9pbnRDb25maWdcbiAgICBlbmRwb2ludENvbmZpZyA9IGNyZWF0ZVNhZ2VtYWtlckVuZHBvaW50Q29uZmlnKHNjb3BlLCBtb2RlbC5hdHRyTW9kZWxOYW1lLCBwcm9wcy5lbmRwb2ludENvbmZpZ1Byb3BzKTtcbiAgICAvLyBBZGQgZGVwZW5kZW5jeSBvbiBtb2RlbFxuICAgIGVuZHBvaW50Q29uZmlnLmFkZERlcGVuZGVuY3kobW9kZWwpO1xuICAgIC8vIENyZWF0ZSBTYWdlbWFrZXIgRW5kcG9pbnRcbiAgICBlbmRwb2ludCA9IGNyZWF0ZVNhZ2VtYWtlckVuZHBvaW50KHNjb3BlLCBlbmRwb2ludENvbmZpZy5hdHRyRW5kcG9pbnRDb25maWdOYW1lLCBwcm9wcy5lbmRwb2ludFByb3BzKTtcbiAgICAvLyBBZGQgZGVwZW5kZW5jeSBvbiBFbmRwb2ludENvbmZpZ1xuICAgIGVuZHBvaW50LmFkZERlcGVuZGVuY3koZW5kcG9pbnRDb25maWcpO1xuXG4gICAgcmV0dXJuIHsgZW5kcG9pbnQsIGVuZHBvaW50Q29uZmlnLCBtb2RlbCB9O1xuICB9IGVsc2Uge1xuICAgIHRocm93IEVycm9yKCdZb3UgbmVlZCB0byBwcm92aWRlIGF0IGxlYXN0IG1vZGVsUHJvcHMgdG8gY3JlYXRlIFNhZ2VtYWtlciBFbmRwb2ludCcpO1xuICB9XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhZ2VtYWtlck1vZGVsKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBtb2RlbFByb3BzOiBzYWdlbWFrZXIuQ2ZuTW9kZWxQcm9wcyxcbiAgcm9sZTogaWFtLlJvbGUsXG4gIHZwYz86IGVjMi5JVnBjXG4pOiBzYWdlbWFrZXIuQ2ZuTW9kZWwge1xuICBsZXQgZmluYWxNb2RlbFByb3BzOiBzYWdlbWFrZXIuQ2ZuTW9kZWxQcm9wcztcbiAgbGV0IHByaW1hcnlDb250YWluZXI6IHNhZ2VtYWtlci5DZm5Nb2RlbC5Db250YWluZXJEZWZpbml0aW9uUHJvcGVydHk7XG4gIGxldCB2cGNDb25maWc6IHNhZ2VtYWtlci5DZm5Nb2RlbC5WcGNDb25maWdQcm9wZXJ0eSB8IHVuZGVmaW5lZDtcbiAgbGV0IG1vZGVsOiBzYWdlbWFrZXIuQ2ZuTW9kZWw7XG5cbiAgaWYgKHZwYykge1xuICAgIGNvbnN0IG1vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAoc2NvcGUsICdSZXBsYWNlTW9kZWxEZWZhdWx0U2VjdXJpdHlHcm91cCcsIHtcbiAgICAgIHZwYyxcbiAgICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvdyBodHRwcyB0cmFmZmljIGZyb20gd2l0aGluIHRoZSBWUENcbiAgICBtb2RlbERlZmF1bHRTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGVjMi5QZWVyLmlwdjQodnBjLnZwY0NpZHJCbG9jayksIGVjMi5Qb3J0LnRjcCg0NDMpKTtcblxuICAgIGNvbnN0IGNmblNlY3VyaXR5R3JvdXAgPSBtb2RlbERlZmF1bHRTZWN1cml0eUdyb3VwLm5vZGUuZmluZENoaWxkKCdSZXNvdXJjZScpIGFzIGVjMi5DZm5TZWN1cml0eUdyb3VwO1xuICAgIGFkZENmblN1cHByZXNzUnVsZXMoY2ZuU2VjdXJpdHlHcm91cCwgW1xuICAgICAge1xuICAgICAgICBpZDogJ1c1JyxcbiAgICAgICAgcmVhc29uOiAnRWdyZXNzIG9mIDAuMC4wLjAvMCBpcyBkZWZhdWx0IGFuZCBnZW5lcmFsbHkgY29uc2lkZXJlZCBPSycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ1c0MCcsXG4gICAgICAgIHJlYXNvbjogJ0VncmVzcyBJUFByb3RvY29sIG9mIC0xIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LJyxcbiAgICAgIH1cbiAgICBdKTtcblxuICAgIC8vIFRocm93IGFuIGVycm9yIGlmIHRoZSBWUEMgZG9lcyBub3QgY29udGFpbiBwcml2YXRlIG9yIGlzb2xhdGVkIHN1Ym5ldHNcbiAgICBpZiAodnBjLnByaXZhdGVTdWJuZXRzLmxlbmd0aCA9PT0gMCAmJiB2cGMuaXNvbGF0ZWRTdWJuZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ1ZQQyBtdXN0IGNvbnRhaW4gcHJpdmF0ZSBvciBpc29sYXRlZCBzdWJuZXRzIHRvIGRlcGxveSB0aGUgU2FnZW1ha2VyIGVuZHBvaW50IGluIGEgdnBjJyk7XG4gICAgfVxuXG4gICAgdnBjQ29uZmlnID0ge1xuICAgICAgLy8gZGVmYXVsdCBTdWJuZXRUeXBlLlBSSVZBVEUgKG9yIElTT0xBVEVEIG9yIFBVQkxJQyBpZiB0aGVyZSBhcmUgbm8gUFJJVkFURSBzdWJuZXRzKVxuICAgICAgLy8gU28sIHByaXZhdGUgc3VibmV0cyB3aWxsIGJlIHVzZWQgaWYgcHJvdmlkZWQgYnkgY3VzdG9tZXIuIE90aGVyd2lzZSwgdXNlIHRoZSBkZWZhdWx0IGlzb2xhdGVkIHN1Ym5ldHMsXG4gICAgICBzdWJuZXRzOiB2cGMuc2VsZWN0U3VibmV0cyh7XG4gICAgICAgIG9uZVBlckF6OiB0cnVlLFxuICAgICAgfSkuc3VibmV0SWRzLFxuICAgICAgc2VjdXJpdHlHcm91cElkczogW21vZGVsRGVmYXVsdFNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkXSxcbiAgICB9O1xuICB9XG5cbiAgaWYgKG1vZGVsUHJvcHMucHJpbWFyeUNvbnRhaW5lcikge1xuICAgIC8vIEdldCB1c2VyIHByb3ZpZGVkIE1vZGVsJ3MgcHJpbWFyeSBjb250YWluZXJcbiAgICBwcmltYXJ5Q29udGFpbmVyID0gbW9kZWxQcm9wcy5wcmltYXJ5Q29udGFpbmVyIGFzIHNhZ2VtYWtlci5DZm5Nb2RlbC5Db250YWluZXJEZWZpbml0aW9uUHJvcGVydHk7XG4gICAgLy8gR2V0IGRlZmF1bHQgTW9kZWwgcHJvcHNcbiAgICBmaW5hbE1vZGVsUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTYWdlbWFrZXJNb2RlbFByb3BzKHJvbGUucm9sZUFybiwgcHJpbWFyeUNvbnRhaW5lciwgdnBjQ29uZmlnKSwgbW9kZWxQcm9wcyk7XG5cbiAgICAvLyBDcmVhdGUgdGhlIFNhZ2VtYWtlcidzIE1vZGVsXG4gICAgbW9kZWwgPSBuZXcgc2FnZW1ha2VyLkNmbk1vZGVsKHNjb3BlLCAnU2FnZW1ha2VyTW9kZWwnLCBmaW5hbE1vZGVsUHJvcHMpO1xuICAgIC8vIEFkZCBkZXBlbmRlbmN5IG9uIHRoZSBTYWdlbWFrZXIncyByb2xlXG4gICAgbW9kZWwubm9kZS5hZGREZXBlbmRlbmN5KHJvbGUpO1xuXG4gICAgcmV0dXJuIG1vZGVsO1xuICB9IGVsc2Uge1xuICAgIHRocm93IEVycm9yKCdZb3UgbmVlZCB0byBwcm92aWRlIGF0IGxlYXN0IHByaW1hcnlDb250YWluZXIgdG8gY3JlYXRlIFNhZ2VtYWtlciBNb2RlbCcpO1xuICB9XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhZ2VtYWtlckVuZHBvaW50Q29uZmlnKFxuICBzY29wZTogQ29uc3RydWN0LFxuICBtb2RlbE5hbWU6IHN0cmluZyxcbiAgZW5kcG9pbnRDb25maWdQcm9wcz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZ1Byb3BzXG4pOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWcge1xuICBsZXQgZmluYWxFbmRwb2ludENvbmZpZ1Byb3BzOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRDb25maWdQcm9wcztcbiAgbGV0IGttc0tleUlkOiBzdHJpbmc7XG4gIGxldCBlbmRwb2ludENvbmZpZzogc2FnZW1ha2VyLkNmbkVuZHBvaW50Q29uZmlnO1xuXG4gIC8vIENyZWF0ZSBlbmNyeXB0aW9uIGtleSBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gIGlmIChlbmRwb2ludENvbmZpZ1Byb3BzICYmIGVuZHBvaW50Q29uZmlnUHJvcHMua21zS2V5SWQpIHtcbiAgICBrbXNLZXlJZCA9IGVuZHBvaW50Q29uZmlnUHJvcHMua21zS2V5SWQ7XG4gIH0gZWxzZSB7XG4gICAga21zS2V5SWQgPSBidWlsZEVuY3J5cHRpb25LZXkoc2NvcGUpLmtleUlkO1xuICB9XG5cbiAgLy8gT3ZlcndyaXRlIGRlZmF1bHQgRW5kcG9pbnRDb25maWcgcHJvcGVydGllc1xuICBmaW5hbEVuZHBvaW50Q29uZmlnUHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTYWdlbWFrZXJFbmRwb2ludENvbmZpZ1Byb3BzKG1vZGVsTmFtZSwga21zS2V5SWQpLCBlbmRwb2ludENvbmZpZ1Byb3BzKTtcblxuICAvLyBDcmVhdGUgdGhlIFNhZ2VtYWtlcidzIEVuZHBvaW50Q29uZmlnXG4gIGVuZHBvaW50Q29uZmlnID0gbmV3IHNhZ2VtYWtlci5DZm5FbmRwb2ludENvbmZpZyhzY29wZSwgJ1NhZ2VtYWtlckVuZHBvaW50Q29uZmlnJywgZmluYWxFbmRwb2ludENvbmZpZ1Byb3BzKTtcblxuICByZXR1cm4gZW5kcG9pbnRDb25maWc7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhZ2VtYWtlckVuZHBvaW50KFxuICBzY29wZTogQ29uc3RydWN0LFxuICBlbmRwb2ludENvbmZpZ05hbWU6IHN0cmluZyxcbiAgZW5kcG9pbnRQcm9wcz86IHNhZ2VtYWtlci5DZm5FbmRwb2ludFByb3BzXG4pOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQge1xuICBsZXQgZmluYWxFbmRwb2ludFByb3BzOiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnRQcm9wcztcbiAgbGV0IGVuZHBvaW50OiBzYWdlbWFrZXIuQ2ZuRW5kcG9pbnQ7XG5cbiAgLy8gT3ZlcndyaXRlIGRlZmF1bHQgRW5kcG9pbnQgcHJvcGVydGllc1xuICBmaW5hbEVuZHBvaW50UHJvcHMgPSBjb25zb2xpZGF0ZVByb3BzKERlZmF1bHRTYWdlbWFrZXJFbmRwb2ludFByb3BzKGVuZHBvaW50Q29uZmlnTmFtZSksIGVuZHBvaW50UHJvcHMpO1xuXG4gIC8vIENyZWF0ZSB0aGUgU2FnZW1ha2VyJ3MgRW5kcG9pbnRcbiAgZW5kcG9pbnQgPSBuZXcgc2FnZW1ha2VyLkNmbkVuZHBvaW50KHNjb3BlLCAnU2FnZW1ha2VyRW5kcG9pbnQnLCBmaW5hbEVuZHBvaW50UHJvcHMpO1xuXG4gIHJldHVybiBlbmRwb2ludDtcbn1cbiJdfQ==
@@ -18,4 +18,4 @@ const DefaultSecretProps = {
18
18
  removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN
19
19
  };
20
20
  exports.DefaultSecretProps = DefaultSecretProps;
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0c21hbmFnZXItZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZWNyZXRzbWFuYWdlci1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQUdILDZDQUE0QztBQUU1QyxNQUFNLGtCQUFrQixHQUFnQjtJQUN0QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO0NBQ3BDLENBQUM7QUFFTyxnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBTZWNyZXRQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgeyBSZW1vdmFsUG9saWN5IH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5jb25zdCBEZWZhdWx0U2VjcmV0UHJvcHM6IFNlY3JldFByb3BzID0ge1xuICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTlxufTtcblxuZXhwb3J0IHsgRGVmYXVsdFNlY3JldFByb3BzIH07XG4iXX0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0c21hbmFnZXItZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzZWNyZXRzbWFuYWdlci1kZWZhdWx0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7OztBQVFILDZDQUE0QztBQUU1QyxNQUFNLGtCQUFrQixHQUFnQjtJQUN0QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO0NBQ3BDLENBQUM7QUFFTyxnREFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCB7IFNlY3JldFByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmNvbnN0IERlZmF1bHRTZWNyZXRQcm9wczogU2VjcmV0UHJvcHMgPSB7XG4gIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOXG59O1xuXG5leHBvcnQgeyBEZWZhdWx0U2VjcmV0UHJvcHMgfTtcbiJdfQ==
@@ -13,6 +13,8 @@
13
13
  import { Secret, SecretProps } from 'aws-cdk-lib/aws-secretsmanager';
14
14
  import { Construct } from 'constructs';
15
15
  /**
16
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
17
+ *
16
18
  * Method to build the default AWS Secrets Manager Secret
17
19
  *
18
20
  * @param scope
@@ -13,10 +13,16 @@
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.buildSecretsManagerSecret = void 0;
16
+ /*
17
+ * The functions found here in the core library are for internal use and can be changed
18
+ * or removed outside of a major release. We recommend against calling them directly from client code.
19
+ */
16
20
  const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
17
21
  const secretsmanager_defaults_1 = require("./secretsmanager-defaults");
18
22
  const utils_1 = require("./utils");
19
23
  /**
24
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
25
+ *
20
26
  * Method to build the default AWS Secrets Manager Secret
21
27
  *
22
28
  * @param scope
@@ -36,4 +42,4 @@ function buildSecretsManagerSecret(scope, id, secretProps) {
36
42
  return secret;
37
43
  }
38
44
  exports.buildSecretsManagerSecret = buildSecretsManagerSecret;
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0c21hbmFnZXItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VjcmV0c21hbmFnZXItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUgsdUVBQXFFO0FBR3JFLHVFQUErRDtBQUMvRCxtQ0FBZ0U7QUFFaEU7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IseUJBQXlCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsV0FBeUI7SUFDL0YsSUFBSSxNQUFjLENBQUM7SUFFbkIsTUFBTSxHQUFHLElBQUksMkJBQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLHdCQUFnQixDQUFDLDRDQUFrQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFbEYsNEJBQTRCO0lBQzVCLDJCQUFtQixDQUFDLE1BQU0sRUFBRTtRQUMxQjtZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUFFLDJGQUEyRjtTQUNwRztLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFkRCw4REFjQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IFNlY3JldCwgU2VjcmV0UHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuLy8gTm90ZTogVG8gZW5zdXJlIENES3YyIGNvbXBhdGliaWxpdHksIGtlZXAgdGhlIGltcG9ydCBzdGF0ZW1lbnQgZm9yIENvbnN0cnVjdCBzZXBhcmF0ZVxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEZWZhdWx0U2VjcmV0UHJvcHMgfSBmcm9tICcuL3NlY3JldHNtYW5hZ2VyLWRlZmF1bHRzJztcbmltcG9ydCB7IGNvbnNvbGlkYXRlUHJvcHMsIGFkZENmblN1cHByZXNzUnVsZXMgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKiBNZXRob2QgdG8gYnVpbGQgdGhlIGRlZmF1bHQgQVdTIFNlY3JldHMgTWFuYWdlciBTZWNyZXRcbiAqXG4gKiBAcGFyYW0gc2NvcGVcbiAqIEBwYXJhbSBpZFxuICogQHBhcmFtIHNlY3JldFByb3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlY3JldHNNYW5hZ2VyU2VjcmV0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHNlY3JldFByb3BzPzogU2VjcmV0UHJvcHMpOiBTZWNyZXQge1xuICBsZXQgc2VjcmV0OiBTZWNyZXQ7XG5cbiAgc2VjcmV0ID0gbmV3IFNlY3JldChzY29wZSwgaWQsIGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNlY3JldFByb3BzLCBzZWNyZXRQcm9wcykpO1xuXG4gIC8vIHN1cHByZXNzIHdhcm5pbmcgb24gYnVpbGRcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhzZWNyZXQsIFtcbiAgICB7XG4gICAgICBpZDogJ1c3NycsXG4gICAgICByZWFzb246IGBXZSBhbGxvdyB0aGUgdXNlIG9mIHRoZSBBV1MgYWNjb3VudCBkZWZhdWx0IGtleSBhd3Mvc2VjcmV0c21hbmFnZXIgZm9yIHNlY3JldCBlbmNyeXB0aW9uLmBcbiAgICB9XG4gIF0pO1xuXG4gIHJldHVybiBzZWNyZXQ7XG59XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0c21hbmFnZXItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VjcmV0c21hbmFnZXItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUg7OztHQUdHO0FBRUgsdUVBQXFFO0FBR3JFLHVFQUErRDtBQUMvRCxtQ0FBZ0U7QUFFaEU7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxXQUF5QjtJQUMvRixJQUFJLE1BQWMsQ0FBQztJQUVuQixNQUFNLEdBQUcsSUFBSSwyQkFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsd0JBQWdCLENBQUMsNENBQWtCLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUVsRiw0QkFBNEI7SUFDNUIsMkJBQW1CLENBQUMsTUFBTSxFQUFFO1FBQzFCO1lBQ0UsRUFBRSxFQUFFLEtBQUs7WUFDVCxNQUFNLEVBQUUsMkZBQTJGO1NBQ3BHO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQWRELDhEQWNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgeyBTZWNyZXQsIFNlY3JldFByb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbi8vIE5vdGU6IFRvIGVuc3VyZSBDREt2MiBjb21wYXRpYmlsaXR5LCBrZWVwIHRoZSBpbXBvcnQgc3RhdGVtZW50IGZvciBDb25zdHJ1Y3Qgc2VwYXJhdGVcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGVmYXVsdFNlY3JldFByb3BzIH0gZnJvbSAnLi9zZWNyZXRzbWFuYWdlci1kZWZhdWx0cyc7XG5pbXBvcnQgeyBjb25zb2xpZGF0ZVByb3BzLCBhZGRDZm5TdXBwcmVzc1J1bGVzIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqXG4gKiBNZXRob2QgdG8gYnVpbGQgdGhlIGRlZmF1bHQgQVdTIFNlY3JldHMgTWFuYWdlciBTZWNyZXRcbiAqXG4gKiBAcGFyYW0gc2NvcGVcbiAqIEBwYXJhbSBpZFxuICogQHBhcmFtIHNlY3JldFByb3BzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlY3JldHNNYW5hZ2VyU2VjcmV0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHNlY3JldFByb3BzPzogU2VjcmV0UHJvcHMpOiBTZWNyZXQge1xuICBsZXQgc2VjcmV0OiBTZWNyZXQ7XG5cbiAgc2VjcmV0ID0gbmV3IFNlY3JldChzY29wZSwgaWQsIGNvbnNvbGlkYXRlUHJvcHMoRGVmYXVsdFNlY3JldFByb3BzLCBzZWNyZXRQcm9wcykpO1xuXG4gIC8vIHN1cHByZXNzIHdhcm5pbmcgb24gYnVpbGRcbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhzZWNyZXQsIFtcbiAgICB7XG4gICAgICBpZDogJ1c3NycsXG4gICAgICByZWFzb246IGBXZSBhbGxvdyB0aGUgdXNlIG9mIHRoZSBBV1MgYWNjb3VudCBkZWZhdWx0IGtleSBhd3Mvc2VjcmV0c21hbmFnZXIgZm9yIHNlY3JldCBlbmNyeXB0aW9uLmBcbiAgICB9XG4gIF0pO1xuXG4gIHJldHVybiBzZWNyZXQ7XG59XG4iXX0=
@@ -18,5 +18,11 @@ export interface SecurityGroupRuleDefinition {
18
18
  readonly description?: string;
19
19
  readonly remoteRule?: boolean;
20
20
  }
21
+ /**
22
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
23
+ */
21
24
  export declare function buildSecurityGroup(scope: Construct, name: string, props: ec2.SecurityGroupProps, ingressRules: SecurityGroupRuleDefinition[], egressRules: SecurityGroupRuleDefinition[]): ec2.SecurityGroup;
25
+ /**
26
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
27
+ */
22
28
  export declare function CreateSelfReferencingSecurityGroup(scope: Construct, id: string, vpc: ec2.IVpc, cachePort: any): ec2.SecurityGroup;
@@ -13,9 +13,16 @@
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.CreateSelfReferencingSecurityGroup = exports.buildSecurityGroup = void 0;
16
+ /*
17
+ * The functions found here in the core library are for internal use and can be changed
18
+ * or removed outside of a major release. We recommend against calling them directly from client code.
19
+ */
16
20
  // import { countResources } from "@aws-cdk/assert";
17
21
  const ec2 = require("aws-cdk-lib/aws-ec2");
18
22
  const utils_1 = require("./utils");
23
+ /**
24
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
25
+ */
19
26
  function buildSecurityGroup(scope, name, props, ingressRules, egressRules) {
20
27
  const newSecurityGroup = new ec2.SecurityGroup(scope, `${name}-security-group`, props);
21
28
  ingressRules.forEach(rule => {
@@ -37,6 +44,9 @@ function buildSecurityGroup(scope, name, props, ingressRules, egressRules) {
37
44
  return newSecurityGroup;
38
45
  }
39
46
  exports.buildSecurityGroup = buildSecurityGroup;
47
+ /**
48
+ * @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
49
+ */
40
50
  function CreateSelfReferencingSecurityGroup(scope, id, vpc, cachePort) {
41
51
  const newCacheSG = new ec2.SecurityGroup(scope, `${id}-cachesg`, {
42
52
  vpc,
@@ -64,4 +74,4 @@ function CreateSelfReferencingSecurityGroup(scope, id, vpc, cachePort) {
64
74
  return newCacheSG;
65
75
  }
66
76
  exports.CreateSelfReferencingSecurityGroup = CreateSelfReferencingSecurityGroup;
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VjdXJpdHktZ3JvdXAtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUgsb0RBQW9EO0FBQ3BELDJDQUEyQztBQUUzQyxtQ0FBOEM7QUFTOUMsU0FBZ0Isa0JBQWtCLENBQ2hDLEtBQWdCLEVBQ2hCLElBQVksRUFDWixLQUE2QixFQUM3QixZQUEyQyxFQUMzQyxXQUEwQztJQUUxQyxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxJQUFJLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXZGLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDMUIsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRyxDQUFDLENBQUMsQ0FBQztJQUVILFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDekIsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRyxDQUFDLENBQUMsQ0FBQztJQUVILDJCQUFtQixDQUFDLGdCQUFnQixFQUFFO1FBQ3BDO1lBQ0UsRUFBRSxFQUFFLElBQUk7WUFDUixNQUFNLEVBQ0osNERBQTREO1NBQy9EO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFDSixnRUFBZ0U7U0FDbkU7S0FDRixDQUFDLENBQUM7SUFFSCxPQUFPLGdCQUFnQixDQUFDO0FBQzFCLENBQUM7QUEvQkQsZ0RBK0JDO0FBRUQsU0FBZ0Isa0NBQWtDLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsR0FBYSxFQUFFLFNBQWM7SUFDNUcsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1FBQy9ELEdBQUc7UUFDSCxnQkFBZ0IsRUFBRSxJQUFJO0tBQ3ZCLENBQUMsQ0FBQztJQUNILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsdUJBQXVCLENBQ3ZELEtBQUssRUFDTCxHQUFHLEVBQUUsVUFBVSxFQUNmO1FBQ0UsT0FBTyxFQUFFLFVBQVUsQ0FBQyxlQUFlO1FBQ25DLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxlQUFlO1FBQ2pELFVBQVUsRUFBRSxLQUFLO1FBQ2pCLFFBQVEsRUFBRSxTQUFTO1FBQ25CLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLFdBQVcsRUFBRSwwRUFBMEU7S0FDeEYsQ0FDRixDQUFDO0lBQ0YsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVqRCwyQkFBbUIsQ0FBQyxVQUFVLEVBQUU7UUFDOUI7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLE1BQU0sRUFBRSw0REFBNEQ7U0FDckU7UUFDRDtZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUNKLGdFQUFnRTtTQUNuRTtLQUNGLENBQUMsQ0FBQztJQUNILE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUEvQkQsZ0ZBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLy8gaW1wb3J0IHsgY291bnRSZXNvdXJjZXMgfSBmcm9tIFwiQGF3cy1jZGsvYXNzZXJ0XCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBhZGRDZm5TdXBwcmVzc1J1bGVzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFJ1bGVEZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgcGVlcjogZWMyLklQZWVyIC8vIGV4YW1wbGU6IGVjMi5QZWVyLmlwVjQodnBjLnZwY0NpZGVyQmxvY2spXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb246IGVjMi5Qb3J0XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHJlYWRvbmx5IHJlbW90ZVJ1bGU/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlY3VyaXR5R3JvdXAoXG4gIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIG5hbWU6IHN0cmluZyxcbiAgcHJvcHM6IGVjMi5TZWN1cml0eUdyb3VwUHJvcHMsXG4gIGluZ3Jlc3NSdWxlczogU2VjdXJpdHlHcm91cFJ1bGVEZWZpbml0aW9uW10sXG4gIGVncmVzc1J1bGVzOiBTZWN1cml0eUdyb3VwUnVsZURlZmluaXRpb25bXVxuKTogZWMyLlNlY3VyaXR5R3JvdXAge1xuICBjb25zdCBuZXdTZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHNjb3BlLCBgJHtuYW1lfS1zZWN1cml0eS1ncm91cGAsIHByb3BzKTtcblxuICBpbmdyZXNzUnVsZXMuZm9yRWFjaChydWxlID0+IHtcbiAgICBuZXdTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKHJ1bGUucGVlciwgcnVsZS5jb25uZWN0aW9uLCBydWxlLmRlc2NyaXB0aW9uLCBydWxlLnJlbW90ZVJ1bGUpO1xuICB9KTtcblxuICBlZ3Jlc3NSdWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgIG5ld1NlY3VyaXR5R3JvdXAuYWRkRWdyZXNzUnVsZShydWxlLnBlZXIsIHJ1bGUuY29ubmVjdGlvbiwgcnVsZS5kZXNjcmlwdGlvbiwgcnVsZS5yZW1vdGVSdWxlKTtcbiAgfSk7XG5cbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhuZXdTZWN1cml0eUdyb3VwLCBbXG4gICAge1xuICAgICAgaWQ6IFwiVzVcIixcbiAgICAgIHJlYXNvbjpcbiAgICAgICAgXCJFZ3Jlc3Mgb2YgMC4wLjAuMC8wIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogXCJXNDBcIixcbiAgICAgIHJlYXNvbjpcbiAgICAgICAgXCJFZ3Jlc3MgSVBQcm90b2NvbCBvZiAtMSBpcyBkZWZhdWx0IGFuZCBnZW5lcmFsbHkgY29uc2lkZXJlZCBPS1wiLFxuICAgIH0sXG4gIF0pO1xuXG4gIHJldHVybiBuZXdTZWN1cml0eUdyb3VwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gQ3JlYXRlU2VsZlJlZmVyZW5jaW5nU2VjdXJpdHlHcm91cChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB2cGM6IGVjMi5JVnBjLCBjYWNoZVBvcnQ6IGFueSkge1xuICBjb25zdCBuZXdDYWNoZVNHID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHNjb3BlLCBgJHtpZH0tY2FjaGVzZ2AsIHtcbiAgICB2cGMsXG4gICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IHNlbGZSZWZlcmVuY2VSdWxlID0gbmV3IGVjMi5DZm5TZWN1cml0eUdyb3VwSW5ncmVzcyhcbiAgICBzY29wZSxcbiAgICBgJHtpZH0taW5ncmVzc2AsXG4gICAge1xuICAgICAgZ3JvdXBJZDogbmV3Q2FjaGVTRy5zZWN1cml0eUdyb3VwSWQsXG4gICAgICBzb3VyY2VTZWN1cml0eUdyb3VwSWQ6IG5ld0NhY2hlU0cuc2VjdXJpdHlHcm91cElkLFxuICAgICAgaXBQcm90b2NvbDogXCJUQ1BcIixcbiAgICAgIGZyb21Qb3J0OiBjYWNoZVBvcnQsXG4gICAgICB0b1BvcnQ6IGNhY2hlUG9ydCxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2VsZiByZWZlcmVuY2luZyBydWxlIHRvIGNvbnRyb2wgYWNjZXNzIHRvIEVsYXN0aWNhY2hlIG1lbWNhY2hlZCBjbHVzdGVyJyxcbiAgICB9XG4gICk7XG4gIHNlbGZSZWZlcmVuY2VSdWxlLm5vZGUuYWRkRGVwZW5kZW5jeShuZXdDYWNoZVNHKTtcblxuICBhZGRDZm5TdXBwcmVzc1J1bGVzKG5ld0NhY2hlU0csIFtcbiAgICB7XG4gICAgICBpZDogXCJXNVwiLFxuICAgICAgcmVhc29uOiBcIkVncmVzcyBvZiAwLjAuMC4wLzAgaXMgZGVmYXVsdCBhbmQgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgT0tcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBcIlc0MFwiLFxuICAgICAgcmVhc29uOlxuICAgICAgICBcIkVncmVzcyBJUFByb3RvY29sIG9mIC0xIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LXCIsXG4gICAgfSxcbiAgXSk7XG4gIHJldHVybiBuZXdDYWNoZVNHO1xufVxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2VjdXJpdHktZ3JvdXAtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7O0FBRUg7OztHQUdHO0FBRUgsb0RBQW9EO0FBQ3BELDJDQUEyQztBQUUzQyxtQ0FBOEM7QUFTOUM7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsS0FBZ0IsRUFDaEIsSUFBWSxFQUNaLEtBQTZCLEVBQzdCLFlBQTJDLEVBQzNDLFdBQTBDO0lBRTFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFFdkYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUMxQixnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pHLENBQUMsQ0FBQyxDQUFDO0lBRUgsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN6QixnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hHLENBQUMsQ0FBQyxDQUFDO0lBRUgsMkJBQW1CLENBQUMsZ0JBQWdCLEVBQUU7UUFDcEM7WUFDRSxFQUFFLEVBQUUsSUFBSTtZQUNSLE1BQU0sRUFDSiw0REFBNEQ7U0FDL0Q7UUFDRDtZQUNFLEVBQUUsRUFBRSxLQUFLO1lBQ1QsTUFBTSxFQUNKLGdFQUFnRTtTQUNuRTtLQUNGLENBQUMsQ0FBQztJQUVILE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQztBQS9CRCxnREErQkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGtDQUFrQyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEdBQWEsRUFBRSxTQUFjO0lBQzVHLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtRQUMvRCxHQUFHO1FBQ0gsZ0JBQWdCLEVBQUUsSUFBSTtLQUN2QixDQUFDLENBQUM7SUFDSCxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLHVCQUF1QixDQUN2RCxLQUFLLEVBQ0wsR0FBRyxFQUFFLFVBQVUsRUFDZjtRQUNFLE9BQU8sRUFBRSxVQUFVLENBQUMsZUFBZTtRQUNuQyxxQkFBcUIsRUFBRSxVQUFVLENBQUMsZUFBZTtRQUNqRCxVQUFVLEVBQUUsS0FBSztRQUNqQixRQUFRLEVBQUUsU0FBUztRQUNuQixNQUFNLEVBQUUsU0FBUztRQUNqQixXQUFXLEVBQUUsMEVBQTBFO0tBQ3hGLENBQ0YsQ0FBQztJQUNGLGlCQUFpQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFakQsMkJBQW1CLENBQUMsVUFBVSxFQUFFO1FBQzlCO1lBQ0UsRUFBRSxFQUFFLElBQUk7WUFDUixNQUFNLEVBQUUsNERBQTREO1NBQ3JFO1FBQ0Q7WUFDRSxFQUFFLEVBQUUsS0FBSztZQUNULE1BQU0sRUFDSixnRUFBZ0U7U0FDbkU7S0FDRixDQUFDLENBQUM7SUFDSCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBL0JELGdGQStCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qXG4gKiAgVGhlIGZ1bmN0aW9ucyBmb3VuZCBoZXJlIGluIHRoZSBjb3JlIGxpYnJhcnkgYXJlIGZvciBpbnRlcm5hbCB1c2UgYW5kIGNhbiBiZSBjaGFuZ2VkXG4gKiAgb3IgcmVtb3ZlZCBvdXRzaWRlIG9mIGEgbWFqb3IgcmVsZWFzZS4gV2UgcmVjb21tZW5kIGFnYWluc3QgY2FsbGluZyB0aGVtIGRpcmVjdGx5IGZyb20gY2xpZW50IGNvZGUuXG4gKi9cblxuLy8gaW1wb3J0IHsgY291bnRSZXNvdXJjZXMgfSBmcm9tIFwiQGF3cy1jZGsvYXNzZXJ0XCI7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBhZGRDZm5TdXBwcmVzc1J1bGVzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFJ1bGVEZWZpbml0aW9uIHtcbiAgcmVhZG9ubHkgcGVlcjogZWMyLklQZWVyIC8vIGV4YW1wbGU6IGVjMi5QZWVyLmlwVjQodnBjLnZwY0NpZGVyQmxvY2spXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb246IGVjMi5Qb3J0XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHJlYWRvbmx5IHJlbW90ZVJ1bGU/OiBib29sZWFuXG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU2VjdXJpdHlHcm91cChcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgbmFtZTogc3RyaW5nLFxuICBwcm9wczogZWMyLlNlY3VyaXR5R3JvdXBQcm9wcyxcbiAgaW5ncmVzc1J1bGVzOiBTZWN1cml0eUdyb3VwUnVsZURlZmluaXRpb25bXSxcbiAgZWdyZXNzUnVsZXM6IFNlY3VyaXR5R3JvdXBSdWxlRGVmaW5pdGlvbltdXG4pOiBlYzIuU2VjdXJpdHlHcm91cCB7XG4gIGNvbnN0IG5ld1NlY3VyaXR5R3JvdXAgPSBuZXcgZWMyLlNlY3VyaXR5R3JvdXAoc2NvcGUsIGAke25hbWV9LXNlY3VyaXR5LWdyb3VwYCwgcHJvcHMpO1xuXG4gIGluZ3Jlc3NSdWxlcy5mb3JFYWNoKHJ1bGUgPT4ge1xuICAgIG5ld1NlY3VyaXR5R3JvdXAuYWRkSW5ncmVzc1J1bGUocnVsZS5wZWVyLCBydWxlLmNvbm5lY3Rpb24sIHJ1bGUuZGVzY3JpcHRpb24sIHJ1bGUucmVtb3RlUnVsZSk7XG4gIH0pO1xuXG4gIGVncmVzc1J1bGVzLmZvckVhY2gocnVsZSA9PiB7XG4gICAgbmV3U2VjdXJpdHlHcm91cC5hZGRFZ3Jlc3NSdWxlKHJ1bGUucGVlciwgcnVsZS5jb25uZWN0aW9uLCBydWxlLmRlc2NyaXB0aW9uLCBydWxlLnJlbW90ZVJ1bGUpO1xuICB9KTtcblxuICBhZGRDZm5TdXBwcmVzc1J1bGVzKG5ld1NlY3VyaXR5R3JvdXAsIFtcbiAgICB7XG4gICAgICBpZDogXCJXNVwiLFxuICAgICAgcmVhc29uOlxuICAgICAgICBcIkVncmVzcyBvZiAwLjAuMC4wLzAgaXMgZGVmYXVsdCBhbmQgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgT0tcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGlkOiBcIlc0MFwiLFxuICAgICAgcmVhc29uOlxuICAgICAgICBcIkVncmVzcyBJUFByb3RvY29sIG9mIC0xIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LXCIsXG4gICAgfSxcbiAgXSk7XG5cbiAgcmV0dXJuIG5ld1NlY3VyaXR5R3JvdXA7XG59XG5cbi8qKlxuICogQGludGVybmFsIFRoaXMgaXMgYW4gaW50ZXJuYWwgY29yZSBmdW5jdGlvbiBhbmQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgU29sdXRpb25zIENvbnN0cnVjdHMgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENyZWF0ZVNlbGZSZWZlcmVuY2luZ1NlY3VyaXR5R3JvdXAoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdnBjOiBlYzIuSVZwYywgY2FjaGVQb3J0OiBhbnkpIHtcbiAgY29uc3QgbmV3Q2FjaGVTRyA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cChzY29wZSwgYCR7aWR9LWNhY2hlc2dgLCB7XG4gICAgdnBjLFxuICAgIGFsbG93QWxsT3V0Ym91bmQ6IHRydWUsXG4gIH0pO1xuICBjb25zdCBzZWxmUmVmZXJlbmNlUnVsZSA9IG5ldyBlYzIuQ2ZuU2VjdXJpdHlHcm91cEluZ3Jlc3MoXG4gICAgc2NvcGUsXG4gICAgYCR7aWR9LWluZ3Jlc3NgLFxuICAgIHtcbiAgICAgIGdyb3VwSWQ6IG5ld0NhY2hlU0cuc2VjdXJpdHlHcm91cElkLFxuICAgICAgc291cmNlU2VjdXJpdHlHcm91cElkOiBuZXdDYWNoZVNHLnNlY3VyaXR5R3JvdXBJZCxcbiAgICAgIGlwUHJvdG9jb2w6IFwiVENQXCIsXG4gICAgICBmcm9tUG9ydDogY2FjaGVQb3J0LFxuICAgICAgdG9Qb3J0OiBjYWNoZVBvcnQsXG4gICAgICBkZXNjcmlwdGlvbjogJ1NlbGYgcmVmZXJlbmNpbmcgcnVsZSB0byBjb250cm9sIGFjY2VzcyB0byBFbGFzdGljYWNoZSBtZW1jYWNoZWQgY2x1c3RlcicsXG4gICAgfVxuICApO1xuICBzZWxmUmVmZXJlbmNlUnVsZS5ub2RlLmFkZERlcGVuZGVuY3kobmV3Q2FjaGVTRyk7XG5cbiAgYWRkQ2ZuU3VwcHJlc3NSdWxlcyhuZXdDYWNoZVNHLCBbXG4gICAge1xuICAgICAgaWQ6IFwiVzVcIixcbiAgICAgIHJlYXNvbjogXCJFZ3Jlc3Mgb2YgMC4wLjAuMC8wIGlzIGRlZmF1bHQgYW5kIGdlbmVyYWxseSBjb25zaWRlcmVkIE9LXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBpZDogXCJXNDBcIixcbiAgICAgIHJlYXNvbjpcbiAgICAgICAgXCJFZ3Jlc3MgSVBQcm90b2NvbCBvZiAtMSBpcyBkZWZhdWx0IGFuZCBnZW5lcmFsbHkgY29uc2lkZXJlZCBPS1wiLFxuICAgIH0sXG4gIF0pO1xuICByZXR1cm4gbmV3Q2FjaGVTRztcbn1cbiJdfQ==