@rio-cloud/cdk-v2-constructs 2.5.8 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.jsii CHANGED
@@ -3977,7 +3977,7 @@
3977
3977
  },
3978
3978
  "locationInModule": {
3979
3979
  "filename": "src/datadog/datadogLogIndexMonitoring.ts",
3980
- "line": 64
3980
+ "line": 70
3981
3981
  },
3982
3982
  "parameters": [
3983
3983
  {
@@ -4003,7 +4003,7 @@
4003
4003
  "kind": "class",
4004
4004
  "locationInModule": {
4005
4005
  "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4006
- "line": 63
4006
+ "line": 69
4007
4007
  },
4008
4008
  "name": "DatadogLogIndexMonitoring",
4009
4009
  "symbolId": "src/datadog/datadogLogIndexMonitoring:DatadogLogIndexMonitoring"
@@ -4088,6 +4088,24 @@
4088
4088
  "primitive": "string"
4089
4089
  }
4090
4090
  },
4091
+ {
4092
+ "abstract": true,
4093
+ "docs": {
4094
+ "default": "- 'EU'",
4095
+ "stability": "stable",
4096
+ "summary": "The Datadog organization, e.g., 'EU' or 'LATAM'."
4097
+ },
4098
+ "immutable": true,
4099
+ "locationInModule": {
4100
+ "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4101
+ "line": 38
4102
+ },
4103
+ "name": "organization",
4104
+ "optional": true,
4105
+ "type": {
4106
+ "primitive": "string"
4107
+ }
4108
+ },
4091
4109
  {
4092
4110
  "abstract": true,
4093
4111
  "docs": {
@@ -4120,7 +4138,7 @@
4120
4138
  "kind": "interface",
4121
4139
  "locationInModule": {
4122
4140
  "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4123
- "line": 35
4141
+ "line": 41
4124
4142
  },
4125
4143
  "name": "DatadogLogQuotaProps",
4126
4144
  "properties": [
@@ -4134,7 +4152,7 @@
4134
4152
  "immutable": true,
4135
4153
  "locationInModule": {
4136
4154
  "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4137
- "line": 50
4155
+ "line": 56
4138
4156
  },
4139
4157
  "name": "alertThresholdInPercent",
4140
4158
  "type": {
@@ -4150,7 +4168,7 @@
4150
4168
  "immutable": true,
4151
4169
  "locationInModule": {
4152
4170
  "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4153
- "line": 39
4171
+ "line": 45
4154
4172
  },
4155
4173
  "name": "valueInMillionEvents",
4156
4174
  "type": {
@@ -4166,7 +4184,7 @@
4166
4184
  "immutable": true,
4167
4185
  "locationInModule": {
4168
4186
  "filename": "src/datadog/datadogLogIndexMonitoring.ts",
4169
- "line": 44
4187
+ "line": 50
4170
4188
  },
4171
4189
  "name": "warningThresholdInPercent",
4172
4190
  "type": {
@@ -4191,7 +4209,7 @@
4191
4209
  },
4192
4210
  "locationInModule": {
4193
4211
  "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4194
- "line": 37
4212
+ "line": 25
4195
4213
  },
4196
4214
  "parameters": [
4197
4215
  {
@@ -4217,7 +4235,7 @@
4217
4235
  "kind": "class",
4218
4236
  "locationInModule": {
4219
4237
  "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4220
- "line": 36
4238
+ "line": 24
4221
4239
  },
4222
4240
  "name": "DatadogUsageMonitoring",
4223
4241
  "symbolId": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring:DatadogUsageMonitoring"
@@ -4232,7 +4250,7 @@
4232
4250
  "kind": "interface",
4233
4251
  "locationInModule": {
4234
4252
  "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4235
- "line": 26
4253
+ "line": 14
4236
4254
  },
4237
4255
  "name": "DatadogUsageMonitoringProps",
4238
4256
  "properties": [
@@ -4244,7 +4262,7 @@
4244
4262
  "immutable": true,
4245
4263
  "locationInModule": {
4246
4264
  "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4247
- "line": 28
4265
+ "line": 16
4248
4266
  },
4249
4267
  "name": "alertType",
4250
4268
  "type": {
@@ -4259,7 +4277,7 @@
4259
4277
  "immutable": true,
4260
4278
  "locationInModule": {
4261
4279
  "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4262
- "line": 29
4280
+ "line": 17
4263
4281
  },
4264
4282
  "name": "organization",
4265
4283
  "type": {
@@ -4274,7 +4292,7 @@
4274
4292
  "immutable": true,
4275
4293
  "locationInModule": {
4276
4294
  "filename": "src/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.ts",
4277
- "line": 27
4295
+ "line": 15
4278
4296
  },
4279
4297
  "name": "serviceName",
4280
4298
  "type": {
@@ -8447,5 +8465,5 @@
8447
8465
  }
8448
8466
  },
8449
8467
  "version": "0.0.0",
8450
- "fingerprint": "OIkW1e+znFP7aRfsj3BMjhlsdgTx8lf1pc1HNxRZeq8="
8468
+ "fingerprint": "dc1LbEEhAJZAZkrbkORSSXzh1HnX8Yh9603ZQb+s8VQ="
8451
8469
  }
package/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [2.6.1](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.6.0&sourceBranch=refs%2Ftags%2Fv2.6.1) (2022-09-28)
6
+
7
+ ## [2.6.0](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.8&sourceBranch=refs%2Ftags%2Fv2.6.0) (2022-09-28)
8
+
9
+
10
+ ### Features
11
+
12
+ * **DatadogLogIndexMonitoring:** Allow adapting the Datadog organization ([aa0e59f](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/commits/aa0e59fa3696e10f3134ff51e869be6a1ab79065))
13
+
5
14
  ### [2.5.8](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.7&sourceBranch=refs%2Ftags%2Fv2.5.8) (2022-09-02)
6
15
 
7
16
  ### [2.5.7](https://collaboration.msi.audi.com/stash/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2Fv2.5.6&sourceBranch=refs%2Ftags%2Fv2.5.7) (2022-08-22)
@@ -1,6 +1,6 @@
1
1
  import * as constructs from 'constructs';
2
+ import { DatadogOrganization } from '../../../datadog';
2
3
  import { DatadogAlertType } from '../../../datadog/datadogMonitor';
3
- export declare type DatadogOrganization = 'EU' | 'LATAM' | 'Landing Zone';
4
4
  export interface DatadogUsageMonitoringProps {
5
5
  readonly serviceName: string;
6
6
  readonly alertType: DatadogAlertType;
@@ -6,18 +6,9 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const path = require("path");
7
7
  const ssm = require("aws-cdk-lib/aws-ssm");
8
8
  const constructs = require("constructs");
9
+ const datadog_1 = require("../../../datadog");
9
10
  const datadogMonitor_1 = require("../../../datadog/datadogMonitor");
10
11
  const rio_claidometer_1 = require("../../../rio-claidometer");
11
- function getOrganizationUrlPrefix(organization) {
12
- switch (organization) {
13
- case 'EU':
14
- return 'app';
15
- case 'LATAM':
16
- return 'rio-brazil';
17
- case 'Landing Zone':
18
- return 'rio-landingzone';
19
- }
20
- }
21
12
  /**
22
13
  * This is a beta construct and is likely to have breaking changes.
23
14
  * The construct creates monitoring (based on anomaly detection) for the usage of the most relevant Datadog resources
@@ -46,8 +37,8 @@ class DatadogUsageMonitoring extends constructs.Construct {
46
37
  query: 'sum:datadog.estimated_usage.metrics.custom{*} by {child_org_name}',
47
38
  },
48
39
  ];
49
- const additionalMessageLogManagementForGloballyScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage for more details.`;
50
- const additionalMessageLogManagementForLogIndexScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage?tpl_var_datadog_index={{datadog_index.name}} for more details.`;
40
+ const additionalMessageLogManagementForGloballyScopedMonitors = `Take a look at https://${datadog_1.getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage for more details.`;
41
+ const additionalMessageLogManagementForLogIndexScopedMonitors = `Take a look at https://${datadog_1.getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/465/log-management-estimated-usage?tpl_var_datadog_index={{datadog_index.name}} for more details.`;
51
42
  const logManagementUsageSpikeMonitors = [
52
43
  {
53
44
  humanReadableName: 'log ingestion',
@@ -70,8 +61,8 @@ class DatadogUsageMonitoring extends constructs.Construct {
70
61
  additionalMessage: additionalMessageLogManagementForLogIndexScopedMonitors,
71
62
  },
72
63
  ];
73
- const additionalMessageApmForGloballyScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage for more details.`;
74
- const additionalMessageApmForEnvScopedMonitors = `Take a look at https://${getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage?tpl_var_env={{env.name}} for more details.`;
64
+ const additionalMessageApmForGloballyScopedMonitors = `Take a look at https://${datadog_1.getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage for more details.`;
65
+ const additionalMessageApmForEnvScopedMonitors = `Take a look at https://${datadog_1.getOrganizationUrlPrefix(props.organization)}.datadoghq.eu/dash/integration/489/apm-traces-estimated-usage?tpl_var_env={{env.name}} for more details.`;
75
66
  const apmUsageSpikeMonitors = [
76
67
  { humanReadableName: 'APM hosts', query: 'sum:datadog.estimated_usage.apm_hosts{*}' },
77
68
  {
@@ -118,7 +109,9 @@ class DatadogUsageMonitoring extends constructs.Construct {
118
109
  for (const usageSpikeMonitor of [].concat(infrastructureUsageSpikeMonitors, logManagementUsageSpikeMonitors, apmUsageSpikeMonitors, serverlessUsageSpikeMonitors, syntheticUsageSpikeMonitors)) {
119
110
  this.createAnomalyMonitorForSpikes(props.serviceName, teamName, props.alertType, usageSpikeMonitor);
120
111
  }
121
- addClaidometer(this);
112
+ if (props.organization === 'EU') {
113
+ addClaidometer(this);
114
+ }
122
115
  }
123
116
  createAnomalyMonitorForSpikes(serviceName, teamName, alertType, usageSpikeMonitor) {
124
117
  var _b;
@@ -158,4 +151,4 @@ function addClaidometer(scope) {
158
151
  version: '0.0.7',
159
152
  });
160
153
  }
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsb0VBQW1GO0FBQ25GLDhEQUEyRTtBQUkzRSxTQUFTLHdCQUF3QixDQUFDLFlBQWlDO0lBQ2pFLFFBQVEsWUFBWSxFQUFFO1FBQ3BCLEtBQUssSUFBSTtZQUNQLE9BQU8sS0FBSyxDQUFDO1FBQ2YsS0FBSyxPQUFPO1lBQ1YsT0FBTyxZQUFZLENBQUM7UUFDdEIsS0FBSyxjQUFjO1lBQ2pCLE9BQU8saUJBQWlCLENBQUM7S0FDNUI7QUFDSCxDQUFDO0FBY0Q7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxVQUFVLENBQUMsU0FBUztJQUM5RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWhILE1BQU0sZ0NBQWdDLEdBQXdCO1lBQzVEO2dCQUNFLGlCQUFpQixFQUFFLHNCQUFzQjtnQkFDekMsS0FBSyxFQUFFLHNDQUFzQzthQUM5QztZQUNEO2dCQUNFLGlCQUFpQixFQUFFLG9EQUFvRDtnQkFDdkUsS0FBSyxFQUFFLDBEQUEwRDthQUNsRTtZQUNELEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSwwQ0FBMEMsRUFBRTtZQUN6RixFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRTtZQUMxRjtnQkFDRSxpQkFBaUIsRUFBRSxnQkFBZ0I7Z0JBQ25DLEtBQUssRUFBRSwrQ0FBK0M7YUFDdkQ7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSw4Q0FBOEM7Z0JBQ2pFLEtBQUssRUFBRSxtRUFBbUU7YUFDM0U7U0FDRixDQUFDO1FBRUYsTUFBTSx1REFBdUQsR0FBRywwQkFBMEIsd0JBQXdCLENBQ2hILEtBQUssQ0FBQyxZQUFZLENBQ25CLHFGQUFxRixDQUFDO1FBQ3ZGLE1BQU0sdURBQXVELEdBQUcsMEJBQTBCLHdCQUF3QixDQUNoSCxLQUFLLENBQUMsWUFBWSxDQUNuQixrSUFBa0ksQ0FBQztRQUNwSSxNQUFNLCtCQUErQixHQUF3QjtZQUMzRDtnQkFDRSxpQkFBaUIsRUFBRSxlQUFlO2dCQUNsQyxLQUFLLEVBQUUsK0RBQStEO2dCQUN0RSxpQkFBaUIsRUFBRSx1REFBdUQ7YUFDM0U7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSw0Q0FBNEM7Z0JBQy9ELEtBQUssRUFBRSxrRkFBa0Y7Z0JBQ3pGLGlCQUFpQixFQUFFLHVEQUF1RDthQUMzRTtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLGNBQWM7Z0JBQ2pDLEtBQUssRUFBRSx3RkFBd0Y7Z0JBQy9GLGlCQUFpQixFQUFFLHVEQUF1RDthQUMzRTtZQUNEO2dCQUNFLGlCQUFpQixFQUFFLDJDQUEyQztnQkFDOUQsS0FBSyxFQUFFLDJHQUEyRztnQkFDbEgsaUJBQWlCLEVBQUUsdURBQXVEO2FBQzNFO1NBQ0YsQ0FBQztRQUVGLE1BQU0sNkNBQTZDLEdBQUcsMEJBQTBCLHdCQUF3QixDQUN0RyxLQUFLLENBQUMsWUFBWSxDQUNuQixpRkFBaUYsQ0FBQztRQUNuRixNQUFNLHdDQUF3QyxHQUFHLDBCQUEwQix3QkFBd0IsQ0FDakcsS0FBSyxDQUFDLFlBQVksQ0FDbkIsMEdBQTBHLENBQUM7UUFDNUcsTUFBTSxxQkFBcUIsR0FBd0I7WUFDakQsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLDBDQUEwQyxFQUFFO1lBQ3JGO2dCQUNFLGlCQUFpQixFQUFFLHlDQUF5QztnQkFDNUQsS0FBSyxFQUFFLDhEQUE4RDtnQkFDckUsaUJBQWlCLEVBQUUsNkNBQTZDO2FBQ2pFO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsZ0JBQWdCO2dCQUNuQyxLQUFLLEVBQUUsOERBQThEO2FBQ3RFO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsbUNBQW1DO2dCQUN0RCxLQUFLLEVBQUUsdUVBQXVFO2dCQUM5RSxpQkFBaUIsRUFBRSx3Q0FBd0M7YUFDNUQ7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSxlQUFlO2dCQUNsQyxLQUFLLEVBQUUsNkRBQTZEO2dCQUNwRSxpQkFBaUIsRUFBRSw2Q0FBNkM7YUFDakU7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSxrQ0FBa0M7Z0JBQ3JELEtBQUssRUFBRSxzRUFBc0U7Z0JBQzdFLGlCQUFpQixFQUFFLHdDQUF3QzthQUM1RDtTQUNGLENBQUM7UUFFRixNQUFNLDJCQUEyQixHQUF3QjtZQUN2RDtnQkFDRSxpQkFBaUIsRUFBRSxxQkFBcUI7Z0JBQ3hDLEtBQUssRUFBRSxvRUFBb0U7YUFDNUU7U0FDRixDQUFDO1FBRUYsTUFBTSw0QkFBNEIsR0FBd0I7WUFDeEQ7Z0JBQ0UsaUJBQWlCLEVBQUUsc0JBQXNCO2dCQUN6QyxLQUFLLEVBQUUsZ0VBQWdFO2FBQ3hFO1lBQ0Q7Z0JBQ0UsaUJBQWlCLEVBQUUsb0RBQW9EO2dCQUN2RSxLQUFLLEVBQUUsb0ZBQW9GO2FBQzVGO1NBQ0YsQ0FBQztRQUVGLEtBQUssTUFBTSxpQkFBaUIsSUFBSyxFQUEwQixDQUFDLE1BQU0sQ0FDaEUsZ0NBQWdDLEVBQ2hDLCtCQUErQixFQUMvQixxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLDJCQUEyQixDQUM1QixFQUFFO1lBQ0QsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztTQUNyRztRQUVELGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRU8sNkJBQTZCLENBQ25DLFdBQW1CLEVBQ25CLFFBQWdCLEVBQ2hCLFNBQTJCLEVBQzNCLGlCQUFvQzs7UUFFcEMsT0FBTyxJQUFJLCtCQUFjLENBQUMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFO1lBQ25FLFdBQVc7WUFDWCxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7WUFDdkIsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxHQUFHLGlCQUFpQixDQUFDLGlCQUFpQixRQUFRO2dCQUNwRCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsS0FBSyxFQUFFLDJCQUEyQixpQkFBaUIsQ0FBQyxLQUFLLHlKQUF5SjtnQkFDbE4sT0FBTyxFQUFFLFFBQVEsaUJBQWlCLENBQUMsaUJBQWlCLGdDQUNsRCxNQUFBLGlCQUFpQixDQUFDLGlCQUFpQixtQ0FBSSxFQUN6QyxFQUFFO2dCQUNGLE9BQU8sRUFBRTtvQkFDUCxZQUFZLEVBQUUsS0FBSztvQkFDbkIsY0FBYyxFQUFFLEtBQUs7b0JBQ3JCLGlCQUFpQixFQUFFO3dCQUNqQixjQUFjLEVBQUUsVUFBVTt3QkFDMUIsZUFBZSxFQUFFLFVBQVU7cUJBQzVCO2lCQUNGO2dCQUNELElBQUksRUFBRTtvQkFDSixXQUFXLFdBQVcsRUFBRTtvQkFDeEIsUUFBUSxRQUFRLEVBQUU7aUJBQ25CO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXZKSCx3REF3SkM7OztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQTJCO0lBQ2pELE1BQU0sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkUsSUFBSSw2QkFBVyxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7UUFDcEMsT0FBTyxFQUFFLG9DQUFrQixDQUFDLGdCQUFnQjtRQUM1QyxXQUFXO1FBQ1gsT0FBTztRQUNQLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dBbGVydFR5cGUsIERhdGFkb2dNb25pdG9yIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZy9kYXRhZG9nTW9uaXRvcic7XG5pbXBvcnQgeyBDbGFpZG9tZXRlciwgQ2xhaWRvbWV0ZXJQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vcmlvLWNsYWlkb21ldGVyJztcblxuZXhwb3J0IHR5cGUgRGF0YWRvZ09yZ2FuaXphdGlvbiA9ICdFVScgfCAnTEFUQU0nIHwgJ0xhbmRpbmcgWm9uZSc7XG5cbmZ1bmN0aW9uIGdldE9yZ2FuaXphdGlvblVybFByZWZpeChvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb24pOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9yZ2FuaXphdGlvbikge1xuICAgIGNhc2UgJ0VVJzpcbiAgICAgIHJldHVybiAnYXBwJztcbiAgICBjYXNlICdMQVRBTSc6XG4gICAgICByZXR1cm4gJ3Jpby1icmF6aWwnO1xuICAgIGNhc2UgJ0xhbmRpbmcgWm9uZSc6XG4gICAgICByZXR1cm4gJ3Jpby1sYW5kaW5nem9uZSc7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFVzYWdlU3Bpa2VNb25pdG9yIHtcbiAgaHVtYW5SZWFkYWJsZU5hbWU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWRkaXRpb25hbE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIGJldGEgY29uc3RydWN0IGFuZCBpcyBsaWtlbHkgdG8gaGF2ZSBicmVha2luZyBjaGFuZ2VzLlxuICogVGhlIGNvbnN0cnVjdCBjcmVhdGVzIG1vbml0b3JpbmcgKGJhc2VkIG9uIGFub21hbHkgZGV0ZWN0aW9uKSBmb3IgdGhlIHVzYWdlIG9mIHRoZSBtb3N0IHJlbGV2YW50IERhdGFkb2cgcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdGVhbU5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtTmFtZScsICcvY29uZmlnL3RlYW0vbmFtZScpLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnaW5mcmFzdHJ1Y3R1cmUgaG9zdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJpbmZyYXN0cnVjdHVyZSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuYXBtLmZhcmdhdGVfdGFza19pbnN0YW5jZXsqfScgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdwcm9maWxlZCBGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5wcm9maWxpbmcuZmFyZ2F0ZXsqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdjdXN0b20gbWV0cmljcycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImN1c3RvbSBtZXRyaWNzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ2NS9sb2ctbWFuYWdlbWVudC1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80NjUvbG9nLW1hbmFnZW1lbnQtZXN0aW1hdGVkLXVzYWdlP3RwbF92YXJfZGF0YWRvZ19pbmRleD17e2RhdGFkb2dfaW5kZXgubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBsb2dNYW5hZ2VtZW50VXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmdlc3Rpb24nLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmdlc3Rpb24gZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmRleGluZycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmRleGluZyBmb3IgJ3t7ZGF0YWRvZ19pbmRleC5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9lbnY9e3tlbnYubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhcG1Vc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnQVBNIGhvc3RzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9JyB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJBUE0gaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5nZXN0aW9uIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5nZXN0ZWRfYnl0ZXN7Kn0gYnkge2Vudn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZGV4ZWRfc3BhbnN7Kn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzcGFuIGluZGV4aW5nIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnU3ludGhldGljIEFQSSB0ZXN0cycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnN5bnRoZXRpY3MuYXBpX3Rlc3RfcnVuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc2VydmVybGVzcyBmdW5jdGlvbnMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zZXJ2ZXJsZXNzLmF3c19sYW1iZGFfZnVuY3Rpb25zeyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNlcnZlcmxlc3MgZnVuY3Rpb25zIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IHVzYWdlU3Bpa2VNb25pdG9yIG9mIChbXSBhcyBVc2FnZVNwaWtlTW9uaXRvcltdKS5jb25jYXQoXG4gICAgICBpbmZyYXN0cnVjdHVyZVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBhcG1Vc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzZXJ2ZXJsZXNzVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgc3ludGhldGljVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICkpIHtcbiAgICAgIHRoaXMuY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMocHJvcHMuc2VydmljZU5hbWUsIHRlYW1OYW1lLCBwcm9wcy5hbGVydFR5cGUsIHVzYWdlU3Bpa2VNb25pdG9yKTtcbiAgICB9XG5cbiAgICBhZGRDbGFpZG9tZXRlcih0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMoXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICB0ZWFtTmFtZTogc3RyaW5nLFxuICAgIGFsZXJ0VHlwZTogRGF0YWRvZ0FsZXJ0VHlwZSxcbiAgICB1c2FnZVNwaWtlTW9uaXRvcjogVXNhZ2VTcGlrZU1vbml0b3IsXG4gICk6IERhdGFkb2dNb25pdG9yIHtcbiAgICByZXR1cm4gbmV3IERhdGFkb2dNb25pdG9yKHRoaXMsIHVzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lLCB7XG4gICAgICBzZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFthbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHt1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZX0gc3Bpa2VgLFxuICAgICAgICB0eXBlOiAncXVlcnkgYWxlcnQnLFxuICAgICAgICBxdWVyeTogYGF2ZyhsYXN0XzEyaCk6YW5vbWFsaWVzKCR7dXNhZ2VTcGlrZU1vbml0b3IucXVlcnl9LCAnYWdpbGUnLCAzLCBkaXJlY3Rpb249J2Fib3ZlJywgaW50ZXJ2YWw9MTIwLCBhbGVydF93aW5kb3c9J2xhc3RfMzBtJywgc2Vhc29uYWxpdHk9J3dlZWtseScsIHRpbWV6b25lPSdldXJvcGUvYmVybGluJywgY291bnRfZGVmYXVsdF96ZXJvPSd0cnVlJykgPj0gMWAsXG4gICAgICAgIG1lc3NhZ2U6IGBbUDRdICR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IGFyZSBnZXR0aW5nIG91dC1vZi1jb250cm9sLiAke1xuICAgICAgICAgIHVzYWdlU3Bpa2VNb25pdG9yLmFkZGl0aW9uYWxNZXNzYWdlID8/ICcnXG4gICAgICAgIH1gLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgaW5jbHVkZV90YWdzOiBmYWxzZSxcbiAgICAgICAgICBub3RpZnlfbm9fZGF0YTogZmFsc2UsXG4gICAgICAgICAgdGhyZXNob2xkX3dpbmRvd3M6IHtcbiAgICAgICAgICAgIHRyaWdnZXJfd2luZG93OiAnbGFzdF8zMG0nLFxuICAgICAgICAgICAgcmVjb3Zlcnlfd2luZG93OiAnbGFzdF8xNW0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICBgc2VydmljZToke3NlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgYHRlYW06JHt0ZWFtTmFtZX1gLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDbGFpZG9tZXRlcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgY29uc3QgW2ZlYXR1cmUsIHBhY2thZ2VOYW1lXSA9IF9fZGlybmFtZS5zcGxpdChwYXRoLnNlcCkucmV2ZXJzZSgpO1xuICBuZXcgQ2xhaWRvbWV0ZXIoc2NvcGUsICdDbGFpZG9tZXRlcicsIHtcbiAgICBwcm9kdWN0OiBDbGFpZG9tZXRlclByb2R1Y3QuQ0RLX0NPTlRSSUJVVElPTixcbiAgICBwYWNrYWdlTmFtZSxcbiAgICBmZWF0dXJlLFxuICAgIHZlcnNpb246ICcwLjAuNycsXG4gIH0pO1xufVxuIl19
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS1jbGFpZC9kYXRhZG9nLXVzYWdlLW1vbml0b3JpbmcvZGF0YWRvZy11c2FnZS1tb25pdG9yaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLDJDQUEyQztBQUMzQyx5Q0FBeUM7QUFDekMsOENBQWlGO0FBQ2pGLG9FQUFtRjtBQUNuRiw4REFBMkU7QUFjM0U7OztHQUdHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxVQUFVLENBQUMsU0FBUztJQUM5RCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQWtDO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBRWhILE1BQU0sZ0NBQWdDLEdBQXdCO1lBQzVEO2dCQUNFLGlCQUFpQixFQUFFLHNCQUFzQjtnQkFDekMsS0FBSyxFQUFFLHNDQUFzQzthQUM5QztZQUNEO2dCQUNFLGlCQUFpQixFQUFFLG9EQUFvRDtnQkFDdkUsS0FBSyxFQUFFLDBEQUEwRDthQUNsRTtZQUNELEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSwwQ0FBMEMsRUFBRTtZQUN6RixFQUFFLGlCQUFpQixFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRTtZQUMxRjtnQkFDRSxpQkFBaUIsRUFBRSxnQkFBZ0I7Z0JBQ25DLEtBQUssRUFBRSwrQ0FBK0M7YUFDdkQ7WUFDRDtnQkFDRSxpQkFBaUIsRUFBRSw4Q0FBOEM7Z0JBQ2pFLEtBQUssRUFBRSxtRUFBbUU7YUFDM0U7U0FDRixDQUFDO1FBRUYs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YyxDQUFDLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxpQkFBaUIsRUFBRTtZQUNuRSxXQUFXO1lBQ1gsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxpQkFBaUIsUUFBUTtnQkFDcEQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLEtBQUssRUFBRSwyQkFBMkIsaUJBQWlCLENBQUMsS0FBSyx5SkFBeUo7Z0JBQ2xOLE9BQU8sRUFBRSxRQUFRLGlCQUFpQixDQUFDLGlCQUFpQixnQ0FDbEQsTUFBQSxpQkFBaUIsQ0FBQyxpQkFBaUIsbUNBQUksRUFDekMsRUFBRTtnQkFDRixPQUFPLEVBQUU7b0JBQ1AsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLGNBQWMsRUFBRSxLQUFLO29CQUNyQixpQkFBaUIsRUFBRTt3QkFDakIsY0FBYyxFQUFFLFVBQVU7d0JBQzFCLGVBQWUsRUFBRSxVQUFVO3FCQUM1QjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osV0FBVyxXQUFXLEVBQUU7b0JBQ3hCLFFBQVEsUUFBUSxFQUFFO2lCQUNuQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF6Skgsd0RBMEpDOzs7QUFFRCxTQUFTLGNBQWMsQ0FBQyxLQUEyQjtJQUNqRCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25FLElBQUksNkJBQVcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO1FBQ3BDLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7UUFDNUMsV0FBVztRQUNYLE9BQU87UUFDUCxPQUFPLEVBQUUsT0FBTztLQUNqQixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEYXRhZG9nT3JnYW5pemF0aW9uLCBnZXRPcmdhbml6YXRpb25VcmxQcmVmaXggfSBmcm9tICcuLi8uLi8uLi9kYXRhZG9nJztcbmltcG9ydCB7IERhdGFkb2dBbGVydFR5cGUsIERhdGFkb2dNb25pdG9yIH0gZnJvbSAnLi4vLi4vLi4vZGF0YWRvZy9kYXRhZG9nTW9uaXRvcic7XG5pbXBvcnQgeyBDbGFpZG9tZXRlciwgQ2xhaWRvbWV0ZXJQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vcmlvLWNsYWlkb21ldGVyJztcblxuaW50ZXJmYWNlIFVzYWdlU3Bpa2VNb25pdG9yIHtcbiAgaHVtYW5SZWFkYWJsZU5hbWU6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgYWRkaXRpb25hbE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ1VzYWdlTW9uaXRvcmluZ1Byb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlO1xuICByZWFkb25seSBvcmdhbml6YXRpb246IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbi8qKlxuICogVGhpcyBpcyBhIGJldGEgY29uc3RydWN0IGFuZCBpcyBsaWtlbHkgdG8gaGF2ZSBicmVha2luZyBjaGFuZ2VzLlxuICogVGhlIGNvbnN0cnVjdCBjcmVhdGVzIG1vbml0b3JpbmcgKGJhc2VkIG9uIGFub21hbHkgZGV0ZWN0aW9uKSBmb3IgdGhlIHVzYWdlIG9mIHRoZSBtb3N0IHJlbGV2YW50IERhdGFkb2cgcmVzb3VyY2VzXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nVXNhZ2VNb25pdG9yaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgdGVhbU5hbWUgPSBzc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsICdUZWFtTmFtZScsICcvY29uZmlnL3RlYW0vbmFtZScpLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgaW5mcmFzdHJ1Y3R1cmVVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnaW5mcmFzdHJ1Y3R1cmUgaG9zdHMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJpbmZyYXN0cnVjdHVyZSBob3N0cyBmb3IgJ3t7Y2hpbGRfb3JnX25hbWUubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5ob3N0c3sqfSBieSB7Y2hpbGRfb3JnX25hbWV9JyxcbiAgICAgIH0sXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnRmFyZ2F0ZSB0YXNrcycsIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuYXBtLmZhcmdhdGVfdGFza19pbnN0YW5jZXsqfScgfSxcbiAgICAgIHsgaHVtYW5SZWFkYWJsZU5hbWU6ICdwcm9maWxlZCBGYXJnYXRlIHRhc2tzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5wcm9maWxpbmcuZmFyZ2F0ZXsqfScgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdjdXN0b20gbWV0cmljcycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImN1c3RvbSBtZXRyaWNzIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLm1ldHJpY3MuY3VzdG9teyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3QgYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyA9IGBUYWtlIGEgbG9vayBhdCBodHRwczovLyR7Z2V0T3JnYW5pemF0aW9uVXJsUHJlZml4KFxuICAgICAgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICl9LmRhdGFkb2docS5ldS9kYXNoL2ludGVncmF0aW9uLzQ2NS9sb2ctbWFuYWdlbWVudC1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80NjUvbG9nLW1hbmFnZW1lbnQtZXN0aW1hdGVkLXVzYWdlP3RwbF92YXJfZGF0YWRvZ19pbmRleD17e2RhdGFkb2dfaW5kZXgubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBsb2dNYW5hZ2VtZW50VXNhZ2VTcGlrZU1vbml0b3JzOiBVc2FnZVNwaWtlTW9uaXRvcltdID0gW1xuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmdlc3Rpb24nLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmdlc3Rpb24gZm9yICd7e2RhdGFkb2dfaW5kZXgubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2J5dGVzeyp9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogJ2xvZyBpbmRleGluZycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9LmFzX2NvdW50KCknLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VMb2dNYW5hZ2VtZW50Rm9yR2xvYmFsbHlTY29wZWRNb25pdG9ycyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcImxvZyBpbmRleGluZyBmb3IgJ3t7ZGF0YWRvZ19pbmRleC5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2V9IGJ5IHtkYXRhZG9nX2luZGV4fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlTG9nTWFuYWdlbWVudEZvckxvZ0luZGV4U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2UgZm9yIG1vcmUgZGV0YWlscy5gO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMgPSBgVGFrZSBhIGxvb2sgYXQgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChcbiAgICAgIHByb3BzLm9yZ2FuaXphdGlvbixcbiAgICApfS5kYXRhZG9naHEuZXUvZGFzaC9pbnRlZ3JhdGlvbi80ODkvYXBtLXRyYWNlcy1lc3RpbWF0ZWQtdXNhZ2U/dHBsX3Zhcl9lbnY9e3tlbnYubmFtZX19IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICBjb25zdCBhcG1Vc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7IGh1bWFuUmVhZGFibGVOYW1lOiAnQVBNIGhvc3RzJywgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9JyB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJBUE0gaG9zdHMgZm9yICd7e2NoaWxkX29yZ19uYW1lLm5hbWV9fSdcIixcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtX2hvc3Rzeyp9IGJ5IHtjaGlsZF9vcmdfbmFtZX0nLFxuICAgICAgICBhZGRpdGlvbmFsTWVzc2FnZTogYWRkaXRpb25hbE1lc3NhZ2VBcG1Gb3JHbG9iYWxseVNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZ2VzdGlvbicsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmFwbS5pbmdlc3RlZF9ieXRlc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNwYW4gaW5nZXN0aW9uIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5nZXN0ZWRfYnl0ZXN7Kn0gYnkge2Vudn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckVudlNjb3BlZE1vbml0b3JzLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaHVtYW5SZWFkYWJsZU5hbWU6ICdzcGFuIGluZGV4aW5nJyxcbiAgICAgICAgcXVlcnk6ICdzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UuYXBtLmluZGV4ZWRfc3BhbnN7Kn0uYXNfY291bnQoKScsXG4gICAgICAgIGFkZGl0aW9uYWxNZXNzYWdlOiBhZGRpdGlvbmFsTWVzc2FnZUFwbUZvckdsb2JhbGx5U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBodW1hblJlYWRhYmxlTmFtZTogXCJzcGFuIGluZGV4aW5nIGZvciAne3tlbnYubmFtZX19J1wiLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5hcG0uaW5kZXhlZF9zcGFuc3sqfSBieSB7ZW52fS5hc19jb3VudCgpJyxcbiAgICAgICAgYWRkaXRpb25hbE1lc3NhZ2U6IGFkZGl0aW9uYWxNZXNzYWdlQXBtRm9yRW52U2NvcGVkTW9uaXRvcnMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBjb25zdCBzeW50aGV0aWNVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnU3ludGhldGljIEFQSSB0ZXN0cycsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnN5bnRoZXRpY3MuYXBpX3Rlc3RfcnVuc3sqfS5hc19jb3VudCgpJyxcbiAgICAgIH0sXG4gICAgXTtcblxuICAgIGNvbnN0IHNlcnZlcmxlc3NVc2FnZVNwaWtlTW9uaXRvcnM6IFVzYWdlU3Bpa2VNb25pdG9yW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiAnc2VydmVybGVzcyBmdW5jdGlvbnMnLFxuICAgICAgICBxdWVyeTogJ3N1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5zZXJ2ZXJsZXNzLmF3c19sYW1iZGFfZnVuY3Rpb25zeyp9JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGh1bWFuUmVhZGFibGVOYW1lOiBcInNlcnZlcmxlc3MgZnVuY3Rpb25zIGZvciAne3tjaGlsZF9vcmdfbmFtZS5uYW1lfX0nXCIsXG4gICAgICAgIHF1ZXJ5OiAnc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLnNlcnZlcmxlc3MuYXdzX2xhbWJkYV9mdW5jdGlvbnN7Kn0gYnkge2NoaWxkX29yZ19uYW1lfScsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICBmb3IgKGNvbnN0IHVzYWdlU3Bpa2VNb25pdG9yIG9mIChbXSBhcyBVc2FnZVNwaWtlTW9uaXRvcltdKS5jb25jYXQoXG4gICAgICBpbmZyYXN0cnVjdHVyZVVzYWdlU3Bpa2VNb25pdG9ycyxcbiAgICAgIGxvZ01hbmFnZW1lbnRVc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBhcG1Vc2FnZVNwaWtlTW9uaXRvcnMsXG4gICAgICBzZXJ2ZXJsZXNzVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICAgc3ludGhldGljVXNhZ2VTcGlrZU1vbml0b3JzLFxuICAgICkpIHtcbiAgICAgIHRoaXMuY3JlYXRlQW5vbWFseU1vbml0b3JGb3JTcGlrZXMocHJvcHMuc2VydmljZU5hbWUsIHRlYW1OYW1lLCBwcm9wcy5hbGVydFR5cGUsIHVzYWdlU3Bpa2VNb25pdG9yKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMub3JnYW5pemF0aW9uID09PSAnRVUnKSB7XG4gICAgICBhZGRDbGFpZG9tZXRlcih0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFub21hbHlNb25pdG9yRm9yU3Bpa2VzKFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgdGVhbU5hbWU6IHN0cmluZyxcbiAgICBhbGVydFR5cGU6IERhdGFkb2dBbGVydFR5cGUsXG4gICAgdXNhZ2VTcGlrZU1vbml0b3I6IFVzYWdlU3Bpa2VNb25pdG9yLFxuICApOiBEYXRhZG9nTW9uaXRvciB7XG4gICAgcmV0dXJuIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLCB1c2FnZVNwaWtlTW9uaXRvci5odW1hblJlYWRhYmxlTmFtZSwge1xuICAgICAgc2VydmljZU5hbWUsXG4gICAgICBhbGVydFR5cGVzOiBbYWxlcnRUeXBlXSxcbiAgICAgIG1vbml0b3I6IHtcbiAgICAgICAgbmFtZTogYCR7dXNhZ2VTcGlrZU1vbml0b3IuaHVtYW5SZWFkYWJsZU5hbWV9IHNwaWtlYCxcbiAgICAgICAgdHlwZTogJ3F1ZXJ5IGFsZXJ0JyxcbiAgICAgICAgcXVlcnk6IGBhdmcobGFzdF8xMmgpOmFub21hbGllcygke3VzYWdlU3Bpa2VNb25pdG9yLnF1ZXJ5fSwgJ2FnaWxlJywgMywgZGlyZWN0aW9uPSdhYm92ZScsIGludGVydmFsPTEyMCwgYWxlcnRfd2luZG93PSdsYXN0XzMwbScsIHNlYXNvbmFsaXR5PSd3ZWVrbHknLCB0aW1lem9uZT0nZXVyb3BlL2JlcmxpbicsIGNvdW50X2RlZmF1bHRfemVybz0ndHJ1ZScpID49IDFgLFxuICAgICAgICBtZXNzYWdlOiBgW1A0XSAke3VzYWdlU3Bpa2VNb25pdG9yLmh1bWFuUmVhZGFibGVOYW1lfSBhcmUgZ2V0dGluZyBvdXQtb2YtY29udHJvbC4gJHtcbiAgICAgICAgICB1c2FnZVNwaWtlTW9uaXRvci5hZGRpdGlvbmFsTWVzc2FnZSA/PyAnJ1xuICAgICAgICB9YCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGluY2x1ZGVfdGFnczogZmFsc2UsXG4gICAgICAgICAgbm90aWZ5X25vX2RhdGE6IGZhbHNlLFxuICAgICAgICAgIHRocmVzaG9sZF93aW5kb3dzOiB7XG4gICAgICAgICAgICB0cmlnZ2VyX3dpbmRvdzogJ2xhc3RfMzBtJyxcbiAgICAgICAgICAgIHJlY292ZXJ5X3dpbmRvdzogJ2xhc3RfMTVtJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgYHNlcnZpY2U6JHtzZXJ2aWNlTmFtZX1gLFxuICAgICAgICAgIGB0ZWFtOiR7dGVhbU5hbWV9YCxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYWRkQ2xhaWRvbWV0ZXIoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KSB7XG4gIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgbmV3IENsYWlkb21ldGVyKHNjb3BlLCAnQ2xhaWRvbWV0ZXInLCB7XG4gICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgcGFja2FnZU5hbWUsXG4gICAgZmVhdHVyZSxcbiAgICB2ZXJzaW9uOiAnMC4wLjcnLFxuICB9KTtcbn1cbiJdfQ==
@@ -24,6 +24,11 @@ export interface DatadogLogIndexMonitoringProps {
24
24
  * @default - false
25
25
  */
26
26
  readonly sparseLogging?: boolean;
27
+ /**
28
+ * The Datadog organization, e.g., 'EU' or 'LATAM'
29
+ * @default - 'EU'
30
+ */
31
+ readonly organization?: DatadogOrganization;
27
32
  }
28
33
  export interface DatadogLogQuotaProps {
29
34
  /**
@@ -53,3 +58,5 @@ export interface DatadogLogQuotaProps {
53
58
  export declare class DatadogLogIndexMonitoring extends Construct {
54
59
  constructor(scope: Construct, id: string, props: DatadogLogIndexMonitoringProps);
55
60
  }
61
+ export declare type DatadogOrganization = 'EU' | 'LATAM' | 'Landing Zone';
62
+ export declare function getOrganizationUrlPrefix(organization: DatadogOrganization | undefined): string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DatadogLogIndexMonitoring = void 0;
4
+ exports.getOrganizationUrlPrefix = exports.DatadogLogIndexMonitoring = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const constructs_1 = require("constructs");
7
7
  const datadogMonitor_1 = require("./datadogMonitor");
@@ -55,7 +55,7 @@ class DatadogLogDailyQuotaMonitor extends datadogMonitor_1.DatadogMonitor {
55
55
  name: `${commonMonitorNamePrefix(props.indexName)}: Log quota almost reached`,
56
56
  type: 'metric alert',
57
57
  query: `sum(last_1d):sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false,datadog_index:${props.indexName}}.as_count() >= ${alertThreshold}`,
58
- message: `[P3] Inspect your log volume at ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName)} or adapt the log quota at ${datadogLogsIndexesConfigurationDeepLink}`,
58
+ message: `[P3] Inspect your log volume at ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName, props.organization)} or adapt the log quota at ${datadogLogsIndexesConfigurationDeepLink(props.organization)}`,
59
59
  options: {
60
60
  thresholds: {
61
61
  critical: alertThreshold,
@@ -81,7 +81,7 @@ class DatadogLogsAnomalyMonitor extends datadogMonitor_1.DatadogMonitor {
81
81
  name: `${commonMonitorNamePrefix(props.indexName)}: Log amount is rising to unexpected levels`,
82
82
  type: 'metric alert',
83
83
  query: `avg(last_4h):anomalies(sum:datadog.estimated_usage.logs.ingested_events{datadog_is_excluded:false,datadog_index:${props.indexName}}.as_count(), 'robust', 2, direction='above', alert_window='last_15m', interval=60, count_default_zero='true', seasonality='weekly', timezone='europe/berlin') >= 1`,
84
- message: `[P4] Logs are getting out of control: ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName)}`,
84
+ message: `[P4] Logs are getting out of control: ${datadogLogsSearchWithIndexFilterDeepLink(props.indexName, props.organization)}`,
85
85
  options: {
86
86
  include_tags: false,
87
87
  notify_no_data: !props.sparseLogging,
@@ -106,7 +106,7 @@ class DatadogLogDailyQuotaReachedMonitor extends datadogMonitor_1.DatadogMonitor
106
106
  name: `${commonMonitorNamePrefix(props.indexName)}: Log quota reached`,
107
107
  type: 'event-v2 alert',
108
108
  query: `events("source:datadog datadog_index:${props.indexName} Daily quota reached").rollup("count").last("5m") > 0`,
109
- message: `[P2] The log quote for the index has been reached. If you do not increase the quota at ${datadogLogsIndexesConfigurationDeepLink}, no new logs will be indexed until the quota is reset at 2:00pm UTC.`,
109
+ message: `[P2] The log quote for the index has been reached. If you do not increase the quota at ${datadogLogsIndexesConfigurationDeepLink(props.organization)}, no new logs will be indexed until the quota is reset at 2:00pm UTC.`,
110
110
  options: {
111
111
  timeout_h: 24,
112
112
  thresholds: {
@@ -120,8 +120,21 @@ class DatadogLogDailyQuotaReachedMonitor extends datadogMonitor_1.DatadogMonitor
120
120
  });
121
121
  }
122
122
  }
123
- function datadogLogsSearchWithIndexFilterDeepLink(indexName) {
124
- return `https://app.datadoghq.eu/logs?index=${indexName}`;
123
+ function getOrganizationUrlPrefix(organization) {
124
+ switch (organization !== null && organization !== void 0 ? organization : 'EU') {
125
+ case 'EU':
126
+ return 'app';
127
+ case 'LATAM':
128
+ return 'rio-brazil';
129
+ case 'Landing Zone':
130
+ return 'rio-landingzone';
131
+ }
132
+ }
133
+ exports.getOrganizationUrlPrefix = getOrganizationUrlPrefix;
134
+ function datadogLogsSearchWithIndexFilterDeepLink(indexName, organization) {
135
+ return `https://${getOrganizationUrlPrefix(organization)}.datadoghq.eu/logs?index=${indexName}`;
136
+ }
137
+ function datadogLogsIndexesConfigurationDeepLink(organization) {
138
+ return `https://${getOrganizationUrlPrefix(organization)}.datadoghq.eu/logs/pipelines/indexes`;
125
139
  }
126
- const datadogLogsIndexesConfigurationDeepLink = 'https://app.datadoghq.eu/logs/pipelines/indexes';
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9nL2RhdGFkb2dMb2dJbmRleE1vbml0b3JpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBdUM7QUFDdkMscURBQW9FO0FBbURwRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHlCQUEwQixTQUFRLHNCQUFTO0lBQ3RELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDJCQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLHlCQUF5QixDQUFDLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLGtDQUFrQyxDQUFDLElBQUksRUFBRSxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU1RixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QixRQUFRLEVBQUUsR0FBYSxFQUFFO2dCQUN2QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLEVBQUU7b0JBQzVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztpQkFDMUY7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsRUFBRTtvQkFDeEcsTUFBTSxDQUFDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO2lCQUN4RjtnQkFDRCxJQUFJLEtBQUssQ0FBQyxhQUFh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QUFjLEVBQUUsVUFBVTt3QkFDMUIsZUFBZSxFQUFFLFVBQVU7cUJBQzVCO2lCQUNGO2dCQUNELElBQUksRUFBRTtvQkFDSixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUMvQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsTUFBTSxrQ0FBbUMsU0FBUSwrQkFBYztJQUM3RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXFDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDN0IsT0FBTyxFQUFFO2dCQUNQLElBQUksRUFBRSxHQUFHLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMscUJBQXFCO2dCQUN0RSxJQUFJLEVBQUUsZ0JBQWdCO2dCQUN0QixLQUFLLEVBQUUsd0NBQXdDLEtBQUssQ0FBQyxTQUFTLHVEQUF1RDtnQkFDckgsT0FBTyxFQUFFLDBGQUEwRix1Q0FBdUMsdUVBQXVFO2dCQUNqTixPQUFPLEVBQUU7b0JBQ1AsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsVUFBVSxFQUFFO3dCQUNWLFFBQVEsRUFBRSxDQUFDO3FCQUNaO2lCQUNGO2dCQUNELElBQUksRUFBRTtvQkFDSixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2lCQUMvQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsU0FBUyx3Q0FBd0MsQ0FBQyxTQUFpQjtJQUNqRSxPQUFPLHVDQUF1QyxTQUFTLEVBQUUsQ0FBQztBQUM1RCxDQUFDO0FBRUQsTUFBTSx1Q0FBdUMsR0FBRyxpREFBaUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ01vbml0b3IsIERhdGFkb2dBbGVydFR5cGUgfSBmcm9tICcuL2RhdGFkb2dNb25pdG9yJztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhZG9nTG9nSW5kZXhNb25pdG9yaW5nUHJvcHMge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB5b3VyIHNlcnZpY2UgaW4gRGF0YWRvZy4gQ2FuIGJlIHVzZWQgdG8gcXVlcnkgdGhlIG1vbml0b3JzLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIERhdGFkb2cgaW5kZXguXG4gICAqL1xuICByZWFkb25seSBpbmRleE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGludGVncmF0aW9uIHRvIHVzZSBmb3IgYWxlcnRpbmcuXG4gICAqIEZvciBPcHNHZW5pZSwgeW91IG5lZWQgdG8gaW5zdGFsbCBhbmQgY29uZmlndXJlIHRoZSAnb3BzZ2VuaWUtaW50ZWdyYXRpb24nIGFjY291bnQgbW9kdWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxlcnRUeXBlOiBEYXRhZG9nQWxlcnRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgZGFpbHkgbG9nIHF1b3RhIHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGFpbHlMb2dRdW90YTogRGF0YWRvZ0xvZ1F1b3RhUHJvcHM7XG5cbiAgLyoqXG4gICAqIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHVzZWQgaWYgdGhlcmUgaXMgbm8gbG9nIG1lc3NhZ2Ugd2l0aGluIDI0IGhvdXJzIG9yIG1pc3NpbmcgaGlzdG9yaWNhbCBkYXRhLlxuICAgKiBXaXRob3V0IHNldHRpbmcgdGhpcyB2YWx1ZSBpdCB3aWxsIGxlYWQgdG8gYW4gZW1wdHkgcmVzdWx0IGFuZCB0aGVyZWZvcmUgdHJpZ2dlciBhbiBhbGVydC5cbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3BhcnNlTG9nZ2luZz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ0xvZ1F1b3RhUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRhaWx5IGxvZyBxdW90YSBmb3IgdGhlIHRlYW0tc3BlY2lmaWMgaW5kZXggaW4gbWlsbGlvbiBldmVudHMuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZUluTWlsbGlvbkV2ZW50czogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgd2FybmluZyB0aHJlc2hvbGQgZm9yIHRoZSBkYWlseSBsb2cgcXVvdGEgbW9uaXRvciBpbiBwZXJjZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgd2FybmluZ1RocmVzaG9sZEluUGVyY2VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxhcm0gdGhyZXNob2xkIGZvciB0aGUgZGFpbHkgbG9nIHF1b3RhIG1vbml0b3IgaW4gcGVyY2VudC5cbiAgICogVGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAgYW5kIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgd2FybmluZyB0aHJlc2hvbGQuXG4gICAqL1xuICByZWFkb25seSBhbGVydFRocmVzaG9sZEluUGVyY2VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJhc2ljIG1vbml0b3JpbmcgYW5kIGFsZXJ0aW5nIGZvciBhIERhdGFkb2cgbG9ncyBpbmRleC5cbiAqIEl0IGZvbGxvd3MgdGhlIERhdGFkb2cgZ3VpZGUgYXQgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vbG9ncy9ndWlkZS9sb2dzLW1vbml0b3JzLW9uLXZvbHVtZXMvXG4gKiBhbmQgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBtb25pdG9ycy5cbiAqICAgMS4gQSBtZXRyaWMgYWxlcnQgdGhhdCBmaXJlcyB3aGVuIHlvdSByZWFjaCBhIGNlcnRhaW4gdGhyZXNob2xkIG9mIHlvdXIgZGFpbHkgbG9nIHF1b3RhLlxuICogICAyLiBBbiBhbm9tYWx5IG1vbml0b3IgdGhhdCBkZXRlY3RzIGxvZyBhbW91bnQgc3Bpa2VzLlxuICogICAzLiBBbiBldmVudCBhbGVydCB0aGF0IGZpcmVzIHdoZW4geW91IGhpdCB0aGUgZGFpbHkgbG9nIHF1b3RhLlxuICpcbiAqIEEgZGF0YWRvZyBsb2cgaW5kZXggaXMgdGVhbSBzcGVjaWZpYyBhbmQgdGh1cyB0aGUgbW9uaXRvciBuZWVkcyB0byBiZSBkZXBsb3llZCBqdXN0IG9uY2UgcGVyIGluZGV4L3RlYW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nTG9nSW5kZXhNb25pdG9yaW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFNb25pdG9yKHRoaXMsICdEYXRhZG9nTG9nRGFpbHlRdW90YU1vbml0b3InLCBwcm9wcyk7XG4gICAgbmV3IERhdGFkb2dMb2dzQW5vbWFseU1vbml0b3IodGhpcywgJ0RhdGFkb2dMb2dBbGVydEFub21hbHlNb25pdG9yJywgcHJvcHMpO1xuICAgIG5ldyBEYXRhZG9nTG9nRGFpbHlRdW90YVJlYWNoZWRNb25pdG9yKHRoaXMsICdEYXRhZG9nTG9nRGFpbHlRdW90YVJlYWNoZWRWMk1vbml0b3InLCBwcm9wcyk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCk6IHN0cmluZ1tdID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGlmIChwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQgPCAwIHx8IHByb3BzLmRhaWx5TG9nUXVvdGEud2FybmluZ1RocmVzaG9sZEluUGVyY2VudCA+IDEwMCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFt3YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50XTogZXhwZWN0aW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAwJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzLmRhaWx5TG9nUXVvdGEuYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQgPCAwIHx8IHByb3BzLmRhaWx5TG9nUXVvdGEuYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQgPiAxMDApIHtcbiAgICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbYWxlcnRUaHJlc2hvbGRJblBlcmNlbnRdOiBleHBlY3RpbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMuZGFpbHlMb2dRdW90YS5hbGVydFRocmVzaG9sZEluUGVyY2VudCA8IHByb3BzLmRhaWx5TG9nUXVvdGEud2FybmluZ1RocmVzaG9sZEluUGVyY2VudCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFthbGVydFRocmVzaG9sZEluUGVyY2VudF06IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFt3YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50XScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGNvbW1vbk1vbml0b3JOYW1lUHJlZml4ID0gKGluZGV4TmFtZTogc3RyaW5nKSA9PiBgJyR7aW5kZXhOYW1lfScgaW5kZXhgO1xuY29uc3QgY29tbW9uVGFncyA9IChpbmRleE5hbWU6IHN0cmluZykgPT4gW2Bsb2dJbmRleDoke2luZGV4TmFtZX1gXTtcblxuY2xhc3MgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFNb25pdG9yIGV4dGVuZHMgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZ1Byb3BzKSB7XG4gICAgY29uc3QgbG9nUXVvdGFJbkV2ZW50cyA9IE1hdGguZmxvb3IocHJvcHMuZGFpbHlMb2dRdW90YS52YWx1ZUluTWlsbGlvbkV2ZW50cyAqIDFfMDAwXzAwMCk7XG4gICAgY29uc3Qgd2FybmluZ1RocmVzaG9sZCA9IE1hdGguZmxvb3IobG9nUXVvdGFJbkV2ZW50cyAqIChwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQgLyAxMDApKTtcbiAgICBjb25zdCBhbGVydFRocmVzaG9sZCA9IE1hdGguZmxvb3IobG9nUXVvdGFJbkV2ZW50cyAqIChwcm9wcy5kYWlseUxvZ1F1b3RhLmFsZXJ0VGhyZXNob2xkSW5QZXJjZW50IC8gMTAwKSk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFtwcm9wcy5hbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHtjb21tb25Nb25pdG9yTmFtZVByZWZpeChwcm9wcy5pbmRleE5hbWUpfTogTG9nIHF1b3RhIGFsbW9zdCByZWFjaGVkYCxcbiAgICAgICAgdHlwZTogJ21ldHJpYyBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgc3VtKGxhc3RfMWQpOnN1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlLGRhdGFkb2dfaW5kZXg6JHtwcm9wcy5pbmRleE5hbWV9fS5hc19jb3VudCgpID49ICR7YWxlcnRUaHJlc2hvbGR9YCxcbiAgICAgICAgbWVzc2FnZTogYFtQM10gSW5zcGVjdCB5b3VyIGxvZyB2b2x1bWUgYXQgJHtkYXRhZG9nTG9nc1NlYXJjaFdpdGhJbmRleEZpbHRlckRlZXBMaW5rKFxuICAgICAgICAgIHByb3BzLmluZGV4TmFtZSxcbiAgICAgICAgKX0gb3IgYWRhcHQgdGhlIGxvZyBxdW90YSBhdCAke2RhdGFkb2dMb2dzSW5kZXhlc0NvbmZpZ3VyYXRpb25EZWVwTGlua31gLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgICAgY3JpdGljYWw6IGFsZXJ0VGhyZXNob2xkLFxuICAgICAgICAgICAgd2FybmluZzogd2FybmluZ1RocmVzaG9sZCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGluY2x1ZGVfdGFnczogZmFsc2UsXG4gICAgICAgICAgbm90aWZ5X25vX2RhdGE6ICFwcm9wcy5zcGFyc2VMb2dnaW5nLFxuICAgICAgICAgIG5vX2RhdGFfdGltZWZyYW1lOiAyNCAqIDYwLCAvLyAxIGRheVxuICAgICAgICB9LFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAgLi4uY29tbW9uVGFncyhwcm9wcy5pbmRleE5hbWUpLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBEYXRhZG9nTG9nc0Fub21hbHlNb25pdG9yIGV4dGVuZHMgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlTmFtZTogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICBhbGVydFR5cGVzOiBbcHJvcHMuYWxlcnRUeXBlXSxcbiAgICAgIG1vbml0b3I6IHtcbiAgICAgICAgbmFtZTogYCR7Y29tbW9uTW9uaXRvck5hbWVQcmVmaXgocHJvcHMuaW5kZXhOYW1lKX06IExvZyBhbW91bnQgaXMgcmlzaW5nIHRvIHVuZXhwZWN0ZWQgbGV2ZWxzYCxcbiAgICAgICAgdHlwZTogJ21ldHJpYyBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgYXZnKGxhc3RfNGgpOmFub21hbGllcyhzdW06ZGF0YWRvZy5lc3RpbWF0ZWRfdXNhZ2UubG9ncy5pbmdlc3RlZF9ldmVudHN7ZGF0YWRvZ19pc19leGNsdWRlZDpmYWxzZSxkYXRhZG9nX2luZGV4OiR7cHJvcHMuaW5kZXhOYW1lfX0uYXNfY291bnQoKSwgJ3JvYnVzdCcsIDIsIGRpcmVjdGlvbj0nYWJvdmUnLCBhbGVydF93aW5kb3c9J2xhc3RfMTVtJywgaW50ZXJ2YWw9NjAsIGNvdW50X2RlZmF1bHRfemVybz0ndHJ1ZScsIHNlYXNvbmFsaXR5PSd3ZWVrbHknLCB0aW1lem9uZT0nZXVyb3BlL2JlcmxpbicpID49IDFgLFxuICAgICAgICBtZXNzYWdlOiBgW1A0XSBMb2dzIGFyZSBnZXR0aW5nIG91dCBvZiBjb250cm9sOiAke2RhdGFkb2dMb2dzU2VhcmNoV2l0aEluZGV4RmlsdGVyRGVlcExpbmsoXG4gICAgICAgICAgcHJvcHMuaW5kZXhOYW1lLFxuICAgICAgICApfWAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiAhcHJvcHMuc3BhcnNlTG9nZ2luZyxcbiAgICAgICAgICB0aHJlc2hvbGRfd2luZG93czoge1xuICAgICAgICAgICAgdHJpZ2dlcl93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgICByZWNvdmVyeV93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIC4uLmNvbW1vblRhZ3MocHJvcHMuaW5kZXhOYW1lKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFSZWFjaGVkTW9uaXRvciBleHRlbmRzIERhdGFkb2dNb25pdG9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW3Byb3BzLmFsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke2NvbW1vbk1vbml0b3JOYW1lUHJlZml4KHByb3BzLmluZGV4TmFtZSl9OiBMb2cgcXVvdGEgcmVhY2hlZGAsXG4gICAgICAgIHR5cGU6ICdldmVudC12MiBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgZXZlbnRzKFwic291cmNlOmRhdGFkb2cgZGF0YWRvZ19pbmRleDoke3Byb3BzLmluZGV4TmFtZX0gRGFpbHkgcXVvdGEgcmVhY2hlZFwiKS5yb2xsdXAoXCJjb3VudFwiKS5sYXN0KFwiNW1cIikgPiAwYCxcbiAgICAgICAgbWVzc2FnZTogYFtQMl0gVGhlIGxvZyBxdW90ZSBmb3IgdGhlIGluZGV4IGhhcyBiZWVuIHJlYWNoZWQuIElmIHlvdSBkbyBub3QgaW5jcmVhc2UgdGhlIHF1b3RhIGF0ICR7ZGF0YWRvZ0xvZ3NJbmRleGVzQ29uZmlndXJhdGlvbkRlZXBMaW5rfSwgbm8gbmV3IGxvZ3Mgd2lsbCBiZSBpbmRleGVkIHVudGlsIHRoZSBxdW90YSBpcyByZXNldCBhdCAyOjAwcG0gVVRDLmAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICB0aW1lb3V0X2g6IDI0LFxuICAgICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICAgIGNyaXRpY2FsOiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICAuLi5jb21tb25UYWdzKHByb3BzLmluZGV4TmFtZSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGRhdGFkb2dMb2dzU2VhcmNoV2l0aEluZGV4RmlsdGVyRGVlcExpbmsoaW5kZXhOYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBodHRwczovL2FwcC5kYXRhZG9naHEuZXUvbG9ncz9pbmRleD0ke2luZGV4TmFtZX1gO1xufVxuXG5jb25zdCBkYXRhZG9nTG9nc0luZGV4ZXNDb25maWd1cmF0aW9uRGVlcExpbmsgPSAnaHR0cHM6Ly9hcHAuZGF0YWRvZ2hxLmV1L2xvZ3MvcGlwZWxpbmVzL2luZGV4ZXMnO1xuIl19
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhZG9nL2RhdGFkb2dMb2dJbmRleE1vbml0b3JpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FBdUM7QUFDdkMscURBQW9FO0FBeURwRTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHlCQUEwQixTQUFRLHNCQUFTO0lBQ3RELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDJCQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLHlCQUF5QixDQUFDLElBQUksRUFBRSwrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1RSxJQUFJLGtDQUFrQyxDQUFDLElBQUksRUFBRSxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUU1RixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN0QixRQUFRLEVBQUUsR0FBYSxFQUFFO2dCQUN2QixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsR0FBRyxHQUFHLEVBQUU7b0JBQzVHLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkVBQTJFLENBQUMsQ0FBQztpQkFDMUY7Z0JBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLHVCQUF1QixHQUFHLEdBQUcsRUFBRTtvQkFDeEcsTUFBTSxDQUFDLElBQUksQ0FBQyx5RUFBeUUsQ0FBQyxDQUFDO2lCQUN4RjtnQkFDRCxJQUFJLEtBQUssQ0FBQyxhQUFh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ZixLQUFLLE9BQU87WUFDVixPQUFPLFlBQVksQ0FBQztRQUN0QixLQUFLLGNBQWM7WUFDakIsT0FBTyxpQkFBaUIsQ0FBQztLQUM1QjtBQUNILENBQUM7QUFURCw0REFTQztBQUVELFNBQVMsd0NBQXdDLENBQUMsU0FBaUIsRUFBRSxZQUE2QztJQUNoSCxPQUFPLFdBQVcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLDRCQUE0QixTQUFTLEVBQUUsQ0FBQztBQUNsRyxDQUFDO0FBRUQsU0FBUyx1Q0FBdUMsQ0FBQyxZQUE2QztJQUM1RixPQUFPLFdBQVcsd0JBQXdCLENBQUMsWUFBWSxDQUFDLHNDQUFzQyxDQUFDO0FBQ2pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERhdGFkb2dNb25pdG9yLCBEYXRhZG9nQWxlcnRUeXBlIH0gZnJvbSAnLi9kYXRhZG9nTW9uaXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZ1Byb3BzIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgeW91ciBzZXJ2aWNlIGluIERhdGFkb2cuIENhbiBiZSB1c2VkIHRvIHF1ZXJ5IHRoZSBtb25pdG9ycy5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBEYXRhZG9nIGluZGV4LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXhOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlZ3JhdGlvbiB0byB1c2UgZm9yIGFsZXJ0aW5nLlxuICAgKiBGb3IgT3BzR2VuaWUsIHlvdSBuZWVkIHRvIGluc3RhbGwgYW5kIGNvbmZpZ3VyZSB0aGUgJ29wc2dlbmllLWludGVncmF0aW9uJyBhY2NvdW50IG1vZHVsZS5cbiAgICovXG4gIHJlYWRvbmx5IGFsZXJ0VHlwZTogRGF0YWRvZ0FsZXJ0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGRhaWx5IGxvZyBxdW90YSBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IGRhaWx5TG9nUXVvdGE6IERhdGFkb2dMb2dRdW90YVByb3BzO1xuXG4gIC8qKlxuICAgKiBUaGlzIHZhbHVlIHNob3VsZCBiZSB1c2VkIGlmIHRoZXJlIGlzIG5vIGxvZyBtZXNzYWdlIHdpdGhpbiAyNCBob3VycyBvciBtaXNzaW5nIGhpc3RvcmljYWwgZGF0YS5cbiAgICogV2l0aG91dCBzZXR0aW5nIHRoaXMgdmFsdWUgaXQgd2lsbCBsZWFkIHRvIGFuIGVtcHR5IHJlc3VsdCBhbmQgdGhlcmVmb3JlIHRyaWdnZXIgYW4gYWxlcnQuXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNwYXJzZUxvZ2dpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgRGF0YWRvZyBvcmdhbml6YXRpb24sIGUuZy4sICdFVScgb3IgJ0xBVEFNJ1xuICAgKiBAZGVmYXVsdCAtICdFVSdcbiAgICovXG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbj86IERhdGFkb2dPcmdhbml6YXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWRvZ0xvZ1F1b3RhUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRhaWx5IGxvZyBxdW90YSBmb3IgdGhlIHRlYW0tc3BlY2lmaWMgaW5kZXggaW4gbWlsbGlvbiBldmVudHMuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZUluTWlsbGlvbkV2ZW50czogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgd2FybmluZyB0aHJlc2hvbGQgZm9yIHRoZSBkYWlseSBsb2cgcXVvdGEgbW9uaXRvciBpbiBwZXJjZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgd2FybmluZ1RocmVzaG9sZEluUGVyY2VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxhcm0gdGhyZXNob2xkIGZvciB0aGUgZGFpbHkgbG9nIHF1b3RhIG1vbml0b3IgaW4gcGVyY2VudC5cbiAgICogVGhlIHZhbHVlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAgYW5kIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgd2FybmluZyB0aHJlc2hvbGQuXG4gICAqL1xuICByZWFkb25seSBhbGVydFRocmVzaG9sZEluUGVyY2VudDogbnVtYmVyO1xufVxuXG4vKipcbiAqIEJhc2ljIG1vbml0b3JpbmcgYW5kIGFsZXJ0aW5nIGZvciBhIERhdGFkb2cgbG9ncyBpbmRleC5cbiAqIEl0IGZvbGxvd3MgdGhlIERhdGFkb2cgZ3VpZGUgYXQgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vbG9ncy9ndWlkZS9sb2dzLW1vbml0b3JzLW9uLXZvbHVtZXMvXG4gKiBhbmQgY29uc2lzdHMgb2YgdGhlIGZvbGxvd2luZyB0aHJlZSBtb25pdG9ycy5cbiAqICAgMS4gQSBtZXRyaWMgYWxlcnQgdGhhdCBmaXJlcyB3aGVuIHlvdSByZWFjaCBhIGNlcnRhaW4gdGhyZXNob2xkIG9mIHlvdXIgZGFpbHkgbG9nIHF1b3RhLlxuICogICAyLiBBbiBhbm9tYWx5IG1vbml0b3IgdGhhdCBkZXRlY3RzIGxvZyBhbW91bnQgc3Bpa2VzLlxuICogICAzLiBBbiBldmVudCBhbGVydCB0aGF0IGZpcmVzIHdoZW4geW91IGhpdCB0aGUgZGFpbHkgbG9nIHF1b3RhLlxuICpcbiAqIEEgZGF0YWRvZyBsb2cgaW5kZXggaXMgdGVhbSBzcGVjaWZpYyBhbmQgdGh1cyB0aGUgbW9uaXRvciBuZWVkcyB0byBiZSBkZXBsb3llZCBqdXN0IG9uY2UgcGVyIGluZGV4L3RlYW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhZG9nTG9nSW5kZXhNb25pdG9yaW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFNb25pdG9yKHRoaXMsICdEYXRhZG9nTG9nRGFpbHlRdW90YU1vbml0b3InLCBwcm9wcyk7XG4gICAgbmV3IERhdGFkb2dMb2dzQW5vbWFseU1vbml0b3IodGhpcywgJ0RhdGFkb2dMb2dBbGVydEFub21hbHlNb25pdG9yJywgcHJvcHMpO1xuICAgIG5ldyBEYXRhZG9nTG9nRGFpbHlRdW90YVJlYWNoZWRNb25pdG9yKHRoaXMsICdEYXRhZG9nTG9nRGFpbHlRdW90YVJlYWNoZWRWMk1vbml0b3InLCBwcm9wcyk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCk6IHN0cmluZ1tdID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgICAgIGlmIChwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQgPCAwIHx8IHByb3BzLmRhaWx5TG9nUXVvdGEud2FybmluZ1RocmVzaG9sZEluUGVyY2VudCA+IDEwMCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFt3YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50XTogZXhwZWN0aW5nIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMTAwJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BzLmRhaWx5TG9nUXVvdGEuYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQgPCAwIHx8IHByb3BzLmRhaWx5TG9nUXVvdGEuYWxlcnRUaHJlc2hvbGRJblBlcmNlbnQgPiAxMDApIHtcbiAgICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbYWxlcnRUaHJlc2hvbGRJblBlcmNlbnRdOiBleHBlY3RpbmcgYSBudW1iZXIgYmV0d2VlbiAwIGFuZCAxMDAnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcHMuZGFpbHlMb2dRdW90YS5hbGVydFRocmVzaG9sZEluUGVyY2VudCA8IHByb3BzLmRhaWx5TG9nUXVvdGEud2FybmluZ1RocmVzaG9sZEluUGVyY2VudCkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFthbGVydFRocmVzaG9sZEluUGVyY2VudF06IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFt3YXJuaW5nVGhyZXNob2xkSW5QZXJjZW50XScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IGNvbW1vbk1vbml0b3JOYW1lUHJlZml4ID0gKGluZGV4TmFtZTogc3RyaW5nKSA9PiBgJyR7aW5kZXhOYW1lfScgaW5kZXhgO1xuY29uc3QgY29tbW9uVGFncyA9IChpbmRleE5hbWU6IHN0cmluZykgPT4gW2Bsb2dJbmRleDoke2luZGV4TmFtZX1gXTtcblxuY2xhc3MgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFNb25pdG9yIGV4dGVuZHMgRGF0YWRvZ01vbml0b3Ige1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWRvZ0xvZ0luZGV4TW9uaXRvcmluZ1Byb3BzKSB7XG4gICAgY29uc3QgbG9nUXVvdGFJbkV2ZW50cyA9IE1hdGguZmxvb3IocHJvcHMuZGFpbHlMb2dRdW90YS52YWx1ZUluTWlsbGlvbkV2ZW50cyAqIDFfMDAwXzAwMCk7XG4gICAgY29uc3Qgd2FybmluZ1RocmVzaG9sZCA9IE1hdGguZmxvb3IobG9nUXVvdGFJbkV2ZW50cyAqIChwcm9wcy5kYWlseUxvZ1F1b3RhLndhcm5pbmdUaHJlc2hvbGRJblBlcmNlbnQgLyAxMDApKTtcbiAgICBjb25zdCBhbGVydFRocmVzaG9sZCA9IE1hdGguZmxvb3IobG9nUXVvdGFJbkV2ZW50cyAqIChwcm9wcy5kYWlseUxvZ1F1b3RhLmFsZXJ0VGhyZXNob2xkSW5QZXJjZW50IC8gMTAwKSk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIGFsZXJ0VHlwZXM6IFtwcm9wcy5hbGVydFR5cGVdLFxuICAgICAgbW9uaXRvcjoge1xuICAgICAgICBuYW1lOiBgJHtjb21tb25Nb25pdG9yTmFtZVByZWZpeChwcm9wcy5pbmRleE5hbWUpfTogTG9nIHF1b3RhIGFsbW9zdCByZWFjaGVkYCxcbiAgICAgICAgdHlwZTogJ21ldHJpYyBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgc3VtKGxhc3RfMWQpOnN1bTpkYXRhZG9nLmVzdGltYXRlZF91c2FnZS5sb2dzLmluZ2VzdGVkX2V2ZW50c3tkYXRhZG9nX2lzX2V4Y2x1ZGVkOmZhbHNlLGRhdGFkb2dfaW5kZXg6JHtwcm9wcy5pbmRleE5hbWV9fS5hc19jb3VudCgpID49ICR7YWxlcnRUaHJlc2hvbGR9YCxcbiAgICAgICAgbWVzc2FnZTogYFtQM10gSW5zcGVjdCB5b3VyIGxvZyB2b2x1bWUgYXQgJHtkYXRhZG9nTG9nc1NlYXJjaFdpdGhJbmRleEZpbHRlckRlZXBMaW5rKFxuICAgICAgICAgIHByb3BzLmluZGV4TmFtZSwgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICAgICApfSBvciBhZGFwdCB0aGUgbG9nIHF1b3RhIGF0ICR7ZGF0YWRvZ0xvZ3NJbmRleGVzQ29uZmlndXJhdGlvbkRlZXBMaW5rKHByb3BzLm9yZ2FuaXphdGlvbil9YCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHRocmVzaG9sZHM6IHtcbiAgICAgICAgICAgIGNyaXRpY2FsOiBhbGVydFRocmVzaG9sZCxcbiAgICAgICAgICAgIHdhcm5pbmc6IHdhcm5pbmdUaHJlc2hvbGQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiAhcHJvcHMuc3BhcnNlTG9nZ2luZyxcbiAgICAgICAgICBub19kYXRhX3RpbWVmcmFtZTogMjQgKiA2MCwgLy8gMSBkYXlcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIC4uLmNvbW1vblRhZ3MocHJvcHMuaW5kZXhOYW1lKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgRGF0YWRvZ0xvZ3NBbm9tYWx5TW9uaXRvciBleHRlbmRzIERhdGFkb2dNb25pdG9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW3Byb3BzLmFsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke2NvbW1vbk1vbml0b3JOYW1lUHJlZml4KHByb3BzLmluZGV4TmFtZSl9OiBMb2cgYW1vdW50IGlzIHJpc2luZyB0byB1bmV4cGVjdGVkIGxldmVsc2AsXG4gICAgICAgIHR5cGU6ICdtZXRyaWMgYWxlcnQnLFxuICAgICAgICBxdWVyeTogYGF2ZyhsYXN0XzRoKTphbm9tYWxpZXMoc3VtOmRhdGFkb2cuZXN0aW1hdGVkX3VzYWdlLmxvZ3MuaW5nZXN0ZWRfZXZlbnRze2RhdGFkb2dfaXNfZXhjbHVkZWQ6ZmFsc2UsZGF0YWRvZ19pbmRleDoke3Byb3BzLmluZGV4TmFtZX19LmFzX2NvdW50KCksICdyb2J1c3QnLCAyLCBkaXJlY3Rpb249J2Fib3ZlJywgYWxlcnRfd2luZG93PSdsYXN0XzE1bScsIGludGVydmFsPTYwLCBjb3VudF9kZWZhdWx0X3plcm89J3RydWUnLCBzZWFzb25hbGl0eT0nd2Vla2x5JywgdGltZXpvbmU9J2V1cm9wZS9iZXJsaW4nKSA+PSAxYCxcbiAgICAgICAgbWVzc2FnZTogYFtQNF0gTG9ncyBhcmUgZ2V0dGluZyBvdXQgb2YgY29udHJvbDogJHtkYXRhZG9nTG9nc1NlYXJjaFdpdGhJbmRleEZpbHRlckRlZXBMaW5rKFxuICAgICAgICAgIHByb3BzLmluZGV4TmFtZSwgcHJvcHMub3JnYW5pemF0aW9uLFxuICAgICAgICApfWAsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBpbmNsdWRlX3RhZ3M6IGZhbHNlLFxuICAgICAgICAgIG5vdGlmeV9ub19kYXRhOiAhcHJvcHMuc3BhcnNlTG9nZ2luZyxcbiAgICAgICAgICB0aHJlc2hvbGRfd2luZG93czoge1xuICAgICAgICAgICAgdHJpZ2dlcl93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgICByZWNvdmVyeV93aW5kb3c6ICdsYXN0XzE1bScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIC4uLmNvbW1vblRhZ3MocHJvcHMuaW5kZXhOYW1lKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgRGF0YWRvZ0xvZ0RhaWx5UXVvdGFSZWFjaGVkTW9uaXRvciBleHRlbmRzIERhdGFkb2dNb25pdG9yIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFkb2dMb2dJbmRleE1vbml0b3JpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgYWxlcnRUeXBlczogW3Byb3BzLmFsZXJ0VHlwZV0sXG4gICAgICBtb25pdG9yOiB7XG4gICAgICAgIG5hbWU6IGAke2NvbW1vbk1vbml0b3JOYW1lUHJlZml4KHByb3BzLmluZGV4TmFtZSl9OiBMb2cgcXVvdGEgcmVhY2hlZGAsXG4gICAgICAgIHR5cGU6ICdldmVudC12MiBhbGVydCcsXG4gICAgICAgIHF1ZXJ5OiBgZXZlbnRzKFwic291cmNlOmRhdGFkb2cgZGF0YWRvZ19pbmRleDoke3Byb3BzLmluZGV4TmFtZX0gRGFpbHkgcXVvdGEgcmVhY2hlZFwiKS5yb2xsdXAoXCJjb3VudFwiKS5sYXN0KFwiNW1cIikgPiAwYCxcbiAgICAgICAgbWVzc2FnZTogYFtQMl0gVGhlIGxvZyBxdW90ZSBmb3IgdGhlIGluZGV4IGhhcyBiZWVuIHJlYWNoZWQuIElmIHlvdSBkbyBub3QgaW5jcmVhc2UgdGhlIHF1b3RhIGF0ICR7ZGF0YWRvZ0xvZ3NJbmRleGVzQ29uZmlndXJhdGlvbkRlZXBMaW5rKHByb3BzLm9yZ2FuaXphdGlvbil9LCBubyBuZXcgbG9ncyB3aWxsIGJlIGluZGV4ZWQgdW50aWwgdGhlIHF1b3RhIGlzIHJlc2V0IGF0IDI6MDBwbSBVVEMuYCxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIHRpbWVvdXRfaDogMjQsXG4gICAgICAgICAgdGhyZXNob2xkczoge1xuICAgICAgICAgICAgY3JpdGljYWw6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGFnczogW1xuICAgICAgICAgIC4uLmNvbW1vblRhZ3MocHJvcHMuaW5kZXhOYW1lKSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgRGF0YWRvZ09yZ2FuaXphdGlvbiA9ICdFVScgfCAnTEFUQU0nIHwgJ0xhbmRpbmcgWm9uZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmdhbml6YXRpb25VcmxQcmVmaXgob3JnYW5pemF0aW9uOiBEYXRhZG9nT3JnYW5pemF0aW9uIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgc3dpdGNoIChvcmdhbml6YXRpb24gPz8gJ0VVJykge1xuICAgIGNhc2UgJ0VVJzpcbiAgICAgIHJldHVybiAnYXBwJztcbiAgICBjYXNlICdMQVRBTSc6XG4gICAgICByZXR1cm4gJ3Jpby1icmF6aWwnO1xuICAgIGNhc2UgJ0xhbmRpbmcgWm9uZSc6XG4gICAgICByZXR1cm4gJ3Jpby1sYW5kaW5nem9uZSc7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGF0YWRvZ0xvZ3NTZWFyY2hXaXRoSW5kZXhGaWx0ZXJEZWVwTGluayhpbmRleE5hbWU6IHN0cmluZywgb3JnYW5pemF0aW9uOiBEYXRhZG9nT3JnYW5pemF0aW9uIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiBgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChvcmdhbml6YXRpb24pfS5kYXRhZG9naHEuZXUvbG9ncz9pbmRleD0ke2luZGV4TmFtZX1gO1xufVxuXG5mdW5jdGlvbiBkYXRhZG9nTG9nc0luZGV4ZXNDb25maWd1cmF0aW9uRGVlcExpbmsob3JnYW5pemF0aW9uOiBEYXRhZG9nT3JnYW5pemF0aW9uIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiBgaHR0cHM6Ly8ke2dldE9yZ2FuaXphdGlvblVybFByZWZpeChvcmdhbml6YXRpb24pfS5kYXRhZG9naHEuZXUvbG9ncy9waXBlbGluZXMvaW5kZXhlc2A7XG59XG4iXX0=
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "main": "lib/index.js",
17
17
  "license": "Apache-2.0",
18
- "version": "2.5.8",
18
+ "version": "2.6.1",
19
19
  "types": "lib/index.d.ts",
20
20
  "stability": "stable",
21
21
  "jsii": {
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "2.5.8"
2
+ "version": "2.6.1"
3
3
  }