@microsoft/terraform-cdk-constructs 0.0.3-pre.10 → 0.0.3-pre.12

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 (202) hide show
  1. package/.jsii +858 -681
  2. package/API.md +499 -405
  3. package/README.md +4 -5
  4. package/docs/testing.md +39 -137
  5. package/lib/azure-actiongroup/lib/actiongroup.d.ts +1 -1
  6. package/lib/azure-actiongroup/lib/actiongroup.js +4 -4
  7. package/lib/azure-actiongroup/model/action-group-props.d.ts +3 -2
  8. package/lib/azure-actiongroup/model/action-group-props.js +1 -1
  9. package/lib/azure-actiongroup/test/AzureActionGroup.integ.js +66 -0
  10. package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +5 -33
  11. package/lib/azure-applicationgateway/lib/gateway.d.ts +5 -3
  12. package/lib/azure-applicationgateway/lib/gateway.js +14 -7
  13. package/lib/azure-applicationgateway/test/AzureApplicationGateway.integ.d.ts +1 -0
  14. package/lib/azure-applicationgateway/test/AzureApplicationGateway.integ.js +272 -0
  15. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +3 -35
  16. package/lib/azure-applicationinsights/lib/appinsights.d.ts +4 -3
  17. package/lib/azure-applicationinsights/lib/appinsights.js +6 -6
  18. package/lib/azure-applicationinsights/test/AzureAppInsights.integ.d.ts +1 -0
  19. package/lib/azure-applicationinsights/test/AzureAppInsights.integ.js +101 -0
  20. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +4 -27
  21. package/lib/azure-containerregistry/lib/registry.d.ts +4 -3
  22. package/lib/azure-containerregistry/lib/registry.js +5 -5
  23. package/lib/azure-containerregistry/test/AzureContainerRegistry.integ.d.ts +1 -0
  24. package/lib/azure-containerregistry/test/AzureContainerRegistry.integ.js +68 -0
  25. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +4 -23
  26. package/lib/azure-datalake/lib/datalake.d.ts +1 -0
  27. package/lib/azure-datalake/lib/datalake.js +2 -1
  28. package/lib/azure-datalake/test/AzureDatalake.spec.d.ts +1 -0
  29. package/lib/azure-datalake/test/AzureDatalake.spec.js +32 -0
  30. package/lib/azure-datalake/test/AzureStorageAccount.integ.d.ts +1 -0
  31. package/lib/azure-datalake/test/AzureStorageAccount.integ.js +60 -0
  32. package/lib/azure-eventhub/lib/authorization.js +1 -1
  33. package/lib/azure-eventhub/lib/consumer.js +1 -1
  34. package/lib/azure-eventhub/lib/{cluster.d.ts → eventhubcluster.d.ts} +11 -7
  35. package/lib/azure-eventhub/lib/eventhubcluster.js +64 -0
  36. package/lib/azure-eventhub/lib/index.d.ts +1 -1
  37. package/lib/azure-eventhub/lib/index.js +2 -2
  38. package/lib/azure-eventhub/lib/instance.d.ts +1 -0
  39. package/lib/azure-eventhub/lib/instance.js +5 -4
  40. package/lib/azure-eventhub/lib/kusto-connection.js +1 -1
  41. package/lib/azure-eventhub/lib/namespace.d.ts +7 -6
  42. package/lib/azure-eventhub/lib/namespace.js +24 -26
  43. package/lib/azure-eventhub/test/AzureEventhub.integ.d.ts +1 -0
  44. package/lib/azure-eventhub/test/AzureEventhub.integ.js +72 -0
  45. package/lib/azure-eventhub/test/AzureEventhub.spec.js +4 -27
  46. package/lib/azure-functionapp/lib/functionapplinux.js +1 -1
  47. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.integ.d.ts +1 -0
  48. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.integ.js +117 -0
  49. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +4 -21
  50. package/lib/azure-keyvault/lib/certificate.js +2 -2
  51. package/lib/azure-keyvault/lib/key.js +1 -1
  52. package/lib/azure-keyvault/lib/policy.js +1 -1
  53. package/lib/azure-keyvault/lib/secret.js +1 -1
  54. package/lib/azure-keyvault/lib/vault.d.ts +3 -2
  55. package/lib/azure-keyvault/lib/vault.js +4 -4
  56. package/lib/azure-keyvault/test/AzureKeyVault.integ.d.ts +1 -0
  57. package/lib/azure-keyvault/test/AzureKeyVault.integ.js +119 -0
  58. package/lib/azure-keyvault/test/AzureKeyVault.spec.js +4 -35
  59. package/lib/azure-kubernetes/lib/cluster.js +1 -1
  60. package/lib/azure-kubernetes/test/AzureKubernetesCluster.integ.d.ts +1 -0
  61. package/lib/azure-kubernetes/test/AzureKubernetesCluster.integ.js +75 -0
  62. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +4 -21
  63. package/lib/azure-kusto/lib/cluster.d.ts +9 -5
  64. package/lib/azure-kusto/lib/cluster.js +66 -42
  65. package/lib/azure-kusto/lib/compute-specification.js +1 -1
  66. package/lib/azure-kusto/lib/database.d.ts +7 -8
  67. package/lib/azure-kusto/lib/database.js +23 -25
  68. package/lib/azure-kusto/test/AzureKusto.integ.d.ts +1 -0
  69. package/lib/azure-kusto/test/AzureKusto.integ.js +74 -0
  70. package/lib/azure-kusto/test/AzureKusto.spec.js +3 -22
  71. package/lib/azure-loganalytics/lib/workspace.d.ts +6 -3
  72. package/lib/azure-loganalytics/lib/workspace.js +7 -6
  73. package/lib/azure-loganalytics/test/AzureLogAnalytics.integ.d.ts +1 -0
  74. package/lib/azure-loganalytics/test/AzureLogAnalytics.integ.js +117 -0
  75. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +4 -23
  76. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  77. package/lib/azure-metricalert/test/AzureMetricAlert.integ.d.ts +1 -0
  78. package/lib/azure-metricalert/test/AzureMetricAlert.integ.js +85 -0
  79. package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +4 -21
  80. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +1 -1
  81. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +4 -3
  82. package/lib/azure-networksecuritygroup/lib/securitygroup.js +7 -7
  83. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.integ.d.ts +1 -0
  84. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.integ.js +85 -0
  85. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +4 -23
  86. package/lib/azure-queryrulealert/lib/query-rule-alert.js +1 -1
  87. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.integ.d.ts +1 -0
  88. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.integ.js +63 -0
  89. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +4 -21
  90. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  91. package/lib/azure-resourcegroup/test/AzureResourceGroup.integ.d.ts +1 -0
  92. package/lib/azure-resourcegroup/test/AzureResourceGroup.integ.js +41 -0
  93. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +4 -17
  94. package/lib/azure-storageaccount/lib/account.d.ts +5 -0
  95. package/lib/azure-storageaccount/lib/account.js +3 -2
  96. package/lib/azure-storageaccount/lib/container.js +2 -2
  97. package/lib/azure-storageaccount/lib/fileshare.js +2 -2
  98. package/lib/azure-storageaccount/lib/queue.js +1 -1
  99. package/lib/azure-storageaccount/lib/table.js +1 -1
  100. package/lib/azure-storageaccount/test/AzureStorageAccount.integ.d.ts +1 -0
  101. package/lib/azure-storageaccount/test/AzureStorageAccount.integ.js +84 -0
  102. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +4 -17
  103. package/lib/azure-virtualmachine/lib/image-references.js +2 -2
  104. package/lib/azure-virtualmachine/lib/vm.d.ts +29 -6
  105. package/lib/azure-virtualmachine/lib/vm.js +17 -15
  106. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.integ.d.ts +1 -0
  107. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.integ.js +109 -0
  108. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +5 -25
  109. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.integ.d.ts +1 -0
  110. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.integ.js +105 -0
  111. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +4 -23
  112. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +28 -6
  113. package/lib/azure-virtualmachinescaleset/lib/cluster.js +13 -11
  114. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.integ.d.ts +1 -0
  115. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.integ.js +113 -0
  116. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +5 -25
  117. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.integ.d.ts +1 -0
  118. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.integ.js +109 -0
  119. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +4 -23
  120. package/lib/azure-virtualnetwork/lib/network.d.ts +4 -3
  121. package/lib/azure-virtualnetwork/lib/network.js +7 -6
  122. package/lib/azure-virtualnetwork/lib/peering.js +1 -1
  123. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.integ.d.ts +1 -0
  124. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.integ.js +92 -0
  125. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +5 -25
  126. package/lib/core-azure/lib/diagsettings.d.ts +3 -2
  127. package/lib/core-azure/lib/diagsettings.js +15 -21
  128. package/lib/core-azure/lib/rbac.js +1 -1
  129. package/lib/core-azure/lib/resource.js +6 -4
  130. package/lib/core-azure/test/AzureResource.integ.d.ts +1 -0
  131. package/lib/core-azure/test/AzureResource.integ.js +75 -0
  132. package/lib/testing/index.d.ts +34 -0
  133. package/lib/testing/index.js +235 -2
  134. package/package.json +32 -11
  135. package/cdktf.out/manifest.json +0 -13
  136. package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +0 -111
  137. package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +0 -588
  138. package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +0 -245
  139. package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +0 -179
  140. package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +0 -236
  141. package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +0 -436
  142. package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +0 -152
  143. package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +0 -209
  144. package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +0 -439
  145. package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +0 -283
  146. package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  147. package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +0 -309
  148. package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +0 -161
  149. package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +0 -271
  150. package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +0 -122
  151. package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +0 -88
  152. package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +0 -339
  153. package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +0 -264
  154. package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  155. package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +0 -280
  156. package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +0 -167
  157. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +0 -5
  158. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +0 -66
  159. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +0 -5
  160. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +0 -267
  161. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +0 -5
  162. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +0 -87
  163. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +0 -5
  164. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +0 -57
  165. package/lib/azure-eventhub/lib/cluster.js +0 -64
  166. package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +0 -5
  167. package/lib/azure-eventhub/test/ExampleAzureEventhub.js +0 -72
  168. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +0 -5
  169. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +0 -123
  170. package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +0 -5
  171. package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +0 -112
  172. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +0 -5
  173. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +0 -65
  174. package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +0 -5
  175. package/lib/azure-kusto/test/ExampleAzureKusto.js +0 -71
  176. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +0 -5
  177. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +0 -115
  178. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +0 -5
  179. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +0 -81
  180. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +0 -5
  181. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +0 -97
  182. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +0 -5
  183. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +0 -67
  184. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +0 -5
  185. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +0 -29
  186. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +0 -5
  187. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +0 -102
  188. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +0 -5
  189. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +0 -106
  190. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +0 -5
  191. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +0 -102
  192. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +0 -5
  193. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +0 -107
  194. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +0 -5
  195. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +0 -103
  196. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +0 -5
  197. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +0 -88
  198. package/lib/core-azure/test/AzureResource.spec.js +0 -19
  199. package/lib/core-azure/test/ExampleAzureResource.d.ts +0 -5
  200. package/lib/core-azure/test/ExampleAzureResource.js +0 -67
  201. package/tfsec.json +0 -4
  202. /package/lib/{core-azure/test/AzureResource.spec.d.ts → azure-actiongroup/test/AzureActionGroup.integ.d.ts} +0 -0
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const provider_1 = require("@cdktf/provider-azurerm/lib/provider");
4
- const resource_group_1 = require("@cdktf/provider-azurerm/lib/resource-group");
5
4
  const cdktf_1 = require("cdktf");
6
- const ExampleAzureActionGroup_1 = require("./ExampleAzureActionGroup");
7
- require("cdktf/lib/testing/adapters/jest");
8
5
  const __1 = require("..");
9
- const util = require("../../util/azureTenantIdHelpers");
6
+ const testing_1 = require("../../testing");
7
+ require("cdktf/lib/testing/adapters/jest");
10
8
  const model = require("../model");
11
9
  describe("Action Group With Defaults", () => {
12
10
  let stack;
@@ -15,13 +13,8 @@ describe("Action Group With Defaults", () => {
15
13
  const app = cdktf_1.Testing.app();
16
14
  stack = new cdktf_1.TerraformStack(app, "test");
17
15
  new provider_1.AzurermProvider(stack, "azureFeature", { features: {} });
18
- const resourceGroup = new resource_group_1.ResourceGroup(stack, "MyResourceGroup", {
19
- name: "testrg",
20
- location: "eastus",
21
- });
22
16
  new __1.ActionGroup(stack, "testAzureActionGroupDefaults", {
23
17
  name: "testactiongroup",
24
- resourceGroup: resourceGroup,
25
18
  shortName: "testshortn",
26
19
  });
27
20
  fullSynthResult = cdktf_1.Testing.fullSynth(stack); // Save the result for reuse
@@ -33,7 +26,7 @@ describe("Action Group With Defaults", () => {
33
26
  expect(fullSynthResult).toBeValidTerraform(); // Use the saved result
34
27
  });
35
28
  it("check if this can be planned", () => {
36
- expect(fullSynthResult).toPlanSuccessfully(); // Use the saved result
29
+ (0, testing_1.TerraformPlan)(fullSynthResult); // Use the saved result
37
30
  });
38
31
  });
39
32
  describe("Action Group With Defaults 2", () => {
@@ -43,13 +36,8 @@ describe("Action Group With Defaults 2", () => {
43
36
  const app = cdktf_1.Testing.app();
44
37
  stack = new cdktf_1.TerraformStack(app, "test2");
45
38
  new provider_1.AzurermProvider(stack, "azureFeature", { features: {} });
46
- const resourceGroup2 = new resource_group_1.ResourceGroup(stack, "MyResourceGroup2", {
47
- name: "testrg2",
48
- location: "eastus",
49
- });
50
39
  new __1.ActionGroup(stack, "testAzureActionGroupDefaults", {
51
40
  name: "testactiongroup",
52
- resourceGroup: resourceGroup2,
53
41
  shortName: "testshortn",
54
42
  enabled: false,
55
43
  location: "global",
@@ -66,23 +54,7 @@ describe("Action Group With Defaults 2", () => {
66
54
  expect(fullSynthResult).toBeValidTerraform(); // Use the saved result
67
55
  });
68
56
  it("check if this can be planned", () => {
69
- expect(fullSynthResult).toPlanSuccessfully(); // Use the saved result
70
- });
71
- });
72
- describe("Action Group Example", () => {
73
- it("renders and checks snapshot", () => {
74
- // Need to remove the tenant_id from the snapshot as it will change wherever the test is run
75
- const output = cdktf_1.Testing.synth(new ExampleAzureActionGroup_1.exampleAzureActionGroup(cdktf_1.Testing.app(), "testAzureActionGroup"));
76
- const myObject = JSON.parse(output);
77
- expect(util.removeTenantIdFromSnapshot(myObject)).toMatchSnapshot();
78
- });
79
- it("check if the produced terraform configuration is valid", () => {
80
- // We need to do a full synth to plan the terraform configuration
81
- expect(cdktf_1.Testing.fullSynth(new ExampleAzureActionGroup_1.exampleAzureActionGroup(cdktf_1.Testing.app(), "testAzureActionGroup"))).toBeValidTerraform();
82
- });
83
- it("check if this can be planned", () => {
84
- // We need to do a full synth to plan the terraform configuration
85
- expect(cdktf_1.Testing.fullSynth(new ExampleAzureActionGroup_1.exampleAzureActionGroup(cdktf_1.Testing.app(), "testAzureActionGroup"))).toPlanSuccessfully();
57
+ (0, testing_1.TerraformPlan)(fullSynthResult); // Use the saved result
86
58
  });
87
59
  });
88
60
  /**
@@ -291,4 +263,4 @@ describe("Action Group Helper Functions Unit Test for LogicAppReceiverProps", ()
291
263
  expect(model.monitorActionGroupLogicAppReceiverToTerraform(logicAppReceiverProps3)).toBeUndefined();
292
264
  });
293
265
  });
294
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXp1cmVBY3Rpb25Hcm91cC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWFjdGlvbmdyb3VwL3Rlc3QvQXp1cmVBY3Rpb25Hcm91cC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUVBQXVFO0FBQ3ZFLCtFQUEyRTtBQUMzRSxpQ0FBZ0Q7QUFDaEQsdUVBQW9FO0FBQ3BFLDJDQUF5QztBQUN6QywwQkFBaUM7QUFDakMsd0RBQXdEO0FBQ3hELGtDQUFrQztBQUVsQyxRQUFRLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO0lBQzFDLElBQUksS0FBcUIsQ0FBQztJQUMxQixJQUFJLGVBQW9CLENBQUM7SUFFekIsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixLQUFLLEdBQUcsSUFBSSxzQkFBYyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV4QyxJQUFJLDBCQUFlLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTdELE1BQU0sYUFBYSxHQUFHLElBQUksOEJBQWEsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7WUFDaEUsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7UUFFSCxJQUFJLGVBQVcsQ0FBQyxLQUFLLEVBQUUsOEJBQThCLEVBQUU7WUFDckQsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixhQUFhLEVBQUUsYUFBYTtZQUM1QixTQUFTLEVBQUUsWUFBWTtTQUN4QixDQUFDLENBQUM7UUFFSCxlQUFlLEdBQUcsZUFBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyREFBMkQsRUFB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QUFnQztRQUN4RCxJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsV0FBVyxFQUFFLDhCQUE4QjtRQUMzQyxvQkFBb0IsRUFBRSxJQUFJO0tBQzNCLENBQUM7SUFDRixJQUFJLHNCQUFzQixHQUFnQztRQUN4RCxJQUFJLEVBQUUsMkJBQTJCO1FBQ2pDLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsV0FBVyxFQUFFLDhCQUE4QjtLQUM1QyxDQUFDO0lBQ0YsSUFBSSxzQkFBbUQsQ0FBQztJQUV4RCxFQUFFLENBQUMsMkRBQTJELEVBQUUsR0FBRyxFQUFFO1FBQ25FLE1BQU0sQ0FDSixLQUFLLENBQUMsNkNBQTZDLENBQ2pELHNCQUFzQixDQUN2QixDQUNGLENBQUMsYUFBYSxDQUFDO1lBQ2QsSUFBSSxFQUFFLDJCQUEyQjtZQUNqQyxXQUFXLEVBQUUsOEJBQThCO1lBQzNDLG9CQUFvQixFQUFFLElBQUk7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOERBQThELEVBQUUsR0FBRyxFQUFFO1FBQ3RFLE1BQU0sQ0FDSixLQUFLLENBQUMsNkNBQTZDLENBQ2pELHNCQUFzQixDQUN2QixDQUNGLENBQUMsYUFBYSxDQUFDO1lBQ2QsSUFBSSxFQUFFLDJCQUEyQjtZQUNqQyxXQUFXLEVBQUUsOEJBQThCO1lBQzNDLG9CQUFvQixFQUFFLEtBQUs7U0FDNUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1FBQzNDLE1BQU0sQ0FDSixLQUFLLENBQUMsNkNBQTZDLENBQ2pELHNCQUFzQixDQUN2QixDQUNGLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF6dXJlcm1Qcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcHJvdmlkZXJcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBUZXN0aW5nLCBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgZXhhbXBsZUF6dXJlQWN0aW9uR3JvdXAgfSBmcm9tIFwiLi9FeGFtcGxlQXp1cmVBY3Rpb25Hcm91cFwiO1xuaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgQWN0aW9uR3JvdXAgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uLy4uL3V0aWwvYXp1cmVUZW5hbnRJZEhlbHBlcnNcIjtcbmltcG9ydCAqIGFzIG1vZGVsIGZyb20gXCIuLi9tb2RlbFwiO1xuXG5kZXNjcmliZShcIkFjdGlvbiBHcm91cCBXaXRoIERlZmF1bHRzXCIsICgpID0+IHtcbiAgbGV0IHN0YWNrOiBUZXJyYWZvcm1TdGFjaztcbiAgbGV0IGZ1bGxTeW50aFJlc3VsdDogYW55O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNvbnN0IGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3RcIik7XG5cbiAgICBuZXcgQXp1cmVybVByb3ZpZGVyKHN0YWNrLCBcImF6dXJlRmVhdHVyZVwiLCB7IGZlYXR1cmVzOiB7fSB9KTtcblxuICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cChzdGFjaywgXCJNeVJlc291cmNlR3JvdXBcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0cmdcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgIH0pO1xuXG4gICAgbmV3IEFjdGlvbkdyb3VwKHN0YWNrLCBcInRlc3RBenVyZUFjdGlvbkdyb3VwRGVmYXVsdHNcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0YWN0aW9uZ3JvdXBcIixcbiAgICAgIHJlc291cmNlR3JvdXA6IHJlc291cmNlR3JvdXAsXG4gICAgICBzaG9ydE5hbWU6IFwidGVzdHNob3J0blwiLFxuICAgIH0pO1xuXG4gICAgZnVsbFN5bnRoUmVzdWx0ID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spOyAvLyBTYXZlIHRoZSByZXN1bHQgZm9yIHJldXNlXG4gIH0pO1xuXG4gIGl0KFwicmVuZGVycyBhbiBBY3Rpb24gR3JvdXAgd2l0aCBkZWZhdWx0cyBhbmQgY2hlY2tzIHNuYXBzaG90XCIsICgpID0+IHtcbiAgICBleHBlY3QoVGVzdGluZy5zeW50aChzdGFjaykpLnRvTWF0Y2hTbmFwc2hvdCgpOyAvLyBDb21wYXJlIHRoZSBhbHJlYWR5IHByZXBhcmVkIHN0YWNrXG4gIH0pO1xuXG4gIGl0KFwiY2hlY2sgaWYgdGhlIHByb2R1Y2VkIHRlcnJhZm9ybSBjb25maWd1cmF0aW9uIGlzIHZhbGlkXCIsICgpID0+IHtcbiAgICBleHBlY3QoZnVsbFN5bnRoUmVzdWx0KS50b0JlVmFsaWRUZXJyYWZvcm0oKTsgLy8gVXNlIHRoZSBzYXZlZCByZXN1bHRcbiAgfSk7XG5cbiAgaXQoXCJjaGVjayBpZiB0aGlzIGNhbiBiZSBwbGFubmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoZnVsbFN5bnRoUmVzdWx0KS50b1BsYW5TdWNjZXNzZnVsbHkoKTsgLy8gVXNlIHRoZSBzYXZlZCByZXN1bHRcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgV2l0aCBEZWZhdWx0cyAyXCIsICgpID0+IHtcbiAgbGV0IHN0YWNrOiBUZXJyYWZvcm1TdGFjaztcbiAgbGV0IGZ1bGxTeW50aFJlc3VsdDogYW55O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNvbnN0IGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3QyXCIpO1xuXG4gICAgbmV3IEF6dXJlcm1Qcm92aWRlcihzdGFjaywgXCJhenVyZUZlYXR1cmVcIiwgeyBmZWF0dXJlczoge30gfSk7XG5cbiAgICBjb25zdCByZXNvdXJjZUdyb3VwMiA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIk15UmVzb3VyY2VHcm91cDJcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0cmcyXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICB9KTtcblxuICAgIG5ldyBBY3Rpb25Hcm91cChzdGFjaywgXCJ0ZXN0QXp1cmVBY3Rpb25Hcm91cERlZmF1bHRzXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdGFjdGlvbmdyb3VwXCIsXG4gICAgICByZXNvdXJjZUdyb3VwOiByZXNvdXJjZUdyb3VwMixcbiAgICAgIHNob3J0TmFtZTogXCJ0ZXN0c2hvcnRuXCIsXG4gICAgICBlbmFibGVkOiBmYWxzZSxcbiAgICAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICAgICAgdGFnczoge1xuICAgICAgICB0ZXN0OiBcInRlc3RcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBmdWxsU3ludGhSZXN1bHQgPSBUZXN0aW5nLmZ1bGxTeW50aChzdGFjayk7IC8vIFNhdmUgdGhlIHJlc3VsdCBmb3IgcmV1c2VcbiAgfSk7XG5cbiAgaXQoXCJyZW5kZXJzIGFuIEFjdGlvbiBHcm91cCB3aXRoIGRlZmF1bHRzIGFuZCBjaGVja3Mgc25hcHNob3RcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChUZXN0aW5nLnN5bnRoKHN0YWNrKSkudG9NYXRjaFNuYXBzaG90KCk7IC8vIENvbXBhcmUgdGhlIGFscmVhZHkgcHJlcGFyZWQgc3RhY2tcbiAgfSk7XG5cbiAgaXQoXCJjaGVjayBpZiB0aGUgcHJvZHVjZWQgdGVycmFmb3JtIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChmdWxsU3ludGhSZXN1bHQpLnRvQmVWYWxpZFRlcnJhZm9ybSgpOyAvLyBVc2UgdGhlIHNhdmVkIHJlc3VsdFxuICB9KTtcblxuICBpdChcImNoZWNrIGlmIHRoaXMgY2FuIGJlIHBsYW5uZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChmdWxsU3ludGhSZXN1bHQpLnRvUGxhblN1Y2Nlc3NmdWxseSgpOyAvLyBVc2UgdGhlIHNhdmVkIHJlc3VsdFxuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkFjdGlvbiBHcm91cCBFeGFtcGxlXCIsICgpID0+IHtcbiAgaXQoXCJyZW5kZXJzIGFuZCBjaGVja3Mgc25hcHNob3RcIiwgKCkgPT4ge1xuICAgIC8vIE5lZWQgdG8gcmVtb3ZlIHRoZSB0ZW5hbnRfaWQgZnJvbSB0aGUgc25hcHNob3QgYXMgaXQgd2lsbCBjaGFuZ2Ugd2hlcmV2ZXIgdGhlIHRlc3QgaXMgcnVuXG4gICAgY29uc3Qgb3V0cHV0ID0gVGVzdGluZy5zeW50aChcbiAgICAgIG5ldyBleGFtcGxlQXp1cmVBY3Rpb25Hcm91cChUZXN0aW5nLmFwcCgpLCBcInRlc3RBenVyZUFjdGlvbkdyb3VwXCIpLFxuICAgICk7XG4gICAgY29uc3QgbXlPYmplY3Q6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBKU09OLnBhcnNlKG91dHB1dCk7XG5cbiAgICBleHBlY3QodXRpbC5yZW1vdmVUZW5hbnRJZEZyb21TbmFwc2hvdChteU9iamVjdCkpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICB9KTtcblxuICBpdChcImNoZWNrIGlmIHRoZSBwcm9kdWNlZCB0ZXJyYWZvcm0gY29uZmlndXJhdGlvbiBpcyB2YWxpZFwiLCAoKSA9PiB7XG4gICAgLy8gV2UgbmVlZCB0byBkbyBhIGZ1bGwgc3ludGggdG8gcGxhbiB0aGUgdGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cbiAgICBleHBlY3QoXG4gICAgICBUZXN0aW5nLmZ1bGxTeW50aChcbiAgICAgICAgbmV3IGV4YW1wbGVBenVyZUFjdGlvbkdyb3VwKFRlc3RpbmcuYXBwKCksIFwidGVzdEF6dXJlQWN0aW9uR3JvdXBcIiksXG4gICAgICApLFxuICAgICkudG9CZVZhbGlkVGVycmFmb3JtKCk7XG4gIH0pO1xuXG4gIGl0KFwiY2hlY2sgaWYgdGhpcyBjYW4gYmUgcGxhbm5lZFwiLCAoKSA9PiB7XG4gICAgLy8gV2UgbmVlZCB0byBkbyBhIGZ1bGwgc3ludGggdG8gcGxhbiB0aGUgdGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cbiAgICBleHBlY3QoXG4gICAgICBUZXN0aW5nLmZ1bGxTeW50aChcbiAgICAgICAgbmV3IGV4YW1wbGVBenVyZUFjdGlvbkdyb3VwKFRlc3RpbmcuYXBwKCksIFwidGVzdEF6dXJlQWN0aW9uR3JvdXBcIiksXG4gICAgICApLFxuICAgICkudG9QbGFuU3VjY2Vzc2Z1bGx5KCk7XG4gIH0pO1xufSk7XG5cbi8qKlxuICogVW5pdCBUZXN0cyBmb3IgQWN0aW9uIEdyb3VwIEhlbHBlciBGdW5jdGlvbnNcbiAqL1xuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIEFybVJvbGVSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IGFybVJvbGVSZWNlaXZlclByb3BzMTogbW9kZWwuQXJtUm9sZVJlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X2FybV9yb2xlX3JlY2VpdmVyXzFcIixcbiAgICByb2xlSWQ6IFwidGVzdC1yb2xlLWlkLTFcIixcbiAgICB1c2VDb21tb25BbGVydFNjaGVtYTogdHJ1ZSxcbiAgfTtcbiAgbGV0IGFybVJvbGVSZWNlaXZlclByb3BzMjogbW9kZWwuQXJtUm9sZVJlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X2FybV9yb2xlX3JlY2VpdmVyXzJcIixcbiAgICByb2xlSWQ6IFwidGVzdC1yb2xlLWlkLTJcIixcbiAgfTtcbiAgbGV0IGFybVJvbGVSZWNlaXZlclByb3BzMzogbW9kZWwuQXJtUm9sZVJlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJhcm0gcm9sZSByZWNlaXZlciBwcm9wIHdpdGggdXNlQ29tbW9uQWxlcnRTY2hlbWEgZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwQXJtUm9sZVJlY2VpdmVyVG9UZXJyYWZvcm0oYXJtUm9sZVJlY2VpdmVyUHJvcHMxKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X2FybV9yb2xlX3JlY2VpdmVyXzFcIixcbiAgICAgIHJvbGVJZDogXCJ0ZXN0LXJvbGUtaWQtMVwiLFxuICAgICAgdXNlQ29tbW9uQWxlcnRTY2hlbWE6IHRydWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiYXJtIHJvbGUgcmVjZWl2ZXIgcHJvcCB3aXRob3V0IHVzZUNvbW1vbkFsZXJ0U2NoZW1hIGRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cEFybVJvbGVSZWNlaXZlclRvVGVycmFmb3JtKGFybVJvbGVSZWNlaXZlclByb3BzMiksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9hcm1fcm9sZV9yZWNlaXZlcl8yXCIsXG4gICAgICByb2xlSWQ6IFwidGVzdC1yb2xlLWlkLTJcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJhcm0gcm9sZSByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwQXJtUm9sZVJlY2VpdmVyVG9UZXJyYWZvcm0oYXJtUm9sZVJlY2VpdmVyUHJvcHMzKSxcbiAgICApLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIEVtYWlsUmVjZWl2ZXJzUHJvcHNcIiwgKCkgPT4ge1xuICBsZXQgZW1haWxSZWNlaXZlclByb3BzMTogbW9kZWwuRW1haWxSZWNlaXZlcnNQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3RfZW1haWxfcmVjZWl2ZXJfMVwiLFxuICAgIGVtYWlsQWRkcmVzczogXCJ0ZXN0LWVtYWlsLWFkZHJlc3MtMVwiLFxuICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICB9O1xuICBsZXQgZW1haWxSZWNlaXZlclByb3BzMjogbW9kZWwuRW1haWxSZWNlaXZlcnNQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3RfZW1haWxfcmVjZWl2ZXJfMlwiLFxuICAgIGVtYWlsQWRkcmVzczogXCJ0ZXN0LWVtYWlsLWFkZHJlc3MtMlwiLFxuICB9O1xuICBsZXQgZW1haWxSZWNlaXZlclByb3BzMzogbW9kZWwuRW1haWxSZWNlaXZlcnNQcm9wcztcblxuICBpdChcImVtYWlsIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBFbWFpbFJlY2VpdmVyVG9UZXJyYWZvcm0oZW1haWxSZWNlaXZlclByb3BzMSksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9lbWFpbF9yZWNlaXZlcl8xXCIsXG4gICAgICBlbWFpbEFkZHJlc3M6IFwidGVzdC1lbWFpbC1hZGRyZXNzLTFcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICAgIH0pO1xuICB9KTtcblxuICBpdChcImVtYWlsIHJlY2VpdmVyIHByb3Agd2l0aG91dCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBFbWFpbFJlY2VpdmVyVG9UZXJyYWZvcm0oZW1haWxSZWNlaXZlclByb3BzMiksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9lbWFpbF9yZWNlaXZlcl8yXCIsXG4gICAgICBlbWFpbEFkZHJlc3M6IFwidGVzdC1lbWFpbC1hZGRyZXNzLTJcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJlbWFpbCByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwRW1haWxSZWNlaXZlclRvVGVycmFmb3JtKGVtYWlsUmVjZWl2ZXJQcm9wczMpLFxuICAgICkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkFjdGlvbiBHcm91cCBIZWxwZXIgRnVuY3Rpb25zIFVuaXQgVGVzdCBmb3IgVm9pY2VSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IHZvaWNlUmVjZWl2ZXJQcm9wczE6IG1vZGVsLlZvaWNlUmVjZWl2ZXJQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3Rfdm9pY2VfcmVjZWl2ZXJfMVwiLFxuICAgIGNvdW50cnlDb2RlOiBcIjFcIixcbiAgICBwaG9uZU51bWJlcjogXCIwMTIzNDU2Nzg5XCIsXG4gIH07XG4gIGxldCB2b2ljZVJlY2VpdmVyUHJvcHMyOiBtb2RlbC5Wb2ljZVJlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJ2b2ljZSByZWNlaXZlciBwcm9wIGRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cFZvaWNlUmVjZWl2ZXJUb1RlcnJhZm9ybSh2b2ljZVJlY2VpdmVyUHJvcHMxKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X3ZvaWNlX3JlY2VpdmVyXzFcIixcbiAgICAgIGNvdW50cnlDb2RlOiBcIjFcIixcbiAgICAgIHBob25lTnVtYmVyOiBcIjAxMjM0NTY3ODlcIixcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJ2b2ljZSByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwVm9pY2VSZWNlaXZlclRvVGVycmFmb3JtKHZvaWNlUmVjZWl2ZXJQcm9wczIpLFxuICAgICkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkFjdGlvbiBHcm91cCBIZWxwZXIgRnVuY3Rpb25zIFVuaXQgVGVzdCBmb3IgU21zUmVjZWl2ZXJQcm9wc1wiLCAoKSA9PiB7XG4gIGxldCBzbXNSZWNlaXZlclByb3BzMTogbW9kZWwuU21zUmVjZWl2ZXJQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3Rfc21zX3JlY2VpdmVyXzFcIixcbiAgICBjb3VudHJ5Q29kZTogXCIxXCIsXG4gICAgcGhvbmVOdW1iZXI6IFwiMDEyMzQ1Njc4OVwiLFxuICB9O1xuICBsZXQgc21zUmVjZWl2ZXJQcm9wczI6IG1vZGVsLlNtc1JlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJzbXMgcmVjZWl2ZXIgcHJvcCBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBTbXNSZWNlaXZlclRvVGVycmFmb3JtKHNtc1JlY2VpdmVyUHJvcHMxKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X3Ntc19yZWNlaXZlcl8xXCIsXG4gICAgICBjb3VudHJ5Q29kZTogXCIxXCIsXG4gICAgICBwaG9uZU51bWJlcjogXCIwMTIzNDU2Nzg5XCIsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic21zIHJlY2VpdmVyIHByb3AgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBTbXNSZWNlaXZlclRvVGVycmFmb3JtKHNtc1JlY2VpdmVyUHJvcHMyKSxcbiAgICApLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIFdlYmhvb2tSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IHdlYmhvb2tSZWNlaXZlclByb3BzMTogbW9kZWwuV2ViaG9va1JlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X3dlYmhvb2tfcmVjZWl2ZXJfMVwiLFxuICAgIHNlcnZpY2VVcmk6IFwiaHR0cHM6Ly90ZXN0LXdlYmhvb2stdXJpLTFcIixcbiAgICB1c2VDb21tb25BbGVydFNjaGVtYTogdHJ1ZSxcbiAgfTtcbiAgbGV0IHdlYmhvb2tSZWNlaXZlclByb3BzMjogbW9kZWwuV2ViaG9va1JlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X3dlYmhvb2tfcmVjZWl2ZXJfMlwiLFxuICAgIHNlcnZpY2VVcmk6IFwiaHR0cHM6Ly90ZXN0LXdlYmhvb2stdXJpLTJcIixcbiAgfTtcbiAgbGV0IHdlYmhvb2tSZWNlaXZlclByb3BzMzogbW9kZWwuV2ViaG9va1JlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJ3ZWJob29rIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBXZWJob29rUmVjZWl2ZXJUb1RlcnJhZm9ybSh3ZWJob29rUmVjZWl2ZXJQcm9wczEpLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3Rfd2ViaG9va19yZWNlaXZlcl8xXCIsXG4gICAgICBzZXJ2aWNlVXJpOiBcImh0dHBzOi8vdGVzdC13ZWJob29rLXVyaS0xXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJ3ZWJob29rIHJlY2VpdmVyIHByb3Agd2l0aG91dCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBXZWJob29rUmVjZWl2ZXJUb1RlcnJhZm9ybSh3ZWJob29rUmVjZWl2ZXJQcm9wczIpLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3Rfd2ViaG9va19yZWNlaXZlcl8yXCIsXG4gICAgICBzZXJ2aWNlVXJpOiBcImh0dHBzOi8vdGVzdC13ZWJob29rLXVyaS0yXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwid2ViaG9vayByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwV2ViaG9va1JlY2VpdmVyVG9UZXJyYWZvcm0od2ViaG9va1JlY2VpdmVyUHJvcHMzKSxcbiAgICApLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIEV2ZW50aHViUmVjZWl2ZXJQcm9wc1wiLCAoKSA9PiB7XG4gIGxldCBldmVudGh1YlJlY2VpdmVyUHJvcHMxOiBtb2RlbC5FdmVudGh1YlJlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X2V2ZW50aHViX3JlY2VpdmVyXzFcIixcbiAgICBldmVudEh1Yk5hbWU6IFwidGVzdGV2ZW50aHVibmFtZTFcIixcbiAgICBldmVudEh1Yk5hbWVzcGFjZTogXCJ0ZXN0bmFtZXNwYWNlMVwiLFxuICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICB9O1xuICBsZXQgZXZlbnRodWJSZWNlaXZlclByb3BzMjogbW9kZWwuRXZlbnRodWJSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9ldmVudGh1Yl9yZWNlaXZlcl8yXCIsXG4gICAgZXZlbnRIdWJOYW1lOiBcInRlc3RldmVudGh1Ym5hbWUyXCIsXG4gICAgZXZlbnRIdWJOYW1lc3BhY2U6IFwidGVzdG5hbWVzcGFjZTJcIixcbiAgfTtcbiAgbGV0IGV2ZW50aHViUmVjZWl2ZXJQcm9wczM6IG1vZGVsLkV2ZW50aHViUmVjZWl2ZXJQcm9wcztcblxuICBpdChcImV2ZW50aHViIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBFdmVudEh1YlJlY2VpdmVyVG9UZXJyYWZvcm0oXG4gICAgICAgIGV2ZW50aHViUmVjZWl2ZXJQcm9wczEsXG4gICAgICApLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3RfZXZlbnRodWJfcmVjZWl2ZXJfMVwiLFxuICAgICAgZXZlbnRIdWJOYW1lOiBcInRlc3RldmVudGh1Ym5hbWUxXCIsXG4gICAgICBldmVudEh1Yk5hbWVzcGFjZTogXCJ0ZXN0bmFtZXNwYWNlMVwiLFxuICAgICAgdXNlQ29tbW9uQWxlcnRTY2hlbWE6IHRydWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiZXZlbnRodWIgcmVjZWl2ZXIgcHJvcCB3aXRob3V0IHVzZUNvbW1vbkFsZXJ0U2NoZW1hIGRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cEV2ZW50SHViUmVjZWl2ZXJUb1RlcnJhZm9ybShcbiAgICAgICAgZXZlbnRodWJSZWNlaXZlclByb3BzMixcbiAgICAgICksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9ldmVudGh1Yl9yZWNlaXZlcl8yXCIsXG4gICAgICBldmVudEh1Yk5hbWU6IFwidGVzdGV2ZW50aHVibmFtZTJcIixcbiAgICAgIGV2ZW50SHViTmFtZXNwYWNlOiBcInRlc3RuYW1lc3BhY2UyXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiZXZlbnRodWIgcmVjZWl2ZXIgcHJvcCB1bmRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cEV2ZW50SHViUmVjZWl2ZXJUb1RlcnJhZm9ybShcbiAgICAgICAgZXZlbnRodWJSZWNlaXZlclByb3BzMyxcbiAgICAgICksXG4gICAgKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiQWN0aW9uIEdyb3VwIEhlbHBlciBGdW5jdGlvbnMgVW5pdCBUZXN0IGZvciBBenVyZUFwcFB1c2hSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IGF6dXJlQXBwUHVzaFJlY2VpdmVyUHJvcHMxOiBtb2RlbC5BenVyZUFwcFB1c2hSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9henVyZV9hcHBfcHVzaF9yZWNlaXZlcl8xXCIsXG4gICAgZW1haWxBZGRyZXNzOiBcInRlc3RlbWFpbEBndGVzdGVtYWlsLmNvbVwiLFxuICB9O1xuICBsZXQgYXp1cmVBcHBQdXNoUmVjZWl2ZXJQcm9wczI6IG1vZGVsLkF6dXJlQXBwUHVzaFJlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJhenVyZSBhcHAgcHVzaCByZWNlaXZlciBwcm9wIHdpdGggdXNlQ29tbW9uQWxlcnRTY2hlbWEgZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwQXp1cmVBcHBQdXNoUmVjZWl2ZXJUb1RlcnJhZm9ybShcbiAgICAgICAgYXp1cmVBcHBQdXNoUmVjZWl2ZXJQcm9wczEsXG4gICAgICApLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3RfYXp1cmVfYXBwX3B1c2hfcmVjZWl2ZXJfMVwiLFxuICAgICAgZW1haWxBZGRyZXNzOiBcInRlc3RlbWFpbEBndGVzdGVtYWlsLmNvbVwiLFxuICAgIH0pO1xuICB9KTtcblxuICBpdChcImF6dXJlIGFwcCBwdXNoIHJlY2VpdmVyIHByb3AgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBBenVyZUFwcFB1c2hSZWNlaXZlclRvVGVycmFmb3JtKFxuICAgICAgICBhenVyZUFwcFB1c2hSZWNlaXZlclByb3BzMixcbiAgICAgICksXG4gICAgKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiQWN0aW9uIEdyb3VwIEhlbHBlciBGdW5jdGlvbnMgVW5pdCBUZXN0IGZvciBMb2dpY0FwcFJlY2VpdmVyUHJvcHNcIiwgKCkgPT4ge1xuICBsZXQgbG9naWNBcHBSZWNlaXZlclByb3BzMTogbW9kZWwuTG9naWNBcHBSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9sb2dpY19hcHBfcmVjZWl2ZXJfMVwiLFxuICAgIHJlc291cmNlSWQ6IFwidGVzdC9yZXNvdXJjZS9pZC8xXCIsXG4gICAgY2FsbGJhY2tVcmw6IFwiaHR0cHM6Ly90ZXN0LWxvZ2ljLWFwcC11cmktMVwiLFxuICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICB9O1xuICBsZXQgbG9naWNBcHBSZWNlaXZlclByb3BzMjogbW9kZWwuTG9naWNBcHBSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9sb2dpY19hcHBfcmVjZWl2ZXJfMlwiLFxuICAgIHJlc291cmNlSWQ6IFwidGVzdC9yZXNvdXJjZS9pZC8yXCIsXG4gICAgY2FsbGJhY2tVcmw6IFwiaHR0cHM6Ly90ZXN0LWxvZ2ljLWFwcC11cmktMlwiLFxuICB9O1xuICBsZXQgbG9naWNBcHBSZWNlaXZlclByb3BzMzogbW9kZWwuTG9naWNBcHBSZWNlaXZlclByb3BzO1xuXG4gIGl0KFwibG9naWMgYXBwIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBMb2dpY0FwcFJlY2VpdmVyVG9UZXJyYWZvcm0oXG4gICAgICAgIGxvZ2ljQXBwUmVjZWl2ZXJQcm9wczEsXG4gICAgICApLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3RfbG9naWNfYXBwX3JlY2VpdmVyXzFcIixcbiAgICAgIGNhbGxiYWNrVXJsOiBcImh0dHBzOi8vdGVzdC1sb2dpYy1hcHAtdXJpLTFcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICAgIH0pO1xuICB9KTtcblxuICBpdChcImxvZ2ljIGFwcCByZWNlaXZlciBwcm9wIHdpdGhvdXQgdXNlQ29tbW9uQWxlcnRTY2hlbWEgZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwTG9naWNBcHBSZWNlaXZlclRvVGVycmFmb3JtKFxuICAgICAgICBsb2dpY0FwcFJlY2VpdmVyUHJvcHMyLFxuICAgICAgKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X2xvZ2ljX2FwcF9yZWNlaXZlcl8yXCIsXG4gICAgICBjYWxsYmFja1VybDogXCJodHRwczovL3Rlc3QtbG9naWMtYXBwLXVyaS0yXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwibG9naWMgYXBwIHJlY2VpdmVyIHByb3AgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBMb2dpY0FwcFJlY2VpdmVyVG9UZXJyYWZvcm0oXG4gICAgICAgIGxvZ2ljQXBwUmVjZWl2ZXJQcm9wczMsXG4gICAgICApLFxuICAgICkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcbn0pO1xuIl19
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXp1cmVBY3Rpb25Hcm91cC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWFjdGlvbmdyb3VwL3Rlc3QvQXp1cmVBY3Rpb25Hcm91cC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUVBQXVFO0FBQ3ZFLGlDQUFnRDtBQUNoRCwwQkFBaUM7QUFDakMsMkNBQThDO0FBQzlDLDJDQUF5QztBQUV6QyxrQ0FBa0M7QUFFbEMsUUFBUSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtJQUMxQyxJQUFJLEtBQXFCLENBQUM7SUFDMUIsSUFBSSxlQUFvQixDQUFDO0lBRXpCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxHQUFHLElBQUksc0JBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEMsSUFBSSwwQkFBZSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU3RCxJQUFJLGVBQVcsQ0FBQyxLQUFLLEVBQUUsOEJBQThCLEVBQUU7WUFDckQsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixTQUFTLEVBQUUsWUFBWTtTQUN4QixDQUFDLENBQUM7UUFFSCxlQUFlLEdBQUcsZUFBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtJQUMxRSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywyREFBMkQsRUFBRSxHQUFHLEVBQUU7UUFDbkUsTUFBTSxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLHFDQUFxQztJQUN2RixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7UUFDaEUsTUFB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QW9CO1FBQ2hDLFdBQVcsRUFBRSw4QkFBOEI7S0FDNUMsQ0FBQztJQUNGLElBQUksc0JBQW1ELENBQUM7SUFFeEQsRUFBRSxDQUFDLDJEQUEyRCxFQUFFLEdBQUcsRUFBRTtRQUNuRSxNQUFNLENBQ0osS0FBSyxDQUFDLDZDQUE2QyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FDRixDQUFDLGFBQWEsQ0FBQztZQUNkLElBQUksRUFBRSwyQkFBMkI7WUFDakMsV0FBVyxFQUFFLDhCQUE4QjtZQUMzQyxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhEQUE4RCxFQUFFLEdBQUcsRUFBRTtRQUN0RSxNQUFNLENBQ0osS0FBSyxDQUFDLDZDQUE2QyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FDRixDQUFDLGFBQWEsQ0FBQztZQUNkLElBQUksRUFBRSwyQkFBMkI7WUFDakMsV0FBVyxFQUFFLDhCQUE4QjtZQUMzQyxvQkFBb0IsRUFBRSxLQUFLO1NBQzVCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUMzQyxNQUFNLENBQ0osS0FBSyxDQUFDLDZDQUE2QyxDQUNqRCxzQkFBc0IsQ0FDdkIsQ0FDRixDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3BCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBenVyZXJtUHJvdmlkZXIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBUZXN0aW5nLCBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQWN0aW9uR3JvdXAgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IFRlcnJhZm9ybVBsYW4gfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuXG5pbXBvcnQgKiBhcyBtb2RlbCBmcm9tIFwiLi4vbW9kZWxcIjtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgV2l0aCBEZWZhdWx0c1wiLCAoKSA9PiB7XG4gIGxldCBzdGFjazogVGVycmFmb3JtU3RhY2s7XG4gIGxldCBmdWxsU3ludGhSZXN1bHQ6IGFueTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKGFwcCwgXCJ0ZXN0XCIpO1xuXG4gICAgbmV3IEF6dXJlcm1Qcm92aWRlcihzdGFjaywgXCJhenVyZUZlYXR1cmVcIiwgeyBmZWF0dXJlczoge30gfSk7XG5cbiAgICBuZXcgQWN0aW9uR3JvdXAoc3RhY2ssIFwidGVzdEF6dXJlQWN0aW9uR3JvdXBEZWZhdWx0c1wiLCB7XG4gICAgICBuYW1lOiBcInRlc3RhY3Rpb25ncm91cFwiLFxuICAgICAgc2hvcnROYW1lOiBcInRlc3RzaG9ydG5cIixcbiAgICB9KTtcblxuICAgIGZ1bGxTeW50aFJlc3VsdCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTsgLy8gU2F2ZSB0aGUgcmVzdWx0IGZvciByZXVzZVxuICB9KTtcblxuICBpdChcInJlbmRlcnMgYW4gQWN0aW9uIEdyb3VwIHdpdGggZGVmYXVsdHMgYW5kIGNoZWNrcyBzbmFwc2hvdFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFRlc3Rpbmcuc3ludGgoc3RhY2spKS50b01hdGNoU25hcHNob3QoKTsgLy8gQ29tcGFyZSB0aGUgYWxyZWFkeSBwcmVwYXJlZCBzdGFja1xuICB9KTtcblxuICBpdChcImNoZWNrIGlmIHRoZSBwcm9kdWNlZCB0ZXJyYWZvcm0gY29uZmlndXJhdGlvbiBpcyB2YWxpZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KGZ1bGxTeW50aFJlc3VsdCkudG9CZVZhbGlkVGVycmFmb3JtKCk7IC8vIFVzZSB0aGUgc2F2ZWQgcmVzdWx0XG4gIH0pO1xuXG4gIGl0KFwiY2hlY2sgaWYgdGhpcyBjYW4gYmUgcGxhbm5lZFwiLCAoKSA9PiB7XG4gICAgVGVycmFmb3JtUGxhbihmdWxsU3ludGhSZXN1bHQpOyAvLyBVc2UgdGhlIHNhdmVkIHJlc3VsdFxuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkFjdGlvbiBHcm91cCBXaXRoIERlZmF1bHRzIDJcIiwgKCkgPT4ge1xuICBsZXQgc3RhY2s6IFRlcnJhZm9ybVN0YWNrO1xuICBsZXQgZnVsbFN5bnRoUmVzdWx0OiBhbnk7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBzdGFjayA9IG5ldyBUZXJyYWZvcm1TdGFjayhhcHAsIFwidGVzdDJcIik7XG5cbiAgICBuZXcgQXp1cmVybVByb3ZpZGVyKHN0YWNrLCBcImF6dXJlRmVhdHVyZVwiLCB7IGZlYXR1cmVzOiB7fSB9KTtcblxuICAgIG5ldyBBY3Rpb25Hcm91cChzdGFjaywgXCJ0ZXN0QXp1cmVBY3Rpb25Hcm91cERlZmF1bHRzXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdGFjdGlvbmdyb3VwXCIsXG4gICAgICBzaG9ydE5hbWU6IFwidGVzdHNob3J0blwiLFxuICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgdGVzdDogXCJ0ZXN0XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgZnVsbFN5bnRoUmVzdWx0ID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spOyAvLyBTYXZlIHRoZSByZXN1bHQgZm9yIHJldXNlXG4gIH0pO1xuXG4gIGl0KFwicmVuZGVycyBhbiBBY3Rpb24gR3JvdXAgd2l0aCBkZWZhdWx0cyBhbmQgY2hlY2tzIHNuYXBzaG90XCIsICgpID0+IHtcbiAgICBleHBlY3QoVGVzdGluZy5zeW50aChzdGFjaykpLnRvTWF0Y2hTbmFwc2hvdCgpOyAvLyBDb21wYXJlIHRoZSBhbHJlYWR5IHByZXBhcmVkIHN0YWNrXG4gIH0pO1xuXG4gIGl0KFwiY2hlY2sgaWYgdGhlIHByb2R1Y2VkIHRlcnJhZm9ybSBjb25maWd1cmF0aW9uIGlzIHZhbGlkXCIsICgpID0+IHtcbiAgICBleHBlY3QoZnVsbFN5bnRoUmVzdWx0KS50b0JlVmFsaWRUZXJyYWZvcm0oKTsgLy8gVXNlIHRoZSBzYXZlZCByZXN1bHRcbiAgfSk7XG5cbiAgaXQoXCJjaGVjayBpZiB0aGlzIGNhbiBiZSBwbGFubmVkXCIsICgpID0+IHtcbiAgICBUZXJyYWZvcm1QbGFuKGZ1bGxTeW50aFJlc3VsdCk7IC8vIFVzZSB0aGUgc2F2ZWQgcmVzdWx0XG4gIH0pO1xufSk7XG5cbi8qKlxuICogVW5pdCBUZXN0cyBmb3IgQWN0aW9uIEdyb3VwIEhlbHBlciBGdW5jdGlvbnNcbiAqL1xuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIEFybVJvbGVSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IGFybVJvbGVSZWNlaXZlclByb3BzMTogbW9kZWwuQXJtUm9sZVJlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X2FybV9yb2xlX3JlY2VpdmVyXzFcIixcbiAgICByb2xlSWQ6IFwidGVzdC1yb2xlLWlkLTFcIixcbiAgICB1c2VDb21tb25BbGVydFNjaGVtYTogdHJ1ZSxcbiAgfTtcbiAgbGV0IGFybVJvbGVSZWNlaXZlclByb3BzMjogbW9kZWwuQXJtUm9sZVJlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X2FybV9yb2xlX3JlY2VpdmVyXzJcIixcbiAgICByb2xlSWQ6IFwidGVzdC1yb2xlLWlkLTJcIixcbiAgfTtcbiAgbGV0IGFybVJvbGVSZWNlaXZlclByb3BzMzogbW9kZWwuQXJtUm9sZVJlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJhcm0gcm9sZSByZWNlaXZlciBwcm9wIHdpdGggdXNlQ29tbW9uQWxlcnRTY2hlbWEgZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwQXJtUm9sZVJlY2VpdmVyVG9UZXJyYWZvcm0oYXJtUm9sZVJlY2VpdmVyUHJvcHMxKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X2FybV9yb2xlX3JlY2VpdmVyXzFcIixcbiAgICAgIHJvbGVJZDogXCJ0ZXN0LXJvbGUtaWQtMVwiLFxuICAgICAgdXNlQ29tbW9uQWxlcnRTY2hlbWE6IHRydWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiYXJtIHJvbGUgcmVjZWl2ZXIgcHJvcCB3aXRob3V0IHVzZUNvbW1vbkFsZXJ0U2NoZW1hIGRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cEFybVJvbGVSZWNlaXZlclRvVGVycmFmb3JtKGFybVJvbGVSZWNlaXZlclByb3BzMiksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9hcm1fcm9sZV9yZWNlaXZlcl8yXCIsXG4gICAgICByb2xlSWQ6IFwidGVzdC1yb2xlLWlkLTJcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJhcm0gcm9sZSByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwQXJtUm9sZVJlY2VpdmVyVG9UZXJyYWZvcm0oYXJtUm9sZVJlY2VpdmVyUHJvcHMzKSxcbiAgICApLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIEVtYWlsUmVjZWl2ZXJzUHJvcHNcIiwgKCkgPT4ge1xuICBsZXQgZW1haWxSZWNlaXZlclByb3BzMTogbW9kZWwuRW1haWxSZWNlaXZlcnNQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3RfZW1haWxfcmVjZWl2ZXJfMVwiLFxuICAgIGVtYWlsQWRkcmVzczogXCJ0ZXN0LWVtYWlsLWFkZHJlc3MtMVwiLFxuICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICB9O1xuICBsZXQgZW1haWxSZWNlaXZlclByb3BzMjogbW9kZWwuRW1haWxSZWNlaXZlcnNQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3RfZW1haWxfcmVjZWl2ZXJfMlwiLFxuICAgIGVtYWlsQWRkcmVzczogXCJ0ZXN0LWVtYWlsLWFkZHJlc3MtMlwiLFxuICB9O1xuICBsZXQgZW1haWxSZWNlaXZlclByb3BzMzogbW9kZWwuRW1haWxSZWNlaXZlcnNQcm9wcztcblxuICBpdChcImVtYWlsIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBFbWFpbFJlY2VpdmVyVG9UZXJyYWZvcm0oZW1haWxSZWNlaXZlclByb3BzMSksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9lbWFpbF9yZWNlaXZlcl8xXCIsXG4gICAgICBlbWFpbEFkZHJlc3M6IFwidGVzdC1lbWFpbC1hZGRyZXNzLTFcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICAgIH0pO1xuICB9KTtcblxuICBpdChcImVtYWlsIHJlY2VpdmVyIHByb3Agd2l0aG91dCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBFbWFpbFJlY2VpdmVyVG9UZXJyYWZvcm0oZW1haWxSZWNlaXZlclByb3BzMiksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9lbWFpbF9yZWNlaXZlcl8yXCIsXG4gICAgICBlbWFpbEFkZHJlc3M6IFwidGVzdC1lbWFpbC1hZGRyZXNzLTJcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiBmYWxzZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJlbWFpbCByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwRW1haWxSZWNlaXZlclRvVGVycmFmb3JtKGVtYWlsUmVjZWl2ZXJQcm9wczMpLFxuICAgICkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkFjdGlvbiBHcm91cCBIZWxwZXIgRnVuY3Rpb25zIFVuaXQgVGVzdCBmb3IgVm9pY2VSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IHZvaWNlUmVjZWl2ZXJQcm9wczE6IG1vZGVsLlZvaWNlUmVjZWl2ZXJQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3Rfdm9pY2VfcmVjZWl2ZXJfMVwiLFxuICAgIGNvdW50cnlDb2RlOiBcIjFcIixcbiAgICBwaG9uZU51bWJlcjogXCIwMTIzNDU2Nzg5XCIsXG4gIH07XG4gIGxldCB2b2ljZVJlY2VpdmVyUHJvcHMyOiBtb2RlbC5Wb2ljZVJlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJ2b2ljZSByZWNlaXZlciBwcm9wIGRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cFZvaWNlUmVjZWl2ZXJUb1RlcnJhZm9ybSh2b2ljZVJlY2VpdmVyUHJvcHMxKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X3ZvaWNlX3JlY2VpdmVyXzFcIixcbiAgICAgIGNvdW50cnlDb2RlOiBcIjFcIixcbiAgICAgIHBob25lTnVtYmVyOiBcIjAxMjM0NTY3ODlcIixcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJ2b2ljZSByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwVm9pY2VSZWNlaXZlclRvVGVycmFmb3JtKHZvaWNlUmVjZWl2ZXJQcm9wczIpLFxuICAgICkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkFjdGlvbiBHcm91cCBIZWxwZXIgRnVuY3Rpb25zIFVuaXQgVGVzdCBmb3IgU21zUmVjZWl2ZXJQcm9wc1wiLCAoKSA9PiB7XG4gIGxldCBzbXNSZWNlaXZlclByb3BzMTogbW9kZWwuU21zUmVjZWl2ZXJQcm9wcyA9IHtcbiAgICBuYW1lOiBcInRlc3Rfc21zX3JlY2VpdmVyXzFcIixcbiAgICBjb3VudHJ5Q29kZTogXCIxXCIsXG4gICAgcGhvbmVOdW1iZXI6IFwiMDEyMzQ1Njc4OVwiLFxuICB9O1xuICBsZXQgc21zUmVjZWl2ZXJQcm9wczI6IG1vZGVsLlNtc1JlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJzbXMgcmVjZWl2ZXIgcHJvcCBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBTbXNSZWNlaXZlclRvVGVycmFmb3JtKHNtc1JlY2VpdmVyUHJvcHMxKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X3Ntc19yZWNlaXZlcl8xXCIsXG4gICAgICBjb3VudHJ5Q29kZTogXCIxXCIsXG4gICAgICBwaG9uZU51bWJlcjogXCIwMTIzNDU2Nzg5XCIsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwic21zIHJlY2VpdmVyIHByb3AgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBTbXNSZWNlaXZlclRvVGVycmFmb3JtKHNtc1JlY2VpdmVyUHJvcHMyKSxcbiAgICApLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIFdlYmhvb2tSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IHdlYmhvb2tSZWNlaXZlclByb3BzMTogbW9kZWwuV2ViaG9va1JlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X3dlYmhvb2tfcmVjZWl2ZXJfMVwiLFxuICAgIHNlcnZpY2VVcmk6IFwiaHR0cHM6Ly90ZXN0LXdlYmhvb2stdXJpLTFcIixcbiAgICB1c2VDb21tb25BbGVydFNjaGVtYTogdHJ1ZSxcbiAgfTtcbiAgbGV0IHdlYmhvb2tSZWNlaXZlclByb3BzMjogbW9kZWwuV2ViaG9va1JlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X3dlYmhvb2tfcmVjZWl2ZXJfMlwiLFxuICAgIHNlcnZpY2VVcmk6IFwiaHR0cHM6Ly90ZXN0LXdlYmhvb2stdXJpLTJcIixcbiAgfTtcbiAgbGV0IHdlYmhvb2tSZWNlaXZlclByb3BzMzogbW9kZWwuV2ViaG9va1JlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJ3ZWJob29rIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBXZWJob29rUmVjZWl2ZXJUb1RlcnJhZm9ybSh3ZWJob29rUmVjZWl2ZXJQcm9wczEpLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3Rfd2ViaG9va19yZWNlaXZlcl8xXCIsXG4gICAgICBzZXJ2aWNlVXJpOiBcImh0dHBzOi8vdGVzdC13ZWJob29rLXVyaS0xXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogdHJ1ZSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoXCJ3ZWJob29rIHJlY2VpdmVyIHByb3Agd2l0aG91dCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBXZWJob29rUmVjZWl2ZXJUb1RlcnJhZm9ybSh3ZWJob29rUmVjZWl2ZXJQcm9wczIpLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3Rfd2ViaG9va19yZWNlaXZlcl8yXCIsXG4gICAgICBzZXJ2aWNlVXJpOiBcImh0dHBzOi8vdGVzdC13ZWJob29rLXVyaS0yXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwid2ViaG9vayByZWNlaXZlciBwcm9wIHVuZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwV2ViaG9va1JlY2VpdmVyVG9UZXJyYWZvcm0od2ViaG9va1JlY2VpdmVyUHJvcHMzKSxcbiAgICApLnRvQmVVbmRlZmluZWQoKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJBY3Rpb24gR3JvdXAgSGVscGVyIEZ1bmN0aW9ucyBVbml0IFRlc3QgZm9yIEV2ZW50aHViUmVjZWl2ZXJQcm9wc1wiLCAoKSA9PiB7XG4gIGxldCBldmVudGh1YlJlY2VpdmVyUHJvcHMxOiBtb2RlbC5FdmVudGh1YlJlY2VpdmVyUHJvcHMgPSB7XG4gICAgbmFtZTogXCJ0ZXN0X2V2ZW50aHViX3JlY2VpdmVyXzFcIixcbiAgICBldmVudEh1Yk5hbWU6IFwidGVzdGV2ZW50aHVibmFtZTFcIixcbiAgICBldmVudEh1Yk5hbWVzcGFjZTogXCJ0ZXN0bmFtZXNwYWNlMVwiLFxuICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICB9O1xuICBsZXQgZXZlbnRodWJSZWNlaXZlclByb3BzMjogbW9kZWwuRXZlbnRodWJSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9ldmVudGh1Yl9yZWNlaXZlcl8yXCIsXG4gICAgZXZlbnRIdWJOYW1lOiBcInRlc3RldmVudGh1Ym5hbWUyXCIsXG4gICAgZXZlbnRIdWJOYW1lc3BhY2U6IFwidGVzdG5hbWVzcGFjZTJcIixcbiAgfTtcbiAgbGV0IGV2ZW50aHViUmVjZWl2ZXJQcm9wczM6IG1vZGVsLkV2ZW50aHViUmVjZWl2ZXJQcm9wcztcblxuICBpdChcImV2ZW50aHViIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBFdmVudEh1YlJlY2VpdmVyVG9UZXJyYWZvcm0oXG4gICAgICAgIGV2ZW50aHViUmVjZWl2ZXJQcm9wczEsXG4gICAgICApLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3RfZXZlbnRodWJfcmVjZWl2ZXJfMVwiLFxuICAgICAgZXZlbnRIdWJOYW1lOiBcInRlc3RldmVudGh1Ym5hbWUxXCIsXG4gICAgICBldmVudEh1Yk5hbWVzcGFjZTogXCJ0ZXN0bmFtZXNwYWNlMVwiLFxuICAgICAgdXNlQ29tbW9uQWxlcnRTY2hlbWE6IHRydWUsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiZXZlbnRodWIgcmVjZWl2ZXIgcHJvcCB3aXRob3V0IHVzZUNvbW1vbkFsZXJ0U2NoZW1hIGRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cEV2ZW50SHViUmVjZWl2ZXJUb1RlcnJhZm9ybShcbiAgICAgICAgZXZlbnRodWJSZWNlaXZlclByb3BzMixcbiAgICAgICksXG4gICAgKS50b01hdGNoT2JqZWN0KHtcbiAgICAgIG5hbWU6IFwidGVzdF9ldmVudGh1Yl9yZWNlaXZlcl8yXCIsXG4gICAgICBldmVudEh1Yk5hbWU6IFwidGVzdGV2ZW50aHVibmFtZTJcIixcbiAgICAgIGV2ZW50SHViTmFtZXNwYWNlOiBcInRlc3RuYW1lc3BhY2UyXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwiZXZlbnRodWIgcmVjZWl2ZXIgcHJvcCB1bmRlZmluZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChcbiAgICAgIG1vZGVsLm1vbml0b3JBY3Rpb25Hcm91cEV2ZW50SHViUmVjZWl2ZXJUb1RlcnJhZm9ybShcbiAgICAgICAgZXZlbnRodWJSZWNlaXZlclByb3BzMyxcbiAgICAgICksXG4gICAgKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiQWN0aW9uIEdyb3VwIEhlbHBlciBGdW5jdGlvbnMgVW5pdCBUZXN0IGZvciBBenVyZUFwcFB1c2hSZWNlaXZlclByb3BzXCIsICgpID0+IHtcbiAgbGV0IGF6dXJlQXBwUHVzaFJlY2VpdmVyUHJvcHMxOiBtb2RlbC5BenVyZUFwcFB1c2hSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9henVyZV9hcHBfcHVzaF9yZWNlaXZlcl8xXCIsXG4gICAgZW1haWxBZGRyZXNzOiBcInRlc3RlbWFpbEBndGVzdGVtYWlsLmNvbVwiLFxuICB9O1xuICBsZXQgYXp1cmVBcHBQdXNoUmVjZWl2ZXJQcm9wczI6IG1vZGVsLkF6dXJlQXBwUHVzaFJlY2VpdmVyUHJvcHM7XG5cbiAgaXQoXCJhenVyZSBhcHAgcHVzaCByZWNlaXZlciBwcm9wIHdpdGggdXNlQ29tbW9uQWxlcnRTY2hlbWEgZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwQXp1cmVBcHBQdXNoUmVjZWl2ZXJUb1RlcnJhZm9ybShcbiAgICAgICAgYXp1cmVBcHBQdXNoUmVjZWl2ZXJQcm9wczEsXG4gICAgICApLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3RfYXp1cmVfYXBwX3B1c2hfcmVjZWl2ZXJfMVwiLFxuICAgICAgZW1haWxBZGRyZXNzOiBcInRlc3RlbWFpbEBndGVzdGVtYWlsLmNvbVwiLFxuICAgIH0pO1xuICB9KTtcblxuICBpdChcImF6dXJlIGFwcCBwdXNoIHJlY2VpdmVyIHByb3AgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBBenVyZUFwcFB1c2hSZWNlaXZlclRvVGVycmFmb3JtKFxuICAgICAgICBhenVyZUFwcFB1c2hSZWNlaXZlclByb3BzMixcbiAgICAgICksXG4gICAgKS50b0JlVW5kZWZpbmVkKCk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiQWN0aW9uIEdyb3VwIEhlbHBlciBGdW5jdGlvbnMgVW5pdCBUZXN0IGZvciBMb2dpY0FwcFJlY2VpdmVyUHJvcHNcIiwgKCkgPT4ge1xuICBsZXQgbG9naWNBcHBSZWNlaXZlclByb3BzMTogbW9kZWwuTG9naWNBcHBSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9sb2dpY19hcHBfcmVjZWl2ZXJfMVwiLFxuICAgIHJlc291cmNlSWQ6IFwidGVzdC9yZXNvdXJjZS9pZC8xXCIsXG4gICAgY2FsbGJhY2tVcmw6IFwiaHR0cHM6Ly90ZXN0LWxvZ2ljLWFwcC11cmktMVwiLFxuICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICB9O1xuICBsZXQgbG9naWNBcHBSZWNlaXZlclByb3BzMjogbW9kZWwuTG9naWNBcHBSZWNlaXZlclByb3BzID0ge1xuICAgIG5hbWU6IFwidGVzdF9sb2dpY19hcHBfcmVjZWl2ZXJfMlwiLFxuICAgIHJlc291cmNlSWQ6IFwidGVzdC9yZXNvdXJjZS9pZC8yXCIsXG4gICAgY2FsbGJhY2tVcmw6IFwiaHR0cHM6Ly90ZXN0LWxvZ2ljLWFwcC11cmktMlwiLFxuICB9O1xuICBsZXQgbG9naWNBcHBSZWNlaXZlclByb3BzMzogbW9kZWwuTG9naWNBcHBSZWNlaXZlclByb3BzO1xuXG4gIGl0KFwibG9naWMgYXBwIHJlY2VpdmVyIHByb3Agd2l0aCB1c2VDb21tb25BbGVydFNjaGVtYSBkZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBMb2dpY0FwcFJlY2VpdmVyVG9UZXJyYWZvcm0oXG4gICAgICAgIGxvZ2ljQXBwUmVjZWl2ZXJQcm9wczEsXG4gICAgICApLFxuICAgICkudG9NYXRjaE9iamVjdCh7XG4gICAgICBuYW1lOiBcInRlc3RfbG9naWNfYXBwX3JlY2VpdmVyXzFcIixcbiAgICAgIGNhbGxiYWNrVXJsOiBcImh0dHBzOi8vdGVzdC1sb2dpYy1hcHAtdXJpLTFcIixcbiAgICAgIHVzZUNvbW1vbkFsZXJ0U2NoZW1hOiB0cnVlLFxuICAgIH0pO1xuICB9KTtcblxuICBpdChcImxvZ2ljIGFwcCByZWNlaXZlciBwcm9wIHdpdGhvdXQgdXNlQ29tbW9uQWxlcnRTY2hlbWEgZGVmaW5lZFwiLCAoKSA9PiB7XG4gICAgZXhwZWN0KFxuICAgICAgbW9kZWwubW9uaXRvckFjdGlvbkdyb3VwTG9naWNBcHBSZWNlaXZlclRvVGVycmFmb3JtKFxuICAgICAgICBsb2dpY0FwcFJlY2VpdmVyUHJvcHMyLFxuICAgICAgKSxcbiAgICApLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgbmFtZTogXCJ0ZXN0X2xvZ2ljX2FwcF9yZWNlaXZlcl8yXCIsXG4gICAgICBjYWxsYmFja1VybDogXCJodHRwczovL3Rlc3QtbG9naWMtYXBwLXVyaS0yXCIsXG4gICAgICB1c2VDb21tb25BbGVydFNjaGVtYTogZmFsc2UsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KFwibG9naWMgYXBwIHJlY2VpdmVyIHByb3AgdW5kZWZpbmVkXCIsICgpID0+IHtcbiAgICBleHBlY3QoXG4gICAgICBtb2RlbC5tb25pdG9yQWN0aW9uR3JvdXBMb2dpY0FwcFJlY2VpdmVyVG9UZXJyYWZvcm0oXG4gICAgICAgIGxvZ2ljQXBwUmVjZWl2ZXJQcm9wczMsXG4gICAgICApLFxuICAgICkudG9CZVVuZGVmaW5lZCgpO1xuICB9KTtcbn0pO1xuIl19
@@ -27,9 +27,10 @@ export interface IGatewayProps {
27
27
  */
28
28
  readonly location: string;
29
29
  /**
30
- * The resource group under which the Application Gateway will be deployed.
30
+ * An optional reference to the resource group in which to deploy the Application Gateway.
31
+ * If not provided, the Application Gateway will be deployed in the default resource group.
31
32
  */
32
- readonly resourceGroup: ResourceGroup;
33
+ readonly resourceGroup?: ResourceGroup;
33
34
  /**
34
35
  * The SKU tier of the Application Gateway (e.g., Standard, WAF).
35
36
  */
@@ -166,6 +167,7 @@ export interface IGatewayProps {
166
167
  readonly wafConfiguration?: azapgw.ApplicationGatewayWafConfiguration;
167
168
  }
168
169
  export declare class Gateway extends AzureResource {
170
+ readonly props: IGatewayProps;
169
171
  resourceGroup: ResourceGroup;
170
172
  id: string;
171
173
  /**
@@ -176,7 +178,7 @@ export declare class Gateway extends AzureResource {
176
178
  * @param props - The properties for configuring the Azure Application Gateway. The properties include:
177
179
  * - `name`: Required. Unique name for the Application Gateway within Azure.
178
180
  * - `location`: Required. Azure Region for deployment.
179
- * - `resourceGroup`: Required. Reference to the resource group for deployment.
181
+ * - `resourceGroup`: Optional. Reference to the resource group for deployment.
180
182
  * - `skuTier`: Required. SKU tier of the Application Gateway (e.g., Standard, WAF).
181
183
  * - `skuSize`: Required. Size of the SKU for the Application Gateway.
182
184
  * - `capacity`: Required. Capacity (instance count) of the Application Gateway.
@@ -18,7 +18,7 @@ class Gateway extends core_azure_1.AzureResource {
18
18
  * @param props - The properties for configuring the Azure Application Gateway. The properties include:
19
19
  * - `name`: Required. Unique name for the Application Gateway within Azure.
20
20
  * - `location`: Required. Azure Region for deployment.
21
- * - `resourceGroup`: Required. Reference to the resource group for deployment.
21
+ * - `resourceGroup`: Optional. Reference to the resource group for deployment.
22
22
  * - `skuTier`: Required. SKU tier of the Application Gateway (e.g., Standard, WAF).
23
23
  * - `skuSize`: Required. Size of the SKU for the Application Gateway.
24
24
  * - `capacity`: Required. Capacity (instance count) of the Application Gateway.
@@ -88,6 +88,8 @@ class Gateway extends core_azure_1.AzureResource {
88
88
  */
89
89
  constructor(scope, id, props) {
90
90
  super(scope, id);
91
+ this.props = props;
92
+ this.resourceGroup = this.setupResourceGroup(props);
91
93
  // Define the identity
92
94
  let identity;
93
95
  // Check if Azure Key Vault is used and no identity is provided
@@ -95,7 +97,7 @@ class Gateway extends core_azure_1.AzureResource {
95
97
  // Create a managed identity and add it to identityIds
96
98
  const managedIdentity = new user_assigned_identity_1.UserAssignedIdentity(this, "ManagedIdentity", {
97
99
  name: `mi-${props.name}`,
98
- resourceGroupName: props.resourceGroup.name,
100
+ resourceGroupName: this.resourceGroup.name,
99
101
  location: props.location,
100
102
  });
101
103
  identity = {
@@ -112,7 +114,7 @@ class Gateway extends core_azure_1.AzureResource {
112
114
  const defaults = {
113
115
  subnetId: props.subnet?.id ||
114
116
  new vnet.Network(this, "vnet", {
115
- resourceGroup: props.resourceGroup,
117
+ resourceGroup: this.resourceGroup,
116
118
  }).subnets.default.id,
117
119
  identity: props.identity || identity,
118
120
  };
@@ -142,6 +144,12 @@ class Gateway extends core_azure_1.AzureResource {
142
144
  privateIpAddressAllocation: props.privateIpAddressAllocation,
143
145
  });
144
146
  }
147
+ // If no frontend ports are provided, use default dummy frontend ip configuration
148
+ if (frontendIpConfigs.length == 0) {
149
+ frontendIpConfigs.push({
150
+ name: "Dummy-frontend-ip-configuration",
151
+ });
152
+ }
145
153
  // Set default frontend ports if not provided
146
154
  const defaultFrontendPorts = [
147
155
  { name: "80", port: 80 },
@@ -153,7 +161,7 @@ class Gateway extends core_azure_1.AzureResource {
153
161
  // Create the Application Gateway
154
162
  const apgw = new application_gateway_1.ApplicationGateway(this, "ApplicationGateway", {
155
163
  name: props.name,
156
- resourceGroupName: props.resourceGroup.name,
164
+ resourceGroupName: this.resourceGroup.name,
157
165
  location: props.location,
158
166
  sslCertificate: props.sslCertificate,
159
167
  sslPolicy: props.sslPolicy,
@@ -190,10 +198,9 @@ class Gateway extends core_azure_1.AzureResource {
190
198
  tags: props.tags,
191
199
  });
192
200
  this.id = apgw.id;
193
- this.resourceGroup = props.resourceGroup;
194
201
  }
195
202
  }
196
203
  exports.Gateway = Gateway;
197
204
  _a = JSII_RTTI_SYMBOL_1;
198
- Gateway[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_applicationgateway.Gateway", version: "0.0.3-pre.10" };
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1hcHBsaWNhdGlvbmdhdGV3YXkvbGliL2dhdGV3YXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5RkFBcUY7QUFHckYsaUdBQTRGO0FBSTVGLCtGQUEwRjtBQUUxRixtREFBbUQ7QUFDbkQsaURBQWlEO0FBd01qRCxpREFBaUQ7QUFDakQsTUFBYSxPQUFRLFNBQVEsMEJBQWE7SUFJeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTJFRztJQUVILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixzQkFBc0I7UUFDdEIsSUFBSSxRQUFRLENBQUM7UUFFYiwrREFBK0Q7UUFDL0QsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxzREFBc0Q7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSw2Q0FBb0IsQ0FDOUMsSUFBSSxFQUNKLGlCQUFpQixFQUNqQjtnQkFDRSxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUN4QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUk7Z0JBQzNDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTthQUN6QixDQUNGLENBQUM7WUFFRixRQUFRLEdBQUc7Z0JBQ1QsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxFQUFFLGNBQWM7YUFDckIsQ0FBQztZQUVGLElBQUksK0NBQXFCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtnQkFDeEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFD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Q3BDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyx3QkFBd0I7WUFDeEQsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ2xDLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ25CLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDbkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3pCO1lBQ0Qsc0JBQXNCLEVBQUU7Z0JBQ3RCO29CQUNFLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtvQkFDM0IsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksZ0JBQWdCO2lCQUNwQzthQUNGO1lBQ0QsWUFBWSxFQUFFLGFBQWE7WUFDM0IsdUJBQXVCLEVBQUUsaUJBQWlCO1lBQzFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDN0MsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM5QyxZQUFZLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDakMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7WUFDcEQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM3QyxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRO1lBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUMzQyxDQUFDOztBQTdNSCwwQkE4TUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvbkdhdGV3YXkgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2FwcGxpY2F0aW9uLWdhdGV3YXlcIjtcbmltcG9ydCAqIGFzIGF6YXBndyBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2FwcGxpY2F0aW9uLWdhdGV3YXlcIjtcbmltcG9ydCB7IEtleVZhdWx0IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9rZXktdmF1bHRcIjtcbmltcG9ydCB7IEtleVZhdWx0QWNjZXNzUG9saWN5QSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva2V5LXZhdWx0LWFjY2Vzcy1wb2xpY3lcIjtcbmltcG9ydCB7IFB1YmxpY0lwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wdWJsaWMtaXBcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBTdWJuZXQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3N1Ym5ldFwiO1xuaW1wb3J0IHsgVXNlckFzc2lnbmVkSWRlbnRpdHkgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3VzZXItYXNzaWduZWQtaWRlbnRpdHlcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyB2bmV0IGZyb20gXCIuLi8uLi9henVyZS12aXJ0dWFsbmV0d29ya1wiO1xuaW1wb3J0IHsgQXp1cmVSZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlXCI7XG5cbi8vIERlZmluZSB0aGUgaW50ZXJmYWNlIGZvciBBcHBsaWNhdGlvbiBHYXRld2F5IHByb3BlcnRpZXNcbmV4cG9ydCBpbnRlcmZhY2UgSUdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwdWJsaWMgSVAgYWRkcmVzcyBmb3IgdGhlIGZyb250ZW5kIG9mIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcHVibGljSXBBZGRyZXNzPzogUHVibGljSXA7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHByaXZhdGUgSVAgYWRkcmVzcyBmb3IgdGhlIGZyb250ZW5kIG9mIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcHJpdmF0ZUlwQWRkcmVzcz86IHN0cmluZztcblxuICAvKipcbiAgICogQWxsb2NhdGlvbiBtZXRob2QgZm9yIHRoZSBwcml2YXRlIElQIGFkZHJlc3MgKGUuZy4sIFN0YXRpYywgRHluYW1pYykuXG4gICAqL1xuICBwcml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgQXBwbGljYXRpb24gR2F0ZXdheSB3aWxsIGJlIGRlcGxveWVkIChlLmcuLCByZWdpb24pLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIGdyb3VwIHVuZGVyIHdoaWNoIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5IHdpbGwgYmUgZGVwbG95ZWQuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgU0tVIHRpZXIgb2YgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkgKGUuZy4sIFN0YW5kYXJkLCBXQUYpLlxuICAgKi9cbiAgcmVhZG9ubHkgc2t1VGllcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgU0tVIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHNrdVNpemU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNhcGFjaXR5IChpbnN0YW5jZSBjb3VudCkgb2YgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBjYXBhY2l0eTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFja2VuZCBhZGRyZXNzIHBvb2xzIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IGJhY2tlbmRBZGRyZXNzUG9vbHM6IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlCYWNrZW5kQWRkcmVzc1Bvb2xbXTtcblxuICAvKipcbiAgICogVGhlIGJhY2tlbmQgSFRUUCBzZXR0aW5ncyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kSHR0cFNldHRpbmdzOiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5QmFja2VuZEh0dHBTZXR0aW5nc1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBmcm9udGVuZCBwb3J0cyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBmcm9udGVuZFBvcnRzPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheUZyb250ZW5kUG9ydFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgSFRUUCBsaXN0ZW5lcnMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cExpc3RlbmVyczogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheUh0dHBMaXN0ZW5lcltdO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVxdWVzdCByb3V0aW5nIHJ1bGVzIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RSb3V0aW5nUnVsZXM6IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlSZXF1ZXN0Um91dGluZ1J1bGVbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgc3VibmV0IGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldD86IFN1Ym5ldDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGVuYW50IElEIGZvciB1c2Ugd2l0aCBLZXkgVmF1bHQsIGlmIGFwcGxpY2FibGUuXG4gICAqL1xuICByZWFkb25seSB0ZW5hbnRJZD86IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyB0byBlbmFibGUgSFRUUDIuXG4gICAqL1xuICByZWFkb25seSBlbmFibGVIdHRwMj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEZsYWcgdG8gZW5hYmxlIEZJUFMtY29tcGxpYW50IGFsZ29yaXRobXMuXG4gICAqL1xuICByZWFkb25seSBmaXBzRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIElEIG9mIHRoZSBmaXJld2FsbCBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBmaXJld2FsbFBvbGljeUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGbGFnIHRvIGVuZm9yY2UgYXNzb2NpYXRpb24gb2YgdGhlIGZpcmV3YWxsIHBvbGljeS5cbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlRmlyZXdhbGxQb2xpY3lBc3NvY2lhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRhZ3MgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5IHJlc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGF2YWlsYWJpbGl0eSB6b25lcyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSB6b25lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBLZXkgVmF1bHQgcmVzb3VyY2UgZm9yIHN0b3JpbmcgU1NMIGNlcnRpZmljYXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IGtleVZhdWx0PzogS2V5VmF1bHQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGNlcnRpZmljYXRlcyBmb3IgbXV0dWFsIGF1dGhlbnRpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZT86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlBdXRoZW50aWNhdGlvbkNlcnRpZmljYXRlW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGF1dG9zY2FsZSBjb25maWd1cmF0aW9uIGZvciBkeW5hbWljYWxseSBhZGp1c3RpbmcgdGhlIGNhcGFjaXR5IG9mIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b3NjYWxlQ29uZmlndXJhdGlvbj86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlBdXRvc2NhbGVDb25maWd1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gZXJyb3IgY29uZmlndXJhdGlvbnMgdG8gc3BlY2lmeSBjdXN0b20gZXJyb3IgcGFnZXMuXG4gICAqL1xuICByZWFkb25seSBjdXN0b21FcnJvckNvbmZpZ3VyYXRpb24/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5Q3VzdG9tRXJyb3JDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGlkZW50aXR5IGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheSwgdXNlZCBmb3IgYWNjZXNzaW5nIG90aGVyIEF6dXJlIHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5PzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheUlkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjb25maWd1cmF0aW9ucyBmb3IgZW5hYmxpbmcgUHJpdmF0ZSBMaW5rIG9uIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZUxpbmtDb25maWd1cmF0aW9uPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVByaXZhdGVMaW5rQ29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwcm9iZXMgZm9yIGhlYWx0aCBjaGVja3Mgb2YgdGhlIGJhY2tlbmQgSFRUUCBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IHByb2JlPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVByb2JlW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb25zIGZvciByZWRpcmVjdCBydWxlcy5cbiAgICovXG4gIHJlYWRvbmx5IHJlZGlyZWN0Q29uZmlndXJhdGlvbj86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlSZWRpcmVjdENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgcmV3cml0ZSBydWxlIHNldHMgZm9yIG1vZGlmeWluZyBIVFRQIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGhlYWRlcnMgYW5kIGJvZGllcy5cbiAgICovXG4gIHJlYWRvbmx5IHJld3JpdGVSdWxlU2V0PzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVJld3JpdGVSdWxlU2V0W107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIFNTTCBjZXJ0aWZpY2F0ZXMgZm9yIGVuYWJsaW5nIEhUVFBTIG9uIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3NsQ2VydGlmaWNhdGU/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5U3NsQ2VydGlmaWNhdGVbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgU1NMIHBvbGljeSBjb25maWd1cmF0aW9ucywgZGVmaW5pbmcgdGhlIHByb3RvY29sIGFuZCBjaXBoZXIgc3VpdGVzIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBzc2xQb2xpY3k/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5U3NsUG9saWN5O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBTU0wgcHJvZmlsZXMgZm9yIG1hbmFnaW5nIFNTTCB0ZXJtaW5hdGlvbiBhbmQgcG9saWN5IHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3NsUHJvZmlsZT86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlTc2xQcm9maWxlW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRpbWVvdXQgc2V0dGluZ3MgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5IHJlc291cmNlcy5cbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXRzPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVRpbWVvdXRzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB0cnVzdGVkIGNsaWVudCBjZXJ0aWZpY2F0ZXMgZm9yIG11dHVhbCBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRydXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZT86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlUcnVzdGVkQ2xpZW50Q2VydGlmaWNhdGVbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdHJ1c3RlZCByb290IGNlcnRpZmljYXRlcyBmb3IgYmFja2VuZCBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRydXN0ZWRSb290Q2VydGlmaWNhdGU/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5VHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZVtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBVUkwgcGF0aCBtYXAgZm9yIHJvdXRpbmcgYmFzZWQgb24gVVJMIHBhdGhzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXJsUGF0aE1hcD86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlVcmxQYXRoTWFwW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIFdlYiBBcHBsaWNhdGlvbiBGaXJld2FsbCAoV0FGKSBjb25maWd1cmF0aW9uIHRvIHByb3ZpZGUgZW5oYW5jZWQgc2VjdXJpdHkuXG4gICAqL1xuICByZWFkb25seSB3YWZDb25maWd1cmF0aW9uPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVdhZkNvbmZpZ3VyYXRpb247XG59XG5cbi8vIERlZmluZSB0aGUgY2xhc3MgZm9yIEF6dXJlIEFwcGxpY2F0aW9uIEdhdGV3YXlcbmV4cG9ydCBjbGFzcyBHYXRld2F5IGV4dGVuZHMgQXp1cmVSZXNvdXJjZSB7XG4gIHB1YmxpYyByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBBenVyZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhpcyBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyB0aGUgQXp1cmUgQXBwbGljYXRpb24gR2F0ZXdheS4gVGhlIHByb3BlcnRpZXMgaW5jbHVkZTpcbiAgICogICAgICAgICAgICAgICAgLSBgbmFtZWA6IFJlcXVpcmVkLiBVbmlxdWUgbmFtZSBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkgd2l0aGluIEF6dXJlLlxuICAgKiAgICAgICAgICAgICAgICAtIGBsb2NhdGlvbmA6IFJlcXVpcmVkLiBBenVyZSBSZWdpb24gZm9yIGRlcGxveW1lbnQuXG4gICAqICAgICAgICAgICAgICAgIC0gYHJlc291cmNlR3JvdXBgOiBSZXF1aXJlZC4gUmVmZXJlbmNlIHRvIHRoZSByZXNvdXJjZSBncm91cCBmb3IgZGVwbG95bWVudC5cbiAgICogICAgICAgICAgICAgICAgLSBgc2t1VGllcmA6IFJlcXVpcmVkLiBTS1UgdGllciBvZiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheSAoZS5nLiwgU3RhbmRhcmQsIFdBRikuXG4gICAqICAgICAgICAgICAgICAgIC0gYHNrdVNpemVgOiBSZXF1aXJlZC4gU2l6ZSBvZiB0aGUgU0tVIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICogICAgICAgICAgICAgICAgLSBgY2FwYWNpdHlgOiBSZXF1aXJlZC4gQ2FwYWNpdHkgKGluc3RhbmNlIGNvdW50KSBvZiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICogICAgICAgICAgICAgICAgLSBgYmFja2VuZEFkZHJlc3NQb29sc2A6IFJlcXVpcmVkLiBCYWNrZW5kIGFkZHJlc3MgcG9vbHMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKiAgICAgICAgICAgICAgICAtIGBiYWNrZW5kSHR0cFNldHRpbmdzYDogUmVxdWlyZWQuIEJhY2tlbmQgSFRUUCBzZXR0aW5ncyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqICAgICAgICAgICAgICAgIC0gYGh0dHBMaXN0ZW5lcnNgOiBSZXF1aXJlZC4gSFRUUCBsaXN0ZW5lcnMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKiAgICAgICAgICAgICAgICAtIGByZXF1ZXN0Um91dGluZ1J1bGVzYDogUmVxdWlyZWQuIFJlcXVlc3Qgcm91dGluZyBydWxlcyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqICAgICAgICAgICAgICAgIC0gYHB1YmxpY0lwQWRkcmVzc2A6IE9wdGlvbmFsLiBQdWJsaWMgSVAgYWRkcmVzcyBmb3IgdGhlIGZyb250ZW5kLlxuICAgKiAgICAgICAgICAgICAgICAtIGBwcml2YXRlSXBBZGRyZXNzYDogT3B0aW9uYWwuIFByaXZhdGUgSVAgYWRkcmVzcyBmb3IgdGhlIGZyb250ZW5kLlxuICAgKiAgICAgICAgICAgICAgICAtIGBwcml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbmA6IE9wdGlvbmFsLiBBbGxvY2F0aW9uIG1ldGhvZCBmb3IgdGhlIHByaXZhdGUgSVAgKFN0YXRpYywgRHluYW1pYykuXG4gICAqICAgICAgICAgICAgICAgIC0gYGZyb250ZW5kUG9ydHNgOiBPcHRpb25hbC4gRnJvbnRlbmQgcG9ydHMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKiAgICAgICAgICAgICAgICAtIGBzdWJuZXRgOiBPcHRpb25hbC4gU3VibmV0IGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICogICAgICAgICAgICAgICAgLSBgZW5hYmxlSHR0cDJgOiBPcHRpb25hbC4gRmxhZyB0byBlbmFibGUgSFRUUDIuXG4gICAqICAgICAgICAgICAgICAgIC0gYGZpcHNFbmFibGVkYDogT3B0aW9uYWwuIEZsYWcgdG8gZW5hYmxlIEZJUFMtY29tcGxpYW50IGFsZ29yaXRobXMuXG4gICAqICAgICAgICAgICAgICAgIC0gYGZpcmV3YWxsUG9saWN5SWRgOiBPcHRpb25hbC4gSUQgb2YgdGhlIGZpcmV3YWxsIHBvbGljeS5cbiAgICogICAgICAgICAgICAgICAgLSBgZm9yY2VGaXJld2FsbFBvbGljeUFzc29jaWF0aW9uYDogT3B0aW9uYWwuIEZsYWcgdG8gZW5mb3JjZSBhc3NvY2lhdGlvbiBvZiB0aGUgZmlyZXdhbGwgcG9saWN5LlxuICAgKiAgICAgICAgICAgICAgICAtIGB0YWdzYDogT3B0aW9uYWwuIFRhZ3MgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQuXG4gICAqICAgICAgICAgICAgICAgIC0gQWRkaXRpb25hbCBvcHRpb25hbCBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbiBgSUdhdGV3YXlQcm9wc2AgaW50ZXJmYWNlLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIG5ldyBHYXRld2F5KHRoaXMsICdhcHBHYXRld2F5MScsIHtcbiAgICogICBuYW1lOiAnZ2F0ZXdheUVhc3QnLFxuICAgKiAgIHJlc291cmNlR3JvdXA6IHJlc291cmNlR3JvdXAsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHNrdVRpZXI6IFwiU3RhbmRhcmRfdjJcIixcbiAgICAgIHNrdVNpemU6IFwiU3RhbmRhcmRfdjJcIixcbiAgICAgIGNhcGFjaXR5OiAyLFxuICAgICAgcHVibGljSXBBZGRyZXNzOiBwdWJsaWNJcCxcbiAgICAgIHN1Ym5ldDogc3VibmV0LFxuICAgICAgYmFja2VuZEFkZHJlc3NQb29sczogW1xuICAgICAgICB7IG5hbWU6IFwiYmFja2VuZC1hZGRyZXNzLXBvb2wtMVwiIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImJhY2tlbmQtYWRkcmVzcy1wb29sLTJcIixcbiAgICAgICAgICBpcEFkZHJlc3NlczogW1wiMTAuMS4wLjRcIiwgXCIxMC4xLjAuNVwiLCBcIjEwLjEuMC42XCJdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGh0dHBMaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaHR0cC1saXN0ZW5lclwiLFxuICAgICAgICAgIGZyb250ZW5kUG9ydE5hbWU6IFwiODBcIixcbiAgICAgICAgICBmcm9udGVuZElwQ29uZmlndXJhdGlvbk5hbWU6IFwiUHVibGljLWZyb250ZW5kLWlwLWNvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgICBwcm90b2NvbDogXCJIdHRwXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYmFja2VuZEh0dHBTZXR0aW5nczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJiYWNrZW5kLWh0dHAtc2V0dGluZ1wiLFxuICAgICAgICAgIHBvcnQ6IDgwLFxuICAgICAgICAgIHByb3RvY29sOiBcIkh0dHBcIixcbiAgICAgICAgICByZXF1ZXN0VGltZW91dDogMjAsXG4gICAgICAgICAgY29va2llQmFzZWRBZmZpbml0eTogXCJEaXNhYmxlZFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJlcXVlc3RSb3V0aW5nUnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicmVxdWVzdC1yb3V0aW5nLXJ1bGUtMVwiLFxuICAgICAgICAgIGh0dHBMaXN0ZW5lck5hbWU6IFwiaHR0cC1saXN0ZW5lclwiLFxuICAgICAgICAgIHByaW9yaXR5OiAxLFxuICAgICAgICAgIGJhY2tlbmRBZGRyZXNzUG9vbE5hbWU6IFwiYmFja2VuZC1hZGRyZXNzLXBvb2wtMVwiLFxuICAgICAgICAgIGJhY2tlbmRIdHRwU2V0dGluZ3NOYW1lOiBcImJhY2tlbmQtaHR0cC1zZXR0aW5nXCIsXG4gICAgICAgICAgcnVsZVR5cGU6IFwiQmFzaWNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gRGVmaW5lIHRoZSBpZGVudGl0eVxuICAgIGxldCBpZGVudGl0eTtcblxuICAgIC8vIENoZWNrIGlmIEF6dXJlIEtleSBWYXVsdCBpcyB1c2VkIGFuZCBubyBpZGVudGl0eSBpcyBwcm92aWRlZFxuICAgIGlmIChwcm9wcy5rZXlWYXVsdCAmJiAhcHJvcHMuaWRlbnRpdHkpIHtcbiAgICAgIC8vIENyZWF0ZSBhIG1hbmFnZWQgaWRlbnRpdHkgYW5kIGFkZCBpdCB0byBpZGVudGl0eUlkc1xuICAgICAgY29uc3QgbWFuYWdlZElkZW50aXR5ID0gbmV3IFVzZXJBc3NpZ25lZElkZW50aXR5KFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIk1hbmFnZWRJZGVudGl0eVwiLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogYG1pLSR7cHJvcHMubmFtZX1gLFxuICAgICAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgaWRlbnRpdHkgPSB7XG4gICAgICAgIGlkZW50aXR5SWRzOiBbbWFuYWdlZElkZW50aXR5LmlkXSxcbiAgICAgICAgdHlwZTogXCJVc2VyQXNzaWduZWRcIixcbiAgICAgIH07XG5cbiAgICAgIG5ldyBLZXlWYXVsdEFjY2Vzc1BvbGljeUEodGhpcywgXCJwb2xpY3lcIiwge1xuICAgICAgICBrZXlWYXVsdElkOiBwcm9wcy5rZXlWYXVsdC5pZCxcbiAgICAgICAgdGVuYW50SWQ6IHByb3BzLnRlbmFudElkIHx8IFwiXCIsXG4gICAgICAgIG9iamVjdElkOiBtYW5hZ2VkSWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICAgIHNlY3JldFBlcm1pc3Npb25zOiBbXCJHZXRcIiwgXCJMaXN0XCJdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBzdWJuZXRJZDpcbiAgICAgICAgcHJvcHMuc3VibmV0Py5pZCB8fFxuICAgICAgICBuZXcgdm5ldC5OZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAgICAgcmVzb3VyY2VHcm91cDogcHJvcHMucmVzb3VyY2VHcm91cCxcbiAgICAgICAgfSkuc3VibmV0cy5kZWZhdWx0LmlkLFxuICAgICAgaWRlbnRpdHk6IHByb3BzLmlkZW50aXR5IHx8IGlkZW50aXR5LFxuICAgIH07XG5cbiAgICAvLyBXQUYgY29uZmlndXJhdGlvblxuICAgIGxldCB3YWZDb25maWd1cmF0aW9uID0gcHJvcHMud2FmQ29uZmlndXJhdGlvblxuICAgICAgPyB7XG4gICAgICAgICAgZW5hYmxlZDogcHJvcHMud2FmQ29uZmlndXJhdGlvbi5lbmFibGVkLFxuICAgICAgICAgIGZpcmV3YWxsTW9kZTogcHJvcHMud2FmQ29uZmlndXJhdGlvbi5maXJld2FsbE1vZGUgfHwgXCJEZXRlY3Rpb25cIixcbiAgICAgICAgICBydWxlU2V0VmVyc2lvbjogcHJvcHMud2FmQ29uZmlndXJhdGlvbi5ydWxlU2V0VmVyc2lvbiB8fCBcIjMuMFwiLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIC8vIER5bmFtaWNhbGx5IGNyZWF0ZSBmcm9udGVuZCBJUCBjb25maWd1cmF0aW9uc1xuICAgIGxldCBmcm9udGVuZElwQ29uZmlncyA9IFtdO1xuXG4gICAgLy8gUHVibGljIElQIGNvbmZpZ3VyYXRpb25cbiAgICBpZiAocHJvcHMucHVibGljSXBBZGRyZXNzKSB7XG4gICAgICBmcm9udGVuZElwQ29uZmlncy5wdXNoKHtcbiAgICAgICAgbmFtZTogXCJQdWJsaWMtZnJvbnRlbmQtaXAtY29uZmlndXJhdGlvblwiLFxuICAgICAgICBwdWJsaWNJcEFkZHJlc3NJZDogcHJvcHMucHVibGljSXBBZGRyZXNzLmlkLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gUHJpdmF0ZSBJUCBjb25maWd1cmF0aW9uXG4gICAgaWYgKHByb3BzLnByaXZhdGVJcEFkZHJlc3MgfHwgcHJvcHMucHJpdmF0ZUlwQWRkcmVzc0FsbG9jYXRpb24pIHtcbiAgICAgIGZyb250ZW5kSXBDb25maWdzLnB1c2goe1xuICAgICAgICBuYW1lOiBcIlByaXZhdGUtZnJvbnRlbmQtaXAtY29uZmlndXJhdGlvblwiLFxuICAgICAgICBzdWJuZXRJZDogZGVmYXVsdHMuc3VibmV0SWQsXG4gICAgICAgIHByaXZhdGVJcEFkZHJlc3M6IHByb3BzLnByaXZhdGVJcEFkZHJlc3MsXG4gICAgICAgIHByaXZhdGVJcEFkZHJlc3NBbGxvY2F0aW9uOiBwcm9wcy5wcml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0IGZyb250ZW5kIHBvcnRzIGlmIG5vdCBwcm92aWRlZFxuICAgIGNvbnN0IGRlZmF1bHRGcm9udGVuZFBvcnRzID0gW1xuICAgICAgeyBuYW1lOiBcIjgwXCIsIHBvcnQ6IDgwIH0sXG4gICAgICB7IG5hbWU6IFwiNDQzXCIsIHBvcnQ6IDQ0MyB9LFxuICAgIF07XG5cbiAgICBjb25zdCBmcm9udGVuZFBvcnRzID1cbiAgICAgIHByb3BzLmZyb250ZW5kUG9ydHMgJiYgcHJvcHMuZnJvbnRlbmRQb3J0cy5sZW5ndGggPiAwXG4gICAgICAgID8gcHJvcHMuZnJvbnRlbmRQb3J0c1xuICAgICAgICA6IGRlZmF1bHRGcm9udGVuZFBvcnRzO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5XG4gICAgY29uc3QgYXBndyA9IG5ldyBBcHBsaWNhdGlvbkdhdGV3YXkodGhpcywgXCJBcHBsaWNhdGlvbkdhdGV3YXlcIiwge1xuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24sXG4gICAgICBzc2xDZXJ0aWZpY2F0ZTogcHJvcHMuc3NsQ2VydGlmaWNhdGUsXG4gICAgICBzc2xQb2xpY3k6IHByb3BzLnNzbFBvbGljeSxcbiAgICAgIHNzbFByb2ZpbGU6IHByb3BzLnNzbFByb2ZpbGUsXG4gICAgICBhdXRoZW50aWNhdGlvbkNlcnRpZmljYXRlOiBwcm9wcy5hdXRoZW50aWNhdGlvbkNlcnRpZmljYXRlLFxuICAgICAgYXV0b3NjYWxlQ29uZmlndXJhdGlvbjogcHJvcHMuYXV0b3NjYWxlQ29uZmlndXJhdGlvbixcbiAgICAgIGN1c3RvbUVycm9yQ29uZmlndXJhdGlvbjogcHJvcHMuY3VzdG9tRXJyb3JDb25maWd1cmF0aW9uLFxuICAgICAgcmVkaXJlY3RDb25maWd1cmF0aW9uOiBwcm9wcy5yZWRpcmVjdENvbmZpZ3VyYXRpb24sXG4gICAgICByZXdyaXRlUnVsZVNldDogcHJvcHMucmV3cml0ZVJ1bGVTZXQsXG4gICAgICBwcml2YXRlTGlua0NvbmZpZ3VyYXRpb246IHByb3BzLnByaXZhdGVMaW5rQ29uZmlndXJhdGlvbixcbiAgICAgIHdhZkNvbmZpZ3VyYXRpb246IHdhZkNvbmZpZ3VyYXRpb24sXG4gICAgICBza3U6IHtcbiAgICAgICAgbmFtZTogcHJvcHMuc2t1U2l6ZSxcbiAgICAgICAgdGllcjogcHJvcHMuc2t1VGllcixcbiAgICAgICAgY2FwYWNpdHk6IHByb3BzLmNhcGFjaXR5LFxuICAgICAgfSxcbiAgICAgIGdhdGV3YXlJcENvbmZpZ3VyYXRpb246IFtcbiAgICAgICAge1xuICAgICAgICAgIHN1Ym5ldElkOiBkZWZhdWx0cy5zdWJuZXRJZCxcbiAgICAgICAgICBuYW1lOiBgJHtwcm9wcy5uYW1lfS1jb25maWd1cmF0aW9uYCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBmcm9udGVuZFBvcnQ6IGZyb250ZW5kUG9ydHMsXG4gICAgICBmcm9udGVuZElwQ29uZmlndXJhdGlvbjogZnJvbnRlbmRJcENvbmZpZ3MsXG4gICAgICBiYWNrZW5kQWRkcmVzc1Bvb2w6IHByb3BzLmJhY2tlbmRBZGRyZXNzUG9vbHMsXG4gICAgICBiYWNrZW5kSHR0cFNldHRpbmdzOiBwcm9wcy5iYWNrZW5kSHR0cFNldHRpbmdzLFxuICAgICAgaHR0cExpc3RlbmVyOiBwcm9wcy5odHRwTGlzdGVuZXJzLFxuICAgICAgdXJsUGF0aE1hcDogcHJvcHMudXJsUGF0aE1hcCxcbiAgICAgIHRydXN0ZWRSb290Q2VydGlmaWNhdGU6IHByb3BzLnRydXN0ZWRSb290Q2VydGlmaWNhdGUsXG4gICAgICByZXF1ZXN0Um91dGluZ1J1bGU6IHByb3BzLnJlcXVlc3RSb3V0aW5nUnVsZXMsXG4gICAgICBwcm9iZTogcHJvcHMucHJvYmUsXG4gICAgICBpZGVudGl0eTogZGVmYXVsdHMuaWRlbnRpdHksXG4gICAgICB6b25lczogcHJvcHMuem9uZXMsXG4gICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pZCA9IGFwZ3cuaWQ7XG4gICAgdGhpcy5yZXNvdXJjZUdyb3VwID0gcHJvcHMucmVzb3VyY2VHcm91cDtcbiAgfVxufVxuIl19
205
+ Gateway[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_applicationgateway.Gateway", version: "0.0.3-pre.12" };
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2F0ZXdheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1hcHBsaWNhdGlvbmdhdGV3YXkvbGliL2dhdGV3YXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5RkFBcUY7QUFHckYsaUdBQTRGO0FBSTVGLCtGQUEwRjtBQUUxRixtREFBbUQ7QUFDbkQsaURBQWlEO0FBeU1qRCxpREFBaUQ7QUFDakQsTUFBYSxPQUFRLFNBQVEsMEJBQWE7SUFLeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTJFRztJQUVILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwRCxzQkFBc0I7UUFDdEIsSUFBSSxRQUFRLENBQUM7UUFFYiwrREFBK0Q7UUFDL0QsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNyQyxzREFBc0Q7WUFDdEQsTUFBTSxlQUFlLEdBQUcsSUFBSSw2Q0FBb0IsQ0FDOUMsSUFBSSxFQUNKLGlCQUFpQixFQUNqQjtnQkFDRSxJQUFJLEVBQUUsTUFBTSxLQUFLLENBQUMsSUFBSSxFQUFFO2dCQUN4QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUk7Z0JBQzFDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTthQUN6QixDQUNGLENBQUM7WUFFRixRQUFRLEdBQUc7Z0JBQ1QsV0FBVyxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxFQUFFLGNBQWM7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UUFFSCxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7QUF4TkgsMEJBeU5DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25HYXRld2F5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9hcHBsaWNhdGlvbi1nYXRld2F5XCI7XG5pbXBvcnQgKiBhcyBhemFwZ3cgZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9hcHBsaWNhdGlvbi1nYXRld2F5XCI7XG5pbXBvcnQgeyBLZXlWYXVsdCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva2V5LXZhdWx0XCI7XG5pbXBvcnQgeyBLZXlWYXVsdEFjY2Vzc1BvbGljeUEgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2tleS12YXVsdC1hY2Nlc3MtcG9saWN5XCI7XG5pbXBvcnQgeyBQdWJsaWNJcCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcHVibGljLWlwXCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yZXNvdXJjZS1ncm91cFwiO1xuaW1wb3J0IHsgU3VibmV0IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9zdWJuZXRcIjtcbmltcG9ydCB7IFVzZXJBc3NpZ25lZElkZW50aXR5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi91c2VyLWFzc2lnbmVkLWlkZW50aXR5XCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgdm5ldCBmcm9tIFwiLi4vLi4vYXp1cmUtdmlydHVhbG5ldHdvcmtcIjtcbmltcG9ydCB7IEF6dXJlUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZVwiO1xuXG4vLyBEZWZpbmUgdGhlIGludGVyZmFjZSBmb3IgQXBwbGljYXRpb24gR2F0ZXdheSBwcm9wZXJ0aWVzXG5leHBvcnQgaW50ZXJmYWNlIElHYXRld2F5UHJvcHMge1xuICAvKipcbiAgICogT3B0aW9uYWwgcHVibGljIElQIGFkZHJlc3MgZm9yIHRoZSBmcm9udGVuZCBvZiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHB1YmxpY0lwQWRkcmVzcz86IFB1YmxpY0lwO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwcml2YXRlIElQIGFkZHJlc3MgZm9yIHRoZSBmcm9udGVuZCBvZiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHByaXZhdGVJcEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRpb24gbWV0aG9kIGZvciB0aGUgcHJpdmF0ZSBJUCBhZGRyZXNzIChlLmcuLCBTdGF0aWMsIER5bmFtaWMpLlxuICAgKi9cbiAgcHJpdmF0ZUlwQWRkcmVzc0FsbG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jYXRpb24gd2hlcmUgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkgd2lsbCBiZSBkZXBsb3llZCAoZS5nLiwgcmVnaW9uKS5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIG9wdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgcmVzb3VyY2UgZ3JvdXAgaW4gd2hpY2ggdG8gZGVwbG95IHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5IHdpbGwgYmUgZGVwbG95ZWQgaW4gdGhlIGRlZmF1bHQgcmVzb3VyY2UgZ3JvdXAuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwPzogUmVzb3VyY2VHcm91cDtcblxuICAvKipcbiAgICogVGhlIFNLVSB0aWVyIG9mIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5IChlLmcuLCBTdGFuZGFyZCwgV0FGKS5cbiAgICovXG4gIHJlYWRvbmx5IHNrdVRpZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIFNLVSBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBza3VTaXplOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXBhY2l0eSAoaW5zdGFuY2UgY291bnQpIG9mIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwYWNpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGJhY2tlbmQgYWRkcmVzcyBwb29scyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBiYWNrZW5kQWRkcmVzc1Bvb2xzOiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5QmFja2VuZEFkZHJlc3NQb29sW107XG5cbiAgLyoqXG4gICAqIFRoZSBiYWNrZW5kIEhUVFAgc2V0dGluZ3MgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgYmFja2VuZEh0dHBTZXR0aW5nczogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheUJhY2tlbmRIdHRwU2V0dGluZ3NbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZnJvbnRlbmQgcG9ydHMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbnRlbmRQb3J0cz86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlGcm9udGVuZFBvcnRbXTtcblxuICAvKipcbiAgICogVGhlIEhUVFAgbGlzdGVuZXJzIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBMaXN0ZW5lcnM6IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlIdHRwTGlzdGVuZXJbXTtcblxuICAvKipcbiAgICogVGhlIHJlcXVlc3Qgcm91dGluZyBydWxlcyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSByZXF1ZXN0Um91dGluZ1J1bGVzOiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5UmVxdWVzdFJvdXRpbmdSdWxlW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN1Ym5ldCBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXQ/OiBTdWJuZXQ7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRlbmFudCBJRCBmb3IgdXNlIHdpdGggS2V5IFZhdWx0LCBpZiBhcHBsaWNhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGVuYW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZsYWcgdG8gZW5hYmxlIEhUVFAyLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSHR0cDI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGbGFnIHRvIGVuYWJsZSBGSVBTLWNvbXBsaWFudCBhbGdvcml0aG1zLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlwc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBJRCBvZiB0aGUgZmlyZXdhbGwgcG9saWN5LlxuICAgKi9cbiAgcmVhZG9ubHkgZmlyZXdhbGxQb2xpY3lJZD86IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyB0byBlbmZvcmNlIGFzc29jaWF0aW9uIG9mIHRoZSBmaXJld2FsbCBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBmb3JjZUZpcmV3YWxsUG9saWN5QXNzb2NpYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB0YWdzIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheSByZXNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhdmFpbGFiaWxpdHkgem9uZXMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgem9uZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgS2V5IFZhdWx0IHJlc291cmNlIGZvciBzdG9yaW5nIFNTTCBjZXJ0aWZpY2F0ZXMuXG4gICAqL1xuICByZWFkb25seSBrZXlWYXVsdD86IEtleVZhdWx0O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhdXRoZW50aWNhdGlvbiBjZXJ0aWZpY2F0ZXMgZm9yIG11dHVhbCBhdXRoZW50aWNhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGF1dGhlbnRpY2F0aW9uQ2VydGlmaWNhdGU/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5QXV0aGVudGljYXRpb25DZXJ0aWZpY2F0ZVtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhdXRvc2NhbGUgY29uZmlndXJhdGlvbiBmb3IgZHluYW1pY2FsbHkgYWRqdXN0aW5nIHRoZSBjYXBhY2l0eSBvZiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9zY2FsZUNvbmZpZ3VyYXRpb24/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5QXV0b3NjYWxlQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgY3VzdG9tIGVycm9yIGNvbmZpZ3VyYXRpb25zIHRvIHNwZWNpZnkgY3VzdG9tIGVycm9yIHBhZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRXJyb3JDb25maWd1cmF0aW9uPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheUN1c3RvbUVycm9yQ29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBpZGVudGl0eSBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXksIHVzZWQgZm9yIGFjY2Vzc2luZyBvdGhlciBBenVyZSByZXNvdXJjZXMuXG4gICAqL1xuICByZWFkb25seSBpZGVudGl0eT86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlJZGVudGl0eTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgY29uZmlndXJhdGlvbnMgZm9yIGVuYWJsaW5nIFByaXZhdGUgTGluayBvbiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVMaW5rQ29uZmlndXJhdGlvbj86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlQcml2YXRlTGlua0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgcHJvYmVzIGZvciBoZWFsdGggY2hlY2tzIG9mIHRoZSBiYWNrZW5kIEhUVFAgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSBwcm9iZT86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlQcm9iZVtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjb25maWd1cmF0aW9ucyBmb3IgcmVkaXJlY3QgcnVsZXMuXG4gICAqL1xuICByZWFkb25seSByZWRpcmVjdENvbmZpZ3VyYXRpb24/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5UmVkaXJlY3RDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHJld3JpdGUgcnVsZSBzZXRzIGZvciBtb2RpZnlpbmcgSFRUUCByZXF1ZXN0IGFuZCByZXNwb25zZSBoZWFkZXJzIGFuZCBib2RpZXMuXG4gICAqL1xuICByZWFkb25seSByZXdyaXRlUnVsZVNldD86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlSZXdyaXRlUnVsZVNldFtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBTU0wgY2VydGlmaWNhdGVzIGZvciBlbmFibGluZyBIVFRQUyBvbiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHNzbENlcnRpZmljYXRlPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVNzbENlcnRpZmljYXRlW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIFNTTCBwb2xpY3kgY29uZmlndXJhdGlvbnMsIGRlZmluaW5nIHRoZSBwcm90b2NvbCBhbmQgY2lwaGVyIHN1aXRlcyB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3NsUG9saWN5PzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVNzbFBvbGljeTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgU1NMIHByb2ZpbGVzIGZvciBtYW5hZ2luZyBTU0wgdGVybWluYXRpb24gYW5kIHBvbGljeSBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IHNzbFByb2ZpbGU/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5U3NsUHJvZmlsZVtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB0aW1lb3V0IHNldHRpbmdzIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheSByZXNvdXJjZXMuXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0cz86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlUaW1lb3V0cztcblxuICAvKipcbiAgICogT3B0aW9uYWwgdHJ1c3RlZCBjbGllbnQgY2VydGlmaWNhdGVzIGZvciBtdXR1YWwgYXV0aGVudGljYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0cnVzdGVkQ2xpZW50Q2VydGlmaWNhdGU/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5VHJ1c3RlZENsaWVudENlcnRpZmljYXRlW107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRydXN0ZWQgcm9vdCBjZXJ0aWZpY2F0ZXMgZm9yIGJhY2tlbmQgYXV0aGVudGljYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0cnVzdGVkUm9vdENlcnRpZmljYXRlPzogYXphcGd3LkFwcGxpY2F0aW9uR2F0ZXdheVRydXN0ZWRSb290Q2VydGlmaWNhdGVbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgVVJMIHBhdGggbWFwIGZvciByb3V0aW5nIGJhc2VkIG9uIFVSTCBwYXRocy5cbiAgICovXG4gIHJlYWRvbmx5IHVybFBhdGhNYXA/OiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5VXJsUGF0aE1hcFtdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBXZWIgQXBwbGljYXRpb24gRmlyZXdhbGwgKFdBRikgY29uZmlndXJhdGlvbiB0byBwcm92aWRlIGVuaGFuY2VkIHNlY3VyaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgd2FmQ29uZmlndXJhdGlvbj86IGF6YXBndy5BcHBsaWNhdGlvbkdhdGV3YXlXYWZDb25maWd1cmF0aW9uO1xufVxuXG4vLyBEZWZpbmUgdGhlIGNsYXNzIGZvciBBenVyZSBBcHBsaWNhdGlvbiBHYXRld2F5XG5leHBvcnQgY2xhc3MgR2F0ZXdheSBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IElHYXRld2F5UHJvcHM7XG4gIHB1YmxpYyByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBBenVyZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhpcyBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyB0aGUgQXp1cmUgQXBwbGljYXRpb24gR2F0ZXdheS4gVGhlIHByb3BlcnRpZXMgaW5jbHVkZTpcbiAgICogICAgICAgICAgICAgICAgLSBgbmFtZWA6IFJlcXVpcmVkLiBVbmlxdWUgbmFtZSBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkgd2l0aGluIEF6dXJlLlxuICAgKiAgICAgICAgICAgICAgICAtIGBsb2NhdGlvbmA6IFJlcXVpcmVkLiBBenVyZSBSZWdpb24gZm9yIGRlcGxveW1lbnQuXG4gICAqICAgICAgICAgICAgICAgIC0gYHJlc291cmNlR3JvdXBgOiBPcHRpb25hbC4gUmVmZXJlbmNlIHRvIHRoZSByZXNvdXJjZSBncm91cCBmb3IgZGVwbG95bWVudC5cbiAgICogICAgICAgICAgICAgICAgLSBgc2t1VGllcmA6IFJlcXVpcmVkLiBTS1UgdGllciBvZiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheSAoZS5nLiwgU3RhbmRhcmQsIFdBRikuXG4gICAqICAgICAgICAgICAgICAgIC0gYHNrdVNpemVgOiBSZXF1aXJlZC4gU2l6ZSBvZiB0aGUgU0tVIGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICogICAgICAgICAgICAgICAgLSBgY2FwYWNpdHlgOiBSZXF1aXJlZC4gQ2FwYWNpdHkgKGluc3RhbmNlIGNvdW50KSBvZiB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICogICAgICAgICAgICAgICAgLSBgYmFja2VuZEFkZHJlc3NQb29sc2A6IFJlcXVpcmVkLiBCYWNrZW5kIGFkZHJlc3MgcG9vbHMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKiAgICAgICAgICAgICAgICAtIGBiYWNrZW5kSHR0cFNldHRpbmdzYDogUmVxdWlyZWQuIEJhY2tlbmQgSFRUUCBzZXR0aW5ncyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqICAgICAgICAgICAgICAgIC0gYGh0dHBMaXN0ZW5lcnNgOiBSZXF1aXJlZC4gSFRUUCBsaXN0ZW5lcnMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKiAgICAgICAgICAgICAgICAtIGByZXF1ZXN0Um91dGluZ1J1bGVzYDogUmVxdWlyZWQuIFJlcXVlc3Qgcm91dGluZyBydWxlcyBmb3IgdGhlIEFwcGxpY2F0aW9uIEdhdGV3YXkuXG4gICAqICAgICAgICAgICAgICAgIC0gYHB1YmxpY0lwQWRkcmVzc2A6IE9wdGlvbmFsLiBQdWJsaWMgSVAgYWRkcmVzcyBmb3IgdGhlIGZyb250ZW5kLlxuICAgKiAgICAgICAgICAgICAgICAtIGBwcml2YXRlSXBBZGRyZXNzYDogT3B0aW9uYWwuIFByaXZhdGUgSVAgYWRkcmVzcyBmb3IgdGhlIGZyb250ZW5kLlxuICAgKiAgICAgICAgICAgICAgICAtIGBwcml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbmA6IE9wdGlvbmFsLiBBbGxvY2F0aW9uIG1ldGhvZCBmb3IgdGhlIHByaXZhdGUgSVAgKFN0YXRpYywgRHluYW1pYykuXG4gICAqICAgICAgICAgICAgICAgIC0gYGZyb250ZW5kUG9ydHNgOiBPcHRpb25hbC4gRnJvbnRlbmQgcG9ydHMgZm9yIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5LlxuICAgKiAgICAgICAgICAgICAgICAtIGBzdWJuZXRgOiBPcHRpb25hbC4gU3VibmV0IGZvciB0aGUgQXBwbGljYXRpb24gR2F0ZXdheS5cbiAgICogICAgICAgICAgICAgICAgLSBgZW5hYmxlSHR0cDJgOiBPcHRpb25hbC4gRmxhZyB0byBlbmFibGUgSFRUUDIuXG4gICAqICAgICAgICAgICAgICAgIC0gYGZpcHNFbmFibGVkYDogT3B0aW9uYWwuIEZsYWcgdG8gZW5hYmxlIEZJUFMtY29tcGxpYW50IGFsZ29yaXRobXMuXG4gICAqICAgICAgICAgICAgICAgIC0gYGZpcmV3YWxsUG9saWN5SWRgOiBPcHRpb25hbC4gSUQgb2YgdGhlIGZpcmV3YWxsIHBvbGljeS5cbiAgICogICAgICAgICAgICAgICAgLSBgZm9yY2VGaXJld2FsbFBvbGljeUFzc29jaWF0aW9uYDogT3B0aW9uYWwuIEZsYWcgdG8gZW5mb3JjZSBhc3NvY2lhdGlvbiBvZiB0aGUgZmlyZXdhbGwgcG9saWN5LlxuICAgKiAgICAgICAgICAgICAgICAtIGB0YWdzYDogT3B0aW9uYWwuIFRhZ3MgZm9yIHJlc291cmNlIG1hbmFnZW1lbnQuXG4gICAqICAgICAgICAgICAgICAgIC0gQWRkaXRpb25hbCBvcHRpb25hbCBwcm9wZXJ0aWVzIGFzIGRlc2NyaWJlZCBpbiBgSUdhdGV3YXlQcm9wc2AgaW50ZXJmYWNlLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIG5ldyBHYXRld2F5KHRoaXMsICdhcHBHYXRld2F5MScsIHtcbiAgICogICBuYW1lOiAnZ2F0ZXdheUVhc3QnLFxuICAgKiAgIHJlc291cmNlR3JvdXA6IHJlc291cmNlR3JvdXAsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHNrdVRpZXI6IFwiU3RhbmRhcmRfdjJcIixcbiAgICAgIHNrdVNpemU6IFwiU3RhbmRhcmRfdjJcIixcbiAgICAgIGNhcGFjaXR5OiAyLFxuICAgICAgcHVibGljSXBBZGRyZXNzOiBwdWJsaWNJcCxcbiAgICAgIHN1Ym5ldDogc3VibmV0LFxuICAgICAgYmFja2VuZEFkZHJlc3NQb29sczogW1xuICAgICAgICB7IG5hbWU6IFwiYmFja2VuZC1hZGRyZXNzLXBvb2wtMVwiIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImJhY2tlbmQtYWRkcmVzcy1wb29sLTJcIixcbiAgICAgICAgICBpcEFkZHJlc3NlczogW1wiMTAuMS4wLjRcIiwgXCIxMC4xLjAuNVwiLCBcIjEwLjEuMC42XCJdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGh0dHBMaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaHR0cC1saXN0ZW5lclwiLFxuICAgICAgICAgIGZyb250ZW5kUG9ydE5hbWU6IFwiODBcIixcbiAgICAgICAgICBmcm9udGVuZElwQ29uZmlndXJhdGlvbk5hbWU6IFwiUHVibGljLWZyb250ZW5kLWlwLWNvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgICBwcm90b2NvbDogXCJIdHRwXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgYmFja2VuZEh0dHBTZXR0aW5nczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJiYWNrZW5kLWh0dHAtc2V0dGluZ1wiLFxuICAgICAgICAgIHBvcnQ6IDgwLFxuICAgICAgICAgIHByb3RvY29sOiBcIkh0dHBcIixcbiAgICAgICAgICByZXF1ZXN0VGltZW91dDogMjAsXG4gICAgICAgICAgY29va2llQmFzZWRBZmZpbml0eTogXCJEaXNhYmxlZFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHJlcXVlc3RSb3V0aW5nUnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicmVxdWVzdC1yb3V0aW5nLXJ1bGUtMVwiLFxuICAgICAgICAgIGh0dHBMaXN0ZW5lck5hbWU6IFwiaHR0cC1saXN0ZW5lclwiLFxuICAgICAgICAgIHByaW9yaXR5OiAxLFxuICAgICAgICAgIGJhY2tlbmRBZGRyZXNzUG9vbE5hbWU6IFwiYmFja2VuZC1hZGRyZXNzLXBvb2wtMVwiLFxuICAgICAgICAgIGJhY2tlbmRIdHRwU2V0dGluZ3NOYW1lOiBcImJhY2tlbmQtaHR0cC1zZXR0aW5nXCIsXG4gICAgICAgICAgcnVsZVR5cGU6IFwiQmFzaWNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElHYXRld2F5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMucmVzb3VyY2VHcm91cCA9IHRoaXMuc2V0dXBSZXNvdXJjZUdyb3VwKHByb3BzKTtcblxuICAgIC8vIERlZmluZSB0aGUgaWRlbnRpdHlcbiAgICBsZXQgaWRlbnRpdHk7XG5cbiAgICAvLyBDaGVjayBpZiBBenVyZSBLZXkgVmF1bHQgaXMgdXNlZCBhbmQgbm8gaWRlbnRpdHkgaXMgcHJvdmlkZWRcbiAgICBpZiAocHJvcHMua2V5VmF1bHQgJiYgIXByb3BzLmlkZW50aXR5KSB7XG4gICAgICAvLyBDcmVhdGUgYSBtYW5hZ2VkIGlkZW50aXR5IGFuZCBhZGQgaXQgdG8gaWRlbnRpdHlJZHNcbiAgICAgIGNvbnN0IG1hbmFnZWRJZGVudGl0eSA9IG5ldyBVc2VyQXNzaWduZWRJZGVudGl0eShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJNYW5hZ2VkSWRlbnRpdHlcIixcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGBtaS0ke3Byb3BzLm5hbWV9YCxcbiAgICAgICAgICByZXNvdXJjZUdyb3VwTmFtZTogdGhpcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgaWRlbnRpdHkgPSB7XG4gICAgICAgIGlkZW50aXR5SWRzOiBbbWFuYWdlZElkZW50aXR5LmlkXSxcbiAgICAgICAgdHlwZTogXCJVc2VyQXNzaWduZWRcIixcbiAgICAgIH07XG5cbiAgICAgIG5ldyBLZXlWYXVsdEFjY2Vzc1BvbGljeUEodGhpcywgXCJwb2xpY3lcIiwge1xuICAgICAgICBrZXlWYXVsdElkOiBwcm9wcy5rZXlWYXVsdC5pZCxcbiAgICAgICAgdGVuYW50SWQ6IHByb3BzLnRlbmFudElkIHx8IFwiXCIsXG4gICAgICAgIG9iamVjdElkOiBtYW5hZ2VkSWRlbnRpdHkucHJpbmNpcGFsSWQsXG4gICAgICAgIHNlY3JldFBlcm1pc3Npb25zOiBbXCJHZXRcIiwgXCJMaXN0XCJdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBzdWJuZXRJZDpcbiAgICAgICAgcHJvcHMuc3VibmV0Py5pZCB8fFxuICAgICAgICBuZXcgdm5ldC5OZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAgICAgcmVzb3VyY2VHcm91cDogdGhpcy5yZXNvdXJjZUdyb3VwLFxuICAgICAgICB9KS5zdWJuZXRzLmRlZmF1bHQuaWQsXG4gICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHkgfHwgaWRlbnRpdHksXG4gICAgfTtcblxuICAgIC8vIFdBRiBjb25maWd1cmF0aW9uXG4gICAgbGV0IHdhZkNvbmZpZ3VyYXRpb24gPSBwcm9wcy53YWZDb25maWd1cmF0aW9uXG4gICAgICA/IHtcbiAgICAgICAgICBlbmFibGVkOiBwcm9wcy53YWZDb25maWd1cmF0aW9uLmVuYWJsZWQsXG4gICAgICAgICAgZmlyZXdhbGxNb2RlOiBwcm9wcy53YWZDb25maWd1cmF0aW9uLmZpcmV3YWxsTW9kZSB8fCBcIkRldGVjdGlvblwiLFxuICAgICAgICAgIHJ1bGVTZXRWZXJzaW9uOiBwcm9wcy53YWZDb25maWd1cmF0aW9uLnJ1bGVTZXRWZXJzaW9uIHx8IFwiMy4wXCIsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gRHluYW1pY2FsbHkgY3JlYXRlIGZyb250ZW5kIElQIGNvbmZpZ3VyYXRpb25zXG4gICAgbGV0IGZyb250ZW5kSXBDb25maWdzOiBhemFwZ3cuQXBwbGljYXRpb25HYXRld2F5RnJvbnRlbmRJcENvbmZpZ3VyYXRpb25bXSA9XG4gICAgICBbXTtcblxuICAgIC8vIFB1YmxpYyBJUCBjb25maWd1cmF0aW9uXG4gICAgaWYgKHByb3BzLnB1YmxpY0lwQWRkcmVzcykge1xuICAgICAgZnJvbnRlbmRJcENvbmZpZ3MucHVzaCh7XG4gICAgICAgIG5hbWU6IFwiUHVibGljLWZyb250ZW5kLWlwLWNvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgcHVibGljSXBBZGRyZXNzSWQ6IHByb3BzLnB1YmxpY0lwQWRkcmVzcy5pZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFByaXZhdGUgSVAgY29uZmlndXJhdGlvblxuICAgIGlmIChwcm9wcy5wcml2YXRlSXBBZGRyZXNzIHx8IHByb3BzLnByaXZhdGVJcEFkZHJlc3NBbGxvY2F0aW9uKSB7XG4gICAgICBmcm9udGVuZElwQ29uZmlncy5wdXNoKHtcbiAgICAgICAgbmFtZTogXCJQcml2YXRlLWZyb250ZW5kLWlwLWNvbmZpZ3VyYXRpb25cIixcbiAgICAgICAgc3VibmV0SWQ6IGRlZmF1bHRzLnN1Ym5ldElkLFxuICAgICAgICBwcml2YXRlSXBBZGRyZXNzOiBwcm9wcy5wcml2YXRlSXBBZGRyZXNzLFxuICAgICAgICBwcml2YXRlSXBBZGRyZXNzQWxsb2NhdGlvbjogcHJvcHMucHJpdmF0ZUlwQWRkcmVzc0FsbG9jYXRpb24sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBmcm9udGVuZCBwb3J0cyBhcmUgcHJvdmlkZWQsIHVzZSBkZWZhdWx0IGR1bW15IGZyb250ZW5kIGlwIGNvbmZpZ3VyYXRpb25cbiAgICBpZiAoZnJvbnRlbmRJcENvbmZpZ3MubGVuZ3RoID09IDApIHtcbiAgICAgIGZyb250ZW5kSXBDb25maWdzLnB1c2goe1xuICAgICAgICBuYW1lOiBcIkR1bW15LWZyb250ZW5kLWlwLWNvbmZpZ3VyYXRpb25cIixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFNldCBkZWZhdWx0IGZyb250ZW5kIHBvcnRzIGlmIG5vdCBwcm92aWRlZFxuICAgIGNvbnN0IGRlZmF1bHRGcm9udGVuZFBvcnRzID0gW1xuICAgICAgeyBuYW1lOiBcIjgwXCIsIHBvcnQ6IDgwIH0sXG4gICAgICB7IG5hbWU6IFwiNDQzXCIsIHBvcnQ6IDQ0MyB9LFxuICAgIF07XG5cbiAgICBjb25zdCBmcm9udGVuZFBvcnRzID1cbiAgICAgIHByb3BzLmZyb250ZW5kUG9ydHMgJiYgcHJvcHMuZnJvbnRlbmRQb3J0cy5sZW5ndGggPiAwXG4gICAgICAgID8gcHJvcHMuZnJvbnRlbmRQb3J0c1xuICAgICAgICA6IGRlZmF1bHRGcm9udGVuZFBvcnRzO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBBcHBsaWNhdGlvbiBHYXRld2F5XG4gICAgY29uc3QgYXBndyA9IG5ldyBBcHBsaWNhdGlvbkdhdGV3YXkodGhpcywgXCJBcHBsaWNhdGlvbkdhdGV3YXlcIiwge1xuICAgICAgbmFtZTogcHJvcHMubmFtZSxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiB0aGlzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbixcbiAgICAgIHNzbENlcnRpZmljYXRlOiBwcm9wcy5zc2xDZXJ0aWZpY2F0ZSxcbiAgICAgIHNzbFBvbGljeTogcHJvcHMuc3NsUG9saWN5LFxuICAgICAgc3NsUHJvZmlsZTogcHJvcHMuc3NsUHJvZmlsZSxcbiAgICAgIGF1dGhlbnRpY2F0aW9uQ2VydGlmaWNhdGU6IHByb3BzLmF1dGhlbnRpY2F0aW9uQ2VydGlmaWNhdGUsXG4gICAgICBhdXRvc2NhbGVDb25maWd1cmF0aW9uOiBwcm9wcy5hdXRvc2NhbGVDb25maWd1cmF0aW9uLFxuICAgICAgY3VzdG9tRXJyb3JDb25maWd1cmF0aW9uOiBwcm9wcy5jdXN0b21FcnJvckNvbmZpZ3VyYXRpb24sXG4gICAgICByZWRpcmVjdENvbmZpZ3VyYXRpb246IHByb3BzLnJlZGlyZWN0Q29uZmlndXJhdGlvbixcbiAgICAgIHJld3JpdGVSdWxlU2V0OiBwcm9wcy5yZXdyaXRlUnVsZVNldCxcbiAgICAgIHByaXZhdGVMaW5rQ29uZmlndXJhdGlvbjogcHJvcHMucHJpdmF0ZUxpbmtDb25maWd1cmF0aW9uLFxuICAgICAgd2FmQ29uZmlndXJhdGlvbjogd2FmQ29uZmlndXJhdGlvbixcbiAgICAgIHNrdToge1xuICAgICAgICBuYW1lOiBwcm9wcy5za3VTaXplLFxuICAgICAgICB0aWVyOiBwcm9wcy5za3VUaWVyLFxuICAgICAgICBjYXBhY2l0eTogcHJvcHMuY2FwYWNpdHksXG4gICAgICB9LFxuICAgICAgZ2F0ZXdheUlwQ29uZmlndXJhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgc3VibmV0SWQ6IGRlZmF1bHRzLnN1Ym5ldElkLFxuICAgICAgICAgIG5hbWU6IGAke3Byb3BzLm5hbWV9LWNvbmZpZ3VyYXRpb25gLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGZyb250ZW5kUG9ydDogZnJvbnRlbmRQb3J0cyxcbiAgICAgIGZyb250ZW5kSXBDb25maWd1cmF0aW9uOiBmcm9udGVuZElwQ29uZmlncyxcbiAgICAgIGJhY2tlbmRBZGRyZXNzUG9vbDogcHJvcHMuYmFja2VuZEFkZHJlc3NQb29scyxcbiAgICAgIGJhY2tlbmRIdHRwU2V0dGluZ3M6IHByb3BzLmJhY2tlbmRIdHRwU2V0dGluZ3MsXG4gICAgICBodHRwTGlzdGVuZXI6IHByb3BzLmh0dHBMaXN0ZW5lcnMsXG4gICAgICB1cmxQYXRoTWFwOiBwcm9wcy51cmxQYXRoTWFwLFxuICAgICAgdHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZTogcHJvcHMudHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSxcbiAgICAgIHJlcXVlc3RSb3V0aW5nUnVsZTogcHJvcHMucmVxdWVzdFJvdXRpbmdSdWxlcyxcbiAgICAgIHByb2JlOiBwcm9wcy5wcm9iZSxcbiAgICAgIGlkZW50aXR5OiBkZWZhdWx0cy5pZGVudGl0eSxcbiAgICAgIHpvbmVzOiBwcm9wcy56b25lcyxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgfSk7XG5cbiAgICB0aGlzLmlkID0gYXBndy5pZDtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ import "cdktf/lib/testing/adapters/jest";