@microsoft/terraform-cdk-constructs 1.2.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +54630 -26185
- package/API.md +72091 -23784
- package/lib/azure-actiongroup/index.d.ts +0 -10
- package/lib/azure-actiongroup/index.js +1 -11
- package/lib/azure-actiongroup/lib/action-group.d.ts +0 -10
- package/lib/azure-actiongroup/lib/action-group.js +6 -32
- package/lib/azure-actiongroup/lib/index.d.ts +1 -4
- package/lib/azure-actiongroup/lib/index.js +2 -5
- package/lib/azure-activitylogalert/index.d.ts +0 -10
- package/lib/azure-activitylogalert/index.js +1 -11
- package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +0 -10
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +6 -32
- package/lib/azure-activitylogalert/lib/index.d.ts +1 -4
- package/lib/azure-activitylogalert/lib/index.js +2 -5
- package/lib/azure-aks/index.d.ts +0 -8
- package/lib/azure-aks/index.js +1 -11
- package/lib/azure-aks/lib/aks-cluster.d.ts +4 -13
- package/lib/azure-aks/lib/aks-cluster.js +13 -36
- package/lib/azure-aks/lib/index.d.ts +1 -10
- package/lib/azure-aks/lib/index.js +2 -21
- package/lib/azure-diagnosticsettings/index.d.ts +0 -6
- package/lib/azure-diagnosticsettings/index.js +1 -7
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +0 -10
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +6 -32
- package/lib/azure-diagnosticsettings/lib/index.d.ts +1 -7
- package/lib/azure-diagnosticsettings/lib/index.js +2 -8
- package/lib/azure-dnsforwardingruleset/index.d.ts +1 -0
- package/lib/azure-dnsforwardingruleset/index.js +18 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.d.ts +24 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.js +206 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +174 -0
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +214 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.d.ts +24 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.js +242 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +193 -0
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +193 -0
- package/lib/azure-dnsforwardingruleset/lib/index.d.ts +6 -0
- package/lib/azure-dnsforwardingruleset/lib/index.js +23 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.d.ts +24 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.js +199 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +160 -0
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +178 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +133 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +350 -0
- package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +397 -0
- package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.d.ts +9 -0
- package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +285 -0
- package/lib/azure-dnsresolver/index.d.ts +1 -0
- package/lib/azure-dnsresolver/index.js +18 -0
- package/lib/azure-dnsresolver/lib/dns-resolver-schemas.d.ts +24 -0
- package/lib/azure-dnsresolver/lib/dns-resolver-schemas.js +218 -0
- package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +170 -0
- package/lib/azure-dnsresolver/lib/dns-resolver.js +236 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.d.ts +24 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.js +261 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +189 -0
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +243 -0
- package/lib/azure-dnsresolver/lib/index.d.ts +6 -0
- package/lib/azure-dnsresolver/lib/index.js +23 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.d.ts +24 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.js +231 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +175 -0
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +234 -0
- package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +14 -0
- package/lib/azure-dnsresolver/test/dns-resolver.integ.js +117 -0
- package/lib/azure-dnsresolver/test/dns-resolver.spec.d.ts +9 -0
- package/lib/azure-dnsresolver/test/dns-resolver.spec.js +353 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +9 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +151 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.spec.d.ts +9 -0
- package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +441 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +9 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +149 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.spec.d.ts +9 -0
- package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +301 -0
- package/lib/azure-dnszone/index.d.ts +1 -0
- package/lib/azure-dnszone/index.js +18 -0
- package/lib/azure-dnszone/lib/dns-zone-schemas.d.ts +24 -0
- package/lib/azure-dnszone/lib/dns-zone-schemas.js +191 -0
- package/lib/azure-dnszone/lib/dns-zone.d.ts +182 -0
- package/lib/azure-dnszone/lib/dns-zone.js +228 -0
- package/lib/azure-dnszone/lib/index.d.ts +2 -0
- package/lib/azure-dnszone/lib/index.js +19 -0
- package/lib/azure-dnszone/test/dns-zone.integ.d.ts +9 -0
- package/lib/azure-dnszone/test/dns-zone.integ.js +85 -0
- package/lib/azure-dnszone/test/dns-zone.spec.d.ts +9 -0
- package/lib/azure-dnszone/test/dns-zone.spec.js +285 -0
- package/lib/azure-metricalert/index.d.ts +0 -10
- package/lib/azure-metricalert/index.js +1 -11
- package/lib/azure-metricalert/lib/index.d.ts +1 -4
- package/lib/azure-metricalert/lib/index.js +2 -5
- package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -10
- package/lib/azure-metricalert/lib/metric-alert.js +6 -32
- package/lib/azure-networkinterface/index.d.ts +0 -3
- package/lib/azure-networkinterface/index.js +1 -4
- package/lib/azure-networkinterface/lib/index.d.ts +1 -5
- package/lib/azure-networkinterface/lib/index.js +2 -5
- package/lib/azure-networkinterface/lib/network-interface.d.ts +4 -9
- package/lib/azure-networkinterface/lib/network-interface.js +14 -29
- package/lib/azure-networkinterface/test/network-interface.integ.js +20 -6
- package/lib/azure-networksecuritygroup/index.d.ts +0 -5
- package/lib/azure-networksecuritygroup/index.js +1 -6
- package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -5
- package/lib/azure-networksecuritygroup/lib/index.js +17 -14
- package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +4 -13
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +14 -36
- package/lib/azure-policyassignment/index.d.ts +1 -0
- package/lib/azure-policyassignment/index.js +18 -0
- package/lib/azure-policyassignment/lib/index.d.ts +2 -0
- package/lib/azure-policyassignment/lib/index.js +19 -0
- package/lib/azure-policyassignment/lib/policy-assignment-schemas.d.ts +25 -0
- package/lib/azure-policyassignment/lib/policy-assignment-schemas.js +260 -0
- package/lib/azure-policyassignment/lib/policy-assignment.d.ts +349 -0
- package/lib/azure-policyassignment/lib/policy-assignment.js +237 -0
- package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +13 -0
- package/lib/azure-policyassignment/test/policy-assignment.integ.js +153 -0
- package/lib/azure-policyassignment/test/policy-assignment.spec.d.ts +9 -0
- package/lib/azure-policyassignment/test/policy-assignment.spec.js +651 -0
- package/lib/azure-policydefinition/index.d.ts +1 -0
- package/lib/azure-policydefinition/index.js +18 -0
- package/lib/azure-policydefinition/lib/index.d.ts +2 -0
- package/lib/azure-policydefinition/lib/index.js +19 -0
- package/lib/azure-policydefinition/lib/policy-definition-schemas.d.ts +25 -0
- package/lib/azure-policydefinition/lib/policy-definition-schemas.js +210 -0
- package/lib/azure-policydefinition/lib/policy-definition.d.ts +281 -0
- package/lib/azure-policydefinition/lib/policy-definition.js +236 -0
- package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +9 -0
- package/lib/azure-policydefinition/test/policy-definition.integ.js +137 -0
- package/lib/azure-policydefinition/test/policy-definition.spec.d.ts +9 -0
- package/lib/azure-policydefinition/test/policy-definition.spec.js +806 -0
- package/lib/azure-privatednszone/index.d.ts +1 -0
- package/lib/azure-privatednszone/index.js +18 -0
- package/lib/azure-privatednszone/lib/index.d.ts +2 -0
- package/lib/azure-privatednszone/lib/index.js +19 -0
- package/lib/azure-privatednszone/lib/private-dns-zone-schemas.d.ts +24 -0
- package/lib/azure-privatednszone/lib/private-dns-zone-schemas.js +254 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +178 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.js +272 -0
- package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +9 -0
- package/lib/azure-privatednszone/test/private-dns-zone.integ.js +84 -0
- package/lib/azure-privatednszone/test/private-dns-zone.spec.d.ts +9 -0
- package/lib/azure-privatednszone/test/private-dns-zone.spec.js +341 -0
- package/lib/azure-privatednszonelink/index.d.ts +1 -0
- package/lib/azure-privatednszonelink/index.js +18 -0
- package/lib/azure-privatednszonelink/lib/index.d.ts +2 -0
- package/lib/azure-privatednszonelink/lib/index.js +19 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.d.ts +24 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.js +262 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +202 -0
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +250 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +9 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +110 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.d.ts +9 -0
- package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +465 -0
- package/lib/azure-publicipaddress/index.d.ts +0 -5
- package/lib/azure-publicipaddress/index.js +1 -6
- package/lib/azure-publicipaddress/lib/index.d.ts +2 -9
- package/lib/azure-publicipaddress/lib/index.js +17 -17
- package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +4 -13
- package/lib/azure-publicipaddress/lib/public-ip-address.js +14 -36
- package/lib/azure-resourcegroup/index.d.ts +0 -37
- package/lib/azure-resourcegroup/index.js +1 -39
- package/lib/azure-resourcegroup/lib/index.d.ts +1 -44
- package/lib/azure-resourcegroup/lib/index.js +2 -43
- package/lib/azure-resourcegroup/lib/resource-group.d.ts +9 -23
- package/lib/azure-resourcegroup/lib/resource-group.js +23 -56
- package/lib/azure-resourcegroup/test/resource-group.spec.js +13 -19
- package/lib/azure-roleassignment/index.d.ts +1 -0
- package/lib/azure-roleassignment/index.js +18 -0
- package/lib/azure-roleassignment/lib/index.d.ts +2 -0
- package/lib/azure-roleassignment/lib/index.js +19 -0
- package/lib/azure-roleassignment/lib/role-assignment-schemas.d.ts +25 -0
- package/lib/azure-roleassignment/lib/role-assignment-schemas.js +238 -0
- package/lib/azure-roleassignment/lib/role-assignment.d.ts +294 -0
- package/lib/azure-roleassignment/lib/role-assignment.js +257 -0
- package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +12 -0
- package/lib/azure-roleassignment/test/role-assignment.integ.js +101 -0
- package/lib/azure-roleassignment/test/role-assignment.spec.d.ts +9 -0
- package/lib/azure-roleassignment/test/role-assignment.spec.js +633 -0
- package/lib/azure-roledefinition/index.d.ts +1 -0
- package/lib/azure-roledefinition/index.js +18 -0
- package/lib/azure-roledefinition/lib/index.d.ts +2 -0
- package/lib/azure-roledefinition/lib/index.js +19 -0
- package/lib/azure-roledefinition/lib/role-definition-schemas.d.ts +25 -0
- package/lib/azure-roledefinition/lib/role-definition-schemas.js +195 -0
- package/lib/azure-roledefinition/lib/role-definition.d.ts +236 -0
- package/lib/azure-roledefinition/lib/role-definition.js +192 -0
- package/lib/azure-roledefinition/test/role-definition.integ.d.ts +12 -0
- package/lib/azure-roledefinition/test/role-definition.integ.js +142 -0
- package/lib/azure-roledefinition/test/role-definition.spec.d.ts +9 -0
- package/lib/azure-roledefinition/test/role-definition.spec.js +946 -0
- package/lib/azure-storageaccount/index.d.ts +0 -19
- package/lib/azure-storageaccount/index.js +1 -20
- package/lib/azure-storageaccount/lib/index.d.ts +1 -7
- package/lib/azure-storageaccount/lib/index.js +2 -8
- package/lib/azure-storageaccount/lib/storage-account.d.ts +4 -9
- package/lib/azure-storageaccount/lib/storage-account.js +15 -29
- package/lib/azure-subnet/index.d.ts +0 -3
- package/lib/azure-subnet/index.js +1 -4
- package/lib/azure-subnet/lib/index.d.ts +1 -4
- package/lib/azure-subnet/lib/index.js +2 -5
- package/lib/azure-subnet/lib/subnet.d.ts +3 -14
- package/lib/azure-subnet/lib/subnet.js +28 -47
- package/lib/azure-subnet/test/subnet.integ.js +19 -7
- package/lib/azure-subnet/test/subnet.spec.js +1 -2
- package/lib/azure-virtualmachine/index.d.ts +0 -6
- package/lib/azure-virtualmachine/index.js +1 -7
- package/lib/azure-virtualmachine/lib/index.d.ts +1 -10
- package/lib/azure-virtualmachine/lib/index.js +2 -21
- package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +4 -13
- package/lib/azure-virtualmachine/lib/virtual-machine.js +15 -36
- package/lib/azure-virtualnetwork/index.d.ts +0 -9
- package/lib/azure-virtualnetwork/index.js +1 -11
- package/lib/azure-virtualnetwork/lib/index.d.ts +2 -9
- package/lib/azure-virtualnetwork/lib/index.js +17 -20
- package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +4 -13
- package/lib/azure-virtualnetwork/lib/virtual-network.js +15 -36
- package/lib/azure-virtualnetworkmanager/index.d.ts +1 -0
- package/lib/azure-virtualnetworkmanager/index.js +18 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.d.ts +48 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.js +265 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +185 -0
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +206 -0
- package/lib/azure-virtualnetworkmanager/lib/index.d.ts +14 -0
- package/lib/azure-virtualnetworkmanager/lib/index.js +31 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.js +189 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.js +201 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +135 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +163 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +139 -0
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +158 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.js +182 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +144 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +164 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.d.ts +38 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.js +206 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +142 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +162 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.d.ts +39 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.js +359 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +221 -0
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +204 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.d.ts +32 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.js +236 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +337 -0
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +283 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +25 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +402 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.d.ts +9 -0
- package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +1652 -0
- package/lib/azure-vmss/index.d.ts +0 -5
- package/lib/azure-vmss/index.js +1 -6
- package/lib/azure-vmss/lib/index.d.ts +0 -7
- package/lib/azure-vmss/lib/index.js +1 -21
- package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +5 -13
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +29 -53
- package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.d.ts +10 -0
- package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +218 -0
- package/lib/core-azure/lib/azapi/azapi-resource.d.ts +206 -26
- package/lib/core-azure/lib/azapi/azapi-resource.js +379 -91
- package/lib/core-azure/lib/azapi/azapi-resource.spec.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +5 -3
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
- package/lib/core-azure/lib/azapi/resource-schema-validator.d.ts +118 -0
- package/lib/core-azure/lib/azapi/resource-schema-validator.js +236 -0
- package/lib/core-azure/lib/azapi/resource-version-manager.d.ts +103 -0
- package/lib/core-azure/lib/azapi/resource-version-manager.js +168 -0
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +11 -6
- package/lib/core-azure/lib/index.d.ts +2 -2
- package/lib/core-azure/lib/index.js +5 -5
- package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
- package/lib/index.d.ts +19 -0
- package/lib/index.js +21 -2
- package/lib/testing/index.js +2 -2
- package/lib/testing/lib/cleanup.d.ts +1 -0
- package/lib/testing/lib/cleanup.js +19 -12
- package/lib/testing/lib/metadata.js +19 -16
- package/package.json +1 -1
- package/scripts/cleanup-test-resources.ts +22 -4
- package/scripts/generate-index.js +25 -8
|
@@ -500,10 +500,15 @@ class SchemaMapper {
|
|
|
500
500
|
break;
|
|
501
501
|
case version_interfaces_1.ValidationRuleType.PATTERN_MATCH:
|
|
502
502
|
if (typeof value === "string" && rule.value) {
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
503
|
+
// Skip pattern validation for Terraform interpolation strings
|
|
504
|
+
// These strings contain references like ${resource.id} that will be resolved at apply time
|
|
505
|
+
const isTerraformInterpolation = value.includes("${") && value.includes("}");
|
|
506
|
+
if (!isTerraformInterpolation) {
|
|
507
|
+
const pattern = new RegExp(rule.value);
|
|
508
|
+
if (!pattern.test(value)) {
|
|
509
|
+
errors.push(rule.message ||
|
|
510
|
+
`Property '${propertyPath}' does not match required pattern`);
|
|
511
|
+
}
|
|
507
512
|
}
|
|
508
513
|
}
|
|
509
514
|
break;
|
|
@@ -563,5 +568,5 @@ class SchemaMapper {
|
|
|
563
568
|
}
|
|
564
569
|
exports.SchemaMapper = SchemaMapper;
|
|
565
570
|
_a = JSII_RTTI_SYMBOL_1;
|
|
566
|
-
SchemaMapper[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SchemaMapper", version: "1.
|
|
567
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlLWF6dXJlL2xpYi9hemFwaS9zY2hlbWEtbWFwcGVyL3NjaGVtYS1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILDRGQU82RDtBQXFCN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBYSxZQUFZO0lBQ3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBaUI7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFN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O0lBQ0ssc0JBQXNCLENBQUMsR0FBUSxFQUFFLFNBQWlCO1FBQ3hELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOztBQS9yQkgsb0NBZ3NCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2NoZW1hTWFwcGVyIC0gQSBKU0lJLWNvbXBsaWFudCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBlbmdpbmUgZm9yIEF6dXJlIEFQSSBzY2hlbWFzXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBjb21wcmVoZW5zaXZlIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGFuZCB2YWxpZGF0aW9uIGNhcGFiaWxpdGllc1xuICogZm9yIG1hcHBpbmcgYmV0d2VlbiBkaWZmZXJlbnQgQVBJIHNjaGVtYSB2ZXJzaW9ucy4gSXQgaGFuZGxlcyBwcm9wZXJ0eSByZW5hbWluZyxcbiAqIHJlc3RydWN0dXJpbmcsIHR5cGUgY29udmVyc2lvbiwgYW5kIHZhbGlkYXRpb24gd2l0aCBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmcuXG4gKlxuICogS2V5IEZlYXR1cmVzOlxuICogLSBKU0lJLWNvbXBsaWFudCBzaW5nbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqIC0gUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gd2l0aCBuZXN0ZWQgb2JqZWN0IGFuZCBhcnJheSBzdXBwb3J0XG4gKiAtIENvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBlbmdpbmUgd2l0aCBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmdcbiAqIC0gRGVmYXVsdCB2YWx1ZSBpbmplY3Rpb24gZm9yIG5ldyBwcm9wZXJ0aWVzXG4gKiAtIFByb3BlcnR5IHBhdGggdHJhY2tpbmcgZm9yIG5lc3RlZCB2YWxpZGF0aW9uIGVycm9yc1xuICogLSBHcmFjZWZ1bCBlcnJvciBoYW5kbGluZyB3aXRoIGNvbnRleHR1YWwgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgVmFsaWRhdGlvblJlc3VsdCxcbiAgVmFsaWRhdGlvblJ1bGUsXG4gIFByb3BlcnR5VHlwZSxcbiAgVmFsaWRhdGlvblJ1bGVUeXBlLFxufSBmcm9tIFwiLi4vLi4vdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogRXJyb3IgY29udGV4dCBmb3IgcHJvcGVydHkgdHJhbnNmb3JtYXRpb24gYW5kIHZhbGlkYXRpb25cbiAqL1xuaW50ZXJmYWNlIEVycm9yQ29udGV4dCB7XG4gIHJlYWRvbmx5IHByb3BlcnR5UGF0aDogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNvdXJjZVZhbHVlPzogYW55O1xuICByZWFkb25seSBleHBlY3RlZFR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtYXRpb24gY29udGV4dCBmb3IgdHJhY2tpbmcgbmVzdGVkIHRyYW5zZm9ybWF0aW9uc1xuICovXG5pbnRlcmZhY2UgVHJhbnNmb3JtYXRpb25Db250ZXh0IHtcbiAgcmVhZG9ubHkgc291cmNlUGF0aDogc3RyaW5nO1xuICByZWFkb25seSB0YXJnZXRQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlcHRoOiBudW1iZXI7XG59XG5cbi8qKlxuICogU2NoZW1hTWFwcGVyIGNsYXNzIGZvciBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBhbmQgdmFsaWRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGVuZ2luZSB0aGF0IGVuYWJsZXNcbiAqIG1hcHBpbmcgYmV0d2VlbiBkaWZmZXJlbnQgQVBJIHNjaGVtYSB2ZXJzaW9ucyB3aXRoIGZ1bGwgdmFsaWRhdGlvbiBzdXBwb3J0LlxuICogSXQgaW1wbGVtZW50cyBKU0lJLWNvbXBsaWFudCBwYXR0ZXJucyBmb3IgbXVsdGktbGFuZ3VhZ2UgY29kZSBnZW5lcmF0aW9uLlxuICpcbiAqIFRoZSBTY2hlbWFNYXBwZXIgaGFuZGxlczpcbiAqIC0gUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gYmV0d2VlbiBzY2hlbWEgdmVyc2lvbnNcbiAqIC0gVmFsaWRhdGlvbiBhZ2FpbnN0IEFQSSBzY2hlbWEgZGVmaW5pdGlvbnNcbiAqIC0gRGVmYXVsdCB2YWx1ZSBpbmplY3Rpb24gZm9yIG5ldyBwcm9wZXJ0aWVzXG4gKiAtIE5lc3RlZCBvYmplY3QgYW5kIGFycmF5IHByb2Nlc3NpbmdcbiAqIC0gRGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nIHdpdGggcHJvcGVydHkgcGF0aHNcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBBcGlTY2hlbWEgPSB7XG4gKiAgIHJlc291cmNlVHlwZTogJ01pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHMnLFxuICogICB2ZXJzaW9uOiAnMjAyNC0xMS0wMScsXG4gKiAgIHByb3BlcnRpZXM6IHtcbiAqICAgICBuYW1lOiB7IGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLCByZXF1aXJlZDogdHJ1ZSB9LFxuICogICAgIGxvY2F0aW9uOiB7IGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLCByZXF1aXJlZDogdHJ1ZSB9XG4gKiAgIH0sXG4gKiAgIHJlcXVpcmVkOiBbJ25hbWUnLCAnbG9jYXRpb24nXVxuICogfTtcbiAqXG4gKiBjb25zdCBtYXBwZXIgPSBTY2hlbWFNYXBwZXIuY3JlYXRlKHNjaGVtYSk7XG4gKiBjb25zdCByZXN1bHQgPSBtYXBwZXIudmFsaWRhdGVQcm9wZXJ0aWVzKHsgbmFtZTogJ215UkcnLCBsb2NhdGlvbjogJ2Vhc3R1cycgfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFNjaGVtYU1hcHBlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFNjaGVtYU1hcHBlciBpbnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBzY2hlbWFcbiAgICpcbiAgICogVGhpcyBmYWN0b3J5IG1ldGhvZCBjcmVhdGVzIGEgU2NoZW1hTWFwcGVyIGNvbmZpZ3VyZWQgZm9yIGEgc3BlY2lmaWMgQVBJIHNjaGVtYS5cbiAgICogVGhlIHNjaGVtYSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmUsIHZhbGlkYXRpb24gcnVsZXMsIGFuZCB0cmFuc2Zvcm1hdGlvbiBtYXBwaW5nc1xuICAgKiB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgcHJvcGVydHkgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBBUEkgc2NoZW1hIHRvIHVzZSBmb3IgdHJhbnNmb3JtYXRpb25zIGFuZCB2YWxpZGF0aW9uXG4gICAqIEByZXR1cm5zIEEgbmV3IFNjaGVtYU1hcHBlciBpbnN0YW5jZSBjb25maWd1cmVkIHdpdGggdGhlIHByb3ZpZGVkIHNjaGVtYVxuICAgKlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBzY2hlbWEgaXMgaW52YWxpZCBvciBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnRpZXNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgc2NoZW1hOiBBcGlTY2hlbWEgPSB7XG4gICAqICAgcmVzb3VyY2VUeXBlOiAnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsXG4gICAqICAgdmVyc2lvbjogJzIwMjQtMTEtMDEnLFxuICAgKiAgIHByb3BlcnRpZXM6IHsgbmFtZTogeyBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORywgcmVxdWlyZWQ6IHRydWUgfSB9LFxuICAgKiAgIHJlcXVpcmVkOiBbJ25hbWUnXVxuICAgKiB9O1xuICAgKiBjb25zdCBtYXBwZXIgPSBTY2hlbWFNYXBwZXIuY3JlYXRlKHNjaGVtYSk7XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShzY2hlbWE6IEFwaVNjaGVtYSk6IFNjaGVtYU1hcHBlciB7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBjYW5ub3QgYmUgdW5kZWZpbmVkIG9yIG51bGxcIik7XG4gICAgfVxuXG4gICAgaWYgKCFzY2hlbWEucmVzb3VyY2VUeXBlIHx8IHNjaGVtYS5yZXNvdXJjZVR5cGUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIG11c3QgaGF2ZSBhIHZhbGlkIHJlc291cmNlVHlwZVwiKTtcbiAgICB9XG5cbiAgICBpZiAoIXNjaGVtYS52ZXJzaW9uIHx8IHNjaGVtYS52ZXJzaW9uLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBtdXN0IGhhdmUgYSB2YWxpZCB2ZXJzaW9uXCIpO1xuICAgIH1cblxuICAgIGlmICghc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBtdXN0IGhhdmUgYSBwcm9wZXJ0aWVzIGRlZmluaXRpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKCFzY2hlbWEucmVxdWlyZWQgfHwgIUFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIG11c3QgaGF2ZSBhIHJlcXVpcmVkIHByb3BlcnRpZXMgYXJyYXlcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY2hlbWFNYXBwZXIoc2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NjaGVtYTogQXBpU2NoZW1hO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvckNvbnRleHRzOiBFcnJvckNvbnRleHRbXTtcblxuICAvKipcbiAgICogUHJpdmF0ZSBjb25zdHJ1Y3RvciB0byBlbmZvcmNlIGZhY3RvcnkgcGF0dGVyblxuICAgKlxuICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIEFQSSBzY2hlbWEgdG8gdXNlIGZvciB0aGlzIG1hcHBlciBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzY2hlbWE6IEFwaVNjaGVtYSkge1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLl9lcnJvckNvbnRleHRzID0gW107XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGZvcm1hdCB0byB0YXJnZXQgc2NoZW1hIGZvcm1hdFxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhcHBsaWVzIHRyYW5zZm9ybWF0aW9uIHJ1bGVzIHRvIGNvbnZlcnQgcHJvcGVydGllcyBmcm9tIG9uZSBzY2hlbWFcbiAgICogZm9ybWF0IHRvIGFub3RoZXIuIEl0IGhhbmRsZXMgcHJvcGVydHkgcmVuYW1pbmcsIHJlc3RydWN0dXJpbmcsIHR5cGUgY29udmVyc2lvbixcbiAgICogYW5kIG5lc3RlZCBvYmplY3QvYXJyYXkgdHJhbnNmb3JtYXRpb25zIGJhc2VkIG9uIHRoZSB0YXJnZXQgc2NoZW1hIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VQcm9wcyAtIFRoZSBzb3VyY2UgcHJvcGVydGllcyB0byB0cmFuc2Zvcm1cbiAgICogQHBhcmFtIHRhcmdldFNjaGVtYSAtIFRoZSB0YXJnZXQgc2NoZW1hIHRvIHRyYW5zZm9ybSBwcm9wZXJ0aWVzIHRvXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCBwcm9wZXJ0aWVzIG1hdGNoaW5nIHRoZSB0YXJnZXQgc2NoZW1hIGZvcm1hdFxuICAgKlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRyYW5zZm9ybWF0aW9uIGZhaWxzIGR1ZSB0byBpbmNvbXBhdGlibGUgdHlwZXMgb3IgbWlzc2luZyBtYXBwaW5nc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBzb3VyY2VQcm9wcyA9IHsgb2xkTmFtZTogJ3ZhbHVlJywgbG9jYXRpb246ICdlYXN0dXMnIH07XG4gICAqIGNvbnN0IHRhcmdldFNjaGVtYSA9IHtcbiAgICogICB0cmFuc2Zvcm1hdGlvblJ1bGVzOiB7IG9sZE5hbWU6ICduZXdOYW1lJyB9LFxuICAgKiAgIHByb3BlcnRpZXM6IHsgbmV3TmFtZTogeyBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyB9IH1cbiAgICogfTtcbiAgICogY29uc3QgdHJhbnNmb3JtZWQgPSBtYXBwZXIudHJhbnNmb3JtUHJvcGVydGllcyhzb3VyY2VQcm9wcywgdGFyZ2V0U2NoZW1hKTtcbiAgICogLy8gUmVzdWx0OiB7IG5ld05hbWU6ICd2YWx1ZScsIGxvY2F0aW9uOiAnZWFzdHVzJyB9XG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtUHJvcGVydGllcyhzb3VyY2VQcm9wczogYW55LCB0YXJnZXRTY2hlbWE6IEFwaVNjaGVtYSk6IGFueSB7XG4gICAgaWYgKCFzb3VyY2VQcm9wcykge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0U2NoZW1hKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXQgc2NoZW1hIGNhbm5vdCBiZSB1bmRlZmluZWQgb3IgbnVsbFwiKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhckVycm9yQ29udGV4dHMoKTtcbiAgICBjb25zdCBjb250ZXh0OiBUcmFuc2Zvcm1hdGlvbkNvbnRleHQgPSB7XG4gICAgICBzb3VyY2VQYXRoOiBcIlwiLFxuICAgICAgdGFyZ2V0UGF0aDogXCJcIixcbiAgICAgIGRlcHRoOiAwLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybU9iamVjdChzb3VyY2VQcm9wcywgdGFyZ2V0U2NoZW1hLCBjb250ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmtub3duIGVycm9yXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlIHNjaGVtYSBkZWZpbml0aW9uXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIGNvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBvZiBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlXG4gICAqIGNvbmZpZ3VyZWQgc2NoZW1hLiBJdCBjaGVja3MgcmVxdWlyZWQgcHJvcGVydGllcywgZGF0YSB0eXBlcywgdmFsaWRhdGlvbiBydWxlcyxcbiAgICogYW5kIHByb3ZpZGVzIGRldGFpbGVkIGVycm9yIHJlcG9ydGluZyB3aXRoIHByb3BlcnR5IHBhdGggaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgRGV0YWlsZWQgdmFsaWRhdGlvbiByZXN1bHRzIGluY2x1ZGluZyBlcnJvcnMgYW5kIHdhcm5pbmdzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHByb3BlcnRpZXMgPSB7IG5hbWU6ICdteVJHJywgbG9jYXRpb246ICdlYXN0dXMnLCB0YWdzOiB7IGVudjogJ2RldicgfSB9O1xuICAgKiBjb25zdCByZXN1bHQgPSBtYXBwZXIudmFsaWRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgKlxuICAgKiBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgKiAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9uIGVycm9yczonLCByZXN1bHQuZXJyb3JzKTtcbiAgICogICBjb25zb2xlLmxvZygnUHJvcGVydHkgZXJyb3JzOicsIHJlc3VsdC5wcm9wZXJ0eUVycm9ycyk7XG4gICAqIH1cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZVByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbnRleHRzKCk7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHByb3BlcnR5RXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcblxuICAgIGlmICghcHJvcGVydGllcykge1xuICAgICAgZXJyb3JzLnB1c2goXCJQcm9wZXJ0aWVzIGNhbm5vdCBiZSB1bmRlZmluZWQgb3IgbnVsbFwiKTtcbiAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3JzLCB3YXJuaW5ncywgcHJvcGVydHlFcnJvcnMgfTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgcHJvcGVydGllc1xuICAgICAgdGhpcy5fdmFsaWRhdGVSZXF1aXJlZFByb3BlcnRpZXMocHJvcGVydGllcywgXCJcIiwgZXJyb3JzLCBwcm9wZXJ0eUVycm9ycyk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICAgICAgdGhpcy5fdmFsaWRhdGVJbmRpdmlkdWFsUHJvcGVydGllcyhcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgXCJcIixcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgcHJvcGVydHlFcnJvcnMsXG4gICAgICApO1xuXG4gICAgICAvLyBBcHBseSBzY2hlbWEtbGV2ZWwgdmFsaWRhdGlvbiBydWxlc1xuICAgICAgdGhpcy5fYXBwbHlTY2hlbWFWYWxpZGF0aW9uUnVsZXMoXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgd2FybmluZ3MsXG4gICAgICAgIHByb3BlcnR5RXJyb3JzLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBWYWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwifWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9ycyxcbiAgICAgIHdhcm5pbmdzLFxuICAgICAgcHJvcGVydHlFcnJvcnM6XG4gICAgICAgIE9iamVjdC5rZXlzKHByb3BlcnR5RXJyb3JzKS5sZW5ndGggPiAwID8gcHJvcGVydHlFcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGRlZmF1bHQgdmFsdWVzIHRvIHByb3BlcnRpZXMgYmFzZWQgb24gc2NoZW1hIGRlZmluaXRpb25zXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGluamVjdHMgZGVmYXVsdCB2YWx1ZXMgZm9yIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHByb3ZpZGVkXG4gICAqIGJ1dCBoYXZlIGRlZmF1bHQgdmFsdWVzIGRlZmluZWQgaW4gdGhlIHNjaGVtYS4gSXQgcHJlc2VydmVzIGV4aXN0aW5nXG4gICAqIHByb3BlcnR5IHZhbHVlcyBhbmQgb25seSBhZGRzIGRlZmF1bHRzIGZvciBtaXNzaW5nIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gYXBwbHkgZGVmYXVsdHMgdG9cbiAgICogQHJldHVybnMgTmV3IHByb3BlcnRpZXMgb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgYXBwbGllZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwcm9wcyA9IHsgbmFtZTogJ215UkcnIH07XG4gICAqIGNvbnN0IHdpdGhEZWZhdWx0cyA9IG1hcHBlci5hcHBseURlZmF1bHRzKHByb3BzKTtcbiAgICogLy8gSWYgc2NoZW1hIGRlZmluZXMgbG9jYXRpb24gZGVmYXVsdCBhcyAnZWFzdHVzJzpcbiAgICogLy8gUmVzdWx0OiB7IG5hbWU6ICdteVJHJywgbG9jYXRpb246ICdlYXN0dXMnIH1cbiAgICovXG4gIHB1YmxpYyBhcHBseURlZmF1bHRzKHByb3BlcnRpZXM6IGFueSk6IGFueSB7XG4gICAgaWYgKCFwcm9wZXJ0aWVzKSB7XG4gICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5wcm9wZXJ0aWVzIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fYXBwbHlEZWZhdWx0c1RvT2JqZWN0KHJlc3VsdCwgXCJcIik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYERlZmF1bHQgdmFsdWUgYXBwbGljYXRpb24gZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmtub3duIGVycm9yXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgc2luZ2xlIHByb3BlcnR5IHZhbHVlIHVzaW5nIHRyYW5zZm9ybWF0aW9uIHJ1bGVzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGFwcGxpZXMgdHJhbnNmb3JtYXRpb24gbG9naWMgdG8gYSBzaW5nbGUgcHJvcGVydHkgdmFsdWUgYmFzZWQgb25cbiAgICogdGhlIHRhcmdldCBwcm9wZXJ0eSBkZWZpbml0aW9uLiBJdCBoYW5kbGVzIHR5cGUgY29udmVyc2lvbiwgdmFsdWUgbWFwcGluZyxcbiAgICogYW5kIGN1c3RvbSB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYmVpbmcgbWFwcGVkXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzb3VyY2UgdmFsdWUgdG8gdHJhbnNmb3JtXG4gICAqIEBwYXJhbSB0YXJnZXRQcm9wZXJ0eSAtIFRoZSB0YXJnZXQgcHJvcGVydHkgZGVmaW5pdGlvbiBmcm9tIHRoZSBzY2hlbWFcbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHRyYW5zZm9ybWF0aW9uIGZhaWxzIG9yIHR5cGVzIGFyZSBpbmNvbXBhdGlibGVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgdGFyZ2V0UHJvcCA9IHsgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsIHJlcXVpcmVkOiB0cnVlIH07XG4gICAqIGNvbnN0IG1hcHBlZCA9IG1hcHBlci5tYXBQcm9wZXJ0eSgnbmFtZScsICdteVJlc291cmNlR3JvdXAnLCB0YXJnZXRQcm9wKTtcbiAgICovXG4gIHB1YmxpYyBtYXBQcm9wZXJ0eShcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIHRhcmdldFByb3BlcnR5OiBQcm9wZXJ0eURlZmluaXRpb24sXG4gICk6IGFueSB7XG4gICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgcHJvcGVydHlOYW1lLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3BlcnR5IG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0UHJvcGVydHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhcmdldCBwcm9wZXJ0eSBkZWZpbml0aW9uIGNhbm5vdCBiZSB1bmRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh2YWx1ZSwgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5TmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFByb3BlcnR5IG1hcHBpbmcgZmFpbGVkIGZvciAnJHtwcm9wZXJ0eU5hbWV9JzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwifWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBlcnJvciBjb250ZXh0IGFycmF5IGZvciBhIG5ldyBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgX2NsZWFyRXJyb3JDb250ZXh0cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckNvbnRleHRzLmxlbmd0aCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBvYmplY3QgdXNpbmcgdGhlIHRhcmdldCBzY2hlbWFcbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybU9iamVjdChcbiAgICBzb3VyY2VPYmo6IGFueSxcbiAgICB0YXJnZXRTY2hlbWE6IEFwaVNjaGVtYSxcbiAgICBfY29udGV4dDogVHJhbnNmb3JtYXRpb25Db250ZXh0LFxuICApOiBhbnkge1xuICAgIGlmICghc291cmNlT2JqIHx8IHR5cGVvZiBzb3VyY2VPYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBzb3VyY2VPYmo7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICBjb25zdCB0cmFuc2Zvcm1hdGlvblJ1bGVzID0gdGFyZ2V0U2NoZW1hLnRyYW5zZm9ybWF0aW9uUnVsZXMgfHwge307XG5cbiAgICAvLyBBcHBseSB0cmFuc2Zvcm1hdGlvbiBydWxlcyBmaXJzdFxuICAgIGZvciAoY29uc3QgW3NvdXJjZUtleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZU9iaikpIHtcbiAgICAgIGNvbnN0IHRhcmdldEtleSA9IHRyYW5zZm9ybWF0aW9uUnVsZXNbc291cmNlS2V5XSB8fCBzb3VyY2VLZXk7XG4gICAgICBjb25zdCB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFNjaGVtYS5wcm9wZXJ0aWVzW3RhcmdldEtleV07XG5cbiAgICAgIGlmICh0YXJnZXRQcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgdGFyZ2V0UHJvcGVydHksXG4gICAgICAgICAgdGFyZ2V0S2V5LFxuICAgICAgICApO1xuICAgICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IHRyYW5zZm9ybWVkVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQcm9wZXJ0eSBub3QgaW4gdGFyZ2V0IHNjaGVtYSAtIGNvcHkgYXMtaXMgdW5sZXNzIGV4cGxpY2l0bHkgZXhjbHVkZWRcbiAgICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gdGFyZ2V0IHByb3BlcnR5IGRlZmluaXRpb25cbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybVZhbHVlKFxuICAgIHZhbHVlOiBhbnksXG4gICAgdGFyZ2V0UHJvcGVydHk6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHRhcmdldFByb3BlcnR5LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRQcm9wZXJ0eS5kZWZhdWx0VmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0YXJnZXRQcm9wZXJ0eS5kYXRhVHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuU1RSSU5HOlxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVG9TdHJpbmcodmFsdWUsIHByb3BlcnR5UGF0aCk7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLk5VTUJFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVRvTnVtYmVyKHZhbHVlLCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5CT09MRUFOOlxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVG9Cb29sZWFuKHZhbHVlLCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5BUlJBWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVRvQXJyYXkodmFsdWUsIHRhcmdldFByb3BlcnR5LCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5PQkpFQ1Q6XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Ub09iamVjdCh2YWx1ZSwgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5UGF0aCk7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkFOWTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBzdHJpbmcgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVG9TdHJpbmcodmFsdWU6IGFueSwgcHJvcGVydHlQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29udmVydCB2YWx1ZSBhdCAnJHtwcm9wZXJ0eVBhdGh9JyB0byBzdHJpbmcuIEdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdmFsdWUgdG8gbnVtYmVyIHR5cGVcbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybVRvTnVtYmVyKHZhbHVlOiBhbnksIHByb3BlcnR5UGF0aDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29udmVydCB2YWx1ZSBhdCAnJHtwcm9wZXJ0eVBhdGh9JyB0byBudW1iZXIuIEdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdmFsdWUgdG8gYm9vbGVhbiB0eXBlXG4gICAqL1xuICBwcml2YXRlIF90cmFuc2Zvcm1Ub0Jvb2xlYW4odmFsdWU6IGFueSwgcHJvcGVydHlQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGxvd2VyID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlciA9PT0gXCJ0cnVlXCIgfHwgbG93ZXIgPT09IFwiMVwiKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChsb3dlciA9PT0gXCJmYWxzZVwiIHx8IGxvd2VyID09PSBcIjBcIikgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gMDtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGNvbnZlcnQgdmFsdWUgYXQgJyR7cHJvcGVydHlQYXRofScgdG8gYm9vbGVhbi4gR290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBhcnJheSB0eXBlXG4gICAqL1xuICBwcml2YXRlIF90cmFuc2Zvcm1Ub0FycmF5KFxuICAgIHZhbHVlOiBhbnksXG4gICAgX3RhcmdldFByb3BlcnR5OiBQcm9wZXJ0eURlZmluaXRpb24sXG4gICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICk6IGFueVtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTsgLy8gVE9ETzogVHJhbnNmb3JtIGFycmF5IGVsZW1lbnRzIGlmIG5lZWRlZFxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCBhcnJheSBhdCAnJHtwcm9wZXJ0eVBhdGh9JywgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBvYmplY3QgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVG9PYmplY3QoXG4gICAgdmFsdWU6IGFueSxcbiAgICBfdGFyZ2V0UHJvcGVydHk6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlOyAvLyBUT0RPOiBBcHBseSBuZXN0ZWQgdHJhbnNmb3JtYXRpb24gcnVsZXMgaWYgbmVlZGVkXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEV4cGVjdGVkIG9iamVjdCBhdCAnJHtwcm9wZXJ0eVBhdGh9JywgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHJlcXVpcmVkIHByb3BlcnRpZXNcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlUmVxdWlyZWRQcm9wZXJ0aWVzKFxuICAgIHByb3BlcnRpZXM6IGFueSxcbiAgICBiYXNlUGF0aDogc3RyaW5nLFxuICAgIGVycm9yczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCByZXF1aXJlZFByb3Agb2YgdGhpcy5fc2NoZW1hLnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IGJhc2VQYXRoID8gYCR7YmFzZVBhdGh9LiR7cmVxdWlyZWRQcm9wfWAgOiByZXF1aXJlZFByb3A7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIShyZXF1aXJlZFByb3AgaW4gcHJvcGVydGllcykgfHxcbiAgICAgICAgcHJvcGVydGllc1tyZXF1aXJlZFByb3BdID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGBSZXF1aXJlZCBwcm9wZXJ0eSAnJHtyZXF1aXJlZFByb3B9JyBpcyBtaXNzaW5nYDtcbiAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlaXIgZGVmaW5pdGlvbnNcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlSW5kaXZpZHVhbFByb3BlcnRpZXMoXG4gICAgcHJvcGVydGllczogYW55LFxuICAgIGJhc2VQYXRoOiBzdHJpbmcsXG4gICAgZXJyb3JzOiBzdHJpbmdbXSxcbiAgICB3YXJuaW5nczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgLy8gRnJhbWV3b3JrIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgbm90IGJlIHZhbGlkYXRlZCBhZ2FpbnN0IEF6dXJlIEFQSSBzY2hlbWFcbiAgICBjb25zdCBmcmFtZXdvcmtQcm9wZXJ0aWVzID0gbmV3IFNldChbXG4gICAgICBcImFwaVZlcnNpb25cIixcbiAgICAgIFwiZW5hYmxlTWlncmF0aW9uQW5hbHlzaXNcIixcbiAgICAgIFwiZW5hYmxlVmFsaWRhdGlvblwiLFxuICAgICAgXCJlbmFibGVUcmFuc2Zvcm1hdGlvblwiLFxuICAgICAgXCJpZ25vcmVDaGFuZ2VzXCIsXG4gICAgICBcInJlc291cmNlR3JvdXBJZFwiLFxuICAgICAgXCJtb25pdG9yaW5nXCIsIC8vIEZyYW1ld29yay1sZXZlbCBtb25pdG9yaW5nIGNvbmZpZ3VyYXRpb25cbiAgICAgIFwidmlydHVhbE5ldHdvcmtJZFwiLCAvLyBGcmFtZXdvcmstbGV2ZWwgZGVwZW5kZW5jeSB0cmFja2luZyBmb3IgY2hpbGQgcmVzb3VyY2VzXG4gICAgXSk7XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgcHJvcFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBiYXNlUGF0aCA/IGAke2Jhc2VQYXRofS4ke3Byb3BOYW1lfWAgOiBwcm9wTmFtZTtcblxuICAgICAgLy8gU2tpcCBmcmFtZXdvcmsgcHJvcGVydGllc1xuICAgICAgaWYgKGZyYW1ld29ya1Byb3BlcnRpZXMuaGFzKHByb3BOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvcERlZiA9IHRoaXMuX3NjaGVtYS5wcm9wZXJ0aWVzW3Byb3BOYW1lXTtcblxuICAgICAgaWYgKCFwcm9wRGVmKSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYFVua25vd24gcHJvcGVydHkgJyR7cHJvcE5hbWV9JyBub3QgZGVmaW5lZCBpbiBzY2hlbWFgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWRcbiAgICAgIGlmIChwcm9wRGVmLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgUHJvcGVydHkgJyR7cHJvcE5hbWV9JyBpcyBkZXByZWNhdGVkYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnR5IHR5cGVcbiAgICAgIGNvbnN0IHR5cGVFcnJvcnMgPSB0aGlzLl92YWxpZGF0ZVByb3BlcnR5VHlwZShcbiAgICAgICAgcHJvcFZhbHVlLFxuICAgICAgICBwcm9wRGVmLFxuICAgICAgICBmdWxsUGF0aCxcbiAgICAgICk7XG4gICAgICBpZiAodHlwZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKC4uLnR5cGVFcnJvcnMpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goLi4udHlwZUVycm9ycyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHZhbGlkYXRpb24gcnVsZXNcbiAgICAgIGlmIChwcm9wRGVmLnZhbGlkYXRpb24pIHtcbiAgICAgICAgY29uc3QgcnVsZUVycm9ycyA9IHRoaXMuX2FwcGx5VmFsaWRhdGlvblJ1bGVzKFxuICAgICAgICAgIHByb3BWYWx1ZSxcbiAgICAgICAgICBwcm9wRGVmLnZhbGlkYXRpb24sXG4gICAgICAgICAgZnVsbFBhdGgsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChydWxlRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi5ydWxlRXJyb3JzKTtcblxuICAgICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eUVycm9yc1tmdWxsUGF0aF0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goLi4ucnVsZUVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHByb3BlcnR5IHR5cGUgYWdhaW5zdCBkZWZpbml0aW9uXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVByb3BlcnR5VHlwZShcbiAgICB2YWx1ZTogYW55LFxuICAgIHByb3BEZWY6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICBpZiAocHJvcERlZi5yZXF1aXJlZCkge1xuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgaXMgcmVxdWlyZWQgYnV0IGlzICR7dmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IFwidW5kZWZpbmVkXCJ9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcm9wRGVmLmRhdGFUeXBlKSB7XG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5TVFJJTkc6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGEgc3RyaW5nLCBnb3Q6ICR7dHlwZW9mIHZhbHVlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuTlVNQkVSOlxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgbXVzdCBiZSBhIG51bWJlciwgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkJPT0xFQU46XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgbXVzdCBiZSBhIGJvb2xlYW4sIGdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5BUlJBWTpcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgYFByb3BlcnR5ICcke3Byb3BlcnR5UGF0aH0nIG11c3QgYmUgYW4gYXJyYXksIGdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5PQkpFQ1Q6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGFuIG9iamVjdCwgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkFOWTpcbiAgICAgICAgLy8gQW55IHR5cGUgaXMgYWx3YXlzIHZhbGlkXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBgVW5rbm93biBkYXRhIHR5cGUgJyR7cHJvcERlZi5kYXRhVHlwZX0nIGZvciBwcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9J2AsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHZhbGlkYXRpb24gcnVsZXMgdG8gYSBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlWYWxpZGF0aW9uUnVsZXMoXG4gICAgdmFsdWU6IGFueSxcbiAgICBydWxlczogVmFsaWRhdGlvblJ1bGVbXSxcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgc3dpdGNoIChydWxlLnJ1bGVUeXBlKSB7XG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVEOlxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8IGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBpcyByZXF1aXJlZGAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENIOlxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgcnVsZS52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAocnVsZS52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIXBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8XG4gICAgICAgICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgZG9lcyBub3QgbWF0Y2ggcmVxdWlyZWQgcGF0dGVybmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFOlxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgcnVsZS52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBydWxlLnZhbHVlO1xuICAgICAgICAgICAgaWYgKHJhbmdlLm1pbiAhPT0gdW5kZWZpbmVkICYmIHZhbHVlIDwgcmFuZ2UubWluKSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgIHJ1bGUubWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgYFByb3BlcnR5ICcke3Byb3BlcnR5UGF0aH0nIG11c3QgYmUgYXQgbGVhc3QgJHtyYW5nZS5taW59YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyYW5nZS5tYXggIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA+IHJhbmdlLm1heCkge1xuICAgICAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgICBydWxlLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGF0IG1vc3QgJHtyYW5nZS5tYXh9YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSzpcbiAgICAgICAgICAvLyBUeXBlIGNoZWNraW5nIGlzIGhhbmRsZWQgaW4gX3ZhbGlkYXRlUHJvcGVydHlUeXBlXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uUnVsZVR5cGUuQ1VTVE9NX1ZBTElEQVRJT046XG4gICAgICAgICAgLy8gQ3VzdG9tIHZhbGlkYXRpb24gd291bGQgcmVxdWlyZSBmdW5jdGlvbiBzdXBwb3J0LCB3aGljaCBpcyBjb21wbGV4IGluIEpTSUlcbiAgICAgICAgICAvLyBGb3Igbm93LCB3ZSdsbCBqdXN0IGxvZyBhIHdhcm5pbmdcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgc2NoZW1hLWxldmVsIHZhbGlkYXRpb24gcnVsZXNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5U2NoZW1hVmFsaWRhdGlvblJ1bGVzKFxuICAgIHByb3BlcnRpZXM6IGFueSxcbiAgICBlcnJvcnM6IHN0cmluZ1tdLFxuICAgIF93YXJuaW5nczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zY2hlbWEudmFsaWRhdGlvblJ1bGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHRoaXMuX3NjaGVtYS52YWxpZGF0aW9uUnVsZXMpIHtcbiAgICAgIGNvbnN0IHByb3BWYWx1ZSA9IHByb3BlcnRpZXNbdmFsaWRhdGlvbi5wcm9wZXJ0eV07XG4gICAgICBjb25zdCBydWxlRXJyb3JzID0gdGhpcy5fYXBwbHlWYWxpZGF0aW9uUnVsZXMoXG4gICAgICAgIHByb3BWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGlvbi5ydWxlcyxcbiAgICAgICAgdmFsaWRhdGlvbi5wcm9wZXJ0eSxcbiAgICAgICk7XG4gICAgICBpZiAocnVsZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKC4uLnJ1bGVFcnJvcnMpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbdmFsaWRhdGlvbi5wcm9wZXJ0eV0pIHtcbiAgICAgICAgICBwcm9wZXJ0eUVycm9yc1t2YWxpZGF0aW9uLnByb3BlcnR5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHByb3BlcnR5RXJyb3JzW3ZhbGlkYXRpb24ucHJvcGVydHldLnB1c2goLi4ucnVsZUVycm9ycyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgZGVmYXVsdCB2YWx1ZXMgdG8gYW4gb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIF9hcHBseURlZmF1bHRzVG9PYmplY3Qob2JqOiBhbnksIF9iYXNlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbcHJvcE5hbWUsIHByb3BEZWZdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX3NjaGVtYS5wcm9wZXJ0aWVzKSkge1xuICAgICAgaWYgKCEocHJvcE5hbWUgaW4gb2JqKSAmJiBwcm9wRGVmLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9ialtwcm9wTmFtZV0gPSBwcm9wRGVmLmRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
571
|
+
SchemaMapper[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SchemaMapper", version: "1.3.1" };
|
|
572
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlLWF6dXJlL2xpYi9hemFwaS9zY2hlbWEtbWFwcGVyL3NjaGVtYS1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILDRGQU82RDtBQXFCN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBYSxZQUFZO0lBQ3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBaUI7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFN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QUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDM0MsQ0FBQztnQkFDRCxjQUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssc0JBQXNCLENBQUMsR0FBUSxFQUFFLFNBQWlCO1FBQ3hELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOztBQXRzQkgsb0NBdXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2NoZW1hTWFwcGVyIC0gQSBKU0lJLWNvbXBsaWFudCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBlbmdpbmUgZm9yIEF6dXJlIEFQSSBzY2hlbWFzXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBjb21wcmVoZW5zaXZlIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGFuZCB2YWxpZGF0aW9uIGNhcGFiaWxpdGllc1xuICogZm9yIG1hcHBpbmcgYmV0d2VlbiBkaWZmZXJlbnQgQVBJIHNjaGVtYSB2ZXJzaW9ucy4gSXQgaGFuZGxlcyBwcm9wZXJ0eSByZW5hbWluZyxcbiAqIHJlc3RydWN0dXJpbmcsIHR5cGUgY29udmVyc2lvbiwgYW5kIHZhbGlkYXRpb24gd2l0aCBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmcuXG4gKlxuICogS2V5IEZlYXR1cmVzOlxuICogLSBKU0lJLWNvbXBsaWFudCBzaW5nbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqIC0gUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gd2l0aCBuZXN0ZWQgb2JqZWN0IGFuZCBhcnJheSBzdXBwb3J0XG4gKiAtIENvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBlbmdpbmUgd2l0aCBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmdcbiAqIC0gRGVmYXVsdCB2YWx1ZSBpbmplY3Rpb24gZm9yIG5ldyBwcm9wZXJ0aWVzXG4gKiAtIFByb3BlcnR5IHBhdGggdHJhY2tpbmcgZm9yIG5lc3RlZCB2YWxpZGF0aW9uIGVycm9yc1xuICogLSBHcmFjZWZ1bCBlcnJvciBoYW5kbGluZyB3aXRoIGNvbnRleHR1YWwgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgVmFsaWRhdGlvblJlc3VsdCxcbiAgVmFsaWRhdGlvblJ1bGUsXG4gIFByb3BlcnR5VHlwZSxcbiAgVmFsaWRhdGlvblJ1bGVUeXBlLFxufSBmcm9tIFwiLi4vLi4vdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogRXJyb3IgY29udGV4dCBmb3IgcHJvcGVydHkgdHJhbnNmb3JtYXRpb24gYW5kIHZhbGlkYXRpb25cbiAqL1xuaW50ZXJmYWNlIEVycm9yQ29udGV4dCB7XG4gIHJlYWRvbmx5IHByb3BlcnR5UGF0aDogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNvdXJjZVZhbHVlPzogYW55O1xuICByZWFkb25seSBleHBlY3RlZFR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtYXRpb24gY29udGV4dCBmb3IgdHJhY2tpbmcgbmVzdGVkIHRyYW5zZm9ybWF0aW9uc1xuICovXG5pbnRlcmZhY2UgVHJhbnNmb3JtYXRpb25Db250ZXh0IHtcbiAgcmVhZG9ubHkgc291cmNlUGF0aDogc3RyaW5nO1xuICByZWFkb25seSB0YXJnZXRQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlcHRoOiBudW1iZXI7XG59XG5cbi8qKlxuICogU2NoZW1hTWFwcGVyIGNsYXNzIGZvciBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBhbmQgdmFsaWRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGVuZ2luZSB0aGF0IGVuYWJsZXNcbiAqIG1hcHBpbmcgYmV0d2VlbiBkaWZmZXJlbnQgQVBJIHNjaGVtYSB2ZXJzaW9ucyB3aXRoIGZ1bGwgdmFsaWRhdGlvbiBzdXBwb3J0LlxuICogSXQgaW1wbGVtZW50cyBKU0lJLWNvbXBsaWFudCBwYXR0ZXJucyBmb3IgbXVsdGktbGFuZ3VhZ2UgY29kZSBnZW5lcmF0aW9uLlxuICpcbiAqIFRoZSBTY2hlbWFNYXBwZXIgaGFuZGxlczpcbiAqIC0gUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gYmV0d2VlbiBzY2hlbWEgdmVyc2lvbnNcbiAqIC0gVmFsaWRhdGlvbiBhZ2FpbnN0IEFQSSBzY2hlbWEgZGVmaW5pdGlvbnNcbiAqIC0gRGVmYXVsdCB2YWx1ZSBpbmplY3Rpb24gZm9yIG5ldyBwcm9wZXJ0aWVzXG4gKiAtIE5lc3RlZCBvYmplY3QgYW5kIGFycmF5IHByb2Nlc3NpbmdcbiAqIC0gRGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nIHdpdGggcHJvcGVydHkgcGF0aHNcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBBcGlTY2hlbWEgPSB7XG4gKiAgIHJlc291cmNlVHlwZTogJ01pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHMnLFxuICogICB2ZXJzaW9uOiAnMjAyNC0xMS0wMScsXG4gKiAgIHByb3BlcnRpZXM6IHtcbiAqICAgICBuYW1lOiB7IGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLCByZXF1aXJlZDogdHJ1ZSB9LFxuICogICAgIGxvY2F0aW9uOiB7IGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLCByZXF1aXJlZDogdHJ1ZSB9XG4gKiAgIH0sXG4gKiAgIHJlcXVpcmVkOiBbJ25hbWUnLCAnbG9jYXRpb24nXVxuICogfTtcbiAqXG4gKiBjb25zdCBtYXBwZXIgPSBTY2hlbWFNYXBwZXIuY3JlYXRlKHNjaGVtYSk7XG4gKiBjb25zdCByZXN1bHQgPSBtYXBwZXIudmFsaWRhdGVQcm9wZXJ0aWVzKHsgbmFtZTogJ215UkcnLCBsb2NhdGlvbjogJ2Vhc3R1cycgfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFNjaGVtYU1hcHBlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFNjaGVtYU1hcHBlciBpbnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBzY2hlbWFcbiAgICpcbiAgICogVGhpcyBmYWN0b3J5IG1ldGhvZCBjcmVhdGVzIGEgU2NoZW1hTWFwcGVyIGNvbmZpZ3VyZWQgZm9yIGEgc3BlY2lmaWMgQVBJIHNjaGVtYS5cbiAgICogVGhlIHNjaGVtYSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmUsIHZhbGlkYXRpb24gcnVsZXMsIGFuZCB0cmFuc2Zvcm1hdGlvbiBtYXBwaW5nc1xuICAgKiB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgcHJvcGVydHkgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBBUEkgc2NoZW1hIHRvIHVzZSBmb3IgdHJhbnNmb3JtYXRpb25zIGFuZCB2YWxpZGF0aW9uXG4gICAqIEByZXR1cm5zIEEgbmV3IFNjaGVtYU1hcHBlciBpbnN0YW5jZSBjb25maWd1cmVkIHdpdGggdGhlIHByb3ZpZGVkIHNjaGVtYVxuICAgKlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBzY2hlbWEgaXMgaW52YWxpZCBvciBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnRpZXNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgc2NoZW1hOiBBcGlTY2hlbWEgPSB7XG4gICAqICAgcmVzb3VyY2VUeXBlOiAnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsXG4gICAqICAgdmVyc2lvbjogJzIwMjQtMTEtMDEnLFxuICAgKiAgIHByb3BlcnRpZXM6IHsgbmFtZTogeyBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORywgcmVxdWlyZWQ6IHRydWUgfSB9LFxuICAgKiAgIHJlcXVpcmVkOiBbJ25hbWUnXVxuICAgKiB9O1xuICAgKiBjb25zdCBtYXBwZXIgPSBTY2hlbWFNYXBwZXIuY3JlYXRlKHNjaGVtYSk7XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShzY2hlbWE6IEFwaVNjaGVtYSk6IFNjaGVtYU1hcHBlciB7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBjYW5ub3QgYmUgdW5kZWZpbmVkIG9yIG51bGxcIik7XG4gICAgfVxuXG4gICAgaWYgKCFzY2hlbWEucmVzb3VyY2VUeXBlIHx8IHNjaGVtYS5yZXNvdXJjZVR5cGUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIG11c3QgaGF2ZSBhIHZhbGlkIHJlc291cmNlVHlwZVwiKTtcbiAgICB9XG5cbiAgICBpZiAoIXNjaGVtYS52ZXJzaW9uIHx8IHNjaGVtYS52ZXJzaW9uLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBtdXN0IGhhdmUgYSB2YWxpZCB2ZXJzaW9uXCIpO1xuICAgIH1cblxuICAgIGlmICghc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBtdXN0IGhhdmUgYSBwcm9wZXJ0aWVzIGRlZmluaXRpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKCFzY2hlbWEucmVxdWlyZWQgfHwgIUFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIG11c3QgaGF2ZSBhIHJlcXVpcmVkIHByb3BlcnRpZXMgYXJyYXlcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY2hlbWFNYXBwZXIoc2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NjaGVtYTogQXBpU2NoZW1hO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvckNvbnRleHRzOiBFcnJvckNvbnRleHRbXTtcblxuICAvKipcbiAgICogUHJpdmF0ZSBjb25zdHJ1Y3RvciB0byBlbmZvcmNlIGZhY3RvcnkgcGF0dGVyblxuICAgKlxuICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIEFQSSBzY2hlbWEgdG8gdXNlIGZvciB0aGlzIG1hcHBlciBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzY2hlbWE6IEFwaVNjaGVtYSkge1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLl9lcnJvckNvbnRleHRzID0gW107XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGZvcm1hdCB0byB0YXJnZXQgc2NoZW1hIGZvcm1hdFxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhcHBsaWVzIHRyYW5zZm9ybWF0aW9uIHJ1bGVzIHRvIGNvbnZlcnQgcHJvcGVydGllcyBmcm9tIG9uZSBzY2hlbWFcbiAgICogZm9ybWF0IHRvIGFub3RoZXIuIEl0IGhhbmRsZXMgcHJvcGVydHkgcmVuYW1pbmcsIHJlc3RydWN0dXJpbmcsIHR5cGUgY29udmVyc2lvbixcbiAgICogYW5kIG5lc3RlZCBvYmplY3QvYXJyYXkgdHJhbnNmb3JtYXRpb25zIGJhc2VkIG9uIHRoZSB0YXJnZXQgc2NoZW1hIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VQcm9wcyAtIFRoZSBzb3VyY2UgcHJvcGVydGllcyB0byB0cmFuc2Zvcm1cbiAgICogQHBhcmFtIHRhcmdldFNjaGVtYSAtIFRoZSB0YXJnZXQgc2NoZW1hIHRvIHRyYW5zZm9ybSBwcm9wZXJ0aWVzIHRvXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCBwcm9wZXJ0aWVzIG1hdGNoaW5nIHRoZSB0YXJnZXQgc2NoZW1hIGZvcm1hdFxuICAgKlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRyYW5zZm9ybWF0aW9uIGZhaWxzIGR1ZSB0byBpbmNvbXBhdGlibGUgdHlwZXMgb3IgbWlzc2luZyBtYXBwaW5nc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBzb3VyY2VQcm9wcyA9IHsgb2xkTmFtZTogJ3ZhbHVlJywgbG9jYXRpb246ICdlYXN0dXMnIH07XG4gICAqIGNvbnN0IHRhcmdldFNjaGVtYSA9IHtcbiAgICogICB0cmFuc2Zvcm1hdGlvblJ1bGVzOiB7IG9sZE5hbWU6ICduZXdOYW1lJyB9LFxuICAgKiAgIHByb3BlcnRpZXM6IHsgbmV3TmFtZTogeyBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyB9IH1cbiAgICogfTtcbiAgICogY29uc3QgdHJhbnNmb3JtZWQgPSBtYXBwZXIudHJhbnNmb3JtUHJvcGVydGllcyhzb3VyY2VQcm9wcywgdGFyZ2V0U2NoZW1hKTtcbiAgICogLy8gUmVzdWx0OiB7IG5ld05hbWU6ICd2YWx1ZScsIGxvY2F0aW9uOiAnZWFzdHVzJyB9XG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtUHJvcGVydGllcyhzb3VyY2VQcm9wczogYW55LCB0YXJnZXRTY2hlbWE6IEFwaVNjaGVtYSk6IGFueSB7XG4gICAgaWYgKCFzb3VyY2VQcm9wcykge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0U2NoZW1hKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXQgc2NoZW1hIGNhbm5vdCBiZSB1bmRlZmluZWQgb3IgbnVsbFwiKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhckVycm9yQ29udGV4dHMoKTtcbiAgICBjb25zdCBjb250ZXh0OiBUcmFuc2Zvcm1hdGlvbkNvbnRleHQgPSB7XG4gICAgICBzb3VyY2VQYXRoOiBcIlwiLFxuICAgICAgdGFyZ2V0UGF0aDogXCJcIixcbiAgICAgIGRlcHRoOiAwLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybU9iamVjdChzb3VyY2VQcm9wcywgdGFyZ2V0U2NoZW1hLCBjb250ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmtub3duIGVycm9yXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlIHNjaGVtYSBkZWZpbml0aW9uXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIGNvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBvZiBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlXG4gICAqIGNvbmZpZ3VyZWQgc2NoZW1hLiBJdCBjaGVja3MgcmVxdWlyZWQgcHJvcGVydGllcywgZGF0YSB0eXBlcywgdmFsaWRhdGlvbiBydWxlcyxcbiAgICogYW5kIHByb3ZpZGVzIGRldGFpbGVkIGVycm9yIHJlcG9ydGluZyB3aXRoIHByb3BlcnR5IHBhdGggaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgRGV0YWlsZWQgdmFsaWRhdGlvbiByZXN1bHRzIGluY2x1ZGluZyBlcnJvcnMgYW5kIHdhcm5pbmdzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHByb3BlcnRpZXMgPSB7IG5hbWU6ICdteVJHJywgbG9jYXRpb246ICdlYXN0dXMnLCB0YWdzOiB7IGVudjogJ2RldicgfSB9O1xuICAgKiBjb25zdCByZXN1bHQgPSBtYXBwZXIudmFsaWRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgKlxuICAgKiBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgKiAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9uIGVycm9yczonLCByZXN1bHQuZXJyb3JzKTtcbiAgICogICBjb25zb2xlLmxvZygnUHJvcGVydHkgZXJyb3JzOicsIHJlc3VsdC5wcm9wZXJ0eUVycm9ycyk7XG4gICAqIH1cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZVByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbnRleHRzKCk7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHByb3BlcnR5RXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcblxuICAgIGlmICghcHJvcGVydGllcykge1xuICAgICAgZXJyb3JzLnB1c2goXCJQcm9wZXJ0aWVzIGNhbm5vdCBiZSB1bmRlZmluZWQgb3IgbnVsbFwiKTtcbiAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3JzLCB3YXJuaW5ncywgcHJvcGVydHlFcnJvcnMgfTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgcHJvcGVydGllc1xuICAgICAgdGhpcy5fdmFsaWRhdGVSZXF1aXJlZFByb3BlcnRpZXMocHJvcGVydGllcywgXCJcIiwgZXJyb3JzLCBwcm9wZXJ0eUVycm9ycyk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICAgICAgdGhpcy5fdmFsaWRhdGVJbmRpdmlkdWFsUHJvcGVydGllcyhcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgXCJcIixcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgcHJvcGVydHlFcnJvcnMsXG4gICAgICApO1xuXG4gICAgICAvLyBBcHBseSBzY2hlbWEtbGV2ZWwgdmFsaWRhdGlvbiBydWxlc1xuICAgICAgdGhpcy5fYXBwbHlTY2hlbWFWYWxpZGF0aW9uUnVsZXMoXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgd2FybmluZ3MsXG4gICAgICAgIHByb3BlcnR5RXJyb3JzLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBWYWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwifWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9ycyxcbiAgICAgIHdhcm5pbmdzLFxuICAgICAgcHJvcGVydHlFcnJvcnM6XG4gICAgICAgIE9iamVjdC5rZXlzKHByb3BlcnR5RXJyb3JzKS5sZW5ndGggPiAwID8gcHJvcGVydHlFcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGRlZmF1bHQgdmFsdWVzIHRvIHByb3BlcnRpZXMgYmFzZWQgb24gc2NoZW1hIGRlZmluaXRpb25zXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGluamVjdHMgZGVmYXVsdCB2YWx1ZXMgZm9yIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHByb3ZpZGVkXG4gICAqIGJ1dCBoYXZlIGRlZmF1bHQgdmFsdWVzIGRlZmluZWQgaW4gdGhlIHNjaGVtYS4gSXQgcHJlc2VydmVzIGV4aXN0aW5nXG4gICAqIHByb3BlcnR5IHZhbHVlcyBhbmQgb25seSBhZGRzIGRlZmF1bHRzIGZvciBtaXNzaW5nIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gYXBwbHkgZGVmYXVsdHMgdG9cbiAgICogQHJldHVybnMgTmV3IHByb3BlcnRpZXMgb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgYXBwbGllZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwcm9wcyA9IHsgbmFtZTogJ215UkcnIH07XG4gICAqIGNvbnN0IHdpdGhEZWZhdWx0cyA9IG1hcHBlci5hcHBseURlZmF1bHRzKHByb3BzKTtcbiAgICogLy8gSWYgc2NoZW1hIGRlZmluZXMgbG9jYXRpb24gZGVmYXVsdCBhcyAnZWFzdHVzJzpcbiAgICogLy8gUmVzdWx0OiB7IG5hbWU6ICdteVJHJywgbG9jYXRpb246ICdlYXN0dXMnIH1cbiAgICovXG4gIHB1YmxpYyBhcHBseURlZmF1bHRzKHByb3BlcnRpZXM6IGFueSk6IGFueSB7XG4gICAgaWYgKCFwcm9wZXJ0aWVzKSB7XG4gICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5wcm9wZXJ0aWVzIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fYXBwbHlEZWZhdWx0c1RvT2JqZWN0KHJlc3VsdCwgXCJcIik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYERlZmF1bHQgdmFsdWUgYXBwbGljYXRpb24gZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmtub3duIGVycm9yXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgc2luZ2xlIHByb3BlcnR5IHZhbHVlIHVzaW5nIHRyYW5zZm9ybWF0aW9uIHJ1bGVzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGFwcGxpZXMgdHJhbnNmb3JtYXRpb24gbG9naWMgdG8gYSBzaW5nbGUgcHJvcGVydHkgdmFsdWUgYmFzZWQgb25cbiAgICogdGhlIHRhcmdldCBwcm9wZXJ0eSBkZWZpbml0aW9uLiBJdCBoYW5kbGVzIHR5cGUgY29udmVyc2lvbiwgdmFsdWUgbWFwcGluZyxcbiAgICogYW5kIGN1c3RvbSB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYmVpbmcgbWFwcGVkXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzb3VyY2UgdmFsdWUgdG8gdHJhbnNmb3JtXG4gICAqIEBwYXJhbSB0YXJnZXRQcm9wZXJ0eSAtIFRoZSB0YXJnZXQgcHJvcGVydHkgZGVmaW5pdGlvbiBmcm9tIHRoZSBzY2hlbWFcbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHRyYW5zZm9ybWF0aW9uIGZhaWxzIG9yIHR5cGVzIGFyZSBpbmNvbXBhdGlibGVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgdGFyZ2V0UHJvcCA9IHsgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsIHJlcXVpcmVkOiB0cnVlIH07XG4gICAqIGNvbnN0IG1hcHBlZCA9IG1hcHBlci5tYXBQcm9wZXJ0eSgnbmFtZScsICdteVJlc291cmNlR3JvdXAnLCB0YXJnZXRQcm9wKTtcbiAgICovXG4gIHB1YmxpYyBtYXBQcm9wZXJ0eShcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIHRhcmdldFByb3BlcnR5OiBQcm9wZXJ0eURlZmluaXRpb24sXG4gICk6IGFueSB7XG4gICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgcHJvcGVydHlOYW1lLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3BlcnR5IG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0UHJvcGVydHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhcmdldCBwcm9wZXJ0eSBkZWZpbml0aW9uIGNhbm5vdCBiZSB1bmRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh2YWx1ZSwgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5TmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFByb3BlcnR5IG1hcHBpbmcgZmFpbGVkIGZvciAnJHtwcm9wZXJ0eU5hbWV9JzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwifWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBlcnJvciBjb250ZXh0IGFycmF5IGZvciBhIG5ldyBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgX2NsZWFyRXJyb3JDb250ZXh0cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckNvbnRleHRzLmxlbmd0aCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBvYmplY3QgdXNpbmcgdGhlIHRhcmdldCBzY2hlbWFcbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybU9iamVjdChcbiAgICBzb3VyY2VPYmo6IGFueSxcbiAgICB0YXJnZXRTY2hlbWE6IEFwaVNjaGVtYSxcbiAgICBfY29udGV4dDogVHJhbnNmb3JtYXRpb25Db250ZXh0LFxuICApOiBhbnkge1xuICAgIGlmICghc291cmNlT2JqIHx8IHR5cGVvZiBzb3VyY2VPYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBzb3VyY2VPYmo7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICBjb25zdCB0cmFuc2Zvcm1hdGlvblJ1bGVzID0gdGFyZ2V0U2NoZW1hLnRyYW5zZm9ybWF0aW9uUnVsZXMgfHwge307XG5cbiAgICAvLyBBcHBseSB0cmFuc2Zvcm1hdGlvbiBydWxlcyBmaXJzdFxuICAgIGZvciAoY29uc3QgW3NvdXJjZUtleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZU9iaikpIHtcbiAgICAgIGNvbnN0IHRhcmdldEtleSA9IHRyYW5zZm9ybWF0aW9uUnVsZXNbc291cmNlS2V5XSB8fCBzb3VyY2VLZXk7XG4gICAgICBjb25zdCB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFNjaGVtYS5wcm9wZXJ0aWVzW3RhcmdldEtleV07XG5cbiAgICAgIGlmICh0YXJnZXRQcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgdGFyZ2V0UHJvcGVydHksXG4gICAgICAgICAgdGFyZ2V0S2V5LFxuICAgICAgICApO1xuICAgICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IHRyYW5zZm9ybWVkVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQcm9wZXJ0eSBub3QgaW4gdGFyZ2V0IHNjaGVtYSAtIGNvcHkgYXMtaXMgdW5sZXNzIGV4cGxpY2l0bHkgZXhjbHVkZWRcbiAgICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gdGFyZ2V0IHByb3BlcnR5IGRlZmluaXRpb25cbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybVZhbHVlKFxuICAgIHZhbHVlOiBhbnksXG4gICAgdGFyZ2V0UHJvcGVydHk6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHRhcmdldFByb3BlcnR5LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRQcm9wZXJ0eS5kZWZhdWx0VmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0YXJnZXRQcm9wZXJ0eS5kYXRhVHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuU1RSSU5HOlxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVG9TdHJpbmcodmFsdWUsIHByb3BlcnR5UGF0aCk7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLk5VTUJFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVRvTnVtYmVyKHZhbHVlLCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5CT09MRUFOOlxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVG9Cb29sZWFuKHZhbHVlLCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5BUlJBWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVRvQXJyYXkodmFsdWUsIHRhcmdldFByb3BlcnR5LCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5PQkpFQ1Q6XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Ub09iamVjdCh2YWx1ZSwgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5UGF0aCk7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkFOWTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBzdHJpbmcgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVG9TdHJpbmcodmFsdWU6IGFueSwgcHJvcGVydHlQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29udmVydCB2YWx1ZSBhdCAnJHtwcm9wZXJ0eVBhdGh9JyB0byBzdHJpbmcuIEdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdmFsdWUgdG8gbnVtYmVyIHR5cGVcbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybVRvTnVtYmVyKHZhbHVlOiBhbnksIHByb3BlcnR5UGF0aDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29udmVydCB2YWx1ZSBhdCAnJHtwcm9wZXJ0eVBhdGh9JyB0byBudW1iZXIuIEdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdmFsdWUgdG8gYm9vbGVhbiB0eXBlXG4gICAqL1xuICBwcml2YXRlIF90cmFuc2Zvcm1Ub0Jvb2xlYW4odmFsdWU6IGFueSwgcHJvcGVydHlQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGxvd2VyID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlciA9PT0gXCJ0cnVlXCIgfHwgbG93ZXIgPT09IFwiMVwiKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChsb3dlciA9PT0gXCJmYWxzZVwiIHx8IGxvd2VyID09PSBcIjBcIikgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gMDtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGNvbnZlcnQgdmFsdWUgYXQgJyR7cHJvcGVydHlQYXRofScgdG8gYm9vbGVhbi4gR290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBhcnJheSB0eXBlXG4gICAqL1xuICBwcml2YXRlIF90cmFuc2Zvcm1Ub0FycmF5KFxuICAgIHZhbHVlOiBhbnksXG4gICAgX3RhcmdldFByb3BlcnR5OiBQcm9wZXJ0eURlZmluaXRpb24sXG4gICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICk6IGFueVtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTsgLy8gVE9ETzogVHJhbnNmb3JtIGFycmF5IGVsZW1lbnRzIGlmIG5lZWRlZFxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCBhcnJheSBhdCAnJHtwcm9wZXJ0eVBhdGh9JywgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBvYmplY3QgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVG9PYmplY3QoXG4gICAgdmFsdWU6IGFueSxcbiAgICBfdGFyZ2V0UHJvcGVydHk6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlOyAvLyBUT0RPOiBBcHBseSBuZXN0ZWQgdHJhbnNmb3JtYXRpb24gcnVsZXMgaWYgbmVlZGVkXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEV4cGVjdGVkIG9iamVjdCBhdCAnJHtwcm9wZXJ0eVBhdGh9JywgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHJlcXVpcmVkIHByb3BlcnRpZXNcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlUmVxdWlyZWRQcm9wZXJ0aWVzKFxuICAgIHByb3BlcnRpZXM6IGFueSxcbiAgICBiYXNlUGF0aDogc3RyaW5nLFxuICAgIGVycm9yczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCByZXF1aXJlZFByb3Agb2YgdGhpcy5fc2NoZW1hLnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IGJhc2VQYXRoID8gYCR7YmFzZVBhdGh9LiR7cmVxdWlyZWRQcm9wfWAgOiByZXF1aXJlZFByb3A7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIShyZXF1aXJlZFByb3AgaW4gcHJvcGVydGllcykgfHxcbiAgICAgICAgcHJvcGVydGllc1tyZXF1aXJlZFByb3BdID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGBSZXF1aXJlZCBwcm9wZXJ0eSAnJHtyZXF1aXJlZFByb3B9JyBpcyBtaXNzaW5nYDtcbiAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlaXIgZGVmaW5pdGlvbnNcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlSW5kaXZpZHVhbFByb3BlcnRpZXMoXG4gICAgcHJvcGVydGllczogYW55LFxuICAgIGJhc2VQYXRoOiBzdHJpbmcsXG4gICAgZXJyb3JzOiBzdHJpbmdbXSxcbiAgICB3YXJuaW5nczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgLy8gRnJhbWV3b3JrIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgbm90IGJlIHZhbGlkYXRlZCBhZ2FpbnN0IEF6dXJlIEFQSSBzY2hlbWFcbiAgICBjb25zdCBmcmFtZXdvcmtQcm9wZXJ0aWVzID0gbmV3IFNldChbXG4gICAgICBcImFwaVZlcnNpb25cIixcbiAgICAgIFwiZW5hYmxlTWlncmF0aW9uQW5hbHlzaXNcIixcbiAgICAgIFwiZW5hYmxlVmFsaWRhdGlvblwiLFxuICAgICAgXCJlbmFibGVUcmFuc2Zvcm1hdGlvblwiLFxuICAgICAgXCJpZ25vcmVDaGFuZ2VzXCIsXG4gICAgICBcInJlc291cmNlR3JvdXBJZFwiLFxuICAgICAgXCJtb25pdG9yaW5nXCIsIC8vIEZyYW1ld29yay1sZXZlbCBtb25pdG9yaW5nIGNvbmZpZ3VyYXRpb25cbiAgICAgIFwidmlydHVhbE5ldHdvcmtJZFwiLCAvLyBGcmFtZXdvcmstbGV2ZWwgZGVwZW5kZW5jeSB0cmFja2luZyBmb3IgY2hpbGQgcmVzb3VyY2VzXG4gICAgXSk7XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgcHJvcFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBiYXNlUGF0aCA/IGAke2Jhc2VQYXRofS4ke3Byb3BOYW1lfWAgOiBwcm9wTmFtZTtcblxuICAgICAgLy8gU2tpcCBmcmFtZXdvcmsgcHJvcGVydGllc1xuICAgICAgaWYgKGZyYW1ld29ya1Byb3BlcnRpZXMuaGFzKHByb3BOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvcERlZiA9IHRoaXMuX3NjaGVtYS5wcm9wZXJ0aWVzW3Byb3BOYW1lXTtcblxuICAgICAgaWYgKCFwcm9wRGVmKSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYFVua25vd24gcHJvcGVydHkgJyR7cHJvcE5hbWV9JyBub3QgZGVmaW5lZCBpbiBzY2hlbWFgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWRcbiAgICAgIGlmIChwcm9wRGVmLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgUHJvcGVydHkgJyR7cHJvcE5hbWV9JyBpcyBkZXByZWNhdGVkYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnR5IHR5cGVcbiAgICAgIGNvbnN0IHR5cGVFcnJvcnMgPSB0aGlzLl92YWxpZGF0ZVByb3BlcnR5VHlwZShcbiAgICAgICAgcHJvcFZhbHVlLFxuICAgICAgICBwcm9wRGVmLFxuICAgICAgICBmdWxsUGF0aCxcbiAgICAgICk7XG4gICAgICBpZiAodHlwZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKC4uLnR5cGVFcnJvcnMpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goLi4udHlwZUVycm9ycyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHZhbGlkYXRpb24gcnVsZXNcbiAgICAgIGlmIChwcm9wRGVmLnZhbGlkYXRpb24pIHtcbiAgICAgICAgY29uc3QgcnVsZUVycm9ycyA9IHRoaXMuX2FwcGx5VmFsaWRhdGlvblJ1bGVzKFxuICAgICAgICAgIHByb3BWYWx1ZSxcbiAgICAgICAgICBwcm9wRGVmLnZhbGlkYXRpb24sXG4gICAgICAgICAgZnVsbFBhdGgsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChydWxlRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi5ydWxlRXJyb3JzKTtcblxuICAgICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eUVycm9yc1tmdWxsUGF0aF0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goLi4ucnVsZUVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHByb3BlcnR5IHR5cGUgYWdhaW5zdCBkZWZpbml0aW9uXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVByb3BlcnR5VHlwZShcbiAgICB2YWx1ZTogYW55LFxuICAgIHByb3BEZWY6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICBpZiAocHJvcERlZi5yZXF1aXJlZCkge1xuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgaXMgcmVxdWlyZWQgYnV0IGlzICR7dmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IFwidW5kZWZpbmVkXCJ9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcm9wRGVmLmRhdGFUeXBlKSB7XG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5TVFJJTkc6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGEgc3RyaW5nLCBnb3Q6ICR7dHlwZW9mIHZhbHVlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuTlVNQkVSOlxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgbXVzdCBiZSBhIG51bWJlciwgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkJPT0xFQU46XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgbXVzdCBiZSBhIGJvb2xlYW4sIGdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5BUlJBWTpcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgYFByb3BlcnR5ICcke3Byb3BlcnR5UGF0aH0nIG11c3QgYmUgYW4gYXJyYXksIGdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5PQkpFQ1Q6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGFuIG9iamVjdCwgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkFOWTpcbiAgICAgICAgLy8gQW55IHR5cGUgaXMgYWx3YXlzIHZhbGlkXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBgVW5rbm93biBkYXRhIHR5cGUgJyR7cHJvcERlZi5kYXRhVHlwZX0nIGZvciBwcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9J2AsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHZhbGlkYXRpb24gcnVsZXMgdG8gYSBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlWYWxpZGF0aW9uUnVsZXMoXG4gICAgdmFsdWU6IGFueSxcbiAgICBydWxlczogVmFsaWRhdGlvblJ1bGVbXSxcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgc3dpdGNoIChydWxlLnJ1bGVUeXBlKSB7XG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVEOlxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8IGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBpcyByZXF1aXJlZGAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENIOlxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgcnVsZS52YWx1ZSkge1xuICAgICAgICAgICAgLy8gU2tpcCBwYXR0ZXJuIHZhbGlkYXRpb24gZm9yIFRlcnJhZm9ybSBpbnRlcnBvbGF0aW9uIHN0cmluZ3NcbiAgICAgICAgICAgIC8vIFRoZXNlIHN0cmluZ3MgY29udGFpbiByZWZlcmVuY2VzIGxpa2UgJHtyZXNvdXJjZS5pZH0gdGhhdCB3aWxsIGJlIHJlc29sdmVkIGF0IGFwcGx5IHRpbWVcbiAgICAgICAgICAgIGNvbnN0IGlzVGVycmFmb3JtSW50ZXJwb2xhdGlvbiA9XG4gICAgICAgICAgICAgIHZhbHVlLmluY2x1ZGVzKFwiJHtcIikgJiYgdmFsdWUuaW5jbHVkZXMoXCJ9XCIpO1xuXG4gICAgICAgICAgICBpZiAoIWlzVGVycmFmb3JtSW50ZXJwb2xhdGlvbikge1xuICAgICAgICAgICAgICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChydWxlLnZhbHVlKTtcbiAgICAgICAgICAgICAgaWYgKCFwYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICBydWxlLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgYFByb3BlcnR5ICcke3Byb3BlcnR5UGF0aH0nIGRvZXMgbm90IG1hdGNoIHJlcXVpcmVkIHBhdHRlcm5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uUnVsZVR5cGUuVkFMVUVfUkFOR0U6XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiBydWxlLnZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHJ1bGUudmFsdWU7XG4gICAgICAgICAgICBpZiAocmFuZ2UubWluICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgPCByYW5nZS5taW4pIHtcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8XG4gICAgICAgICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgbXVzdCBiZSBhdCBsZWFzdCAke3JhbmdlLm1pbn1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJhbmdlLm1heCAhPT0gdW5kZWZpbmVkICYmIHZhbHVlID4gcmFuZ2UubWF4KSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgIHJ1bGUubWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgYFByb3BlcnR5ICcke3Byb3BlcnR5UGF0aH0nIG11c3QgYmUgYXQgbW9zdCAke3JhbmdlLm1heH1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLOlxuICAgICAgICAgIC8vIFR5cGUgY2hlY2tpbmcgaXMgaGFuZGxlZCBpbiBfdmFsaWRhdGVQcm9wZXJ0eVR5cGVcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFZhbGlkYXRpb25SdWxlVHlwZS5DVVNUT01fVkFMSURBVElPTjpcbiAgICAgICAgICAvLyBDdXN0b20gdmFsaWRhdGlvbiB3b3VsZCByZXF1aXJlIGZ1bmN0aW9uIHN1cHBvcnQsIHdoaWNoIGlzIGNvbXBsZXggaW4gSlNJSVxuICAgICAgICAgIC8vIEZvciBub3csIHdlJ2xsIGp1c3QgbG9nIGEgd2FybmluZ1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBzY2hlbWEtbGV2ZWwgdmFsaWRhdGlvbiBydWxlc1xuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlTY2hlbWFWYWxpZGF0aW9uUnVsZXMoXG4gICAgcHJvcGVydGllczogYW55LFxuICAgIGVycm9yczogc3RyaW5nW10sXG4gICAgX3dhcm5pbmdzOiBzdHJpbmdbXSxcbiAgICBwcm9wZXJ0eUVycm9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NjaGVtYS52YWxpZGF0aW9uUnVsZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgdGhpcy5fc2NoZW1hLnZhbGlkYXRpb25SdWxlcykge1xuICAgICAgY29uc3QgcHJvcFZhbHVlID0gcHJvcGVydGllc1t2YWxpZGF0aW9uLnByb3BlcnR5XTtcbiAgICAgIGNvbnN0IHJ1bGVFcnJvcnMgPSB0aGlzLl9hcHBseVZhbGlkYXRpb25SdWxlcyhcbiAgICAgICAgcHJvcFZhbHVlLFxuICAgICAgICB2YWxpZGF0aW9uLnJ1bGVzLFxuICAgICAgICB2YWxpZGF0aW9uLnByb3BlcnR5LFxuICAgICAgKTtcbiAgICAgIGlmIChydWxlRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZXJyb3JzLnB1c2goLi4ucnVsZUVycm9ycyk7XG5cbiAgICAgICAgaWYgKCFwcm9wZXJ0eUVycm9yc1t2YWxpZGF0aW9uLnByb3BlcnR5XSkge1xuICAgICAgICAgIHByb3BlcnR5RXJyb3JzW3ZhbGlkYXRpb24ucHJvcGVydHldID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydHlFcnJvcnNbdmFsaWRhdGlvbi5wcm9wZXJ0eV0ucHVzaCguLi5ydWxlRXJyb3JzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBkZWZhdWx0IHZhbHVlcyB0byBhbiBvYmplY3RcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5RGVmYXVsdHNUb09iamVjdChvYmo6IGFueSwgX2Jhc2VQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgcHJvcERlZl0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5fc2NoZW1hLnByb3BlcnRpZXMpKSB7XG4gICAgICBpZiAoIShwcm9wTmFtZSBpbiBvYmopICYmIHByb3BEZWYuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb2JqW3Byb3BOYW1lXSA9IHByb3BEZWYuZGVmYXVsdFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -13,6 +13,6 @@ export * from "./azapi/azapi-resource";
|
|
|
13
13
|
export * from "./version-manager/api-version-manager";
|
|
14
14
|
export * from "./azapi/schema-mapper/schema-mapper";
|
|
15
15
|
export * from "./version-manager/interfaces/version-interfaces";
|
|
16
|
-
|
|
17
|
-
export {
|
|
16
|
+
export { AzapiProvider } from "./azapi/providers-azapi/provider";
|
|
17
|
+
export type { AzapiProviderConfig, AzapiProviderEndpoint, } from "./azapi/providers-azapi/provider";
|
|
18
18
|
export * from "./azapi/azapi-exports";
|
|
@@ -25,16 +25,16 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
25
25
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
26
26
|
};
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.
|
|
28
|
+
exports.AzapiProvider = void 0;
|
|
29
29
|
// Export unified AZAPI resource class
|
|
30
30
|
__exportStar(require("./azapi/azapi-resource"), exports);
|
|
31
31
|
__exportStar(require("./version-manager/api-version-manager"), exports);
|
|
32
32
|
__exportStar(require("./azapi/schema-mapper/schema-mapper"), exports);
|
|
33
33
|
// Export version management interfaces
|
|
34
34
|
__exportStar(require("./version-manager/interfaces/version-interfaces"), exports);
|
|
35
|
-
// Export
|
|
36
|
-
|
|
37
|
-
exports.
|
|
35
|
+
// Export AzapiProvider directly for clean usage
|
|
36
|
+
var provider_1 = require("./azapi/providers-azapi/provider");
|
|
37
|
+
Object.defineProperty(exports, "AzapiProvider", { enumerable: true, get: function () { return provider_1.AzapiProvider; } });
|
|
38
38
|
// Export convenience imports for commonly used classes
|
|
39
39
|
__exportStar(require("./azapi/azapi-exports"), exports);
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS1henVyZS9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7O0dBVUc7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsc0NBQXNDO0FBQ3RDLHlEQUF1QztBQUN2Qyx3RUFBc0Q7QUFDdEQsc0VBQW9EO0FBRXBELHVDQUF1QztBQUN2QyxrRkFBZ0U7QUFFaEUsZ0RBQWdEO0FBQ2hELDZEQUFpRTtBQUF4RCx5R0FBQSxhQUFhLE9BQUE7QUFNdEIsdURBQXVEO0FBQ3ZELHdEQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29yZSBBenVyZSBBWkFQSSBmdW5jdGlvbmFsaXR5XG4gKlxuICogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGZvdW5kYXRpb25hbCBjbGFzc2VzIGFuZCB1dGlsaXRpZXMgZm9yIEFaQVBJLWJhc2VkIEF6dXJlIGNvbnN0cnVjdHM6XG4gKlxuICogLSBWZXJzaW9uZWRBemFwaVJlc291cmNlOiBVbmlmaWVkIGZyYW1ld29yayBiYXNlIGNsYXNzIHdpdGggYXV0b21hdGljIHZlcnNpb24gbWFuYWdlbWVudFxuICogLSBBcGlWZXJzaW9uTWFuYWdlcjogU2luZ2xldG9uIGZvciBjZW50cmFsaXplZCB2ZXJzaW9uIG1hbmFnZW1lbnRcbiAqIC0gU2NoZW1hTWFwcGVyOiBQcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBhbmQgdmFsaWRhdGlvbiBlbmdpbmVcbiAqIC0gVmVyc2lvbiBtYW5hZ2VtZW50IHV0aWxpdGllcyBhbmQgaW50ZXJmYWNlc1xuICogLSBBWkFQSSBwcm92aWRlciBpbnRlZ3JhdGlvbnNcbiAqL1xuXG4vLyBFeHBvcnQgdW5pZmllZCBBWkFQSSByZXNvdXJjZSBjbGFzc1xuZXhwb3J0ICogZnJvbSBcIi4vYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZlcnNpb24tbWFuYWdlci9hcGktdmVyc2lvbi1tYW5hZ2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hemFwaS9zY2hlbWEtbWFwcGVyL3NjaGVtYS1tYXBwZXJcIjtcblxuLy8gRXhwb3J0IHZlcnNpb24gbWFuYWdlbWVudCBpbnRlcmZhY2VzXG5leHBvcnQgKiBmcm9tIFwiLi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLy8gRXhwb3J0IEF6YXBpUHJvdmlkZXIgZGlyZWN0bHkgZm9yIGNsZWFuIHVzYWdlXG5leHBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4vYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5leHBvcnQgdHlwZSB7XG4gIEF6YXBpUHJvdmlkZXJDb25maWcsXG4gIEF6YXBpUHJvdmlkZXJFbmRwb2ludCxcbn0gZnJvbSBcIi4vYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5cbi8vIEV4cG9ydCBjb252ZW5pZW5jZSBpbXBvcnRzIGZvciBjb21tb25seSB1c2VkIGNsYXNzZXNcbmV4cG9ydCAqIGZyb20gXCIuL2F6YXBpL2F6YXBpLWV4cG9ydHNcIjtcbiJdfQ==
|
|
@@ -505,5 +505,5 @@ class ApiVersionManager {
|
|
|
505
505
|
}
|
|
506
506
|
exports.ApiVersionManager = ApiVersionManager;
|
|
507
507
|
_a = JSII_RTTI_SYMBOL_1;
|
|
508
|
-
ApiVersionManager[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ApiVersionManager", version: "1.
|
|
508
|
+
ApiVersionManager[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ApiVersionManager", version: "1.3.1" };
|
|
509
509
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLXZlcnNpb24tbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCx3RUFTeUM7QUFXekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQWEsaUJBQWlCO0lBQzVCOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksTUFBTSxDQUFDLFFBQVE7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDeEQsQ0FBQztRQUNELE9BQU8saUJBQWlCLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFPRDs7O09BR0c7SUFDSDtRQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXVCRztJQUNJLG9CQUFvQixDQUN6QixZQUFvQixFQUNwQixRQUF5QjtRQUV6QixJQUFJLENBQUMsMEJBQTBCLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXhELE1BQU0sVUFBVSxHQUF5QyxFQUFFLENBQUM7UUFDNUQsSUFBSSxhQUFpQyxDQUFDO1FBQ3RDLElBQUksaUJBQWlCLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7UUFFeEQsb0NBQW9DO1FBQ3BDLEtBQUssTUFBTSxhQUFhLElBQUksUUFBUSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUV6RCwrQkFBK0I7WUFDL0IsSUFBSSxhQUFhLENBQUMsT0FBTyxJQUFJ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Q0E4bUJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcGlWZXJzaW9uTWFuYWdlciAtIEEgSlNJSS1jb21wbGlhbnQgc2luZ2xldG9uIGZvciBtYW5hZ2luZyBBenVyZSBBUEkgdmVyc2lvbnNcbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGNlbnRyYWxpemVkIHZlcnNpb24gbWFuYWdlbWVudCBmb3IgQXp1cmUgcmVzb3VyY2VzLCBpbmNsdWRpbmc6XG4gKiAtIFZlcnNpb24gcmVnaXN0cnkgYW5kIG1ldGFkYXRhIHN0b3JhZ2VcbiAqIC0gVmVyc2lvbiByZXNvbHV0aW9uIGFuZCBjb21wYXRpYmlsaXR5IGFuYWx5c2lzXG4gKiAtIE1pZ3JhdGlvbiBhbmFseXNpcyBiZXR3ZWVuIHZlcnNpb25zXG4gKiAtIFRocmVhZC1zYWZlIHNpbmdsZXRvbiBvcGVyYXRpb25zXG4gKlxuICogVGhlIHNpbmdsZXRvbiBwYXR0ZXJuIGlzIGltcGxlbWVudGVkIGluIGEgSlNJSS1jb21wbGlhbnQgd2F5IHVzaW5nIGluc3RhbmNlIG1ldGhvZHNcbiAqIHJhdGhlciB0aGFuIHN0YXRpYyBjbGFzc2VzIHRvIGVuc3VyZSBtdWx0aS1sYW5ndWFnZSBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICovXG5cbmltcG9ydCB7XG4gIFZlcnNpb25Db25maWcsXG4gIE1pZ3JhdGlvbkFuYWx5c2lzLFxuICBCcmVha2luZ0NoYW5nZSxcbiAgVmVyc2lvblN1cHBvcnRMZXZlbCxcbiAgTWlncmF0aW9uRWZmb3J0LFxuICBWZXJzaW9uTGlmZWN5Y2xlLFxuICBWZXJzaW9uQ29uc3RyYWludHMsXG4gIEJyZWFraW5nQ2hhbmdlVHlwZSxcbn0gZnJvbSBcIi4vaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLyoqXG4gKiBSZWdpc3RyeSBlbnRyeSBmb3IgYSByZXNvdXJjZSB0eXBlIGNvbnRhaW5pbmcgYWxsIHZlcnNpb24gY29uZmlndXJhdGlvbnNcbiAqL1xuaW50ZXJmYWNlIFJlc291cmNlVHlwZVJlZ2lzdHJ5IHtcbiAgcmVhZG9ubHkgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb25zOiB7IFt2ZXJzaW9uOiBzdHJpbmddOiBWZXJzaW9uQ29uZmlnIH07XG4gIHJlYWRvbmx5IGxhdGVzdFZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXBpVmVyc2lvbk1hbmFnZXIgc2luZ2xldG9uIGNsYXNzIGZvciBjZW50cmFsaXplZCB2ZXJzaW9uIG1hbmFnZW1lbnRcbiAqXG4gKiBUaGlzIGNsYXNzIG1hbmFnZXMgQVBJIHZlcnNpb25zIGZvciBBenVyZSByZXNvdXJjZXMsIHByb3ZpZGluZyB2ZXJzaW9uIHJlc29sdXRpb24sXG4gKiBjb21wYXRpYmlsaXR5IGFuYWx5c2lzLCBhbmQgbWlncmF0aW9uIGd1aWRhbmNlLiBJdCBpbXBsZW1lbnRzIGEgSlNJSS1jb21wbGlhbnRcbiAqIHNpbmdsZXRvbiBwYXR0ZXJuIGZvciB0aHJlYWQtc2FmZSBvcGVyYXRpb25zIGFjcm9zcyBtdWx0aXBsZSBsYW5ndWFnZSBiaW5kaW5ncy5cbiAqXG4gKiBLZXkgRmVhdHVyZXM6XG4gKiAtIFRocmVhZC1zYWZlIHNpbmdsZXRvbiBpbXBsZW1lbnRhdGlvblxuICogLSBWZXJzaW9uIHJlZ2lzdHJ5IG1hbmFnZW1lbnQgd2l0aCBmdWxsIGxpZmVjeWNsZSBzdXBwb3J0XG4gKiAtIEFkdmFuY2VkIHZlcnNpb24gcmVzb2x1dGlvbiB3aXRoIGNvbnN0cmFpbnQtYmFzZWQgc2VsZWN0aW9uXG4gKiAtIENvbXByZWhlbnNpdmUgbWlncmF0aW9uIGFuYWx5c2lzIHdpdGggZWZmb3J0IGVzdGltYXRpb25cbiAqIC0gRXh0ZW5zaXZlIHZhbGlkYXRpb24gYW5kIGVycm9yIGhhbmRsaW5nXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IG1hbmFnZXIgPSBBcGlWZXJzaW9uTWFuYWdlci5nZXRJbnN0YW5jZSgpO1xuICogbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZSgnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsIHZlcnNpb25zKTtcbiAqIGNvbnN0IGxhdGVzdCA9IG1hbmFnZXIuZ2V0TGF0ZXN0VmVyc2lvbignTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycpO1xuICogY29uc3QgYW5hbHlzaXMgPSBtYW5hZ2VyLmFuYWx5emVNaWdyYXRpb24oJ01pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHMnLCAnMjAyNC0wMS0wMScsICcyMDI0LTExLTAxJyk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIEFwaVZlcnNpb25NYW5hZ2VyIHtcbiAgLyoqXG4gICAqIEdldHMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiBBcGlWZXJzaW9uTWFuYWdlclxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIGEgdGhyZWFkLXNhZmUgc2luZ2xldG9uIHBhdHRlcm4gdGhhdCdzIGNvbXBhdGlibGVcbiAgICogd2l0aCBKU0lJIG11bHRpLWxhbmd1YWdlIGJpbmRpbmdzLiBUaGUgaW5zdGFuY2UgaXMgbGF6aWx5IGNyZWF0ZWQgb25cbiAgICogZmlyc3QgYWNjZXNzIGFuZCByZXVzZWQgZm9yIGFsbCBzdWJzZXF1ZW50IGNhbGxzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgc2luZ2xldG9uIEFwaVZlcnNpb25NYW5hZ2VyIGluc3RhbmNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IG1hbmFnZXIgPSBBcGlWZXJzaW9uTWFuYWdlci5pbnN0YW5jZSgpO1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpbnN0YW5jZSgpOiBBcGlWZXJzaW9uTWFuYWdlciB7XG4gICAgaWYgKCFBcGlWZXJzaW9uTWFuYWdlci5faW5zdGFuY2UpIHtcbiAgICAgIEFwaVZlcnNpb25NYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBBcGlWZXJzaW9uTWFuYWdlcigpO1xuICAgIH1cbiAgICByZXR1cm4gQXBpVmVyc2lvbk1hbmFnZXIuX2luc3RhbmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBBcGlWZXJzaW9uTWFuYWdlciB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzb3VyY2VSZWdpc3RyeToge1xuICAgIFtyZXNvdXJjZVR5cGU6IHN0cmluZ106IFJlc291cmNlVHlwZVJlZ2lzdHJ5O1xuICB9O1xuXG4gIC8qKlxuICAgKiBQcml2YXRlIGNvbnN0cnVjdG9yIHRvIGVuZm9yY2Ugc2luZ2xldG9uIHBhdHRlcm5cbiAgICogSW5pdGlhbGl6ZXMgdGhlIGludGVybmFsIHJlZ2lzdHJpZXMgYW5kIGRhdGEgc3RydWN0dXJlc1xuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9yZXNvdXJjZVJlZ2lzdHJ5ID0ge307XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgcmVzb3VyY2UgdHlwZSB3aXRoIGl0cyB2ZXJzaW9uIGNvbmZpZ3VyYXRpb25zXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHN0b3JlcyB2ZXJzaW9uIG1ldGFkYXRhIGZvciBhIHNwZWNpZmljIEF6dXJlIHJlc291cmNlIHR5cGUsXG4gICAqIGluY2x1ZGluZyBzY2hlbWFzLCBsaWZlY3ljbGUgaW5mb3JtYXRpb24sIGFuZCBtaWdyYXRpb24gZGF0YS4gSXQgdmFsaWRhdGVzXG4gICAqIHRoZSBpbnB1dCBhbmQgbWFpbnRhaW5zIGludGVybmFsIGluZGV4ZXMgZm9yIGVmZmljaWVudCBsb29rdXBzLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIC0gVGhlIEF6dXJlIHJlc291cmNlIHR5cGUgKGUuZy4sICdNaWNyb3NvZnQuUmVzb3VyY2VzL3Jlc291cmNlR3JvdXBzJylcbiAgICogQHBhcmFtIHZlcnNpb25zIC0gQXJyYXkgb2YgdmVyc2lvbiBjb25maWd1cmF0aW9ucyBmb3IgdGhlIHJlc291cmNlIHR5cGVcbiAgICpcbiAgICogQHRocm93cyBFcnJvciBpZiByZXNvdXJjZVR5cGUgaXMgZW1wdHkgb3IgdmVyc2lvbnMgYXJyYXkgaXMgZW1wdHlcbiAgICogQHRocm93cyBFcnJvciBpZiBkdXBsaWNhdGUgdmVyc2lvbnMgYXJlIGZvdW5kIGluIHRoZSB2ZXJzaW9ucyBhcnJheVxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHZlcnNpb24gY29uZmlndXJhdGlvbnMgYXJlIGludmFsaWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZSgnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsIFtcbiAgICogICB7XG4gICAqICAgICB2ZXJzaW9uOiAnMjAyNC0wMS0wMScsXG4gICAqICAgICBzY2hlbWE6IHsgcmVzb3VyY2VUeXBlOiAnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsIHZlcnNpb246ICcyMDI0LTAxLTAxJywgcHJvcGVydGllczoge30sIHJlcXVpcmVkOiBbXSB9LFxuICAgKiAgICAgc3VwcG9ydExldmVsOiBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRSxcbiAgICogICAgIHJlbGVhc2VEYXRlOiAnMjAyNC0wMS0wMSdcbiAgICogICB9XG4gICAqIF0pO1xuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyUmVzb3VyY2VUeXBlKFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHZlcnNpb25zOiBWZXJzaW9uQ29uZmlnW10sXG4gICk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRlUmVzb3VyY2VUeXBlSW5wdXQocmVzb3VyY2VUeXBlLCB2ZXJzaW9ucyk7XG5cbiAgICBjb25zdCB2ZXJzaW9uTWFwOiB7IFt2ZXJzaW9uOiBzdHJpbmddOiBWZXJzaW9uQ29uZmlnIH0gPSB7fTtcbiAgICBsZXQgbGF0ZXN0VmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBsYXRlc3RSZWxlYXNlRGF0ZSA9IG5ldyBEYXRlKDApOyAvLyBTdGFydCB3aXRoIGVwb2NoXG5cbiAgICAvLyBQcm9jZXNzIGFuZCB2YWxpZGF0ZSBlYWNoIHZlcnNpb25cbiAgICBmb3IgKGNvbnN0IHZlcnNpb25Db25maWcgb2YgdmVyc2lvbnMpIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlVmVyc2lvbkNvbmZpZyh2ZXJzaW9uQ29uZmlnLCByZXNvdXJjZVR5cGUpO1xuXG4gICAgICAvLyBDaGVjayBmb3IgZHVwbGljYXRlIHZlcnNpb25zXG4gICAgICBpZiAodmVyc2lvbkNvbmZpZy52ZXJzaW9uIGluIHZlcnNpb25NYXApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBEdXBsaWNhdGUgdmVyc2lvbiAnJHt2ZXJzaW9uQ29uZmlnLnZlcnNpb259JyBmb3VuZCBmb3IgcmVzb3VyY2UgdHlwZSAnJHtyZXNvdXJjZVR5cGV9J2AsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHZlcnNpb25NYXBbdmVyc2lvbkNvbmZpZy52ZXJzaW9uXSA9IHZlcnNpb25Db25maWc7XG5cbiAgICAgIC8vIFRyYWNrIHRoZSBsYXRlc3QgdmVyc2lvbiBiYXNlZCBvbiByZWxlYXNlIGRhdGUgYW5kIHN1cHBvcnQgbGV2ZWxcbiAgICAgIGNvbnN0IHJlbGVhc2VEYXRlID0gbmV3IERhdGUodmVyc2lvbkNvbmZpZy5yZWxlYXNlRGF0ZSk7XG4gICAgICBpZiAoXG4gICAgICAgIHJlbGVhc2VEYXRlID49IGxhdGVzdFJlbGVhc2VEYXRlICYmXG4gICAgICAgIHZlcnNpb25Db25maWcuc3VwcG9ydExldmVsID09PSBWZXJzaW9uU3VwcG9ydExldmVsLkFDVElWRVxuICAgICAgKSB7XG4gICAgICAgIGxhdGVzdFZlcnNpb24gPSB2ZXJzaW9uQ29uZmlnLnZlcnNpb247XG4gICAgICAgIGxhdGVzdFJlbGVhc2VEYXRlID0gcmVsZWFzZURhdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdGhlIHJlZ2lzdHJ5IGVudHJ5XG4gICAgY29uc3QgcmVnaXN0cnlFbnRyeTogUmVzb3VyY2VUeXBlUmVnaXN0cnkgPSB7XG4gICAgICByZXNvdXJjZVR5cGUsXG4gICAgICB2ZXJzaW9uczogdmVyc2lvbk1hcCxcbiAgICAgIGxhdGVzdFZlcnNpb24sXG4gICAgfTtcblxuICAgIHRoaXMuX3Jlc291cmNlUmVnaXN0cnlbcmVzb3VyY2VUeXBlXSA9IHJlZ2lzdHJ5RW50cnk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbGF0ZXN0IGFjdGl2ZSB2ZXJzaW9uIGZvciBhIHJlc291cmNlIHR5cGVcbiAgICpcbiAgICogUmV0dXJucyB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiB3aXRoIEFDVElWRSBzdXBwb3J0IGxldmVsLiBJZiBubyBhY3RpdmVcbiAgICogdmVyc2lvbnMgYXJlIGZvdW5kLCByZXR1cm5zIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIHJlZ2FyZGxlc3Mgb2Ygc3VwcG9ydCBsZXZlbC5cbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSAtIFRoZSBBenVyZSByZXNvdXJjZSB0eXBlIHRvIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yXG4gICAqIEByZXR1cm5zIFRoZSBsYXRlc3QgdmVyc2lvbiBzdHJpbmcsIG9yIHVuZGVmaW5lZCBpZiB0aGUgcmVzb3VyY2UgdHlwZSBpcyBub3QgcmVnaXN0ZXJlZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBsYXRlc3QgPSBtYW5hZ2VyLmxhdGVzdFZlcnNpb24oJ01pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHMnKTtcbiAgICogLy8gUmV0dXJuczogXCIyMDI0LTExLTAxXCJcbiAgICovXG4gIHB1YmxpYyBsYXRlc3RWZXJzaW9uKHJlc291cmNlVHlwZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMuX3Jlc291cmNlUmVnaXN0cnlbcmVzb3VyY2VUeXBlXTtcbiAgICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiByZWdpc3RyeS5sYXRlc3RWZXJzaW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBhIHJlc291cmNlIHR5cGVcbiAgICpcbiAgICogUmV0cmlldmVzIHRoZSBjb21wbGV0ZSB2ZXJzaW9uIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIHNjaGVtYSwgbGlmZWN5Y2xlXG4gICAqIGluZm9ybWF0aW9uLCBicmVha2luZyBjaGFuZ2VzLCBhbmQgbWlncmF0aW9uIG1ldGFkYXRhLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIC0gVGhlIEF6dXJlIHJlc291cmNlIHR5cGVcbiAgICogQHBhcmFtIHZlcnNpb24gLSBUaGUgc3BlY2lmaWMgdmVyc2lvbiB0byByZXRyaWV2ZVxuICAgKiBAcmV0dXJucyBUaGUgdmVyc2lvbiBjb25maWd1cmF0aW9uLCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGNvbmZpZyA9IG1hbmFnZXIudmVyc2lvbkNvbmZpZygnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsICcyMDI0LTAxLTAxJyk7XG4gICAqIGlmIChjb25maWcpIHtcbiAgICogICBjb25zb2xlLmxvZyhgU3VwcG9ydCBsZXZlbDogJHtjb25maWcuc3VwcG9ydExldmVsfWApO1xuICAgKiAgIGNvbnNvbGUubG9nKGBSZWxlYXNlIGRhdGU6ICR7Y29uZmlnLnJlbGVhc2VEYXRlfWApO1xuICAgKiB9XG4gICAqL1xuICBwdWJsaWMgdmVyc2lvbkNvbmZpZyhcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICk6IFZlcnNpb25Db25maWcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gdGhpcy5fcmVzb3VyY2VSZWdpc3RyeVtyZXNvdXJjZVR5cGVdO1xuICAgIGlmICghcmVnaXN0cnkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZ2lzdHJ5LnZlcnNpb25zW3ZlcnNpb25dO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHN1cHBvcnRlZCB2ZXJzaW9ucyBmb3IgYSByZXNvdXJjZSB0eXBlXG4gICAqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHJlZ2lzdGVyZWQgdmVyc2lvbiBzdHJpbmdzIGZvciB0aGUgc3BlY2lmaWVkXG4gICAqIHJlc291cmNlIHR5cGUsIHNvcnRlZCBieSByZWxlYXNlIGRhdGUgKG5ld2VzdCBmaXJzdCkuXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgLSBUaGUgQXp1cmUgcmVzb3VyY2UgdHlwZVxuICAgKiBAcmV0dXJucyBBcnJheSBvZiBzdXBwb3J0ZWQgdmVyc2lvbiBzdHJpbmdzLCBlbXB0eSBpZiByZXNvdXJjZSB0eXBlIG5vdCByZWdpc3RlcmVkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHZlcnNpb25zID0gbWFuYWdlci5zdXBwb3J0ZWRWZXJzaW9ucygnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycpO1xuICAgKiAvLyBSZXR1cm5zOiBbXCIyMDI0LTExLTAxXCIsIFwiMjAyNC0wMS0wMVwiLCBcIjIwMjMtMDctMDFcIl1cbiAgICovXG4gIHB1YmxpYyBzdXBwb3J0ZWRWZXJzaW9ucyhyZXNvdXJjZVR5cGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMuX3Jlc291cmNlUmVnaXN0cnlbcmVzb3VyY2VUeXBlXTtcbiAgICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgLy8gU29ydCB2ZXJzaW9ucyBieSByZWxlYXNlIGRhdGUgKG5ld2VzdCBmaXJzdClcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZWdpc3RyeS52ZXJzaW9ucylcbiAgICAgIC5zb3J0KFxuICAgICAgICAoYSwgYikgPT5cbiAgICAgICAgICBuZXcgRGF0ZShiLnJlbGVhc2VEYXRlKS5nZXRUaW1lKCkgLSBuZXcgRGF0ZShhLnJlbGVhc2VEYXRlKS5nZXRUaW1lKCksXG4gICAgICApXG4gICAgICAubWFwKChjb25maWcpID0+IGNvbmZpZy52ZXJzaW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbmFseXplcyBtaWdyYXRpb24gcmVxdWlyZW1lbnRzIGJldHdlZW4gdHdvIHZlcnNpb25zXG4gICAqXG4gICAqIFBlcmZvcm1zIGNvbXByZWhlbnNpdmUgYW5hbHlzaXMgb2YgdGhlIG1pZ3JhdGlvbiBwYXRoIGJldHdlZW4gc291cmNlIGFuZFxuICAgKiB0YXJnZXQgdmVyc2lvbnMsIGluY2x1ZGluZyBjb21wYXRpYmlsaXR5IGFzc2Vzc21lbnQsIGJyZWFraW5nIGNoYW5nZXNcbiAgICogaWRlbnRpZmljYXRpb24sIGVmZm9ydCBlc3RpbWF0aW9uLCBhbmQgdXBncmFkZSBmZWFzaWJpbGl0eS5cbiAgICpcbiAgICogQHBhcmFtIHJlc291cmNlVHlwZSAtIFRoZSBBenVyZSByZXNvdXJjZSB0eXBlXG4gICAqIEBwYXJhbSBmcm9tVmVyc2lvbiAtIFRoZSBzb3VyY2UgdmVyc2lvbiB0byBtaWdyYXRlIGZyb21cbiAgICogQHBhcmFtIHRvVmVyc2lvbiAtIFRoZSB0YXJnZXQgdmVyc2lvbiB0byBtaWdyYXRlIHRvXG4gICAqIEByZXR1cm5zIERldGFpbGVkIG1pZ3JhdGlvbiBhbmFseXNpcyByZXN1bHRzXG4gICAqXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZWl0aGVyIHZlcnNpb24gaXMgbm90IHJlZ2lzdGVyZWQgZm9yIHRoZSByZXNvdXJjZSB0eXBlXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgcmVzb3VyY2VUeXBlIGlzIG5vdCByZWdpc3RlcmVkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGFuYWx5c2lzID0gbWFuYWdlci5hbmFseXplTWlncmF0aW9uKFxuICAgKiAgICdNaWNyb3NvZnQuUmVzb3VyY2VzL3Jlc291cmNlR3JvdXBzJyxcbiAgICogICAnMjAyNC0wMS0wMScsXG4gICAqICAgJzIwMjQtMTEtMDEnXG4gICAqICk7XG4gICAqXG4gICAqIGNvbnNvbGUubG9nKGBDb21wYXRpYmxlOiAke2FuYWx5c2lzLmNvbXBhdGlibGV9YCk7XG4gICAqIGNvbnNvbGUubG9nKGBFZmZvcnQ6ICR7YW5hbHlzaXMuZXN0aW1hdGVkRWZmb3J0fWApO1xuICAgKiBjb25zb2xlLmxvZyhgQnJlYWtpbmcgY2hhbmdlczogJHthbmFseXNpcy5icmVha2luZ0NoYW5nZXMubGVuZ3RofWApO1xuICAgKi9cbiAgcHVibGljIGFuYWx5emVNaWdyYXRpb24oXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgZnJvbVZlcnNpb246IHN0cmluZyxcbiAgICB0b1ZlcnNpb246IHN0cmluZyxcbiAgKTogTWlncmF0aW9uQW5hbHlzaXMge1xuICAgIC8vIFZhbGlkYXRlIGlucHV0cyBhbmQgZ2V0IGNvbmZpZ3VyYXRpb25zXG4gICAgY29uc3QgZnJvbUNvbmZpZyA9IHRoaXMudmVyc2lvbkNvbmZpZyhyZXNvdXJjZVR5cGUsIGZyb21WZXJzaW9uKTtcbiAgICBjb25zdCB0b0NvbmZpZyA9IHRoaXMudmVyc2lvbkNvbmZpZyhyZXNvdXJjZVR5cGUsIHRvVmVyc2lvbik7XG5cbiAgICBpZiAoIWZyb21Db25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFNvdXJjZSB2ZXJzaW9uICcke2Zyb21WZXJzaW9ufScgbm90IGZvdW5kIGZvciByZXNvdXJjZSB0eXBlICcke3Jlc291cmNlVHlwZX0nYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF0b0NvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgVGFyZ2V0IHZlcnNpb24gJyR7dG9WZXJzaW9ufScgbm90IGZvdW5kIGZvciByZXNvdXJjZSB0eXBlICcke3Jlc291cmNlVHlwZX0nYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQW5hbHl6ZSBjb21wYXRpYmlsaXR5IGFuZCBjaGFuZ2VzXG4gICAgY29uc3QgYWxsQnJlYWtpbmdDaGFuZ2VzID0gdGhpcy5fY29sbGVjdEJyZWFraW5nQ2hhbmdlcyhcbiAgICAgIHJlc291cmNlVHlwZSxcbiAgICAgIGZyb21WZXJzaW9uLFxuICAgICAgdG9WZXJzaW9uLFxuICAgICk7XG4gICAgY29uc3QgY29tcGF0aWJsZSA9IGFsbEJyZWFraW5nQ2hhbmdlcy5sZW5ndGggPT09IDA7XG4gICAgY29uc3Qgd2FybmluZ3MgPSB0aGlzLl9nZW5lcmF0ZU1pZ3JhdGlvbldhcm5pbmdzKGZyb21Db25maWcsIHRvQ29uZmlnKTtcbiAgICBjb25zdCBlc3RpbWF0ZWRFZmZvcnQgPSB0aGlzLl9jYWxjdWxhdGVNaWdyYXRpb25FZmZvcnQoYWxsQnJlYWtpbmdDaGFuZ2VzKTtcbiAgICBjb25zdCBhdXRvbWF0aWNVcGdyYWRlUG9zc2libGUgPSB0aGlzLl9jYW5BdXRvVXBncmFkZShhbGxCcmVha2luZ0NoYW5nZXMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZyb21WZXJzaW9uLFxuICAgICAgdG9WZXJzaW9uLFxuICAgICAgY29tcGF0aWJsZSxcbiAgICAgIGJyZWFraW5nQ2hhbmdlczogYWxsQnJlYWtpbmdDaGFuZ2VzLFxuICAgICAgd2FybmluZ3MsXG4gICAgICBlc3RpbWF0ZWRFZmZvcnQsXG4gICAgICBhdXRvbWF0aWNVcGdyYWRlUG9zc2libGUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgd2hldGhlciBhIHZlcnNpb24gaXMgc3VwcG9ydGVkIGZvciBhIHJlc291cmNlIHR5cGVcbiAgICpcbiAgICogQ2hlY2tzIGlmIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBpcyByZWdpc3RlcmVkIGFuZCBhdmFpbGFibGUgZm9yIHVzZVxuICAgKiB3aXRoIHRoZSBnaXZlbiByZXNvdXJjZSB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gcmVzb3VyY2VUeXBlIC0gVGhlIEF6dXJlIHJlc291cmNlIHR5cGVcbiAgICogQHBhcmFtIHZlcnNpb24gLSBUaGUgdmVyc2lvbiB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSB2ZXJzaW9uIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGlmIChtYW5hZ2VyLnZhbGlkYXRlVmVyc2lvblN1cHBvcnQoJ01pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHMnLCAnMjAyNC0wMS0wMScpKSB7XG4gICAqICAgLy8gVmVyc2lvbiBpcyBzdXBwb3J0ZWQsIHByb2NlZWQgd2l0aCByZXNvdXJjZSBjcmVhdGlvblxuICAgKiB9IGVsc2Uge1xuICAgKiAgIC8vIEhhbmRsZSB1bnN1cHBvcnRlZCB2ZXJzaW9uXG4gICAqIH1cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZVZlcnNpb25TdXBwb3J0KFxuICAgIHJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnaXN0cnkgPSB0aGlzLl9yZXNvdXJjZVJlZ2lzdHJ5W3Jlc291cmNlVHlwZV07XG4gICAgaWYgKCFyZWdpc3RyeSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB2ZXJzaW9uIGluIHJlZ2lzdHJ5LnZlcnNpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIHJlZ2lzdGVyZWQgcmVzb3VyY2UgdHlwZXNcbiAgICpcbiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgQXp1cmUgcmVzb3VyY2UgdHlwZXMgdGhhdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZFxuICAgKiB3aXRoIHRoZSB2ZXJzaW9uIG1hbmFnZXIuXG4gICAqXG4gICAqIEByZXR1cm5zIEFycmF5IG9mIHJlZ2lzdGVyZWQgcmVzb3VyY2UgdHlwZSBzdHJpbmdzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHJlc291cmNlVHlwZXMgPSBtYW5hZ2VyLnJlZ2lzdGVyZWRSZXNvdXJjZVR5cGVzKCk7XG4gICAqIC8vIFJldHVybnM6IFtcIk1pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHNcIiwgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHNcIiwgLi4uXVxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyZWRSZXNvdXJjZVR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fcmVzb3VyY2VSZWdpc3RyeSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB2ZXJzaW9uIGxpZmVjeWNsZSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyB2ZXJzaW9uXG4gICAqXG4gICAqIFByb3ZpZGVzIGxpZmVjeWNsZSBtZXRhZGF0YSBpbmNsdWRpbmcgY3VycmVudCBwaGFzZSwgdHJhbnNpdGlvbiBkYXRlcyxcbiAgICogYW5kIHByb2plY3RlZCBzdW5zZXQgdGltZWxpbmUuXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgLSBUaGUgQXp1cmUgcmVzb3VyY2UgdHlwZVxuICAgKiBAcGFyYW0gdmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRvIGdldCBsaWZlY3ljbGUgaW5mb3JtYXRpb24gZm9yXG4gICAqIEByZXR1cm5zIFZlcnNpb24gbGlmZWN5Y2xlIGluZm9ybWF0aW9uLCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGxpZmVjeWNsZSA9IG1hbmFnZXIudmVyc2lvbkxpZmVjeWNsZSgnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsICcyMDI0LTAxLTAxJyk7XG4gICAqIGlmIChsaWZlY3ljbGUpIHtcbiAgICogICBjb25zb2xlLmxvZyhgQ3VycmVudCBwaGFzZTogJHtsaWZlY3ljbGUucGhhc2V9YCk7XG4gICAqICAgY29uc29sZS5sb2coYFN1bnNldCBkYXRlOiAke2xpZmVjeWNsZS5lc3RpbWF0ZWRTdW5zZXREYXRlfWApO1xuICAgKiB9XG4gICAqL1xuICBwdWJsaWMgdmVyc2lvbkxpZmVjeWNsZShcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICB2ZXJzaW9uOiBzdHJpbmcsXG4gICk6IFZlcnNpb25MaWZlY3ljbGUgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMudmVyc2lvbkNvbmZpZyhyZXNvdXJjZVR5cGUsIHZlcnNpb24pO1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2ZXJzaW9uOiBjb25maWcudmVyc2lvbixcbiAgICAgIHBoYXNlOiBjb25maWcuc3VwcG9ydExldmVsLFxuICAgICAgdHJhbnNpdGlvbkRhdGU6IGNvbmZpZy5yZWxlYXNlRGF0ZSxcbiAgICAgIG5leHRQaGFzZTogdGhpcy5fZGV0ZXJtaW5lTmV4dFBoYXNlKGNvbmZpZy5zdXBwb3J0TGV2ZWwpLFxuICAgICAgZXN0aW1hdGVkU3Vuc2V0RGF0ZTogY29uZmlnLnN1bnNldERhdGUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgYmVzdCB2ZXJzaW9uIG1hdGNoaW5nIHRoZSBnaXZlbiBjb25zdHJhaW50c1xuICAgKlxuICAgKiBTZWxlY3RzIHRoZSBvcHRpbWFsIHZlcnNpb24gZm9yIGEgcmVzb3VyY2UgdHlwZSBiYXNlZCBvbiBzcGVjaWZpZWRcbiAgICogY29uc3RyYWludHMgc3VjaCBhcyBzdXBwb3J0IGxldmVsLCBmZWF0dXJlIHJlcXVpcmVtZW50cywgYW5kIGFnZSBsaW1pdHMuXG4gICAqXG4gICAqIEBwYXJhbSByZXNvdXJjZVR5cGUgLSBUaGUgQXp1cmUgcmVzb3VyY2UgdHlwZVxuICAgKiBAcGFyYW0gY29uc3RyYWludHMgLSBWZXJzaW9uIHNlbGVjdGlvbiBjb25zdHJhaW50c1xuICAgKiBAcmV0dXJucyBUaGUgYmVzdCBtYXRjaGluZyB2ZXJzaW9uLCBvciB1bmRlZmluZWQgaWYgbm8gdmVyc2lvbiBtYXRjaGVzXG4gICAqIEBpbnRlcm5hbFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCB2ZXJzaW9uID0gbWFuYWdlci5fZmluZFZlcnNpb25CeUNvbnN0cmFpbnRzKCdNaWNyb3NvZnQuUmVzb3VyY2VzL3Jlc291cmNlR3JvdXBzJywge1xuICAgKiAgIHN1cHBvcnRMZXZlbDogVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gICAqICAgZXhjbHVkZURlcHJlY2F0ZWQ6IHRydWUsXG4gICAqICAgbm90T2xkZXJUaGFuOiBuZXcgRGF0ZSgnMjAyNC0wMS0wMScpXG4gICAqIH0pO1xuICAgKi9cbiAgcHVibGljIF9maW5kVmVyc2lvbkJ5Q29uc3RyYWludHMoXG4gICAgcmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgY29uc3RyYWludHM6IFZlcnNpb25Db25zdHJhaW50cyxcbiAgKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMuX3Jlc291cmNlUmVnaXN0cnlbcmVzb3VyY2VUeXBlXTtcbiAgICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSBPYmplY3QudmFsdWVzKHJlZ2lzdHJ5LnZlcnNpb25zKS5maWx0ZXIoKGNvbmZpZykgPT4ge1xuICAgICAgLy8gQ2hlY2sgc3VwcG9ydCBsZXZlbCBjb25zdHJhaW50XG4gICAgICBpZiAoXG4gICAgICAgIGNvbnN0cmFpbnRzLnN1cHBvcnRMZXZlbCAmJlxuICAgICAgICBjb25maWcuc3VwcG9ydExldmVsICE9PSBjb25zdHJhaW50cy5zdXBwb3J0TGV2ZWxcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGV4Y2x1ZGUgZGVwcmVjYXRlZCBjb25zdHJhaW50XG4gICAgICBpZiAoXG4gICAgICAgIGNvbnN0cmFpbnRzLmV4Y2x1ZGVEZXByZWNhdGVkICE9PSBmYWxzZSAmJlxuICAgICAgICBjb25maWcuc3VwcG9ydExldmVsID09PSBWZXJzaW9uU3VwcG9ydExldmVsLkRFUFJFQ0FURURcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGFnZSBjb25zdHJhaW50XG4gICAgICBpZiAoY29uc3RyYWludHMubm90T2xkZXJUaGFuKSB7XG4gICAgICAgIGNvbnN0IHJlbGVhc2VEYXRlID0gbmV3IERhdGUoY29uZmlnLnJlbGVhc2VEYXRlKTtcbiAgICAgICAgaWYgKHJlbGVhc2VEYXRlIDwgY29uc3RyYWludHMubm90T2xkZXJUaGFuKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIHJlcXVpcmVkIGZlYXR1cmVzIChzaW1wbGlmaWVkIGNoZWNrKVxuICAgICAgaWYgKFxuICAgICAgICBjb25zdHJhaW50cy5yZXF1aXJlZEZlYXR1cmVzICYmXG4gICAgICAgIGNvbnN0cmFpbnRzLnJlcXVpcmVkRmVhdHVyZXMubGVuZ3RoID4gMFxuICAgICAgKSB7XG4gICAgICAgIC8vIFRoaXMgd291bGQgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBiYXNlZCBvbiBmZWF0dXJlIG1ldGFkYXRhXG4gICAgICAgIC8vIEZvciBub3csIHdlIGFzc3VtZSBhbGwgdmVyc2lvbnMgc3VwcG9ydCBhbGwgZmVhdHVyZXNcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG5cbiAgICBpZiAoY2FuZGlkYXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSByZWxlYXNlIGRhdGUgYW5kIHJldHVybiB0aGUgbmV3ZXN0XG4gICAgY2FuZGlkYXRlcy5zb3J0KFxuICAgICAgKGEsIGIpID0+XG4gICAgICAgIG5ldyBEYXRlKGIucmVsZWFzZURhdGUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGEucmVsZWFzZURhdGUpLmdldFRpbWUoKSxcbiAgICApO1xuICAgIHJldHVybiBjYW5kaWRhdGVzWzBdLnZlcnNpb247XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIEhFTFBFUiBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyByZXNvdXJjZSB0eXBlIGFuZCB2ZXJzaW9ucyBpbnB1dFxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVSZXNvdXJjZVR5cGVJbnB1dChcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICB2ZXJzaW9uczogVmVyc2lvbkNvbmZpZ1tdLFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXJlc291cmNlVHlwZSB8fCByZXNvdXJjZVR5cGUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVzb3VyY2UgdHlwZSBjYW5ub3QgYmUgZW1wdHlcIik7XG4gICAgfVxuXG4gICAgaWYgKCF2ZXJzaW9ucyB8fCB2ZXJzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlZlcnNpb25zIGFycmF5IGNhbm5vdCBiZSBlbXB0eVwiKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGEgc2luZ2xlIHZlcnNpb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVWZXJzaW9uQ29uZmlnKFxuICAgIGNvbmZpZzogVmVyc2lvbkNvbmZpZyxcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFjb25maWcudmVyc2lvbiB8fCBjb25maWcudmVyc2lvbi50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBWZXJzaW9uIHN0cmluZyBjYW5ub3QgYmUgZW1wdHkgZm9yIHJlc291cmNlIHR5cGUgJyR7cmVzb3VyY2VUeXBlfSdgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZy5zY2hlbWEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFNjaGVtYSBpcyByZXF1aXJlZCBmb3IgdmVyc2lvbiAnJHtjb25maWcudmVyc2lvbn0nIG9mIHJlc291cmNlIHR5cGUgJyR7cmVzb3VyY2VUeXBlfSdgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnNjaGVtYS5yZXNvdXJjZVR5cGUgIT09IHJlc291cmNlVHlwZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU2NoZW1hIHJlc291cmNlIHR5cGUgJyR7Y29uZmlnLnNjaGVtYS5yZXNvdXJjZVR5cGV9JyBkb2VzIG5vdCBtYXRjaCByZWdpc3RlcmVkIHJlc291cmNlIHR5cGUgJyR7cmVzb3VyY2VUeXBlfSdgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLnNjaGVtYS52ZXJzaW9uICE9PSBjb25maWcudmVyc2lvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU2NoZW1hIHZlcnNpb24gJyR7Y29uZmlnLnNjaGVtYS52ZXJzaW9ufScgZG9lcyBub3QgbWF0Y2ggY29uZmlnIHZlcnNpb24gJyR7Y29uZmlnLnZlcnNpb259J2AsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghY29uZmlnLnN1cHBvcnRMZXZlbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgU3VwcG9ydCBsZXZlbCBpcyByZXF1aXJlZCBmb3IgdmVyc2lvbiAnJHtjb25maWcudmVyc2lvbn0nIG9mIHJlc291cmNlIHR5cGUgJyR7cmVzb3VyY2VUeXBlfSdgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWNvbmZpZy5yZWxlYXNlRGF0ZSB8fCBjb25maWcucmVsZWFzZURhdGUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUmVsZWFzZSBkYXRlIGlzIHJlcXVpcmVkIGZvciB2ZXJzaW9uICcke2NvbmZpZy52ZXJzaW9ufScgb2YgcmVzb3VyY2UgdHlwZSAnJHtyZXNvdXJjZVR5cGV9J2AsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGRhdGUgZm9ybWF0XG4gICAgaWYgKGlzTmFOKG5ldyBEYXRlKGNvbmZpZy5yZWxlYXNlRGF0ZSkuZ2V0VGltZSgpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCByZWxlYXNlIGRhdGUgZm9ybWF0ICcke2NvbmZpZy5yZWxlYXNlRGF0ZX0nIGZvciB2ZXJzaW9uICcke2NvbmZpZy52ZXJzaW9ufScgb2YgcmVzb3VyY2UgdHlwZSAnJHtyZXNvdXJjZVR5cGV9J2AsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0cyBhbGwgYnJlYWtpbmcgY2hhbmdlcyBiZXR3ZWVuIHR3byB2ZXJzaW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBfY29sbGVjdEJyZWFraW5nQ2hhbmdlcyhcbiAgICByZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBmcm9tVmVyc2lvbjogc3RyaW5nLFxuICAgIHRvVmVyc2lvbjogc3RyaW5nLFxuICApOiBCcmVha2luZ0NoYW5nZVtdIHtcbiAgICBjb25zdCByZWdpc3RyeSA9IHRoaXMuX3Jlc291cmNlUmVnaXN0cnlbcmVzb3VyY2VUeXBlXTtcbiAgICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgYWxsVmVyc2lvbnMgPSBPYmplY3QudmFsdWVzKHJlZ2lzdHJ5LnZlcnNpb25zKS5zb3J0KFxuICAgICAgKGEsIGIpID0+XG4gICAgICAgIG5ldyBEYXRlKGEucmVsZWFzZURhdGUpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGIucmVsZWFzZURhdGUpLmdldFRpbWUoKSxcbiAgICApO1xuXG4gICAgY29uc3QgZnJvbUluZGV4ID0gYWxsVmVyc2lvbnMuZmluZEluZGV4KCh2KSA9PiB2LnZlcnNpb24gPT09IGZyb21WZXJzaW9uKTtcbiAgICBjb25zdCB0b0luZGV4ID0gYWxsVmVyc2lvbnMuZmluZEluZGV4KCh2KSA9PiB2LnZlcnNpb24gPT09IHRvVmVyc2lvbik7XG5cbiAgICBpZiAoZnJvbUluZGV4ID09PSAtMSB8fCB0b0luZGV4ID09PSAtMSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IGJyZWFraW5nQ2hhbmdlczogQnJlYWtpbmdDaGFuZ2VbXSA9IFtdO1xuXG4gICAgLy8gQ29sbGVjdCBicmVha2luZyBjaGFuZ2VzIGZyb20gYWxsIHZlcnNpb25zIGJldHdlZW4gZnJvbVZlcnNpb24gYW5kIHRvVmVyc2lvblxuICAgIGZvciAobGV0IGkgPSBmcm9tSW5kZXggKyAxOyBpIDw9IHRvSW5kZXg7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2lvbkNvbmZpZyA9IGFsbFZlcnNpb25zW2ldO1xuICAgICAgaWYgKHZlcnNpb25Db25maWcuYnJlYWtpbmdDaGFuZ2VzKSB7XG4gICAgICAgIGJyZWFraW5nQ2hhbmdlcy5wdXNoKC4uLnZlcnNpb25Db25maWcuYnJlYWtpbmdDaGFuZ2VzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYnJlYWtpbmdDaGFuZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBtaWdyYXRpb24gd2FybmluZ3NcbiAgICovXG4gIHByaXZhdGUgX2dlbmVyYXRlTWlncmF0aW9uV2FybmluZ3MoXG4gICAgZnJvbUNvbmZpZzogVmVyc2lvbkNvbmZpZyxcbiAgICB0b0NvbmZpZzogVmVyc2lvbkNvbmZpZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgaWYgKGZyb21Db25maWcuc3VwcG9ydExldmVsID09PSBWZXJzaW9uU3VwcG9ydExldmVsLkRFUFJFQ0FURUQpIHtcbiAgICAgIHdhcm5pbmdzLnB1c2goXG4gICAgICAgIGBTb3VyY2UgdmVyc2lvbiAnJHtmcm9tQ29uZmlnLnZlcnNpb259JyBpcyBkZXByZWNhdGVkLiBDb25zaWRlciBtaWdyYXRpbmcgdG8gYXZvaWQgZnV0dXJlIGNvbXBhdGliaWxpdHkgaXNzdWVzLmAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0b0NvbmZpZy5zdXBwb3J0TGV2ZWwgPT09IFZlcnNpb25TdXBwb3J0TGV2ZWwuREVQUkVDQVRFRCkge1xuICAgICAgd2FybmluZ3MucHVzaChcbiAgICAgICAgYFRhcmdldCB2ZXJzaW9uICcke3RvQ29uZmlnLnZlcnNpb259JyBpcyBkZXByZWNhdGVkLiBDb25zaWRlciB1c2luZyBhIG5ld2VyIHZlcnNpb24uYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGZyb21Db25maWcuc3Vuc2V0RGF0ZSkge1xuICAgICAgY29uc3Qgc3Vuc2V0RGF0ZSA9IG5ldyBEYXRlKGZyb21Db25maWcuc3Vuc2V0RGF0ZSk7XG4gICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgICAgaWYgKHN1bnNldERhdGUgPCBub3cpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChcbiAgICAgICAgICBgU291cmNlIHZlcnNpb24gJyR7ZnJvbUNvbmZpZy52ZXJzaW9ufScgaGFzIHJlYWNoZWQgc3Vuc2V0IGRhdGUgKCR7ZnJvbUNvbmZpZy5zdW5zZXREYXRlfSkuIEltbWVkaWF0ZSBtaWdyYXRpb24gaXMgcmVxdWlyZWQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd2FybmluZ3M7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyBtaWdyYXRpb24gZWZmb3J0IGJhc2VkIG9uIGJyZWFraW5nIGNoYW5nZXMgYW5kIHZlcnNpb24gZGlmZmVyZW5jZXNcbiAgICovXG4gIHByaXZhdGUgX2NhbGN1bGF0ZU1pZ3JhdGlvbkVmZm9ydChicmVha2luZ0NoYW5nZXM6IEJyZWFraW5nQ2hhbmdlW10pOiBzdHJpbmcge1xuICAgIGlmIChicmVha2luZ0NoYW5nZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gTWlncmF0aW9uRWZmb3J0LkxPVztcbiAgICB9XG5cbiAgICAvLyBDb3VudCBkaWZmZXJlbnQgdHlwZXMgb2YgYnJlYWtpbmcgY2hhbmdlc1xuICAgIGNvbnN0IHByb3BlcnR5UmVtb3ZlZCA9IGJyZWFraW5nQ2hhbmdlcy5maWx0ZXIoXG4gICAgICAoYmMpID0+IGJjLmNoYW5nZVR5cGUgPT09IEJyZWFraW5nQ2hhbmdlVHlwZS5QUk9QRVJUWV9SRU1PVkVELFxuICAgICkubGVuZ3RoO1xuICAgIGNvbnN0IHNjaGVtYVJlc3RydWN0dXJlZCA9IGJyZWFraW5nQ2hhbmdlcy5maWx0ZXIoXG4gICAgICAoYmMpID0+IGJjLmNoYW5nZVR5cGUgPT09IEJyZWFraW5nQ2hhbmdlVHlwZS5TQ0hFTUFfUkVTVFJVQ1RVUkVELFxuICAgICkubGVuZ3RoO1xuICAgIGNvbnN0IHByb3BlcnR5VHlwZUNoYW5nZWQgPSBicmVha2luZ0NoYW5nZXMuZmlsdGVyKFxuICAgICAgKGJjKSA9PiBiYy5jaGFuZ2VUeXBlID09PSBCcmVha2luZ0NoYW5nZVR5cGUuUFJPUEVSVFlfVFlQRV9DSEFOR0VELFxuICAgICkubGVuZ3RoO1xuXG4gICAgLy8gQ2FsY3VsYXRlIGVmZm9ydCBiYXNlZCBvbiBicmVha2luZyBjaGFuZ2Ugc2V2ZXJpdHlcbiAgICBpZiAoXG4gICAgICBzY2hlbWFSZXN0cnVjdHVyZWQgPiAwIHx8XG4gICAgICBwcm9wZXJ0eVJlbW92ZWQgPiAzIHx8XG4gICAgICBwcm9wZXJ0eVR5cGVDaGFuZ2VkID4gM1xuICAgICkge1xuICAgICAgcmV0dXJuIE1pZ3JhdGlvbkVmZm9ydC5CUkVBS0lORztcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wZXJ0eVJlbW92ZWQgPiAxIHx8XG4gICAgICBwcm9wZXJ0eVR5cGVDaGFuZ2VkID4gMSB8fFxuICAgICAgYnJlYWtpbmdDaGFuZ2VzLmxlbmd0aCA+IDVcbiAgICApIHtcbiAgICAgIHJldHVybiBNaWdyYXRpb25FZmZvcnQuSElHSDtcbiAgICB9XG5cbiAgICBpZiAoYnJlYWtpbmdDaGFuZ2VzLmxlbmd0aCA+IDIpIHtcbiAgICAgIHJldHVybiBNaWdyYXRpb25FZmZvcnQuTUVESVVNO1xuICAgIH1cblxuICAgIHJldHVybiBNaWdyYXRpb25FZmZvcnQuTE9XO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYXV0b21hdGljIHVwZ3JhZGUgaXMgcG9zc2libGVcbiAgICovXG4gIHByaXZhdGUgX2NhbkF1dG9VcGdyYWRlKGJyZWFraW5nQ2hhbmdlczogQnJlYWtpbmdDaGFuZ2VbXSk6IGJvb2xlYW4ge1xuICAgIC8vIEF1dG9tYXRpYyB1cGdyYWRlIGlzIG5vdCBwb3NzaWJsZSBpZiB0aGVyZSBhcmUgY2VydGFpbiB0eXBlcyBvZiBicmVha2luZyBjaGFuZ2VzXG4gICAgY29uc3QgYmxvY2tpbmdDaGFuZ2VUeXBlcyA9IFtcbiAgICAgIEJyZWFraW5nQ2hhbmdlVHlwZS5QUk9QRVJUWV9SRU1PVkVELFxuICAgICAgQnJlYWtpbmdDaGFuZ2VUeXBlLlNDSEVNQV9SRVNUUlVDVFVSRUQsXG4gICAgICBCcmVha2luZ0NoYW5nZVR5cGUuUFJPUEVSVFlfVFlQRV9DSEFOR0VELFxuICAgIF07XG5cbiAgICByZXR1cm4gIWJyZWFraW5nQ2hhbmdlcy5zb21lKChiYykgPT5cbiAgICAgIGJsb2NraW5nQ2hhbmdlVHlwZXMuaW5jbHVkZXMoYmMuY2hhbmdlVHlwZSBhcyBhbnkpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgbmV4dCBwaGFzZSBpbiB0aGUgdmVyc2lvbiBsaWZlY3ljbGVcbiAgICovXG4gIHByaXZhdGUgX2RldGVybWluZU5leHRQaGFzZShjdXJyZW50UGhhc2U6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChjdXJyZW50UGhhc2UpIHtcbiAgICAgIGNhc2UgVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkU6XG4gICAgICAgIHJldHVybiBWZXJzaW9uU3VwcG9ydExldmVsLk1BSU5URU5BTkNFO1xuICAgICAgY2FzZSBWZXJzaW9uU3VwcG9ydExldmVsLk1BSU5URU5BTkNFOlxuICAgICAgICByZXR1cm4gVmVyc2lvblN1cHBvcnRMZXZlbC5ERVBSRUNBVEVEO1xuICAgICAgY2FzZSBWZXJzaW9uU3VwcG9ydExldmVsLkRFUFJFQ0FURUQ6XG4gICAgICAgIHJldHVybiBWZXJzaW9uU3VwcG9ydExldmVsLlNVTlNFVDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -27,7 +27,7 @@ class VersionSupportLevel {
|
|
|
27
27
|
}
|
|
28
28
|
exports.VersionSupportLevel = VersionSupportLevel;
|
|
29
29
|
_a = JSII_RTTI_SYMBOL_1;
|
|
30
|
-
VersionSupportLevel[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VersionSupportLevel", version: "1.
|
|
30
|
+
VersionSupportLevel[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VersionSupportLevel", version: "1.3.1" };
|
|
31
31
|
/**
|
|
32
32
|
* Active support - full feature development and bug fixes
|
|
33
33
|
* Recommended for new development
|
|
@@ -60,7 +60,7 @@ class MigrationEffort {
|
|
|
60
60
|
}
|
|
61
61
|
exports.MigrationEffort = MigrationEffort;
|
|
62
62
|
_b = JSII_RTTI_SYMBOL_1;
|
|
63
|
-
MigrationEffort[_b] = { fqn: "@microsoft/terraform-cdk-constructs.MigrationEffort", version: "1.
|
|
63
|
+
MigrationEffort[_b] = { fqn: "@microsoft/terraform-cdk-constructs.MigrationEffort", version: "1.3.1" };
|
|
64
64
|
/**
|
|
65
65
|
* Low effort - mostly automatic with minimal manual changes
|
|
66
66
|
* Estimated time: < 1 hour
|
|
@@ -93,7 +93,7 @@ class PropertyType {
|
|
|
93
93
|
}
|
|
94
94
|
exports.PropertyType = PropertyType;
|
|
95
95
|
_c = JSII_RTTI_SYMBOL_1;
|
|
96
|
-
PropertyType[_c] = { fqn: "@microsoft/terraform-cdk-constructs.PropertyType", version: "1.
|
|
96
|
+
PropertyType[_c] = { fqn: "@microsoft/terraform-cdk-constructs.PropertyType", version: "1.3.1" };
|
|
97
97
|
/** String data type */
|
|
98
98
|
PropertyType.STRING = "string";
|
|
99
99
|
/** Numeric data type (integer or float) */
|
|
@@ -118,7 +118,7 @@ class ValidationRuleType {
|
|
|
118
118
|
}
|
|
119
119
|
exports.ValidationRuleType = ValidationRuleType;
|
|
120
120
|
_d = JSII_RTTI_SYMBOL_1;
|
|
121
|
-
ValidationRuleType[_d] = { fqn: "@microsoft/terraform-cdk-constructs.ValidationRuleType", version: "1.
|
|
121
|
+
ValidationRuleType[_d] = { fqn: "@microsoft/terraform-cdk-constructs.ValidationRuleType", version: "1.3.1" };
|
|
122
122
|
/** Property is required and cannot be undefined */
|
|
123
123
|
ValidationRuleType.REQUIRED = "required";
|
|
124
124
|
/** Validate property type matches expected type */
|
|
@@ -141,7 +141,7 @@ class BreakingChangeType {
|
|
|
141
141
|
}
|
|
142
142
|
exports.BreakingChangeType = BreakingChangeType;
|
|
143
143
|
_e = JSII_RTTI_SYMBOL_1;
|
|
144
|
-
BreakingChangeType[_e] = { fqn: "@microsoft/terraform-cdk-constructs.BreakingChangeType", version: "1.
|
|
144
|
+
BreakingChangeType[_e] = { fqn: "@microsoft/terraform-cdk-constructs.BreakingChangeType", version: "1.3.1" };
|
|
145
145
|
/** Property has been removed from the API */
|
|
146
146
|
BreakingChangeType.PROPERTY_REMOVED = "property-removed";
|
|
147
147
|
/** Property has been renamed */
|
|
@@ -164,7 +164,7 @@ class PropertyTransformationType {
|
|
|
164
164
|
}
|
|
165
165
|
exports.PropertyTransformationType = PropertyTransformationType;
|
|
166
166
|
_f = JSII_RTTI_SYMBOL_1;
|
|
167
|
-
PropertyTransformationType[_f] = { fqn: "@microsoft/terraform-cdk-constructs.PropertyTransformationType", version: "1.
|
|
167
|
+
PropertyTransformationType[_f] = { fqn: "@microsoft/terraform-cdk-constructs.PropertyTransformationType", version: "1.3.1" };
|
|
168
168
|
/** Direct copy with no transformation */
|
|
169
169
|
PropertyTransformationType.DIRECT_COPY = "direct-copy";
|
|
170
170
|
/** Map values using a lookup table */
|
|
@@ -188,7 +188,7 @@ class VersionPhase {
|
|
|
188
188
|
}
|
|
189
189
|
exports.VersionPhase = VersionPhase;
|
|
190
190
|
_g = JSII_RTTI_SYMBOL_1;
|
|
191
|
-
VersionPhase[_g] = { fqn: "@microsoft/terraform-cdk-constructs.VersionPhase", version: "1.
|
|
191
|
+
VersionPhase[_g] = { fqn: "@microsoft/terraform-cdk-constructs.VersionPhase", version: "1.3.1" };
|
|
192
192
|
/** Preview/beta phase - not recommended for production */
|
|
193
193
|
VersionPhase.PREVIEW = "preview";
|
|
194
194
|
/** Active phase - fully supported and recommended */
|
package/lib/index.d.ts
CHANGED
|
@@ -31,29 +31,48 @@ export * as azure_actiongroup from "./azure-actiongroup";
|
|
|
31
31
|
export * as azure_activitylogalert from "./azure-activitylogalert";
|
|
32
32
|
export * as azure_aks from "./azure-aks";
|
|
33
33
|
export * as azure_diagnosticsettings from "./azure-diagnosticsettings";
|
|
34
|
+
export * as azure_dnsforwardingruleset from "./azure-dnsforwardingruleset";
|
|
35
|
+
export * as azure_dnsresolver from "./azure-dnsresolver";
|
|
36
|
+
export * as azure_dnszone from "./azure-dnszone";
|
|
34
37
|
export * as azure_metricalert from "./azure-metricalert";
|
|
35
38
|
export * as azure_networkinterface from "./azure-networkinterface";
|
|
36
39
|
export * as azure_networksecuritygroup from "./azure-networksecuritygroup";
|
|
40
|
+
export * as azure_policyassignment from "./azure-policyassignment";
|
|
41
|
+
export * as azure_policydefinition from "./azure-policydefinition";
|
|
42
|
+
export * as azure_privatednszone from "./azure-privatednszone";
|
|
37
43
|
export * as azure_publicipaddress from "./azure-publicipaddress";
|
|
38
44
|
export * as azure_resourcegroup from "./azure-resourcegroup";
|
|
45
|
+
export * as azure_roleassignment from "./azure-roleassignment";
|
|
46
|
+
export * as azure_roledefinition from "./azure-roledefinition";
|
|
39
47
|
export * as azure_storageaccount from "./azure-storageaccount";
|
|
40
48
|
export * as azure_subnet from "./azure-subnet";
|
|
41
49
|
export * as azure_virtualmachine from "./azure-virtualmachine";
|
|
42
50
|
export * as azure_virtualnetwork from "./azure-virtualnetwork";
|
|
51
|
+
export * as azure_virtualnetworkmanager from "./azure-virtualnetworkmanager";
|
|
43
52
|
export * as azure_vmss from "./azure-vmss";
|
|
44
53
|
export * from "./azure-actiongroup";
|
|
45
54
|
export * from "./azure-activitylogalert";
|
|
46
55
|
export * from "./azure-aks";
|
|
47
56
|
export * from "./azure-diagnosticsettings";
|
|
57
|
+
export * from "./azure-dnsforwardingruleset";
|
|
58
|
+
export * from "./azure-dnsresolver";
|
|
59
|
+
export * from "./azure-dnszone";
|
|
48
60
|
export * from "./azure-metricalert";
|
|
49
61
|
export * from "./azure-networkinterface";
|
|
50
62
|
export * from "./azure-networksecuritygroup";
|
|
63
|
+
export * from "./azure-policyassignment";
|
|
64
|
+
export * from "./azure-policydefinition";
|
|
65
|
+
export * from "./azure-privatednszone";
|
|
66
|
+
export * from "./azure-privatednszonelink";
|
|
51
67
|
export * from "./azure-publicipaddress";
|
|
52
68
|
export * from "./azure-resourcegroup";
|
|
69
|
+
export * from "./azure-roleassignment";
|
|
70
|
+
export * from "./azure-roledefinition";
|
|
53
71
|
export * from "./azure-storageaccount";
|
|
54
72
|
export * from "./azure-subnet";
|
|
55
73
|
export * from "./azure-virtualmachine";
|
|
56
74
|
export * from "./azure-virtualnetwork";
|
|
75
|
+
export * from "./azure-virtualnetworkmanager";
|
|
57
76
|
export * from "./azure-vmss";
|
|
58
77
|
export * as testing from "./testing";
|
|
59
78
|
export * from "./testing";
|
package/lib/index.js
CHANGED
|
@@ -41,7 +41,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
41
41
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
42
42
|
};
|
|
43
43
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.testing = exports.azure_vmss = exports.azure_virtualnetwork = exports.azure_virtualmachine = exports.azure_subnet = exports.azure_storageaccount = exports.azure_resourcegroup = exports.azure_publicipaddress = exports.azure_networksecuritygroup = exports.azure_networkinterface = exports.azure_metricalert = exports.azure_diagnosticsettings = exports.azure_aks = exports.azure_activitylogalert = exports.azure_actiongroup = exports.core_azure = void 0;
|
|
44
|
+
exports.testing = exports.azure_vmss = exports.azure_virtualnetworkmanager = exports.azure_virtualnetwork = exports.azure_virtualmachine = exports.azure_subnet = exports.azure_storageaccount = exports.azure_roledefinition = exports.azure_roleassignment = exports.azure_resourcegroup = exports.azure_publicipaddress = exports.azure_privatednszone = exports.azure_policydefinition = exports.azure_policyassignment = exports.azure_networksecuritygroup = exports.azure_networkinterface = exports.azure_metricalert = exports.azure_dnszone = exports.azure_dnsresolver = exports.azure_dnsforwardingruleset = exports.azure_diagnosticsettings = exports.azure_aks = exports.azure_activitylogalert = exports.azure_actiongroup = exports.core_azure = void 0;
|
|
45
45
|
// Core AZAPI functionality
|
|
46
46
|
exports.core_azure = require("./core-azure");
|
|
47
47
|
// Export core types at top level for JSII compatibility
|
|
@@ -51,33 +51,52 @@ exports.azure_actiongroup = require("./azure-actiongroup");
|
|
|
51
51
|
exports.azure_activitylogalert = require("./azure-activitylogalert");
|
|
52
52
|
exports.azure_aks = require("./azure-aks");
|
|
53
53
|
exports.azure_diagnosticsettings = require("./azure-diagnosticsettings");
|
|
54
|
+
exports.azure_dnsforwardingruleset = require("./azure-dnsforwardingruleset");
|
|
55
|
+
exports.azure_dnsresolver = require("./azure-dnsresolver");
|
|
56
|
+
exports.azure_dnszone = require("./azure-dnszone");
|
|
54
57
|
exports.azure_metricalert = require("./azure-metricalert");
|
|
55
58
|
exports.azure_networkinterface = require("./azure-networkinterface");
|
|
56
59
|
exports.azure_networksecuritygroup = require("./azure-networksecuritygroup");
|
|
60
|
+
exports.azure_policyassignment = require("./azure-policyassignment");
|
|
61
|
+
exports.azure_policydefinition = require("./azure-policydefinition");
|
|
62
|
+
exports.azure_privatednszone = require("./azure-privatednszone");
|
|
57
63
|
exports.azure_publicipaddress = require("./azure-publicipaddress");
|
|
58
64
|
exports.azure_resourcegroup = require("./azure-resourcegroup");
|
|
65
|
+
exports.azure_roleassignment = require("./azure-roleassignment");
|
|
66
|
+
exports.azure_roledefinition = require("./azure-roledefinition");
|
|
59
67
|
exports.azure_storageaccount = require("./azure-storageaccount");
|
|
60
68
|
exports.azure_subnet = require("./azure-subnet");
|
|
61
69
|
exports.azure_virtualmachine = require("./azure-virtualmachine");
|
|
62
70
|
exports.azure_virtualnetwork = require("./azure-virtualnetwork");
|
|
71
|
+
exports.azure_virtualnetworkmanager = require("./azure-virtualnetworkmanager");
|
|
63
72
|
exports.azure_vmss = require("./azure-vmss");
|
|
64
73
|
// Export types at top level for JSII compatibility
|
|
65
74
|
__exportStar(require("./azure-actiongroup"), exports);
|
|
66
75
|
__exportStar(require("./azure-activitylogalert"), exports);
|
|
67
76
|
__exportStar(require("./azure-aks"), exports);
|
|
68
77
|
__exportStar(require("./azure-diagnosticsettings"), exports);
|
|
78
|
+
__exportStar(require("./azure-dnsforwardingruleset"), exports);
|
|
79
|
+
__exportStar(require("./azure-dnsresolver"), exports);
|
|
80
|
+
__exportStar(require("./azure-dnszone"), exports);
|
|
69
81
|
__exportStar(require("./azure-metricalert"), exports);
|
|
70
82
|
__exportStar(require("./azure-networkinterface"), exports);
|
|
71
83
|
__exportStar(require("./azure-networksecuritygroup"), exports);
|
|
84
|
+
__exportStar(require("./azure-policyassignment"), exports);
|
|
85
|
+
__exportStar(require("./azure-policydefinition"), exports);
|
|
86
|
+
__exportStar(require("./azure-privatednszone"), exports);
|
|
87
|
+
__exportStar(require("./azure-privatednszonelink"), exports);
|
|
72
88
|
__exportStar(require("./azure-publicipaddress"), exports);
|
|
73
89
|
__exportStar(require("./azure-resourcegroup"), exports);
|
|
90
|
+
__exportStar(require("./azure-roleassignment"), exports);
|
|
91
|
+
__exportStar(require("./azure-roledefinition"), exports);
|
|
74
92
|
__exportStar(require("./azure-storageaccount"), exports);
|
|
75
93
|
__exportStar(require("./azure-subnet"), exports);
|
|
76
94
|
__exportStar(require("./azure-virtualmachine"), exports);
|
|
77
95
|
__exportStar(require("./azure-virtualnetwork"), exports);
|
|
96
|
+
__exportStar(require("./azure-virtualnetworkmanager"), exports);
|
|
78
97
|
__exportStar(require("./azure-vmss"), exports);
|
|
79
98
|
// Utility modules
|
|
80
99
|
exports.testing = require("./testing");
|
|
81
100
|
// Export testing types at top level for JSII compatibility
|
|
82
101
|
__exportStar(require("./testing"), exports);
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCwyQkFBMkI7QUFDM0IsNkNBQTJDO0FBRTNDLHdEQUF3RDtBQUN4RCwrQ0FBNkI7QUFFN0IsNkJBQTZCO0FBQzdCLDJEQUF5RDtBQUN6RCxxRUFBbUU7QUFDbkUsMkNBQXlDO0FBQ3pDLHlFQUF1RTtBQUN2RSw2RUFBMkU7QUFDM0UsMkRBQXlEO0FBQ3pELG1EQUFpRDtBQUNqRCwyREFBeUQ7QUFDekQscUVBQW1FO0FBQ25FLDZFQUEyRTtBQUMzRSxxRUFBbUU7QUFDbkUscUVBQW1FO0FBQ25FLGlFQUErRDtBQUMvRCxtRUFBaUU7QUFDakUsK0RBQTZEO0FBQzdELGlFQUErRDtBQUMvRCxpRUFBK0Q7QUFDL0QsaUVBQStEO0FBQy9ELGlEQUErQztBQUMvQyxpRUFBK0Q7QUFDL0QsaUVBQStEO0FBQy9ELCtFQUE2RTtBQUM3RSw2Q0FBMkM7QUFFM0MsbURBQW1EO0FBQ25ELHNEQUFvQztBQUNwQywyREFBeUM7QUFDekMsOENBQTRCO0FBQzVCLDZEQUEyQztBQUMzQywrREFBNkM7QUFDN0Msc0RBQW9DO0FBQ3BDLGtEQUFnQztBQUNoQyxzREFBb0M7QUFDcEMsMkRBQXlDO0FBQ3pDLCtEQUE2QztBQUM3QywyREFBeUM7QUFDekMsMkRBQXlDO0FBQ3pDLHlEQUF1QztBQUN2Qyw2REFBMkM7QUFDM0MsMERBQXdDO0FBQ3hDLHdEQUFzQztBQUN0Qyx5REFBdUM7QUFDdkMseURBQXVDO0FBQ3ZDLHlEQUF1QztBQUN2QyxpREFBK0I7QUFDL0IseURBQXVDO0FBQ3ZDLHlEQUF1QztBQUN2QyxnRUFBOEM7QUFDOUMsK0NBQTZCO0FBRTdCLGtCQUFrQjtBQUNsQix1Q0FBcUM7QUFFckMsMkRBQTJEO0FBQzNELDRDQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1pY3Jvc29mdC90ZXJyYWZvcm0tY2RrLWNvbnN0cnVjdHNcbiAqXG4gKiBBenVyZSBDREsgY29uc3RydWN0cyB1c2luZyBBWkFQSSBwcm92aWRlciBmb3IgZGlyZWN0IEF6dXJlIFJFU1QgQVBJIGFjY2Vzcy5cbiAqXG4gKiBWZXJzaW9uIDEuMC4wIC0gTWFqb3IgYnJlYWtpbmcgY2hhbmdlIG1pZ3JhdGlvbiBmcm9tIEF6dXJlUk0gdG8gQVpBUElcbiAqXG4gKiBBdmFpbGFibGUgbW9kdWxlczpcbiAqIC0gYXp1cmVfYWN0aW9uZ3JvdXA6IEF6dXJlIEFjdGlvbiBHcm91cCBjb25zdHJ1Y3RzIGZvciBBenVyZSBNb25pdG9yIGFsZXJ0c1xuICogLSBhenVyZV9hY3Rpdml0eWxvZ2FsZXJ0OiBBenVyZSBBY3Rpdml0eSBMb2cgQWxlcnQgY29uc3RydWN0cyBmb3Igb3BlcmF0aW9uIG1vbml0b3JpbmdcbiAqIC0gYXp1cmVfYWtzOiBBenVyZSBLdWJlcm5ldGVzIFNlcnZpY2UgY29uc3RydWN0cyB3aXRoIHZlcnNpb24tYXdhcmUgQVpBUEkgaW1wbGVtZW50YXRpb25cbiAqIC0gYXp1cmVfZGlhZ25vc3RpY3NldHRpbmdzOiBBenVyZSBEaWFnbm9zdGljIFNldHRpbmdzIGNvbnN0cnVjdHMgZm9yIG1vbml0b3JpbmcgYW5kIG9ic2VydmFiaWxpdHlcbiAqIC0gYXp1cmVfbWV0cmljYWxlcnQ6IEF6dXJlIE1ldHJpYyBBbGVydCBjb25zdHJ1Y3RzIGZvciBtZXRyaWMtYmFzZWQgYWxlcnRpbmdcbiAqIC0gYXp1cmVfbmV0d29ya2ludGVyZmFjZTogTmV0d29yayBJbnRlcmZhY2UgY29uc3RydWN0cyB3aXRoIHZlcnNpb24tYXdhcmUgQVpBUEkgaW1wbGVtZW50YXRpb25cbiAqIC0gYXp1cmVfbmV0d29ya3NlY3VyaXR5Z3JvdXA6IE5ldHdvcmsgU2VjdXJpdHkgR3JvdXAgY29uc3RydWN0cyB3aXRoIHZlcnNpb24tYXdhcmUgQVpBUEkgaW1wbGVtZW50YXRpb25cbiAqIC0gYXp1cmVfcHVibGljaXBhZGRyZXNzOiBQdWJsaWMgSVAgQWRkcmVzcyBjb25zdHJ1Y3RzIHdpdGggdmVyc2lvbi1hd2FyZSBBWkFQSSBpbXBsZW1lbnRhdGlvblxuICogLSBhenVyZV9yZXNvdXJjZWdyb3VwOiBSZXNvdXJjZSBHcm91cCBjb25zdHJ1Y3RzIHdpdGggdmVyc2lvbi1hd2FyZSBBWkFQSSBpbXBsZW1lbnRhdGlvblxuICogLSBhenVyZV9zdG9yYWdlYWNjb3VudDogU3RvcmFnZSBBY2NvdW50IGNvbnN0cnVjdHMgd2l0aCB2ZXJzaW9uLWF3YXJlIEFaQVBJIGltcGxlbWVudGF0aW9uXG4gKiAtIGF6dXJlX3N1Ym5ldDogU3VibmV0IGNvbnN0cnVjdHMgd2l0aCB2ZXJzaW9uLWF3YXJlIEFaQVBJIGltcGxlbWVudGF0aW9uXG4gKiAtIGF6dXJlX3ZpcnR1YWxtYWNoaW5lOiBWaXJ0dWFsIE1hY2hpbmUgY29uc3RydWN0cyB3aXRoIHZlcnNpb24tYXdhcmUgQVpBUEkgaW1wbGVtZW50YXRpb25cbiAqIC0gYXp1cmVfdmlydHVhbG5ldHdvcms6IFZpcnR1YWwgTmV0d29yayBjb25zdHJ1Y3RzIHdpdGggdmVyc2lvbi1hd2FyZSBBWkFQSSBpbXBsZW1lbnRhdGlvblxuICogLSBhenVyZV92bXNzOiBWaXJ0dWFsIE1hY2hpbmUgU2NhbGUgU2V0cyBjb25zdHJ1Y3RzIHdpdGggdmVyc2lvbi1hd2FyZSBBWkFQSSBpbXBsZW1lbnRhdGlvblxuICogLSBjb3JlX2F6dXJlOiBDb3JlIEFaQVBJIGZ1bmN0aW9uYWxpdHkgYW5kIGJhc2UgY2xhc3Nlc1xuICpcbiAqIEZvciBtaWdyYXRpb24gZ3VpZGUgYW5kIGRvY3VtZW50YXRpb24sIHNlZTpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9henVyZS90ZXJyYWZvcm0tY2RrLWNvbnN0cnVjdHNcbiAqL1xuXG4vLyBDb3JlIEFaQVBJIGZ1bmN0aW9uYWxpdHlcbmV4cG9ydCAqIGFzIGNvcmVfYXp1cmUgZnJvbSBcIi4vY29yZS1henVyZVwiO1xuXG4vLyBFeHBvcnQgY29yZSB0eXBlcyBhdCB0b3AgbGV2ZWwgZm9yIEpTSUkgY29tcGF0aWJpbGl0eVxuZXhwb3J0ICogZnJvbSBcIi4vY29yZS1henVyZVwiO1xuXG4vLyBBWkFQSS1iYXNlZCBBenVyZSBzZXJ2aWNlc1xuZXhwb3J0ICogYXMgYXp1cmVfYWN0aW9uZ3JvdXAgZnJvbSBcIi4vYXp1cmUtYWN0aW9uZ3JvdXBcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX2FjdGl2aXR5bG9nYWxlcnQgZnJvbSBcIi4vYXp1cmUtYWN0aXZpdHlsb2dhbGVydFwiO1xuZXhwb3J0ICogYXMgYXp1cmVfYWtzIGZyb20gXCIuL2F6dXJlLWFrc1wiO1xuZXhwb3J0ICogYXMgYXp1cmVfZGlhZ25vc3RpY3NldHRpbmdzIGZyb20gXCIuL2F6dXJlLWRpYWdub3N0aWNzZXR0aW5nc1wiO1xuZXhwb3J0ICogYXMgYXp1cmVfZG5zZm9yd2FyZGluZ3J1bGVzZXQgZnJvbSBcIi4vYXp1cmUtZG5zZm9yd2FyZGluZ3J1bGVzZXRcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX2Ruc3Jlc29sdmVyIGZyb20gXCIuL2F6dXJlLWRuc3Jlc29sdmVyXCI7XG5leHBvcnQgKiBhcyBhenVyZV9kbnN6b25lIGZyb20gXCIuL2F6dXJlLWRuc3pvbmVcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX21ldHJpY2FsZXJ0IGZyb20gXCIuL2F6dXJlLW1ldHJpY2FsZXJ0XCI7XG5leHBvcnQgKiBhcyBhenVyZV9uZXR3b3JraW50ZXJmYWNlIGZyb20gXCIuL2F6dXJlLW5ldHdvcmtpbnRlcmZhY2VcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX25ldHdvcmtzZWN1cml0eWdyb3VwIGZyb20gXCIuL2F6dXJlLW5ldHdvcmtzZWN1cml0eWdyb3VwXCI7XG5leHBvcnQgKiBhcyBhenVyZV9wb2xpY3lhc3NpZ25tZW50IGZyb20gXCIuL2F6dXJlLXBvbGljeWFzc2lnbm1lbnRcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX3BvbGljeWRlZmluaXRpb24gZnJvbSBcIi4vYXp1cmUtcG9saWN5ZGVmaW5pdGlvblwiO1xuZXhwb3J0ICogYXMgYXp1cmVfcHJpdmF0ZWRuc3pvbmUgZnJvbSBcIi4vYXp1cmUtcHJpdmF0ZWRuc3pvbmVcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX3B1YmxpY2lwYWRkcmVzcyBmcm9tIFwiLi9henVyZS1wdWJsaWNpcGFkZHJlc3NcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX3Jlc291cmNlZ3JvdXAgZnJvbSBcIi4vYXp1cmUtcmVzb3VyY2Vncm91cFwiO1xuZXhwb3J0ICogYXMgYXp1cmVfcm9sZWFzc2lnbm1lbnQgZnJvbSBcIi4vYXp1cmUtcm9sZWFzc2lnbm1lbnRcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX3JvbGVkZWZpbml0aW9uIGZyb20gXCIuL2F6dXJlLXJvbGVkZWZpbml0aW9uXCI7XG5leHBvcnQgKiBhcyBhenVyZV9zdG9yYWdlYWNjb3VudCBmcm9tIFwiLi9henVyZS1zdG9yYWdlYWNjb3VudFwiO1xuZXhwb3J0ICogYXMgYXp1cmVfc3VibmV0IGZyb20gXCIuL2F6dXJlLXN1Ym5ldFwiO1xuZXhwb3J0ICogYXMgYXp1cmVfdmlydHVhbG1hY2hpbmUgZnJvbSBcIi4vYXp1cmUtdmlydHVhbG1hY2hpbmVcIjtcbmV4cG9ydCAqIGFzIGF6dXJlX3ZpcnR1YWxuZXR3b3JrIGZyb20gXCIuL2F6dXJlLXZpcnR1YWxuZXR3b3JrXCI7XG5leHBvcnQgKiBhcyBhenVyZV92aXJ0dWFsbmV0d29ya21hbmFnZXIgZnJvbSBcIi4vYXp1cmUtdmlydHVhbG5ldHdvcmttYW5hZ2VyXCI7XG5leHBvcnQgKiBhcyBhenVyZV92bXNzIGZyb20gXCIuL2F6dXJlLXZtc3NcIjtcblxuLy8gRXhwb3J0IHR5cGVzIGF0IHRvcCBsZXZlbCBmb3IgSlNJSSBjb21wYXRpYmlsaXR5XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1hY3Rpb25ncm91cFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXp1cmUtYWN0aXZpdHlsb2dhbGVydFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXp1cmUtYWtzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1kaWFnbm9zdGljc2V0dGluZ3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLWRuc2ZvcndhcmRpbmdydWxlc2V0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1kbnNyZXNvbHZlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXp1cmUtZG5zem9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXp1cmUtbWV0cmljYWxlcnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLW5ldHdvcmtpbnRlcmZhY2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLW5ldHdvcmtzZWN1cml0eWdyb3VwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1wb2xpY3lhc3NpZ25tZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1wb2xpY3lkZWZpbml0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1wcml2YXRlZG5zem9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXp1cmUtcHJpdmF0ZWRuc3pvbmVsaW5rXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1wdWJsaWNpcGFkZHJlc3NcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLXJlc291cmNlZ3JvdXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLXJvbGVhc3NpZ25tZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS1yb2xlZGVmaW5pdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXp1cmUtc3RvcmFnZWFjY291bnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLXN1Ym5ldFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXp1cmUtdmlydHVhbG1hY2hpbmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLXZpcnR1YWxuZXR3b3JrXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9henVyZS12aXJ0dWFsbmV0d29ya21hbmFnZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F6dXJlLXZtc3NcIjtcblxuLy8gVXRpbGl0eSBtb2R1bGVzXG5leHBvcnQgKiBhcyB0ZXN0aW5nIGZyb20gXCIuL3Rlc3RpbmdcIjtcblxuLy8gRXhwb3J0IHRlc3RpbmcgdHlwZXMgYXQgdG9wIGxldmVsIGZvciBKU0lJIGNvbXBhdGliaWxpdHlcbmV4cG9ydCAqIGZyb20gXCIuL3Rlc3RpbmdcIjtcbiJdfQ==
|