@microsoft/terraform-cdk-constructs 0.0.3-pre.6 → 0.0.3-pre.7

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 (85) hide show
  1. package/.jsii +909 -306
  2. package/API.md +2488 -255
  3. package/README.md +112 -18
  4. package/docs/images/ide-documentation.png +0 -0
  5. package/lib/azure-actiongroup/lib/actiongroup.d.ts +39 -0
  6. package/lib/azure-actiongroup/lib/actiongroup.js +40 -1
  7. package/lib/azure-applicationgateway/lib/gateway.d.ts +76 -0
  8. package/lib/azure-applicationgateway/lib/gateway.js +78 -2
  9. package/lib/azure-applicationinsights/lib/appinsights.d.ts +50 -0
  10. package/lib/azure-applicationinsights/lib/appinsights.js +52 -3
  11. package/lib/azure-containerregistry/lib/registry.d.ts +29 -0
  12. package/lib/azure-containerregistry/lib/registry.js +31 -2
  13. package/lib/azure-datalake/lib/datalake.d.ts +50 -0
  14. package/lib/azure-datalake/lib/datalake.js +51 -1
  15. package/lib/azure-datalake/lib/filesystem.d.ts +51 -0
  16. package/lib/azure-datalake/lib/filesystem.js +52 -1
  17. package/lib/azure-datalake/lib/path.d.ts +37 -0
  18. package/lib/azure-datalake/lib/path.js +38 -1
  19. package/lib/azure-eventhub/lib/authorization.d.ts +30 -0
  20. package/lib/azure-eventhub/lib/authorization.js +32 -2
  21. package/lib/azure-eventhub/lib/cluster.d.ts +29 -0
  22. package/lib/azure-eventhub/lib/cluster.js +31 -2
  23. package/lib/azure-eventhub/lib/consumer.d.ts +28 -0
  24. package/lib/azure-eventhub/lib/consumer.js +30 -2
  25. package/lib/azure-eventhub/lib/instance.d.ts +118 -0
  26. package/lib/azure-eventhub/lib/instance.js +120 -2
  27. package/lib/azure-eventhub/lib/kusto-connection.d.ts +41 -0
  28. package/lib/azure-eventhub/lib/kusto-connection.js +43 -2
  29. package/lib/azure-eventhub/lib/namespace.d.ts +74 -0
  30. package/lib/azure-eventhub/lib/namespace.js +76 -3
  31. package/lib/azure-functionapp/lib/functionapplinux.js +1 -1
  32. package/lib/azure-keyvault/lib/certificate.d.ts +96 -2
  33. package/lib/azure-keyvault/lib/certificate.js +55 -3
  34. package/lib/azure-keyvault/lib/key.d.ts +36 -0
  35. package/lib/azure-keyvault/lib/key.js +38 -2
  36. package/lib/azure-keyvault/lib/policy.d.ts +30 -0
  37. package/lib/azure-keyvault/lib/policy.js +32 -2
  38. package/lib/azure-keyvault/lib/secret.d.ts +31 -0
  39. package/lib/azure-keyvault/lib/secret.js +33 -2
  40. package/lib/azure-keyvault/lib/vault.d.ts +188 -0
  41. package/lib/azure-keyvault/lib/vault.js +191 -7
  42. package/lib/azure-kubernetes/lib/cluster.d.ts +25 -4
  43. package/lib/azure-kubernetes/lib/cluster.js +27 -6
  44. package/lib/azure-kusto/lib/cluster.d.ts +53 -0
  45. package/lib/azure-kusto/lib/cluster.js +55 -2
  46. package/lib/azure-kusto/lib/compute-specification.js +1 -1
  47. package/lib/azure-kusto/lib/database.d.ts +103 -0
  48. package/lib/azure-kusto/lib/database.js +105 -2
  49. package/lib/azure-loganalytics/lib/workspace.d.ts +47 -0
  50. package/lib/azure-loganalytics/lib/workspace.js +49 -2
  51. package/lib/azure-metricalert/lib/metric-alert.d.ts +43 -4
  52. package/lib/azure-metricalert/lib/metric-alert.js +45 -6
  53. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +1 -1
  54. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +92 -0
  55. package/lib/azure-networksecuritygroup/lib/securitygroup.js +95 -5
  56. package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +35 -4
  57. package/lib/azure-queryrulealert/lib/query-rule-alert.js +37 -6
  58. package/lib/azure-resourcegroup/lib/resource-group.d.ts +28 -0
  59. package/lib/azure-resourcegroup/lib/resource-group.js +30 -2
  60. package/lib/azure-storageaccount/lib/account.d.ts +75 -48
  61. package/lib/azure-storageaccount/lib/account.js +77 -50
  62. package/lib/azure-storageaccount/lib/container.d.ts +94 -12
  63. package/lib/azure-storageaccount/lib/container.js +97 -15
  64. package/lib/azure-storageaccount/lib/fileshare.d.ts +36 -0
  65. package/lib/azure-storageaccount/lib/fileshare.js +39 -3
  66. package/lib/azure-storageaccount/lib/queue.d.ts +29 -0
  67. package/lib/azure-storageaccount/lib/queue.js +31 -2
  68. package/lib/azure-storageaccount/lib/table.d.ts +32 -0
  69. package/lib/azure-storageaccount/lib/table.js +34 -2
  70. package/lib/azure-virtualmachine/lib/image-references.js +2 -2
  71. package/lib/azure-virtualmachine/lib/vm.d.ts +84 -8
  72. package/lib/azure-virtualmachine/lib/vm.js +87 -11
  73. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +98 -8
  74. package/lib/azure-virtualmachinescaleset/lib/cluster.js +101 -11
  75. package/lib/azure-virtualnetwork/lib/network.d.ts +61 -0
  76. package/lib/azure-virtualnetwork/lib/network.js +63 -3
  77. package/lib/azure-virtualnetwork/lib/peering.d.ts +39 -0
  78. package/lib/azure-virtualnetwork/lib/peering.js +41 -2
  79. package/lib/core-azure/lib/diagsettings.d.ts +37 -0
  80. package/lib/core-azure/lib/diagsettings.js +39 -2
  81. package/lib/core-azure/lib/rbac.d.ts +22 -4
  82. package/lib/core-azure/lib/rbac.js +24 -6
  83. package/lib/core-azure/lib/resource.d.ts +45 -0
  84. package/lib/core-azure/lib/resource.js +48 -4
  85. package/package.json +1 -1
@@ -11,11 +11,57 @@ const network_1 = require("../../azure-virtualnetwork/lib/network");
11
11
  const lib_1 = require("../../core-azure/lib");
12
12
  class LinuxCluster extends lib_1.AzureResource {
13
13
  /**
14
- * Constructs a new instance of the AzureLinuxVirtualMachine class.
14
+ * Represents a Linux Virtual Machine Scale Set (VMSS) within Microsoft Azure.
15
15
  *
16
- * @param scope - The scope in which this construct is defined.
17
- * @param id - The ID of this construct.
18
- * @param props - The properties for defining a Linux Virtual Machine.
16
+ * This class is designed to provision and manage a scale set of Linux virtual machines, providing capabilities such as
17
+ * auto-scaling, high availability, and simplified management. It supports detailed configurations like VM size, operating
18
+ * system image, network settings, and administrative credentials. Additional functionalities include custom data scripts,
19
+ * SSH configurations, and optional features like managed identity and boot diagnostics.
20
+ *
21
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
22
+ * @param id - The unique identifier for this instance of the Linux cluster, used within the scope for reference.
23
+ * @param props - Configuration properties for the Linux VM Scale Set, derived from the LinuxClusterProps interface. These include:
24
+ * - `location`: The geographic location where the scale set will be hosted (e.g., "eastus").
25
+ * - `name`: The name of the scale set, which must be unique within the resource group.
26
+ * - `resourceGroup`: The ResourceGroup within which the scale set will be created.
27
+ * - `sku`: The size specification of the VMs (e.g., "Standard_B2s").
28
+ * - `adminUsername`: The administrator username for the VMs.
29
+ * - `adminPassword`: The administrator password for the VMs.
30
+ * - `adminSshKey`: SSH keys for secure access to the VMs.
31
+ * - `zones`: The availability zones for deploying the VMs.
32
+ * - `identity`: Managed identity settings for accessing other Azure services.
33
+ * - `sourceImageReference`: A reference to the specific Linux image to be used for the VMs.
34
+ * - `sourceImageId`: The identifier for a custom image to use for the VMs.
35
+ * - `tags`: Key-value pairs for resource tagging.
36
+ * - `osDisk`: Configuration for the VMs' operating system disks.
37
+ * - `subnet`: Specifies the subnet within which the VMs will be placed.
38
+ * - `publicIPAddress`: Method used to allocate public IP addresses to the VMs.
39
+ * - `customData`: Scripts or commands passed to the VMs at startup.
40
+ * - `instances`: The number of VM instances in the scale set.
41
+ * - `upgradePolicyMode`: The upgrade policy mode for the VMSS.
42
+ * - `overprovision`: Specifies if the VMSS should be overprovisioned to maintain capacity during updates.
43
+ * - `scaleInPolicy`: The scale-in policy for the VMSS.
44
+ * - `bootDiagnosticsStorageURI`: URI for storage where VMSS boot diagnostics are collected.
45
+ * - `enableSshAzureADLogin`: Option to enable Azure AD login for SSH on the VMs.
46
+ *
47
+ * Example usage:
48
+ * ```typescript
49
+ * const linuxCluster = new LinuxCluster(this, 'MyLinuxCluster', {
50
+ * resourceGroup: myResourceGroup,
51
+ * name: 'myCluster',
52
+ * sku: 'Standard_DS1_v2',
53
+ * adminUsername: 'adminuser',
54
+ * adminSshKey: [{ publicKey: 'ssh-rsa AAAAB...' }],
55
+ * sourceImageReference: { publisher: 'Canonical', offer: 'UbuntuServer', sku: '18.04-LTS', version: 'latest' },
56
+ * osDisk: { caching: 'ReadWrite', storageAccountType: 'Standard_LRS' },
57
+ * subnet: mySubnet,
58
+ * instances: 3,
59
+ * tags: { environment: 'production' }
60
+ * });
61
+ * ```
62
+ * This class initializes a Linux VM Scale Set with the specified configurations, handling details like VM creation,
63
+ * scaling policies, network setup, OS installation, and security settings, providing a robust and scalable infrastructure
64
+ * for hosting cloud-based Linux applications.
19
65
  */
20
66
  constructor(scope, id, props) {
21
67
  super(scope, id);
@@ -88,14 +134,58 @@ class LinuxCluster extends lib_1.AzureResource {
88
134
  }
89
135
  exports.LinuxCluster = LinuxCluster;
90
136
  _a = JSII_RTTI_SYMBOL_1;
91
- LinuxCluster[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachinescaleset.LinuxCluster", version: "0.0.3-pre.6" };
137
+ LinuxCluster[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachinescaleset.LinuxCluster", version: "0.0.3-pre.7" };
92
138
  class WindowsCluster extends lib_1.AzureResource {
93
139
  /**
94
- * Constructs a new instance of the AzureWindowsVirtualMachine class.
140
+ * Represents a Windows Virtual Machine Scale Set (VMSS) within Microsoft Azure.
141
+ *
142
+ * This class provides a way to deploy and manage a scale set of Windows virtual machines, allowing for configurations such as
143
+ * auto-scaling, high availability, and simplified patch management. It supports detailed specifications including
144
+ * VM size, the operating system image, network settings, and administrative credentials. Additional capabilities include
145
+ * custom data scripts, automatic OS updates, and optional features like managed identity and boot diagnostics.
146
+ *
147
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
148
+ * @param id - The unique identifier for this instance of the Windows cluster, used within the scope for reference.
149
+ * @param props - Configuration properties for the Windows VM Scale Set, derived from the WindowsClusterProps interface. These include:
150
+ * - `location`: The geographic location where the scale set will be hosted (e.g., "eastus").
151
+ * - `name`: The name of the scale set, which must be unique within the resource group.
152
+ * - `resourceGroup`: The ResourceGroup within which the scale set will be created.
153
+ * - `sku`: The size specification of the VMs (e.g., "Standard_B2s").
154
+ * - `adminUsername`: The administrator username for the VMs.
155
+ * - `adminPassword`: The administrator password for the VMs.
156
+ * - `zones`: The availability zones for deploying the VMs.
157
+ * - `instances`: The number of VM instances in the scale set.
158
+ * - `sourceImageReference`: A reference to the specific Windows image to be used for the VMs.
159
+ * - `sourceImageId`: The identifier for a custom image to use for the VMs.
160
+ * - `tags`: Key-value pairs for resource tagging.
161
+ * - `osDisk`: Configuration for the VMs' operating system disks.
162
+ * - `subnet`: Specifies the subnet within which the VMs will be placed.
163
+ * - `publicIPAddress`: Method used to allocate public IP addresses to the VMs.
164
+ * - `customData`: Scripts or commands passed to the VMs at startup.
165
+ * - `upgradePolicyMode`: The upgrade policy mode for the VMSS.
166
+ * - `overprovision`: Specifies if the VMSS should be overprovisioned to maintain capacity during updates.
167
+ * - `scaleInPolicy`: The scale-in policy for the VMSS.
168
+ * - `bootDiagnosticsStorageURI`: URI for storage where VMSS boot diagnostics are collected.
169
+ * - `enableSshAzureADLogin`: Option to enable Azure AD login for SSH on the VMs.
95
170
  *
96
- * @param scope - The scope in which this construct is defined.
97
- * @param id - The ID of this construct.
98
- * @param props - The properties for defining a Windows Virtual Machine.
171
+ * Example usage:
172
+ * ```typescript
173
+ * const windowsCluster = new WindowsCluster(this, 'MyWindowsCluster', {
174
+ * resourceGroup: myResourceGroup,
175
+ * name: 'myCluster',
176
+ * sku: 'Standard_DS1_v2',
177
+ * adminUsername: 'adminuser',
178
+ * adminPassword: 'securepassword123',
179
+ * sourceImageReference: { publisher: 'MicrosoftWindowsServer', offer: 'WindowsServer', sku: '2019-Datacenter', version: 'latest' },
180
+ * osDisk: { caching: 'ReadWrite', storageAccountType: 'Standard_LRS' },
181
+ * subnet: mySubnet,
182
+ * instances: 3,
183
+ * tags: { environment: 'production' }
184
+ * });
185
+ * ```
186
+ * This class initializes a Windows VM Scale Set with the specified configurations, handling details like VM creation,
187
+ * scaling policies, network setup, OS installation, and security settings, providing a robust and scalable infrastructure
188
+ * for hosting cloud-based Windows applications.
99
189
  */
100
190
  constructor(scope, id, props) {
101
191
  super(scope, id);
@@ -170,5 +260,5 @@ class WindowsCluster extends lib_1.AzureResource {
170
260
  }
171
261
  exports.WindowsCluster = WindowsCluster;
172
262
  _b = JSII_RTTI_SYMBOL_1;
173
- WindowsCluster[_b] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachinescaleset.WindowsCluster", version: "0.0.3-pre.6" };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbWFjaGluZXNjYWxlc2V0L2xpYi9jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUEsaUhBR3FFO0FBR3JFLHlIQUFtSDtBQUtuSCxxSEFHdUU7QUFHdkUscUVBR29DO0FBQ3BDLG9FQUFpRTtBQUNqRSw4Q0FBcUQ7QUErSHJELE1BQWEsWUFBYSxTQUFRLG1CQUFhO0lBTzdDOzs7Ozs7T0FNRztJQUVILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFFekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlDLE1BQU0sUUFBUSxHQUFHO1lBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUTtZQUM1QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxRQUFRLFFBQVEsRUFBRTtZQUN4RCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRO1lBQ3BDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLGNBQWM7WUFDaEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksQ0FBQztZQUMvQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sSUFBSTtnQkFDdEIsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLGtCQUFrQixFQUFFLGNBQWM7YUFDbkM7WUFDRCxvQkFBb0IsRUFDbEIsS0FBSyxDQUFDLG9CQUFvQixJQUFJLDJDQUFvQixDQUFDLG1CQUFt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O1NBQ0o7SUFDSCxDQUFDOztBQWhHSCx3Q0FpR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBMaW51eFZpcnR1YWxNYWNoaW5lU291cmNlSW1hZ2VSZWZlcmVuY2UsXG4gIExpbnV4VmlydHVhbE1hY2hpbmVPc0Rpc2ssXG4gIExpbnV4VmlydHVhbE1hY2hpbmVBZG1pblNzaEtleSxcbiAgTGludXhWaXJ0dWFsTWFjaGluZUlkZW50aXR5LFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2xpbnV4LXZpcnR1YWwtbWFjaGluZVwiO1xuaW1wb3J0IHtcbiAgTGludXhWaXJ0dWFsTWFjaGluZVNjYWxlU2V0LFxuICBMaW51eFZpcnR1YWxNYWNoaW5lU2NhbGVTZXROZXR3b3JrSW50ZXJmYWNlSXBDb25maWd1cmF0aW9uUHVibGljSXBBZGRyZXNzLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2xpbnV4LXZpcnR1YWwtbWFjaGluZS1zY2FsZS1zZXRcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBTdWJuZXQgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3N1Ym5ldFwiO1xuaW1wb3J0IHsgVmlydHVhbE1hY2hpbmVTY2FsZVNldEV4dGVuc2lvbkEgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3ZpcnR1YWwtbWFjaGluZS1zY2FsZS1zZXQtZXh0ZW5zaW9uXCI7XG5pbXBvcnQge1xuICBXaW5kb3dzVmlydHVhbE1hY2hpbmVPc0Rpc2ssXG4gIFdpbmRvd3NWaXJ0dWFsTWFjaGluZVNvdXJjZUltYWdlUmVmZXJlbmNlLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3dpbmRvd3MtdmlydHVhbC1tYWNoaW5lXCI7XG5pbXBvcnQge1xuICBXaW5kb3dzVmlydHVhbE1hY2hpbmVTY2FsZVNldCxcbiAgV2luZG93c1ZpcnR1YWxNYWNoaW5lU2NhbGVTZXROZXR3b3JrSW50ZXJmYWNlSXBDb25maWd1cmF0aW9uUHVibGljSXBBZGRyZXNzLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3dpbmRvd3MtdmlydHVhbC1tYWNoaW5lLXNjYWxlLXNldFwiO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgV2luZG93c0ltYWdlUmVmZXJlbmNlcyxcbiAgTGludXhJbWFnZVJlZmVyZW5jZXMsXG59IGZyb20gXCIuLi8uLi9henVyZS12aXJ0dWFsbWFjaGluZVwiO1xuaW1wb3J0IHsgTmV0d29yayB9IGZyb20gXCIuLi8uLi9henVyZS12aXJ0dWFsbmV0d29yay9saWIvbmV0d29ya1wiO1xuaW1wb3J0IHsgQXp1cmVSZXNvdXJjZSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbnV4Q2x1c3RlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBenVyZSBsb2NhdGlvbiB3aGVyZSB0aGUgdmlydHVhbCBtYWNoaW5lIHNjYWxlIHNldCBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICogQGRlZmF1bHQgXCJlYXN0dXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc2NhbGUgc2V0LlxuICAgKiBAZGVmYXVsdCAtIFVzZXMgdGhlIG5hbWUgZGVyaXZlZCBmcm9tIHRoZSBjb25zdHJ1Y3QgcGF0aC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiB1c2VybmFtZSBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluVXNlcm5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBwYXNzd29yZCBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBncm91cCBpbiB3aGljaCB0aGUgdmlydHVhbCBtYWNoaW5lIHNjYWxlIHNldCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGUgc2l6ZSBvZiB0aGUgdmlydHVhbCBtYWNoaW5lcyBpbiB0aGUgc2NhbGUgc2V0LlxuICAgKiBAZGVmYXVsdCBcIlN0YW5kYXJkX0Iyc1wiXG4gICAqL1xuICByZWFkb25seSBza3U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRhIHRvIHBhc3MgdG8gdGhlIHZpcnR1YWwgbWFjaGluZXMgdXBvbiBjcmVhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHVzZXJEYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBhcnJheSBvZiBTU0gga2V5cyBmb3IgdGhlIGFkbWluIHVzZXIuXG4gICAqL1xuICByZWFkb25seSBhZG1pblNzaEtleT86IExpbnV4VmlydHVhbE1hY2hpbmVBZG1pblNzaEtleVtdIHwgY2RrdGYuSVJlc29sdmFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhdmFpbGFiaWxpdHkgem9uZShzKSBpbiB3aGljaCB0aGUgVk1zIHNob3VsZCBiZSBwbGFjZWQuXG4gICAqL1xuICByZWFkb25seSB6b25lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYW5hZ2VkIGlkZW50aXR5IHNldHRpbmdzIGZvciB0aGUgVk1zLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBMaW51eFZpcnR1YWxNYWNoaW5lSWRlbnRpdHk7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgaW1hZ2UgcmVmZXJlbmNlIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lcy5cbiAgICogQGRlZmF1bHQgLSBVc2VzIGEgZGVmYXVsdCBVYnVudHUgaW1hZ2UuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZVJlZmVyZW5jZT86IExpbnV4VmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb3VyY2UgaW1hZ2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSW1hZ2VJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGFncyB0byBhcHBseSB0byB0aGUgdmlydHVhbCBtYWNoaW5lIHNjYWxlIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBUaGUgT1MgZGlzayBjb25maWd1cmF0aW9uIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lcy5cbiAgICogQGRlZmF1bHQgLSBVc2VzIGEgZGlzayB3aXRoIGNhY2hpbmcgc2V0IHRvIFwiUmVhZFdyaXRlXCIgYW5kIHN0b3JhZ2UgYWNjb3VudCB0eXBlIFwiU3RhbmRhcmRfTFJTXCIuXG4gICAqL1xuICByZWFkb25seSBvc0Rpc2s/OiBMaW51eFZpcnR1YWxNYWNoaW5lT3NEaXNrO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0IGluIHdoaWNoIHRoZSB2aXJ0dWFsIG1hY2hpbmVzIHdpbGwgYmUgcGxhY2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0PzogU3VibmV0O1xuXG4gIC8qKlxuICAgKiBUaGUgYWxsb2NhdGlvbiBtZXRob2QgZm9yIHRoZSBwdWJsaWMgSVAuXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNJUEFkZHJlc3M/OiBMaW51eFZpcnR1YWxNYWNoaW5lU2NhbGVTZXROZXR3b3JrSW50ZXJmYWNlSXBDb25maWd1cmF0aW9uUHVibGljSXBBZGRyZXNzW107XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBkYXRhIHRvIHBhc3MgdG8gdGhlIHZpcnR1YWwgbWFjaGluZXMgdXBvbiBjcmVhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGN1c3RvbURhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgVk0gaW5zdGFuY2VzIGluIHRoZSBzY2FsZSBzZXQuXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBzY2FsZSBzZXQncyB1cGdyYWRlIHBvbGljeSBzZXR0aW5ncy5cbiAgICovXG4gIHJlYWRvbmx5IHVwZ3JhZGVQb2xpY3lNb2RlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIFZNU1Mgc2hvdWxkIGJlIG92ZXJwcm92aXNpb25lZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnByb3Zpc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2NhbGUtaW4gcG9saWN5IGZvciB0aGUgVk1TUy5cbiAgICovXG4gIHJlYWRvbmx5IHNjYWxlSW5Qb2xpY3k/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJvb3QgZGlhZ25vc3RpY3Mgc2V0dGluZ3MgZm9yIHRoZSBWTVNTLlxuICAgKi9cbiAgcmVhZG9ubHkgYm9vdERpYWdub3N0aWNzU3RvcmFnZVVSST86IHN0cmluZztcblxuICAvKipcbiAgICogRW5hYmxlIFNTSCBBenVyZSBBRCBMb2dpbiwgcmVxdWlyZWQgbWFuYWdlZCBpZGVudGl0eSB0byBiZSBzZXQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTc2hBenVyZUFETG9naW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgTGludXhDbHVzdGVyIGV4dGVuZHMgQXp1cmVSZXNvdXJjZSB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogTGludXhDbHVzdGVyUHJvcHM7XG4gIHB1YmxpYyByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBBenVyZUxpbnV4VmlydHVhbE1hY2hpbmUgY2xhc3MuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0aGlzIGNvbnN0cnVjdCBpcyBkZWZpbmVkLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgSUQgb2YgdGhpcyBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIExpbnV4IFZpcnR1YWwgTWFjaGluZS5cbiAgICovXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpbnV4Q2x1c3RlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLnJlc291cmNlR3JvdXAgPSBwcm9wcy5yZXNvdXJjZUdyb3VwO1xuXG4gICAgY29uc3QgcGF0aE5hbWUgPSB0aGlzLm5vZGUucGF0aC5zcGxpdChcIi9cIilbMF07XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgcGF0aE5hbWUsXG4gICAgICBhZG1pblVzZXJuYW1lOiBwcm9wcy5hZG1pblVzZXJuYW1lIHx8IGBhZG1pbiR7cGF0aE5hbWV9YCxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB8fCBcImVhc3R1c1wiLFxuICAgICAgc2t1OiBwcm9wcy5za3UgfHwgXCJTdGFuZGFyZF9CMnNcIixcbiAgICAgIGluc3RhbmNlczogcHJvcHMuaW5zdGFuY2VzIHx8IDEsXG4gICAgICBvc0Rpc2s6IHByb3BzLm9zRGlzayB8fCB7XG4gICAgICAgIGNhY2hpbmc6IFwiUmVhZFdyaXRlXCIsXG4gICAgICAgIHN0b3JhZ2VBY2NvdW50VHlwZTogXCJTdGFuZGFyZF9MUlNcIixcbiAgICAgIH0sXG4gICAgICBzb3VyY2VJbWFnZVJlZmVyZW5jZTpcbiAgICAgICAgcHJvcHMuc291cmNlSW1hZ2VSZWZlcmVuY2UgfHwgTGludXhJbWFnZVJlZmVyZW5jZXMudWJ1bnR1U2VydmVyMjIwNExUUyxcbiAgICAgIHN1Ym5ldDpcbiAgICAgICAgcHJvcHMuc3VibmV0IHx8XG4gICAgICAgIG5ldyBOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAgICAgcmVzb3VyY2VHcm91cDogcHJvcHMucmVzb3VyY2VHcm91cCxcbiAgICAgICAgfSkuc3VibmV0cy5kZWZhdWx0LFxuICAgIH07XG5cbiAgICBjb25zdCBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZVNjYWxlU2V0ID0gbmV3IExpbnV4VmlydHVhbE1hY2hpbmVTY2FsZVNldChcbiAgICAgIHRoaXMsXG4gICAgICBcInZtc3NcIixcbiAgICAgIHtcbiAgICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICAgIGFkbWluUGFzc3dvcmQ6IHByb3BzLmFkbWluUGFzc3dvcmQsXG4gICAgICAgIGRpc2FibGVQYXNzd29yZEF1dGhlbnRpY2F0aW9uOiBwcm9wcy5hZG1pblBhc3N3b3JkID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgICBuZXR3b3JrSW50ZXJmYWNlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYG5pYy0ke2RlZmF1bHRzLm5hbWV9YCxcbiAgICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBpcENvbmZpZ3VyYXRpb246IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiaW50ZXJuYWxcIixcbiAgICAgICAgICAgICAgICBzdWJuZXRJZDogZGVmYXVsdHMuc3VibmV0LmlkLFxuICAgICAgICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICAgICAgcHVibGljSXBBZGRyZXNzOiBwcm9wcy5wdWJsaWNJUEFkZHJlc3MsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG9zRGlzazoge1xuICAgICAgICAgIC4uLmRlZmF1bHRzLm9zRGlzayxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlSW1hZ2VJZDogcHJvcHMuc291cmNlSW1hZ2VJZCxcbiAgICAgICAgY3VzdG9tRGF0YTogcHJvcHMuY3VzdG9tRGF0YVxuICAgICAgICAgID8gQnVmZmVyLmZyb20ocHJvcHMuY3VzdG9tRGF0YSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckRhdGE6IHByb3BzLnVzZXJEYXRhXG4gICAgICAgICAgPyBCdWZmZXIuZnJvbShwcm9wcy51c2VyRGF0YSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgYWRtaW5Tc2hLZXk6IHByb3BzLmFkbWluU3NoS2V5LFxuICAgICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmlkID0gYXp1cmVybUxpbnV4VmlydHVhbE1hY2hpbmVTY2FsZVNldC5pZDtcbiAgICB0aGlzLm5hbWUgPSBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZVNjYWxlU2V0Lm5hbWU7XG4gICAgdGhpcy5mcW4gPSBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZVNjYWxlU2V0LmZxbjtcblxuICAgIC8vIEVuYWJsZSBTU0ggQXp1cmUgQUQgTG9naW4gaWYgc3BlY2lmaWVkXG4gICAgaWYgKHByb3BzLmVuYWJsZVNzaEF6dXJlQURMb2dpbikge1xuICAgICAgbmV3IFZpcnR1YWxNYWNoaW5lU2NhbGVTZXRFeHRlbnNpb25BKHRoaXMsIFwiQUFEU1NIbG9naW5cIiwge1xuICAgICAgICBuYW1lOiBcIkFBRFNTSExvZ2luRm9yTGludXhcIixcbiAgICAgICAgdmlydHVhbE1hY2hpbmVTY2FsZVNldElkOiB0aGlzLmlkLFxuICAgICAgICBwdWJsaXNoZXI6IFwiTWljcm9zb2Z0LkF6dXJlLkFjdGl2ZURpcmVjdG9yeVwiLFxuICAgICAgICB0eXBlOiBcIkFBRFNTSExvZ2luRm9yTGludXhcIixcbiAgICAgICAgdHlwZUhhbmRsZXJWZXJzaW9uOiBcIjEuMFwiLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93c0NsdXN0ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXp1cmUgbG9jYXRpb24gd2hlcmUgdGhlIHZpcnR1YWwgbWFjaGluZSBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICogQGRlZmF1bHQgXCJlYXN0dXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyB0aGUgbmFtZSBkZXJpdmVkIGZyb20gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRoZSB2aXJ0dWFsIG1hY2hpbmUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cDogUmVzb3VyY2VHcm91cDtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgXCJTdGFuZGFyZF9CMnNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc2t1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRtaW4gdXNlcm5hbWUgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBwYXNzd29yZCBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSB6b25lKHMpIGluIHdoaWNoIHRoZSBWTXMgc2hvdWxkIGJlIHBsYWNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHpvbmVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgVk0gaW5zdGFuY2VzIGluIHRoZSBzY2FsZSBzZXQuXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBpbWFnZSByZWZlcmVuY2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyBXaW5kb3dzU2VydmVyMjAyMkRhdGFjZW50ZXJDb3JlLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSW1hZ2VSZWZlcmVuY2U/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb3VyY2UgaW1hZ2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGFwcGx5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIE9TIGRpc2sgY29uZmlndXJhdGlvbiBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIGEgZGlzayB3aXRoIGNhY2hpbmcgc2V0IHRvIFwiUmVhZFdyaXRlXCIgYW5kIHN0b3JhZ2UgYWNjb3VudCB0eXBlIFwiU3RhbmRhcmRfTFJTXCIuXG4gICAqL1xuICByZWFkb25seSBvc0Rpc2s/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVPc0Rpc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGJlIHBsYWNlZC5cbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZWZhdWx0IHN1Ym5ldCBmcm9tIGEgbmV3IHZpcnR1YWwgbmV0d29yay5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldD86IFN1Ym5ldDtcblxuICAvKipcbiAgICogVGhlIGFsbG9jYXRpb24gbWV0aG9kIGZvciB0aGUgcHVibGljIElQLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSVBBZGRyZXNzPzogV2luZG93c1ZpcnR1YWxNYWNoaW5lU2NhbGVTZXROZXR3b3JrSW50ZXJmYWNlSXBDb25maWd1cmF0aW9uUHVibGljSXBBZGRyZXNzW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2NhbGUgc2V0J3MgdXBncmFkZSBwb2xpY3kgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSB1cGdyYWRlUG9saWN5TW9kZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgdG8gcGFzcyB0byB0aGUgdmlydHVhbCBtYWNoaW5lIHVwb24gY3JlYXRpb24uXG4gICAqL1xuICByZWFkb25seSBjdXN0b21EYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSB0byBib290c3RyYXAgdGhlIHZpcnR1YWwgbWFjaGluZS4gQXV0b21hdGljYWxseSB0cmlnZ2VycyBBenVyZSBDdXN0b20gU2NyaXB0IGV4dGVuc2lvbiB0byBkZXBsb3kgY29kZSBpbiBjdXN0b20gZGF0YS5cbiAgICovXG4gIHJlYWRvbmx5IGJvb3N0cmFwQ3VzdG9tRGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9vdGRpYWdub3N0aWNzIHNldHRpbmdzIGZvciB0aGUgVk0uXG4gICAqL1xuICByZWFkb25seSBib290RGlhZ25vc3RpY3NTdG9yYWdlVVJJPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIFZNU1Mgc2hvdWxkIGJlIG92ZXJwcm92aXNpb25lZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnByb3Zpc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2NhbGUtaW4gcG9saWN5IGZvciB0aGUgVk1TUy5cbiAgICovXG4gIHJlYWRvbmx5IHNjYWxlSW5Qb2xpY3k/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dzQ2x1c3RlciBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICByZWFkb25seSBwcm9wczogV2luZG93c0NsdXN0ZXJQcm9wcztcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBBenVyZVdpbmRvd3NWaXJ0dWFsTWFjaGluZSBjbGFzcy5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRoaXMgY29uc3RydWN0IGlzIGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBJRCBvZiB0aGlzIGNvbnN0cnVjdC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGEgV2luZG93cyBWaXJ0dWFsIE1hY2hpbmUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogV2luZG93c0NsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgdGhpcy5yZXNvdXJjZUdyb3VwID0gcHJvcHMucmVzb3VyY2VHcm91cDtcblxuICAgIGNvbnN0IHBhdGhOYW1lID0gdGhpcy5ub2RlLnBhdGguc3BsaXQoXCIvXCIpWzBdO1xuXG4gICAgLy8gRGVmYXVsdCBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgdGhpcy5ub2RlLnBhdGguc3BsaXQoXCIvXCIpWzBdLFxuICAgICAgYWRtaW5Vc2VybmFtZTogcHJvcHMuYWRtaW5Vc2VybmFtZSB8fCBgYWRtaW4ke3BhdGhOYW1lfWAsXG4gICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24gfHwgXCJlYXN0dXNcIixcbiAgICAgIHNrdTogcHJvcHMuc2t1IHx8IFwiU3RhbmRhcmRfQjJzXCIsXG4gICAgICBpbnN0YW5jZXM6IHByb3BzLmluc3RhbmNlcyB8fCAxLFxuICAgICAgb3NEaXNrOiBwcm9wcy5vc0Rpc2sgfHwge1xuICAgICAgICBjYWNoaW5nOiBcIlJlYWRXcml0ZVwiLFxuICAgICAgICBzdG9yYWdlQWNjb3VudFR5cGU6IFwiU3RhbmRhcmRfTFJTXCIsXG4gICAgICB9LFxuICAgICAgc291cmNlSW1hZ2VSZWZlcmVuY2U6XG4gICAgICAgIHByb3BzLnNvdXJjZUltYWdlUmVmZXJlbmNlIHx8XG4gICAgICAgIFdpbmRvd3NJbWFnZVJlZmVyZW5jZXMud2luZG93c1NlcnZlcjIwMjJEYXRhY2VudGVyQ29yZSxcbiAgICAgIHN1Ym5ldDpcbiAgICAgICAgcHJvcHMuc3VibmV0IHx8XG4gICAgICAgIG5ldyBOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAgICAgcmVzb3VyY2VHcm91cDogcHJvcHMucmVzb3VyY2VHcm91cCxcbiAgICAgICAgfSkuc3VibmV0cy5kZWZhdWx0LFxuICAgIH07XG5cbiAgICAvLyBCYXNlNjQgZW5jb2RlIGN1c3RvbSBkYXRhIGlmIHByb3ZpZGVkLlxuICAgIGNvbnN0IGN1c3RvbURhdGEgPSBwcm9wcy5jdXN0b21EYXRhIHx8IHByb3BzLmJvb3N0cmFwQ3VzdG9tRGF0YTtcbiAgICBjb25zdCBiYXNlNjRDdXN0b21EYXRhID0gY3VzdG9tRGF0YVxuICAgICAgPyBCdWZmZXIuZnJvbShjdXN0b21EYXRhKS50b1N0cmluZyhcImJhc2U2NFwiKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGUgdGhlIFdpbmRvd3MgVmlydHVhbCBNYWNoaW5lLlxuICAgIGNvbnN0IGF6dXJlcm1XaW5kb3dzVmlydHVhbE1hY2hpbmUgPSBuZXcgV2luZG93c1ZpcnR1YWxNYWNoaW5lU2NhbGVTZXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJ2bXNzXCIsXG4gICAgICB7XG4gICAgICAgIC4uLmRlZmF1bHRzLFxuICAgICAgICByZXNvdXJjZUdyb3VwTmFtZTogcHJvcHMucmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgICBhZG1pblVzZXJuYW1lOiBwcm9wcy5hZG1pblVzZXJuYW1lLFxuICAgICAgICBhZG1pblBhc3N3b3JkOiBwcm9wcy5hZG1pblBhc3N3b3JkLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgICBuZXR3b3JrSW50ZXJmYWNlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYG5pYy0ke2RlZmF1bHRzLm5hbWV9YCxcbiAgICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBpcENvbmZpZ3VyYXRpb246IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiaW50ZXJuYWxcIixcbiAgICAgICAgICAgICAgICBzdWJuZXRJZDogZGVmYXVsdHMuc3VibmV0LmlkLFxuICAgICAgICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICAgICAgcHVibGljSXBBZGRyZXNzOiBwcm9wcy5wdWJsaWNJUEFkZHJlc3MsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG9zRGlzazoge1xuICAgICAgICAgIC4uLmRlZmF1bHRzLm9zRGlzayxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlSW1hZ2VJZDogcHJvcHMuc291cmNlSW1hZ2VJZCxcbiAgICAgICAgY3VzdG9tRGF0YTogYmFzZTY0Q3VzdG9tRGF0YSxcbiAgICAgICAgYm9vdERpYWdub3N0aWNzOiB7IHN0b3JhZ2VBY2NvdW50VXJpOiBwcm9wcy5ib290RGlhZ25vc3RpY3NTdG9yYWdlVVJJIH0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmlkID0gYXp1cmVybVdpbmRvd3NWaXJ0dWFsTWFjaGluZS5pZDtcbiAgICB0aGlzLm5hbWUgPSBhenVyZXJtV2luZG93c1ZpcnR1YWxNYWNoaW5lLm5hbWU7XG5cbiAgICAvLyBCb290c3RyYXAgVk0gd2l0aCBjdXN0b20gc2NyaXB0IGV4dGVuc2lvbiBpZiBib290c3RyYXAgY3VzdG9tIGRhdGEgaXMgcHJvdmlkZWQuXG4gICAgaWYgKHByb3BzLmJvb3N0cmFwQ3VzdG9tRGF0YSkge1xuICAgICAgbmV3IFZpcnR1YWxNYWNoaW5lU2NhbGVTZXRFeHRlbnNpb25BKHRoaXMsIFwic2NyaXB0LWV4dFwiLCB7XG4gICAgICAgIG5hbWU6IGAke3RoaXMubmFtZX0tc2NyaXB0LWV4dGAsXG4gICAgICAgIHZpcnR1YWxNYWNoaW5lU2NhbGVTZXRJZDogdGhpcy5pZCxcbiAgICAgICAgcHVibGlzaGVyOiBcIk1pY3Jvc29mdC5Db21wdXRlXCIsXG4gICAgICAgIHR5cGU6IFwiQ3VzdG9tU2NyaXB0RXh0ZW5zaW9uXCIsXG4gICAgICAgIHR5cGVIYW5kbGVyVmVyc2lvbjogXCIxLjEwXCIsXG4gICAgICAgIHByb3RlY3RlZFNldHRpbmdzOlxuICAgICAgICAgICd7XCJjb21tYW5kVG9FeGVjdXRlXCI6IFwicmVuYW1lICBDOlxcXFxcXFxcQXp1cmVEYXRhXFxcXFxcXFxDdXN0b21EYXRhLmJpbiAgcG9zdGRlcGxveS5wczEgJiBwb3dlcnNoZWxsIC1FeGVjdXRpb25Qb2xpY3kgVW5yZXN0cmljdGVkIC1GaWxlIEM6XFxcXFxcXFxBenVyZURhdGFcXFxcXFxcXHBvc3RkZXBsb3kucHMxXCJ9JyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
263
+ WindowsCluster[_b] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualmachinescaleset.WindowsCluster", version: "0.0.3-pre.7" };
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbWFjaGluZXNjYWxlc2V0L2xpYi9jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUEsaUhBR3FFO0FBR3JFLHlIQUFtSDtBQUtuSCxxSEFHdUU7QUFHdkUscUVBR29DO0FBQ3BDLG9FQUFpRTtBQUNqRSw4Q0FBcUQ7QUErSHJELE1BQWEsWUFBYSxTQUFRLG1CQUFhO0lBTzdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0RHO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUV6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUMsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRO1lBQzVCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLFFBQVEsUUFBUSxFQUFFO1lBQ3hELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLFFBQVE7WUFDcEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksY0FBYztZQUNoQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxDQUFDO1lBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJO2dCQUN0QixPQUFPLEVBQUUsV0FBVztnQkFDcEIsa0JBQWtCLEVBQUUsY0FBYzthQUNuQztZQUNELG9CQUFv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bUI7Z0JBQzlCLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLGtCQUFrQixFQUFFLE1BQU07Z0JBQzFCLGlCQUFpQixFQUNmLHNLQUFzSzthQUN6SyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7O0FBNUlILHdDQTZJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIExpbnV4VmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZSxcbiAgTGludXhWaXJ0dWFsTWFjaGluZU9zRGlzayxcbiAgTGludXhWaXJ0dWFsTWFjaGluZUFkbWluU3NoS2V5LFxuICBMaW51eFZpcnR1YWxNYWNoaW5lSWRlbnRpdHksXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvbGludXgtdmlydHVhbC1tYWNoaW5lXCI7XG5pbXBvcnQge1xuICBMaW51eFZpcnR1YWxNYWNoaW5lU2NhbGVTZXQsXG4gIExpbnV4VmlydHVhbE1hY2hpbmVTY2FsZVNldE5ldHdvcmtJbnRlcmZhY2VJcENvbmZpZ3VyYXRpb25QdWJsaWNJcEFkZHJlc3MsXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvbGludXgtdmlydHVhbC1tYWNoaW5lLXNjYWxlLXNldFwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7IFN1Ym5ldCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvc3VibmV0XCI7XG5pbXBvcnQgeyBWaXJ0dWFsTWFjaGluZVNjYWxlU2V0RXh0ZW5zaW9uQSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvdmlydHVhbC1tYWNoaW5lLXNjYWxlLXNldC1leHRlbnNpb25cIjtcbmltcG9ydCB7XG4gIFdpbmRvd3NWaXJ0dWFsTWFjaGluZU9zRGlzayxcbiAgV2luZG93c1ZpcnR1YWxNYWNoaW5lU291cmNlSW1hZ2VSZWZlcmVuY2UsXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvd2luZG93cy12aXJ0dWFsLW1hY2hpbmVcIjtcbmltcG9ydCB7XG4gIFdpbmRvd3NWaXJ0dWFsTWFjaGluZVNjYWxlU2V0LFxuICBXaW5kb3dzVmlydHVhbE1hY2hpbmVTY2FsZVNldE5ldHdvcmtJbnRlcmZhY2VJcENvbmZpZ3VyYXRpb25QdWJsaWNJcEFkZHJlc3MsXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvd2luZG93cy12aXJ0dWFsLW1hY2hpbmUtc2NhbGUtc2V0XCI7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBXaW5kb3dzSW1hZ2VSZWZlcmVuY2VzLFxuICBMaW51eEltYWdlUmVmZXJlbmNlcyxcbn0gZnJvbSBcIi4uLy4uL2F6dXJlLXZpcnR1YWxtYWNoaW5lXCI7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSBcIi4uLy4uL2F6dXJlLXZpcnR1YWxuZXR3b3JrL2xpYi9uZXR3b3JrXCI7XG5pbXBvcnQgeyBBenVyZVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGludXhDbHVzdGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIEF6dXJlIGxvY2F0aW9uIHdoZXJlIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc2NhbGUgc2V0IHNob3VsZCBiZSBjcmVhdGVkLlxuICAgKiBAZGVmYXVsdCBcImVhc3R1c1wiXG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgbWFjaGluZSBzY2FsZSBzZXQuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyB0aGUgbmFtZSBkZXJpdmVkIGZyb20gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFkbWluIHVzZXJuYW1lIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRtaW5Vc2VybmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFkbWluIHBhc3N3b3JkIGZvciB0aGUgdmlydHVhbCBtYWNoaW5lLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRtaW5QYXNzd29yZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc2NhbGUgc2V0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmVzIGluIHRoZSBzY2FsZSBzZXQuXG4gICAqIEBkZWZhdWx0IFwiU3RhbmRhcmRfQjJzXCJcbiAgICovXG4gIHJlYWRvbmx5IHNrdT86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgdG8gcGFzcyB0byB0aGUgdmlydHVhbCBtYWNoaW5lcyB1cG9uIGNyZWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckRhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIFNTSCBrZXlzIGZvciB0aGUgYWRtaW4gdXNlci5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluU3NoS2V5PzogTGludXhWaXJ0dWFsTWFjaGluZUFkbWluU3NoS2V5W10gfCBjZGt0Zi5JUmVzb2x2YWJsZTtcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSB6b25lKHMpIGluIHdoaWNoIHRoZSBWTXMgc2hvdWxkIGJlIHBsYWNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHpvbmVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgaWRlbnRpdHkgc2V0dGluZ3MgZm9yIHRoZSBWTXMuXG4gICAqL1xuICByZWFkb25seSBpZGVudGl0eT86IExpbnV4VmlydHVhbE1hY2hpbmVJZGVudGl0eTtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBpbWFnZSByZWZlcmVuY2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmVzLlxuICAgKiBAZGVmYXVsdCAtIFVzZXMgYSBkZWZhdWx0IFVidW50dSBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUltYWdlUmVmZXJlbmNlPzogTGludXhWaXJ0dWFsTWFjaGluZVNvdXJjZUltYWdlUmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHNvdXJjZSBpbWFnZSBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZXMuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGFwcGx5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUgc2NhbGUgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBPUyBkaXNrIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmVzLlxuICAgKiBAZGVmYXVsdCAtIFVzZXMgYSBkaXNrIHdpdGggY2FjaGluZyBzZXQgdG8gXCJSZWFkV3JpdGVcIiBhbmQgc3RvcmFnZSBhY2NvdW50IHR5cGUgXCJTdGFuZGFyZF9MUlNcIi5cbiAgICovXG4gIHJlYWRvbmx5IG9zRGlzaz86IExpbnV4VmlydHVhbE1hY2hpbmVPc0Rpc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZXMgd2lsbCBiZSBwbGFjZWQuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXQ/OiBTdWJuZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGxvY2F0aW9uIG1ldGhvZCBmb3IgdGhlIHB1YmxpYyBJUC5cbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0lQQWRkcmVzcz86IExpbnV4VmlydHVhbE1hY2hpbmVTY2FsZVNldE5ldHdvcmtJbnRlcmZhY2VJcENvbmZpZ3VyYXRpb25QdWJsaWNJcEFkZHJlc3NbXTtcblxuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgdG8gcGFzcyB0byB0aGUgdmlydHVhbCBtYWNoaW5lcyB1cG9uIGNyZWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBWTSBpbnN0YW5jZXMgaW4gdGhlIHNjYWxlIHNldC5cbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHNjYWxlIHNldCdzIHVwZ3JhZGUgcG9saWN5IHNldHRpbmdzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXBncmFkZVBvbGljeU1vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBpZiB0aGUgVk1TUyBzaG91bGQgYmUgb3ZlcnByb3Zpc2lvbmVkLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBvdmVycHJvdmlzaW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBzY2FsZS1pbiBwb2xpY3kgZm9yIHRoZSBWTVNTLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NhbGVJblBvbGljeT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9vdCBkaWFnbm9zdGljcyBzZXR0aW5ncyBmb3IgdGhlIFZNU1MuXG4gICAqL1xuICByZWFkb25seSBib290RGlhZ25vc3RpY3NTdG9yYWdlVVJJPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgU1NIIEF6dXJlIEFEIExvZ2luLCByZXF1aXJlZCBtYW5hZ2VkIGlkZW50aXR5IHRvIGJlIHNldC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVNzaEF6dXJlQURMb2dpbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBMaW51eENsdXN0ZXIgZXh0ZW5kcyBBenVyZVJlc291cmNlIHtcbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBMaW51eENsdXN0ZXJQcm9wcztcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZnFuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBMaW51eCBWaXJ0dWFsIE1hY2hpbmUgU2NhbGUgU2V0IChWTVNTKSB3aXRoaW4gTWljcm9zb2Z0IEF6dXJlLlxuICAgKlxuICAgKiBUaGlzIGNsYXNzIGlzIGRlc2lnbmVkIHRvIHByb3Zpc2lvbiBhbmQgbWFuYWdlIGEgc2NhbGUgc2V0IG9mIExpbnV4IHZpcnR1YWwgbWFjaGluZXMsIHByb3ZpZGluZyBjYXBhYmlsaXRpZXMgc3VjaCBhc1xuICAgKiBhdXRvLXNjYWxpbmcsIGhpZ2ggYXZhaWxhYmlsaXR5LCBhbmQgc2ltcGxpZmllZCBtYW5hZ2VtZW50LiBJdCBzdXBwb3J0cyBkZXRhaWxlZCBjb25maWd1cmF0aW9ucyBsaWtlIFZNIHNpemUsIG9wZXJhdGluZ1xuICAgKiBzeXN0ZW0gaW1hZ2UsIG5ldHdvcmsgc2V0dGluZ3MsIGFuZCBhZG1pbmlzdHJhdGl2ZSBjcmVkZW50aWFscy4gQWRkaXRpb25hbCBmdW5jdGlvbmFsaXRpZXMgaW5jbHVkZSBjdXN0b20gZGF0YSBzY3JpcHRzLFxuICAgKiBTU0ggY29uZmlndXJhdGlvbnMsIGFuZCBvcHRpb25hbCBmZWF0dXJlcyBsaWtlIG1hbmFnZWQgaWRlbnRpdHkgYW5kIGJvb3QgZGlhZ25vc3RpY3MuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3QsIHR5cGljYWxseSByZXByZXNlbnRpbmcgdGhlIENsb3VkIERldmVsb3BtZW50IEtpdCAoQ0RLKSBhcHBsaWNhdGlvbi5cbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBMaW51eCBjbHVzdGVyLCB1c2VkIHdpdGhpbiB0aGUgc2NvcGUgZm9yIHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgTGludXggVk0gU2NhbGUgU2V0LCBkZXJpdmVkIGZyb20gdGhlIExpbnV4Q2x1c3RlclByb3BzIGludGVyZmFjZS4gVGhlc2UgaW5jbHVkZTpcbiAgICogICAgICAgICAgICAgICAgLSBgbG9jYXRpb25gOiBUaGUgZ2VvZ3JhcGhpYyBsb2NhdGlvbiB3aGVyZSB0aGUgc2NhbGUgc2V0IHdpbGwgYmUgaG9zdGVkIChlLmcuLCBcImVhc3R1c1wiKS5cbiAgICogICAgICAgICAgICAgICAgLSBgbmFtZWA6IFRoZSBuYW1lIG9mIHRoZSBzY2FsZSBzZXQsIHdoaWNoIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgcmVzb3VyY2UgZ3JvdXAuXG4gICAqICAgICAgICAgICAgICAgIC0gYHJlc291cmNlR3JvdXBgOiBUaGUgUmVzb3VyY2VHcm91cCB3aXRoaW4gd2hpY2ggdGhlIHNjYWxlIHNldCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqICAgICAgICAgICAgICAgIC0gYHNrdWA6IFRoZSBzaXplIHNwZWNpZmljYXRpb24gb2YgdGhlIFZNcyAoZS5nLiwgXCJTdGFuZGFyZF9CMnNcIikuXG4gICAqICAgICAgICAgICAgICAgIC0gYGFkbWluVXNlcm5hbWVgOiBUaGUgYWRtaW5pc3RyYXRvciB1c2VybmFtZSBmb3IgdGhlIFZNcy5cbiAgICogICAgICAgICAgICAgICAgLSBgYWRtaW5QYXNzd29yZGA6IFRoZSBhZG1pbmlzdHJhdG9yIHBhc3N3b3JkIGZvciB0aGUgVk1zLlxuICAgKiAgICAgICAgICAgICAgICAtIGBhZG1pblNzaEtleWA6IFNTSCBrZXlzIGZvciBzZWN1cmUgYWNjZXNzIHRvIHRoZSBWTXMuXG4gICAqICAgICAgICAgICAgICAgIC0gYHpvbmVzYDogVGhlIGF2YWlsYWJpbGl0eSB6b25lcyBmb3IgZGVwbG95aW5nIHRoZSBWTXMuXG4gICAqICAgICAgICAgICAgICAgIC0gYGlkZW50aXR5YDogTWFuYWdlZCBpZGVudGl0eSBzZXR0aW5ncyBmb3IgYWNjZXNzaW5nIG90aGVyIEF6dXJlIHNlcnZpY2VzLlxuICAgKiAgICAgICAgICAgICAgICAtIGBzb3VyY2VJbWFnZVJlZmVyZW5jZWA6IEEgcmVmZXJlbmNlIHRvIHRoZSBzcGVjaWZpYyBMaW51eCBpbWFnZSB0byBiZSB1c2VkIGZvciB0aGUgVk1zLlxuICAgKiAgICAgICAgICAgICAgICAtIGBzb3VyY2VJbWFnZUlkYDogVGhlIGlkZW50aWZpZXIgZm9yIGEgY3VzdG9tIGltYWdlIHRvIHVzZSBmb3IgdGhlIFZNcy5cbiAgICogICAgICAgICAgICAgICAgLSBgdGFnc2A6IEtleS12YWx1ZSBwYWlycyBmb3IgcmVzb3VyY2UgdGFnZ2luZy5cbiAgICogICAgICAgICAgICAgICAgLSBgb3NEaXNrYDogQ29uZmlndXJhdGlvbiBmb3IgdGhlIFZNcycgb3BlcmF0aW5nIHN5c3RlbSBkaXNrcy5cbiAgICogICAgICAgICAgICAgICAgLSBgc3VibmV0YDogU3BlY2lmaWVzIHRoZSBzdWJuZXQgd2l0aGluIHdoaWNoIHRoZSBWTXMgd2lsbCBiZSBwbGFjZWQuXG4gICAqICAgICAgICAgICAgICAgIC0gYHB1YmxpY0lQQWRkcmVzc2A6IE1ldGhvZCB1c2VkIHRvIGFsbG9jYXRlIHB1YmxpYyBJUCBhZGRyZXNzZXMgdG8gdGhlIFZNcy5cbiAgICogICAgICAgICAgICAgICAgLSBgY3VzdG9tRGF0YWA6IFNjcmlwdHMgb3IgY29tbWFuZHMgcGFzc2VkIHRvIHRoZSBWTXMgYXQgc3RhcnR1cC5cbiAgICogICAgICAgICAgICAgICAgLSBgaW5zdGFuY2VzYDogVGhlIG51bWJlciBvZiBWTSBpbnN0YW5jZXMgaW4gdGhlIHNjYWxlIHNldC5cbiAgICogICAgICAgICAgICAgICAgLSBgdXBncmFkZVBvbGljeU1vZGVgOiBUaGUgdXBncmFkZSBwb2xpY3kgbW9kZSBmb3IgdGhlIFZNU1MuXG4gICAqICAgICAgICAgICAgICAgIC0gYG92ZXJwcm92aXNpb25gOiBTcGVjaWZpZXMgaWYgdGhlIFZNU1Mgc2hvdWxkIGJlIG92ZXJwcm92aXNpb25lZCB0byBtYWludGFpbiBjYXBhY2l0eSBkdXJpbmcgdXBkYXRlcy5cbiAgICogICAgICAgICAgICAgICAgLSBgc2NhbGVJblBvbGljeWA6IFRoZSBzY2FsZS1pbiBwb2xpY3kgZm9yIHRoZSBWTVNTLlxuICAgKiAgICAgICAgICAgICAgICAtIGBib290RGlhZ25vc3RpY3NTdG9yYWdlVVJJYDogVVJJIGZvciBzdG9yYWdlIHdoZXJlIFZNU1MgYm9vdCBkaWFnbm9zdGljcyBhcmUgY29sbGVjdGVkLlxuICAgKiAgICAgICAgICAgICAgICAtIGBlbmFibGVTc2hBenVyZUFETG9naW5gOiBPcHRpb24gdG8gZW5hYmxlIEF6dXJlIEFEIGxvZ2luIGZvciBTU0ggb24gdGhlIFZNcy5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBsaW51eENsdXN0ZXIgPSBuZXcgTGludXhDbHVzdGVyKHRoaXMsICdNeUxpbnV4Q2x1c3RlcicsIHtcbiAgICogICByZXNvdXJjZUdyb3VwOiBteVJlc291cmNlR3JvdXAsXG4gICAqICAgbmFtZTogJ215Q2x1c3RlcicsXG4gICAqICAgc2t1OiAnU3RhbmRhcmRfRFMxX3YyJyxcbiAgICogICBhZG1pblVzZXJuYW1lOiAnYWRtaW51c2VyJyxcbiAgICogICBhZG1pblNzaEtleTogW3sgcHVibGljS2V5OiAnc3NoLXJzYSBBQUFBQi4uLicgfV0sXG4gICAqICAgc291cmNlSW1hZ2VSZWZlcmVuY2U6IHsgcHVibGlzaGVyOiAnQ2Fub25pY2FsJywgb2ZmZXI6ICdVYnVudHVTZXJ2ZXInLCBza3U6ICcxOC4wNC1MVFMnLCB2ZXJzaW9uOiAnbGF0ZXN0JyB9LFxuICAgKiAgIG9zRGlzazogeyBjYWNoaW5nOiAnUmVhZFdyaXRlJywgc3RvcmFnZUFjY291bnRUeXBlOiAnU3RhbmRhcmRfTFJTJyB9LFxuICAgKiAgIHN1Ym5ldDogbXlTdWJuZXQsXG4gICAqICAgaW5zdGFuY2VzOiAzLFxuICAgKiAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICogVGhpcyBjbGFzcyBpbml0aWFsaXplcyBhIExpbnV4IFZNIFNjYWxlIFNldCB3aXRoIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbnMsIGhhbmRsaW5nIGRldGFpbHMgbGlrZSBWTSBjcmVhdGlvbixcbiAgICogc2NhbGluZyBwb2xpY2llcywgbmV0d29yayBzZXR1cCwgT1MgaW5zdGFsbGF0aW9uLCBhbmQgc2VjdXJpdHkgc2V0dGluZ3MsIHByb3ZpZGluZyBhIHJvYnVzdCBhbmQgc2NhbGFibGUgaW5mcmFzdHJ1Y3R1cmVcbiAgICogZm9yIGhvc3RpbmcgY2xvdWQtYmFzZWQgTGludXggYXBwbGljYXRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExpbnV4Q2x1c3RlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLnJlc291cmNlR3JvdXAgPSBwcm9wcy5yZXNvdXJjZUdyb3VwO1xuXG4gICAgY29uc3QgcGF0aE5hbWUgPSB0aGlzLm5vZGUucGF0aC5zcGxpdChcIi9cIilbMF07XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgcGF0aE5hbWUsXG4gICAgICBhZG1pblVzZXJuYW1lOiBwcm9wcy5hZG1pblVzZXJuYW1lIHx8IGBhZG1pbiR7cGF0aE5hbWV9YCxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB8fCBcImVhc3R1c1wiLFxuICAgICAgc2t1OiBwcm9wcy5za3UgfHwgXCJTdGFuZGFyZF9CMnNcIixcbiAgICAgIGluc3RhbmNlczogcHJvcHMuaW5zdGFuY2VzIHx8IDEsXG4gICAgICBvc0Rpc2s6IHByb3BzLm9zRGlzayB8fCB7XG4gICAgICAgIGNhY2hpbmc6IFwiUmVhZFdyaXRlXCIsXG4gICAgICAgIHN0b3JhZ2VBY2NvdW50VHlwZTogXCJTdGFuZGFyZF9MUlNcIixcbiAgICAgIH0sXG4gICAgICBzb3VyY2VJbWFnZVJlZmVyZW5jZTpcbiAgICAgICAgcHJvcHMuc291cmNlSW1hZ2VSZWZlcmVuY2UgfHwgTGludXhJbWFnZVJlZmVyZW5jZXMudWJ1bnR1U2VydmVyMjIwNExUUyxcbiAgICAgIHN1Ym5ldDpcbiAgICAgICAgcHJvcHMuc3VibmV0IHx8XG4gICAgICAgIG5ldyBOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAgICAgcmVzb3VyY2VHcm91cDogcHJvcHMucmVzb3VyY2VHcm91cCxcbiAgICAgICAgfSkuc3VibmV0cy5kZWZhdWx0LFxuICAgIH07XG5cbiAgICBjb25zdCBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZVNjYWxlU2V0ID0gbmV3IExpbnV4VmlydHVhbE1hY2hpbmVTY2FsZVNldChcbiAgICAgIHRoaXMsXG4gICAgICBcInZtc3NcIixcbiAgICAgIHtcbiAgICAgICAgLi4uZGVmYXVsdHMsXG4gICAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICAgIGFkbWluUGFzc3dvcmQ6IHByb3BzLmFkbWluUGFzc3dvcmQsXG4gICAgICAgIGRpc2FibGVQYXNzd29yZEF1dGhlbnRpY2F0aW9uOiBwcm9wcy5hZG1pblBhc3N3b3JkID8gZmFsc2UgOiB0cnVlLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgICBuZXR3b3JrSW50ZXJmYWNlOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYG5pYy0ke2RlZmF1bHRzLm5hbWV9YCxcbiAgICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICBpcENvbmZpZ3VyYXRpb246IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiaW50ZXJuYWxcIixcbiAgICAgICAgICAgICAgICBzdWJuZXRJZDogZGVmYXVsdHMuc3VibmV0LmlkLFxuICAgICAgICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgICAgICAgcHVibGljSXBBZGRyZXNzOiBwcm9wcy5wdWJsaWNJUEFkZHJlc3MsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIG9zRGlzazoge1xuICAgICAgICAgIC4uLmRlZmF1bHRzLm9zRGlzayxcbiAgICAgICAgfSxcbiAgICAgICAgc291cmNlSW1hZ2VJZDogcHJvcHMuc291cmNlSW1hZ2VJZCxcbiAgICAgICAgY3VzdG9tRGF0YTogcHJvcHMuY3VzdG9tRGF0YVxuICAgICAgICAgID8gQnVmZmVyLmZyb20ocHJvcHMuY3VzdG9tRGF0YSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgdXNlckRhdGE6IHByb3BzLnVzZXJEYXRhXG4gICAgICAgICAgPyBCdWZmZXIuZnJvbShwcm9wcy51c2VyRGF0YSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgYWRtaW5Tc2hLZXk6IHByb3BzLmFkbWluU3NoS2V5LFxuICAgICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmlkID0gYXp1cmVybUxpbnV4VmlydHVhbE1hY2hpbmVTY2FsZVNldC5pZDtcbiAgICB0aGlzLm5hbWUgPSBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZVNjYWxlU2V0Lm5hbWU7XG4gICAgdGhpcy5mcW4gPSBhenVyZXJtTGludXhWaXJ0dWFsTWFjaGluZVNjYWxlU2V0LmZxbjtcblxuICAgIC8vIEVuYWJsZSBTU0ggQXp1cmUgQUQgTG9naW4gaWYgc3BlY2lmaWVkXG4gICAgaWYgKHByb3BzLmVuYWJsZVNzaEF6dXJlQURMb2dpbikge1xuICAgICAgbmV3IFZpcnR1YWxNYWNoaW5lU2NhbGVTZXRFeHRlbnNpb25BKHRoaXMsIFwiQUFEU1NIbG9naW5cIiwge1xuICAgICAgICBuYW1lOiBcIkFBRFNTSExvZ2luRm9yTGludXhcIixcbiAgICAgICAgdmlydHVhbE1hY2hpbmVTY2FsZVNldElkOiB0aGlzLmlkLFxuICAgICAgICBwdWJsaXNoZXI6IFwiTWljcm9zb2Z0LkF6dXJlLkFjdGl2ZURpcmVjdG9yeVwiLFxuICAgICAgICB0eXBlOiBcIkFBRFNTSExvZ2luRm9yTGludXhcIixcbiAgICAgICAgdHlwZUhhbmRsZXJWZXJzaW9uOiBcIjEuMFwiLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93c0NsdXN0ZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXp1cmUgbG9jYXRpb24gd2hlcmUgdGhlIHZpcnR1YWwgbWFjaGluZSBzaG91bGQgYmUgY3JlYXRlZC5cbiAgICogQGRlZmF1bHQgXCJlYXN0dXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyB0aGUgbmFtZSBkZXJpdmVkIGZyb20gdGhlIGNvbnN0cnVjdCBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIGdyb3VwIGluIHdoaWNoIHRoZSB2aXJ0dWFsIG1hY2hpbmUgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cDogUmVzb3VyY2VHcm91cDtcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgXCJTdGFuZGFyZF9CMnNcIlxuICAgKi9cbiAgcmVhZG9ubHkgc2t1Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRtaW4gdXNlcm5hbWUgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBhZG1pblVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhZG1pbiBwYXNzd29yZCBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICovXG4gIHJlYWRvbmx5IGFkbWluUGFzc3dvcmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGF2YWlsYWJpbGl0eSB6b25lKHMpIGluIHdoaWNoIHRoZSBWTXMgc2hvdWxkIGJlIHBsYWNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHpvbmVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgVk0gaW5zdGFuY2VzIGluIHRoZSBzY2FsZSBzZXQuXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBpbWFnZSByZWZlcmVuY2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqIEBkZWZhdWx0IC0gVXNlcyBXaW5kb3dzU2VydmVyMjAyMkRhdGFjZW50ZXJDb3JlLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlSW1hZ2VSZWZlcmVuY2U/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVTb3VyY2VJbWFnZVJlZmVyZW5jZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb3VyY2UgaW1hZ2UgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VJbWFnZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWdzIHRvIGFwcGx5IHRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIE9TIGRpc2sgY29uZmlndXJhdGlvbiBmb3IgdGhlIHZpcnR1YWwgbWFjaGluZS5cbiAgICogQGRlZmF1bHQgLSBVc2VzIGEgZGlzayB3aXRoIGNhY2hpbmcgc2V0IHRvIFwiUmVhZFdyaXRlXCIgYW5kIHN0b3JhZ2UgYWNjb3VudCB0eXBlIFwiU3RhbmRhcmRfTFJTXCIuXG4gICAqL1xuICByZWFkb25seSBvc0Rpc2s/OiBXaW5kb3dzVmlydHVhbE1hY2hpbmVPc0Rpc2s7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXQgaW4gd2hpY2ggdGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGJlIHBsYWNlZC5cbiAgICogQGRlZmF1bHQgLSBVc2VzIHRoZSBkZWZhdWx0IHN1Ym5ldCBmcm9tIGEgbmV3IHZpcnR1YWwgbmV0d29yay5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldD86IFN1Ym5ldDtcblxuICAvKipcbiAgICogVGhlIGFsbG9jYXRpb24gbWV0aG9kIGZvciB0aGUgcHVibGljIElQLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSVBBZGRyZXNzPzogV2luZG93c1ZpcnR1YWxNYWNoaW5lU2NhbGVTZXROZXR3b3JrSW50ZXJmYWNlSXBDb25maWd1cmF0aW9uUHVibGljSXBBZGRyZXNzW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2NhbGUgc2V0J3MgdXBncmFkZSBwb2xpY3kgc2V0dGluZ3MuXG4gICAqL1xuICByZWFkb25seSB1cGdyYWRlUG9saWN5TW9kZT86IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgdG8gcGFzcyB0byB0aGUgdmlydHVhbCBtYWNoaW5lIHVwb24gY3JlYXRpb24uXG4gICAqL1xuICByZWFkb25seSBjdXN0b21EYXRhPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSB0byBib290c3RyYXAgdGhlIHZpcnR1YWwgbWFjaGluZS4gQXV0b21hdGljYWxseSB0cmlnZ2VycyBBenVyZSBDdXN0b20gU2NyaXB0IGV4dGVuc2lvbiB0byBkZXBsb3kgY29kZSBpbiBjdXN0b20gZGF0YS5cbiAgICovXG4gIHJlYWRvbmx5IGJvb3N0cmFwQ3VzdG9tRGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9vdGRpYWdub3N0aWNzIHNldHRpbmdzIGZvciB0aGUgVk0uXG4gICAqL1xuICByZWFkb25seSBib290RGlhZ25vc3RpY3NTdG9yYWdlVVJJPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaWYgdGhlIFZNU1Mgc2hvdWxkIGJlIG92ZXJwcm92aXNpb25lZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcnByb3Zpc2lvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgc2NhbGUtaW4gcG9saWN5IGZvciB0aGUgVk1TUy5cbiAgICovXG4gIHJlYWRvbmx5IHNjYWxlSW5Qb2xpY3k/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXaW5kb3dzQ2x1c3RlciBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICByZWFkb25seSBwcm9wczogV2luZG93c0NsdXN0ZXJQcm9wcztcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIGEgV2luZG93cyBWaXJ0dWFsIE1hY2hpbmUgU2NhbGUgU2V0IChWTVNTKSB3aXRoaW4gTWljcm9zb2Z0IEF6dXJlLlxuICAgKlxuICAgKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgd2F5IHRvIGRlcGxveSBhbmQgbWFuYWdlIGEgc2NhbGUgc2V0IG9mIFdpbmRvd3MgdmlydHVhbCBtYWNoaW5lcywgYWxsb3dpbmcgZm9yIGNvbmZpZ3VyYXRpb25zIHN1Y2ggYXNcbiAgICogYXV0by1zY2FsaW5nLCBoaWdoIGF2YWlsYWJpbGl0eSwgYW5kIHNpbXBsaWZpZWQgcGF0Y2ggbWFuYWdlbWVudC4gSXQgc3VwcG9ydHMgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgaW5jbHVkaW5nXG4gICAqIFZNIHNpemUsIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGltYWdlLCBuZXR3b3JrIHNldHRpbmdzLCBhbmQgYWRtaW5pc3RyYXRpdmUgY3JlZGVudGlhbHMuIEFkZGl0aW9uYWwgY2FwYWJpbGl0aWVzIGluY2x1ZGVcbiAgICogY3VzdG9tIGRhdGEgc2NyaXB0cywgYXV0b21hdGljIE9TIHVwZGF0ZXMsIGFuZCBvcHRpb25hbCBmZWF0dXJlcyBsaWtlIG1hbmFnZWQgaWRlbnRpdHkgYW5kIGJvb3QgZGlhZ25vc3RpY3MuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3QsIHR5cGljYWxseSByZXByZXNlbnRpbmcgdGhlIENsb3VkIERldmVsb3BtZW50IEtpdCAoQ0RLKSBhcHBsaWNhdGlvbi5cbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBXaW5kb3dzIGNsdXN0ZXIsIHVzZWQgd2l0aGluIHRoZSBzY29wZSBmb3IgcmVmZXJlbmNlLlxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBXaW5kb3dzIFZNIFNjYWxlIFNldCwgZGVyaXZlZCBmcm9tIHRoZSBXaW5kb3dzQ2x1c3RlclByb3BzIGludGVyZmFjZS4gVGhlc2UgaW5jbHVkZTpcbiAgICogICAgICAgICAgICAgICAgLSBgbG9jYXRpb25gOiBUaGUgZ2VvZ3JhcGhpYyBsb2NhdGlvbiB3aGVyZSB0aGUgc2NhbGUgc2V0IHdpbGwgYmUgaG9zdGVkIChlLmcuLCBcImVhc3R1c1wiKS5cbiAgICogICAgICAgICAgICAgICAgLSBgbmFtZWA6IFRoZSBuYW1lIG9mIHRoZSBzY2FsZSBzZXQsIHdoaWNoIG11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgcmVzb3VyY2UgZ3JvdXAuXG4gICAqICAgICAgICAgICAgICAgIC0gYHJlc291cmNlR3JvdXBgOiBUaGUgUmVzb3VyY2VHcm91cCB3aXRoaW4gd2hpY2ggdGhlIHNjYWxlIHNldCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqICAgICAgICAgICAgICAgIC0gYHNrdWA6IFRoZSBzaXplIHNwZWNpZmljYXRpb24gb2YgdGhlIFZNcyAoZS5nLiwgXCJTdGFuZGFyZF9CMnNcIikuXG4gICAqICAgICAgICAgICAgICAgIC0gYGFkbWluVXNlcm5hbWVgOiBUaGUgYWRtaW5pc3RyYXRvciB1c2VybmFtZSBmb3IgdGhlIFZNcy5cbiAgICogICAgICAgICAgICAgICAgLSBgYWRtaW5QYXNzd29yZGA6IFRoZSBhZG1pbmlzdHJhdG9yIHBhc3N3b3JkIGZvciB0aGUgVk1zLlxuICAgKiAgICAgICAgICAgICAgICAtIGB6b25lc2A6IFRoZSBhdmFpbGFiaWxpdHkgem9uZXMgZm9yIGRlcGxveWluZyB0aGUgVk1zLlxuICAgKiAgICAgICAgICAgICAgICAtIGBpbnN0YW5jZXNgOiBUaGUgbnVtYmVyIG9mIFZNIGluc3RhbmNlcyBpbiB0aGUgc2NhbGUgc2V0LlxuICAgKiAgICAgICAgICAgICAgICAtIGBzb3VyY2VJbWFnZVJlZmVyZW5jZWA6IEEgcmVmZXJlbmNlIHRvIHRoZSBzcGVjaWZpYyBXaW5kb3dzIGltYWdlIHRvIGJlIHVzZWQgZm9yIHRoZSBWTXMuXG4gICAqICAgICAgICAgICAgICAgIC0gYHNvdXJjZUltYWdlSWRgOiBUaGUgaWRlbnRpZmllciBmb3IgYSBjdXN0b20gaW1hZ2UgdG8gdXNlIGZvciB0aGUgVk1zLlxuICAgKiAgICAgICAgICAgICAgICAtIGB0YWdzYDogS2V5LXZhbHVlIHBhaXJzIGZvciByZXNvdXJjZSB0YWdnaW5nLlxuICAgKiAgICAgICAgICAgICAgICAtIGBvc0Rpc2tgOiBDb25maWd1cmF0aW9uIGZvciB0aGUgVk1zJyBvcGVyYXRpbmcgc3lzdGVtIGRpc2tzLlxuICAgKiAgICAgICAgICAgICAgICAtIGBzdWJuZXRgOiBTcGVjaWZpZXMgdGhlIHN1Ym5ldCB3aXRoaW4gd2hpY2ggdGhlIFZNcyB3aWxsIGJlIHBsYWNlZC5cbiAgICogICAgICAgICAgICAgICAgLSBgcHVibGljSVBBZGRyZXNzYDogTWV0aG9kIHVzZWQgdG8gYWxsb2NhdGUgcHVibGljIElQIGFkZHJlc3NlcyB0byB0aGUgVk1zLlxuICAgKiAgICAgICAgICAgICAgICAtIGBjdXN0b21EYXRhYDogU2NyaXB0cyBvciBjb21tYW5kcyBwYXNzZWQgdG8gdGhlIFZNcyBhdCBzdGFydHVwLlxuICAgKiAgICAgICAgICAgICAgICAtIGB1cGdyYWRlUG9saWN5TW9kZWA6IFRoZSB1cGdyYWRlIHBvbGljeSBtb2RlIGZvciB0aGUgVk1TUy5cbiAgICogICAgICAgICAgICAgICAgLSBgb3ZlcnByb3Zpc2lvbmA6IFNwZWNpZmllcyBpZiB0aGUgVk1TUyBzaG91bGQgYmUgb3ZlcnByb3Zpc2lvbmVkIHRvIG1haW50YWluIGNhcGFjaXR5IGR1cmluZyB1cGRhdGVzLlxuICAgKiAgICAgICAgICAgICAgICAtIGBzY2FsZUluUG9saWN5YDogVGhlIHNjYWxlLWluIHBvbGljeSBmb3IgdGhlIFZNU1MuXG4gICAqICAgICAgICAgICAgICAgIC0gYGJvb3REaWFnbm9zdGljc1N0b3JhZ2VVUklgOiBVUkkgZm9yIHN0b3JhZ2Ugd2hlcmUgVk1TUyBib290IGRpYWdub3N0aWNzIGFyZSBjb2xsZWN0ZWQuXG4gICAqICAgICAgICAgICAgICAgIC0gYGVuYWJsZVNzaEF6dXJlQURMb2dpbmA6IE9wdGlvbiB0byBlbmFibGUgQXp1cmUgQUQgbG9naW4gZm9yIFNTSCBvbiB0aGUgVk1zLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHdpbmRvd3NDbHVzdGVyID0gbmV3IFdpbmRvd3NDbHVzdGVyKHRoaXMsICdNeVdpbmRvd3NDbHVzdGVyJywge1xuICAgKiAgIHJlc291cmNlR3JvdXA6IG15UmVzb3VyY2VHcm91cCxcbiAgICogICBuYW1lOiAnbXlDbHVzdGVyJyxcbiAgICogICBza3U6ICdTdGFuZGFyZF9EUzFfdjInLFxuICAgKiAgIGFkbWluVXNlcm5hbWU6ICdhZG1pbnVzZXInLFxuICAgKiAgIGFkbWluUGFzc3dvcmQ6ICdzZWN1cmVwYXNzd29yZDEyMycsXG4gICAqICAgc291cmNlSW1hZ2VSZWZlcmVuY2U6IHsgcHVibGlzaGVyOiAnTWljcm9zb2Z0V2luZG93c1NlcnZlcicsIG9mZmVyOiAnV2luZG93c1NlcnZlcicsIHNrdTogJzIwMTktRGF0YWNlbnRlcicsIHZlcnNpb246ICdsYXRlc3QnIH0sXG4gICAqICAgb3NEaXNrOiB7IGNhY2hpbmc6ICdSZWFkV3JpdGUnLCBzdG9yYWdlQWNjb3VudFR5cGU6ICdTdGFuZGFyZF9MUlMnIH0sXG4gICAqICAgc3VibmV0OiBteVN1Ym5ldCxcbiAgICogICBpbnN0YW5jZXM6IDMsXG4gICAqICAgdGFnczogeyBlbnZpcm9ubWVudDogJ3Byb2R1Y3Rpb24nIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKiBUaGlzIGNsYXNzIGluaXRpYWxpemVzIGEgV2luZG93cyBWTSBTY2FsZSBTZXQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb25zLCBoYW5kbGluZyBkZXRhaWxzIGxpa2UgVk0gY3JlYXRpb24sXG4gICAqIHNjYWxpbmcgcG9saWNpZXMsIG5ldHdvcmsgc2V0dXAsIE9TIGluc3RhbGxhdGlvbiwgYW5kIHNlY3VyaXR5IHNldHRpbmdzLCBwcm92aWRpbmcgYSByb2J1c3QgYW5kIHNjYWxhYmxlIGluZnJhc3RydWN0dXJlXG4gICAqIGZvciBob3N0aW5nIGNsb3VkLWJhc2VkIFdpbmRvd3MgYXBwbGljYXRpb25zLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFdpbmRvd3NDbHVzdGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgIHRoaXMucmVzb3VyY2VHcm91cCA9IHByb3BzLnJlc291cmNlR3JvdXA7XG5cbiAgICBjb25zdCBwYXRoTmFtZSA9IHRoaXMubm9kZS5wYXRoLnNwbGl0KFwiL1wiKVswXTtcblxuICAgIC8vIERlZmF1bHQgY29uZmlndXJhdGlvbnMgZm9yIHRoZSB2aXJ0dWFsIG1hY2hpbmUuXG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBuYW1lOiBwcm9wcy5uYW1lIHx8IHRoaXMubm9kZS5wYXRoLnNwbGl0KFwiL1wiKVswXSxcbiAgICAgIGFkbWluVXNlcm5hbWU6IHByb3BzLmFkbWluVXNlcm5hbWUgfHwgYGFkbWluJHtwYXRoTmFtZX1gLFxuICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uIHx8IFwiZWFzdHVzXCIsXG4gICAgICBza3U6IHByb3BzLnNrdSB8fCBcIlN0YW5kYXJkX0Iyc1wiLFxuICAgICAgaW5zdGFuY2VzOiBwcm9wcy5pbnN0YW5jZXMgfHwgMSxcbiAgICAgIG9zRGlzazogcHJvcHMub3NEaXNrIHx8IHtcbiAgICAgICAgY2FjaGluZzogXCJSZWFkV3JpdGVcIixcbiAgICAgICAgc3RvcmFnZUFjY291bnRUeXBlOiBcIlN0YW5kYXJkX0xSU1wiLFxuICAgICAgfSxcbiAgICAgIHNvdXJjZUltYWdlUmVmZXJlbmNlOlxuICAgICAgICBwcm9wcy5zb3VyY2VJbWFnZVJlZmVyZW5jZSB8fFxuICAgICAgICBXaW5kb3dzSW1hZ2VSZWZlcmVuY2VzLndpbmRvd3NTZXJ2ZXIyMDIyRGF0YWNlbnRlckNvcmUsXG4gICAgICBzdWJuZXQ6XG4gICAgICAgIHByb3BzLnN1Ym5ldCB8fFxuICAgICAgICBuZXcgTmV0d29yayh0aGlzLCBcInZuZXRcIiwge1xuICAgICAgICAgIHJlc291cmNlR3JvdXA6IHByb3BzLnJlc291cmNlR3JvdXAsXG4gICAgICAgIH0pLnN1Ym5ldHMuZGVmYXVsdCxcbiAgICB9O1xuXG4gICAgLy8gQmFzZTY0IGVuY29kZSBjdXN0b20gZGF0YSBpZiBwcm92aWRlZC5cbiAgICBjb25zdCBjdXN0b21EYXRhID0gcHJvcHMuY3VzdG9tRGF0YSB8fCBwcm9wcy5ib29zdHJhcEN1c3RvbURhdGE7XG4gICAgY29uc3QgYmFzZTY0Q3VzdG9tRGF0YSA9IGN1c3RvbURhdGFcbiAgICAgID8gQnVmZmVyLmZyb20oY3VzdG9tRGF0YSkudG9TdHJpbmcoXCJiYXNlNjRcIilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ3JlYXRlIHRoZSBXaW5kb3dzIFZpcnR1YWwgTWFjaGluZS5cbiAgICBjb25zdCBhenVyZXJtV2luZG93c1ZpcnR1YWxNYWNoaW5lID0gbmV3IFdpbmRvd3NWaXJ0dWFsTWFjaGluZVNjYWxlU2V0KFxuICAgICAgdGhpcyxcbiAgICAgIFwidm1zc1wiLFxuICAgICAge1xuICAgICAgICAuLi5kZWZhdWx0cyxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgICAgYWRtaW5Vc2VybmFtZTogcHJvcHMuYWRtaW5Vc2VybmFtZSxcbiAgICAgICAgYWRtaW5QYXNzd29yZDogcHJvcHMuYWRtaW5QYXNzd29yZCxcbiAgICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgICAgbmV0d29ya0ludGVyZmFjZTogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGBuaWMtJHtkZWZhdWx0cy5uYW1lfWAsXG4gICAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICAgICAgaXBDb25maWd1cmF0aW9uOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImludGVybmFsXCIsXG4gICAgICAgICAgICAgICAgc3VibmV0SWQ6IGRlZmF1bHRzLnN1Ym5ldC5pZCxcbiAgICAgICAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICAgICAgICAgIHB1YmxpY0lwQWRkcmVzczogcHJvcHMucHVibGljSVBBZGRyZXNzLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBvc0Rpc2s6IHtcbiAgICAgICAgICAuLi5kZWZhdWx0cy5vc0Rpc2ssXG4gICAgICAgIH0sXG4gICAgICAgIHNvdXJjZUltYWdlSWQ6IHByb3BzLnNvdXJjZUltYWdlSWQsXG4gICAgICAgIGN1c3RvbURhdGE6IGJhc2U2NEN1c3RvbURhdGEsXG4gICAgICAgIGJvb3REaWFnbm9zdGljczogeyBzdG9yYWdlQWNjb3VudFVyaTogcHJvcHMuYm9vdERpYWdub3N0aWNzU3RvcmFnZVVSSSB9LFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5pZCA9IGF6dXJlcm1XaW5kb3dzVmlydHVhbE1hY2hpbmUuaWQ7XG4gICAgdGhpcy5uYW1lID0gYXp1cmVybVdpbmRvd3NWaXJ0dWFsTWFjaGluZS5uYW1lO1xuXG4gICAgLy8gQm9vdHN0cmFwIFZNIHdpdGggY3VzdG9tIHNjcmlwdCBleHRlbnNpb24gaWYgYm9vdHN0cmFwIGN1c3RvbSBkYXRhIGlzIHByb3ZpZGVkLlxuICAgIGlmIChwcm9wcy5ib29zdHJhcEN1c3RvbURhdGEpIHtcbiAgICAgIG5ldyBWaXJ0dWFsTWFjaGluZVNjYWxlU2V0RXh0ZW5zaW9uQSh0aGlzLCBcInNjcmlwdC1leHRcIiwge1xuICAgICAgICBuYW1lOiBgJHt0aGlzLm5hbWV9LXNjcmlwdC1leHRgLFxuICAgICAgICB2aXJ0dWFsTWFjaGluZVNjYWxlU2V0SWQ6IHRoaXMuaWQsXG4gICAgICAgIHB1Ymxpc2hlcjogXCJNaWNyb3NvZnQuQ29tcHV0ZVwiLFxuICAgICAgICB0eXBlOiBcIkN1c3RvbVNjcmlwdEV4dGVuc2lvblwiLFxuICAgICAgICB0eXBlSGFuZGxlclZlcnNpb246IFwiMS4xMFwiLFxuICAgICAgICBwcm90ZWN0ZWRTZXR0aW5nczpcbiAgICAgICAgICAne1wiY29tbWFuZFRvRXhlY3V0ZVwiOiBcInJlbmFtZSAgQzpcXFxcXFxcXEF6dXJlRGF0YVxcXFxcXFxcQ3VzdG9tRGF0YS5iaW4gIHBvc3RkZXBsb3kucHMxICYgcG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IFVucmVzdHJpY3RlZCAtRmlsZSBDOlxcXFxcXFxcQXp1cmVEYXRhXFxcXFxcXFxwb3N0ZGVwbG95LnBzMVwifScsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -56,6 +56,67 @@ export declare class Network extends AzureResource {
56
56
  readonly subnets: {
57
57
  [name: string]: Subnet;
58
58
  };
59
+ /**
60
+ * Represents an Azure Virtual Network (VNet) within Microsoft Azure.
61
+ *
62
+ * This class is responsible for the creation and management of a virtual network, which provides an isolated environment
63
+ * where Azure resources, such as VMs and databases, can securely communicate with each other, the internet, and on-premises
64
+ * networks. It supports configurations such as multiple address spaces and subnets, enabling complex networking scenarios.
65
+ *
66
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
67
+ * @param id - The unique identifier for this instance of the network, used within the scope for reference.
68
+ * @param props - Configuration properties for the Azure Virtual Network, derived from the NetworkProps interface. These include:
69
+ * - `resourceGroup`: The ResourceGroup within which the virtual network will be created.
70
+ * - `name`: Optional. The name of the virtual network. If not provided, a default name will be assigned.
71
+ * - `location`: Optional. The Azure region where the virtual network will be deployed. Defaults to the resource group's region.
72
+ * - `addressSpace`: Optional. A list of CIDR blocks that define the address spaces of the virtual network.
73
+ * - `subnets`: Optional. An array of subnets to be created within the virtual network, each defined by a name and a CIDR block.
74
+ *
75
+ * Example usage:
76
+ * ```typescript
77
+ * const network = new Network(this, 'MyVirtualNetwork', {
78
+ * resourceGroup: myResourceGroup,
79
+ * name: 'myVNet',
80
+ * location: 'West US',
81
+ * addressSpace: ['10.0.0.0/16'],
82
+ * subnets: [{ name: 'subnet1', addressPrefixes: ['10.0.1.0/24'] }]
83
+ * });
84
+ * ```
85
+ * This class initializes a virtual network with the specified configurations and handles the provisioning of subnets
86
+ * within the network, providing a foundational networking layer for hosting cloud resources.
87
+ */
59
88
  constructor(scope: Construct, id: string, props: NetworkProps);
89
+ /**
90
+ * Establishes a peering connection between this virtual network and another remote virtual network.
91
+ *
92
+ * This method configures a two-way peering connection, allowing resources in both virtual networks to communicate
93
+ * seamlessly. It sets up peering settings such as network access, traffic forwarding, and gateway transit based on
94
+ * provided configurations.
95
+ *
96
+ * @param remoteVirtualNetwork - The remote virtual network with which to establish a peering connection.
97
+ * @param localPeerSettings - Optional settings applied from this virtual network to the remote virtual network.
98
+ * Controls aspects like virtual network access, traffic forwarding, and use of gateways.
99
+ * @param remotePeerSettings - Optional settings applied from the remote virtual network to this virtual network.
100
+ * Allows customization of how the remote network interacts with this one.
101
+ *
102
+ * Example usage:
103
+ * ```typescript
104
+ * // Assuming 'this' is a reference to a local virtual network instance.
105
+ * const partnerVNet = new Network(this, 'PartnerVNet', { ... });
106
+ * this.addVnetPeering(partnerVNet, {
107
+ * allowVirtualNetworkAccess: true,
108
+ * allowForwardedTraffic: false,
109
+ * allowGatewayTransit: true,
110
+ * useRemoteGateways: false
111
+ * }, {
112
+ * allowVirtualNetworkAccess: true,
113
+ * allowForwardedTraffic: true,
114
+ * allowGatewayTransit: false,
115
+ * useRemoteGateways: false
116
+ * });
117
+ * ```
118
+ * This method invokes the `Peer` class to create a peering between 'this' virtual network and 'partnerVNet'.
119
+ * The settings control traffic behavior and access permissions in both directions of the peering.
120
+ */
60
121
  addVnetPeering(remoteVirtualNetwork: Network, localPeerSettings?: PeerSettings, remotePeerSettings?: PeerSettings): void;
61
122
  }
@@ -8,6 +8,35 @@ const virtual_network_1 = require("@cdktf/provider-azurerm/lib/virtual-network")
8
8
  const peering_1 = require("./peering");
9
9
  const lib_1 = require("../../core-azure/lib");
10
10
  class Network extends lib_1.AzureResource {
11
+ /**
12
+ * Represents an Azure Virtual Network (VNet) within Microsoft Azure.
13
+ *
14
+ * This class is responsible for the creation and management of a virtual network, which provides an isolated environment
15
+ * where Azure resources, such as VMs and databases, can securely communicate with each other, the internet, and on-premises
16
+ * networks. It supports configurations such as multiple address spaces and subnets, enabling complex networking scenarios.
17
+ *
18
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
19
+ * @param id - The unique identifier for this instance of the network, used within the scope for reference.
20
+ * @param props - Configuration properties for the Azure Virtual Network, derived from the NetworkProps interface. These include:
21
+ * - `resourceGroup`: The ResourceGroup within which the virtual network will be created.
22
+ * - `name`: Optional. The name of the virtual network. If not provided, a default name will be assigned.
23
+ * - `location`: Optional. The Azure region where the virtual network will be deployed. Defaults to the resource group's region.
24
+ * - `addressSpace`: Optional. A list of CIDR blocks that define the address spaces of the virtual network.
25
+ * - `subnets`: Optional. An array of subnets to be created within the virtual network, each defined by a name and a CIDR block.
26
+ *
27
+ * Example usage:
28
+ * ```typescript
29
+ * const network = new Network(this, 'MyVirtualNetwork', {
30
+ * resourceGroup: myResourceGroup,
31
+ * name: 'myVNet',
32
+ * location: 'West US',
33
+ * addressSpace: ['10.0.0.0/16'],
34
+ * subnets: [{ name: 'subnet1', addressPrefixes: ['10.0.1.0/24'] }]
35
+ * });
36
+ * ```
37
+ * This class initializes a virtual network with the specified configurations and handles the provisioning of subnets
38
+ * within the network, providing a foundational networking layer for hosting cloud resources.
39
+ */
11
40
  constructor(scope, id, props) {
12
41
  super(scope, id);
13
42
  this.subnets = {}; // Map of subnet name to Subnet object
@@ -43,7 +72,38 @@ class Network extends lib_1.AzureResource {
43
72
  this.subnets[subnetConfig.name] = subnet; // Populate the subnetsMap
44
73
  }
45
74
  }
46
- // Create Vnet Peering Method
75
+ /**
76
+ * Establishes a peering connection between this virtual network and another remote virtual network.
77
+ *
78
+ * This method configures a two-way peering connection, allowing resources in both virtual networks to communicate
79
+ * seamlessly. It sets up peering settings such as network access, traffic forwarding, and gateway transit based on
80
+ * provided configurations.
81
+ *
82
+ * @param remoteVirtualNetwork - The remote virtual network with which to establish a peering connection.
83
+ * @param localPeerSettings - Optional settings applied from this virtual network to the remote virtual network.
84
+ * Controls aspects like virtual network access, traffic forwarding, and use of gateways.
85
+ * @param remotePeerSettings - Optional settings applied from the remote virtual network to this virtual network.
86
+ * Allows customization of how the remote network interacts with this one.
87
+ *
88
+ * Example usage:
89
+ * ```typescript
90
+ * // Assuming 'this' is a reference to a local virtual network instance.
91
+ * const partnerVNet = new Network(this, 'PartnerVNet', { ... });
92
+ * this.addVnetPeering(partnerVNet, {
93
+ * allowVirtualNetworkAccess: true,
94
+ * allowForwardedTraffic: false,
95
+ * allowGatewayTransit: true,
96
+ * useRemoteGateways: false
97
+ * }, {
98
+ * allowVirtualNetworkAccess: true,
99
+ * allowForwardedTraffic: true,
100
+ * allowGatewayTransit: false,
101
+ * useRemoteGateways: false
102
+ * });
103
+ * ```
104
+ * This method invokes the `Peer` class to create a peering between 'this' virtual network and 'partnerVNet'.
105
+ * The settings control traffic behavior and access permissions in both directions of the peering.
106
+ */
47
107
  addVnetPeering(remoteVirtualNetwork, localPeerSettings, remotePeerSettings) {
48
108
  const vnetPeerProps = {
49
109
  virtualNetwork: this,
@@ -56,5 +116,5 @@ class Network extends lib_1.AzureResource {
56
116
  }
57
117
  exports.Network = Network;
58
118
  _a = JSII_RTTI_SYMBOL_1;
59
- Network[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualnetwork.Network", version: "0.0.3-pre.6" };
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29yay9saWIvbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLCtEQUE0RDtBQUM1RCxpRkFBNkU7QUFFN0UsdUNBQTBEO0FBQzFELDhDQUFxRDtBQW9EckQsTUFBYSxPQUFRLFNBQVEsbUJBQWE7SUFReEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSEgsWUFBTyxHQUErQixFQUFFLENBQUMsQ0FBQyxzQ0FBc0M7UUFLOUYsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsTUFBTSxRQUFRLEdBQUc7WUFDZixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxRQUFRO1lBQ3BDLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ25ELE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJO2dCQUN4QjtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixlQUFlLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQ2pDO2FBQ0Y7U0FDRixDQUFDO1FBRUYsMkJBQTJCO1FBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQzVDLEdBQUcsUUFBUTtZQUNYLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSTtTQUM1QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUUzQiw0Q0FBNEM7UUFDNUMsS0FBSyxNQUFNLFlBQVksSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFO1lBQzNDLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsSUFBSSxFQUFFO2dCQUNqRCxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7Z0JBQ3ZCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSTtnQkFDM0Msa0JBQWtCLEVBQUUsSUFBSSxDQUFDLElBQUk7Z0JBQzdCLGVBQWUsRUFBRSxZQUFZLENBQUMsZUFBZTthQUM5QyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQywwQkFBMEI7U0FDckU7SUFDSCxDQUFDO0lBRUQsNkJBQTZCO0lBQ3RCLGNBQWMsQ0FDbkIsb0JBQTZCLEVBQzdCLGlCQUFnQyxFQUNoQyxrQkFBaUM7UUFFakMsTUFBTSxhQUFhLEdBQWM7WUFDL0IsY0FBYyxFQUFFLElBQUk7WUFDcEIsb0JBQW9CLEVBQUUsb0JBQW9CO1lBQzFDLHFCQUFxQixFQUFFLGlCQUFpQjtZQUN4QyxxQkFBcUIsRUFBRSxrQkFBa0I7U0FDMUMsQ0FBQztRQUNGLElBQUksY0FBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDekQsQ0FBQzs7QUE5REgsMEJBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7IFN1Ym5ldCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvc3VibmV0XCI7XG5pbXBvcnQgeyBWaXJ0dWFsTmV0d29yayB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvdmlydHVhbC1uZXR3b3JrXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgUGVlclByb3BzLCBQZWVyLCBQZWVyU2V0dGluZ3MgfSBmcm9tIFwiLi9wZWVyaW5nXCI7XG5pbXBvcnQgeyBBenVyZVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliXCI7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIHN1Ym5ldCB3aXRoaW4gYW4gQXp1cmUgVmlydHVhbCBOZXR3b3JrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3VibmV0LiBUaGlzIG5hbWUgbXVzdCBiZSB1bmlxdWUgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSB2aXJ0dWFsIG5ldHdvcmsuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBhZGRyZXNzIHByZWZpeGVzIGZvciB0aGUgc3VibmV0LiBUaGVzZSBhcmUgZXhwcmVzc2VkIGluIENJRFIgbm90YXRpb24uXG4gICAqIEZvciBleGFtcGxlLCAnMTkyLjE2OC4xLjAvMjQnIHRvIGRlZmluZSBhIHN1Ym5ldCB3aXRoIGEgcmFuZ2Ugb2YgSVAgYWRkcmVzc2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkcmVzc1ByZWZpeGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhbiBBenVyZSBWaXJ0dWFsIE5ldHdvcmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmV0d29ya1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZXNvdXJjZSBncm91cCB1bmRlciB3aGljaCB0aGUgdmlydHVhbCBuZXR3b3JrIHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsOiBUaGUgbmFtZSBvZiB0aGUgdmlydHVhbCBuZXR3b3JrLiBNdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIHJlc291cmNlIGdyb3VwLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIGEgZGVmYXVsdCBuYW1lIHdpbGwgYmUgYXNzaWduZWQuXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogVGhlIEF6dXJlIHJlZ2lvbiBpbiB3aGljaCB0byBjcmVhdGUgdGhlIHZpcnR1YWwgbmV0d29yaywgZS5nLiwgJ0Vhc3QgVVMnLCAnV2VzdCBFdXJvcGUnLlxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgcmVnaW9uIG9mIHRoZSByZXNvdXJjZSBncm91cCB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBsb2NhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWw6IEEgbGlzdCBvZiBhZGRyZXNzIHNwYWNlcyBmb3IgdGhlIHZpcnR1YWwgbmV0d29yaywgc3BlY2lmaWVkIGluIENJRFIgbm90YXRpb24uXG4gICAqIEZvciBleGFtcGxlLCBbJzEwLjAuMC4wLzE2J10gZGVmaW5lcyBhIHNpbmdsZSBhZGRyZXNzIHNwYWNlLiBNdWx0aXBsZSBhZGRyZXNzIHNwYWNlcyBjYW4gYmUgcHJvdmlkZWQuXG4gICAqL1xuICByZWFkb25seSBhZGRyZXNzU3BhY2U/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWw6IEFuIGFycmF5IG9mIHN1Ym5ldCBjb25maWd1cmF0aW9ucyB0byBiZSBjcmVhdGVkIHdpdGhpbiB0aGUgdmlydHVhbCBuZXR3b3JrLlxuICAgKiBFYWNoIHN1Ym5ldCBpcyBkZWZpbmVkIGJ5IGl0cyBuYW1lIGFuZCBhZGRyZXNzIHByZWZpeChlcykuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRzPzogU3VibmV0Q29uZmlnW107XG59XG5cbmV4cG9ydCBjbGFzcyBOZXR3b3JrIGV4dGVuZHMgQXp1cmVSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IHByb3BzOiBOZXR3b3JrUHJvcHM7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHZpcnR1YWxOZXR3b3JrOiBWaXJ0dWFsTmV0d29yaztcbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldHM6IHsgW25hbWU6IHN0cmluZ106IFN1Ym5ldCB9ID0ge307IC8vIE1hcCBvZiBzdWJuZXQgbmFtZSB0byBTdWJuZXQgb2JqZWN0XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldHdvcmtQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgYHZuZXQtJHt0aGlzLm5vZGUucGF0aC5zcGxpdChcIi9cIilbMF19YCxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB8fCBcImVhc3R1c1wiLFxuICAgICAgYWRkcmVzc1NwYWNlOiBwcm9wcy5hZGRyZXNzU3BhY2UgfHwgW1wiMTAuMC4wLjAvMTZcIl0sXG4gICAgICBzdWJuZXRzOiBwcm9wcy5zdWJuZXRzIHx8IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTAuMS4wLjAvMjRcIl0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYSB2aXJ0dWFsIG5ldHdvcmtcbiAgICBjb25zdCB2bmV0ID0gbmV3IFZpcnR1YWxOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWUgPSB2bmV0Lm5hbWU7XG4gICAgdGhpcy5pZCA9IHZuZXQuaWQ7XG4gICAgdGhpcy5yZXNvdXJjZUdyb3VwID0gcHJvcHMucmVzb3VyY2VHcm91cDtcbiAgICB0aGlzLnZpcnR1YWxOZXR3b3JrID0gdm5ldDtcblxuICAgIC8vIENyZWF0ZSBzdWJuZXRzIHdpdGhpbiB0aGUgdmlydHVhbCBuZXR3b3JrXG4gICAgZm9yIChjb25zdCBzdWJuZXRDb25maWcgb2YgZGVmYXVsdHMuc3VibmV0cykge1xuICAgICAgY29uc3Qgc3VibmV0ID0gbmV3IFN1Ym5ldCh0aGlzLCBzdWJuZXRDb25maWcubmFtZSwge1xuICAgICAgICBuYW1lOiBzdWJuZXRDb25maWcubmFtZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtOYW1lOiB2bmV0Lm5hbWUsXG4gICAgICAgIGFkZHJlc3NQcmVmaXhlczogc3VibmV0Q29uZmlnLmFkZHJlc3NQcmVmaXhlcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1Ym5ldHNbc3VibmV0Q29uZmlnLm5hbWVdID0gc3VibmV0OyAvLyBQb3B1bGF0ZSB0aGUgc3VibmV0c01hcFxuICAgIH1cbiAgfVxuXG4gIC8vIENyZWF0ZSBWbmV0IFBlZXJpbmcgTWV0aG9kXG4gIHB1YmxpYyBhZGRWbmV0UGVlcmluZyhcbiAgICByZW1vdGVWaXJ0dWFsTmV0d29yazogTmV0d29yayxcbiAgICBsb2NhbFBlZXJTZXR0aW5ncz86IFBlZXJTZXR0aW5ncyxcbiAgICByZW1vdGVQZWVyU2V0dGluZ3M/OiBQZWVyU2V0dGluZ3MsXG4gICkge1xuICAgIGNvbnN0IHZuZXRQZWVyUHJvcHM6IFBlZXJQcm9wcyA9IHtcbiAgICAgIHZpcnR1YWxOZXR3b3JrOiB0aGlzLFxuICAgICAgcmVtb3RlVmlydHVhbE5ldHdvcms6IHJlbW90ZVZpcnR1YWxOZXR3b3JrLFxuICAgICAgbG9jYWxUb1JlbW90ZVNldHRpbmdzOiBsb2NhbFBlZXJTZXR0aW5ncyxcbiAgICAgIHJlbW90ZVRvTG9jYWxTZXR0aW5nczogcmVtb3RlUGVlclNldHRpbmdzLFxuICAgIH07XG4gICAgbmV3IFBlZXIodGhpcywgcmVtb3RlVmlydHVhbE5ldHdvcmsuaWQsIHZuZXRQZWVyUHJvcHMpO1xuICB9XG59XG4iXX0=
119
+ Network[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualnetwork.Network", version: "0.0.3-pre.7" };
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29yay9saWIvbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLCtEQUE0RDtBQUM1RCxpRkFBNkU7QUFFN0UsdUNBQTBEO0FBQzFELDhDQUFxRDtBQW9EckQsTUFBYSxPQUFRLFNBQVEsbUJBQWE7SUFPeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0E0Qkc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1CO1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUEvQkgsWUFBTyxHQUErQixFQUFFLENBQUMsQ0FBQyxzQ0FBc0M7UUFpQzlGLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLE1BQU0sUUFBUSxHQUFHO1lBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUTtZQUNwQyxZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVksSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUNuRCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSTtnQkFDeEI7b0JBQ0UsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsZUFBZSxFQUFFLENBQUMsYUFBYSxDQUFDO2lCQUNqQzthQUNGO1NBQ0YsQ0FBQztRQUVGLDJCQUEyQjtRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLGdDQUFjLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUM1QyxHQUFHLFFBQVE7WUFDWCxpQkFBaUIsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUk7U0FDNUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFM0IsNENBQTRDO1FBQzVDLEtBQUssTUFBTSxZQUFZLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUksRUFBRTtnQkFDakQsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJO2dCQUN2QixpQkFBaUIsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUk7Z0JBQzNDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUM3QixlQUFlLEVBQUUsWUFBWSxDQUFDLGVBQWU7YUFDOUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsMEJBQTBCO1NBQ3JFO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ0ksY0FBYyxDQUNuQixvQkFBNkIsRUFDN0IsaUJBQWdDLEVBQ2hDLGtCQUFpQztRQUVqQyxNQUFNLGFBQWEsR0FBYztZQUMvQixjQUFjLEVBQUUsSUFBSTtZQUNwQixvQkFBb0IsRUFBRSxvQkFBb0I7WUFDMUMscUJBQXFCLEVBQUUsaUJBQWlCO1lBQ3hDLHFCQUFxQixFQUFFLGtCQUFrQjtTQUMxQyxDQUFDO1FBQ0YsSUFBSSxjQUFJLENBQUMsSUFBSSxFQUFFLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDOztBQXpISCwwQkEwSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9yZXNvdXJjZS1ncm91cFwiO1xuaW1wb3J0IHsgU3VibmV0IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9zdWJuZXRcIjtcbmltcG9ydCB7IFZpcnR1YWxOZXR3b3JrIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi92aXJ0dWFsLW5ldHdvcmtcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBQZWVyUHJvcHMsIFBlZXIsIFBlZXJTZXR0aW5ncyB9IGZyb20gXCIuL3BlZXJpbmdcIjtcbmltcG9ydCB7IEF6dXJlUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWJcIjtcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGEgc3VibmV0IHdpdGhpbiBhbiBBenVyZSBWaXJ0dWFsIE5ldHdvcmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0Q29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdWJuZXQuIFRoaXMgbmFtZSBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIHZpcnR1YWwgbmV0d29yay5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQSBsaXN0IG9mIGFkZHJlc3MgcHJlZml4ZXMgZm9yIHRoZSBzdWJuZXQuIFRoZXNlIGFyZSBleHByZXNzZWQgaW4gQ0lEUiBub3RhdGlvbi5cbiAgICogRm9yIGV4YW1wbGUsICcxOTIuMTY4LjEuMC8yNCcgdG8gZGVmaW5lIGEgc3VibmV0IHdpdGggYSByYW5nZSBvZiBJUCBhZGRyZXNzZXMuXG4gICAqL1xuICByZWFkb25seSBhZGRyZXNzUHJlZml4ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGFuIEF6dXJlIFZpcnR1YWwgTmV0d29yay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlc291cmNlIGdyb3VwIHVuZGVyIHdoaWNoIHRoZSB2aXJ0dWFsIG5ldHdvcmsgd2lsbCBiZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cDogUmVzb3VyY2VHcm91cDtcblxuICAvKipcbiAgICogT3B0aW9uYWw6IFRoZSBuYW1lIG9mIHRoZSB2aXJ0dWFsIG5ldHdvcmsuIE11c3QgYmUgdW5pcXVlIHdpdGhpbiB0aGUgcmVzb3VyY2UgZ3JvdXAuXG4gICAqIElmIG5vdCBwcm92aWRlZCwgYSBkZWZhdWx0IG5hbWUgd2lsbCBiZSBhc3NpZ25lZC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsOiBUaGUgQXp1cmUgcmVnaW9uIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgdmlydHVhbCBuZXR3b3JrLCBlLmcuLCAnRWFzdCBVUycsICdXZXN0IEV1cm9wZScuXG4gICAqIElmIG5vdCBzcGVjaWZpZWQsIHRoZSByZWdpb24gb2YgdGhlIHJlc291cmNlIGdyb3VwIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogQSBsaXN0IG9mIGFkZHJlc3Mgc3BhY2VzIGZvciB0aGUgdmlydHVhbCBuZXR3b3JrLCBzcGVjaWZpZWQgaW4gQ0lEUiBub3RhdGlvbi5cbiAgICogRm9yIGV4YW1wbGUsIFsnMTAuMC4wLjAvMTYnXSBkZWZpbmVzIGEgc2luZ2xlIGFkZHJlc3Mgc3BhY2UuIE11bHRpcGxlIGFkZHJlc3Mgc3BhY2VzIGNhbiBiZSBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFkZHJlc3NTcGFjZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogQW4gYXJyYXkgb2Ygc3VibmV0IGNvbmZpZ3VyYXRpb25zIHRvIGJlIGNyZWF0ZWQgd2l0aGluIHRoZSB2aXJ0dWFsIG5ldHdvcmsuXG4gICAqIEVhY2ggc3VibmV0IGlzIGRlZmluZWQgYnkgaXRzIG5hbWUgYW5kIGFkZHJlc3MgcHJlZml4KGVzKS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldHM/OiBTdWJuZXRDb25maWdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIE5ldHdvcmsgZXh0ZW5kcyBBenVyZVJlc291cmNlIHtcbiAgcmVhZG9ubHkgcHJvcHM6IE5ldHdvcmtQcm9wcztcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdmlydHVhbE5ldHdvcms6IFZpcnR1YWxOZXR3b3JrO1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0czogeyBbbmFtZTogc3RyaW5nXTogU3VibmV0IH0gPSB7fTsgLy8gTWFwIG9mIHN1Ym5ldCBuYW1lIHRvIFN1Ym5ldCBvYmplY3RcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYW4gQXp1cmUgVmlydHVhbCBOZXR3b3JrIChWTmV0KSB3aXRoaW4gTWljcm9zb2Z0IEF6dXJlLlxuICAgKlxuICAgKiBUaGlzIGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgY3JlYXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgYSB2aXJ0dWFsIG5ldHdvcmssIHdoaWNoIHByb3ZpZGVzIGFuIGlzb2xhdGVkIGVudmlyb25tZW50XG4gICAqIHdoZXJlIEF6dXJlIHJlc291cmNlcywgc3VjaCBhcyBWTXMgYW5kIGRhdGFiYXNlcywgY2FuIHNlY3VyZWx5IGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlciwgdGhlIGludGVybmV0LCBhbmQgb24tcHJlbWlzZXNcbiAgICogbmV0d29ya3MuIEl0IHN1cHBvcnRzIGNvbmZpZ3VyYXRpb25zIHN1Y2ggYXMgbXVsdGlwbGUgYWRkcmVzcyBzcGFjZXMgYW5kIHN1Ym5ldHMsIGVuYWJsaW5nIGNvbXBsZXggbmV0d29ya2luZyBzY2VuYXJpb3MuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3QsIHR5cGljYWxseSByZXByZXNlbnRpbmcgdGhlIENsb3VkIERldmVsb3BtZW50IEtpdCAoQ0RLKSBhcHBsaWNhdGlvbi5cbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBuZXR3b3JrLCB1c2VkIHdpdGhpbiB0aGUgc2NvcGUgZm9yIHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgQXp1cmUgVmlydHVhbCBOZXR3b3JrLCBkZXJpdmVkIGZyb20gdGhlIE5ldHdvcmtQcm9wcyBpbnRlcmZhY2UuIFRoZXNlIGluY2x1ZGU6XG4gICAqICAgICAgICAgICAgICAgIC0gYHJlc291cmNlR3JvdXBgOiBUaGUgUmVzb3VyY2VHcm91cCB3aXRoaW4gd2hpY2ggdGhlIHZpcnR1YWwgbmV0d29yayB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqICAgICAgICAgICAgICAgIC0gYG5hbWVgOiBPcHRpb25hbC4gVGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgbmV0d29yay4gSWYgbm90IHByb3ZpZGVkLCBhIGRlZmF1bHQgbmFtZSB3aWxsIGJlIGFzc2lnbmVkLlxuICAgKiAgICAgICAgICAgICAgICAtIGBsb2NhdGlvbmA6IE9wdGlvbmFsLiBUaGUgQXp1cmUgcmVnaW9uIHdoZXJlIHRoZSB2aXJ0dWFsIG5ldHdvcmsgd2lsbCBiZSBkZXBsb3llZC4gRGVmYXVsdHMgdG8gdGhlIHJlc291cmNlIGdyb3VwJ3MgcmVnaW9uLlxuICAgKiAgICAgICAgICAgICAgICAtIGBhZGRyZXNzU3BhY2VgOiBPcHRpb25hbC4gQSBsaXN0IG9mIENJRFIgYmxvY2tzIHRoYXQgZGVmaW5lIHRoZSBhZGRyZXNzIHNwYWNlcyBvZiB0aGUgdmlydHVhbCBuZXR3b3JrLlxuICAgKiAgICAgICAgICAgICAgICAtIGBzdWJuZXRzYDogT3B0aW9uYWwuIEFuIGFycmF5IG9mIHN1Ym5ldHMgdG8gYmUgY3JlYXRlZCB3aXRoaW4gdGhlIHZpcnR1YWwgbmV0d29yaywgZWFjaCBkZWZpbmVkIGJ5IGEgbmFtZSBhbmQgYSBDSURSIGJsb2NrLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG5ldHdvcmsgPSBuZXcgTmV0d29yayh0aGlzLCAnTXlWaXJ0dWFsTmV0d29yaycsIHtcbiAgICogICByZXNvdXJjZUdyb3VwOiBteVJlc291cmNlR3JvdXAsXG4gICAqICAgbmFtZTogJ215Vk5ldCcsXG4gICAqICAgbG9jYXRpb246ICdXZXN0IFVTJyxcbiAgICogICBhZGRyZXNzU3BhY2U6IFsnMTAuMC4wLjAvMTYnXSxcbiAgICogICBzdWJuZXRzOiBbeyBuYW1lOiAnc3VibmV0MScsIGFkZHJlc3NQcmVmaXhlczogWycxMC4wLjEuMC8yNCddIH1dXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICogVGhpcyBjbGFzcyBpbml0aWFsaXplcyBhIHZpcnR1YWwgbmV0d29yayB3aXRoIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbnMgYW5kIGhhbmRsZXMgdGhlIHByb3Zpc2lvbmluZyBvZiBzdWJuZXRzXG4gICAqIHdpdGhpbiB0aGUgbmV0d29yaywgcHJvdmlkaW5nIGEgZm91bmRhdGlvbmFsIG5ldHdvcmtpbmcgbGF5ZXIgZm9yIGhvc3RpbmcgY2xvdWQgcmVzb3VyY2VzLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5ldHdvcmtQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgYHZuZXQtJHt0aGlzLm5vZGUucGF0aC5zcGxpdChcIi9cIilbMF19YCxcbiAgICAgIGxvY2F0aW9uOiBwcm9wcy5sb2NhdGlvbiB8fCBcImVhc3R1c1wiLFxuICAgICAgYWRkcmVzc1NwYWNlOiBwcm9wcy5hZGRyZXNzU3BhY2UgfHwgW1wiMTAuMC4wLjAvMTZcIl0sXG4gICAgICBzdWJuZXRzOiBwcm9wcy5zdWJuZXRzIHx8IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTAuMS4wLjAvMjRcIl0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICAvLyBDcmVhdGUgYSB2aXJ0dWFsIG5ldHdvcmtcbiAgICBjb25zdCB2bmV0ID0gbmV3IFZpcnR1YWxOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWUgPSB2bmV0Lm5hbWU7XG4gICAgdGhpcy5pZCA9IHZuZXQuaWQ7XG4gICAgdGhpcy5yZXNvdXJjZUdyb3VwID0gcHJvcHMucmVzb3VyY2VHcm91cDtcbiAgICB0aGlzLnZpcnR1YWxOZXR3b3JrID0gdm5ldDtcblxuICAgIC8vIENyZWF0ZSBzdWJuZXRzIHdpdGhpbiB0aGUgdmlydHVhbCBuZXR3b3JrXG4gICAgZm9yIChjb25zdCBzdWJuZXRDb25maWcgb2YgZGVmYXVsdHMuc3VibmV0cykge1xuICAgICAgY29uc3Qgc3VibmV0ID0gbmV3IFN1Ym5ldCh0aGlzLCBzdWJuZXRDb25maWcubmFtZSwge1xuICAgICAgICBuYW1lOiBzdWJuZXRDb25maWcubmFtZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgICAgdmlydHVhbE5ldHdvcmtOYW1lOiB2bmV0Lm5hbWUsXG4gICAgICAgIGFkZHJlc3NQcmVmaXhlczogc3VibmV0Q29uZmlnLmFkZHJlc3NQcmVmaXhlcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1Ym5ldHNbc3VibmV0Q29uZmlnLm5hbWVdID0gc3VibmV0OyAvLyBQb3B1bGF0ZSB0aGUgc3VibmV0c01hcFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFc3RhYmxpc2hlcyBhIHBlZXJpbmcgY29ubmVjdGlvbiBiZXR3ZWVuIHRoaXMgdmlydHVhbCBuZXR3b3JrIGFuZCBhbm90aGVyIHJlbW90ZSB2aXJ0dWFsIG5ldHdvcmsuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYSB0d28td2F5IHBlZXJpbmcgY29ubmVjdGlvbiwgYWxsb3dpbmcgcmVzb3VyY2VzIGluIGJvdGggdmlydHVhbCBuZXR3b3JrcyB0byBjb21tdW5pY2F0ZVxuICAgKiBzZWFtbGVzc2x5LiBJdCBzZXRzIHVwIHBlZXJpbmcgc2V0dGluZ3Mgc3VjaCBhcyBuZXR3b3JrIGFjY2VzcywgdHJhZmZpYyBmb3J3YXJkaW5nLCBhbmQgZ2F0ZXdheSB0cmFuc2l0IGJhc2VkIG9uXG4gICAqIHByb3ZpZGVkIGNvbmZpZ3VyYXRpb25zLlxuICAgKlxuICAgKiBAcGFyYW0gcmVtb3RlVmlydHVhbE5ldHdvcmsgLSBUaGUgcmVtb3RlIHZpcnR1YWwgbmV0d29yayB3aXRoIHdoaWNoIHRvIGVzdGFibGlzaCBhIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICogQHBhcmFtIGxvY2FsUGVlclNldHRpbmdzIC0gT3B0aW9uYWwgc2V0dGluZ3MgYXBwbGllZCBmcm9tIHRoaXMgdmlydHVhbCBuZXR3b3JrIHRvIHRoZSByZW1vdGUgdmlydHVhbCBuZXR3b3JrLlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbHMgYXNwZWN0cyBsaWtlIHZpcnR1YWwgbmV0d29yayBhY2Nlc3MsIHRyYWZmaWMgZm9yd2FyZGluZywgYW5kIHVzZSBvZiBnYXRld2F5cy5cbiAgICogQHBhcmFtIHJlbW90ZVBlZXJTZXR0aW5ncyAtIE9wdGlvbmFsIHNldHRpbmdzIGFwcGxpZWQgZnJvbSB0aGUgcmVtb3RlIHZpcnR1YWwgbmV0d29yayB0byB0aGlzIHZpcnR1YWwgbmV0d29yay5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93cyBjdXN0b21pemF0aW9uIG9mIGhvdyB0aGUgcmVtb3RlIG5ldHdvcmsgaW50ZXJhY3RzIHdpdGggdGhpcyBvbmUuXG4gICAqXG4gICAqIEV4YW1wbGUgdXNhZ2U6XG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gQXNzdW1pbmcgJ3RoaXMnIGlzIGEgcmVmZXJlbmNlIHRvIGEgbG9jYWwgdmlydHVhbCBuZXR3b3JrIGluc3RhbmNlLlxuICAgKiBjb25zdCBwYXJ0bmVyVk5ldCA9IG5ldyBOZXR3b3JrKHRoaXMsICdQYXJ0bmVyVk5ldCcsIHsgLi4uIH0pO1xuICAgKiB0aGlzLmFkZFZuZXRQZWVyaW5nKHBhcnRuZXJWTmV0LCB7XG4gICAqICAgYWxsb3dWaXJ0dWFsTmV0d29ya0FjY2VzczogdHJ1ZSxcbiAgICogICBhbGxvd0ZvcndhcmRlZFRyYWZmaWM6IGZhbHNlLFxuICAgKiAgIGFsbG93R2F0ZXdheVRyYW5zaXQ6IHRydWUsXG4gICAqICAgdXNlUmVtb3RlR2F0ZXdheXM6IGZhbHNlXG4gICAqIH0sIHtcbiAgICogICBhbGxvd1ZpcnR1YWxOZXR3b3JrQWNjZXNzOiB0cnVlLFxuICAgKiAgIGFsbG93Rm9yd2FyZGVkVHJhZmZpYzogdHJ1ZSxcbiAgICogICBhbGxvd0dhdGV3YXlUcmFuc2l0OiBmYWxzZSxcbiAgICogICB1c2VSZW1vdGVHYXRld2F5czogZmFsc2VcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKiBUaGlzIG1ldGhvZCBpbnZva2VzIHRoZSBgUGVlcmAgY2xhc3MgdG8gY3JlYXRlIGEgcGVlcmluZyBiZXR3ZWVuICd0aGlzJyB2aXJ0dWFsIG5ldHdvcmsgYW5kICdwYXJ0bmVyVk5ldCcuXG4gICAqIFRoZSBzZXR0aW5ncyBjb250cm9sIHRyYWZmaWMgYmVoYXZpb3IgYW5kIGFjY2VzcyBwZXJtaXNzaW9ucyBpbiBib3RoIGRpcmVjdGlvbnMgb2YgdGhlIHBlZXJpbmcuXG4gICAqL1xuICBwdWJsaWMgYWRkVm5ldFBlZXJpbmcoXG4gICAgcmVtb3RlVmlydHVhbE5ldHdvcms6IE5ldHdvcmssXG4gICAgbG9jYWxQZWVyU2V0dGluZ3M/OiBQZWVyU2V0dGluZ3MsXG4gICAgcmVtb3RlUGVlclNldHRpbmdzPzogUGVlclNldHRpbmdzLFxuICApIHtcbiAgICBjb25zdCB2bmV0UGVlclByb3BzOiBQZWVyUHJvcHMgPSB7XG4gICAgICB2aXJ0dWFsTmV0d29yazogdGhpcyxcbiAgICAgIHJlbW90ZVZpcnR1YWxOZXR3b3JrOiByZW1vdGVWaXJ0dWFsTmV0d29yayxcbiAgICAgIGxvY2FsVG9SZW1vdGVTZXR0aW5nczogbG9jYWxQZWVyU2V0dGluZ3MsXG4gICAgICByZW1vdGVUb0xvY2FsU2V0dGluZ3M6IHJlbW90ZVBlZXJTZXR0aW5ncyxcbiAgICB9O1xuICAgIG5ldyBQZWVyKHRoaXMsIHJlbW90ZVZpcnR1YWxOZXR3b3JrLmlkLCB2bmV0UGVlclByb3BzKTtcbiAgfVxufVxuIl19
@@ -47,5 +47,44 @@ export interface PeerProps {
47
47
  readonly remoteToLocalSettings: PeerSettings | undefined;
48
48
  }
49
49
  export declare class Peer extends Construct {
50
+ /**
51
+ * Represents a Virtual Network Peering within Microsoft Azure.
52
+ *
53
+ * This class facilitates the peering between two virtual networks, allowing resources in either network to communicate
54
+ * with each other as if they were within the same network. It supports advanced configurations such as traffic forwarding,
55
+ * gateway transit, and access settings. This peering does not require a VPN gateway and offers low-latency, high-bandwidth
56
+ * connections between resources in different virtual networks.
57
+ *
58
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
59
+ * @param name - The unique name for this instance of the network peering.
60
+ * @param props - Configuration properties for the network peering, derived from the PeerProps interface. These include:
61
+ * - `virtualNetwork`: The local virtual network object.
62
+ * - `remoteVirtualNetwork`: The remote virtual network object.
63
+ * - `localToRemoteSettings`: Configuration settings applied from the local virtual network to the remote virtual network.
64
+ * - `remoteToLocalSettings`: Configuration settings applied from the remote virtual network to the local virtual network.
65
+ *
66
+ * Example usage:
67
+ * ```typescript
68
+ * const vnetPeering = new Peer(this, 'VNetPeering', {
69
+ * virtualNetwork: myVNet,
70
+ * remoteVirtualNetwork: partnerVNet,
71
+ * localToRemoteSettings: {
72
+ * allowVirtualNetworkAccess: true,
73
+ * allowForwardedTraffic: false,
74
+ * allowGatewayTransit: false,
75
+ * useRemoteGateways: false
76
+ * },
77
+ * remoteToLocalSettings: {
78
+ * allowVirtualNetworkAccess: true,
79
+ * allowForwardedTraffic: true,
80
+ * allowGatewayTransit: false,
81
+ * useRemoteGateways: false
82
+ * }
83
+ * });
84
+ * ```
85
+ * This class initializes a VNet peering with the specified configurations, enabling direct connectivity between
86
+ * the specified virtual networks. It manages the creation and configuration of network peering settings, ensuring
87
+ * that both VNets are appropriately linked and configured according to the defined properties.
88
+ */
50
89
  constructor(scope: Construct, name: string, props: PeerProps);
51
90
  }
@@ -6,6 +6,45 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const virtual_network_peering_1 = require("@cdktf/provider-azurerm/lib/virtual-network-peering");
7
7
  const constructs_1 = require("constructs");
8
8
  class Peer extends constructs_1.Construct {
9
+ /**
10
+ * Represents a Virtual Network Peering within Microsoft Azure.
11
+ *
12
+ * This class facilitates the peering between two virtual networks, allowing resources in either network to communicate
13
+ * with each other as if they were within the same network. It supports advanced configurations such as traffic forwarding,
14
+ * gateway transit, and access settings. This peering does not require a VPN gateway and offers low-latency, high-bandwidth
15
+ * connections between resources in different virtual networks.
16
+ *
17
+ * @param scope - The scope in which to define this construct, typically representing the Cloud Development Kit (CDK) application.
18
+ * @param name - The unique name for this instance of the network peering.
19
+ * @param props - Configuration properties for the network peering, derived from the PeerProps interface. These include:
20
+ * - `virtualNetwork`: The local virtual network object.
21
+ * - `remoteVirtualNetwork`: The remote virtual network object.
22
+ * - `localToRemoteSettings`: Configuration settings applied from the local virtual network to the remote virtual network.
23
+ * - `remoteToLocalSettings`: Configuration settings applied from the remote virtual network to the local virtual network.
24
+ *
25
+ * Example usage:
26
+ * ```typescript
27
+ * const vnetPeering = new Peer(this, 'VNetPeering', {
28
+ * virtualNetwork: myVNet,
29
+ * remoteVirtualNetwork: partnerVNet,
30
+ * localToRemoteSettings: {
31
+ * allowVirtualNetworkAccess: true,
32
+ * allowForwardedTraffic: false,
33
+ * allowGatewayTransit: false,
34
+ * useRemoteGateways: false
35
+ * },
36
+ * remoteToLocalSettings: {
37
+ * allowVirtualNetworkAccess: true,
38
+ * allowForwardedTraffic: true,
39
+ * allowGatewayTransit: false,
40
+ * useRemoteGateways: false
41
+ * }
42
+ * });
43
+ * ```
44
+ * This class initializes a VNet peering with the specified configurations, enabling direct connectivity between
45
+ * the specified virtual networks. It manages the creation and configuration of network peering settings, ensuring
46
+ * that both VNets are appropriately linked and configured according to the defined properties.
47
+ */
9
48
  constructor(scope, name, props) {
10
49
  super(scope, name);
11
50
  const localtoRemotePeerName = props.virtualNetwork.name + "to" + props.remoteVirtualNetwork.name;
@@ -28,5 +67,5 @@ class Peer extends constructs_1.Construct {
28
67
  }
29
68
  exports.Peer = Peer;
30
69
  _a = JSII_RTTI_SYMBOL_1;
31
- Peer[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualnetwork.Peer", version: "0.0.3-pre.6" };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29yay9saWIvcGVlcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlHQUE0RjtBQUM1RiwyQ0FBdUM7QUF5RHZDLE1BQWEsSUFBSyxTQUFRLHNCQUFTO0lBQ2pDLFlBQVksS0FBZ0IsRUFBRSxJQUFZLEVBQUUsS0FBZ0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVuQixNQUFNLHFCQUFxQixHQUN6QixLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztRQUVyRSxJQUFJLCtDQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUN2RCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDMUQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJO1lBQzdDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ3JELEdBQUcsS0FBSyxDQUFDLHFCQUFxQjtTQUMvQixDQUFDLENBQUM7UUFFSCxNQUFNLHFCQUFxQixHQUN6QixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVyRSxJQUFJLCtDQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUN2RCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsSUFBSTtZQUNoRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSTtZQUNuRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDL0MsR0FBRyxLQUFLLENBQUMscUJBQXFCO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekJILG9CQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpcnR1YWxOZXR3b3JrUGVlcmluZyB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvdmlydHVhbC1uZXR3b3JrLXBlZXJpbmdcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSBcIi4vbmV0d29ya1wiO1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyB0aGUgc2V0dGluZ3MgZm9yIHBlZXIgY29ubmVjdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVlclNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHZpcnR1YWwgbmV0d29yayBhY2Nlc3MgaXMgYWxsb3dlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dWaXJ0dWFsTmV0d29ya0FjY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGZvcndhcmRlZCB0cmFmZmljIGlzIGFsbG93ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ZvcndhcmRlZFRyYWZmaWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBnYXRld2F5IHRyYW5zaXQgaXMgYWxsb3dlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93R2F0ZXdheVRyYW5zaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgcmVtb3RlIGdhdGV3YXlzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlUmVtb3RlR2F0ZXdheXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyB0aGUgcHJvcGVydGllcyBmb3IgdmlydHVhbCBuZXR3b3JrIHBlZXJpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgbG9jYWwgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbE5ldHdvcms6IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIElEIG9mIHRoZSByZW1vdGUgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3RlVmlydHVhbE5ldHdvcms6IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIGFwcGxpZWQgZnJvbSB0aGUgbG9jYWwgdmlydHVhbCBuZXR3b3JrIHRvIHRoZSByZW1vdGUgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxUb1JlbW90ZVNldHRpbmdzOiBQZWVyU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIGFwcGxpZWQgZnJvbSB0aGUgcmVtb3RlIHZpcnR1YWwgbmV0d29yayB0byB0aGUgbG9jYWwgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3RlVG9Mb2NhbFNldHRpbmdzOiBQZWVyU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBQZWVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbmFtZTogc3RyaW5nLCBwcm9wczogUGVlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIG5hbWUpO1xuXG4gICAgY29uc3QgbG9jYWx0b1JlbW90ZVBlZXJOYW1lID1cbiAgICAgIHByb3BzLnZpcnR1YWxOZXR3b3JrLm5hbWUgKyBcInRvXCIgKyBwcm9wcy5yZW1vdGVWaXJ0dWFsTmV0d29yay5uYW1lO1xuXG4gICAgbmV3IFZpcnR1YWxOZXR3b3JrUGVlcmluZyh0aGlzLCBcIlZOZXRQZWVyTG9jYWx0b1JlbW90ZVwiLCB7XG4gICAgICBuYW1lOiBsb2NhbHRvUmVtb3RlUGVlck5hbWUsXG4gICAgICByZXNvdXJjZUdyb3VwTmFtZTogcHJvcHMudmlydHVhbE5ldHdvcmsucmVzb3VyY2VHcm91cC5uYW1lLFxuICAgICAgdmlydHVhbE5ldHdvcmtOYW1lOiBwcm9wcy52aXJ0dWFsTmV0d29yay5uYW1lLFxuICAgICAgcmVtb3RlVmlydHVhbE5ldHdvcmtJZDogcHJvcHMucmVtb3RlVmlydHVhbE5ldHdvcmsuaWQsXG4gICAgICAuLi5wcm9wcy5sb2NhbFRvUmVtb3RlU2V0dGluZ3MsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZW1vdGVUb0xvY2FsUGVlck5hbWUgPVxuICAgICAgcHJvcHMucmVtb3RlVmlydHVhbE5ldHdvcmsubmFtZSArIFwidG9cIiArIHByb3BzLnZpcnR1YWxOZXR3b3JrLm5hbWU7XG5cbiAgICBuZXcgVmlydHVhbE5ldHdvcmtQZWVyaW5nKHRoaXMsIFwiVk5ldFBlZXJSZW1vdGV0b0xvY2FsXCIsIHtcbiAgICAgIG5hbWU6IHJlbW90ZVRvTG9jYWxQZWVyTmFtZSxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy5yZW1vdGVWaXJ0dWFsTmV0d29yay5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICB2aXJ0dWFsTmV0d29ya05hbWU6IHByb3BzLnJlbW90ZVZpcnR1YWxOZXR3b3JrLm5hbWUsXG4gICAgICByZW1vdGVWaXJ0dWFsTmV0d29ya0lkOiBwcm9wcy52aXJ0dWFsTmV0d29yay5pZCxcbiAgICAgIC4uLnByb3BzLnJlbW90ZVRvTG9jYWxTZXR0aW5ncyxcbiAgICB9KTtcbiAgfVxufVxuIl19
70
+ Peer[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_virtualnetwork.Peer", version: "0.0.3-pre.7" };
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVlcmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29yay9saWIvcGVlcmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlHQUE0RjtBQUM1RiwyQ0FBdUM7QUF5RHZDLE1BQWEsSUFBSyxTQUFRLHNCQUFTO0lBQ2pDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNDRztJQUNILFlBQVksS0FBZ0IsRUFBRSxJQUFZLEVBQUUsS0FBZ0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVuQixNQUFNLHFCQUFxQixHQUN6QixLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztRQUVyRSxJQUFJLCtDQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUN2RCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLElBQUk7WUFDMUQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJO1lBQzdDLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ3JELEdBQUcsS0FBSyxDQUFDLHFCQUFxQjtTQUMvQixDQUFDLENBQUM7UUFFSCxNQUFNLHFCQUFxQixHQUN6QixLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztRQUVyRSxJQUFJLCtDQUFxQixDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRTtZQUN2RCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsSUFBSTtZQUNoRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSTtZQUNuRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDL0MsR0FBRyxLQUFLLENBQUMscUJBQXFCO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBaEVILG9CQWlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZpcnR1YWxOZXR3b3JrUGVlcmluZyB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvdmlydHVhbC1uZXR3b3JrLXBlZXJpbmdcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSBcIi4vbmV0d29ya1wiO1xuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyB0aGUgc2V0dGluZ3MgZm9yIHBlZXIgY29ubmVjdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGVlclNldHRpbmdzIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHZpcnR1YWwgbmV0d29yayBhY2Nlc3MgaXMgYWxsb3dlZC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dWaXJ0dWFsTmV0d29ya0FjY2Vzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGZvcndhcmRlZCB0cmFmZmljIGlzIGFsbG93ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0ZvcndhcmRlZFRyYWZmaWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBnYXRld2F5IHRyYW5zaXQgaXMgYWxsb3dlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93R2F0ZXdheVRyYW5zaXQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgcmVtb3RlIGdhdGV3YXlzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlUmVtb3RlR2F0ZXdheXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBkZWZpbmluZyB0aGUgcHJvcGVydGllcyBmb3IgdmlydHVhbCBuZXR3b3JrIHBlZXJpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBlZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgbG9jYWwgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgdmlydHVhbE5ldHdvcms6IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIElEIG9mIHRoZSByZW1vdGUgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3RlVmlydHVhbE5ldHdvcms6IE5ldHdvcms7XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIGFwcGxpZWQgZnJvbSB0aGUgbG9jYWwgdmlydHVhbCBuZXR3b3JrIHRvIHRoZSByZW1vdGUgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYWxUb1JlbW90ZVNldHRpbmdzOiBQZWVyU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFNldHRpbmdzIGFwcGxpZWQgZnJvbSB0aGUgcmVtb3RlIHZpcnR1YWwgbmV0d29yayB0byB0aGUgbG9jYWwgdmlydHVhbCBuZXR3b3JrLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3RlVG9Mb2NhbFNldHRpbmdzOiBQZWVyU2V0dGluZ3MgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBQZWVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgYSBWaXJ0dWFsIE5ldHdvcmsgUGVlcmluZyB3aXRoaW4gTWljcm9zb2Z0IEF6dXJlLlxuICAgKlxuICAgKiBUaGlzIGNsYXNzIGZhY2lsaXRhdGVzIHRoZSBwZWVyaW5nIGJldHdlZW4gdHdvIHZpcnR1YWwgbmV0d29ya3MsIGFsbG93aW5nIHJlc291cmNlcyBpbiBlaXRoZXIgbmV0d29yayB0byBjb21tdW5pY2F0ZVxuICAgKiB3aXRoIGVhY2ggb3RoZXIgYXMgaWYgdGhleSB3ZXJlIHdpdGhpbiB0aGUgc2FtZSBuZXR3b3JrLiBJdCBzdXBwb3J0cyBhZHZhbmNlZCBjb25maWd1cmF0aW9ucyBzdWNoIGFzIHRyYWZmaWMgZm9yd2FyZGluZyxcbiAgICogZ2F0ZXdheSB0cmFuc2l0LCBhbmQgYWNjZXNzIHNldHRpbmdzLiBUaGlzIHBlZXJpbmcgZG9lcyBub3QgcmVxdWlyZSBhIFZQTiBnYXRld2F5IGFuZCBvZmZlcnMgbG93LWxhdGVuY3ksIGhpZ2gtYmFuZHdpZHRoXG4gICAqIGNvbm5lY3Rpb25zIGJldHdlZW4gcmVzb3VyY2VzIGluIGRpZmZlcmVudCB2aXJ0dWFsIG5ldHdvcmtzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0LCB0eXBpY2FsbHkgcmVwcmVzZW50aW5nIHRoZSBDbG91ZCBEZXZlbG9wbWVudCBLaXQgKENESykgYXBwbGljYXRpb24uXG4gICAqIEBwYXJhbSBuYW1lIC0gVGhlIHVuaXF1ZSBuYW1lIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBuZXR3b3JrIHBlZXJpbmcuXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIG5ldHdvcmsgcGVlcmluZywgZGVyaXZlZCBmcm9tIHRoZSBQZWVyUHJvcHMgaW50ZXJmYWNlLiBUaGVzZSBpbmNsdWRlOlxuICAgKiAgICAgICAgICAgICAgICAtIGB2aXJ0dWFsTmV0d29ya2A6IFRoZSBsb2NhbCB2aXJ0dWFsIG5ldHdvcmsgb2JqZWN0LlxuICAgKiAgICAgICAgICAgICAgICAtIGByZW1vdGVWaXJ0dWFsTmV0d29ya2A6IFRoZSByZW1vdGUgdmlydHVhbCBuZXR3b3JrIG9iamVjdC5cbiAgICogICAgICAgICAgICAgICAgLSBgbG9jYWxUb1JlbW90ZVNldHRpbmdzYDogQ29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcHBsaWVkIGZyb20gdGhlIGxvY2FsIHZpcnR1YWwgbmV0d29yayB0byB0aGUgcmVtb3RlIHZpcnR1YWwgbmV0d29yay5cbiAgICogICAgICAgICAgICAgICAgLSBgcmVtb3RlVG9Mb2NhbFNldHRpbmdzYDogQ29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcHBsaWVkIGZyb20gdGhlIHJlbW90ZSB2aXJ0dWFsIG5ldHdvcmsgdG8gdGhlIGxvY2FsIHZpcnR1YWwgbmV0d29yay5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB2bmV0UGVlcmluZyA9IG5ldyBQZWVyKHRoaXMsICdWTmV0UGVlcmluZycsIHtcbiAgICogICB2aXJ0dWFsTmV0d29yazogbXlWTmV0LFxuICAgKiAgIHJlbW90ZVZpcnR1YWxOZXR3b3JrOiBwYXJ0bmVyVk5ldCxcbiAgICogICBsb2NhbFRvUmVtb3RlU2V0dGluZ3M6IHtcbiAgICogICAgIGFsbG93VmlydHVhbE5ldHdvcmtBY2Nlc3M6IHRydWUsXG4gICAqICAgICBhbGxvd0ZvcndhcmRlZFRyYWZmaWM6IGZhbHNlLFxuICAgKiAgICAgYWxsb3dHYXRld2F5VHJhbnNpdDogZmFsc2UsXG4gICAqICAgICB1c2VSZW1vdGVHYXRld2F5czogZmFsc2VcbiAgICogICB9LFxuICAgKiAgIHJlbW90ZVRvTG9jYWxTZXR0aW5nczoge1xuICAgKiAgICAgYWxsb3dWaXJ0dWFsTmV0d29ya0FjY2VzczogdHJ1ZSxcbiAgICogICAgIGFsbG93Rm9yd2FyZGVkVHJhZmZpYzogdHJ1ZSxcbiAgICogICAgIGFsbG93R2F0ZXdheVRyYW5zaXQ6IGZhbHNlLFxuICAgKiAgICAgdXNlUmVtb3RlR2F0ZXdheXM6IGZhbHNlXG4gICAqICAgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqIFRoaXMgY2xhc3MgaW5pdGlhbGl6ZXMgYSBWTmV0IHBlZXJpbmcgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb25zLCBlbmFibGluZyBkaXJlY3QgY29ubmVjdGl2aXR5IGJldHdlZW5cbiAgICogdGhlIHNwZWNpZmllZCB2aXJ0dWFsIG5ldHdvcmtzLiBJdCBtYW5hZ2VzIHRoZSBjcmVhdGlvbiBhbmQgY29uZmlndXJhdGlvbiBvZiBuZXR3b3JrIHBlZXJpbmcgc2V0dGluZ3MsIGVuc3VyaW5nXG4gICAqIHRoYXQgYm90aCBWTmV0cyBhcmUgYXBwcm9wcmlhdGVseSBsaW5rZWQgYW5kIGNvbmZpZ3VyZWQgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbmVkIHByb3BlcnRpZXMuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBQZWVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgbmFtZSk7XG5cbiAgICBjb25zdCBsb2NhbHRvUmVtb3RlUGVlck5hbWUgPVxuICAgICAgcHJvcHMudmlydHVhbE5ldHdvcmsubmFtZSArIFwidG9cIiArIHByb3BzLnJlbW90ZVZpcnR1YWxOZXR3b3JrLm5hbWU7XG5cbiAgICBuZXcgVmlydHVhbE5ldHdvcmtQZWVyaW5nKHRoaXMsIFwiVk5ldFBlZXJMb2NhbHRvUmVtb3RlXCIsIHtcbiAgICAgIG5hbWU6IGxvY2FsdG9SZW1vdGVQZWVyTmFtZSxcbiAgICAgIHJlc291cmNlR3JvdXBOYW1lOiBwcm9wcy52aXJ0dWFsTmV0d29yay5yZXNvdXJjZUdyb3VwLm5hbWUsXG4gICAgICB2aXJ0dWFsTmV0d29ya05hbWU6IHByb3BzLnZpcnR1YWxOZXR3b3JrLm5hbWUsXG4gICAgICByZW1vdGVWaXJ0dWFsTmV0d29ya0lkOiBwcm9wcy5yZW1vdGVWaXJ0dWFsTmV0d29yay5pZCxcbiAgICAgIC4uLnByb3BzLmxvY2FsVG9SZW1vdGVTZXR0aW5ncyxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlbW90ZVRvTG9jYWxQZWVyTmFtZSA9XG4gICAgICBwcm9wcy5yZW1vdGVWaXJ0dWFsTmV0d29yay5uYW1lICsgXCJ0b1wiICsgcHJvcHMudmlydHVhbE5ldHdvcmsubmFtZTtcblxuICAgIG5ldyBWaXJ0dWFsTmV0d29ya1BlZXJpbmcodGhpcywgXCJWTmV0UGVlclJlbW90ZXRvTG9jYWxcIiwge1xuICAgICAgbmFtZTogcmVtb3RlVG9Mb2NhbFBlZXJOYW1lLFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlbW90ZVZpcnR1YWxOZXR3b3JrLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIHZpcnR1YWxOZXR3b3JrTmFtZTogcHJvcHMucmVtb3RlVmlydHVhbE5ldHdvcmsubmFtZSxcbiAgICAgIHJlbW90ZVZpcnR1YWxOZXR3b3JrSWQ6IHByb3BzLnZpcnR1YWxOZXR3b3JrLmlkLFxuICAgICAgLi4ucHJvcHMucmVtb3RlVG9Mb2NhbFNldHRpbmdzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=