@microsoft/terraform-cdk-constructs 1.8.0 → 1.9.0
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 +21007 -16056
- package/API.md +37023 -29701
- package/lib/azure-actiongroup/lib/action-group.js +1 -1
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
- package/lib/azure-aks/lib/aks-cluster.js +1 -1
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
- package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
- package/lib/azure-dnszone/lib/dns-zone.js +1 -1
- package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
- package/lib/azure-loganalyticsworkspace/index.d.ts +6 -0
- package/lib/azure-loganalyticsworkspace/index.js +23 -0
- package/lib/azure-loganalyticsworkspace/lib/index.d.ts +5 -0
- package/lib/azure-loganalyticsworkspace/lib/index.js +22 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.d.ts +51 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.js +255 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +301 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +213 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +9 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +71 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.d.ts +8 -0
- package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +504 -0
- package/lib/azure-metricalert/lib/metric-alert.js +1 -1
- package/lib/azure-networkinterface/lib/network-interface.js +1 -1
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
- package/lib/azure-networkwatcher/index.d.ts +14 -0
- package/lib/azure-networkwatcher/index.js +31 -0
- package/lib/azure-networkwatcher/lib/index.d.ts +5 -0
- package/lib/azure-networkwatcher/lib/index.js +22 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.d.ts +47 -0
- package/lib/azure-networkwatcher/lib/network-watcher-schemas.js +167 -0
- package/lib/azure-networkwatcher/lib/network-watcher.d.ts +181 -0
- package/lib/azure-networkwatcher/lib/network-watcher.js +187 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +12 -0
- package/lib/azure-networkwatcher/test/network-watcher.integ.js +84 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.d.ts +8 -0
- package/lib/azure-networkwatcher/test/network-watcher.spec.js +312 -0
- package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
- package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
- package/lib/azure-policysetdefinition/index.d.ts +10 -0
- package/lib/azure-policysetdefinition/index.js +27 -0
- package/lib/azure-policysetdefinition/lib/index.d.ts +5 -0
- package/lib/azure-policysetdefinition/lib/index.js +22 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.d.ts +50 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.js +255 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +426 -0
- package/lib/azure-policysetdefinition/lib/policy-set-definition.js +255 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +9 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +56 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.d.ts +8 -0
- package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +745 -0
- package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
- package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
- package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
- package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
- package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
- package/lib/azure-roledefinition/lib/role-definition.js +1 -1
- package/lib/azure-storageaccount/lib/storage-account.js +1 -1
- package/lib/azure-subnet/lib/subnet.js +1 -1
- package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
- package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +4 -2
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +8 -5
- package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +109 -1
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
- package/lib/core-azure/lib/azapi/azapi-resource.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 +1 -1
- 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/schema-mapper/schema-mapper.js +1 -1
- 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 +9 -0
- package/lib/index.js +11 -2
- package/lib/testing/index.js +2 -2
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +1 -1
- package/package.json +1 -1
|
@@ -687,5 +687,113 @@ describe("VirtualNetworkGateway - Implementation", () => {
|
|
|
687
687
|
expect(vng.props.vpnGatewayGeneration).toBe("Generation2");
|
|
688
688
|
});
|
|
689
689
|
});
|
|
690
|
+
describe("ExpressRoute Gateway Without Public IP", () => {
|
|
691
|
+
it("should create ExpressRoute gateway without public IP (auto-assigned)", () => {
|
|
692
|
+
const vng = new virtual_network_gateway_1.VirtualNetworkGateway(stack, "ErGatewayNoPublicIp", {
|
|
693
|
+
name: "vng-er-no-pip",
|
|
694
|
+
location: "eastus",
|
|
695
|
+
gatewayType: "ExpressRoute",
|
|
696
|
+
sku: {
|
|
697
|
+
name: "ErGw1AZ",
|
|
698
|
+
tier: "ErGw1AZ",
|
|
699
|
+
},
|
|
700
|
+
ipConfigurations: [
|
|
701
|
+
{
|
|
702
|
+
name: "default",
|
|
703
|
+
subnetId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/GatewaySubnet",
|
|
704
|
+
// publicIPAddressId intentionally omitted
|
|
705
|
+
},
|
|
706
|
+
],
|
|
707
|
+
});
|
|
708
|
+
expect(vng).toBeDefined();
|
|
709
|
+
expect(vng).toBeInstanceOf(virtual_network_gateway_1.VirtualNetworkGateway);
|
|
710
|
+
expect(vng.props.gatewayType).toBe("ExpressRoute");
|
|
711
|
+
expect(vng.props.ipConfigurations).toHaveLength(1);
|
|
712
|
+
expect(vng.props.ipConfigurations[0].publicIPAddressId).toBeUndefined();
|
|
713
|
+
});
|
|
714
|
+
it("should omit publicIPAddress from synthesized JSON when not provided", () => {
|
|
715
|
+
new virtual_network_gateway_1.VirtualNetworkGateway(stack, "ErGatewayNoPublicIpSynth", {
|
|
716
|
+
name: "vng-er-no-pip-synth",
|
|
717
|
+
location: "eastus",
|
|
718
|
+
gatewayType: "ExpressRoute",
|
|
719
|
+
sku: {
|
|
720
|
+
name: "ErGw1AZ",
|
|
721
|
+
tier: "ErGw1AZ",
|
|
722
|
+
},
|
|
723
|
+
ipConfigurations: [
|
|
724
|
+
{
|
|
725
|
+
name: "default",
|
|
726
|
+
subnetId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/GatewaySubnet",
|
|
727
|
+
// publicIPAddressId intentionally omitted
|
|
728
|
+
},
|
|
729
|
+
],
|
|
730
|
+
});
|
|
731
|
+
const synthesized = cdktf_1.Testing.synth(stack);
|
|
732
|
+
const stackConfig = JSON.parse(synthesized);
|
|
733
|
+
// Find the azapi_resource for the gateway
|
|
734
|
+
const azapiResources = stackConfig.resource?.azapi_resource;
|
|
735
|
+
expect(azapiResources).toBeDefined();
|
|
736
|
+
// Find the gateway resource by looking for any key containing the identifier
|
|
737
|
+
const resourceKeys = Object.keys(azapiResources);
|
|
738
|
+
const gatewayKey = resourceKeys.find((key) => key.toLowerCase().includes("ergatewaynopublicipsynth") ||
|
|
739
|
+
key.toLowerCase().includes("er_gateway_no_public_ip_synth"));
|
|
740
|
+
expect(gatewayKey).toBeDefined();
|
|
741
|
+
const gatewayResource = azapiResources[gatewayKey];
|
|
742
|
+
expect(gatewayResource).toBeDefined();
|
|
743
|
+
// Access the body (it may be a string or object depending on synthesis)
|
|
744
|
+
const body = typeof gatewayResource.body === "string"
|
|
745
|
+
? JSON.parse(gatewayResource.body)
|
|
746
|
+
: gatewayResource.body;
|
|
747
|
+
expect(body.properties.ipConfigurations).toBeDefined();
|
|
748
|
+
expect(body.properties.ipConfigurations).toHaveLength(1);
|
|
749
|
+
// Verify publicIPAddress is not present in the ipConfiguration
|
|
750
|
+
const ipConfig = body.properties.ipConfigurations[0];
|
|
751
|
+
expect(ipConfig.name).toBe("default");
|
|
752
|
+
expect(ipConfig.properties.subnet).toBeDefined();
|
|
753
|
+
expect(ipConfig.properties.publicIPAddress).toBeUndefined();
|
|
754
|
+
});
|
|
755
|
+
it("should include publicIPAddress in synthesized JSON when provided", () => {
|
|
756
|
+
new virtual_network_gateway_1.VirtualNetworkGateway(stack, "ErGatewayWithPublicIp", {
|
|
757
|
+
name: "vng-er-with-pip",
|
|
758
|
+
location: "eastus",
|
|
759
|
+
gatewayType: "ExpressRoute",
|
|
760
|
+
sku: {
|
|
761
|
+
name: "ErGw1AZ",
|
|
762
|
+
tier: "ErGw1AZ",
|
|
763
|
+
},
|
|
764
|
+
ipConfigurations: [
|
|
765
|
+
{
|
|
766
|
+
name: "default",
|
|
767
|
+
subnetId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/GatewaySubnet",
|
|
768
|
+
publicIPAddressId: "/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/publicIPAddresses/test-pip",
|
|
769
|
+
},
|
|
770
|
+
],
|
|
771
|
+
});
|
|
772
|
+
const synthesized = cdktf_1.Testing.synth(stack);
|
|
773
|
+
const stackConfig = JSON.parse(synthesized);
|
|
774
|
+
// Find the azapi_resource for the gateway
|
|
775
|
+
const azapiResources = stackConfig.resource?.azapi_resource;
|
|
776
|
+
expect(azapiResources).toBeDefined();
|
|
777
|
+
// Find the gateway resource by looking for any key containing the identifier
|
|
778
|
+
const resourceKeys = Object.keys(azapiResources);
|
|
779
|
+
const gatewayKey = resourceKeys.find((key) => key.toLowerCase().includes("ergatewaywithpublicip") ||
|
|
780
|
+
key.toLowerCase().includes("er_gateway_with_public_ip"));
|
|
781
|
+
expect(gatewayKey).toBeDefined();
|
|
782
|
+
const gatewayResource = azapiResources[gatewayKey];
|
|
783
|
+
expect(gatewayResource).toBeDefined();
|
|
784
|
+
// Access the body (it may be a string or object depending on synthesis)
|
|
785
|
+
const body = typeof gatewayResource.body === "string"
|
|
786
|
+
? JSON.parse(gatewayResource.body)
|
|
787
|
+
: gatewayResource.body;
|
|
788
|
+
expect(body.properties.ipConfigurations).toBeDefined();
|
|
789
|
+
expect(body.properties.ipConfigurations).toHaveLength(1);
|
|
790
|
+
// Verify publicIPAddress IS present in the ipConfiguration
|
|
791
|
+
const ipConfig = body.properties.ipConfigurations[0];
|
|
792
|
+
expect(ipConfig.name).toBe("default");
|
|
793
|
+
expect(ipConfig.properties.subnet).toBeDefined();
|
|
794
|
+
expect(ipConfig.properties.publicIPAddress).toBeDefined();
|
|
795
|
+
expect(ipConfig.properties.publicIPAddress.id).toBe("/subscriptions/sub-id/resourceGroups/test-rg/providers/Microsoft.Network/publicIPAddresses/test-pip");
|
|
796
|
+
});
|
|
797
|
+
});
|
|
690
798
|
});
|
|
691
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya2dhdGV3YXkvdGVzdC92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsaUNBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQiw0RUFHd0M7QUFFeEMsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFFaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxHQUFHLEVBQUU7WUFDeEYsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixHQUFHLEVBQUU7b0JBQ0gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCO3dCQUNFLElBQUksRUFBRSxTQUFTO3dCQUNmLFFBQVEsRUFDTixnSEFBZ0g7d0JBQ2xILGlCQUFpQixFQUNmLDJGQUEyRjtxQkFDOUY7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRS9ELE1B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QUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtRQUN0QyxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELE1BQU0sR0FBRyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQkFDbkQsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixXQUFXLEVBQUUsS0FBSztnQkFDbEIsT0FBTyxFQUFFLFlBQVk7Z0JBQ3JCLEdBQUcsRUFBRTtvQkFDSCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsUUFBUTtpQkFDZjtnQkFDRCxvQkFBb0IsRUFBRSxhQUFhO2dCQUNuQyxnQkFBZ0IsRUFBRTtvQkFDaEI7d0JBQ0UsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsUUFBUSxFQUNOLGdIQUFnSDt3QkFDbEgsaUJBQWlCLEVBQ2YsMkZBQTJGO3FCQUM5RjtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcHJlaGVuc2l2ZSB0ZXN0cyBmb3IgdGhlIFZpcnR1YWwgTmV0d29yayBHYXRld2F5IGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyB0ZXN0IHN1aXRlIHZhbGlkYXRlcyB0aGUgVmlydHVhbE5ldHdvcmtHYXRld2F5IGNsYXNzIHVzaW5nIHRoZSBBemFwaVJlc291cmNlIGZyYW1ld29yay5cbiAqIFRlc3RzIGNvdmVyIGF1dG9tYXRpYyB2ZXJzaW9uIHJlc29sdXRpb24sIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sXG4gKiBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiwgYW5kIHJlc291cmNlIGNyZWF0aW9uLlxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHtcbiAgVmlydHVhbE5ldHdvcmtHYXRld2F5LFxuICBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheVwiO1xuXG5kZXNjcmliZShcIlZpcnR1YWxOZXR3b3JrR2F0ZXdheSAtIEltcGxlbWVudGF0aW9uXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcIlRlc3RTdGFja1wiKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDb25zdHJ1Y3RvciBhbmQgQmFzaWMgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHZpcnR1YWwgbmV0d29yayBnYXRld2F5IHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtdm5nXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtHYXRld2F5KTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMpLnRvQmUocHJvcHMpO1xuICAgICAgZXhwZWN0KHZuZy5uYW1lKS50b0JlKFwidGVzdC12bmdcIik7XG4gICAgICBleHBlY3Qodm5nLmxvY2F0aW9uKS50b0JlKFwiZWFzdHVzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHZpcnR1YWwgbmV0d29yayBnYXRld2F5IHdpdGggZXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZy1waW5uZWRcIixcbiAgICAgICAgbG9jYXRpb246IFwid2VzdHVzXCIsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyNC0wMS0wMVwiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzJcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0YWdzOiB7IGVudmlyb25tZW50OiBcInRlc3RcIiB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTAxLTAxXCIpO1xuICAgICAgZXhwZWN0KHZuZy50YWdzKS50b0VxdWFsKHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHZpcnR1YWwgbmV0d29yayBnYXRld2F5IHdpdGggYWxsIG9wdGlvbmFsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrR2F0ZXdheVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtdm5nLWZ1bGxcIixcbiAgICAgICAgbG9jYXRpb246IFwiY2VudHJhbHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzNcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3M1wiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBwcml2YXRlSVBBbGxvY2F0aW9uTWV0aG9kOiBcIkR5bmFtaWNcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGVuYWJsZUJncDogdHJ1ZSxcbiAgICAgICAgYWN0aXZlQWN0aXZlOiBmYWxzZSxcbiAgICAgICAgYmdwU2V0dGluZ3M6IHtcbiAgICAgICAgICBhc246IDY1NTE1LFxuICAgICAgICAgIHBlZXJXZWlnaHQ6IDAsXG4gICAgICAgIH0sXG4gICAgICAgIHZwbkdhdGV3YXlHZW5lcmF0aW9uOiBcIkdlbmVyYXRpb24yXCIsXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgcHJvamVjdDogXCJuZXR3b3JraW5nXCIsXG4gICAgICAgICAgb3duZXI6IFwidGVhbUBjb21wYW55LmNvbVwiLFxuICAgICAgICB9LFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5nYXRld2F5VHlwZSkudG9CZShcIlZwblwiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudnBuVHlwZSkudG9CZShcIlJvdXRlQmFzZWRcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmVuYWJsZUJncCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYmdwU2V0dGluZ3MpLnRvRXF1YWwocHJvcHMuYmdwU2V0dGluZ3MpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzKS50b0VxdWFsKHByb3BzLnRhZ3MpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIGRlZmF1bHQgbmFtZSB3aGVuIG5hbWUgaXMgbm90IHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlRlc3RWTkdcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3Qodm5nLm5hbWUpLnRvQmUoXCJUZXN0Vk5HXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlJlc291cmNlIFR5cGUgYW5kIEFQSSBWZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IHJlc291cmNlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya0dhdGV3YXkpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhbGwgcmVnaXN0ZXJlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDI0LTAxLTAxXCIsIFwiMjAyNC0wNS0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGBWTkctJHt2ZXJzaW9uLnJlcGxhY2UoLy0vZywgXCJcIil9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgdm5nLSR7dmVyc2lvbn1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgICAgICBza3U6IHtcbiAgICAgICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBleHBlY3Qodm5nLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZSh2ZXJzaW9uKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIGxhdGVzdCB2ZXJzaW9uIGFzIGRlZmF1bHRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiR2F0ZXdheSBUeXBlIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBWUE4gZ2F0ZXdheVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZwbkdhdGV3YXlcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy12cG5cIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZ2F0ZXdheVR5cGUpLnRvQmUoXCJWcG5cIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwblR5cGUpLnRvQmUoXCJSb3V0ZUJhc2VkXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIEV4cHJlc3NSb3V0ZSBnYXRld2F5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRXJHYXRld2F5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIkV4cHJlc3NSb3V0ZVwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIkVyR3cxQVpcIixcbiAgICAgICAgICB0aWVyOiBcIkVyR3cxQVpcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmdhdGV3YXlUeXBlKS50b0JlKFwiRXhwcmVzc1JvdXRlXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZGVmYXVsdCB2cG5UeXBlIHRvIFJvdXRlQmFzZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJEZWZhdWx0VnBuVHlwZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWRlZmF1bHRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy52cG5UeXBlKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiSVAgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBzaW5nbGUgSVAgY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlNpbmdsZUlQXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctc2luZ2xlXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjb25maWcxXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXAxXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmlwQ29uZmlndXJhdGlvbnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuaXBDb25maWd1cmF0aW9uc1swXS5uYW1lKS50b0JlKFwiY29uZmlnMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBhY3RpdmUtYWN0aXZlIGdhdGV3YXkgd2l0aCB0d28gSVAgY29uZmlndXJhdGlvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJBY3RpdmVBY3RpdmVcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1hYVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aXZlQWN0aXZlOiB0cnVlLFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjb25maWcxXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXAxXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImNvbmZpZzJcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcDJcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYWN0aXZlQWN0aXZlKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pcENvbmZpZ3VyYXRpb25zKS50b0hhdmVMZW5ndGgoMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQkdQIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggQkdQIGVuYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJCZ3BFbmFibGVkXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctYmdwXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBlbmFibGVCZ3A6IHRydWUsXG4gICAgICAgIGJncFNldHRpbmdzOiB7XG4gICAgICAgICAgYXNuOiA2NTUxNSxcbiAgICAgICAgICBwZWVyV2VpZ2h0OiAwLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZW5hYmxlQmdwKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5iZ3BTZXR0aW5ncykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYmdwU2V0dGluZ3M/LmFzbikudG9CZSg2NTUxNSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBkZWZhdWx0IGVuYWJsZUJncCB0byBmYWxzZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkJncERpc2FibGVkXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctbm8tYmdwXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZW5hYmxlQmdwKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiU0tVIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggQmFzaWMgU0tVXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiQmFzaWNTa3VcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1iYXNpY1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiQmFzaWNcIixcbiAgICAgICAgICB0aWVyOiBcIkJhc2ljXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5za3UubmFtZSkudG9CZShcIkJhc2ljXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5za3UudGllcikudG9CZShcIkJhc2ljXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBWcG5HdzEgU0tVXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVnBuR3cxU2t1XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctdnBuZ3cxXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuc2t1Lm5hbWUpLnRvQmUoXCJWcG5HdzFcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnNrdS50aWVyKS50b0JlKFwiVnBuR3cxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRhZ3MgTWFuYWdlbWVudFwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCB0YWdzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGFnZ2VkR2F0ZXdheVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXRhZ2dlZFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIixcbiAgICAgICAgICBjb3N0X2NlbnRlcjogXCJlbmdpbmVlcmluZ1wiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncykudG9FcXVhbCh7XG4gICAgICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIixcbiAgICAgICAgY29zdF9jZW50ZXI6IFwiZW5naW5lZXJpbmdcIixcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhZGRpbmcgdGFnc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkFkZFRhZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWFkZC10YWdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICB9KTtcblxuICAgICAgdm5nLmFkZFRhZyhcIm5ld1RhZ1wiLCBcIm5ld1ZhbHVlXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzIS5uZXdUYWcpLnRvQmUoXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncyEuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCByZW1vdmluZyB0YWdzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiUmVtb3ZlVGFnXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctcmVtb3ZlLXRhZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInRlc3RcIixcbiAgICAgICAgICB0ZW1wb3Jhcnk6IFwidHJ1ZVwiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHZuZy5yZW1vdmVUYWcoXCJ0ZW1wb3JhcnlcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnRhZ3MhLnRlbXBvcmFyeSkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzIS5lbnZpcm9ubWVudCkudG9CZShcInRlc3RcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIk91dHB1dFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1vdXRwdXRzXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3Qodm5nLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3Qodm5nLmxvY2F0aW9uT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHZuZy50YWdzT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IGlkIGZvcm1hdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIklkRm9ybWF0XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctaWRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgICBleHBlY3Qodm5nLnJlc291cmNlSWQpLnRvQmUodm5nLmlkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJWZXJzaW9uIENvbXBhdGliaWxpdHlcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHdvcmsgd2l0aCBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyA9IFtcIjIwMjQtMDEtMDFcIiwgXCIyMDI0LTA1LTAxXCJdO1xuXG4gICAgICB2ZXJzaW9ucy5mb3JFYWNoKCh2ZXJzaW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoXG4gICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgYFZORy0ke3ZlcnNpb24ucmVwbGFjZSgvLS9nLCBcIlwiKX1gLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IGB2bmctJHt2ZXJzaW9ufWAsXG4gICAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICAgIGFwaVZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgICAgIHNrdToge1xuICAgICAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGV4cGVjdCh2bmcucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKHZlcnNpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiSWdub3JlIENoYW5nZXMgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgYXBwbHkgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiSWdub3JlQ2hhbmdlc1wiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWlnbm9yZVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya0dhdGV3YXkpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pZ25vcmVDaGFuZ2VzKS50b0VxdWFsKFtcInRhZ3NcIl0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGVtcHR5IGlnbm9yZSBjaGFuZ2VzIGFycmF5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRW1wdHlJZ25vcmVcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1lbXB0eS1pZ25vcmVcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcpLnRvQmVJbnN0YW5jZU9mKFZpcnR1YWxOZXR3b3JrR2F0ZXdheSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ0RLIFRlcnJhZm9ybSBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3ludGhlc2l6ZSB0byB2YWxpZCBUZXJyYWZvcm0gY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlN5bnRoVGVzdFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXN5bnRoXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0YWdzOiB7IHRlc3Q6IFwic3ludGhlc2lzXCIgfSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGdhdGV3YXlzIGluIHRoZSBzYW1lIHN0YWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZzEgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZORzFcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy0xXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHZuZzIgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZORzJcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy0yXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcIndlc3R1c1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMDEtMDFcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcxLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgICBleHBlY3Qodm5nMi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTAxLTAxXCIpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlZQTiBDbGllbnQgQ29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBWUE4gY2xpZW50IGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJQMlNcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1wMnNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICB2cG5UeXBlOiBcIlJvdXRlQmFzZWRcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB2cG5DbGllbnRDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgdnBuQ2xpZW50QWRkcmVzc1Bvb2w6IHtcbiAgICAgICAgICAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTcyLjE2LjAuMC8yNFwiXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZwbkNsaWVudFByb3RvY29sczogW1wiSWtlVjJcIiwgXCJPcGVuVlBOXCJdLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudnBuQ2xpZW50Q29uZmlndXJhdGlvbikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChcbiAgICAgICAgdm5nLnByb3BzLnZwbkNsaWVudENvbmZpZ3VyYXRpb24/LnZwbkNsaWVudEFkZHJlc3NQb29sPy5hZGRyZXNzUHJlZml4ZXMsXG4gICAgICApLnRvQ29udGFpbihcIjE3Mi4xNi4wLjAvMjRcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVlBOIEdhdGV3YXkgR2VuZXJhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGdhdGV3YXkgd2l0aCBHZW5lcmF0aW9uMlwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkdlbjJcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1nZW4yXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cyXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzJcIixcbiAgICAgICAgfSxcbiAgICAgICAgdnBuR2F0ZXdheUdlbmVyYXRpb246IFwiR2VuZXJhdGlvbjJcIixcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwbkdhdGV3YXlHZW5lcmF0aW9uKS50b0JlKFwiR2VuZXJhdGlvbjJcIik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
799
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLWdhdGV3YXkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya2dhdGV3YXkvdGVzdC92aXJ0dWFsLW5ldHdvcmstZ2F0ZXdheS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBRUgsaUNBQWdDO0FBQ2hDLCtCQUErQjtBQUMvQiw0RUFHd0M7QUFFeEMsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFFaEMsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1FBQ2hELEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxHQUFHLEVBQUU7WUFDeEYsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFdBQVcsRUFBRSxLQUFLO2dCQUNsQixHQUFHLEVBQUU7b0JBQ0gsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLFFBQVE7aUJBQ2Y7Z0JBQ0QsZ0JBQWdCLEVBQUU7b0JBQ2hCO3dCQUNFLElBQUksRUFBRSxTQUFTO3dCQUNmLFFBQVEsRUFDTixnSEFBZ0g7d0JBQ2xILGlCQUFpQixFQUNmLDJGQUEyRjtxQkFDOUY7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxHQUFHLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRS9ELE1B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QUksQ0FDakQscUdBQXFHLENBQ3RHLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXByZWhlbnNpdmUgdGVzdHMgZm9yIHRoZSBWaXJ0dWFsIE5ldHdvcmsgR2F0ZXdheSBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIFZpcnR1YWxOZXR3b3JrR2F0ZXdheSBjbGFzcyB1c2luZyB0aGUgQXphcGlSZXNvdXJjZSBmcmFtZXdvcmsuXG4gKiBUZXN0cyBjb3ZlciBhdXRvbWF0aWMgdmVyc2lvbiByZXNvbHV0aW9uLCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcsIHNjaGVtYSB2YWxpZGF0aW9uLFxuICogcHJvcGVydHkgdHJhbnNmb3JtYXRpb24sIGFuZCByZXNvdXJjZSBjcmVhdGlvbi5cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7XG4gIFZpcnR1YWxOZXR3b3JrR2F0ZXdheSxcbiAgVmlydHVhbE5ldHdvcmtHYXRld2F5UHJvcHMsXG59IGZyb20gXCIuLi9saWIvdmlydHVhbC1uZXR3b3JrLWdhdGV3YXlcIjtcblxuZGVzY3JpYmUoXCJWaXJ0dWFsTmV0d29ya0dhdGV3YXkgLSBJbXBsZW1lbnRhdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RmLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0Zi5UZXJyYWZvcm1TdGFjaztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RmLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJUZXN0U3RhY2tcIik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ29uc3RydWN0b3IgYW5kIEJhc2ljIFByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZ2F0ZXdheSB3aXRoIGF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZ1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdCh2bmcpLnRvQmVJbnN0YW5jZU9mKFZpcnR1YWxOZXR3b3JrR2F0ZXdheSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdCh2bmcubmFtZSkudG9CZShcInRlc3Qtdm5nXCIpO1xuICAgICAgZXhwZWN0KHZuZy5sb2NhdGlvbikudG9CZShcImVhc3R1c1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZ2F0ZXdheSB3aXRoIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtHYXRld2F5UHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC12bmctcGlubmVkXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcIndlc3R1c1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjQtMDEtMDFcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cyXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzJcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczogeyBlbnZpcm9ubWVudDogXCJ0ZXN0XCIgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdCh2bmcucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wMS0wMVwiKTtcbiAgICAgIGV4cGVjdCh2bmcudGFncykudG9FcXVhbCh7IGVudmlyb25tZW50OiBcInRlc3RcIiB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgZ2F0ZXdheSB3aXRoIGFsbCBvcHRpb25hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya0dhdGV3YXlQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXZuZy1mdWxsXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImNlbnRyYWx1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3czXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzNcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgcHJpdmF0ZUlQQWxsb2NhdGlvbk1ldGhvZDogXCJEeW5hbWljXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBlbmFibGVCZ3A6IHRydWUsXG4gICAgICAgIGFjdGl2ZUFjdGl2ZTogZmFsc2UsXG4gICAgICAgIGJncFNldHRpbmdzOiB7XG4gICAgICAgICAgYXNuOiA2NTUxNSxcbiAgICAgICAgICBwZWVyV2VpZ2h0OiAwLFxuICAgICAgICB9LFxuICAgICAgICB2cG5HYXRld2F5R2VuZXJhdGlvbjogXCJHZW5lcmF0aW9uMlwiLFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiLFxuICAgICAgICAgIHByb2plY3Q6IFwibmV0d29ya2luZ1wiLFxuICAgICAgICAgIG93bmVyOiBcInRlYW1AY29tcGFueS5jb21cIixcbiAgICAgICAgfSxcbiAgICAgICAgaWdub3JlQ2hhbmdlczogW1widGFnc1wiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuZ2F0ZXdheVR5cGUpLnRvQmUoXCJWcG5cIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwblR5cGUpLnRvQmUoXCJSb3V0ZUJhc2VkXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5lbmFibGVCZ3ApLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmJncFNldHRpbmdzKS50b0VxdWFsKHByb3BzLmJncFNldHRpbmdzKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncykudG9FcXVhbChwcm9wcy50YWdzKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IG5hbWUgd2hlbiBuYW1lIGlzIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtHYXRld2F5UHJvcHMgPSB7XG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJUZXN0Vk5HXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHZuZy5uYW1lKS50b0JlKFwiVGVzdFZOR1wiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJSZXNvdXJjZSBUeXBlIGFuZCBBUEkgVmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCByZXNvdXJjZSB0eXBlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC12bmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtHYXRld2F5KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgYWxsIHJlZ2lzdGVyZWQgQVBJIHZlcnNpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZlcnNpb25zID0gW1wiMjAyNC0wMS0wMVwiLCBcIjIwMjQtMDUtMDFcIl07XG5cbiAgICAgIHZlcnNpb25zLmZvckVhY2goKHZlcnNpb24pID0+IHtcbiAgICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShcbiAgICAgICAgICBzdGFjayxcbiAgICAgICAgICBgVk5HLSR7dmVyc2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYHZuZy0ke3ZlcnNpb259YCxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICAgICAgc2t1OiB7XG4gICAgICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZXhwZWN0KHZuZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUodmVyc2lvbik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBsYXRlc3QgdmVyc2lvbiBhcyBkZWZhdWx0XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiVGVzdFZOR1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC12bmdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkdhdGV3YXkgVHlwZSBDb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgVlBOIGdhdGV3YXlcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJWcG5HYXRld2F5XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctdnBuXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmdhdGV3YXlUeXBlKS50b0JlKFwiVnBuXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy52cG5UeXBlKS50b0JlKFwiUm91dGVCYXNlZFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBFeHByZXNzUm91dGUgZ2F0ZXdheVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkVyR2F0ZXdheVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWVyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJFeHByZXNzUm91dGVcIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJFckd3MUFaXCIsXG4gICAgICAgICAgdGllcjogXCJFckd3MUFaXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5nYXRld2F5VHlwZSkudG9CZShcIkV4cHJlc3NSb3V0ZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGRlZmF1bHQgdnBuVHlwZSB0byBSb3V0ZUJhc2VkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRGVmYXVsdFZwblR5cGVcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1kZWZhdWx0XCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudnBuVHlwZSkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklQIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggc2luZ2xlIElQIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJTaW5nbGVJUFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXNpbmdsZVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiY29uZmlnMVwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwMVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pcENvbmZpZ3VyYXRpb25zKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmlwQ29uZmlndXJhdGlvbnNbMF0ubmFtZSkudG9CZShcImNvbmZpZzFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgYWN0aXZlLWFjdGl2ZSBnYXRld2F5IHdpdGggdHdvIElQIGNvbmZpZ3VyYXRpb25zXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiQWN0aXZlQWN0aXZlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctYWFcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGFjdGl2ZUFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiY29uZmlnMVwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwMVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJjb25maWcyXCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXAyXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmFjdGl2ZUFjdGl2ZSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuaXBDb25maWd1cmF0aW9ucykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJHUCBDb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgZ2F0ZXdheSB3aXRoIEJHUCBlbmFibGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiQmdwRW5hYmxlZFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWJncFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgZW5hYmxlQmdwOiB0cnVlLFxuICAgICAgICBiZ3BTZXR0aW5nczoge1xuICAgICAgICAgIGFzbjogNjU1MTUsXG4gICAgICAgICAgcGVlcldlaWdodDogMCxcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmVuYWJsZUJncCkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuYmdwU2V0dGluZ3MpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmJncFNldHRpbmdzPy5hc24pLnRvQmUoNjU1MTUpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZGVmYXVsdCBlbmFibGVCZ3AgdG8gZmFsc2VcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJCZ3BEaXNhYmxlZFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLW5vLWJncFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLmVuYWJsZUJncCkudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlNLVSBDb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgZ2F0ZXdheSB3aXRoIEJhc2ljIFNLVVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkJhc2ljU2t1XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctYmFzaWNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIkJhc2ljXCIsXG4gICAgICAgICAgdGllcjogXCJCYXNpY1wiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuc2t1Lm5hbWUpLnRvQmUoXCJCYXNpY1wiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuc2t1LnRpZXIpLnRvQmUoXCJCYXNpY1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggVnBuR3cxIFNLVVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlZwbkd3MVNrdVwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXZwbmd3MVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnNrdS5uYW1lKS50b0JlKFwiVnBuR3cxXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5za3UudGllcikudG9CZShcIlZwbkd3MVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJUYWdzIE1hbmFnZW1lbnRcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggdGFnc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlRhZ2dlZEdhdGV3YXlcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy10YWdnZWRcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgICAgY29zdF9jZW50ZXI6IFwiZW5naW5lZXJpbmdcIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnRhZ3MpLnRvRXF1YWwoe1xuICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgIGNvc3RfY2VudGVyOiBcImVuZ2luZWVyaW5nXCIsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgYWRkaW5nIHRhZ3NcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJBZGRUYWdcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1hZGQtdGFnXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICB0YWdzOiB7IGVudmlyb25tZW50OiBcInRlc3RcIiB9LFxuICAgICAgfSk7XG5cbiAgICAgIHZuZy5hZGRUYWcoXCJuZXdUYWdcIiwgXCJuZXdWYWx1ZVwiKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncyEubmV3VGFnKS50b0JlKFwibmV3VmFsdWVcIik7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLnRhZ3MhLmVudmlyb25tZW50KS50b0JlKFwidGVzdFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgcmVtb3ZpbmcgdGFnc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIlJlbW92ZVRhZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLXJlbW92ZS10YWdcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJ0ZXN0XCIsXG4gICAgICAgICAgdGVtcG9yYXJ5OiBcInRydWVcIixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICB2bmcucmVtb3ZlVGFnKFwidGVtcG9yYXJ5XCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy50YWdzIS50ZW1wb3JhcnkpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMudGFncyEuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJPdXRwdXRUZXN0XCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctb3V0cHV0c1wiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHZuZy5uYW1lT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHZuZy5sb2NhdGlvbk91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdCh2bmcudGFnc091dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgY29ycmVjdCBpZCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJJZEZvcm1hdFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWlkXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdCh2bmcuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgICAgZXhwZWN0KHZuZy5yZXNvdXJjZUlkKS50b0JlKHZuZy5pZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVmVyc2lvbiBDb21wYXRpYmlsaXR5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB3b3JrIHdpdGggYWxsIHN1cHBvcnRlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDI0LTAxLTAxXCIsIFwiMjAyNC0wNS0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KFxuICAgICAgICAgIHN0YWNrLFxuICAgICAgICAgIGBWTkctJHt2ZXJzaW9uLnJlcGxhY2UoLy0vZywgXCJcIil9YCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgdm5nLSR7dmVyc2lvbn1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgICAgICBza3U6IHtcbiAgICAgICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBleHBlY3Qodm5nLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZSh2ZXJzaW9uKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklnbm9yZSBDaGFuZ2VzIENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIklnbm9yZUNoYW5nZXNcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1pZ25vcmVcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIlZwblwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MVwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cxXCIsXG4gICAgICAgIH0sXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtcInRhZ3NcIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtHYXRld2F5KTtcbiAgICAgIGV4cGVjdCh2bmcucHJvcHMuaWdub3JlQ2hhbmdlcykudG9FcXVhbChbXCJ0YWdzXCJdKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBlbXB0eSBpZ25vcmUgY2hhbmdlcyBhcnJheVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcgPSBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkVtcHR5SWdub3JlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctZW1wdHktaWdub3JlXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgc2t1OiB7XG4gICAgICAgICAgbmFtZTogXCJWcG5HdzFcIixcbiAgICAgICAgICB0aWVyOiBcIlZwbkd3MVwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0L3N1Ym5ldHMvR2F0ZXdheVN1Ym5ldFwiLFxuICAgICAgICAgICAgcHVibGljSVBBZGRyZXNzSWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy9waXBcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya0dhdGV3YXkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBUZXJyYWZvcm0gSW50ZWdyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdG8gdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJTeW50aFRlc3RcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1zeW50aFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdGFnczogeyB0ZXN0OiBcInN5bnRoZXNpc1wiIH0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBnYXRld2F5cyBpbiB0aGUgc2FtZSBzdGFja1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2bmcxID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJWTkcxXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctMVwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB2bmcyID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJWTkcyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTAxLTAxXCIsXG4gICAgICAgIGdhdGV3YXlUeXBlOiBcIkV4cHJlc3NSb3V0ZVwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIkVyR3cxQVpcIixcbiAgICAgICAgICB0aWVyOiBcIkVyR3cxQVpcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nMS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgICAgZXhwZWN0KHZuZzIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wMS0wMVwiKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJWUE4gQ2xpZW50IENvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggVlBOIGNsaWVudCBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiUDJTXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctcDJzXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBnYXRld2F5VHlwZTogXCJWcG5cIixcbiAgICAgICAgdnBuVHlwZTogXCJSb3V0ZUJhc2VkXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiVnBuR3cxXCIsXG4gICAgICAgICAgdGllcjogXCJWcG5HdzFcIixcbiAgICAgICAgfSxcbiAgICAgICAgaXBDb25maWd1cmF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgICAgICAgc3VibmV0SWQ6XG4gICAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvc3ViLWlkL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3Mvdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvcGlwXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgdnBuQ2xpZW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgICAgIHZwbkNsaWVudEFkZHJlc3NQb29sOiB7XG4gICAgICAgICAgICBhZGRyZXNzUHJlZml4ZXM6IFtcIjE3Mi4xNi4wLjAvMjRcIl0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICB2cG5DbGllbnRQcm90b2NvbHM6IFtcIklrZVYyXCIsIFwiT3BlblZQTlwiXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qodm5nLnByb3BzLnZwbkNsaWVudENvbmZpZ3VyYXRpb24pLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoXG4gICAgICAgIHZuZy5wcm9wcy52cG5DbGllbnRDb25maWd1cmF0aW9uPy52cG5DbGllbnRBZGRyZXNzUG9vbD8uYWRkcmVzc1ByZWZpeGVzLFxuICAgICAgKS50b0NvbnRhaW4oXCIxNzIuMTYuMC4wLzI0XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlZQTiBHYXRld2F5IEdlbmVyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnYXRld2F5IHdpdGggR2VuZXJhdGlvbjJcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgdm5nID0gbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJHZW4yXCIsIHtcbiAgICAgICAgbmFtZTogXCJ2bmctZ2VuMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiVnBuXCIsXG4gICAgICAgIHZwblR5cGU6IFwiUm91dGVCYXNlZFwiLFxuICAgICAgICBza3U6IHtcbiAgICAgICAgICBuYW1lOiBcIlZwbkd3MlwiLFxuICAgICAgICAgIHRpZXI6IFwiVnBuR3cyXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHZwbkdhdGV3YXlHZW5lcmF0aW9uOiBcIkdlbmVyYXRpb24yXCIsXG4gICAgICAgIGlwQ29uZmlndXJhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgICAgICAgIHN1Ym5ldElkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy9yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3ZuZXQvc3VibmV0cy9HYXRld2F5U3VibmV0XCIsXG4gICAgICAgICAgICBwdWJsaWNJUEFkZHJlc3NJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3B1YmxpY0lQQWRkcmVzc2VzL3BpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZy5wcm9wcy52cG5HYXRld2F5R2VuZXJhdGlvbikudG9CZShcIkdlbmVyYXRpb24yXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkV4cHJlc3NSb3V0ZSBHYXRld2F5IFdpdGhvdXQgUHVibGljIElQXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgRXhwcmVzc1JvdXRlIGdhdGV3YXkgd2l0aG91dCBwdWJsaWMgSVAgKGF1dG8tYXNzaWduZWQpXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHZuZyA9IG5ldyBWaXJ0dWFsTmV0d29ya0dhdGV3YXkoc3RhY2ssIFwiRXJHYXRld2F5Tm9QdWJsaWNJcFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWVyLW5vLXBpcFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIC8vIHB1YmxpY0lQQWRkcmVzc0lkIGludGVudGlvbmFsbHkgb21pdHRlZFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHZuZykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdCh2bmcpLnRvQmVJbnN0YW5jZU9mKFZpcnR1YWxOZXR3b3JrR2F0ZXdheSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmdhdGV3YXlUeXBlKS50b0JlKFwiRXhwcmVzc1JvdXRlXCIpO1xuICAgICAgZXhwZWN0KHZuZy5wcm9wcy5pcENvbmZpZ3VyYXRpb25zKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICBleHBlY3Qodm5nLnByb3BzLmlwQ29uZmlndXJhdGlvbnNbMF0ucHVibGljSVBBZGRyZXNzSWQpLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIG9taXQgcHVibGljSVBBZGRyZXNzIGZyb20gc3ludGhlc2l6ZWQgSlNPTiB3aGVuIG5vdCBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBuZXcgVmlydHVhbE5ldHdvcmtHYXRld2F5KHN0YWNrLCBcIkVyR2F0ZXdheU5vUHVibGljSXBTeW50aFwiLCB7XG4gICAgICAgIG5hbWU6IFwidm5nLWVyLW5vLXBpcC1zeW50aFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIC8vIHB1YmxpY0lQQWRkcmVzc0lkIGludGVudGlvbmFsbHkgb21pdHRlZFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGF6YXBpX3Jlc291cmNlIGZvciB0aGUgZ2F0ZXdheVxuICAgICAgY29uc3QgYXphcGlSZXNvdXJjZXMgPSBzdGFja0NvbmZpZy5yZXNvdXJjZT8uYXphcGlfcmVzb3VyY2U7XG4gICAgICBleHBlY3QoYXphcGlSZXNvdXJjZXMpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGdhdGV3YXkgcmVzb3VyY2UgYnkgbG9va2luZyBmb3IgYW55IGtleSBjb250YWluaW5nIHRoZSBpZGVudGlmaWVyXG4gICAgICBjb25zdCByZXNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhhemFwaVJlc291cmNlcyk7XG4gICAgICBjb25zdCBnYXRld2F5S2V5ID0gcmVzb3VyY2VLZXlzLmZpbmQoXG4gICAgICAgIChrZXkpID0+XG4gICAgICAgICAga2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJlcmdhdGV3YXlub3B1YmxpY2lwc3ludGhcIikgfHxcbiAgICAgICAgICBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImVyX2dhdGV3YXlfbm9fcHVibGljX2lwX3N5bnRoXCIpLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChnYXRld2F5S2V5KS50b0JlRGVmaW5lZCgpO1xuICAgICAgY29uc3QgZ2F0ZXdheVJlc291cmNlID0gYXphcGlSZXNvdXJjZXNbZ2F0ZXdheUtleSFdO1xuICAgICAgZXhwZWN0KGdhdGV3YXlSZXNvdXJjZSkudG9CZURlZmluZWQoKTtcblxuICAgICAgLy8gQWNjZXNzIHRoZSBib2R5IChpdCBtYXkgYmUgYSBzdHJpbmcgb3Igb2JqZWN0IGRlcGVuZGluZyBvbiBzeW50aGVzaXMpXG4gICAgICBjb25zdCBib2R5ID1cbiAgICAgICAgdHlwZW9mIGdhdGV3YXlSZXNvdXJjZS5ib2R5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBKU09OLnBhcnNlKGdhdGV3YXlSZXNvdXJjZS5ib2R5KVxuICAgICAgICAgIDogZ2F0ZXdheVJlc291cmNlLmJvZHk7XG4gICAgICBleHBlY3QoYm9keS5wcm9wZXJ0aWVzLmlwQ29uZmlndXJhdGlvbnMpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoYm9keS5wcm9wZXJ0aWVzLmlwQ29uZmlndXJhdGlvbnMpLnRvSGF2ZUxlbmd0aCgxKTtcblxuICAgICAgLy8gVmVyaWZ5IHB1YmxpY0lQQWRkcmVzcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgaXBDb25maWd1cmF0aW9uXG4gICAgICBjb25zdCBpcENvbmZpZyA9IGJvZHkucHJvcGVydGllcy5pcENvbmZpZ3VyYXRpb25zWzBdO1xuICAgICAgZXhwZWN0KGlwQ29uZmlnLm5hbWUpLnRvQmUoXCJkZWZhdWx0XCIpO1xuICAgICAgZXhwZWN0KGlwQ29uZmlnLnByb3BlcnRpZXMuc3VibmV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGlwQ29uZmlnLnByb3BlcnRpZXMucHVibGljSVBBZGRyZXNzKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBpbmNsdWRlIHB1YmxpY0lQQWRkcmVzcyBpbiBzeW50aGVzaXplZCBKU09OIHdoZW4gcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgbmV3IFZpcnR1YWxOZXR3b3JrR2F0ZXdheShzdGFjaywgXCJFckdhdGV3YXlXaXRoUHVibGljSXBcIiwge1xuICAgICAgICBuYW1lOiBcInZuZy1lci13aXRoLXBpcFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgZ2F0ZXdheVR5cGU6IFwiRXhwcmVzc1JvdXRlXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRXJHdzFBWlwiLFxuICAgICAgICAgIHRpZXI6IFwiRXJHdzFBWlwiLFxuICAgICAgICB9LFxuICAgICAgICBpcENvbmZpZ3VyYXRpb25zOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICAgICAgICBzdWJuZXRJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldC9zdWJuZXRzL0dhdGV3YXlTdWJuZXRcIixcbiAgICAgICAgICAgIHB1YmxpY0lQQWRkcmVzc0lkOlxuICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zL3N1Yi1pZC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wdWJsaWNJUEFkZHJlc3Nlcy90ZXN0LXBpcFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGF6YXBpX3Jlc291cmNlIGZvciB0aGUgZ2F0ZXdheVxuICAgICAgY29uc3QgYXphcGlSZXNvdXJjZXMgPSBzdGFja0NvbmZpZy5yZXNvdXJjZT8uYXphcGlfcmVzb3VyY2U7XG4gICAgICBleHBlY3QoYXphcGlSZXNvdXJjZXMpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIEZpbmQgdGhlIGdhdGV3YXkgcmVzb3VyY2UgYnkgbG9va2luZyBmb3IgYW55IGtleSBjb250YWluaW5nIHRoZSBpZGVudGlmaWVyXG4gICAgICBjb25zdCByZXNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhhemFwaVJlc291cmNlcyk7XG4gICAgICBjb25zdCBnYXRld2F5S2V5ID0gcmVzb3VyY2VLZXlzLmZpbmQoXG4gICAgICAgIChrZXkpID0+XG4gICAgICAgICAga2V5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoXCJlcmdhdGV3YXl3aXRocHVibGljaXBcIikgfHxcbiAgICAgICAgICBrZXkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhcImVyX2dhdGV3YXlfd2l0aF9wdWJsaWNfaXBcIiksXG4gICAgICApO1xuICAgICAgZXhwZWN0KGdhdGV3YXlLZXkpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCBnYXRld2F5UmVzb3VyY2UgPSBhemFwaVJlc291cmNlc1tnYXRld2F5S2V5IV07XG4gICAgICBleHBlY3QoZ2F0ZXdheVJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBBY2Nlc3MgdGhlIGJvZHkgKGl0IG1heSBiZSBhIHN0cmluZyBvciBvYmplY3QgZGVwZW5kaW5nIG9uIHN5bnRoZXNpcylcbiAgICAgIGNvbnN0IGJvZHkgPVxuICAgICAgICB0eXBlb2YgZ2F0ZXdheVJlc291cmNlLmJvZHkgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IEpTT04ucGFyc2UoZ2F0ZXdheVJlc291cmNlLmJvZHkpXG4gICAgICAgICAgOiBnYXRld2F5UmVzb3VyY2UuYm9keTtcbiAgICAgIGV4cGVjdChib2R5LnByb3BlcnRpZXMuaXBDb25maWd1cmF0aW9ucykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChib2R5LnByb3BlcnRpZXMuaXBDb25maWd1cmF0aW9ucykudG9IYXZlTGVuZ3RoKDEpO1xuXG4gICAgICAvLyBWZXJpZnkgcHVibGljSVBBZGRyZXNzIElTIHByZXNlbnQgaW4gdGhlIGlwQ29uZmlndXJhdGlvblxuICAgICAgY29uc3QgaXBDb25maWcgPSBib2R5LnByb3BlcnRpZXMuaXBDb25maWd1cmF0aW9uc1swXTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5uYW1lKS50b0JlKFwiZGVmYXVsdFwiKTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5wcm9wZXJ0aWVzLnN1Ym5ldCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5wcm9wZXJ0aWVzLnB1YmxpY0lQQWRkcmVzcykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChpcENvbmZpZy5wcm9wZXJ0aWVzLnB1YmxpY0lQQWRkcmVzcy5pZCkudG9CZShcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy9zdWItaWQvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvcHVibGljSVBBZGRyZXNzZXMvdGVzdC1waXBcIixcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -303,7 +303,7 @@ class VirtualNetworkGatewayConnection extends azapi_resource_1.AzapiResource {
|
|
|
303
303
|
}
|
|
304
304
|
exports.VirtualNetworkGatewayConnection = VirtualNetworkGatewayConnection;
|
|
305
305
|
_a = JSII_RTTI_SYMBOL_1;
|
|
306
|
-
VirtualNetworkGatewayConnection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGatewayConnection", version: "1.
|
|
306
|
+
VirtualNetworkGatewayConnection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkGatewayConnection", version: "1.9.0" };
|
|
307
307
|
(() => {
|
|
308
308
|
azapi_resource_1.AzapiResource.registerSchemas(virtual_network_gateway_connection_schemas_1.VIRTUAL_NETWORK_GATEWAY_CONNECTION_TYPE, virtual_network_gateway_connection_schemas_1.ALL_VIRTUAL_NETWORK_GATEWAY_CONNECTION_VERSIONS);
|
|
309
309
|
})();
|
|
@@ -199,7 +199,7 @@ class ConnectivityConfiguration extends azapi_resource_1.AzapiResource {
|
|
|
199
199
|
}
|
|
200
200
|
exports.ConnectivityConfiguration = ConnectivityConfiguration;
|
|
201
201
|
_a = JSII_RTTI_SYMBOL_1;
|
|
202
|
-
ConnectivityConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ConnectivityConfiguration", version: "1.
|
|
202
|
+
ConnectivityConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ConnectivityConfiguration", version: "1.9.0" };
|
|
203
203
|
(() => {
|
|
204
204
|
azapi_resource_1.AzapiResource.registerSchemas(connectivity_configuration_schemas_1.CONNECTIVITY_CONFIGURATION_TYPE, connectivity_configuration_schemas_1.ALL_CONNECTIVITY_CONFIGURATION_VERSIONS);
|
|
205
205
|
})();
|
|
@@ -207,7 +207,7 @@ class IpamPoolStaticCidr extends azapi_resource_1.AzapiResource {
|
|
|
207
207
|
}
|
|
208
208
|
exports.IpamPoolStaticCidr = IpamPoolStaticCidr;
|
|
209
209
|
_a = JSII_RTTI_SYMBOL_1;
|
|
210
|
-
IpamPoolStaticCidr[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPoolStaticCidr", version: "1.
|
|
210
|
+
IpamPoolStaticCidr[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPoolStaticCidr", version: "1.9.0" };
|
|
211
211
|
(() => {
|
|
212
212
|
azapi_resource_1.AzapiResource.registerSchemas(ipam_pool_static_cidr_schemas_1.STATIC_CIDR_TYPE, ipam_pool_static_cidr_schemas_1.ALL_STATIC_CIDR_VERSIONS);
|
|
213
213
|
})();
|
|
@@ -199,7 +199,7 @@ class IpamPool extends azapi_resource_1.AzapiResource {
|
|
|
199
199
|
}
|
|
200
200
|
exports.IpamPool = IpamPool;
|
|
201
201
|
_a = JSII_RTTI_SYMBOL_1;
|
|
202
|
-
IpamPool[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPool", version: "1.
|
|
202
|
+
IpamPool[_a] = { fqn: "@microsoft/terraform-cdk-constructs.IpamPool", version: "1.9.0" };
|
|
203
203
|
(() => {
|
|
204
204
|
azapi_resource_1.AzapiResource.registerSchemas(ipam_pool_schemas_1.IPAM_POOL_TYPE, ipam_pool_schemas_1.ALL_IPAM_POOL_VERSIONS);
|
|
205
205
|
})();
|
|
@@ -156,7 +156,7 @@ class NetworkGroupStaticMember extends azapi_resource_1.AzapiResource {
|
|
|
156
156
|
}
|
|
157
157
|
exports.NetworkGroupStaticMember = NetworkGroupStaticMember;
|
|
158
158
|
_a = JSII_RTTI_SYMBOL_1;
|
|
159
|
-
NetworkGroupStaticMember[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroupStaticMember", version: "1.
|
|
159
|
+
NetworkGroupStaticMember[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroupStaticMember", version: "1.9.0" };
|
|
160
160
|
(() => {
|
|
161
161
|
azapi_resource_1.AzapiResource.registerSchemas(network_group_static_member_schemas_1.STATIC_MEMBER_TYPE, network_group_static_member_schemas_1.ALL_STATIC_MEMBER_VERSIONS);
|
|
162
162
|
})();
|
|
@@ -151,7 +151,7 @@ class NetworkGroup extends azapi_resource_1.AzapiResource {
|
|
|
151
151
|
}
|
|
152
152
|
exports.NetworkGroup = NetworkGroup;
|
|
153
153
|
_a = JSII_RTTI_SYMBOL_1;
|
|
154
|
-
NetworkGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroup", version: "1.
|
|
154
|
+
NetworkGroup[_a] = { fqn: "@microsoft/terraform-cdk-constructs.NetworkGroup", version: "1.9.0" };
|
|
155
155
|
(() => {
|
|
156
156
|
azapi_resource_1.AzapiResource.registerSchemas(network_group_schemas_1.NETWORK_GROUP_TYPE, network_group_schemas_1.ALL_NETWORK_GROUP_VERSIONS);
|
|
157
157
|
})();
|
|
@@ -157,7 +157,7 @@ class SecurityAdminConfiguration extends azapi_resource_1.AzapiResource {
|
|
|
157
157
|
}
|
|
158
158
|
exports.SecurityAdminConfiguration = SecurityAdminConfiguration;
|
|
159
159
|
_a = JSII_RTTI_SYMBOL_1;
|
|
160
|
-
SecurityAdminConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminConfiguration", version: "1.
|
|
160
|
+
SecurityAdminConfiguration[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminConfiguration", version: "1.9.0" };
|
|
161
161
|
(() => {
|
|
162
162
|
azapi_resource_1.AzapiResource.registerSchemas(security_admin_configuration_schemas_1.SECURITY_ADMIN_CONFIGURATION_TYPE, security_admin_configuration_schemas_1.ALL_SECURITY_ADMIN_CONFIGURATION_VERSIONS);
|
|
163
163
|
})();
|
|
@@ -155,7 +155,7 @@ class SecurityAdminRuleCollection extends azapi_resource_1.AzapiResource {
|
|
|
155
155
|
}
|
|
156
156
|
exports.SecurityAdminRuleCollection = SecurityAdminRuleCollection;
|
|
157
157
|
_a = JSII_RTTI_SYMBOL_1;
|
|
158
|
-
SecurityAdminRuleCollection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRuleCollection", version: "1.
|
|
158
|
+
SecurityAdminRuleCollection[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRuleCollection", version: "1.9.0" };
|
|
159
159
|
(() => {
|
|
160
160
|
azapi_resource_1.AzapiResource.registerSchemas(security_admin_rule_collection_schemas_1.RULE_COLLECTION_TYPE, security_admin_rule_collection_schemas_1.ALL_RULE_COLLECTION_VERSIONS);
|
|
161
161
|
})();
|
|
@@ -197,7 +197,7 @@ class SecurityAdminRule extends azapi_resource_1.AzapiResource {
|
|
|
197
197
|
}
|
|
198
198
|
exports.SecurityAdminRule = SecurityAdminRule;
|
|
199
199
|
_a = JSII_RTTI_SYMBOL_1;
|
|
200
|
-
SecurityAdminRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRule", version: "1.
|
|
200
|
+
SecurityAdminRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SecurityAdminRule", version: "1.9.0" };
|
|
201
201
|
(() => {
|
|
202
202
|
azapi_resource_1.AzapiResource.registerSchemas(security_admin_rule_schemas_1.SECURITY_ADMIN_RULE_TYPE, security_admin_rule_schemas_1.ALL_SECURITY_ADMIN_RULE_VERSIONS);
|
|
203
203
|
})();
|
|
@@ -303,7 +303,7 @@ class VirtualNetworkManager extends azapi_resource_1.AzapiResource {
|
|
|
303
303
|
}
|
|
304
304
|
exports.VirtualNetworkManager = VirtualNetworkManager;
|
|
305
305
|
_a = JSII_RTTI_SYMBOL_1;
|
|
306
|
-
VirtualNetworkManager[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkManager", version: "1.
|
|
306
|
+
VirtualNetworkManager[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualNetworkManager", version: "1.9.0" };
|
|
307
307
|
(() => {
|
|
308
308
|
azapi_resource_1.AzapiResource.registerSchemas(virtual_network_manager_schemas_1.VIRTUAL_NETWORK_MANAGER_TYPE, virtual_network_manager_schemas_1.ALL_VIRTUAL_NETWORK_MANAGER_VERSIONS);
|
|
309
309
|
})();
|
|
@@ -469,7 +469,7 @@ class VirtualMachineScaleSet extends azapi_resource_1.AzapiResource {
|
|
|
469
469
|
}
|
|
470
470
|
exports.VirtualMachineScaleSet = VirtualMachineScaleSet;
|
|
471
471
|
_a = JSII_RTTI_SYMBOL_1;
|
|
472
|
-
VirtualMachineScaleSet[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualMachineScaleSet", version: "1.
|
|
472
|
+
VirtualMachineScaleSet[_a] = { fqn: "@microsoft/terraform-cdk-constructs.VirtualMachineScaleSet", version: "1.9.0" };
|
|
473
473
|
(() => {
|
|
474
474
|
// Register Network Interface schemas first (dependency)
|
|
475
475
|
azapi_resource_1.AzapiResource.registerSchemas(network_interface_schemas_1.NETWORK_INTERFACE_TYPE, network_interface_schemas_1.ALL_NETWORK_INTERFACE_VERSIONS);
|