@cdklabs/multi-az-observability 0.0.1-alpha.39 → 0.0.1-alpha.40

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 (107) hide show
  1. package/.jsii +1830 -604
  2. package/API.md +4724 -1382
  3. package/README.md +14 -14
  4. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +11 -9
  5. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +10 -10
  6. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
  7. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
  8. package/lib/azmapper/AvailabilityZoneMapper.js +1 -1
  9. package/lib/basic_observability/BasicServiceMultiAZObservability.js +4 -6
  10. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +2 -1
  11. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +1 -1
  12. package/lib/canaries/CanaryFunction.js +3 -3
  13. package/lib/canaries/src/canary.zip +0 -0
  14. package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
  15. package/lib/dashboards/ContributorInsightsWidget.js +12 -16
  16. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +8 -8
  17. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +4 -4
  18. package/lib/index.d.ts +54 -29
  19. package/lib/index.js +32 -19
  20. package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +3 -3
  21. package/lib/metrics/ApplicationLoadBalancerMetrics.js +5 -8
  22. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  23. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  24. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  25. package/lib/services/CanaryMetrics.d.ts +4 -3
  26. package/lib/services/CanaryMetrics.js +3 -4
  27. package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
  28. package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
  29. package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
  30. package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
  31. package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
  32. package/lib/services/CanaryTestMetricsOverride.js +2 -4
  33. package/lib/services/ContributorInsightRuleDetails.js +1 -1
  34. package/lib/services/ICanaryMetrics.d.ts +4 -3
  35. package/lib/services/ICanaryMetrics.js +1 -1
  36. package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
  37. package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
  38. package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
  39. package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
  40. package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
  41. package/lib/services/ICanaryTestMetricsOverride.js +1 -1
  42. package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
  43. package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
  44. package/lib/services/IOperation.d.ts +8 -6
  45. package/lib/services/IOperation.js +1 -1
  46. package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
  47. package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
  48. package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
  49. package/lib/services/IOperationLatencyMetricDetails.js +3 -0
  50. package/lib/services/IOperationMetricDetails.d.ts +0 -12
  51. package/lib/services/IOperationMetricDetails.js +1 -1
  52. package/lib/services/IService.d.ts +4 -3
  53. package/lib/services/IService.js +1 -1
  54. package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
  55. package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
  56. package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
  57. package/lib/services/IServiceLatencyMetricDetails.js +3 -0
  58. package/lib/services/IServiceMetricDetails.d.ts +0 -12
  59. package/lib/services/IServiceMetricDetails.js +1 -1
  60. package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +5 -3
  61. package/lib/services/InstrumentedServiceMultiAZObservability.js +12 -15
  62. package/lib/services/Operation.d.ts +8 -6
  63. package/lib/services/Operation.js +2 -2
  64. package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
  65. package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
  66. package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
  67. package/lib/services/OperationLatencyMetricDetails.js +21 -0
  68. package/lib/services/OperationMetricDetails.d.ts +1 -13
  69. package/lib/services/OperationMetricDetails.js +2 -8
  70. package/lib/services/Service.d.ts +4 -3
  71. package/lib/services/Service.js +2 -2
  72. package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
  73. package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
  74. package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
  75. package/lib/services/ServiceLatencyMetricDetails.js +19 -0
  76. package/lib/services/ServiceMetricDetails.d.ts +1 -13
  77. package/lib/services/ServiceMetricDetails.js +2 -4
  78. package/lib/services/props/CanaryMetricProps.d.ts +4 -3
  79. package/lib/services/props/CanaryMetricProps.js +1 -1
  80. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
  81. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
  82. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
  83. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
  84. package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
  85. package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
  86. package/lib/services/props/MetricDimensions.js +1 -1
  87. package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
  88. package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
  89. package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
  90. package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
  91. package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
  92. package/lib/services/props/OperationMetricDetailsProps.js +1 -1
  93. package/lib/services/props/OperationProps.d.ts +4 -3
  94. package/lib/services/props/OperationProps.js +1 -1
  95. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
  96. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
  97. package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
  98. package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
  99. package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
  100. package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
  101. package/lib/services/props/ServiceProps.d.ts +4 -3
  102. package/lib/services/props/ServiceProps.js +1 -1
  103. package/lib/utilities/MetricsHelper.d.ts +3 -0
  104. package/lib/utilities/MetricsHelper.js +17 -1
  105. package/package.json +5 -5
  106. package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
  107. package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
@@ -0,0 +1,18 @@
1
+ import { IServiceMetricDetails } from "./IServiceMetricDetails";
2
+ /**
3
+ * Details for the defaults used in a service for metrics in one perspective, such as server side latency
4
+ */
5
+ export interface IServiceAvailabilityMetricDetails extends IServiceMetricDetails {
6
+ /**
7
+ * The threshold for alarms associated with availability success metrics, for example if measuring
8
+ * success rate, the threshold may be 99, meaning you would want an alarm that triggers
9
+ * if success drops below 99%.
10
+ */
11
+ readonly successAlarmThreshold: number;
12
+ /**
13
+ * The threshold for alarms associated with availability fault metrics, for example if measuring
14
+ * fault rate, the threshold may be 1, meaning you would want an alarm that triggers
15
+ * if the fault rate goes above 1%.
16
+ */
17
+ readonly faultAlarmThreshold: number;
18
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0lTZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSVNlcnZpY2VNZXRyaWNEZXRhaWxzIH0gZnJvbSBcIi4vSVNlcnZpY2VNZXRyaWNEZXRhaWxzXCI7XG5cbi8qKlxuICogRGV0YWlscyBmb3IgdGhlIGRlZmF1bHRzIHVzZWQgaW4gYSBzZXJ2aWNlIGZvciBtZXRyaWNzIGluIG9uZSBwZXJzcGVjdGl2ZSwgc3VjaCBhcyBzZXJ2ZXIgc2lkZSBsYXRlbmN5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzIGV4dGVuZHMgSVNlcnZpY2VNZXRyaWNEZXRhaWxzIHtcbiAgICAvKipcbiAgICogVGhlIHRocmVzaG9sZCBmb3IgYWxhcm1zIGFzc29jaWF0ZWQgd2l0aCBhdmFpbGFiaWxpdHkgc3VjY2VzcyBtZXRyaWNzLCBmb3IgZXhhbXBsZSBpZiBtZWFzdXJpbmdcbiAgICogc3VjY2VzcyByYXRlLCB0aGUgdGhyZXNob2xkIG1heSBiZSA5OSwgbWVhbmluZyB5b3Ugd291bGQgd2FudCBhbiBhbGFybSB0aGF0IHRyaWdnZXJzXG4gICAqIGlmIHN1Y2Nlc3MgZHJvcHMgYmVsb3cgOTklLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2Vzc0FsYXJtVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgZm9yIGFsYXJtcyBhc3NvY2lhdGVkIHdpdGggYXZhaWxhYmlsaXR5IGZhdWx0IG1ldHJpY3MsIGZvciBleGFtcGxlIGlmIG1lYXN1cmluZ1xuICAgKiBmYXVsdCByYXRlLCB0aGUgdGhyZXNob2xkIG1heSBiZSAxLCBtZWFuaW5nIHlvdSB3b3VsZCB3YW50IGFuIGFsYXJtIHRoYXQgdHJpZ2dlcnNcbiAgICogaWYgdGhlIGZhdWx0IHJhdGUgZ29lcyBhYm92ZSAxJS5cbiAgICovXG4gIHJlYWRvbmx5IGZhdWx0QWxhcm1UaHJlc2hvbGQ6IG51bWJlcjtcbn0iXX0=
@@ -0,0 +1,12 @@
1
+ import { Duration } from "aws-cdk-lib";
2
+ import { IServiceMetricDetails } from "./IServiceMetricDetails";
3
+ /**
4
+ * Details for the defaults used in a service for metrics in one perspective, such as server side latency
5
+ */
6
+ export interface IServiceLatencyMetricDetails extends IServiceMetricDetails {
7
+ /**
8
+ * The threshold for alarms associated with latency success metrics, for example if success
9
+ * latency exceeds 500 milliseconds
10
+ */
11
+ readonly successAlarmThreshold: Duration;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNlcnZpY2VMYXRlbmN5TWV0cmljRGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9JU2VydmljZUxhdGVuY3lNZXRyaWNEZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVNlcnZpY2VNZXRyaWNEZXRhaWxzIH0gZnJvbSBcIi4vSVNlcnZpY2VNZXRyaWNEZXRhaWxzXCI7XG5cbi8qKlxuICogRGV0YWlscyBmb3IgdGhlIGRlZmF1bHRzIHVzZWQgaW4gYSBzZXJ2aWNlIGZvciBtZXRyaWNzIGluIG9uZSBwZXJzcGVjdGl2ZSwgc3VjaCBhcyBzZXJ2ZXIgc2lkZSBsYXRlbmN5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNlcnZpY2VMYXRlbmN5TWV0cmljRGV0YWlscyBleHRlbmRzIElTZXJ2aWNlTWV0cmljRGV0YWlscyB7XG4gIC8qKlxuICAgKiBUaGUgdGhyZXNob2xkIGZvciBhbGFybXMgYXNzb2NpYXRlZCB3aXRoIGxhdGVuY3kgc3VjY2VzcyBtZXRyaWNzLCBmb3IgZXhhbXBsZSBpZiBzdWNjZXNzXG4gICAqIGxhdGVuY3kgZXhjZWVkcyA1MDAgbWlsbGlzZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6IER1cmF0aW9uO1xufSJdfQ==
@@ -53,16 +53,4 @@ export interface IServiceMetricDetails {
53
53
  * The number of datapoints to alarm on for latency and availability alarms
54
54
  */
55
55
  readonly datapointsToAlarm: number;
56
- /**
57
- * The threshold for alarms associated with success metrics, for example if measuring
58
- * success rate, the threshold may be 99, meaning you would want an alarm that triggers
59
- * if success drops below 99%.
60
- */
61
- readonly successAlarmThreshold: number;
62
- /**
63
- * The threshold for alarms associated with fault metrics, for example if measuring
64
- * fault rate, the threshold may be 1, meaning you would want an alarm that triggers
65
- * if the fault rate goes above 1%.
66
- */
67
- readonly faultAlarmThreshold: number;
68
56
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNlcnZpY2VNZXRyaWNEZXRhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0lTZXJ2aWNlTWV0cmljRGV0YWlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBVbml0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuXG4vKipcbiAqIERldGFpbHMgZm9yIHRoZSBkZWZhdWx0cyB1c2VkIGluIGEgc2VydmljZSBmb3IgbWV0cmljcyBpbiBvbmUgcGVyc3BlY3RpdmUsIHN1Y2ggYXMgc2VydmVyIHNpZGUgbGF0ZW5jeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlTWV0cmljRGV0YWlscyB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBtZXRyaWMgbmFtZXNwYWNlIGZvciB0aGVzZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNOYW1lc3BhY2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzIG9mIHN1Y2Nlc3MgaW5kaWNhdGluZyBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzTWV0cmljTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXMgb2YgZmF1bHQgaW5kaWNhdGluZyBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBmYXVsdE1ldHJpY05hbWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHN0YXRpc3RpYyB1c2VkIGZvciBhbGFybXMsIGZvciBhdmFpbGFiaWxpdHkgbWV0cmljcyB0aGlzIHNob3VsZFxuICAgKiBiZSBcIlN1bVwiLCBmb3IgbGF0ZW5jeSBtZXRyaWNzIGl0IGNvdWxkIHNvbWV0aGluZyBsaWtlIFwicDk5XCIgb3IgXCJwOTkuOVwiXG4gICAqL1xuICByZWFkb25seSBhbGFybVN0YXRpc3RpYzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljcyBmb3Igc3VjY2Vzc2VzIHlvdSB3YW50IHRvIGFwcGVhciBvbiBkYXNoYm9hcmRzLCBmb3IgZXhhbXBsZSwgd2l0aFxuICAgKiBsYXRlbmN5IG1ldHJpY3MsIHlvdSBtaWdodCB3YW50IHA1MCwgcDk5LCBhbmQgdG05OS4gRm9yIGF2YWlsYWJpbGl0eVxuICAgKiBtZXRyaWNzIHRoaXMgd2lsbCB0eXBpY2FsbHkganVzdCBiZSBcIlN1bVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEZvciBhdmFpbGFiaWxpdHkgbWV0cmljcywgdGhpcyB3aWxsIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgd2lsbCBiZSBqdXN0IFwicDk5XCJcbiAgICovXG4gIHJlYWRvbmx5IGdyYXBoZWRTdWNjZXNzU3RhdGlzdGljcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljcyBmb3IgZmF1bHRzIHlvdSB3YW50IHRvIGFwcGVhciBvbiBkYXNoYm9hcmRzLCBmb3IgZXhhbXBsZSwgd2l0aFxuICAgKiBsYXRlbmN5IG1ldHJpY3MsIHlvdSBtaWdodCB3YW50IHA1MCwgcDk5LCBhbmQgdG05OS4gRm9yIGF2YWlsYWJpbGl0eVxuICAgKiBtZXRyaWNzIHRoaXMgd2lsbCB0eXBpY2FsbHkganVzdCBiZSBcIlN1bVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEZvciBhdmFpbGFiaWxpdHkgbWV0cmljcywgdGhpcyB3aWxsIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgd2lsbCBiZSBqdXN0IFwicDk5XCJcbiAgICovXG4gIHJlYWRvbmx5IGdyYXBoZWRGYXVsdFN0YXRpc3RpY3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXQgdXNlZCBmb3IgdGhlc2UgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgdW5pdDogVW5pdDtcblxuICAvKipcbiAgICogVGhlIHBlcmlvZCBmb3IgdGhlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZDogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWx0aXkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBldmFsdWF0aW9uUGVyaW9kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRhdGFwb2ludHMgdG8gYWxhcm0gb24gZm9yIGxhdGVuY3kgYW5kIGF2YWlsYWJpbGl0eSBhbGFybXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFwb2ludHNUb0FsYXJtOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgZm9yIGFsYXJtcyBhc3NvY2lhdGVkIHdpdGggc3VjY2VzcyBtZXRyaWNzLCBmb3IgZXhhbXBsZSBpZiBtZWFzdXJpbmdcbiAgICogc3VjY2VzcyByYXRlLCB0aGUgdGhyZXNob2xkIG1heSBiZSA5OSwgbWVhbmluZyB5b3Ugd291bGQgd2FudCBhbiBhbGFybSB0aGF0IHRyaWdnZXJzXG4gICAqIGlmIHN1Y2Nlc3MgZHJvcHMgYmVsb3cgOTklLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VjY2Vzc0FsYXJtVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aHJlc2hvbGQgZm9yIGFsYXJtcyBhc3NvY2lhdGVkIHdpdGggZmF1bHQgbWV0cmljcywgZm9yIGV4YW1wbGUgaWYgbWVhc3VyaW5nXG4gICAqIGZhdWx0IHJhdGUsIHRoZSB0aHJlc2hvbGQgbWF5IGJlIDEsIG1lYW5pbmcgeW91IHdvdWxkIHdhbnQgYW4gYWxhcm0gdGhhdCB0cmlnZ2Vyc1xuICAgKiBpZiB0aGUgZmF1bHQgcmF0ZSBnb2VzIGFib3ZlIDElLlxuICAgKi9cbiAgcmVhZG9ubHkgZmF1bHRBbGFybVRocmVzaG9sZDogbnVtYmVyO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSVNlcnZpY2VNZXRyaWNEZXRhaWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0lTZXJ2aWNlTWV0cmljRGV0YWlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBVbml0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gnO1xuXG4vKipcbiAqIERldGFpbHMgZm9yIHRoZSBkZWZhdWx0cyB1c2VkIGluIGEgc2VydmljZSBmb3IgbWV0cmljcyBpbiBvbmUgcGVyc3BlY3RpdmUsIHN1Y2ggYXMgc2VydmVyIHNpZGUgbGF0ZW5jeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZXJ2aWNlTWV0cmljRGV0YWlscyB7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBtZXRyaWMgbmFtZXNwYWNlIGZvciB0aGVzZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNOYW1lc3BhY2U6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWVzIG9mIHN1Y2Nlc3MgaW5kaWNhdGluZyBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBzdWNjZXNzTWV0cmljTmFtZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXMgb2YgZmF1bHQgaW5kaWNhdGluZyBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBmYXVsdE1ldHJpY05hbWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHN0YXRpc3RpYyB1c2VkIGZvciBhbGFybXMsIGZvciBhdmFpbGFiaWxpdHkgbWV0cmljcyB0aGlzIHNob3VsZFxuICAgKiBiZSBcIlN1bVwiLCBmb3IgbGF0ZW5jeSBtZXRyaWNzIGl0IGNvdWxkIHNvbWV0aGluZyBsaWtlIFwicDk5XCIgb3IgXCJwOTkuOVwiXG4gICAqL1xuICByZWFkb25seSBhbGFybVN0YXRpc3RpYzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljcyBmb3Igc3VjY2Vzc2VzIHlvdSB3YW50IHRvIGFwcGVhciBvbiBkYXNoYm9hcmRzLCBmb3IgZXhhbXBsZSwgd2l0aFxuICAgKiBsYXRlbmN5IG1ldHJpY3MsIHlvdSBtaWdodCB3YW50IHA1MCwgcDk5LCBhbmQgdG05OS4gRm9yIGF2YWlsYWJpbGl0eVxuICAgKiBtZXRyaWNzIHRoaXMgd2lsbCB0eXBpY2FsbHkganVzdCBiZSBcIlN1bVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEZvciBhdmFpbGFiaWxpdHkgbWV0cmljcywgdGhpcyB3aWxsIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgd2lsbCBiZSBqdXN0IFwicDk5XCJcbiAgICovXG4gIHJlYWRvbmx5IGdyYXBoZWRTdWNjZXNzU3RhdGlzdGljcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGlzdGljcyBmb3IgZmF1bHRzIHlvdSB3YW50IHRvIGFwcGVhciBvbiBkYXNoYm9hcmRzLCBmb3IgZXhhbXBsZSwgd2l0aFxuICAgKiBsYXRlbmN5IG1ldHJpY3MsIHlvdSBtaWdodCB3YW50IHA1MCwgcDk5LCBhbmQgdG05OS4gRm9yIGF2YWlsYWJpbGl0eVxuICAgKiBtZXRyaWNzIHRoaXMgd2lsbCB0eXBpY2FsbHkganVzdCBiZSBcIlN1bVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEZvciBhdmFpbGFiaWxpdHkgbWV0cmljcywgdGhpcyB3aWxsIGJlIFwiU3VtXCIsIGZvciBsYXRlbmN5IG1ldHJpY3MgaXQgd2lsbCBiZSBqdXN0IFwicDk5XCJcbiAgICovXG4gIHJlYWRvbmx5IGdyYXBoZWRGYXVsdFN0YXRpc3RpY3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHVuaXQgdXNlZCBmb3IgdGhlc2UgbWV0cmljc1xuICAgKi9cbiAgcmVhZG9ubHkgdW5pdDogVW5pdDtcblxuICAvKipcbiAgICogVGhlIHBlcmlvZCBmb3IgdGhlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZDogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIGZvciBsYXRlbmN5IGFuZCBhdmFpbGFiaWx0aXkgYWxhcm1zXG4gICAqL1xuICByZWFkb25seSBldmFsdWF0aW9uUGVyaW9kczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRhdGFwb2ludHMgdG8gYWxhcm0gb24gZm9yIGxhdGVuY3kgYW5kIGF2YWlsYWJpbGl0eSBhbGFybXNcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFwb2ludHNUb0FsYXJtOiBudW1iZXI7XG59XG4iXX0=
@@ -3,6 +3,7 @@ import { ILogGroup } from 'aws-cdk-lib/aws-logs';
3
3
  import { Construct } from 'constructs';
4
4
  import { IInstrumentedServiceMultiAZObservability } from './IInstrumentedServiceMultiAZObservability';
5
5
  import { InstrumentedServiceMultiAZObservabilityProps } from './props/InstrumentedServiceMultiAZObservabilityProps';
6
+ import { IOperationAlarmsAndRules } from '../alarmsandrules/IOperationAlarmsAndRules';
6
7
  import { IServiceAlarmsAndRules } from '../alarmsandrules/IServiceAlarmsAndRules';
7
8
  /**
8
9
  * An service that implements its own instrumentation to record
@@ -12,10 +13,11 @@ import { IServiceAlarmsAndRules } from '../alarmsandrules/IServiceAlarmsAndRules
12
13
  export declare class InstrumentedServiceMultiAZObservability extends Construct implements IInstrumentedServiceMultiAZObservability {
13
14
  /**
14
15
  * Key represents the operation name and the value is the set
15
- * of zonal alarms and rules for that operation. The values themselves
16
- * are dictionaries that have a key for each AZ ID.
16
+ * of zonal alarms and rules for that operation.
17
17
  */
18
- private readonly perOperationAlarmsAndRules;
18
+ readonly perOperationAlarmsAndRules: {
19
+ [key: string]: IOperationAlarmsAndRules;
20
+ };
19
21
  /**
20
22
  * Index into the dictionary by operation name, then by Availability Zone Id
21
23
  * to get the alarms that indicate an AZ shows isolated impact from availability
@@ -9,7 +9,6 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
9
9
  const constructs_1 = require("constructs");
10
10
  const CanaryMetrics_1 = require("./CanaryMetrics");
11
11
  const Operation_1 = require("./Operation");
12
- const OperationMetricDetails_1 = require("./OperationMetricDetails");
13
12
  const MetricDimensions_1 = require("./props/MetricDimensions");
14
13
  const OperationAlarmsAndRules_1 = require("../alarmsandrules/OperationAlarmsAndRules");
15
14
  const ServiceAlarmsAndRules_1 = require("../alarmsandrules/ServiceAlarmsAndRules");
@@ -21,6 +20,8 @@ const ServiceAvailabilityAndLatencyDashboard_1 = require("../dashboards/ServiceA
21
20
  const OutlierDetectionFunction_1 = require("../outlier-detection/OutlierDetectionFunction");
22
21
  const OutlierDetectionAlgorithm_1 = require("../utilities/OutlierDetectionAlgorithm");
23
22
  const StackWithDynamicSource_1 = require("../utilities/StackWithDynamicSource");
23
+ const OperationAvailabilityMetricDetails_1 = require("./OperationAvailabilityMetricDetails");
24
+ const OperationLatencyMetricDetails_1 = require("./OperationLatencyMetricDetails");
24
25
  /**
25
26
  * An service that implements its own instrumentation to record
26
27
  * availability and latency metrics that can be used to create
@@ -66,7 +67,7 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
66
67
  let defaultAvailabilityMetricDetails;
67
68
  let defaultLatencyMetricDetails;
68
69
  if (operation.canaryMetricDetails?.canaryAvailabilityMetricDetails) {
69
- defaultAvailabilityMetricDetails = new OperationMetricDetails_1.OperationMetricDetails({
70
+ defaultAvailabilityMetricDetails = new OperationAvailabilityMetricDetails_1.OperationAvailabilityMetricDetails({
70
71
  operationName: operation.operationName,
71
72
  metricDimensions: new MetricDimensions_1.MetricDimensions({ Operation: operation.operationName }, 'AZ-ID', 'Region'),
72
73
  alarmStatistic: operation.canaryMetricDetails.canaryAvailabilityMetricDetails
@@ -96,7 +97,7 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
96
97
  }, operation.service.defaultAvailabilityMetricDetails);
97
98
  }
98
99
  else if (operation.canaryTestAvailabilityMetricsOverride) {
99
- defaultAvailabilityMetricDetails = new OperationMetricDetails_1.OperationMetricDetails({
100
+ defaultAvailabilityMetricDetails = new OperationAvailabilityMetricDetails_1.OperationAvailabilityMetricDetails({
100
101
  operationName: operation.operationName,
101
102
  metricNamespace: test.metricNamespace,
102
103
  successMetricNames: ['Success'],
@@ -116,7 +117,7 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
116
117
  }, props.service.defaultAvailabilityMetricDetails);
117
118
  }
118
119
  else {
119
- defaultAvailabilityMetricDetails = new OperationMetricDetails_1.OperationMetricDetails({
120
+ defaultAvailabilityMetricDetails = new OperationAvailabilityMetricDetails_1.OperationAvailabilityMetricDetails({
120
121
  operationName: operation.operationName,
121
122
  metricNamespace: test.metricNamespace,
122
123
  successMetricNames: ['Success'],
@@ -125,7 +126,7 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
125
126
  }, props.service.defaultAvailabilityMetricDetails);
126
127
  }
127
128
  if (operation.canaryMetricDetails?.canaryLatencyMetricDetails) {
128
- defaultLatencyMetricDetails = new OperationMetricDetails_1.OperationMetricDetails({
129
+ defaultLatencyMetricDetails = new OperationLatencyMetricDetails_1.OperationLatencyMetricDetails({
129
130
  operationName: operation.operationName,
130
131
  metricDimensions: new MetricDimensions_1.MetricDimensions({ Operation: operation.operationName }, 'AZ-ID', 'Region'),
131
132
  alarmStatistic: operation.canaryMetricDetails.canaryLatencyMetricDetails
@@ -134,8 +135,6 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
134
135
  .datapointsToAlarm,
135
136
  evaluationPeriods: operation.canaryMetricDetails.canaryLatencyMetricDetails
136
137
  .evaluationPeriods,
137
- faultAlarmThreshold: operation.canaryMetricDetails.canaryLatencyMetricDetails
138
- .faultAlarmThreshold,
139
138
  faultMetricNames: operation.canaryMetricDetails.canaryLatencyMetricDetails
140
139
  .faultMetricNames,
141
140
  graphedFaultStatistics: operation.canaryMetricDetails.canaryLatencyMetricDetails
@@ -155,7 +154,7 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
155
154
  }, operation.service.defaultLatencyMetricDetails);
156
155
  }
157
156
  else if (operation.canaryTestLatencyMetricsOverride) {
158
- defaultLatencyMetricDetails = new OperationMetricDetails_1.OperationMetricDetails({
157
+ defaultLatencyMetricDetails = new OperationLatencyMetricDetails_1.OperationLatencyMetricDetails({
159
158
  operationName: operation.operationName,
160
159
  metricNamespace: test.metricNamespace,
161
160
  successMetricNames: ['SuccessLatency'],
@@ -164,15 +163,13 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
164
163
  alarmStatistic: operation.canaryTestLatencyMetricsOverride.alarmStatistic,
165
164
  datapointsToAlarm: operation.canaryTestLatencyMetricsOverride.datapointsToAlarm,
166
165
  evaluationPeriods: operation.canaryTestLatencyMetricsOverride.evaluationPeriods,
167
- faultAlarmThreshold: operation.canaryTestLatencyMetricsOverride
168
- .faultAlarmThreshold,
169
166
  period: operation.canaryTestLatencyMetricsOverride.period,
170
167
  successAlarmThreshold: operation.canaryTestLatencyMetricsOverride
171
168
  .successAlarmThreshold,
172
169
  }, props.service.defaultLatencyMetricDetails);
173
170
  }
174
171
  else {
175
- defaultLatencyMetricDetails = new OperationMetricDetails_1.OperationMetricDetails({
172
+ defaultLatencyMetricDetails = new OperationLatencyMetricDetails_1.OperationLatencyMetricDetails({
176
173
  operationName: operation.operationName,
177
174
  metricNamespace: test.metricNamespace,
178
175
  successMetricNames: ['SuccessLatency'],
@@ -263,8 +260,8 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
263
260
  }),
264
261
  ];
265
262
  }));
266
- this.perOperationZonalImpactAlarms = Object.fromEntries(Object.entries(this.perOperationAlarmsAndRules).map(([key, value]) => {
267
- return [key, value.aggregateZonalAlarms];
263
+ this.perOperationZonalImpactAlarms = Object.fromEntries(Object.entries(this.perOperationAlarmsAndRules).map(([operationName, operationAlarmsAndRules]) => {
264
+ return [operationName, operationAlarmsAndRules.aggregateZonalAlarms];
268
265
  }));
269
266
  let serviceAlarmsStack = new aws_cdk_lib_1.NestedStack(this, 'ServiceAlarmsNestedStack');
270
267
  this.serviceAlarms = new ServiceAlarmsAndRules_1.ServiceAlarmsAndRules(serviceAlarmsStack, props.service.serviceName, {
@@ -298,5 +295,5 @@ class InstrumentedServiceMultiAZObservability extends constructs_1.Construct {
298
295
  }
299
296
  exports.InstrumentedServiceMultiAZObservability = InstrumentedServiceMultiAZObservability;
300
297
  _a = JSII_RTTI_SYMBOL_1;
301
- InstrumentedServiceMultiAZObservability[_a] = { fqn: "@cdklabs/multi-az-observability.InstrumentedServiceMultiAZObservability", version: "0.0.1-alpha.39" };
302
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0luc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQW9EO0FBSXBELDJDQUFtRDtBQUNuRCxtREFBZ0Q7QUFJaEQsMkNBQXdDO0FBQ3hDLHFFQUFrRTtBQUVsRSwrREFBNEQ7QUFHNUQsdUZBQW9GO0FBQ3BGLG1GQUFnRjtBQUNoRiwrRUFBNEU7QUFDNUUsK0RBQTREO0FBQzVELHVEQUFvRDtBQUVwRCxxSEFBa0g7QUFDbEgsaUhBQThHO0FBQzlHLDRGQUF5RjtBQUN6RixzRkFBbUY7QUFDbkYsZ0ZBQTZFO0FBRTdFOzs7O0dBSUc7QUFDSCxNQUFhLHVDQUNYLFNBQVEsc0JBQVM7SUFzRGpCOzs7OztPQUtHO0lBQ0ssZ0JBQWdCLENBQ3RCLEtBQWlCLEVBQ2pCLEtBQW1EO1FBSW5ELElBQUksTUFBTSxHQUFHLElBQUksK0JBQWMsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7WUFDdkQsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZ0IsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHO1lBQzdELGVBQWUsRUFDZCxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWdCLENBQUMsb0JBQW9CLEVBQUUsZUFBZTtZQUNyRSxXQUFXLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFnQixDQUFDLE9BQU87Z0JBQ2pELENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWdCLENBQUMsT0FBTztnQkFDeEMsQ0FBQyxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN2QixlQUFlLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFnQixDQUFDLGVB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bnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgRHVyYXRpb24sIE5lc3RlZFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgRGFzaGJvYXJkLCBJQWxhcm0gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElMb2dHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2FuYXJ5TWV0cmljcyB9IGZyb20gJy4vQ2FuYXJ5TWV0cmljcyc7XG5pbXBvcnQgeyBJSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IH0gZnJvbSAnLi9JSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5JztcbmltcG9ydCB7IElPcGVyYXRpb24gfSBmcm9tICcuL0lPcGVyYXRpb24nO1xuaW1wb3J0IHsgSU9wZXJhdGlvbk1ldHJpY0RldGFpbHMgfSBmcm9tICcuL0lPcGVyYXRpb25NZXRyaWNEZXRhaWxzJztcbmltcG9ydCB7IE9wZXJhdGlvbiB9IGZyb20gJy4vT3BlcmF0aW9uJztcbmltcG9ydCB7IE9wZXJhdGlvbk1ldHJpY0RldGFpbHMgfSBmcm9tICcuL09wZXJhdGlvbk1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMgfSBmcm9tICcuL3Byb3BzL0luc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eVByb3BzJztcbmltcG9ydCB7IE1ldHJpY0RpbWVuc2lvbnMgfSBmcm9tICcuL3Byb3BzL01ldHJpY0RpbWVuc2lvbnMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi4vYWxhcm1zYW5kcnVsZXMvSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IElTZXJ2aWNlQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9hbGFybXNhbmRydWxlcy9JU2VydmljZUFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IE9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi4vYWxhcm1zYW5kcnVsZXMvT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgU2VydmljZUFsYXJtc0FuZFJ1bGVzIH0gZnJvbSAnLi4vYWxhcm1zYW5kcnVsZXMvU2VydmljZUFsYXJtc0FuZFJ1bGVzJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIgfSBmcm9tICcuLi9hem1hcHBlci9BdmFpbGFiaWxpdHlab25lTWFwcGVyJztcbmltcG9ydCB7IENhbmFyeUZ1bmN0aW9uIH0gZnJvbSAnLi4vY2FuYXJpZXMvQ2FuYXJ5RnVuY3Rpb24nO1xuaW1wb3J0IHsgQ2FuYXJ5VGVzdCB9IGZyb20gJy4uL2NhbmFyaWVzL0NhbmFyeVRlc3QnO1xuaW1wb3J0IHsgQWRkQ2FuYXJ5VGVzdFByb3BzIH0gZnJvbSAnLi4vY2FuYXJpZXMvcHJvcHMvQWRkQ2FuYXJ5VGVzdFByb3BzJztcbmltcG9ydCB7IE9wZXJhdGlvbkF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQgfSBmcm9tICcuLi9kYXNoYm9hcmRzL09wZXJhdGlvbkF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQnO1xuaW1wb3J0IHsgU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQgfSBmcm9tICcuLi9kYXNoYm9hcmRzL1NlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkJztcbmltcG9ydCB7IE91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiB9IGZyb20gJy4uL291dGxpZXItZGV0ZWN0aW9uL091dGxpZXJEZXRlY3Rpb25GdW5jdGlvbic7XG5pbXBvcnQgeyBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtIH0gZnJvbSAnLi4vdXRpbGl0aWVzL091dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0nO1xuaW1wb3J0IHsgU3RhY2tXaXRoRHluYW1pY1NvdXJjZSB9IGZyb20gJy4uL3V0aWxpdGllcy9TdGFja1dpdGhEeW5hbWljU291cmNlJztcblxuLyoqXG4gKiBBbiBzZXJ2aWNlIHRoYXQgaW1wbGVtZW50cyBpdHMgb3duIGluc3RydW1lbnRhdGlvbiB0byByZWNvcmRcbiAqIGF2YWlsYWJpbGl0eSBhbmQgbGF0ZW5jeSBtZXRyaWNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlXG4gKiBhbGFybXMsIHJ1bGVzLCBhbmQgZGFzaGJvYXJkcyBmcm9tXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IHtcbiAgLyoqXG4gICAqIEtleSByZXByZXNlbnRzIHRoZSBvcGVyYXRpb24gbmFtZSBhbmQgdGhlIHZhbHVlIGlzIHRoZSBzZXRcbiAgICogb2Ygem9uYWwgYWxhcm1zIGFuZCBydWxlcyBmb3IgdGhhdCBvcGVyYXRpb24uIFRoZSB2YWx1ZXMgdGhlbXNlbHZlc1xuICAgKiBhcmUgZGljdGlvbmFyaWVzIHRoYXQgaGF2ZSBhIGtleSBmb3IgZWFjaCBBWiBJRC5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEluZGV4IGludG8gdGhlIGRpY3Rpb25hcnkgYnkgb3BlcmF0aW9uIG5hbWUsIHRoZW4gYnkgQXZhaWxhYmlsaXR5IFpvbmUgSWRcbiAgICogdG8gZ2V0IHRoZSBhbGFybXMgdGhhdCBpbmRpY2F0ZSBhbiBBWiBzaG93cyBpc29sYXRlZCBpbXBhY3QgZnJvbSBhdmFpbGFiaWxpdHlcbiAgICogb3IgbGF0ZW5jeSBhcyBzZWVuIGJ5IGVpdGhlciB0aGUgc2VydmVyLXNpZGUgb3IgY2FuYXJ5LiBUaGVzZSBhcmUgdGhlIGFsYXJtc1xuICAgKiB5b3Ugd291bGQgd2FudCB0byB1c2UgdG8gdHJpZ2dlciBhdXRvbWF0aW9uIHRvIGV2YWN1YXRlIGFuIEFaLlxuICAgKi9cbiAgcmVhZG9ubHkgcGVyT3BlcmF0aW9uWm9uYWxJbXBhY3RBbGFybXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IElBbGFybSB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgYWxhcm1zIGFuZCBydWxlcyBmb3IgdGhlIG92ZXJhbGwgc2VydmljZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZUFsYXJtczogSVNlcnZpY2VBbGFybXNBbmRSdWxlcztcblxuICAvKipcbiAgICogVGhlIGRhc2hib2FyZHMgZm9yIGVhY2ggb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25EYXNoYm9hcmRzPzogRGFzaGJvYXJkW107XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlIGxldmVsIGRhc2hib2FyZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZURhc2hib2FyZD86IERhc2hib2FyZDtcblxuICAvKipcbiAgICogVGhlIEFaIG1hcHBlciBjdXN0b20gcmVzb3VyY2UgdXNlZCB0byBtYXAgQVogSWRzIHRvIE5hbWVzIGFuZCB2aWNlIGEgdmVyc2FcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYXpNYXBwZXI6IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXI7XG5cbiAgLyoqXG4gICAqIElmIHRoZSBzZXJ2aWNlIGlzIGNvbmZpZ3VyZWQgdG8gaGF2ZSBjYW5hcnkgdGVzdHMgY3JlYXRlZCwgdGhpcyB3aWxsXG4gICAqIGJlIHRoZSBsb2cgZ3JvdXAgd2hlcmUgdGhlIGNhbmFyeSdzIGxvZ3MgYXJlIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBsb2cgZ3JvdXAgaXMgY3JlYXRlZCBpZiB0aGUgY2FuYXJ5IGlzIG5vdCByZXF1ZXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlMb2dHcm91cD86IElMb2dHcm91cDtcblxuICAvKipcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvbiB0aGF0IHBlcmZvcm1zIHRoZSBvdXRsaWVyIGRldGVjdGlvbiBjYWxjdWxhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24/OiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgdGhlIGNhbmFyeSB0ZXN0aW5nIGZ1bmN0aW9uIGFuZCB0ZXN0XG4gICAqIGV2ZW50c1xuICAgKiBAcGFyYW0gc2NvcGUgXG4gICAqIEBwYXJhbSBwcm9wcyBcbiAgICovXG4gIHByaXZhdGUgc2V0dXBDYW5hcnlUZXN0cyhcbiAgICBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBwcm9wczogSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMsXG4gICkgOiB2b2lkIHtcblxuXG4gICAgbGV0IGNhbmFyeSA9IG5ldyBDYW5hcnlGdW5jdGlvbihzY29wZSwgJ0NhbmFyeUZ1bmN0aW9uJywge1xuICAgICAgdnBjOiBwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcyEubmV0d29ya0NvbmZpZ3VyYXRpb24/LnZwYyxcbiAgICAgIHN1Ym5ldFNlbGVjdGlvbjpcbiAgICAgICBwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcyEubmV0d29ya0NvbmZpZ3VyYXRpb24/LnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIGh0dHBUaW1lb3V0OiBwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcyEudGltZW91dFxuICAgICAgICA/IHByb3BzLnNlcnZpY2UuY2FuYXJ5VGVzdFByb3BzIS50aW1lb3V0XG4gICAgICAgIDogRHVyYXRpb24uc2Vjb25kcygyKSxcbiAgICAgIGlnbm9yZVRsc0Vycm9yczogcHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMhLmlnbm9yZVRsc0Vycm9yc1xuICAgICAgICA/IHByb3BzLnNlcnZpY2UuY2FuYXJ5VGVzdFByb3BzIS5pZ25vcmVUbHNFcnJvcnNcbiAgICAgICAgOiBmYWxzZSxcbiAgICB9KTtcblxuICAgIHByb3BzLnNlcnZpY2Uub3BlcmF0aW9ucy5mb3JFYWNoKChvcGVyYXRpb246IElPcGVyYXRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChvcGVyYXRpb24ub3B0T3V0T2ZTZXJ2aWNlQ3JlYXRlZENhbmFyeSAhPSB0cnVlKSB7XG4gICAgICAgIGxldCB0ZXN0UHJvcHM6IEFkZENhbmFyeVRlc3RQcm9wcyA9IG9wZXJhdGlvbi5jYW5hcnlUZXN0UHJvcHNcbiAgICAgICAgICA/IG9wZXJhdGlvbi5jYW5hcnlUZXN0UHJvcHNcbiAgICAgICAgICA6IChwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcyBhcyBBZGRDYW5hcnlUZXN0UHJvcHMpO1xuXG4gICAgICAgIGxldCBuZXN0ZWRTdGFjazogTmVzdGVkU3RhY2sgPSBuZXcgTmVzdGVkU3RhY2soXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArICdDYW5hcnlUZXN0JyxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgdGVzdCA9IG5ldyBDYW5hcnlUZXN0KG5lc3RlZFN0YWNrLCBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSwge1xuICAgICAgICAgIGZ1bmN0aW9uOiBjYW5hcnkuZnVuY3Rpb24sXG4gICAgICAgICAgcmVxdWVzdENvdW50OiB0ZXN0UHJvcHMucmVxdWVzdENvdW50LFxuICAgICAgICAgIHJlZ2lvbmFsUmVxdWVzdENvdW50OiB0ZXN0UHJvcHMucmVnaW9uYWxSZXF1ZXN0Q291bnRcbiAgICAgICAgICAgID8gdGVzdFByb3BzLnJlZ2lvbmFsUmVxdWVzdENvdW50XG4gICAgICAgICAgICA6IHRlc3RQcm9wcy5yZXF1ZXN0Q291bnQsXG4gICAgICAgICAgc2NoZWR1bGU6IHRlc3RQcm9wcy5zY2hlZHVsZSxcbiAgICAgICAgICBvcGVyYXRpb246IG9wZXJhdGlvbixcbiAgICAgICAgICBsb2FkQmFsYW5jZXI6IHRlc3RQcm9wcy5sb2FkQmFsYW5jZXIsXG4gICAgICAgICAgaGVhZGVyczogdGVzdFByb3BzLmhlYWRlcnMsXG4gICAgICAgICAgcG9zdERhdGE6IHRlc3RQcm9wcy5wb3N0RGF0YSxcbiAgICAgICAgICBhek1hcHBlcjogdGhpcy5hek1hcHBlcixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOiBJT3BlcmF0aW9uTWV0cmljRGV0YWlscztcbiAgICAgICAgbGV0IGRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzPy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzKSB7XG4gICAgICAgICAgZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgICAgIG1ldHJpY0RpbWVuc2lvbnM6IG5ldyBNZXRyaWNEaW1lbnNpb25zKFxuICAgICAgICAgICAgICAgIHsgT3BlcmF0aW9uOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSB9LFxuICAgICAgICAgICAgICAgICdBWi1JRCcsXG4gICAgICAgICAgICAgICAgJ1JlZ2lvbicsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGFsYXJtU3RhdGlzdGljOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgZGF0YXBvaW50c1RvQWxhcm06XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmRhdGFwb2ludHNUb0FsYXJtLFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICAgICAgIGZhdWx0QWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmZhdWx0QWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgIGZhdWx0TWV0cmljTmFtZXM6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmZhdWx0TWV0cmljTmFtZXMsXG4gICAgICAgICAgICAgIGdyYXBoZWRGYXVsdFN0YXRpc3RpY3M6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmdyYXBoZWRGYXVsdFN0YXRpc3RpY3MsXG4gICAgICAgICAgICAgIGdyYXBoZWRTdWNjZXNzU3RhdGlzdGljczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZ3JhcGhlZFN1Y2Nlc3NTdGF0aXN0aWNzLFxuICAgICAgICAgICAgICBtZXRyaWNOYW1lc3BhY2U6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLm1ldHJpY05hbWVzcGFjZSxcbiAgICAgICAgICAgICAgcGVyaW9kOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5wZXJpb2QsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NBbGFybVRocmVzaG9sZDpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuc3VjY2Vzc0FsYXJtVGhyZXNob2xkLFxuICAgICAgICAgICAgICBzdWNjZXNzTWV0cmljTmFtZXM6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLnN1Y2Nlc3NNZXRyaWNOYW1lcyxcbiAgICAgICAgICAgICAgdW5pdDogb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy51bml0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wZXJhdGlvbi5zZXJ2aWNlLmRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGUpIHtcbiAgICAgICAgICBkZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyA9IG5ldyBPcGVyYXRpb25NZXRyaWNEZXRhaWxzKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvcGVyYXRpb25OYW1lOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICAgICAgbWV0cmljTmFtZXNwYWNlOiB0ZXN0Lm1ldHJpY05hbWVzcGFjZSxcbiAgICAgICAgICAgICAgc3VjY2Vzc01ldHJpY05hbWVzOiBbJ1N1Y2Nlc3MnXSxcbiAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczogWydGYXVsdCcsICdGYWlsdXJlJ10sXG4gICAgICAgICAgICAgIG1ldHJpY0RpbWVuc2lvbnM6IG5ldyBNZXRyaWNEaW1lbnNpb25zKFxuICAgICAgICAgICAgICAgIHsgT3BlcmF0aW9uOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSB9LFxuICAgICAgICAgICAgICAgICdBWi1JRCcsXG4gICAgICAgICAgICAgICAgJ1JlZ2lvbicsXG4gICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgYWxhcm1TdGF0aXN0aWM6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgIC5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgZGF0YXBvaW50c1RvQWxhcm06XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgIC5kYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgIC5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICAgICAgZmF1bHRBbGFybVRocmVzaG9sZDpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZVxuICAgICAgICAgICAgICAgICAgLmZhdWx0QWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgIHBlcmlvZDogb3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGUucGVyaW9kLFxuICAgICAgICAgICAgICBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgIC5zdWNjZXNzQWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvcHMuc2VydmljZS5kZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzID0gbmV3IE9wZXJhdGlvbk1ldHJpY0RldGFpbHMoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICBtZXRyaWNOYW1lc3BhY2U6IHRlc3QubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICAgICAgICBzdWNjZXNzTWV0cmljTmFtZXM6IFsnU3VjY2VzcyddLFxuICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOiBbJ0ZhdWx0JywgJ0ZhaWx1cmUnXSxcbiAgICAgICAgICAgICAgbWV0cmljRGltZW5zaW9uczogbmV3IE1ldHJpY0RpbWVuc2lvbnMoXG4gICAgICAgICAgICAgICAgeyBPcGVyYXRpb246IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lIH0sXG4gICAgICAgICAgICAgICAgJ0FaLUlEJyxcbiAgICAgICAgICAgICAgICAnUmVnaW9uJyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHM/LmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzKSB7XG4gICAgICAgICAgZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzID0gbmV3IE9wZXJhdGlvbk1ldHJpY0RldGFpbHMoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICB7IE9wZXJhdGlvbjogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgfSxcbiAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBhbGFybVN0YXRpc3RpYzpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmFsYXJtU3RhdGlzdGljLFxuICAgICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmRhdGFwb2ludHNUb0FsYXJtLFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICAgICAgICBmYXVsdEFsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZmF1bHRBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmZhdWx0TWV0cmljTmFtZXMsXG4gICAgICAgICAgICAgIGdyYXBoZWRGYXVsdFN0YXRpc3RpY3M6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5ncmFwaGVkRmF1bHRTdGF0aXN0aWNzLFxuICAgICAgICAgICAgICBncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3M6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5ncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3MsXG4gICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLm1ldHJpY05hbWVzcGFjZSxcbiAgICAgICAgICAgICAgcGVyaW9kOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAucGVyaW9kLFxuICAgICAgICAgICAgICBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5zdWNjZXNzQWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLnN1Y2Nlc3NNZXRyaWNOYW1lcyxcbiAgICAgICAgICAgICAgdW5pdDogb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAudW5pdCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcGVyYXRpb24uc2VydmljZS5kZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24uY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGUpIHtcbiAgICAgICAgICBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGVzdC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczogWydTdWNjZXNzTGF0ZW5jeSddLFxuICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOiBbJ0ZhdWx0TGF0ZW5jeSddLFxuICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICB7IE9wZXJhdGlvbjogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgfSxcbiAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgIGFsYXJtU3RhdGlzdGljOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZS5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgZGF0YXBvaW50c1RvQWxhcm06XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlLmRhdGFwb2ludHNUb0FsYXJtLFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGUuZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICAgICAgIGZhdWx0QWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlXG4gICAgICAgICAgICAgICAgICAuZmF1bHRBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgcGVyaW9kOiBvcGVyYXRpb24uY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGUucGVyaW9kLFxuICAgICAgICAgICAgICBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlXG4gICAgICAgICAgICAgICAgICAuc3VjY2Vzc0FsYXJtVGhyZXNob2xkLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb3BzLnNlcnZpY2UuZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzID0gbmV3IE9wZXJhdGlvbk1ldHJpY0RldGFpbHMoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICBtZXRyaWNOYW1lc3BhY2U6IHRlc3QubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICAgICAgICBzdWNjZXNzTWV0cmljTmFtZXM6IFsnU3VjY2Vzc0xhdGVuY3knXSxcbiAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczogWydGYXVsdExhdGVuY3knXSxcbiAgICAgICAgICAgICAgbWV0cmljRGltZW5zaW9uczogbmV3IE1ldHJpY0RpbWVuc2lvbnMoXG4gICAgICAgICAgICAgICAgeyBPcGVyYXRpb246IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lIH0sXG4gICAgICAgICAgICAgICAgJ0FaLUlEJyxcbiAgICAgICAgICAgICAgICAnUmVnaW9uJyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld09wZXJhdGlvbiA9IG5ldyBPcGVyYXRpb24oe1xuICAgICAgICAgIHNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIHNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlsczpcbiAgICAgICAgICAgIG9wZXJhdGlvbi5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzOlxuICAgICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyxcbiAgICAgICAgICBzZXJ2aWNlOiBvcGVyYXRpb24uc2VydmljZSxcbiAgICAgICAgICBvcGVyYXRpb25OYW1lOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICBwYXRoOiBvcGVyYXRpb24ucGF0aCxcbiAgICAgICAgICBjcml0aWNhbDogb3BlcmF0aW9uLmNyaXRpY2FsLFxuICAgICAgICAgIGh0dHBNZXRob2RzOiBvcGVyYXRpb24uaHR0cE1ldGhvZHMsXG4gICAgICAgICAgY2FuYXJ5TWV0cmljRGV0YWlsczogbmV3IENhbmFyeU1ldHJpY3Moe1xuICAgICAgICAgICAgY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgICBjYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsczogZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnNbaW5kZXhdID0gbmV3T3BlcmF0aW9uO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGxldCBvdXRsaWVyVGhyZXNob2xkOiBudW1iZXI7XG5cbiAgICAvLyBTZXQgZGVmYXVsdHNcbiAgICBpZiAoIXByb3BzLm91dGxpZXJUaHJlc2hvbGQpIHtcbiAgICAgIHN3aXRjaCAocHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSkge1xuICAgICAgICBjYXNlIE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uQ0hJX1NRVUFSRUQ6XG4gICAgICAgICAgb3V0bGllclRocmVzaG9sZCA9IDAuMDU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS5JUVI6XG4gICAgICAgICAgb3V0bGllclRocmVzaG9sZCA9IDEuNTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLk1BRDpcbiAgICAgICAgICBvdXRsaWVyVGhyZXNob2xkID0gMztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLlNUQVRJQzpcbiAgICAgICAgICBvdXRsaWVyVGhyZXNob2xkID0gMC43O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uWl9TQ09SRTpcbiAgICAgICAgICBvdXRsaWVyVGhyZXNob2xkID0gMztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb3V0bGllclRocmVzaG9sZCA9IHByb3BzLm91dGxpZXJUaHJlc2hvbGQ7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBBWiBtYXBwZXIgcmVzb3VyY2UgdGhhdCBhbGwgb2YgdGhlIHJlc291cmNlc1xuICAgIC8vIHdpbGwgc2hhcmVcbiAgICB0aGlzLmF6TWFwcGVyID0gbmV3IEF2YWlsYWJpbGl0eVpvbmVNYXBwZXIodGhpcywgJ0FaTWFwcGVyJywge1xuICAgICAgYXZhaWxhYmlsaXR5Wm9uZU5hbWVzOiBwcm9wcy5zZXJ2aWNlLmF2YWlsYWJpbGl0eVpvbmVOYW1lcyxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSB0aGUgY2FuYXJ5IHRlc3Rpbmcgc3RhY2sgaWYgdGhlIHVzZXIgcHJvdmlkZWQgaW5wdXRcbiAgICBpZiAocHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMpIHtcbiAgICAgIGxldCBjYW5hcnlTdGFjazogU3RhY2tXaXRoRHluYW1pY1NvdXJjZSA9IG5ldyBTdGFja1dpdGhEeW5hbWljU291cmNlKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnQ2FuYXJ5JyxcbiAgICAgICAge1xuICAgICAgICAgIGFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lOiBwcm9wcy5hc3NldHNCdWNrZXRQYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgIGFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWU6XG4gICAgICAgICAgICBwcm9wcy5hc3NldHNCdWNrZXRQcmVmaXhQYXJhbWV0ZXJOYW1lLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgdGhpcy5zZXR1cENhbmFyeVRlc3RzKGNhbmFyeVN0YWNrLCBwcm9wcyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBvdXRsaWVyIGRldGVjdGlvbiBsYW1iZGEgZnVuY3Rpb24gc3RhY2sgaWYgd2UncmUgbm90XG4gICAgLy8gdXNpbmcgc3RhdGljIG91dGxpZXIgZGV0ZWN0aW9uXG4gICAgaWYgKHByb3BzLm91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gIT0gT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS5TVEFUSUMpIHtcbiAgICAgIGxldCBvdXRsaWVyRGV0ZWN0aW9uU3RhY2s6IFN0YWNrV2l0aER5bmFtaWNTb3VyY2UgPVxuICAgICAgICBuZXcgU3RhY2tXaXRoRHluYW1pY1NvdXJjZSh0aGlzLCAnT3V0bGllckRldGVjdGlvblN0YWNrJywge1xuICAgICAgICAgIGFzc2V0c0J1Y2tldHNQYXJhbWV0ZXJOYW1lOiBwcm9wcy5hc3NldHNCdWNrZXRQYXJhbWV0ZXJOYW1lLFxuICAgICAgICAgIGFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWU6XG4gICAgICAgICAgICBwcm9wcy5hc3NldHNCdWNrZXRQcmVmaXhQYXJhbWV0ZXJOYW1lLFxuICAgICAgICB9KTtcbiAgXG4gICAgICB0aGlzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiA9IG5ldyBPdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24oXG4gICAgICAgIG91dGxpZXJEZXRlY3Rpb25TdGFjayxcbiAgICAgICAgJ091dGxpZXJEZXRlY3Rpb25GdW5jdGlvbicsXG4gICAgICAgIHt9LFxuICAgICAgKS5mdW5jdGlvbjtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIHBlciBvcGVyYXRpb24gYWxhcm1zIGFuZCBjb250cmlidXRvciBpbnNpZ2h0IHJ1bGVzXG4gICAgdGhpcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIHByb3BzLnNlcnZpY2Uub3BlcmF0aW9ucy5tYXAoKG9wZXJhdGlvbjogSU9wZXJhdGlvbikgPT4ge1xuICAgICAgICBsZXQgbmVzdGVkU3RhY2s6IE5lc3RlZFN0YWNrID0gbmV3IE5lc3RlZFN0YWNrKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyAnT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNOZXN0ZWRTdGFjaycsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICBuZXcgT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMobmVzdGVkU3RhY2ssIG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLCB7XG4gICAgICAgICAgICBvcGVyYXRpb246IG9wZXJhdGlvbixcbiAgICAgICAgICAgIGxhdGVuY3lPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtOiBwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLFxuICAgICAgICAgICAgYXZhaWxhYmlsaXR5T3V0bGllckRldGVjdGlvbkFsZ29yaXRobTogcHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSxcbiAgICAgICAgICAgIGxhdGVuY3lPdXRsaWVyVGhyZXNob2xkOiBvdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgICAgYXZhaWxhYmlsaXR5T3V0bGllclRocmVzaG9sZDogb3V0bGllclRocmVzaG9sZCxcbiAgICAgICAgICAgIGxvYWRCYWxhbmNlcjogcHJvcHMuc2VydmljZS5sb2FkQmFsYW5jZXIsXG4gICAgICAgICAgICBhek1hcHBlcjogdGhpcy5hek1hcHBlcixcbiAgICAgICAgICAgIG91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbjogdGhpcy5vdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24sXG4gICAgICAgICAgfSksXG4gICAgICAgIF07XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgdGhpcy5wZXJPcGVyYXRpb25ab25hbEltcGFjdEFsYXJtcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIE9iamVjdC5lbnRyaWVzKHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIHJldHVybiBba2V5LCB2YWx1ZS5hZ2dyZWdhdGVab25hbEFsYXJtc107XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgbGV0IHNlcnZpY2VBbGFybXNTdGFjazogTmVzdGVkU3RhY2sgPSBuZXcgTmVzdGVkU3RhY2soXG4gICAgICB0aGlzLFxuICAgICAgJ1NlcnZpY2VBbGFybXNOZXN0ZWRTdGFjaycsXG4gICAgKTtcblxuICAgIHRoaXMuc2VydmljZUFsYXJtcyA9IG5ldyBTZXJ2aWNlQWxhcm1zQW5kUnVsZXMoXG4gICAgICBzZXJ2aWNlQWxhcm1zU3RhY2ssXG4gICAgICBwcm9wcy5zZXJ2aWNlLnNlcnZpY2VOYW1lLFxuICAgICAge1xuICAgICAgICBwZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlczogdGhpcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcyxcbiAgICAgICAgc2VydmljZTogcHJvcHMuc2VydmljZSxcbiAgICAgICAgYXpNYXBwZXI6IHRoaXMuYXpNYXBwZXIsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAocHJvcHMuY3JlYXRlRGFzaGJvYXJkcykge1xuICAgICAgdGhpcy5vcGVyYXRpb25EYXNoYm9hcmRzID0gW107XG5cbiAgICAgIHByb3BzLnNlcnZpY2Uub3BlcmF0aW9ucy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICAgIGxldCBkYXNoYm9hcmRTdGFjazogTmVzdGVkU3RhY2sgPSBuZXcgTmVzdGVkU3RhY2soXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICB4Lm9wZXJhdGlvbk5hbWUgKyAnRGFzaGJvYXJkJyxcbiAgICAgICAgICB7fSxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLm9wZXJhdGlvbkRhc2hib2FyZHMhLnB1c2goXG4gICAgICAgICAgbmV3IE9wZXJhdGlvbkF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQoXG4gICAgICAgICAgICBkYXNoYm9hcmRTdGFjayxcbiAgICAgICAgICAgIHgub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uQWxhcm1zQW5kUnVsZXM6IHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNbeC5vcGVyYXRpb25OYW1lXSxcbiAgICAgICAgICAgICAgYXpNYXBwZXI6IHRoaXMuYXpNYXBwZXIsXG4gICAgICAgICAgICAgIGludGVydmFsOiBwcm9wcy5pbnRlcnZhbFxuICAgICAgICAgICAgICAgID8gcHJvcHMuaW50ZXJ2YWxcbiAgICAgICAgICAgICAgICA6IER1cmF0aW9uLm1pbnV0ZXMoNjApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApLmRhc2hib2FyZCxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBsZXQgZGFzaGJvYXJkU3RhY2s6IE5lc3RlZFN0YWNrID0gbmV3IE5lc3RlZFN0YWNrKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnU2VydmljZURhc2hib2FyZCcsXG4gICAgICAgIHt9LFxuICAgICAgKTtcblxuICAgICAgLy8gVE9PRDogUmV2YW1wIHNlcnZpY2UgbGV2ZWwgZGFzaGJvYXJkIGFuZCByZXRoaW5rIGFsYXJtc1xuICAgICAgdGhpcy5zZXJ2aWNlRGFzaGJvYXJkID0gbmV3IFNlcnZpY2VBdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkKFxuICAgICAgICBkYXNoYm9hcmRTdGFjayxcbiAgICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICB7XG4gICAgICAgICAgaW50ZXJ2YWw6IHByb3BzLmludGVydmFsID8gcHJvcHMuaW50ZXJ2YWwgOiBEdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgICAgICBzZXJ2aWNlQWxhcm1zQW5kUnVsZXM6IHRoaXMuc2VydmljZUFsYXJtcyxcbiAgICAgICAgICBzZXJ2aWNlOiBwcm9wcy5zZXJ2aWNlLFxuICAgICAgICAgIGF6TWFwcGVyOiB0aGlzLmF6TWFwcGVyLFxuICAgICAgICAgIG9wZXJhdGlvbnNEYXNoYm9hcmQ6IHRoaXMub3BlcmF0aW9uRGFzaGJvYXJkc1xuICAgICAgICB9LFxuICAgICAgKS5kYXNoYm9hcmQ7XG4gICAgfVxuICB9XG59XG4iXX0=
298
+ InstrumentedServiceMultiAZObservability[_a] = { fqn: "@cdklabs/multi-az-observability.InstrumentedServiceMultiAZObservability", version: "0.0.1-alpha.40" };
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL0luc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQW9EO0FBSXBELDJDQUFtRDtBQUNuRCxtREFBZ0Q7QUFHaEQsMkNBQXdDO0FBRXhDLCtEQUE0RDtBQUc1RCx1RkFBb0Y7QUFDcEYsbUZBQWdGO0FBQ2hGLCtFQUE0RTtBQUM1RSwrREFBNEQ7QUFDNUQsdURBQW9EO0FBRXBELHFIQUFrSDtBQUNsSCxpSEFBOEc7QUFDOUcsNEZBQXlGO0FBQ3pGLHNGQUFtRjtBQUNuRixnRkFBNkU7QUFDN0UsNkZBQTBGO0FBQzFGLG1GQUFnRjtBQUloRjs7OztHQUlHO0FBQ0gsTUFBYSx1Q0FDWCxTQUFRLHNCQUFTO0lBc0RqQjs7Ozs7T0FLRztJQUNLLGdCQUFnQixDQUN0QixLQUFpQixFQUNqQixLQUFtRDtRQUluRCxJQUFJLE1BQU0sR0FBRyxJQUFJLCtCQUFjLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBQ3ZELEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWdCLENBQUMsb0JBQW9CLEVBQUUsR0FBRztZQUM3RCxlQUFlLEVBQ2QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFnQixDQUFDLG9CQUFvQixFQUFFLGVBQWU7WUFDckUsV0FBVyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBZ0IsQ0FBQyxPQUFPO2dCQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFnQixDQUFDLE9BQU87Z0JBQ3hDLENBQUMsQ0FBQyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDdkIsZUFBZSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMs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SSxtRkFBd0MsQ0FDMUMsY0FBYyxFQUNkLENBQUMsQ0FBQyxhQUFhLEVBQ2Y7b0JBQ0UsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7b0JBQ3pFLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDdkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO3dCQUN0QixDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVE7d0JBQ2hCLENBQUMsQ0FBQyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7aUJBQ3pCLENBQ0YsQ0FBQyxTQUFTLENBQ1osQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxjQUFjLEdBQWdCLElBQUkseUJBQVcsQ0FDL0MsSUFBSSxFQUNKLGtCQUFrQixFQUNsQixFQUFFLENBQ0gsQ0FBQztZQUVGLDBEQUEwRDtZQUMxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSwrRUFBc0MsQ0FDaEUsY0FBYyxFQUNkLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUN2QztnQkFDRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsc0JBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNoRSxxQkFBcUIsRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDekMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2dCQUN0QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLG1CQUFtQixFQUFFLElBQUksQ0FBQyxtQkFBbUI7YUFDOUMsQ0FDRixDQUFDLFNBQVMsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDOztBQXpkSCwwRkEwZEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiwgTmVzdGVkU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBEYXNoYm9hcmQsIElBbGFybSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgSUxvZ0dyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBDYW5hcnlNZXRyaWNzIH0gZnJvbSAnLi9DYW5hcnlNZXRyaWNzJztcbmltcG9ydCB7IElJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHkgfSBmcm9tICcuL0lJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHknO1xuaW1wb3J0IHsgSU9wZXJhdGlvbiB9IGZyb20gJy4vSU9wZXJhdGlvbic7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL09wZXJhdGlvbic7XG5pbXBvcnQgeyBJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlQcm9wcyB9IGZyb20gJy4vcHJvcHMvSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5UHJvcHMnO1xuaW1wb3J0IHsgTWV0cmljRGltZW5zaW9ucyB9IGZyb20gJy4vcHJvcHMvTWV0cmljRGltZW5zaW9ucyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9hbGFybXNhbmRydWxlcy9JT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgSVNlcnZpY2VBbGFybXNBbmRSdWxlcyB9IGZyb20gJy4uL2FsYXJtc2FuZHJ1bGVzL0lTZXJ2aWNlQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9hbGFybXNhbmRydWxlcy9PcGVyYXRpb25BbGFybXNBbmRSdWxlcyc7XG5pbXBvcnQgeyBTZXJ2aWNlQWxhcm1zQW5kUnVsZXMgfSBmcm9tICcuLi9hbGFybXNhbmRydWxlcy9TZXJ2aWNlQWxhcm1zQW5kUnVsZXMnO1xuaW1wb3J0IHsgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlciB9IGZyb20gJy4uL2F6bWFwcGVyL0F2YWlsYWJpbGl0eVpvbmVNYXBwZXInO1xuaW1wb3J0IHsgQ2FuYXJ5RnVuY3Rpb24gfSBmcm9tICcuLi9jYW5hcmllcy9DYW5hcnlGdW5jdGlvbic7XG5pbXBvcnQgeyBDYW5hcnlUZXN0IH0gZnJvbSAnLi4vY2FuYXJpZXMvQ2FuYXJ5VGVzdCc7XG5pbXBvcnQgeyBBZGRDYW5hcnlUZXN0UHJvcHMgfSBmcm9tICcuLi9jYW5hcmllcy9wcm9wcy9BZGRDYW5hcnlUZXN0UHJvcHMnO1xuaW1wb3J0IHsgT3BlcmF0aW9uQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCB9IGZyb20gJy4uL2Rhc2hib2FyZHMvT3BlcmF0aW9uQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCc7XG5pbXBvcnQgeyBTZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZCB9IGZyb20gJy4uL2Rhc2hib2FyZHMvU2VydmljZUF2YWlsYWJpbGl0eUFuZExhdGVuY3lEYXNoYm9hcmQnO1xuaW1wb3J0IHsgT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uIH0gZnJvbSAnLi4vb3V0bGllci1kZXRlY3Rpb24vT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uJztcbmltcG9ydCB7IE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0gfSBmcm9tICcuLi91dGlsaXRpZXMvT3V0bGllckRldGVjdGlvbkFsZ29yaXRobSc7XG5pbXBvcnQgeyBTdGFja1dpdGhEeW5hbWljU291cmNlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL1N0YWNrV2l0aER5bmFtaWNTb3VyY2UnO1xuaW1wb3J0IHsgT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyB9IGZyb20gJy4vT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyc7XG5pbXBvcnQgeyBPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscyB9IGZyb20gJy4vT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgfSBmcm9tICcuL0lPcGVyYXRpb25BdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzJztcbmltcG9ydCB7IElPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscyB9IGZyb20gJy4vSU9wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzJztcblxuLyoqXG4gKiBBbiBzZXJ2aWNlIHRoYXQgaW1wbGVtZW50cyBpdHMgb3duIGluc3RydW1lbnRhdGlvbiB0byByZWNvcmRcbiAqIGF2YWlsYWJpbGl0eSBhbmQgbGF0ZW5jeSBtZXRyaWNzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlXG4gKiBhbGFybXMsIHJ1bGVzLCBhbmQgZGFzaGJvYXJkcyBmcm9tXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnN0cnVtZW50ZWRTZXJ2aWNlTXVsdGlBWk9ic2VydmFiaWxpdHlcbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJSW5zdHJ1bWVudGVkU2VydmljZU11bHRpQVpPYnNlcnZhYmlsaXR5IHtcblxuICAvKipcbiAgICogS2V5IHJlcHJlc2VudHMgdGhlIG9wZXJhdGlvbiBuYW1lIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHNldFxuICAgKiBvZiB6b25hbCBhbGFybXMgYW5kIHJ1bGVzIGZvciB0aGF0IG9wZXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzOiB7XG4gICAgW2tleTogc3RyaW5nXTogSU9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJbmRleCBpbnRvIHRoZSBkaWN0aW9uYXJ5IGJ5IG9wZXJhdGlvbiBuYW1lLCB0aGVuIGJ5IEF2YWlsYWJpbGl0eSBab25lIElkXG4gICAqIHRvIGdldCB0aGUgYWxhcm1zIHRoYXQgaW5kaWNhdGUgYW4gQVogc2hvd3MgaXNvbGF0ZWQgaW1wYWN0IGZyb20gYXZhaWxhYmlsaXR5XG4gICAqIG9yIGxhdGVuY3kgYXMgc2VlbiBieSBlaXRoZXIgdGhlIHNlcnZlci1zaWRlIG9yIGNhbmFyeS4gVGhlc2UgYXJlIHRoZSBhbGFybXNcbiAgICogeW91IHdvdWxkIHdhbnQgdG8gdXNlIHRvIHRyaWdnZXIgYXV0b21hdGlvbiB0byBldmFjdWF0ZSBhbiBBWi5cbiAgICovXG4gIHJlYWRvbmx5IHBlck9wZXJhdGlvblpvbmFsSW1wYWN0QWxhcm1zOiB7XG4gICAgW2tleTogc3RyaW5nXTogeyBba2V5OiBzdHJpbmddOiBJQWxhcm0gfTtcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGFsYXJtcyBhbmQgcnVsZXMgZm9yIHRoZSBvdmVyYWxsIHNlcnZpY2VcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VBbGFybXM6IElTZXJ2aWNlQWxhcm1zQW5kUnVsZXM7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXNoYm9hcmRzIGZvciBlYWNoIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgb3BlcmF0aW9uRGFzaGJvYXJkcz86IERhc2hib2FyZFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBsZXZlbCBkYXNoYm9hcmRcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VEYXNoYm9hcmQ/OiBEYXNoYm9hcmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBWiBtYXBwZXIgY3VzdG9tIHJlc291cmNlIHVzZWQgdG8gbWFwIEFaIElkcyB0byBOYW1lcyBhbmQgdmljZSBhIHZlcnNhXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGF6TWFwcGVyOiBBdmFpbGFiaWxpdHlab25lTWFwcGVyO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgc2VydmljZSBpcyBjb25maWd1cmVkIHRvIGhhdmUgY2FuYXJ5IHRlc3RzIGNyZWF0ZWQsIHRoaXMgd2lsbFxuICAgKiBiZSB0aGUgbG9nIGdyb3VwIHdoZXJlIHRoZSBjYW5hcnkncyBsb2dzIGFyZSBzdG9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gbG9nIGdyb3VwIGlzIGNyZWF0ZWQgaWYgdGhlIGNhbmFyeSBpcyBub3QgcmVxdWVzdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5TG9nR3JvdXA/OiBJTG9nR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBMYW1iZGEgZnVuY3Rpb24gdGhhdCBwZXJmb3JtcyB0aGUgb3V0bGllciBkZXRlY3Rpb24gY2FsY3VsYXRpb25cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgb3V0bGllckRldGVjdGlvbkZ1bmN0aW9uPzogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXRzIHVwIHRoZSBjYW5hcnkgdGVzdGluZyBmdW5jdGlvbiBhbmQgdGVzdFxuICAgKiBldmVudHNcbiAgICogQHBhcmFtIHNjb3BlIFxuICAgKiBAcGFyYW0gcHJvcHMgXG4gICAqL1xuICBwcml2YXRlIHNldHVwQ2FuYXJ5VGVzdHMoXG4gICAgc2NvcGU6IElDb25zdHJ1Y3QsXG4gICAgcHJvcHM6IEluc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eVByb3BzLFxuICApIDogdm9pZCB7XG5cblxuICAgIGxldCBjYW5hcnkgPSBuZXcgQ2FuYXJ5RnVuY3Rpb24oc2NvcGUsICdDYW5hcnlGdW5jdGlvbicsIHtcbiAgICAgIHZwYzogcHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMhLm5ldHdvcmtDb25maWd1cmF0aW9uPy52cGMsXG4gICAgICBzdWJuZXRTZWxlY3Rpb246XG4gICAgICAgcHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMhLm5ldHdvcmtDb25maWd1cmF0aW9uPy5zdWJuZXRTZWxlY3Rpb24sXG4gICAgICBodHRwVGltZW91dDogcHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMhLnRpbWVvdXRcbiAgICAgICAgPyBwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcyEudGltZW91dFxuICAgICAgICA6IER1cmF0aW9uLnNlY29uZHMoMiksXG4gICAgICBpZ25vcmVUbHNFcnJvcnM6IHByb3BzLnNlcnZpY2UuY2FuYXJ5VGVzdFByb3BzIS5pZ25vcmVUbHNFcnJvcnNcbiAgICAgICAgPyBwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcyEuaWdub3JlVGxzRXJyb3JzXG4gICAgICAgIDogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnMuZm9yRWFjaCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICBpZiAob3BlcmF0aW9uLm9wdE91dE9mU2VydmljZUNyZWF0ZWRDYW5hcnkgIT0gdHJ1ZSkge1xuICAgICAgICBsZXQgdGVzdFByb3BzOiBBZGRDYW5hcnlUZXN0UHJvcHMgPSBvcGVyYXRpb24uY2FuYXJ5VGVzdFByb3BzXG4gICAgICAgICAgPyBvcGVyYXRpb24uY2FuYXJ5VGVzdFByb3BzXG4gICAgICAgICAgOiAocHJvcHMuc2VydmljZS5jYW5hcnlUZXN0UHJvcHMgYXMgQWRkQ2FuYXJ5VGVzdFByb3BzKTtcblxuICAgICAgICBsZXQgbmVzdGVkU3RhY2s6IE5lc3RlZFN0YWNrID0gbmV3IE5lc3RlZFN0YWNrKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgKyAnQ2FuYXJ5VGVzdCcsXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IHRlc3QgPSBuZXcgQ2FuYXJ5VGVzdChuZXN0ZWRTdGFjaywgb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsIHtcbiAgICAgICAgICBmdW5jdGlvbjogY2FuYXJ5LmZ1bmN0aW9uLFxuICAgICAgICAgIHJlcXVlc3RDb3VudDogdGVzdFByb3BzLnJlcXVlc3RDb3VudCxcbiAgICAgICAgICByZWdpb25hbFJlcXVlc3RDb3VudDogdGVzdFByb3BzLnJlZ2lvbmFsUmVxdWVzdENvdW50XG4gICAgICAgICAgICA/IHRlc3RQcm9wcy5yZWdpb25hbFJlcXVlc3RDb3VudFxuICAgICAgICAgICAgOiB0ZXN0UHJvcHMucmVxdWVzdENvdW50LFxuICAgICAgICAgIHNjaGVkdWxlOiB0ZXN0UHJvcHMuc2NoZWR1bGUsXG4gICAgICAgICAgb3BlcmF0aW9uOiBvcGVyYXRpb24sXG4gICAgICAgICAgbG9hZEJhbGFuY2VyOiB0ZXN0UHJvcHMubG9hZEJhbGFuY2VyLFxuICAgICAgICAgIGhlYWRlcnM6IHRlc3RQcm9wcy5oZWFkZXJzLFxuICAgICAgICAgIHBvc3REYXRhOiB0ZXN0UHJvcHMucG9zdERhdGEsXG4gICAgICAgICAgYXpNYXBwZXI6IHRoaXMuYXpNYXBwZXIsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGxldCBkZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM7XG4gICAgICAgIGxldCBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHM6IElPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscztcblxuICAgICAgICBpZiAob3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHM/LmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMpIHtcbiAgICAgICAgICBkZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyA9IG5ldyBPcGVyYXRpb25BdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvcGVyYXRpb25OYW1lOiBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSxcbiAgICAgICAgICAgICAgbWV0cmljRGltZW5zaW9uczogbmV3IE1ldHJpY0RpbWVuc2lvbnMoXG4gICAgICAgICAgICAgICAgeyBPcGVyYXRpb246IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lIH0sXG4gICAgICAgICAgICAgICAgJ0FaLUlEJyxcbiAgICAgICAgICAgICAgICAnUmVnaW9uJyxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgYWxhcm1TdGF0aXN0aWM6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmFsYXJtU3RhdGlzdGljLFxuICAgICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZGF0YXBvaW50c1RvQWxhcm0sXG4gICAgICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgICAgICAgICAgZmF1bHRBbGFybVRocmVzaG9sZDpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZmF1bHRBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgZmF1bHRNZXRyaWNOYW1lczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZmF1bHRNZXRyaWNOYW1lcyxcbiAgICAgICAgICAgICAgZ3JhcGhlZEZhdWx0U3RhdGlzdGljczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZ3JhcGhlZEZhdWx0U3RhdGlzdGljcyxcbiAgICAgICAgICAgICAgZ3JhcGhlZFN1Y2Nlc3NTdGF0aXN0aWNzOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5ncmFwaGVkU3VjY2Vzc1N0YXRpc3RpY3MsXG4gICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICAgICAgICBwZXJpb2Q6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLnBlcmlvZCxcbiAgICAgICAgICAgICAgc3VjY2Vzc0FsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5zdWNjZXNzQWxhcm1UaHJlc2hvbGQsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuc3VjY2Vzc01ldHJpY05hbWVzLFxuICAgICAgICAgICAgICB1bml0OiBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgIC5jYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLnVuaXQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb3BlcmF0aW9uLnNlcnZpY2UuZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZSkge1xuICAgICAgICAgIGRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzID0gbmV3IE9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICBtZXRyaWNOYW1lc3BhY2U6IHRlc3QubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICAgICAgICBzdWNjZXNzTWV0cmljTmFtZXM6IFsnU3VjY2VzcyddLFxuICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOiBbJ0ZhdWx0JywgJ0ZhaWx1cmUnXSxcbiAgICAgICAgICAgICAgbWV0cmljRGltZW5zaW9uczogbmV3IE1ldHJpY0RpbWVuc2lvbnMoXG4gICAgICAgICAgICAgICAgeyBPcGVyYXRpb246IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lIH0sXG4gICAgICAgICAgICAgICAgJ0FaLUlEJyxcbiAgICAgICAgICAgICAgICAnUmVnaW9uJyxcbiAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICBhbGFybVN0YXRpc3RpYzpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZVxuICAgICAgICAgICAgICAgICAgLmFsYXJtU3RhdGlzdGljLFxuICAgICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZVxuICAgICAgICAgICAgICAgICAgLmRhdGFwb2ludHNUb0FsYXJtLFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZVxuICAgICAgICAgICAgICAgICAgLmV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICAgICAgICBmYXVsdEFsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlXG4gICAgICAgICAgICAgICAgICAuZmF1bHRBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgcGVyaW9kOiBvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZS5wZXJpb2QsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NBbGFybVRocmVzaG9sZDpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZVxuICAgICAgICAgICAgICAgICAgLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmRlZmF1bHRBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGVzdC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczogWydTdWNjZXNzJ10sXG4gICAgICAgICAgICAgIGZhdWx0TWV0cmljTmFtZXM6IFsnRmF1bHQnLCAnRmFpbHVyZSddLFxuICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICB7IE9wZXJhdGlvbjogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgfSxcbiAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb3BzLnNlcnZpY2UuZGVmYXVsdEF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscz8uY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHMpIHtcbiAgICAgICAgICBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBuZXcgT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICB7IE9wZXJhdGlvbjogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgfSxcbiAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBhbGFybVN0YXRpc3RpYzpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmFsYXJtU3RhdGlzdGljLFxuICAgICAgICAgICAgICBkYXRhcG9pbnRzVG9BbGFybTpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmRhdGFwb2ludHNUb0FsYXJtLFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuZmF1bHRNZXRyaWNOYW1lcyxcbiAgICAgICAgICAgICAgZ3JhcGhlZEZhdWx0U3RhdGlzdGljczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmdyYXBoZWRGYXVsdFN0YXRpc3RpY3MsXG4gICAgICAgICAgICAgIGdyYXBoZWRTdWNjZXNzU3RhdGlzdGljczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLmdyYXBoZWRTdWNjZXNzU3RhdGlzdGljcyxcbiAgICAgICAgICAgICAgbWV0cmljTmFtZXNwYWNlOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAubWV0cmljTmFtZXNwYWNlLFxuICAgICAgICAgICAgICBwZXJpb2Q6XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeU1ldHJpY0RldGFpbHMuY2FuYXJ5TGF0ZW5jeU1ldHJpY0RldGFpbHNcbiAgICAgICAgICAgICAgICAgIC5wZXJpb2QsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NBbGFybVRocmVzaG9sZDpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgICAgc3VjY2Vzc01ldHJpY05hbWVzOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlNZXRyaWNEZXRhaWxzLmNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAuc3VjY2Vzc01ldHJpY05hbWVzLFxuICAgICAgICAgICAgICB1bml0OiBvcGVyYXRpb24uY2FuYXJ5TWV0cmljRGV0YWlscy5jYW5hcnlMYXRlbmN5TWV0cmljRGV0YWlsc1xuICAgICAgICAgICAgICAgIC51bml0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9wZXJhdGlvbi5zZXJ2aWNlLmRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbi5jYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZSkge1xuICAgICAgICAgIGRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlscyA9IG5ldyBPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGVzdC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczogWydTdWNjZXNzTGF0ZW5jeSddLFxuICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOiBbJ0ZhdWx0TGF0ZW5jeSddLFxuICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICB7IE9wZXJhdGlvbjogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgfSxcbiAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgIGFsYXJtU3RhdGlzdGljOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZS5hbGFybVN0YXRpc3RpYyxcbiAgICAgICAgICAgICAgZGF0YXBvaW50c1RvQWxhcm06XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlLmRhdGFwb2ludHNUb0FsYXJtLFxuICAgICAgICAgICAgICBldmFsdWF0aW9uUGVyaW9kczpcbiAgICAgICAgICAgICAgICBvcGVyYXRpb24uY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGUuZXZhbHVhdGlvblBlcmlvZHMsXG4gICAgICAgICAgICAgIHBlcmlvZDogb3BlcmF0aW9uLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlLnBlcmlvZCxcbiAgICAgICAgICAgICAgc3VjY2Vzc0FsYXJtVGhyZXNob2xkOlxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbi5jYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZVxuICAgICAgICAgICAgICAgICAgLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9wcy5zZXJ2aWNlLmRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlZmF1bHRMYXRlbmN5TWV0cmljRGV0YWlscyA9IG5ldyBPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscyhcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb3BlcmF0aW9uTmFtZTogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgICAgIG1ldHJpY05hbWVzcGFjZTogdGVzdC5tZXRyaWNOYW1lc3BhY2UsXG4gICAgICAgICAgICAgIHN1Y2Nlc3NNZXRyaWNOYW1lczogWydTdWNjZXNzTGF0ZW5jeSddLFxuICAgICAgICAgICAgICBmYXVsdE1ldHJpY05hbWVzOiBbJ0ZhdWx0TGF0ZW5jeSddLFxuICAgICAgICAgICAgICBtZXRyaWNEaW1lbnNpb25zOiBuZXcgTWV0cmljRGltZW5zaW9ucyhcbiAgICAgICAgICAgICAgICB7IE9wZXJhdGlvbjogb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUgfSxcbiAgICAgICAgICAgICAgICAnQVotSUQnLFxuICAgICAgICAgICAgICAgICdSZWdpb24nLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHByb3BzLnNlcnZpY2UuZGVmYXVsdExhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV3T3BlcmF0aW9uID0gbmV3IE9wZXJhdGlvbih7XG4gICAgICAgICAgc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM6XG4gICAgICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgc2VydmVyU2lkZUxhdGVuY3lNZXRyaWNEZXRhaWxzOlxuICAgICAgICAgICAgb3BlcmF0aW9uLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICBzZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM6XG4gICAgICAgICAgICBvcGVyYXRpb24uc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzLFxuICAgICAgICAgIHNlcnZpY2U6IG9wZXJhdGlvbi5zZXJ2aWNlLFxuICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIHBhdGg6IG9wZXJhdGlvbi5wYXRoLFxuICAgICAgICAgIGNyaXRpY2FsOiBvcGVyYXRpb24uY3JpdGljYWwsXG4gICAgICAgICAgaHR0cE1ldGhvZHM6IG9wZXJhdGlvbi5odHRwTWV0aG9kcyxcbiAgICAgICAgICBjYW5hcnlNZXRyaWNEZXRhaWxzOiBuZXcgQ2FuYXJ5TWV0cmljcyh7XG4gICAgICAgICAgICBjYW5hcnlBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzOiBkZWZhdWx0QXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICAgICAgICAgIGNhbmFyeUxhdGVuY3lNZXRyaWNEZXRhaWxzOiBkZWZhdWx0TGF0ZW5jeU1ldHJpY0RldGFpbHMsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByb3BzLnNlcnZpY2Uub3BlcmF0aW9uc1tpbmRleF0gPSBuZXdPcGVyYXRpb247XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEluc3RydW1lbnRlZFNlcnZpY2VNdWx0aUFaT2JzZXJ2YWJpbGl0eVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbGV0IG91dGxpZXJUaHJlc2hvbGQ6IG51bWJlcjtcblxuICAgIC8vIFNldCBkZWZhdWx0c1xuICAgIGlmICghcHJvcHMub3V0bGllclRocmVzaG9sZCkge1xuICAgICAgc3dpdGNoIChwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtKSB7XG4gICAgICAgIGNhc2UgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS5DSElfU1FVQVJFRDpcbiAgICAgICAgICBvdXRsaWVyVGhyZXNob2xkID0gMC4wNTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLklRUjpcbiAgICAgICAgICBvdXRsaWVyVGhyZXNob2xkID0gMS41O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uTUFEOlxuICAgICAgICAgIG91dGxpZXJUaHJlc2hvbGQgPSAzO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIE91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0uU1RBVElDOlxuICAgICAgICAgIG91dGxpZXJUaHJlc2hvbGQgPSAwLjc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgT3V0bGllckRldGVjdGlvbkFsZ29yaXRobS5aX1NDT1JFOlxuICAgICAgICAgIG91dGxpZXJUaHJlc2hvbGQgPSAzO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXRsaWVyVGhyZXNob2xkID0gcHJvcHMub3V0bGllclRocmVzaG9sZDtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIEFaIG1hcHBlciByZXNvdXJjZSB0aGF0IGFsbCBvZiB0aGUgcmVzb3VyY2VzXG4gICAgLy8gd2lsbCBzaGFyZVxuICAgIHRoaXMuYXpNYXBwZXIgPSBuZXcgQXZhaWxhYmlsaXR5Wm9uZU1hcHBlcih0aGlzLCAnQVpNYXBwZXInLCB7XG4gICAgICBhdmFpbGFiaWxpdHlab25lTmFtZXM6IHByb3BzLnNlcnZpY2UuYXZhaWxhYmlsaXR5Wm9uZU5hbWVzLFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBjYW5hcnkgdGVzdGluZyBzdGFjayBpZiB0aGUgdXNlciBwcm92aWRlZCBpbnB1dFxuICAgIGlmIChwcm9wcy5zZXJ2aWNlLmNhbmFyeVRlc3RQcm9wcykge1xuICAgICAgbGV0IGNhbmFyeVN0YWNrOiBTdGFja1dpdGhEeW5hbWljU291cmNlID0gbmV3IFN0YWNrV2l0aER5bmFtaWNTb3VyY2UoXG4gICAgICAgIHRoaXMsXG4gICAgICAgICdDYW5hcnknLFxuICAgICAgICB7XG4gICAgICAgICAgYXNzZXRzQnVja2V0c1BhcmFtZXRlck5hbWU6IHByb3BzLmFzc2V0c0J1Y2tldFBhcmFtZXRlck5hbWUsXG4gICAgICAgICAgYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZTpcbiAgICAgICAgICAgIHByb3BzLmFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWUsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICB0aGlzLnNldHVwQ2FuYXJ5VGVzdHMoY2FuYXJ5U3RhY2ssIHByb3BzKTtcbiAgICB9XG5cbiAgICAvLyBDcmVhdGUgdGhlIG91dGxpZXIgZGV0ZWN0aW9uIGxhbWJkYSBmdW5jdGlvbiBzdGFjayBpZiB3ZSdyZSBub3RcbiAgICAvLyB1c2luZyBzdGF0aWMgb3V0bGllciBkZXRlY3Rpb25cbiAgICBpZiAocHJvcHMub3V0bGllckRldGVjdGlvbkFsZ29yaXRobSAhPSBPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLlNUQVRJQykge1xuICAgICAgbGV0IG91dGxpZXJEZXRlY3Rpb25TdGFjazogU3RhY2tXaXRoRHluYW1pY1NvdXJjZSA9XG4gICAgICAgIG5ldyBTdGFja1dpdGhEeW5hbWljU291cmNlKHRoaXMsICdPdXRsaWVyRGV0ZWN0aW9uU3RhY2snLCB7XG4gICAgICAgICAgYXNzZXRzQnVja2V0c1BhcmFtZXRlck5hbWU6IHByb3BzLmFzc2V0c0J1Y2tldFBhcmFtZXRlck5hbWUsXG4gICAgICAgICAgYXNzZXRzQnVja2V0UHJlZml4UGFyYW1ldGVyTmFtZTpcbiAgICAgICAgICAgIHByb3BzLmFzc2V0c0J1Y2tldFByZWZpeFBhcmFtZXRlck5hbWUsXG4gICAgICAgIH0pO1xuICBcbiAgICAgIHRoaXMub3V0bGllckRldGVjdGlvbkZ1bmN0aW9uID0gbmV3IE91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbihcbiAgICAgICAgb3V0bGllckRldGVjdGlvblN0YWNrLFxuICAgICAgICAnT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uJyxcbiAgICAgICAge30sXG4gICAgICApLmZ1bmN0aW9uO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgcGVyIG9wZXJhdGlvbiBhbGFybXMgYW5kIGNvbnRyaWJ1dG9yIGluc2lnaHQgcnVsZXNcbiAgICB0aGlzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgcHJvcHMuc2VydmljZS5vcGVyYXRpb25zLm1hcCgob3BlcmF0aW9uOiBJT3BlcmF0aW9uKSA9PiB7XG4gICAgICAgIGxldCBuZXN0ZWRTdGFjazogTmVzdGVkU3RhY2sgPSBuZXcgTmVzdGVkU3RhY2soXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBvcGVyYXRpb24ub3BlcmF0aW9uTmFtZSArICdPcGVyYXRpb25BbGFybXNBbmRSdWxlc05lc3RlZFN0YWNrJyxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIG9wZXJhdGlvbi5vcGVyYXRpb25OYW1lLFxuICAgICAgICAgIG5ldyBPcGVyYXRpb25BbGFybXNBbmRSdWxlcyhuZXN0ZWRTdGFjaywgb3BlcmF0aW9uLm9wZXJhdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogb3BlcmF0aW9uLFxuICAgICAgICAgICAgbGF0ZW5jeU91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG06IHByb3BzLm91dGxpZXJEZXRlY3Rpb25BbGdvcml0aG0sXG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlPdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtOiBwcm9wcy5vdXRsaWVyRGV0ZWN0aW9uQWxnb3JpdGhtLFxuICAgICAgICAgICAgbGF0ZW5jeU91dGxpZXJUaHJlc2hvbGQ6IG91dGxpZXJUaHJlc2hvbGQsXG4gICAgICAgICAgICBhdmFpbGFiaWxpdHlPdXRsaWVyVGhyZXNob2xkOiBvdXRsaWVyVGhyZXNob2xkLFxuICAgICAgICAgICAgbG9hZEJhbGFuY2VyOiBwcm9wcy5zZXJ2aWNlLmxvYWRCYWxhbmNlcixcbiAgICAgICAgICAgIGF6TWFwcGVyOiB0aGlzLmF6TWFwcGVyLFxuICAgICAgICAgICAgb3V0bGllckRldGVjdGlvbkZ1bmN0aW9uOiB0aGlzLm91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbixcbiAgICAgICAgICB9KSxcbiAgICAgICAgXTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICB0aGlzLnBlck9wZXJhdGlvblpvbmFsSW1wYWN0QWxhcm1zID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXModGhpcy5wZXJPcGVyYXRpb25BbGFybXNBbmRSdWxlcykubWFwKChbb3BlcmF0aW9uTmFtZSwgb3BlcmF0aW9uQWxhcm1zQW5kUnVsZXNdKSA9PiB7XG4gICAgICAgIHJldHVybiBbb3BlcmF0aW9uTmFtZSwgb3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMuYWdncmVnYXRlWm9uYWxBbGFybXNdO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCBzZXJ2aWNlQWxhcm1zU3RhY2s6IE5lc3RlZFN0YWNrID0gbmV3IE5lc3RlZFN0YWNrKFxuICAgICAgdGhpcyxcbiAgICAgICdTZXJ2aWNlQWxhcm1zTmVzdGVkU3RhY2snLFxuICAgICk7XG5cbiAgICB0aGlzLnNlcnZpY2VBbGFybXMgPSBuZXcgU2VydmljZUFsYXJtc0FuZFJ1bGVzKFxuICAgICAgc2VydmljZUFsYXJtc1N0YWNrLFxuICAgICAgcHJvcHMuc2VydmljZS5zZXJ2aWNlTmFtZSxcbiAgICAgIHtcbiAgICAgICAgcGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXM6IHRoaXMucGVyT3BlcmF0aW9uQWxhcm1zQW5kUnVsZXMsXG4gICAgICAgIHNlcnZpY2U6IHByb3BzLnNlcnZpY2UsXG4gICAgICAgIGF6TWFwcGVyOiB0aGlzLmF6TWFwcGVyLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKHByb3BzLmNyZWF0ZURhc2hib2FyZHMpIHtcbiAgICAgIHRoaXMub3BlcmF0aW9uRGFzaGJvYXJkcyA9IFtdO1xuXG4gICAgICBwcm9wcy5zZXJ2aWNlLm9wZXJhdGlvbnMuZm9yRWFjaCgoeCkgPT4ge1xuICAgICAgICBsZXQgZGFzaGJvYXJkU3RhY2s6IE5lc3RlZFN0YWNrID0gbmV3IE5lc3RlZFN0YWNrKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgeC5vcGVyYXRpb25OYW1lICsgJ0Rhc2hib2FyZCcsXG4gICAgICAgICAge30sXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5vcGVyYXRpb25EYXNoYm9hcmRzIS5wdXNoKFxuICAgICAgICAgIG5ldyBPcGVyYXRpb25BdmFpbGFiaWxpdHlBbmRMYXRlbmN5RGFzaGJvYXJkKFxuICAgICAgICAgICAgZGFzaGJvYXJkU3RhY2ssXG4gICAgICAgICAgICB4Lm9wZXJhdGlvbk5hbWUsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzOiB0aGlzLnBlck9wZXJhdGlvbkFsYXJtc0FuZFJ1bGVzW3gub3BlcmF0aW9uTmFtZV0sXG4gICAgICAgICAgICAgIGF6TWFwcGVyOiB0aGlzLmF6TWFwcGVyLFxuICAgICAgICAgICAgICBpbnRlcnZhbDogcHJvcHMuaW50ZXJ2YWxcbiAgICAgICAgICAgICAgICA/IHByb3BzLmludGVydmFsXG4gICAgICAgICAgICAgICAgOiBEdXJhdGlvbi5taW51dGVzKDYwKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKS5kYXNoYm9hcmQsXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgbGV0IGRhc2hib2FyZFN0YWNrOiBOZXN0ZWRTdGFjayA9IG5ldyBOZXN0ZWRTdGFjayhcbiAgICAgICAgdGhpcyxcbiAgICAgICAgJ1NlcnZpY2VEYXNoYm9hcmQnLFxuICAgICAgICB7fSxcbiAgICAgICk7XG5cbiAgICAgIC8vIFRPT0Q6IFJldmFtcCBzZXJ2aWNlIGxldmVsIGRhc2hib2FyZCBhbmQgcmV0aGluayBhbGFybXNcbiAgICAgIHRoaXMuc2VydmljZURhc2hib2FyZCA9IG5ldyBTZXJ2aWNlQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeURhc2hib2FyZChcbiAgICAgICAgZGFzaGJvYXJkU3RhY2ssXG4gICAgICAgIHByb3BzLnNlcnZpY2Uuc2VydmljZU5hbWUudG9Mb3dlckNhc2UoKSxcbiAgICAgICAge1xuICAgICAgICAgIGludGVydmFsOiBwcm9wcy5pbnRlcnZhbCA/IHByb3BzLmludGVydmFsIDogRHVyYXRpb24ubWludXRlcyg2MCksXG4gICAgICAgICAgc2VydmljZUFsYXJtc0FuZFJ1bGVzOiB0aGlzLnNlcnZpY2VBbGFybXMsXG4gICAgICAgICAgc2VydmljZTogcHJvcHMuc2VydmljZSxcbiAgICAgICAgICBhek1hcHBlcjogdGhpcy5hek1hcHBlcixcbiAgICAgICAgICBvcGVyYXRpb25zRGFzaGJvYXJkOiB0aGlzLm9wZXJhdGlvbkRhc2hib2FyZHNcbiAgICAgICAgfSxcbiAgICAgICkuZGFzaGJvYXJkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,11 +1,13 @@
1
1
  import { ICanaryMetrics } from './ICanaryMetrics';
2
- import { ICanaryTestMetricsOverride } from './ICanaryTestMetricsOverride';
3
2
  import { IContributorInsightRuleDetails } from './IContributorInsightRuleDetails';
4
3
  import { IOperation } from './IOperation';
5
- import { IOperationMetricDetails } from './IOperationMetricDetails';
6
4
  import { IService } from './IService';
7
5
  import { OperationProps } from './props/OperationProps';
8
6
  import { AddCanaryTestProps } from '../canaries/props/AddCanaryTestProps';
7
+ import { IOperationAvailabilityMetricDetails } from './IOperationAvailabilityMetricDetails';
8
+ import { IOperationLatencyMetricDetails } from './IOperationLatencyMetricDetails';
9
+ import { ICanaryTestAvailabilityMetricsOverride } from './ICanaryTestAvailabilityMetricsOverride';
10
+ import { ICanaryTestLatencyMetricsOverride } from './ICanaryTestLatencyMetricsOverride';
9
11
  /**
10
12
  * A single operation that is part of a service
11
13
  */
@@ -26,11 +28,11 @@ export declare class Operation implements IOperation {
26
28
  /**
27
29
  * The server side availability metric details
28
30
  */
29
- readonly serverSideAvailabilityMetricDetails: IOperationMetricDetails;
31
+ readonly serverSideAvailabilityMetricDetails: IOperationAvailabilityMetricDetails;
30
32
  /**
31
33
  * The server side latency metric details
32
34
  */
33
- readonly serverSideLatencyMetricDetails: IOperationMetricDetails;
35
+ readonly serverSideLatencyMetricDetails: IOperationLatencyMetricDetails;
34
36
  /**
35
37
  * Optional metric details if the service has a canary
36
38
  */
@@ -40,13 +42,13 @@ export declare class Operation implements IOperation {
40
42
  * use values other than the service defaults to define the thresholds for
41
43
  * availability.
42
44
  */
43
- readonly canaryTestAvailabilityMetricsOverride?: ICanaryTestMetricsOverride;
45
+ readonly canaryTestAvailabilityMetricsOverride?: ICanaryTestAvailabilityMetricsOverride;
44
46
  /**
45
47
  * The override values for automatically created canary tests so you can
46
48
  * use values other than the service defaults to define the thresholds for
47
49
  * latency.
48
50
  */
49
- readonly canaryTestLatencyMetricsOverride?: ICanaryTestMetricsOverride;
51
+ readonly canaryTestLatencyMetricsOverride?: ICanaryTestLatencyMetricsOverride;
50
52
  /**
51
53
  * The server side details for contributor insights rules
52
54
  */
@@ -30,5 +30,5 @@ class Operation {
30
30
  }
31
31
  exports.Operation = Operation;
32
32
  _a = JSII_RTTI_SYMBOL_1;
33
- Operation[_a] = { fqn: "@cdklabs/multi-az-observability.Operation", version: "0.0.1-alpha.39" };
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL09wZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVdBOztHQUVHO0FBQ0gsTUFBYSxTQUFTO0lBOEVwQixZQUFZLEtBQXFCO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQ0FBbUM7WUFDdEMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDO1FBQzVDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUMsOEJBQThCLENBQUM7UUFDM0UsSUFBSSxDQUFDLHVDQUF1QztZQUMxQyxLQUFLLENBQUMsdUNBQXVDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxxQ0FBcUM7WUFDeEMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxnQ0FBZ0M7WUFDbkMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsNEJBQTRCLENBQUM7SUFDekUsQ0FBQzs7QUFqR0gsOEJBa0dDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUNhbmFyeU1ldHJpY3MgfSBmcm9tICcuL0lDYW5hcnlNZXRyaWNzJztcbmltcG9ydCB7IElDYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlIH0gZnJvbSAnLi9JQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZSc7XG5pbXBvcnQgeyBJQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgfSBmcm9tICcuL0lDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uIH0gZnJvbSAnLi9JT3BlcmF0aW9uJztcbmltcG9ydCB7IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSAnLi9JT3BlcmF0aW9uTWV0cmljRGV0YWlscyc7XG5pbXBvcnQgeyBJU2VydmljZSB9IGZyb20gJy4vSVNlcnZpY2UnO1xuaW1wb3J0IHsgT3BlcmF0aW9uUHJvcHMgfSBmcm9tICcuL3Byb3BzL09wZXJhdGlvblByb3BzJztcbmltcG9ydCB7IEFkZENhbmFyeVRlc3RQcm9wcyB9IGZyb20gJy4uL2NhbmFyaWVzL3Byb3BzL0FkZENhbmFyeVRlc3RQcm9wcyc7XG5cbi8qKlxuICogQSBzaW5nbGUgb3BlcmF0aW9uIHRoYXQgaXMgcGFydCBvZiBhIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbiBpbXBsZW1lbnRzIElPcGVyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlIG9wZXJhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGhcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2U6IElTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBUaGUgSFRUUCBwYXRoIGZvciB0aGUgb3BlcmF0aW9uIGZvciBjYW5hcmllc1xuICAgKiAgdG8gcnVuIGFnYWluc3QsIHNvbWV0aGluZyBsaWtlIFwiL3Byb2R1Y3RzL2xpc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgYXZhaWxhYmlsaXR5IG1ldHJpYyBkZXRhaWxzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSBsYXRlbmN5IG1ldHJpYyBkZXRhaWxzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHM6IElPcGVyYXRpb25NZXRyaWNEZXRhaWxzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBtZXRyaWMgZGV0YWlscyBpZiB0aGUgc2VydmljZSBoYXMgYSBjYW5hcnlcbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeU1ldHJpY0RldGFpbHM/OiBJQ2FuYXJ5TWV0cmljcztcblxuICAvKipcbiAgICogVGhlIG92ZXJyaWRlIHZhbHVlcyBmb3IgYXV0b21hdGljYWxseSBjcmVhdGVkIGNhbmFyeSB0ZXN0cyBzbyB5b3UgY2FuXG4gICAqIHVzZSB2YWx1ZXMgb3RoZXIgdGhhbiB0aGUgc2VydmljZSBkZWZhdWx0cyB0byBkZWZpbmUgdGhlIHRocmVzaG9sZHMgZm9yXG4gICAqIGF2YWlsYWJpbGl0eS5cbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGU/OiBJQ2FuYXJ5VGVzdE1ldHJpY3NPdmVycmlkZTtcblxuICAvKipcbiAgICogVGhlIG92ZXJyaWRlIHZhbHVlcyBmb3IgYXV0b21hdGljYWxseSBjcmVhdGVkIGNhbmFyeSB0ZXN0cyBzbyB5b3UgY2FuXG4gICAqIHVzZSB2YWx1ZXMgb3RoZXIgdGhhbiB0aGUgc2VydmljZSBkZWZhdWx0cyB0byBkZWZpbmUgdGhlIHRocmVzaG9sZHMgZm9yXG4gICAqIGxhdGVuY3kuXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZT86IElDYW5hcnlUZXN0TWV0cmljc092ZXJyaWRlO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgZGV0YWlscyBmb3IgY29udHJpYnV0b3IgaW5zaWdodHMgcnVsZXNcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscz86IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoaXMgaXMgYSBjcml0aWNhbCBvcGVyYXRpb24gZm9yIHRoZSBzZXJ2aWNlXG4gICAqIGFuZCB3aWxsIGJlIGluY2x1ZGVkIGluIHNlcnZpY2UgbGV2ZWwgbWV0cmljcyBhbmRcbiAgICogZGFzaGJvYXJkc1xuICAgKi9cbiAgcmVhZG9ubHkgY3JpdGljYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBodHRwIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IHRoZSBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBNZXRob2RzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhleSBoYXZlIGJlZW4gYWRkZWQsIHRoZSBwcm9wZXJ0aWVzIGZvclxuICAgKiBjcmVhdGluZyBuZXcgY2FuYXJ5IHRlc3RzIG9uIHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlUZXN0UHJvcHM/OiBBZGRDYW5hcnlUZXN0UHJvcHM7XG5cbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIGlmIHlvdSBoYXZlIGRlZmluZWQgQ2FuYXJ5VGVzdFByb3BzIGZvciB5b3VyXG4gICAqIHNlcnZpY2UsIHdoaWNoIGFwcGxpZXMgdG8gYWxsIG9wZXJhdGlvbnMsIGJ1dCB5b3Ugd2FudCB0b1xuICAgKiBvcHQgb3V0IG9mIGNyZWF0aW5nIHRoZSBjYW5hcnkgdGVzdCBmb3IgdGhpcyBvcGVyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIG9wZXJhdGlvbiBpcyBub3Qgb3B0ZWQgb3V0XG4gICAqL1xuICByZWFkb25seSBvcHRPdXRPZlNlcnZpY2VDcmVhdGVkQ2FuYXJ5PzogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogT3BlcmF0aW9uUHJvcHMpIHtcbiAgICB0aGlzLmNhbmFyeU1ldHJpY0RldGFpbHMgPSBwcm9wcy5jYW5hcnlNZXRyaWNEZXRhaWxzO1xuICAgIHRoaXMuaHR0cE1ldGhvZHMgPSBwcm9wcy5odHRwTWV0aG9kcztcbiAgICB0aGlzLmNyaXRpY2FsID0gcHJvcHMuY3JpdGljYWw7XG4gICAgdGhpcy5vcGVyYXRpb25OYW1lID0gcHJvcHMub3BlcmF0aW9uTmFtZTtcbiAgICB0aGlzLnBhdGggPSBwcm9wcy5wYXRoO1xuICAgIHRoaXMuc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgPVxuICAgICAgcHJvcHMuc2VydmVyU2lkZUF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM7XG4gICAgdGhpcy5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHMgPSBwcm9wcy5zZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHM7XG4gICAgdGhpcy5zZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHMgPVxuICAgICAgcHJvcHMuc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzO1xuICAgIHRoaXMuc2VydmljZSA9IHByb3BzLnNlcnZpY2U7XG4gICAgdGhpcy5jYW5hcnlUZXN0UHJvcHMgPSBwcm9wcy5jYW5hcnlUZXN0UHJvcHM7XG4gICAgdGhpcy5vcHRPdXRPZlNlcnZpY2VDcmVhdGVkQ2FuYXJ5ID0gcHJvcHMub3B0T3V0T2ZTZXJ2aWNlQ3JlYXRlZENhbmFyeTtcbiAgICB0aGlzLmNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGUgPVxuICAgICAgcHJvcHMuY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZTtcbiAgICB0aGlzLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlID1cbiAgICAgIHByb3BzLmNhbmFyeVRlc3RMYXRlbmN5TWV0cmljc092ZXJyaWRlO1xuICAgIHRoaXMub3B0T3V0T2ZTZXJ2aWNlQ3JlYXRlZENhbmFyeSA9IHByb3BzLm9wdE91dE9mU2VydmljZUNyZWF0ZWRDYW5hcnk7XG4gIH1cbn1cbiJdfQ==
33
+ Operation[_a] = { fqn: "@cdklabs/multi-az-observability.Operation", version: "0.0.1-alpha.40" };
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL09wZXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBOztHQUVHO0FBQ0gsTUFBYSxTQUFTO0lBOEVwQixZQUFZLEtBQXFCO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFDckQsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxtQ0FBbUM7WUFDdEMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDO1FBQzVDLElBQUksQ0FBQyw4QkFBOEIsR0FBRyxLQUFLLENBQUMsOEJBQThCLENBQUM7UUFDM0UsSUFBSSxDQUFDLHVDQUF1QztZQUMxQyxLQUFLLENBQUMsdUNBQXVDLENBQUM7UUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsS0FBSyxDQUFDLDRCQUE0QixDQUFDO1FBQ3ZFLElBQUksQ0FBQyxxQ0FBcUM7WUFDeEMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxnQ0FBZ0M7WUFDbkMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyw0QkFBNEIsR0FBRyxLQUFLLENBQUMsNEJBQTRCLENBQUM7SUFDekUsQ0FBQzs7QUFqR0gsOEJBa0dDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSUNhbmFyeU1ldHJpY3MgfSBmcm9tICcuL0lDYW5hcnlNZXRyaWNzJztcbmltcG9ydCB7IElDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyB9IGZyb20gJy4vSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzJztcbmltcG9ydCB7IElPcGVyYXRpb24gfSBmcm9tICcuL0lPcGVyYXRpb24nO1xuaW1wb3J0IHsgSVNlcnZpY2UgfSBmcm9tICcuL0lTZXJ2aWNlJztcbmltcG9ydCB7IE9wZXJhdGlvblByb3BzIH0gZnJvbSAnLi9wcm9wcy9PcGVyYXRpb25Qcm9wcyc7XG5pbXBvcnQgeyBBZGRDYW5hcnlUZXN0UHJvcHMgfSBmcm9tICcuLi9jYW5hcmllcy9wcm9wcy9BZGRDYW5hcnlUZXN0UHJvcHMnO1xuaW1wb3J0IHsgSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgfSBmcm9tICcuL0lPcGVyYXRpb25BdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzJztcbmltcG9ydCB7IElPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscyB9IGZyb20gJy4vSU9wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzJztcbmltcG9ydCB7IElDYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlIH0gZnJvbSAnLi9JQ2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZSc7XG5pbXBvcnQgeyBJQ2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGUgfSBmcm9tICcuL0lDYW5hcnlUZXN0TGF0ZW5jeU1ldHJpY3NPdmVycmlkZSc7XG5cbi8qKlxuICogQSBzaW5nbGUgb3BlcmF0aW9uIHRoYXQgaXMgcGFydCBvZiBhIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbiBpbXBsZW1lbnRzIElPcGVyYXRpb24ge1xuICAvKipcbiAgICogVGhlIHNlcnZpY2UgdGhlIG9wZXJhdGlvbiBpcyBhc3NvY2lhdGVkIHdpdGhcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2U6IElTZXJ2aWNlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBvcGVyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBUaGUgSFRUUCBwYXRoIGZvciB0aGUgb3BlcmF0aW9uIGZvciBjYW5hcmllc1xuICAgKiAgdG8gcnVuIGFnYWluc3QsIHNvbWV0aGluZyBsaWtlIFwiL3Byb2R1Y3RzL2xpc3RcIlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmVyIHNpZGUgYXZhaWxhYmlsaXR5IG1ldHJpYyBkZXRhaWxzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsczogSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSBsYXRlbmN5IG1ldHJpYyBkZXRhaWxzXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJTaWRlTGF0ZW5jeU1ldHJpY0RldGFpbHM6IElPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscztcblxuICAvKipcbiAgICogT3B0aW9uYWwgbWV0cmljIGRldGFpbHMgaWYgdGhlIHNlcnZpY2UgaGFzIGEgY2FuYXJ5XG4gICAqL1xuICByZWFkb25seSBjYW5hcnlNZXRyaWNEZXRhaWxzPzogSUNhbmFyeU1ldHJpY3M7XG5cbiAgLyoqXG4gICAqIFRoZSBvdmVycmlkZSB2YWx1ZXMgZm9yIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBjYW5hcnkgdGVzdHMgc28geW91IGNhblxuICAgKiB1c2UgdmFsdWVzIG90aGVyIHRoYW4gdGhlIHNlcnZpY2UgZGVmYXVsdHMgdG8gZGVmaW5lIHRoZSB0aHJlc2hvbGRzIGZvclxuICAgKiBhdmFpbGFiaWxpdHkuXG4gICAqL1xuICByZWFkb25seSBjYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlPzogSUNhbmFyeVRlc3RBdmFpbGFiaWxpdHlNZXRyaWNzT3ZlcnJpZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBvdmVycmlkZSB2YWx1ZXMgZm9yIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBjYW5hcnkgdGVzdHMgc28geW91IGNhblxuICAgKiB1c2UgdmFsdWVzIG90aGVyIHRoYW4gdGhlIHNlcnZpY2UgZGVmYXVsdHMgdG8gZGVmaW5lIHRoZSB0aHJlc2hvbGRzIGZvclxuICAgKiBsYXRlbmN5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGU/OiBJQ2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2ZXIgc2lkZSBkZXRhaWxzIGZvciBjb250cmlidXRvciBpbnNpZ2h0cyBydWxlc1xuICAgKi9cbiAgcmVhZG9ubHkgc2VydmVyU2lkZUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzPzogSUNvbnRyaWJ1dG9ySW5zaWdodFJ1bGVEZXRhaWxzO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhpcyBpcyBhIGNyaXRpY2FsIG9wZXJhdGlvbiBmb3IgdGhlIHNlcnZpY2VcbiAgICogYW5kIHdpbGwgYmUgaW5jbHVkZWQgaW4gc2VydmljZSBsZXZlbCBtZXRyaWNzIGFuZFxuICAgKiBkYXNoYm9hcmRzXG4gICAqL1xuICByZWFkb25seSBjcml0aWNhbDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGh0dHAgbWV0aG9kcyBzdXBwb3J0ZWQgYnkgdGhlIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cE1ldGhvZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZiB0aGV5IGhhdmUgYmVlbiBhZGRlZCwgdGhlIHByb3BlcnRpZXMgZm9yXG4gICAqIGNyZWF0aW5nIG5ldyBjYW5hcnkgdGVzdHMgb24gdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGNhbmFyeVRlc3RQcm9wcz86IEFkZENhbmFyeVRlc3RQcm9wcztcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgaWYgeW91IGhhdmUgZGVmaW5lZCBDYW5hcnlUZXN0UHJvcHMgZm9yIHlvdXJcbiAgICogc2VydmljZSwgd2hpY2ggYXBwbGllcyB0byBhbGwgb3BlcmF0aW9ucywgYnV0IHlvdSB3YW50IHRvXG4gICAqIG9wdCBvdXQgb2YgY3JlYXRpbmcgdGhlIGNhbmFyeSB0ZXN0IGZvciB0aGlzIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgb3BlcmF0aW9uIGlzIG5vdCBvcHRlZCBvdXRcbiAgICovXG4gIHJlYWRvbmx5IG9wdE91dE9mU2VydmljZUNyZWF0ZWRDYW5hcnk/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBPcGVyYXRpb25Qcm9wcykge1xuICAgIHRoaXMuY2FuYXJ5TWV0cmljRGV0YWlscyA9IHByb3BzLmNhbmFyeU1ldHJpY0RldGFpbHM7XG4gICAgdGhpcy5odHRwTWV0aG9kcyA9IHByb3BzLmh0dHBNZXRob2RzO1xuICAgIHRoaXMuY3JpdGljYWwgPSBwcm9wcy5jcml0aWNhbDtcbiAgICB0aGlzLm9wZXJhdGlvbk5hbWUgPSBwcm9wcy5vcGVyYXRpb25OYW1lO1xuICAgIHRoaXMucGF0aCA9IHByb3BzLnBhdGg7XG4gICAgdGhpcy5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyA9XG4gICAgICBwcm9wcy5zZXJ2ZXJTaWRlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscztcbiAgICB0aGlzLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscyA9IHByb3BzLnNlcnZlclNpZGVMYXRlbmN5TWV0cmljRGV0YWlscztcbiAgICB0aGlzLnNlcnZlclNpZGVDb250cmlidXRvckluc2lnaHRSdWxlRGV0YWlscyA9XG4gICAgICBwcm9wcy5zZXJ2ZXJTaWRlQ29udHJpYnV0b3JJbnNpZ2h0UnVsZURldGFpbHM7XG4gICAgdGhpcy5zZXJ2aWNlID0gcHJvcHMuc2VydmljZTtcbiAgICB0aGlzLmNhbmFyeVRlc3RQcm9wcyA9IHByb3BzLmNhbmFyeVRlc3RQcm9wcztcbiAgICB0aGlzLm9wdE91dE9mU2VydmljZUNyZWF0ZWRDYW5hcnkgPSBwcm9wcy5vcHRPdXRPZlNlcnZpY2VDcmVhdGVkQ2FuYXJ5O1xuICAgIHRoaXMuY2FuYXJ5VGVzdEF2YWlsYWJpbGl0eU1ldHJpY3NPdmVycmlkZSA9XG4gICAgICBwcm9wcy5jYW5hcnlUZXN0QXZhaWxhYmlsaXR5TWV0cmljc092ZXJyaWRlO1xuICAgIHRoaXMuY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGUgPVxuICAgICAgcHJvcHMuY2FuYXJ5VGVzdExhdGVuY3lNZXRyaWNzT3ZlcnJpZGU7XG4gICAgdGhpcy5vcHRPdXRPZlNlcnZpY2VDcmVhdGVkQ2FuYXJ5ID0gcHJvcHMub3B0T3V0T2ZTZXJ2aWNlQ3JlYXRlZENhbmFyeTtcbiAgfVxufVxuIl19
@@ -0,0 +1,22 @@
1
+ import { IOperationAvailabilityMetricDetails } from "./IOperationAvailabilityMetricDetails";
2
+ import { IServiceAvailabilityMetricDetails } from "./IServiceAvailabilityMetricDetails";
3
+ import { OperationMetricDetails } from "./OperationMetricDetails";
4
+ import { OperationAvailabilityMetricDetailsProps } from "./props/OperationAvailabilityMetricDetailsProps";
5
+ /**
6
+ * Availability metric details for an operation
7
+ */
8
+ export declare class OperationAvailabilityMetricDetails extends OperationMetricDetails implements IOperationAvailabilityMetricDetails {
9
+ /**
10
+ * The threshold for alarms associated with availability success metrics, for example if measuring
11
+ * success rate, the threshold may be 99, meaning you would want an alarm that triggers
12
+ * if success drops below 99%.
13
+ */
14
+ readonly successAlarmThreshold: number;
15
+ /**
16
+ * The threshold for alarms associated with availability fault metrics, for example if measuring
17
+ * fault rate, the threshold may be 1, meaning you would want an alarm that triggers
18
+ * if the fault rate goes above 1%.
19
+ */
20
+ readonly faultAlarmThreshold: number;
21
+ constructor(props: OperationAvailabilityMetricDetailsProps, defaultProps: IServiceAvailabilityMetricDetails);
22
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OperationAvailabilityMetricDetails = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const OperationMetricDetails_1 = require("./OperationMetricDetails");
7
+ /**
8
+ * Availability metric details for an operation
9
+ */
10
+ class OperationAvailabilityMetricDetails extends OperationMetricDetails_1.OperationMetricDetails {
11
+ constructor(props, defaultProps) {
12
+ super(props, defaultProps);
13
+ this.faultAlarmThreshold = props.faultAlarmThreshold
14
+ ? props.faultAlarmThreshold
15
+ : defaultProps.faultAlarmThreshold;
16
+ this.successAlarmThreshold = props.successAlarmThreshold
17
+ ? props.successAlarmThreshold
18
+ : defaultProps.successAlarmThreshold;
19
+ }
20
+ }
21
+ exports.OperationAvailabilityMetricDetails = OperationAvailabilityMetricDetails;
22
+ _a = JSII_RTTI_SYMBOL_1;
23
+ OperationAvailabilityMetricDetails[_a] = { fqn: "@cdklabs/multi-az-observability.OperationAvailabilityMetricDetails", version: "0.0.1-alpha.40" };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9PcGVyYXRpb25BdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBSUEscUVBQWtFO0FBR2xFOztHQUVHO0FBQ0gsTUFBYSxrQ0FBbUMsU0FBUSwrQ0FBc0I7SUFnQjFFLFlBQ0ksS0FBOEMsRUFDOUMsWUFBK0M7UUFFL0MsS0FBSyxDQUFDLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUUzQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG1CQUFtQjtZQUN0RCxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQjtZQUMzQixDQUFDLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDO1FBRW5DLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUMscUJBQXFCO1lBQ3hELENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCO1lBQzdCLENBQUMsQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQUM7SUFDdkMsQ0FBQzs7QUE3QkwsZ0ZBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgfSBmcm9tIFwiLi9JT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1wiO1xuaW1wb3J0IHsgSVNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzIH0gZnJvbSBcIi4vSVNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNEZXRhaWxzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25NZXRyaWNEZXRhaWxzIH0gZnJvbSBcIi4vT3BlcmF0aW9uTWV0cmljRGV0YWlsc1wiO1xuaW1wb3J0IHsgT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1Byb3BzIH0gZnJvbSBcIi4vcHJvcHMvT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1Byb3BzXCI7XG5cbi8qKlxuICogQXZhaWxhYmlsaXR5IG1ldHJpYyBkZXRhaWxzIGZvciBhbiBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIE9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMgZXh0ZW5kcyBPcGVyYXRpb25NZXRyaWNEZXRhaWxzIGltcGxlbWVudHMgSU9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpY0RldGFpbHMge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRocmVzaG9sZCBmb3IgYWxhcm1zIGFzc29jaWF0ZWQgd2l0aCBhdmFpbGFiaWxpdHkgc3VjY2VzcyBtZXRyaWNzLCBmb3IgZXhhbXBsZSBpZiBtZWFzdXJpbmdcbiAgICAgKiBzdWNjZXNzIHJhdGUsIHRoZSB0aHJlc2hvbGQgbWF5IGJlIDk5LCBtZWFuaW5nIHlvdSB3b3VsZCB3YW50IGFuIGFsYXJtIHRoYXQgdHJpZ2dlcnNcbiAgICAgKiBpZiBzdWNjZXNzIGRyb3BzIGJlbG93IDk5JS5cbiAgICAgKi9cbiAgICByZWFkb25seSBzdWNjZXNzQWxhcm1UaHJlc2hvbGQ6IG51bWJlcjtcbiAgICBcbiAgICAvKipcbiAgICAgKiBUaGUgdGhyZXNob2xkIGZvciBhbGFybXMgYXNzb2NpYXRlZCB3aXRoIGF2YWlsYWJpbGl0eSBmYXVsdCBtZXRyaWNzLCBmb3IgZXhhbXBsZSBpZiBtZWFzdXJpbmdcbiAgICAgKiBmYXVsdCByYXRlLCB0aGUgdGhyZXNob2xkIG1heSBiZSAxLCBtZWFuaW5nIHlvdSB3b3VsZCB3YW50IGFuIGFsYXJtIHRoYXQgdHJpZ2dlcnNcbiAgICAgKiBpZiB0aGUgZmF1bHQgcmF0ZSBnb2VzIGFib3ZlIDElLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGZhdWx0QWxhcm1UaHJlc2hvbGQ6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm9wczogT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlsc1Byb3BzLFxuICAgICAgICBkZWZhdWx0UHJvcHM6IElTZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljRGV0YWlscyxcbiAgICApIHtcbiAgICAgICAgc3VwZXIocHJvcHMsIGRlZmF1bHRQcm9wcyk7XG5cbiAgICAgICAgdGhpcy5mYXVsdEFsYXJtVGhyZXNob2xkID0gcHJvcHMuZmF1bHRBbGFybVRocmVzaG9sZFxuICAgICAgPyBwcm9wcy5mYXVsdEFsYXJtVGhyZXNob2xkXG4gICAgICA6IGRlZmF1bHRQcm9wcy5mYXVsdEFsYXJtVGhyZXNob2xkO1xuXG4gICAgICB0aGlzLnN1Y2Nlc3NBbGFybVRocmVzaG9sZCA9IHByb3BzLnN1Y2Nlc3NBbGFybVRocmVzaG9sZFxuICAgICAgPyBwcm9wcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGRcbiAgICAgIDogZGVmYXVsdFByb3BzLnN1Y2Nlc3NBbGFybVRocmVzaG9sZDtcbiAgICB9XG59Il19
@@ -0,0 +1,16 @@
1
+ import { Duration } from "aws-cdk-lib";
2
+ import { IOperationLatencyMetricDetails } from "./IOperationLatencyMetricDetails";
3
+ import { OperationLatencyMetricDetailsProps } from "./props/OperationLatencyMetricDetailsProps";
4
+ import { OperationMetricDetails } from "./OperationMetricDetails";
5
+ import { IServiceLatencyMetricDetails } from "./IServiceLatencyMetricDetails";
6
+ /**
7
+ * Latency metric details for an operation
8
+ */
9
+ export declare class OperationLatencyMetricDetails extends OperationMetricDetails implements IOperationLatencyMetricDetails {
10
+ /**
11
+ * The threshold for alarms associated with latency success metrics, for example if success
12
+ * latency exceeds 500 milliseconds
13
+ */
14
+ readonly successAlarmThreshold: Duration;
15
+ constructor(props: OperationLatencyMetricDetailsProps, defaultProps: IServiceLatencyMetricDetails);
16
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OperationLatencyMetricDetails = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const OperationMetricDetails_1 = require("./OperationMetricDetails");
7
+ /**
8
+ * Latency metric details for an operation
9
+ */
10
+ class OperationLatencyMetricDetails extends OperationMetricDetails_1.OperationMetricDetails {
11
+ constructor(props, defaultProps) {
12
+ super(props, defaultProps);
13
+ this.successAlarmThreshold = props.successAlarmThreshold
14
+ ? props.successAlarmThreshold
15
+ : defaultProps.successAlarmThreshold;
16
+ }
17
+ }
18
+ exports.OperationLatencyMetricDetails = OperationLatencyMetricDetails;
19
+ _a = JSII_RTTI_SYMBOL_1;
20
+ OperationLatencyMetricDetails[_a] = { fqn: "@cdklabs/multi-az-observability.OperationLatencyMetricDetails", version: "0.0.1-alpha.40" };
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSxxRUFBa0U7QUFHbEU7O0dBRUc7QUFDSCxNQUFhLDZCQUE4QixTQUFRLCtDQUFzQjtJQVFyRSxZQUNJLEtBQXlDLEVBQ3pDLFlBQTBDO1FBRTFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxxQkFBcUI7WUFDeEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxxQkFBcUI7WUFDN0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQztJQUN2QyxDQUFDOztBQWpCTCxzRUFrQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSU9wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzIH0gZnJvbSBcIi4vSU9wZXJhdGlvbkxhdGVuY3lNZXRyaWNEZXRhaWxzXCI7XG5pbXBvcnQgeyBPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlsc1Byb3BzIH0gZnJvbSBcIi4vcHJvcHMvT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHNQcm9wc1wiO1xuaW1wb3J0IHsgT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gXCIuL09wZXJhdGlvbk1ldHJpY0RldGFpbHNcIjtcbmltcG9ydCB7IElTZXJ2aWNlTGF0ZW5jeU1ldHJpY0RldGFpbHMgfSBmcm9tIFwiLi9JU2VydmljZUxhdGVuY3lNZXRyaWNEZXRhaWxzXCI7XG5cbi8qKlxuICogTGF0ZW5jeSBtZXRyaWMgZGV0YWlscyBmb3IgYW4gb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25MYXRlbmN5TWV0cmljRGV0YWlscyBleHRlbmRzIE9wZXJhdGlvbk1ldHJpY0RldGFpbHMgaW1wbGVtZW50cyBJT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHMge1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRocmVzaG9sZCBmb3IgYWxhcm1zIGFzc29jaWF0ZWQgd2l0aCBsYXRlbmN5IHN1Y2Nlc3MgbWV0cmljcywgZm9yIGV4YW1wbGUgaWYgc3VjY2Vzc1xuICAgICAqIGxhdGVuY3kgZXhjZWVkcyA1MDAgbWlsbGlzZWNvbmRzXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3VjY2Vzc0FsYXJtVGhyZXNob2xkOiBEdXJhdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm9wczogT3BlcmF0aW9uTGF0ZW5jeU1ldHJpY0RldGFpbHNQcm9wcyxcbiAgICAgICAgZGVmYXVsdFByb3BzOiBJU2VydmljZUxhdGVuY3lNZXRyaWNEZXRhaWxzLFxuICAgICkge1xuICAgICAgICBzdXBlcihwcm9wcywgZGVmYXVsdFByb3BzKTtcblxuICAgICAgdGhpcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQgPSBwcm9wcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGRcbiAgICAgID8gcHJvcHMuc3VjY2Vzc0FsYXJtVGhyZXNob2xkXG4gICAgICA6IGRlZmF1bHRQcm9wcy5zdWNjZXNzQWxhcm1UaHJlc2hvbGQ7XG4gICAgfVxufSJdfQ==
@@ -7,7 +7,7 @@ import { OperationMetricDetailsProps } from './props/OperationMetricDetailsProps
7
7
  /**
8
8
  * Generic metric details for an operation
9
9
  */
10
- export declare class OperationMetricDetails implements IOperationMetricDetails {
10
+ export declare abstract class OperationMetricDetails implements IOperationMetricDetails {
11
11
  /**
12
12
  * The operation these metric details are for
13
13
  */
@@ -61,18 +61,6 @@ export declare class OperationMetricDetails implements IOperationMetricDetails {
61
61
  * The number of datapoints to alarm on for latency and availability alarms
62
62
  */
63
63
  readonly datapointsToAlarm: number;
64
- /**
65
- * The threshold for alarms associated with success metrics, for example if measuring
66
- * success rate, the threshold may be 99, meaning you would want an alarm that triggers
67
- * if success drops below 99%.
68
- */
69
- readonly successAlarmThreshold: number;
70
- /**
71
- * The threshold for alarms associated with fault metrics, for example if measuring
72
- * fault rate, the threshold may be 1, meaning you would want an alarm that triggers
73
- * if the fault rate goes above 1%.
74
- */
75
- readonly faultAlarmThreshold: number;
76
64
  /**
77
65
  * The metric dimensions for this operation, must be implemented
78
66
  * as a concrete class by the user