@microsoft/terraform-cdk-constructs 1.3.1 → 1.5.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.
Files changed (86) hide show
  1. package/.jsii +32238 -27310
  2. package/API.md +43714 -35942
  3. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  4. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  5. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  6. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  7. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  8. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  9. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  10. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  11. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  12. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  13. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  14. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  15. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  16. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  17. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  18. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  19. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  20. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  21. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  22. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  23. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  24. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  25. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  26. package/lib/azure-subnet/lib/subnet.js +1 -1
  27. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  28. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  29. package/lib/azure-virtualnetworkgateway/index.d.ts +4 -0
  30. package/lib/azure-virtualnetworkgateway/index.js +21 -0
  31. package/lib/azure-virtualnetworkgateway/lib/index.d.ts +5 -0
  32. package/lib/azure-virtualnetworkgateway/lib/index.js +22 -0
  33. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.d.ts +32 -0
  34. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +298 -0
  35. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +368 -0
  36. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +285 -0
  37. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.d.ts +12 -0
  38. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.integ.js +129 -0
  39. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.d.ts +8 -0
  40. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +691 -0
  41. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  42. package/lib/azure-virtualnetworkmanager/lib/index.d.ts +5 -0
  43. package/lib/azure-virtualnetworkmanager/lib/index.js +6 -1
  44. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-schemas.d.ts +24 -0
  45. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-schemas.js +169 -0
  46. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr-schemas.d.ts +32 -0
  47. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr-schemas.js +206 -0
  48. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.d.ts +170 -0
  49. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +214 -0
  50. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.d.ts +175 -0
  51. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +206 -0
  52. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  53. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  54. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  55. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  56. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  57. package/lib/azure-virtualnetworkmanager/lib/utils/cidr-validator.d.ts +225 -0
  58. package/lib/azure-virtualnetworkmanager/lib/utils/cidr-validator.js +389 -0
  59. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +56 -0
  60. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +29 -2
  61. package/lib/azure-virtualnetworkmanager/test/cidr-validator.spec.d.ts +6 -0
  62. package/lib/azure-virtualnetworkmanager/test/cidr-validator.spec.js +292 -0
  63. package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.d.ts +6 -0
  64. package/lib/azure-virtualnetworkmanager/test/ipam-pool-static-cidr.spec.js +430 -0
  65. package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.d.ts +6 -0
  66. package/lib/azure-virtualnetworkmanager/test/ipam-pool.spec.js +372 -0
  67. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +2 -1
  68. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +30 -3
  69. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +105 -1
  70. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
  71. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  72. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  73. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  74. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  75. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  76. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  77. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  78. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  79. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  80. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  81. package/lib/index.d.ts +2 -0
  82. package/lib/index.js +4 -2
  83. package/lib/testing/index.js +2 -2
  84. package/lib/testing/lib/cleanup.js +1 -1
  85. package/lib/testing/lib/metadata.js +1 -1
  86. package/package.json +1 -1
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  const cdktf_1 = require("cdktf");
12
12
  const cdktf = require("cdktf");
13
13
  const connectivity_configuration_1 = require("../lib/connectivity-configuration");
14
+ const ipam_pool_1 = require("../lib/ipam-pool");
14
15
  const network_group_1 = require("../lib/network-group");
15
16
  const network_group_static_member_1 = require("../lib/network-group-static-member");
16
17
  const security_admin_configuration_1 = require("../lib/security-admin-configuration");
@@ -611,6 +612,109 @@ describe("VirtualNetworkManager", () => {
611
612
  expect(securityConfig.props.name).toBe("production-security");
612
613
  });
613
614
  });
615
+ describe("IPAM Pool Convenience Methods", () => {
616
+ let manager;
617
+ beforeEach(() => {
618
+ manager = new virtual_network_manager_1.VirtualNetworkManager(stack, "TestManager", {
619
+ name: "test-manager",
620
+ location: "eastus",
621
+ resourceGroupId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg",
622
+ networkManagerScopes: {
623
+ subscriptions: [
624
+ "/subscriptions/00000000-0000-0000-0000-000000000000",
625
+ ],
626
+ },
627
+ networkManagerScopeAccesses: ["Connectivity"],
628
+ });
629
+ });
630
+ it("should create IpamPool using convenience method", () => {
631
+ const pool = manager.addIpamPool("prod-pool", {
632
+ name: "production-pool",
633
+ location: "eastus",
634
+ addressPrefixes: ["10.0.0.0/8"],
635
+ description: "Production IP pool",
636
+ });
637
+ expect(pool).toBeInstanceOf(ipam_pool_1.IpamPool);
638
+ expect(pool.props.networkManagerId).toBe(manager.id);
639
+ expect(pool.props.name).toBe("production-pool");
640
+ expect(pool.props.addressPrefixes).toEqual(["10.0.0.0/8"]);
641
+ expect(pool.props.description).toBe("Production IP pool");
642
+ });
643
+ it("should create IpamPool with all properties using convenience method", () => {
644
+ const pool = manager.addIpamPool("regional-pool", {
645
+ name: "eastus-pool",
646
+ location: "eastus",
647
+ addressPrefixes: ["10.1.0.0/16", "10.2.0.0/16"],
648
+ description: "East US regional pool",
649
+ displayName: "East US Production Pool",
650
+ parentPoolName: "production-pool",
651
+ tags: {
652
+ region: "eastus",
653
+ environment: "production",
654
+ },
655
+ });
656
+ expect(pool).toBeInstanceOf(ipam_pool_1.IpamPool);
657
+ expect(pool.props.networkManagerId).toBe(manager.id);
658
+ expect(pool.props.name).toBe("eastus-pool");
659
+ expect(pool.props.addressPrefixes).toEqual([
660
+ "10.1.0.0/16",
661
+ "10.2.0.0/16",
662
+ ]);
663
+ expect(pool.props.description).toBe("East US regional pool");
664
+ expect(pool.props.displayName).toBe("East US Production Pool");
665
+ expect(pool.props.parentPoolName).toBe("production-pool");
666
+ expect(pool.props.tags).toEqual({
667
+ region: "eastus",
668
+ environment: "production",
669
+ });
670
+ });
671
+ it("should create IpamPool with ignoreChanges using convenience method", () => {
672
+ const pool = manager.addIpamPool("managed-pool", {
673
+ name: "externally-managed-pool",
674
+ location: "westus",
675
+ addressPrefixes: ["172.16.0.0/12"],
676
+ ignoreChanges: ["tags", "description"],
677
+ });
678
+ expect(pool).toBeInstanceOf(ipam_pool_1.IpamPool);
679
+ expect(pool.props.ignoreChanges).toEqual(["tags", "description"]);
680
+ });
681
+ it("should create hierarchical IpamPools using convenience method", () => {
682
+ const rootPool = manager.addIpamPool("root-pool", {
683
+ name: "root-pool",
684
+ location: "eastus",
685
+ addressPrefixes: ["10.0.0.0/8"],
686
+ description: "Root IP pool",
687
+ });
688
+ const childPool = manager.addIpamPool("child-pool", {
689
+ name: "child-pool",
690
+ location: "eastus",
691
+ addressPrefixes: ["10.1.0.0/16"],
692
+ parentPoolName: rootPool.props.name,
693
+ description: "Child IP pool",
694
+ });
695
+ expect(rootPool).toBeInstanceOf(ipam_pool_1.IpamPool);
696
+ expect(childPool).toBeInstanceOf(ipam_pool_1.IpamPool);
697
+ expect(childPool.props.parentPoolName).toBe(rootPool.props.name);
698
+ });
699
+ it("should validate CIDR prefixes when creating pool via convenience method", () => {
700
+ expect(() => {
701
+ manager.addIpamPool("invalid-pool", {
702
+ name: "invalid-pool",
703
+ location: "eastus",
704
+ addressPrefixes: ["invalid-cidr"],
705
+ });
706
+ }).toThrow();
707
+ });
708
+ it("should detect overlapping CIDR prefixes when creating pool via convenience method", () => {
709
+ expect(() => {
710
+ manager.addIpamPool("overlapping-pool", {
711
+ name: "overlapping-pool",
712
+ location: "eastus",
713
+ addressPrefixes: ["10.0.0.0/16", "10.0.1.0/24"],
714
+ });
715
+ }).toThrow();
716
+ });
717
+ });
614
718
  });
615
719
  describe("NetworkGroup", () => {
616
720
  let app;
@@ -1649,4 +1753,4 @@ describe("SecurityAdminRule", () => {
1649
1753
  });
1650
1754
  });
1651
1755
  });
1652
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLW1hbmFnZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya21hbmFnZXIvdGVzdC92aXJ0dWFsLW5ldHdvcmstbWFuYWdlci5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQUVILGlDQUFnQztBQUNoQywrQkFBK0I7QUFDL0Isa0ZBRzJDO0FBQzNDLHdEQUF1RTtBQUN2RSxvRkFHNEM7QUFDNUMsc0ZBRzZDO0FBQzdDLG9FQUdvQztBQUNwQywwRkFHK0M7QUFDL0MsNEVBR3dDO0FBRXhDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7SUFDckMsSUFBSSxHQUFjLENBQUM7SUFDbkIsSUFBSSxLQUEyQixDQUFDO0lBRWhDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RELENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsMEVBQTBFLEVBQUUsR0FBRyxFQUFFO1lBQ2xGLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUM7YUFDL0QsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENB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QUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRTtpQkFDL0Q7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXByZWhlbnNpdmUgdGVzdHMgZm9yIHRoZSBWaXJ0dWFsIE5ldHdvcmsgTWFuYWdlciBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIFZpcnR1YWxOZXR3b3JrTWFuYWdlciBjbGFzcyBhbmQgYWxsIGNoaWxkIHJlc291cmNlXG4gKiBjb25zdHJ1Y3RzIHVzaW5nIHRoZSBBemFwaVJlc291cmNlIGZyYW1ld29yay4gVGVzdHMgY292ZXIgYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbixcbiAqIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uLCByZXNvdXJjZSBjcmVhdGlvbixcbiAqIGFuZCBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcy5cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24sXG4gIENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb25Qcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9jb25uZWN0aXZpdHktY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHsgTmV0d29ya0dyb3VwLCBOZXR3b3JrR3JvdXBQcm9wcyB9IGZyb20gXCIuLi9saWIvbmV0d29yay1ncm91cFwiO1xuaW1wb3J0IHtcbiAgTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyLFxuICBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXJQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9uZXR3b3JrLWdyb3VwLXN0YXRpYy1tZW1iZXJcIjtcbmltcG9ydCB7XG4gIFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uLFxuICBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvblByb3BzLFxufSBmcm9tIFwiLi4vbGliL3NlY3VyaXR5LWFkbWluLWNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7XG4gIFNlY3VyaXR5QWRtaW5SdWxlLFxuICBTZWN1cml0eUFkbWluUnVsZVByb3BzLFxufSBmcm9tIFwiLi4vbGliL3NlY3VyaXR5LWFkbWluLXJ1bGVcIjtcbmltcG9ydCB7XG4gIFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbixcbiAgU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uUHJvcHMsXG59IGZyb20gXCIuLi9saWIvc2VjdXJpdHktYWRtaW4tcnVsZS1jb2xsZWN0aW9uXCI7XG5pbXBvcnQge1xuICBWaXJ0dWFsTmV0d29ya01hbmFnZXIsXG4gIFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzLFxufSBmcm9tIFwiLi4vbGliL3ZpcnR1YWwtbmV0d29yay1tYW5hZ2VyXCI7XG5cbmRlc2NyaWJlKFwiVmlydHVhbE5ldHdvcmtNYW5hZ2VyXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3Qtc3RhY2tcIik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQmFzaWMgSW5zdGFudGlhdGlvbiBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGEgVmlydHVhbCBOZXR3b3JrIE1hbmFnZXIgd2l0aCBtaW5pbXVtIHJlcXVpcmVkIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIiwgXCJTZWN1cml0eUFkbWluXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlcikudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtNYW5hZ2VyKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnJlc291cmNlTmFtZSkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwiTWljcm9zb2Z0Lk5ldHdvcmsvbmV0d29ya01hbmFnZXJzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGEgVmlydHVhbCBOZXR3b3JrIE1hbmFnZXIgd2l0aCBhbGwgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXItZnVsbFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWFuYWdlbWVudEdyb3VwczogW1xuICAgICAgICAgICAgXCIvcHJvdmlkZXJzL01pY3Jvc29mdC5NYW5hZ2VtZW50L21hbmFnZW1lbnRHcm91cHMvbWcxXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIiwgXCJTZWN1cml0eUFkbWluXCJdLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUZXN0IG5ldHdvcmsgbWFuYWdlciB3aXRoIGFsbCBwcm9wZXJ0aWVzXCIsXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJ0ZXN0XCIsXG4gICAgICAgICAgcHJvamVjdDogXCJjZGt0Zi1jb25zdHJ1Y3RzXCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIlRlc3QgbmV0d29yayBtYW5hZ2VyIHdpdGggYWxsIHByb3BlcnRpZXNcIixcbiAgICAgICk7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy50YWdzKS50b0VxdWFsKHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IFwidGVzdFwiLFxuICAgICAgICBwcm9qZWN0OiBcImNka3RmLWNvbnN0cnVjdHNcIixcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KG1hbmFnZXIudGFncykudG9FcXVhbChwcm9wcy50YWdzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJGcmFtZXdvcmsgSW50ZWdyYXRpb24gVGVzdHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHdoZW4gbm9uZSBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2Ugc3BlY2lmaWVkIEFQSSB2ZXJzaW9uIHdoZW4gcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMTEtMDFcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMy0xMS0wMVwiKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwiQDIwMjMtMTEtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZWdpc3RlciBzY2hlbWFzIG9uIGZpcnN0IGluc3RhbnRpYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICAvLyBGaXJzdCBpbnN0YW50aWF0aW9uIHNob3VsZCByZWdpc3RlciBzY2hlbWFzXG4gICAgICBjb25zdCBtYW5hZ2VyMSA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXIxXCIsIHByb3BzKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyMSkudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtNYW5hZ2VyKTtcblxuICAgICAgLy8gU2Vjb25kIGluc3RhbnRpYXRpb24gc2hvdWxkIG5vdCByZS1yZWdpc3RlclxuICAgICAgY29uc3QgbWFuYWdlcjIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyMlwiLCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyLTJcIixcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KG1hbmFnZXIyKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya01hbmFnZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByb3BlcnR5IFZhbGlkYXRpb24gVGVzdHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHByb3Blcmx5IGZvcm1hdCBuZXR3b3JrTWFuYWdlclNjb3BlcyB3aXRoIHN1YnNjcmlwdGlvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMVwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3Blcy5zdWJzY3JpcHRpb25zKS50b0hhdmVMZW5ndGgoMik7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3Blcy5zdWJzY3JpcHRpb25zKS50b0NvbnRhaW4oXG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3Blcmx5IGZvcm1hdCBuZXR3b3JrTWFuYWdlclNjb3BlcyB3aXRoIG1hbmFnZW1lbnQgZ3JvdXBzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBtYW5hZ2VtZW50R3JvdXBzOiBbXG4gICAgICAgICAgICBcIi9wcm92aWRlcnMvTWljcm9zb2Z0Lk1hbmFnZW1lbnQvbWFuYWdlbWVudEdyb3Vwcy9tZzFcIixcbiAgICAgICAgICAgIFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL21nMlwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZXMubWFuYWdlbWVudEdyb3VwcykudG9IYXZlTGVuZ3RoKFxuICAgICAgICAyLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVzLm1hbmFnZW1lbnRHcm91cHMpLnRvQ29udGFpbihcbiAgICAgICAgXCIvcHJvdmlkZXJzL01pY3Jvc29mdC5NYW5hZ2VtZW50L21hbmFnZW1lbnRHcm91cHMvbWcxXCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3Blcmx5IGZvcm1hdCBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMgd2l0aCBDb25uZWN0aXZpdHkgYW5kIFNlY3VyaXR5QWRtaW5cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIiwgXCJTZWN1cml0eUFkbWluXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlcykudG9Db250YWluKFxuICAgICAgICBcIkNvbm5lY3Rpdml0eVwiLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlcykudG9Db250YWluKFxuICAgICAgICBcIlNlY3VyaXR5QWRtaW5cIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm9wZXJseSBmb3JtYXQgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzIHdpdGggUm91dGluZ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIlJvdXRpbmdcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzKS50b0NvbnRhaW4oXCJSb3V0aW5nXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRhZyBNYW5hZ2VtZW50IFRlc3RzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBhZGQgdGFncyB1c2luZyBhZGRUYWcgbWV0aG9kXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IFwidGVzdFwiLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBtYW5hZ2VyLmFkZFRhZyhcInByb2plY3RcIiwgXCJuZXR3b3JrLWluZnJhc3RydWN0dXJlXCIpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy50YWdzIS5wcm9qZWN0KS50b0JlKFwibmV0d29yay1pbmZyYXN0cnVjdHVyZVwiKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLnRhZ3MhLmVudmlyb25tZW50KS50b0JlKFwidGVzdFwiKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwibmV0d29yay1pbmZyYXN0cnVjdHVyZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJlbW92ZSB0YWdzIHVzaW5nIHJlbW92ZVRhZyBtZXRob2RcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJ0ZXN0XCIsXG4gICAgICAgICAgdGVtcG9yYXJ5OiBcInRydWVcIixcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgbWFuYWdlci5yZW1vdmVUYWcoXCJ0ZW1wb3JhcnlcIik7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLnRhZ3MhLnRlbXBvcmFyeSkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMudGFncyEuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgYWRkIHRhZ3Mgd2hlbiBubyBpbml0aWFsIHRhZ3MgZXhpc3RcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIG1hbmFnZXIuYWRkVGFnKFwiZmlyc3RUYWdcIiwgXCJmaXJzdFZhbHVlXCIpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy50YWdzIS5maXJzdFRhZykudG9CZShcImZpcnN0VmFsdWVcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dCBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHByb3BlciBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWFuYWdlci5uYW1lT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIubG9jYXRpb25PdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWFuYWdlci50YWdzT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIuc2NvcGVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWFuYWdlci5zY29wZUFjY2Vzc2VzT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBwcm9wZXIgcmVzb3VyY2UgcmVmZXJlbmNlcyBpbiBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgICBleHBlY3QobWFuYWdlci5yZXNvdXJjZU5hbWUpLnRvTWF0Y2goL15cXCRcXHsuKlxcLm5hbWVcXH0kLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiTGlmZWN5Y2xlIE1hbmFnZW1lbnQgVGVzdHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZV9jaGFuZ2VzIHdoZW4gc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5pZ25vcmVDaGFuZ2VzKS50b0VxdWFsKFtcInRhZ3NcIl0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBpZ25vcmVfY2hhbmdlcyBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLmlnbm9yZUNoYW5nZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLmlnbm9yZUNoYW5nZXMpLnRvQ29udGFpbihcInRhZ3NcIik7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5pZ25vcmVDaGFuZ2VzKS50b0NvbnRhaW4oXCJkZXNjcmlwdGlvblwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgU3ludGhlc2lzIFRlc3RzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCIsIFwiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGVzdCBuZXR3b3JrIG1hbmFnZXJcIixcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInRlc3RcIixcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIFZpcnR1YWwgTmV0d29yayBNYW5hZ2VycyBpbiB0aGUgc2FtZSBzdGFja1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczE6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyLTFcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHByb3BzMjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXItMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8xMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTFcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIlNlY3VyaXR5QWRtaW5cIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyMSA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXIxXCIsIHByb3BzMSk7XG4gICAgICBjb25zdCBtYW5hZ2VyMiA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXIyXCIsIHByb3BzMik7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyMS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIyLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjMtMTEtMDFcIik7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB2ZXJpZnkgVGVycmFmb3JtIG91dHB1dCBzdHJ1Y3R1cmVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG5cbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5vdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcub3V0cHV0LmlkKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLm91dHB1dC5uYW1lKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLm91dHB1dC5sb2NhdGlvbikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5vdXRwdXQudGFncykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5vdXRwdXQuc2NvcGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcub3V0cHV0LnNjb3BlQWNjZXNzZXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUmVzb3VyY2UgVHlwZSBhbmQgVmVyc2lvbiBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IHJlc291cmNlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya01hbmFnZXIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhbGwgcmVnaXN0ZXJlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDIzLTExLTAxXCIsIFwiMjAyNC0wNS0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXN0U3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBgU3RhY2stJHt2ZXJzaW9ufWApO1xuICAgICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihcbiAgICAgICAgICB0ZXN0U3RhY2ssXG4gICAgICAgICAgYE1hbmFnZXItJHt2ZXJzaW9ufWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYG1hbmFnZXItJHt2ZXJzaW9ufWAsXG4gICAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZXhwZWN0KG1hbmFnZXIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKHZlcnNpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2UgbGF0ZXN0IHZlcnNpb24gYXMgZGVmYXVsdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNS0wMVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJEZXNjcmlwdGlvbiBQcm9wZXJ0eSBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFZpcnR1YWwgTmV0d29yayBNYW5hZ2VyIHdpdGggZGVzY3JpcHRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNlbnRyYWwgbmV0d29yayBtYW5hZ2VtZW50IGZvciBwcm9kdWN0aW9uIHdvcmtsb2Fkc1wiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcbiAgICAgICAgXCJDZW50cmFsIG5ldHdvcmsgbWFuYWdlbWVudCBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHNcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVmlydHVhbCBOZXR3b3JrIE1hbmFnZXIgd2l0aG91dCBkZXNjcmlwdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMuZGVzY3JpcHRpb24pLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJNaXhlZCBTY29wZSBDb25maWd1cmF0aW9uIFRlc3RzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGJvdGggc3Vic2NyaXB0aW9ucyBhbmQgbWFuYWdlbWVudCBncm91cHMgaW4gc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtYW5hZ2VtZW50R3JvdXBzOiBbXG4gICAgICAgICAgICBcIi9wcm92aWRlcnMvTWljcm9zb2Z0Lk1hbmFnZW1lbnQvbWFuYWdlbWVudEdyb3Vwcy9tZzFcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiLCBcIlNlY3VyaXR5QWRtaW5cIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVzLnN1YnNjcmlwdGlvbnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVzLm1hbmFnZW1lbnRHcm91cHMpLnRvSGF2ZUxlbmd0aChcbiAgICAgICAgMSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGFsbCB0aHJlZSBzY29wZSBhY2Nlc3MgdHlwZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXG4gICAgICAgICAgXCJDb25uZWN0aXZpdHlcIixcbiAgICAgICAgICBcIlNlY3VyaXR5QWRtaW5cIixcbiAgICAgICAgICBcIlJvdXRpbmdcIixcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzKS50b0hhdmVMZW5ndGgoMyk7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMpLnRvQ29udGFpbihcbiAgICAgICAgXCJDb25uZWN0aXZpdHlcIixcbiAgICAgICk7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMpLnRvQ29udGFpbihcbiAgICAgICAgXCJTZWN1cml0eUFkbWluXCIsXG4gICAgICApO1xuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzKS50b0NvbnRhaW4oXCJSb3V0aW5nXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNvbnZlbmllbmNlIE1ldGhvZHMgZm9yIENoaWxkIFJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgbGV0IG1hbmFnZXI6IFZpcnR1YWxOZXR3b3JrTWFuYWdlcjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCIsIFwiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIE5ldHdvcmtHcm91cCB1c2luZyBjb252ZW5pZW5jZSBtZXRob2RcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbmV0d29ya0dyb3VwID0gbWFuYWdlci5hZGROZXR3b3JrR3JvdXAoXCJwcm9kLWdyb3VwXCIsIHtcbiAgICAgICAgbmFtZTogXCJwcm9kdWN0aW9uLXZuZXRzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlByb2R1Y3Rpb24gdmlydHVhbCBuZXR3b3Jrc1wiLFxuICAgICAgICBtZW1iZXJUeXBlOiBcIlZpcnR1YWxOZXR3b3JrXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cCkudG9CZUluc3RhbmNlT2YoTmV0d29ya0dyb3VwKTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMubmV0d29ya01hbmFnZXJJZCkudG9CZShtYW5hZ2VyLmlkKTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMubmFtZSkudG9CZShcInByb2R1Y3Rpb24tdm5ldHNcIik7XG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIlByb2R1Y3Rpb24gdmlydHVhbCBuZXR3b3Jrc1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uIHVzaW5nIGNvbnZlbmllbmNlIG1ldGhvZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXR3b3JrR3JvdXAgPSBtYW5hZ2VyLmFkZE5ldHdvcmtHcm91cChcInByb2QtZ3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInByb2R1Y3Rpb24tdm5ldHNcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25uZWN0aXZpdHlDb25maWcgPSBtYW5hZ2VyLmFkZENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oXG4gICAgICAgIFwiaHViLXNwb2tlXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInByb2R1Y3Rpb24taHViLXNwb2tlXCIsXG4gICAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiSHViQW5kU3Bva2VcIixcbiAgICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgICAgICAgZ3JvdXBDb25uZWN0aXZpdHk6IFwiTm9uZVwiLFxuICAgICAgICAgICAgICB1c2VIdWJHYXRld2F5OiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGh1YnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy9odWJcIixcbiAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIk1pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbm5lY3Rpdml0eUNvbmZpZykudG9CZUluc3RhbmNlT2YoQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbik7XG4gICAgICBleHBlY3QoY29ubmVjdGl2aXR5Q29uZmlnLnByb3BzLm5ldHdvcmtNYW5hZ2VySWQpLnRvQmUobWFuYWdlci5pZCk7XG4gICAgICBleHBlY3QoY29ubmVjdGl2aXR5Q29uZmlnLnByb3BzLmNvbm5lY3Rpdml0eVRvcG9sb2d5KS50b0JlKFwiSHViQW5kU3Bva2VcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb24gdXNpbmcgY29udmVuaWVuY2UgbWV0aG9kXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyaXR5Q29uZmlnID0gbWFuYWdlci5hZGRTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihcInNlY3VyaXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJwcm9kdWN0aW9uLXNlY3VyaXR5XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkhpZ2gtcHJpb3JpdHkgc2VjdXJpdHkgcnVsZXNcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qoc2VjdXJpdHlDb25maWcpLnRvQmVJbnN0YW5jZU9mKFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKTtcbiAgICAgIGV4cGVjdChzZWN1cml0eUNvbmZpZy5wcm9wcy5uZXR3b3JrTWFuYWdlcklkKS50b0JlKG1hbmFnZXIuaWQpO1xuICAgICAgZXhwZWN0KHNlY3VyaXR5Q29uZmlnLnByb3BzLm5hbWUpLnRvQmUoXCJwcm9kdWN0aW9uLXNlY3VyaXR5XCIpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIk5ldHdvcmtHcm91cFwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RmLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0Zi5UZXJyYWZvcm1TdGFjaztcbiAgbGV0IG1hbmFnZXI6IFZpcnR1YWxOZXR3b3JrTWFuYWdlcjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RmLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJ0ZXN0LXN0YWNrXCIpO1xuICAgIG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdC1tYW5hZ2VyXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uczogW1wiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCJdLFxuICAgICAgfSxcbiAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhc2ljIEluc3RhbnRpYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBOZXR3b3JrR3JvdXAgd2l0aCBtaW5pbXVtIHJlcXVpcmVkIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IE5ldHdvcmtHcm91cFByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtZ3JvdXBcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cCkudG9CZUluc3RhbmNlT2YoTmV0d29ya0dyb3VwKTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMpLnRvQmUocHJvcHMpO1xuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5yZXNvdXJjZU5hbWUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLmlkKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIE5ldHdvcmtHcm91cCB3aXRoIGFsbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBOZXR3b3JrR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJwcm9kdWN0aW9uLXZuZXRzXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlByb2R1Y3Rpb24gdmlydHVhbCBuZXR3b3JrcyBmb3IgRWFzdCBVU1wiLFxuICAgICAgICBtZW1iZXJUeXBlOiBcIlZpcnR1YWxOZXR3b3JrXCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBuZXR3b3JrR3JvdXAgPSBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cFwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMuZGVzY3JpcHRpb24pLnRvQmUoXG4gICAgICAgIFwiUHJvZHVjdGlvbiB2aXJ0dWFsIG5ldHdvcmtzIGZvciBFYXN0IFVTXCIsXG4gICAgICApO1xuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5wcm9wcy5tZW1iZXJUeXBlKS50b0JlKFwiVmlydHVhbE5ldHdvcmtcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgTmV0d29ya0dyb3VwIHdpdGggU3VibmV0IG1lbWJlciB0eXBlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBOZXR3b3JrR3JvdXBQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJzdWJuZXQtZ3JvdXBcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgbWVtYmVyVHlwZTogXCJTdWJuZXRcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiU3VibmV0LWxldmVsIG5ldHdvcmsgZ3JvdXBcIixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiU3VibmV0R3JvdXBcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnByb3BzLm1lbWJlclR5cGUpLnRvQmUoXCJTdWJuZXRcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQVBJIFZlcnNpb24gSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHdoZW4gbm9uZSBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtZ3JvdXBcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2Ugc3BlY2lmaWVkIEFQSSB2ZXJzaW9uIHdoZW4gcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtZ3JvdXBcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTExLTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcHJvcGVyIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWdyb3VwXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5pZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBwcm9wZXIgcmVzb3VyY2UgcmVmZXJlbmNlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXR3b3JrR3JvdXAgPSBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5yZXNvdXJjZU5hbWUpLnRvTWF0Y2goL15cXCRcXHsuKlxcLm5hbWVcXH0kLyk7XG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnByb3Zpc2lvbmluZ1N0YXRlKS50b01hdGNoKFxuICAgICAgICAvXlxcJFxcey4qXFwub3V0cHV0XFwucHJvcGVydGllc1xcLnByb3Zpc2lvbmluZ1N0YXRlXFx9JC8sXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkxpZmVjeWNsZSBNYW5hZ2VtZW50XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBhcHBseSBpZ25vcmVfY2hhbmdlcyB3aGVuIHNwZWNpZmllZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXR3b3JrR3JvdXAgPSBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJkZXNjcmlwdGlvblwiXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnByb3BzLmlnbm9yZUNoYW5nZXMpLnRvRXF1YWwoW1wiZGVzY3JpcHRpb25cIl0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBTeW50aGVzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtZ3JvdXBcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGVzdCBuZXR3b3JrIGdyb3VwXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcucmVzb3VyY2UpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyO1xuICBsZXQgbmV0d29ya0dyb3VwOiBOZXR3b3JrR3JvdXA7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBzdGFjayA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1TdGFjayhhcHAsIFwidGVzdC1zdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCB7XG4gICAgICBuYW1lOiBcInRlc3QtbWFuYWdlclwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiXSxcbiAgICAgIH0sXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICB9KTtcbiAgICBuZXR3b3JrR3JvdXAgPSBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cFwiLCB7XG4gICAgICBuYW1lOiBcInRlc3QtZ3JvdXBcIixcbiAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQmFzaWMgSW5zdGFudGlhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFN0YXRpY01lbWJlciBmb3IgVk5ldFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidm5ldC1tZW1iZXJcIixcbiAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgcmVzb3VyY2VJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3MvdGVzdC12bmV0XCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtZW1iZXIgPSBuZXcgTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyKHN0YWNrLCBcIlZuZXRNZW1iZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWVtYmVyKS50b0JlSW5zdGFuY2VPZihOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIpO1xuICAgICAgZXhwZWN0KG1lbWJlci5wcm9wcykudG9CZShwcm9wcyk7XG4gICAgICBleHBlY3QobWVtYmVyLnByb3BzLnJlc291cmNlSWQpLnRvQ29udGFpbihcInZpcnR1YWxOZXR3b3Jrc1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBTdGF0aWNNZW1iZXIgZm9yIFN1Ym5ldFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwic3VibmV0LW1lbWJlclwiLFxuICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICByZXNvdXJjZUlkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy90ZXN0LXZuZXQvc3VibmV0cy90ZXN0LXN1Ym5ldFwiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWVtYmVyID0gbmV3IE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcihzdGFjaywgXCJTdWJuZXRNZW1iZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWVtYmVyKS50b0JlSW5zdGFuY2VPZihOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIpO1xuICAgICAgZXhwZWN0KG1lbWJlci5wcm9wcy5yZXNvdXJjZUlkKS50b0NvbnRhaW4oXCJzdWJuZXRzXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkFQSSBWZXJzaW9uIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB1c2UgZGVmYXVsdCBBUEkgdmVyc2lvbiB3aGVuIG5vbmUgc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IG5ldyBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIoc3RhY2ssIFwiVGVzdE1lbWJlclwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1tZW1iZXJcIixcbiAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChtZW1iZXIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNS0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBzcGVjaWZpZWQgQVBJIHZlcnNpb24gd2hlbiBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZW1iZXIgPSBuZXcgTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyKHN0YWNrLCBcIlRlc3RNZW1iZXJcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtbWVtYmVyXCIsXG4gICAgICAgIG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQsXG4gICAgICAgIHJlc291cmNlSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC92aXJ0dWFsTmV0d29ya3Mvdm5ldDFcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG1lbWJlci5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTExLTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcHJvcGVyIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IG5ldyBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIoc3RhY2ssIFwiVGVzdE1lbWJlclwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1tZW1iZXJcIixcbiAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChtZW1iZXIuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWVtYmVyLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWVtYmVyLnJlc291cmNlSWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIHByb3BlciByZXNvdXJjZSByZWZlcmVuY2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IG5ldyBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIoc3RhY2ssIFwiVGVzdE1lbWJlclwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1tZW1iZXJcIixcbiAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChtZW1iZXIuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgICAgZXhwZWN0KG1lbWJlci5yZXNvdXJjZU5hbWUpLnRvTWF0Y2goL15cXCRcXHsuKlxcLm5hbWVcXH0kLyk7XG4gICAgICAvLyBtZW1iZXJSZXNvdXJjZUlkIHJldHVybnMgdGhlIGlucHV0IHJlc291cmNlSWQgc2luY2UgQXp1cmUgQVBJIGRvZXNuJ3QgcmV0dXJuIGl0XG4gICAgICBleHBlY3QobWVtYmVyLm1lbWJlclJlc291cmNlSWQpLnRvQmUoXG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvdGVzdC92aXJ0dWFsTmV0d29ya3Mvdm5ldDFcIixcbiAgICAgICk7XG4gICAgICBleHBlY3QobWVtYmVyLnJlZ2lvbikudG9NYXRjaCgvXlxcJFxcey4qXFwub3V0cHV0XFwucHJvcGVydGllc1xcLnJlZ2lvblxcfSQvKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQYXJlbnQtQ2hpbGQgUmVsYXRpb25zaGlwXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjb3JyZWN0bHkgcmVmZXJlbmNlIHBhcmVudCBuZXR3b3JrIGdyb3VwXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IG5ldyBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIoc3RhY2ssIFwiVGVzdE1lbWJlclwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1tZW1iZXJcIixcbiAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChtZW1iZXIucHJvcHMubmV0d29ya0dyb3VwSWQpLnRvQmUobmV0d29ya0dyb3VwLmlkKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgU3ludGhlc2lzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIoc3RhY2ssIFwiVGVzdE1lbWJlclwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1tZW1iZXJcIixcbiAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkNvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0Zi5BcHA7XG4gIGxldCBzdGFjazogY2RrdGYuVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBWaXJ0dWFsTmV0d29ya01hbmFnZXI7XG4gIGxldCBuZXR3b3JrR3JvdXA6IE5ldHdvcmtHcm91cDtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RmLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJ0ZXN0LXN0YWNrXCIpO1xuICAgIG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdC1tYW5hZ2VyXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uczogW1wiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCJdLFxuICAgICAgfSxcbiAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgIH0pO1xuICAgIG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYXNpYyBJbnN0YW50aWF0aW9uIC0gTWVzaCBUb3BvbG9neVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIE1lc2ggY29ubmVjdGl2aXR5IGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJtZXNoLWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBjb25uZWN0aXZpdHlUb3BvbG9neTogXCJNZXNoXCIsXG4gICAgICAgIGFwcGxpZXNUb0dyb3VwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQsXG4gICAgICAgICAgICBncm91cENvbm5lY3Rpdml0eTogXCJEaXJlY3RseUNvbm5lY3RlZFwiLFxuICAgICAgICAgICAgaXNHbG9iYWw6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbihzdGFjaywgXCJNZXNoQ29uZmlnXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGNvbmZpZykudG9CZUluc3RhbmNlT2YoQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbik7XG4gICAgICBleHBlY3QoY29uZmlnLnRvcG9sb2d5KS50b0JlKFwiTWVzaFwiKTtcbiAgICAgIGV4cGVjdChjb25maWcucHJvcHMuYXBwbGllc1RvR3JvdXBzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgZ2xvYmFsIE1lc2ggY29ubmVjdGl2aXR5IGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJnbG9iYWwtbWVzaFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBjb25uZWN0aXZpdHlUb3BvbG9neTogXCJNZXNoXCIsXG4gICAgICAgIGFwcGxpZXNUb0dyb3VwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQsXG4gICAgICAgICAgICBncm91cENvbm5lY3Rpdml0eTogXCJEaXJlY3RseUNvbm5lY3RlZFwiLFxuICAgICAgICAgICAgaXNHbG9iYWw6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaXNHbG9iYWw6IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbihzdGFjaywgXCJHbG9iYWxNZXNoXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5pc0dsb2JhbCkudG9CZSh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYXNpYyBJbnN0YW50aWF0aW9uIC0gSHViLWFuZC1TcG9rZSBUb3BvbG9neVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIEh1Yi1hbmQtU3Bva2UgY29ubmVjdGl2aXR5IGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJodWItc3Bva2UtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIkh1YkFuZFNwb2tlXCIsXG4gICAgICAgIGFwcGxpZXNUb0dyb3VwczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQsXG4gICAgICAgICAgICBncm91cENvbm5lY3Rpdml0eTogXCJOb25lXCIsXG4gICAgICAgICAgICB1c2VIdWJHYXRld2F5OiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGh1YnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL2h1Yi12bmV0XCIsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJIdWJTcG9rZUNvbmZpZ1wiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb25maWcudG9wb2xvZ3kpLnRvQmUoXCJIdWJBbmRTcG9rZVwiKTtcbiAgICAgIGV4cGVjdChjb25maWcucHJvcHMuaHVicykudG9IYXZlTGVuZ3RoKDEpO1xuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5hcHBsaWVzVG9Hcm91cHNbMF0udXNlSHViR2F0ZXdheSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBIdWItYW5kLVNwb2tlIHdpdGggbXVsdGlwbGUgaHVic1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcIm11bHRpLWh1Yi1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiSHViQW5kU3Bva2VcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgICAgIGdyb3VwQ29ubmVjdGl2aXR5OiBcIk5vbmVcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBodWJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy9odWItdm5ldC0xXCIsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL2h1Yi12bmV0LTJcIixcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3NcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIk11bHRpSHViQ29uZmlnXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5odWJzKS50b0hhdmVMZW5ndGgoMik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHJvcGVydHkgVmFsaWRhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGRlc2NyaXB0aW9uIHByb3BlcnR5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIlRlc3RDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkh1Yi1hbmQtc3Bva2UgdG9wb2xvZ3kgZm9yIHByb2R1Y3Rpb24gd29ya2xvYWRzXCIsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIkh1YkFuZFNwb2tlXCIsXG4gICAgICAgIGFwcGxpZXNUb0dyb3VwczogW3sgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCB9XSxcbiAgICAgICAgaHViczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlc291cmNlSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC92aXJ0dWFsTmV0d29ya3MvaHViXCIsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IFwiTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoY29uZmlnLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIkh1Yi1hbmQtc3Bva2UgdG9wb2xvZ3kgZm9yIHByb2R1Y3Rpb24gd29ya2xvYWRzXCIsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGRlbGV0ZUV4aXN0aW5nUGVlcmluZyBwcm9wZXJ0eVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbihzdGFjaywgXCJUZXN0Q29uZmlnXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBjb25uZWN0aXZpdHlUb3BvbG9neTogXCJNZXNoXCIsXG4gICAgICAgIGFwcGxpZXNUb0dyb3VwczogW3sgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCB9XSxcbiAgICAgICAgZGVsZXRlRXhpc3RpbmdQZWVyaW5nOiB0cnVlLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChjb25maWcucHJvcHMuZGVsZXRlRXhpc3RpbmdQZWVyaW5nKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkFQSSBWZXJzaW9uIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB1c2UgZGVmYXVsdCBBUEkgdmVyc2lvbiB3aGVuIG5vbmUgc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIlRlc3RDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIk1lc2hcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChjb25maWcucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNS0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBzcGVjaWZpZWQgQVBJIHZlcnNpb24gd2hlbiBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbihzdGFjaywgXCJUZXN0Q29uZmlnXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMTEtMDFcIixcbiAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiTWVzaFwiLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTExLTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcHJvcGVyIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIlRlc3RDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIk1lc2hcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChjb25maWcuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QoY29uZmlnLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QoY29uZmlnLnByb3Zpc2lvbmluZ1N0YXRlT3V0cHV0KS50b0JlSW5zdGFuY2VPZihcbiAgICAgICAgY2RrdGYuVGVycmFmb3JtT3V0cHV0LFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgU3ludGhlc2lzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIlRlc3RDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIk1lc2hcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3Qtc3RhY2tcIik7XG4gICAgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LW1hbmFnZXJcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICBzdWJzY3JpcHRpb25zOiBbXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIl0sXG4gICAgICB9LFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJTZWN1cml0eUFkbWluXCJdLFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhc2ljIEluc3RhbnRpYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbiB3aXRoIG1pbmltdW0gcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJzZWN1cml0eS1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiU2VjdXJpdHlDb25maWdcIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29uZmlnKS50b0JlSW5zdGFuY2VPZihTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbik7XG4gICAgICBleHBlY3QoY29uZmlnLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbiB3aXRoIGFsbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInNlY3VyaXR5LWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJPcmdhbml6YXRpb24td2lkZSBzZWN1cml0eSBydWxlc1wiLFxuICAgICAgICBhcHBseU9uTmV0d29ya0ludGVudFBvbGljeUJhc2VkU2VydmljZXM6IFtcIk5vbmVcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb24oXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlNlY3VyaXR5Q29uZmlnXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcIk9yZ2FuaXphdGlvbi13aWRlIHNlY3VyaXR5IHJ1bGVzXCIpO1xuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5hcHBseU9uTmV0d29ya0ludGVudFBvbGljeUJhc2VkU2VydmljZXMpLnRvRXF1YWwoW1xuICAgICAgICBcIk5vbmVcIixcbiAgICAgIF0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkFQSSBWZXJzaW9uIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB1c2UgZGVmYXVsdCBBUEkgdmVyc2lvbiB3aGVuIG5vbmUgc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihzdGFjaywgXCJTZWN1cml0eUNvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwic2VjdXJpdHktY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIHNwZWNpZmllZCBBUEkgdmVyc2lvbiB3aGVuIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihzdGFjaywgXCJTZWN1cml0eUNvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwic2VjdXJpdHktY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMy0xMS0wMVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChjb25maWcucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMy0xMS0wMVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJUZXJyYWZvcm0gT3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHByb3BlciBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiU2VjdXJpdHlDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInNlY3VyaXR5LWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChjb25maWcuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QoY29uZmlnLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QoY29uZmlnLnByb3Zpc2lvbmluZ1N0YXRlT3V0cHV0KS50b0JlSW5zdGFuY2VPZihcbiAgICAgICAgY2RrdGYuVGVycmFmb3JtT3V0cHV0LFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgcHJvcGVyIHJlc291cmNlIHJlZmVyZW5jZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gbmV3IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKHN0YWNrLCBcIlNlY3VyaXR5Q29uZmlnXCIsIHtcbiAgICAgICAgbmFtZTogXCJzZWN1cml0eS1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoY29uZmlnLmlkKS50b01hdGNoKC9eXFwkXFx7LipcXC5pZFxcfSQvKTtcbiAgICAgIGV4cGVjdChjb25maWcucmVzb3VyY2VOYW1lKS50b01hdGNoKC9eXFwkXFx7LipcXC5uYW1lXFx9JC8pO1xuICAgICAgZXhwZWN0KGNvbmZpZy5wcm92aXNpb25pbmdTdGF0ZSkudG9NYXRjaChcbiAgICAgICAgL15cXCRcXHsuKlxcLm91dHB1dFxcLnByb3BlcnRpZXNcXC5wcm92aXNpb25pbmdTdGF0ZVxcfSQvLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgU3ludGhlc2lzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihzdGFjaywgXCJTZWN1cml0eUNvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwic2VjdXJpdHktY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRlc3Qgc2VjdXJpdHkgY29uZmlndXJhdGlvblwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RmLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0Zi5UZXJyYWZvcm1TdGFjaztcbiAgbGV0IG1hbmFnZXI6IFZpcnR1YWxOZXR3b3JrTWFuYWdlcjtcbiAgbGV0IHNlY3VyaXR5Q29uZmlnOiBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbjtcbiAgbGV0IG5ldHdvcmtHcm91cDogTmV0d29ya0dyb3VwO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3Qtc3RhY2tcIik7XG4gICAgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LW1hbmFnZXJcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICBzdWJzY3JpcHRpb25zOiBbXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIl0sXG4gICAgICB9LFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJTZWN1cml0eUFkbWluXCJdLFxuICAgIH0pO1xuICAgIHNlY3VyaXR5Q29uZmlnID0gbmV3IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKHN0YWNrLCBcIlNlY3VyaXR5Q29uZmlnXCIsIHtcbiAgICAgIG5hbWU6IFwic2VjdXJpdHktY29uZmlnXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgIH0pO1xuICAgIG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYXNpYyBJbnN0YW50aWF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgUnVsZUNvbGxlY3Rpb24gd2l0aCBtaW5pbXVtIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInJ1bGUtY29sbGVjdGlvblwiLFxuICAgICAgICBzZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbklkOiBzZWN1cml0eUNvbmZpZy5pZCxcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBTZWN1cml0eUFkbWluUnVsZUNvbGxlY3Rpb24oXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlJ1bGVDb2xsZWN0aW9uXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbGxlY3Rpb24pLnRvQmVJbnN0YW5jZU9mKFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbik7XG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5wcm9wcy5hcHBsaWVzVG9Hcm91cHMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBSdWxlQ29sbGVjdGlvbiB3aXRoIGRlc2NyaXB0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluUnVsZUNvbGxlY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJibG9jay1oaWdoLXJpc2stcG9ydHNcIixcbiAgICAgICAgc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25JZDogc2VjdXJpdHlDb25maWcuaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlJ1bGVzIHRvIGJsb2NrIGhpZ2gtcmlzayBwb3J0c1wiLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUnVsZUNvbGxlY3Rpb25cIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcbiAgICAgICAgXCJSdWxlcyB0byBibG9jayBoaWdoLXJpc2sgcG9ydHNcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgUnVsZUNvbGxlY3Rpb24gYXBwbGllZCB0byBtdWx0aXBsZSBncm91cHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgZ3JvdXAyID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXAyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWdyb3VwLTJcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBwcm9wczogU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwibXVsdGktZ3JvdXAtY29sbGVjdGlvblwiLFxuICAgICAgICBzZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbklkOiBzZWN1cml0eUNvbmZpZy5pZCxcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbXG4gICAgICAgICAgeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH0sXG4gICAgICAgICAgeyBuZXR3b3JrR3JvdXBJZDogZ3JvdXAyLmlkIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUnVsZUNvbGxlY3Rpb25cIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5wcm9wcy5hcHBsaWVzVG9Hcm91cHMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJBUEkgVmVyc2lvbiBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgdXNlIGRlZmF1bHQgQVBJIHZlcnNpb24gd2hlbiBub25lIHNwZWNpZmllZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUnVsZUNvbGxlY3Rpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicnVsZS1jb2xsZWN0aW9uXCIsXG4gICAgICAgICAgc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25JZDogc2VjdXJpdHlDb25maWcuaWQsXG4gICAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbGxlY3Rpb24ucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNS0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBzcGVjaWZpZWQgQVBJIHZlcnNpb24gd2hlbiBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUnVsZUNvbGxlY3Rpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicnVsZS1jb2xsZWN0aW9uXCIsXG4gICAgICAgICAgc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25JZDogc2VjdXJpdHlDb25maWcuaWQsXG4gICAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gICAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbGxlY3Rpb24ucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMy0xMS0wMVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJUZXJyYWZvcm0gT3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHByb3BlciBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUnVsZUNvbGxlY3Rpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicnVsZS1jb2xsZWN0aW9uXCIsXG4gICAgICAgICAgc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25JZDogc2VjdXJpdHlDb25maWcuaWQsXG4gICAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbGxlY3Rpb24uaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5uYW1lT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KGNvbGxlY3Rpb24ucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlBhcmVudC1DaGlsZCBSZWxhdGlvbnNoaXBcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNvcnJlY3RseSByZWZlcmVuY2UgcGFyZW50IHNlY3VyaXR5IGFkbWluIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBTZWN1cml0eUFkbWluUnVsZUNvbGxlY3Rpb24oXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlJ1bGVDb2xsZWN0aW9uXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInJ1bGUtY29sbGVjdGlvblwiLFxuICAgICAgICAgIHNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uSWQ6IHNlY3VyaXR5Q29uZmlnLmlkLFxuICAgICAgICAgIGFwcGxpZXNUb0dyb3VwczogW3sgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCB9XSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb2xsZWN0aW9uLnByb3BzLnNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uSWQpLnRvQmUoXG4gICAgICAgIHNlY3VyaXR5Q29uZmlnLmlkLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgU3ludGhlc2lzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIG5ldyBTZWN1cml0eUFkbWluUnVsZUNvbGxlY3Rpb24oc3RhY2ssIFwiUnVsZUNvbGxlY3Rpb25cIiwge1xuICAgICAgICBuYW1lOiBcInJ1bGUtY29sbGVjdGlvblwiLFxuICAgICAgICBzZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbklkOiBzZWN1cml0eUNvbmZpZy5pZCxcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIlNlY3VyaXR5QWRtaW5SdWxlXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyO1xuICBsZXQgc2VjdXJpdHlDb25maWc6IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uO1xuICBsZXQgbmV0d29ya0dyb3VwOiBOZXR3b3JrR3JvdXA7XG4gIGxldCBydWxlQ29sbGVjdGlvbjogU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3Qtc3RhY2tcIik7XG4gICAgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LW1hbmFnZXJcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICBzdWJzY3JpcHRpb25zOiBbXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIl0sXG4gICAgICB9LFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJTZWN1cml0eUFkbWluXCJdLFxuICAgIH0pO1xuICAgIHNlY3VyaXR5Q29uZmlnID0gbmV3IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKHN0YWNrLCBcIlNlY3VyaXR5Q29uZmlnXCIsIHtcbiAgICAgIG5hbWU6IFwic2VjdXJpdHktY29uZmlnXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgIH0pO1xuICAgIG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICB9KTtcbiAgICBydWxlQ29sbGVjdGlvbiA9IG5ldyBTZWN1cml0eUFkbWluUnVsZUNvbGxlY3Rpb24oc3RhY2ssIFwiUnVsZUNvbGxlY3Rpb25cIiwge1xuICAgICAgbmFtZTogXCJydWxlLWNvbGxlY3Rpb25cIixcbiAgICAgIHNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uSWQ6IHNlY3VyaXR5Q29uZmlnLmlkLFxuICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhc2ljIEluc3RhbnRpYXRpb24gLSBEZW55IFJ1bGVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgRGVueSBydWxlIGJsb2NraW5nIFNTSFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogU2VjdXJpdHlBZG1pblJ1bGVQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJibG9jay1zc2hcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkJsb2NrIFNTSCBhY2Nlc3MgZnJvbSBpbnRlcm5ldFwiLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgICAgZGVzdGluYXRpb25Qb3J0UmFuZ2VzOiBbXCIyMlwiXSxcbiAgICAgICAgc291cmNlczogW1xuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCJJbnRlcm5ldFwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJTZXJ2aWNlVGFnXCIgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGVzdGluYXRpb25zOiBbeyBhZGRyZXNzUHJlZml4OiBcIipcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9XSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiQmxvY2tTU0hcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QocnVsZSkudG9CZUluc3RhbmNlT2YoU2VjdXJpdHlBZG1pblJ1bGUpO1xuICAgICAgZXhwZWN0KHJ1bGUucnVsZUFjdGlvbikudG9CZShcIkRlbnlcIik7XG4gICAgICBleHBlY3QocnVsZS5ydWxlUHJpb3JpdHkpLnRvQmUoMTAwKTtcbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnByb3RvY29sKS50b0JlKFwiVGNwXCIpO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuZGVzdGluYXRpb25Qb3J0UmFuZ2VzKS50b0VxdWFsKFtcIjIyXCJdKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBEZW55IHJ1bGUgYmxvY2tpbmcgUkRQXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluUnVsZVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcImJsb2NrLXJkcFwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMSxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICAgIGRlc3RpbmF0aW9uUG9ydFJhbmdlczogW1wiMzM4OVwiXSxcbiAgICAgICAgc291cmNlczogW1xuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCJJbnRlcm5ldFwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJTZXJ2aWNlVGFnXCIgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGVzdGluYXRpb25zOiBbeyBhZGRyZXNzUHJlZml4OiBcIipcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9XSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiQmxvY2tSRFBcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5kZXN0aW5hdGlvblBvcnRSYW5nZXMpLnRvRXF1YWwoW1wiMzM4OVwiXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQmFzaWMgSW5zdGFudGlhdGlvbiAtIEFsbG93IFJ1bGVzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgQWxsb3cgcnVsZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogU2VjdXJpdHlBZG1pblJ1bGVQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJhbGxvdy1odHRwc1wiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDIwMCxcbiAgICAgICAgYWN0aW9uOiBcIkFsbG93XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBkZXN0aW5hdGlvblBvcnRSYW5nZXM6IFtcIjQ0M1wiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiQWxsb3dIVFRQU1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChydWxlLnJ1bGVBY3Rpb24pLnRvQmUoXCJBbGxvd1wiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYXNpYyBJbnN0YW50aWF0aW9uIC0gQWx3YXlzQWxsb3cgUnVsZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBBbHdheXNBbGxvdyBydWxlIGZvciBtb25pdG9yaW5nXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluUnVsZVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcImFsd2F5cy1hbGxvdy1tb25pdG9yaW5nXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJBbHdheXMgYWxsb3cgdHJhZmZpYyBmcm9tIG1vbml0b3Jpbmcgc3lzdGVtc1wiLFxuICAgICAgICBwcmlvcml0eTogNTAsXG4gICAgICAgIGFjdGlvbjogXCJBbHdheXNBbGxvd1wiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJBbnlcIixcbiAgICAgICAgc291cmNlczogW1xuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjAuMC8yNFwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJJUFByZWZpeFwiIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRlc3RpbmF0aW9uczogW3sgYWRkcmVzc1ByZWZpeDogXCIqXCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIklQUHJlZml4XCIgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIkFsbG93TW9uaXRvcmluZ1wiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChydWxlLnJ1bGVBY3Rpb24pLnRvQmUoXCJBbHdheXNBbGxvd1wiKTtcbiAgICAgIGV4cGVjdChydWxlLnJ1bGVQcmlvcml0eSkudG9CZSg1MCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUHJvdG9jb2wgSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgVGNwIHByb3RvY29sXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiVGNwUnVsZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGNwLXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnByb3RvY29sKS50b0JlKFwiVGNwXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBVZHAgcHJvdG9jb2xcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJVZHBSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ1ZHAtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVWRwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMucHJvdG9jb2wpLnRvQmUoXCJVZHBcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IEljbXAgcHJvdG9jb2xcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJJY21wUnVsZVwiLCB7XG4gICAgICAgIG5hbWU6IFwiaWNtcC1ydWxlXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJJY21wXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMucHJvdG9jb2wpLnRvQmUoXCJJY21wXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBBbnkgcHJvdG9jb2xcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJBbnlSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJhbnktcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkFsbG93XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIkFueVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnByb3RvY29sKS50b0JlKFwiQW55XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkRpcmVjdGlvbiBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBJbmJvdW5kIGRpcmVjdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIkluYm91bmRSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJpbmJvdW5kLXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRpcmVjdGlvbikudG9CZShcIkluYm91bmRcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IE91dGJvdW5kIGRpcmVjdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIk91dGJvdW5kUnVsZVwiLCB7XG4gICAgICAgIG5hbWU6IFwib3V0Ym91bmQtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIk91dGJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRpcmVjdGlvbikudG9CZShcIk91dGJvdW5kXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlBvcnQgUmFuZ2UgSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBzaW5nbGUgc291cmNlIHBvcnRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJTaW5nbGVQb3J0XCIsIHtcbiAgICAgICAgbmFtZTogXCJzaW5nbGUtcG9ydFwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICAgIHNvdXJjZVBvcnRSYW5nZXM6IFtcIjgwXCJdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnNvdXJjZVBvcnRSYW5nZXMpLnRvRXF1YWwoW1wiODBcIl0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGRlc3RpbmF0aW9uIHBvcnRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiTXVsdGlwbGVQb3J0c1wiLCB7XG4gICAgICAgIG5hbWU6IFwibXVsdGlwbGUtcG9ydHNcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBkZXN0aW5hdGlvblBvcnRSYW5nZXM6IFtcIjgwXCIsIFwiNDQzXCIsIFwiODA4MFwiXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5kZXN0aW5hdGlvblBvcnRSYW5nZXMpLnRvRXF1YWwoW1wiODBcIiwgXCI0NDNcIiwgXCI4MDgwXCJdKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBwb3J0IHJhbmdlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIlBvcnRSYW5nZVwiLCB7XG4gICAgICAgIG5hbWU6IFwicG9ydC1yYW5nZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICAgIGRlc3RpbmF0aW9uUG9ydFJhbmdlczogW1wiODAwMC04OTk5XCJdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRlc3RpbmF0aW9uUG9ydFJhbmdlcykudG9FcXVhbChbXCI4MDAwLTg5OTlcIl0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZGVmYXVsdCB0byB3aWxkY2FyZCB3aGVuIHBvcnRzIG5vdCBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJEZWZhdWx0UG9ydHNcIiwge1xuICAgICAgICBuYW1lOiBcImRlZmF1bHQtcG9ydHNcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIkFueVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnNvdXJjZVBvcnRSYW5nZXMpLnRvQmVVbmRlZmluZWQoKTtcbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRlc3RpbmF0aW9uUG9ydFJhbmdlcykudG9CZVVuZGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkFkZHJlc3MgUHJlZml4IEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYW5kbGUgSVAgcHJlZml4IHNvdXJjZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJJUFByZWZpeFwiLCB7XG4gICAgICAgIG5hbWU6IFwiaXAtcHJlZml4XCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgICAgc291cmNlczogW1xuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjAuMC84XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIklQUHJlZml4XCIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5zb3VyY2VzKS50b0VxdWFsKFtcbiAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIjEwLjAuMC4wLzhcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9LFxuICAgICAgXSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgU2VydmljZVRhZyBzb3VyY2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiU2VydmljZVRhZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwic2VydmljZS10YWdcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIkludGVybmV0XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIlNlcnZpY2VUYWdcIiB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnNvdXJjZXMpLnRvRXF1YWwoW1xuICAgICAgICB7IGFkZHJlc3NQcmVmaXg6IFwiSW50ZXJuZXRcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiU2VydmljZVRhZ1wiIH0sXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBzb3VyY2UgYWRkcmVzc2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiTXVsdGlwbGVTb3VyY2VzXCIsIHtcbiAgICAgICAgbmFtZTogXCJtdWx0aXBsZS1zb3VyY2VzXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgICAgc291cmNlczogW1xuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjAuMC84XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIklQUHJlZml4XCIgfSxcbiAgICAgICAgICB7IGFkZHJlc3NQcmVmaXg6IFwiMTkyLjE2OC4wLjAvMTZcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnNvdXJjZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQcmlvcml0eSBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgYWNjZXB0IGxvdyBwcmlvcml0eSBudW1iZXIgKGhpZ2ggcHJpb3JpdHkpXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiSGlnaFByaW9yaXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJoaWdoLXByaW9yaXR5XCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMSxcbiAgICAgICAgYWN0aW9uOiBcIkFsd2F5c0FsbG93XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIkFueVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnJ1bGVQcmlvcml0eSkudG9CZSgxKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGFjY2VwdCBoaWdoIHByaW9yaXR5IG51bWJlciAobG93IHByaW9yaXR5KVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIkxvd1ByaW9yaXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJsb3ctcHJpb3JpdHlcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiA0MDk2LFxuICAgICAgICBhY3Rpb246IFwiQWxsb3dcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiQW55XCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucnVsZVByaW9yaXR5KS50b0JlKDQwOTYpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkFQSSBWZXJzaW9uIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB1c2UgZGVmYXVsdCBBUEkgdmVyc2lvbiB3aGVuIG5vbmUgc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiVGVzdFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNS0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBzcGVjaWZpZWQgQVBJIHZlcnNpb24gd2hlbiBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIlRlc3RSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMy0xMS0wMVwiLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTExLTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcHJvcGVyIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiVGVzdFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QocnVsZS5uYW1lT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBwcm9wZXIgcmVzb3VyY2UgcmVmZXJlbmNlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIlRlc3RSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLmlkKS50b01hdGNoKC9eXFwkXFx7LipcXC5pZFxcfSQvKTtcbiAgICAgIGV4cGVjdChydWxlLnJlc291cmNlTmFtZSkudG9NYXRjaCgvXlxcJFxcey4qXFwubmFtZVxcfSQvKTtcbiAgICAgIGV4cGVjdChydWxlLnByb3Zpc2lvbmluZ1N0YXRlKS50b01hdGNoKFxuICAgICAgICAvXlxcJFxcey4qXFwub3V0cHV0XFwucHJvcGVydGllc1xcLnByb3Zpc2lvbmluZ1N0YXRlXFx9JC8sXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlBhcmVudC1DaGlsZCBSZWxhdGlvbnNoaXBcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNvcnJlY3RseSByZWZlcmVuY2UgcGFyZW50IHJ1bGUgY29sbGVjdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIlRlc3RSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnJ1bGVDb2xsZWN0aW9uSWQpLnRvQmUocnVsZUNvbGxlY3Rpb24uaWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBTeW50aGVzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIlRlc3RSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRlc3Qgc2VjdXJpdHkgcnVsZVwiLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgICAgZGVzdGluYXRpb25Qb3J0UmFuZ2VzOiBbXCIyMlwiXSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDb21wbGV4IFJ1bGUgU2NlbmFyaW9zXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYW5kbGUgcnVsZSB3aXRoIGFsbCBwcm9wZXJ0aWVzIHNwZWNpZmllZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIkNvbXBsZXhSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJjb21wbGV4LXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbXBsZXggc2VjdXJpdHkgcnVsZSB3aXRoIGFsbCBwcm9wZXJ0aWVzXCIsXG4gICAgICAgIHByaW9yaXR5OiAxNTAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBzb3VyY2VQb3J0UmFuZ2VzOiBbXCIxMDI0LTY1NTM1XCJdLFxuICAgICAgICBkZXN0aW5hdGlvblBvcnRSYW5nZXM6IFtcIjIyXCIsIFwiMzM4OVwiXSxcbiAgICAgICAgc291cmNlczogW1xuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCJJbnRlcm5ldFwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJTZXJ2aWNlVGFnXCIgfSxcbiAgICAgICAgICB7IGFkZHJlc3NQcmVmaXg6IFwiMTkyLjE2OC4wLjAvMTZcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9LFxuICAgICAgICBdLFxuICAgICAgICBkZXN0aW5hdGlvbnM6IFtcbiAgICAgICAgICB7IGFkZHJlc3NQcmVmaXg6IFwiMTAuMC4wLjAvOFwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJJUFByZWZpeFwiIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMucHJpb3JpdHkpLnRvQmUoMTUwKTtcbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnNvdXJjZVBvcnRSYW5nZXMpLnRvRXF1YWwoW1wiMTAyNC02NTUzNVwiXSk7XG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5kZXN0aW5hdGlvblBvcnRSYW5nZXMpLnRvRXF1YWwoW1wiMjJcIiwgXCIzMzg5XCJdKTtcbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnNvdXJjZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRlc3RpbmF0aW9ucykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
1756
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlydHVhbC1uZXR3b3JrLW1hbmFnZXIuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS12aXJ0dWFsbmV0d29ya21hbmFnZXIvdGVzdC92aXJ0dWFsLW5ldHdvcmstbWFuYWdlci5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQUVILGlDQUFnQztBQUNoQywrQkFBK0I7QUFDL0Isa0ZBRzJDO0FBQzNDLGdEQUE0QztBQUM1Qyx3REFBdUU7QUFDdkUsb0ZBRzRDO0FBQzVDLHNGQUc2QztBQUM3QyxvRUFHb0M7QUFDcEMsMEZBRytDO0FBQy9DLDRFQUd3QztBQUV4QyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ3JDLElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUVoQyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQixLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUN0RCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDekMsRUFBRSxDQUFDLDBFQUEwRSxFQUFFLEdBQUcsRUFBRTtZQUNsRixNQUFNLEtBQUssR0FBK0I7Z0JBQ3hDLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDtxQkFDdEQ7aUJBQ0Y7Z0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDO2FBQy9ELENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQywrQ0FBcUIsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFM0MsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkRBQTZELEVBQUUsR0FBRyxFQUFFO1lBQ3JFLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLDJCQUEyQjtnQkFDakMsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtvQkFDRCxnQkFBZ0IsRUFBRTt3QkFDaEIsc0RBQXNEO3FCQUN2RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUM7Z0JBQzlELFdBQVcsRUFBRSwwQ0FBMEM7Z0JBQ3ZELElBQUksRUFBRTtvQkFDSixXQUFXLEVBQUUsTUFBTTtvQkFDbkIsT0FBTyxFQUFFLGtCQUFrQjtpQkFDNUI7YUFDRixDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDcEMsMENBQTBDLENBQzNDLENBQUM7WUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ2pDLFdBQVcsRUFBRSxNQUFNO2dCQUNuQixPQUFPLEVBQUUsa0JBQWtCO2FBQzVCLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtRQUMzQyxFQUFFLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1lBQzVELE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUM5QyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1lBQ3hELE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLFVBQVUsRUFBRSxZQUFZO2dCQUN4QixvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDtxQkFDdEQ7aUJBQ0Y7Z0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxlQUFlLENBQUM7YUFDL0MsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7WUFDeEQsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO2FBQzlDLENBQUM7WUFFRiw4Q0FBOEM7WUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsK0NBQXFCLENBQUMsQ0FBQztZQUV2RCw4Q0FBOEM7WUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFO2dCQUNoRSxHQUFHLEtBQUs7Z0JBQ1IsSUFBSSxFQUFFLHdCQUF3QjthQUMvQixDQUFDLENBQUM7WUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLCtDQUFxQixDQUFDLENBQUM7UUFDekQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDekMsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsRUFBRTtZQUN4RSxNQUFNLEtBQUssR0FBK0I7Z0JBQ3hDLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDt3QkFDckQscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUM5QyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQ2hFLHFEQUFxRCxDQUN0RCxDQUFDO1lBRUYsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0VBQW9FLEVBQUUsR0FBRyxFQUFFO1lBQzVFLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixnQkFBZ0IsRUFBRTt3QkFDaEIsc0RBQXNEO3dCQUN0RCxzREFBc0Q7cUJBQ3ZEO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsZUFBZSxDQUFDO2FBQy9DLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxZQUFZLENBQ3RFLENBQUMsQ0FDRixDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQ25FLHNEQUFzRCxDQUN2RCxDQUFDO1lBRUYsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0ZBQXdGLEVBQUUsR0FBRyxFQUFFO1lBQ2hHLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUM7YUFDL0QsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLFNBQVMsQ0FDekQsY0FBYyxDQUNmLENBQUM7WUFDRixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLFNBQVMsQ0FDekQsZUFBZSxDQUNoQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxFQUFFO1lBQ3pFLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLFNBQVMsQ0FBQzthQUN6QyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUU7WUFDN0MsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxJQUFJLEVBQUU7b0JBQ0osV0FBVyxFQUFFLE1BQU07aUJBQ3BCO2FBQ0YsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBRXBELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUNuRSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXJELE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtZQUNuRCxNQUFNLEtBQUssR0FBK0I7Z0JBQ3hDLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDtxQkFDdEQ7aUJBQ0Y7Z0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLElBQUksRUFBRTtvQkFDSixXQUFXLEVBQUUsTUFBTTtvQkFDbkIsU0FBUyxFQUFFLE1BQU07aUJBQ2xCO2FBQ0YsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxPQUFPLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRS9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN0RCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEdBQUcsRUFBRTtZQUNwRCxNQUFNLEtBQUssR0FBK0I7Z0JBQ3hDLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDtxQkFDdEQ7aUJBQ0Y7Z0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLENBQUM7YUFDOUMsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztZQUV6QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1FBQ3RDLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7WUFDaEQsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO2FBQzlDLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNqRSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDckUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRSxNQUFNLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRSxHQUFHLEVBQUU7WUFDM0QsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO2FBQzlDLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1FBQzFDLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUM3QyxhQUFhLEVBQUUsQ0FBQyxNQUFNLENBQUM7YUFDeEIsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBRXRELE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtEQUFrRCxFQUFFLEdBQUcsRUFBRTtZQUMxRCxNQUFNLEtBQUssR0FBK0I7Z0JBQ3hDLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDtxQkFDdEQ7aUJBQ0Y7Z0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUM7YUFDdkMsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxFQUFFLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1lBQ3pELE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsRUFBRSxlQUFlLENBQUM7Z0JBQzlELFdBQVcsRUFBRSxzQkFBc0I7Z0JBQ25DLElBQUksRUFBRTtvQkFDSixXQUFXLEVBQUUsTUFBTTtpQkFDcEI7YUFDRixDQUFDO1lBRUYsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZELE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRWxDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtRUFBbUUsRUFBRSxHQUFHLEVBQUU7WUFDM0UsTUFBTSxNQUFNLEdBQStCO2dCQUN6QyxJQUFJLEVBQUUsd0JBQXdCO2dCQUM5QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO2FBQzlDLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBK0I7Z0JBQ3pDLElBQUksRUFBRSx3QkFBd0I7Z0JBQzlCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxVQUFVLEVBQUUsWUFBWTtnQkFDeEIsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsZUFBZSxDQUFDO2FBQy9DLENBQUM7WUFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDMUUsTUFBTSxRQUFRLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUV2RCxNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxHQUFHLEVBQUU7WUFDbEQsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO2FBQzlDLENBQUM7WUFFRixJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkQsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTVDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsRCxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxFQUFFLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxFQUFFO1lBQzNDLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUM5QyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsK0NBQXFCLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFFOUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFNBQVMsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDcEUsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FDdkMsU0FBUyxFQUNULFdBQVcsT0FBTyxFQUFFLEVBQ3BCO29CQUNFLElBQUksRUFBRSxXQUFXLE9BQU8sRUFBRTtvQkFDMUIsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7b0JBQzlFLFVBQVUsRUFBRSxPQUFPO29CQUNuQixvQkFBb0IsRUFBRTt3QkFDcEIsYUFBYSxFQUFFOzRCQUNiLHFEQUFxRDt5QkFDdEQ7cUJBQ0Y7b0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLENBQUM7aUJBQzlDLENBQ0YsQ0FBQztnQkFFRixNQUFNLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25ELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUM5QyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7UUFDMUMsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEdBQUcsRUFBRTtZQUNoRSxNQUFNLEtBQUssR0FBK0I7Z0JBQ3hDLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDtxQkFDdEQ7aUJBQ0Y7Z0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLFdBQVcsRUFBRSxxREFBcUQ7YUFDbkUsQ0FBQztZQUVGLE1BQU0sT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV2RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3BDLHFEQUFxRCxDQUN0RCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMkRBQTJELEVBQUUsR0FBRyxFQUFFO1lBQ25FLE1BQU0sS0FBSyxHQUErQjtnQkFDeEMsSUFBSSxFQUFFLHNCQUFzQjtnQkFDNUIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUM5QyxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO1FBQy9DLEVBQUUsQ0FBQyxrRUFBa0UsRUFBRSxHQUFHLEVBQUU7WUFDMUUsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO29CQUNELGdCQUFnQixFQUFFO3dCQUNoQixzREFBc0Q7cUJBQ3ZEO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxFQUFFLGVBQWUsQ0FBQzthQUMvRCxDQUFDO1lBRUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXZFLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6RSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFlBQVksQ0FDdEUsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7WUFDckQsTUFBTSxLQUFLLEdBQStCO2dCQUN4QyxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUNiLDRFQUE0RTtnQkFDOUUsb0JBQW9CLEVBQUU7b0JBQ3BCLGFBQWEsRUFBRTt3QkFDYixxREFBcUQ7cUJBQ3REO2lCQUNGO2dCQUNELDJCQUEyQixFQUFFO29CQUMzQixjQUFjO29CQUNkLGVBQWU7b0JBQ2YsU0FBUztpQkFDVjthQUNGLENBQUM7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFdkUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxTQUFTLENBQ3pELGNBQWMsQ0FDZixDQUFDO1lBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxTQUFTLENBQ3pELGVBQWUsQ0FDaEIsQ0FBQztZQUNGLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELElBQUksT0FBOEIsQ0FBQztRQUVuQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtnQkFDeEQsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQ2IsNEVBQTRFO2dCQUM5RSxvQkFBb0IsRUFBRTtvQkFDcEIsYUFBYSxFQUFFO3dCQUNiLHFEQUFxRDtxQkFDdEQ7aUJBQ0Y7Z0JBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLEVBQUUsZUFBZSxDQUFDO2FBQy9ELENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsRUFBRTtZQUM3RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtnQkFDekQsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsV0FBVyxFQUFFLDZCQUE2QjtnQkFDMUMsVUFBVSxFQUFFLGdCQUFnQjthQUM3QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsY0FBYyxDQUFDLDRCQUFZLENBQUMsQ0FBQztZQUNsRCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDekQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUN6Qyw2QkFBNkIsQ0FDOUIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtZQUMxRSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDLFlBQVksRUFBRTtnQkFDekQsSUFBSSxFQUFFLGtCQUFrQjthQUN6QixDQUFDLENBQUM7WUFFSCxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyw0QkFBNEIsQ0FDN0QsV0FBVyxFQUNYO2dCQUNFLElBQUksRUFBRSxzQkFBc0I7Z0JBQzVCLG9CQUFvQixFQUFFLGFBQWE7Z0JBQ25DLGVBQWUsRUFBRTtvQkFDZjt3QkFDRSxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUU7d0JBQy9CLGlCQUFpQixFQUFFLE1BQU07d0JBQ3pCLGFBQWEsRUFBRSxJQUFJO3FCQUNwQjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsVUFBVSxFQUFFLHlDQUF5Qzt3QkFDckQsWUFBWSxFQUFFLG1DQUFtQztxQkFDbEQ7aUJBQ0Y7YUFDRixDQUNGLENBQUM7WUFFRixNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxjQUFjLENBQUMsc0RBQXlCLENBQUMsQ0FBQztZQUNyRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1FQUFtRSxFQUFFLEdBQUcsRUFBRTtZQUMzRSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsNkJBQTZCLENBQUMsVUFBVSxFQUFFO2dCQUN2RSxJQUFJLEVBQUUscUJBQXFCO2dCQUMzQixXQUFXLEVBQUUsOEJBQThCO2FBQzVDLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxjQUFjLENBQUMseURBQTBCLENBQUMsQ0FBQztZQUNsRSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0QsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7UUFDN0MsSUFBSSxPQUE4QixDQUFDO1FBRW5DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO2dCQUN4RCxJQUFJLEVBQUUsY0FBYztnQkFDcEIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7Z0JBQzlFLG9CQUFvQixFQUFFO29CQUNwQixhQUFhLEVBQUU7d0JBQ2IscURBQXFEO3FCQUN0RDtpQkFDRjtnQkFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsQ0FBQzthQUM5QyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7WUFDekQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzVDLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQUUsQ0FBQyxZQUFZLENBQUM7Z0JBQy9CLFdBQVcsRUFBRSxvQkFBb0I7YUFDbEMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxvQkFBUSxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDM0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscUVBQXFFLEVBQUUsR0FBRyxFQUFFO1lBQzdFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFO2dCQUNoRCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUM7Z0JBQy9DLFdBQVcsRUFBRSx1QkFBdUI7Z0JBQ3BDLFdBQVcsRUFBRSx5QkFBeUI7Z0JBQ3RDLGNBQWMsRUFBRSxpQkFBaUI7Z0JBQ2pDLElBQUksRUFBRTtvQkFDSixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsV0FBVyxFQUFFLFlBQVk7aUJBQzFCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxvQkFBUSxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pDLGFBQWE7Z0JBQ2IsYUFBYTthQUNkLENBQUMsQ0FBQztZQUNILE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1lBQzdELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQy9ELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsTUFBTSxFQUFFLFFBQVE7Z0JBQ2hCLFdBQVcsRUFBRSxZQUFZO2FBQzFCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG9FQUFvRSxFQUFFLEdBQUcsRUFBRTtZQUM1RSxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRTtnQkFDL0MsSUFBSSxFQUFFLHlCQUF5QjtnQkFDL0IsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLGVBQWUsRUFBRSxDQUFDLGVBQWUsQ0FBQztnQkFDbEMsYUFBYSxFQUFFLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQzthQUN2QyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLG9CQUFRLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywrREFBK0QsRUFBRSxHQUFHLEVBQUU7WUFDdkUsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hELElBQUksRUFBRSxXQUFXO2dCQUNqQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsZUFBZSxFQUFFLENBQUMsWUFBWSxDQUFDO2dCQUMvQixXQUFXLEVBQUUsY0FBYzthQUM1QixDQUFDLENBQUM7WUFFSCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtnQkFDbEQsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixlQUFlLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBQ2hDLGNBQWMsRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQ25DLFdBQVcsRUFBRSxlQUFlO2FBQzdCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsb0JBQVEsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsb0JBQVEsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlFQUF5RSxFQUFFLEdBQUcsRUFBRTtZQUNqRixNQUFNLENBQUMsR0FBRyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFO29CQUNsQyxJQUFJLEVBQUUsY0FBYztvQkFDcEIsUUFBUSxFQUFFLFFBQVE7b0JBQ2xCLGVBQWUsRUFBRSxDQUFDLGNBQWMsQ0FBQztpQkFDbEMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtRkFBbUYsRUFBRSxHQUFHLEVBQUU7WUFDM0YsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDVixPQUFPLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFO29CQUN0QyxJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixRQUFRLEVBQUUsUUFBUTtvQkFDbEIsZUFBZSxFQUFFLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQztpQkFDaEQsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtJQUM1QixJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFDaEMsSUFBSSxPQUE4QixDQUFDO0lBRW5DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDeEQsSUFBSSxFQUFFLGNBQWM7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUNiLDRFQUE0RTtZQUM5RSxvQkFBb0IsRUFBRTtnQkFDcEIsYUFBYSxFQUFFLENBQUMscURBQXFELENBQUM7YUFDdkU7WUFDRCwyQkFBMkIsRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUM5QyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsRUFBRSxDQUFDLDZEQUE2RCxFQUFFLEdBQUcsRUFBRTtZQUNyRSxNQUFNLEtBQUssR0FBc0I7Z0JBQy9CLElBQUksRUFBRSxZQUFZO2dCQUNsQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTthQUM3QixDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFakUsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLGNBQWMsQ0FBQyw0QkFBWSxDQUFDLENBQUM7WUFDbEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoRCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLEtBQUssR0FBc0I7Z0JBQy9CLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixXQUFXLEVBQUUseUNBQXlDO2dCQUN0RCxVQUFVLEVBQUUsZ0JBQWdCO2FBQzdCLENBQUM7WUFFRixNQUFNLFlBQVksR0FBRyxJQUFJLDRCQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVqRSxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3pDLHlDQUF5QyxDQUMxQyxDQUFDO1lBQ0YsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1lBQzVELE1BQU0sS0FBSyxHQUFzQjtnQkFDL0IsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixVQUFVLEVBQUUsUUFBUTtnQkFDcEIsV0FBVyxFQUFFLDRCQUE0QjthQUMxQyxDQUFDO1lBRUYsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBWSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbkUsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7WUFDNUQsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7Z0JBQ3hELElBQUksRUFBRSxZQUFZO2dCQUNsQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTthQUM3QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLFlBQVksR0FBRyxJQUFJLDRCQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtnQkFDeEQsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixVQUFVLEVBQUUsWUFBWTthQUN6QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7WUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7Z0JBQ3hELElBQUksRUFBRSxZQUFZO2dCQUNsQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTthQUM3QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDcEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sQ0FBQyxZQUFZLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxjQUFjLENBQ3pELEtBQUssQ0FBQyxlQUFlLENBQ3RCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7WUFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSw0QkFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7Z0JBQ3hELElBQUksRUFBRSxZQUFZO2dCQUNsQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTthQUM3QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDOUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FDNUMsbURBQW1ELENBQ3BELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxFQUFFLENBQUMsNENBQTRDLEVBQUUsR0FBRyxFQUFFO1lBQ3BELE1BQU0sWUFBWSxHQUFHLElBQUksNEJBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUN4RCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLGFBQWEsRUFBRSxDQUFDLGFBQWEsQ0FBQzthQUMvQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3QixFQUFFLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1lBQ3pELElBQUksNEJBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUNuQyxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLFdBQVcsRUFBRSxvQkFBb0I7YUFDbEMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsSUFBSSxHQUFjLENBQUM7SUFDbkIsSUFBSSxLQUEyQixDQUFDO0lBQ2hDLElBQUksT0FBOEIsQ0FBQztJQUNuQyxJQUFJLFlBQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDcEQsT0FBTyxHQUFHLElBQUksK0NBQXFCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUN4RCxJQUFJLEVBQUUsY0FBYztZQUNwQixRQUFRLEVBQUUsUUFBUTtZQUNsQixlQUFlLEVBQ2IsNEVBQTRFO1lBQzlFLG9CQUFvQixFQUFFO2dCQUNwQixhQUFhLEVBQUUsQ0FBQyxxREFBcUQsQ0FBQzthQUN2RTtZQUNELDJCQUEyQixFQUFFLENBQUMsY0FBYyxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQUNILFlBQVksR0FBRyxJQUFJLDRCQUFZLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtZQUNsRCxJQUFJLEVBQUUsWUFBWTtZQUNsQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsRUFBRSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtZQUM3QyxNQUFNLEtBQUssR0FBa0M7Z0JBQzNDLElBQUksRUFBRSxhQUFhO2dCQUNuQixjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQy9CLFVBQVUsRUFDUixrSUFBa0k7YUFDckksQ0FBQztZQUVGLE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUV4RSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLHNEQUF3QixDQUFDLENBQUM7WUFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO1lBQy9DLE1BQU0sS0FBSyxHQUFrQztnQkFDM0MsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDL0IsVUFBVSxFQUNSLHNKQUFzSjthQUN6SixDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBd0IsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsc0RBQXdCLENBQUMsQ0FBQztZQUN4RCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7UUFDcEMsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtZQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLHNEQUF3QixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBQy9ELElBQUksRUFBRSxhQUFhO2dCQUNuQixjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQy9CLFVBQVUsRUFBRSwyQ0FBMkM7YUFDeEQsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7WUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBd0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUMvRCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFO2dCQUMvQixVQUFVLEVBQUUsMkNBQTJDO2dCQUN2RCxVQUFVLEVBQUUsWUFBWTthQUN6QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7WUFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBd0IsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUMvRCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFO2dCQUMvQixVQUFVLEVBQUUsMkNBQTJDO2FBQ3hELENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDL0QsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDL0IsVUFBVSxFQUFFLDJDQUEyQzthQUN4RCxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDeEQsa0ZBQWtGO1lBQ2xGLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQ2xDLDJDQUEyQyxDQUM1QyxDQUFDO1lBQ0YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsd0NBQXdDLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1lBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDL0QsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDL0IsVUFBVSxFQUFFLDJDQUEyQzthQUN4RCxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3QixFQUFFLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1lBQ3pELElBQUksc0RBQXdCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDaEQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDL0IsVUFBVSxFQUFFLDJDQUEyQzthQUN4RCxDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtJQUN6QyxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFDaEMsSUFBSSxPQUE4QixDQUFDO0lBQ25DLElBQUksWUFBMEIsQ0FBQztJQUUvQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQixLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQ3hELElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7WUFDOUUsb0JBQW9CLEVBQUU7Z0JBQ3BCLGFBQWEsRUFBRSxDQUFDLHFEQUFxRCxDQUFDO2FBQ3ZFO1lBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxjQUFjLENBQUM7U0FDOUMsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxHQUFHLElBQUksNEJBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ2xELElBQUksRUFBRSxZQUFZO1lBQ2xCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtRQUNuRCxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sS0FBSyxHQUFtQztnQkFDNUMsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixvQkFBb0IsRUFBRSxNQUFNO2dCQUM1QixlQUFlLEVBQUU7b0JBQ2Y7d0JBQ0UsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFO3dCQUMvQixpQkFBaUIsRUFBRSxtQkFBbUI7d0JBQ3RDLFFBQVEsRUFBRSxLQUFLO3FCQUNoQjtpQkFDRjthQUNGLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLHNEQUF5QixDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFekUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxzREFBeUIsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzREFBc0QsRUFBRSxHQUFHLEVBQUU7WUFDOUQsTUFBTSxLQUFLLEdBQW1DO2dCQUM1QyxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLG9CQUFvQixFQUFFLE1BQU07Z0JBQzVCLGVBQWUsRUFBRTtvQkFDZjt3QkFDRSxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUU7d0JBQy9CLGlCQUFpQixFQUFFLG1CQUFtQjt3QkFDdEMsUUFBUSxFQUFFLElBQUk7cUJBQ2Y7aUJBQ0Y7Z0JBQ0QsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBeUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRXpFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtRQUM1RCxFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1lBQ2hFLE1BQU0sS0FBSyxHQUFtQztnQkFDNUMsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLG9CQUFvQixFQUFFLGFBQWE7Z0JBQ25DLGVBQWUsRUFBRTtvQkFDZjt3QkFDRSxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUU7d0JBQy9CLGlCQUFpQixFQUFFLE1BQU07d0JBQ3pCLGFBQWEsRUFBRSxJQUFJO3FCQUNwQjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsVUFBVSxFQUFFLDhDQUE4Qzt3QkFDMUQsWUFBWSxFQUFFLG1DQUFtQztxQkFDbEQ7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBeUIsQ0FDMUMsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztZQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLEtBQUssR0FBbUM7Z0JBQzVDLElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixvQkFBb0IsRUFBRSxhQUFhO2dCQUNuQyxlQUFlLEVBQUU7b0JBQ2Y7d0JBQ0UsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFO3dCQUMvQixpQkFBaUIsRUFBRSxNQUFNO3FCQUMxQjtpQkFDRjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0o7d0JBQ0UsVUFBVSxFQUFFLGdEQUFnRDt3QkFDNUQsWUFBWSxFQUFFLG1DQUFtQztxQkFDbEQ7b0JBQ0Q7d0JBQ0UsVUFBVSxFQUFFLGdEQUFnRDt3QkFDNUQsWUFBWSxFQUFFLG1DQUFtQztxQkFDbEQ7aUJBQ0Y7YUFDRixDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBeUIsQ0FDMUMsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztZQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxFQUFFLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO1lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDaEUsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixXQUFXLEVBQUUsaURBQWlEO2dCQUM5RCxvQkFBb0IsRUFBRSxhQUFhO2dCQUNuQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3RELElBQUksRUFBRTtvQkFDSjt3QkFDRSxVQUFVLEVBQUUseUNBQXlDO3dCQUNyRCxZQUFZLEVBQUUsbUNBQW1DO3FCQUNsRDtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDbkMsaURBQWlELENBQ2xELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7WUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBeUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUNoRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLG9CQUFvQixFQUFFLE1BQU07Z0JBQzVCLGVBQWUsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDdEQscUJBQXFCLEVBQUUsSUFBSTthQUM1QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxFQUFFLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1lBQzVELE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDaEUsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixvQkFBb0IsRUFBRSxNQUFNO2dCQUM1QixlQUFlLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdkQsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7WUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxzREFBeUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUNoRSxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLFVBQVUsRUFBRSxZQUFZO2dCQUN4QixvQkFBb0IsRUFBRSxNQUFNO2dCQUM1QixlQUFlLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdkQsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxFQUFFLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO1lBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksc0RBQXlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDaEUsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixvQkFBb0IsRUFBRSxNQUFNO2dCQUM1QixlQUFlLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdkQsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNoRSxNQUFNLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsY0FBYyxDQUNuRCxLQUFLLENBQUMsZUFBZSxDQUN0QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCLEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7WUFDekQsSUFBSSxzREFBeUIsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFO2dCQUNqRCxJQUFJLEVBQUUsYUFBYTtnQkFDbkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQzVCLG9CQUFvQixFQUFFLE1BQU07Z0JBQzVCLGVBQWUsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN2RCxDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtJQUMxQyxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFDaEMsSUFBSSxPQUE4QixDQUFDO0lBRW5DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDeEQsSUFBSSxFQUFFLGNBQWM7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUNiLDRFQUE0RTtZQUM5RSxvQkFBb0IsRUFBRTtnQkFDcEIsYUFBYSxFQUFFLENBQUMscURBQXFELENBQUM7YUFDdkU7WUFDRCwyQkFBMkIsRUFBRSxDQUFDLGVBQWUsQ0FBQztTQUMvQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7UUFDbkMsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtZQUMxRSxNQUFNLEtBQUssR0FBb0M7Z0JBQzdDLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2FBQzdCLENBQUM7WUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLHlEQUEwQixDQUMzQyxLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCLEtBQUssQ0FDTixDQUFDO1lBRUYsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyx5REFBMEIsQ0FBQyxDQUFDO1lBQzFELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhEQUE4RCxFQUFFLEdBQUcsRUFBRTtZQUN0RSxNQUFNLEtBQUssR0FBb0M7Z0JBQzdDLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixXQUFXLEVBQUUsa0NBQWtDO2dCQUMvQyx1Q0FBdUMsRUFBRSxDQUFDLE1BQU0sQ0FBQzthQUNsRCxDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsSUFBSSx5REFBMEIsQ0FDM0MsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztZQUVGLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNuRSxNQUFNO2FBQ1AsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7UUFDcEMsRUFBRSxDQUFDLG9EQUFvRCxFQUFFLEdBQUcsRUFBRTtZQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLHlEQUEwQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFDckUsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7YUFDN0IsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7WUFDeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSx5REFBMEIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3JFLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixVQUFVLEVBQUUsWUFBWTthQUN6QixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7WUFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSx5REFBMEIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3JFLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2FBQzdCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUM5RCxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEUsTUFBTSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLGNBQWMsQ0FDbkQsS0FBSyxDQUFDLGVBQWUsQ0FDdEIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLHlEQUEwQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFDckUsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7YUFDN0IsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ3hELE1BQU0sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQ3RDLG1EQUFtRCxDQUNwRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCLEVBQUUsQ0FBQyxpREFBaUQsRUFBRSxHQUFHLEVBQUU7WUFDekQsSUFBSSx5REFBMEIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3RELElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUM1QixXQUFXLEVBQUUsNkJBQTZCO2FBQzNDLENBQUMsQ0FBQztZQUVILE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsNkJBQTZCLEVBQUUsR0FBRyxFQUFFO0lBQzNDLElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQThCLENBQUM7SUFDbkMsSUFBSSxjQUEwQyxDQUFDO0lBQy9DLElBQUksWUFBMEIsQ0FBQztJQUUvQixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQixLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNwRCxPQUFPLEdBQUcsSUFBSSwrQ0FBcUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQ3hELElBQUksRUFBRSxjQUFjO1lBQ3BCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGVBQWUsRUFDYiw0RUFBNEU7WUFDOUUsb0JBQW9CLEVBQUU7Z0JBQ3BCLGFBQWEsRUFBRSxDQUFDLHFEQUFxRCxDQUFDO2FBQ3ZFO1lBQ0QsMkJBQTJCLEVBQUUsQ0FBQyxlQUFlLENBQUM7U0FDL0MsQ0FBQyxDQUFDO1FBQ0gsY0FBYyxHQUFHLElBQUkseURBQTBCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBQ3ZFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsWUFBWSxHQUFHLElBQUksNEJBQVksQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQ2xELElBQUksRUFBRSxZQUFZO1lBQ2xCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUFFO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxFQUFFLENBQUMsc0RBQXNELEVBQUUsR0FBRyxFQUFFO1lBQzlELE1BQU0sS0FBSyxHQUFxQztnQkFDOUMsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsNEJBQTRCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQy9DLGVBQWUsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN2RCxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSw0REFBMkIsQ0FDaEQsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztZQUVGLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsNERBQTJCLENBQUMsQ0FBQztZQUMvRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sS0FBSyxHQUFxQztnQkFDOUMsSUFBSSxFQUFFLHVCQUF1QjtnQkFDN0IsNEJBQTRCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQy9DLFdBQVcsRUFBRSxnQ0FBZ0M7Z0JBQzdDLGVBQWUsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN2RCxDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSw0REFBMkIsQ0FDaEQsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztZQUVGLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdkMsZ0NBQWdDLENBQ2pDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx5REFBeUQsRUFBRSxHQUFHLEVBQUU7WUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSw0QkFBWSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0JBQ25ELElBQUksRUFBRSxjQUFjO2dCQUNwQixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTthQUM3QixDQUFDLENBQUM7WUFFSCxNQUFNLEtBQUssR0FBcUM7Z0JBQzlDLElBQUksRUFBRSx3QkFBd0I7Z0JBQzlCLDRCQUE0QixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUMvQyxlQUFlLEVBQUU7b0JBQ2YsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtvQkFDbkMsRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtpQkFDOUI7YUFDRixDQUFDO1lBRUYsTUFBTSxVQUFVLEdBQUcsSUFBSSw0REFBMkIsQ0FDaEQsS0FBSyxFQUNMLGdCQUFnQixFQUNoQixLQUFLLENBQ04sQ0FBQztZQUVGLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxFQUFFLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1lBQzVELE1BQU0sVUFBVSxHQUFHLElBQUksNERBQTJCLENBQ2hELEtBQUssRUFDTCxnQkFBZ0IsRUFDaEI7Z0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsNEJBQTRCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQy9DLGVBQWUsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN2RCxDQUNGLENBQUM7WUFFRixNQUFNLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLFVBQVUsR0FBRyxJQUFJLDREQUEyQixDQUNoRCxLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCO2dCQUNFLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLDRCQUE0QixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUMvQyxVQUFVLEVBQUUsWUFBWTtnQkFDeEIsZUFBZSxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3ZELENBQ0YsQ0FBQztZQUVGLE1BQU0sQ0FBQyxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtZQUNoRCxNQUFNLFVBQVUsR0FBRyxJQUFJLDREQUEyQixDQUNoRCxLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCO2dCQUNFLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLDRCQUE0QixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUMvQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdkQsQ0FDRixDQUFDO1lBRUYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNwRSxNQUFNLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLENBQUMsY0FBYyxDQUN2RCxLQUFLLENBQUMsZUFBZSxDQUN0QixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7UUFDekMsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsRUFBRTtZQUN4RSxNQUFNLFVBQVUsR0FBRyxJQUFJLDREQUEyQixDQUNoRCxLQUFLLEVBQ0wsZ0JBQWdCLEVBQ2hCO2dCQUNFLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLDRCQUE0QixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUMvQyxlQUFlLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDdkQsQ0FDRixDQUFDO1lBRUYsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxJQUFJLENBQ3hELGNBQWMsQ0FBQyxFQUFFLENBQ2xCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUU7UUFDN0IsRUFBRSxDQUFDLGlEQUFpRCxFQUFFLEdBQUcsRUFBRTtZQUN6RCxJQUFJLDREQUEyQixDQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBRTtnQkFDdkQsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsNEJBQTRCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQy9DLGVBQWUsRUFBRSxDQUFDLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQzthQUN2RCxDQUFDLENBQUM7WUFFSCxNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtJQUNqQyxJQUFJLEdBQWMsQ0FBQztJQUNuQixJQUFJLEtBQTJCLENBQUM7SUFDaEMsSUFBSSxPQUE4QixDQUFDO0lBQ25DLElBQUksY0FBMEMsQ0FBQztJQUMvQyxJQUFJLFlBQTBCLENBQUM7SUFDL0IsSUFBSSxjQUEyQyxDQUFDO0lBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BELE9BQU8sR0FBRyxJQUFJLCtDQUFxQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDeEQsSUFBSSxFQUFFLGNBQWM7WUFDcEIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUNiLDRFQUE0RTtZQUM5RSxvQkFBb0IsRUFBRTtnQkFDcEIsYUFBYSxFQUFFLENBQUMscURBQXFELENBQUM7YUFDdkU7WUFDRCwyQkFBMkIsRUFBRSxDQUFDLGVBQWUsQ0FBQztTQUMvQyxDQUFDLENBQUM7UUFDSCxjQUFjLEdBQUcsSUFBSSx5REFBMEIsQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLEVBQUU7WUFDdkUsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixnQkFBZ0IsRUFBRSxPQUFPLENBQUMsRUFBRTtTQUM3QixDQUFDLENBQUM7UUFDSCxZQUFZLEdBQUcsSUFBSSw0QkFBWSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDbEQsSUFBSSxFQUFFLFlBQVk7WUFDbEIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLEVBQUU7U0FDN0IsQ0FBQyxDQUFDO1FBQ0gsY0FBYyxHQUFHLElBQUksNERBQTJCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBQ3hFLElBQUksRUFBRSxpQkFBaUI7WUFDdkIsNEJBQTRCLEVBQUUsY0FBYyxDQUFDLEVBQUU7WUFDL0MsZUFBZSxFQUFFLENBQUMsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ3ZELENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLE1BQU0sS0FBSyxHQUEyQjtnQkFDcEMsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxXQUFXLEVBQUUsZ0NBQWdDO2dCQUM3QyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQzdCLE9BQU8sRUFBRTtvQkFDUCxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFO2lCQUMvRDtnQkFDRCxZQUFZLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLENBQUM7YUFDdEUsQ0FBQztZQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUU3RCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxDQUFDLHVDQUFpQixDQUFDLENBQUM7WUFDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDckMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7WUFDOUMsTUFBTSxLQUFLLEdBQTJCO2dCQUNwQyxJQUFJLEVBQUUsV0FBVztnQkFDakIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSztnQkFDZixxQkFBcUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztnQkFDL0IsT0FBTyxFQUFFO29CQUNQLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUU7aUJBQy9EO2dCQUNELFlBQVksRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUN0RSxDQUFDO1lBRUYsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTdELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtRQUNqRCxFQUFFLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sS0FBSyxHQUEyQjtnQkFDcEMsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsT0FBTztnQkFDZixTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YscUJBQXFCLEVBQUUsQ0FBQyxLQUFLLENBQUM7YUFDL0IsQ0FBQztZQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUUvRCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtRQUN2RCxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1lBQ3ZELE1BQU0sS0FBSyxHQUEyQjtnQkFDcEMsSUFBSSxFQUFFLHlCQUF5QjtnQkFDL0IsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFdBQVcsRUFBRSw4Q0FBOEM7Z0JBQzNELFFBQVEsRUFBRSxFQUFFO2dCQUNaLE1BQU0sRUFBRSxhQUFhO2dCQUNyQixTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsT0FBTyxFQUFFO29CQUNQLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUU7aUJBQ2hFO2dCQUNELFlBQVksRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsQ0FBQzthQUN0RSxDQUFDO1lBRUYsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFcEUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtZQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ25ELElBQUksRUFBRSxVQUFVO2dCQUNoQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsRUFBRTtnQkFDbkMsUUFBUSxFQUFFLEdBQUc7Z0JBQ2IsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7WUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO2dCQUNuRCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDcEQsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtZQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0JBQ25ELElBQUksRUFBRSxVQUFVO2dCQUNoQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsRUFBRTtnQkFDbkMsUUFBUSxFQUFFLEdBQUc7Z0JBQ2IsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRTtnQkFDdkQsSUFBSSxFQUFFLGNBQWM7Z0JBQ3BCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1DQUFtQyxFQUFFLEdBQUcsRUFBRTtZQUMzQyxNQUFNLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUU7Z0JBQ3hELElBQUksRUFBRSxlQUFlO2dCQUNyQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsRUFBRTtnQkFDbkMsUUFBUSxFQUFFLEdBQUc7Z0JBQ2IsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsRUFBRTtRQUNuQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDdEQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDekIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEdBQUcsRUFBRTtZQUNsRCxNQUFNLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUU7Z0JBQ3pELElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQzthQUM3QyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUNyRCxJQUFJLEVBQUUsWUFBWTtnQkFDbEIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSztnQkFDZixxQkFBcUIsRUFBRSxDQUFDLFdBQVcsQ0FBQzthQUNyQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtnQkFDeEQsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMseUJBQXlCLEVBQUUsR0FBRyxFQUFFO1FBQ3ZDLEVBQUUsQ0FBQyxpQ0FBaUMsRUFBRSxHQUFHLEVBQUU7WUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUNwRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRTtpQkFDL0Q7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ2pDLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUU7YUFDL0QsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtnQkFDdEQsSUFBSSxFQUFFLGFBQWE7Z0JBQ25CLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YsT0FBTyxFQUFFO29CQUNQLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUU7aUJBQy9EO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUNqQyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFO2FBQy9ELENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEdBQUcsRUFBRTtZQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtnQkFDM0QsSUFBSSxFQUFFLGtCQUFrQjtnQkFDeEIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSztnQkFDZixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRTtvQkFDOUQsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFO2lCQUNuRTthQUNGLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxFQUFFLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1lBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLGNBQWMsRUFBRTtnQkFDeEQsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEVBQUUsYUFBYTtnQkFDckIsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtZQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBQ3ZELElBQUksRUFBRSxjQUFjO2dCQUNwQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsRUFBRTtnQkFDbkMsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsTUFBTSxFQUFFLE9BQU87Z0JBQ2YsU0FBUyxFQUFFLFNBQVM7Z0JBQ3BCLFFBQVEsRUFBRSxLQUFLO2FBQ2hCLENBQUMsQ0FBQztZQUVILE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO1FBQ3BDLEVBQUUsQ0FBQyxvREFBb0QsRUFBRSxHQUFHLEVBQUU7WUFDNUQsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUNwRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtZQUN4RCxNQUFNLElBQUksR0FBRyxJQUFJLHVDQUFpQixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ3BELElBQUksRUFBRSxXQUFXO2dCQUNqQixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsRUFBRTtnQkFDbkMsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUNwRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDNUQsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzlELE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxjQUFjLENBQ2pELEtBQUssQ0FBQyxlQUFlLENBQ3RCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxHQUFHLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUNwRCxJQUFJLEVBQUUsV0FBVztnQkFDakIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDdEQsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FDcEMsbURBQW1ELENBQ3BELENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtRQUN6QyxFQUFFLENBQUMsbURBQW1ELEVBQUUsR0FBRyxFQUFFO1lBQzNELE1BQU0sSUFBSSxHQUFHLElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDcEQsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3QixFQUFFLENBQUMsaURBQWlELEVBQUUsR0FBRyxFQUFFO1lBQ3pELElBQUksdUNBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtnQkFDdkMsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO2dCQUNuQyxXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxRQUFRLEVBQUUsR0FBRztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxTQUFTLEVBQUUsU0FBUztnQkFDcEIsUUFBUSxFQUFFLEtBQUs7Z0JBQ2YscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDOUIsQ0FBQyxDQUFDO1lBRUgsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzdDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO1FBQ3RDLEVBQUUsQ0FBQyxrREFBa0QsRUFBRSxHQUFHLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFO2dCQUN2RCxJQUFJLEVBQUUsY0FBYztnQkFDcEIsZ0JBQWdCLEVBQUUsY0FBYyxDQUFDLEVBQUU7Z0JBQ25DLFdBQVcsRUFBRSwyQ0FBMkM7Z0JBQ3hELFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2dCQUNwQixRQUFRLEVBQUUsS0FBSztnQkFDZixnQkFBZ0IsRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDaEMscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2dCQUNyQyxPQUFPLEVBQUU7b0JBQ1AsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRTtvQkFDOUQsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFO2lCQUNuRTtnQkFDRCxZQUFZLEVBQUU7b0JBQ1osRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRTtpQkFDL0Q7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQzVELE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDakUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbXByZWhlbnNpdmUgdGVzdHMgZm9yIHRoZSBWaXJ0dWFsIE5ldHdvcmsgTWFuYWdlciBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgdGhlIFZpcnR1YWxOZXR3b3JrTWFuYWdlciBjbGFzcyBhbmQgYWxsIGNoaWxkIHJlc291cmNlXG4gKiBjb25zdHJ1Y3RzIHVzaW5nIHRoZSBBemFwaVJlc291cmNlIGZyYW1ld29yay4gVGVzdHMgY292ZXIgYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbixcbiAqIGV4cGxpY2l0IHZlcnNpb24gcGlubmluZywgc2NoZW1hIHZhbGlkYXRpb24sIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uLCByZXNvdXJjZSBjcmVhdGlvbixcbiAqIGFuZCBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcy5cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24sXG4gIENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb25Qcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9jb25uZWN0aXZpdHktY29uZmlndXJhdGlvblwiO1xuaW1wb3J0IHsgSXBhbVBvb2wgfSBmcm9tIFwiLi4vbGliL2lwYW0tcG9vbFwiO1xuaW1wb3J0IHsgTmV0d29ya0dyb3VwLCBOZXR3b3JrR3JvdXBQcm9wcyB9IGZyb20gXCIuLi9saWIvbmV0d29yay1ncm91cFwiO1xuaW1wb3J0IHtcbiAgTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyLFxuICBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXJQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9uZXR3b3JrLWdyb3VwLXN0YXRpYy1tZW1iZXJcIjtcbmltcG9ydCB7XG4gIFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uLFxuICBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvblByb3BzLFxufSBmcm9tIFwiLi4vbGliL3NlY3VyaXR5LWFkbWluLWNvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7XG4gIFNlY3VyaXR5QWRtaW5SdWxlLFxuICBTZWN1cml0eUFkbWluUnVsZVByb3BzLFxufSBmcm9tIFwiLi4vbGliL3NlY3VyaXR5LWFkbWluLXJ1bGVcIjtcbmltcG9ydCB7XG4gIFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbixcbiAgU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uUHJvcHMsXG59IGZyb20gXCIuLi9saWIvc2VjdXJpdHktYWRtaW4tcnVsZS1jb2xsZWN0aW9uXCI7XG5pbXBvcnQge1xuICBWaXJ0dWFsTmV0d29ya01hbmFnZXIsXG4gIFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzLFxufSBmcm9tIFwiLi4vbGliL3ZpcnR1YWwtbmV0d29yay1tYW5hZ2VyXCI7XG5cbmRlc2NyaWJlKFwiVmlydHVhbE5ldHdvcmtNYW5hZ2VyXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3Qtc3RhY2tcIik7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQmFzaWMgSW5zdGFudGlhdGlvbiBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGEgVmlydHVhbCBOZXR3b3JrIE1hbmFnZXIgd2l0aCBtaW5pbXVtIHJlcXVpcmVkIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIiwgXCJTZWN1cml0eUFkbWluXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlcikudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtNYW5hZ2VyKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnJlc291cmNlTmFtZSkudG9CZURlZmluZWQoKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwiTWljcm9zb2Z0Lk5ldHdvcmsvbmV0d29ya01hbmFnZXJzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGEgVmlydHVhbCBOZXR3b3JrIE1hbmFnZXIgd2l0aCBhbGwgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXItZnVsbFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbWFuYWdlbWVudEdyb3VwczogW1xuICAgICAgICAgICAgXCIvcHJvdmlkZXJzL01pY3Jvc29mdC5NYW5hZ2VtZW50L21hbmFnZW1lbnRHcm91cHMvbWcxXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIiwgXCJTZWN1cml0eUFkbWluXCJdLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUZXN0IG5ldHdvcmsgbWFuYWdlciB3aXRoIGFsbCBwcm9wZXJ0aWVzXCIsXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJ0ZXN0XCIsXG4gICAgICAgICAgcHJvamVjdDogXCJjZGt0Zi1jb25zdHJ1Y3RzXCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIlRlc3QgbmV0d29yayBtYW5hZ2VyIHdpdGggYWxsIHByb3BlcnRpZXNcIixcbiAgICAgICk7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy50YWdzKS50b0VxdWFsKHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IFwidGVzdFwiLFxuICAgICAgICBwcm9qZWN0OiBcImNka3RmLWNvbnN0cnVjdHNcIixcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KG1hbmFnZXIudGFncykudG9FcXVhbChwcm9wcy50YWdzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJGcmFtZXdvcmsgSW50ZWdyYXRpb24gVGVzdHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHdoZW4gbm9uZSBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2Ugc3BlY2lmaWVkIEFQSSB2ZXJzaW9uIHdoZW4gcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMTEtMDFcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyMy0xMS0wMVwiKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwiQDIwMjMtMTEtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCByZWdpc3RlciBzY2hlbWFzIG9uIGZpcnN0IGluc3RhbnRpYXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICAvLyBGaXJzdCBpbnN0YW50aWF0aW9uIHNob3VsZCByZWdpc3RlciBzY2hlbWFzXG4gICAgICBjb25zdCBtYW5hZ2VyMSA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXIxXCIsIHByb3BzKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyMSkudG9CZUluc3RhbmNlT2YoVmlydHVhbE5ldHdvcmtNYW5hZ2VyKTtcblxuICAgICAgLy8gU2Vjb25kIGluc3RhbnRpYXRpb24gc2hvdWxkIG5vdCByZS1yZWdpc3RlclxuICAgICAgY29uc3QgbWFuYWdlcjIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyMlwiLCB7XG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyLTJcIixcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KG1hbmFnZXIyKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya01hbmFnZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByb3BlcnR5IFZhbGlkYXRpb24gVGVzdHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHByb3Blcmx5IGZvcm1hdCBuZXR3b3JrTWFuYWdlclNjb3BlcyB3aXRoIHN1YnNjcmlwdGlvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzExMTExMTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMVwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3Blcy5zdWJzY3JpcHRpb25zKS50b0hhdmVMZW5ndGgoMik7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3Blcy5zdWJzY3JpcHRpb25zKS50b0NvbnRhaW4oXG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3Blcmx5IGZvcm1hdCBuZXR3b3JrTWFuYWdlclNjb3BlcyB3aXRoIG1hbmFnZW1lbnQgZ3JvdXBzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBtYW5hZ2VtZW50R3JvdXBzOiBbXG4gICAgICAgICAgICBcIi9wcm92aWRlcnMvTWljcm9zb2Z0Lk1hbmFnZW1lbnQvbWFuYWdlbWVudEdyb3Vwcy9tZzFcIixcbiAgICAgICAgICAgIFwiL3Byb3ZpZGVycy9NaWNyb3NvZnQuTWFuYWdlbWVudC9tYW5hZ2VtZW50R3JvdXBzL21nMlwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZXMubWFuYWdlbWVudEdyb3VwcykudG9IYXZlTGVuZ3RoKFxuICAgICAgICAyLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVzLm1hbmFnZW1lbnRHcm91cHMpLnRvQ29udGFpbihcbiAgICAgICAgXCIvcHJvdmlkZXJzL01pY3Jvc29mdC5NYW5hZ2VtZW50L21hbmFnZW1lbnRHcm91cHMvbWcxXCIsXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHByb3Blcmx5IGZvcm1hdCBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMgd2l0aCBDb25uZWN0aXZpdHkgYW5kIFNlY3VyaXR5QWRtaW5cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIiwgXCJTZWN1cml0eUFkbWluXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlcykudG9Db250YWluKFxuICAgICAgICBcIkNvbm5lY3Rpdml0eVwiLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlcykudG9Db250YWluKFxuICAgICAgICBcIlNlY3VyaXR5QWRtaW5cIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBwcm9wZXJseSBmb3JtYXQgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzIHdpdGggUm91dGluZ1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIlJvdXRpbmdcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzKS50b0NvbnRhaW4oXCJSb3V0aW5nXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRhZyBNYW5hZ2VtZW50IFRlc3RzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBhZGQgdGFncyB1c2luZyBhZGRUYWcgbWV0aG9kXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IFwidGVzdFwiLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBtYW5hZ2VyLmFkZFRhZyhcInByb2plY3RcIiwgXCJuZXR3b3JrLWluZnJhc3RydWN0dXJlXCIpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy50YWdzIS5wcm9qZWN0KS50b0JlKFwibmV0d29yay1pbmZyYXN0cnVjdHVyZVwiKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLnRhZ3MhLmVudmlyb25tZW50KS50b0JlKFwidGVzdFwiKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9Db250YWluKFwibmV0d29yay1pbmZyYXN0cnVjdHVyZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJlbW92ZSB0YWdzIHVzaW5nIHJlbW92ZVRhZyBtZXRob2RcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICAgIHRhZ3M6IHtcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJ0ZXN0XCIsXG4gICAgICAgICAgdGVtcG9yYXJ5OiBcInRydWVcIixcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgbWFuYWdlci5yZW1vdmVUYWcoXCJ0ZW1wb3JhcnlcIik7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLnRhZ3MhLnRlbXBvcmFyeSkudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMudGFncyEuZW52aXJvbm1lbnQpLnRvQmUoXCJ0ZXN0XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgYWRkIHRhZ3Mgd2hlbiBubyBpbml0aWFsIHRhZ3MgZXhpc3RcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIG1hbmFnZXIuYWRkVGFnKFwiZmlyc3RUYWdcIiwgXCJmaXJzdFZhbHVlXCIpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy50YWdzIS5maXJzdFRhZykudG9CZShcImZpcnN0VmFsdWVcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dCBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHByb3BlciBUZXJyYWZvcm0gb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIuaWRPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWFuYWdlci5uYW1lT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIubG9jYXRpb25PdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWFuYWdlci50YWdzT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIuc2NvcGVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QobWFuYWdlci5zY29wZUFjY2Vzc2VzT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBwcm9wZXIgcmVzb3VyY2UgcmVmZXJlbmNlcyBpbiBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgICBleHBlY3QobWFuYWdlci5yZXNvdXJjZU5hbWUpLnRvTWF0Y2goL15cXCRcXHsuKlxcLm5hbWVcXH0kLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiTGlmZWN5Y2xlIE1hbmFnZW1lbnQgVGVzdHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZV9jaGFuZ2VzIHdoZW4gc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5pZ25vcmVDaGFuZ2VzKS50b0VxdWFsKFtcInRhZ3NcIl0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBpZ25vcmVfY2hhbmdlcyBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLmlnbm9yZUNoYW5nZXMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLmlnbm9yZUNoYW5nZXMpLnRvQ29udGFpbihcInRhZ3NcIik7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5pZ25vcmVDaGFuZ2VzKS50b0NvbnRhaW4oXCJkZXNjcmlwdGlvblwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDREsgU3ludGhlc2lzIFRlc3RzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzeW50aGVzaXplIHZhbGlkIFRlcnJhZm9ybSBjb25maWd1cmF0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBWaXJ0dWFsTmV0d29ya01hbmFnZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW5ldHdvcmstbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCIsIFwiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGVzdCBuZXR3b3JrIG1hbmFnZXJcIixcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIGVudmlyb25tZW50OiBcInRlc3RcIixcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIFZpcnR1YWwgTmV0d29yayBNYW5hZ2VycyBpbiB0aGUgc2FtZSBzdGFja1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczE6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyLTFcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHByb3BzMjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXItMlwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8xMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTFcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIlNlY3VyaXR5QWRtaW5cIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyMSA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXIxXCIsIHByb3BzMSk7XG4gICAgICBjb25zdCBtYW5hZ2VyMiA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXIyXCIsIHByb3BzMik7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyMS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgICAgZXhwZWN0KG1hbmFnZXIyLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjMtMTEtMDFcIik7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB2ZXJpZnkgVGVycmFmb3JtIG91dHB1dCBzdHJ1Y3R1cmVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG5cbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5vdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcub3V0cHV0LmlkKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLm91dHB1dC5uYW1lKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLm91dHB1dC5sb2NhdGlvbikudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5vdXRwdXQudGFncykudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5vdXRwdXQuc2NvcGUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcub3V0cHV0LnNjb3BlQWNjZXNzZXMpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUmVzb3VyY2UgVHlwZSBhbmQgVmVyc2lvbiBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSBjb3JyZWN0IHJlc291cmNlIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyKS50b0JlSW5zdGFuY2VPZihWaXJ0dWFsTmV0d29ya01hbmFnZXIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBhbGwgcmVnaXN0ZXJlZCBBUEkgdmVyc2lvbnNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgdmVyc2lvbnMgPSBbXCIyMDIzLTExLTAxXCIsIFwiMjAyNC0wNS0wMVwiXTtcblxuICAgICAgdmVyc2lvbnMuZm9yRWFjaCgodmVyc2lvbikgPT4ge1xuICAgICAgICBjb25zdCB0ZXN0U3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBgU3RhY2stJHt2ZXJzaW9ufWApO1xuICAgICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihcbiAgICAgICAgICB0ZXN0U3RhY2ssXG4gICAgICAgICAgYE1hbmFnZXItJHt2ZXJzaW9ufWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYG1hbmFnZXItJHt2ZXJzaW9ufWAsXG4gICAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICAgICAgYXBpVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZXhwZWN0KG1hbmFnZXIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKHZlcnNpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2UgbGF0ZXN0IHZlcnNpb24gYXMgZGVmYXVsdFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNS0wMVwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJEZXNjcmlwdGlvbiBQcm9wZXJ0eSBUZXN0c1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFZpcnR1YWwgTmV0d29yayBNYW5hZ2VyIHdpdGggZGVzY3JpcHRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNlbnRyYWwgbmV0d29yayBtYW5hZ2VtZW50IGZvciBwcm9kdWN0aW9uIHdvcmtsb2Fkc1wiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcbiAgICAgICAgXCJDZW50cmFsIG5ldHdvcmsgbWFuYWdlbWVudCBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHNcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVmlydHVhbCBOZXR3b3JrIE1hbmFnZXIgd2l0aG91dCBkZXNjcmlwdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogVmlydHVhbE5ldHdvcmtNYW5hZ2VyUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1uZXR3b3JrLW1hbmFnZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgICAgc3Vic2NyaXB0aW9uczogW1xuICAgICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMuZGVzY3JpcHRpb24pLnRvQmVVbmRlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJNaXhlZCBTY29wZSBDb25maWd1cmF0aW9uIFRlc3RzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGJvdGggc3Vic2NyaXB0aW9ucyBhbmQgbWFuYWdlbWVudCBncm91cHMgaW4gc2NvcGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICBtYW5hZ2VtZW50R3JvdXBzOiBbXG4gICAgICAgICAgICBcIi9wcm92aWRlcnMvTWljcm9zb2Z0Lk1hbmFnZW1lbnQvbWFuYWdlbWVudEdyb3Vwcy9tZzFcIixcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIkNvbm5lY3Rpdml0eVwiLCBcIlNlY3VyaXR5QWRtaW5cIl0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVzLnN1YnNjcmlwdGlvbnMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICAgIGV4cGVjdChtYW5hZ2VyLnByb3BzLm5ldHdvcmtNYW5hZ2VyU2NvcGVzLm1hbmFnZW1lbnRHcm91cHMpLnRvSGF2ZUxlbmd0aChcbiAgICAgICAgMSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGFsbCB0aHJlZSBzY29wZSBhY2Nlc3MgdHlwZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFZpcnR1YWxOZXR3b3JrTWFuYWdlclByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3QtbmV0d29yay1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXG4gICAgICAgICAgXCJDb25uZWN0aXZpdHlcIixcbiAgICAgICAgICBcIlNlY3VyaXR5QWRtaW5cIixcbiAgICAgICAgICBcIlJvdXRpbmdcIixcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzKS50b0hhdmVMZW5ndGgoMyk7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMpLnRvQ29udGFpbihcbiAgICAgICAgXCJDb25uZWN0aXZpdHlcIixcbiAgICAgICk7XG4gICAgICBleHBlY3QobWFuYWdlci5wcm9wcy5uZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXMpLnRvQ29udGFpbihcbiAgICAgICAgXCJTZWN1cml0eUFkbWluXCIsXG4gICAgICApO1xuICAgICAgZXhwZWN0KG1hbmFnZXIucHJvcHMubmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzKS50b0NvbnRhaW4oXCJSb3V0aW5nXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNvbnZlbmllbmNlIE1ldGhvZHMgZm9yIENoaWxkIFJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgbGV0IG1hbmFnZXI6IFZpcnR1YWxOZXR3b3JrTWFuYWdlcjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtbWFuYWdlclwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgICBzdWJzY3JpcHRpb25zOiBbXG4gICAgICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCIsIFwiU2VjdXJpdHlBZG1pblwiXSxcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIE5ldHdvcmtHcm91cCB1c2luZyBjb252ZW5pZW5jZSBtZXRob2RcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbmV0d29ya0dyb3VwID0gbWFuYWdlci5hZGROZXR3b3JrR3JvdXAoXCJwcm9kLWdyb3VwXCIsIHtcbiAgICAgICAgbmFtZTogXCJwcm9kdWN0aW9uLXZuZXRzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlByb2R1Y3Rpb24gdmlydHVhbCBuZXR3b3Jrc1wiLFxuICAgICAgICBtZW1iZXJUeXBlOiBcIlZpcnR1YWxOZXR3b3JrXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cCkudG9CZUluc3RhbmNlT2YoTmV0d29ya0dyb3VwKTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMubmV0d29ya01hbmFnZXJJZCkudG9CZShtYW5hZ2VyLmlkKTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMubmFtZSkudG9CZShcInByb2R1Y3Rpb24tdm5ldHNcIik7XG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIlByb2R1Y3Rpb24gdmlydHVhbCBuZXR3b3Jrc1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uIHVzaW5nIGNvbnZlbmllbmNlIG1ldGhvZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXR3b3JrR3JvdXAgPSBtYW5hZ2VyLmFkZE5ldHdvcmtHcm91cChcInByb2QtZ3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInByb2R1Y3Rpb24tdm5ldHNcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjb25uZWN0aXZpdHlDb25maWcgPSBtYW5hZ2VyLmFkZENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oXG4gICAgICAgIFwiaHViLXNwb2tlXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInByb2R1Y3Rpb24taHViLXNwb2tlXCIsXG4gICAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiSHViQW5kU3Bva2VcIixcbiAgICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgICAgICAgZ3JvdXBDb25uZWN0aXZpdHk6IFwiTm9uZVwiLFxuICAgICAgICAgICAgICB1c2VIdWJHYXRld2F5OiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGh1YnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy9odWJcIixcbiAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIk1pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrc1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbm5lY3Rpdml0eUNvbmZpZykudG9CZUluc3RhbmNlT2YoQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbik7XG4gICAgICBleHBlY3QoY29ubmVjdGl2aXR5Q29uZmlnLnByb3BzLm5ldHdvcmtNYW5hZ2VySWQpLnRvQmUobWFuYWdlci5pZCk7XG4gICAgICBleHBlY3QoY29ubmVjdGl2aXR5Q29uZmlnLnByb3BzLmNvbm5lY3Rpdml0eVRvcG9sb2d5KS50b0JlKFwiSHViQW5kU3Bva2VcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb24gdXNpbmcgY29udmVuaWVuY2UgbWV0aG9kXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHNlY3VyaXR5Q29uZmlnID0gbWFuYWdlci5hZGRTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihcInNlY3VyaXR5XCIsIHtcbiAgICAgICAgbmFtZTogXCJwcm9kdWN0aW9uLXNlY3VyaXR5XCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkhpZ2gtcHJpb3JpdHkgc2VjdXJpdHkgcnVsZXNcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qoc2VjdXJpdHlDb25maWcpLnRvQmVJbnN0YW5jZU9mKFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKTtcbiAgICAgIGV4cGVjdChzZWN1cml0eUNvbmZpZy5wcm9wcy5uZXR3b3JrTWFuYWdlcklkKS50b0JlKG1hbmFnZXIuaWQpO1xuICAgICAgZXhwZWN0KHNlY3VyaXR5Q29uZmlnLnByb3BzLm5hbWUpLnRvQmUoXCJwcm9kdWN0aW9uLXNlY3VyaXR5XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIklQQU0gUG9vbCBDb252ZW5pZW5jZSBNZXRob2RzXCIsICgpID0+IHtcbiAgICBsZXQgbWFuYWdlcjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyO1xuXG4gICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1tYW5hZ2VyXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcbiAgICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBJcGFtUG9vbCB1c2luZyBjb252ZW5pZW5jZSBtZXRob2RcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcG9vbCA9IG1hbmFnZXIuYWRkSXBhbVBvb2woXCJwcm9kLXBvb2xcIiwge1xuICAgICAgICBuYW1lOiBcInByb2R1Y3Rpb24tcG9vbFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiBbXCIxMC4wLjAuMC84XCJdLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJQcm9kdWN0aW9uIElQIHBvb2xcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocG9vbCkudG9CZUluc3RhbmNlT2YoSXBhbVBvb2wpO1xuICAgICAgZXhwZWN0KHBvb2wucHJvcHMubmV0d29ya01hbmFnZXJJZCkudG9CZShtYW5hZ2VyLmlkKTtcbiAgICAgIGV4cGVjdChwb29sLnByb3BzLm5hbWUpLnRvQmUoXCJwcm9kdWN0aW9uLXBvb2xcIik7XG4gICAgICBleHBlY3QocG9vbC5wcm9wcy5hZGRyZXNzUHJlZml4ZXMpLnRvRXF1YWwoW1wiMTAuMC4wLjAvOFwiXSk7XG4gICAgICBleHBlY3QocG9vbC5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcIlByb2R1Y3Rpb24gSVAgcG9vbFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBJcGFtUG9vbCB3aXRoIGFsbCBwcm9wZXJ0aWVzIHVzaW5nIGNvbnZlbmllbmNlIG1ldGhvZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwb29sID0gbWFuYWdlci5hZGRJcGFtUG9vbChcInJlZ2lvbmFsLXBvb2xcIiwge1xuICAgICAgICBuYW1lOiBcImVhc3R1cy1wb29sXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBhZGRyZXNzUHJlZml4ZXM6IFtcIjEwLjEuMC4wLzE2XCIsIFwiMTAuMi4wLjAvMTZcIl0sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkVhc3QgVVMgcmVnaW9uYWwgcG9vbFwiLFxuICAgICAgICBkaXNwbGF5TmFtZTogXCJFYXN0IFVTIFByb2R1Y3Rpb24gUG9vbFwiLFxuICAgICAgICBwYXJlbnRQb29sTmFtZTogXCJwcm9kdWN0aW9uLXBvb2xcIixcbiAgICAgICAgdGFnczoge1xuICAgICAgICAgIHJlZ2lvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHBvb2wpLnRvQmVJbnN0YW5jZU9mKElwYW1Qb29sKTtcbiAgICAgIGV4cGVjdChwb29sLnByb3BzLm5ldHdvcmtNYW5hZ2VySWQpLnRvQmUobWFuYWdlci5pZCk7XG4gICAgICBleHBlY3QocG9vbC5wcm9wcy5uYW1lKS50b0JlKFwiZWFzdHVzLXBvb2xcIik7XG4gICAgICBleHBlY3QocG9vbC5wcm9wcy5hZGRyZXNzUHJlZml4ZXMpLnRvRXF1YWwoW1xuICAgICAgICBcIjEwLjEuMC4wLzE2XCIsXG4gICAgICAgIFwiMTAuMi4wLjAvMTZcIixcbiAgICAgIF0pO1xuICAgICAgZXhwZWN0KHBvb2wucHJvcHMuZGVzY3JpcHRpb24pLnRvQmUoXCJFYXN0IFVTIHJlZ2lvbmFsIHBvb2xcIik7XG4gICAgICBleHBlY3QocG9vbC5wcm9wcy5kaXNwbGF5TmFtZSkudG9CZShcIkVhc3QgVVMgUHJvZHVjdGlvbiBQb29sXCIpO1xuICAgICAgZXhwZWN0KHBvb2wucHJvcHMucGFyZW50UG9vbE5hbWUpLnRvQmUoXCJwcm9kdWN0aW9uLXBvb2xcIik7XG4gICAgICBleHBlY3QocG9vbC5wcm9wcy50YWdzKS50b0VxdWFsKHtcbiAgICAgICAgcmVnaW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBlbnZpcm9ubWVudDogXCJwcm9kdWN0aW9uXCIsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBJcGFtUG9vbCB3aXRoIGlnbm9yZUNoYW5nZXMgdXNpbmcgY29udmVuaWVuY2UgbWV0aG9kXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHBvb2wgPSBtYW5hZ2VyLmFkZElwYW1Qb29sKFwibWFuYWdlZC1wb29sXCIsIHtcbiAgICAgICAgbmFtZTogXCJleHRlcm5hbGx5LW1hbmFnZWQtcG9vbFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJ3ZXN0dXNcIixcbiAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiBbXCIxNzIuMTYuMC4wLzEyXCJdLFxuICAgICAgICBpZ25vcmVDaGFuZ2VzOiBbXCJ0YWdzXCIsIFwiZGVzY3JpcHRpb25cIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHBvb2wpLnRvQmVJbnN0YW5jZU9mKElwYW1Qb29sKTtcbiAgICAgIGV4cGVjdChwb29sLnByb3BzLmlnbm9yZUNoYW5nZXMpLnRvRXF1YWwoW1widGFnc1wiLCBcImRlc2NyaXB0aW9uXCJdKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBoaWVyYXJjaGljYWwgSXBhbVBvb2xzIHVzaW5nIGNvbnZlbmllbmNlIG1ldGhvZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UG9vbCA9IG1hbmFnZXIuYWRkSXBhbVBvb2woXCJyb290LXBvb2xcIiwge1xuICAgICAgICBuYW1lOiBcInJvb3QtcG9vbFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiBbXCIxMC4wLjAuMC84XCJdLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJSb290IElQIHBvb2xcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjaGlsZFBvb2wgPSBtYW5hZ2VyLmFkZElwYW1Qb29sKFwiY2hpbGQtcG9vbFwiLCB7XG4gICAgICAgIG5hbWU6IFwiY2hpbGQtcG9vbFwiLFxuICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiBbXCIxMC4xLjAuMC8xNlwiXSxcbiAgICAgICAgcGFyZW50UG9vbE5hbWU6IHJvb3RQb29sLnByb3BzLm5hbWUsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNoaWxkIElQIHBvb2xcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3Qocm9vdFBvb2wpLnRvQmVJbnN0YW5jZU9mKElwYW1Qb29sKTtcbiAgICAgIGV4cGVjdChjaGlsZFBvb2wpLnRvQmVJbnN0YW5jZU9mKElwYW1Qb29sKTtcbiAgICAgIGV4cGVjdChjaGlsZFBvb2wucHJvcHMucGFyZW50UG9vbE5hbWUpLnRvQmUocm9vdFBvb2wucHJvcHMubmFtZSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB2YWxpZGF0ZSBDSURSIHByZWZpeGVzIHdoZW4gY3JlYXRpbmcgcG9vbCB2aWEgY29udmVuaWVuY2UgbWV0aG9kXCIsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG1hbmFnZXIuYWRkSXBhbVBvb2woXCJpbnZhbGlkLXBvb2xcIiwge1xuICAgICAgICAgIG5hbWU6IFwiaW52YWxpZC1wb29sXCIsXG4gICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgYWRkcmVzc1ByZWZpeGVzOiBbXCJpbnZhbGlkLWNpZHJcIl0sXG4gICAgICAgIH0pO1xuICAgICAgfSkudG9UaHJvdygpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZGV0ZWN0IG92ZXJsYXBwaW5nIENJRFIgcHJlZml4ZXMgd2hlbiBjcmVhdGluZyBwb29sIHZpYSBjb252ZW5pZW5jZSBtZXRob2RcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbWFuYWdlci5hZGRJcGFtUG9vbChcIm92ZXJsYXBwaW5nLXBvb2xcIiwge1xuICAgICAgICAgIG5hbWU6IFwib3ZlcmxhcHBpbmctcG9vbFwiLFxuICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTAuMC4wLjAvMTZcIiwgXCIxMC4wLjEuMC8yNFwiXSxcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiTmV0d29ya0dyb3VwXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3Qtc3RhY2tcIik7XG4gICAgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LW1hbmFnZXJcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICBzdWJzY3JpcHRpb25zOiBbXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIl0sXG4gICAgICB9LFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQmFzaWMgSW5zdGFudGlhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIE5ldHdvcmtHcm91cCB3aXRoIG1pbmltdW0gcmVxdWlyZWQgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogTmV0d29ya0dyb3VwUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwKS50b0JlSW5zdGFuY2VPZihOZXR3b3JrR3JvdXApO1xuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5wcm9wcykudG9CZShwcm9wcyk7XG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnJlc291cmNlTmFtZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAuaWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgTmV0d29ya0dyb3VwIHdpdGggYWxsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IE5ldHdvcmtHcm91cFByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInByb2R1Y3Rpb24tdm5ldHNcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUHJvZHVjdGlvbiB2aXJ0dWFsIG5ldHdvcmtzIGZvciBFYXN0IFVTXCIsXG4gICAgICAgIG1lbWJlclR5cGU6IFwiVmlydHVhbE5ldHdvcmtcIixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5wcm9wcy5kZXNjcmlwdGlvbikudG9CZShcbiAgICAgICAgXCJQcm9kdWN0aW9uIHZpcnR1YWwgbmV0d29ya3MgZm9yIEVhc3QgVVNcIixcbiAgICAgICk7XG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnByb3BzLm1lbWJlclR5cGUpLnRvQmUoXCJWaXJ0dWFsTmV0d29ya1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBOZXR3b3JrR3JvdXAgd2l0aCBTdWJuZXQgbWVtYmVyIHR5cGVcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IE5ldHdvcmtHcm91cFByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInN1Ym5ldC1ncm91cFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBtZW1iZXJUeXBlOiBcIlN1Ym5ldFwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJTdWJuZXQtbGV2ZWwgbmV0d29yayBncm91cFwiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJTdWJuZXRHcm91cFwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMubWVtYmVyVHlwZSkudG9CZShcIlN1Ym5ldFwiKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJBUEkgVmVyc2lvbiBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgdXNlIGRlZmF1bHQgQVBJIHZlcnNpb24gd2hlbiBub25lIHNwZWNpZmllZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXR3b3JrR3JvdXAgPSBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucmVzb2x2ZWRBcGlWZXJzaW9uKS50b0JlKFwiMjAyNC0wNS0wMVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHVzZSBzcGVjaWZpZWQgQVBJIHZlcnNpb24gd2hlbiBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBuZXR3b3JrR3JvdXAgPSBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMTEtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjMtMTEtMDFcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwcm9wZXIgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtZ3JvdXBcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5uYW1lT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0Zi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5wcm92aXNpb25pbmdTdGF0ZU91dHB1dCkudG9CZUluc3RhbmNlT2YoXG4gICAgICAgIGNka3RmLlRlcnJhZm9ybU91dHB1dCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIHByb3BlciByZXNvdXJjZSByZWZlcmVuY2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWdyb3VwXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG5ldHdvcmtHcm91cC5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgICBleHBlY3QobmV0d29ya0dyb3VwLnJlc291cmNlTmFtZSkudG9NYXRjaCgvXlxcJFxcey4qXFwubmFtZVxcfSQvKTtcbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvdmlzaW9uaW5nU3RhdGUpLnRvTWF0Y2goXG4gICAgICAgIC9eXFwkXFx7LipcXC5vdXRwdXRcXC5wcm9wZXJ0aWVzXFwucHJvdmlzaW9uaW5nU3RhdGVcXH0kLyxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiTGlmZWN5Y2xlIE1hbmFnZW1lbnRcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGFwcGx5IGlnbm9yZV9jaGFuZ2VzIHdoZW4gc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LWdyb3VwXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGlnbm9yZUNoYW5nZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChuZXR3b3JrR3JvdXAucHJvcHMuaWdub3JlQ2hhbmdlcykudG9FcXVhbChbXCJkZXNjcmlwdGlvblwiXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ0RLIFN5bnRoZXNpc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3ludGhlc2l6ZSB2YWxpZCBUZXJyYWZvcm0gY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cFwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJUZXN0IG5ldHdvcmsgZ3JvdXBcIixcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3Rpbmcuc3ludGgoc3RhY2spO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0JlRGVmaW5lZCgpO1xuICAgICAgY29uc3Qgc3RhY2tDb25maWcgPSBKU09OLnBhcnNlKHN5bnRoZXNpemVkKTtcbiAgICAgIGV4cGVjdChzdGFja0NvbmZpZy5yZXNvdXJjZSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoXCJOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXJcIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0Zi5BcHA7XG4gIGxldCBzdGFjazogY2RrdGYuVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBWaXJ0dWFsTmV0d29ya01hbmFnZXI7XG4gIGxldCBuZXR3b3JrR3JvdXA6IE5ldHdvcmtHcm91cDtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IGNka3RmLlRlcnJhZm9ybVN0YWNrKGFwcCwgXCJ0ZXN0LXN0YWNrXCIpO1xuICAgIG1hbmFnZXIgPSBuZXcgVmlydHVhbE5ldHdvcmtNYW5hZ2VyKHN0YWNrLCBcIlRlc3RNYW5hZ2VyXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdC1tYW5hZ2VyXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDpcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZ1wiLFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZXM6IHtcbiAgICAgICAgc3Vic2NyaXB0aW9uczogW1wiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwXCJdLFxuICAgICAgfSxcbiAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVBY2Nlc3NlczogW1wiQ29ubmVjdGl2aXR5XCJdLFxuICAgIH0pO1xuICAgIG5ldHdvcmtHcm91cCA9IG5ldyBOZXR3b3JrR3JvdXAoc3RhY2ssIFwiVGVzdEdyb3VwXCIsIHtcbiAgICAgIG5hbWU6IFwidGVzdC1ncm91cFwiLFxuICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYXNpYyBJbnN0YW50aWF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgU3RhdGljTWVtYmVyIGZvciBWTmV0XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ2bmV0LW1lbWJlclwiLFxuICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICByZXNvdXJjZUlkOlxuICAgICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy90ZXN0LXZuZXRcIixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1lbWJlciA9IG5ldyBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIoc3RhY2ssIFwiVm5ldE1lbWJlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtZW1iZXIpLnRvQmVJbnN0YW5jZU9mKE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcik7XG4gICAgICBleHBlY3QobWVtYmVyLnByb3BzKS50b0JlKHByb3BzKTtcbiAgICAgIGV4cGVjdChtZW1iZXIucHJvcHMucmVzb3VyY2VJZCkudG9Db250YWluKFwidmlydHVhbE5ldHdvcmtzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFN0YXRpY01lbWJlciBmb3IgU3VibmV0XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXJQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJzdWJuZXQtbWVtYmVyXCIsXG4gICAgICAgIG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQsXG4gICAgICAgIHJlc291cmNlSWQ6XG4gICAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvdGVzdC1yZy9wcm92aWRlcnMvTWljcm9zb2Z0Lk5ldHdvcmsvdmlydHVhbE5ldHdvcmtzL3Rlc3Qtdm5ldC9zdWJuZXRzL3Rlc3Qtc3VibmV0XCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtZW1iZXIgPSBuZXcgTmV0d29ya0dyb3VwU3RhdGljTWVtYmVyKHN0YWNrLCBcIlN1Ym5ldE1lbWJlclwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChtZW1iZXIpLnRvQmVJbnN0YW5jZU9mKE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcik7XG4gICAgICBleHBlY3QobWVtYmVyLnByb3BzLnJlc291cmNlSWQpLnRvQ29udGFpbihcInN1Ym5ldHNcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQVBJIFZlcnNpb24gSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHdoZW4gbm9uZSBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbWVtYmVyID0gbmV3IE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcihzdGFjaywgXCJUZXN0TWVtYmVyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW1lbWJlclwiLFxuICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL3ZuZXQxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG1lbWJlci5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIHNwZWNpZmllZCBBUEkgdmVyc2lvbiB3aGVuIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IG5ldyBOZXR3b3JrR3JvdXBTdGF0aWNNZW1iZXIoc3RhY2ssIFwiVGVzdE1lbWJlclwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1tZW1iZXJcIixcbiAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMTEtMDFcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QobWVtYmVyLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjMtMTEtMDFcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwcm9wZXIgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbWVtYmVyID0gbmV3IE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcihzdGFjaywgXCJUZXN0TWVtYmVyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW1lbWJlclwiLFxuICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL3ZuZXQxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG1lbWJlci5pZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChtZW1iZXIubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChtZW1iZXIucmVzb3VyY2VJZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgcHJvcGVyIHJlc291cmNlIHJlZmVyZW5jZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbWVtYmVyID0gbmV3IE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcihzdGFjaywgXCJUZXN0TWVtYmVyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW1lbWJlclwiLFxuICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL3ZuZXQxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG1lbWJlci5pZCkudG9NYXRjaCgvXlxcJFxcey4qXFwuaWRcXH0kLyk7XG4gICAgICBleHBlY3QobWVtYmVyLnJlc291cmNlTmFtZSkudG9NYXRjaCgvXlxcJFxcey4qXFwubmFtZVxcfSQvKTtcbiAgICAgIC8vIG1lbWJlclJlc291cmNlSWQgcmV0dXJucyB0aGUgaW5wdXQgcmVzb3VyY2VJZCBzaW5jZSBBenVyZSBBUEkgZG9lc24ndCByZXR1cm4gaXRcbiAgICAgIGV4cGVjdChtZW1iZXIubWVtYmVyUmVzb3VyY2VJZCkudG9CZShcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiLFxuICAgICAgKTtcbiAgICAgIGV4cGVjdChtZW1iZXIucmVnaW9uKS50b01hdGNoKC9eXFwkXFx7LipcXC5vdXRwdXRcXC5wcm9wZXJ0aWVzXFwucmVnaW9uXFx9JC8pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlBhcmVudC1DaGlsZCBSZWxhdGlvbnNoaXBcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNvcnJlY3RseSByZWZlcmVuY2UgcGFyZW50IG5ldHdvcmsgZ3JvdXBcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgbWVtYmVyID0gbmV3IE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcihzdGFjaywgXCJUZXN0TWVtYmVyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW1lbWJlclwiLFxuICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL3ZuZXQxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KG1lbWJlci5wcm9wcy5uZXR3b3JrR3JvdXBJZCkudG9CZShuZXR3b3JrR3JvdXAuaWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBTeW50aGVzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IE5ldHdvcmtHcm91cFN0YXRpY01lbWJlcihzdGFjaywgXCJUZXN0TWVtYmVyXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LW1lbWJlclwiLFxuICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL3ZuZXQxXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcucmVzb3VyY2UpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RmLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0Zi5UZXJyYWZvcm1TdGFjaztcbiAgbGV0IG1hbmFnZXI6IFZpcnR1YWxOZXR3b3JrTWFuYWdlcjtcbiAgbGV0IG5ldHdvcmtHcm91cDogTmV0d29ya0dyb3VwO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdGYuVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3Qtc3RhY2tcIik7XG4gICAgbWFuYWdlciA9IG5ldyBWaXJ0dWFsTmV0d29ya01hbmFnZXIoc3RhY2ssIFwiVGVzdE1hbmFnZXJcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LW1hbmFnZXJcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOlxuICAgICAgICBcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMC9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3Blczoge1xuICAgICAgICBzdWJzY3JpcHRpb25zOiBbXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDBcIl0sXG4gICAgICB9LFxuICAgICAgbmV0d29ya01hbmFnZXJTY29wZUFjY2Vzc2VzOiBbXCJDb25uZWN0aXZpdHlcIl0sXG4gICAgfSk7XG4gICAgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LWdyb3VwXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhc2ljIEluc3RhbnRpYXRpb24gLSBNZXNoIFRvcG9sb2d5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgTWVzaCBjb25uZWN0aXZpdHkgY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcIm1lc2gtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIk1lc2hcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgICAgIGdyb3VwQ29ubmVjdGl2aXR5OiBcIkRpcmVjdGx5Q29ubmVjdGVkXCIsXG4gICAgICAgICAgICBpc0dsb2JhbDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIk1lc2hDb25maWdcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QoY29uZmlnKS50b0JlSW5zdGFuY2VPZihDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKTtcbiAgICAgIGV4cGVjdChjb25maWcudG9wb2xvZ3kpLnRvQmUoXCJNZXNoXCIpO1xuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5hcHBsaWVzVG9Hcm91cHMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBnbG9iYWwgTWVzaCBjb25uZWN0aXZpdHkgY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcImdsb2JhbC1tZXNoXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIk1lc2hcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgICAgIGdyb3VwQ29ubmVjdGl2aXR5OiBcIkRpcmVjdGx5Q29ubmVjdGVkXCIsXG4gICAgICAgICAgICBpc0dsb2JhbDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBpc0dsb2JhbDogdHJ1ZSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIkdsb2JhbE1lc2hcIiwgcHJvcHMpO1xuXG4gICAgICBleHBlY3QoY29uZmlnLnByb3BzLmlzR2xvYmFsKS50b0JlKHRydWUpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhc2ljIEluc3RhbnRpYXRpb24gLSBIdWItYW5kLVNwb2tlIFRvcG9sb2d5XCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgSHViLWFuZC1TcG9rZSBjb25uZWN0aXZpdHkgY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcImh1Yi1zcG9rZS1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiSHViQW5kU3Bva2VcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCxcbiAgICAgICAgICAgIGdyb3VwQ29ubmVjdGl2aXR5OiBcIk5vbmVcIixcbiAgICAgICAgICAgIHVzZUh1YkdhdGV3YXk6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaHViczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlc291cmNlSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC92aXJ0dWFsTmV0d29ya3MvaHViLXZuZXRcIixcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3NcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIkh1YlNwb2tlQ29uZmlnXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy50b3BvbG9neSkudG9CZShcIkh1YkFuZFNwb2tlXCIpO1xuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5odWJzKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgICBleHBlY3QoY29uZmlnLnByb3BzLmFwcGxpZXNUb0dyb3Vwc1swXS51c2VIdWJHYXRld2F5KS50b0JlKHRydWUpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIEh1Yi1hbmQtU3Bva2Ugd2l0aCBtdWx0aXBsZSBodWJzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwibXVsdGktaHViLWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgICBjb25uZWN0aXZpdHlUb3BvbG9neTogXCJIdWJBbmRTcG9rZVwiLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkLFxuICAgICAgICAgICAgZ3JvdXBDb25uZWN0aXZpdHk6IFwiTm9uZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGh1YnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZXNvdXJjZUlkOiBcIi9zdWJzY3JpcHRpb25zL3Rlc3QvdmlydHVhbE5ldHdvcmtzL2h1Yi12bmV0LTFcIixcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3NcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlc291cmNlSWQ6IFwiL3N1YnNjcmlwdGlvbnMvdGVzdC92aXJ0dWFsTmV0d29ya3MvaHViLXZuZXQtMlwiLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBcIk1pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgQ29ubmVjdGl2aXR5Q29uZmlndXJhdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiTXVsdGlIdWJDb25maWdcIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29uZmlnLnByb3BzLmh1YnMpLnRvSGF2ZUxlbmd0aCgyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQcm9wZXJ0eSBWYWxpZGF0aW9uXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBoYW5kbGUgZGVzY3JpcHRpb24gcHJvcGVydHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiVGVzdENvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiSHViLWFuZC1zcG9rZSB0b3BvbG9neSBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHNcIixcbiAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiSHViQW5kU3Bva2VcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgICBodWJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVzb3VyY2VJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0L3ZpcnR1YWxOZXR3b3Jrcy9odWJcIixcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogXCJNaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3NcIixcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChjb25maWcucHJvcHMuZGVzY3JpcHRpb24pLnRvQmUoXG4gICAgICAgIFwiSHViLWFuZC1zcG9rZSB0b3BvbG9neSBmb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHNcIixcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgZGVsZXRlRXhpc3RpbmdQZWVyaW5nIHByb3BlcnR5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIlRlc3RDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGNvbm5lY3Rpdml0eVRvcG9sb2d5OiBcIk1lc2hcIixcbiAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgICBkZWxldGVFeGlzdGluZ1BlZXJpbmc6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5wcm9wcy5kZWxldGVFeGlzdGluZ1BlZXJpbmcpLnRvQmUodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQVBJIFZlcnNpb24gSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHdoZW4gbm9uZSBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiVGVzdENvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiTWVzaFwiLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIHNwZWNpZmllZCBBUEkgdmVyc2lvbiB3aGVuIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25uZWN0aXZpdHlDb25maWd1cmF0aW9uKHN0YWNrLCBcIlRlc3RDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGFwaVZlcnNpb246IFwiMjAyMy0xMS0wMVwiLFxuICAgICAgICBjb25uZWN0aXZpdHlUb3BvbG9neTogXCJNZXNoXCIsXG4gICAgICAgIGFwcGxpZXNUb0dyb3VwczogW3sgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCB9XSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoY29uZmlnLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjMtMTEtMDFcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwcm9wZXIgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gbmV3IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiVGVzdENvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiTWVzaFwiLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5pZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChjb25maWcubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChjb25maWcucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBTeW50aGVzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IENvbm5lY3Rpdml0eUNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiVGVzdENvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgY29ubmVjdGl2aXR5VG9wb2xvZ3k6IFwiTWVzaFwiLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcucmVzb3VyY2UpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0Zi5BcHA7XG4gIGxldCBzdGFjazogY2RrdGYuVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBWaXJ0dWFsTmV0d29ya01hbmFnZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBzdGFjayA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1TdGFjayhhcHAsIFwidGVzdC1zdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCB7XG4gICAgICBuYW1lOiBcInRlc3QtbWFuYWdlclwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiXSxcbiAgICAgIH0sXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIlNlY3VyaXR5QWRtaW5cIl0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQmFzaWMgSW5zdGFudGlhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uIHdpdGggbWluaW11bSBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcInNlY3VyaXR5LWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY29uZmlnID0gbmV3IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJTZWN1cml0eUNvbmZpZ1wiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb25maWcpLnRvQmVJbnN0YW5jZU9mKFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKTtcbiAgICAgIGV4cGVjdChjb25maWcucHJvcHMpLnRvQmUocHJvcHMpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uIHdpdGggYWxsIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwic2VjdXJpdHktY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk9yZ2FuaXphdGlvbi13aWRlIHNlY3VyaXR5IHJ1bGVzXCIsXG4gICAgICAgIGFwcGx5T25OZXR3b3JrSW50ZW50UG9saWN5QmFzZWRTZXJ2aWNlczogW1wiTm9uZVwiXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiU2VjdXJpdHlDb25maWdcIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29uZmlnLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFwiT3JnYW5pemF0aW9uLXdpZGUgc2VjdXJpdHkgcnVsZXNcIik7XG4gICAgICBleHBlY3QoY29uZmlnLnByb3BzLmFwcGx5T25OZXR3b3JrSW50ZW50UG9saWN5QmFzZWRTZXJ2aWNlcykudG9FcXVhbChbXG4gICAgICAgIFwiTm9uZVwiLFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQVBJIFZlcnNpb24gSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHdoZW4gbm9uZSBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gbmV3IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKHN0YWNrLCBcIlNlY3VyaXR5Q29uZmlnXCIsIHtcbiAgICAgICAgbmFtZTogXCJzZWN1cml0eS1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QoY29uZmlnLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDUtMDFcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCB1c2Ugc3BlY2lmaWVkIEFQSSB2ZXJzaW9uIHdoZW4gcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY29uZmlnID0gbmV3IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKHN0YWNrLCBcIlNlY3VyaXR5Q29uZmlnXCIsIHtcbiAgICAgICAgbmFtZTogXCJzZWN1cml0eS1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTExLTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcHJvcGVyIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IG5ldyBTZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbihzdGFjaywgXCJTZWN1cml0eUNvbmZpZ1wiLCB7XG4gICAgICAgIG5hbWU6IFwic2VjdXJpdHktY29uZmlnXCIsXG4gICAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KGNvbmZpZy5pZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChjb25maWcubmFtZU91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChjb25maWcucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKFxuICAgICAgICBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGF2ZSBwcm9wZXIgcmVzb3VyY2UgcmVmZXJlbmNlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiU2VjdXJpdHlDb25maWdcIiwge1xuICAgICAgICBuYW1lOiBcInNlY3VyaXR5LWNvbmZpZ1wiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChjb25maWcuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgICAgZXhwZWN0KGNvbmZpZy5yZXNvdXJjZU5hbWUpLnRvTWF0Y2goL15cXCRcXHsuKlxcLm5hbWVcXH0kLyk7XG4gICAgICBleHBlY3QoY29uZmlnLnByb3Zpc2lvbmluZ1N0YXRlKS50b01hdGNoKFxuICAgICAgICAvXlxcJFxcey4qXFwub3V0cHV0XFwucHJvcGVydGllc1xcLnByb3Zpc2lvbmluZ1N0YXRlXFx9JC8sXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBTeW50aGVzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uKHN0YWNrLCBcIlNlY3VyaXR5Q29uZmlnXCIsIHtcbiAgICAgICAgbmFtZTogXCJzZWN1cml0eS1jb25maWdcIixcbiAgICAgICAgbmV0d29ya01hbmFnZXJJZDogbWFuYWdlci5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGVzdCBzZWN1cml0eSBjb25maWd1cmF0aW9uXCIsXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcucmVzb3VyY2UpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uXCIsICgpID0+IHtcbiAgbGV0IGFwcDogY2RrdGYuQXBwO1xuICBsZXQgc3RhY2s6IGNka3RmLlRlcnJhZm9ybVN0YWNrO1xuICBsZXQgbWFuYWdlcjogVmlydHVhbE5ldHdvcmtNYW5hZ2VyO1xuICBsZXQgc2VjdXJpdHlDb25maWc6IFNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uO1xuICBsZXQgbmV0d29ya0dyb3VwOiBOZXR3b3JrR3JvdXA7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBzdGFjayA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1TdGFjayhhcHAsIFwidGVzdC1zdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCB7XG4gICAgICBuYW1lOiBcInRlc3QtbWFuYWdlclwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiXSxcbiAgICAgIH0sXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIlNlY3VyaXR5QWRtaW5cIl0sXG4gICAgfSk7XG4gICAgc2VjdXJpdHlDb25maWcgPSBuZXcgU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiU2VjdXJpdHlDb25maWdcIiwge1xuICAgICAgbmFtZTogXCJzZWN1cml0eS1jb25maWdcIixcbiAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgfSk7XG4gICAgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LWdyb3VwXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhc2ljIEluc3RhbnRpYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBSdWxlQ29sbGVjdGlvbiB3aXRoIG1pbmltdW0gcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwicnVsZS1jb2xsZWN0aW9uXCIsXG4gICAgICAgIHNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uSWQ6IHNlY3VyaXR5Q29uZmlnLmlkLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUnVsZUNvbGxlY3Rpb25cIixcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29sbGVjdGlvbikudG9CZUluc3RhbmNlT2YoU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uKTtcbiAgICAgIGV4cGVjdChjb2xsZWN0aW9uLnByb3BzLmFwcGxpZXNUb0dyb3VwcykudG9IYXZlTGVuZ3RoKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIFJ1bGVDb2xsZWN0aW9uIHdpdGggZGVzY3JpcHRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvblByb3BzID0ge1xuICAgICAgICBuYW1lOiBcImJsb2NrLWhpZ2gtcmlzay1wb3J0c1wiLFxuICAgICAgICBzZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbklkOiBzZWN1cml0eUNvbmZpZy5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiUnVsZXMgdG8gYmxvY2sgaGlnaC1yaXNrIHBvcnRzXCIsXG4gICAgICAgIGFwcGxpZXNUb0dyb3VwczogW3sgbmV0d29ya0dyb3VwSWQ6IG5ldHdvcmtHcm91cC5pZCB9XSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJSdWxlQ29sbGVjdGlvblwiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb2xsZWN0aW9uLnByb3BzLmRlc2NyaXB0aW9uKS50b0JlKFxuICAgICAgICBcIlJ1bGVzIHRvIGJsb2NrIGhpZ2gtcmlzayBwb3J0c1wiLFxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBSdWxlQ29sbGVjdGlvbiBhcHBsaWVkIHRvIG11bHRpcGxlIGdyb3Vwc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBncm91cDIgPSBuZXcgTmV0d29ya0dyb3VwKHN0YWNrLCBcIlRlc3RHcm91cDJcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtZ3JvdXAtMlwiLFxuICAgICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluUnVsZUNvbGxlY3Rpb25Qcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJtdWx0aS1ncm91cC1jb2xsZWN0aW9uXCIsXG4gICAgICAgIHNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uSWQ6IHNlY3VyaXR5Q29uZmlnLmlkLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFtcbiAgICAgICAgICB7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfSxcbiAgICAgICAgICB7IG5ldHdvcmtHcm91cElkOiBncm91cDIuaWQgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJSdWxlQ29sbGVjdGlvblwiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjb2xsZWN0aW9uLnByb3BzLmFwcGxpZXNUb0dyb3VwcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkFQSSBWZXJzaW9uIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCB1c2UgZGVmYXVsdCBBUEkgdmVyc2lvbiB3aGVuIG5vbmUgc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJSdWxlQ29sbGVjdGlvblwiLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJydWxlLWNvbGxlY3Rpb25cIixcbiAgICAgICAgICBzZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbklkOiBzZWN1cml0eUNvbmZpZy5pZCxcbiAgICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIHNwZWNpZmllZCBBUEkgdmVyc2lvbiB3aGVuIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJSdWxlQ29sbGVjdGlvblwiLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJydWxlLWNvbGxlY3Rpb25cIixcbiAgICAgICAgICBzZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbklkOiBzZWN1cml0eUNvbmZpZy5pZCxcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjMtMTEtMDFcIixcbiAgICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDIzLTExLTAxXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlRlcnJhZm9ybSBPdXRwdXRzXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBjcmVhdGUgcHJvcGVyIFRlcnJhZm9ybSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGVDb2xsZWN0aW9uKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJSdWxlQ29sbGVjdGlvblwiLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJydWxlLWNvbGxlY3Rpb25cIixcbiAgICAgICAgICBzZWN1cml0eUFkbWluQ29uZmlndXJhdGlvbklkOiBzZWN1cml0eUNvbmZpZy5pZCxcbiAgICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5pZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChjb2xsZWN0aW9uLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QoY29sbGVjdGlvbi5wcm92aXNpb25pbmdTdGF0ZU91dHB1dCkudG9CZUluc3RhbmNlT2YoXG4gICAgICAgIGNka3RmLlRlcnJhZm9ybU91dHB1dCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUGFyZW50LUNoaWxkIFJlbGF0aW9uc2hpcFwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IHJlZmVyZW5jZSBwYXJlbnQgc2VjdXJpdHkgYWRtaW4gY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUnVsZUNvbGxlY3Rpb25cIixcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicnVsZS1jb2xsZWN0aW9uXCIsXG4gICAgICAgICAgc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25JZDogc2VjdXJpdHlDb25maWcuaWQsXG4gICAgICAgICAgYXBwbGllc1RvR3JvdXBzOiBbeyBuZXR3b3JrR3JvdXBJZDogbmV0d29ya0dyb3VwLmlkIH1dLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KGNvbGxlY3Rpb24ucHJvcHMuc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25JZCkudG9CZShcbiAgICAgICAgc2VjdXJpdHlDb25maWcuaWQsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBTeW50aGVzaXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgdmFsaWQgVGVycmFmb3JtIGNvbmZpZ3VyYXRpb25cIiwgKCkgPT4ge1xuICAgICAgbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihzdGFjaywgXCJSdWxlQ29sbGVjdGlvblwiLCB7XG4gICAgICAgIG5hbWU6IFwicnVsZS1jb2xsZWN0aW9uXCIsXG4gICAgICAgIHNlY3VyaXR5QWRtaW5Db25maWd1cmF0aW9uSWQ6IHNlY3VyaXR5Q29uZmlnLmlkLFxuICAgICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc3ludGhlc2l6ZWQgPSBUZXN0aW5nLnN5bnRoKHN0YWNrKTtcbiAgICAgIGV4cGVjdChzeW50aGVzaXplZCkudG9CZURlZmluZWQoKTtcbiAgICAgIGNvbnN0IHN0YWNrQ29uZmlnID0gSlNPTi5wYXJzZShzeW50aGVzaXplZCk7XG4gICAgICBleHBlY3Qoc3RhY2tDb25maWcucmVzb3VyY2UpLnRvQmVEZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiU2VjdXJpdHlBZG1pblJ1bGVcIiwgKCkgPT4ge1xuICBsZXQgYXBwOiBjZGt0Zi5BcHA7XG4gIGxldCBzdGFjazogY2RrdGYuVGVycmFmb3JtU3RhY2s7XG4gIGxldCBtYW5hZ2VyOiBWaXJ0dWFsTmV0d29ya01hbmFnZXI7XG4gIGxldCBzZWN1cml0eUNvbmZpZzogU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb247XG4gIGxldCBuZXR3b3JrR3JvdXA6IE5ldHdvcmtHcm91cDtcbiAgbGV0IHJ1bGVDb2xsZWN0aW9uOiBTZWN1cml0eUFkbWluUnVsZUNvbGxlY3Rpb247XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBzdGFjayA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1TdGFjayhhcHAsIFwidGVzdC1zdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gbmV3IFZpcnR1YWxOZXR3b3JrTWFuYWdlcihzdGFjaywgXCJUZXN0TWFuYWdlclwiLCB7XG4gICAgICBuYW1lOiBcInRlc3QtbWFuYWdlclwiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6XG4gICAgICAgIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3Rlc3QtcmdcIixcbiAgICAgIG5ldHdvcmtNYW5hZ2VyU2NvcGVzOiB7XG4gICAgICAgIHN1YnNjcmlwdGlvbnM6IFtcIi9zdWJzY3JpcHRpb25zLzAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMFwiXSxcbiAgICAgIH0sXG4gICAgICBuZXR3b3JrTWFuYWdlclNjb3BlQWNjZXNzZXM6IFtcIlNlY3VyaXR5QWRtaW5cIl0sXG4gICAgfSk7XG4gICAgc2VjdXJpdHlDb25maWcgPSBuZXcgU2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb24oc3RhY2ssIFwiU2VjdXJpdHlDb25maWdcIiwge1xuICAgICAgbmFtZTogXCJzZWN1cml0eS1jb25maWdcIixcbiAgICAgIG5ldHdvcmtNYW5hZ2VySWQ6IG1hbmFnZXIuaWQsXG4gICAgfSk7XG4gICAgbmV0d29ya0dyb3VwID0gbmV3IE5ldHdvcmtHcm91cChzdGFjaywgXCJUZXN0R3JvdXBcIiwge1xuICAgICAgbmFtZTogXCJ0ZXN0LWdyb3VwXCIsXG4gICAgICBuZXR3b3JrTWFuYWdlcklkOiBtYW5hZ2VyLmlkLFxuICAgIH0pO1xuICAgIHJ1bGVDb2xsZWN0aW9uID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlQ29sbGVjdGlvbihzdGFjaywgXCJSdWxlQ29sbGVjdGlvblwiLCB7XG4gICAgICBuYW1lOiBcInJ1bGUtY29sbGVjdGlvblwiLFxuICAgICAgc2VjdXJpdHlBZG1pbkNvbmZpZ3VyYXRpb25JZDogc2VjdXJpdHlDb25maWcuaWQsXG4gICAgICBhcHBsaWVzVG9Hcm91cHM6IFt7IG5ldHdvcmtHcm91cElkOiBuZXR3b3JrR3JvdXAuaWQgfV0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQmFzaWMgSW5zdGFudGlhdGlvbiAtIERlbnkgUnVsZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBEZW55IHJ1bGUgYmxvY2tpbmcgU1NIXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluUnVsZVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcImJsb2NrLXNzaFwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQmxvY2sgU1NIIGFjY2VzcyBmcm9tIGludGVybmV0XCIsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBkZXN0aW5hdGlvblBvcnRSYW5nZXM6IFtcIjIyXCJdLFxuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIkludGVybmV0XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIlNlcnZpY2VUYWdcIiB9LFxuICAgICAgICBdLFxuICAgICAgICBkZXN0aW5hdGlvbnM6IFt7IGFkZHJlc3NQcmVmaXg6IFwiKlwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJJUFByZWZpeFwiIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJCbG9ja1NTSFwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChydWxlKS50b0JlSW5zdGFuY2VPZihTZWN1cml0eUFkbWluUnVsZSk7XG4gICAgICBleHBlY3QocnVsZS5ydWxlQWN0aW9uKS50b0JlKFwiRGVueVwiKTtcbiAgICAgIGV4cGVjdChydWxlLnJ1bGVQcmlvcml0eSkudG9CZSgxMDApO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMucHJvdG9jb2wpLnRvQmUoXCJUY3BcIik7XG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5kZXN0aW5hdGlvblBvcnRSYW5nZXMpLnRvRXF1YWwoW1wiMjJcIl0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIERlbnkgcnVsZSBibG9ja2luZyBSRFBcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFNlY3VyaXR5QWRtaW5SdWxlUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwiYmxvY2stcmRwXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAxLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgICAgZGVzdGluYXRpb25Qb3J0UmFuZ2VzOiBbXCIzMzg5XCJdLFxuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIkludGVybmV0XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIlNlcnZpY2VUYWdcIiB9LFxuICAgICAgICBdLFxuICAgICAgICBkZXN0aW5hdGlvbnM6IFt7IGFkZHJlc3NQcmVmaXg6IFwiKlwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJJUFByZWZpeFwiIH1dLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJCbG9ja1JEUFwiLCBwcm9wcyk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRlc3RpbmF0aW9uUG9ydFJhbmdlcykudG9FcXVhbChbXCIzMzg5XCJdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJCYXNpYyBJbnN0YW50aWF0aW9uIC0gQWxsb3cgUnVsZXNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBBbGxvdyBydWxlXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBTZWN1cml0eUFkbWluUnVsZVByb3BzID0ge1xuICAgICAgICBuYW1lOiBcImFsbG93LWh0dHBzXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMjAwLFxuICAgICAgICBhY3Rpb246IFwiQWxsb3dcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICAgIGRlc3RpbmF0aW9uUG9ydFJhbmdlczogW1wiNDQzXCJdLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJBbGxvd0hUVFBTXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHJ1bGUucnVsZUFjdGlvbikudG9CZShcIkFsbG93XCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkJhc2ljIEluc3RhbnRpYXRpb24gLSBBbHdheXNBbGxvdyBSdWxlc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIEFsd2F5c0FsbG93IHJ1bGUgZm9yIG1vbml0b3JpbmdcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IFNlY3VyaXR5QWRtaW5SdWxlUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwiYWx3YXlzLWFsbG93LW1vbml0b3JpbmdcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkFsd2F5cyBhbGxvdyB0cmFmZmljIGZyb20gbW9uaXRvcmluZyBzeXN0ZW1zXCIsXG4gICAgICAgIHByaW9yaXR5OiA1MCxcbiAgICAgICAgYWN0aW9uOiBcIkFsd2F5c0FsbG93XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIkFueVwiLFxuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIjEwLjAuMC4wLzI0XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIklQUHJlZml4XCIgfSxcbiAgICAgICAgXSxcbiAgICAgICAgZGVzdGluYXRpb25zOiBbeyBhZGRyZXNzUHJlZml4OiBcIipcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9XSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiQWxsb3dNb25pdG9yaW5nXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KHJ1bGUucnVsZUFjdGlvbikudG9CZShcIkFsd2F5c0FsbG93XCIpO1xuICAgICAgZXhwZWN0KHJ1bGUucnVsZVByaW9yaXR5KS50b0JlKDUwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQcm90b2NvbCBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3VwcG9ydCBUY3AgcHJvdG9jb2xcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJUY3BSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJ0Y3AtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMucHJvdG9jb2wpLnRvQmUoXCJUY3BcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IFVkcCBwcm90b2NvbFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIlVkcFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcInVkcC1ydWxlXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJVZHBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5wcm90b2NvbCkudG9CZShcIlVkcFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgSWNtcCBwcm90b2NvbFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIkljbXBSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJpY21wLXJ1bGVcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIkljbXBcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5wcm90b2NvbCkudG9CZShcIkljbXBcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IEFueSBwcm90b2NvbFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIkFueVJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcImFueS1ydWxlXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiQWxsb3dcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiQW55XCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMucHJvdG9jb2wpLnRvQmUoXCJBbnlcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiRGlyZWN0aW9uIEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBzdXBwb3J0IEluYm91bmQgZGlyZWN0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiSW5ib3VuZFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcImluYm91bmQtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuZGlyZWN0aW9uKS50b0JlKFwiSW5ib3VuZFwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgT3V0Ym91bmQgZGlyZWN0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiT3V0Ym91bmRSdWxlXCIsIHtcbiAgICAgICAgbmFtZTogXCJvdXRib3VuZC1ydWxlXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiT3V0Ym91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuZGlyZWN0aW9uKS50b0JlKFwiT3V0Ym91bmRcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUG9ydCBSYW5nZSBIYW5kbGluZ1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIHNpbmdsZSBzb3VyY2UgcG9ydFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIlNpbmdsZVBvcnRcIiwge1xuICAgICAgICBuYW1lOiBcInNpbmdsZS1wb3J0XCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgICAgc291cmNlUG9ydFJhbmdlczogW1wiODBcIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuc291cmNlUG9ydFJhbmdlcykudG9FcXVhbChbXCI4MFwiXSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgbXVsdGlwbGUgZGVzdGluYXRpb24gcG9ydHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJNdWx0aXBsZVBvcnRzXCIsIHtcbiAgICAgICAgbmFtZTogXCJtdWx0aXBsZS1wb3J0c1wiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICAgIGRlc3RpbmF0aW9uUG9ydFJhbmdlczogW1wiODBcIiwgXCI0NDNcIiwgXCI4MDgwXCJdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRlc3RpbmF0aW9uUG9ydFJhbmdlcykudG9FcXVhbChbXCI4MFwiLCBcIjQ0M1wiLCBcIjgwODBcIl0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIHBvcnQgcmFuZ2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiUG9ydFJhbmdlXCIsIHtcbiAgICAgICAgbmFtZTogXCJwb3J0LXJhbmdlXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgICAgZGVzdGluYXRpb25Qb3J0UmFuZ2VzOiBbXCI4MDAwLTg5OTlcIl0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuZGVzdGluYXRpb25Qb3J0UmFuZ2VzKS50b0VxdWFsKFtcIjgwMDAtODk5OVwiXSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBkZWZhdWx0IHRvIHdpbGRjYXJkIHdoZW4gcG9ydHMgbm90IHNwZWNpZmllZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIkRlZmF1bHRQb3J0c1wiLCB7XG4gICAgICAgIG5hbWU6IFwiZGVmYXVsdC1wb3J0c1wiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiQW55XCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuc291cmNlUG9ydFJhbmdlcykudG9CZVVuZGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuZGVzdGluYXRpb25Qb3J0UmFuZ2VzKS50b0JlVW5kZWZpbmVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQWRkcmVzcyBQcmVmaXggSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBJUCBwcmVmaXggc291cmNlc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBydWxlID0gbmV3IFNlY3VyaXR5QWRtaW5SdWxlKHN0YWNrLCBcIklQUHJlZml4XCIsIHtcbiAgICAgICAgbmFtZTogXCJpcC1wcmVmaXhcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIjEwLjAuMC4wLzhcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9LFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnByb3BzLnNvdXJjZXMpLnRvRXF1YWwoW1xuICAgICAgICB7IGFkZHJlc3NQcmVmaXg6IFwiMTAuMC4wLjAvOFwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJJUFByZWZpeFwiIH0sXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBTZXJ2aWNlVGFnIHNvdXJjZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJTZXJ2aWNlVGFnXCIsIHtcbiAgICAgICAgbmFtZTogXCJzZXJ2aWNlLXRhZ1wiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICB7IGFkZHJlc3NQcmVmaXg6IFwiSW50ZXJuZXRcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiU2VydmljZVRhZ1wiIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuc291cmNlcykudG9FcXVhbChbXG4gICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCJJbnRlcm5ldFwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJTZXJ2aWNlVGFnXCIgfSxcbiAgICAgIF0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIHNvdXJjZSBhZGRyZXNzZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJNdWx0aXBsZVNvdXJjZXNcIiwge1xuICAgICAgICBuYW1lOiBcIm11bHRpcGxlLXNvdXJjZXNcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIjEwLjAuMC4wLzhcIiwgYWRkcmVzc1ByZWZpeFR5cGU6IFwiSVBQcmVmaXhcIiB9LFxuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCIxOTIuMTY4LjAuMC8xNlwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJJUFByZWZpeFwiIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuc291cmNlcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByaW9yaXR5IEhhbmRsaW5nXCIsICgpID0+IHtcbiAgICBpdChcInNob3VsZCBhY2NlcHQgbG93IHByaW9yaXR5IG51bWJlciAoaGlnaCBwcmlvcml0eSlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJIaWdoUHJpb3JpdHlcIiwge1xuICAgICAgICBuYW1lOiBcImhpZ2gtcHJpb3JpdHlcIixcbiAgICAgICAgcnVsZUNvbGxlY3Rpb25JZDogcnVsZUNvbGxlY3Rpb24uaWQsXG4gICAgICAgIHByaW9yaXR5OiAxLFxuICAgICAgICBhY3Rpb246IFwiQWx3YXlzQWxsb3dcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiQW55XCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucnVsZVByaW9yaXR5KS50b0JlKDEpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgYWNjZXB0IGhpZ2ggcHJpb3JpdHkgbnVtYmVyIChsb3cgcHJpb3JpdHkpXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiTG93UHJpb3JpdHlcIiwge1xuICAgICAgICBuYW1lOiBcImxvdy1wcmlvcml0eVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDQwOTYsXG4gICAgICAgIGFjdGlvbjogXCJBbGxvd1wiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJBbnlcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5ydWxlUHJpb3JpdHkpLnRvQmUoNDA5Nik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQVBJIFZlcnNpb24gSGFuZGxpbmdcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHVzZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHdoZW4gbm9uZSBzcGVjaWZpZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJUZXN0UnVsZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ydWxlXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA1LTAxXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdXNlIHNwZWNpZmllZCBBUEkgdmVyc2lvbiB3aGVuIHByb3ZpZGVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiVGVzdFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgYXBpVmVyc2lvbjogXCIyMDIzLTExLTAxXCIsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChydWxlLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjMtMTEtMDFcIik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiVGVycmFmb3JtIE91dHB1dHNcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBwcm9wZXIgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcnVsZSA9IG5ldyBTZWN1cml0eUFkbWluUnVsZShzdGFjaywgXCJUZXN0UnVsZVwiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1ydWxlXCIsXG4gICAgICAgIHJ1bGVDb2xsZWN0aW9uSWQ6IHJ1bGVDb2xsZWN0aW9uLmlkLFxuICAgICAgICBwcmlvcml0eTogMTAwLFxuICAgICAgICBhY3Rpb246IFwiRGVueVwiLFxuICAgICAgICBkaXJlY3Rpb246IFwiSW5ib3VuZFwiLFxuICAgICAgICBwcm90b2NvbDogXCJUY3BcIixcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5pZE91dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdGYuVGVycmFmb3JtT3V0cHV0KTtcbiAgICAgIGV4cGVjdChydWxlLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RmLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3QocnVsZS5wcm92aXNpb25pbmdTdGF0ZU91dHB1dCkudG9CZUluc3RhbmNlT2YoXG4gICAgICAgIGNka3RmLlRlcnJhZm9ybU91dHB1dCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBoYXZlIHByb3BlciByZXNvdXJjZSByZWZlcmVuY2VzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiVGVzdFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUuaWQpLnRvTWF0Y2goL15cXCRcXHsuKlxcLmlkXFx9JC8pO1xuICAgICAgZXhwZWN0KHJ1bGUucmVzb3VyY2VOYW1lKS50b01hdGNoKC9eXFwkXFx7LipcXC5uYW1lXFx9JC8pO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvdmlzaW9uaW5nU3RhdGUpLnRvTWF0Y2goXG4gICAgICAgIC9eXFwkXFx7LipcXC5vdXRwdXRcXC5wcm9wZXJ0aWVzXFwucHJvdmlzaW9uaW5nU3RhdGVcXH0kLyxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiUGFyZW50LUNoaWxkIFJlbGF0aW9uc2hpcFwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY29ycmVjdGx5IHJlZmVyZW5jZSBwYXJlbnQgcnVsZSBjb2xsZWN0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiVGVzdFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgcHJpb3JpdHk6IDEwMCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMucnVsZUNvbGxlY3Rpb25JZCkudG9CZShydWxlQ29sbGVjdGlvbi5pZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKFwiQ0RLIFN5bnRoZXNpc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc3ludGhlc2l6ZSB2YWxpZCBUZXJyYWZvcm0gY29uZmlndXJhdGlvblwiLCAoKSA9PiB7XG4gICAgICBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiVGVzdFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3QtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGVzdCBzZWN1cml0eSBydWxlXCIsXG4gICAgICAgIHByaW9yaXR5OiAxMDAsXG4gICAgICAgIGFjdGlvbjogXCJEZW55XCIsXG4gICAgICAgIGRpcmVjdGlvbjogXCJJbmJvdW5kXCIsXG4gICAgICAgIHByb3RvY29sOiBcIlRjcFwiLFxuICAgICAgICBkZXN0aW5hdGlvblBvcnRSYW5nZXM6IFtcIjIyXCJdLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBjb25zdCBzdGFja0NvbmZpZyA9IEpTT04ucGFyc2Uoc3ludGhlc2l6ZWQpO1xuICAgICAgZXhwZWN0KHN0YWNrQ29uZmlnLnJlc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNvbXBsZXggUnVsZSBTY2VuYXJpb3NcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBydWxlIHdpdGggYWxsIHByb3BlcnRpZXMgc3BlY2lmaWVkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHJ1bGUgPSBuZXcgU2VjdXJpdHlBZG1pblJ1bGUoc3RhY2ssIFwiQ29tcGxleFJ1bGVcIiwge1xuICAgICAgICBuYW1lOiBcImNvbXBsZXgtcnVsZVwiLFxuICAgICAgICBydWxlQ29sbGVjdGlvbklkOiBydWxlQ29sbGVjdGlvbi5pZCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ29tcGxleCBzZWN1cml0eSBydWxlIHdpdGggYWxsIHByb3BlcnRpZXNcIixcbiAgICAgICAgcHJpb3JpdHk6IDE1MCxcbiAgICAgICAgYWN0aW9uOiBcIkRlbnlcIixcbiAgICAgICAgZGlyZWN0aW9uOiBcIkluYm91bmRcIixcbiAgICAgICAgcHJvdG9jb2w6IFwiVGNwXCIsXG4gICAgICAgIHNvdXJjZVBvcnRSYW5nZXM6IFtcIjEwMjQtNjU1MzVcIl0sXG4gICAgICAgIGRlc3RpbmF0aW9uUG9ydFJhbmdlczogW1wiMjJcIiwgXCIzMzg5XCJdLFxuICAgICAgICBzb3VyY2VzOiBbXG4gICAgICAgICAgeyBhZGRyZXNzUHJlZml4OiBcIkludGVybmV0XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIlNlcnZpY2VUYWdcIiB9LFxuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCIxOTIuMTY4LjAuMC8xNlwiLCBhZGRyZXNzUHJlZml4VHlwZTogXCJJUFByZWZpeFwiIH0sXG4gICAgICAgIF0sXG4gICAgICAgIGRlc3RpbmF0aW9uczogW1xuICAgICAgICAgIHsgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjAuMC84XCIsIGFkZHJlc3NQcmVmaXhUeXBlOiBcIklQUHJlZml4XCIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocnVsZS5wcm9wcy5wcmlvcml0eSkudG9CZSgxNTApO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuc291cmNlUG9ydFJhbmdlcykudG9FcXVhbChbXCIxMDI0LTY1NTM1XCJdKTtcbiAgICAgIGV4cGVjdChydWxlLnByb3BzLmRlc3RpbmF0aW9uUG9ydFJhbmdlcykudG9FcXVhbChbXCIyMlwiLCBcIjMzODlcIl0pO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuc291cmNlcykudG9IYXZlTGVuZ3RoKDIpO1xuICAgICAgZXhwZWN0KHJ1bGUucHJvcHMuZGVzdGluYXRpb25zKS50b0hhdmVMZW5ndGgoMSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=