From b0fabaff5e5749c97ea45e26ba66a804e17f45ab Mon Sep 17 00:00:00 2001 From: "jiawei.liu" Date: Tue, 26 Apr 2022 02:20:44 +0800 Subject: [PATCH 1/6] first version --- merak/testscripts/TC/alcor_http_api_test.java | 572 ++++++++++++++++++ merak/testscripts/jinkins/README.md | 171 ++++++ merak/testscripts/jinkins/alcor_services.ini | 106 ++++ merak/testscripts/jinkins/build_aca.sh | 160 +++++ merak/testscripts/jinkins/container_ops.py | 101 ++++ .../testscripts/jinkins/create_test_cases.py | 228 +++++++ .../testscripts/jinkins/create_test_setup.py | 159 +++++ merak/testscripts/jinkins/helper_functions.py | 299 +++++++++ merak/testscripts/jinkins/ping_test.py | 220 +++++++ merak/testscripts/jinkins/prepare_payload.py | 97 +++ merak/testscripts/jinkins/remote_aca_build.sh | 86 +++ merak/testscripts/k6/alcor_services.js | 234 +++++++ merak/testscripts/k6/create_test_cases.js | 145 +++++ merak/testscripts/k6/create_test_setup.js | 294 +++++++++ merak/testscripts/k6/k6-test.docx | Bin 0 -> 360582 bytes merak/testscripts/k6/prepare_payload.js | 155 +++++ 16 files changed, 3027 insertions(+) create mode 100644 merak/testscripts/TC/alcor_http_api_test.java create mode 100644 merak/testscripts/jinkins/README.md create mode 100644 merak/testscripts/jinkins/alcor_services.ini create mode 100644 merak/testscripts/jinkins/build_aca.sh create mode 100644 merak/testscripts/jinkins/container_ops.py create mode 100644 merak/testscripts/jinkins/create_test_cases.py create mode 100644 merak/testscripts/jinkins/create_test_setup.py create mode 100644 merak/testscripts/jinkins/helper_functions.py create mode 100644 merak/testscripts/jinkins/ping_test.py create mode 100644 merak/testscripts/jinkins/prepare_payload.py create mode 100644 merak/testscripts/jinkins/remote_aca_build.sh create mode 100644 merak/testscripts/k6/alcor_services.js create mode 100644 merak/testscripts/k6/create_test_cases.js create mode 100644 merak/testscripts/k6/create_test_setup.js create mode 100644 merak/testscripts/k6/k6-test.docx create mode 100644 merak/testscripts/k6/prepare_payload.js diff --git a/merak/testscripts/TC/alcor_http_api_test.java b/merak/testscripts/TC/alcor_http_api_test.java new file mode 100644 index 0000000..328b665 --- /dev/null +++ b/merak/testscripts/TC/alcor_http_api_test.java @@ -0,0 +1,572 @@ +/* +MIT License +Copyright(c) 2020 Futurewei Cloud + Permission is hereby granted, + free of charge, to any person obtaining a copy of this software and associated documentation files(the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and / or sell copies of the Software, and to permit persons + to whom the Software is furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +/* + This is the code testing the Alcor HTTP APIs, currently support APIs: +1. createVPC +2. createSubnet +3. createPort + +Params: +1. vpm_ip +2. vpm_port +3. snm_ip +4. snm_port +5. pm_ip +6. pm_port +7. vpc_cidr_slash +8. tenant_amount +9. project_amount_per_tenant +10. vpc_amount_per_project +11. subnet_amount_per_vpc +12. test_vpc_api = true +13. test_subnet_api = true +14. test_port_api = true +15. call_api_rate = 100 + + the number of ports will be based on the vpc_cidr_slash and subnet_amount_per_vpc, for example, if vpc_cidr_slash + is 8, then the network cidr becomes 10.0.0.0/8, which has 2^(32-8) IPs, and say we have subnet_amount_per_vpc = 1024, + which is 2^10, then each subnet will have 2^(32-8-10) = 16384 ports, minus the two IPs(first and last in subnet cidr) + reserved by Alcor. +*/ + +package com.futurewei.alcor.pseudo_controller.alcor_http_api_test; + +import com.google.common.util.concurrent.RateLimiter; +import inet.ipaddr.AddressStringException; +import inet.ipaddr.IPAddress; +import inet.ipaddr.IPAddressSeqRange; +import inet.ipaddr.IPAddressString; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicHeader; +import org.apache.http.protocol.HTTP; +import org.apache.http.util.EntityUtils; +import org.json.simple.JSONArray; +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +@Component +public class alcor_http_api_test { + @Value("${vpm_ip:192.168.0.0}") + String vpm_ip; + @Value("${vpm_port:1234}") + String vpm_port; + @Value("${snm_ip:192.168.0.0}") + String snm_ip; + @Value("${snm_port:1234}") + String snm_port; + @Value("${pm_ip:192.168.0.0}") + String pm_ip; + @Value("${pm_port:1234}") + String pm_port; + /* + vpc_cidr_slash, the number after the slash in the vpc CIDR, decides how big the VPC is, + such as 10.0.0.0/16 or 10.0.0.0/8. + */ + @Value("${vpc_cidr_slash:16}") + int vpc_cidr_slash; + /* + tenant_amount = concurrency when calling APIs. + */ + @Value("${tenant_amount:1}") + int tenant_amount; + /* + project_amount_per_tenant, each tenant can have multiple projects. + */ + @Value("${project_amount_per_tenant:1}") + int project_amount_per_tenant; + /* + vpc_amount_per_project, each project can have multiple VPCs. + each VPC can have the same CIDR + */ + @Value("${vpc_amount_per_project:1}") + int vpc_amount_per_project; + /* + subnet_amount_per_vpc, each VPC can have multiple subnets. + */ + @Value("${subnet_amount_per_vpc:2}") + int subnet_amount_per_vpc; + @Value("${test_vpc_api:false}") + Boolean test_vpc_api; + @Value("${test_subnet_api:false}") + Boolean test_subnet_api; + @Value("${test_port_api:false}") + Boolean test_port_api; + @Value("${call_api_rate:1}") + int call_api_rate; + public alcor_http_api_test(){} + + public void run_test_against_alcor_apis(){ + System.out.println("Beginning of alcor API test, need to generate: " + + tenant_amount + " tenants, \n" + + project_amount_per_tenant + " projects for each tenant, \n" + + vpc_amount_per_project + " VPCs for each project, \n" + + subnet_amount_per_vpc + " subnets for each VPC, \n"); + ArrayList tenant_uuids = new ArrayList<>(); + SortedMap> tenant_projects = new TreeMap<>(); + SortedMap> project_vpcs = new TreeMap<>(); + SortedMap> vpc_subnets = new TreeMap<>(); + SortedMap> subnet_ports = new TreeMap<>(); + + ArrayList vpc_port_ips = null; + int subnet_port_amount = 1; + for (int i = 0 ; i < tenant_amount ; i ++){ + String current_tenant_uuid = UUID.randomUUID().toString(); + tenant_uuids.add(current_tenant_uuid); + ArrayList current_tenant_projects = new ArrayList<>(); + for (int j = 0 ; j < project_amount_per_tenant ; j++){ + String current_project_id = UUID.randomUUID().toString(); + current_tenant_projects.add(current_project_id); + ArrayList vpcs_inside_a_project = new ArrayList<>(); + for (int k = 0 ; k < vpc_amount_per_project ; k ++){ + /* + If you set it to /8 you will get a out-of-memory error. + /12 gives you more than 2 ^ 20 ports in a VPC, which is + 1,048,576, without causing the out-of-memory error. + */ + String vpc_cidr = "10.0.0.0/" + vpc_cidr_slash; + JSONObject vpc_payload = new JSONObject(); + JSONObject network = new JSONObject(); + String current_vpc_id = UUID.randomUUID().toString(); + network.put("admin_state_up", true); + network.put("revision_number", 0); + network.put("cidr", vpc_cidr); + network.put("default", true); + network.put("description", "vpc-"+k); + network.put("dns_domain", "test-dns-domain"); + network.put("id", current_vpc_id); + network.put("is_default", true); + network.put("mtu", 1400); + network.put("name", "vpc-"+k); + network.put("port_security_enabled", true); + network.put("project_id", current_project_id); + vpc_payload.put("network", network); + vpcs_inside_a_project.add(vpc_payload); + + /* + 1. Generate all port IPs from VPC CIDR range. + 2. Divide port IPs into groups based on subnet_amount_per_vpc; + 3. Each group is a subnet, calculate subnet CIDR and form its subnet payload and ports payload + */ + if (null == vpc_port_ips){ + try { + System.out.println("Need to generate port IPs for the first time."); + IPAddressString whole_vpc_address = new IPAddressString(vpc_cidr); + IPAddressSeqRange whole_vpc_address_range = whole_vpc_address.toSequentialRange(); + Iterator range_iterator = (Iterator) whole_vpc_address_range.stream().iterator(); + + vpc_port_ips = new ArrayList<>(); + while (range_iterator.hasNext()){ + vpc_port_ips.add(range_iterator.next().toString()); + } + subnet_port_amount = (vpc_port_ips.size() / subnet_amount_per_vpc); + System.out.println("Finished generating port IPs. Each subnet should have " + subnet_port_amount + " ports"); + } catch (AddressStringException e) { + e.printStackTrace(); + } + } + /* + Create subnet payload based on vpc payload + */ + if (test_subnet_api && null != vpc_port_ips){ + ArrayList current_vpc_subnets = new ArrayList<>(); + System.out.println("Generating subnets"); + for (int l = 0 ; l < subnet_amount_per_vpc ; l ++){ + String subnet_start_ip = vpc_port_ips.get((l * subnet_port_amount) + 0); + String subnet_end_ip = vpc_port_ips.get((l * subnet_port_amount) + subnet_port_amount - 1); + IPAddressString subnet_start_ip_address_string = new IPAddressString(subnet_start_ip); + IPAddressString subnet_end_ip_address_string = new IPAddressString(subnet_end_ip); + IPAddress subnet_start_ip_address = subnet_start_ip_address_string.getAddress(); + IPAddress subnet_end_ip_address = subnet_end_ip_address_string.getAddress(); + IPAddressSeqRange subnet_range = subnet_start_ip_address.toSequentialRange(subnet_end_ip_address); + IPAddress blocks[] = subnet_range.spanWithPrefixBlocks(); + String subnet_cidr = blocks[0].toString(); +// System.out.println("Subnet cidr = " + subnet_cidr); + String current_subnet_id = UUID.randomUUID().toString(); + JSONObject subnet_payload = new JSONObject(); + JSONObject subnet = new JSONObject(); + subnet.put("cidr", subnet_cidr); + subnet.put("id", current_subnet_id); + subnet.put("ip_version", 4); + subnet.put("network_id", current_vpc_id); + subnet.put("name", "subnet"+l); + subnet_payload.put("subnet", subnet); + current_vpc_subnets.add(subnet_payload); + if (test_port_api){ + List subnet_port_ips = vpc_port_ips.subList((l * subnet_port_amount) + 0, (l * subnet_port_amount) + subnet_port_amount); + ArrayList current_subnet_ports = new ArrayList<>(); +// System.out.println("Generating ports for current subnet, it has " + subnet_port_ips.size() + " ports"); + for(String port_ip_in_subnet : subnet_port_ips){ + JSONObject port_payload = new JSONObject(); + JSONObject port = new JSONObject(); + port.put("admin_state_up", true); + port.put("description", "test_port"); + port.put("device_id", "test_device_id"); + port.put("device_owner", "compute:nova"); + port.put("fast_path", true); + JSONArray fixed_ips = new JSONArray(); + JSONObject subnet_fixed_ip = new JSONObject(); + subnet_fixed_ip.put("ip_address", port_ip_in_subnet); + subnet_fixed_ip.put("subnet_id", current_subnet_id); + fixed_ips.add(subnet_fixed_ip); + port.put("fixed_ips", fixed_ips); + port.put("id", UUID.randomUUID().toString()); + port.put("mac_learning_enabled", true); + port.put("network_id", current_vpc_id); + port.put("securi_enabled", true); + port.put("project_id", current_project_id); + port.put("revision_number", 0); + port.put("tenant_id", current_tenant_uuid); + port.put("uplink_status_propagation", true); + + port_payload.put("port", port); + current_subnet_ports.add(port_payload); + } +// System.out.println("Finished generating ports for subnet."); + subnet_ports.put(current_subnet_id, current_subnet_ports); + } + + } + System.out.println("Finished generating subnets for vpc."); + vpc_subnets.put(current_vpc_id, current_vpc_subnets); + } + + } + project_vpcs.put(current_project_id, vpcs_inside_a_project); + } + tenant_projects.put(current_tenant_uuid, current_tenant_projects); + } + + System.out.println("Created JSON payloads for " + tenant_uuids.size() + " tenants, \neach tenant has " + + tenant_projects.get(tenant_projects.firstKey()).size() + " projects, \neach project has " + + project_vpcs.get(project_vpcs.firstKey()).size() + " vpcs, \neach vpc has " + + (test_subnet_api ? vpc_subnets.get(vpc_subnets.firstKey()).size() : 0) + " subnets, \neach subnet has " + + (test_port_api ? subnet_ports.get(subnet_ports.firstKey()).size() : 0) + " ports."); + + System.out.println("Time to call those APIs! Calling APIs at " + call_api_rate + "/second"); + // Maximum 100 API calls per second. + RateLimiter rateLimiter = RateLimiter.create(call_api_rate); + // Create a thread pool that has the same amount of threads as the rateLimiter + ExecutorService concurrent_create_resource_thread_pool = Executors.newFixedThreadPool(call_api_rate); + + if (test_vpc_api){ + System.out.println("Time to test VPC API!"); + ArrayList create_vpc_jobs = new ArrayList<>(); + for (String project_id : project_vpcs.keySet()) { + create_vpc_jobs.addAll(project_vpcs.get(project_id)); + } + + int vpc_call_amount = create_vpc_jobs.size(); + CountDownLatch latch = new CountDownLatch(vpc_call_amount); + int latch_wait_seconds = (vpc_call_amount / call_api_rate) + 1; + System.out.println("This VPC test will call createVPC API " + vpc_call_amount + + " times, at the rate of " + call_api_rate + "/second, it will wait at most " + + latch_wait_seconds + " seconds"); + AtomicInteger create_vpc_success_count = new AtomicInteger(0); + long call_vpc_api_start_time = System.currentTimeMillis(); + for (JSONObject vpc_job : create_vpc_jobs) { + rateLimiter.acquire(); + String current_project_id = (String)((JSONObject)vpc_job.get("network")).get("project_id"); + String create_vpc_url = "http://" + vpm_ip + ":" + vpm_port + "/project/" + current_project_id + "/vpcs"; + concurrent_create_resource_thread_pool.execute(() -> { + JSONObject create_vpc_response = call_post_api_with_json(create_vpc_url, vpc_job); + if (null != create_vpc_response && create_vpc_response.containsKey("network")){ +// System.out.println("Created VPC successfully"); + create_vpc_success_count.incrementAndGet(); + } + latch.countDown(); + }); + } + try { + if (test_subnet_api || test_port_api){ + /* + If we are testing subnet API or port API, we need to wait until the VPC is created. + */ + latch.await(600, TimeUnit.SECONDS); + }else{ + /* we actually don't need to wait latch_wait_seconds + because if we start the wait after the last call, we should actually wait for the last call. + So we will be waiting only 1 second at most. + */ + latch.await(/*latch_wait_seconds*/ 1, TimeUnit.SECONDS); + } + long call_vpc_api_end_time = System.currentTimeMillis(); + System.out.println("Total amount of calling createVPC API " + vpc_call_amount + + " times, finished "+ ( vpc_call_amount - latch.getCount()) + + " times, succeeded " + create_vpc_success_count.get() + " times, at the rate of " + + call_api_rate + "/second, it took " + + (call_vpc_api_end_time - call_vpc_api_start_time) + " milliseconds"); + } catch (InterruptedException e) { + System.err.println("Waited 60 seconds but can't get VPC response!"); + e.printStackTrace(); + } + } + + if (test_subnet_api){ + System.out.println("Time to test subnet API!"); + ArrayList create_subnet_jobs = new ArrayList<>(); + for (String vpc_id : vpc_subnets.keySet()) { + create_subnet_jobs.addAll(vpc_subnets.get(vpc_id)); + } + CountDownLatch latch = new CountDownLatch(create_subnet_jobs.size()); + int subnet_call_amount = create_subnet_jobs.size(); + int latch_wait_seconds = (subnet_call_amount / call_api_rate) + 1; + System.out.println("This subnet test will call createSubnet API " + subnet_call_amount + + " times, at the rate of " + call_api_rate + "/second, it will wait at most " + + latch_wait_seconds + " seconds"); + AtomicInteger create_subnet_success_count = new AtomicInteger(0); + long call_subnet_api_start_time = System.currentTimeMillis(); + for (JSONObject subnet_job : create_subnet_jobs) { + rateLimiter.acquire(); + String current_project_id = (String)((JSONObject)subnet_job.get("subnet")).get("project_id"); + String create_subnet_url = "http://" + snm_ip + ":" + snm_port + "/project/" + current_project_id + "/subnets"; + concurrent_create_resource_thread_pool.execute(() -> { + JSONObject create_vpc_response = call_post_api_with_json(create_subnet_url, subnet_job); + if (null != create_vpc_response && create_vpc_response.containsKey("subnet")){ +// System.out.println("Created VPC successfully"); + create_subnet_success_count.incrementAndGet(); + } + latch.countDown(); + }); + } + try { + if (test_port_api){ + /* + If we are testing port API, we need to wait until the VPC is created. + */ + latch.await(600, TimeUnit.SECONDS); + }else{ + /* we actually don't need to wait latch_wait_seconds + because if we start the wait after the last call, we should actually wait for the last call. + So we will be waiting only 1 second at most. + */ + latch.await(/*latch_wait_seconds*/ 1, TimeUnit.SECONDS); + } + long call_subnet_api_end_time = System.currentTimeMillis(); + System.out.println("Total amount of calling createSubnet API " + subnet_call_amount + + " times, finished "+ ( subnet_call_amount - latch.getCount()) + + " times, succeeded " + create_subnet_success_count.get() + " times, at the rate of " + + call_api_rate + "/second, it took " + + (call_subnet_api_end_time - call_subnet_api_start_time) + " milliseconds"); + } catch (InterruptedException e) { + System.err.println("Waited 60 seconds but can't get subnet response!"); + e.printStackTrace(); + } + } + + if (test_port_api){ + System.out.println("Time to test port API!"); + ArrayList create_port_jobs = new ArrayList<>(); + for (String subnet_id : subnet_ports.keySet()) { + ArrayList current_subnet_ports = subnet_ports.get(subnet_id); + //remove the first and last IP, maybe those are reserved. + current_subnet_ports.remove(current_subnet_ports.size() - 1); + current_subnet_ports.remove(0); + create_port_jobs.addAll(current_subnet_ports); + } + CountDownLatch latch = new CountDownLatch(create_port_jobs.size()); + int port_call_amount = create_port_jobs.size(); + int latch_wait_seconds = (port_call_amount / call_api_rate) + 1; + System.out.println("This port test will call createPort API " + port_call_amount + + " times, at the rate of " + call_api_rate + "/second, it will wait at most " + + latch_wait_seconds + " seconds"); + AtomicInteger create_port_success_count = new AtomicInteger(0); + long call_port_api_start_time = System.currentTimeMillis(); + for (JSONObject port_job : create_port_jobs) { + rateLimiter.acquire(); + String current_project_id = (String)((JSONObject)port_job.get("port")).get("project_id"); + String create_port_url = "http://" + pm_ip + ":" + pm_port + "/project/" + current_project_id + "/ports"; + concurrent_create_resource_thread_pool.execute(() -> { + JSONObject create_vpc_response = call_post_api_with_json(create_port_url, port_job); + if (null != create_vpc_response && create_vpc_response.containsKey("port")){ +// System.out.println("Created VPC successfully"); + create_port_success_count.incrementAndGet(); + } + latch.countDown(); + }); + } + try { + /* we actually don't need to wait latch_wait_seconds + because if we start the wait after the last call, we should actually wait for the last call. + So we will be waiting only 1 second at most. + */ + latch.await(/*latch_wait_seconds*/ 1, TimeUnit.SECONDS); + long call_port_api_end_time = System.currentTimeMillis(); + System.out.println("Total amount of calling createPort API " + port_call_amount + + " times, finished "+ ( port_call_amount - latch.getCount()) + + " times, succeeded " + create_port_success_count.get() + " times, at the rate of " + + call_api_rate + "/second, it took " + + (call_port_api_end_time - call_port_api_start_time) + " milliseconds"); + } catch (InterruptedException e) { + System.err.println("Waited 60 seconds but can't get port response!"); + e.printStackTrace(); + } + } + /* + System.out.println("Try to call API to create a VPC!"); + JSONObject example_vpc_payload = new JSONObject(); + String project_id = "12345"; + String vpc_id = "54321"; + Boolean admin_state_up = true; + int revision_number = 0; + String cidr = "10.0.0.0/16"; + Boolean network_default = true; + String description = "test_description"; + String dns_domain = "test_dns_domain"; + Boolean is_default = true; + int mtu = 1400; + String name = "test_vpc"; + Boolean port_security_enabled = true; + + JSONObject network = new JSONObject(); + network.put("admin_state_up", admin_state_up); + network.put("revision_number", revision_number); + network.put("cidr", cidr); + network.put("default", network_default); + network.put("description", description); + network.put("dns_domain", dns_domain); + network.put("id", vpc_id); + network.put("is_default", is_default); + network.put("mtu", mtu); + network.put("name", name); + network.put("port_security_enabled", port_security_enabled); + network.put("project_id", project_id); + example_vpc_payload.put("network", network); + + String create_vpc_url = "http://" + vpm_ip + ":" + vpm_port + "/project/" + project_id + "/vpcs"; + JSONObject create_vpc_response = call_post_api_with_json(create_vpc_url, example_vpc_payload); + if (null != create_vpc_response){ + System.out.println("Create VPC response: \n" + create_vpc_response); + } + + String subnet_id = "112233"; + String subnet_cidr = "10.0.1.0/24"; + int subnet_ip_version = 4; + String network_id = vpc_id; + String subnet_name = "test_subnet"; + + JSONObject example_subnet_payload = new JSONObject(); + JSONObject subnet = new JSONObject(); + subnet.put("cidr", subnet_cidr); + subnet.put("id", subnet_id); + subnet.put("ip_version", subnet_ip_version); + subnet.put("network_id", network_id); + subnet.put("name", subnet_name); + + example_subnet_payload.put("subnet", subnet); + String create_subnet_url = "http://" + snm_ip + ":" + snm_port + "/project/" + project_id + "/subnets"; + JSONObject create_subnet_response = call_post_api_with_json(create_subnet_url, example_subnet_payload); + String subnet_start_ip = null; + String subnet_end_ip = null; + JSONObject subnet_content = null; + JSONArray subnet_allocation_pools = null; + ArrayList port_ips = new ArrayList(); + if (null != create_subnet_response){ + System.out.println("Create subnet response: \n" + create_subnet_response); + subnet_content = (JSONObject) create_subnet_response.get("subnet"); + subnet_allocation_pools = (JSONArray) subnet_content.get("allocation_pools"); + JSONObject subnet_allocations_pool_first_element = (JSONObject) subnet_allocation_pools.get(0); + subnet_start_ip = (String) subnet_allocations_pool_first_element.get("start"); + subnet_end_ip = (String) subnet_allocations_pool_first_element.get("end"); + IPAddressString start = new IPAddressString(subnet_start_ip); + IPAddressString end = new IPAddressString(subnet_end_ip); + IPAddress start_addr = start.getAddress(); + IPAddress end_addr = end.getAddress(); + IPAddressSeqRange range = start_addr.toSequentialRange(end_addr); + Iterator range_iterator = (Iterator) range.stream().iterator(); + while (range_iterator.hasNext()){ + IPAddress port_ip_address = range_iterator.next(); + System.out.println("Current port IP: " + port_ip_address.toString()); + port_ips.add(port_ip_address.toString()); + } + ArrayList ports_json_objects = new ArrayList<>(); + for (String port_ip_address : port_ips){ + JSONObject example_port_payload = new JSONObject(); + JSONObject port = new JSONObject(); + port.put("admin_state_up", admin_state_up); + port.put("description", "test_port"); + port.put("device_id", "test_device_id"); + port.put("device_owner", "compute:nova"); + port.put("fast_path", true); + JSONArray fixed_ips = new JSONArray(); + JSONObject subnet_fixed_ip = new JSONObject(); + subnet_fixed_ip.put("ip_address", port_ip_address); + subnet_fixed_ip.put("subnet_id", subnet_id); + fixed_ips.add(subnet_fixed_ip); + port.put("fixed_ips", fixed_ips); + port.put("id", UUID.randomUUID().toString()); + port.put("mac_learning_enabled", true); + port.put("network_id", vpc_id); + port.put("securi_enabled", true); + port.put("project_id", project_id); + port.put("revision_number", 0); + port.put("tenant_id", project_id); + port.put("uplink_status_propagation", true); + + example_port_payload.put("port", port); + ports_json_objects.add(example_port_payload); + } + String create_port_url = "http://" + pm_ip + ":"+ pm_port + "/project/" + project_id + "/ports"; + if(ports_json_objects.size() > 0 ){ + JSONObject create_port_response = call_post_api_with_json(create_port_url, ports_json_objects.get(0)); + if (null != create_port_response){ + System.out.println("Create Port response: \n" + create_port_response); + } + } + } + */ + } + + private JSONObject call_post_api_with_json(String url, JSONObject parameter){ +// System.out.println("Calling URL: " + url); + JSONObject response_json = null; + HttpClient c = new DefaultHttpClient(); + HttpPost post = new HttpPost(url); + post.setHeader("Content-Type", "application/json"); + String result = ""; + try { + StringEntity s = new StringEntity(parameter.toString(), "utf-8"); + s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, + "application/json")); + post.setEntity(s); + HttpResponse httpResponse = c.execute(post); + + // Get the input stream + HttpEntity response_entity = httpResponse.getEntity(); + + String json_string = EntityUtils.toString(response_entity); + + response_json = (JSONObject) new JSONParser().parse(json_string); + + }catch (Exception e){ + e.printStackTrace(); + } + return response_json; + } + +} \ No newline at end of file diff --git a/merak/testscripts/jinkins/README.md b/merak/testscripts/jinkins/README.md new file mode 100644 index 0000000..0b960f9 --- /dev/null +++ b/merak/testscripts/jinkins/README.md @@ -0,0 +1,171 @@ +# MIT License +``` +Copyright(c) 2020 Futurewei Cloud +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` + +# Busybox Ping Test + +# In this README: +- [Introduction](#Introduction) +- [Key Features](#Key-Features) +- [Directory Structure](#Directory-Structure) +- [Test Configuration](#Test-Configuration) +- [Examples](#Examples) +- [Preconditions](#Preconditions) +- [Troubleshooting](#Troubleshooting) +- [Running Test](#Running-Test) + +## Introduction +This is an end to end test where we test two Busybox containers, hosted on same or different hosts, ping each other.The connectivity between the two Busybox containers is provided by Alcor services and Alcor Control Agent. + +## Key Features of Test Script + - Builds Alcor and docker images for all alcor services (optional). + - Stops and removes existing alcor services and starts the alcor services afresh. + - Stops any currently running ACA on target computers where Busybox containers are to be deployed. + - Clears any existing busybox containers on the target hosts. + - Checks if the Alcor Control Agents are running on the target hosts. + - Prepares the testcase using provided test payload in the configuration file and generate the goal state. + - Deploys two busybox containers on the target hosts and assigns the IP/MAC obtained from the goal state generated in previous step. + - Runs a ping command from one container to another. + +## Directory Structure and Files +alcor/scripts/test-automation +1. alcor_services.ini +2. ping_test.py +3. helper_functions.py +4. container_ops.py +5. prepare_payload.py +6. create_test_setup.py +7. create_test_cases.py + +## Test Configuration +Test configuration should be presented in the file alcor_services.ini. Configuration file has following sections: +1. [services]: Carries the list of alcor service folders, service names and the ports they use. +2. [AlcorControlAgents]: New line separated list of hosts over which ACA is running and on which Busybox containers will be deployed. +3. [test_info]: Carries the data necessary for creating the end goal states. +4. [vpc_info], [node_info], [subnet_info], [security_groups], [port_info]: These carry the test payload that is needed to generate the end goal state. + +## Example +You can configure the alcor services name, port number in the following way: +[services] +1. ignite = {"name":"ignite", "port":10800, "path":"/lib/ignite",Dockerfile"} +2. vpc_manager = {"name":"vpm", "port":9001} +3. subnet_manager = {"name":"snm", "port":9002} + +With the above configuration the ignite service will be run with the name 'ignite', +The vpc_manager is built from the Dockerfile located in services/vpc_manager folder and the container with the name vpm port 9001 is started. + +## Preconditions +Ensure that your target hosts, over which you plan to deploy the Busybox containers +1. Have Alcor Control Agent binaries located at /home/ubuntu/repos/aca/build/bin/AlcorControlAgent + +## Running Test +The main file for running the test is ping_test.py. It is a python script that can be run from command prompt in either of the following two ways: +``` +python3 busybox_ping_test.py +./busybox_ping_test.py +``` + +You can optionally provide the paramter "-b build" to build all the docker images of the alcor services. This step need not be followed for any subsequent tests, unless any changes are made in Alcor. + +## After Test Starts +1. It will stop, remove existing Alcor services (if present) and start them all (as listed in alcor_services.ini file) +2. Checks the target hosts if any Alcor Control Agent (ACA) is running. If yes, it is killed and ACA restarted. +3. Checks whether the ACAs are running on the targets. If found not running, the test stops. +4. Using the test info and payload provided in config file, generate the end goal states for two end nodes. +5. Deploy two busy box containers con1 and con2 on the target hosts and runs a ping command from one container to another. + +## ACA on target hosts +1. Following packages are required to build and run ACA. Install the following packages on target hosts. Though not mentioned below, installing these pacakges will require sudo permissions. +``` +openvswitch-switch +openvswitch-common +apache-pulsar-client +apache-pulsar-client-dev +``` + +2. The library 'openvswitch' is also required. This library can only be installed from source. Get a clone of this library from github and checkout 2.12 branch. +``` +https://github.com/openvswitch/ovs.git +``` +Install the following packages before building ovs +``` +make +autoconf +libtool +c-ares +``` +Now go to the ovs source and update the file 'configure.ac' and edit th line carrying LT_INIT to enable shared library creation before building: +* LT_INIT (enable_shared) +``` +./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc +make +make install. +``` + +3. After the successful installation of ovs, start the following services: +``` +sudo systemctl openvswitch-switch restart +sudo /usr/local/share/openvswitch/scripts/ovs-ctl start +``` +The script ovs-ctsl starts the services vsdb-server and ovs-vswitchd. + +4. If ACA or ovs services throw bridge related errors, clear the existing bridges for any given container on target hosts. The test script takes care of these itself. However, if you ever manually try to start ACA, following commands can be used to clear existing bridges. +``` + ovs-vsctl del-br br-tun + ovs-vsctl del-br br-int + ovs-docker del-ports br-int +``` + +5. Following commands can be used to diagnose the target node's ovs services and bridges: +``` +ovs-vsctl show +ovs-ofctl dump-flows br-tun +ovs-ofctl dump-flows br-int +``` + +## Troubleshooting +1) During the runing of test script, the user account 'ubuntu' from Alcor host will be making ssh connection to the target hosts. Ensure that user ubuntu has password less ssh access to the target hosts. Copy the contents of id_rsa.pub file of user 'ubuntu' (located at ~/.ssh) and paste into the file ~/.ssh/authorized_keys on target host. + +2) Often after running the tests from a terminal on the Alcor hosts leaves the stdout and stdin in an unknown state. You can fix it by running +``` +reset +``` +While typing reset command you will not be able to see it. But once run, the terminal is restored. + +3) While running the tests from Jenkins, it is essential that the jenkins user also has password less access to the target hosts. Easiest way to ensure that to copy the entire ~/.ssh folder of user 'ubuntu' on to the jenkins home directory, which is usually at /var/lib/jenkins. Ensure while copying that file attributes are preserved. +``` +cp -pr /home/ubuntu/.ssh /var/lib/jenkins +chown -R jenkins:jenkins /var/lib/jenkins/.ssh +``` +Go through the jenkins help file available in alcor-int repository to get addtional details on running tests through jenkins. + +4) If the tests ever fails due to errors from Alcor API calls then observe the output from http get request from these calls. Check the configuration in alcor_services.ini and redeploy by manaully calling these APIs. + + +## Quick Start +After making the necessary configuration file changes, run the script with following paramters to get started: +1. ./ping_test.py -b build + - build the alcor services and their docker images and + - runs the simple test case of two containers under same subnet and security group pinging each other. +2. ./ping_test.py -t 1 + - runs the test case of two busyboxy containers on two subnets and same security group +3. ./ping_test.py -t 2 + - runs the test case of two busybox containers on one subnet and two security groups + + + diff --git a/merak/testscripts/jinkins/alcor_services.ini b/merak/testscripts/jinkins/alcor_services.ini new file mode 100644 index 0000000..eac3427 --- /dev/null +++ b/merak/testscripts/jinkins/alcor_services.ini @@ -0,0 +1,106 @@ +[services] +ignite = {"name":"ignite", "port":10800, "path":"/lib/ignite.Dockerfile"} +# vpc_manager internal port : 9001 +vpc_manager = {"name":"vpm", "port":9009} + +# Segment handling can't be routed through API gateway but has to go +# directly to vpc_manager but other vpc related requests will have to +# go through API gateway. A segment_service is added as an alias of +# vpc_manager internal port for handling this situation. At present, ping +# test uses it to create default segment table. +segment_service = {"name" : "sgs", "port" : 9001} + +# subnet_manager internal port : 9002 +subnet_manager = {"name":"snm", "port":9009} + +# route_manager internal port : 9003 +route_manager = {"name":"rm", "port":9009} + +# private_ip_manager internal port : 9004 +private_ip_manager = {"name":"pim", "port":9009} + +# mac_manager (virtual mac manager) internal port : 9005 +mac_manager = {"name":"mm", "port":9009} + +# port_manager internal port : 9006 +port_manager = {"name":"pm", "port":9009} + +# This can't be routed through API GW +node_manager = {"name":"nm", "port":9007} + +# security_group_manager internal port : 9008 +security_group_manager = {"name":"sgm", "port":9009} + +api_gateway = {"name":"ag", "port":9009} + +# data_plane_manager internal port : 9010 +data_plane_manager = {"name":"dpm", "port":9009} + +# elastic_ip_manager internal port : 9011 +elastic_ip_manager = {"name":"eim", "port":9009} + +# quota_manager internal port : 9012 +quota_manager = {"name":"qm", "port":9009} + +# network_acl_manager internal port : 9013 +network_acl_manager = {"name":"nam", "port":9009} + +# network_config_manager internal port : 9014 +network_config_manager = {"name":"ncm", "port":9009} + +# gateway_manager internal port : 9015 +gateway_manager = {"name":"gm", "port":9009} + +[AlcorControlAgents] +node1 = 172.31.19.133 +node2 = 172.31.21.202 + +[test_setup] +vpc_id = "9192a4d4-ffff-4ece-b3f0-8d36e3d88001" +project_id = "3dda2801-d675-4688-a63f-dcda8d327f50" +tenant_id = "3dda2801-d675-4688-a63f-dcda8d327f50" +network_id = "9192a4d4-ffff-4ece-b3f0-8d36e3d88001" +cidr = "172.16.0.0/16" +node_id = ["1112a4d4-ffff-4ece-b3f0-8d36e3d85001", "1112a4d4-ffff-4ece-b3f0-8d36e3d85002"] +node_name = ["node1", "node2"] +subnet_id = "8182a4d4-ffff-4ece-b3f0-8d36e3d88001" +security_group_id = "3dda2801-d675-4688-a63f-dcda8d111111" +device_id = ["8182a4d4-ffff-4ece-b3f0-8d36e3d00001", "8182a4d4-ffff-4ece-b3f0-8d36e3d00002"] +port_name = ["port101", "port102"] +port_id = ["7122a4d4-ffff-5eee-b3f0-8d36e3d01101", "7122a4d4-ffff-5eee-b3f0-8d36e3d02201"] +ip_addrs = ["172.16.1.101", "172.16.1.102"] +container_names = ["con1", "con2"] + +[L3_AttachRouter_then_CreatePorts] +subnet_ids = ["8182a4d4-ffff-4ece-b3f0-8d36e3d88001", "8182a4d4-ffff-4ece-b3f0-8d36e3d88002"] +cidrs = ["172.16.1.0/24", "172.16.2.0/24"] +ip_addrs = ["172.16.1.101", "172.16.2.201"] +subnet_names = ["subnet1", "subnet2"] +device_ids = ["8182a4d4-ffff-4ece-b3f0-8d36e3d00001", "8182a4d4-ffff-4ece-b3f0-8d36e3d00002"] + +[L2_basic] +security_group_ids =["3dda2801-d675-4688-a63f-dcda8d111111", "3dda2801-d675-4688-a63f-dcda8d111112"] +sg_names= ["sg1","sg2"] +device_ids = ["8182a4d4-ffff-4ece-b3f0-8d36e3d00001", "8182a4d4-ffff-4ece-b3f0-8d36e3d00002"] + +[gateways] +gateway_info = [{"gw" : "172.16.1.1" , "ips" : ["172.16.1.101", "172.16.1.102"]}, {"gw" : "172.16.2.1", "ips" : ["172.16.2.201"]}] + +[vpc_info] +vpc_info = {"cidr":${test_setup:cidr},"id":${test_setup:vpc_id}, "project_id":${test_setup:project_id}} + +[node_info] +node_info = {"node_id":${test_setup:node_id}, "node_name":${test_setup:node_name}, "server_port":8080, "veth":"eth0"} + +[subnet_info] +subnet_info = {"cidr":${test_setup:cidr},"id":${test_setup:subnet_id},"ip_version":4,"network_id":${test_setup:network_id},"name":"subnet1","host_routes":[{"destination":"172.16.1.0/24","nexthop":"172.16.1.1"}]} + +[security_groups] +security_group_info = {"create_at":"string","description":"string","id":${test_setup:security_group_id},"name":"sg1","project_id":${test_setup:project_id},"security_group_rules":[],"tenant_id":${test_setup:tenant_id},"update_at":"string"} + +[port_info] +port_info = {"binding:host_id":${test_setup:node_name},"device_id":${test_setup:device_id},"fixed_ips":${test_setup:ip_addrs},"subnet_id":${test_setup:subnet_id},"id": ${test_setup:port_id},"name": ${test_setup:port_name},"network_id": ${test_setup:network_id},"project_id":${test_setup:project_id},"security_groups":${test_setup:security_group_id},"tenant_id":${test_setup:tenant_id}} + +[router_info] +router_info = {"name":"router1","owner":${test_setup:vpc_id},"network_id":${test_setup:network_id},"project_id":${test_setup:project_id},"security_groups":${test_setup:security_group_id},"tenant_id":${test_setup:tenant_id},"id":"11112801-d675-4688-a63f-dcda8d327f50"} + diff --git a/merak/testscripts/jinkins/build_aca.sh b/merak/testscripts/jinkins/build_aca.sh new file mode 100644 index 0000000..340beef --- /dev/null +++ b/merak/testscripts/jinkins/build_aca.sh @@ -0,0 +1,160 @@ +#! /bin/sh + +# Pull latest ACA code from specified repository, branch and commit +# and call aca_machine_init.sh to do the actual build. +# Emit success or failure so that the remote script learn about the status +# of the build. + + +GIT_REPO="" +GIT_BRANCH="" +GIT_COMMIT= +GIT_URL= +REMOTE_COMMIT= +LOCAL_COMMIT= +DO_FORCE=0 +DO_BUILD=0 + +# Get local repo/branch/commit info +git_check_current() { + LOCAL_INFO=`git log origin/$GIT_BRANCH | head -3` + LOCAL_COMMIT=`echo $LOCAL_INFO | awk '/^commit/ {print $2}'` + LOCAL_DATE=`echo $LOCAL_INFO | sed 's/^.*Date://' | awk '{print $1, $2, $3, $4, $5}'` +} + + +# Get remote repo/branch/commit info +# May need git fetch -all to be robust +git_check_remote() { + REMOTE_INFO=`git log origin/$GIT_BRANCH | head -3` + REMOTE_COMMIT=`echo $REMOTE_INFO | awk '/^commit/ {print $2}'` + REMOTE_DATE=`echo $REMOTE_INFO | sed 's/^.*Date://' | awk '{print $1, $2, $3, $4, $5}'` + + RSEC=`date --date="${REMOTE_DATE}" +%s` + LSEC=`date --date="${LOCAL_DATE}" +%s` + + DIFF=`echo $RSEC - $LSEC | bc` + if [ $DO_FORCE -eq 1 ]; then + DO_BUILD=1 + elif [ $DIFF -gt 0 ]; then + DO_BUILD=1 + fi +} + + +# Need to avoid getting stuck on stale modifications +git_reset() { + git reset --hard || { + echo "ERROR: git reset failed" + exit 1 + } + echo "Success: git reset" +} + + +# Fetch the specified repo +git_fetch() { + git fetch --force --tags $GIT_URL || { + echo "ERROR: git fetch failed" + exit 1 + } + + git config remote.origin.url $GIT_URL + git pull +} + + +# checkout the specified branch (add commit later). +git_checkout() { + git checkout $GIT_BRANCH || { + echo "git checkout $GIT_BRANCH failed" + exit 1 + } + + echo "Success: git checkout $GIT_BRANCH" +} + + +# Start the build on the node. +# Waits for remote builds to finish. +do_build() { + cd build + sed -e '/^[\t ]*nohup[\t ][\t ]*$BUILD\/bin\/AlcorControlAgent /d' \ + ./aca-machine-init.sh > ./aca-machine-init-jenkins.sh + chmod +x ./aca-machine-init-jenkins.sh + D1=`date +%s` + echo "Started build in `pwd`..." + rm -f ../CMakeCache.txt ../cmake_install.cmake > /dev/null 2>&1 + sudo ./aca-machine-init-jenkins.sh > /tmp/amij.log 2>&1 + D2=`date +%s` + echo "Build finished in `expr $D2 - $D1` seconds, waiting a little..." + OSZ=0 + while :; do + NSZ=`ls -l /tmp/amij.log | awk '{print $5}'` + if [ $NSZ -eq $OSZ ]; then + break + else + OSZ=$NSZ + sleep 5 + fi + done + + if fgrep "Built target AlcorControlAgent" /tmp/amij.log > /dev/null 2>&1; then + echo "Success: ACA machine init" + exit 0 + else + echo "Failure: ACA machine init" + exit 1 + fi +} + +if [ $# -lt 4 ]; then + echo "$0 repo branch commit force {0|1}" + echo "Failure: ACA machine init" + exit 1 +fi + +echo "build_aca started on `uname`" + +GIT_REPO=$1 +GIT_BRANCH=$2 +GIT_COMMIT=$3 + +if [ $GIT_COMMIT = "HEAD" ]; then + GIT_COMMIT= +fi + +DO_FORCE=$4 + +if [ "$GIT_REPO" != "futurewei-cloud" -o "$BIT_BRANCH" != "master" -o -n "$GIT_COMMIT" ]; then + echo "Can't check status of remote repository other than" + echo "futurewei-cloud, forcing a build" + DO_FORCE=1 +fi + +GIT_URL="https://github.com/$GIT_REPO/alcor-control-agent" + +echo "build_aca using: +GIT_URL = $GIT_URL +GIT_BRANCH = $GIT_BRANCH +GIT_COMMIT = $GIT_COMMIT +FORCED_BUILD = $DO_FORCE +" + +git_check_current + +if [ $DO_FORCE -eq 1 ]; then + git_checkout + git_reset + git_fetch +fi + +git_check_remote + +if [ $DO_BUILD -eq 0 ]; then + echo "Skipping the build" + echo "Success: ACA machine init" + exit 0 +else + do_build +fi diff --git a/merak/testscripts/jinkins/container_ops.py b/merak/testscripts/jinkins/container_ops.py new file mode 100644 index 0000000..62e0d78 --- /dev/null +++ b/merak/testscripts/jinkins/container_ops.py @@ -0,0 +1,101 @@ +#!/usr/bin/python3 + +# MIT License +# Copyright(c) 2020 Futurewei Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files(the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +from helper_functions import * +from termcolor import colored + +def busybox_container_cleanup(aca_node_ip, con): + print("Cleaning up busybox container", con) + command = "sudo ovs-docker del-ports br-int {}".format(con) + output = run_command_on_host(aca_node_ip, command) + print("Cleanup task: ", command, "\n", output, "\n") + command = "sudo docker container stop {}".format(con) + output = run_command_on_host(aca_node_ip, command) + print("Cleanup task: ", command, "\n", output, "\n") + command = "sudo docker container rm {} -f ".format(con) + output = run_command_on_host(aca_node_ip, command) + print("Cleanup task: ", command, "\n", output, "\n") + command = "sudo ovs-vsctl del-br br-tun" + output = run_command_on_host(aca_node_ip, command) + print("Cleanup task: ", command, "\n", output, "\n") + command = "sudo ovs-vsctl del-br br-int" + output = run_command_on_host(aca_node_ip, command) + print("Cleanup task: ", command, "\n", output, "\n") + command = "sudo /usr/local/share/openvswitch/scripts/ovs-ctl start" + output = run_command_on_host(aca_node_ip, command) + print("Cleanup task: ", command, "\n", output, "\n") + print("SUCCESS: busybox cleanup") + + +def busybox_container_deploy(target_ips, ip_mac_db, container_names): + index = 0; + size = len(container_names) + for db_ip, db_mac in ip_mac_db.items(): + con = container_names[index] + aca_ip = target_ips[index] + index = index + 1 + command1 = "sudo docker run -itd --name " + con + " --net=none busybox sh" + command2 = "sudo ovs-docker add-port br-int eth1 " + con + " --ipaddress=" + db_ip + "/24" + " --macaddress=" + db_mac + command3 = "sudo ovs-docker set-vlan br-int eth1 " + con + " 1" + print("Deploying busybox " + con + " on " + aca_ip) + gw = get_gateway_for_ip(db_ip) + command4 = "sudo docker exec -u root --privileged -it " + con + " route add default gw " + gw + output = run_command_on_host(aca_ip, command1) + print(con, "deploy task: ", output, "\n") + + output = run_command_on_host(aca_ip, command2) + print(con, "deploy task: ", output, "\n") + + output = run_command_on_host(aca_ip, command3) + print(con, "deploy task: ", output, "\n") + output = run_command_on_host(aca_ip, command4) + print(con, "add default gw : ", output, "\n") + print("SUCCESS: deploying busybox " + con + " on " + aca_ip) + + ip_addrs = list(ip_mac_db.keys()) + + +def run_ping_test(target_machines, ip_addrs, container_names): + index_0 = 0 + index_1 = 1 + ping_counts = 2 + + dest1 = ip_addrs[index_1] + dest2 = ip_addrs[index_0] + ping_0_to_1 = "sudo docker exec -it " + container_names[index_0] + " ping -c " + str(ping_counts) + " " + dest1 + ping_1_to_0 = "sudo docker exec -it " + container_names[index_1] + " ping -c " + str(ping_counts) + " " + dest2 + + HOST = target_machines[index_0] + print("Ping test on {} to {}".format(HOST, dest1)) + output1 = run_command_on_host(HOST, ping_0_to_1) + print("run_ping_test: {} to {} result: ".format(HOST, dest1, output1)) + + HOST = target_machines[index_1] + print("Ping test on {} to {}".format(HOST, dest2)) + output2 = run_command_on_host(HOST, ping_1_to_0) + print("run_ping_test: {} to {} result: ".format(HOST, dest2, output2)) + + expected_output = "2 packets transmitted, 2 packets received" + if expected_output in str(output1) and expected_output in str(output2): + print (colored("PING TEST SUCCESSFULL", 'green')) + return 0 + else: + print(colored('PING TEST FAILED', 'red')) + return 1 + diff --git a/merak/testscripts/jinkins/create_test_cases.py b/merak/testscripts/jinkins/create_test_cases.py new file mode 100644 index 0000000..1ef2ef5 --- /dev/null +++ b/merak/testscripts/jinkins/create_test_cases.py @@ -0,0 +1,228 @@ +#!/usr/bin/python3 + +# MIT License +# Copyright(c) 2020 Futurewei Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files(the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +from create_test_setup import * + +# test_case is the scenario section header, must contain +# all of the subnet information. Different scenarios may use +# the same test_case setup so to avoid confusion, passin +# the scenario name which will appear in the test output. +def create_subnets(snm_port, test_case, scenario): + print("creating subnets for scenario {}".format(scenario)) + subnet_info = read_config_file_section(test_case) + id_list = json.loads(subnet_info['subnet_ids']) + id_names = json.loads(subnet_info['subnet_names']) + device_ids = json.loads(subnet_info['device_ids']) + cidrs = json.loads(subnet_info['cidrs']) + ip_addrs = json.loads(subnet_info['ip_addrs']) + subnet_info = read_config_file_section("subnet_info") + subnetinfo = json.loads(subnet_info['subnet_info']) + url = 'http://localhost:{}/project/{}/subnets'.format(snm_port, get_projectid()) + subnet = {} + for cidr, id, name in zip(cidrs, id_list, id_names): + subnetinfo['cidr'] = cidr + subnetinfo['id'] = id + subnetinfo['name'] = name + subnet["subnet"] = subnetinfo + post_httprequest(url, subnet) + print("verifying created subnets") + print(get_httprequest(url)) + print("SUCCESS: creating subnets for {}".format(scenario)) + return id_list,device_ids,ip_addrs + + + +def create_security_groups(port): + print("Creating security groups") + security_groups ={} + url = 'http://localhost:{}/project/{}/security-groups'.format(port, get_projectid()) + sg_info = read_config_file_section("security_groups") + sginfo = json.loads(sg_info['security_group_info']) + + security_groups_info = read_config_file_section("L2_basic") + id_list = json.loads(security_groups_info['security_group_ids']) + id_names = json.loads(security_groups_info['sg_names']) + device_ids = json.loads(security_groups_info['device_ids']) + for name, id in zip(id_names, id_list): + sginfo['id'] = id + sginfo['name'] = name + security_groups["security_group"] = sginfo + print("SG ", security_groups) + post_httprequest(url, security_groups) + print("SUCCESS: creating security groups") + return id_list,device_ids + + +def attach_subnets_to_router(rm_port, snm_port, router_id, subnet_id_list): + url = 'http://localhost:{}/project/{}/routers/{}/add_router_interface'.format(rm_port, get_projectid(),router_id) + print("Attaching subnets to router") + + for id in subnet_id_list: + subnet_info = {"subnet_id":id} + put_httprequest(url, subnet_info) + req="http://localhost:{}/project/{}/routers".format(rm_port, get_projectid()) + print("Attached router info") + print(get_httprequest(req)) + print("SUCCESS: attaching subnets to router") + +# Test case 1: L2 Basic +# Two nodes in same subnet in different seurity groups +def prepare_test_L2_basic(ip_mac, ser_port): + test_name = "L2_basic" + print("Preparing test case {}...".format(test_name)) + serv = read_config_file_section("services") + create_default_segment_table(ser_port["sgs"]) + create_vpc(ser_port["vpm"]) + create_node(ser_port["nm"], ip_mac) + create_subnet(ser_port["snm"]) + id_list,device_ids = create_security_groups(ser_port["sgm"]) + change_ports = {"change":["security_groups","device_id"], "security_groups":id_list,"device_ids":device_ids} + create_port_goal_states(ser_port["pm"], change_ports) + ip_mac_db = get_mac_from_db() + print("Test case {}. IP/MAC in ignite DB: ".format(test_name, ip_mac_db)) + print("SUCCESS: preparing test case {}...".format(test_name)) + return ip_mac_db + +# Test case 2: L3_AttachRouter_then_CreatePorts (S4) +# Two nodes in different subnets, in same same sg +# Order of network element creation is: +# 1) Create default segement table +# 2) Create nodes +# 3) Create VPC +# 4) Create security group +# 5) Create create subnets +# 6) Create router +# 7) Attach subnets to router +# 8) Create ports +def prepare_test_L3_AttachRouter_then_CreatePorts(ip_mac, ser_port): + test_name = "L3_AttachRouter_then_CreatePorts" + print("Preparing test case {}...".format(test_name)) + serv = read_config_file_section("services") + create_default_segment_table(ser_port["sgs"]) + create_node(ser_port["nm"], ip_mac) + change = {'change':'cidr','cidr':"172.16.0.0/16"} + create_vpc(ser_port["vpm"], change) + create_security_group(ser_port["sgm"]) + + # create router + router_id =create_router_interface(ser_port["rm"]) + get_vpcs(ser_port["vpm"]) + + # create subnets + # Relevant subnet info from L3_AttachRouter_then_CreatePorts (S4) + id_list, device_ids, ip_addrs = create_subnets(ser_port["snm"], test_name, "S4") + + # attach subnets to router + attach_subnets_to_router(ser_port["rm"], ser_port["snm"], router_id, id_list) + get_subnets(ser_port["snm"]) + change_ports = {"change":["subnet_id","device_id","ip_addrs"],"subnet_id":id_list,"device_ids":device_ids,"ip_addrs":ip_addrs} + create_port_goal_states(ser_port["pm"], change_ports) + + ip_mac_db = get_mac_from_db() + print("Test {}. IP/MAC in ignite DB: ".format(test_name, ip_mac_db)) + print("SUCCESS: preparing test case {}...".format(test_name)) + return ip_mac_db + + +# test case 3: L3_CreatePorts_then_AttachRouter (S5) +# Two nodes in different subnets and same security group but +# Order of network element creation is: +# 1) Create default segement table +# 2) Create nodes +# 3) Create VPC +# 4) Create security group +# 5) Create create subnets +# 6) Create ports +# 7) Create router +# 8) Attach subnets to router +def prepare_test_L3_CreatePorts_then_AttachRouter(ip_mac, ser_port): + test_name = "L3_CreatePorts_then_AttachRouter" + print("Preparing test case {}...".format(test_name)) + serv = read_config_file_section("services") + create_default_segment_table(ser_port["sgs"]) + create_node(ser_port["nm"], ip_mac) + change = {'change':'cidr','cidr':"172.16.0.0/16"} + create_vpc(ser_port["vpm"], change) + get_vpcs(ser_port["vpm"]) + create_security_group(ser_port["sgm"]) + + # create subnets + # Relevant subnet info from L3_AttachRouter_then_CreatePorts (S4) + id_list, device_ids, ip_addrs = create_subnets(ser_port["snm"], "L3_AttachRouter_then_CreatePorts", "S5") + get_subnets(ser_port["snm"]) + + # create ports + change_ports = {"change":["subnet_id","device_id","ip_addrs"],"subnet_id":id_list,"device_ids":device_ids,"ip_addrs":ip_addrs} + create_port_goal_states(ser_port["pm"], change_ports) + + # create router + router_id = create_router_interface(ser_port["rm"]) + + # attach subnets to router + attach_subnets_to_router(ser_port["rm"], ser_port["snm"], router_id, id_list) + + ip_mac_db = get_mac_from_db() + print("Test case {}. IP/MAC in ignite DB: ".format(test_name, ip_mac_db)) + print("SUCCESS: preparing test case {}...".format(test_name)) + return ip_mac_db + +def create_port_goal_states(port, change_ports): + print("Creating goal state...") + url= 'http://localhost:{}/project/{}/ports'.format(port,get_projectid()) + port_info = read_config_file_section("port_info") + port_dict = port_info['port_info'] + port_dict = json.loads(port_dict, strict=False) + port_name = port_dict['name'] + port_id = port_dict['id'] + node_name = port_dict['binding:host_id'] + subnet_ids = [] + security_groups = [] + changes = change_ports['change'] + device_ids = [] + if 'subnet_id' in changes: + subnet_ids = change_ports['subnet_id'] + else: + # Adding the same subnet ID twice because it is going to be same for two ports we are creating + subnet_ids.append(port_dict['subnet_id']) + subnet_ids.append(port_dict['subnet_id']) + if 'device_id' in changes: + device_ids = change_ports['device_ids'] + else: + print("Adding same device id twice...") + # Adding the same device ID twice because it is going to be same for two ports we are creating + device_ids.append(port_dict['device_id']) + device_ids.append(port_dict['device_id']) + if 'security_groups' in changes: + security_groups = change_ports['security_groups'] + else: + # Adding the same security group ID twice because it is going to be same for two ports we are creating + security_groups.append(port_dict['security_groups']) + security_groups.append(port_dict['security_groups']) + if 'ip_addrs' in changes: + ip_addrs = change_ports['ip_addrs'] + else: + ip_addrs = port_dict['fixed_ips'] + for index in range(len(ip_addrs)): + ports = {} + port_info = {"admin_state_up":True,"allowed_address_pairs":[{"ip_address":"11.11.11.11","mac_address":"00-AA-BB-15-EB-3F"}],"binding:host_id":node_name[index],"binding:vif_details":{},"create_at":"string","description": "string","device_id":device_ids[index],"device_owner": "compute:nova","dns_assignment": {},"dns_domain": "string","dns_name": "string","extra_dhcp_opts": [{"ip_version": "string","opt_name":"string","opt_value": "string"}],"fast_path": True,"fixed_ips":[{"ip_address": ip_addrs[index],"subnet_id":subnet_ids[index]}],"id": port_id[index],"mac_learning_enabled": True,"name": port_name[index],"network_id": port_dict['network_id'],"network_ns": "string","port_security_enabled": True,"project_id":port_dict['project_id'],"qos_network_policy_id": "string","qos_policy_id": "string","revision_number": 0,"security_groups": [security_groups[index]],"tags": ["string"],"tenant_id":port_dict['tenant_id'],"update_at": "string","uplink_status_propagation": True,"veth_name":"string"} + ports["port"] = port_info + print(ports, url) + print("Posting goal state") + post_httprequest(url, ports) + print("SUCCESS: creating goal state...") diff --git a/merak/testscripts/jinkins/create_test_setup.py b/merak/testscripts/jinkins/create_test_setup.py new file mode 100644 index 0000000..4315dc3 --- /dev/null +++ b/merak/testscripts/jinkins/create_test_setup.py @@ -0,0 +1,159 @@ +#!/usr/bin/python3 + +# MIT License +# Copyright(c) 2020 Futurewei Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files(the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import requests +import time +import json +from prepare_payload import * + +def create_default_segment_table(port): + print("Create default segment table") + url ='http://localhost:{}/segments/createDefaultTable'.format(port) + time.sleep(3) + post_httprequest(url) + print("SUCCESS: Created default segment table\n") + + +def create_node(port, ip_mac): + print("Creating nodes") + url= 'http://localhost:{}/nodes'.format(port) + data = {} + node_info = read_config_file_section("node_info") + node_dict = node_info['node_info'] + nodeinfo = json.loads(node_dict) + node_name = nodeinfo['node_name'] + node_id = nodeinfo['node_id'] + + for key, value in ip_mac.items(): + key_index = list(ip_mac).index(key) if key in ip_mac else None + node_info = {"local_ip":str(key), "mac_address":str(value), "node_id":node_id[key_index], "node_name":node_name[key_index], "server_port":nodeinfo['server_port'], "veth":nodeinfo['veth']} + data["host_info"] = node_info + post_httprequest(url, data) + print("SUCCESS: Created nodes\n") + + +def create_router_interface(port): + print("Creating router interface") + router={} + url = 'http://localhost:{}/project/{}/routers'.format(port, get_projectid()) + router_info = read_config_file_section("router_info") + router_dict = router_info['router_info'] + routerinfo = json.loads(router_dict) + route_info = {"admin_state_up": True,"availability_zone_hints": ["string"], "availability_zones": ["string"],"conntrack_helpers": ["string"],"description": "string","distributed": True,"external_gateway_info": {"enable_snat": True,"external_fixed_ips": [ ],"network_id": routerinfo['network_id']},"flavor_id": "string","gateway_ports": [ ], "ha": True,"id":routerinfo['id'] ,"name": routerinfo['name'],"owner": routerinfo['owner'], "project_id":routerinfo['project_id'],"revision_number": 0,"routetable": {},"service_type_id": "string","status": "BUILD","tags": ["string"],"tenant_id": routerinfo['tenant_id']} + router['router'] = route_info + post_httprequest(url, router) + print("SUCCESS: Created router interface\n") + return routerinfo['id'] + +# Second parameter is to indicate if the call is made for base test case or any other test case. +def create_vpc(port, change={}): + print("Creating VPC") + network = {} + url = 'http://localhost:{}/project/{}/vpcs'.format(port, get_projectid()) + network_info = read_config_file_section("vpc_info") + network_dict = network_info['vpc_info'] + networkinfo = json.loads(network_dict) + if('change' in change): + networkinfo[change['change']] = change[change['change']] + network_info = {"admin_state_up":True, "revision_number":0, "cidr":networkinfo['cidr'], "default":True, "description":"vpc", "dns_domain":"domain", "id":networkinfo['id'], "is_default":True, "mtu":1400, "name":"sample_vpc", "port_security_enabled":True, "project_id":networkinfo['project_id']} + print(network_info) + network["network"] = network_info + post_httprequest(url, network) + print("SUCCESS: Created VPC\n") + + +def create_subnet(port): + print("Creating Subnet") + subnet = {} + url = 'http://localhost:{}/project/{}/subnets'.format(port, get_projectid()) + subnet_info = read_config_file_section("subnet_info") + subnetinfo = json.loads(subnet_info['subnet_info']) + subnet["subnet"] = subnetinfo + print("Posting subnet", subnet) + post_httprequest(url, subnet) + print("SUCCESS: Creating Subnet\n") + + +def create_security_group(port): + print("Creating security group") + security_groups = {} + url = 'http://localhost:{}/project/{}/security-groups'.format(port, get_projectid()) + sg_info = read_config_file_section("security_groups") + sginfo = json.loads(sg_info['security_group_info']) + security_groups["security_group"]=sginfo + post_httprequest(url,security_groups) + print("SUCCESS: Created security group\n") + + +def get_subnets(port): + url = 'http://localhost:{}/project/{}/subnets'.format(port, get_projectid()) + print(get_httprequest(url)) + + +def get_nodes(port): + url= 'http://localhost:{}/nodes'.format(port) + print(get_httprequest(url)) + + +def get_vpcs(port): + url= 'http://localhost:{}/project/{}/vpcs'.format(port,get_projectid()) + print(get_httprequest(url)) + + +def get_ports(port): + url= 'http://localhost:{}/project/{}/ports'.format(port,get_projectid()) + print(get_httprequest(url)) + + +def create_ports(port): + print("Creating Goal State Ports") + url= 'http://localhost:{}/project/{}/ports'.format(port, get_projectid()) + port_info = read_config_file_section("port_info") + port_dict = port_info['port_info'] + port_dict = json.loads(port_dict, strict=False) + port_name = port_dict['name'] + port_id = port_dict['id'] + ip_addrs = port_dict['fixed_ips'] + node_name = port_dict['binding:host_id'] + device_id = port_dict['device_id'] + + for index in range(len(ip_addrs)): + ports = {} + port_info = {"admin_state_up":True,"allowed_address_pairs":[{"ip_address":"11.11.11.1","mac_address":"00-AA-BB-15-EB-3F"}],"binding:host_id":node_name[index],"binding:vif_details":{},"create_at":"string","description":"string","device_id":device_id[index],"device_owner":"compute:nova","dns_assignment":{},"dns_domain":"string","dns_name":"string","extra_dhcp_opts":[{"ip_version":"string","opt_name":"string","opt_value":"string"}],"fast_path": True,"fixed_ips":[{"ip_address":ip_addrs[index],"subnet_id":port_dict['subnet_id']}],"id":port_id[index],"mac_learning_enabled":True,"name":port_name[index],"network_id":port_dict['network_id'],"network_ns": "string","port_security_enabled":True,"project_id":port_dict['project_id'],"qos_network_policy_id":"string","qos_policy_id":"string","revision_number":0,"security_groups":[port_dict['security_groups']],"tags":["string"],"tenant_id":port_dict['tenant_id'],"update_at":"string","uplink_status_propagation":True,"veth_name":"string"} + ports["port"] = port_info + post_httprequest(url, ports) + + print("SUCCESS: Created Goal State Ports\n") + + +def create_test_setup(ip_mac, config_file_object): + print("Calling Alcor APIs to generate Goal States") + services = dict(config_file_object.items("services")) + service_port_map = get_service_port_map(services) + + create_default_segment_table(service_port_map["sgs"]) + create_vpc(service_port_map["vpm"]) + create_node(service_port_map["nm"], ip_mac) + create_subnet(service_port_map["snm"]) + create_security_group(service_port_map["sgm"]) + create_ports(service_port_map["pm"]) + + ip_mac_db = get_mac_from_db() + print("Goal State IP/MACs: ", ip_mac_db) + return ip_mac_db diff --git a/merak/testscripts/jinkins/helper_functions.py b/merak/testscripts/jinkins/helper_functions.py new file mode 100644 index 0000000..c7f15b8 --- /dev/null +++ b/merak/testscripts/jinkins/helper_functions.py @@ -0,0 +1,299 @@ +#!/usr/bin/python3 + +# MIT License +# Copyright(c) 2020 Futurewei Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files(the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import subprocess as sp +import sys, os, configparser +import json,time +from subprocess import * + +ALCOR_TEST_DIR = os.path.dirname(os.path.abspath(__file__)) + +def make_docker_command(*argv): + command ='sudo docker ' + for arg in argv: + command += arg + return command + + +def get_file_list(mypath): + print(mypath) + onlyfiles = os.listdir(mypath) + return onlyfiles + +def get_aca_pid_and_kill(HOST,output): + print(output) + kill_status = False + pid=[] + if output: + for x in output.split(): + print("Pid is ",x) + if x !='None': + print(type(x),x,"x is not None inside") + COMMAND = 'sudo kill -9 {}'.format(int(x)) + output = run_command_on_host(HOST,COMMAND) + else: + print("None pid") + if not output: + kill_status = True + return kill_status + + +def kill_running_aca(HOST): + #COMMAND = "sudo ps aux | grep {}".format("AlcorControlAgent") + COMMAND = 'sudo pidof {}'.format("AlcorControlAgent") + output = run_command_on_host(HOST,COMMAND) + #print("OOO",output) + if get_aca_pid_and_kill(HOST,str(output)) == True: + return True + else: + return False + +def restart_alcor_agents(aca,path): + for HOST in aca.values(): + COMMAND = 'sudo {} -d'.format(path) + print(COMMAND) + ssh1 = sp.Popen(['ssh', + '-t','{}@{}'.format(get_username(), HOST), COMMAND],shell=False,stdout=sp.PIPE, + stderr=sp.PIPE, encoding='utf8') + + output1 = ssh1.poll() + print(aca,"Restart output1 ",output1) + time.sleep(2) + output2 = ssh1.poll() + print(aca,"Restart output2 ",output2) + if output1 == 255 or output2 == 255: + return False + else: + return True + +# Check on a given HOST if a given process is running +# Return True/False accordingly +def check_process_running(HOST, process): + running = False + COMMAND = 'ps -ef | grep -I {}'.format(process) + output = run_command_on_host(HOST, COMMAND) + if(output): + for line in output.split('\n'): + line = line.strip() + if not 'grep' in line: + if(line): + running = True + return running + + +# Get the mac address of given host +def get_mac_id(HOST): + cmd = "ifconfig | grep -A 2 {} | tail -1".format(HOST) + output = run_command_on_host(HOST, cmd) + addr_string = str(output).split() + mac_addr = addr_string[addr_string.index('ether') + 1] + return mac_addr + +def get_username(): + return 'ubuntu' + + +# Function to run a given command on a given host +# Returns output on success, otherwise prints error code +def run_command_on_host(HOST, COMMAND): + try: + print("run_command_on_host: U = {}, H = {}, C = {}".format(get_username(), HOST, COMMAND)) + ssh1 = sp.Popen(['ssh', + '-o StrictHostKeyChecking=no', + '-o UserKnownHostsFile=/dev/null', + '-tt', + '{}@{}'.format(get_username(), HOST), COMMAND], + shell=False, + stdout=sp.PIPE, + stderr=sp.PIPE, + encoding='utf8') + result = ssh1.communicate() + print("Remote output",result) + retcode = ssh1.returncode + if "Segmentation fault" in str(result): + print("segmentation fault") + sys.exit(1) + print("Remote: ", retcode) + if retcode > 0: + print(result[1],retcode) + if 'Connection to' not in result[1] and 'closed' not in result[1]: + print("ERROR: ", result[1]) + sys.exit(1) + else: + #print("In else ",result[0]) + return result[0] + except Exception as e: + print(e) + print("Exception thrown when running command {} on HOST {}:".format(COMMAND, HOST), sys.exc_info()[0]) + sys.exit(1) + + +def print_output(output): + for line in output.decode(encoding='utf-8').split('\n'): + line = line.strip() + print(line) + + +# check if all alcor services are up and running. +# Success: all ports from 9001 through 9016 should show up in netstat output +# try for 5 minutes, waiting 10 seconds each time +# NOTE: Update the port list when new services are added. +# 9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9015 9016 +def check_alcor_services(): + wait_limit = 300 + sleep_time = 10 + wait_time = 0 + try: + command = "netstat -ant | awk -F: '/90[0-9][0-9]/ {print $4}' | sed 's/[\t ]*$//' | sort -n | tr '[\n]' ' ' | sed 's/[\t ]*$//'" + iter = 1 + while wait_time < wait_limit: + pipe = sp.Popen(command, stdout=sp.PIPE, stderr=sp.PIPE, shell=True) + res = pipe.communicate() + retcode = pipe.returncode + if retcode > 0: + print("Failed to execute command", repr(str(command))) + print_output(res[1]) + elif "9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9014 9015" in str(res): + print("SUCCESS for: ", command, "\n") + return True + elif "9001 9002 9003 9004 9005 9006 9007 9008 9009 9010 9011 9012 9015 9016" in str(res): + print("SUCCESS for: ", command, "\n") + return True + iter = iter + 1 + wait_time = wait_time + sleep_time + time.sleep(sleep_time) + + return False + except: + print("ERROR", sys.exc_info()[0]) + return False + + + +def execute_command(command): + try: + pipe = sp.Popen(command, stdout=sp.PIPE, stderr=sp.PIPE, shell=True) + res = pipe.communicate() + retcode = pipe.returncode + if retcode > 0: + print("Failed to execute command", repr(str(command))) + print_output(res[1]) + else: + print("SUCCESS for: ", command, "\n") + # print output of the command when debugging + # print_output(res[0]) + return retcode + except: + print("ERROR", sys.exc_info()[0]) + + +def execute_commands(cmd, command_list): + print("Executing commands in given list\n") + status = True + for command in command_list: + print(cmd, ": ", str(command)) + if(execute_command(command)): + print("Failed to ", cmd, command) + status = False + return status + + +def dict_clean(dict): + result = {} + for key, value in dict: + if(value == 'null'): + value = 'None' + elif(value == 'true'): + value = 'True' + elif(value == 'false'): + value = 'False' + result[key]=value + return(result) + + +# Return project id from config file under section 'test_setup' +def get_projectid(): + test_setup = read_config_file_section("test_setup") + proj = test_setup["project_id"] + return proj.replace('"', '') + + +# Return container 'ip_addrs' from config file under test_setup section +def get_container_ips(): + test_setup = read_config_file_section("test_setup") + return test_setup["ip_addrs"] + + +# Return the given section from the config file as a dictionary +def read_config_file_section(section): + config = configparser.ConfigParser() + config._interpolation = configparser.ExtendedInterpolation() + conf_file = "{}/alcor_services.ini".format(ALCOR_TEST_DIR) + config.read(conf_file) + serv = dict(config.items(section)) + return serv + + +def read_config_file(config_file): + config = configparser.ConfigParser() + config.read(config_file) + return config + + +def get_service_port_map(serv): + service_list = {} + for service_name in serv.keys(): + service_info = json.loads(serv[service_name]) + service_list[service_info["name"]] = service_info["port"] + return service_list + +def get_macaddr_alcor_agents(aca): + ip_mac ={} + for ip_addr in aca.values(): + mac_addr = get_mac_id(ip_addr) + print("Mac_addr", mac_addr, "for host", ip_addr, "\n") + ip_mac[ip_addr] = mac_addr + return ip_mac + +#This function checks the 'AlcorControlAgent' running on a host and returns its mac address +def check_alcor_agents_running(aca): + for ip_addr in aca.values(): + if(check_process_running(ip_addr.strip(), "AlcorControlAgent") == True): + print("AlcorControlAgent is running on {}".format(ip_addr)) + if(kill_running_aca(ip_addr)== True): + print("Running Alcor agent on {} has been killed Successfully".format(ip_addr)) + else: + print("Running Alcor agent on {} couldn't be killed".format(ip_addr)) + '''mac_addr = get_mac_id(ip_addr) + print("Mac_addr", mac_addr, "for host", ip_addr, "\n") + ip_mac[ip_addr] = mac_addr''' + else: + print("AlcorControlAgent is not running on {}".format(ip_addr)) + +def get_gateway_for_ip(ip_addr): + gateways = read_config_file_section("gateways") + # print(gateways) + gateway_info = json.loads(gateways["gateway_info"]) + # print(gateway_info) + for gw in gateway_info: + for ip in gw["ips"]: + if ip == ip_addr: + # print("FOUND GW: IP = {}, GW = {}".format(ip_addr, gw["gw"])) + return gw["gw"] + return None diff --git a/merak/testscripts/jinkins/ping_test.py b/merak/testscripts/jinkins/ping_test.py new file mode 100644 index 0000000..46b0c25 --- /dev/null +++ b/merak/testscripts/jinkins/ping_test.py @@ -0,0 +1,220 @@ +#!/usr/bin/python3 + +# MIT License +# Copyright(c) 2020 Futurewei Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files(the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import time, os +import argparse +import textwrap +import json +from helper_functions import * +from create_test_setup import * +from container_ops import * +from create_test_cases import * + +ACA_BIN_PATH = "./repos/aca/build/bin/AlcorControlAgent" +ALCOR_ROOT = os.path.abspath(os.path.join(__file__, "../../../")) +ALCOR_SERVICES = ALCOR_ROOT + "/services/" +ALCOR_TEST_DIR = os.path.dirname(os.path.abspath(__file__)) +os.chdir("../../") + +# Builds the Ignite and all Alcor images as configured in +# alcor_services.ini file +def build_containers(services_dict): + container_list = [] + mvn_build = "mvn -Dmaven.test.skip=true -DskipTests clean package install" + container_list.append(mvn_build) + + print("building container images") + services_list = get_file_list(ALCOR_SERVICES) + # segment_service is bogus service, only used to pick up the + # internal port number of vpc_manager, which is 9001 + for service_name in services_dict.keys(): + if service_name == "segment_service": + continue + service_path = ALCOR_SERVICES + service_name + service_info = json.loads(services_dict[service_name]) + build_image = "sudo docker build" + " -t {} ".format(service_info["name"]) + if service_name == "ignite": + docker_file = "-f {} {}".format(ALCOR_ROOT + service_info["path"], ALCOR_ROOT + "/lib") + else: + docker_file = ALCOR_SERVICES + service_name + docker_build_cmd = build_image + docker_file + container_list.append(docker_build_cmd) + + if(execute_commands("Build ", container_list) == True): + print("All Alcor services built successfully") + return True + else: + print("All Alcor services could not be built successfully") + return False + + +def start_containers(serv): + start_containers = [] + for service_name in serv.keys(): + extra_args = "" + if service_name == "segment_service": + continue + service_info = json.loads(serv[service_name]) + run_container = "sudo docker run --name={} ".format(service_info["name"]) + mnt_and_image = "-v /tmp:/tmp -tid {} ".format(service_info["name"]) + + if service_name == "ignite": + ports = "-p 10800:10800 -p 10801:10801 -p 47100:47100 -p 47500:47500 " + extra_args = "sh" + elif service_name == "vpc_manager": + # expose internal and external ports in VPM + vpm_info = json.loads(serv["segment_service"]) + ports = "--net=host -p {}:{} -p {}:{} ".format(service_info["port"], service_info["port"], vpm_info["port"], vpm_info["port"]) + else: + ports = "--net=host -p {}:{} ".format(service_info["port"], service_info["port"]) + + start_cmd = run_container + ports + mnt_and_image + if not extra_args: + start_cmd = start_cmd + " " + extra_args + + start_containers.append(start_cmd) + + if (True == execute_commands("Start ", start_containers)): + return True + else: + return False + + +def stop_containers(service_list): + command = "sudo docker container stop " + for service in service_list: + if service == "sgs": + continue + execute_command(command + service) + + +def remove_containers(service_list): + command = "sudo docker container rm " + for service in service_list: + if service == "sgs": + continue + execute_command(command + service) + + +def main(): + extra_wait_time = 120 + config_file = "{}/alcor_services.ini".format(ALCOR_TEST_DIR) + config_file_object = read_config_file(config_file) + services_dict = dict(config_file_object.items("services")) + service_port_map = get_service_port_map(services_dict) + parser = argparse.ArgumentParser(prog='ping_test', + formatter_class=argparse.RawDescriptionHelpFormatter, + description='Busybox ping test', + epilog=textwrap.dedent('''\ +Example of use: python script_name -b build +-t 1 : L2 Basic +-t 2 : L3_AttachRouter_then_CreatePorts (S4) +-t 3 : L3_CreatePorts_then_AttachRouter (S5) +''')) + parser.add_argument("-b", "--build", type=str, nargs='?', help=' to build alcor services provide :{} as an option'.format('-b build')) + parser.add_argument("-t", "--testcase", type=int, nargs='?', help='Test case number or {} for all tests cases. Default -t 1'.format('all'), default="1") + parser.add_argument("-s", "--all", type=str, nargs='?', help = 'all tests cases') + args = parser.parse_args() + print("PING TEST ARGS {}".format(args)) + + if args.build: + if(args.build == "build"): + if (build_containers(services_dict) == False): + sys.exit(1) + else: + print("To build before running the tests, use '-b build'") + print("ERROR: Quitting test\n") + sys.exit(1) + + stop_containers(service_port_map.keys()) + remove_containers(service_port_map.keys()) + if(start_containers(services_dict) == True): + print("All services started Sucessfully") + else: + print("ERROR: All Alcor services did NOT start successfully") + print("ERROR: Quitting test\n") + sys.exit(1) + + container_names_dict = dict(config_file_object.items("test_setup"))["container_names"] + container_names = json.loads(container_names_dict) + aca = dict(config_file_object.items("AlcorControlAgents")) + for aca_node,con in zip(aca.values(),container_names): + print("Busybox container cleanup...", aca_node, con) + busybox_container_cleanup(aca_node, con) + time.sleep(10) + + check_alcor_agents_running(aca) + time.sleep(30) + + if(restart_alcor_agents(aca, ACA_BIN_PATH) == False): + print("AlcorControlAgent did NOT start successfully") + print("Check the target nodes and run again") + print("ERROR: Quitting test\n") + sys.exit(1) + time.sleep(60) + + aca_nodes_ip_mac = get_macaddr_alcor_agents(aca) + print("ACA nodes IP MAC pair::", aca_nodes_ip_mac) + + if len(aca_nodes_ip_mac) != len(aca): + print("ERROR: Alcor Control Agent not running on some of the nodes") + print("ERROR: Quitting test\n") + sys.exit(1) + + print("Waiting for Alcor services to be up and running...\n") + if (check_alcor_services() == False): + print("ERROR: Alcor Services failed to start ...\n") + sys.exit(1) + + print("Alcor Services are up and running, but waiting for {} seconds more...\n".format(extra_wait_time)) + time.sleep(extra_wait_time) + + if args.testcase: + if (args.testcase == 1): + ip_mac_db = prepare_test_L2_basic(aca_nodes_ip_mac, service_port_map) + elif(args.testcase == 2): + ip_mac_db = prepare_test_L3_AttachRouter_then_CreatePorts(aca_nodes_ip_mac, service_port_map) + elif (args.testcase == 3): + ip_mac_db = prepare_test_L3_CreatePorts_then_AttachRouter(aca_nodes_ip_mac, service_port_map) + else: + print("Invoke {}".format('-t ')) + print("ERROR: Quitting test\n") + sys.exit(1) + else: + ip_mac_db = create_test_setup(aca_nodes_ip_mac, config_file_object) + + aca_node_ips = list(aca_nodes_ip_mac.keys()) + goal_state_ips = list(ip_mac_db.keys()) + print("Deploying containers on target nodes") + print("ACA nodes: ", aca_node_ips) + print("Goal states: ", ip_mac_db) + print("Container names: ", container_names) + busybox_container_deploy(aca_node_ips, ip_mac_db, container_names) + status = run_ping_test(aca_node_ips, goal_state_ips, container_names) + if status != 0: + print("ERROR: Quitting test\n") + sys.exit(1) + return True + + +if __name__ == "__main__": + if (main() == False): + sys.exit(1) + else: + sys.exit(0) diff --git a/merak/testscripts/jinkins/prepare_payload.py b/merak/testscripts/jinkins/prepare_payload.py new file mode 100644 index 0000000..92f2ce2 --- /dev/null +++ b/merak/testscripts/jinkins/prepare_payload.py @@ -0,0 +1,97 @@ +#!/usr/bin/python3 + +# MIT License +# Copyright(c) 2020 Futurewei Cloud +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files(the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import requests +import time +import json +from helper_functions import * + +ip_mac_db = {} + +def put_httprequest(url, data=""): + try: + headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + } + print("PUTing http request") + print(url, data) + response = requests.put(url, data=json.dumps(data), headers=headers) + if(response.ok): + print("PUT Success", url) + else: + response.raise_for_status() + except requests.exceptions.HTTPError as err: + print("PUT Failed for {} with error".format(url, response.text)) + print(response.json) + print("ERROR",err) + raise SystemExit(err) + + +def post_httprequest(url, data=""): + try: + headers = { + 'Content-Type': 'application/json', + 'Accept': '*/*', + } + print("POSTing http request") + print(url, data) + response = requests.post(url, data=json.dumps(data), headers=headers) + if(response.ok): + print("POST Success", url) + if 'ports' in url: + valid_response = json.loads(response.text, object_pairs_hook = dict_clean) + get_mac_for_ips(valid_response) + print("POST RESPONSE: {}".format(valid_response)) + else: + response.raise_for_status() + except requests.exceptions.HTTPError as err: + print("POST Failed for {} with error".format(url, response.text)) + print(response.json) + print("ERROR",err) + raise SystemExit(err) + + +def get_mac_for_ips(valid_response): + print("in prepare_payload ", valid_response) + ports_info = valid_response["port"] + key = ports_info["fixed_ips"][0]["ip_address"] + value = ports_info["mac_address"] + ip_mac_db[key] = value + print("IP_MAC_DB = ", ip_mac_db) + + +def get_httprequest(url): + try: + response = requests.get(url) + if(response.ok): + print("GET Success", url) + return response.text + else: + response.raise_for_status() + except requests.HTTPError as exception: + print("GET failed for url", url) + raise SystemExit(exception) + + +def get_mac_from_db(): + print("\n\n\n>>>>>>>") + print("IP & MAC stored in ignite db", ip_mac_db) + return ip_mac_db + diff --git a/merak/testscripts/jinkins/remote_aca_build.sh b/merak/testscripts/jinkins/remote_aca_build.sh new file mode 100644 index 0000000..d1e2f03 --- /dev/null +++ b/merak/testscripts/jinkins/remote_aca_build.sh @@ -0,0 +1,86 @@ +#! /bin/sh + +# Build ACA on ACA nodes from alcor_services.ini +# Triggers a remote build on ACA nodes listed in alcor_services.ini. +# + +ALCOR_INI=alcor_services.ini +SCRIPT_DIR=`dirname $0` +SCRIPT_DIR=`realpath $SCRIPT_DIR` + +ACA_DIR="repos/aca" +ACA_NODES="" + +ACA_REPO="futurewei-cloud" +ACA_BRANCH="master" +ACA_COMMIT="HEAD" +USER_REPO=0 +USER_BRANCH=0 + +get_aca_node_info() { + ACA_NODES=`sed -n '/^\[AlcorControlAgents\]/,/^\[/p' ${ALCOR_INI} | grep -v '^\[' | grep -v '^[\t ]*$' | awk -F= '{print $2}' | tr -d '[\t ]'` +} + +if [ -d "${SCRIPT_DIR}" -a -s ${SCRIPT_DIR}/${ALCOR_INI} ]; then + true +else + echo "Missing ${ALCOR_INI} file, can only run in alcor/scripts/busybox-ping-test" + exit 1 +fi + +while getopts "r:b:c:f" opt; do + case "$opt" in + r) ACA_REPO=$OPTARG + USER_REPO=1 + ;; + + b) ACA_BRANCH=$OPTARG + USER_BRANCH=1 + ;; + + c) ACA_COMMIT=$OPTARG + ;; + + f) DO_FORCE=1 + ;; + ?) + echo "Usage: $0 [-r repo] [-b branch] [-c commit] [-f] +-r repo : repository, if using a personal fork. +-b branch : branch, if using a personal branch. +-c commit : commit, if not using the HEAD. +-f : to force a build even if there are no changes in remote. +" + exit 1 + ;; + esac +done + +get_aca_node_info +NC=0 +for node in `echo ${ACA_NODES}`; do + rm -f /tmp/aca_${node}_build.log > /dev/null 2>&1 + NC=`expr $NC + 1` + scp ./build_aca.sh ubuntu@${node}:${ACA_DIR}/ + ssh ubuntu@$node "cd $ACA_DIR && sudo ./build_aca.sh $ACA_REPO $ACA_BRANCH $ACA_COMMIT $DO_FORCE" > /tmp/aca_${node}_build.log 2>&1 & + echo "Scheduled build on $node" +done + +# check the status +SC=0 +for node in `echo ${ACA_NODES}`; do + while :; do + if fgrep 'Success: ACA machine init' /tmp/aca_${node}_build.log > /dev/null 2>&1; then + SC=`expr $SC + 1` + break + elif fgrep 'Failure: ACA machine init' /tmp/aca_${node}_build.log > /dev/null 2>&1; then + echo "ACA Build failed on $node" + exit 1 + else + sleep 60 + fi + done + if [ $SC -eq $NC ]; then + break + fi +done +exit 0 diff --git a/merak/testscripts/k6/alcor_services.js b/merak/testscripts/k6/alcor_services.js new file mode 100644 index 0000000..4217cb5 --- /dev/null +++ b/merak/testscripts/k6/alcor_services.js @@ -0,0 +1,234 @@ +var alcor_services = {} + +// [services] +alcor_services["services"] = {} +alcor_services["services"]["ignite"] = { + "name": "ignite", + "port": 10800, + "path": "/lib/ignite.Dockerfile" +} +// vpc_manager internal port : 9001 +alcor_services["services"]["vpc_manager"] = { "name": "vpm", "port": 9009 } + +// Segment handling can't be routed through API gateway but has to go +// directly to vpc_manager but other vpc related requests will have to +// go through API gateway. A segment_service is added as an alias of +// vpc_manager internal port for handling this situation. At present, ping +// test uses it to create default segment table. +alcor_services["services"]["segment_service"] = { "name": "sgs", "port": 9001 } + +// subnet_manager internal port : 9002 +alcor_services["services"]["subnet_manager"] = { "name": "snm", "port": 9009 } + +// route_manager internal port : 9003 +alcor_services["services"]["route_manager"] = { "name": "rm", "port": 9009 } + +// private_ip_manager internal port : 9004 +alcor_services["services"]["private_ip_manager"] = { "name": "pim", "port": 9009 } + +// mac_manager (virtual mac manager) internal port : 9005 +alcor_services["services"]["mac_manager"] = { "name": "mm", "port": 9009 } + +// port_manager internal port : 9006 +alcor_services["services"]["port_manager"] = { "name": "pm", "port": 9009 } + +// This can't be routed through API GW +alcor_services["services"]["node_manager"] = { "name": "nm", "port": 9007 } + +// security_group_manager internal port : 9008 +alcor_services["services"]["security_group_manager"] = { "name": "sgm", "port": 9009 } + +alcor_services["services"]["api_gateway"] = { "name": "ag", "port": 9009 } + +// data_plane_manager internal port : 9010 +alcor_services["services"]["data_plane_manager"] = { "name": "dpm", "port": 9009 } + +// elastic_ip_manager internal port : 9011 +alcor_services["services"]["elastic_ip_manager"] = { "name": "eim", "port": 9009 } + +// quota_manager internal port : 9012 +alcor_services["services"]["quota_manager"] = { "name": "qm", "port": 9009 } + +// network_acl_manager internal port : 9013 +alcor_services["services"]["network_acl_manager"] = { "name": "nam", "port": 9009 } + +// network_config_manager internal port : 9014 +alcor_services["services"]["network_config_manager"] = { "name": "ncm", "port": 9009 } + +// gateway_manager internal port : 9015 +alcor_services["services"]["gateway_manager"] = { "name": "gm", "port": 9009 } + +// [AlcorControlAgents] +alcor_services["AlcorControlAgents"] = {} +alcor_services["AlcorControlAgents"]["node1"] = "172.31.19.133" +alcor_services["AlcorControlAgents"]["node2"] = "172.31.21.202" + +// [test_setup] +alcor_services["test_setup"] = {} +alcor_services["test_setup"]["vpc_id"] = "9192a4d4-ffff-4ece-b3f0-8d36e3d88001" +alcor_services["test_setup"]["project_id"] = "3dda2801-d675-4688-a63f-dcda8d327f50" +alcor_services["test_setup"]["tenant_id"] = "3dda2801-d675-4688-a63f-dcda8d327f50" +alcor_services["test_setup"]["network_id"] = "9192a4d4-ffff-4ece-b3f0-8d36e3d88001" +alcor_services["test_setup"]["cidr"] = "172.16.0.0/16" +alcor_services["test_setup"]["node_id"] = [ + "1112a4d4-ffff-4ece-b3f0-8d36e3d85001", + "1112a4d4-ffff-4ece-b3f0-8d36e3d85002" +] +alcor_services["test_setup"]["node_name"] = ["node1", "node2"] +alcor_services["test_setup"]["subnet_id"] = "8182a4d4-ffff-4ece-b3f0-8d36e3d88001" +alcor_services["test_setup"]["security_group_id"] = "3dda2801-d675-4688-a63f-dcda8d111111" +alcor_services["test_setup"]["device_id"] = [ + "8182a4d4-ffff-4ece-b3f0-8d36e3d00001", + "8182a4d4-ffff-4ece-b3f0-8d36e3d00002" +] +alcor_services["test_setup"]["port_name"] = ["port101", "port102"] +alcor_services["test_setup"]["port_id"] = [ + "7122a4d4-ffff-5eee-b3f0-8d36e3d01101", + "7122a4d4-ffff-5eee-b3f0-8d36e3d02201" +] +alcor_services["test_setup"]["ip_addrs"] = ["172.16.1.101", "172.16.1.102"] +alcor_services["test_setup"]["container_names"] = ["con1", "con2"] + +// [L3_AttachRouter_then_CreatePorts] +alcor_services["L3_AttachRouter_then_CreatePorts"] = {} +alcor_services["L3_AttachRouter_then_CreatePorts"]["subnet_ids"] = [ + "8182a4d4-ffff-4ece-b3f0-8d36e3d88001", + "8182a4d4-ffff-4ece-b3f0-8d36e3d88002" +] +alcor_services["L3_AttachRouter_then_CreatePorts"]["cidrs"] = [ + "172.16.1.0/24", + "172.16.2.0/24" +] +alcor_services["L3_AttachRouter_then_CreatePorts"]["ip_addrs"] = [ + "172.16.1.101", + "172.16.2.201" +] +alcor_services["L3_AttachRouter_then_CreatePorts"]["subnet_names"] = [ + "subnet1", + "subnet2" +] +alcor_services["L3_AttachRouter_then_CreatePorts"]["device_ids"] = [ + "8182a4d4-ffff-4ece-b3f0-8d36e3d00001", + "8182a4d4-ffff-4ece-b3f0-8d36e3d00002" +] + +// [L2_basic] +alcor_services["L2_basic"] = {} +alcor_services["L2_basic"]["security_group_ids"] = [ + "3dda2801-d675-4688-a63f-dcda8d111111", + "3dda2801-d675-4688-a63f-dcda8d111112" +] +alcor_services["L2_basic"]["sg_names"] = ["sg1", "sg2"] +alcor_services["L2_basic"]["device_ids"] = [ + "8182a4d4-ffff-4ece-b3f0-8d36e3d00001", + "8182a4d4-ffff-4ece-b3f0-8d36e3d00002" +] + +// [gateways] +alcor_services["gateways"] = {} +alcor_services["gateways"]["gateway_info"] = [ + { "gw": "172.16.1.1", "ips": ["172.16.1.101", "172.16.1.102"] }, + { "gw": "172.16.2.1", "ips": ["172.16.2.201"] } +] + +// [vpc_info] +alcor_services["vpc_info"] = {} +alcor_services["vpc_info"]["vpc_info"] = { + "cidr": alcor_services["test_setup"]["cidr"], + "id": alcor_services["test_setup"]["vpc_id"], + "project_id": alcor_services["test_setup"]["project_id"] +} + +// [node_info] +alcor_services["node_info"] = {} +alcor_services["node_info"]["node_info"] = { + "node_id": alcor_services["test_setup"]["node_id"], + "node_name": alcor_services["test_setup"]["node_name"], + "server_port": 8080, + "veth": "eth0" +} + +// [subnet_info] +alcor_services["subnet_info"] = {} +alcor_services["subnet_info"]["subnet_info"] = { + "cidr": alcor_services["test_setup"]["cidr"], + "id": alcor_services["test_setup"]["subnet_id"], + "ip_version": 4, + "network_id": alcor_services["test_setup"]["network_id"], + "name": "subnet1", + "host_routes": [ + { + "destination": "172.16.1.0/24", + "nexthop": "172.16.1.1" + } + ] +} + +// [security_groups] +alcor_services["security_groups"] = {} +alcor_services["security_groups"]["security_group_info"] = { + "create_at": "string", + "description": "string", + "id": alcor_services["test_setup"]["security_group_id"], + "name": "sg1", + "project_id": alcor_services["test_setup"]["project_id"], + "security_group_rules": [], + "tenant_id": alcor_services["test_setup"]["tenant_id"], + "update_at": "string" +} + +// [port_info] +alcor_services["port_info"] = {} +alcor_services["port_info"]["port_info"] = { + "binding:host_id": alcor_services["test_setup"]["node_name"], + "device_id": alcor_services["test_setup"]["device_id"], + "fixed_ips": alcor_services["test_setup"]["ip_addrs"], + "subnet_id": alcor_services["test_setup"]["subnet_id"], + "id": alcor_services["test_setup"]["port_id"], + "name": alcor_services["test_setup"]["port_name"], + "network_id": alcor_services["test_setup"]["network_id"], + "project_id": alcor_services["test_setup"]["project_id"], + "security_groups": alcor_services["test_setup"]["security_group_id"], + "tenant_id": alcor_services["test_setup"]["tenant_id"] +} + +// [router_info] +alcor_services["router_info"] = {} +alcor_services["router_info"]["router_info"] = { + "name": "router1", + "owner": alcor_services["test_setup"]["vpc_id"], + "network_id": alcor_services["test_setup"]["network_id"], + "project_id": alcor_services["test_setup"]["project_id"], + "security_groups": alcor_services["test_setup"]["security_group_id"], + "tenant_id": alcor_services["test_setup"]["tenant_id"], + "id": "11112801-d675-4688-a63f-dcda8d327f50" +} + + + +export function get_alcor_services_info(key1, key2) { + if (alcor_services.hasOwnProperty(key1)) { + if (alcor_services[key1].hasOwnProperty(key2)) { + return alcor_services[key1][key2] + } + else { + return "key2 none" + } + } + else { + return "key1 none" + } +} + +export function get_service_port_map() { + let service_list = {} + if (alcor_services.hasOwnProperty("services")) { + for(let service_name in alcor_services["services"]) + { + let service_info = alcor_services["services"][service_name] + service_list[service_info["name"]] = service_info["port"] + } + } + // console.log("service_list: " + JSON.stringify(service_list)) + return service_list +} \ No newline at end of file diff --git a/merak/testscripts/k6/create_test_cases.js b/merak/testscripts/k6/create_test_cases.js new file mode 100644 index 0000000..d06faeb --- /dev/null +++ b/merak/testscripts/k6/create_test_cases.js @@ -0,0 +1,145 @@ +// MIT License +// Copyright(c) 2020 Futurewei Cloud +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files(the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import http from 'k6/http'; +import { sleep } from 'k6'; +import { get_alcor_services_info, get_service_port_map } from './alcor_services.js' +import * as create_test_setup from './create_test_setup.js' + +// test_case is the scenario section header, must contain +// all of the subnet information. Different scenarios may use +// the same test_case setup so to avoid confusion, passin +// the scenario name which will appear in the test output. +function create_subnets(snm_port, test_case, scenario){ + console.log(`creating subnets for scenario ${scenario}`); + let id_list = get_alcor_services_info(test_case,"subnet_ids") + let id_names = get_alcor_services_info(test_case,"subnet_names") + let device_ids = get_alcor_services_info(test_case,"device_ids") + let cidrs = get_alcor_services_info(test_case,"cidrs") + let ip_addrs = get_alcor_services_info(test_case,"ip_addrs") + let subnetinfo = get_alcor_services_info("subnet_info","subnet_info") + + let projectid = get_alcor_services_info("test_setup", "project_id") + let url = `http://localhost:${port}/project/${projectid}/subnets` + console.log("url: " + url) + + let length = Math.min(cidrs.length, id_list.length, id_names.length) + let subnet = {} + for(let idx=0; idxTyRjTY!J}5`~Uy(zjy}f5{50inUKY9gI)qA8y2LSsq%XUb7M^K z%pX34v$=>~3oGmStShB|Lyg0}Simkz0iNM3PJOAHqS5w6no5nkiXa^9w4?oAEOWtn zKaeGbNy_R^ZIw-K1#QgM+JPrKhbSCui6+ewG1;bwdk4=37v%hnx z)Q|thLm@#Mt*eLkBN7XKt5EMQjp-S!4nQ)!Sn6i!D!(XBGULi3gHY8?(Lmv6x=LJa zsB<%uVGQj$3r5k(RbYzK#s|D;^6x|EzU8NIoYOKN7Qfx!4YIjR=3o264)5V6_FANY zr8kt2hkVXjNpHj#?yUT-Hu;$?-n8E*fvl(A-_9$%uaSq)P_&C4q+u)rTIQSgdgNx7 zJEde$6B>t_omb>sGaBh;O3?0N$2TJ*M;cU~{06Hi+VXdH!O$_ zCI=>r@zK*%2UY83FMJnAfa8orvrd1*7B5{_=<+Q_{Wm@=M{NkVVL?E4IY2;A-X_J> z*1?$3*w)C|<}HN%iCxFq+A+(07~YH%uY&tt>aB>>T`eEPVk=MzH5N`CnPj5LJ>0>h zPAC)@P-mD|=ICJyeQO1^(5as$`urj|b(ViVY5;n?g_8Al7XZ=^#LatdLs* z8XVV&>HX5A4i`xyhv6OX>|&7D;!bZ{haU|)CtQ*Ju+zZz(_Z?f5c_A7P=ZTg`6y@@ zEl3x%m;t8rCr)%rl~PmR?L^M>9a>$;8+?@VPHzFZ!aVpt? zc;)u^PM44KA8%ErTNa=173?KejGq?ipLOsT29}x6JFyJDMy{CG{CrlM%(hqcJ!Zh| zsW`)Uz9G%oaNw57d`O`!^pzVKe?9}I>_nhIw0A`+h7Jo%Ub=A#QpRuGn4+?)(ahmGov9WUAt=RD0hLUj!O4IVqkCE^ zxZOmLv11|mBu2i+DxK0va7RHT)*V3~SZdD|U0{CNJ5eELViWTbd#`f{OVvG=5{q?r z7g{3QrG2%H1O6wrE$|Bp9TFn;ST#_uxTB^C#Wk$DU0%-X~CV^q%$rgaE<`$I=8j2u?zE*YF;dzMvV0JidWyB z7l*vdm?Y8m1suTkCG6r3!y>d#Mrlu^3Y{+RvThZ!czK^sPY1UiD>DUhZ7k*jo})~o zc7fsM{u^p}6q;=A*mLc22U5={gmtcHm0m`Kv2eTtyxn&rdVo8If8O3nyLJe z-CTFtiu$UR#x&6d$V^dYDalqDtuztN9qUv^M+_^2Y$%j4zR+!*mHbZ_`i{mAzhl$B z8+d}i+_gf5hhl-#TMhELvhw}*jabz^wyCR9b;Z#IgP{XuGG<#d9qBmP8$lEy%~}3M=!>bX-~u`j-gX2y5qQ=9%^5$BZ$UX0CKN0eWe6oDeT-T zm#;LYE?a@5yaYJbuu zu?>Log;PsHf5qqggvfkV5-CoLlPAUL%Ye&%ko~!!5++Y>BKz@IE~>*zC2}I!Px6-V zmh#0F6Xeapj(JV)5y!7qs$Z|U(ON+a1-#5JKJ;b>(dksN09l}~xDXC@i2L|+n)TzY zd^ml{{eSs729Wn=&I_)o%AtD1nbs!_r-hNLeJeGd#Vjy(#{hmY)mMe#5NNqxyY6Ev zQyAMk(1=ws(KeMeX@Akjb3Xvr3~^0gh?@GI5l5~Yph~W#Ada9xs+F|J3IC~gSYrxJ zOgHUwqK2}K0o`EfTFthzAxt95Pz+@2S2^7o^x{4^7;66_E#)ArBE~D3N@WT?Rc&m> zixS7*n+WLB5O~Qb=D}X^O zPhB*2UzNN(yzlS#d3d3*pb^WGcip~wGj^B$nd^iw6T+Nc)F@hb|w6yj163jjy#LM_wx;;ieV?$Yn`>yu6=k@@x*ed=z|6)+bu5FQn)iOdK z1uW=SnaU^`jE82Jr=m#O#`6#&EP$|k+x!uXuw2S+dmeqh=h{!@9JosVJVu}1AKyw( zH;h76c*woa&pJ30bb5c8Oy(w(dP1-g_imLEnT=&K5e&Ab*rF$kqXcT(VOsBFUp?H!6qV{gMjN4QHFiqAUbaI_W#YqCVBC}`5h63JvqJI0VZVSy+VC3Da%Ci88Dnk_qHEhp zu2`lF)}0|dSsK`;{Ok0E_~yWt3)}87(h7>Zmxk0NJ$5)>PXql)@x z%Y6JwYOV}G-V}uP=WCgS1^@6oPD+i~P||PX69!atV+~2BZy%HNaoJbd=q*YJ>1qz* zD&(h|GVq=uyvWx-2$wMdt^3nJQ#jNIVVRq-(|2X?2`D?il1mVj@*jQvXtbh zKb9DeCaRza`_Hv}bEoZ%cirn7m1C=X@Ej;4;`_w^r0uenvsnBAh9y`pCjZVv!NqNq zDbX@`22EAv3(@IO=7=`K;h-g|GN>G7CL*jO}-{NSUL8Pdg9C;aktd0cqqz_Nk3 z`v)jc7-fszB5{2bp(VM?m_;Ei$ukqFNs7sxM}(C)aF}xc{Y*t}yUT*L#;-#hWmu2^ z^1XF*b;K1zdOI^BtaZp!PCmO*0mWYo*pFIJ08KWC^1S&m!_Wc~V!7P&2J~jt;>xkr zlTqzd=x`_prvPxou&~;oknd2a&E2FgJ5o_ooT73DLf`4w;}~w}kkj&&9nW0@VStXs zgB%%a(xYh%?8i()%dUZ}Q-qqz&MJjR_2lfWG+_neuLj~$mQG+bBun-#(ghdG*e(` z)H#H#IkT44d-a4#PQ+(P7Kv0&TLL^_1W?E3LR`xO-JPH}rJ`oXjbC`oa+^=!;pB8L zocI=@;Zb3B5Z z9uWlCf3!GRJ6xNS9Ptoe;*u`C4@mL#_$i`UNa;m zDx~VBcf8sLI2>!)x36@BIG84mGj#?=un;IGSlUB;|1OD^pXV%tm7kLxNK331C@K*) zcJR5@-+b!T0fL)#tMPm|Qor-duZX((*A5e)9zS7BclX^nV+ax`G_fzpU!F8U1q1}v z*VhwmDk>^o6m|l*kw1VV3xfRRsRe}DTpao@+j)C|pe|@n_EB8E&j0wl;Y8$Lw)^J+ zzh>}Ip*M2e^gnjBCmRRsf4t}ngB(yHljMN%*IoC!#B_6aA3VvXhg{97Xm1@KI@wN| zc_Mh2Zp|FvD|l|Z{k{b|@Z?}s;&rx~BM6TC8{!iIvs{Tgi?g5WiaBToW~Pvd`%9S> zm*g0l84Cq4beBOwyZy6NlxGoYfKx~lXA8j%sLk_*w%6BMYuvWO=zO2l8>~*mz0#hd zAIG|KSQ>>yX$ud%FC1(HJ4p5BH<2$S%&;n~ohDg?9x?x38^K!eRuCru_7Z-;se**A z*;GqX7LTj0(b=|oRDoCjs+lW~&#CtE;E{EfNfOo3io1+r6)h+bWB&)EEfUfAc(+N7 zhW+d))Y#870bs<y|)u^Ay zxLLQ&;`}oP4;0J$Sye}SNPGDMwg?U0K`8rR=_Z%^iRB9qoUdR{5MTJzRyq(_NHxpr`EIPy-^51nl4|gP870`v~sTJJ+rs7f!|M%cPK$$=AU0EZE zEIZm;zs%wQ0c%oee0ur21 zK8a42$2O_{ap%}8i}@q7O}?T0QJ~r+nBZ1Ql$Ub(vYOqs>2(6bZ$dqYgl%OnjMeR& zOsz>VKL=WxLMXEis zIvjymHZy3(azpL&6JDL!b9*RMPVeS=m+5gZ4_m>87%pmBO*b`n;qaio&~l??-x&9h zT}v#Kr8~H?Yw&T?yhDOz-{$I_NO`qj{{-WXTZx(GPP10=W6h7jN7p`cl8%ie-IJFc z1g`FNJOdB>N(zX0F^zulnY)>&cCDcdQuUGZn?bwZ&RdW*2+SJBryc?Y^ zA3L{wb3o&MvGKh|VQ7Zixav_%{;+eu!)^J^uS%Vebd_X}v9@x7y-W||wr93$JhIHM z?NOB!s_VLYw`n;Vm&YMUb^L|*HqWqW=TG-+18(B&$E5qGzYeB>V`@SevPy>LIbp7a zD1BYf#9t|YReIj+3ZmRaz9O4^(t^}9cAAP9rnoE{TKMkRn$GX8+W^4gLoJqS)$XiM zjeCX|y^;~u zl~9ZSLPxhbB-Z^Sy4I}?&F52Hb3j@QkGq+zyUhGa)-osaKqhxj>BOQrF;e&BK3#AWyxVGH9eNvu_XuN~8%3qCFvaSc>z)v5r; zoU|5LYr%|BwQW)0wqPxHcE3-|>fT!s^Ba_y%b43GgJy~-{BaHS-6z6spr{Qe+-x7N zM*AVrT)d`pn{@vP_VOW7*FPudezqD46nch~35YJxyINYvvrBd!pw6U^QC{YCbb|A8 zO6fi3@KdwWoO*PD(Hl-NjD00?k#o|-9qlX02yyi5$E;+jXIPq3DQ2pp6Vu&8cW_i3 zmnvp8gF(dNU~>j5fQ&RZ}x4vS8dr=-W3+4vjT0Zy-HpLORwAY@p4z`ZQH@a zc*o%imsb{iimk#;1OH$1Ce9b(I*@&}$E&?YKDOXH822jQC0FHE`dO-G11#4@=JXJO zVy|&EgcJc23JNUX1U_ZNZkP&B!4!uyJP{lyNgVH{)y@?3AiI_VUY8V-zC)`-qta8) z;iyP7fAdkVj)lUbo$Kk8+T!^vFvsDBbgxIMY8Hde9}aPlMiH3H_u0XUDNah9<7MhZ zxNvQX@j3QTqfo8O1WPDFBo4x~M~7v}+T0*#tr`s!`dC+x&+`0$@d=~y6c@v*K&U~K zzZ1C?YA$PV+rK-0l!nplIK4LxM;8;mZ9};lM5j*?15if+@DuZ2B6Pwrw?GR_5!nuEp%({yAUlEXN0`yrsp0MEhC2faL}mDO25V%>xiXN4=4FeBVV`=t2{oGIGNOwA$OV-Ca_$wtaV zIQVWR$rSs%^P@{yR`^kI-g^2~ilihMf5A*=80zATB1qEC&Z3ei% zs^oj@XgnAlI2fAU2bg6Wa1S}OC=FM46G66e;#m@PuUK)@NaJ8&UVcB96e!&krTghNaNS6}8|(*g zUO#1K^Ta44Ci7tomLu2mu~wnsgiGPe#LB(H=-heSFixj13FB*m?PWwYOQdI`3K>=U zRFu|B#rAF~8EEC>p0S>-Uc+jg91P_GRFe*4)+f*W8l0ty0$zL?{H?<7(<}YcYonfx zFmDKj^*wx(le+MEa(7qiDr{yTiCq&YODGwGk4hBE}8eh|S?-3uy6>gR{Gtkkfc=_iTrM`RT+(d@i23+ygUr0E?&e8oh{+Wh2CeFAicBxG1Y7xcrEW8*f?t7 zK@6P9=GS{h0iv}TZEIE2@tE5MZGTZggM$J1=nJ%-AbRJpppmx0KH&QN{F6890mPt6 zL>2{3&}Rb__fR*voQHv@?5?~Ch|TGXdZRR;fd0X#2C!!NiADHcuy}oOcKD<;bhL+m zc<`<-K=~OK^V2TA$(al0nLGrhx~T&Am{w;NcU@R_7Uy<4)(C?BWnpgRDeAn5-NMsg zF-tXjyf)o$j7oFQi@m$X5T8kc&Z(Wn#}J?8uh`YeS&PvutAK6h;Rc^Pci1sl|=^lBJ9M7Zbrt~bHeRf>3}`TD4eT?gh>#O7HBYn@NBw##l7lquz;8|9r* z-W?ItT(v>_j)IYQ;$p}1jpzUsXVe~A{I?&M>^`}f=giz0h{<8#l9NM{Dd3*o>sqOsBC(^*iKstDE}`l zym8`Fg^u>m0LsIFrx1%*DzC#IrB$b79AqtL)I~D@kNC@5{&1#5QeQy}Klwrd-LNKV zBhxx-8r{)*LS$-~?pe#Fc>tF|fJDCuQBTrt0V9 z`=T~Yc;NiSC9jM4<-%E}UgvpnnzeYp7hZi^w}+A0SN)**yZWfz zujzf~ld>c0u?pn_5%2_*w;grZPi~yIY7+M027kYthZt48**lFbtFMjv`4Bw#_*wnrD16&G9UvU&ksCZ|JoH`7m9_>v$qSAAUU+FuL%JXKT3EaAGac z?W5DdXc%j?Y)sf9(~IU~Jg}bD zjxyzZJk#=Yl)I#Jhu8;piD3<{Lgnu6xBmnSc-!6G$mzjZ+Gj^-bC~x!$gw6dE98j) zAm!Y*Y0C*pA!~e6WpG1X_FC0J+vf}S0(n;IDWGpHZ)AR)XskQyi&UbC%FOtP*hGOT z*Ruf9Sjc?m(VE>PAq0}V_EFq8VT5AH?Xmr_g;i-I3QfVER7R3dhG7^(Kj$sa*{Ii$ zYTBEYwts`Ypb>cFv_o!?rLGD3Oq>A|B^gvayy_rvF;=H6xCDKC(}Mo@+0aw5#*K2x zV4T{c3w3@Vb)i_g@}tm9&EOKFHfyBo0$A4Y(>F)c0L)6)`EHX^o*(x=S}?DeK&GSy%&?cW7iCY?7fr*QR4QQ|9Q1+GZrR?}>`!V5>4cfs)*h(Ag9Oo@f zZTe9BCcyGBC+_{kqU(zwk%?$l6`}ohc%cqTZ?%hvlOGfjD^^+5@b8fjP5t#=Uf9c^ zE~%I~rB3P5c9`c5wl$NH4A1z2O8e)){;F6~^A#3hiJ-_Jd_r+?*-j zq19jwI~;R6JQc~(*w6;AqbBJQT7og)ZKuybGw!)(TJynxSqUn@hvsQdC|GWHb%9jt zS4=pm6H53F0C1ol`w6!-=Gx)+QU+`Eb%)JQU6blfGH(;;7wU8QpLcmy2#~oJ@7%IZ zZs+*;xDSsfxaNT?>S4@&#j8#F+^8)z5uGgDn16#5oi|EpPET#!Cbw=%sEBsG>Ebq) z@esI;c`y+JG^&rMSJY34fuv^Rt$NB9g7WhXSEpB{UxthlLsOwq<8xogwHsj8b{xY3 zlKIJeJM*Cj6m90}@UQj3^Tbzom^{FQd}v;lUob)V&^iPHv_CpFQG0r6;jev8_R!gx z*5{?yOD$+)pRA##6PRU`Vcizm)n4A{8#=D$)Co5W-PS!j>B1S#A5c1sCp`&uNro$- z_aW?Qp|foh6F^ZtE_xE6fyek3T(kqooUY8}vsm$lVBkwp>UQJC;USloFQxb_L`nDr zyDmkQB|Pj#Yq8~Pj{F`zs%TUM0Tqg)$LI39z1R$x@<66ks6l39sU$gv+7WP@a9m@K z9v?Oiw}l5SUQGN`vr5__F6wp{iC8P=x*M81ueLlTULCqj=F{l#-a6WB$3G(F1oVgH zx?^_5lWLrsI#syC^%kbGvv%R@$@`x(AT~lNcUD6F-PZGeKHX41}lcnsl zWsgNQyJ0yX`GRZ>`ygF4dM#amrUsZHAd2TRbh9GZy@NcXObveWOmFf?W=XH-o8n1( zkjW$d2af*=%67bdQ_SYiX&pDFMaGK6=TlVoKON7L3i^3cRwjM8Jr*ps3VLMbohd|E zXHaXI^oWJ=HdocE6-;$&&L^eu&(az*-D<852B$(XNaLw0R(WE%Sckkdn=ujp2%M>m zUs>r(@3L4?KI|`CNS+jSP*GQ5eV6Ag&NYi|kll4qx!B#>(mWj6yv}+VTr}QK&c~?{ z>@GhEHEXh7T6a=$eC1sLp3(W(8qb;Fq!7L9;jGD2N*{EU=639%rme>WW8 z&M?@7Xdww9mHR2&CPCR=gt;@gSUWPew69C(t!3h^;(ErvetXVrrtCB84u7n!rA7*& z8<>DUJ8FBC&y)9|NkvJ=meIYKRbExP0?@{OP+@ZqVWokSt(*9*rXZek9kjutI+XLr zp@BirP1iJnYJq1D^BJ%JF%)8X-ER}4!$Tm(Z{G~}48wm?lyUbSbh=fNh*&QbYvre^ zNmng*l3bGa4qLaK70fs_j6WH1m$SR;%gBT zff-J2*XjzGlFu@D{_#}hN;Ic?$f{2g(-ng^GiQo#!@IQKR}kWDHTQRnJui3p2)#OD zW#*rxdrQ{Vj2$akBt6pnvwt2xcf0>a46{W>GELnL@-3kc}rt-{zOgq^KID;z07Pk zdG8b3_?~E4Mu#t+N{mfTOcGdnTHidq6|1c40`6G4duVt|z7J1A^8r4!37*l*C2Y~h+Gstp9$dfWine1WH^e{SHiviy7B z{+r%2$h|T9{0#eth<`be|9Bo6U!Iuut$N|@RlXwcLiXv@>3YZOv&yu5h?P%Js_|{X zGb~iN$ft^Z&)I-dwLzsf2dL;LFTg=?gAi}pdYvKf(+o>FIa{}&gn&V{LN^>G;(^|j zZ_e7dI-xkvz}hi4US{}{@Y`9s63ih(u1}<^wwZ$57_Uq+HzFL;Ld5!{rzUQt$*`yS zLn(_rbNW6}B9?##$h$en&K7)2sx}{gdj6vGn7^3Tu7kQ94)1q)S!ryDpVt)9aS;LW zyZlqB_)|4VMW_TC?Rl#j^B;GNNSurs?vLh<8=0|j_7jhTkGpK`|FF$#=qG`P3SzPj zmiQrcU6@zFdM>}8(Zb*`)$np^5>2fPIQL?($H$y+y5oCPVV1kEow*FTM6KXt($}Be z6`^j!_lP$?$N9B6js)_~V$x%L?FpP5FzhlS>QV>XEuL*QxwGY<+0?QZo+ezkVqyj~ zuSWtV8t^3WN5fH0ESc+O)Q+FFqbr=4Dc~6F`(%>RmtAZ^;P69C+!%oRm$h~jFVK+) zdPkqkZKy@UBDQK2P}<&!CcmKnY31}|x=<%RI|Dugyf?o0GxSfs?pHd6ZZxY=dxN2T zmpF`*uij|9V7l93E^qaKtBaE-d@_RD;!;Nc&-8Y3F|kJq`Qc?023u%CL89Q|K9T|! zRMPO7zxMoQ$#kq$!#erFO##)3HIGH5_a;t&<*}Pf+lh(mN5kdjSF|;Np=-!;6%P;g z8ZMfT#zzei*47nSeSJfWx@m&@1JPW4?2^%ig6119hEkk@TBTn9;9Z6^Kxm0}L5q8@ z0FAY?=F8f^E8ds&z3k$h;!=lmJ##UiM1GBzk|(d}5@pi<{{YV*tSIg0?RjSufhdp7 zUR||7LGR_rxwGC5)qyi#Ku*H&!y)!7oR?zO3b_O0;|8>naha&|FH2nOp-!NB1ePqhZ0a=NQ#~QFY_Gr`Ix}%k) z$9FW%J{$Jm?4jV~zwLZ9X(b81-M(6Fy&%FUNUOv;jz*~bt%`Y%mtC|oc(#|ZwLhPl z_|lks{t&JoA9g=+rEYSeRofQ1y{&uj9=DVXRga(c=|Ikw{qG=2^?ANU7Go!UOv_rW zL!s=rwOp6D*et^!mY#Y{w z2R`;EKjqhhTtVII^hcI0raA2sfuWV}EP#N6b=x7fp`WO;iI=zH4pkZM!Rh!l`v>J3 zZhC|!?)>y_Y=UjIT0TyrZ-YCAN|{l*j&za!56ROKw52~=u8B)4Al9?f?Ggp}nyG=! z+VP72ct$?6UcmmS0niR;YUI%L>|$v6sLAizbdSY%-t^K4L%dyJ(t48+djs#vF7R4Z zW?BdEwlcZVhb-UWdWQFUBR@(PR;eEH+FsvHPWuh1w2N*(3-@Y&)BeOm?A!SQF?X7A z%Td0Ot9x7{{Z3hcs1D1!N)Nn9^jl76KcGnXDc^qyqQn>r9C;zc7n<%cHg$z` z7XOXh5*l?}>=3%d@n`_>eFPfi9~%}Fl8W2S-uA01yR^0`R6)QcfcHNNRsZCIw|yE^ zC+CXJ85RSC;<#Q)`>3K9ACXt)f^mLw=YJy6x_TH&N2+}(iFBnUJma@ZE=GJG;tw&I z-sB26i=ObLjT&~h+K*b%UhaD1J+PJiJSeR$%}5X|c^|=$FVwhRBmgw3eT0EEsX66C zhfhtm2aIGhmNR*jOUv~$q^C?8jB_Sp&*7Y$Mj{0{)&_N-CCgh{+uH;8X9>p`#E2)@ zK44Hfek29aUAF2-o!c=6KH*7hh9R=gKQM~at`Ha-P{7xxB^dNI$X0QWGI1q;tFFK9 zo;@t_E|I}LOuVy=KDMHiv2Ji``i;PxM{Dw0R5kNv?ZF1ts(XBkWIM{Y+l(Sfg=66_ z{>pciL-9d*8}Am6SW%BSDVRCQb#eS)uUsplEs*wRh~yc;$KYCTt;0B6tW8va^~<>{ zD(<|N+58S?Z$j(zmHf}hXEiD5zKa*S*VU*gDT&V?eiw8jFtAtomSUtn#Iv#UWhWU+mZnRRiH_aAq?+di-Xh=Z^4Vq?8yhi1kzaO2>#*kZv&ey^FH!i)6g8<$iU{E%v*!ftUK1bR-hoRL1C1Qle*8~8WYcuiRE-B4eJY5)X=yi9-2_^m>bnTcvBnBGItjfz@d>&oLgTkXy z4SXMspvfV;h5Y~HoA=RLu)ueq_x$-;7iaJA@NoYqo0c;Z>_7VO-U*~K2*NiXn1$ZF z&ye1?T}Uek|KK!EK>v;e{RiLuziPpw&~g4iL0$i_Hno|cyhwf>pp;UP*@9+tPe$X*}?LBdkgYUdL}9&W5tGmJAKQ2FF9URzkt{M;TQ1mySb# z_~*S(jW%YNwkKR0uSFrg%6~brT!Eckh7$#2p%lq)3w+#b1?(2nhT9>i{>P6Sa1D`SDG@voJX}_Owg)whm3Aldtb+kw^86IW5 z3F9lxOuehNh#$+R_9x^HzQETlMRt|H-VMeMjcqvbvh^fX5H`yu`*AXC=UZt0Hzw5Q5De+pCp0X2@kZyx zBf(~zn|Rb{1m-UQ5inaO9K5r$2?@44LM~XLEk4}K_$mXkUYT;75iv(=1W2)gq z)a}n$r!(#LS)F=M#r+<*P!Hd+RNU)hk3=~7 zGThd)@Sk;^zo#+Ti=Z?l$CkK(o1zO+JB4Z+MZ~*Uk4VcO1=3T-dUJyO0(ypW+1Ai2%ap$$FI~NK%x{)iljT~K)K{|tVuT8F3ra$XS#U!d z2SO~ox-rSo81N9(j8sOeG7_#9pg-AId6Ft-w9_09Mxlj8u)4~>8ubAzJ?{-Z;~2|j zRvnw}cZ=%~Y|_At)$B;a7_(L|`lt*VPnfzNsaXJ8Kb;Ga^<>ZW0}^Q|C?RdWDVMPd z))p#gg}jI3-|aj-{vQJ52)d?$3L|*AgyuDNjeESh%;!K3_+zn+0;bHQP=-S}Iq{5m zF*8p7wZH}DS=bq)39T7k>*9_wH8?^nd=DH|`zQ?{Jtf6KX;9*2bGlcbgS@nZ^_`!q z%oZ4m$`k*YP2?bC*y{~03dT2@B^`AqZx$bLNd^h|*9R1y+hAI;6C>PQy>2zJjn@G@ zc1^I(Bj@tH`h7o&rB>{%${wx-WcWZYmGIFi+a1mXsIY6z4EW{I1_O==gwoJCbcG>Z3m@l zQ8gJ-;@dgALUyt;+Eus8W8(1;&yDrX)idc?(6*(k^qy+dCRc;FBc-eMpDVSt(rWmF z!-yeSxfe>)ON|5+0L~Fh@i8f>XoT|8;J!!TF+I=ay22TJgzC`PoYFy)m_i;a{UPfN z#k4XwW8c#QuCt?p3YTT=4V{B>O>oit%CFRcH8M^8&$_(~8i~$JR~883$_8l5ls*ew z)dp&UN~*DZ`5KVgIfjcc?|tt-)Q4;m&?M|SLflWnR%S7zfy;P^Sa5}W*rR*rYDG$x z7S&^1WQN}s@0g(J*KaW4WIt(D9OgoVyA_gkH@OqVZa-)O^$o^OS=6c{`}Y!?LryqE zL|Bh0^9|E(7IuE^g|2gs8Mb~E+J6yIM{+Qor}(@+26fW=qtKfTIcuZFP+uB92|L#k zrW$v6%^l`N;9XOI%Q^da|c?KITlkmM~C>YHq|dc2k}2;dYI#Xx?xjMP*ztK%N~<>t8Wv(G>_`IBMX*5u$724%-Eg+D z-xV;zVKSR2z(E&viE3KLXwFDU=aojGAE^s9gGXiI3nkmola!GG<*R!eHGHVU0_y+{?Rt@83VRkN0*a3s zEn6n8=&g)OZE*5F1~~}xR=dQOjq?qb5Mz41ER&RHYAysRn0)UDd>>u=@< zCMfOyq7DpK4}YG)DL^0oLd$`^0QXnsi36H%I6%3pH~AP8k4Ni4Y$cRxUjCp=f?Qii$DC85iX<6hYQJeZS6eOSTm+=!>sE1=%nl3 zjq!)W!Z>G!WRFs{AkL@tmEno|`KQ52rq;g4gP^@U?1Y`xVNsMFOd()+U%Vlnk*SCy z>xH~D7snc)Z_^sX}7s`UGS;v{^mFJ3$2oq z3v18P&RUQA1=RI&cZVJJXC7)HmVG8nUBQVKeE5q7({Ff0m1^QSYDKFpk+k|AeeHCV zTX<*EF}nM6U7z8D+y2Vfk&!_yg?`g$&3JZEv5?vE9$hOjAudMh9?>{@rg+7G`h+Dq zC^MXwO`H9fw#Y^Amz9T(x4_F^d*B8C`{T=@95?O>U-=GU%ir;T8mg)kbpD7fQ{ zX(!u;s;YGWZ@}2^W<`$Ma5X#Zzp%+pc~DZw=QpC)6k1wZ`mraQwlNEgQB_c!q2&-O zVrToF`7GZHE8Gcn^&_MgYGIi8e~Fo$VsOX-?fcUTdw)q|-u7{8LAb;SB?Bo9$}@88 z{%c78&d0nyJSu4F0D0)3scs7iCwOxwAZq2Cc?)_LP`MhPzIiF}Rt6^Qk)pp%*89N;* zn}<7QtH(+z=QGZ$x7a7Yu6sX#BGFthQ(TgG@Lv*l6l-xe3mnKd1QJpVt8;QJEL<{mbXusFnu?fLofqp5T(VhtHPczq3wmm z^m^YlUw}VI?o3g=yCQsARA$Yd;@9ca;_fhUk%WPG*IKPU)ie1V2l^~|-u;||`&KOb zHtZ~H-Ib+I_B&$|b*}B=(*2aOmmVhWW|};MnB67iyFXOW7Q7%Q`V1T-G4XOC7%u~K zJqlf5$J^S1Ni0+L;6|()c$6Mq)PB2kBh%YiA-pUNGzX|Z4(D{F+AKjhT0AoTqi52`t^pcXp=_KTmCDC#mKPcN@CuzTTlSgNjxL7v z-}W_#9!1Qh*Jn|k0)AK{=+RtxCwl}KB@gE_uHQSJ(IsoQO<1qJIL+uHp6Q&?Sy8$Z zo#aHuV;1p(Y4jNckgKja@ zrASqCnRhs0)b<#AAtKU4)(XzXBC0<7z1VuOy!uA9`=r(!hpA4t!Ar(LqD}CV2y>^( z7fifoWX`tb&$!tZSVUd-_40X?svod(At`ahqkZNocxZ#0`!DNdSi{+GbZ#FWn-H3l zE^iGiKFCX3u>7ss_>WF!AAlZUJ8eb;&iT!#gWg}~dEwCqy7X|KEDY_Fwjp)HP;?Zi z7t>lQylto<7da8rvRb6fuQqbeN5sM~luq05`n6PRvY8i&b0G~BzyT(E~6 zAPkAd_stI}`b6U+&3%~fx)zX=(#DE3DGD4Oxl}t74GP81U6eh#?VUS_7G+>KUkdZ) zZL~u?<{zI&9Hnx47OcYu@>i#z-0=)S;1l^*#`#0TPZj=C+s*gLsDbf~ zgkedN4#|gz(w+IMP1+m+72QoZo4z!7HO5@I%g50w*F8RV4@@GQ4WLIH$-YJweCvZI z;yTOs{H+G;%plARCb(lRFyj~zP2DCET(+vGgr9G}G52fz1Bg*p?Oq-fl^sByoas8Y zeA4DFFLso;;ti(c%W?rSWj zx&Erhr@@MBU=f+XdFwK!{#8XKFuq)`p|>h?PQ}s)+$H@3OMlLMld=fg6%|iD8)RJY z48>PYQToePd(%=6O2d+sd%B3H&KTFtkK_Omk@KYB(;`Xq=EM89{SnHnE~ih_n8@Ps zdwDlCzisamU;cD^6C~%o=!p$6)xg&o0aEMi#1;mgv2inVr$Bf_+@@@X|<1&R<>< z9FAqquEx&88h?B-jX=G80=VXS$_Jab$9i4{daB#;cB$Xk*JoC4j#5n(UoJ~LuI@0n zxz=;J5AMJPGwW}b%p7o0?{R+JNBLJk?1X^*ZZzSrXg~^P)jvM{?QXYnO_~T;nE|Sb zqeBFMH5js`UY26iX{6Ju(c6YI*KkQ`-b6r+xwF;YnF?M2eqY--rQZjP^pDWiiZlXX zUz8`ly-a)+fj;I1ORzA`!6DvbvE9s9@ALHXh@lSfme#xU3aeM zlt#y_aA>z4-lOHnvjZ|3^c(sRm2{v)JYV-pH3b@o5dAy8GRVBSiqFG{+5wHluinJ5 z7q%}>rK(T#Yp#9ruf4xN3#4?_FWX@FCajMb4T7tgU%e=tGv@amNptiMKb@-{z}eN5 zy@jo)H-BnXD?Gumwzy@tNB}{d&C?O_Y^wMxy=Hh2?yc+SSX5kK-xx20^*nkZ7HY$N z-9ta8?ZHKN)5u}C4vDW3&|K#S2LK=)V?mc%cHl}3&tNND+Gl|7-P+zyjNhb3i~P0% zBk1mKa~@P`7WDPg6VM0|*$DpS;6eQ8{35aIH1aRpR<*elHlGDIS$!NnZv7H-t?mC) zOXnEy;cT5%@am%aE#(!f8d3C2T=!bSdp`7*rzx^qo{dDnD$FOkNvYl#Tv&Y#t>1%c zJsJIdlq#@F2U{pc2NJ)QpDlj;f2e!wu&TDVU0B$ZpeWJ;QWDYv(kZ2McXxNEfP%D0 zNeR;3-Ac3Q?(URs);AZ*-r#A_m9^SSaZ!e)|hiV_jAYKq0Hw1)y^$n zb+NZ6ACavi3_N{Y%MbdXqns|I)cfiRW_V#c`55~GPdF0X z9LPD42h>U?&5`XLSjaEFQpVOIlf~NqY;9R}*E!36onO9wy0`5#jnA}OuSxMrrw1)v zL$$E}ksdb^<-yzU%+E&+p`M_|c2Dm$)|IarA1+xy+TWV2MOaH3)ZdwVCz4agb zr(z9ZkOb%n(kOM@W{GYe{V@St7uI#{$AaV;Tzz(Srd%1H$h?PN0uBdHCitsqgIDnm zUu|s&Ie}*_KF20Y$Z7(*(o7vazX5l$oMS4+HJHC|-`{8C0+f)o%)*G*ggQ$dkIBy` zK4CJsYrxvPWe=1HVGpnz@Gp|t0KeRs6==?G(`F@aX!**P%b2!>v$U|>Fl0H>Ii%+` z(w}3(^0gr!yukvtsaem&zH=4iBtOBpD;^?v4Y#_7>m8?=u8i=% z2C)|xDuPXC9CMB7!WFw+75BRb=sm91cF-#MslktDWUbf5cx({&u`;AV z8<&3%fab@O{S3dWJ;S7TA9=y$jY775s<>ht`6bu=fW$1InGqdo!WT|jY-)4350v7fD8Pg^GLa8Rl&HsxL~L9yyee{_qlhb)j4s!-a!Q7+qS ztib46MnV^l_=Sa{DU&!)Uxbatf!+P@S%12xjP#nDv;A>N)DG*(M;@DD%KIbRY8EU? zY~l`dPlJ}%bKe_ezD@sg6i1Z+Jwx|ueNN$_#0~N&k_ac6M-iCqqUaq#pAwIosWf$Ok zma?ncCrr*L8&SYe7aL^sxDtSgvERGb)D6GxB#9wP>gx&19jGHA6T1J({*S3yfdyPS zrcKrwIpoS&p($P*G>Q$*0evI`_O*67&^iN}5u?2y_OV*jyZxm=GUq!!MnIPv2AoU$ z$uHS=Vkk8I3)}Ju#PMN|Rkn4v_uqx;qUg?tKEPJnFnkF>>s80C8gQ6_n?6TA{ntIj zBmEAGQ3o0_(PkgO%61#*AdFl2!+k^Dd48enw2@$t-`JjZ`CMI)T*f7En>kFql;fGf z8;Pht2ON0ToLR+bB;Nf1GNJ~BFQ}|ijHth7ayS2P8N9UtVEI*qS5pf4&%J(Y$U}qw z&rkY$68+zLX#D+wx6UL(1Q5Eb6@~vNxeURlVBX_&jkTTp+Us0>Q#5UDvRjxA-~^v}+CFeTa?JH` z4$EDj;?{RRyj*h~RDa-N9R*l&Nj@SSYc$ncTs$0sC}n8T)YkrX{mO&OP~}38D{V$j z;fma*f=245PxiTtKa_rG(N|>5vS+PF-SljDfnfVfjiYIvQQGdClRX?Pc>)FVfEjsz zYVMvHg?jUL;qbhj+Vt1JAQ1b?!HuWkdf1;5eToVoes;DdAvCqMI2NC2_|tir%g1W2 z=k3mR-wZ)n&9x=>)a2X9_QKSHsTx6*Dnbsp*G^ZK%5Y}C3A^URq{57vYBaDyu$cyP z9f6&&*Vgk2lvs+3d8$Xg>USZqQYhV4<*Ft&g1Qxk`@vm_U0EY$<_A4vSv6m@b^p0M z{%G|OsPFuVrs<~0XX{&&0hl1kJmL?Oeca0e9Ju)>E6v#ZJeoV=D$5jQ(|6$RbLb+5 z{BUCHB+Em^Aos5h+A2TA3^6RXkRzX*{_&dcd0wF}G}6%1O|*?7oHTr?5Kul^{+rgC@4!Kz8*fe>F;Jxvf=cM|-51TMM>R7Hn1q z=GE4UYAE|8EJhf|P=uN2EP!i|?+^F?D6;PwpRsf(VC-l6ZrqNC_-K=V9{G}+^XN2j zsRYi38(xm;Q6$b{wLi%ZYik;KnH|%{7QnPC(3}US=sbjT1s8?pnmK zZJWT)^vtfeX$^V0pEp-l4ewY?cM|*D&zWC5(U<#7G+afqa)4@HZQm1h$Q~!VQ(b-) zYoe>?XV`bGIEs-Sq|5ftoMHtnEwL(!-8AFu4*YV|EE_D1L42Fao7r;uAi8LM4AD-pdnxJJ*{)PI^rLq-J0Q*v-0kqcKjW|nw&+QV{@sklJ_}U0Bo=6 zuP#)3QU1lzDPB*1MT{9y)dl;d*ZjzKv8d9Pn?Alsq1R@!3dRe0r`mROJ?45D+jb0$ zg04Y?kZeg!Pqs$2nh%N5YLVv|u&N&1Za#W=+ZBhi*1>`cPE@XHWqSwDDDA9+em>Z%F7(3xoRlG1RN8jOvj2c zt%wwJVe{~tV|Xtq%dbXrp4r569{GqA_9_qWAI%0X`4{!n@3Ivse_?-9^s1(j0{x3h za-DZMG-t<4ZA1nkx7>>9eA(>L)7P+~W6@!Jj2kQXeD5SKZH5cFvqWG}o25OhLIYNa zb%}!cr%yAmQ{98xySWKzYgglQN)s&iWiw&F$@HkoMr-ORbiZ8kIc*`tI9!>*+cc;c zgi*1=)h};&#ORB&)O(bl9|!tANjv}ds^LHQ6s_SU9KotE1;mNp}UF1dr)j z6Cd)9=yo@q97`M~ZtIT%V)N?e;<-G{o3JcE$+N{`*De4!B(sFV}3 z><_R$-mEZcg$>YlMM%(MXg}rQJY=2AHOH>7)}==rEm%~k;*K;KX=5f@)vFUcUW?)B zO_wN^NtAs_6sFhxLeWTIO9WHf2;*`=v-7A&Qu?AL)W#vB_EojqV-mk$aJb5v^{Ce9 z=5W9=Zr7+`cV!~UZLnZ@AG!sr#2KtUAEC3Sw7htxY!*>?CcPmFc=3;fG;^JQsVzJz{GwO{ z1p+6Q;Xoc0!A^#nN-AEywL_c3y%cckGn27QazJ6b`0V90o_$vFFN&_7JOBM+cy=;*3E8wbY-=Fu#Cy*VU6MJ^{6kf zeR(W%IsyaNB=WE^LOT+pBY&5^;&b1FF*I+V+6K1}%6yP}(nhRRr{#>D z)H7%}s74UNWo=a0Zji@rdplv(QBAf;ea9te63#47M0GLPBce6^n{s#T8^yj@nBuQ( z^x&P^JjUlonbO^f)>kcYK&>ZWqkb{Baq_k%7UO7`_y zf7!H>jHpWR^{{C3eo`#vdBGYOR55$igGF)|@5+1PyNXNlP<@vNp_~#}zJbEF*>@+- z0^77zt?!7*KkVAk+E;OmV{p(aW!kZCY^W(9eB*#Zhwu~K=iA@Q39dAx!mh{TO3GYz zc=D_We=veJky9wnnSvE;c*LXm2zn3C-WhqE6U~Tf{*&F%*dv`WipHLmndCvWoc`tV z0!8l8?2>!svHiNZcMv`TfhHzEn@|w*y96uhVLRFDSh#aUnD>gq(5MoK&i1N{$2g%g z*MGp|dcVHIRUUg5lzCU?P(kOZG0$73fjMkYb*FAlrvy;K0H;F^-0*^XQ!@`t{Sd6=PLm#rr79fttG~LBiWShxc~f zbWA!iJSza3@oxaw&$GaW&^%Ahd-bjz%vyG4XE8#G>v2gZhRkGEg%Y$Iyvuuo zcO~xPUGX=GJK~qJxZ>$xdP6hJ9hgLk)r&sayB7ukKj1X0R)Qn1)qQA~Uur!jIcnQw zaW$@mc=``*tvHVUoEMt#P}WwP?^+>-roUG)OH1H~xN&iazdO6LNw96rR(d?cm*rxMiLjTuU8Bd_zm#q>z>z|=YNi^QI>|q zShxPpRfq#E_T*F8yDG`%3}%f2-P8s<;VZ(^JXp`$@&z>zLfB>$1>_zB0&`fw z(Oyv}in6Y`Wk1@ST3=dqyHCe-MDmvPp9uxLdMA}=`+!Z@fN;-jQm~I?Z)~3M7WRo_Qeche)**qK0@Z%cpqTzu zJ1AQQqlF$Nf?9YxzyIvS&qMl!XOb%~!0oa}s^Z{)EnfQhpuTgLjcCc#p`y-F)h9-t zyarRx0Ue5P!bi3m(u(_!X=r^wIu1)=mU#l=s_dCR1%@XJ+B5R2m^0 z;q1TSbw4a`pVAwc;;wE=J-m%?RC5|6vQ`S?{B}FLjb$D;9UOy1>ta5Bc@K_u?of1F zJ0hm`y9hZW-K{O(shZ2uizpp?G~G0wQb%weZOX8*C&LM%-It;m)+I1SA6$fQ5QS}7 zHFkS94id;^H~OYaDf?+~1T>*Sm$}`n{?N82gNNd;JWMVIwFvdXwUWwV&s-rWoq<5^ zz{}NdfhivpOus<~*wY)^(Frw^CRsP99Cx>soVDW+ivsfS*Z@{@s~%= zt&wQlldfRlqqNa*yk|>2#Y)A7nVx_##-*0A1mu`sqKYif1S;suoM%2en7L4Xub=UtPwLR!+7X#U$-WjTYec@#=}J2C=)D|34xzz zr{~%mfP4=g3TcWCHg(wk@^aFdJs)glY=|wO9>cRtWGM8U?V}j7pD73F^Tq~b`<{%A zV=>Seu*xZvWKFU<`-H?ngW_}I{4!LvDqXVk_%HjPz~wf};d^C8vp8Efy2_e=FsSg} zy#g#M{)f%9>VX;;*1M!5IPm)!=t<*L$_p&28^;|0MjT~WDA=W`?8I?vnYjl+${{8H z4N`9V$eV3wfd%J;>tECEuBzxhGL)du6=>+6Dww=&jkUxY(H{BGNavEaN9$bI(_NCs zT-hDVrj;~y4qq=*gzATC*A92<75n`#3$X_au)$}}_^$b7=vYkbLrcm&s)I{kT##i) z(NK!_!46joE2Sj~uX_X=!sEv*<(3a7=n5{Ai`JifZ^{*xCwMmSX~PF~4Q&(lsY+P9 zN7CwHX?hstK5pA0>$E{iZIc|*YqHn9>h|w9lQ+BATElUc&!aBTtt(7J275kPJnB}w z@Odg0@IhQNQ>kR0rPKW5l6tfa>lb$Yr%aJJZo_HXRu`}9^z5_fCg_;<=zGFhp*HVS zk_h2wZ9VYRBfS_`pI;;u?tj-G6{&N~Vc*lH&`JZX_MMUM>JcqV7m>|v`&2cF_%7lM zidu+?E_)4DnHtq(3=S@3b*-?##8A)XK41cKmGlhbtjBOpt7#nHBsBee8x)@vNgKJ( zE#xed7$Y){1a_eB!`S^x^WeUBuixX6OLEHg-RhbFY)Wg(i>p$3Vj=e?99z6y_LaA8 zqQ@P=QH{ur%PGB7L3*Zfpy(9*+s{YKr_iS_4b3hiE;`a^lOlHZ2DsKma<6^XCJ7}h zt#%T59I+o$+tfcPV^rY!gyQdb@W)m?a)(%TsE;X$s1QHIJbt^;!-uXSSR<4%UV-ANsZJr zNmchS1qLOpcwOFIJlzlg&igFDpTEB|Q+1yO=mX?W?E-2>Bn>$7eIvL8f~P9Ru-~W( z*!MI_$%Ol-X-Jt_$Cu zE+5nxQB@NXhCxXTZ@hCTHLHj8WzSN!nqn(5txB6#1{Gzj2phd4?mM5lhI$SA7mafn zH!nHVg3kM#SkKeaYmz$-m<%*_fhy-LE4JI;Mir};N z(QA$p!9+e5^U2cEQ((Vzv4TlT0PjU=p-!$|c8*b4m4SDCG&e2Y5gm6F2^xEVBk}5z zWG0Iat2&sy3#B$>mDZly+zB2~{mjD#$LRvDaB|+?5A9Bf`|wqXuWs04p>}u&0)X%1 zqbm@qp5VUw7_zB|RF8%8$CoZ5BPSaX<%+26g&IgT9kIW8d|b8!A<{4MBM{_JS@w<7Ad8zuz z{azIbD-nj=<8v{l)Et!5Sbh&AZ;J12H@t;}g z?RV}FB4}>1e(@N;d(f>IpI(+<%S7g^7~QQ9c2|*AuDinb>_T zO{Nvq-X}1@FMz^aXB|lC_;obZuQ$t$qC3|rNG7!vh-7?0u%EkAWnV(RMYusRo>se^ zzK7y*HDwZgPMvc~J!#?bf*P&2Up}Kou9Rf5;RdY!p6IjE09&Qe5uKI*c%NZB={)&d zSe=gOx0p8vE-(O%`$bH0YObV_NDQlFPfz@_yY>|Ws-GepZATk{=Rza5Z=Bg0m=i=B z^_8&c-&Hlw04zUEFod+vt*NTg#{~P_b0U)RA@gFqiKQ;XSlEVTJ+RJ|s z#2>HjAhf?f@}HygKzPOf>gU%#OQZo%yIs39&F!M-ALIbMdTH2lT^lrvAswV^XbiY} zRGmpD3=M8IolRPKi)pKHkCKKc=MG|6y{`vRSgnpt^zq(BPf#%SXaGr1OyGMBapHV< zj@RZEPL*AqQPbHS175ci4RYYKEPS1`ce}i>I#16(G~9J|;8ZQUPRX=dEqmqI$DANI zV?^@jNeThSb>nx<5`(BX?4TG zXhu8erd;~_0L`!;c`?hiCH}nhn_1*(4ZwSlQ{nZ*Z*aQb#(^^hFUJgQ&Xe`MikK`7GZB zb;al^mCNE0czVB>ZzZbZ*&m;SKrnm%;tT~04|iuEEQz39Kd^?P3NYM2R8bgrclWyb zdP;}o^>u$BGVPG%KjuRd2m$kr??0+t{^#@UUn2~h{r~B3>0vBekF&$WQfqdjv@2T@ zrgn+tx+gznTHnKQMRZBIhQ1j>fkCfDH}4ww28lKO06JS@YE$@pKx!oVAa7})tGK2q}G5*Oe|qtg~R-jZS@A zKmn+)=~@7BwT#QlI8(99sS8jL=eaKgjt0tRUXCyvJIy~(w~oTdpK28vVHbRM$fC|R z<$ECIr?0sFnU~7obk4VPB=1`T1ADzKJkTJ#M!a!g99dcL=I+_qFB;hH&^csDI2gKq zZmY1RNZ?id2R&!mEpgctpY^}0->hxQ)Zf!dcGoe!^~Ag98GuRG1f1A}CWAeg)b&D0 z={lcTcxnD|JA?d{PH#4UOOS3;l^YJ}j{;mhHufXnjEdsSRT#`0Wr_UU*VbOw$q(e% z5}xB|NfDt)h2bnCK!k>565n4$@D|qCo z@$~`#nE~C`@s2>(-HXfwuf%bCDw-q8sYTu045K|cs!@o0!RJjy;TD&Z1%8|xRdZGz zCM_BP5sQULLL4ybH5<0q&>84ECa`qn~A?5eCkdFXTtxHi%(GwR@I=jhcdAA4NP zj&u$Ud>D+LYE(gZ%Bc8?4}ZcKYGg(NJTnYtTH*S+He&@#kIBnUv?Ol&QBc9Zv~)t? zQ^ty0;lnha)sKNy5Tbr-Wrj{Bqz1W^!WxlE2r~g!mg$?K-jXnAVuB+z2UZ**t4N1- z+S~SxZ|ujt@tOBqU<}lqrN8zBpkvJsh@dv6zK`!2qnZXSNKQd}v72@;X>LYaK`113 z^&^U?(`jG92z@%Hd6}hY2}IbtEC&W4Gf}Qv%U6w5P^tmHV##^i!h6Y69C(QwwH1nZ zRmaJqgTjptl~R+ucvR}L^5KaOl9g*H4C-=Klh@qP#g)xweVFAYKkWEZTIFxtN!iCB z7jo7%grA2bGU0;e;{PUC{_dHy7k|XnRM)H!o24`c>Rzg|*f6T)(8FQ6t17@G2yHEUH#bo$6v0ynOSx z_KhaF`tw;J#<&s{-ON4nei;O!1}u?A01)+D|EcLUlQ=7=fo3IfE(f7?{W7g3(!I2A z*5d1)u;**&vC~9v-5xFN4&A4LokhuLkwl}oNNxTOh|b>^H>v>^mltnKhl^tTZEd@x z$~)7Im`s}8e!^3@SKMrcUu#>CsQLpPOXsELP7`Z?dXFbr5RHF__bkQ)XkL6$Dw7P6 zF0$G=%R?><*`L-!8$mwV0DS1WHU5KAOpXgy{_@tW2mVsnq$7w_nvSXv;I`ZQ=y zHeQ)Ejzl+=LZODt{vdXo-8m5v3kTjS?RJjxV;-LS0E|;soUbB_qLOIpn44t8+MAfP z#%i&w0f#z;J44liv7C03v*KxL^KzbCjPi>!9FQ~vQSo&j*%6HcN=7{yp|E&GI zv=lz>R;FdTdH7!Ht|{pg@uynkDvk+dUB2z$q+{;p8PsJsoF))#GxQqWkna-trQ2I~ z3?pi&tV+*$7BGpdUzIMsJg@mGS1FN-C+xLeUnfZzURfr$~&;>UeuSF zoi=JCLIMf%T^ZRF9RdKz>S!bkd8zs$f>+G0Sv`%EsOWpo>j=ssTyipaq1f@G6Y(Fi zxlS_v%nu*HInx-@qFi{A5&>{jyITYt!nT7>z+VKx?nLY<#A-vR+_tL4(#`rt-r668hJt6}va5Bfu%LQ9-~4Cj z<)*cHO{Ox5*nvS_I>{Yl^H_H(IsyevjhBXpE%kFNjj`Zir_kfm1x`f@Ru}M3=FSA% z-8ynJw~}3QtHAxA%Va8%`H$lc5IG4f@!CZ7Iq}R(p0e5 zc~_Y{bXi$HRn94oyV+yOT49=3w`E(5X&MQ=9AHfe1pv4a!ud5FY-b!*;jG?LJ6kzvtzzN z+fwJ|`pF#)m4ax9g2cmk2?rpo5C0;$mjL_$mqdTeiM(z~qKrb{n4Jh&cK z6~a-g@8tP{N%1|KhWCtve)6t)xug5lq22ch9&Whq{`G;!N zfZlj|v5UKKZYLdVvEdP$cI^AFm<-F;03MWB)%`^^dKyCm`(^|qGM?khd~rHI9hpgX zQ^_R_{#Q(#=X(H<`}|7A1OR1jO{{Wy$4}Vnj0^JpIS*KD0Q7I*?zQ#| zf&kyO-Mg%Nyo2p(Q%i0O*tbeF|JAbaY=n$mAj7XzNL(2}`FBVfdwv>qQ8N`t2GS|> zsrtvU^6S$oo_lI=2k&ouW)s!;^*hV6f&5U08uvJ@Yuee;3xYSlhY5z=;LZ22H+U1! z(*M84o7Pr?e{3iu>3gq|WnD5=^yY4Ac+NwE+;SHN-)ge}G)Y@?-=qy6=+6QC4LUq! zAc~B2gHK2QiNx&!2;`~%{s;hj;4nF)uvu))-fn)B{+$aO2bCSrE(0wW((uXfGyZe? z$&47I92C4vN*mGpHkIoCv|DlYi(Hwh$<>7tUp69UWh({-j?@Pg{pmhuaF$UEM4;@g z{g?k6wcX)>Oi6ESoDW|{@1_rA2sIQSJF~B;`2w2~;pNwG@G>O^&sw@6)l4Fg*pxv{2ukp+Cm#{#E_z) zrSeMM`pzzLorXGuxD1|^9yb$qr^CFF7;ZqLyqqWLx&`fXKH}FoTHUH_0?#!E6h>sO zdxmVcyBBd~JWHy$u^xU62iwSnbYT~dP(qFxXMPi|#_LynBcb1Dhu$4_x_xEw##w!A6gG2+soFtwS1D_bytchtQPq2MEBF>F2QaCV$i~;ebm+Z2g)F;J$MQg?(9c> zdv@{f$`?o1m}|z*M=vlU2{SBO^0*2>B?)dDsG6pO1|oNQrSIO+O40zi&>a-=yzEn< zQT%)^ku?Jj3hw^FavZ!q3zI%dG}5tNHiV6$6U{D#z4r97lXYTCNQLnW{A#S1h{Y~B zX_pg_(>kS^lkcrMf?i(QDE7&WgtP@w$UoSt0f7{ ztSK9xSg&CfO5*Rq$FNK<7X*v-$XA2fE7doiAyAE`Jzn*cKqQ+OlU9 zZKI2~iAMPgl`d$mg!tdSQ)XYox=UXMFNvZNcG|X)Fr25Joo(*mf)-cZ@{zTvjb-F< z86%tr&to!QgZ8Q&Y$dHF29iNU;;Av=T*W?&=}MRWr6cLP{#4_Emk+3jEfig=4z-Z@ zK6<^iJ08##X4UZ=G^DhSHh9!WH)tG#BkgyZLwcm zYLtmmn(VY~a(D-ZaHVvg5;FcJ3^oyWOW8SEt)L~l6LPWfM=@YSD?dHZ^ll;ixj{&+ zpH05JcbCv{td^t~13*{mY167_2)=(my;xKjJEOJXMH{m(<-)p|Iv}GvsJ9s%RZKj5 zqB&EeziBfIWRGP@n^a%9o7buVko4RXLr*Q^nm^TTYp?8Ns4NR0$nQSa#;N{1w2f_d zS!cuw$cweQ@f4oV_W5_eD41jo&~TpK3fI|jx0XDnfMFKokuy9dh`w0o7jasx-tzFJ8#8xjMixE56#_t1s~hc3rtm%J zuRMYelwp;U!aMjvKPm-~;>=#;f1i`b-W;6&aVC@JC#D|P4!X*L|J-C#wtwDJ2p0cQ z$lyQCL7p_wsOOUMV*o-})^tenrzBNPvD3ceQvDbYP-qP6^dWF#`ML|ok z4qYEYr?qB-G-Zj>PMgQiu}{xFD}{K4V7wQ9pQsl%Z5v)&IHs0Y>RpOyUg@#Lr4tn+ zKpEUoE07p(z3xGi3!b zac#hx4*=2NWFZM_62PbVNbU3o12TPmn!5N9=3$fgN+4Ub_mARvu0u%DXoc)c`h3aMRGMgXK90g& z#}U*JUR!+nqB?~P+J(nXYeR~zIfA9jY!`E4R2CRAsYkosz2+P!zF{_l?pWewXu$0} zj9p!zFprB90;+}m&6AFR##6Z8%T~;svM-YaU&GSH1lT`ZaYtl;b!dZ@;>lQKdL~C# zbOeMbW%r-fz;coJLfp?>f7<1_NdP~H%!@#K_qw8G<8L+CEiF`^4H zGH9YqO6tzROr=}9@$X-t&`#rZh68BUHs3?`u`}HpQDY||xp&NX^R>HDjC7aWM~WbE z0i_)c-`GNGH%S1HT9BBVYM+pDQK-o6Mcj{6;VFecaj)vH;11ZsmJhSyDF8icu6_YO z`imkbaS=d|p`T%7BGaDjq>1L0f&hj%iqebQ_9~Lt@jJxoOug+Ld%`hiU&3 zULFTnP-HZt81Cuh4_%P0W+oWxXGFDk?#oI{7`O&SECJMKN)JGNj&8sT;9SP=|J96y z)(AVI?G2#T6`2SN`nZFG)^#zvvF>WuSMx0{ujWT4x*U@@@hnUQA1<_Y;w;)mj7d}x z?=)?ZF!MgFO>9HOq^k++-HBME&u8NAvU7^6WF8!PFKx2@Ahh6h4c=jUEHpp#na6lj z+04L;X-2XqQy~74tR#tDja@|D$I2HXu2r3!#`Qs_jz+`hBXtIw5SCQJ@`felwtCJ@ zv>#sY%@u`X0riU{-FCjB#58XiXHl)5Z}*<{QQU7{xqLXQ;kYM{U)_re=!jY06-w>P zj{U6kT)s^wHuS-|2Twyk1uDsOLINFg-!r!bKwl^4JQlHEScWlHJo`4znT3W0=wVN? zc$(k$O#{jegkio5VP?Z&*xVdSe=(^1VmlRA++;RZZJW5+L$c=RLKW*CuDJ(%5}DwV zYZ>niSO=;pPhwzmQ?4f*L)TqgTxkHdhQP&I?Eo|?u*2uGRCmbMiW0@q z%7>>w`QRj1c+18AdxYiz6pM{=J&*>pKhM*aOu4~6m*Itr!(BV{m%+#uGm)&pZnwt@ za!D1o0Pc+9f?nl@EPaH~0NnwCqvlTD{%{auez!{v{2ubhLfo*7*MpI04izn`!y2xX zP};MQvu*t1pXivI!NT>$VobjN&+H};73?^MCw7ikpB`VwZs$}wJC@+U_VH%o{hD&X z9ueBTK`aj$ukE*q>Yigd7AL1am(%ART`ak#FZFsajl#bsv+rFUho9KirhE7QaX~b1 zXGcO7E~-+H2Ndqy6-JP|;$SU#_vWs!hNRm-;^br9?ChG^Ry&+=|2Ua{=Km*Rh&21( zn(5!i`oBf|-yN%8r+25%@L%05K*WPBL_RF9F>O!^P}hVqtq-p_M>hp=vNgw%0+s2v z6kgQ+d?|27A}JbQW=b*n{xka#fOTIbhnu2QCxpGLA(G#l$M{R^65JV5WqzThsLPKr z)|!$rq8B<1pjdIuYZRM}UG6g+PV-AhEL=|K_Rfwz>bOkvX~MSSet*{g2+RVp8r#3Z z=SP8Uc2^1+Vp`{)PxzG!xNT1!c5l(6k6LL=17gJlUr>BDx%9hQ4Iut<(as->(NrC$h4Jh z-@%)x1brFBYr;yiPdWGxY1&oPVH&hJ+M4fpXjghlO*L=~0lxLo8Ah(0HVI_ivwE}= zqq6v;dgDEHhk!tMy*O3(_Qd6BzKk3toR|$?V#s8l@o7pC4XxVt}7B z_6R%zB@}Ik0GJ!hjZqHFmRW3ZA@X22Y+66hxr_o}t5fY$ucn_87lM%rno5uNO=ZfS zm)38V5*CISWr^km1%Z#J$rMG9C=V-M!jpJVo6am>))>bNWIwoTr1f}jh#9y$90@Q& z2WE|=_SIH8nF-nojaN@%!m)`XtJR~m=g;YxvL>va-+3%b^3RePq$}nSM~c7vN--Xg zebSzc8jULe!xs3YJ-<(iLPy1uw~^l3Y~9Z9p2Cb>BRJR#+I}b+Us}-$ULM^5zYFW$R4PxVV=7 zqVjwLG^;8gQ<=QP#cAxZ$SoPYgL5ek7&9*8a=5Jar9t-+`WczewJ##~liH}1jWt!Y zd#Bgv0jaM^u`2SB$*7}7aQw;WR?9i-i+%gz1w|1&^WPx#(KSeQt0RBpse`cS_JLI} zHsdA;;4zEF?|3<~pvmzvRk`1Az8-pWy2Y1qwFMx3+k~M;ZaG zaphC#ntp?w4{co9gc1RD%K0pOP!O!LxN;56p={{}_pC>oKCZQ*)0n0Aexl>yI%@2} z>Bjypt4zD=@2u3Aicz?XzQ6d_kbkF87E&6Is zmgdFsn8lIHMFWhB4TBcw?0vf`aRUuTSWIg~X!h;HtjH)Fqj%gs$wdS7;BKb%4%vsh zL^@Q!J8C#;jE6y0pl^|dvH~uRZ9U13Dw>ZCkLuxkU$tu*92}|x=2wQ-j`-0dKfqs* zN=lT5OE20)DP17fuG;RtCV@z%-QF&y|X90lGr1qzBN_PNiL?zi&Ay3tx9 z8t~PEj^5~10t-~jd{m90GLf6s2)eNA|!G^$-J_5a-U-#scG2NPVaTJ7Ji=p(jniw4Me!jl+ z_`MS^E;n-ti?IIO0e2)c^$Oqcl3|3=&T|gnI#{)J>y^FB?@8&=4{`a4wLZ$h?f0od zrhpKeIH6d+-xnn--2kcW&g^fgEn^$~MEHxe-nz(4X}o-|UhnTbJ+NDPF3h3@AB?FB z!;V{oUOr3(3;9VKPYpRspy1S+_U;{#Sij!lc%5x45Kjx%yB~iQfK}%gBCKl%ajSl} zHp#YURrC?FtlniX*eJ)bKxoiz1m*Qed0yI^%L}4WxJ$3dxz7kAcqJJ+y}z? zo<}e;oH*t`i@SDFor0Mlj?*mUXp{YY!cmGMGxr)75t8POF#adv^)=oyFL zjBSuGBa!*Z3!{tm{9_k>%4>>BRZl+TGC-Xb$1r~JjH&)ZE2|Bre6}N_@c$4wwm3Xd ze@4m)Xk@AZ)TUUYr>}$n3bQ|w(I)Y00z2nj;;LJ5 zHp=nS)(G}-NZuWU>~tSsUu(L_YJW3Lfba45c1tQw{~xN40Rjl%tn!WOE4PyM{v4RN z5CApqvql~KC()x}4DbhO@hIc}CJ}!f>+TU6hJ97iS&cCejhOYkSWMBc=GbWEVurUbm1)*ZDR%8RRlvOoQ&;H6lVzxsDyW^Rw zeC#z=L}H-*7st8xCgH>|@z-7i{~Xj8;(JuIFut}PvUvUGWb8+>woA`B#@2J+m>N%k z?~l9&aH7tY`&l*M(h2T$&br+egrI}j6hIxD@HY+;fB~dWxaeX>+;$Wz%B9e}K65pJ47qiV;H zetR^Egu5O@$Tc;P1L*AgF9s6|`Z~If8~iz;Ja$(%^VkXS0Mukcq9jusR_d#NLMyHk z-CheIOWWbEq^3g!zTatXi~y#;e9GFm(W*qOBJ|6uTLkFN8!P^9LmW4|WR+!8U-SH6tDv_%~f)IseWzI0&- zE124T1SC2sBH@kEj!_qyJ+-*VOmH6$;Yovtb1}0jgr8vMl+^?BT=IpH^wTruu7^%! zuk*7<<>D3Q3Cnzgl_K8KGi(#aL@BgBQ&BYKUwW0%VE;<;AVeHjY{?}a6!72*TFfA7 zR0D2&GwEu|`6YUh&VL!-bO}iu22C`!?(bU~85?<=4T_nAxGAzrjD@ga&jG)nOEK0F zAl-G^3|v;8OyWjYxeNk!ghi5Cb@m}j{TlQ8HjBqgn)1!rczpRSm<_fJ)q+L=;9Ivw zNYeMVTVhvS7J6LVV)BbwNkG$_!^%ZJ0>!OO4471=Cl1h&wxkYgm3%{p%j^t$<$Sy38QuKU5&Bo_1O6 zQNJdH^ddZyyqFZK` zY(b$INfIxo3HBWoXD)DTi1!oyF#E*P6484l{JY@{ZNhW z_%2z8)kCNKGHfh2V5tTnWUtlJ!TV$Ve&S$5SyLkCGrsD;avac-=3$<##M>Fc4Pm3N z+QX{;olMwn2BwBGOHg?NSv-mMo`Lyvr6X@)Zyq2GONc;D;suao_+tqSh3Te8gJ#eb zjC4LD6VRGiJbaltZD)umt{3$2HEf5Y_@;nX;ipJU*N-2@4g`z~3naU|>D{HZEvAHF z-x!-CHfwz4X|Yp%-VlYC6(DG_3?q|Bvjx)>D`nVHlu*Zsrj` z7|Yh426?xk5KL8l@|g=!X*;2)eLSj_cW{H|d(Ry^hGWr4j4N0z+A1&JpnbYxJ1+17|S5 zPbRDPW*8vQwR0A0y36THftl$98sX@ z*=;_|BvFiE{ow~aRZl}b)n*0Tq%gyd)9%wjWWzgjtN`GQ5EO{^2AbHV32*|E%7M72 zD74?~n({xA9lo40|6hSlfcP?=nqg6WyWCd3cZz=+k$e8B<6iuL40X5FR2XFsDN#*) z;C@=iC%ZL~t`hx4*G$F|x^$kypvmZu_iQ)g<+S~jaTA?S6~O>RN)TyLQb0mdQV@~u4g~~h zkVZg6q@=q`y1To(yQCYW8@{fOicH*0tJGfg zsB>r|I%2)E2TQT6eRuqeS)n}L)914CS`^Q2bAoC*bgqT|pLHG7!`^MT@xBDYX+NMH zP~X{vg*W)N5W{y7`pdBxTtpZvU zpUc5T-*V7G5ThsUEw(?&IC4HB8%lXxeEInl4h)3%mh4QcUz4;{cPqe~VjXoMbC3=Q2G_K+ z@z|A4TYa%$_F<7Sv6(xTTVjta=hZ*17fgd}B#AGB9<=$LvQfvz%S>6f!eh;)ns8#c zJm>d9`KjS0TZAI-8Q3Dpd8=-}oE}^@Y+@!uZSF9(q8sO1^DASBsBY)uoU4EK^b1C~ zqHsOq_-s_V->>M;1gn`0j6cSyLl|fWo?D+8ep#k666)vF3*FvT2;ZR%lxn&iwQskP zr~;(6dg?U-P^oQ@@4QGmw@CV9hQsMsy1_qssQgzI;_N9W$TLlPam{v&kH~EYglyku zR3RM-pt%=>Y6rfovu+-~FM|G-*Z$;AP$I565Z%=y^LIVM^fd`MELonOw%aoS#xAKQOO<$v+_Lx$B%|ReQ|* z+D=|A935aLf7ohRq}ACU!GYRa3bJ=199$6$MacB)A}-%g7i5PctgXwfA=~@IzE>yy z_R|OeuEiSd3 z0acnu|Dtdqzpf!frFi6q(=a`5wuD|Su8_E`_o9!nRXy=V^zazO@D8? z6(pN>DsT73&vztn?G;kSnf<+ic0nk$#*)L{g?s+l3WULJ#8T#H5A!GqnV_~ZUmIrS zKHXD|W!Qi&BWNW868)joJ1vZhi!3Y&qQio4(d|lCxacsi&#eV0b5r{d9o@pAy$c*1 z*C-EjP79c$mH!R_f)uWUeCvaGXAI~JdxbO#gRuZpje7FiK4KtiK;z_J7ZFHL5(U_X zixgBIgP~(mx?VJB$!w-sWjqfAF$=8|9Uzw2eOxqAk7ew%+xYJzfA|>uH7*i|c<80p zOGI#^ZS2;78@>5qPXQN2qSmU%dA1TZYkGcCM7}8b-vASn7=oIGnZ_V`bSg2`RrY&< zt5wGWwt&s5v*SfP$E@Pm6Z-W(77J@pxFdg~zVm(2M&GX!h|}qf(}MipUINW4DfS{~ zX)?*weit$fn$*D1ox@RQa_IEyGtbsC!qFM<7I~4DESOf#>QDgobpXMrn9j+ak*5C3dR(^Q9w|sW(wxDVvBs<68Cln z<5Ao^uB1A?LnTW1S4YiKuO1^4i>c!LcpmmF4pKgU#INy89}E2ZX+ z-Bw4rjZ6;cID<`BDTBl?K_ZGR+zWJF2Oi%0x&x^s9=vhcxY*CVZWY0FDhYeMp)!^2 zU$O8)8eT3iV;L6xiPNdC!dA#APy^FYyyyrdlU!8*kT>1+hBgX-ywz`_|J=*ZpQ*gi z90H;vSEtHUgZNVs@O10fCZ=jnbF!dK+?LFYW_C;`46P~Nf?nR=KNc9&1Z8PR42BoJ zn$KU=<)~>-pTIP|8C|1J>_Zw17l-!#wVV)dz8?X{7f2S`@!FJy zm1GC%r^98wNi^y{9P6q^0c*| zbJJ_`>e3(JQYt#kMSF6>;bt6@(s{C~={_du&sD2W$0aDuFUFfj^2FeomI;Tg{iMY0 zebc8=hEv-iX9*WDje@!V=_e27M4H*^tUo$Sz1cS1vHA@0(pgtF?p@5)XCq=$Bvd;* zubAktJ)3nRj7o|erQBL^#iS70S=v9DlRoRvyss6)YmPmb6!O9>_>8>y0SY@40iBEU zghiRU_+~#wd0ds5d1j{kH}`{xM=@(%tHh>Gpn|%UqQyA20JnLt(Ln=vx&L^QiTXmw zOBsBYM?*ZH?we$8>aar`tqV<7D5S>39WLSKA9gD0Y6Zrh=1>|GTdjR)Ar2;E(W;Yw zJbHV8xPv|5ozajR=2HxW%JG?ZIiVAq6;DHBkkobdM@9<9&we3{#*G9wG+PwNe#DLE zGU63Rx8pN#*Gg@%LV<9+9cgA*wHk%u`}twx9Tk1HJD(!ti*9(xTRD^l`?QxM@w)E zE4;=eV52vqguf}S^xJxIfY1g@oesLx(mn5A(_N-Ky8H;gf*6y+Y3bGTZXwJk&+YsU zU!qwV6J>q~I*G@de|o-I$9Sp`8l5grb&KPShn7%uh%el7Y#+EC-BtyDW&BxDQSZ= zQhPu@-Y`jrCp;y;3lzmqF>?c5tBfW4>cg6h=CGYs^=>&Wf9g7r_o(?9erNn%(p2ok z+ZJVzL8Mlcpsts^xEOgE!Bpe^QTyuQ;548+v>)4!n`_|Rj%*W1(zQ~XY|nQoj+fWg zZXuS_qxh5-{7K*)MKkgvk1d7u3K5z&rg}q<-C8}QTa~5W2ur=^<4wAoVK9nS(^Zlh zpw6dqG_YntRPqKdt=||k zFjX!cu_KEO`r$K>4bOe=rb{sKdLmoC*zB6uL16cpnrGgMq~Fe(7hT7?q|qb*6J^Fi`U4Yxy8wAnR#QofDe9lUFHx&p&aY`-4kl3 z>Kg&LSEiTtYm?(CC-?_{ z>i6Upe%^I9YGdZ|s?fb2ylWFFH?9`~hzL?mDUJPuV{5-+H>u%c42SeHrq->s36 zm{n_C%^&Lgbe>S$W!(s8AGf#=htV#cBT zo77#=B%P)qf2&q2vjD}5e}pIsk@SA%T!r{q+jqCthf}oJKH`rBt9)p%S<)xzNH5S^ zWf#e}`p9rr`>i7Kv?2`zI~q{j|6}$79U;T_kZWk=Yc~}2+vkF&BQlI<9a7qNgPmUr zBoNm0kaw=w3BG-gQoReZjk&*H9^mf{{h7#QFL6KUN_=2Z;IH6+p_y;@LID0{mW@L}>b69Z5l|>M1Y#<#!2lPVy4r3$p{^u_S^V89k znaPKS-fS`#pT?I7gUM0rgHWB)^^Y4EJkx z(K%d49g3+a2X6fu4Z0)Fl)vsfWG1n5fjZBKaL)PDcCY}jpCBDMi(scbCF%uq^SD5* zo^u(;1sSini-0Eq+?e&N%UFhZF!J#p!e>y#J}}=!XLV)n4ms5~fbf9v=i^RT=(g41 zodt0jMU>+`4t(jb*mYc3Jcg*2e&@4X?C{U0upspqBf(qv_vr#cZyG>87Y0cP@m;(q zqENs$v}!*@oeRwWWzfK$2ZNtbRsCZlS8uQXTju})>&>x65gC=GoRH%1H>T%qT>F=- z`l5kl*%tP^p5&d^3<5n?a+XYz`vQu0uSpd;t~gg#0WtlO&J$`IqoJg;$OCU{xB&rg zgz`rAc&a5+xd&!RF*nCLX;O5Dr0MkUrjaSlK>22W{kMnLF8JobJ_9{0J>CC~8JB

iZpdzkkxec(6vGyT>7pRR+I;gL9rKKGelgN*sg9up zNmw)F%lKnlSJF=lAaQS$)JzvJ-&14ay&zrcsBJ}LK6dTZ*idcS>Q;HX!Uz&AFyNXe z9*t;~lfM}Na@6pNK)rQbk4>Y} z3#C<39kqUFPY`Y`d5n#oDK0X(j1Mj{Q|@Pu(;iIsEW$sckL6>zZG4E}y`)K_c3(mo zfnb3akI0TrjL7U<)cgdHAOA%x6i_v@7U*dn9WZ*yRZvfHEy%uiEyoM<$cI>LALu2l zTe(oZ(b&sG*J3rQ$8eSYYROR>JD61;h=0dYbXI^Kf0AuEJeZJ|jjBTY1l2|27^%O| z#3phqCbj4OLZJx2*$WCUQSpJMdEWskz&@?($1*(KyhRPWCE0p}0IBV}R$t{fG*atT zJ0F?k4<2uzie_6)hAxr|O|#x?csf;g)mV&QL znHoozcM?_SMq&Cu$H`6mUjHe_j(2pNOMzb7vl>`~Vs%M1$0%!j_cR_;hB?9Cmt9Mh zkM}c%(-6wLL$rnCf19OYt{H|-AunK!2Hzy_rX&-2z?RH03+4&C_li(f7$z_Ap!kgu zREOPS9j(9(2JIr8RNH{Ju@ZIbbBjmDN*or$n_QT|dbEe_gPrls@BMIE z&+F!I5IFz%BG!Y;`$V|9GI2HIz5dwoZaFrGY51(@{eK>O5-sFj^CyW z;J?0;C|^HlhVp`!Dj=Tqlx#y=9H9^hqhJ>+G+~Nr^$Jr ztZ@oKqFb@RZS!bUY*YSn#dP*27wSGu%w(a1P^1!H74VTU1CZ2{lzAeKAQTIdTg-A} zd#MZ+-{ZQuAbZRAy4*oE`xy};FP3U6x-5Dan%5D0MU-xY#`g3a9)e@ zsb%tU@l(+!23pS*C4D!3inTVlbB?sf6(dV!< zOuPihf{lJ~iRAtHwlIu_!75^UpF#dMr#WQETcp})qGy2IX_Iu>-OgA-2UxHy*AgW| zPxU_T3+)a>2pqw8U4^;bB+*!p_K+Rd{ z=k(Hyjpl}P-tm$FA|?L=*ay(xNCG%NC-yTY|WA0|B8p0OD2aAYAzX_?6x`s zJhg%`i)Uh~pAYu{0bMu%34AidadkhXfUm>w{{CSeMLv!L^!OO?AT!F+eEJ6ux9H^# zLu!nw+6Fqpa7#i{2p^Pm4PZ3v8I(_^@af2Pl_TU&J`^v<`Xafd-A30 zT7^Y2a&&;j{gJ>HL=`cHv5x#n{LXWYH*I$7lg6(PA}ZbY%&Gu_-Qa04A?z`|)RRLRf2P z7grBTN9IYzf)Tmh&M@y4%;M$EOEZ)((J<&oe6e;fw4=;ba3z9}&*MYelzsoCJ(0*m z(w-(veepMz<11d85N+!71{ZXJwj3P;rV8FL zkdUQ{1lG@ANJ*EtGQs~zsZjC#oHs6hBZ9)IN&+e9u?rhY3VU=52%8_R4xO<>J9-Mw za=2Z{uK)Ku8KmVT30`n&koh;W%Dk0YTD}$If7&F6sphhEwweX-2ZKNQrN}vKOE&g8>!=>Q7`f@m$Kvz1V zoX-=7aR<&5hjDRp4@ek}L0!RFHjs6R;~o7AFySNwIPWr1=VvdRWE3+=V<|`#UhgSq z+d1vFg@C9(FY||hKrbdF`SSi>Hg)ml)&x4_LqrjBrN6Ji%gy{xY~j~(gOTm?AC&Yr z{@gd@Mzo(4f)U6gmkWFLHV}0mv;}$Ne;~Q(znM&ZbqaHSq5ofVwa#1vf2BrU-a*j& zZQ?8I-% zs1Wub`N0_f0f~DaA8c}CUtVMUdh+wAx3TH+Bq3&!ORfdVf{yYXgQT^!!dGr~PBs|- zcVOQWmj$f`HbEJ-M$6&3BH8L}|ApDBE$%LVkE6}qUmM3S6p0TRttFqpUC_RAx*34x z#pV!1-~0LLg*D$!efx=4dR^V2MAz#Ih=5su7CyWy!>X6;zCGO~s@!nPj$mzv94YGf-Tilq)#WAJE)XS- zD37Xpnl$)v{~&C84R0)X&-0>V$F~B*YL$JQt-XIEySr8nB@rl`VVY?faBX;u-V*Up z;6eR~)ENONbD*%+U>elbT1{^4lMH2Sv5alsv@g4}4PkkimLJhd5!%UGrJ`q3sSJ!4 z%c*er)STVTD1T!{UIg*bmR)*iRYtEx01qv%-G02_+bl@YPP3HpPi43V*w(W@o?W?v z2?W3r0wtS#WuWsyqQ!-=?l=LEG=R*i+z<#!p>_6({} zd3-!Z@_k8(Ui6Pr7r7N}SWVsA&^4btCUV5aT}h1CF{49sNo<&vA+K|0lCgc{!>!XP zQ1Imja%Xxl$%e1+JCyA-!U6YP#7{3&oC0eJNM3pn+3LUPz29=|`=*Epqf}mE&5zw3 zm#wN}EwCs+i_|hMB;F57^{(4I%FfNCSB^z`eOfM0p(m;CAey|=c^_wdomElIkZ%sI`9?|iR~5w=lT zv2&W@b9}zdj^HU^sI*G)mEsY{Dp4@z!BFL(1k}4_%)PDtfQ8p6;;b<9U43=Bj<|Ys zBs=*h2X|Oz0Z1p7)6zWvqpp`&{0P)@+;9P` z_J@d3w%%_#aAx5VcR{g^ZiF~0RQJqS&<9dX0sMR(1J4H{T3uDnoH57m}L52>K;V70qL_N9Yb!C@x;8_CNk4E&U(;v zK<~iv`{9UyvVU-JVBq8_`X<96KnDo|JR7~7bv7zD^N%F;vwUBdFdOppBN&Wrro&k^ zG(;R=F2}@fO3btD$B_AOP&=`m44tj{HnOeGx+*g{h}rj5_t&?W;Mwk?9B36p?1Qd! z(k8lM`OUa@%iLtLHV*@=#iU7-GChn=Dg##)|2q_q{vk zu?>eEyotFi7v(t(`-oA-Ots_`GVC3Zs%n5>G;?sO~;)5pQJgV&m zT&Hw%&l&tJplFyE)vw`3Y3&ek?Qhk_T8!xJV=sZ;Iz?COF93={vZw?JLTC`4r=7RX zGS(WCGy|R%m+mgMoXn>Du0YeUZGxh~iERCkl*+;)~x%_w4NoMOIK z*l(xWH06KJfb8OIA)W_J1&*6sD>G9+k9iFP>Qmr+rVX3Itrp*gB3H3mgbbK*f`5C`N+|nOQhjU@Wq?P_DqLo5JlBCvfj@LlG!2;yOT^ABC(;Y3hX|c zeGJfP9tfqcFX+XK*UJuo#1oHbLF0+lm6~*hFv02Q2`8ma=v@QU`LyA5Sjd$*n0@M} zP95)oLXiD5gKj+?82l7?cx8~KpNdLJF$hLgXf$=~W5o;I=URA%m1tq1^!P>}ZE^_9 z`wyj0_Fz_=Tg{lz^a=eeIvG)(*p93LVY9=$ss;TMCKT+0N7=9ZGk z;EA!xG_P$8@-h*wL9(A5O38R366xAje{)H~rFX2B2A|M-L=WxIDWXoxPzyePSkZua z7klQ)P4m`ml%LhJll%lk65G{rC!9Cr&{AGBKFrDYAGCql zkt#%1>B?-*Dg>f9;aNjRP9WqdK`R0*nE5KBqX)JbMo7|jW>|jmoejgrrWSwWHWNcj zk=9IgNOqdiADsj2x~0D2r5kw+&ehZ+mA`1Y@gLFf)M%o8$*mcd!V^Y%|MH{KxW<~0 z=#C2FRFT{G;~=J5|5Iu^mQc^=4(e|$@Ayv@1184Ted;Ee6Zf=Za26O zJ{ngHI@%WW;DSh^d4VL_T@5OUo_YYwW~@Q zAM+8NX@=>Ax>5tP%pcXUu1;aw111bndx)(!!(c-oM9MyV&u3pww97RfkZEjddpa^n z^dozM--7F_3CIL;g>RHxDM`oGd#A)Zk~?rB858}A#MHnRVb6-2^eHN+#rff*`t#~O zK|$iX&ikEA5C>8s=|u#w{>n+(eSy)vw`~TK<<^3hcYyWR@r^=vt9|o_zwCTWgy(RS zq*pn__0RcsASIB0wy>XV<6Qs)BuWBfBM1UW-}(PG0st`j2J~g6N!?hCTH9@3b6`Z{z8;4)_TPC!pE=tA3fH+AZvmyu-rqL4B@)>&u-OC2NtF$< z{HOhOn=OTdaL?=YHIRgmIOBac*+HgfMm*3{1rF?xt2s@!EQV>B6|qkCuWca6}rqD4cvcG zc}k^xMa&^RZ{+_@L8=^rq+yjvym5jaRW>ZhId2;YJZ=R`SmWVmU$`^>^=Or$+-S-; zIq7+hmHjk4Xfz_yv^Zg6)u&5@ep8hLEUyfC62<+7+jSS*sM~62)<9q1{pBc%Wg~(= zwHUvD6dW0+2PB{Q_J8=X62xCC5MX>cDTE#}5|A(VM!yNZ9GTDjpA~Vw-~A6p_nQ42 zyq8;S(fqf7tFxxdUk7n>5WjS92f^xp?eIJdVbpy05o8HY?El*KHrNWc4>Z#5bxP88^BSca5TNdu)XF z&TSknP7giPCKorMl5JEVf3ihDf+M%>jDPr~5lYx_Q^K z9P3_5E@H&r%M@cOFo+imsSWPocXZTfkU!kn1hBP5ZAJ_NTOD0AyjLA%X11KRe7^VXCd8)GiG^mY zkD8{g0FbL7G7&3YC({Ed%(=TjIea5+19y*7t7Kt-a{w7m_e5Hgp=|BF1UpQ_KjpEx zlfTPj-^%BY4KL{mH$mES0#bj)m}%-N_AbWf{Bw$cRQWN;!ze!MyzkvN5bO$jAw7l_ zh!{90L_JYcaQ`gMxphX0^>!ST#kR#XHt+<=fyJgksy-u@HQ(FHBKdhCP5Y2?S%o|^ zHFrC#+yJ$V)eC@(rZT0Z(?g159}mA>CP1{D{hZ!%*TUvRmP}o#JUu@7!>SKXQ{-q! z-wJ3Q{~oy0FC8D%Ti$nTSGdpk*ElRdwXr`4u3U_jkG;ZyobI0f#2T{MD%6e3MkhJT zflUETIF3AdsqmPxpWq$@&%RnVaBpH`u^AA+@M(VhDF5psH&1{!PqCNaqrUx)%s~;pr4+F#_^*`cG#K^!o4Q zUpB^KKlszI3+OWAXW=j-nJ(W-3nhxPwq*iJrJPuX;M>NwG};H5dKY8y{yh3ZN&86k z246BxI()?Z`3m$2=e$o{P0xCo-AR0QrxOA9Iv^5~!z0HbY@|rjZ1HgO zZwRp6NPM z-*sC6YlvdfPeRr}n*YM4oju4649@@E~WXh+oPzhp%V`CBvdqkpONh7$(~m7{pczaK5_3KteG7?Lt1 ztKBSgw@l?ygSAILH;FMd#*V3Aus+qGHAM#2M4Wco?D4C6@8(dlI*3JM8o4yA<9b&S z9f{cmkJOB0V+?Uu=QSBu{m8*_H6fggUy}fuXX5KF-Hx@i`mIm`Htj_ygn(_;9x1@% zPTVk{*)UdYK_3j&e+p-Yl3{$5C?#*lQ7|qBK<|QKOT4jZCL;_lEGXe=Sy>2{(GYe4 z(D#7vg@#vz4(-yRO^=TV$=4*i8OJm!9|=`&q*q6^3F!V2q|$Ol-J81%9b#F0&m_%O z7KTt;S_5PzvGf^*TYxa5k9ZIwLtci11}#~*y4Tc~%)A>g7Ih8`ENj*%-}9D^1HB&m zl0|#I+~?+(%NzeQF98vzlXC;KW2dnkbnJM4muq?TwnwqVT$$6X5V>L5e(u+Z#S3*^ zGC^YR{Kuhv_@VxjvK&+^cG&k?`WRg7d^?bjh0+Oe63&}qk#>BqkNQE7E|EmAP zKP^1@gx+M0%28R*hp=d8{IZV|{c4Mwqn@>kc|g;SDd`l1(JpFu>S-xuD)QjQD4thI z<2ViZ1t=(h>LK>$@m0jjZc)ePkGAL3B@6S$17fvdK2@Wn}5ENe{RCkZgIK& z)3r0fCt%wfil}Dk>l=*WW}|agoX6>arssf#Rvts6`#W4n-J?}V(aw!FP_*+N=W7vO z@uc-FGy^=pWe|LkAU20OA_60v{PYMX&kI-MO+$wH^Xx2|0VBKcpInwhU9w0B@h5PtuHYj0s%s}smpt0zl zqm-<^-Z;Ak^{p0Ffz!?8JQ^K|)3H)i$$kkGD=ug|>>HAA4u75!NUo0@jn+o;qcb+) zso5`&)Eu8Yc_o{2YDL81X7Zp210dY0+(sutRKazO-T?pnn+CQano_ErwRw%3qqw{o z(cQ{2bAXR^IFtyUA3kd&EqWb`VkZCM1V4Q%tSq@SR9k^>j^Or4#KNW|6%sCXw~WjS zR-A8~J+Ok7OiyJrW~qXpP?$&EjTj-h8<{zdX*evq!5lR{L@hYBx19VoD2gTSER9Xx z9ya_A39oXAKWo6#8A>8u&Q+Z4&zI22Mv?~jSHQk74qC~B&%S8gT5N%n z0|7zYvtulcGtDLjK1<)APdc#{dul6Hexo4jzVl|FR(OD3K|Z-n@@0+{S{fwBN(86L zbAPhuypg9~K>;L3v*^wUSUIpxjX*eB*Fg40A?vcx(1o(2Y#IMUHJ+o`Y9my@Y#%d! zcP~`+C+wiPeAGcf zZsSM*pKwEOg8s#exA4VfNMYvar_Mm9H=Zb*1PYw*KMdfzCH5?Onf49cQyYT1gJXM@ zQoF%KMwVkRB^OYvk0QP#oABdYVQ;`Leg-9*ZJZFU4e3IZ+~F=rFma55x2CJ4B?QS& z_D%`DvBNEbG45(HXNi%2u6fO>Eh?@iQq51!PtiXKk)|VU@nMM zluM^9E(si0BrPYOZGbM#nCSo^%?|Ece_|d8SY!fSHVZFFC2m2`Qso95#y=En$(m3; z;9w^V{55(uMuZTqJfuacL;nzhN!12N00<54!#RuR;s3 z6PO&Z*Z$pyknd@ufmAANO1M9-66jrV@dXpejSr`su3h_=J-r|?^TM&_W#2I0$>?o4L>!>J4B8Az|r$s zH$b6IbJnaEuZwUKU#6#guj4df`qeGL6QbJq(_UEza=O&_akzeoRDIQ>^(opl-%?yh zqgY*(flj8TmU{`Z0(ty1+M5a4QYJlY|SjD5h8{-k`30RFeT1*k^!&U4k&M z>Di2y_v|wS|`iSnog@N#4_JpKd@RqTZVDe%c7V7v@-y zRG@Wl?pvc-X)%!PYg<3rt#2nF7x`xEPT8tg>YU7GO2?AF!}?>dd7>>d>0QN}2tqI) zivHd4>O2RC*q7T*EKBImS_gskzW0KIRjx?r9SZZ&SjW?$l$+#TZ67R5>=DxZ^M(b} zDmj{k^BCfk!R(Ek1I&rj^Q_`^{DGW-rhL;gzBI>xE+SCtT9+K2#|r6sU778((mR3V z6YswH?wcX|5^zJX8BGBK(yV+^btWsW1DS zv<`}eImM0lD<+@k=0U=x3NIK~l#+-dNVt@b9SON8?~c7vl%W~(=WA-y*BT|SERzLN ziBjR`o{^@=!mXO{Whvs&4S3Q7-YRQrE$k}NV+Cy|Tt>@#ybpS*RCq1E$||r8ejm#m z#C2s^h+dL281M?=v94q)uT*5?uMi*Nu63BV9rk+9acn0lMLxpCc^uRuMERw?JU|Ug zuluFRFys8_#>1d=3PFq+_f?BI{9vwHk@TE|uLxOTtWC|$M9J!$8;Y;E2*Yjt#`(6N zrcx9!Fq}@r$2K#zaa4C#H)}9VRn8bBtd7WbCw^y;*A!bG)p_u5GNz0|%FyMsJ9X}M z6yXSN=D$U|Ye@q?Cfl8QQ#~qs961GvzW$XIv&YpnT-Q6tLFRPCMXepSSe{-MDi6wd zyQUOO{BHCeHRHzn1q^98oZVjfb!x{Krz`9zLV34o7(KxIey2+ecb0m87NU>Ki-CIE z`?1tnfpFwcpNvgE3r%5Btfz%1?xXCYH7gSYB|ItYJT;;z55uu4ynifhI%VO1_4TG_ zlxXdXG<>H2ow}D!rBm=noJ=kBv!my3mX)q>dv=X;m8^wdp0?T1-hl4 z&hvW9(Oa)Q|Naty)E=5#0eq({mr+m*Th!(tR7Oi^rh>Fp-jJSjqNw`q)rAJwRRcs% zX`BQ;dQKo(@p+a)@Wfx@x1Hb62$H>iw)zW2dA6Sm6BgqG7owEPR4@S?#Yn`Nod;sd2jxZo0(`GXzl#iL^d!DGq(M)4-o|M=8jl$$dcJ@9l>&c&utduFCTUbK0z6eS!Ske%}mFvZdS9v2H6m{O?-FLoK) z2QR4By8Sw8ObFE)ZT%)sF1Ow&am{~>WZh{DWdB-7Lm}yxk=$eo(%P05yb<)rV=UVX zNf3YRr{ovg%&}Jr#0z!pPa2}?#AC(GnR_?GTyIU!??tMeg@4T&xDWs7=f$DpSPB%FoP;m42t$x1#R(7Q!%eBvtOn%s0b1+lM(h%V8TK zgE2x4C0vJ*-9hWC%kS3LsVdkaeI{?=D&?q+UJYP_yr+r>YIOS0 z^w^H60h8j>uw7O90X&7lD(TbFSv!yIc+TfG`Ix62rZJRL1DW3mOdi4NaWumlA5*Ox zmb>CUjBFjyo@w;7a7ZWOP9xcI@!@H(i%c|OUU{Y~4Byr*TVG!k#(#L_sg^*P+3_Iv zP<&aC=Nik$tSqD$UW*;hoZUy&wLS~I%@y6H@`ba-B$$;#wbi<8(s=$sipKGM8bgow zl0WhWT~DTmy+x4e_IZ!~RHwiBXW2b50j16PryJj^r^8EwO73y7FDO|BSf+lLfYj>< z=gnE+u$xad9*7?8Q$&whJVNpZUfAAoUf~qZt?!h!JSMqciTReKLC1~)VZ)^HgVQ%t zC-+WHrJxGnnR}J;*f|XTiUP{$EYwC&jx~0nNR{KtoJtiR#@dbR*7b#LcRuBf$@fs=t?lPg2SuIaWA8hI6;mOy1rEJY67-N_-Ky|=J%m4Ud8{YmRZU_3-iwaoHc4?QK6Hi81wStx5HJ(#khSFcC zcCdcuiB#Duj+Li>&ZWSUDwsx#Lm*M`)skjLW4m1Rhor`AXRaj4(5eOw5Dh&#YAwf9 zF(Y4n6}(=(5DVxIt*b7f%Zpt$- z@7k`~kUojx_8>?|F)J=N?id(X;IqdhRJFj0o-pspQ`B<~Sw@wK+xn@JsokIW-29sb z5Nt^7G(`@NwiE=doTUo2-$>hCSs1~?!VD;wS zNk&K0pHNaGvh;AN*zhsDnAWgbwzXb&#Ql&^a!ti5CXksYyhE(}5bOC=4Yxkb?C z(xGPGf_5R&xi+Fe<oLv>2kIZLA!jcMjPJ}9V+Xc&$I+YM+P z8c2ytOJqjtACl_th@x&fPFO?3$HFcC#5O8Y~= zX8sQVHnZFBlwB>46;?b4n=X6ybAQ5!%GuihY#O&eXS?`$d*a&{U{k^Pe-YTMp(9sCaF9P^|H&RG5tUNL`qy%tpG=%}^>bt2n>a>mfFM|~ zK&7`y@$TN=`-9vGNL4yKDB`2y=H&G~@%;XzK;JfSac_4kqr&LjF>s5D3B2%SDHtDnNS8s(;$reZp~(jU3gv zDALDa>t5{9gKK$aJ!~M}@&Vxr*acXagc2%14mY`{_2T?9W|&9qFO0tpc+&lVjz~Kf zSTLG5#8|wX?uB_=W`6DdPgujLJc`xHF#lW#SV9KL$GFLUE|)_d1T3vp=c^0_8!VkhkIb-pl%CMbQ?JLZ>Uat zxKsDOG~@nx8)nm0bilu`dV85-9NlzmU#6%OJr;qzq=|Qz##B0^1tweI{&OafovhK4 zA7Z4VCA9cxZ?O6uQL+g_&n;P!k3A#eM0pi_njk)0qyWYST|A0;P?5{%_4XBzC< z1{lf+8IcX`q}nlB4I_!GdT6G1b1AdER%=;bgI*ugn4gdiAM1T=bKOtgNZB1{2J4^v zvFFPgR?8etrk;f7s~f4xy=UPap?Lk4lV4LV@x!1nKbNX8oLp~{pxj$_lcsz$@nh>f z_(R_ryKKs)Y&8<$&7jit{s5Ehu-MprS(Y!Ho_7#!6(jZDSHy^oZ{)S)v#i1QnG07= zwXSZ-%%k>wP(6~>3GWwPmD8Q>r5Cm%ymtLI=QSAQ&(~lHuGx&&=9ix=8srM6W&Fj>j#9kE218T14#Q0c)RL63O`4988bGo%Nx|o?KA{uv6Ei z_T{HhWo(m*bM-)!3*T174p)s6 z|7Vw>d(U!R0Ffn-l_;g#1gmqDd~^C+xQLZB9oDy zns{XuE5pX|6(eqi7Hl8vtV>};m<{rjTFazrY`S`E!$8at#iL09# z)&w};jHO?w9rDY=Kg$0h+TzGy(d6?Xpl0`U!aKYo*VP0 zWb#zE`n7w@{XZfGXff~eCATf!AE=)@TQ%_);xTzW_@nsLZzH&3vzrAsHDI)ABoo1f zb=&UMVBmDlPuhgG=)4$f68s$iN z@1w4oIsA_&R|e!K{hdz%C27iEd%Q9%MD9-Kwb!jg1+dk`J&x%@h;@}}DbNx?l0=af zUnPcd!JMGa|Ka*!uRCCDBw(kcDaCes!oK->IP7QR507{`3&H}5$tN|%_Nl&;A$@z? z&0oiJ$GWGr4CPTrYmt)k>+l5bD0+gJUvm09{^ei&_{97=*%&@(6n^U2hN3coF(+Y76JcRyen zl>fHs%*7|fI@hPJ+&miJPl9@t{<2EgK!{?E`~Il@}GxJ8~Sc zx6_=DUo`K?V@_;+jolPEw3?|KTYXw6y<8m7v%J^zQa{UhQ<;>Oxk6AsC+*Npw4*0F z;g{Ek=U?Q?F&sj8cSTy%<^#K?lYZIBT7s=@BBqe1<9Fgo~Gah9mtO`>X7`=SL+H4lWq!=fY(y-&z7i`_8@(QC3N7urmHLgHZq+uv>$IEMwrli!?+O^|xYa|-!o79?= z1;Og3H-2!0B-8m=x2K10u9bRM_gYQ0r-7Z<(i?MCm9FnuWzqmbLwHAV9BOD>JF zxE13vSe{b*$zSfSV;W&5H|d8O|Df0PeFvO9nHrk?j5#gTgmL#IUwO%q^$eg%D1fFS zG0;>L0aqj!7v)^ihty@*@ z*J?8lelyd;AVi{1V9eW)qQO~F$_{qdO<@X{mKQ8I{$}Y<*3i5A+(!WVK=?yE zh})W1I1@a4I`G*Ng^9vWk`YCu_$>N1YZ6RMjR`!_pEkIbk2S{)(q+}Mv`j{ir#S>S zE_t(}XJu05k+GBq%mTV9g(W^zl^t)N z`&3QfGbFRiG)`{Md^AF4X(gEwO?vP&-Pqb2sr+UM9b>DC^+Fm$7PCU2**-0Qg%8h} zZ=2PQlS7TJ>x9m8ETIB&hIx8Nd4CCQYXb*8`o6ofSFhLG^n{`wTp3bxvq_7B+}<~d zT7_%TuxQ{dBX3MAl(klqi7V93AKwMdxN^Kn_^#+ALBd~##TH1K&B^rJG}bn@t2}__LW?ynX{8#;mp_^#6;4>ZW)3>5^$CM z(reG2qj*zlz$Pab*4rd-q>6cV#7YT^z(qHxwV5`_r@T4HT{#dmnTqW+I<3)9 z$H*$)cjmrXPO_RXVv2vx z(X<~t^`rfurTSsNpb^XGM zC?VYq(vs5MCEYC`Ak9SyNQZPQ-67rGDc#*EAl=m(hqZgLL^XyZ&2!VwgIF%1#JC}V7mqzO@U+~H( z2eFZlp41s}fRxQ8jHCL{U_eLiE))BU&3zy0O684X;J%}>82C!XNMqG*7v(kU)&7fI zzD6v}3Qp;L5}Eg-TLV2>OJU{*NJ-+$5M@BA^Hg)csh%T@#AUzgDGQ6(AWmV{m{NS& z#Ii2scsBy`wo>~_58BHW1nJcaHgy6@JM55aU<)|S&2+Dp2meRM`MF+^;M|o|(w30C z-xMG_qt$Kpt8lSuO>=Smw#J9=@J_XwYkKV)9zQOweVy;JH{hjxDuVtR%-tF38>)WN zu@Ux9jcJ5vAAo=hXi<-p&Lo;gbR|MwJaUhA<7}a+JWCOv2U=_~o6J>;37Eg#P6ss# zU(u#$@z~`s-(PsdZK=2uOa9v~{BVxT0O&{;@}9i5A_S7(ENTt}?n*%#h~GpN zktGK!!`uf=*N#aGaB1Ei!~8KdM5J><<`QSNW|yHq6a!YMedzb`4(ZB2dFMF7t+VZ5 zZ=tb$*!ku%0w{*PA&c;PbN7njuY-aDC^ytD_^&_y{FzJ%z=c{u@%o=V{8BD|wL!oO zgN6N|Z~o`6|MUQ8p#?xEyZ%%se{5mDeL`nw`uhg=+f(qG`vg|XlF{e?y^Du`Ta$}_ zJY|IiOTFmma6$=OEyO=`0B*SbvV2%rSh#6kc=RgJtik&b4gKGX@Xws7?~4Y53FbWX z?Ed71g$qxky~{aiq0d?mzG#~L$=2q~_Z3st2D^q!TaKCdAlG2HG!b8@zlOBV0l0LX zClC(#?x)1-2;M)Rw1;M*xZr^3J#_bU&$aFD+I~jxPVLUwypYfM<8KtXA51(a&;Xe^ z*rWTQSnz{0o4dZL?=wr%N<=`df&RO{P{74ZvmwXwFsb7JH?@P_r+>ZW)&vJcJI}u` zjs3gBpG39L0a!IDx_N`4sgc>{NMEglZ^kRhkqvWtrgPg0_Gzv*|dVzEfB>SH2Y3X(~y4-ZLueTqQL;gMXUrU5~FH3~~8)h6t1=ddE zbGqhlD)jHXMer;L_UDxU&8h$N%c~4@@-D<|^u=Im}!P7yujRbd$5}}Thw!+kfp|;Ps9(uykW+}mf4NhsOerD{#PL;vb4s&{9GRJ=mSou zrjIo3*Zqvs(5?90@x{5ZIh_RXYLl}owob$yJ^S8=IaYxK0qvRUhm!?wk}u&>|% zn-u~`pO!$mifG2LuoQo>1CxLD_)EIm!Vd7%l%CXf$HZo&bKq0#l^-TsQ zJtu?RYkR>U*+{rz2+e^jMDrok++>eM#)hQyr!PIzJ&t-5LMv)beIiLQ{N4?`6`W}b zVjPvaRE`i8MDf!u33hbsNqa^Y*?gsKgjfbrFn0WQgpG?cp36s5sfP^0 z#N-{cT0`oRMHyTD()8qYV?sfRpD!F#oWevBJ)D6V;_!x09ER-+OP|{T$SW%+wD_PX zOE7X!)8r~GU2)q+rhlmic3qFDmArbi-gxMU;m)yY{+1Tsb9KDcN#QMrFZ_Q<6&qL* z4PLr+@+K}@(6a#L$ych#d7ABEZerK^X5A3fI$s=Ku{lI3&}m$J%+C}-MO zLCt-Fi|anD;@51z1}}pZvGRDeXdXs2TcvbyPyxa=bE2%hD*nYx$=F7AO5EeVyB^IP zXQ;}&;;W_V_{QpujLsR_HLno#e7(tF3~Rv-!YG?tD;NkeGoPvTESS=2$LPv5U1e@V zd~;odCo_XCY-MSrIqprGP^?qi z89%*QqMEF`>8g6psD>P;7)t&9%s8wQeNNe=_O`BVS_L>+ROxd#guvQ`2HiW=!j2x{ zrOGwGS1H6YSa~|p=Of^(#}==7(@h~hnJ}*gvxAa#$Tf9~l9`)ldNhewB*g+}p!qd9 z20j1Pw!`d^ZFF2Cg||mJZtj$zKtF37wm#Q@wq{{1o;1q=^Q7=?lm~=9p8M}|I*9dH z1cqH|Jg<#?rM6(jj^AE`zDXDF)|IGUj5gcupH+@1ugeNiKLx2svZ!t?J+WYRRfK_XL}o6v zlmKO@lC?%)c7^;`}0K#x%MfqE`0EK; z0IgE%?4(JiTAZZ9rTsD$K5G66buHDf7AVN)cq`#|5kWk76 z%##|%lwD^pU_puW?uJ6E?^8>kZdsL@_)i@$zk4BNnU=b#I0xgo6^o%z6wz0>p1y8LJi8I7S(Jki{t_x?yOc zX-gdO6YJo>y7aWI`xH^0i%F;}W>GxRF);IyDp- zNVcoP${Me^B`mjiyhLCfE!~=;)XDxvZ%YnO$?J4O_`~YeR+w%ERbLSRC3Y<=qJwme z8Rl{lov;`4#c;~&E59;hz4Ye)<7mY~Dr!p(+FRR_A=OKa?I#Ye>~9aTbXjrlj>FNq z>=GeNKYSxjPmOHtUx#z>!s`jtnQ?VP@c}i^ix(uL@1nXAN|0t$24Aq4y-{3qhM`031UOE?y$5<|NNw_iTQkGFvDH$ zcYPKp-V79Avu%pgq;8uBS$cn~?+&IqBD%XtpdpUTeBL0E`P_w5le2Gl6fHBdPHb+Uy&5vBah1EQ=oJ3tc6Ub;t=xRP(<8)IQ1GN%OP)tz9P z+rpSH3IvJ~$zs+y5(B;@K^zpqvfZq%)_<%#h(;=gbzx(~T0{9=AD$-MpHdPU1xzA1 zY(PmUaqbQ4xiO83F&nMkle0#jncCw{B&c~7=!uLmW{}#NgdmM=T$0_h{75V=;4txM|zpL%QA-?VpprwLN zIokgb;yk_w#m^p==NmXAjPTLKM98{Bf=?>n@Y>MzvMx8$hY`nWbpTKXlOqX-)Ol~* zAU6r4|BV)AfY9A~E&=0*fw(6kV|a#)EMAT5u-I^MLa^`%$9A?{#jQcuui2u(bc9rs zA8k&IRd)4ESvVayk?flHxAUBQ;o4(e`bm=itmf&x2ldv*4g7%ugLLkD=muX`cLvyv z_3I(`n!U!q>z|mU?B=@`GJlaI={{_EraDdMsGU>s+?==W_eem%BA&hwqzqJ0Z z``!fB48GyN3+O#zew5^;OZ0j8#DnM+wBEDe*V|u1Od@bDzp=YF{hKp?EPo4d6Vm0Y z6YtT7M=~BwOK0ybj?PmGR!*+APbnnmc_*^GME)isf+6p>9s>j?Bbi{rKUzKIyBB(y zOv#^OAr*Bm^!GAzcDFTAnCD?85%TemkNz!oGJF7zBnA6>DSzow{|7h{SiQ+#@Bf$1 ztc3vAx$?Vg^uLJyAASNr^^^bd=}#*CpMdJ3)?}b4$d*ry=Gr1b8zba$qwrbl-1k+( z+XFg$ReQC~+$D2bB~|TdcM0L4X*ASlB>@-Rd5k%iZO)L#ac(#p#um?Wr6KG^->twe zX=^P$R!~g>5?+rhaJDOqzC4LY!;!QRSKYDT_>^HAK`pj!AX`pCg9`7#%(a%*reo&w*VZ?*iuJ#m9kwb@UPVGoFG0 z=2EQy4d0rc3fm$4>Ge>zHtHUzx9510ruSgCfk8Iv3)bd5_jrx2JA4kC>2mU@SJ7|F z+(d`?sx?{f+Lpl)5}l&1PSf*)rn^2z#L&RORFAyEg2RDHMc-GG;zy6PBt-@J6xeES zKj-IHM7;N1R9?JVaB^~rgN9hFhwL6;?nraE1ar@aY;74_qg0sfU)r6itQCH-bqNBE zmCvC>vR*eV?Fc7YQ357MxR{|n87Kam2q{ze(zn+m4fdJBV|}o-!bF_YFCLqw3REe; z{?3#Hgn)G(o@T(KZ}US?r(E~paP(IJ#q(1#d*d6&2zY+@X5u}cNjxsGk0Wq&Z&2Ig zKy4K3Z&~|Ro*Sv8pr}*T;x+Pk8KK*nbGAiTPB)G*?+?D#+(~m)v=$PJz$jfKJf1uI zj0W%Tc1}gat%!=o7sus>!)Jt)?&r>SB<-C#8!3?!rts2~!v@001xkeL~sWj`U&u zE)WJV%0KUK@0sK;drUMMui{K264_0+f&s^T_~4c8?bfClQ!-=x&Mdkk(H5*)SPe5N z{N6U)^LIJ>#+Qr(TncK5R(E%kxa#2odqmkb9Homm*X!fry?j*(5%Fc&)+SMJ)|cW< zN7viu=GRLaR%~#IOUHQd15rFn<2X816mNW#<=nc&5$YtYF8HyOFocqysJB1nfQ3K5 z4M71rqo8v?O=#lR9BaI^A+d;u?LZ$;UNCDTJdTXKy?8zl<|D!zOjItYoVU+NGsZ+C zQ8AsuOw~i>ea14-Z9d!oaq+wuXOyCxWm$Qmz&;`Xl%U0P|hM<^(%bBx+DtZXaa;J#<>);{_& zgK3+c4OzQCtk#`tz3kRYOxWNh93%K0CQdMu(%S?134mFZn$nyM4B|3TpFK9|grfeDT zrjKR17ncc)(~3$o;EFJOwVk=;8m{xqbl)2HcDjW?WTH(~kkdU+Ff8spwcy1Q62@AJ=E-u&P|?GsPKpuIL}7g_6@c zt_W&9EepE($AJsWB?Iw?KB5J-ieY_u_{Nts7sC?kq8d3jC~V^GRANJf4fV$auL(!4 zO2ha#fd`jCc64aEU;RzcHEg>$zm_oDGqb|sBpzv z(%lk29!?(IJ7x>^AECWceYwHpAC*mwD1owdAq3p|i!MOAL~dGOp=_ua!X_Z>6=JMD zML)n7TlrmJ6-A6D3Zf{=s%Pyr^ssG*tx{48HSMk$8LbYey4UK!4w)0E9IYBjjt^yG zKLogHBZ=S`4OTz(6`{6#ou`ePBIXE^8|i6J--y)0S%5IlH^8#PHch2ClAwm&fA#zH z-5tPt>DG001bf6Y-e{`d+`ddQMmsI@E#86-YaKR>{YSfUQp8t#he}vSFXKP-nCP*IwSCYg;C9CwjUe$unz@|way zVe~1QY%ewpb@_Qd{y0c|?ze+T?8tx@x;;9@&BIjn;kIUPwMEPDct7vCb!i@f(fVKn zL*ov{DP}!2Dq&18^6r20zRk-Rgw2cN3HQ7@S&sqj5G2m)jDR2tGir9-tnG;yJ-#zI z6xlmVRG~Mk(Y0NTMmFqSgTtK@v?)#_xLxzQA{Kl&z&NVyNmj)4sa(Fey$b5|+~KTwpA-1iV%7fH}V)R99-#3mzA-1jB`2Fk+bNDM#`R=w)ZaC^UaTI z|JF@_IhFA>6~U>2n~bEzZ1Of7pV!Kgvov({!3n>w7L@Igw~S0A%MeSiL~B&o6jQV! zs2tDi*vJ=%*|&~O1d&@=XOIz0w?S^B)_f|{(0&@kTozU+;Fa928>D5`$g9ayP~=RP zb&v)%d1&#PoEd%)B|4wldA;kE&0HX~&3DU-EcTOgPVBbYWdTetj|ixMlb-FzIS=00 z!0x#hArRzuAqKDsJge3{OZuGdP&GO)imChLGUX_o+p^=^oXC4CEwV%MCU_2wkkfFD z<ud^C!r%9?E)9H)k93agVlVaX2&lr!?HijVGbK%&VTv4j*L}Jh&e(OYtf`Umc7!G-o0Hu3WmsHIcc&#ks+FD0Cdb)rP!YKnAO2tk9?^ z$FIBD)4n5_4Ox}SQ+%kY{D0())#nb|KYl%|3(1=t>Lw9l*6*#UT6X#b@W)nIfKX&E zd>3xZWEDkhj)y%t2utXm(;10Bky^02#&CIVd6!$O z=G`ILPC0I(f!_mYkSGr594T~IO4846uAoa5?#YDorhr3VADjT`~i|6a!*aM0!6 zK}YLM0Q*2MYd!*WPa5xJkG|~}fndX1`+S};rG_^9x5~5UM-_gafU9(+Fjow$evU#3-cmJ1^mm4&HNXPQ5rDx8O!E(nde?WH^X}OVqA;|ML1vKu( z<*DM2iM!(=ed05GF|L2YA%2(F>I4LaaJqDw0Or8jdVhHGZEbV}sNaO*ex)t!z#E*N zeT`~C#`gQC{d@$BKAw!P-)H8&L`(xwe)q$&y@%2oG8wSH1mF|GPtP#k|7Y@3&06zk zC<8A#5OF>9bBYf{WCqG>H8KAtoqvc?rxy5=B_p#@BZgk;1b+K?!Cn4(IGkP?2uYKRud+yzTK?dj*48dWK5Zg8O@#0+=s4s zh64l0m^o=5<_CFk3GTC*Q{LG&k5(62qE6So0lEK+cF{Pw8pQYZOCQ+pO4S zwe=xCC0Y8e&94eV&@)+tWjoGWA?f-&#h3D8wh}i8)Hi6h*7l#S+@r6Y*C`@yJ*lt1 zS&vMnd!AOrVh+B2z9@Zqk$I-?BWo9lG#%g)!Kf8THc(oP8GJ@b-o4EKP_>+|VlG)e0e53yoOd_w}oC(kr|KS#~> ze8IA=P-q>BI5mLSnXq*1Z*>_vENqrX+%_|iGBN59H+8)$mfl!AM)tN5Ro04%C0ZWK!EIA@03nB>5l@eY znjN(vX?G zI6O7*Q35YO7TU}B>M~w4g27lZ^bzs=PGuN-%QahJx+JOWxfY|=jVLhTAz;G66%}PE z`gWy&?GW`Xq|V%;}j8 zMdQiN!TCrNgUa2r=KK8kJp`K54;gH*1)k`eq@#+ybn0m6@oW(bUJ zd(zzWb2uN*kT>b9uedQXV0RR*B*N6|-)t(s%za-Z;waY^=n_1@oV#!_DJ|JJ# zz8SGk#$~UZ7vD}bwkKJ?xOjd`O<`Nhj!%1%bY7vpwJ*laV-NK)N_2EdG1?9zJ1H6CQ2=(Y zPQOt8j2C`ilsw|FlCu&L>D(n?ed$ylA(wf32Sxqy5uw`cVLW_Sc@_n%NU_q3I!P@; z7gty0m)j2(cGZujCSC!x>j#oWF+#%oJ2M)?w3JzBwPK1_WCZyFuq@iJQ$-`+L*;LK zOxvWEN)>5Ykz|TV_vYas&xWyCoDfzfdQ*Fyy&yh^+mY@PotJU6YOR{u{jl1o&I#X791+F z&oYFB0PS=qv>LT1=zQ_r`o*OtZK5--Lmz4IZB%GjCed_Q1JOLplR^aR!PD>RbPbmz zPFndBChKEPSz6x%n(@P@Mv1ld4uF`YhqxU_-&AoxO9CevF#$pt0$361GzEd%=GO-n z#!QiXjLeeeeJ<9mQ}~@<7B5HMtXyRJ@{$p5N>c+~h0VDnBkpyP>e#a-$75eby9>~3 z@S43ZiP<#pdp#YPi5*+dN1!7d10ykLGS_IsW*8OJrJ>ZhaGfVh)+rHOE|h1fi#<7X zhw?h@}PECz1p6^kg~ z_s`AihZ>^KWZfPN5DkE5x{r96SFFeic2dm17at4SX;e6t?K+<-7rPGK58yahyi?mD zQI{%QAj{Cob5HH*Gh}Tw)o7+5-ncnoud79RXKtP}PqW$aMUP8qv8{fj+2rCxPgeMr zg?9r&0-07V-L?Y|!rYv%ao&!`TM_&9mGkOnWV$vow~Nn! z%d0h#aM!3Um{4?NY8H_aI2uiq-FmMPaTXW&>XURdOOYt^@2x|55ac{5_M6F280dTf zcw_iINFFnSk|4jgUsU`k&=u=*-t#^0$-$a-D$6d2J`tIALchY6xUnkJ!&)syx3P2E zd~70{J~nW+V1~=^`MvG_rt0by7n%Y~nLsH4oT3sCg3<8?S;vy9qZ}Z{^S1yo_L(QW z_n=2X$M3F+zZaC=rQ;mNd7{TzM@^U?+{VmgzKxx^Tf0=;IR9#tn8sN)R^wU0oPbo& z23Z$Yyxw(nVOJB#9HyWpwJ3C8p6Q|d{RKUUuaqJ0{P9RrfYO#plysTdB(q5Cpt#FT ze3k)+Z_31-QCXsAfuZ!0{`Y3zX<8#VIxPD~BctPFi}1}3>T#@>f(@s%U$~(bVukZi zV~+UL@j@yWNo$8w1u<8}3ou6}o>$I=5er$zRoP{|RGxYx zoZN2s^c;2c+x>&x{V0Kmj5A048S(>z^|sfs7xNU3yC;LWho+~jl8u?BFDtpG zQymm(!RN-lo5W3D5;_&;R~oM~)hwVN2F+S&d72A0D5Y4z)UXQbC7zzkX^oC(jp=L~ zRQd;@DS*!*^(4nS_e#B|+p&?_-9C@XnpshVrG3~b`{h=@|*+-C+o0UT`>x zbYYvOhdr`W^>2Bi0HYFs!F26(RX0;mT;;-=tCfU1Z8p}(-9a3in>Ktljtgv~_q^8( z@LuD9i?kAGc4{7o0CI`lcgmRxNxzMfWVPX&uEdesX3xvgdsJbT=$P*vMT%S5S)Npp>sFtrMm=WWH=m$6Um_FrrcnJDvi z75bnnD_~0nVd{N*#_g`Sj*YR@O(}0^6>)cDGZEF`AQ)i$D#)}Z&Nn~r-&D*S8>k)m z;e9ULi*%%QlGLlhrv)-ZWGM_b7H#MY&s61vj!j6V!l|SdN6h?^qIIO5u9K@2Uk}J< z$qb||R*j`)@_$kZK96o97X2h(H?^|J$YCYp5bp(kR7}tX1eVHxgCm7OrP$%5e(s;rwI(7ZEOuyAq{Mx z&7J1mqUAg<&dWz(E783%QuPh$XrUo%=+Jrd!>Y z7kXL21LSE`TdpsC^Z>;>pXG*$Vm^FiP9T^@c{q!sS1qcj;L+j59?Qhq5`y-^KBNd z+TZ3l(;*VN!QW~VW;(d!WO7h=99b7e>aS#=MTVN|(_EHJwPs0q=F4Rg&)9fvo*>a0 zk22hp-<%s~l$4rU%Rp0&_1<+NOn2+XScsuotSp?~Xn30O#uuX|wt+s~a8veHO8y;+ zAjKP1ug^TMZ4x#YU~_KFTE9$4KmcYD&|V7TZ^i@pZM}ovY03OS-t1Av@N1wD9?h4z7C7EiN&;CReK(0 zNFgA(pdMZ4^!~PnOz2gvNJRM zd*TrgHK$uW=QBz+ELUwWLudwF6^zfs8gb?rsi0@mJqs$ZrY4k{1C%jr=vxn#^Uqh_ z-VGJpMNjauY4#l_*{m9t2n^+WBUO|Hty_o47X=9~)3{LfHbN{-S>w?Kd0;ryCkbnm zCN8h>>C8MMAy?MDo*wHpS9m>X9p08e30cE%zgN#a8#I*?b+y?IxJG*xcJpqxbU!I6 z=?-MsC55FssP2*au^utYmc1~G+a(@O*(Oeg|A9*pF2QW`9xUG;*O=gLc=9Lf~mgJ#X6fExVispQ)qc4-iS z+B`&Qmw<}RcuxaKhVz4sWu5ZzYIuY3v+8?8$M#1zPMj{g=_?wnOjyWxn#bPr8=JTL zj=?8*4R9aEJZNH@ zxoEtne_NJ*HI)1jD0VLKM>@}Me%Al1q@b;*Gq985SrW3d-HxLs$ z2ACmC8^i=I(<7dL)Yl&wby2LwgIbW^nu9J(wFv2)*wYE|qw3evh8B@{6~q8P6# z|5WPw8Rw^Z>5Kj(Gnl7o3Rvz+vMV3mjpc5VFMoq0_V-!M%nxI_zB-HYBXs-7}?AN#BGOfp7bA^&841g zme^f1eitlXpeR^n5Js7`3~>2qHE4lhcPB2?{Jh++5VnAp&|cmK!;GkOs$1k(?A%3d zPswS=%TcJo4BwIDS~NydLz0B1`@kztHsVKcojXvZ(a`kqul3jtZ91hhG@uFQv*VfV zb)gQW5%PnJ{E;aghPAF9yAry1K42AN^+rO7qFMOm3*%CphxBe9(dv`EvDNKMpU_sz zTw8`VFs`R#c|A82s3e20sL=2{Lzd4nUyYUX`Q3;30~X>MxkgZ2P%kpk#D+TdZp6Lu z2qSUq(HC6INX7kV$%r9y(9sPu_WQGPYtEH7I8(wA-z96;1k{9#cg8-c4m2Nx8v4S4gr9RfF>7jODX zV;jv3zFJ&IuOw9}sn99YWG+34HI}fc9{WCe;`5Z`Z*iJKF6u}Q=$V}@>CE(q>Y5`A zRw+c+jxI=o6YRZw5v*6(;-gx_Ts?A|pd~z(q~SzcAzxEoh5Xgaq`bnBt==Vxc=!_1 z4kHs?_hrVaYof8dXl!toDUrlXUI8fF_S_oJ~H>6FK8o$Iy?&i_; zk#i#p9ZI+qC}`l#qe~6s%i|CHorwnL?#A>?Lk)LhH|UM%oHQ$F-ssw>RG&*u8fInDRu^baT(YDf4yDU|UVh?ZJtL)vC6bC@MieU(POv2Cl_#@nc2FgsP-Lq@vlZEyCVB0`O_3Y=oD zQa_BG!O}o3+CAFVLx<0I%bQY8OEM-!j>Jxl`IYTOXO3ke-}}IHnbT8sZy0ND$_hpi|4qj~Y^TQ0k zIHAZK?1%aydeFo3EzrIAjWh(sS6=IlA;_IQdT{h8*}b(C|BLLm$8}EEayuAhky7Qv zA}E@S%zBLxbBIXB%>mphGwk3pmPKRF=5aiv_{*GWA~4eUpxOs;=)cjx5S6QIduMwI z%XX3Km!?0N%-o02u9u^2A0WmB9GBR0v7i=hc>U59f)W2H4f|UT1!l{@lB^QSXFCNl z)u=~rFv&JVGqUR_jSE{w!2uu0x2$`&l<~Th$IJKShvwvUc%&1GSZ^uE)1KA zE1czKaE_tkk!HnW*g2tt=LF?vpp2pF)H8hsu9q~Xo;l=$_f>6%;XseAF z3t_T;iV>ki6_HwbfOjP<1Rlvy2|NAoT@axY5eQeRQhzOiGhv8MoIJfE3aTY`JJ}6o z291#vo!>ZF-er~OQtf$6eP8_6;6J`YH}ETq=$8}7_Vq(Vww}+<5X$eGi#rH%AE-9S z)%{DZ+-txEX@XtvZpWx2xbIH3Cb)qJQ!1YSt#&m5#Py!3aX~`->haH+d`rG3gyG2x z&fok0*9Y#JfTMEGhCHK71^lIAcBWAmA6iMciTD~muBrulZRIfz>W27!z+}Vk{t>fp=6Mb zf;}=#ed??5_+N7dekS9&)85fSHjGm?kNo1KA3N`<@V7>S^Tv86sg_?)zI}&u0@2_2Mv5@s&!~(P6*y_F(-c*M2R@b_(D%d2_nT-NQx;98BrcF?$)hNhk$L$!$QkEm zix37C?05gA9^hJt*<0C9wIme2Nr1i z!7!nM_({^sS{@WUiudVh!Lp zdK7wa6Gi51=(j&}U)y9>xc|v(aI{jyv7StWxVH=exc!y2Z{DZ}_sglnag4$i_qy1* zBCDS6NcbK{FYqUG@@3~|(6q7nZtJL!lwFcXd98#W?%VR9;jf*(S5#AQ)VW}-*D;}y zQF6toE$pS!)2jD`0o*02ouZ6YqWZEQcyJq(F?iV<4s)#G>rb0bb4h0;zK0)v0;Ou5 ze}4807CdM*ydba@jIuWnGnUsUu zKIp8ZX`8Q?EeSI)12b3hsGlu{wc}P^M<0bJxM^!2^156XIl8Ut>%IZU^^LYkucYg2 zRK4-1Qa4*7hkqfiE-CSq>wfu&kB?=aio%K+4M(+5EH55+%kxe-lp5gVga@;|4?fIQ z-WFRSV=Oixj}!C~Kly41qNMMO@5?Oc=Q?(ZZlx3V%>k2d%{;+7CXKp-C@R znwBeBBIYF2`9AHUSGu|n38HHHFi@F#YE@S-tElOY+UR_VTc^h|O;zdVQi5{iKa#pM*vCl)5h$w9!KJ3>=Xg#M{Q_PYzNDT(fs3_rhj$2tA->yvfb#iaEO4kVu%PR;^y4$YRF~ zy|{%b*1YbfO`^?cqM^DW1+NcM!-@)u{9eN&&s0$NZro=|Y0KlaRq=UNh05BNUrCys z0mG)SuXlL`JBLCR{fVj<({Z=Pf)r`4q6K#%&55<}siut%GwcgIqhgQpAfhpdx!>~{ zr2K&7d}<7S=0_d@C*p9AqRuZw!PpItEv4 zZq?}^j1>+prs71zgv&MVcu>gh981huy5-2}IWg{Ky~55>8h>6qw6-g@%2C;yZLf{< zgNhL8+>$CIQeHdyU+y_wk;v)~PJayraQYCN_{ecD-)Co5E?B983nc6iMYSb9+grIe zGpY{lQJm*w9L2qw#wgvOZp(wOh6M(swv}T!(0Wnjcs-sy`~_Klxc-aVVF)itNm%{1 zF;wY8i68B}Kh;TrTF!PJ67glltuT~WO&q6*i^LtC!EEQ48cFo~RMim2CFxFm7zjys z43D>TT(uXOdPmyrM~d0qS=)?zNypie zI}_yTQuHTNLrR3&PNZ(^NCXWO-t+T|%&5Er?{&_M73$(>R=GC4}<*}|_z4uJ!P@2>(Hkc=@eohs07Fi8|u29Dij4>Z>vk=Yl_8${bZR><$K}U^__o#e< zuL4t}mTMmsDyhXLqokOTjv7@rLQUSo;t^3w-PgaGT34*%omi>wc$w@?#PZaxD%>9r zHyL!SAmaObxsrHj_kn?dyNW8Qr^q)zRNpkg+lyuy*%KOZrY$`NsJL>W>{O!U1_zKM zA)h40iB1+1<=)M*55wCtZR~nwe6U|C`Gdj;A^P?T!#bY<3O*E(AK+GM#7|I)m0fk3 zB7wS~T(~ERT;O1}-Q0yMXXFOW0K_6AUoJ3R1|J&M`w4v>_Ns6DK;j`cXTl4*2Q7O$ z$xW=84%bW{UVE2yQi@pp+NGh&Rlz7N^6aZ=NdPm)MyHWNjr~}e}#?hCVghYHNp^( zLvrBCdLsuneS)!k=G z)N>tWZjL}2rcF=gAmP_{wKA-{V_)6OOr>^8p(iKyq(zC;cvl%!06SY)%{C@zSg|TX_ zd5Rbi(5w(q#Iz?KqJML)R9c`Pk_)-O>F?@qp-No2#G;a|`B{-`ySkBo6$#r<3} zv86o69+$fwyd{p>V=(`DwVv0WYwEluP@Ap}sNy-CO7N-%^I6?#{+dbrOBF4TY2T#;d__@|U;E1yaSb^f#fZjZq)mQu&%! ze6kZivBm&zF^V^A)s-)QlM_w4hmb8g%q=pEMPfZ0`U(qj55)Qngl}G<_$KR4PF`qa z@l)=r<39Ff3RL)nR;=_GwMg@E&E#s906B5Rp!tltSMpnV8Ihoz`yy%-#xyNs{Oj3mSMq!HbN~i&Z`$ly9y@_`u#5LDinN#6L4SI^x!&9vIz?5`U@QiHJ@e9h4c_ z)4m$rSixv2fZqp$N`3^Hwe%fBtGq8m-C6O(^9R7OAimH1^&{MP_Q1a9hzRb9KuYZQ z8I3x6TD1!tA%nJ=)p`{(6xu4}Lc@ROFB=yuP?jma_-5gBcbYt1qmd92rTWbP$gUI$ z zeJ-2>URVfXeeL(U?;fcH-rh%!HE0Vek1P_vG`&fY*BVRj-&-qY@-Mc(AUeOoiwDfh z3KZy+4V-akgIMYd%WgK`sCW81m)-@-1=Jd*nYGe?pY(ysME@|uMWNhS;JM6-9ZZ{8 z_zu=!j511S+kp*^-oQTlN{nkYetDNFg7bf|_tsHec2B&hAV`O#bazR2OLuolcbB9{ zhtl2B-5p9vOE*Zjbk}*%_x=5RmG_>z?mFlGaqnR*;kzE6?~d8CXFjuM_Dnunvbw<6 zON}3f9a<<4*J=wraEhA!QA#u0C28*ozxuewxIEKvFF>R}vmj@?bw3*y za1TGYJ5q1efzR$>u}+M;B@IY7VewR_#Yj?!IfZM?)Isxqp10rAy`&Nm-7cE((Xc!3 zgdxeDs)Tdrb zH}qFlQ88y&RLy1NtP6AG!*_D|C`2Fu(;pp;hg?EsRe&-uDr!6?F}NI81xpc`Q-`u! z%7mr@*}BaYO6|o=6MKyUI;b}BCg9p0O0F=TJj~aTq7*9^by^}!YNO>Bh=s-x($#A> zF<&k2>^7+)wK%D!I8ktWOqsEAnd8Lku`OP=pWQTPO#7Qr-eRY}>&4?qNF~bmVzddT ztDT4T?FbdaW9Gw68aDl9crE`pYf2hX*si1|{LBe!~W&P#y zcc&x5GX+uf(;sHlv|I};h447xDVtXb4Qf?=lO|}Y#T9vc&`Rt8t~r(y_=56nljZ_7 zgRTbhU3a0^3OCIqGR%OdHZj&jrD#YPQ_zxX$&KeZG#0Z=X)J41d8>Bp{r z0Tsx-rT_ZUrhtwB2_)qNrEr;DIfS!ZiyTK^R+33XYmdtO7x1T476mtXnp?W%t1JEIA-bnk zk^CkY#i!hcR{LmcT}ilQWZ}>IM!t43xS4hCx-f`n;eM$&GW&e!NUojmEKdZ(G>xc62p$M$WFJrVSe=@s?^cVQbL`-_Gp5Z+{q$N%fg&fb zP!1@o$`)-&xwfyngW)6%TMV#AgmIsB2j$*V3daHZmc#@pDGz2W)t@OAd|p3XT9{&% zy#IkD@nv*v$+EuoWUjkJy-BvT!(SAPsv9Sd#$e0*Y^JAls-Y9%*g|tE{lYpAohAtL zxHQw$L=zXCSjD&yXW|GY3y2`X6kpvzv9l~4zkp*t*T=f0;W3xRwju7AD#P0q^EMOVpWB1if&Isa6_fl`;w!3DT*+px3$MVxrl8; z8dIpv+%tWyqp4TdbWt5oK3c<|>Ml-98ECMe--T}SlTW#Hoo89KZPceGW5f1rku~!y zrRaw%;BVa(x9#tX*|v)h%PK05R)_&rvTQHejPujO5AN~h&(bTp(aRJMh^6XQA?aCu zYKf3J11kGB$o>m@w-F$cCnrR6j!Jf@kAeZ-O?#({h|n`qXYCDJgPMlg@S2g)Km*6C zEz#}!cEu0+=HOyx$wR9gZz(vjDEg!`KYi&_&C4TpM?_>|~!n$^~!3t8zqg9#7u#xE$)2&%euPy~KwR7!}~kBYS`C94MS>BQ6042kjV zD&()rl~1zxlo#qrXi1z&^_cpDHwLCv)!%>Ua}Tzm5Lz_kbt!Q_Ni-VmRG6;NP$r{n zNUpQbVs%bcHr{m@d{rGG?^6rITdGJYozsWoLavl7Wm%8WzrBG<()?l4VATDtf~u2) zt}$0PVEW5jG@8cH0WSIINM_$777LA5N{mFW&^#ZD;R=S}0$-e4cq^%t>Nki=_gu?R zKg=OE3((m#v5U1b5d8mKrUSNR1|niatm(^3$wBisb z?a+O=8JYS6mbOVlez5=*w3nc>h+b3&|2B_FfVv8)D>sV;23u<^3WvDK4&v`Rg!<0q z;nev|M)z71yCeO)REYT3fP;Smgs(E7v)$=Eox?H%gsA_tJ$^Czd|p3X9D7kEiubp9 z_-BhJQGns)xecEG@2_A#1+j;9dkOe=bk@{Xk0YGv3^5!%fi$Z-T-Z~6J)_MlZk7H9 z`GDs}hq_R{RF2Bp?4!JklyqFY+`RA0Eya;qy99Mqx8r_Za?V>bWM@RTOzSC^^G-^K zZ4|!zJpT-*MJ#6+UpZ+l@TA)4;ujQ_=VA;>>!c{JnHx=PPTn`A9as`&wKOAsNNv~4 zluoEQ26VdndVd1JK!xw-}DQA(-Ztaz!uY2zTTughA7MvsVzJ{tniZK-ydXhvH2^drHQNqp3pm=1+XCmaSi>C zV3P`X9`z!5QhK5IS-5MlSQl>%wO8x zSlHM(L&cTEhcOTP6a!MxZ{lYO2j$WX&!lbr>4KM&NART|v=x z1NG$@(%r3f@t~4<%PDkWl4R-!pSEvn?EaPTKhhU4yWT%@I$HgiBSdfYN4k-yILqCS zWJ+O>Po-$I<8M-OTd;|;3pz`_<6&Nwu*vSXK*D~0a~NS)Gp%x6HLC+;#Qfv#TH7Zi z7jriu?vf+~^&ujBd8^eUNR+4L8*!#aVbp5x$n6t8YrmVATKaaxHC5!P@wzk46cpBZ z`MqShtukCWG{+0+m1Kgg5i^xmi<+gPG6mmY)|Z?|DIEj3>`Iwn6rQGducnh*K2tjf z7qP@$5b3;bs^ylGqNoi9369GZ&C@D6btj_==k1&0fkvu z%sdpzBy;d`7c!3ly<0S&a%T9}GipC?RB@IF)c3&l<__g9pCrqno4a*2Z&7FFK0;$ky~5Sgny?mg@XOzJ3lpg<<1_B7jJ47x;Euc{Y31oc^8rmv*5V3D4lh`guqbU@M@O2@;B`Fm1vELIkmYI290I|& zyF!^gNOdUOpW>rzVSr#5!kXoLvmJP)ydgWIPAJ8jn1jiwdd*~Z-pq4XX3Sy6pZpBD zd8F^tj4(`p-fx?;4FoBVr(Eof0M0#fX-I5{VC7S|kO0_ec!s{T26P;~+ zLl>SE3Ss4?!Z+FQ`Vuly*nV3_de7;Zutzr)mdpfUe;!e5}p+DQXH)MBj6WU>QT_fOIaU5niy8(=VAmWrH)@msZ z_2FcaaUfMEow-<3uyg=j)JiZd^FV@O8SL+ZycZ@7mH`+%n z%nLZz4j{5339mnxcA*Sv-H00~a2&Qi95Jx{qUBVwvV3WnHDS}*GH6H`zCDM7dKFnv zq+W$(?y>Vdsh_meP=iOm(NeYAB5vZ7ta#qJGGwG~o7*FAa0#q20q4~@y zC7bTiDM#<~=ci-|FEX3Zwnzx8D5w2IZEew?5%O$!;G~2~GsHzdV4VpB)w`akayv;B1967@H2xG`m5wrg9q?ojQ7;%NO zMb{lA;l|OIfmBbI8xEMOiqP#DB}c2iSkujrVaS+mpA7C|5BAE}M98a^4M2pybx-2U zGsgpq{CL-Qs1{9QinXu2ggr892cz~C3rH^?Zh{wzP(1)RTm-?x=YI16yF-oz^A{SH znbs*3ts`wbOQfq;rS93KZm)4G*c6~R6~^rcswq0(rE9t=OTH|o;h<5j8{gKr_skcX z*Qj30LYZZZ%v0s(bOovqa7^lNygl9VQ|j>Fvt_6`LF_NA zZTN~M*SC7gzcv=m$kKqEM3Nyy1W%_!=_Y&xH0UFApQvd$cxi$3hbDA%+!-8@h-|Lr zkFSyOHn{v#+bfmW0q1?pjUv;CG_~j(jmb|OGX)3D#e;5*qp^h~D<$N`e78VhTgwwc z3en#qAFx2H^}otNGK6~u19c_!!PVWuJ~O%6JA9pq;u?|EJd(_%HlchE(<@G*$J}0S zObF@0a>pKgB$6jDCaZCmA**-mG0h<@()y}&#Nq35M{B+2n5mhZ2_qc6etj_MxG2_62bW5%#&s3;cB&PWl;1mU=WYNU!J6^T7k4L0# zyuvL=!o7Im*uw)}HM^ENCES>j$?{)h`2$?t66%KX7iO(xj)5NLOpq^7R4{}j582ID zieKH3-o>06{ixJ1uLcBOYwE*AP`RCX;-ELWBxYwTwlU3!rfBuVnkDFQ)V;T&DP25X zs*Rf-6`D(I$}Z-qhT8x3eKT%zywhXs!}e4`GQ9x;bl8!6h-#UIhMik$ID;+B^C2Di z=Y9wLMNtg=0aFnz%X16pGVC;q9*rp^>d#pY&d>D=@49D3ENP|{=#<@!jiOk+KZjqu z1p}WI&8&f^>2p}2^I>S8Op9xMmCoIq3`=rV`>ssV_f9j6s6bXYA-f?*sJ-T^LwIyC zlWge$K~(9aLMo2{=tRO7_G%$~gEFQsUOpDqN7lXjyYp5fM{P|__uH## zW!i8fIJxa_kS1^XC6cnU0kC-xw0yt(thWT^1EjlLVaAU4f&GsI z#pJ1p9+qW>==Udt|V)%uu0cTrP?Sw1!03 zd37f8Yk>cCLaN%>8P2vET*A`>Czb|V6#uA|*xlOcS#rW~jpyadswJJn<{w?S6$__# z^}tCt4k5CVlg{nSg`BO@UNNyJo%dyz&O|BtS*lj;D)oMhe&%1i`*p6A(w{{>tZJ75 zEB96jKGT0fg8nDdwTS_x3Opjsa(@JGNr!p|GEjGa+CEEavQpVtSv&hQ5*Jh;HOA@+ zq~?YeIbJ*AGTS+$ctK~+A6YlHH#&RD!wzAc7am1mGyKAbc22ng&VSviDD;~C~gkS(#aVGVGFdBe}5$5z7s9M`W_ zE)2CfY(*InwSZektoJXs&g6!X z|9qLwkw$K^$f%wJy3C^f-NFx-4#k8uVzoY|;$N9D|6z)^Z9SL8D%!wJDqmC90DL+k zK@9!8)~3{}Ks0@N^I_?I3j~0gq;AlMqy(1STA|-0NN6O{g|YL0q}FG(A2D6*Cq4{! zEVp9-j16pJ9(Jjduu(!r{$AF|3G$2;Wx=KSvouRo^dl{^A(rYeO}`9lbrh9+)mkXp zp5cmbwPwC=pgI?*#j}H7!Z)iDYavf>8=2>mx3~S3O`iwG5~rwhT}eAqC5B4`){o89 z`!6rg3i*SVr*cU4Oy1PXaMir>%JOO?s+GBp3jrwb5&3p!vG61+ZY5STk@9j3w@+Q( z@3W|FW3)0(gdNDz%Ec{(BgzT6UNpN7AsC~T{I!a5cB23qxY@5F zjDq03T%ZMP>|H9Bm0QX>O5964KV{E1$cHdbf$WhVHDt(S_&RE0fh6?S&WDr*CTsRh zvaTPMDZ9;K*OX_Mt`(v+1gtKbFNbwaD`2@q;@nLKv>3RGMbfL1!Zpy~(5{p+HXiQm z&%~FEyf?6AuJ2QOXOn3F(vl!Hv7{7fOC%z%$yNu}W>^9O_I}dxKRi72w0e1Qyr3%^aP_M6gG;j6 zn66&$(bn2DW(q!Z_F!jc!al9lx3q{=TcTAH-(^V}FQtl*SpQL-C6d`?R~E6{JYtdT z7(1?Er7YB?XI73q=YE=r&q`5 zcv-LWZ!_s0Uy4Dp9J$@bsf^ENX zEBS10k{Tb(NsYd)gv z5U*tu)Lj%Toy?`HoNUY0RG%9OLkq&ik}7TCCOkppZlkM=ClU2;{_{I$mZI+ei@93X?&h zXYSok$B3y0U#nRuLG6F&oGTUh9?ggRv6sb6WfO6bKv-Q|q5<(%>XnpIh3#_@1Qs80 zPTK9m8_Wvl5W5v6{!O;-hL)N}aSEfZ7NaPF8rq9c%nztDu}LBEv%t;!i#VdqLsFMW zn93}7j1u{vZ?<=u8k8pXg?3Ob%RbOX%XNm8-824LKDA0B#H|+zL??32%j2!fd8+kW z0>`?_A|G4u4AeeWuih01H1b+Z(aGhCQJjet2*5f5!JzQ93bbqThK%h_=Y5}Ldy_r= z`@IAmO{VEv3i`W1dNS#pp}zlpKB@~OOU7*f0Ums^2=Qx{LYhz7=L#sEw~Hfur^KBH zZu88JSpQw(PJ+g#C`lsng8+3ZvP4OgP)N3_8GT)z(srGa)y!DwdT<}odY7qQbwOtI zv+WsOJ^Xp%YiB z3_u{L-HO!vK*q+%mX;5iK;G#rsI zsPx6WUf=sNUaBSdYOBJ%i*4vH7$zML04!u>9<7I<8k=`utAw)UNYblL1G(t5j?Cu* zjoN|PHh_;PX7?b6pU0&5?6XE85vxFPe>3haWp?Hu&bwF~ZBmjk&`r4_Ng2(NOtm~e zQ<*KwcDsh%2Fq$%cluu0Ow~yiN-8F&dbNCVED;y`maFEAW@uVZNSbR>-|s;}(}!IU zyI}^)9q|s*KWf%Y`O*nDTnp~3Ir`=z|Kphp%gPb zuMTNSy3n)LjIz@%(Nc}@PydiwYDST+DV}J)dHCUYzlGU$;dEQ(Usn^pML$F+kywtZ zJOB+c!Ts|BP1!xPz{#iZAEn}v}`R@iS1pTCsS78Q{h$TA$Ds)#)uvZT2HR;J` zxba}jLn?S&bgnD&#G9T+nR#iC|R;Bv}HnMMNL%55kHe-@qZVZUn&Q& zLei6xl5J3Zm;1cysCRt%GkD(m1EMK3GOnc6fNcb|&QLTC7p)CrLv~(v#|h7qHM1J% z(#o7j*Kx{bBh43gWbf~in^5h|?p4e$(KJiK)=}>T?^@0e@q|^a`o(T zE5rR|mbV24CaDQp>Vxcy?{D%XDbNOTKubN`l@MN}{$doHm(ySN5EE7eHN3L(o{^w(<>KFCCXW!Qlt?fm!A z{U*^*|By&bk)bPIKPiIT)%VdRMI`tH`rD5b$vNM*nE%r}pt1m~uG@AyM*D|7*5(9e z0P2@f9~@U>|8%#acrQ=(>g9ujXa~xFmhs~=$dlwJ?M)ld0$e|4yNT|z2h`#8{T?U$ zdjS0}b|Ie^Byb&^6fhpEf{1@L^nNi5fsf%~fNXm`N`CwA)f>Lz0hZx)77X#fzhYzY z5J;3HyoK=JN&YgHhmSsY5BUUt6wLUCk^P?)1YUXlK-DQGaj$=S0|e4RAP#>fDE#}fIA1Qp_}K>qk#HK=-Yz#8WWnhX=q9!IKzGxkTo6kS7oSP=P1T)^-MTmWBqVdUU3i zdd7wfv^G}8L9)^!aL||!-+~hpeI@_o354#GCr`m3L4hahl9}AV9}s(a5rHQqgV=-o52E$L_(pxShB^haL~W4NV}T&-bGLUAu>DMNsj$Iyuh<&RlLm!KuqhBl#g>hpL*`o15V1;N?MwX^am|;oj@z05DQ(BN!)TiTa)&y zhgJ?s6MW23E^V!4n$q$**&M!V*-Rz9H9uV_3aYfcJT@8KUdZSEVwzuns_%HX{jFV2 zv>lVnD0bk>gku%P)?O;>RDz@&^VK*zS6IO1@L7V30;FhdDs52TJ`q7=tK`?^;099i z%W&N7I;(f5CU-CnCxwSy0T^~D|DeYY@*ooG!dPxHn*|v86>By}MhB}wGVU(=&^lW(~e4$C=$ecxw=ut3r zU|~`3aAeap+1*Z8(p+dmTVP8h`?zxgq-}H&{A%4as8;#{EH9}od^3q6fbzEt1AZ8F zOgG=R?Z*5Ljp`ss60qz(b4j6O_83?;O_w(HvGhtl3ziJ%Rmp$f9Z$8*Fim!{s@(Us z^qEfPWx^XF!923FUhOlwYP68+aV7SwUYRL@q00LctmqLp`wiE-DhEy0A~FjWEQu>E zIS0(y60EBu-B!?Odp|Ujlw(wIprqew?|NRLS@avFTx~HyiJ{WX#1E~DM8vMrYZgWj ze{7|A2oPlT{-WLS^YI-MW$X`qx9!yw!Bo*;`wYAxl}+#nhFl8cAK;R=Og>1iCVkmF z@H3rr3D*=^vHaBW0d%EK^5j0R(=a5>aMHnCA~U3>dgL{Ml-4WkoS}Bk)u`+OF_>U6 z&tm_E^49}4aJ?6Eft-70?pC6GgoP`^^F^=q=&iN}S9qzXX=p@+Mn5`eO3;7c=$90H zy&B;?Rq?jYNGqI5@G`j+5@*IJdIvh1Tj9ht;kYc>O|Gogy<&@T)_oXdp8rGAv)IaB zkIxMpvbB60eqWpn3(fc}wG?x1Ui55+3;llmczWW_&JRG92 zz>FB@0Q9J&!K8hlMBWi*{TYX{FuDgL{bB)apB7b8#E!HYqh#LD@I@V@hE4PKp?jwq z;XRI@`6y_!QD(Sq?^NlX4lQ3oh}DMgp{+w1!>4zMBp}OIj;_;E4NxGZnvR!)_$D+VUP8;PPo*WtW;zcKaPiI&XHu^ zE4VA~tjc4mlt_VfQCSIC#vbaih3PKC#E3EGg^RphHV;2HP|Zj-{HnG*mQ%KBCp!5a z=EBKvT=`l~)fovqT^07W6xR99V-E#gqkTnfM>f~X-drgSx0#WZH5O`f;m&lF4PnQX z0o)o|6?IhSiwzN`&qvQ4mc=&}Nh)&dQJ$YQpf$dELnWY@ii!v8!hC_a!MA0Jw~7>$ zH{zHWu}bG@37=nBuv)>s&(+0{h20&GJg#PT>DbOQt=JWOff2*XY6eEBGhSI+5qJY1 z4vJ&nVnkwe4pnMVO;xQ~ZXSoMwYwX)RtCxr{fCZO7idGnAAE*pm60Km#L&{v(#ZKD zF#G$$mMPCYU*e!@$yXXE$`}@&AjG~4JsvZ1hRX;KnCMTU8T!RabP1~Uh)NDP86ztN zx~@w3a2C!O>WNFZ(QPcuQ)?HEZx>SoKi%;O1#+5GP17+aJ8Iz+mEvg@@1in#p^!yg z$-gR%8CRgw54~T$e%Hz2=-RMw1cg;w(S#A(LmF3=>J<0vdgrPU<#LAmeAjXuwXHJV zfmOpNZ0NG5#G?9od>16loN1OzT<|yke&X{IM8n&qsY+i|k++S?O)}|qRJGDpua4tM zZ({GO0)g6ur@|s4%?m~v{(ECimHc}iEm$Ja{r9XM0tKW3b5tDx?a~!JfyXG5b!kYI6mL>)tsviZnOcwMFmD|xV zGm^R|AXghvg!kmc5$~V(gYIo6c#oHsA+y{#$i5$<258MX)*{lbQd5;l|LF=npx2YR zL{5!}^EcIi@7?AAe)F`0qa_h+NWIyURV`p=3Z+^*K;e}8ev1loB;&4%@?-s0GvD(p^}umGKJ-b|W|CP{E3UsKj^VF4 zEO5mjAH62$Kb*1~_11)mIm)i=o;TEBqng=2=gcG74YnK#gY+GANtI#1# zM1e0paXNj)=rxV@UGFN~t?UY`=`WDEN|5=Lm=A!+&cmNtAZ{T$^zfAd;(n=1Fx73bd5~+z zAfyG8A_Tb6jhJG|EdA&qgtN3)=p*GjCb!eF z#d58Z;eWtGp8(qQxDoi#wKjw)!R+b*WAzr)P&Jmw7ROZWRZFdwMx<8b|{En6o6!{i%J=vK0EW0adxnxlq_6X9KRa#{Hj>)au8WAy*QfWwL z!AW5cSlofU!7o)F1FDJ7Wqqh_F>y&{qRewvDPjanEX2!Dc2FQ;5oNY+mZ^0c2!DgE zFKa>Xjjc3<+Y#&VKpB|2Oj&L-qJ0LMV~)%Qo$)N))+y5JQtU@UgRX}iK$5|wLgaCO zA2@)5+i;%i?ycfrkSDSWfegN-Se9q{{jDgd8|#X8cFaFy?O!bTtppkozon2!r17zd z0WbMLfkPt7Kz>>J6?OkIn>H;}d_H#-k#HxXU!ML7(vg84QV~D2|62!*lziS7CE?h6 z!oQ2ozXnZ;g3rfAfFJO09XKm_KRMLGVV?>6wcB6DD@o4h?IOSj|2y{hyT9)RfPGR3 zmpczR_uS{c6!HE&=ZIorP+K(EotMB3Z>}O!=kE*nFLV8+(?0~^zYOmG@9){ff!_^j zS>1%rwops+1gGtHoRuSD>7OV!nL}MpHeRbQJjY85nrsaT$wO#RSS!sivD9Gk!-=6N znhI4r!5fxX&Bp z7iTw2Q#y-64%=(VY#2KbZ>R-7#BSPU8OC<{2;ZCwc|R#%6zx5Y+%rFPX36R(zi_9~ zo<9`o@N7;SZ5DsF#-h&AXVhOo8?ctlw8A2s#PR3W@p(ha=RIZ3Cow4j-%=hp_1>D} z%|H*~1Rw!p9oe5*N+;5%m%Z zoafn(ur-2~_Y>Q3SlJyCzl+2Ho@Dk{G=$oSUS)xG!R6C?-}y~zXhlpbExM?85~FB` zEU@z-|CCxTZJ=O*h0nZB6YB1$sSouWUxox0LMAP0vy%^~s3|W~C(-vcV7mc>m=2|@ zeq<1kTrNIv^q4`tr=M;kHdVeedBxhvZEvog9lsv4@?T7soPYCk1?zwn91Dnr{zF$k z@d+SmgVx_r-ES&T<-x`oAY4{UrBC%`*drbIL4ze0vVr)sFY-LU3*#TFq2A`zyjsCl z?;8?mPB))2*pxR3d(WRBZ7!AnWA1k80R3|~icrG;q(30?+n?v5C!{3yB{RJ?yUo)5 z!?t`-lT~O4D+Eoca!gvBqlOR-61LShUjxvkn_D>B{OeJ`z7Nd!GP; zgI3P318YjhVO`G^s+}Su0lAfd( zt|Xbz89v4?bG$x{i1>Fa*)Kei(CP24W%QTUs?eUJZ$o1p|=u5Gq|)_<)|iUAaV2yTOCt>F_Fy9UO>N4#~X&e>220j z(gl+oC6|No*g80i>wbUQkzGg)v6xd4SoaAvMZs(-B~hcZi{%Rz>b#2&{6g1`SyLM) zH>(NPBdgm+1J&>BJyp|twA}mx`mkx(c$~R0(;kziDVt(MvU=dCmxWn7Ju5A2a@@sd z02b-7eGJLP=5q;;$f>M$cdJ&V6STJetmqImC9JlrzGXo`EbJIqq^H>rv^YQ$j;8!m zc!7X@_ie+52pp%BAZWpjV=N?TfLVU;kM_KA2O4YBNaMwXKR^)Mg)SHeK4xu|74X3x z@=@5w7Mqj&WjDz3xbgB;r8{BD>G(IK`QC=l{xzS_{F!y7!_AUw4?%Hce@w=np_l3D zWBb8p9gL;JgqU&?;#?$Cr(VG@>t?%vI>#ZvNd1Mf^SGQH#m?r(9wwYMaF)SYfWUb_ z2wWg%#Q6w)pMW~~xN7k?9T(_d+Kgoj$8Ne!pt6Kvn(C>J1Dvwb^gmx>NG7sxt-W?? z$&z(}Q>`UscTx+V%iOrb6FZ@oyIis8zJiRqXaUX8_wGKb=zxtG4cSk~2m9Fi1OM4y z+SZg4AFo5N?*A`)cn%p5^XCTmThAVy;bVOHzw_Bk9nijI1L7+zWF|8}K720p?%9Dh z&+&q3?=5v5I|_f161bKqGT`PM#L_1$ZEdwVOm{z8o8^x~(w9`(!?I&4=<(R_oF&pD zbk_!h*rxNpI}uoRzgE9AEq*^AZ*ix* z8}#S$amo5zLL%ND%ER&og^+gX9!OC)IT#XJm6ep8DFf1K>W%Bzam@?Q6s;jE4=bhx zB~p!*kB@2kIXWM9NJQ2~i{s^HO*_g|jZ~#c3oSi`PxGJ481^^h`j*QP?>*AwHrDn2 zZ#2_lalAj2c`HsG2dB8==r{081fcV3UJv-XftBP!gaDLeO_vx2;-9;-P6V_T2Vc35 z#qVOqBv!53%#Qztz9!HG)6q`~Tmz zJctW3%Dw=ixX%SW`GB}UD%vS>;Jl+WfJW*=hM;SL<%fA6znk}_&(;mlTgov_4^35&pC(f$`kt|Fn*9d`D&bQEQWo>I!X zD_Y7f6=G0XR@#?op3GHdsohrN;D%@M;&JBH-YJjKWL@Q(7o+9OQGse5nit+s)kve< z^pD-VHy745VPd#)3+QFc6pF>_d*z4iX|hsoQcdkuQ)u4cLg#PU!k_Q2kMNk1^9M7+ z0uYEHY4n6F!gne9A0|ho_A9QZ&0W`knnotD2&_TWNxB|f*^#YElNlp~f7Fz2)6n$? z(RVF;leE?z9+A*mUA{2-rT+DgaY0?x6ZqB()?3w;Padie2o5qzvy7AOz{FqGRYcYw(RtV8VT$dC?zuLWS7{Zl#{F| z_G#F8;UVaT4a3*RKqUxR4)x2ZCx_dNwzu^?5Ux@fYq24%rRJ}(_5pM9sO(MAWeywM65CuaMY&Vh`E>c{76BG9G{l-WN#N3Hw2jjM23qt;TvVNYC}-E>=BUY)e-$oDX7zEUd#Ck{Yp@YQ|_#m8cp<1(oC zn77sSdW@xB`j|ols_|em(V{=K^`K*X&N^Q@8^G}Zm5aV+!^_Wwrk)%db3K)zWkr*fon;jPYlv`JcE7x|&S zaEgZb!sN7clju)r_=vnkP)grI?O=E{Wprt?Qn^)9Y@Ct#jh`5FYFBYNXhT&Cf1np*?US2p1?n4yK5cpQ z$5bsfcp?m9;aZr0J9nz#4xX}>Sn(F0l-Z$+@Hk-G{5%;xSmsdf{$Pdi@Uq$^O-yWeRQ-(qk)~aAL9r-f9roo{26ymjL!u%! zSwGQC282r|x^K_F0%w_|W3+qVedh6=&zHqm&mDy_To`tnJ!66Wh*; z?oBl6G^fUFw-W;uC0pnIn2)cEE+*(X9pA1p$Bg@l$*~D$Wb~uRAJANL^gdmn9mUet zY)!+ZOL|TqrQ+Kk)P|Gpb5F^8rnYesK@EdaT*Pb$L|&bxZSS+P=FSV1PjQDOM&?Ax z!i0qIN_0`GD9v2t9Z1iGy0@NulFJXHQC$$TlT8jxS({S?+yi9UTNJTEZeya7oc5hK zNefKqk28@Ge){W5(%?ehoN2Ds1iaPu_VBEVBm?Z4(Vc{jPvK8&$7Gy?gCemz8eDBd zSg4jYgn^PER0QpvJfcPg~dtOqf33?f_(ql zRS-M^hJJaZ!RRGP9_Zs^!1d>&C+0%S3Uk_ABkB&%>eBDef4u^-tpA$vp0>z|_E}3i zL@lvNW08L2v{E~RwtEG#P>96mmYN17^7^z{QExW)WHzM7+V*)v`&BeJXfc&KxDfB2 zSn;n26N>q~$pvnmEhqFL=TWe>@T{?%aVs));rAysd^ zyn_97PIymqO1onl;)HZ)xx*`Enk;2XgQ6dUApo>FmrRd%QqCYYde>V8`-Vy=XE5<@ zcx03<&ZbJRQ|=tL@$&nZ&Q83}73*b3iK>${=k|4~j8~7#kAJ*-p$* zG-oItWo{Z~ZLM9)?DsI?<~`rS817>}wr)AIs4vm+uA(X7IM$~p0;|d!1KaxLX&kMc z+aWjNh7etwec#N=XWxrQhwV9|13_jZ(a6%>Z2@C|K{GQnaJ(sbiM~8r?Q*Gd^`RjS zW_gy+x(PAOKl8R`m%veOmrY!W`kf>n^?S-D@$I7|%w4}n@ZSTbbb-!GFLOsq@q{yU zVT1o#0MR^8TOW7N5!LAtriisQ2?k#)UMl6UICGuoBYt^Iq645jfT~ zaCOH#dIa{kkof^+=cI>ibi;PF~LL~d3ecCl`Vi#=+;%=xzo!XV;V^0-yGI$({AT|NP? z(O5n|M<`o#z<6}y_kgLVv@acyy1^m5Nx1=CP~LwzAHQg1C;Fv*pxmfZ9l}EU5(W9n zTf3>XfI45olCtFpLL_@aL#L@JOZhbXB<)T(+!Q#m@*rU8hbQxhD7u{&4d>`7h15pl zJjy!+WgWqbwTOwCg06zoH1X-H;3UhTuMoj9jiXdIF%PWf^WbxB#SWWH8nOLyr*Q8< zh8r%&zd+y4IF2eWS%<|tE!IB#_)HN%aGbeAiCT-LWrS^_Qn$)1on9LyA)4*jxV*5A z>t3%A4BfyF&up^|RhdjixM+}<9D_$JL@a|9>Ef5i80hy89G^fQe!udWA^wG7z!zMS zmA+~39BO{ymsxSpJZNtRV?RQNgHjpE&V!!biD7Hjl<9ow(O}*4t!xYSjG0hE#g8RI zf>R;Zq0$kdhp^4=x@Gg)0)J#tpMWAmZIWBN&gdX>)}UE`?ylKe16j7vdVToqnLXmh zitmag)8W8p|MDy+>7w^MjOHJrki-Qu9igdNDy)2l2{lEKRvSR{MSNmzp@Dcoto;vk zDYl(YfF57v!a+P5*C4B+%VUp-my)7G<0O++-Nw-Riu6;5wG3M4Wddi&!T5WxZFWsh zJQ9e|7MtjAa*8yGhDTaDQ(wq~QV(QBrho1K;Iqg5nBb01t_K=Nwe{MbC{3@lEL zt4(+j3Wbg2;GM_x6QhWj^U#5ZR-zst- zS6Vi!YW2Ue5NW=(FRw865Y_t1N9%M=x?)>6xlgMN*Yc5q?A;)H`4wT*I$?3vy5Kf# zM{b5mYcu9*`l!;0#*?V3P0aNLkmLaR%W z!{f?}TaR)ek4-V0Et=|dX=KAkJxPb7fQxH|^7WxK$!lI7xviUgMyC%8M@^!v`< zr`@Ofj&aAh`*-gj=RXJudEe)KWUjU5oQpX9RXNEYmoqY#pDEgN{GOCsiNRzR#Sa7D z9RhqxHB)|5;Fk(>eG|&{ht$cVStN5(=Z%*Xs|D9RO+Sobg2mR|%s=L;k^HU)!D}w& z=96jo(da=dBTK{DtXBe>??U+*ME=Nx+6hK-kX~-*B(q~j6XDNm6%mDwpFGjZ1SiFr z_7^pd`TrXf@W-$JQ_AT-{F)-=Hw1=VV6&PNR|Mgt&M58UKb=*`*OElO`{I(qvi`WQ z{B<|7Z!+Qhr1Rp)aG`;+?ysmu8UedezHUBaYedX>q}6ryp>tp;g2PNMQ*_D%P~L_9 zA%XN4CV@U!bw(+F()5$QyBRfRJiH+y>E%+%Vv8oR>jTKq+a6dV{ub4UjRK z=-+{@S&N@5qE@e%S&z*6RC3y7Y(}U~OUIklK<`I4`k0&*EZS*?<4At!0ddrypA?q- z2ci3&Nd7lo;sR)|4D+dPD_)p_5763~nB{dDFNrrRak4N!%rC(H*`KHE^Vj8VUJrw5 zcE$w=kqb(T>2U43OQ7~k&7U&t$g0aVLDJBjePQ9!&XG}$T=C6~*t(1Tp)fbr~xV&Uhw|!$?>Z zxowb<=hFV2=6X^u;(s@S{rMtb*Md(F1g8K;mLV<+7s*%@e-Jl!P?{GOn^gDAk!`cQ z&f+pk3h`s?p|#~K)qgWVL?{&rqyka@&FpfUymy#vxM&ddxcQH{BP1p@r9`p;sryy_ zUGeDN-&na-7*-^9V3weE*$3vN&NpwQL>;f*rnohgyph0% zcy)(~ZdY=g-_07Se3&+W7D^N3#<79TumM`(kMBuGO_@D>i&qaT;alQ_Q2|I|17Nd# zkj082v5R7;YeE=K^fWErPB>5h;pepYN`mCLi-fMeN%cpy@Tz^7Vdw}VRa}{E`UIUrzN#^|x?v}W z2NkWDCBS!B_RjUJ2yMo74GHN3|5-1q)dj^tWD;g1k_8ePP~NxD1k(sHSWB!nAT;!x zNsUDm&#F1>t?fJRmsL7GeB=rVO->aL%-yQ6=0dU$UG1U|m~N6U7Y|EMsV#lyYHKcs ztvvjGozhs+nOS!nz)n1WpRkZoC{c|^&_?%c4N^EsL4zd|8H)3!mn{yb5(VlXdthvH z4wc0WIh!jFByF?3$?eWBbV zS+PMCcl5l$UB}cSI1*|b+pI&t@8B2}dk@sOyJQr%MWJ-?d3~r(QtLw&b4KB4uTTT5 zqI%d@&NJ3z0-Rk*;#2}ca{QAmKY>N1Y0E5^C z=gfZW+`GJjRPu|Q35aM)KzT7bHBr~(#s|R==f|KZ1iF7BMcA5kuk^A|BA8lk!(?hY zyr_YcFuN#lY(AZg<@i+gUG%hnHUq>PKi)|)U)!Cb_1wD0T|FBQS9LVc#m?k#F^8|K z_Rd;3RDNp~AoR}P$P@kBwo_BJ1R0C*@Z)v7px=*~TKaEqKi0uFcT043Ai^V%ZT9jL zO1VRZmo@piF}7YQwwt8sJAeU)P5;~-3oiaW==k(h4ZYp9NU`%}^7?)l=Tn=Q85dL; z&-#upt0UuCylPyl8|Y*@NZk+OzHZw-{_@-&+U464wYNDF8ZNAz`Vb!}| zd|AYgz&^}Wo0H4t`ig$Lw|K%Cg$ti4u(~pKCGf1TH>12forV02$yTVu$Bh!Z^zFKa z6jtT8gEjUF`eycH^sx*0wKbA-?0E;@M)+V;ro_$yG()ay)z zjKC^DL=_^NfDWG*Mb?sYWXrQM%ycVDs#c22$z;y>-nWg!1Fi=cAIzDP;_0XnCu3W? zJRzyWuxufJFAMPB|)Y5ICr(3bjKv4?7L@F8qY78x;1=Ep;M z7Ul%rad*!g0RPS|mT+KtA@z1-92abLI7nz1b_ots2%8ZmWUxB#8D!E+@4|<6AN98o zK*q!1U0{Ek%0%1lMN2#tmm?S+K|tCJzABz2Gvn)G&PYe5avzi3DQ;m$Ye$tI`k77n zdVzQJ!tD4S9~}C^A*1v(k}Z42Sq>$(@JUUnh1laU!X88ZKIeKyy}sVd#{P)g-6fOh zb2+y4Lu6GNDj+5;xsVdHfede}!DzEEdhzbdHZ!`uO7 zn?JKrguC_7s*~{zpHz%~efWyuT|%NHUAxRk2p(E$ran6{q=HV%ziP|5Kq$mgC6nN| z@vjG`B>l~#zKOXfpg>K*+hrW^YGG77@yjB3JX6*l|JcIr{^jR1apaQxz~iG?(_AeP zvmeUfdw(wP(QkYDhoYZPDQa*KLeQAcHqpMPxRThr?61f=epoq@(@K4n;%s+x%|?RS zaz&2n0uS7hdG-12fyC@qN%-Bq57ojcmXcbD;Zpen_D8VRtJM>gsH5|_PF8fQ*JMD_ z;|T`E1-K_NOg**RzlhV4xl~%UFYu7}c5052iDjrSJ;vCe$zC8NnL>f{*(>&LS!2R_ z@RqS|uanU$!0SLC-E{%jhLz^gFip52Y?AwJP&cRv2Ya0BAQ3xtT)23;bzrw zO=RiZ-4(yg)p!`%TKwiPedNwIj!i z;x?oG%U#R9GB34x3bwuu{_2#oeOUPy^az*csxtEzl~4NmX3N>=)!%Y#6$tk^X^|ty zgpmwdFTAMMu-XxI0_dn7v(&fVY|1IM+ke&hd+L%q*fll^A6`|6YUSC8Fj5wdF5H8=M@}fgOO#7 zzHSLlqYaCObxr&v?N2(>5NX6%?cr^#F>3*1QCVw?>iBHV?&LD9OZ&Yz&+_A?gZ_%q zI==HqjTr$Fb@60RCVzc_Z6wlDdN*kds zaj3hO#uZNn@x)P;18%98i=y%MsY8F7bAu@Yz3@(*Oshk zFu)%WICVgUHP3_3Z(GnrV9HxsF+GMG#KDmSPV|)m$ z8czPOB9?#b-6d%~zMOP{2MVTT@hAj12Srj(BW<_)07`0xR*5T?-*}Ggzl5K4^7jO% z9!BY}E(%vMLhruY+MV8L(ZNhe^c|RRQ1q)yMaHWn@9?w zosxH!F7)AjXu_wibXw(Lu9E5zQ2Wt*cZ5il(`Ghth1T6;LtDFfzlfaVv`f{w`L&33vI@?1^{#%bM7tDlvr%~QzTJh@BIBItXtYAi zjG#VSGTnuh@N%oycfKH{Llxq%_~!N9ASDhhA#>a7?~a_7A4<;$ea^=$XV%WZ(XF-w zOK~LB!zEV|Dw4daBQq^@B0?VPa|-eDZ*KPDu^~&cod{QhOKK@}8bo?|n_x&8>yvTL?*t-tkdcndb3i{o-*EI8e!FfGk3eMe<>0_ItQ#aZb+z6ptl?~tu zmaverj025#gVM(=E7Q7$+1n&(!Q!~5EKNrdCNSRC=VI#T8|BwpS6-%W!Yxp99;qp# z2T+&Ce694W2B{erHa@f^YwAnaj`G80`>|&4*d%T*B)sHTn~FCpu`isX>w9l+mbo#> zX=1|jrMjTP(%nhP>EaCxxrruH?4;MOI>FhXe}@x4PRsDLeQP>PI`zdtjTy zE2LjmA=${2EIqJCT7?fZJ25|$(cdVxVN!phtv#n?{4YE|zaYBjiDc(AL(L50Y)Ou{ ze4IvJ7VE8yuH803Fydnh_(vT@L_KPv$rK9n^J7!c4Widu__3YM@!Khq-*YQ%>LNGq zJ>D;|>bG>w&-)zgtQx0nZC5WwPHa6bs#_AYE;twAd?3xr>(}U}Ik?OeJb#ODuAmpu$!9$I6D#TWDf@3S zSHEBQKfdSxwKx0mGb59nSo~kT*GcDR$9S5Yc$z}=I`piv-^sB8=&?!_sm2PTtzeewcTKBlx(@|v!QSf2+S9<_{@nE3fhR$Vx0`SZXO^c^t+ z*!Y|C($d6U*~H`4!OyZG`$l;@(gGywNhFANQ|8{F8};QfkbpM-P$Qg&;ke#d@6|4G zAAhI^%a{CFo1qcbW3~Lm7EMA0P}}3o!GY=B%tHYR^WU=H{qb$Lt3{ly1+4V1QzaFS zApQrZV}&l6PIa}EnBx?M>W$oJrJLr;g!|^Fvufg?rzL8;a=zQvo-=y7A_~Md1`^km z#S9-sDMrR-AC>sFM1sLj*(8vt32EaJ)=#(K(LmLCJ~hn2q%t&kO2c#BOzheMX2IUP z6jnQx&nJo;FG=1#gt2mKHQ&sSd{EbonK+f0P^RCag*X6r(=5~C2e}Iee-wURh?+;6 zK!!5;c8>ZZ^B3WIBESt4{n=7ijhfq zTtIr49jEzrf!FY^_>v#M`~~4E?x=SEnigb)Ds;`~HM3a1P*7WF-acKj_yDMkQSW}z z-Y|1jwTC$vA-zx5Gco)qC7Vz5YPmM&aS0(fOgRb*QX<8dv zK0(w>^^?I?YwYTMG>W(Im1T{0P2jFGDU|5QHn#JHWOGxV)4F(JbE6~tUZC!NV@(5# zYka0EB6@ry?1lAI!}=#B#L2+@9zsAaD3t_SfRb=Ia#$&cok5{KWj zZ%<>E@2!YN#P$xyR2*O`_Fgsd3$Ji%zpORlAeSIq|N4w3T?NGAPbIqb46jG&fFneC zUmP^mNk&&+3)B+=DQ)i;@g#1x`l=2TjIgUg#)g_Do72y6$`Nx}R~`kxVJF?-6we8u z^*!ttwr7;`zq72{I`27zhR~vx+l4;9_B17JVI3~!X?SM#I^v#X07o7oD3?_)d4}>a zRe}DuxUGD6tLKbScd53szpv`a6Qwn&ZkOoX09!HK+7SQsSccGcZ46LNot*}=#g8-E z9{fA3U6-O_&{9O7xG$!}wRf*{5aTUst5j zk>`62(53LpjADZsP|K$XxS%EjGDV!wdaEEOL$j3R$5@TT`T*(V%|qA|U#CQf#>)#| z2G3;sC!tFPA*+(-TZ2!mo&EY=^(pGQ%B3XO zk77)S$0^gA)H<$|5P_S<^%+Hd*{lYw)SnK8G_bypjIPT(tgkz@+{;Cvz3!tW94F5k z7(3ktANOByUic8%Im&OX6IaqCl3|(XEzL<+q?mQCo?Nlnqz2^8Q89zZ;AnvtbfKk0x%2IUx4}Mj(YS4 zI9Mv3bz%t=n+Mt=l^-@Yb?!ES_{oGLqc8G*By|W~rwr3Y=iz_*I)gZ~KLn+2TJWV( ze_l?XJeaQbY#E79c3vS=#)ui%K8Gvbc84iR$1bgVXzunrlps`c9Fr}*({(aI%+gc8 z<+N>M|LBOj0s(|dv8i}fuOF^+?ZOgxajnzwAe@da|_cb}9q9?NeFm$k@6{8UjR>dCLJ%=C7 zKGKG6@L2{rz5HtK*i=;7EEn~WSpnI~JA%ilsesGUpoz+Tp1MutVSwnbx{mM6KdmKJ z3h;e-`vq*JZ1@)743Q)1D-A-;ISj}Pm38GgxgsAG+zixo@tp?9O?|6Hwz}DBRB?5t zVt;L2GhxzeG?EWj7zrOK<#QuDEZd{y))&9@i8!^2rA`i#T*)qg%Vc#(*6%cQL&L<@ z>=p8!Yv>DO>uydwrT^^ZqgK;0c^dnED!k#wiR~_0$B%QeH!Dg8P8}ZYruXxGUJ|%4 z2kCkq4xCtJK#6u^JS}8%45#t3ydaYRv)vrr%vC}z0I=ug*Ad^d|2g80TT*ONdxo`k zKFv1A7js>89@Wxwv?OK(d!Fw!@w~%eo1~^_V?bGgB_#RG^1bqi0d50BpGl@~h_1I% z%F2h>o?{L(-Rbsj4A4mf2h<}67i$@bRRI<|euj>3ESrz8UTr_J3N#8PZHja+h{Q=w zPIG^&JL&wB=RNRRs_@bNNCK21T~Y}!#v}clS)s+YqRA~=iEG$=;e_v@1i_0Tqd1RA zs+Y|3_aPZHw5RoaXCD?j;E7)<^6G)Cm4`5nlCQ9dVbnAlJ^czN|1HwzmrCSLFFlGu zc5WO#jUg1IiSDlU9IRV9>EEZdZ{-luryM>b`6)RS`se7@=Z*fC6-T~-SIoeRU*qFNjy?v{R1w~*${k`! zjCwmnnoW^JPM9=C1%ukWea>b>_ke7KseWx<$}gAi4VwGsNXunCi$ohEHlKbs{@6&f zM{ql&tN+aX?__~Wmr#ybrhd|_qa|Act>{a$td(O&Z0!b9i$L2*xeoUf4fnagdKaq0 z>D(Ven!49$8(O`11CbUEj!=uF!NIKuw1Yz)ARRW-kSsnH(6_7$r6cak%ympNg^sh# zvp%g=G}XFC^(=IU-acLVj&X?)JRa`e!8d)FGCQU!#-Vu`n^5Ou;%42Omt;Cjp>a62^LGdcZ(JT*OuZiOa26!lRkY! zQ+fJ4<=$2rEgQx)Dkt|f=8N^cOHajbt|ql#9n6S5NO;EnK<5>}zDxA-V32iBzi^FNH=|M%bjX+r$(YyUTs(Ebs!B05ZaYG$Un-O>c|ajS?Ur$3dwsUKz` zf91Mkmy{M)LgSr<4r}2H;vTk|v@-FXN04F;1a@2zJgt)^%L^0O!khkvNG|H;=B1GV z6V~pVx=n5_PwP8=7=iC|@o?p$6sC1g3#CnwR@3lP=`p3s8@-buvoqie-EZm(f9tR` z=>;?xEu??>4RMrR`9AXPzBuGDzK}$mjK8f!zAAuv!unaGFs1e8Lz`PXRm(C>1#QQzc(_zspH zRg8zXB24=z0kx|2OU-3ZoXtrrx$Hk#~3-6Q@xsaq8tX2IQO9JiUM_Cvh3*V)E0w(K~*heLR*Hp(JN0Jj`o!YgynY?qdRh zuu#>*z$~)Qn62ZU9dpe9rP$i$zJcL0TJ?OB2@;5VQpkMOPJ;CQQZZs^|M8FwcCyN63qM*Z9 z_$I`a#G8of>0+6jD*pKVyhnKh(p)h%f;%cwwoIcWK-Nhi2OMst9!nbC7Zt6*`m{u; zl6vW_@`v8sLBZVz_<2rJW^8Q@YO*~B+Y-zRlFW0GLby^s%_W*9gsv|%W4F5xtbQQL zK280Hj~^B(2NZ~cW_lGG!wkzkEn{3T{P zV=ku@nZ$nHoE^$uYWqHUpyUt>K%%epXW&KLJ-3pVCAyk5@c>dgdJxDHf{W3YBSLb% zd*~8tElNWP70S^gsRzo0-hP=`Q92;N)vRd2cm=e2I}gOUehrN8{gPr09an_|rwJ+7 zq?bv*w2d~MB)^B7)ch;$^>wnyz@2g)0x`&|wmel>D*^Cyq1sL0qyx#i{EIau#fL^n z+YM48t zpx*C-sn96n510$zrqG_lR|udw(|sw*D21qEH~~S)Z88MCpQ0w1*z?qiZ0QyE zHb9P~+Q3D$p8Df8?c66e_suN;Kr_84l7NpCZlQPLNW|soQwYiEgr>_DQjP|@9)xtx z>DHvJA~l1DWgb2gvqqX%$7)wsRL10{=W9cd#dAxoPqGY0NWo+Yck>Oko=<;gFvF%h zt}%9C&#EQ4k17GH8Cz4Haw79{ z#wxyjX1S%clHk8hZSX={+B0QIKJI=sh1t#(!2L?l(F<-+ zGX|Q^tGCiC3EA47&1!yl} zfMRNSIv_LZ5IVFbP9d=;3J|WI?wS+G2IT8ty*u)Ti2q$}rmT?hiCR^e4!tMNE34&! zT2%RtXaYV-mA?W!{gz_q)02~BNBjElIkS78IXdpb&jgM(I?jYH(xYw{t$C5v&P(s6 z(F(Vk=v8zit3*gY%q)4&K_UQsakHk6lPb)c#g1Y4ad6;nr-N5m-@fNLevZ!yw*;Vh zBqj7nkUVbs4;H{sXvZSih5eS!Tp}!LZ_e5=QH{k7PkJAP5{5|TD+Pd2e>Ue z*Q{hgj`4YujS^#~&Aq^L&*A&rawADwZ_$Mqh7gIuboQhOC3th z9Y;jTyak0vSx3wrOaKXwRTFu0CPynw@rzU|U>d7brU4Q6!X1M2U1}?IxY%QFVwbAIPjQWn{(c&WoizCr ztj>Js#br)%(MCo19rq^6(Q%;0Uyv;JW32Am{!XMRqj185Dj{Oj2; zhWqFdHoC)=Dx(0do=i_mnAHm(xpb2%MkCCPYuI=m0Rg{h#v{U-Lh{g_`Kh(l z-$K2vnvCTn>>X!3azMcL`zHpTTw*K^vK0u);ccjS@=JUPO?J!DXUs>!1p)Da2m9uN z^`RJoKdTBZ@eM(wOdl3bq z?G0PcSgPqj3`39L%SE<z#&+%mA`5sG~$e;Ga`-0J!bx>hN4!y#dRw<4O-nFp&v}@|K2-ghB^Lt z$V6EFMD$g!OXt^F_%CW*i7=ym6@0{^ZrpJs9vpS7OL<$7xGbybj!CZ) z-niKTdhAIlp$X5$z|;}Ddu3(qEaszUX?b^qX!>Q$>t3k-$qni>mc{>teA2;_=8?oCT@DJbLf=SW(A13 zXGL07-35m?PtF9L9rWJCg04n#hMKpdhnc%Zsnl9h4w(uyFtWSDhv$hy;}ZRKv7Mnl z2}ad5tSxpFyZdNZ2|?K!<5_9n`i2S>YJ|SQh{n`6wu-RbMvvK~a>ROvJbHZ!t5RVY zm@oc^8HxSG1M9nsQ>P%?V#gDv)Er6t7snw9a_>=lxML z%o-lCY3U)Z*CBb0!X*c6r&5Fm&az-hXqx!P{S@&iqhHfi|NZ=)vqaZ>3j^=n&*R1a z(6s9O!JOcC-2OW_{%08dJ7?@)*V}*WudYfT*2Kdl>yh;IA_^EkB8Z0HB4atdPni3n z3$#3VjZx`Tah${AY%rz1_EU!DS+X^Rtk-8v*(WVf-s3LpaE=K|6D83SRED4Bxf6>? zaE_n2TYkT`kpY{T8o4ACS%7YtQ1f1UR*Nq!!HxY?BUmV42}@Ltsb%Hq0x)zMq^x-> z$=u)?4OssMkSj>u@u;z)9_<1BX}V!Xvxv!qRTD|Uu|x0);6`37K-cqkYjI-2GyU?; z)7CIGnI;l62PVDRv4sWwoJ+uXMgo{FkQ6E0?r>z4A#`T4#_-`YOX0Ra8_Pg#HwgpCY1o zLKWjUgk{!pxhofKj*Dqxu8Y4!@Nb9uwa3vMBJpL4Pv27)<{@;?xBPrT`JN1k7wyy# zYhg8-7UW$$vH0FZI?D6KzJK0*!}%>gaZtl3I~v9i?}INic#Xes{rBu2AeGfSrTY3| zYvYd`rm|p*s@h&R%HnTUms-1yKWUI@O9;5+Jn3ah-#v{~>2-5H`tjY;;W$83pR`6g z+yl5h@Up)29J4j@FD`3C2U#6h&Q4GlXYs&uu5a|rjZ^Q#z}@l;@sr95WX}qv)Qn_1 zU&+5@Or{BYsOd0HZ9#=b*KxJw2?L6w06D!Wj~UeLOH-tx&hKz+zrn_W^qu2^f9*$y z?(VFeqwod_V)nYh1+0Pwb^Mdx$oYv#;J=@*kd5r+^th}#^e-2VIL_Xm8mCr)5@KBZ z=*EkEg{GNx*z*wVAe*A1*B?9`Yb&6U4wIXB2S!KP)&xtZV?80LizEj@K^NZ^DZkCO zj^aHtp`(sHLM^J$;nyPbWQR5u+u3ew#-S`1(No>LKJ6m7z&F9>{kuVhH1+#5YB4fS zQbaN4$T$`4TeTRNZP$jBqi(5rlM=a%DbDLN{2-nl2F@=axJ*T$xEF!Dl^=f7G0n#f zO%(&pd1MNifAAeDoN>sc=X@oJYsY<^6TKTFY=MJO5IzxUk0IlibvW&9A|u~CyA?kW zg?siz7i&(gT&|`&OH_ifN3(H@Cy`<~Jl5yL74;HuqnEBf$W6Bfxbb_#=~eNb^w<4C z1#RpJc9;?Ck=8wHdcB+K$xpYXT}$N@1g;m`ec5_tMAvG`=*@vPMa~6{{tetdD~`eq zb~nhLA{w4C)Ld$=b}j?m?SjX7>A59h$-C{Omnuw=gAc!|R=q84MCv?Pt<*qx&vJQR zQ^hp-3ET9JR*}I6Xm^j_xo%30am}4^FoPXY7)_i|!ckhgFLMdR`aWTnW(!bWtkk1< z>}4@EHr0)IJC3WpVoa${NF%gr|1PMtK*qRj;z;mFdubDMZ}KLYg>liwQp4F0Z>mq{ z6W*FzZs3e?jqz$|zm*BBKlJ$iRE!U?UoFA`M0DSIMzvsaMNI?SEBHB{RSjY4?LEG?sq%*X0;E#i~RM3_3K7KJPZy%YSG-zr8N1c z&)3G{SBNn!ZelgG)TlgmBaqjhY_e=>o1EJin zR=ylDBxyq^uGV@~Rod1sO>|K-}4fx}4&!#I__z4BWyIx_eZG;Wq+^N{dJKQkZWpN{q_bDbd^MzW-&je{9I) z^yefUch}&2W)di6w&qB84P2LDA!6PI=N`xDObMVDTUs?VFG5X|nF z;zN2yeBP@Qi@+s9rAj*FuGDPi6>Zl_&81Mj2;5(>*`f9edcwD}Lh!?Msm_F{c#1f! z{SEW5+TGifpoDEb)1)aD8!u{daxI&)2aigWSaQkv4NMSzqi_n-h(@o)WxbPn>xQDK zR9Nz({j>8GcAM^1gW$OEgxz$Q#4f$gygu%wrG}OZG=32%(y> zr8@_ik|nV^WN6rOVipc3ihq>QylLV_5g9lH?{=6LAT4OKLJj(5%l;@5jU1Tr@Jk=! zP<4JixbBtq>~0VYMpRjQ$EGc zmGM)d6`gKmig;PmQim#2sih=*zq*#YqJLZ$EIV2d%h4B|P=v#r~{gB*reUXx(? z)LD((0elYdCDBMnu5yP0k!T_p-r|4=F-`%{qTaywxi@M6b&mG#hOeNHme_IGzp!iSuCX{Rs|Rp>W}ngU64j&TuvnO?~rP?bGbKqxK_9%kOhF)@WGXX&fo; z#gtxhV(xx5xQ{%u`_=1VtE_ppj*yg99v-iIV|Fo1#f%L7j0G9T^;hk;aRr-ShN2%f-QK3jrTkus_2qY-194l`mgAQ678woU%}1y?1MHC7M}w|9zKN( zZA{5032F)}x>NX_|BgK5m4Ndnh3U{-g4AwJ8sj{rdWiZt-zWICY2&64v&TIRt>j{c zQu-#Mu)d|?Wv8T(8u5s*jMRh~l__4bD=k&5CEyu;SEro(n%bJ8iNiqCEK_(oj_`@K zV1}ez(o>!yQH)T_tiCs3x(OW$4K5? zp5ybC>-wwP(n21tjy$J<$VO4NZoNLQy3e_VlF|+LFRH81G=(e`AkGC}7C-|z9;#|8 zf5&A1Wa%b};!<-^)(B>e07v+5?ue=m-u+Ec?Dr4_iBb4z5SmVQGop;aQ7?~A(~Pg} z^5(yCFG!Nwg$)VIDM3EFZ6^XXgl23`9aZxY0&_U1o5^dT0X8@nwYRiJ+tBozO)Ba8 zku9kq)h*1ctIo%46C&<$Cl@f$4M8vUx^-=KBJ23%))a@}%t_8Z8|tV2 zk7c<|DMiJ33!_D%KnI_)TPlQBi`jwZ`%Tou;nD7H{_S)uwle^;%HXQ>54iHJF^;;j zitl#Nm3ob(_L6tL74Btyj|@=?X_dmsVMML!4!t6U@*oM{-K~cwalJljMQWXb2{eZz z=Q|!1=|X!tnB+MJhcX1*jTSEbbiM^3#~*pZn-2_3 zSF+m_1iX;>0;{5#AdoKyPH-;ShnLd8}*xHc+JiBMsJ zEDlGyTBE7vP8wH|*3vOfv4t##>YkVEji!8sB*Jp1fwkIV^sO)ra}IBTq4LhuRvP(O zrxA}n%AI(!s1)MUE6b&%Le8vJtHDv?U#2zrClQU%kUW#4$|_q{MS?m1LIT1=(GNNz zx%TGNkIQv1)2V6bs1)9`1b%#%l5A>L;P72+rdqSWQ@|4#(9kpbq(H|j2|Z>($87qH zxBPeiwAU2(Ts^!;@km$>yNY(PQ_hIR@bTjT?6SC;Lp^)Ky=t-!)3d?~rn}c9${rkI zcT2h0JM-v&xj5{CmwUd5t^Sr%5s{lumfG~*Etj-?n8>F%i1bXKlY{;SD}Vjq|G6U9 z2l5A6%|8apCU8WBq-1Y>N7NPlezvFkY0rUP^0pQ}iEMZ>+>zPc*!c-f{H4rvaiB-> z)#PT`66>aa;0S28LiZEGlHeUzSX{3wIhVb(67HxKIhUe(X|U&O8_O97pA}P=UbBxs zf6-4(=1MnyqnK_|`5V)ZxPLTucE4ZI4{Md&+7X7yWqo0P`8xBDhe0It5#Ozp25DWJBK#Bhj$;1 zR>99gFJbot-hH?C9RD@aO5xX%rpSbZ8ylnLWq*dmzyKiQjq)s}&!=T|?N~ zrC_toKVy(p>xE@{`-jjtRX<5)?BS!?UM%^|E<|>UM;ykK0O>$gGNP(}G!akzs%YbI zQ!R6>RtPvM7{c4i(|WJ;P!@QH1M^phIX}%uXGlYFxyFvH!OQ2k{72aju!r0Adh!rL z1)f+-pDH}{eI|bVSgt-&3G&lcNbE!!Xe?4hwLFP^RBjYEJ@@_t03CMnt@ib4EXT7c z6+$dkkW&z6>+h5R$_Ga_>%l1YcUN2xG25 z#e0GR#Bd!j5ziX{8;r=`C|?q zD)pa=dIo|j9(NMoFE*&=kBv1a(QPP#YC**jO}1E;fZQFD;> z!l!KBeV;dj;Dq>&F^zN*rf;XVy0{y`#Au_`{1mGsmS{9FHPTtgW`)oc%sh3Gxt=)M zceb&OImV5BaO&}3`O!JKIKQ{Lp6WGC>3J7zgDj<7U7MZp+j3Bk7e!~2P82NSMG6E3 zSB3ebzOQy|c7}qEg|y1Ke+}qn14WweIE=J&^mR4!&-7Y+61_2hO`}1NtL^9DL5x#j(W1k$Rmy=vUW~ zHZQbUpN~8qTUTY#Vilud86p!1QYgNmh3O;`S+3*^D$I^3H7{owM#{D8WfDC*9&0Q& z2P3;XXN@gC}KPgGISW;Ew1RQ{Bp;U!|CYND}K(p=}uxaOA{7v(L&kxEDCkh z@}QX(Y)&tq2xG3Z_9_eU4cm16$WngfaQn^i(*h77{q-~o&2$;=xaUr&I~MOpS$q41?4 z0rn=uaaqPBO=BwT#)qfm`~K_@?fD&zo^Z=EDEle#$qgTiI0pO1X;A&Gwb6E!>{yG> z^BUPti8s@yXZ=>GA@_dE`TA+&D8>XVvYARLkL@U<3(VrY$(v3gu3h+ESo6Vy*fK;j zLX#V=$EC=lsM)#7Q8&%;ns@ij)40KcOU@{2cpWNkI|NQ@Q8Lf$L>CK>2`=fH6qQKCrE^9YBB_Qp%s-S4s=d`rwl(Ry&bxx}^-2 zS@na643+VJeXjqp?+5w{EE$6g$p!# z`#@sE#-Yi2+zD_=45dGK-GF!Nb3*&?gz|sn;b+P2lHu}it-D!+aeK@`CsI$KudT(y)?*42ZdJ{%ODg&+)Gm>dM)b;w??^4yjiwJ&-ez)=D1)?$a zCT*q=*e+=HMn(a2-1%R?Mh?la2Y0~5#cnqx(ut&gLXY#5R`lRmMY!SLl7q@_q4% z$x2J^s#^mpGFx&nMs(^$d_69|9`64f5mRbK^5-?GcK6!529SJ@v8;Jov_#nBt;w8s z<#-yy*GiDYLvun z{TVy6i>g$x$@ep)sC}claAy-@@kP_tgTyWr5t`jI^`w=013*0mne~{)zZ`xoJT2sT zK`DQaQS5xW-g=>izFPG7#yW#uEtK zQ8)Qbwtg>5mQl}b_g5YFvsU4*c9!`id#1%QC$C`UJ@DhlYp}kaLhsG@ATJ+N(f0Fu zFlv$2uuzT+X(e!3Fy>a2Z~S5eH1dyIldN2( zY9n_YHGWSk|O4lveI$$s(`0@P?Pbt$p*MIOGkZ$embK(g!reJnxqdk z>*e6S6-x%96QcTOuh6z94=hoFE4Md_OM<~)6W0^2uW+Qj^L>x=M0YDt0s&3W!qtWb zfx}kR#21<$yQ}?tbPKGp*xobZ@>gZ_to&_8?ru5}Z}i7_ zjPj?I@myDya3S3p3zYOU!zwY?h?ThRqA^UBM39s9so(=`l2iDUJv96f1&4E@kx$ad z{eMpj{G+_-^m7MD7+R(8Gy1mCrI2aWS6$5Zbj#=JV;vIk3=|;&4>FZTy>CFYS!suJ zaxWrQPa2UXZ!k6^tp5dzg54t4lU~LV7ver_p3Tw_jxoFtL-g@jhK5XDtc`FH*e|r7 zIMwi9b@=A|zw7X;!s+LnYocDnp(onqPf^pjT^57JHstIs9b}9fT{`70XnD2ciA~BY z5(S==!#9o>%`l*|?Uwh%r74#?)+%s^r*(MI2fl<(p08sbccaJ^2REz zV%M)o2Ir!sj$zsfq_kKYYhrBy3C5OA05&pHUVISCgGKiw**l!laZDR3-!4~f3h&jK z>a9hFyz5t0Jt(N}4~JPZeMz=j>;y^O{o^bbcy#ynnJt}^|6O?f_ZB;(Re=ieZ#Fak z{i#DbMUCT)(O%hxJN0~1t|4U#eYLGoIz_}R!7bO_-|qeKG{6@5u=7A=1kH*#yxywB z&fmERBW?0!MpMVB+sXfEvHXV(^uKHE|L1=~y4>^A7;-?br!>_b{9P`m3z}s=Uz2Qg z`@fib%c!XOzHL}h3{s_}Md=}wZV&{do1uH??i@r!kcOeV8-|9VC8fJd=|(yvo{i^u zUYB}b@4fE#{_;HEfVEfy|2?z!@Aw@RF@tE-b(F45I`m}B|rRc&VFI|8<9u`83 z1NApwDIH=M_KOvah4PK^2q94DuI%{ZP$A`d)+i z8`H?vJ_yqBYvCk(@211Mz^dCwqVwO!|MM$m99gnin8r(Xltw67{U#lbi#K3w%vQv4--Fgk{hF_GdKBVx4N& zQ{M2^Vjm_}2OxWS^nBMe42OMxtI&Lm15itOhJ*{%K&KOtr-Sk5b=2g}HLv1AxhF6c1ga7R6 zP^?@#DEm|K0S^wU;02+N@ABqf1yD)}Kvw9&MhE|%X)*azb3?t`@GyXaVicXcVBB|i68pPjZa%V@F>Rk)Qfzf;x z?vLi`Pyut~xHm*VNG9Oc9DZL-kZe-0npWe_pw1m-@c5JcffzrLEN75b=@$*gD3XoW zVVSXmV$nA0D1qlHaby$)+B@my`vmK`ymA2^jvsn+rdA)_@5yfZ--~fGqa-e1wRe{k zkSLt=IiyuQtlqlUGaxdSY|+l<=02Y(v3@ZBW0M+F@ryW@6cFcfAO0%NH4QU8jCb2P z*(sI^Dr@hx#;GfJsCKNpd|O}HpCkfG;Ra+5v)z{tM=iht>VyS7$x*A|VcC!LBVc`` zRkv-duQG{{mwO`?4VCsl%Y!#1obQ9Vrrwj1HHB2jnja$gUt`-&7JBUZCwQ|f; zyjahx*!U#pCLv~FH`?5`ue5eRWKu8Nb~t~z>6e;&q*JB+Kj%RURuo_wtWnIq=!(KW z2l7jYwmY=%emLspy=^`$Qel%>d-NjC%eB-clloztoNh~x+yPZF-IXf{3Vl)-b$+l4 z-g9TQ$oMZh+}eGW!{h+|MZNSNZw-E(7g1gy)-CF2@<26C6hJe(yJnOa9b;9Jqp-bK zP*Lq3#WSZtLT+L@s)Eh%1%`nx;Ji5%{+t4JR*)R-v1&P}ib{qRNfi2vX z22oWEd}oC!Zzr<8XJv@yIrK!r+q%nG?g-2H$ODZT_!_MI#7C8wMaq@oUv;gRyK>32 zfj#UMLPZtCCk0o@E)y`jbF{zeZGkm2+Us|M4wCgtf7cF18k>DByuI9fFe3Xtj)~}! zsZ+3vW#ltgd^GnFV-PT2^Nn>j!0} zAaDjw+%NEqx)B_>)4Pk63^#c|4JiR93kMa>Q4dMMhbFJxXW0-R4N7*GEhxBd4}MSN z2)25~31w`2KLWqV$|(Y$Kh7N-r_g7-j8wfU7#SZteIjc+*qwwCg*E0NhTrH9G^=cv zXZ@bCbPLJS>-_dYfLFC;_GaDCg0CTtO8H^IQSB#WNhTy(+((S^y%`C9Eq9Op65EO; z3@GWOw%LNQEZ<_tw`F`5a=242#zz+2nk$JB$>`)&*%Hv5%v}EvBMec7+8bh_yLK)w#V4Tz7Lia2$E2t?=#*v|{WZ&F5&p0Y( zR+OT-qJdxwD<4~msKk|6MoT&>^EL{fgKoFO$;ZDx>~xBdH}3mEW=@6&=vMN!rrH|Y zG@+`G_&cB~Gh*};igMNA;EAlRk7Ki+2Lm&5_Nfq=E+6dVbnF^!-L32+IzMkhXa+VX zh7vdMp3a?qSB@ffDW`$y{M*ghIiGr5G!OS51JpnsLAhW0UpH<@Siey~`fXxO)85R@ z2o||0xQtBoSLj&(G+!w-xC4mf$Xb`H8EJGYY@j{}n?D+rfrk|mQmY`5Ck|@=hw-73 zpYi=LBYgVq7$Mi|(h7ASNWdgjvyX)-(aRq*JPOYFu>L3w`D_$W$GRKLEhF8&*>!sw z8m=$sOi?nBi%EyfRihDTX|#a?8mQfa*2kHbFSQ`K)%R9*O(v|Y0WmSDa=I$o(9)zx zB2BX7%c#un&Y}_u&6GfYR$9|EPW3MeSQ`ZtJUbU%Pr9OOkja|!#@YVd8d7rfy_BOY zr@>z8&SVRvKv3Ig`No0$lGv4R@eH_}4Z| ze&~lJ_p!_MsLm*JMsecu(r7+M8NNQPEWv>vqN(Vx5S6I0U51tJ!LYs2H94owZn>0n zp{#8iNWG+{E;1JZoIRGO+m;-RS}*RZg{#51U7D_~Hhe3W5l2x_udFs*yF|o3!<|-1 zuA#jBWll~`&801o(kqK4wBF#-i+j)e+{5}1brk_{#5HanMM$u%M$eDv{4qa!spE$B=gRDC z1YMP;d%8t`yLEQ5#D2JzOeOb5fIkpAQdQ|LYB?&LXaM~da-!^nhPimZ0^%R~S{@ea z*akqJ#o}wx%AW0 zW?p@j**@r)kbqJLC2W-`R?$URT$dY#daQ|rO@;y}IhCfoE;PM$5S}11^?AvP3FaM} zF}ZF^Q+!Kt1%lt@Z`XK8onKc}WyBw#2wC3OW!{Kl)KHv{c!$=O)cT3opt$5kt}8GvJ&qIW%gkG?x5i9H=$V}V@%L|bf9R+=Jm@BZur6P8HVy8! zUqvtfyv+YYE5csXf7$v*OaHRWav1y)&xdbAP>e)!K9I z=5mW|D5+3Sy4H`7*R+&OfzQd9%%i4X*bjgEUOYVHqpF9+9DvORmV<~rRyGmnEHNpa zR4(i5;*%VUn;C>SNabEl)p3PB&(1Nm&WDj!<@UO0#(D&^yq&j}gR#1nrc>>R_imI8 zn)5Pmw7GP{i@zlnC%^22j&9l?sjAkCI^%Jcy4-HhcTo`kJ(D}`X7*1j0{R7k=nuQK zQs+_JRYYOJ3AZEYXC+noO+ zkXsuMUlFdMWyyDq6II?-`r$#BW{(;@CP&axjKN!b$xMWy)*tMe_RcE37 z^E3^~jf$|^(X3M$geD1vRdpD}X1r}_Z1hqh*C1vYXPjhiXO_995^;%)d3R*5&4yBf zb`hwuJ{CO$9C?5GH-_Z)UGWZ2=~?o4Y8{n%;n>6xbHMW zIA&B$c17B#6g_EFN#QWSXPY{w;@c`GIJPycN2E#VL2jg~q5MCks)^?iEecp_@Mfq%|XZrxJIUL%2c`?q(h9{<)Y%I$4yAeo^9aIWf;Mkx254|GO?0sXUV}@ns9wl{iIW) zgp_roVsyRCjiL3-(jM9Pq(^*VfVqt+UvRaq44(||xs?!nSO|)DKCZrZ05h%_Nxq3- z&0qIo>Ky9sSg4pgJdbxidxiC)i0-OnjUUgmy-mbv^h?uTNA$w5nZoS2_V5R3+u>p6=jFrxl+oq{CZ83nhfvw*)o7f2ERKim6qN4o!k*X{9+RX6(o8}Yx4Qn zRA2wChSej}jc<;ZKlswt%^W)-NJ?&n7V?65M=&i$`bqmU=Z6`qd;yqm!$QPG?D@gvg}4Owhqi%1 zv?F03jisb93efRK24=->L8Td%zSlEgv&L+mRSDo?!0YOg2tn$DCy(V`BTQgz1E6#z zMP`DS-RMDWBILZ@BdW@dlnDDt&U8uk_I`-bqR@)2&qs)@4>3g}ISP+L-D>rGaGzl{ z;~NOh2U8Wo{M~nFyS0;08@kH*jvqgv%yGuQq0B8hKln7|K{(xUeO;$Wwmv}vR>vMX zd&llFUg>${Jof03IR8sF|DKTgL$Fuyr|s%ePHEopw$IQuM*$W-EofPA{U5|o`(0p^ zXS}yilUQUfEYlfJ~<9$yjnbAcCJiYg5)()|vT6pJX>0WWnEmg)8#Hr1u6%392E<4oUoPwP# z6)QSLR&i@gE`_W5s$ZrYJr-49Bj$MraUZQNBPKYb~= zqESG}W`l!wZ@Q9ZDp4RVd0SlIjkMdrG+0?BWmvhUA+1w?wee*vQG6T0sC z(qV4L!e$?b{B!8UXFLyX&xtIWkW5$qiAxs<^Ece2kd-w9`(fL&;q|R}I%Hg-w3}-` zNo5Za9{{Z!-)LpOSz^@__4;)Y6L;Rl19Z3RlS5ep=iFu>rjBOp)jIt;x=VQi8;0qn zq+{wr2Yf|`eqv;0QuFy1F6t--Zo`Ol{NQ%qULj9(R`vxey^D~pvZ*Wuc=v4o}mO4{~Fz2;XX zAhb{wTCJshE`-+qK4>0_SqLwq$1G^5#Cp`+|o@`E@d?;tIh`jZmP;ih%D)%^t>Yt z4x?VKqz1L~cRZU}ZA)TK`>AhKT{U5uKHt_Ux>!V*5=%4jUnHtJGrBnH<^u(Rz9YgE zvDt?eT)wnHR#(fRjQaL0>B9=2DAK$YzuM3}^b(rWqYhx9=&J1Addf6rAx|Wu+c$ml zjG##Nil)k98bC6I5ir7Dt4a}uU^UC>EDvVZ?Yu5=n0%E^)N9SsU`rCkHYX#LhIwMp zuzDK*v@zZP(z?9(9FSsv(y(g?EJez*Mt<9WUsHMAp@mNvWTd!`abq={t6RD@82ZL? z*PX1Pa|>%vefl35M#GgvxcneW^m4BUZh5IS2?en&>?!~ZhoZFW@HBMh$(eM`3rE^< zCT_~g#jX|Og3Se;M!k3>BPK2A(4SP2Ed8_Oo}`%$f=h_#bpx&E?I^%)NEHOQ4KFbY zNE`V!)KTZd)E(rgVzq4+>qmJ@A-Co5$(cJ1e0?cb@JOEks7p)ZAmb!s(llhDe@lnf zB@1d^XF4~LiUXmzk5{Y3ETEB-RWMebS27oAK16Z2br^N4#I%wkZ+jvl&`2^C^kTSX z4?mQM>}-*vkd7e{f4SvJrq*an)QFOe7B=aaeF`gTmNj9E2 z|Do}?njfi?wqs?VcBEY_dhHDUtVpvnk>ef5RN~VtPIH5mW4rp4D_ogX&XLsr=y7~7 z^YAuOtCL>LN=X>4xZuwH}e7xy-G@yZRrdm>V%N|4N&NqH@8$wf(NXhnvk=)Vjt%Th9B{e19FNxdU z{ukZ}kE(`ED5tlp6+pi|1l|cO{wHMT|2MLWXJ|E(3UzquLkY1iC(l!Jf|(>dJPZO; zSB(eYEAQ~mm2likXuT(~fPfGU_Dd$P5n?Bazf&2f^d3-?{1&ap%C<}yYy!r3W1?V2 zti&hU@^C9srr_~hPA&=l7`#SQ3Dfk5L;;fW-Iu({!0m0il=g4Kx>qgz_eR&=#s=Je z*n^V(e>{g8Yl$J(xZ|jL4(2#}Dq@N3vuy{LbAxX!@rgY+ZhDe*$4Wk0_?sFZRYu*b zy$|N2Pafj~gTWxPxy=YA5SJO~d3z{P{qgzd5R(e&$Auci=2oVzK8=WmYY)?k+0^%p zjiS&0b02-R=x-=4^iLFrQv4^1TMt*Oho0CrMq{gw`mdWe&dl>`Ptub2S}SF`CU^$9 z*1wo<56Y~tCY|^vq{S!rCZvVf1h=gXA1^$z-L%k#vF|7 zUK1xdI!75PwqVHxWH&Ec^5Mf5iCvS}ClfXig$!jYZdSs6k@b3%*x*K{%kLVZz`#UY z>3$q0$oELQMJqf@2%vvVwKxOYIW>hWXfNESK5Q3vDLGrX2&;FsoekhTr7?U~baOkOyP>~33(_xJ5o{{K(>v>EP5y42-~_c_HZgL$Ft&|8gc7Jo(11O7dV>=?C8)+L7Tc^g$5u0WQAPS zFKvk-a0!NS<%+E&RGS9EisD)3K|8a?JVJ#^UxgO6jD%4)P`f6&FW`JEl6FGxO6|4= z9Ev~wb|~H{pYTYRaKNU1v8HaQTtMmc--=Jh2%04fR?hd7=NKh?e-yYfAmPZ<->bKmc3wc0BpJ|PuXQCi*5`P|>2QYK z{*73j3G@ap`9hg4qmME+R*=ZN<8%G@m8IZ7aAXv}VZYj^o>(%;FTL4hw7IQ2UV(B& zKO<7q)Df2Kb{dtBO*t*EaC|smIflX>i}{ff7%Fu<63nuP*tuO2WG`}7vH>msXQi6A zKqDdkGD;YH5QyN_P|TjN#?Be%pn8$Jxi4T(v}|6Nz7`5~DKDR6piN;MpUSQqnu_?! z6u9pfQ>NP^Yczbi>T5&n(HJOR@UDiy-S4BSXS$qi&Df@Dj(e&$iFVru>38kt%wXho zH@>TYvM!AqwUW(`sJ1d67VUvHx4knpp6(AJp!1Sv4VLj5LZuTY`;|`;-x&i^rH-l? zqQ+?L*BfA{g5o&n(r;v~*1IJ7%9Msb;@lN08IuD1ZtJhZWrdRImG+J*X1)4jpLvCJ zbf*>Xj?Jv}xJ#xIdM|CU@w)1!6Bg=stM1bzfJo|KW2T{6cA^J zK?nURan(oliZvg*qSKoe2#nyAo4AH$4~&9s+2;mF-a(Zd>vk|~S!*=r^BY*6l5`=j z?6*p2p+C)fQGZyj^r{PAtC1{sdbHoVW=0CV5 zf-a!sqV`Q!(XCiSm~=c)YQfPMV?LMO|EIpmj$W2ufNrrN`J>@0Fl3zJihgIm`~4~B zO+u6DQ5uR^WL+~`?)!zvO0l8o8LpYGB9@w#w+tDPX67AZZ@}Q^LT#qK1;W|qr~bS| zb)8|$A!ZT>4_4EfR`|9~lXj^!y~n%dQ^rdiobt56&W#(Dz4h0FSr>CU|MEdfnqoR= zTtbz~i}sK<%_N1P80Sjbdg7wy*9>a#wpuGe9$YJae`sNLIM>u+*)jMdtu%2q6?B?S zxK=@u#bSZ4vDs9=^nbxbo#Es>|FKkFEHybD4$G(#YnWc&o01s&YR}% z;}z^t+JA?owj%F5V7m?0zKfHn>{OJhs}ipI<(tYV zNz%F-dTL+jgGHYCT91?LCqJ+yW4&iOe*4k#*bc4-#aip-JVP3SYL?+-UyJs^%loqwRX` z&hvRmyZih13>wGxDo-zlv5&<4#-WH$%id*ZX$^9(Ndib)>I(1XD)Hic>CW%}^j`RC<4n!U~j zSNG(OZX4kE&4A<2^=*hHL7(Tjd?uva7Comg*1w~-)u7Qb6`0Ow^xTl2zAsR`B?tME z>PM0bzhH{wu-S39jbd9M7ypFklU|{1xoW8t4d{EQOHW;GMR&<5ZL7ANo^Qy)s?na? zekd2&TsLdmUfabY^WIqnbSweb!t*aXePkS!qw@4?sAH`^x=dM3r27kPA{oh#hv z6PUmA=eKT0$`5&ZZL-uWN?5*P++(Q~nS8);cO)9?zy^a!@{f93*Nrsm#wJny^$OWpnEOROKB6E5q&B8 z^D6X2ze8D1T6&L=d#7^sDZL@>>9d_^Co=UB=Muq)R$_qoTHy#3EMg)`2$1|}A>Q1= zg{|?xUWCx>o~lEcfxRMWK7p#5vHl`~!!)jU(d2Q8a!^nN23q%nw-?trio9BrO5J^w3|1%+qgpcrttl>mto2D?D*m#_^~xj;#ND=8q79;+vbnYzEB^f&A0zerY0 z!4$)Hr^8f(P}U^MX6YkEx(9n!*d$SK)I9}1?Ih*F$|QzQ`J~sawLv#7NSg^tO?jY_ zT5IPdTrXek+f>o}bg(z0oIQtY&<*&xY@s6w7&agW1&tz2&lU4HeVhq5D0n+gDGHgL zNpQq#(>obiT70{s(U;-$WxkiFqA4!>h1B`8>9GR|*}eV{P)TXj4D;nQtn{>aqkd|z zE-!@=|8B7GEg)zkioI1V!T2pD^3)g4EFS8o*7uhomA>maqU&4

Q^+J{zD5Yu}Fnd^Rvb_&)GrV@9CkeSMu7;uTYC%b3Uz#x#3Qka}dZAzjcw?d$ zmIlRtBZ$l_Y^eaUCO0ZPj#<=h&vNq2!sIsoQM3hZ{HAD=D#VC#>-OpYiCn~$QA1oU zj;s)dRZA765Q1XpGv%5~me)S!B2FfcaQ<>tveqi5@C7{r;&e*oF3cZ_chtG3)X^GI z0fos8O{J%sg{Nm?WlS*sla7ppj8phldsH@g*I$xe>brZlD#{LVqkX zF&Emh;B*0y?;?FlcXds*dN@dkz{HpR2u3}@(8 zFxkx*kaj?{k;y&(q&&4ubwJ1WH>wEte@%46mYzVc&&sv2-OYl&ZaUl5CGJ!WAO!J| z)Y&%!1|Bb;*5E^zH}#^DL{cqrNc-Ta!6;!8JICQtTC&i{GC)x-sVOjju&13szq+7e z-Wal}0o0)nxxdESZCf?lqr>7WGM;{aT4Q00-l;d=JuPmJl=h9=h6wPQMGBr{t4=rXDZB@N#3(tOhNRW73tAf_B%zkc+x=DA^meYplLWbO!* zIAO%W!xMoi)jQKGFPGxec8UAdqVrE&@PLK(S74y<8!({tEmX~!>Y-E;C;BWIezszF ztb9yS<(=-+37xcl<7yozs&Y?pn7SCD&Dp>{6~&UK1&W{N#>fxM#^sxr!ab^3^cgON zlIE<$i+y_V>=AYGWvy{N?ry`wJ(apk>hp>uallq!v<*j7O5l=~xu~@8cg&7?uvKS@@P|Iop;EhM{-B-=5l>nQjoaY0oCHbhbEuUNfLt$6-q~A{t#3;jhdt8DixV|dl1@-C6d zRB|yAvDIyBI0RjJ1H=2*tT$c@1*gdzEL#>oQ+D z$B$wW)A6Nq2q-3S=j38)AmH7wY>qZ@Yt2ud1Lt%rHTXYbw8+)yGSb4lKz$!q>`fGW z3rQF0zt2Ss`Xv`p{lCja+|YYrg(Fr}ypLp71ebG6SbCj!o(7H+yl5ufE!=t9$0yBqg+L3B`%u>+gvFj{u3&3#rJ|N9OP?FrsuV|OHWXocP zM*z>n9MUiR!T%)LP;y5PR-6CA6JH#usz?Iz%~tai+9$6wRMVrxc0gk2f%=`~x#REZ zn@0k`EO$dE>>Aa-TnFfc3Ie5fRdgc!6(}@M|MRfABKVB1?ai=MND`K|3e}7~MezRN zlZhUzMMIS%dZkE&LrrM&Vidufia)2bf4vi#pU6I>AHpVy3>lA?%g?#@pI_(CyXOD3 z2{;AcD-r7z!SdA>U4D49(+H-F*RLS0-cqzp~3;dF<_HI{vr6!usjV9ITJxuIgS|z_@{iGt z!v&E4!uC=Tn|?HTx9T#xsu~JkLk60!?^%r+!qHj#Fr3L-=2UR8n=yS-p-m$e22=Gm z)MoW9+nU;}j;l@C`siiXb)2>E$|Bq;FLZsIJ-us=wSL8`Wq@mSTeDKee7szYmcZAx zpSpwaa*I*h>%hN-054{l%D0_R#_N~sIm3G!XNb2G*)IK7$px0Ehwv+b8OB}1%A7qt zA8Jg(Tx}v>xksW`Q8B1=K0oK|Ryl%+2S1c}b*$s_b4oKFBBUH;UVosVl_Nkovv%~T`zx`4e@Bd6%mi9$v0w2}n%Z9l&QF_Gm!;ZeO~9*qBu zRn=Y;Hnl$vr#80e`yyyC$Jyme+gH%NkAfBzBnM;zv!o4F_&xn2zbF!moyPOyMTnXMCJuDf3E)E(KtF>={WT>tf-)fW>lL!Mwth5WY32BrEy;^N>8|S?lpR_ znyTDr-3}B{IhOdj?byN9C!TBwB>l=ds<7)-ml!%0y7G$7e2!rff?$?!BXeBK4ai|; zXem}*&3|04j)QcFg)V0Di6rrRUO7fYebZJ!iOiOJyabiFDo!x|vK?1UKjvrcSm(E8 z-7_f8iFfU$T?sz^Ta4Ls@$dq!1>^fCxZdZdDaP&bt~D7HWv_cUPyC;plvxq&dpBYG zX>FFT z_%MkVp;D?}zp_S7p)odw*!HTqa(zpv!j8$!;GlM0;G%rzp*P(DLZaz@k&Xv%?|j-m zY-(`ufLutmmoRZ_%w;Xf+;(UQE@RT@A8!uZ&Kd6xNgt1Fw}BjRHP};0EIMd-Y}y}lEPMg3r@McRG5AOBTP_e2y3=YJ^l7nS3*QB~cemy`A_ z%J9p2d6jJ}n_vM&Va`_v$=g_uELZGhGgVL|LDa+%c@JfoN;DTCE7L&6O-a!WJ+u_f z=1P4;o!tTX+T2ImE{R?cPjPGHq$2%;-j0W7B&0u zE&&lre?WGHti`$&6tZzne@60l4lJiEYGeVS3r=vKWrf+K$ zBA}g=bDRovwP3XxE$5pLVkq9;u(}7-e7izW<9r#Y!Cv@ng3$*Jlb;f2QS{782e@z$*+yvC+e&qr6Bjumd|yjGkRDmmI&E3ZFWIfytgMAgb3ws$Gmo^C zqg#sgc;lGuwPYBs+IZrjG2 zC?c`0GRTl7UF~-A*<5bH-pY)FIYGRARGDkR_?d&_`nYzmTp!`N$LcFSd!Kw`(-ihV znUy_eDUouR?~ir+FVM5l!f`FlH%!?2y~T`5<@jSR%rYJMY4|Hy4-;z}mXbcWf)D&V zSDY)29N%f+eRg-F`>2Ffdm-7m7c67GSu0zfdMId>C`Xblv~H4gscU(^BeM6i$tEN* zHfkEocqIk1gj5Ald==-{J1cnB=Q$vcyom%eLSBt~RY~*1rf-V#e#D6zqzLW4)sdV3 zHcaT4Jnxc?h^Lt77tdkSEM89SdlkPMFVd=BgNUxNa_$=meYM5_@{%_%VQO?w8N0eN z5@eT0r!%6Us<@T+*o*d?1Oq@Pm@{NjFJ1ygcPb(~#pYT_N=pl{`3rxGpK`walIl50 z=8-Ie?NyapMV>eFr-j-ZJ67;$Kp7bbkgcHlLn(#~#WM;@ZBl4CqQQ+}oG1U|$#`pn z+K%vUi-kmAOXOYK1S8>11 z27;R4>zLz@Aj|%sMXbr8FvJidv*oPbS#I-IsfT)%(BsS`NmYoap?T64V)um|nizee zqnW>4vrpD^DG2=}$j1;HznQIanrWIuF%54!X>O=#f_FeD)}*c>7~k{qSFn5CZHwz# zxSR<+W%fQA{Mtc4lJ{#Er`}Edz>mM{2eN^rsmYyS%;^kTzk@fFCN3V}1(&08gKRyd zi2>W4FE+Hq85H)L6C(zz1|xzLAN&Amp_AuNX`vAH=0CLqt}CV1l_KpkX~jM1$A&Ur z)^c5t`(4z%YG%H_HnG*qeptGB_fRvCU2=fR_q%p27-M) zGE~o%KO~6A3nQ7|Sp(xlh(ab^R7W7Zr6aDtIl6xGofw2f4VZ4>7Y$S%>UCnM@~$WB(MQV&A^D8_;7s|&o2h< z6@_Qd1n64#z$M=$o#`#k7>ayOSv_?8FA}M%EHgDSi!E8BTbUa(M(q?9Qvs=QP=j!6k_C7xzAcn6)zl{4;f zBsW*M87=!X?QmJ9RO*q@f%C^i44=4wPp^p=l{}FY1tXbq(igT0#Xc}|fr!&J$Trr% zL7j$<^qbL>imxW^A4w5?S+ib-eU%IxebuE4`!eW^u(sMFtiGtRzDy|bkJxU*`MTU| zui=&-9|jt-0SO&xVg&EyO$HVZ<|N4lbCU951_ZIn1|#M7F|M{A$Fc>ZFfr#X*jp#8 zPzug~mPnOH)r!m`!SU_z1H6UP`p~e2{_(U+o_jRzD&eFFBsawh)$OF)vX*(M?n%Ah zBe$~I>jNy0#jnisdnXTA5w!8Ecq0jE4JWdZ`)pT9OoJ}npMM$5dG30p+$wQboHZhw z+9zr2iq^8c*k_CkQE6bidW1TzC!6RdSXcmaV%)r&Sa`ua__J04FdVW|*tu1hr_|xs zws&8|DMdv->$+6gL|FIvAHgT{GcmuES*l4U*=Lh5MDl2NkLa7|I=g-XTH?5&F3f3E zjN25Q0uEXuITmtaD@jhVFO=9C-Yxzrg*?ndEHJiUxWGp2=?)wjcOqO^6!(i8n>ZP# zjpJ14WEmh8{8F+-P5z_~Dr~n+1v#^_3A%dT=J{5NDSEuqk4Q(dsH=oRIwX`LVkh#7 z1fv&4xY-bt>O{mOo`$jh!tHo$b|w5>T#tp4D=;kvCo`!pTr zoSmoCp3gF^+_rnI1rTW4IKaO;ht^TPx2+Ft^zSr8l=}1v-H%8Y07q|Qac@A@%WVV@ zh7kw$)_fnBYRsKF=4wW!hK4}#i#Ji6aBg(AH=Z5tMB&$Nm7x!BYx`L-{djYsE5_IO zZTbBv+W^j*a}mPAO!Wc~St?(y=U*zDx6Th(ZMAlO2D;-ft10%&CW9wv&?$`aZ3Q^z zK)h4}-z>^&nucUBj!&@pnSZNw@KO}u%O^){zC4#W6o_nITuJi;EMk-+LfeP1O>u2* z+kA!%@&i<{y6huWb|$Yhv3!@9PP<$T*tep0QZ_zg9Z@45Q=ulUvTRmc1OBB$qW5vq zJ^&sUAJeYnsVDkDyz;aMx6)4$3^gB;X2*FR!k;!f@}RUY(!5$GKy-j`jNVDI5>aXP z^0Ct<;_ti2Q?xu;4(c^BD|}hbDkRK2%!WOcy{h&Q9_t+?*VnswxDJuiC9|7TOYxA+ zyBWr7+a;V*4<#92uDEVHzm4@7XT=lYJ50AN!&#IqR1`_9Rp}P4WVTI`v!HmQnl}eXQx` zc=cT;5v8c+qmjMG9F1L@?nmYQyJSKo`;#_)TFv8v-f7T7-G{E?Eg zVItb@6#qMl`*|DtWM2g(!U^kVcuTdT=&f!SIjNjX8;`pAFT;eOUre<#H!!Gw{Mu&) zSU!XJDS4`OkC0kFkMD~)YZ$?QlORt@;p2ml-%lNF1Tc30!kvy~RKyH=>NS+-I zoZjEbz@1QmQrcWZ9ZH28DLscg+*RVUDVXKt{&)4m8O%X@LXP@}FZt*1N`XU%9t-GP z-OX}>#5Xn!J^$r?{ByZNiS@N=t@C2%Vz5`{-63I$US14$i12-2ClvgE#S>Edf;c<& zmwU^<_Ba3ce}<{`ui^<5$Y1;;a=07i^~@SxNI3Tidrx2I7_4Ey2co_4ZQ-1CtD= zR_=A}e78nVC&C`d9DaVz&1$Mh!sljn(iJ(f!yPfVx^I6z>U<=HyJi-X{g9hBkiCFm zK0U6yU}K(cBTv(pQE}pK&TIm0OZaxhW{h++Z(P`X=DK0VZasTT$$V*{)!|tBdw#_j zGTI-rb?5b^`#Gf#7n}(#++k+#@3Hdfv_}(S^Sv~5GIdyJ`gq~)JOTRQu7ZMdYQq4I zy(}|6wzsZ&nLmy%M@JmDBDc}CIcdI!f&J;WzQPC< z8DCOhhhN+1=ks*Y?Kx`tveC_5dUVI-5YockfE^P`1N=%F&ax`y_SBnV4dW9Yod;Z2 zH6TG&{`sqS;j|cHAFI#OjN})3QVfUUH^iIUL0dT+V?72T+_R^#59GvNAO%;w6X|MH z_bGR^IyW<#p4Q*h7LDJxpz$aq)p%$FbHBp1ex%Epc@))#5=<;yc$CEkq#Sor2wKmEP+pi!<5O`IYVvluKD%9WGx;V>~z) znRxlqv(0& z)a@+s2BYO3)QIz5XXfCiGtBxmc7#Z}%(PoM(`)k=qwCJ7F>3m&&UGU7y~itIb&!tB zE>Q_jqJk>+boPmoDiu-AU?htg(aX_Jod7AT-jhk)|CX}D4`Q)c`-s6U#r7s zIrHRVE6?J>bQn0yvXm?uRGucpD=N)~SwnlEU1X>LbI|D4*~fa1XEjy}+{T5wkwxi9 z{EBO5vl~7amL!f5MFV?mQ>R(`%+BxIWzNE%Eq$j-##o-2nBfPkj*CuUyi^|km}PZ1 zUrd(|>dN9mj!|y@00fNc%@^S6h!{WBUZMKGdrxb(^z~bY@9_&kWsWp zp6BFKaPg>H>Sk^~iyc+H-T&T?wdWcy+{6gqtjEMYaG1kfP&b?yPu#>xlnRZZZsmD% zuB1hEZDcia9G>}t_S|cK$%A`mn>RLjy5qunhCDjzG4~4Z*ywjzF|k#xxz0fgPLkI8 z#?f4kp_neKB0IRz<=VDFT=DjffvJ6`WL8Hn*_~R=`qSGXyQOTAN@)HLxa3Yc!lRk! z0IW+nG@H z9apAgrm>Kjwq~3!$GzVOI$1t;)W`iS7&r(I^`NNCyon;A3f6X~wLkO&Q z5BH`&a@y`NHa}?9d70r&kdw=MXq#_dNCqGmpj2}mIe0ifmZOX*E?>9n1$>B{A})?3 zL<(TbEk%?*taDYc#UHA3jT(5o%;?MKx+SGXd@sl)%7MLBtPg(@`;n4nPvT`m?JmY` z?}eJaO{cD&Q6A5bqHWi;s|fk4sBI#~{%-IcD|SP*k&8!b&c21`5er|@`B}R|?A^bX zLzA4`@8xiK56!s7Vpg3m=v+JNcy?EMhFV^{usOV4bp<@T6?Pfy5y$oiJfIGK#gT?% zWtPIH_NuNM2enDd)F-|u^J z$NdLK=$Cvkqde*wSWUJSj-I&a-g)zA9tv##}v}V?PcyA)SRfyc(Ys>4{Dwfi_MO>v?>VLBwIc1MsyJoTx zP8edB`Xp}!JDW+{ESU>fJ^P_h6n|v774QTjRwp~@JT_@FXwu@$jZ55=*1~$fMdPfk zEAYqnm%(*iE_mpITqLwl$O$(+6Kye#M5D)@)#R z&krPh|5`P6vaAk&FoBW(XkU|d`|GKy3MYGyi84pk7M1w~wgZt8&NH_4;dHES`;M0s z(FM)rHX+ec4W>`K8EAr?eDfB}r^|xI=f7b~uM8<_9HYvew=3Iv6`JZdF;2*Z^_{>= zt0v1S9N>M64#JVy+9YTlce~Gt*&?(=Ia%7-d{`SypV3ci4rlGBfv=*h+~D?FI-nKF zZJNgp<9u$b=d)zSvI*lZClr|rt{i+lH5|aQZ?E&SWOKO7@Zoe&Ztl)<_Z7zGmhBM^ z_xD30{+>&(;eD66Rb~M(RN{jHUadVW85FC@BFrJ1qo_{9AH11etOiI+RE}}f{69eQ zMc19vv9b3NA?G;BB@*+rEqr=Ps*2_(0OoYjLv0(6V1$x?|6#xBpt!FbdIjAih{#yc z!%846DG*f(5l_UtZ(^b=8d=po=iFg*t3w#R4-*n&rkz(`J!jev0gG&x96r<(rkV|+Lc7YO3Qpi!&L4Pi&n{{h)YsON- z&}R+UIr;mJPm<%wK6JTbKI&1;s-Cm^Jg4gL()7{%$cu5|fDEu{J&a>MvI-@iGH~gV z4-8VrQ6&oL>k~eVv^sB(bN_@lD@Syqf)}&0{&H3WD8IqUQx7cVXza{=0aM)Ra*Mtc zOH=GaXbg4Y)Gj*$OIqIdoOStS5XC+hSkQ( zoCljS(wH?8Ir#Jhby!6K-Rv&g(t@e5^G!rIQLJD1sntXgnhiTi}H)R^=2Ya2mo56gdq;-Bx_ky&SfUt9vk_?A=H`tb;5eiv zlq5ve%k}bL4ZLH6QB(pTI%2HzOfU7LXa2E>WVsb+XC-YanL#@jVN%qZy1TvvWvCAd z&9SwfRw#2nmP=JQ6#G1TgbYsRGgK22_GCqyKdzCS#U@s|X&vGtoH28Z8TP>#Ab`}% zUv3xIOHmb6KYJ6-i9X52KlW+8aXyTX35s)^lyRJ+qAH0@IGtld1NnEHLs3@*e42hg z5^AUc`fjz~Quf`?9AMcB1nbR>?E6Y!c0lFKFcL{Ag%Hf9@2k#L*5DL+T{Kw_v(ZLn zj!a0Y1Ga+O8s*EKubbIra7_=B@+z{M6*(jlN3n24+oiRN4EdiB&_2QD4j-nbEFEQ)ik@wb)t`wHUb7Pji- zxi9LYhFsf(c;((#kXF*{pn%;!udjF%_mH;BNY{RBh zyu0Pd_`Ax9SH7ooSNH-??UosIg6e5naxUp3Q7we??pZR@fYL-9< zC);9mhxF4;zQjYU&a!E|l6Idei=dG&rZyio@7O=30Pnn`7UG!nuuJB=2uH1+fpU$b zB{;4sl7PE!5!8O>pj%e1e?|zx?E`UM6gFO{tS#NH9I}2^t)0(78?vg+pm? zpQ|X;Qrk+X-Tp5vj&@G7ZnK%M5(OdI->xv(d_Z9fzh>vrnSqx;>;!A&4N*}!L_tFh zuBtnz23))!ex15*GiUqw#ov&(1x$%A^!`!6n4Sp!eI3N_nuNZ}_?$&sH%@oY(v`Oj z+R^LFAm5RW>ql;zn&wHBmy?0MoWy?UBL~K;qw(`IBSoZN-#iV=W7gw7L?>iRSDhXOMLq zz+2o8%;;#|+yjelgPXkhb%&;xE@|G|ljijxQ|d`i6BWpn=tW_1#bZl~bHjKDWQ^Bw zmYr?HmAhdWuPuS~FWc6Y!RfmOUTK?((_XH2=_3j14O54n3sh7`O9X}9KwEC3V`s=w z!yoH4&HtRSBy{3c)I|F%uEuG&zil-BdgbO!=?km#bF0po;`;f?k0#F?;rfO_8egsF zs!hd2RO~1b`$wCTWP<7YNbjZLmPd$2q#!iUnlk-*e%UI>$D22xTW~x9+iVUez^mWI zGySbUXc1|k8@`tAeHdq4^MSThkFB-m31e{9$=({c3k4Bk6L_W>axLn7Hu*;Z*kIK^ z-FN?KQ1zzrQ}hfyzmI^KvT-ElkwUw|aNe(PvbCi+6ayuQ{lvh+N;*LJhwFk^S*KPR zFcAKZ6 zBtw(7wc16fXKPd3f5;~?+E;%>=DbCeJQr9Drq@cUdBp9!#pSiM2yGdQ$r_Fe2)aMp z?3<>tqCF(Rj?ojP3bf~53)J(efn+D$pU4M*(pTm--UsicVpMJnZ30eqTm83mT#&-H z03VTh>Pb5S!bdrmr4?m#fY|kKZ+KR`Wex zQZc_fgWo(MI=+ScsG6A>)5)LfHWtH&sGwc;=tm-%wHk0z;G}o_lbHBIw(KE=+7)F- zy#S#tcT~9E0u9`()X3i5(TvJ^1O>gN6A?Ej4(T4%v3D*nJ zBqE5Ez*@Cbz?&xO)PzXgyi^~{(lD>ZErK0ZatHu4flTjVhdNOT$(32%*&~0Nv3Z#80%)~By}rA)=1t!? z9bMlcl}_m>n&CA>6&XJt@0e4w22xL-6RjNO9P-Oc?;lEaZiaDt`pG8!K;$Y3Fq%FqpnAufnI#Xn| zZ>&?oEq#uG4hPP<+k8DlGHeVU(~z;n8CL+OH+4=xT??q*faj$6 zs+>BK9Z!JnbR;T)%s?Fi#18(HZnmg-ttUU{Jq*wAdMLzI+Rd^ShiBO}I7Y9zKXooLAXRlO--R3o|Y1~NpWXgIq=7}Tsx5J z6{n;T4%_rz@m&kuh2v^6H{Mduid(VcPn-%X*#_Qps~Z~y8w11j>#9$sBR4iSE7!sT zxA!TEsNRULzJAwvYZsY%xM5yw9~tccaUKiuh{MXmWL`In=V{>{*sHed%RE$VP24-+ zEO#mzfd+pnUTje=*m0Vfj%z%~C{MyWF{PT`c&-kWvbY4wflK+F|5U`5 z*Lz5>ABp4@*F$eai<}o&;*~G`>k36x(HjH4Jbs@%+FEXLSHl&q>BD}lXyXR-$?#>EHj4qSXtJz z-8f@%h|f?y3!K*HTV7ieXjGlyUD2YmvAntmLRxaJB%_J{prUu@`3DN=Tz5oped_22 zL_3bQZnNFNPTp!odKp}t)u*dR^PX}?t>z28N9Gj~d=|9pbo0H7E>0;4ryixiBIO6_ zii=$*+XFTaf3Hh3p#D*TZFTJFZ#uUS!sc>MBkesn%o2F5qMr~BOQdqyWQB5{-SnQ} z5l9JW2{mDCJ|5B1J%dRtTD|Lm6fYhlf?**_*4JK}~X}_D0S!nC| zq0+Rrsz_-ilZY@|EtUq=mb0xOENyME&EWmXj&!5Gj`7BV3Uq>Q8fJ23G~C!#cHk!`1)eWUBw(!H=^gLYiC4F(SCwkoP8pEkbs zTSjIIv?hs1sW#ZV!CdMiz zatklhX!EK-Tyi{^Tq z+(+#6dD?A;^FjuCwObSrRx)v(_vQJc{zp#kRd`P{DkB4f(JwVO{c%#9)EkYwWFYb8E;t36xL(yGh6^f_2oF-S% zB>0C~;8}`QGo{mbG+c%JNEA1nIt77OaQW2dKg%6irsKsxF|kJpQWKMc`&H+QN}-;X-`t%f!UP3##!p-6Z7<574K)h z;n|4vF`oE4Sh8nnk^1wO^|ia&{siEQe&^{l{J2L3$8uB36pUY2ewd~XEFane-AeM; zx46E>8VlXxq_SJxB=Eh|#w?$(VP#31()-7_LgxwM_RjdGX4@e;D1du**Z!?r0T>s7 zd)G^d+WZOLYTht2&LJ6N-=^eZrInsSj`=vksj9CbB2QswUVVuEw>JC)A%j-cqXwv3 z|FUJo-4~+4N`ey+gJ3pGwfiE4K_0gmY8GV`V1huowrK#W#@CrU)%t@f>uJ25suXhd zpgVRX3Rs#PSA;4UGYsW-h>is~?G_CZj2$O$x~Gjge~EKmF$4B&7;G7$t}o3^i;1)s zCo*H2NeL|ur%4{8JaTHYk zS;gHk7O9_?TL>+)Sc_spz|vZ6d{9wNSik+A_+(DgWys!>9C4kA*JY@n)T@^jWfPN? zFwvOXN#uZsdcxs=kviILhny=etRXDlP|DovQa;n0?^Ito`S^8XG$NCdP3_znB7q)m z3^a`JtAAdFlHZ#VklmxG(FUr!aw{)U7BTu)+(!sKOigVzMuJaR#Fr}H{C%sO|`DK9}-ljzxoh8c_%RE;=gDd}%5pA$G;gdGH1k$c*BFdVBInyE`a^q6G zt{h(M^(8AQyQOpov4?OV{dQ|v%ZWBm`>LIdO&dNoC()yFhUT2|we!kSu1@>at^1!;27mMaU#sjR7U7H1>VWDz@rJz}Qk1ym%`3E(n@F7I_SdPA7c@ z_0P)=8pehLwz{#C4Mg0Bx4TBhNui8SM)M^>Rtc~HI9j zB);yoMa3DreJ85ceEYM}sf1jb&(YHA&4p9`AYt!?X6 z^a%$-x@6wzK@B2{9sbHhf0Y_Fl3C%!_akYB^Q3ZGcUZ%7HX5#+6z+AKdLB1``ogWs zNbf`T&JT15PU*oaU5MC{RR<*|N+#Hcqc4Qr_I?(A^RA_j^seb_)2wNhI^TE5zq^bs z#bX~1JJlnHsS&%icSC_7NJTjB{3drm8yIXT2kUN0L}?N$YP9t6g><~KueR|#pM~hw zx;M#<7AN5LCU^Y#)V2DTjMMS_W@&=D>g}C>DQv=JmLe&r{DU$3^+M*c$Y+w-19EI+ z3_Ov4EeYYD)bOK4{u;5g&|9jnzlHk;oj;=-SUP(q=Z{ZLQS_VpnCFuu9F$}bb8iVc z+nIK1^HvlJS8Oq!)0CYaM@kr$bowkc*$S%P@^{s==(vY0KX35U?SfRgow?gqo)r^! zY6js%oT>TiRdm^<=7lHwl)vFh7u+!TbhGhH^}*MSjmPlQvf~PBc590Y0teaN#%d4m zV90?O`H57bM%tY(hNbQiidsnLTF71e`qb~^uV|jxM72}O)-@>zy_5`V4T3@{~841k+ZIWrILE1YEr0Arhp#F+j^vQR8s+8Z;;B#Vc~Z`N|2pJ zb#F-N6Kp;PPfh0+l488)Ithg6=aBb$oq@}VaCxfPC>~r5ZWHrB-@GlbYm=YbwI;$nFe`52a`89V&mM}~U`;x@cSA#!{yp=5kj5O6CMMa*o*MCItY{0hVWn+RnM zrpT)-gSjK(*LgkkgXHG!nUnK`#?N``2ds8&s^s#I8W9o+qotx7jUmZr(pX01W2m%g zre|aGV%i$W^giITFrqvzBq6ap>NJ$mcK;N0jQji!G!nhH=UAPcI1JGvviiTfC-Gh9 zo;>t*UiOL&@8)@|m9PbE^kj=3|?D(QE&lGLf}6ANsm$81J>G>cyDH;NfdO7^2M zZ~q;`Z9=|IiOAV*cF@)k`3kfA;c2y3hcxp575}b#*O*z1{gzS_b>t08yu&uw@^C`Cb{q@c7QDFK#3bv6+*z44a)#1dPSfp0-!-UV~nIM8u1qqfTD*%fw zvxys6c1Zb1G(sgP{ns>}v1#}&M^b5!0T9pFD7NW90Wi5V;O;E^j%ZN5yhBwX`PU|a z5Zug1RyV1rzUL98h-+y||5*)7%#2|Un}h`J25V(u0>KE?kDoi=A<;(Vbc)!tJsPrD zV1m=uuRY!q)D~_ZkU@u)#2nV>SBI|wW~m*{>N!D&2Ql1wvUJW287@%F;gWBI-a^Ft zbM`TPW|L+Fw9)h>KukLmUV6P0dN@A(VVH-aZ4kBSN*zcOYrgtUfr|>!s($046IGg= z{cvJ^q1{9A=fKcqe;$*;H~-oWUO`=me{Ukp?{F=;KTkhlmG4~X-AJ+S6rc0<9knk< zWPNuwqkJ%%C-b4OYVv>Z8nj5vDxmCdO~K94N0An$R;{*yqbi(Q`1Bh-d67YVI* zDtnUVB5oA-9@{)~py1A`qI@THa+NMa11n~f8QNy+fSeU@X+VlOs^(aE~^SE*2l36m-+kQ)x&&k6|19Vc(jinh`2ia>6&({;H#3+};xEba4{Q!5?>T0;-&L)cc=S2s)Hr+-<*Vk%1=b-i_YzRfTA+?W*;JxVyLlC7??G3xPs);)LwN=+ii}O$f zPzXMgXy_D0+*AxESwyl>o{aSA&_(EBe_4i3@@X0^ZY9n|XZIY0hH4D|ZA?Z7jjX7U z9l3kz-m1!xgQ@s|BsMFue}w8fEB;f#J~k#uvpvYLA3xVsIgEL%_(RJa{g4&Ihgx)u zLUiUry!VA+l*;coG-QwM470+V3yHm@0C%;CLenoWReNlap>%{?PPVKt(IsxNx zlKFr({mn)~6F}w7L9MDs#}jt!$U|Kx2fg%>=kiHq5S~&Ll##oOcIGgbw;zjT4E!Zc zkc7(CAPiJvz;8{Lgxlv&3h9pbHxLOdxAMgFZbX4rX1(HkT>akK#-M1Ph0X`VTa8Ce zHSIP@(Wotm>{%;rOY=nM99abIfoh6MooZX_CepKBU|`P7bO$YxqCwVhBPYI#*di^v z%Q(29!Td1TuwLjr#mo(C&y%Y4{1@jh!Q0753qj|>XK1>Rp6@8 zUVzM*Pa7B}1@7{?>;d*2mooPO#dsvb^NF#S&Q485?XZV%Nu>!%Z2BzpQa0Kbm;_}> zh9)7;Bl|3vY{k868+e@a>+9=9wGG?rT)kX@F$4B#B=oXTu?fEJ)C=o-*XG8OYkec~ z&M;xVWttL(Xr{pX<+IOwzd(YNUi=I6hJim!J^6XE;ZeHK2xJ4nDyJJ!CovWbHb@D< zZU+V%6N%3oyCMg<7y#xbeJb(E5KF>l;h!#O3a6fr>Jkafx1=t5Nq)a^j&oaf`26Nm zz1x?jXlNoGv@BPrGBVILXS-T16k5g$qhNexvZtGzkO)Ygy~OOWxrMy`R=4CzQHYWA zIH-nuX9NeO)!@Ul1TCd;8Ldo4jNv{_=ud%aAxg&xG9wpKj5n%Y2EpO=z zSF45*(63|h{l495GfYj(nA*{iUVu9`$p83^G7KqpHpb}E(xb)mkDt1&UdE(b* zu3a}N*=GKDAh?8rW3-y3QOJRNYfGP}Nlx)!;J`n^my zNb$#MIrFhBn_ijV;i6n@DbB#R?aw|f!z_jVbx!>a9qf!Ph7Q;x?6t&z$=O>rw(U~# zdgi{ef+z~vj-N|!%hr3C*6%u8qffquKe*9HFdU7l-j^@u1R~QsNV@}4K_NM;zWlU^ zP>vrz|Ce;{9rdd8@Z}!xTs~+@UN?xwyFRycS4`Gv?7}VFJ4t(enIN)P$>(JTJ|k{j z=_Zj;A15B>Z;*f#X^+VJ-rxztjc*|Uz_qH*+cQh&q)E0rLhwyeyVwtYUwYYKJ-yh~ zSg$C{>)~uDbRl=N>0i6q5g~YSz#9HtudgkIdORo9PWf6zB_np-VA*vMXAkY(KNA}XuFt(aQgauh^^=q{ttQsgLHX*YPo4#pKar~mSP zc`O=0`JXVSsTQV&uosKwyd90<(!=goUKD}QL%68)@I*g};f7Yka7f(q6jp({M71h+ z%@vpaHSXcpSDI33(0ATdHqo1-!!gZp-|XG}y+%h!q0uWVnEJ82g>UGH%+G*n{yCu( zDw&^tO@*#4>DLk)`ORyx|Zz)2SBDm^Y+A6-2)aEF$D_mu&)PN45oT$~1 z+bvOZTs;g)Uz5BhaR~+cwFzi>Z~wfRmcfFF@Z42;%VfkZa7lNS#X7<`+$c!rKbJcx z%UdWXd9N!q+cTk7@Il7P>&ur}OpmiYsSR|6q{--Dy)zd&RaIw0{$EMWI|MyUFI2pk z&OetfC=Ow)C1T$z^>q~>GUykQ)y3!AKM{;9XSMzs0@ze4BRId6TQ6^nclws5=!s0I z7I+?8==jzIl3O$z+phFDPRwNziMkLuui}I; zW3`HG$?AVkO}X^ScM*eB{YVOL!8g5cu83_HE5AttKMb`TUYyQ+n;Sp;O{cKRo02l@ z@$T4Ovq*}m0zkyi0L0>0C z_<^sd343dkP#OLH8-(*aPzV>noQujj(L<@KtzZhZer#=c>|t092)_Rlv;ALt z^Z6deMZVW<<+ic)y|(UJf_~=F9EQR;cp@@KH;fIH+i92n>Imc24)nZjJ}MFA0# zbA7@rPUO(CvI$n~nC=N2|7$AvkDz^v@G`K1S&Jz{GI7>D@RC=9QiUv%L z2>Bl?)=(_YuE57h;Qt6Zn&e=fndKHBYKl$gXaiWfI1}o<4-hrQ;l~Z1O%IVWh$wuc z#ggZuK0n_(!e}~U&&Se(OWyIbYJ zn}#U9a*Txk4p~Ef>*Em&22t-PQQl8Bfh8v4;HWKa2c9%teY@V z{^~y{&NGU!@=tz+J&8SRM=)karrKFtzWWnsKFC6DtP(?jvi_}%koFZ+WAgtpqz-66 zzb!()DZ;}ju2C#AHbVaP8%sY^kg*ncwt2 zl;N9(F!p^r^VKf3Tqb`P6dOZMtSL%Y7DhUiSsrDhr-zAR!Knr!aqPd5)q zaEIq3SCdLFb=P1UK`(NrYv3U;ui%MIE)%72C0KnEtbm;_@2us4^z2-j$k&i1d%B;EDUfG*dOZq`FIc^FxnTL)txC0b zCVS%6&CZTmElYMEyB)us&LZBlN?cqacpwI2h=Wd|id`J?iO%`2Hlj2Q@Gw6R)!R@f zShI5Ezhp$k%yYoY<%bNyLXpPE3%5h$5%D1Mi2e)ix@ryYi5X|k{FwB@Z{|0@Z3v=p zw2%s(?rVst99w#ne|SR*c+vKx)n~o?mFn%Ml4YVaIp^psZgB?GJk0ZEvrNS@mXzt) zVEN#@LSAWXgrxWz1iK&%l5qYVVDb%x&*uwame}+t5ZqI3^sbQi#g?4#=(N=TPPr+i z|2@ow4{~NC%`GAtdyb{@+|LNG(*~NbQxf{LBPG>P7D6qpDqttf&P3VXbvWRuZVW^} zEhx7~ke*|?oSDO0k@!S`BSF+TqN~h>j6wZpMYRmhKhscvB$K*x+Il?GtuY76$ zJIJeAI_kuDM0yPBo>-zfOHaa;-phd?Vg`J3szg9eoXwh+a-KGE`swIKUp2ao}W=+^&E1ss~T% zgNVvco>;;o`2=6|ykX@B!cmVyp6*LMr{gzsrwmD_5)Xb7y)tfm4jyJdSVh9pt2-LG z@k0xqpG(j~w_GmYD*1i4rmDJV-ET+p@j>70aJy1NinF0I20RJe(TE)sG4)_}YE7zM zkWse;2_lPavwP@{ME%`HN}4Dfd#E?ON*{SA=#~3#OagtnQ_;T^3 zoW(X^M5ac&X2QO26Lg+(vwOe{OpAQ`O-EI_@q97!%Ebx&lSYOYU-2j2@M2P&Aw%3Z zR;Sm!*3I-YdqpV?@9+cDosQQ(SJji}G0PKLQ($6;`F_`>v?HTkf_4w1tLhov!ua|p zqWx7THqnX)LL}iM`ayqix@jB_UXLmZddo^C7dD{6!bQ*X{gYU{y1|eAH-RF5m%#34 z3Mcv}Z+_^&H4M~4Me&}o-!k=4{3vy|cq{f^CtMNFeoFuTHZp9yl)s{VEa|DQbW)Ot zk&MCIkrWzx|9W4~0}t_5c%TCQx+}#%R>TkYp@%}3Vb;B+Jdf&uAwE#;W`wQAQi&;{ z)6RO|tyg8as&k=C(!GB^tn`HX(QJ_uy(M_ahN0ejhpCdOOBp*6TCG8KaMdh4#~>={ z(Onpp@)I`V9fUHAMX(ClsNkBvBtZn|w0>po#SIfw#J||lJ+l(=#4Evx7itVamo0d9 z!iQQkWPJTa^a zh1OC6>NHl5|9Y_UCx9{$`Fc`Pxdvu@HdPmBkK_CL-0308{LD|s4+UnsKl{P3##8_T zeTsm4W^42`x@~JK9xL`s&j*m6-hE3*|3(?Ea^_VcI&Yv)H>5aKZ^vfA@+K^Xr1X=I z?iAh8dzBk$H3^@^sdwe74lQeqO!uD?8cRzV_=F(tN$yU8(w@qA_}0kyPv?_W9jD!l zg5it)T*5!+F#kV*Qva2zVF)O#n@>>Ocu!y(!jG*sg_k(N61qn9bFLHx@R!K^Cr)pM z@kH5Nxj!EfZs}|3hz-$*X|m z{agK=tHz5n=M|6VUm9%^9n^emkdBq&-J5dQ)k|o^a_HHG(j`tgQ|c6!-gm~vWloz z%(c%%_1NNVWyuafVOahI*t3dGw||?G1cw)1n8M9}{t!VTlkK>Gnr89e^XB9+16mBz5>SwmlevQC>olRU?q(}m zCqL3v-rwQf@*acoTEqKrHrf7WK|Fk`B6t^cz@e4u7E-@r+n(o=K34dXGLfNhuopZf z5%S}tKv?Z+L_mAjHE0=KimF|TiK$%#&!`vOu1l5yWfg}6;Gvz6YiNQov9@en`HqeB z172eQx#)}>tD6j+07UGMYZWYm8h+8MIh`}9e_+^w?_~u%J{F^BrB)J_IzDr~xg=SN1Y zS?Tx5H2Ey}$j7z&H8b-U4kpps;GD}KVDCP1&_iibJ=&%emG~>>yjM$PD`QS9mWl&$ zy3YoCZUxh3eoJ=^tNP_>>->P#Q%e;K+7VWRcP@f53I>$E#%J>kXHOaXSKFOJLg53J z&QgdBmq#6LIk9@4=o4%Bf}5Y8Zu)*z-`18jxJ3sL4%lXex-vUCX8Dwhy;GbjWh*f& zb#v{*({2rOKjB76mm2?sRc{3Jk6m`589G7efCxC>4U z?|YP8u9A5sU9|CP)~bz=xj?aWxv%maCTm1cWP}vV3?Iph*Q_y8>ziVCVMD?5mzeqY9FSVK%u)uW@O6DH zlB+FTBf{k7Q4K{2acFFh&m2@%vcdTVq9%W{xc6g)Tl{YgDJ#^$j(YVhe`T7<%P-%= zk1J7Ze>kB2_)*EGcQ~!FUNTecxFGd|U`H9%SsgxT3j@L_yG(}Q?F*~n9Xmp1o!tiD zGK4H{T<|Wv`aI*5?W8A~c_^8X6R-)(&#HD0Wd+{430R@v|BmJK$G8HE4K5%0e? zd|k|su4r-VH>=HpquBAgoBDje4Pt@6(^#SPihw=mhc-%e=t=L1&&&dNMJ?jMRCa38m&PwyTVZ`WLo~MN5AK46mTN5}kq2MS`mYG)C-ta@lyi3YT{ zePt`D))ScgIYP{iiCy|<`mQ@RY!S2*`rq(`HedhW0d^G-RLymKcxj6P!*8(O^Xd<< zE-yRx*%gE|jG5!F67%&E#iv`cl~qR(VIS>1QH^X1Zj`mg9nO3@?zVdzPHEc7ei$`o zyTuTNfwvn1ZX|1<@^uKS+PA=)($=>Sj@lQ6U1uiW_8?C&(ZDl}B&h8z1w~MaA~>Rg zNFjji)ZnA41rgQaLAo^&Cy&ftILci`kx~Chk%F&Cb$@A@cvKRr4oAk0&igOyCIxW@ z-RYupQSkp$knfW4C&;IX_@97$_I}?<@@ly0ylGKmb$S{h(gsNg$U6YEWyg8SYzfXZKqWxbo4)U;5M=_m|} ziRHK&W*dlK!{}ca;qFMuO77U>xuvd6$VkIP#GXz> ze=}PlIn-{Xu=AdRt37sXt48{MeAX>y?@;7Q7?d3mWU>3j{0$)eS9Bu%A@G_fq}4PG z|KHV_f0k+fA9V8*7XBzRSjCx{aZef3aLVH+?pXK&%zZnAm22R24j=P&_<3 zu{#;P=_t6LvVOxAJ?`AC$S(ec@(Q+vZB?VT9&lyGp5Shqy~DASgbnH}aqYjUsXSoJ zm&VExQqHvaa>RO3ca(!pWeT+>9cLC%BedEjh%JUCqYR0*bmczD7{m z#2Ym+@L3%bYAuH+`o2wc;2bOS$e^*;oxl(bGX6lU_Ozg>sd56-XSMh48z|D3?R8{% zp89Jy1orKa{TiJ9%!HlY20G8rX{n7=*UXn01i|pwh{mB+b~*GWsote{4mitC@R*;| zB#jE8xo#qNSic;R-L$PNeC!kaT5Ga+x4q1J`88$Gcp>K(83LZsNt(xf$#nf1t5im< zWFRXHwKIBeoi9Hri!RiQsrt*k>*Qf*=R{x=4ztJki@yGhJ5FZk)ZudMp^gdH%duyS z`yk&VxT6A`fo3beBxq>w+~j?_HvCyMOVb;ZA_}&iWgEQ>Zf-WA#JTos!KB@zh z9cL9j_Oo((bw>KJ;E>XU;_bWxq)9H9vfib-*GRLL>g`GCB-I4So5t&r8>#_BSeJP_ z(dxE%kHZxW2;Cp|yrFh3_$JK4su-T%O(7$dL6$%*M!7sa^PYw%c8g5aXj^VQSSzl(h%N_gJk$oY zhNy#NpDEL487gPE6x;N#`gt8h6_r-l3}5SE6;kMZ)q>0YAsthccVp26ryhx~9Id$D zZN;z;8}PSxak*cjRCe=@5xN(sAdiCP-D6voG2yc$=mcE1%j*94TuALjmf@R6ae|60 z#J!rYK8YT*b^ul;uT4Dp7ucd1+$ckjYE%L8Zr_?u$FysvgGs1tNM7&v9}}<_^`=Xm zEl0K~2_e*^9ZSrCio}UuF2)*n3}S5>I?W(a@Fy3>M<=vSAdOlkU(_pL>$AddM=596 zJ5f*E&7@#5r732&tK%%T<=d^|bF@9GK>T#`mYY?KQ*F^%8NYKct&0TkCTGy}bFRiw z7I+_zwdf#19WQM${Kjwv11#zU=`uQL?Dp&JIA0XiRT*igUYXpt!{D0ow5`Q_*j+xt z^E=yyd%lTUXfWw#$s2Ig{{ZIiV^Pp@=6Bj$NHr-{_Q;nM@>p6UqrD6`6$o~a= zrG+6dVg|3g>BmEZB-TFs(UcpTQ151~U$EBvDMOEJnu^NT$8=mkttoKA%R-rr+CnAM zcZ>mhp@YYW1;?0w3mYb(4dY;UiiDRhp~|rh50g#hi@R8Q{DuS_$G*gc%DN4<^5q9C z){i@;VzBt-sAyU~pvIvAv6SNv;;ft$QA+UBkUW^Hmyu_TrPJ$2+07O^WjN~+aoLrDuHXawNH{esqxw?A{T8ssc8MA z^}tc7;@aU*&PhUOXc%(`%U%#HlR)xX4oqlu~@_Zy{X_ zqE-F$qR8N4t(2V4GE;JpGmrLToRKxcr3p7NP_}WQ&p~;~<(QaZ5eP>m!7?!Vb{|&z zkfT4G6@{#IlF)ekT8&pX6N=={gXCLB#r73_Wjt`OP4`;Wt2#7SjTM*xC#uZ1n_&h;*&QX0LemVQ*#8hmBt=D+YaX8l@v-Z@&6+_ zD6`+RWB2};31=1b%xoL8-Ybkx=43l=mz(y} zehbH^mx=f^T)utruKl||>b%-Le*On1%lLWX8d$DMmBf-k66TA8&byzR%gJxv$fhTZ zO0<{_^Tv?=kckurn0ndVB z$Sae;%ws2&an9`elQdD=XX~!7uKY}@FHdm?)&2pC?OLiDRn21oWNp?ylg30aAzwD8 zgn~S{V$o!UOJT5B1s!)t*B(yM73zjOd`-tE(H$?L!m~pGLq(LgJt`O zJ9+Q~&Z@mTlihLB@R&^$3_sWN20Bp`&Rz14y6sSzrwx|jo3vlP0E%Y45`!95KD=Cb zB&ZM5p)4C;I{ksdW)&IlXSw_XR zu3I`GBm{SYOK^7$?iSo#g1b9};O_43?ohb9yCt~0YZuAh`{bOn@9EojjPB9@>PH5F zTB~Zk-+bqMX6Q!leTK88g{fRJU;of1Nf1^Oso93jL39-`#qbj9s)E`4#1v&LBo*v6 z$F8F$w`eQK++{{sGxDL)`NP~5e}gi*9gQ3xO4}hW%zS<^Egv4-PBOQSKe+Mpi-Mr0 zIISEv^;o(NBl)p1xL#@HQQtc`T%L$XTCRaEH3v#n#KES-Tu6_enfadGCZeZwi+Py z3Kd*$VxCx&K)=C@OkJAGz3&8F_96Z?I`rFkouK@Mk5WkqIey)*8N)zMj5{qi$*PgL z71t*;n%)j_%2ZP5xnmf}=$n~+Ll;gec$}`{*oPTg(~x%3>oqKBX{Az9mhiO=8V>$I zPr_P>oOK|b1c0!}jW&sP11?R2b1)#(UcW{~7bl(8t6AGw#Uxrp7v~?N6igpXH5!@A z568YUvJ8^DD!wq=X4e@j>drG+g}ETK+k%eG*!>=NVtkPs?8rG+VA1^E(^|1F;Kzs5 z+T08?ZouR)%>qQO876MQ?Qc&F>qA}C-ZCU}gP|Fg`NxVxg{$L!FtD7oMkvV#V*y3O z2W!)w1pkG%xenUsqx>nxa?Wv5AfO-Le_;V?o+ru_>#orf>K9gQWWx<^_8p+Hg(}rsOD9a^HdiV(-?H&@@g1-mUw>9 zFD8R)kOKVj??}(m*_^31(#6kppGYQTz8WzFH!g#szSWxY%|Oc^Q+TBwW#aDRCmzeT zD7$UCAGT|xCqAI2gmKAD4b%VWpoxPFO52$gHLEvR(Naq0?Z{-vltOO&D*eEaI4!{U z0`U;&d(QUD;jKVJ7cU^aD$OcV96-iuZNwU|Mi4kO-5^K^6G%v8lV$w9a=PzHVVKovO7)jcsG4fx7hBMy~n6M9rnJqxW*zUXV2Ag1H-&@%gY1YRk9J9RP0XV$DpW zaUP?gy^W46gxBRb0-m$uw49f$n0gH$|P_0d>$iO3i)hy;ZM$yfDshFoJqsL{v zuoz0H;>va*gZLq<=RFSQ-uD_nzvJcISX;X=3pS=y8$27BhUUDyhP3RITxkCmJaphR zj-u)hs(WikBwRIZc;$+q^3lc;0EB^ZpqGqy^uc!yE5X;OHQM};a)zYb$`Pi6QC-!9 zVrb5k>*a9{&!5c!~qj;8a!Kkkdn z!$ACe&d!4<#A@oIjx52S)#*N54m`!uGX;_&hcC+g{8~3^!x;BiUju3IS80g<1Fe_9>-bsz}Wj*Bz>8I;^+IffpHz78(Ot2m^TOJ-G*Y z#HHJI*<0EBTX9zky&gxTHu0S=agWZmg#gc`Mb1=RLG^Q8>+K^en+q+$RW^;E{raGo zc_b!IdnI9O{qEF33oW|<)tIv-BR0|$O_!Zw$jbhA0DI-@1n&=$)h8j|qVH5JM!bV% zD7fG)l%tOg`W!|EKPch{-rgU4Xt9y_0U^QzGfF~J(AZvhfnbd=Q5Jzj{zdg1gY))I zT8JRF(7rai9VX2+tF?G5#mq`91jcrk$iv?8Bpuc8n#J!PJB6?4E1pm=$dE^Y;VWr0 z<+mq=(6V;v9Sa~(IGAI}r3N>#%mGG+jwWu$szz+?P-*^>DphDv2(?Vo8#?s245CkD zhRtLuiM71ESf~%Ss|+y}CH9eF%%n?FjbJ{AfmL%11JfPa1)qr@P31aXR22Q_&f3}K zhJ=ZoR11la6{Av^h59(AgbiAl*YL#xg|38n4hnR@(>$(>eKSWiMpq8KF4wmFD+OL< z-G;a2D63zQFHt|XV&C}~)D^JaYkZ8a`?8&n*K}~pR3{4SwneTez!52~B{M;3-wT?v zUS;D;KM5R$Be(|kp!x9jZaUvyJU}#iZ7u%1h3=+M=5}rmGFHtk6&MC7{A@XG0BoSh zkz-NV6Zv1j^S&`x*_7(wbQ$11k%4>yAg`_hH!ZXC8j}fY6FKKs5suHi0IHD(VEy>+ z#&>$MPedbFIJEHk3lGUSsG1?i1`1h;~D==F^Sd?-w${naoA@bnD`dB5@c zHC#L&2u+L)3yICg3H1r+gCQ(Yhd3lHi7ho!UssYV07x&vure_&%=@ox4~Tt`wBvTI za)2W$jr(DwV#m#{`cBeD>|1LQW*+~nB!C#2=QUM`y^veZATt{j?qq~izCIOD7TMB4 z#RUca1Xskb1#x1NM)oM2*e3Nfm_2$}=qK>!C&^A0)DnjUo=@`Me&C=mtWK%eTSF&jQ z-cTZ->Cz(g;b?!azy4)o`G5D~J2BorEDtrC>bINy=F6W4lph;ttHq?Ze)x{4<)lLS z6b?P?>@#~juvlme&jT$F&l#L0VxQ<=EV|0lInzHax@@7%p0ShBnhN<(xhrU^ql<3! z31@Qnx?u@^DSm=TyP$v=qVbd5Fx_Yd`CO4jQKGcoF~vgSJSkTEkaBXQ0mIH>3-yt+y-@YQn%t#M;W~P2Dz@0Y7 z7=Ns?0!_q;D5qy-0($l;lhCj{+C(iuzU-VpqO8(8On!=+Q{nOBRwW|vF|ONH!1OK@ zId$h5euy3fNA0o2Nq{9v$F+EjbY*R28%75gF59=1xzP154JYVutu%b0e^O5)E&%hbj_ZT#=1w# zZEdIc1eR||De$ZC%Rh;qsva*ajyg7A7eEW->0oDg`F|;XMumKRwG}kiZ330|C{QuS zHEp5Z%dbeIp=YX3y%J<4mJd08t6kB!3NZzLKVSf9CtZT9^#%P+hsc~Ty{0X*=Es~_ zo^>5snu+tD>Zj7j0H`o9_^{TJciXLUsWZYUc{CWJkYVrcQkq0@em?8-UJJ^-Rn6MF z6P`}gj}(zPjvHsEis_Y-jckD;oN%QbHjxQrMkqSLPc4T{eIne`HU#V>3p}4`Nl}7k zJS^wgT!pLXibF6*xA62=U{pfoVW=;JjNG0P5z<_`Hnxuo&ywg*@3WJ(&HlagS!TLB z$rC_(w{xGu1uNHxy7Vx*fUr$D@3a9N_|J51#DTh2I^lR#u&)#$m4DS27O~~`rerLD zqvjAd{mHve&Aj@!F`!Q=tk+6EP&ls(KKIAxOFO-2T3YvO!R<=Xr@@MFa%ZC1Nn#!w z2XY-Fr@lbW!re>kv@=A;a4cl2pk49FxAu7Nc@3O~G8Jkhgd zG37TbuXug;ec6~onIV}yu^PrIjd+qyApJY14Over^<&e8QSMLOlj}e0p7b)-|1I4U zWjWM5Ig37LrcV95hEr((J~O`Fq`Gi0(^O(0+)?n3Vlfb@sFGU+_JRn2iv9BtpmL=+ zr!X$M7@s}hn~D=dCLXAQDksY;FMu3eb(5uVu#mmuTAEEWDsmBir8WHhM@(UT>boM; zu5tM4&WTUf8_EYd4WwpG_F*vx&0Yxj>76T}wq7NSE&$Y~xVY>tQy2yV7pLWu@Unf$ zI$o#d0rE|3I*Yi+Nr2JoDVzF=YP2GaP8Q1^u}9qHw*3daI>xx7lGMv{#upv5&T@eS zKPOht9A^^{kxrWNXz6HvRK7-3JiQtIR?EArw4bJ~AmM(6sLQq{tU{!xg~rWhv7z9L zL%Bv&$MI`A{XpMHLoEx-24JC2c@l)XdqITJv037p${$K-V(DK>D3N8Ipwl6qiPpI& z;hZ;{$&+IP4#S)gb|j6J0v*O~CgHXe9l}sU~h-oUU1a4W5R$kA$xTZZ@?;+?l4BFbIn2|$*@Dn^87XfXzc50 zdo4m}{oTsxRLZgS#N$G?iD!(@_b?uYN_+?H85gbXN7u8o+;K(}7We@}ERC+>Dr+x7 zr~&&c)3U|Q1L+a$DY*rnOKSy|=bTJdIbCU!Zw^ZP-blc+ppn8{V_*plEY%_7vG!CG zbP<{=Zx)LF#o0S1bo)=b6{?D(S|M-l2>faJFur^Yz6AwI5I}Q5r6C=XO5}@U8D0!T zn+OTzR+^@mPyLU#{=;2YSN*C0)6x03|><7`;2u*7?uG$;@QgFa+W zMMIQ|$P1LmV#`l0cTSYi7kLfdP@W^hbvgk0TR#skUEi50D{Ug$3_NL({D<*- z1ZqAT*y<9fh?JcBaLS(#vFUfvK?=3Go|eMSV$^fqG(s1mF?n2LwgbYgnnv z8>j=Z_MxAW@#U2T1=T2y-RXHH`Zl@<0?8D8)neMIc0*I95B*JqQGZPL_?U~bE{X-M zsS1$;^9#lM&xh?g_&pioYQPN0-X1WUfXu`D6fR+Y)T3S%_5CvXQn;_W>wOxzCY6Sy zORzWH?m-kaLe&ya3`{W&*B8eSQuiU@SYHtF3IUaZE5*?(1Zt(^XPNmvWBMv!Mm>E? z`jv)R{8a;l+1s({`s!Kp_R6qm3bBOMo`h&+RSXCda*OvdaTdX`dxHpiQc{7u$F93g zF1jOyVvXJUJwa&E>?tARA%H{!l>t2&S9+guXy12v(v?NV-Q%rt;m?tdLDf`j}u=k|gWLZ*A^YqCr<}^uxsDQ&} z=;dVTUaaVL+x=Ix4akB=uk$zW#woVidkI~I!DJ@UqB4uD=YfmLg38?o#E`hA;R~>7 z_IX_fGBMtsc$>(`=QXL~{_sdjX4Tr2H?1MSob!}aAnx5u&RPAw z=Eita9@+irdm#_uqXCk?F?so+HWLkY2t<6@MemhsNZ?j*Fz(oEV1AqS)@?Nj;rRzrJQ@tRTD&d_>60-ei( zhG;Xl7@AcGsx|mP5p5R`SaDQaZCw*T7VnTpOUrosjxhH?GND&b285nahM7W5t>A3N zi0(X~HO`KW$Q>xfoHGQHGopoDsa?_N*gF?`s|EuhY13Fe;Bm!?bk&5_(D~XjIwyh- ztUQjLm78V(c46nS2NKh4Rh6h`oLoQ25FCL=Ye< ze$TAb!Z1fDeI~!Z-thAJGm%Zs;LgglE-v2xfj-0_Q-aZWLYl`3&hmFNoIArE8L(Tl zCQzqEd?xoaDBMMqVnk*lfQr90gx)VBC&j5;P?1AlklrWXnrp8a#=cnmEp zqS=O4FgCqLJC8^-@5Zj6F}dszaHTUOu5Ig;5s@w}dtjzN?Mda5%L-g9U6xM@1kR5T zMov5}0d~2Cyj2!i+|Hh#V_RRA_K3UZ{}4`P-76~#Xp&3JS$-2vzv|R+ zu=1_bI!`*E^uv#nWqlUSeAyclA5rv@OJw$`rI^UAr7P*sF&Dn0QVltIiU9tF6__48)$m7Vd&GIjU+)=xiahn-tvdBnsz=ER(yCZz_ESW9 z!z%!NWY%(kVF9N{m=Gr`VU|>j=-Xor~*VZwLQ%H<4x|L4+UOJb( z(+c&2EtuGE-z(Hjp&muQ{a0LQ^hS1!I5 z8;zEFbm^g0j@FYX+7EK75c|GzSLkl4uQVgR$tozFxbYwX2=A&8@fH z1-KEcw8E7I(R+MYlVoGP0q&G;`5undi@7)OoliB`srf|MpW;Gs_h1PhAAxZ(C3X~@ zjbMc((}C8*{>1X+TL^_6dw6dKG8C*c&$iLe=|wKg#CaQy=5%sJZdiIGToY06m+%0r z3vpd%M_*ELqO2X_S7TFonau}>4cKkU#+Xa^6n#oX+Lk;la4U7- z#1ScySS7)Y3H)cb#Ni)wGWXpJ9GBGr2&tq>rvm|2ezLY4XPc4c-+-WKr#L#0V|Dby z&^ysM3tLp~T>K2FVKum~=0n{y-0xq00?{j3*41^Js0kis^T;R6YUsE16+A$ES(4Qf zGY*{yGZ7W~O9ssIli1gf=pU%jR?@xhiG4i`PS%n;B#XOu(0_Azw^4rlnsQ5tUYw>P zht;+Jknh$E5p^Mp&$A8GG;@W%KYuPWo^rJTHEcLZ@ymsDA1wD|CI)JSbbZeNU5sgZ z5^f}-FUAO87r60XL{MDeSGjcl@6jUPb7w_b;?e*1Km8uH_<#SpO_EpZnm@QV#G`4j z(qypdY%prMG3oEXW#h9JPd8R8fW)dgC)+1JH+F8(zNUp#W!wp~oe82G%W!5D z;EQ9d+2<&V6JM|o{ykW#rzjiM6hs3ztqB^+f%w zdnbiNMBR=OlK_wQrNht|&hG<8-@^xdvTh{qjXvj{$YFLBGFtO~pfbEG;$WM1-n12* zl{hPQ_IeW`U(_^4vA8E?DhGro(%68MqtFY5zWaAiFdg`Vrb@&Aac+#WH!%(gf8X>> zO?>852eI)-A7ezcDkeyn44-1k}e=A)38gYur!lj7u_f{>D%KM|jLL zi6DFj*Zo?enBBrJ;N<#yh7#P`Y6pjS8sw?Ezb3Y?^O8$FL21jQtUiVZrabltdDefnStlg@(tE3#owS8r>1{k~T?f9hT+S9wBOz}MCw>EHsGcBU) zG~*~G*j}#lO-dBGB9k*oZR&Ep*T_Sf;!4sk9cDem)WZi!B@2eD5^XA1#oS^lQeQko zP#8LwvdnwfANL$P3tu57{MZ~$X$6j0FC7m8qI&#+!=f&b$o6C44&PZ7&{5I#6g5$R z)U3nHSTrj&q{Me&E_#}S79%{XLYQFYBbY&(fN^TYJ_(>P#$In5(d#j%k)eyFoMO)Y zJ8FX5Z>ccImsHs0Z>g}K)C3`>2fLrCFlZ<98^%1|n6itTNo6-&wxt%^u%PKj9D++N z8=HaGo??JxC9y>zNzTKisI(MG*r2H8B%!?f$3ZW<+s&6en2L)ta~dZ++kNw8^Z0~& zf;}L|8b>3bh)+J8Q#EIMQ4_BL@Ddfv?D|Phh|d@R66U%!xR8n-wKuaYrT_F>2@L5U~#_}2e@P;-9MOMb@)eW#E1x}b~llad_R^au@~hy4C;VG zzA8v|8DhA`05hjL2d2PifL~K^Xn(V}(P9IY!Rq3DIBs^l@)L`X+2XJphU>YVpx#By z41#s9A{P<4V`E#I)bP6W8k`;wOQ4RwAUjB6o)Q4t&xuFNe5PA4BJmPEz)F?20oD+^ zv6+ZHnemy*zIVc`yUpm>AW=q(H~9AGW}c>Czo8CzkP}Kr?Mu{CgRrX2YsG@Khbi0R zo9Oi_`Ka*Tt*6(^iyj`PqFpY3gazkl2d1F*WABUOC!DWgiQLUvPU-F#m}>{miAou1 zomJ0$5(@M;#kK7G8U2cp{uTYo;U8QZ=f$GlS*vmMpu|QyTK~EMxpp2J%E&+6k~=FZ z_bT(ewcGCuISRIHmst4HhzQw?Ls2msrIoyfb1yGvt61(T_vO8dt8or~Lm&5&04vWu z^Yz0X{`dQENgZStX6;3V8`-WjbM`}1*5P{aGWht9+Z%>;q zb5eHGEEIKiGbSry<2H=jtO!`=(n{%qcX275@>LBoJ1?V(lu{Ee$H3!YH?&R^2u*~F zl$EiB;$7QoJ}9;NskfZF9b?~at#hVAtV4_v#7TAlnb@0Ue=@O+y%*yHlng;ZiSYgg z#en{l`Vf_IAshE2K(l10@D>g+%63WK9^J<2iBfeI>2ES$Z2-jo6#1e~-U64?UP+Gq z75GYgq$%L;lEm&}0I&+zPf+FZ5`{V8q>s!%_Hx9U>+Lhxp#iB3yFe;~#S4|;TfvyU zcCUP&?Yw*jC&6%ax3E&RfWtlX&RiY)WQwhlYsYJTE1(&y%_rRuc7rsx4F(8wzN65U z@O^Ble;OTE`E&tLC6NE2oA*YA@KGHQEc3V+F>Q%Qv{8I9#H61H=ES;ft>MGd1dsIY z?>^t@E+EPZ=E|b8hK{d-^LXe$a*BN;jDdt-fg$pYJo98Ts7D`x3Yhg=?nK-KR>?_Ts*QTH0{##R^k&M zkDtkh6Q3L2abi*3765rFr9U-3Vf@)P3hlRoDV(siZ26+j0rCpzr*HKYs_&>}M9O?~ z2&(N50++ul>$8%R(z)sd^r;ws%I>&x%w@%=ppWZBHg>Ss|{&aPBo zffPf?Vk|8S>0hF`02(jRz}%_m?K|nRw-9=jYD;_IF8?kuOo{*925z(k!w6<=e$Wr) z-{+=(JYdpgL7ec2*pNNRWb3ZF{CIX6o$O9#0Lmrj@1*elzZsMNuMOtnDQ!mqs9_k- z_HlYyzs7HsSAS<)FvWf(;oSC0y>+uV-%%sRWR&IqNe-S2VN@-W4P%mhfBh~em}?~L zT@v)I>|O$US#~^;i$oHFYyatkVbzE6AM@{HC()vTW|mi;N8oZ|=#)&8%md4VVSg8O zYqQ)0QLGQ^UL6!5fYKyjLB-P@1$EK)8zhG!_b|&2M znD~VrSw){%A=^hEsA;YQ`%@0#Xb!Px9n1k3u`n0!YhBTA-N6P5#M19yTqBLRG=z(@ zK8E?fb%XqMSD*udVSZ$-hPpf*5$>*E-uD# zPcrt($NaBtELsEqL?FY%34Dw9M7h*?(EzvVbF-+Rf4*(F)lB~do8DLUQ+wq80$1Y!6P zzz-k;IE96O6x|ry+qVmbPpNgP0*Gwz0vC9<^M(L5ooA6<+N$nOX)s9$H4;{9F1GM5i`oQHzb z|2!YRO=V$I)2!mT3FTTgO#ML;^ zVsX7;uszwi270kIzUvO$Ypc6AaH{O3&1ftS=Sg~xxLdecR99=}_D{A)-=B!8VHJM6 zD3E}h6w$c7UP%y(oHnCuyUS2Igf($s2pHEyM~*rCiSwlurfz=01)sc2N)kDZRlHwZ zg@7p>)F*+F;AJL>6|BeTdkuoy_SXyzLG$Mf-9Y-UATqiC35aYk|Lj6m#q2@{TH1nU zNpt#2MS(a~?y{doSR6?69YTQP_lNqM;3*9jNCAuv-qW=P`+X#|F}^#hn-O`-rSiCsucOs#WA) zz>{`*`u)3jF{el)T^VHuaPuRbb#|lxYUc<=8X+E~!><+2LwE(#58u4-LIKVi+RzUp z5mY8Y@|#z{qVkS>Kyc>iW(<6RXzuYgM8?cOkaGFHZJ9F=fm_ z|3c;+swwxXE`s1PiL5lT?HB6z3YuMsK2c7 z!+!BQ&T?UOJ75);&CTP&6qnbMA>rJ&lh78|F%LHrHMq#rEYy;0h6J0>b!2b zaKsj0H4e(zSesk#3auOXtjGjcdmnhkovH(IP<~cVp@(KecW~W(=@H7d2&5fA7yS*Q z?9i8(CTwu0X7$u^P~gfwr7o1DQ{~9LgOZd3HARE zI0LaJ9%ds2lv<%y<6Z9EJ>uqEyuuI2W%XMfcpiDtuLJD1exY{fc?MC0U>g2fK(+%9@A$^yH_8H#^To#20I$Q62c{R9QH%&EF1X3JdqT9KTcB3^MzUVj0Nx zixj>&OT|&{|2Yq@zRbhbFY|DHdZQj58l#dQRPElytN3YJDns|7U;S?X1EP6m@wH%TPUGUYz`IEkQlDdGCzDJe#=x4+dXz zOmu|??VY5nMmo)8yvm`P%lqWK4pFww0d$ji2k?5x1s~48;SGL``bpMRvofEUA7s2l zA$_Wt6ymz{9sdt=WLpTri*vZ9ubbmE0?)k3Jb5n)Tjso{o|J*sKpwqJLKTmFOI*tT z&EG&({_$WLqy2?36YPb~Wc#32mdGh?x^Cb2s;G{YgfcL@V!oV-GHN41-fCbX z3SSvL`TRUfU$xm6b6l{jklv+3wWDb`pH*H|S6M=TCD0d4cG|4y>uRD+`U6y_4vWoA zm%mh!an6ABF-wSbNusoK8_mTYpmor_duuA!I3Jpv>XJN=XVYhD-OYROKW%yO}@azgfn5ZUK}6OZ(M2ph4c71fV}^rN9?5f}7DjhUEUrL@LKRDxNS>SAH(y(~=p z!Cyyqe6Ow;hszbA-XZl`eq1)41pfKp(`**}>!O5T3(3DU4w2d;0`{4SKafad#qW+) z+y-VP6stsij@#Ih(vks@o$wOr=5_j~JGfpOgcIzvU&M`yWq=1jA<>h`;zhwVlXgbF zeQsxyx8gW9AQtGPkTk!};{g5EMAUZ1KEuA?s74E?5l(cLwiian1-mbTT-{TdZB*Xy zV+!H(kuM#4#;v@nywXuy>GnBN;y;*O%C?-7m`nb?!z zz60CON+<2qZ`~7?PyQ_9;TumBXw!xeBpyDwGdIXh;41|rr9`M9feA3q&*6_z;8heG zMlxAb1d};lThan#p83i#Dy08Z@AI|o5bwmpD6{1yyTtlybeLvv-5#W6imeMNt`Qdco|ypP9& zLmjw3%{`rxeXU>X%kM1Gqw%#@f<|;>jMfHp zmpfgCD>BI>=DHQ$>k;2ZA3D+)hU!K;X;Y}mIT;XzofMXg_ohd`Xh^iT-$1V3bv|vj zr_=2Ucq-9;o9@*+2~o^N?WTCDXeH~~YY}ReeV4<%Hg&5nT8#ZJ{|0$ckw&3{vZfyd znHg(gGMRDEm$;$k3)clzmQd2l+i~3%C5+7&8i}CAhFE6MM{7;McL8YtQ=&G&zUV}g zxJU95Bc!fxDdbNiMjJK^qxZaSjC$ z#LToND*MGe0>TdFpKDGmgZ@}Av;a?~p5AU88c)*_x5p|=7H&occZcnn;VmU=Jn4U& zhFC>arFrt`wSHeBKt5j~aTYB$#$57MEa1fYeF&@j(z*Y_V762Tw>n-?_)+)I&^h$L zq4AwaTj*pgmPcK2nIwo?B#HkWe(uOJ;TL`mH*EH4Pmj{uQAPy5Z7~0<{d)&`tS^+Q z5c}_vy%1zx`RUlK=Ug7HtSA@lzw9ksvt+e!)pN(RtSAKNY@+0{ z4n>YR(*AKX?GNwux|^UP9k7lp!uReI-LyUsH|!mQ%?Rv^PN)2nMy4M#|F0* zGCEQT74vOkpjqymG2*Munf(0SvBa%lWf<{~Jv+AwU<+xELmz-P9l{G+E#-$xQCAOQ zXO7$B(b2V2m6Rxrb7y-^fRqSzi@$*dG>+9+;nIiB-nG%n1)W);-@99Ad;jQe@y4fj z$0>FvDYno)Dcd?o{K)Rr@ne(xVoeLB0GId6KRq5j(>#GOH_*cyJsKTk^OtNrgti(# zRcQx`YEEG<*dmy6>Jh2tBjZZUuvlbE{GJLKa^EC;KmF$0&UnPG6|D?X=+gx`5Hjoe zGNk=7c5IDflQ#XQ>bfrpOHbMH%wZuDp%Qdq_A@L^3p%I^ycizLVypzh_==oDNwogt zgu_!#C0jYvGFT3#cY|1T3y+mm_1iFS3I!*5^K~$%>+&{<8=ia`e}}s!#XhMY?QCXLUg*hwT)B*uEc{XGD8cvOLiA1BS3U+BvI(V z%(CKEodLWIOUANH(fY%026~nbchLsEVmqVyA|)MHI{dgQ=Jg4d;5$~2!_VdOzNOot z5o6N504eff)u6P>RG2e#yVR5O^VlcR(63eCFLNG6vH4ctU=xL01W`2Thk;NNIrNxO z7d2#z-F(Ber!}*A@^N!9usnBxhnae-6+kM;`xdfj=0xuL_Wc7g3IIFUO7zlc80^R-%QTO zu-ysvj_bJw^pE=CSd<*6j3*e7-kb!mgd4Q((~zUF;S`TCYv8>#BxiaP_=8$3!A>B| zT1&jyIX{eUuX8h}cbE`h?kSRqsjY{f*7dYEpK4Vey%NN!exECuT888QI0Nq1Q+az= z!k!H5GX^;&Zo!Ji1*(JfNm%XJpyJ;Nn3KkdF^I@_4CGp?9hL02Q5D)d-)s14k#bb^S{RQ~ z&=26X2Qn|{dSUJ?97tCmXnSW#ikilr1xfepl<;QG=B0B0-_Ur1X~sHK&r^soDdfC@ z&ok-Xf{iI77v!L1nY0FR>VfJr$QexHRlb5i!h}JhWIKgTJl&AuHNw#Yl{0nMs-|~6 zwMO%0@<|A)>8HW#jn$i+G?i|OT#qsZTelu+!caIwH0uh1#$FRpVzImFhW*qG&VRni z**u|uJx@5CK|Vqs_Xq|Qtth+7E+2_5-cPdVuN|e^nb*K~RXJrd(g9tSoJ}lv22L3x zqvy15W>pm5(x%Aa|7b`VN!utGyMjU0>C2ub9tkhlW0Bc(BR^_O-0Ad}p8CX@8?~!S zPB&2{l)H2_%#!Lf*={@!12qt=*a!m3!%EvHqjxbg(5YN6n;;DXr*{{VZpv0vq{&8_ zZaNS^1Wcl10>CBil@g>!WIqZzvKh?Yy)AX3Qd_3qN*#$|uu_<^jGn<850Zun8sA|( zkJ7lA<BmZKxdY8$#&yfl}Jzws4(oBQU|F#eFWiCG`LGxj;M zT*P~DFFOW0HGkN$w@!hpnn5wWdVw|fnJIH_R*z{}Ygg*9aK;c&RNJm(A9@Jb0t zHXJ^?+b$Xyi2Lx7V9)hHOj!buLM>y2@4fVogAy>zNb~&CreiC=?1HDT6Vvfs2#eYM zDlS+^JS~K)tD^?hM^~~h$_{9WT$Y?QSqVsusb&q=epOwKq!L^_wO zCUmbTgA96j!ilYPuOxipp$>e)EL7qwIFmNLUWOsMM|gny2g7Ii*ZR>x5N?ickChZ( z3+5^*iw1MX#APx>*~CL~OmiIS-3$^g1Y&(ZC)MsvanKKd_vDNWyr)*L0@@vO8f)?z z_MO=ZB$rjB1z(2uG1x#1YA$F&v&tTRQl>0Z?7`SPKPZx1-csP%h02g++V^$05z;3t zo!kb!*f(Oej3n@jZ~Dh{TTn5O)mUUMjrpJ)E}sIQ&JEiw|LFZ$avS%78%61gi!kQC zwYhZB8e9t#vMMP&T>80^+i0y&6~qAA8edj&^NYw$5{i}cNV?nSGf3|&>Up;n2p9&e zHh%A;1*#6_gs&S_vYkcBZ_?JD5ceA!fJy`1m^WZbVp(nb;oz6l;7($5XO4`Q76e1& z;{HVdazr>%pm45QPJ5G*2~?ulOn8vE+XNYUN?sG|%k4KrtgfN%PkOz;g}+Y z9l(~;7VuGfbGEW|QUa~Wg^x_sI%LRSOD8KCzw$!I@hFDu_hc*9KdsPG2rSL%SI@la z?4gwOMV&}8s-2#3<#HM&VZKBg}r~-hJg+*v4Ye=u z7l-^$6OXxgnNgf>9YE6NqgLU%LT%MJ0MqE1-Srnoug_%8GRz(ZmXLA8I>r5DiwY1c^ zhGM7`QZ6UN#R-KTcAq)x{v>ikwAljpSC`R<@E& z88Z9cqG$~q(M{GZis8GpIeW!*5~tbQtJvH+7Ny=#6&)9c7$rCZ z{ei7|yiw6Ej>KUr3*+&vFFq-Vv`BHaepRkBNpBR9!3u#%YsQm174|D{$_=Lfp{A;CVtCY<)IyqL}Mh`%x8oIiI|mM_^*=L(z zh>kx(y%to*d;2b?Atk8#oE86w+@^}jxFdDQ=fsA6n7C`v=`;ze40wRQ5WdfygCD=r z+m^b}eD{IB6bYq^06Aej0il6Si|1kYLl;4a;Fci>b9r4rEHqjZ;aIaxuIerSAH4=k zR-kj_(|j+z2GeL8f4EcG@G8{*xgnQW;(2>9M%nLLeQ=Kv?iQlrw#C>A=J8kI?H%LI zo_Hnvc&3v?1B=d)TS7C6*Gdvj*V}w8LIxF!6myRqBz%G&Tj~B_W3E+6Ikcx*^Ts95}E5yq1WoEJ1E|pcLO^{nL-sLyv^m?IQn|+%h z#gLcBQ4Oy!6-Tzp+41yZpP4?@mdIxRq5ElmrkdJsLlUbMDE*0r}kL`RjTmBuon5h@usa*+a#<)$H z=7Air(wG&sXLul-U%~m#_WjT%yVS1EMnYKujW~ZPs$2eFU}f}Z5vi+D&F zLmUlSbUQDfR4r8dZEX=4!nR=F){s{0Gtht&~9U=2BWxN*XX zC@XP+xpg~=Dn*h^QiXInnT-SOv`XO0{k%BVKhr0H%DPA@l7B^t#F>iWT-3MigX8fddU~HmN0KQ5c}NHu>__K(#9$k zt5cS{zS8l6aaktXQ8e$_VYtIr3CkRl96;uE2%4Y61$o09W<&2$t9pn|Nuj1O6Z=J| zD@0LpC{L84xV%=6#S|>4%(1aqe3+%1e2WGZFCJysyv#K{m&5>xX73!v4vWajMc*1l zX&^j%mW*SjToiMjpK@Wgq%R*cZn#p)ptq}B;qyc$1tC}BI=_a_R+oNW09z=7UaV$a z#aaHQIf7Hky!s*YcAW`ML^q&?*pV)K=uMs_$H2D)Wd6%RKryVq`Rp>3bzHWHYKOle z*R)&ySW)Z6@pioNkpKg}^#(HgD(q*biR>P#C()QLa0QqC*-Q?AFbz_+q=5iz;cGPE z07SGd@)@zoY3dyJ&%4csmo~Ok>+&|45t}r&RBLf`V^vFe!9LqXC>-JrbM=`Q<(}=2 zqG!m=)e(2y6(=NNSpuFFOwK8yoQ_GYtG809tG-+a zYW#4euaF)wO@=;Iyd5hRQI8dW{9#PMO2L2<9*(sulxZ>$?ASL(z3Wxg@L^pDSymrf7!Ywm+0J8nyG$%>4vv{ ziP%8}m7MgfMagkhdGz~gm*Ps*0%G?`|!!Tb$W#@+gP zLX*-Gb0abuRO`jtlRZk|w}M~fg$DsLf&oNS)^yn(*chg%0|#>*`ipgL(5ywBI-95Y zObTBS@Rp>kLUT)bTiQ#0U_`E1?@x8~ zFK%vT@2iA>4@U{Qbihg85NUujDG3Fi+NJWcOy7^QDeXsPRY~H@A!j*Bp#m9ho6HxE zrRSU=9&tFQ2quU+KqXmQql;9ufU+Zn=H*V15EXP%hLblCSmKy07ur~jwcVcOwDm|# zw%z&;9Qo7Pg@a=hT2F(?7PL&1a55(;@$8)1`(0Yot4A z=&*2kab>mM-P~7jGtwd6m1{M*k6AWAq~+B6N(IkYwSL2L3R{MhaFoNVJyNYH<%6f4 z*1VQ6#SOTGK(JPgU8K%(g%`Z#ccT!&uZyUThV&DJ+)8f&PD%=6C6dWD(E#2~p~Vw~ zVjeAXu}NKE+ekmeTFZfp)igjY`o(0h_|s?lAcJCsGtC0jlprB(D3=weDJAwJ(67om ztu4cbetPrQgKMmdp}d4J^a`7<24{nZX`c&YuRL#rapZ*`LJqa0f%ifR3!1P}b_IcE zx$?;MhaHbBvZ*T@TWqvEJdfLI?S$?TW;YKj6Ma8+u4hrx@&-ewqihS$O721Pp|w=7 zK!rN*CGnVVHP4}Cl%@#urM|g;%EP%=B0s#y!w>(Ihf6#SY=nBmzf24tV%@)nn|XCF zZJiyMdayFeZ@7o2GtXRKi4s>%uJG~5cpXzi-+oLsr8dB|Pp-?VEhhmWJ8HCu1;19i zM($faqGc+mGT+ETNC@Yfz%8--0PFiq&(rwjYIp1CCIfA4dWlGFcAh>V(t=#M=*EQM z^z{^8QN;;zMBgxa?t)7ZmBP9m1#BYllHS=`)GgocwhO|<)H=lpY=*02H&N&ftH95z&&PjmU zDIxO=k?pawTTnqqV09UZBVi2FPXA1QOQWv2P7qeBHlYpj@rpkJUUXcD+D4q+kVtD?Cz?c9rTPf~IQq zd?e92Aa~m6V_vUyG<_V{{H$ba3A>KIh*Me2*eZ~$*`_@%+s?rh>1*2j&S-d0(gFS97T~Ef==vs*{9AE z7HZ5FaCg(14*cjJ-&sHH{p@}cR|mK=o08z~XXX_w-0*mGg`6yzM7 zpj)byG7yNsK&B2M6jw)NA?%F~Cv=^VHDd)xPk5kt#k2~S#5*0VB;{<6nFJK;f_3in zJYWVG#))XHZx%8YSXb{RCeU_r7}>GA$V}|1{R@4m5hDM}W$|WCZv!*o&tatw7z|#U z!l}6mVoAE=UYxMqTy&szNp#Oc;yHmm z6KB2s{d~e6zoBA82o@&Pl+mrLN9+V}Rdrg~cmQ{%i5~NIAiLG%YvgpUPwe*)x0450 z9r(b#=zKy55!`QOhNa4NS)aylAx&V+pf0Jjg_wfx74p5EPlFP~Q3LSUiV=Om z;r4F_Gzg96!gO;If#XKP?4gqmr|;ob2=Bbn65ynB6hhZYTR=B0vu9F6gl4oU+C))D zWZ*(nv+9!>ks>E081ZkDU!IcfEZqwnqjx5UI5bv6%=7dW$8!^DkToIV1&}I-nhlf8YJ0Rio3J&j9n$TxUiB71Rd$* z!ZMB>)Ach+3!6$r4FUY(>~Z}$^O9Vho5}WU5b+m76Z|&>2-C*7zO8+T4>{z9I-&~% zcgT`ZISS#9mQqI?CWEIA32mHCJ{(?Itnz(T#ub`yXy!hfF?>Gr#l7;u5bQyLQ~t}L zbok7eQo^B7+T-@1eV_iN#0mTOCq5b)CkRw*D0CheKU zljZKM)kofgkn0r}mC-t>`2owXe%a%#p6uuIJ z?guA!$BXgF&d^%zO2D29hmVOD6lHGbGAXngtJ{(fzLH@C6S~dQ?J`w*b29_$2P9B3 zub5oH;uB{^WI+bMnyg3?FwV~9M@Q=0$YNE7p{E|h zyC#bW1!Itl_qt}bGL!2SGpt@z$k$~dQeayQ413o^^e7jag+T+p^FkB16igSlI9vzZ zFT{lD5IM^^16EJ4c;4i#;8g)8Txh(f?MFjJ`&TJxNK4suUu+Qrzgw1WvQ)E2N>vD4MonG)+1c|-XGp=#N+^T!pFsB0) z8-KjEQ)=2|JD(SXO=}u3RLmq2%r{!z`Lfe5}Ex12cGTfQ~%w%X|= zzT?AeH}$s<=DJAX;A0nIL-qn2Y&^-STGI&MyEiEI>QNEys}~k3qT_MBD$m}GwcWgV zP;ji!8DV|~6`bWtoC&0rVu*hK{?U7NMB;?gmEwxTrGM^w_vdN}WAXt>38IIxST<*3 zmdR_T74h?GYvsq3^YbWUBFXRKU{}?~ZLhsp`FbAAFoiFGdit+YAWL%v*z^@TACmGL z8?oa&_E3#~3jcu~=>@Kp^;iPjAja3zB~^|AjMpQ{&4|c4*(zi4cHgD6zaV5hMAeiv zNULX@@&=;j8+C+jH`jB%UTfH}9}&s;;Qo~Xya13Xi8)HUN8o3c_8EzLO;_}=L_!(t zWu!U=rk|aqFicDQ#>BN`?CpzqDGp5E%MVNEoBYVW{2lif`;npjkR_-Fa^KkoU#_bM zaWUdnCR{bKJ-ZXN;M>@x!Lb&(X z@8}0%Qktxb+1Q^Qcz2)#;)|X|eUcP;JO+QM#lAL{ug#c~1QDg3}`cr9?@s&N%e3 zxU6EiP7rcrV!kp(>p)y{{33BueJpD$9HnAG-@mLJ|JbqL>_R@QNP8-Kn3|4j21j1J zp$i6DUJnk^G~)5>mYDc};uOIzKAZ^+f8@zTT}`V5rGZxZVQm&&{W2#UBu8gZBV5PB zgB{G9Mi5>h^8zve*QQpnr`8K-?eJ{MUD+9#N}%VlPhol&&CAU?s_wE(&+nEuE&XQG zHGm_{+&XH1L}`k;4$LCj6iTSLHwz3={y%TBzijbdfw-ju)t1y5`2gtSl}Wy8YpP17 z_4et3=~H(c^68U=u%C3pfc32Jf5yU0R74N2OmB@n?E&)#%N&96D_9>%6lHp$Rt^@n z2A|gE1jbN^n?_W_kPaN}DrDeocSU>6Ou>jye~^tYbEnb0F@6{Yz+M_lZmO^|9r6qP z?d|;et30APN60>UQ7KzdxZ57ZvfycB?WLiMos)cCUkzoE;Hl~HAGYa3w%QgOiGEL) zKvS(|jQ0jKSP`6~saXW$TEHj&&sh}twT(9@Py?1##@nhbD?2p}@Egclk0wrZOI>W) zsGRN%rm!m*Y-z9X^Pn#%8vab3CC$$!E*7p&Sa&tx7^FDqS2a%sekKE<>IJc^=#8J* zg2Z_eYpMaXV3U3DEzI&G6RNCS+}S>oCySKpvW>4HY+Ec~)bxX{6vz#_z;{qo)k4)- zp3+l<>uiM9m=S&9@^vg%Y(*w8FvEf9<4N9|g(A{Tw9RDMj3AX)^7!t09UKBeqg5ix*J z0>mZ;zp>$h%xlTuc%cP)t2gl3En*&)z7A5J3`|jxvkL^4gcm*;jr%g*Sq1Er%Y!;aXHysu*L!Ax3;r(U^`-%`9=EGjD# z_1aAw|Pbo=wEz~4Gpq@8AZAWEtITZ(@GHzk4>C?jCRmJ#93V*>yj#9`N zToXQxLKtkov>i4{?2N!cGW^*5exau#Z0VVss279#bQs5mljW_%4hQLAIG>Hhd7JQf9(;mMDRBL_Wnn zsNXEf05SaYq%MhigI}wG-ipYlfospp{d;FkYrl^Dz8C+`UL83%d2QXz4?vYj8%8xg zDCW1?=JXNUG#rHcVlyu)+>c-Cv05ksun=5{0OT^42nOiCYn4L zhgsktGkLuAD6Ya=`h;b2)j3X%S>a)FY+Wn&I_Wyg$d1WI#KKOhl8f+@V!vEb3k76E zbFY?Hu%V1-hs3Q+Fh#tYf!5uhcriKXpV14U!G;1Mesp_`&%Wp|ZNi}SXnLj1zz|D( zZI*(Z=Lir5oBqQ5}bSme1$5UF6;tEF;jcs1@zXRt0U$iDM$#sk2?H9xZD3Rz zC0lwCmAVNKP7R+)buja9IL&iZ)h`A#_FkgM_E=l$OM?{e+Qjgw$N+53!WDzbLaN$a z`IiLM@G90nF&yQz16gGnYFfMM1V)(Oj9l8rjCdGvgg>ho8=0DX^YiGKuu_X{Kvv(Q%Hn_5W7|a^N;kK+I zf=FBR4P!a;`iE!s zJe#@4@DRd-=06H73hZHQo+~c06k$WE0K>daS+@(o`*Q_(p`V$3wdF%!d$aaJVq}`_ z1mO-=^FjIjjlF9k7fzwPO3W&N45*|Rm+H=sKJzB_VT~rg5pNPxS>KOx+yppfn z4|%w_-Q`0VT)JDm=8I`lCImog9-&jpKW!~~-~A1cR4ZS;D}CyAs+!ySCnBi=34Lw! zT97+-CF23;$fK>p$9L@tzh3jelw3P)%L)^hmhgL4lVn7T4#eQdMrBLQI`4L7)LWoS z@zfhkCL{LCU$|Y5&JgDKd`N*(BL4*9T$eMHdO8@p!rmn)^jCG)zvYbepkO)sHa#P( zbH?b~!P}}WQ6aIpi7#T)HcMV8Oy{mIN@in|K^|d|=-%D?#Vl>b;Qw5AVY}!v&e?Rg*-!P{tsJJ^T03{LdE; z-eC40+-ZB2dvn?OB*R>X;|7ZDY3KOKe^W00`;+`X{o=ir^nY-Uxc=lES^bW4G{=3X z;5`DtbAG?PHP#@@ZkZPnk+aONmWORsr<#vv(-Wmb>ZXzXP)@mQS!`V*PJc(yM*e(} z5ChVWmx#;GH-BKESQJ4~rD0$#hI8u~5c3#)4m^I1wBHr5W*6k(@V&!?DQS$t2f+syWZAZly^zA=Il_#n)a(MRjCn)l&<{O2v_7Vzyk z*X10zA1~wXV))m7+#&PV9L5w@y({!l_&2>ql9>2y9L<`*c$d-2Ez<5j&QxxoN2^#a zYm`DN85ju^_V&#x#!nM=N(nHI9$1c#BnZ;2+Lhvar)gTXheZR9mKHeSO;brarB7vv z$OnF7wfaK<#J~L)n|3AM-)-91!1DQTHf{FKi@|_^>M0v4^EWfC2M*^OnfV|$_F9*Fse>JWwOXkfnxzo@PH1*Bn1lc+%R>83>n(JyVLbQ zR@0pFV(a#`k7;l7KYhdY%ZZ8-sDdK`QMPw4CH5~xe*bUZ_K-Z^*rX0wMKhu70KX6l zih1^}*Rn0D%#JY1Sn!5f_Nim&BU!Ezg=hCiOV#qsq{^V3r8r<7Am!&j@&F^{i1}rS zd1aZLWlgeYp%!5IjJg+2l`%ejx1$u&`E3C%9n7EglAN=xAm(3NGuSq7`0Pe=1Zb^c zdIYZ0w0&`{%=C%DY;|KSzd8z~WBU&8>YG^cJUOf4hrk2qmevhjo*^W7W*5IW^8a{C zM>hQzJGb%m-|XC#Y=0pky_17bI_jiya4CQu&*!9(hREGq@iL>8PzBV!+7C9Ypi6nDyFF>(@1p-d1_(gMtGEj=1pJRx zrh#h8^(2cB#8!SN9O& zW8#>>J7f9K7NN7ava9Rs>)jHXTR>!(4B>{u;#R(WO&RPEQ~MJyAbNuHj8@mTh*%!h zc$kqkkbPldB?^KoSnZNahPDbsAr&Zaj8YAMUuAICi^o9f z#Qruo$)CwSR3}}|N1TbS{IR4D1VriG*X7%r@(4<&Q-OnKS}kp~XtX_d0rc|jd#lqv zdwd8IEyN5r=MuuAE0z{jpa?(hnT9v6JjvT#hEJeKj;YXmzoC(+_J%a~Qh|?#1@3bd z+vXtJ-cra06qO%+wws3Kxk#O~8xyd6eq%+M&s|f1_ZP|EA61t(*f?$%Ij~Rc_ z#)qK`R|dRjw>7P*FD5^tcA;VAj0$rMM>eR?51@J4MYy z8Krb%ieLAB-q81J9H7q&sM*N0O$&vek!zLqpq~~Z)8_pY(5@BF{Fvq9;(}vv20o*! z|A^;$I|86H@9O&CrraKPDoMffm2>Y^(d+k6PzS#X)loZhv?P-2+Q^=b$sZ?8+}G5o z8ZCLdx<2~Yq4F(ft!z&JYt_agxV-@YgZVTHPx{ZJ3W$d26rk=39yMJ39Ky+YrJ@aU zYUPqR#(0afcb(XxQw6V@!j`{DI!80NU7rVm7)5%0=?%IGn4|H`FK zm;I>HnMy0aa1dw-mtGNY@zerZ!ut+B9xg>$QDNB?b52Ov>7?)Mz6PbN9wmPRqD1g( z@O_o+e^Gy%`!aCF`9zP&Frqfs)QdpUAFSGt1*jq2oy&fce!bOgwVYXB;bp) z+_t~&>ZfC~mj(e6h92BTB>tbLA2RZP?*&(i)5YvoUFw@&@Sf9a#`2j|0I!N+g*bcE zU&33Gq7&M}6YklByJDaVfE8|TY{XEyd9CB`n$vx310VD*O5TIBU5d=pD4STR0E}~? zc@}?q7&py!pZxn%-sF38XfFligl3he4wG!2Md9?1cGKD1PgdP3Zpgkh2c9{*zJ;p7 zre>hN&5}2Vg6@i)EK<&E%C6FNsF@0|1%fs37SfQ&-N*0#OH5Lr#H~{}M!WJJP?LQy zxmR%}X&u)_V0)0z9SN|Pqivy)l|y5g9vzXap|+*T2f8Ukd+kqr&`+AnOSAveny)F_2^% z%p&|tI&VMmUf;@>(s~6p{-@gJuUs$Wrber_g2H+-U)RsBHn-suO_#%#I@bu7!(slX zlJ%%5#;R|>;{KOi!~0Z1euJn{m5&H_-R&V~7RsPFA_`g28|L@*FJp)J+nIX6B z!-7si2lep)ot&#xJGt5AcF%WOk>p@(PN#TJMwBAP^J4^bX7jz@5fB zc^ZqF*+qtIoS*=le?GJTq5jT)hdCX=r>N8xqYC~cITeXFT93jcQZ)o%b5zBI2{uEp zjjb1SagOU6P#70H^`rP73uGO{hBD&k`shSq?%nRZ&H?s%Hy%)nz?|K4_;;Rf{(hqI zalC()+F$wq2jIkU9KX~~J9__#|37J|U%l570}_fJj?&aUmf?|CkFS2}O#{7>c+uCI z5Zkz64fc4n->R)VQB+6rMNuL+=)Rb#FMb0(?H!=Ue1V=4c-kLDr3w5N*u<6?Ig2?A zNQQxGcHrFG!5~>6pydyQJya0gGY_0Rxt2)wi>RNj4${S>z$n#Y>`OVka zfF2xj(>UyQv7*?0=|q+BZ}@7Y8X^j>z^Wksk9kgMj#}6nML=pvN_=`@FE-CLGlFK>*~&qTzRWOd{#i?4Om_eSg*ozb~ably2iuM@iJ{ogbcug#DbD zgH^CtydBiWifl>oM$Oyeey2Y_&FifCeAmDM#PfW|xy{d`g0@W?pXO4|Dt~ipf=tk? z4baM_IZrpSp`bC~<4#%zuOe`#oFCX5fciI-(>@~hFSS3``%E^BqjJkJljyG4e3x&g zWqM*8i)bQ=FmIt8(sf{4bWHgpAt1~QFGC6G(-Z*Q543L#+K_o#$6OiQ_fQ^>o5>MBp_|>>$k=2RkA*mTqH@3?3lZ**GSK`HvA00Fb3Q>caAqx_}Ocl{BStb1t)&wu`}WSm@~{C`JF z`38pstbX+(x-KPsMv4>ewKG7dqS7yYXIlLwIN$larkWoE23(Ubfk8Dk!4$MQn ze3H6mJe)I=71hG^y1e1;I58}@n=Z!-l5Kt4SW5*lh& zoD-Hu1k?P_(5NY^|D-+{mPA_7VpoqFQG$xn`E;E9e`h@Le;FN_5D|?i`nbzeP+YhU zIpH<-0zfU-7BxHpkA!@iVHmVd6J}c33Sh$u&3$?*M8Xwf-P@h{cvg?OrJ||hs*VHe z8+%x5%e<2N(c@8&0&yqi+sJX&wcx{}NXY%#loo?@V|*OahS!-~(7%E{inoNMouLG$ zyRloEr}K;`&y58reseB=0%OGK67;^IM#Bp&$TrgJu0?E9b;G2I9nJLho8tnTPL?_s zt#2l2BE82^t71&L-rDVG8Q!~N(Q_Fu^{z8(!PWVQtZKFbU!*ibL>VGdH7oLZp($+~ zO{bd;!@9IDq|ZfMFHeuLKjLv8l|v+C$ai00!CH@gr;r{Yt~l(o_DYSs?|P~F8OcA`Mjz!SX8H#pna_>%YmK7acM|JRO?fnyW|Q6z_6ru@n_$kd zP$UlM)w4Qt8y4Bj>RAJe`t^Sm^(l}`oyLI8k`-feohwFy%8|Z{;(FY&BPJJ(>-wFl zs9XL3X%^Qr1AbK8mFUKF*?|}c$=l3gs@JH?XPnKzWT0Hm_79T$1VP_|FpeypWS%p> zcGkk&2zqDkAm=jZEu;SQVHPR>yXI%030*UZi&rzuegJnc0>J9##OT6FNthqbqBgZx z4@J}(n357xn_WCiXsZ=0O~J(uCk?Qh_5m^JKz+quf2s-iuP4>)F43N=i_@3;arvM1 zcrwxb(oyhUyI?-L@1WWxDypcE^?(AIlC2Ehy1J95$^x>AxSy^c`XqmPGjCdzGxsaX z<2DNHXGDFCC-tFG2>Ddgo*HwMW;F_q;!7g_iGXtTt-+jel5!kWIXpz~AOB(ewY=5M zb(T23ZE&-ofj@aKfqCHPu^V9h^~_acisgjLCr6S98&X>Qe*lIm3+J^mn#=T5Sd}*U zwsV`;kT6P**MrrQJOI@T-~G?V80d_Dd%_W7wvxuqwtKLd;u((eJiD8n;n`Vj$M4G0 z&$o!^kn;7YO0YIj+2*KonMB4u1k0ZY^s!}%&1F;ZKF`G0WK1I-E{H*j@77{ z(Lcu72LW<2{k4oRMlf^xmN}B zz-mzw7kXhm@!H!ABXnw(`+afydft&leh3YxKIHCFi1xOIrN619RY$E_uVq-kLV+Z5 zIH=YlnPjviOerB92Y5$*$-rk>*kjoUVf9o=n?qiHyKEymT&RdO=*W1k%FLZqWUB@K zF#QE|(+mTxGr5yY^y9oTl}eOnuSJ~IRKz%FP^Q}Uqs|o-Yd))rkd6F%m$^2Gq?X%( z@#5yOVN2*h{%-)lk##3j*RPk_E%u*nfUUBr%AsYTeN*H{z`Dn3S0>qYkQyOXA^FBN zl*F9b75$8kP9~2ho?>n4`9yKrl%Q7AU2e6^P%@42 zq1U^U0yu=u#4sEKmihLpuos-O7?B~0Xj5ZFwRw+}U#92ZYNUI(#zp63XiTAQVmL=C zWZN@f1@3Elg7NfJ5*mUzi?Y=K$}NIgfB**eAmm-sRN#k~E|~Tp#!{nvt*k>hVIo_Z z`a`FUqk-Q6t6Mram0nLHWfMEU-&8SyoZQ(As!JoBD;xqB;+I<$^5vT+C%fm=t^mJg z;=qX3jcI&a`4p$ekx`z?HQzI#tgAQ#IyY1|w#0%`LNTU+tsD^o`x6{RG#@d{_&0FW zSqka%tON8mjGTF^p0;Jtn}u;(_>x3IOS`s1cBWKA(FRL{tae7|UQd?Pq|Wb;pkgNd z_%@HS+vq^v4FfDy6qOh?+;(&bGMvQGXpBN+p8uJexn-nYWvY5w*qY^sv4W)Cuh$53 ze90SyQV_ZCk|l7NqbZM2-jiE7(J}}+328~1pR5O z!#ez>&nZKjNkTz0r!f|z^R`_D~ImS3c+fF z`ml!;SnuvE$vfS{4bJxn%dK;mW$u-)2W8JF7EblQBR`dpDW7Q1d|1i%U4`evaq2v< z@~2dF<@zOtT9&ckl(w8T`3*DFR6!ckJtur(bQg`IiZm%lRz2Re(K@|%pRt8F%v()9 zSyv{vz%_AJY^nUZpmJlAOp@F@zw)FS((=OG4I*-4ZY0qGHG`0S#)zHF z6O`-8f6P@NtS5bA(QToJvm+}}qw-_th081Y2bb3m%dLK>Q{J7>W1|Xqbed zfJZM?Oc1QAanZ1Q1<|Ey(dC@3fxcQt8*ByEX05e`XW#oZN@j9R9osV&)CK9vsduji zN);3)GFgT(tEmyJ^0iWv3b!?PB6-=0^@kGi$~`GXpLm5Hi>3$iZYfh`YiG5~d5S@$ zc!RRi%>F@{3e?r}`U_>MqVnGGM*TrURqMdC-{IjZ+5K9O?fQ0xGXaaVh4Mv8MsL+~ zoIZu{_44@jlMZx~D)gx8$Id}D;KE5d_-_lRdMz+-!guCo)B#Av_MO1!Qf0_>B1Z?* zx>-sUn`#?;V~?O*@5>o>&DcZ|ABL$~Wy(+a#4%XL)yGra zSW2EAU@}C`hS~GDrH};bMGH)KQYgV7r#|#pNVi~6on$~QV9{wJRpf_#hT`7(YI7l| z6Rj2!q-8S@G+yGtKbO?R!y|r{+*U}-r&$4qBdeSS>8wi{PXl!|Ik{gxXGn1^A?zclNcqHDynKC zB^!wiY4W|UT}G0QyME}>%zeg z30=rD+l61@iRqs_=R}B2wLvsC*8*17iVpW~DiAkME30&bV3U>890p!qDYDz*v{3GlCH37HmLkhSs&E>rixT)Wx{!;i`C9HWDF7)#DKHH52P3rM)k_%Y z@S~=8?O72tpP&8I*O(_JXyMv;_QXh<1T(6)@(15zmX0u)aI*x6h<~Y?zsZRaED1>a zuDETl-P)pr{m(g6XF3avM?$Ap*EPJoS{EN~@0OR%NfPev^FLQot6S_O!d#AXK2lb( zAa3wXWmuNTl>CEFM1Kas7RY=9#ix&US_j?QETSCj`HEg#b-iw z$NkThD|cI1#);L<8?;CNpK%ff$ z0hyIvuAn2igWYPK$>hy+}$?+oXmr=rUf(zgVEwLl*zb=vrfrlC5)@$ z-5tFl%4JmauJPS;Sj5G_X9|E1QIvHP@yw;2)hpxysD;g=W!uOx_HVp>q=~Lm_;Y~N4we*$YvsN z09D+#Ef|{>7?J5re7k{uhekbA3K7j?kX9(!=eM5bFvS84s6kuk#j^~Soy_{?%KDrY z6N?rJO%<%jKqbkT#(luORaidyqNv9x7 z9V;M;WV31*Wuc@hutu8u3zILy67GQtAhk;2Pij@@(x23-YF~y8VzaQ)*{9){ zvhNMuXLPL&Lw`Y6{g6fcO2uB3xEuCNaRgOamP+-+O#v#?Cv`YE>@qS6q$(82M)2pF1a}(zF+ip;qk9%Y~-0t0c5vOrtk>zjuXCp<8VJwd`(>U=aPw4gtJQ zrcehK0A-GifFnjZ5R}i;2RZ$4(b$$fwEm$>CflJUrt~$6Wj$=8WmXi+9JcC&cGS^%xn-sSxRyF*W}$5voP>eX3fenFfbKo zVk4z~$f7LozH&|0!tH=D+K$H_W2*ErDbT+rc~fVLvgLo6V7X`TN@boFU6KeVL5IUJ@bSFDK3`NNLfp=L_Z4 z-4afSW^7C|;O7|hKn3#`D^Y-6eJW=8ZgIzjR{f(WOZ@BGQWSscI?&f{E16=Sf1!`36$ z*U}^$BhEB|J7`(4W!Uji8RpT{DHp&7ogRuk231r@b`7`5`s3lDU{2L!bpadRwoPFw z*+z+abtzJ%DaY}d=(#v`MN*k1<#-00<0*Dqr zG|9g3H<+ErnL(X~UbHmUjRD3Ld%Ppn4JC5g3jM4Wh7^iDp!Gp*Bt6ydAT+5{eLgAQ zn%bs^IrnTtp(b(p!aX!0UfCtcwtBCL%7qOS(e@=w=GJ@<)3xSQXu9ZWc= z1pC<`gVcBcmD&UA$U-kOD?&oUeO=)+_-kjPp>bjzeMq#{`85l3vI| zjALoMo2^6Ch4riYJa;%nLfwcnbx~GHZe%h=gki9&FiE)`!jA=N2CkNZp;U|C<6KQ+$07eC*k!e=6z9h#9fvcNOI*Nx~r z4YlJTEnlnGN-Aav)l5Oo26UR10Zt`|#K4%e9r=ei+!2^@phWSQ)zM^J$ z=*js# z!m|prpPa7@wT14s28W~*TcGt@KMIu_vY~uq(yan~5%sVzuInDnG;Ur_?kFgDODMG+ z&DvtwX<;|xnmwjEA?+C)!$L8vfs!8#JRpbYT;-clDN#4`ZcDb#aFy%&1PHZ|waX$k zK5-9&vNpgonS`!pQ1G6+aNB!nfw~U1q4sAy;H^$An_e*N*d@p@zEIc4KPSIX*XPYq z!4111Rq+$s*>sZ)&0F%$I}Ke{kYtD24pf2)O3$CBxOEUfm6J#bqPFFLd5nENQm+6~ znKulUOm58IjWq4{t6YVBI9#CWo){7;zt(;FuOMaRi=vuQ0hj zEEenbjcx%FlcNvc_hxmKinnrH$HyrIq*fAyVRSiry0fE+C>wIUIsLAn@h^_lY0l%;9R*7qHbiS^8k0iJa)VSyLMBC0lphF)k$^wYS<15XF4cjYgquwAh0SB zQe{^mz%Us*?@ahCGNmtD5n_5O+(c+DMZs-Jf=Iu$2rZSh`Xqt8IRC&Zw|mGp8;#du z`$xuBo!CKhr8RTVQ0vK8Xqm;Z(gXaGF#lTb3PX2+-N)E)!s3YK)36*uBaRfyY-}m4 zx2khVQ(tOlpG+o4KNWvpgw5++Gj(@PN3rp~iFjx{=+v@dqpGE6o$%nw@;t`#^CzgM z^%_#^B6kZ-)EMTuCx4DvstKOv^210FflP8Dlcv+_3VGdaBk`yeG{N&!!d%;%BY{uUiC@A5d@NJ+ z?Cp1+OUG@s6`r#vR$3zuuDWls#w*?W2pHo!XT*vJAt)-1gU&uX3z8k>ZVQ+Nv#6a> zT`<*xvnD)@+>KnB8<>EO-5a))#zSQOQeyg zyj7#CRE|H!P!of+;z3-ALXdg=RL_@*)727W>+)K!k zN!BS*IBy<>fvzZ5VTC1_l0ku52?h!U5RT6rbkoxuv2I&3Ub7Y29&&890hmh*^^b3= zRU&NrQ<0=nd$1X|E=9lIMpM?Smv`eNa#0> ztJi66MSFa$Zk*q1SV&T9IW1*vg=iFgs?VjY0Z8cDCebdW#QcDC3`gqN=haEMp5^@< z#;^d-6R^hCE%~Vn5m|Z7kfcmaTWv}saq_Y3e=+wKP;ISUyC}3&ph!z`EydlTK!E}+ z?(SCH-65s8QyhXjp%C1H6f5rTE$$wijHQ)Kn z`OIgoVJeIpa3&?ba1vEdO?iKEH>eqcqwM7haZKUSk}Z&OsUDis_rY0NQ!v+Ha0z(J zDT8Uf#&u+mg*Q}8WPArzW)ixR3#X1Bd}fLLq4pbflAQ_dHKQFOZu~Jnt^?@!$)s&x zK}S@BUXJor+mgC2y?p^+9to%ZAq#MY2rWA)Dv#slX-S3;fal7HE1VTLrmmPWi9RSB zR>GjQWnF7YXAybvz4v8&h-Cyq1YZhuE(-OX(&+5Gc(+SM1})o=U_jgqp2{vJ1F_i0 zBz|xg9gAW%aOOf>2HNfDzw^UDrDHRK$L?1sPCP-@Yvsu0V8OpNzuXa!LDRj@>%%lP zKZfS?{F^toSKddCm?r|8OV65cNjFE(g-K=?8oFbV{dSU`7`%CwMSxz6B! z`rT2I49ARnD`dPB5sc%^@}kh@%{(-C&@qu72u`jq2obFPa$#TDbYN|$hiMxI!TqkI zV^P02HSFW1z$=w)Ce&6@L%0@DFr=!^WE)jNtUa{gU02ocQKE|=sDhI2V^Ok6po!U= z&y$^b_d8aNU!cKBJZ6J&q{0EUeaB+-J$WyBP zF^vl;Xz$q!7X7H+X9XBS$|>mIQcktyHsDU!cYfrLk0~f*y(^k_Ti-P;2A5CltfrAz zvpo5bVjKKbDf;=CARXDG?Cujp&FwhsnKERXk#mBZp{*=bpVs83xpZ+Zi>uJ&bmX|N z7^-4C77~H{u)`^l#nGWt7>ybUj{!r^#&XkjHOu|1mY$FGQux3=ujpsOOPijRSrZ)= z>tyT`E-Gpsnd@%4kLT(dn3Dp8{|LtUBW5rG7zsnoF>T%iL)s#LVMn%2G<%#F;!WK# zvDic9E0G}OUd2saJyss!+8C2YcwJ86qG*s7<-|)c?a5?|%g1C(YGGSN=2lU|XC5w7 zDf9ES+k14hkJVi5@~j!$BqA(kdMvyXFc70I%d^}Km-h8Uln5+kA1q*@uFE9PY+dWlE%W#ExTGV*xH1kg z!C;%@%^e$sjC_!Ax7b(N@TLX5V6CiEi52_?%gCoIxwdX=CN7Ciu<{Ae@SR>enm|?* zjblPyPbtOoJfz*{6C$n;^p{@az}Rp(g3jjAWa1M$`BbW``k4}nT0EoJZ6Ae2VGhZ9oEejObpyzAt`eYJB1|pvoWO8*OYK8-N+bzi%t5K_`xyXxWDW=r!OvG&sW}YKK0hV?{Ia8rd-0NoG;Y?*?MgZ zgUPl`18FfJs$gi{X)l?_Zv?NJ67B8bF0=ZUKudP}XG*$IIwc!Fb=uF#e>ou_M%@LN9*a| zeum%oXL}5x|Ln=;0IZ4PomLXDHvb|pp0YW4+RQh!%hQwu^h1Y?HV(M^@k>6MKBom$ z#>Z48S}W*DG!(E!+~03oPe$B{ks@j91IZ}!PQ_G8L?5Vu?t)&8nktmACB1$c2M;g1 zQZoA<@ghL!Q^%Ta$Lw1xc9&>;6$(mmeVzEVS}Q}d@VYWTT#RQgGbk0jOLxkR!@rAH z(Jyegw0;f!Wx-Bnqb!ihBKPl%_k*iHn5AvW6r+oebA#O#=N<(25^Y?yr+jK|ru|lN zhA>}WVmS>q;>B;@fH5=j@il9I7I)CH-$r>biOUxnjB`U~0b1ck<8%zMMj8FC6`-oy zmM8=Ce~HPr5vV6GWGhS1WZRH2_9qzMbbnfPp{$iTOKA&zPXu`-UnS$n$_o>8OPNMV zk|T901?;5SsI*I_Mf3XBr`MZo2`;&`P5>?Z zd~|l0o0nxBesuP=D@tPx?Y{X$(F0gJw{;riD<(IUK4)_BZZpo<=hSM{aokZD(E zM6+hoY*f#ZjHbrn>p4WX=B++O@9-#_<s44iMtAmmp^%!83clQZ zE<_y!W6iuz*N=@_X4ueO#lIu@>mWD7r^ zg2au9qF=3mdT!^^V4>fqz?nJdx4d^~Jy*&;%agerM{$|OEjhmWMLRyp{I(3n(Gr3y zsWCF+?+ftKOpBWA89Q~XkRxtOUhAEnhjjGv(Cj&xQ1>$=Fn^Nqo2{c9l)cSoDT6{Q-7Gn8x_Ug5{Fh$3P`G?a>0 z>Wb9|Z@0)Zf%n1TfoBI<^u^CXCI( zwg1qX0={N@;?{aQ)$B#lOe%O(_$E*95B{h>3+keggkmy*y_g>Si03IP;Z`b=*0Ys4 z>!yy%1_IKoYl=@NX<3z@sQxqY#Ew!C5S0`7_Kzqf=Yuo*q%DJvR17?#|Npg|{)1}t ze+vQb|ARwna7BR$KXu~Go}zR>LqdE>eUN`&E^7E$QRX4a9~%(cD3GKgN?_-&9w7bt z!9{Fww|6pOwKX-dG-9>1H8MBlWO1-F4^xzvz(6DV^)3u4$@j`gNKgEckRHBx`T()T z)?Gsz@eA2mSwa-4e3)bh2?^dW^Of=^|wDM9vHOw-JfpAumhi9 zk=?<=pXI&!-^9s}QDOsvgZ_KWd@usZY4q%Mgx7DWfZyt{5CdWS-!zb6HEOdLlmTS; z=80h1qEBmTWZ;{IVi+LaPq}CW|H)VJLuOO1Ugf-izV4x|U3X`8zU&i@I2t+%ZjvZW z7Q3`MJC?;d@o1800+23c4x^!tIm&Cf*_T3#DNQA3oN^3x!>kjMu1kJ|+UA%zLlq8# zipEqaaub%+0X##wJ_T_y?C2T%2WXawmYth}g_gz7!t3em-rzL$b0o)EDfMNy0)-Oa%bPkLFAA$MY-py$Qdqhnky?cSq9 zr=E?V@=$`t=i>1i-mCXxV)qNeFGu9dH|x9vJzQO@d<6uTXQD_m!s1J5P8d$~qPlCE zYJ``_bc`cuif9+q*y(>ZFjG~}$7>XMAH_sRgPn1U4uuwLLj7|J* zx7a9;$(DlQzsP7V&QCPzd$lhr30 zc=SQ@bLhOpc5gZ8ek)6^@JHF7O(lrpd$(GBLUS*jf&-UJeoj{SKvq~thTapX7 zfE56hO?}+1Y?}QB@%g$vdNoAz5QmrKabO@wJ>%OdP4pZqxgLBn*NCNzU%2TbJ-s6om9w@n;J&40F)eqF z`7=G@qU|g0dEXwE_8jOVD~Hk&iYrZ}H4>sweuSU~(>`XV=stFeJM(g2p4jfIYq-6V zxgVK>SjIOFe_LIWehOYlYmK0hS0iKFXf6J9nlXKHFqc18&JfEWUUO4JTnuBt>71?g zd8WOenL?@>$20oVW_eDabFPzm1(QnN;nS0%g=QS;+pH+O8qUNv<_R0f>A#Zf|nF;*W z104!-x_)?zATDbrzgn9Rce0s%_ul6CGiVR~P}H(;kOzfKMnC+e{hk#tSHS=%+)pIG zz@VzfnkM6>!!D=dlQ4e>nwttdU>&zPM^~!Z!hZ3h`@F;T_o@)hmk;zG@Ka-CloFmW zSL^=(l2qx}%y=$ao$1|%CsrhSQ}PPDF2zN3TVYl!LmSGRYCL^X2c0~fR!)r++r=dG zbsBY=E6pLqC18JpDiusdn5>yN3DOT&{{fUQxmJY>qXi7l6DQ&=E1)gPeg+4YF6=Y4 zReK*rwT*DwKF2^F@z7+KRP=(Jvx!a9XaVc9rk`_}0Qk&45)JIeS=}k}*vFXKlF8NM z%u`@6IBo~2)qR)SriiuYL8qI~jSChl$9jDjv!2}otGb-Zfy6mgBtC5%ZXT?dt25r` zApM%^ExW8_+AWwRsz5TYZ^yFxB&YxIKrR*XFfwbNsVI@J$RS?mqUv+P{J{oouuT{Yev^DE;i-@+-~OQ@ z-qp>S*p8;RZ7eZIZ}5W*F1Q==OuUUj|2v13d6QW^yAu_a)0d?{k`toT3>Ova zgI7`MfwYv(@i-0>xy%*iNc@cRCaI#RbB45i)3T?pVgu|9I^2~pL9cIo1rC)#84Wxm zp-LxXZHn`PMKVo&63;k3!ZzF_*&@|?OBeG&qJ$R8QP2NzRjmvp4kOmH?|aycK4M~N zPE>)t%Q;7sxJt^>(c%xO$=)^`Qr*pkOA#p#1v-z~sztYVqYJcShuT}`qR|*BgBj{m zO~Ik^3iU@q&nQ&J?Mu;Jr7`FIl$tU_VwbW1;C}m2qJ=NZ~uI6;Ej!SRo$FP5&yGekEW%}m%X9wGQI3y zO_B$;phT7XJmUXM~c3w2QPw<)n_UG1% zmnxeqd-iE;>>n{-M%7(TCP|1MwAScrp-1HK=p-%Zs@(c1A{g#vczNIz3j>X;m4%>GGnvY&yz|3}D{JX@Z7w z7Crk;s#M;8eQD6z);gi{p@cVWBc9<_ZZmKmTTss>E}YQqeZoNJn)8XQt;bZ~d(LF+ zb8Gu+sYQexfvdC}F&XH%@vM5hCPO`0$y)G+-%OKhhZ(ZG<5*rI3N*&n=G|g zC1tYYxL6+us!?4F)F}K5Jf2g3{2uk2|MaTD=E2Y=aptSZm5_ds(#?6f+>P(EJXkEmWZ2BU8a8i!C zs(&IiEAcS8c#Rxui}~oKQ<$_d1czC?#lWe$$P==LMuA8#Hg=7Mo@)dKm%kaY3FoIC zK!FZL>a#1NMmVTA@eS2B_mH_f!8lP1&iJ9nqAgET+;f=d|oM5m&c>z$@{)V+BCW=3xKV1pu!4 z4SxwyBHGNY!~p!h;$yfb*2q2v-{}o!$+gwt?nj=VW~Wb-su~(z{60meW4|f#StOP; z3fXbQP61}6MqUx$^Gs-+NtX%{+o1{z57l@Xvtf%9>@p?1Nk-k?ZU@jr?X`52$9djI zKQswUw$E}sT{;AY-e@+S@m}bRl0G{z;Clv)O^onu0Qk`!4x5G-af~$($R`fUI9ML_ zyx_^A7YBdoa0zd!f#5HuKo&85jWCK&b9#u~!spl!8t_CuZ>ZdLdNAe`g1_crhwR}{ z&T9*tNr%i8+^McQNJKezB*a5<_P;xIsvocy#p99bN?V>(U+s{K(&WLRQu{s{E9W9U z*sEC6FM!0@?JiGBT( zA)3j=6SRTHN<{LDeLQ{bXdhZnBB>8PNezjzJsmUZHRFBuhGi3xsKSIJsL|h zP2M~2M>>xFQNiM(qYD@_W;5e#7%GKfPaD<^Q!!QlK~F2%HEao?;^s)K^i(0ebnItmm^+Nk96~GhPaBoN<~*&~>*eMh+UO6T5B9 zi+egto9UR=?}D^oL}>Z14L(9$pLu0ke#|Ua?l9AAnP!0A2>2?#bm6C?NoMzEH;p8G;kv z8nt=uB=?PGnU8c-S9O&e7%GEGI=7}bE%;?bNh|Ye%LNTV8IbH3xk#2-#tq;lR^vF5 z6?I2)wapX?VPC=2Yts8@y%@~+xXcMrFa5fnyXpK*qoHC?dW-&N`UK4g<&*1%Lb#_|hW z+6W;ho)gg+r6hJN`czmKQN*iZZdav{oX?8{e*4|NB0U(O92I_|SApMiI{9JX*UJ?= zD3kIWg6?5j#CjCP3g70JDV${x@pVr{(JPnto7i4|?#cKM%&DG=K%}LM0j|l;rj4?ExE``Bepbo_3nz!bik|Sq-V&n}g8bm#d2}}7Vent<#eeSgijDO_ugFLQ)9!ySczlOR#PjD9`O_$f zmk)_DPRDF@Ch8cWaOJnND zjH3!J#NW`sj?c2lnEPYg!kB?GsIWH-C+zM*3yh_UsD~sI`hmM#kRM}PE?K6BF69baqr7s6MMntlLAJvuasxt;^S9tH3 z$M>|9RAq6%i6j@z^rfYSH#Z*Txx3?*P7KQFzka3mR07Hyk5+d!?A#}^H*J!s<6iW6 zI3Q$@VnxJTrxz^(GO*MoD-@-Sn&J2M?&F=`}8*cxSmY7 zj|#vVt&r8_E{Dw@w5xKmMS22m3(JBI3EvB!?0oT<_QY>enP@LPnTF1-JJEm#Sys|l zYz4jTmcKJY5?=2aA2vcD3rjM73)+1y74?i(1lT<$=J30}OeTc4}rLygytqvR|P9bLn{3*lTLI`oes;m$7x$ z7_0Nbpga6}Ig1DROGO*6tmG1j4&7*$A5+TesDErdPO8YzAfs2DPGUSXzd?^0-aGVy zBqz*FkSe}(pTI6;%qY`LD?fLsftMic-%)1ux09g48*Gmo(dIIDlQ;-%ivu}ft6iO* z7bD0vZSpASEG!bP;Hj4sN8aC?2JPXxD3m>Y2HcIgxR5KH-i%vPmlZarr7)+YaF3xF zsX*P^xEJ@xe^0gEEGNsS`=9lg{|u7)yHdqw1>gyX0rT-wF`|nA$BlPK@mGas67WKV zBObPZ#TkF%Qb)-G$tSkp$lz7qbwRy%yM{ISmI*Ak_J505iXTzl?Q3sO=QS@saWb}T zYo7H6oGac(FAJ9}D+o6<@Dr|N9+V0nD%AIA*nWooxXxs&7hV+3w9A^DnS^{hJvij{MP%PWdkm^+CqVD@h18Q2%sYBwPEe^{@0U3I(1g5xI1n4bFzu7_r z#%`*GUetSOPFy3pCm(9MJ+}E~KTG4q>#M>?f8PsEwRzK~#HFmM!B@ocq4ux#^cTAM zz_*=Mv^pVwTc=&x8ReN==H+j9P8)BxotH1oJGrA`Z6D45@{6OCITjFoJ;w)w+gcc1 zG;Hr9EpA-e&Xi~LSGk;ms}O;kN7|`Ttqb#ll~tp4&vy$}h1%vq7Caomv?j>$C6?hJ zt9kRsyU(tGG+KbT(|Hb+9C)EyT(2mN>j^fX9)vQ;O!u5=N*8|eHFGbp~pT`;1_wZOt84Xpa^ByGw+@|^bEHz+ z{Yo(X_U&K$S}`FYsbquPevr{p$rbv(4+>(?C+o+7!A?$G80vaxHKz3`KpjR4pbzK)3@X`tDb-#r*K&@=iL`VQ|q*%ZCKFw35f z#~_#GkY|%EiEZo=f{iWmgdd5Nam*|W{De*q-wbtCZ<4xvsaXgyWH_&0x5QO%>RrR7 zJq>b#)_L3#dF7YoUrsp(((O}Ba6VZQqYOhEco!u7Xl3iL*hU!dL>`k_m9RTW{D(P3 zeRpi1MdQQo!|t^>nViYd_rxbV0AxZ)4^klR7_J}wpyQql04!8u33JZ}{k&LJoR&eK zHR;3*mA;Ac0h%`tjq?*@1pJMdTr+CIX7)yA1{~X1!cT(qekZxG4KCc+QgqXDg@_eM z$?h!)?~L!3DO_h(2z|0&&-|wDvSXObW5{-Z$O24Wbeo5HQ%SfoK}2lPS|E@_<*UlK z_=g>#!u%=eG^COmi~>pvhE!yXv;)Nmp@8p2w$At(tV7X@HN`izc8$W4GMXpTml|3W z@$Zw@3y$psZ*n@ScTGAsdsHn@zFMntVH3k_ZIiCePskhPBn}3%TJctdvEiv!eJ=eC^I)x{n?3T0uBqzIVXV~;_pztldtS-3 zzB?fk+Sq*V&3NEEdlQW!_s36|KF&r~q_1R4gqMt(bdk<{_W*L4H9Y$p)6Elza3v1M zK69RE(>^u%F5-u`M1>3jw3fwTa)>xEm=#g^&zyo_`8Q>WD#b_YS?VFm`5Xq8JTF=s zkCz{^G~|bKd1DWt0bNR{YvQ{24q^_JZ|oZH1D#ck^0Hb->lBwX_T-b4wLH8fOrM2l z=#~pD>6P%wV*_v*?daWwB@qn@>1<$6f^gs0@d&*+haTiWmCPGK(fj( zw~z&O|4)M#t!3`tVy`WZX5KhA8o6+Ds|xc`sum=~1AfZl-Jy)(B$&4N3cr>5I{ij| z@>6X{fZK-)9Fr&pbHn#{!E3oqKnbn2k+jY?_SI;QkqG|*UjFp>jrth6H?!h(r~ZgG zF+jiB$CGcndmsewh|hnRGK7h2Y3rp{_Z*PjCHP}l+MnL}Z(L-U`1E{41pla;o$Il$ zq{@xo3o%}>0eKzPIB_$w>eB};sM~^;Rq~WIZrI0eH9O4c48NPde_KO;oCj?(ji{Fh zT*s99$!FxsL?aY(cAxQ8Z*c1IBCC6SUH+B(%$B+Rd^JUgnq(hsG&z|*rVg{!!+#I) z=O>yR$k$}&$*cz9K_16Hkex=m&k^cXe}5i-oDfg?J2=UC|9*GnPr*mf|FYw|A41sg zFmHq|_+1|V`G5ZD?EJf*zr*xmPai}3Z;8-F2?XF;>Cq1v{+ng<-w>;U;7@2OZu6gL zs_*a76ef$1MjNoN7k0b-WA(dkg9AA9vrJxC$spHe-L!ton_dy&v`G%XKOoZS*5m|S z{{y?iMHP?4lXzl~4u`c3zrLGP<~9hvci7zchJg8t_dD~I$%MdE3kLy&O6EK^-KC9n zDF@2mIkKV;7_9H6`|vgREUw%5E13`g!LorF0 z2;6RwZfstI)VA7vf(BL3jegqj0y=hPuH!!8uJ)kmW{5>jNc+CC z`GLj}t?@z6yCbu|15C-1)t*7MX919$57fwwIZ}|Q&;;AKs`wCTn0Cgh_5PuZahs$3 zP9laLuHyX>%q%`ksqr0>_>rFu7+b#8N~rDyIFc`KXITx6ObSY&=h zv1_J9$qa|zirn4g#X`O!g60P+s}S?DO(%H4QQHf^STgLC{N!G^jLRiqd1}f@f5n!3EXynvSk05n*NEe6=M;O9Q}kX~?{uEu%~H`^jM%vYQS4I?dx|_ zWKAyAZGTXd#|#;m$LF0v+>(O_`f}zrMO#z^`QioM>_Z1>m*rMcqBvDI>nJQPUMOMr zW#Lgqx2rdLUeBAPL3Ms^Nw@_aY|=m6D{xzRBa}>kxpdOk7v{sNE2J1I!}>mqzy?sj z1wwRE`EnEk)Y#NgEbJ(sV`DD4tMlPodP^8BB#SoQ+_pMSYLi!Ni&~<$PJb+$hv6z zcz?6vOh>;{!o1lkxvH6HEt_WW{kUves-I1K- z>t#PCaO*%kGZ3$d$3_@cSPUv0Dl5f;Y@m8?(sCxZ01m7NqQAjp7NzEAd3Tb*QxS8U z_#lU9uM*Y0Xuo?Mv%I4^H-)&W(MKNFu+=7s))Kw@a``%N%%!!=hKL%j+fcCO_USz| z!>`St6`#cbJ^3M)@bhi4cYZskQY|h_Bl&_*p4DR>^*A8YJpCl%Kl z^EaM>p(9Ga)2Qg(x&6s@%!-zSFB3I^(!&h%c5&MDwd%ccDe<&%CpH2g7A8CP)yHg$w;Xsa`SNKbNc6)4gU~kH%J*s^|`8Qq#=D_TYu9h zWZW_~x*XftT_w3?d9pDc$IceYW6|_hoR@Pk8e6UzNt}iy z&M~*zY_qR1>gV)@3b1%PB*%#px&NK!c>fEJ`)NUK2O9l76#v0Dy(76ms&~+ldbM#8 zny2#J`w5d9wap;m5fuFa9zR{3u!Viy7Ed%ZP5Hgi2~& ztKo%;ExXOdJ#;sJFV6CdLykJ5=iu^t*g*1ktFkYg=SE%y0UFET@-kT(mkI8Az9t3; z)7NGhRaVb9&50@0qc_%{+zi~tPbn049p06Ku}`F|c+&68yjP|L410ZQF0IoW7ulN9h(KBCFF?xueQgdj&-^}Hp!HWRw~}X4 zsaumgH~+*Jok`%8Ub^0c&zqDOYBZ8`po}+vZ-H>*{tYbt^~C27T47m_g8C&y?GwXG zB-(|op%Pme94V>S2mtUnrbatg*V$g%HtEi$2~Cg9U2W{IK>XiZ-f>OWUg8`ydA$fvc7ZqUwV$e)@*+^M&;-apvH-n4m#nF#d zXDB2!a=$GGL2?`ndUhF3*T9vQ(l7hb&iY^~BEYjf3CaVKrU(vTDd{ijE*r+o6(sn`W(uZ${Z_>i8$Au>L-t7t`JW(O(0+q7Klbq0 z3wC7wkHj=N+f7EwzY0<+l5O2A5j;|bYL>mR8fC)lc{IXAzD~FH5HjnacaC`7=pi2< zV837ki+DP9`B%0+2{SQqf0`f;SpR}rNd$=jez$eL5I*`R_o~eqVY_lx&@)&G3`e&E zBJ5Ik+*MVPW-9PvQi#^hb(?f|g_<8?iWe1-HfTTFHv^weo&xo1@r5+Xh zXA_4|wr5L2X(QggwJY0+(2fN;-BlwWguXBti09>+r1pl}ao0FntVlpJDUsg(=mdxP zR}sCYnPCan=Mj2uSE-%&k$iFIcVoEo>SDxo&x9=Ka%c!5qzN%;{OJ4`;;mSG(S>U< z7I|O!=bx|}dKaVp>ApWi_J{Fp-`!^e?v(cL8X;May9v~bIt_kDyZ0%Z09(F%1%6OYGu>snUZS(6e` zvV;wy>bs_|`h8UGr+2@|oMOm35hv_2n~Qh+18@QdJ_QdJJjXg@blOU5nee|SZ1llT zoO7TE%HeslTM965d*p5Z8|dpg=%Kpo@Tki_Z3jO6>8dl~ zu0)T8NCqh%Mxeb(OOLi6p^1_KqveOcC=)t(3~EE`E*3x8ir1rXQ+Rqdypw^`fwwM0Z5E;Z>(3fKUBWyQ-v(a(xnfq4N z%uuwsec9FxYdUyh-QDV<$EpeyD&&7BE;p^KvCxWrJbyQ~%vTn-`@y--jWgIL;9crU===>O`e&k?I*+c>I-W_s-Lu)1MLj*of+fOzu~%GR+bib> zYs@+0=2K|hb0T^Badz2#-EM9c2Yp}YTJKMdj}V+@sDKwdUpi;xXZ`JXO%;H}t)~de zn35a<`g#8=U)Bl^^0+##kjCIlp4|8&yES_|ad4t$^X#Prb)s*B(6hoHDKdHt9JY?! z%bDt*y^SSH8;Bw}^AbcCY*u}beG~}Ru`XkZ7HBmr!M!ig)jBesi_uKUyV>hdbm>!m zKwd!85amm!1w9j1+MgRy zax}aqo5wdTp319F0SGjzX@)x#(@3QpWqW?772lg7H(cI*sLw5FD%vHTz?oS#YCYPa zVe7l_)+)}PE@b}A?7~4lNT#{C|6Rnl0D5tRVQ>z6^x;C|HAXFCf-O&VUv!m@>GVub zV!%?Eu#X{g__@sow_jqCHFRDK5FgvlI`Ea*OJv--;{2bn8?Bn;YJDqEo5*^j!cSGm zx2kt5SgSMS-4^+<%X&b>QD!Y}-^g$)T>S2X!OZ}m>k?iwK03D9`l4thtZiya{RB8D z2S4*ZSu>DzhQq`lLut+DV!kC-rStwnUMaJ0)oe!UvbRh#-?CpjdAw}m*dE#5p$UJ^ z`&%`@;1{G?{1Dyn;;0GUq0t2aH zoXPu^%tIVQf*VmCxSPx)s$NPB*5iZwY+_308qbfLu1zX!H9Ljt4>@kUuImGPFdu?G zOo(i{o656Rdz3_M2FXIn+MpJURL#iUy1OoX>>x<6XfspqdDQ^hL8Y|2f!jz#9r}6D zapqlld%nlmH^tbr)Oo?o`INNs?NE_6wZ3MS^tX(4_qZ=QeQt7s6}AV$-`bP0^K8;- ztT3xgL@;8tvzg8Q{L*nXbb-B-9T1(Fp8PUcEb}(}n(j4&h1v8lQkXn)U!jHFB$%z9 zIC-vH0GLucrqS;`YKLCPFpbMoBrXu=#xnPXtmGvpE3HDFJSqCJrbe)PgHa)HF|*^( zJrW(rQJFrnV)kACLb_}Di5PdpXQFaYype5%+&TZe2KPxBNoc9*^fC#kbx?-$n((CH z`rOCOlWs+C!IzLPw?cEbDVx^u=q40x{vOYa+%CkTYx$dqS|fsuT4NRBg{mETL*3A% zCxh-<;u%m&nJnG7ZBhy=8Cj3_LlF~?9Jriuzj-8dt=uvnng`c8Ob)s2nK>P@rM}w9 ze4}DtQGYvzGwV|$3TiWcJj!kJODr<6YESxbLozGQ%|gGI3*0*+RStd`~xD7xf&%Z**mKim!Q#8U45jpNasEw@<#JmBLWbgt>xowN< zbz8pRo#Yy^PY!f;6}lms|(b(p<$W}3@D7~5Z*)ekmeU8;vfZc&tm zJm@7?&9Yb_vX_agc~yn`?L|n}U*>3`0)mJCtch|1U5MlUC+rec_7dS)shWGyT zBzj&vdtbTOe|^#_uFxNNH{>C+rxovHWi9_&U{IGxnJ<+V&4o-R-M0pv6^glG! zv>LKfl#5lm*a&8hxBAw?bzdbW{}KxLk%>(=AoA>FqOChmI6S}JK`2x~^e#sbMWVbc zUBjkhy`|nh14C^I-}xo$_0Sc#>zoV8)o* zSf{P(ZQ)Z?S0Ks}uX_S^ke7M#>HSS7Y3&{lg^K0vMJC9!v)y`bB|mWo?DH@b@rf%I z>}I$CsjLz!O}+R;6UG=jX9vqDS_TV3D|g;z{F@kyxTdKu*gFQ?(FL%s7v0}ME1iD+ zT$GI8{7|NA0}=F{8gOJM8A>e*K6w%@3os2=nkIIPFt%y^g9A%f*fD!$j3Ll%lk%7; zA{;%$=TdDmFE>N*3g`Gw^j6-ZZY7Swn_tYqV z?XkZ7T6!`AWq+AE4ZQj8`P^PhgJVLjCfV_~J~H2sP^6tlPfa=isFjp$vyrfKnTZv6 z);zH`O#e>p?G07oiM!L}t-n(>x-ZF3Nw9U%kt|Em_IUgIgJi?}#9NV4Ubjx#tqOSna!|y(Di)9+p zm2&Y|$v?1Ws_EU_kf}EbIwkV;$bZ|+DVd2#m*HqgyA@2uTTQs}$+{vJCYPeoHz(+4 zKB>Uasof~ieKw>ElI`2yS|ilS_;g67R5YGZ`;oJ}?AqirN27L_qv=u75ukxm&fjM3&g?1EmF`vST=R z_NU^H)_xzHHQQX3cjZCN&x^ov`Bd=kt^>B6{Fd%!v*a32I-l_Egh=PHWFjx+_bJ^wvbr z&0cPHEHpO$h+`Pvf62sXgFT+~tuaJ~@H)XmDr7}Vu9o(L=g#IJNzIJil}B6J$1M`^ zy=KtOCq})_Kyiij?1x2SQ}Z0j^Ezqebzbv)as%~9jR(#x$mOn0>C$iO0az|FwIN`L zvt1wsb+B~Gysay<@TZx@_vcj~XEKBEW}EvRwLkWj#~vo6AddzF?y;7+JLG#4kd~!# z?wGhzG^dk-U{!jb&Yt#iL_G7%6IAV$$*+7QtYz<(RS{k?)TI~I_hqJxbH_qdp4I*9 z?8O2fX+_-v3TwZ-lt1i*ZeG3$cl1d&JJln@jEB_0bqeD)R@L&m5#nrxDk+_KX9tQH z*l9TjXru@fx`_etsu33!#>kTD9U4fOV01G`k6A5(XV)Xv?Z%VT!HfR92c?Emn|Un; zFD3dg@(%KznX;)TDxW0&!M~lT)KXF8-ZD!SluBcr^N6yDk&E4;G4KnHlH>jPJOXIv zB=GF=PfUhyf|R3h*^Wdco~xbHZtabY>XARxc}#hi&_d=ODZP8C zc>8{y7ObV2BJ-)9>4D4+&V2@~$6&MMO!+*mNVJ$3<=r>hPez!)-!l{bP|6ByzU|F) z;NfP;GfIBoehQ~ssO)YBm5A7@3L}(VtSf~&@JI~J*vlIpS?}V%>t};F*2|1+!jUWB@tnxdt- zTYl}eeE($Uw^jOoc0t6%{*T8BbQ%S(gwG9Luj~~`4-|o?$X8nJxRcy@;69GK$#J|{ zt!%u!8Y`J-da3sU4OhDNb~Kc?M|lAe#LhoET3(~EM9~y-Or$JmdqY=W)yqh{q%2}? z11Z9FthRO%bpTnnx1sE;EvkSbm0<`3s}#z-P?Vfp?pk*o)fP)RS53J&{@|QsQ8g9q ziM=(lPXkTxB<(`3ReN!2ag+W!R>&k{ZG`%`O+SASJ-4#Rr_2d~cvR;wqlRT%yl!IC zj5w>1fE9NIbO_yH)VFe79X4!J7FR}S$2Kt|hdE0(lRuG{&nQ`WtxBOkQ)%66kpDiRAhfM}dt`8INhii`=pVRJskare_ZeZq*2?@qB%e<*53MdN9AJ zMKL<19x*c}f}}W9?aE1LTh*3UiBRa&cr%q6%6%JEZ027}%bxuSrZyk7*qreMs44QP9@8hfb@g?>&lRipE zat_lo`sx@|x}*`y67bH^VW7?tK@C1UJgmzUbk{#qG)<9FO`PeW3B90nrbt2PZQXq; z2yhc$6Gx{k#zp9&&}}TdJcFUeVsH(Ly zw*ho!^kIQ;fujip=kQi90ulwYG-M*m+||yNIsYH#&N3*je%7Tnz(g1fs* za0sr!-QC^Yr6D*puAy;v*Pxlsd(OR6=T6nse4KAk)gQX|e{XntJ-@Y1{cAPnV7M_@=+zUtd(fgORT2Se5;2{q9V| z7L0?c26SL*E=En9f1IG~-DvzkkjCgN)flYOGhjnmh(jJ``OCze>BVI%pa=}_={qol zmK$A3+g!ni%{cdbU!zJ%V>gOGCd_`_!b;U9W*UwxBh&~YC2F457 z14doUD(w!?Ejtg2a_bItmhqu!;S_`mdEpPGV8jNPX&yC%K_hM)Sv17s9$d)q2$5P; z8a_F<6xPbK3Go3P#rN{)nBc)s+F5y-4Q#b|sRa)E~>G_9UTGBL_-1aaMja z{bXpvyso$KL-yA!>o`UsIL&%ytVSjF*O!{A8-sJs9DTsaH~Hyr^fth`M_w1rHpRQi z@36cnE|3EYwl~kfYlSsU?Q%VeiZuI}F(aE(_O@c%0HQGwmsVwNk{MsyM%3H}7WB+A z(hS-r=Xq=_qME)yxtO}G$#aqzJDAQy&NER!Iy|{u$V=2QrUkdSl#CMJR8xeOW@0T@ zwPr@}bvg$-#v<_GSxhz7(J(r%%(iT>Pvd>TyYf&#BGJXzQi0UY&#@`O9iHTzS=DXK zc4`=+%5Ymafs~Jl%@o8*0BFB1U9R_FK1-FgGs);<*u1PcJ<(!zq0uWN$RDGOJ2b#Q z+|iS18o&76xFlsZbMb2(iFDngEiRZg^P9<{6(;&(W{xVbTfR)*&ESBFhHO~jlQ(OS zoA(BX{zdf%(Nj!&EaAH1!UVBxc9Lu^bm4?A{S1>ILx5KG+aHJ?InPnd3MaThYNz*0 zF(Oq(#}>|qXUucs=20e~g5vN3gjwY=PZj%O=AsUde0THhf!wo_jNrEVY%y!yh6;vx zUkRju3kGZ0^N^HM|1P2P^6EuaoT}#6bG3 z-G3i?Pn*QNK_dsKupf4yIOrKI(_*n+jr_G@Yhp88%cknqXUnLodkSybj9ynZG5%e> zmZ+5fTg)e?I;1Y>f+NL?8GByDnyA;a1){eOap01fRby zr+(iwoMlUXk^NI2pEU|x(_}_PAx^bl$IB`vTn!H)tK8_LJHwBUVx%n)L5(4t6TJ@* zfQ@eRb&%Q2V<8Fn? z_35LCJ7wU)lICKk52)NsI0ZxsNh>}7cWnURE;bTU94gD184KRX2=-_77N$BDT`P8@ zshGxScsNjUw=~GqS2z<`-_w@tV(J>};DjyUfGvCa#HHW_XO50Su4?rmX{wLMFAzJKEd3^lq;TW-TxP-B|HfLp zIbumW_}&Cxopx2<{N6dTeB0ZkRoQ?|nRR^mpn%m}**tS@SJob>6y;muCS?>~L7ZJ8 z*LYmoK6ZSxK}F~~TANXEar5Fi)8AvqjKduEy*~!l8tkK|rYjT(?Pb#9j}v_3q|Euj z8bvmfk;cQ#-nBHuSA(*tzXg6~&b18>I< z5x#mJ-d~I#(P>ES#uD;#R6wapBotP8*c-&3m(g;Q>UpV^h$xP#CR&H%=Kf{LJ}*ei zZDYiJl$ej<$l_yhlc7eBGQu$|0DbaJND$*G|G}6l5zc|uRBJ|&EyZtGs^O~K?KPZQ zSl$9C2ccLSNXbkVrM(Q^>hrqbrd;RyQg2pW4fp3(mt^dz2DEwn#BNS8+0=f#V-Kj7 z3qhwJP`5ZvaB}(AsTzk4x^%Ws!!oFj3vGl8^(rJDAO3l6dwWm#-2yi3d}%S|Pl%)k z<16{z!m^1n_wtKRm50ujrO`2QjXFnb-SI)6WbP7CjBAHi=bL<8ke|ddb`2Xg_Y3sI z&qzoV%S^m|ocD?B6h7(JYIX^<=@~cUJz)j)MS8nn0RrjOCJRR z^uOimU;z5xB;ckI!wM7nl`cUk9{{1L@f;cG{^@o>4Ic&YSQqQ6L4)yI&*+~J?ZbjJ zmxZ;Z1}@OnY`E0l&XTL9*tojFDucu_DcD`4MJQ-pqwP6)8siY!>b^6TsEuYe7n;JJ z3((OgDwPgNr!5RJMy(WK!H^tIn`s z-Fkcert$u*jEAyf*iQCaVA3q<6ECY?r1S9{To0fK1A=1mVeg#h{7vUXQOCJ)a(u0SP%xf z)AsFtsLKX}?krVwf)+>AnI6?aXvNV!#j2k|PwGq0sgeM8p7!%y6&|m8I(44SlSk?n z%jV=I)iqXS%mbwE#mrxLJv21{dSu2GHBoZ@xYktu^bU<6Om}#A#%$q1WcSB4G3=e2 zzIr>!0jM^&7~UBHhYh3|CRp6Z0lmmaaJLRFt(9TuSpnzw@H(Nk%u6PJ@ItG|E5ZF}bTxxqcqWdlbE2`n_QL zku@{BHS(B-#)n2mmP!Ba%SY{An>fB_wx6zm$`49a-yKQsD=9O;YbOCfV=&>7g=L=q zy?y+j4^r`@MVgeF^~oyQ03yRjsV%6%0F6$DCZT9{&->@ZH@X%i7kta|G?&TH1ZENQ zH&3-2t}^8t-g5@3Kk>6+j840<=ff<-4pk$;H?8LlgefHc70+oGK-K|90vdBWmVUMY zQeKr&H0gA!ZaTIRkB(p)&IoP+$y8T=TxIHiPU!A5S#I^%9AdlGOKaf=Z8ay}*9QRN zTsYB5T>pxTKgJYAurXhA)DPX#-US>1g-|g8hZ<3d1C^Wf8&Q`oLKm8r=MI?jobS*y zDO90E&1E*Md%jPmpe*}m1|Og(8jP^MvG0$z7B}V+Rw8;58NF7~9tz7uwd`iP*@I5CxEuVT+jAv>7J$k5CfRuNKt@4Dnq?I)`QHowjLqZ}+ z^I=B0Njk{`^Ip+-Nr4OUcDMXc_YBD}@6hQ?`3KC%gyX^;HZ)D+9?)K#42)U^kp+6@ zzWMPDiH@~oZ;)~?T+ zFj_QM7G<4!9DJ)aoR4qTUq+Y|Cqbl*{m0jS2T>IjC*YbtK_PEFY3KX1B^9{~?lynF zD)+EkCW+Hz*|cv3ZhRWOA$CY}ktLmbUaOxRJ0F$bs{kIJ%O~HTf6K{aUR6CltFCID z<=$z^;Rh_U!E8C#g}||x-OoV}?3DmVNKOv~^DZJDFAE9GD;34$sW!U3ZX~B{r{Y+% zpi=i3GAssUvMmL)?(*)UCV2kJRBj?ZWlH;nJlAA@nbpmrh(wcu z)9#Z2mPSH$b^W8DpKCEr93iXNjs?Q?3~$MV6p|h5T4!QHeAMB%#j@xS=P$1+^RPcO z;@h81j<6pZD_Pu?39$s5*`wlsqVw8vEFG6pZp#Doli1lV`9)0fOutC5N#h8FYr&fu z#BuGIx;uGb)&){&2sd-Ww-eB)a&jXEA@S8C2vcP~Y3UUKJYUrvN z7j#A}#TTkx%Rx0s_eFUhhzVaX>id?Z#fur1rENLiWuj;=*nFx^0_D$NPzFwN%?7@1 z9|U!#J)r#K%>En`@bvNFpr5cHQNzaNQpKeTbSBOUmwVmN0TgTEpn^En2O%RuonHay zR(0t<;|@D(P=Oh*XLs%MZ3|Q_%DeHRZQFP?w2d!trdXo3a^@Q z;}4gSu26%xsSt?XTDj$a69$Z-wtBEb@sU!{0wPkKx=>1t2p$X4(n^aaMEt=rWcw31 zZSOOzz8uQ`EX(;%-EaU7?9-{6@S7pnP*p7GzBt}GoSXnv)E0b{` zAsj7%aknxk;A$k^sF=EYFb3#3MFZDEJ9Kat&9%&)xwON2iN9vbq?#db?cI~pm1VJNd|neoM9jv@fde1{8(JbZov# zdqWTuT2%t=bM)@eNS+~b!?v*_4C3I88RC2P~L$Gij(=uYiC7g`jBNfBHO?rOa z9_KBoRx4O9H+fXrCvMiLwh}?^WU0qeEve(qs?;=OeC+OKkE&`&zYtRE1&_$5=+dEjH zM&Tn^^orj2@;LZHj&!vBp5ftU0+LkMM_sUT_G;AE4xr~yIQ5@GmY(&5Lt!kY!I$Ot zVltpC#za>`h94;B50hOepSUzhh6ogdLRGsf2y4`aIxw~c+h)FevJwjz7vpdt+PsKW z#3+rX$8x;gftwhx#jbyP3{pgNNm8M<*mj7blPx{1HjVhfnt0?;Wa=Sr>@N|n} zzxidJ+{Z5*cvT+u3QP&?z6(<0VcY5Fsbj~l{i!BOEObGyy!*ZWl+Z8;+TWY;okFc< zS2pjZFS^-EgW{pR_4cr)Og+6zE#<_A3B>y1_(yX8Xp9pLYQpa+9WS)nab!xfS)LF(~NR_Gfl`=Z^yW}!4!U4B|cIn)LeBOb{A(V4P% zfl}EIH()^0UNq}5)aSDka0&p{ojAzlf%4R!;|#O?n*eKmZ50rF1Q@7xl&6!QDp-bh9$sDcf>u_R#i0Q#Rty-3^K83ii>(Vv$i1 z9cA#0WM~N-T%bHC$sh23J|Suf$h6t==*u9ziy!lIM{-;Zeq#WIXiNgG zkhPNLttGfaTmY`={Jf@zO_bVK$%6(zT0FxBUY9zi8P4jXd^SziQ_OxIwe`g_?E~b( zIq3eMX!O{EcH->qZQJXt<^<-%p9L!$M{eGlk!-*|gp#+`qBl$H$b8pO^R%{!S~oYx zd3v98h%cS5@E4-m+2o0dx?MU4XQCN)%hwI)ok5Sw+s(N1=p??%7=YS%Io?^sgdg9! z$ar)N%;2XYCS+mJtnFPgB7mXF(<&)#HAD@Z-?*m7d&!8GGlnV#p2F;_rZiwOP1MKk zWS$?suvD4^MReJ5)TF`Tp7b|X-@=(_nrkq5=du}?mLoO$8tC8H@oJ7+sj=G1IpK(- z%I2rF%)3Ig`5d>RM{|r7&bcd2vS;x^7Z|E(L=DWS#s!3@gc-|Puj_ZO&`$ErcCygD zY^>pBF0Xy~hD9zrG#17SO2&Ux(Zbj97%qfq9Vi#7mWr|dwHVxpc)anxqKJTEAHJC9jtM~8AS z)R&Sli!|9S$b%`$luP@QTg&UIG?@g@Cq$@n8`N(_nVEMHKcmW0xPRvAIm+ku+=v|S zQzQ&-lRmB!o{t`3bVhFMO;4{u&;Q0bTf3KU{yacU-5Ezt%%@s6d?LS0;L}E7&p_i& zKU26|OJP?u0Xe81W;ck}kmSI2syV>PaW4{+-0m`Zqukw~jNtesAmTa0h>Tjtc&0?0 zNLelYiXd#=&xX$AfT@%gUqqYuX^o^AYk0OXjK5JG<$5C=R*<1}J7KFu8HX)S8N?b0 z0z7FaoAIdy0?b};3=BB;ogR+FVy9&LdT{dmh1hgsO4UV zM0LY;p)rQb!J~^8YR!#;CO9ge2=6QB|4r%cIC*+(un5%QTaLe)jOtzVZ*F7%Gb9IU zxW>wm#Nbz%V?aYOs-p!ci4(}`u5nFv-Yd}nAEC>pam(v7(QbkbY7;^&Z#w~cf3g>d zW)u34uwp=S6jt{pv~t#TbeIuG61W7W1hZBdm+R~rfmoRPVyfXK?D!en;liEO_u(T` z?#M*Y8F+b-FLUGpnAz_F%1X^3aeg<=ML80Vx_sXRumGK+;olxhy$PA@Dx`amy8_eT zW>rS}^c?^4QON__1=jTk2i0V~`O-Ld!ZP|7TQXOl<*_Mu{;%MZjH#LF&hU~I_%_k> zUCdv`Eh|`z5*sSi*8zT@nR-a>JI_T`y?>^O^7iG393}-xefgRrV;NnNMPc##MP3l{ zC9K`05$}s5T`RGF7KP%~-?SE^RdB0|%Spmi%WRmk_Is~(8z}d)xi#nrbF?~y3WZSxF4)YKX?w3EyK1we z*WR{2ggI6NgYO^e#RN{fbmMRvc>KAu&eSZ?i51(LV$;;TwHAFH=)}TBbk%IRXVAeG zyoHxU#n=_!F;hrRJ!3hMV@TFN^@SgR(R26V;^wEIWjs0FkDg zGEAlYjjg~t=kktW?1mT#iSdK)wx0O6_blJL$M?6dJ3LA`_s5q}nWm#U#iq4CBW@Tb ze3v2j7~#Q0E|mCgj#nPg8DT0gAVs;9?yCzbr-zkrH&3)P^9-=X)eCe^`CbERdWu|z zAt)I=did?-PCso+Dqx6f9WR;qq5VEZn+f9~8Jc;_lfbi5UM04?tic?=$3U{-R?{NH zT;wyJZwXYOeiW@~`dZ4@K63(S!_OH$C!Zrnxwhoknc+G+`=%-M()U0}`ouu9+5ZmK z(DbYuWudA!mu)12UXcfswAs(+sB{iHeJRT~rJc1Kl3{#$?%S|;3DA2+bG}w#{ou>d zBe2niN&alP4~si;lM)dfdb(`<{0v#%J4{TTcV(B$S9bpiMm!z2>(V& zh%RP4U)7Rlv7%N%DVL*ki%8TwR1#D|9XhmLUyIyopyKnQB{yA4 z3&&6s$CukIfzOtOlr1@aMgvn>y<|jV!x<;X1u3JXr>;CPd_1J4wV=^pq1Ok!0>coR z8~QN4AAx%3Jws*6qK2G)P*#>c!*z>G_p>mBA`{2WKMR#p0T3=Nm(bMja zyZFtsIclzejtRQ)+UC3la~YDnURFB#?ws+G!B9^lABJS(0-#xgUw>Uy8(yY~h%eoF zIGFigeenvD+=skUg#*w{;1n>hbR}E%6J4C;ZAPpMxCmx3RH49||nn6ZtAyY>BlWIsfpfxT2s727u<3tK5|TMgR| zcvEjxh``t74eQv*K(KK%e!g?AW%gacM^($Pqu+o;EO)k7RDXOtu3N({@>m=xa`vPo z>5XCAR6Pw>v4?nap~QHg?nwNID-{?nG*MSy>02;7JZabws@ktar$@wld8kt8HaeO% zUTHNzxy@Ko=J+#ES#w?YAlzA(rdudGXahel(_u#{X}+NiFK7z? z2*q{Y&kNBRt5kiyL)M`@=^ZcMg*RZL#!Zj{xL73zPH#QanJrhyo%dj)og+!7@PE>3 zQ~#az>rIp_TQHYd+l=cZSYDvlLYB zI&m@nod0vSj}Byb?TV;bsUYkQHgNWbd+ibF6@y^r$DQy`Jz-6iT^huueHXI|ml-8; zG(k=&#+_*nQEMK6k2eG>JO?y9B43e#K$pPgW1~6iH%Ep%G!4G8C6bfH zuJlR)q7$a0Nsf-bx%a1<4Q@s~%^ zROpl~DCqL2OFbJ+quQdLkY+dL_s#ES?s^1&^l)C_`aK7b)#Ues+Wj@Nr^#^9+)Eo! zNtZ{|%kJjX`B+fHG^e5Up@%`GE)Y(p#ujS9A)Pae0N0;Y}?wDfSSeX|i ztq(}98=&$9PJl?QA*zEbhrPPJ{Bj2gs^V`rqk%z&b5fPA(;`8VrXP!DhTQr2+RJvVfM-veczEH(LYH6@d;FUfNEZ4U!1N`bQMXkA@($ z#cPXU3<;;60pQYzWKF{#E*UKx{hID45WNjsrt+_DgF*ca{s(RrgXxjQbNBN^18x-Q!?d`AGGl7K7aZr(DUO5?q&HSi6dtJkGM2QyE~5d?|_9~=r=U+E5}-JFsGNq z)#;~YN&gE1ZL#aGff9Db0?RUeoSZ#ThZXtnwcJ;0Nx8iTG)N}~P9Lv0>DEOE5_1jB zhyQYIx6pqkB>;<8v$YJqX~<<{(0t?+MPr`Om_47R^%4q(4&>w@a?96nTOx$ zvJ`#!ETORi(25H%B5>K|_kdvY2ys!>Ck|T7>6OvZrAm>#>#{W0__=BuE^+@?=zE-a z$iFy2jSo_?1K~gGlL%FFt?LtclEVG{eAP(c&)0HH`zcclA~Z+r)NdVOwcYSdz~9bT z`PR~>S4RsiN(YT)sq?bWv8Kxb5Ns%6n#6O&WY~l0;`9HWVZ;6qwBd*m==FaC8SBNt zu`^6)f|>u<1REqOuu(MBop}NBzs;!s=MRCD=%Z62abLI=;Xuy*XAi|^=`iLcCM~SL z!uVYq<$gD+2&fU4m-F1|k%ag;F)Ni6MoWUpIaa1Y+hx=J6yPEgtRJSDFL%9fw=ar< zEF=DLDRm5G)HEjvR_+CmwB}a=OWjU)*HcgUTz({%Jw3N{%om(R=BB#g6?~OCH3YL2 zy-@CyWfmpl{dAS0gLIpbV~}csQ)G;;ZB)4dIKL*IRC+GXs!F9APnQdac3Aq^32P3E zxdfM{U1c0)BGod%cna>Oy$#V}xg{@w^F$kSHD#F3vn0}PV{3Ld0%0ZSui$u<;bD3u zyGG4`E@-_x;$SlA;JTGAIqC~7g4IEN+%N#{$Tg0dkk$Gu^#hn%(8~6KoZmg-VIPuj znR4)U{N8r0yV_#*%GUl3z-B(s^wdYaZLqRm02e;z!t4~5;seW{6;-+1#3C4pD?agi z2Xc84nJ7tqy2nYdqLNIxQWVae6dUq(Rm~_c z7eE!3rNXrw)~9#?NjHAhHSUs2LCU^tvcp*HO{}N z##+IyKk59ztl~9IQ~I(?0#AtCsE`4Tb=D+=DCIMJxKKJ5*lI9$O3*^&sAZ z`)b=Emzg1@6i?!lMOwel;B~f>1=|Z4-)qzoTl07+aKG^U#G)kS|4~hoamq`ZNJAXa zLiycHH~jUw{>JORt-54^Ig9Xu&|u2s!uswNw6y+2z*gbUzq!eit)~%U@pmQx^OSMD zopNm@8j|jZQl&t!tjK(9tY3IVtR)$(xm$DEBm-|))7Y9iS4KB`7Q?kgnVk4X@ z@V-hnAev*suPj>NE9Hca-2oI&5eUTH<^lX|6Cp-+Yq)-O7RXway6C323XOjGVM%vQ zR;BgDDSe=6>=$(;nLu!CmDNLvT-9ExW?CYXHa9FoFGD+v?ng79WZKhOK`d!6@`}Xb zryXIeuJq=-V)aYVzkIB;^?ZSzA>Hrk1y8uYp0$S7C-P~9{a$DM7AdPTkGv0;q6Try zbo!;0`f-tHKXJX3rjK7BNIbw&B>DnJCN{iZ-oL#vXLV%C2MT1)eg;qWT~v$IHn3E7 z5JN?*^kk;XE6~j(kt=SvEl-Ikhj1iV-{{Wl4mb#ZV0P3}o z$;CYajHid?K3q#Sm1TLP6z~D>c2;(Ln8b2VF>OQ_AnEzDk_LRR_#{Hk!1+mERDHqi zHo(D-LEkD?9qmf9CYB@)JyrY1R(6StbqF>Wp#YyHE&VQ8L4=8Bh+ zu^5Aq$w%sB>_|Y2e72@^K8y_p1`p$f2+3+25!HHd5yfB@^l*{+XLu$vYo0$MESQA) z@@Ih|xI(rIgxs1Y7QF;%r)&Q6J0MJTfTipyxrrL`ML3vdk{9^H2`-8N1#QAiu9NrZ397W5nu57EC6SXS)^ske+-ZGlJc(z@M6uI)}wwB1<(u(!Ga}Zw9z$+yqBtDZc z5xFz1SR|(1zsAC2eqtjKYzYE5A1!{#5EQS?y{UF?TCCFInR1O;8SZs6& zLdsqnTTSqnf8jwIWfSin7R};dIASCJ+IsNu<=3@v{I*ipuhL@s36O<$B=bhqqxKnp zuXGkBUoo*nBsG!%-83J(JCGGam=3OZpjk7gnLd7PVk3y?_k8ni( zK-?@ri43bLx};tjc%ybOXcP+RSz&<#0saawmcqR(F??GPBZbk$%B|NZkOj6+{cImX z9T*2dOeLQYGT4kZfc8cH=+78E5`2{PBpge@Z|@g5J# z^)v*KpVfA3|2*hvhT+07ut|t9iV4;iDRin!x{#G2N$|P`myDOinpa}{8z>YY(N2=O zhW~8AW1&9X!#-&lk{)chj9=|8Y)6HTIGL0b0q5nF^!4g<^%Pyy`n{!}<}&5)xnkL- z#asKvKgW}{Pfs_9(J@&?!0Hf?qfRnZAL7sClNE2TEu`@+%~9<_CYvjRHqp&HR{Ajj z$1mGd7Q*)0;#&29FZOGLh|9U}%m>~%$;J!I@ZL!kZ3_mCcR;kRnsic@YCLt>U)X?y-zJ$DP1*6}6icNU1QSF$2bS}Et| zK_LOxEXo)q!JqOxzg;Y~XfO%G^oSw`RQ?&{g*8#e@fo1!BF{FaXu=y3|RUstvO>rt)FB)Rq*UmdM5mJRi1$r&32c& z>xcM`K|d$1Vs>|a6jMf}CogBJX_F|}I^)h1`?r$CFevihl`QGh62F)>4L6T#I2TM| zk9Buncz7qZNNP$sHZMern{E7L%)Nui4o!3>$J|3!8n2#B?kF65$E(`TZF2i2K z)e63y-Ufk=5)!Yw`1u8KrWXX+@VtMSEsy}zp|40Gk9cSY&gVkqBhV7^aL1Kvq8vtV zIHL%Wm1FjJ(nfxDnRdJ_J9SA3l5gw1k{Uy}uy7`Z8wie*_u8T=`@AAa5N9=dhWf~q zxymOWn}@!d@KJ7jusEIGdO~Jh;spT&iFa&syNfNC9}ra(Cuc+|vPU=BP+wN>Yzpn$v>08EkN>ag%a1SdE^*lJZIKeVE;X^(8!f zIhsi+K9wY4dEPD;=1K(#V-_-6jNwwNbPPpbW78%c`JgPK%H6WX>xKFAL2`AvKI%i^ z|I$6tYgu7v^+>5;{y{{p3kUd?_lIvAYO}|G?;e8|bGi%2E21UPi}F zv)v6f-nr1H*%acke6~RoG~@%`ob$6me1%{Jb(>dbe#KA47e#W9Fnz48+Owy(kSEM> zLO<07m;DsCK}<(fVZV^WR=XEUCgd^5zRie}APH$HS95m10CC_UF0M?qK|rwMgb+EW z=QS@a_?v-4Qt*SyjB{--zJucAM`@UTXU@~NAkg0DWV(`u^h&G~)TgBE)T*%n&H%q6 zR@uakW#d$+F)m9IleYS8RLyN8MIjT`Kw+0Zv|rnWO{+96Q68uF4~|@(Cnz_tUT0)! z6gM$Al`GTmZV=9s%ct&CG`r$fci)U-Ngl56eIN)I=^TT2E0#z~DDUqWnv5W|prsaY zG7Jr#*A5^$?o8QsOGG(IG9*u%K4vAQ!AEN0E#AL=$Y%yBV5q&r)dl%}x#Ei4OJRJ!`3AwlC?8WS_72h&azPXY7L z@2j%Po?qdbPEHQ;Q)moHxN^&$o-)Wlf|>nJHIUZ=O?7}4VsH@VC&)>ExoXrDpaJEO2Y zp_wD;@m_k1-Hcp4*dZqzW^gm%`r&4BGgh8{8`|uWa%*ZtHbdvWOP~*e*GcT%F+9^s zh%$T5Jjjas12ES{tK?IbrCwxG!jRYVKazgK!2*NdoS&qFY28&ym(PZBphEu%Aoh9I{lU$MH4 zjQpB^_YT-7aAgZ;&0_Jdk)r-5@e^4>$aMagkOg=3*QtUD)3nKYv=msPagfFQq{uY5 zY378Z!OJlEr*xnz-J+!Mm^T9V2+}BhMH5`OjYJ&XEr)ok{TOsIPQ)Su_CF8EzcbJ`w~PKKwpc7N47g&xijb?F7C;ymVb`Wih_ zI%V1+FXzZjfg}&9fdyJZ%08lWrBdyL+Sk|bp`DCmCqY(hJm2sIV}sS;pa`t*Aua!- z@8$laHT}-;STS!|nqFM?uDeLYRhQe%;{ty04y-xfV6$`~O(6#2WI*i3%T9dsjZdOF z8Fn?Jj#iw9h}?i6gr~RfO)m`_xSbh}=^u2T27pr1{?xF({owBa!5;==7z*~EHdKmn zy7bJz^M6md>fW#9LEEW#L&q}QpQ%r+st;CVzqHpen}Ji6!DSJMiMv5w)le%c`Gc}1 z2Blp|7(KZD^afzZo)GO5O9wrIqM@b-O*k{~^*>LZ9w|@N57_L%< zOecn)0&A`?C8HOgZ{m{SsioDA~KS0C;h$ z?T!-;JAFsjdk(JL%Z7}IY!aJ;(1OF$#LKY%lw!?i7JPVTB3u(3#L)bW5mWn2>&t<8 z1Zv~g zcqbN@RzAkHxu9%9(XZed-I8FO%7VB<2)n~Jy`4iryD-;F)JCC}f`m+||xAf(x- zM}PBs=7v_;IS{IGLb6vw3LnoLegJRvV+Yi9jlS6n9canR%^VL%>A{Iy=f}mdJ!Yl` zqCCP%f#V7gPW$P5!+GTYmnzeu5A?>IX2Pb|0qaUy#2`33)o zqyIwds-XkDagS>w-sn`IDr*d5f1j`FgDCin@O69Zx=NcyOeD zs{i=s_|cL1WZ;^Yz+C1kyL_}7DPO>{v(Iy2FDkags8ve>c&=| zzAgDeiilG5rqLiVPt2@^>3>OdlFrQ5=X3M^v=kX^n*n>m#$N1@&{VwBWCap>KW_RZCKbsvqh%K)ds#~tsXQpky*HmV zU0lc+*`@{K3pf&F?lUyqn#UE)AXfduw2nDAm^Rn7fk2sP6xG>LL2{F7s3v3VPuCCg z^uRi*j)nR_cDvClw{7TB@jCuq7MUf_ZCGPvE(AJpt@*}tb$ zJrRYDXg~I|nmHCfT@qYah!8Al3`581`g!u7=3j-s&A*XL$UzOdLy=1hk8{+Tbo^RF zjPB+-r5}u#Vi()u?$aDO|LNi7p=pQLFYbaW-U z?Qf{eua)QjsnQYA*zNvP8vMPt_gcisF9_2VEF7llJ)}#0Xo8zf)yz#&lIR61g~RA2 z)+C+Ncs~j$D$i2P|M~0R_n3-H55)aAo})U0)B!bP*fHqn9~{6+b2;{mp3d;Ae%#_# zRL=G94H;g5qg{cPkf>P$2QQ*E^rMe~LDHB|{Rx*89=}&p2wH+;$+0W^q_c=*FlMNr^+Fr@_**vvzl>VF0kH)V|iKXhR)lo2rql3Pt#ipzrt@` zILJmhj(dCU6?wd&01E7Xrl{y@n#zad{IL;-)|yvrnS&y|g+NHw1XbQkN5?E$NiV*$95sKe$Ub^hkH9BNM7-%F@(_LL z*}^>(fZD*rMCqr6!d-)~P=bees7XbHp9%)z6C%1HXDh_}!Iy3M(8D+yNSp{jsD zJu_*J?KfH1Gh=5%`?4ed#q03x+|E39Ky@LcVbXZbt>c_-=6UJ4eziWO)wV3e@p8== zBj3sR$sT@{wsvKHHHfeagf{Zkl&k_?9R-dptyCTL_)Zf;&aG=Mf^A@rE;u1XW~BT? z=x>Q}8cLRlavoa9Z!n0LtHML=csnB69kczFE+MO`EVf2wH$eOruU_P5%~5m;l-&R) z|4Qo`-QG;o`Fve;$?RHoC$a+#b1UEPl6t54ezuL_p5l4Rq=Ushbdn)Y0$m#(bH@_uVUPl_>vAR`gPAf-APQV$TtGJxR7rtCepJALqik{{3-F1m0 z>udT-a7wOnGA<_uRw?4!K1^F|@Np9l->m9DU(xmu0GdTuC4c1{Qpban%vtx=^uB4&D?=Bcb{cy3#7G@AKZ_!br+;mAo%TkZ?CyV1dN7wIrBNYB4~)32i(zCe zPq~WC%kX?3zxCunRN2;GbjLjXc%KK8#*Chh4%efkxzd)Yj9<_a6L0IO-Sbe{)ZAxTN>@?GFLglh5-Cy+kx)@;xIU<;zEXgfaP%tNJ9`Eu zx?q6TL+_8^8gMa3P>~vK1){MWxzAVpTEbJ3M#LkR zuYXV0T~nGm9xZREX}mPQ14bFBex7?2|9c~3mi8lOWk~W#hn-o|BZbsCQ^*lfw;qoU z$1~jmh_8&8hqB2Pkj#M)*)Q|25Jfm_gg^FH(pY~V&XD$zc^n#rbp(YU1Iy=S382pP zCmgMI;%h;J8Xx49sqSdm&N!RDdH`qD{m1(3FtGP04jMcLmJ)Hj_5X+l!v-ndMPJE@ zFH|nXEV*hldwwDCLL+5rj|op8k=jS>Z0$8+Z`?JIL@ZS$yY{IRay@sP5nh>%%H)>j z_~8O!tt>r2TGl(x7m~hG$fDa%_DvPi`cPoxH^tB}!*)avasfOU*%zIujE~QmrVE8f z5MP#D!BXUs0pX_LMx(m|Y7tnf*!AOR92 zxI==wy9al7Dcm(Ug@xemQnu&9mqLwKBWi`FKpu|&hH1VQkkla1Ei zw^p8I{BY5KnX4HIH-{e((q-RJf zn?Fq1Wa$OF#)=hg(BPPyABN+Oq*Jog2I2;CXp9OS(TTC>`%S%J!+IGRgG<<5#pMR( zuj6E@ACVc$=u8VYGVjM+`MGgVNJPezzd1#?x0g$L>5tB^cZ?y~(7BQ9Ts)q{v2 z?dVvGMOy`wd6g?$ zV^?_x#iy<&Ju17HDoZEBkhV3x3-$?1w2M>nj@U%r98X~o3stP9G%lF&?d$NA$2r+t zFh%ZWfwPf6*^UY^kHv&C)Iin59wWAXy-~iEoDi%J6vIP$%_#SVGr;t?@9Y}JqOLnA zP*i;k=6+*O`Dg(V9}j=I*D){ugI#z)H3)~EeKMzdpQ=K!dVr2AZJh2=uTLJ0Bkj7N z=^$Lob0wADlI-fG-Uis7VDcr=4I^n2VK;Ue>hk}YU?($x>7*7ZI9S6uCF;T9x3OA{ z^(o&%fumnoxVTl|{UWB2KiRcAr${I5XHgBjJW}{joAzg{H{Ef=|>?fIH7T15;VDYS@^w>4(G2!Rz$1A z?O`q+?5*68bzp6&(llz#YuovFzj@e2>Fl-<4{_&CldvTu+{4++qm`A9)m=K?qN(Ri z$@$q`>rvw5SqPXYXtvvHVzQ@EwIl=@#AM2P`K>?g$(Sd(KwqvcY}^MrJ$ZZMPKk>c z)<9{J3cRA<>aLjKmhEy>E;pr+xY(1#Rq9Nw6Jnv2JKmhOsJjQQAbV+ATs-{(Pdgu7 zbM6?s=5Cai*sr8diiW6MuVgP_FwI#|NOCF1;Rl%j-ZR7Sykp6D1t&wb=s`F+pr^dG zx@i3T8^~Dvgb6g;kG@XEwMt!7QXl4VA{%Ce>;@g&Y0w{Tr4IYvpW&p<^jn-)nN&3F z?tsZefar)Ws~fV&wJ2S=k6H$?RMe!`-TZp_l(y5FCeQz9 z2%%DuMj~cxTq9&Oblo)h0U!L4asT1bwap4$-ef-h9TZo#$h!vP8cyQR?09=W8W`S* zGp3L6;sLmbii_dezHNYwgK*}}m zHW>+E1dL?^dt2Q)tvfSa*)G@YkQK|wZCa% z{aJZ3^&{YCqz0#1g}rURSEHd~t5hkmxPw;nhaau_uEK&%s1D(ZgxSlmMS2TP+%Sl) zmi*2sE)P~TA6o1DSQI ztv^rW@)c-;w*Ioiq}PqV=~#Wtl8O-Txs)mCKWzcg;J@|NR)}f;~ z`%%$I+)vpAK83G=bWO}$1uh5!q>tTSA3~l_-~2h%Q4$ytp0}GloL<06L!EqVng&*NYC@Jd}|Q@z@3v4)1Z1DKnOE zQuwskS@~$-Mldj!qE-XQf4V6Q-BfqdIt|bgLMfBY__3$)NrW=fyz>L_W*awAk1DSw z#iJK7xuTK*iGn__#b;rc4{-VGi$@CEpl8ClF&4pb-z7+lmPeeyl9ck^H8h{JcMD6D{EyD1_Dd88uaul16j)E@20FSq7 zeopk*1TtANWD`KwL@FfK|An-#wQVmV2a7Fg2Vsf#xVgl8z?bswNX6e$LBuk!Z+pA7 zU?3cg20qFIMW}ibid|Vc zH!OW~M_Jkt;`;%TQ{g^CBI(!a=_qYykcCj)Pff^jLf?n!_`^BwC@gRrSP8D<#>V0& zVxijXREu=z;_rEr4nUBaF~4NwS~xex7d@u{DA7ftdtB?+wBb7+>9r+f90KNMLN$17 zBBBPEhuzGYYu_=pj5?~!pU-?L9L>Y!@sJSfiC?{v)0U0Ke^!$ zgT})AX~_X|EN`%N5TRnsZv25NiFSt##NqfF3G}fb$KDD$sUiJD)bz6zX$6L)(f}#( z-88()KSd{{C~pog)NL^v^z($Rn4#q^IuAbf=fHnPJfI+Dc(gNXGe-1!)TSaIdi{~*g=W%QXn|Pd>p(OM51R`b1(x#++MZr z;2t>7HTA?fFUvRg!gKHqQ!5%|pEG?kz9g7s2@Pvi%&%?PI;(m6CIIwTYdZV?pfzpC zzlXq%TnO`@xR6pL;G87NdXD*j>P&;Z5CdOqU15ZH|I@3~iF~T@E~CU$BFNY?uGW{T zCohG53`^1?*P1tRD&Al0{=|gw;}O~jFG?Lxa0g>hs}&j7L5FZa(m4Q`henZ6Rug+d zk+y1aU=kEsTIh)J6D!!L9&M=cY>yaBZ)pi(@1`>1?~o2#^3~<5H|z6i%HqI#u=j5< zGfo75AehlRLHw{Gx?0DuCBybFb4CPK*l2@OOpR8l81H&__`-!5>*FGvN|lq>zP^8g z%-nHemeY>F1iT?y&|w@FoXHeNaTr5MG|_0bM^>y9BYYZHt9&lwuZSu}=O5!>ywj4V z`ItDRv#|fQC`eyn91uy%t5qD;{zR)?VKgNT(GS}`+nSmQ?4*U;+HKkpw~H607M+A9 zH6l&Y@4oiIc3v-Oh`~-Epsdw*@ByLAu;>?n-rXjJf8Yo;$-a|i2S+M8oW_d8vBO`J zr&uVKpx?%MScH3Y+Cc8NA`}i)Q#t$rRGJCC1jSbmYCpHvg`T+E+Ps?*&6dONW4b7y zATLN6z#=v)xyYOCpjCd<&62AWh>%-7iqR`-Z zFEUD@3LC;$kKWkBlqBOE5CJvULu-25U5H-RG?cP5Tq2v!kOr-W&Du1L%h3H!0$*D% zK!!C-|AabO9~9k%8-AtSf)`>2hkZ_b(zTZb^bvw1C3H+=`>NZz0(qxE9+_#Uy63|<;KzZ=-tX}&F*Dr zNl6I|DYlhirzcwq9)apkF73e|lTL+<;mi2r&AVsWsbs^poZX-GMv`;6qo$}@@MAl9 zx7>k=HE~w%F~2S9>|MN!f=1}b1J|Y7Vs1_zMES*3bkXJjbVK2AVG?6LWRt-do>8VJ`{%eh@n1S zL23bhI2>)UQm1O5gN7Jw;Zj6ZRBZKBE0OyvjsH`tJZRuc%G~PVPxh2k$1*vx<(ryf z$Ss%skMK!XTRZ?#l_z7%VNlDIki0UK0uPPx$J|E@w+QtsV*hI9RI*PJvp)EMva7hy*F6@ z1AHH+V|Q({$PG8jMFh?b?RNY!Hm~$b$BNI37;v^)S@6N8Tn|Si!Vm!-#ZY!!del!1 z+ZB$Lg=yu}FX$={MNdoPCC28e)$nTU>RqJ2shtY9vAm~C=1?h#i+jkP-^OL%T&j^^ z&Mtv0G7v72YxX&)5M&&YPxy0|Y8lmx1o;^Q6Ut8rnO!_Oe@7TG4uDM6nhf>{)qAjeqOat$$v?Y5;O}OUW*^LwF zI5+uv7xl-NQ`3DI56^D7zw#2bx{3ZIdr_iSH_qIk(Q4wZQRe0WJ=9&R)(@=a_uOVR zZfEY-;}tc%m|^TvQKgXN4wU%llx#T|0Iz?^t z*O!vsCQ+b>ul*9=c+%u_by4G=B;YEnhX_PQIlg{@u5xT<3YiPq2p3%hF6hg0k>o4W zz*w_|RKQmb+S?0NERL}b$irbV;wlD4>Cbhkz3@+-=S8*%C|P+k0v8f54Z{{W8C-EI zh%O%Yz1mQcS8`+5wQ#ZG zx1*)Gd#p5hQW{!}Odv#Oq5LB(^ao(pg0f0w)t4J0{uFjF)&1teh>Pt@sF}CO!R`Ik zp)IeM<8f*~oV~+}Of1d&x71_3(Bhm8w?c~+)Q*FtdvLng<{Y(`tmsVEc{Fg%3H{6t zCqKhnx~&(?W8JRR;&|Ho^Z*4&k*lf|c_6b**QTzAT>R~0Z@;1*WyB?iM*TSsy30=gv+u_W3LoMc(fvF%=05P+m#87h)3-7tbENAI)~@=i3zu*eq`2w zZYS}OH>-$={TaRmiGV*LJM^ZG3gc^M+Tlhn?LwQ#TE|(E0Q0EH&x%XSZL_CGDb2@psoFs(y0Q!G3A{Kp zCgah|u80t+`z|V#hpp9NG6gy2=0&L`LyE5!j9t%Mz`|U6lSgYZf1*F(=IbG2GXGor zt0?Ps&Y-abEE;|d>D$zaBF5u@>N+9CIKeH??|`^bs9bZD_je(@&cN97F$7SxgCiX? zZWj@kVM+5kbaZd=!tgQ0CC(=qfAFp=-p}wgx%RDZW0IT7U)eOhUazM;2g`Z%ZC^IE zrAs*P=<>_P^UC_yii`h9JR%TIQ~TK8;dpztVhqd;D-YDhmxegx6p!=S50;7iF;cVD z#y>h{a>=i48+fK7uVB>>L$z+oq;4UyeNhQVGgPp5nRhOLX&qMWVn6T?z^?)rB#B9v zlqy5aUdLLvG6_W*nH7Wi7(q4`bNTnF6#ysZZl5ZIRZihR5Bgwt?rbz$R02xBHzZ40 zc#6lj2m3+UQ4ThRV^uLQ$M|v$OAe6C1@-k`;@2#7nH1caZuzmnYF7ZEme|Z-|K492 z#@H@P)A5l~{^=rQR$nLNM36hVXj(DiyetulyCZ+E-wELd}MMH8mB zrgfpF9jGp;6F2z9)C!mX+b5~AjdS_(`Ml{uo zvUnP(s0$A8w`FfnSim9IpC-wQRT{V00N8fZ)d(i*tE|bJTnzVfgPk73Bv(>rPv}!6 z(g9g!g|oYxK>=}52DRUbMf$e0N-b6ChgrL3T-`0I2brp9nX6Ca*1o#8*k&-&5E`+W zS_2ELuPfaS2OOza@D=(`A9g_6Ds=jJIsdeY1b(dj3h^224QtFLMf!6tr}H&^0nJG= z0Z#Qvcu5~#*~^eZA34bV+oy8$v%sew^`4$8uD%390<^`xgTiH{7#=lj8=A3?%vM5( z%vN%td7(dD0uUnNz^8jiGH4U{_tYkb$aZ7lPWHWDcLh}H+Q#sdoU7eNw)?=g^QVjE zmDuT@^Y>SC5L67Ddv7e}RBmO3t(o{M2&Yu{VlL8qjuhMYoqiBM$Q_-Kwhh>rW|od# z<(p4O7P}7;CTb|t0^eixlW7J?kaQVrih(j9zv_alN`*FhdWcUy?>=!i7B&P#>mv> zFzK^VZv+wPH`0Sk|N4b%n!J{P53{?68vOXgp$?#L5d@E>lRtcyc!*o>+xorxHro~p zky?X!9In==;F#;}tB_P+KM^+uB2lm5Vs;lz4#zCbB}whD<+n5SQs8x{REgt>_z`V8 z?|rZoi02FhB-?81_ho0hIuHkPc4{?YDabo0^0Y3B?};m;f$%3&PF;3GevNAL^zqg= zK`~odTqrAgMmzcDYU<(1Q1R9 zd;~oF!*eg`3iMeZ0QHmt_0noiS`auz}Rp!eRD=|cSxv7 zp}gIU5vxXGqQV_%iV{58tr2>sTp^z;eW5}b&;C_e5yqFaFB@yE`TMhcyT z=iSp9Rd#9mM1S7YhF}E0H-k4gJD^y46Lr%!5!ka4K@8oREI%^8BjSTPXn0SY4C(=I zOjlVn>zye+xMQ4-eBgCPf@uav^oU0K;9)M_EsSHA4-3Wn%g#?^spVpRK)Kf@zn*Jg zL$a!OE^SjYuHRNoTw*re0xW2x-0W%y6_f?@-8P7><9Qlx*Qr!j@a7RQu9wXu6+%&r z?qk?+7MGRN$n+)jm3&|fB%INS@`{03OPJE76Iv~0!cUN`Ip3l!!#|!~5C(P2^L|=Y z3i$-cr^aq6diTkt!4`p=X#{RbPm1-aWU=bh>baR$Dr=RWpY2jR#~#aslTeCqs4{QB z4{F?>c?FXnk7Fql9PMjBrmsAc??G;CE8KK&+)q6Y`?272LOLfB9^)IxJnCZhPZJX`(Uensnp;g3EC8Xf^Dsgc@QyazYlfo1Uj7e z_YWoXDr7SLed_`fx58TX6!z}rvp@@yS~U;w-kVGwc%FPG5Y(9>^GQGo7O@fQ8=}a7 zVk)4tiuKKR)A{SZRWcl>F(GRr1@&RGQ)zh+-T+c0CWoKSJzVXx8h4J*$Zp ztAy(WUzr}j&~j_7nhOzz0R58jVe9T;Jk;?|XjYn~-ed$kYIObef4E)zBw)ZTMumu4jf zo5B%1@ZkuURQz)O_@e=uBC!^&ol$Pha+@%wJw{8TWZ-R`Vrxsa@@K5qIxoDq-Vbv} zILp8{oSDU?l(;6bHVjV=;~&6QtzyI0Q~YP6G(`;A4@>Ykn zUlhsWFM7tXao|}wLTmilJoS{}M`&n)Uwo+Qai==&eGqlm zI(w8DRR`W-sTH$ea2z0;px9|?u9AHN_91^y?| z3IzC#0AFyi&KX8uxrL)fBz~pJFE3nA7^II;9lQMve^i(?;o)M@0IWpb?3g;SCUjTh z??r~;k_aYvoxjQhkR-qV-7i&2`-Tc;g~Yp>g_=5krpIKtu&YEQh=Q%kTW>Q?@9GRbN1-tO{pJ_b@sd zJduw;T*pSK%Qg76Nf2*GQTfgC|Fqfs`4zAS!v?YG-tPX-DA)ak`2*C!MCaB<-=m5b zoVUE~Nk`my+o;P6CwP!pbQnuG%YOA$^8kmeT8~t0*WF`E(9@T6yAXYqu2)UGs8raB zI<8DQPW!50=WV946T;F7`(f&D7#4(CK=Hd3UM^Rt@f7fZ&D&x{FExrt=ENU(EjPey z@q(^%x+bi}*oqVWotp=mq*OV7z~P;pLr%C_48yyHYXQbWd9`y-IfPa$3JZ_u*Rw6m(N-L-z-S~*pH=LZ#JYn zK&IB`JyZ_Aj!&^^dX31PW{V|^N=jEq^qa@2#8eB89r0x`RCE$G+L{0wWzX7cjT3h; zTAy>OZ3e8~>Y>;<9sGb+HbnKocOveZbGxR4Umf4;A#Ft$!lF;{o&6@`oy2#_3ZcEe z>@BiLBvb2_9Wx@|ARJAOkjaQcT*x>wWC#2VYEpJXeOUGLC#`fnX>G%ZwSGAB> zNb`Na9M#rN<}ry4*T?p_HH+9~hhif@dbo<&+*C1MaTJ$5H5^)OuM~z?5PU^~uiO{s zt1y0ZvuUXs+F61ls?-CICvNL#GKmK#WoV9N!t>5CrQLbFNLP!*-;m6NN2h_ zYmsG+_1Gcp_d@YSX~@Z%k%Q;)0%E?&KmjLvxLX*lNt2qhXQ$o`^lG5NC|7ombp`3t>MH*v_2~$ zbQEUoofH34N%!gXjH9{dd=oj!fuk`|UKfZh zO5YmeY`_qqFXE!s(Zv z+je;q9kmux`@*e=NsrW;rShbN#NeO!yU0^pa@=Z&O1ovW!0GJ?{I_o#RI)!yk{k?Mdgb>8m-f!S@HTGSn z)V>g`O!{5X?Itnx@MFzwV- zmHS54u3ttVzJC*VV--tZRRdKVUTzInCNku}fq55RUEhS5!qmh^{+BbM(lY7Rq47S1 zPujN9w@l`Oc^g9Xm}rKrsq+Ut+PeN_jPbIen zZTCOzb&tnvHHR%kgy2f@UG?VeMoDVEpn?ScyH(DZj=%WdS0=|W z;px9&)phfSbwp$8q2F}V`G9p6bw7W&6yk}mAVF^Xnq6w!$P@D6M>jh17Ya)K{d=l^ z2CuB%?8Dy~-)|=SBV#UZ1mI3L}zb!qun|H`E8;osuIY2#Ja2%_%+HBBPTd| zDnVDJ@P)SS;&Q00{pXWsPf{YFxP6LpcV#7T=04$gYFKKHOY62zcOd#`0olR)4G__$ zSlZvWp$>vi8&&8a)>@%XZ(3SehyFZJ=pcSkgxZ|VIISxVr|6Tw&;7JPzs4R0?bG+6 z8{yTm5_R33r_JO6I%qeddTQmgSiww*P4Phe%W!lMbD}|l00J+c8PeP$R+ z;*7LAbkL_xwn``hXg=XeV($S`WNTARsqTfHP#uDfvqxI-_nCa63eyN}Yx_nPvsGyr zI8fY&-Z*lT5HC4Hf?&a|886k?SQ+U1K2}n-?Pdh1#N~GwW)eanL6-}b=>%cRX7x{& zj${vHrd_pad#D@DKQWZs>{rWDQqTByMb(3s<}HdolhQ)e*X{^$?s-2-go$pPvI}~k zcw-m6Joo=BlZ|Y{bTVkn*$Z!4cwU>3J0Jjk179JOW+DY2FRa-SXivs&2>D(q-U3IL zM(#kGmq)u7>9C5@-)=0FjU*+rWz+lxbqhvf&ri2axfg(N7yt74qN>dNbE5FHM70S@ zw@OGLLZNJJF;jqXUUnDFPQVq~^LZssm(RqIwkEtnZS@Is6La*$UfW&w%*nt%yF{pZ zbXC-0tmSrf5AP?9KT;stEU+P7JNK@vye{{SSrQb(I|LV>-_Ju&cp1?_I|QRe5mq{m zkC`n8=|k5EUU1zL@bw5OdqgtiO&;dEm~qP>Rhfj!=MUlj zG=6nRYW|TAPwPX6tXAxFrS%J2cDuh7y)0**7!$G1W}CYF^~Ho7$QUwysd82{?=O_i z10Tx@ARH*mi!nh;wJ6qe4Imqa(5PW==2&<0><9}9MV{>P> zju|&jG(e!+Yx3Ik6!fxM@Hi>szjM&lV5A?OGaeX}koxeIkuigNc0-*|w&}gfr#&RqqH?RYmGWfEw_DhX zK#_rAgPFt)pK^GqJx>Jv7iI&tma_mLrwLnam4@fKcUyFYy|CTk2lch=p*~A94`ewY z?KV~`Y&YFpXi=0U^|G!cyrQc;M9C%nRg#3I3+dp}>{H7_ zb^%1bD7c(nwm?%4mb>+}QumGx59Lg!GsR(om6J97-t(k~YM!(9Ywul0MqwLrlcvtX5`PC;8YjUgPKZdsCo7 z=b-BwUp@ronK+B`g}mge?-?*<%mOnn!+(kc!#mFD7TOpqgH`@U8d&Tf3%3LuCD##4 z$sPMQ+CX5LCEIBEbN;E5;@Aq`1pMLKawSf72I*0pzVEB$02*0FJk^;uo*RZOqo zJ8#CcF8IJbaX5>9H#X!$$;m(6as)MO&lH*Z<@_uvA5TKhF5-^kIOc~kfO1zY1>#wp z{dGc421I4N`Cu3enPL?ciOcrNj*eq9_$MY@QV6;48f!WWf~a$YLFaGCl!I$35t*$ zQ~nX%HNW%CWH^v_L5dm9R-ZF)vfjXu{lC}(^G6c^biK7>;K>D*hP<(}_;<<4oj+SR zRn`ogX7Q@C`#S?5KQ4b>0YuFOKXmm)ec*kbg~&9RlzG-e7ad2inM;b})y(n{Fz!h+$TB zo|EBE8PoU0?Ig2Ici1`H*%Ik4*8+yC{3g(CTntnQGUs4tdD}t{w|~1YsQQD6gUy-p zbr7&h;<%0F$+fl)h>~v^h@JJ3^strfsOwk4vCFWNKN<9taWG=JrglC5p|Q)3VzQ32 zH4UlR&Ea)#CE$LKSYK<_vt9S6{0aS2x1bFXwSzAHB;}NhY8ZZsQXDi`g2wtujlLf! zgp$k`EQ;70?bPAAbdz6u8%#`NUFzx*KM@3-3SRsEA?$-uve|@3su?UwY zy_Y6&OI`!x7(>@1W04qh&x34fi|FLClLvbA8(5r@NjI*2sCLH_k0@)nYo+pUEXYt_HFWC(KI>?BCr0Eeg@|+UhWzgyw_ogf0e0aq=V>opf!2HOTiw z#DVtmZ*^!wKUxx*=nRS{q5T}@85%sfs^V=L5;m2x&cD)J3Qc~B+HuNNUIQRH$!55= zX|3Uj8uOSD4&6|-R8^8&nv>n3{gT0{yf_`IK3kiDsAfW!?1ER*$d_+X{!139J?^%q z5a*jvv`uK+lc7rvcXQ$WwB+?7{K!>IS2~@}$N!D)a_lV%s_9kqvAp$SuKHqDR`_)qUT)a~%N8^#@uDJ(n0q6W| z=>d@hD)oBupoWmlA^UN`$4lF@y~vFlIL%O`jo6Rg;}2pbYf5L~A736mQt!8NS~Txh zOL_S|8|EYlOglZ9NOXlZtGYed9Kz#x->u`zDN*U^H%hl&3MJL-h&W^+<(7GUZhh~6 zpljt!sT;_@yuja}3u91hd}$y_8NW1VJ<`R%tXc!BN{ehVl_6n{5aB0Ocm%5`$~Q>~ zE##y=bsamnTF=w4zoN|JMOQY*vuN^K;j4~ToK>w=N?MQNR>VTZZ=o&$&_!2H&x+*p zhtb)piz)lbAh6jz4PlIksH@Ui;D71@HGk-kvT`Vor%%sA+Dv|KdtSC^ zYk%A)V~#i=_0q74rOdi0UIx>|JFlp6MoOu%;fS+x#$toPtMlp2XNb+ev0Ides97ZT zB%Jh)9ytpzL4UdjSP z>xJ@yVz8_5o#H+ZJYA4GMxgbkf2JbvM48ISc?+JltPPGbT_TR<_^KHW%V6qMH@KO~Vt$m}8+_7_!xu*&J>vo^XQYB!!oy{=cHb{FH(F0TA1A(iW{vjiI zTa4TOJIzcqE;L)(IB^OD9~ z>SU9lqKJ*3zkUbAb5C2gIx-I^gHU||YD_wVy%$c9O?xYz>b6sA@oB}qeLPCzKsX_q zj+~PEY7s`$ovb_!M`e5TK2b@p@pRMd5Ph%t?x;w*#DFnQzY8|>3qfzJL$nH^oOkjR zqD}2(ajeAt>A^qVUyPD@D>G#d9Wlg?XKqXQf>UhzVnJdX8BFBNs1+#7#sBF55mJp+Yw;?Phsn1IbevqeAZ9xzdHoa`H23Qs{K!Upu%w8 zaGiWJe#u%_{X6qsMIHNAYiN#@2a1;&Knsu66_=+68L7{%qxkKsA;RGlD>e2$h9~gV_-~55__%pcrf*gdQ zKb=M!8)vm>xgX^|zlT9KWFu|0DjwEB6Z1!+9o@*W-(zGn^R!=!JgN-TNT%i371*_A z$<_8&7iP18XfzN$W}q=;RSZZ8=D;C+6;>Ms`e%kTxjB6hLF&~`+LMe~hPF9US5~`? z!NACGo03ll3`d`>);95(bknm0x}u)0I^F{*oA$}LlK7XQPwt?_jg)Ria zK3B49Dp!&~{%)0mj5PW3jf??EcXNPHopX#u%;xs8(;urog~u zR^VY~tN<%cOB^w!Dbj0+Hs^U?_jM<-Ts7bQ{_(7^>l;5r7N z%zL2X4-ne$6}p?h{K+7igiWH?v!xqBrZUfCyP;!kNFJ3XiT#C5m{P*SqU8Wtxf*}m zAux`()?D3M2l-u}#?(ph~}qSSD6ppv_r z(v>E1H`FTnK5P&p%^R%iN*)DVaH*yXw!@Pao)w3R7y^}c)0q%VOg|B#rEAtk9>n#2D6gr2cQ_W!9J>Ff6j*6UM|GHP!wc&vF z5s~r-3Z|>jEh)Ckx`V+sG+E-e&{L9){;cg2K8841K-UgnW&@A>n8RTve#9-#HIi>^HGZjx;FEPIk;G znwi@f>u6|LFz?rX{+1qLENvH!7dxkt*LxA#(-Kr)y+mSN66=&1lYG$yDo& zm{|WDAIU!`K>J@+)+az5jgsDN*)7MzD~|+}R8DqZtEtDRIbFz@n`gkfMJjZ-jGq+k zen-z>&4V};xVl1?o~B-}pn?g_`r4aO!}uf>K6Rf_Bc$jE=<@ww9@2*rxf-elN9hk8 z@7o2|!Fd$z-VQZD#zDL>fk>{!#q#NBfg2(I&g;s`_C){}Qk$R{ba?CR;*rc?JfdYe zy%yWSGm>8*PSHjLt%vI@_DwWfgAQ*xO|t+PI&JX=BdHxFzQa0{tkSMVqxQST@d_r+ zTTZj|oDexA`Wp3$hf#UAa^4@>Ew7!Eo-6m*?`dEgF?i_ql>TC6|HHwR(_ykE`K{Uk zxSKMzzEw^2Px{Y>)N{_D6o`eVeHaR$D%tS$A*&?S+~c>DejX4uLyYppX5mRjY$%<_ z(JH5G42HBj8_e+@f{b~{0Oz0`Wd-92+PV3e5;&Su@m>)=@npqEiN?wVkBS**@wQM7 zR8`sq?Bsd!w6LYDJ`e0vVsiDtpY*_yjS&W;vgWqP-zgSsVE0mq8HpzcmP2qZa>rgJ8#~6l6*&GsJCwc$jK=G4@H89RW)fsGdiQ`#wVYsbUwl3bsDTsi3@bHm z@S@|E7iXAEF^8F+@mu;43wo0hZudfy_niEVCWB3a(6pD(2Pe*nl=o^MKfBLQt*;<;G5A|bPsv%yl zR01Qu4bClpVVV;5DZ5$|FCZNVEnLb2uO)eSvN5A-z8X9muCZ{lGdA9{gQ#ADr9maj zH$9j?{VTC+a=eQfgS8T0^huxBLb|z}EY4VbPDuyH4MV`?gSEmkL&HJrFv8*22!6wr z`4a}~jwW;qkuGO-CD>Q*9MUI#tzMWff?ORS>bZeV#S42oyQL>#*@cz`;e3S{$N!=d zywYc;WFqJgnjsZS(zOEHB6q&O*QEd1nk&cd87QiUH#z20S!gyQ3M(O-BkfOVt)MSA z4#n`4C-$9luZOwb0s#BYB=rrnLGTvhRv+djU*JXQV-I7gHG_k3v_sTWZ;zD97`062%MJr7soBHT;oKVVae#B?x+P6v z1nKaWX@u$&i1ar$K_5^&-?i7thr7wdoqt6u! zhsTL_NAN_&MxBgs*rck?a|0t~1vr;UB-PvKfcpfK-`LbuEfq(dty0guEZ7lNz{Gvo zOcAt{Ix$@r4iSDY=hVAT@U5~iNvdd;^nNh=>g#uA!?)-Cvkp}(ujtZOKcu?i^gcN} z)J{U3bLHpt6ijch#mmaz8p|PB3q*h`Qd1K* zhi9LFzl88WETfhOo1EQ>CpY;9UXY%7=K2zs{;MIfS`azE9m~+riWrAB(6EkAr+-X_ zvPTg|H`f|$3~Y1QqZk;uRbEacc$53<@-)~P)tU`Caz%x8N^F$cOgC3VL@aNHu$*`j zRm`P{G6i3fhB(gT>R>^7>C-IYaU88Kp}j7Ifr*1BC1brlhL{b+CN~lBSJBID5Pr%e z91apbp>y>GJ~dpj3|O%pGRxFVr`Q+jn-)2iM^R)!C9tYbl+i zwbMU1GlIfiUrPXNGRr;<7z6h}J{eKL3a|t1{l%%lqGF;|e5!0!J&gR)IFs&C15?ra ziZvK^NYkaEImsXqra0#1(V3b^(;exqX<}$4Nr_1JYIo10)ZEO;FsHuX7p8T%qE|{O zH$%LBLfqsGEJ=#iTU$2u3X_DM!+ZPn#G>G!InaGxUmZRVZx_ilHtj&VYjfXu_AJH% zsif)D+8CD6EEG)G(d>FfeCwVMDm2r(S#<X`s;M*}s;W-WK-Y)Yxj}iZs^vwg<>m zhtnWMA^1|;$yxh`D;hbvd$e*VnAS(7(}%HOEsRxqxVyW% zySuwPA)F##ch5{u&&)piti8_ulf_!8qN;eS;H|r!=e{05rXfl6T&+&&9}#NI-x1#sz+_1r4e1r$!VWY zm~ypPs2xCQ6Dk^;qG&Z@2pCX{pXy>SEA=l=LfPa)o2@OD6qGvMjU=~j?jJJ&Eu3b` z4e_HYWmOMN9Veb0_eDZcQ$eYI_>4J~>Bt<4 ztle9^FyNMSjZfo?s`DL_PcxdcAkYis=ntW13(J885|#&cc)NV54j+`AeSZEPv1SZa z^YWogQoFfc<+$aokEGa#h~`&g`ixJirU)JQZpgY3 z9(o5!Hmu9HV6CFPUzbl;%&v8!b2n*L#wFt&9bbnSltWHEcR5x^eljmc)VDG+)!C9T z{a@jN(a!%47Zjz(vezkf`zKrwcm{wAy8JKUf+2XiPz9b*I5h0^QgS5i?+xy^Up5-b z5B#D!`>tRw4rTmP@X~I9`m;YFc9})J)$qALB!pA7=`s`r`;Vw_=BT-`(Wlv1fJ0(a zhHHozHt1=H{&7-YemDYO?=}eBQibao4kW%0c{yAAe+~&t7wQy1aV+jWt^R!jEdtv* zWyNHC$*!onn1cah+%P=|s=O*ySc!01Y&}K2>GIx?@=|91*r#E27#Z&XdbJY~P(2X9 zTjJymK^EIMJc$SZTW6VOtIkVq4(SD>Jp)x*h?1o!u@8&^l69?zQ#LaqzVaS?4wxK5 zQ~nshl1tF0O84&o%*c6`u$#5JyLfb58jl(+Y<=Y;E@QJR=btNeWmNItn$w+1vvly! zf4kLex7TXwu_~5=*6Q$}f1t|${&m<@M#$ZsnxrGnqkImg zQh`M&5&dfH+rqEC{M{(l=*dFBKnb@8yXhO4!Y6v(fjhvIof;pvxB1zQ)1{E6ZeDp6 zh^Jj@0<}Nw%nZja2xt<67JSp9;vm#Hak#%dHY| z?{@!-Cxl&_7WXd)zT|{M;~M%?6tS}hbJSwu5vdq@BJ8KiWb07ZToDcr3K+Y5E%ra(24*4+ zFKtU{5GeD6r`zKT8fTkwH#}mK%9}EoInoDGCK#uC7zTGUg^H`$+j`UYj-;@$N?G9k zb>3#Wt5T2;b*SiM;y2s{c1j(t7+TQKeGQmYbo5ja^BdVbDcB0c6E@CJJP988da6xz ze6+Apo&_T0%LmQkOW|HcQT11n6p!fZPrKVNosWP>h$6vyRc1$5KSR1vsLTJ^_R~1N z!OvgS8%PO4vr;6{tcncu^wouEn=Dp_@(2Eq41kYkrL-qF8E(~d(n|9kGS8aQNUKO} zYYEZr|2pY4nq13ehEg*j`MRk@;uBi=L(P7H$dPfmVOZxa{6P0a|c;yfSmI zO@bUHx!>9?TYK1byGE8+pXHNrGMikLpsXImm*;de!*!}6n(gs;d@#Sg^xo2ErU%en4HFPsh~ ztJ!a?d+G|C%lBimqowDG#)VlVFRK|^!xpQRfHPUs38hP(0qAlE>0$*(>H6Kfv*IBR zKpkd-h%)_#7S2#K$+1|S3gtq0dD>^xU6QvZ=ws+)#dwsq5r0?7*c;w8VehwQQY6t} zkI^j{Y<^4cO(c5nQ6?zKm zMum_O@(=YOZY)Z$+}O}fs!fS^#&=?vs!R=K3TV`^rl9LF7dq3ehNGFvoPg4E%zBh# z6=eXY{*F_;D^wIKOWy>R$Ej=np$d8d(}5{7;>ozZe*|(XGEQS;+`Ya0O&rUphp#QV zu4J_a!!q3>JL_`|lCOGO6*Q=Zv?J@3aq!Ep-KBsy1~fdd{!8_UU?f?k?BfPLuCqzH zJ5>o;UeN2ItDshA=Ui#lpVFM!-H}4vjF7m}ym^e}L>-M`E|~dix(7G`uDtGqdVQS>Q5b;E$(^@e4k=V0GG_xeBZ5NB4SzyM9p^MIr10) zqt|pqZI#2=C~e;LB!rr~@QO5)MLu1tQf*;l$6aN81<@7gcmrGfQFC5hs>%eYIi~{Q zL$L+?&0Nm^q%CS};=CJhASn2TJTw-?|2SOEY=NV!;TC~8yqe3Tve0e~b$moTni_e7;qj=~R_;H(iU!Jn($XkNp@5z><84 zQozK6F4Gq~V+anx9j)FLe=X9oWv<-rGVjt5eM;T$S%+ca)obOW>a7B8?Pr8QU~PDE z;C&jJ9c|~XH+r2eVPPz^!%IWRYykLWc}hi4F=qh3tc~jjernn5?n|wn$ywb#q#e5s z3DPZa0QKGuiT^eQPS#mFK4P#piP6nun zCB{NW>*2n^FLIv6Us#4@a$ $4u`L1ia2VSw?bq=BX7K`vNHa!RV_%OYtq?!}X` zdTt^|;808?L>HeYo#1SeHw%-*fvX58E0qS_FCGi&hJn0M9H#>cZJraPwm%39KNP~g zA#*XdYcld+Lr2B*wGSfy1fPD?xYGbNri7|x^}M(m&A zdk~i>sp_lkKlFHon-}!b)2g?qL(g)W2}$uZ1PMsk2?R}hoxxhuaw`^L`_78w0SV$~qYe*KO!NzHMI*m`GiN7kUq^|P0y97a3U(?>?Y)wWdlT5qr1Vjj131>r- zVGH}altd(*&v|*T0=XG2mQ)#a=d$KoP+tm?^d&CJn>S1_d;Lx&Pribi?F`6_`JNxc z8+I&STPYY)pUD(#D0&RfP>TVUJ_9|=l%&me>PPRGgv@j@dW7_)(=Ka3?EPo8Ur_^V zv*b=jP|#P)gVUWY6DayWE6XbOLKlQ|g##u)ewy;Qus96Cdkm2ZSRw2)NH!;VmnWhq zKzd(4`Vm3sJ;wgBolVMop@FSY{=PA$hw)2M9!J%f`*$q@10R`1PCUXkv+el0$+CGn zmZ2Ilkjgvd0Zz*d0vhT^3HiPBuD9Ds8%Hkke zo+K(h4?4(2SXz7)i)7i%Bil))U=@D;C$ll6;EGLTaEKoECv5>DdwPBBaB^9lss1GC zc^+Ks(Q1usAGnrQ^uflc#}KO_?*)}Tal{RC)NIU<=1aG875^>snLVV&cq?LVZcT2ID)IM)hbskRD)DbL8w>*O5W}g)@=yA zh2c-HlkA`IItjflM`nS9nyzn7ThB#Y| zQ%@feN4V{NZ;c84sWQVpICCh@gs_Dw<2NJ<)D8HS_3z(&&q&Bm|Ajw@A3kKF0;uI_ zN2$BhQ`M(3I*0afy6lXB}8Ery!T$q>vgbitv}&8+56-nM@?ui<#f{%r1R{f_TWxqs}@Lne98B;=i) zfi$0@b7JubDDUAPyYA)d$b|RJbqBYRC)a$=oolyNPoTs^w*o5N3YKgMqbByUarD)C zsZP08Bm@nX&b`+_7{8{H*odN5!I$XFJIX(h4eS1-YhtBU?9F1NLwO#eHpUsyAFQc7 zchic*RKWypTQd@VHAV`d9IhV^{;k(x_t~L&R0=IW>*EJsejdh>lvB1Gs+gRu=28ru zT&mkm#riFIP;?){y&-wTBm)7?Mu?bHNB>zIzhEy1{WV~`FgT`t2|rN&D=j6nmEJUi zQwzP!(v$W&P94+!>F&U-@;l=gRuqD%3nl&qAc!0lYF+j3-OYh_4dQp7zqq)40f3!& zEla0zwsFr)A<{_hJMG}*Ke;nlqm)HLMr1LQWypF-@xKE$E&aqu^_LVFN6Nf0^AmY+ zFcL}~&mN60oY(mF4I$0|F6Zeo1RGn&Yl2ib$qUmN`KBQ=+hjC7AO_R~yeR6FIBr!6 z5i>iF+rY~WCG6>tr?QiHm|Nu6sWyL|F9|Os!Ka)nR7bzgr@UX!WKoHc$};%Mt^tJN z95So~=C{Bafp{ICvx%BQELF-LAdDmf+RgphMs7m#?_8OtfIb5QF1mMjVPga5Tr-5z zCIWSQdf=I#SHbBPVM0{AMg{iF3e0wplzZ`A4Zp!=*KbQ#@PU!;-hLT_wLoNs@Q|gdNZ*s&}m%ZWnAcmSz5vW z%2zTrbfy>pEF2MG$?4c)--l`8LAhWE`NPyIlTdeoQktH5FKM1qKaO%Ft<;*7;d9aym(cf~Zj4W2GXA6r7%9UzG9>P*{BS z2PkaK&5aSN&@|x@T_&J9l}sop^_aOMtzYyfWmF4g^Zgr7_>QTM$trBZ`{pMN$RfPR z^yh>nRD!qlqUfEUvKyhZN(|FMVdJVP27oxA%+*pj*4?O>4H$YH0dEFW`s{29xYQAr zENKp96|uzJbWFqj zKB~qOLY%FqQGlXKxPB72lszNUCB-OLA}rvzJ_~phRGgh>w{y?|iZb{wGE&bsWIy(6 zyE8CeN9~_4+KaGT++DEM6-MlxX*V}YjU=AFS8a5PTia^+L?+2gmw0-=o(VTPzC2k4 zM^I95IY_b0tL7_;9iQIT4x&CIL}_7tg?L-}d6jt0gzxOxZrzo6;T8XW1Ez{uYS}E8 z(Z2ul{}@h4jARM0D05_Ebd`{5IfcBtGYo(<4_0NDb3?RDot37jxJ!{T$(Y0=;ZLfO z%%uE~=tI7xT*%5k#VU?)NmDr7&&bxGmufL^VSwso=nPJhdwoFch5L^Kdm$wP8`_Zt=9(3=!ypaDv^l>C2*N5O)qt=9r% z%Dp{oY@BRm6;yBV+2s6gMV8dXpptRkQ*|aiVk%?>$#Cw9$tYiUn)F{4l#Vv$1p&AG zwJb^mYndVhqgHp8&UrBk1q|uc#^wvRCKxV2TL70Zg_Ncnh@;0n*Mz0#|LV>4Kz3R`h-#0J>F1kQ3ofk7kCepf_zlDyU0VQ9^sT)rHmykHLggzFDk7J!dOTLgu-ipoOPU~U_cj>v~g+`WF{_{SqzEzsRw=3-1ONqBs zt1Zr`mnNSk*zChf$gevVHSw{0ru;QBzgQK+NLpN0GPAv?e9Piw7i-V}C4f3(62dcWAa>Cowucf7kxRcYej zIFT=b{C(85f|)L9b(n^#9!;2Ff?#?bj!p4cN@@&;#qP2Y(c-gRXfA{9fp;8t)Kti^Yg3r_q+2; zdGM97L3{#Mn}_H)R2FWoqFP-MSVIhlx^wnnrQAdAxGbKN*Eal}Y(D zb=J}OZmYq&^E#2am|$qMs1{At7d9V*hA8w%e6mc(a0|ag0j=A>6svYY-&DL1Q1;o~ zLPTW^@1%|XVHAG;Fba8m#C3^q%COwWNCynj#}6LoAITyRUJIDyjq_`MSbioMqa3bJ zg3?u`(kOy$wIBNZ6$R_7NtqItSJl(@6g3&{SRfLNM@6^wvDF2TxO@*(La${`4u)^$ zky7grG9Ql05^=-V%X&%(kR`eOu~SaU)cz1N8PrJ|e-3CCfMGmdD>m6ne_J!^gu9cW%0=Yrj)4bXmIx|KbQw zMtXz9On36y8(7{zV0(pk+wJY_oohTao%eq)51P8j%`^xkotR@o0+`!fLD$^c?~0J< zd`X#5=ns2nJ68xnb$W z5+FC^wg!jfApcKR;r9=#5V&6lknFjjPgVkX+WIu;B@fvt36vM=s27r?p0BJmWV%p5 zo8IQwZ0~IBVCWr%WQP8eRp{HqtnWafdSDLjugSzf9iAJ?CEd=47zvL&7N|jh0?n*m zoegR}P-SRB?40vO0ZpaO1tWZ&O0}+_BT2OR>vlJlOEdK>6D*L2eOZTBS!Y1)@b<*^ z{+L9!%2(VrEL-iLGIaC#%lm1!AKfzJuU`0*kFIc~)ESniQAX8R6iJ>-fgWMjS~!2f zg(_+jbmU@(2ER&v4}7nKtx(2a#gNe%$;%G)b@VpQclz9j4-%+b&kLZ`BzXfS^_3ke z&wiUkORaM7w4$|otY6xC0zA#Ed<im-n?7GJci_Ed~X9B_%*Im0J*uU;L?AzYnO6}4o@TK$J7Mq(_62Pl=ro|~FQ8Zq7aDBU)6C||;XZ9&Oz0H)vkj@C+U zQi^#SdA5~AbcC5;Zff(*an;K_K$=oCp8T!@UYHUKWtV+KTkt>Pg+*h&sh@j2U(!xI zG}==qf0i;3)V;%8sxx({kgfg)xNzlqyKlLacGF6gzoEFJr$WKmJ;f1D)^jT$676bY zF=M-n<^wP+cwIVPpJO*p)}!SA3TW!*x4(*0{<~m^OkGT+n)BdN#pitCmc!ILq07w> zcn;0qWl^`r&p03o;0u>(Sf{nf+y$S+h3D*)zkMNdkUYeNvr+07w+(8K`)C(W1_z;M z=nSZas71EhTh({!p1!C^N&F>)^ODdF@%tjkGMp2xwOy7sLh|1 zydVAw{G1GtAM3XWag|iI4Gd$kR z9=*Kih|(i-rUcnp09&rgIQcDl=}lJno)sqeH8=>-n5c`k)-dpm)v-*hqR4hYeMp84 zNm8Db>}b8n2jf4`ksNK}!hQyaKL8lQC9EI3^u*54*G&r6Nc^S$wg_LtTr`jcAo{gaX6w) zVAI&J9Z8K^|K=IS0X)N9A>M1abM5t{sIi$0mn!3HeU=w!@{1x2f+K`fezXAv+K9Uk z(J)fmD2RULR!wjJv>h}W0dbnGrAva!Lg6_jV&!+I_uGqR6h3?Se@_~gwBZ1H0H~9= zL!JFzTPcj=OUIed8VHa*A7%KKOvsSM~~EW zgsOYQgeG#CyF%NN=6YW0@IMVrPcT(CETuzOsneP2=lmRUg6BEsN{?3*WjCR#`p>E% zB?Vk*&G{EzQ&}8wY+Sf_gb7nRfi*6zyC^);FU$6MCmtiVPWe#$dl%t7(V1kK^?dwx zJspyt$Twgn6J+KV%Ndxcpte}h^;GwFQ zj3`G$mc3&nhQT>&slf0Q=G#CRQ|1^b9!x>9V_$K$G^VekPb$9Nok5^bwAQO4#5)cb zi8`1q`EvrUtTV|3uCTOP;&_#Dwl{JRV0^X#+ANeSTP;Ojtp}ZcsD-Rb+*XM#?ND4i zyuHF_I12b{tpxVgc4m!xMo92leb8gf5BJgR{{R~13p3sG(vD!j!qSmn829PXgr+Es ze29izltzT}pC*9wL`eJFIp4H5DEsEnB9@WRG~mjP(vfc3$49E$mwu^Pxl9G(C#zDA z-^60@_B5a2uyjV!1P3RZahe|8vkn%CpvraR_`q>l(ns3j+b(mH2mh_(4P0EihCf{` z>EL&*i+ylo|0jHU>GkQ7GwL!er`zEZ(|ZZ;twpM=2D0R^fN&dcA4Y9+I@Sc^7`ZM> zTbjjU&B&;a#F5jMN6g7sq43vD^@^hKg%0UOz{d911tl*JG%U(ux5feTkyxAZI3A=e z2wRPRp&Wh(&yR;*hG4y$JFs%Nyq=nXf`KiFhbS%7L>4E*5m#H$t#;67B%)f)*y412 zt-~liU$V2dy>~BJjDgBb?x_q&3pMs_Zf%Wu0M>ef|;2UAv>RW0pI-coBYoh1*yyM{$aG zRnl&@!bn<;j)_mpZz+%vA1V(DplX9Gzlo?(?W4ESmr}}Pj7Jlw^c^RNjIQ+|CgPo< z{FDmUU$j!}nWKAq#&ik2W`FE6xh)$}w3)~p{|2=iHfXc9N)3_a1T(0B*d{DISEuiS z+|c+vk=%Ta{Jls>U~l=p{!riGOx#E|L;+7Mrki$A7bl{oiM>@x*@y9(hnGIieVjPD z;>=&?400?GGZmm4lA9B8}EkhMuVXvNCD*JP{o(*0(~QW3^23c8}PYg45+$ zP}C$p;{+2=ipdldCNjwv5y>A`#7uW5?I~#y2XPyIJCYiQY?IHFP+{R{{)io8t9JP> z(^H2kUk77ju?ByMs>5)8N&}Vu9L0Gqc@(8W4I$Z`R>nlk;}`;rYM9I-c<8MJEhHA~ zeAT{!`ESL233~z13Xhi5UK3O(w)dg11x#{$t5tF0uw-pk<(x!cGhayMbYyt=X>==Z z%u)nm=|zz?bJA+KjkkMDrJBh0!dgnjviFwL&58MN1nq4#U=Wn*Dbfvzh~{+!=@fpD zxzH6;G?DgEgypgnRbj;Z4xO4pJxq}S^tZdWcw|gl()raf!J1V6{NJz*9j5-*ZNn5* z+{`6%l_O4x^iePt=d;Bv?L#&71)86DdPFG=XaXg~?bxQ4!57#;22j_9a$^{^%|}%PlYiq4 z6T!pUzr|RCgAcQuZKPKIXWX#+)->cWC;@g!yiVGQG#7J$k}v(E#OcOAR7Vtxs?E$+ zh@vaFTPqYMD4bP+2ZDll^3$ZSZ~?7Xnbw|P;yag@x-?l+MA)`6W>hYQ{934gB>d=* zSb8SE-uQV*XR=!+MM6s75vn+~z&8LinkG)3GUOR!Z(9IqH$wwDU}b!J0}VbC27Q33~)dhEfgVwn-B=0vSkhWpBuvk01e19R)ieKQ|6VWn9HZZ4OuX(Jf zyh`+A<9zP7;H7c&!>nT3C8QW+Wu}H8L(ihK+JA!@nhX35HQWo=xA8f4wKfVmZtpS* zT9%o2RGePT|L;`8RKUBM(&53>_KnQ6Szpp{namaa29LNw+o4MGU|Pnu87ImWwviy6 z>Q_lenNk$jL|67@Y$CY@3R#i4^NHZ$`nGaOnXx z1LfDHErObE5GYE7#1J2^G{-6t800aG4t9`X&R%h{Cq*_gi;}VQqg-oaxn(G{srG!f zGm9dlfuMt@!}KmIa0Bc>&y-8!@2fd{j6X0yi`>siIDu%=aEX)}787)ie4QmFHxCDI zjZ1x*dfBM=#_I8MABp@|YnIbvqOsxrug zp#lrVM>{+8uFh8g`a4HTmPwAr7p~I_IaA&5ec>UME^;60ar=GM7ropg+P-Q!nbvhq z^l)EA&HyFIG5d;u$sU2YUs^E*aT;1y@x>qHJ%6UZ48-Alfop$gnM)fk+J*S-fWXhf zSV1?2TuNq+vOPqs(0-K4^3-}QwcWoTPV6^9NFiUnm92r_a`3!PqT!f4_*@_g) ztfPe{S+B6)&6U2tj%+sn#H8`p4Rw3+y-L@gJ#5%}r6{KYsK3_Z6VDyQCF>4)RD{1E zai;gL*jw2klYUrFfg~-iBMy6V-Yjw!<=pxSoZx7d0hIYwmd*pPs3eo!ASWH zDsyN~{CM}jWeihKshR|fOj242@AU_HqHGr{>M4YUSr1KjJvxM38vARWL~HUv*nvJ? zDRd9}wN=oZ-MI^oI;mOQC9XCQsX*BF2+P5cnj9I!<*1(YmnmTc-ihz^D9a3mNl;sm z23kutWK#9-sgg9&W{e--Gqt)|$>JBk=R!q{82I*tWMT?y2^-NTp5M=28v|dPKeYjo!y?&)9hgz-GhX5C_>TH7K zd$~U5eO{h$|D(9^R5i~+UD@^_AN6kSM{S)(yy2%Z0AYwfltz0nW&Dv`RxN|64nEqj z9nR0gAx@t>z>;WEgHS)%nU^mKsQ*2+^m77PIIO-Y9X^{ZkHZ$UiVF{wa#qzeg0<%v zLD$wDV|6FCJ~} zh(;Pek8+Z9l$8Sy?W-`NPkbXP8(8mun}71KwIHU(!Iie~S449rARqXpK~%meI^q&> z?cLGbY`2QV>A+#Yz_z&{F=11UcOL-HZZerWe`QIo+`sUgAB6gqO}kMya3KX$ggIP+ zphC%jBw1#+h^ePcG?XRm=7%g@KZDcBonXv>FZaN}(zYP|bhou-J|}Vh5+dpfwsD|{ zfCq2GomH{m?}tXa_E;HaU>xFKUmqR5pMW=#ME^VuCGJ+iD#wsOj*m{z3xr*TG+Fvl zxglwyo>@bp0R;4ZCm}4L?4CCjI1X;2$}%00VS=?~$VRtClNxfsy`IMz1hU9kNMy`1 zB6%;bFJ5NclayfKnbm4{e2#*WJ=QN9^&6waOasonXyH2VSo}Hp9)w)m*MVf>Wv2+4E{r2*X>&Uw^j9d&g}c(G|sscc(qB zOD44DZ_PwbwtqioAS_Z^)rXp2sXGo<;4#cAtj z8C_GLu;!{0QVcAq?jeopu`OeA!D%5krf2-&O?J4$A+jX!Be_YwKd?r zUUOTad+y`<#S(&q^|cN)pe?Vam7w=lN$=MvhMkSfTc2*tyZtGKoC*6VhIG}O%$%jK zsHnh;H>!#Ne_Xb5a8pl-YbffiwXALx^P-zoYxo$*l(CF_js%Qo#!_m>vHg^>Vg$_d z?_A>OOeofzOZ1e^kE}n(5HbOVGXt5QB{y1c*+GR#K9*BhRYkxqHAE{e(SW=zUZq)d3Y2wCW5rq@u=kAwCb3x=S#8MoGgKk z-pp^*{XSGe_Oj7@PdSVBED(CD!t@I6MBSkJEjG*HMeT(|XT5~j>vp@2Zg)%CW2&!V zpTRSBT1BNCv(i6yuQbZNVnEZt(i8Q`L_b4D+2?}xwT!vLh#X(~;&DF?c zlhR@2qd+O9$ZW4A8>=(^V3grM?g23+%idCc+-kO?T&}2i5oVBNyB2OcNj4r_0i73$ zSk8A2QPK(B&mg4H0Z!{8H&!8V!S^XZT?+;QPGpThBsCS8Q{G*q2qlQfypDaBj!%7O zC~o>D^r`n16F;z=2?+^#8yLSuxoIdJOECnv@RB{}H=$#H_d*aRTQDRujUnr! zZJ-P+E^jR*2y2pWoOTf#`rEvjVgotr8KvVvj7Uj+%un2tK?h32q~v40%k_Bemc8&- z6w4q1M@M&vfwIBf%f9>Iy8}$#v|n=VdI^4^wN}R$V~XcjMi+}Kn#)8UX-K<42Z{a# zs}6Z5zjHOxON*>xqlqdZT*?bdnb#8yCCw|UhS7%W@~bK42_u622%|H>E?n|oI+kXs z-%%P5Gr?&lvA#(-VV`R0<2<9~!2Lrh8NmUFbF#sKmyF{A`_c5lg<1`6 z>nC^`?EE#p`K1z0-F&vMwX!wOU3r3H)OA@}T8=0m?7#>hywj-dO##_#Ll+V+aVh2ze^C}(ge4(gefY#9yh3J*d5~iV$Cr}RrhlGYP zK?48Epx)E{IUt&t5CLKniX2hv0lY!ga@+F_{VB7g;^O$?xB~F+^qBb1fwPs_``x+2 z^ok2UuM-s4B{u?XxCn07AXa!k4S3WCgORj=S$LC3v6wBY2CpUZn<-50i zxTlPvf?lX~*8pkwU6kWS({-F9Wi57AW{+mXU0ovm&R4lW{3SN>KEZjUWBPC`0UXz~ z{bdCL*Xy|r2~IOJO(Vy1_;CHKW5*`W{-iXz?G?8dQTC_TJ=_2*BXR^;rvCP99aBXnh;d`TLQd;mC(-D)lL=Iz1;A)bQz$ohRxvDCu*Yik*b0FV^GdAy5Ca<4hvuOjw0~O1G)YB&hAD17pR<^6?98l6q4Ax-Nhs@CaSo_B(GIpsq>94{RYKqn zu#pzxKm$HMMOl&g-K)s<{9Vcx`k=Sx*pV$0ez4MbaMy45*m5Wb;yc>H4RZrb+P%jX z&Y|S;mMRmAibD`?OQEpq(VV2_MOAN_NK)&N=^k8~S3XI_NgF5EV?D`d<=@O{i=d|4 z<Rll#3*&J*wD@@op(HNbqVad~nt_^;i zk>dXN26=@onB4)Lin$JXJ_L!YX?($+DiHbechaapf-e4esoTrXK8eo6b}7!65iZvE zBenIr?c?VJiKi?fkp2654o_Yb3SPR^tX%rbY!c`bh+R!OQcc8X6-VOWCW~?wTv9Lh zP6;m+a$8ZRFfy!SJ#{x3zTc%Cie(}aE=vLhka5PNh7s-}y>wL@>7#93btUs7zV%le zO+2_sI&?y-TIRKs7-OV^imQ>M-TK%U!`WA{_!2uY{$c0{_gJ#zco?Wa;xt_zlYkoOT zUPvS_RZOW?=-mz^amT~vbOBXNY^?lRdYdp2?Qu>!Wypm7dLugMXfX;AvOPXMlt~*X z+dxyietYA+7qShc(#4<&6Em4lj~-!FOUcwWBWXXzW}|WtNsS*rxhK!^W#aH_Jm_Wo zSP*fj!pj01cqPO9+5GbnhL5^rr&qH{8sg98HZh0YBu>|*WSgem0oVj?tDPEJ_aY2$ zCzw)Go@7q4fbXVk#TwgwvmPKfH0nL8N(a{-MUUTyd30BH#JnbBBIUz1U9fcO(N%(= z(;xSrA1b^DTf?oVF6It`U$D9rdrIK&okHraSwAsNlff@ZZ2Md7C=VV;v$NDq4^7sEn0)3J_om%Q4d|tC5cFuxx{vT^fNf1hJz$1e zDIK-?{o6fXFv*QoVzz$mg$hfJ74sw~+XH`6Sh+CZTX?~hWX$0WO{FCz?I?GTgva)n zdt84tE#C5;zND5-<-j9GB7DlUPFnFgn^@KJQsObAt82I2OiNV9F!(*shErYN_19;E zfalm;nNJXtz?=pgUpQqkhim&OrqqC8XYDv^i}T_Y$uN#6H{rs*BwU7LF@p3ne<7=& zOo10e-X*ianKiW9$A_m{8MuS_CM+=`ldznD%De}M9kUC^ozs7yhJT66b}Ko|bSD2L z3X&NzbcuQO6MVX%;rY7V^=(rwc)hPoNAU^PfxN2r=~{H22g=tEaC=Vgd5>**hNnbpk7c^q7oC(P*mjfY zA3D6jqRE?IAN`vf)x(A3DCxibO5cqKydPGRV5HLN5~%-vSd=anbK;VWw(z}#jWe9( zMpJEBU*U(_C?97y)J9)F1sH1qpsh&r>L__uzI(m9^L1KM7HT7wKB}L&fvy{utq%60 z>blhE;Ihi5_u(6Zqcm2vX~POWNBbewrfbj(o`=EY?f#~Ip%D}OfL)O7a)-&Tb_B?C7%>rx6y&f_H4pP~pUH2o_$i@8Qe2OZ+G{n9@--vxX z1^i8F2Bqb{-B<3Z+7Ypx5ymC5U^I|iX!Rp?8H5=tIj`IkY)k1u(XQfS8Z$s(zhn0{`_-WKDw&cl( zlcfc7%k6wjtqT*h{1k566fQ&=xm=Kn%k?GVjsnoxF{@a*7C{`%b*n$DuMpYn3VkSq ztdTTP!T5PHsN%U}ZZ$$^bRN$`t5#%i%0Z26US+SvP>7pz3mo27$Y)&!h1{2x?To5Q{9YJ$2Ffi|^NocfsT zrD>j4b0O2?H6dJVLNdS-Uim|Pr}Furm6gEaF0X$2=voJy4cld?$7+wr^q6m6RY`)$ z{GCTLQdlbA^^1qe*)n;0(PA9QfRvi|?)E!yv>IaAIrnxV`bNchlo=374|B3P2j}SG zCWf3{hZfZ?z)l;A(lJ}zh(>-s;l$}I8AHC!?m&Vt zodFzF$8t(F-2otnKD#uT0npUJ-t1FMf_DXy#zadkS;H_q1jRsHxijmZqR6k=qH;wC zfKT{Uq&Z#PslV-3@f!2dG}BT=vXhOoj0a8sw%3q5n0@!;xN~7)2*au`BM<7Ub>cX0 z{@D?WEO~Q*kk(pz#uC-GOUdv}#-uYfpZ@lHSkVkNr0dd>l>J3Htu3~mBlZql8q?T~ zEt-;d(6~>L9Y5DWY6N&9XA%c($rkA-qfmT?9(6l6$wrVTerM3zmyjf~MtlN~z6orv z5&ymS@2ckCGp;osWKtrg4Xv;~;oIHlc4fHU&aD<~hCNZpxf8t|c_5+jlP>Dy%sr$V zZ*I@dBz7{oMY)E{c#I-Yn-xG;vj3(k-z?{1x5#n*e7=r#UNpN%GlOMKMCE*((8uhD z`AUcNMWS3D2gEh;%SJp)%s0byN87RYt#(Npi}D#)v0xJmoG9PkOK-XTJQe7x&_z48~)0!~|JL}^FkKvc` zHfT)1O#t~(fw{RB30l`U7i=YZy^fpQaU8wNEJzl#x-w>^bD)y0CRX6f*55JH{!)$; zX(9x{z!r@W16u83BLD*a`0+F*1F^qomT3h-0DqEB1VTPDdY&}9+-1eS7I=TU&SgsV zc)Zy5uaJ%kMezN&!9Q2}r!Q?d{ieO9*yG?|5=;HI1%N>Q>Hq(6tuJK2o>LeQ|HZfY zxL9}?5Z{q~OuqKVefuxIO&28Z4>tKjlhg>=OOMJ~c}XnR_n-N@1p$@FPft&(xeDbA zpK^N{#}Lj<-tWKP=Fdk>TGJi`xn<|!LLj_8VMGj7dtE4{ zGX0DDyCw+ICm@%tSU+jH(bFvS2J+9Rxer>oEVNE}1_Xms z?w+ec>I7uQh6J8%iLKpjgqDbqu#)t+v}#RrZ6FluT752V<1JE8s(i48?O?cMj!sRm zT_pEYz0%vx78;@pCjssgBR}OQie?F0ihU06R9Gs^gi|o_m`Gp()5SK7f!Z?}bqMug z9kTpJvTBr%7rZv|)xfAOUqBHJO6vQC#Wb}&N_@&1 za+EAz2J4ITPJT+3OO#jqlEV!e7ga%TJd2tUbe#&Yv83ffy(~3b3ke}+>{U%sOlNkH z^#?~%ZFtU!am4%2&j~+s^5|M5-Ct!fKh-_p6rXvSEjiob1}srIYw8y(c4O#Ru3~=J zaLyM6DJoabvE$1tn5NiR7?IC?vnNq6=5!F?0!%WS*89K!JV#J~|wspVmefB=*wB6_5{dMoZ?@8vf)?5=~yzdzAm~#oEw}!BF zPY1a^tjmEyL+8Nv`iuv+$egLTNuS(!rJA{n&##&}1)tjXQGQg(k}TDX<&l;7)*P*l za@~~E~3hcI7!xnh|TGs_iD;#`TMCXww7LLJLoUfsyTkTdg z@F?Ga?ePuVeexN8os3?-6~#(Dk;IUs$5&F9bv!<&dAw^+Wf2{bK5-fksBO^eI@WshSDFxU8ls zAjO@7I9(+gZhJyL_nK5wk6D_CF{Q1~DaM;KLKpoq-tMO9(bScNwXG+*gpE=<0lx4##|BmEMfpN zP7zDaa|2rR^G;Ht^X}4p&3z=93C5#s^pq#dl|`|qk|xH%?k4l#7dam#M&#_9Wm)hDITU_mPQRbV7i91!o$?e}c zkSdvW$QLng8rKL$T=*WucC+N=OZhW%UY^&CT417V13vm^7lW5##ivQUGDRqs}U1)7SmEtF0jZVZI3c z2%70GYindUvSfX@Yi-IrfHx~a!d{3;|AMevMCLc9+?Y_hAHpni|C-e=qb~2vF{7FW z-R|DcFJ<_CeE&JdxYTjeYua_ceC%{o0;Naq`RS@(fjp0=2RMDzAE#cE@ziqPjswsf ze7s|8PIng89Ns>>Tn(;@yEhagHb(h-DjHL`-iaZ{7VE!aqIQW9D`SThg6$F591CkW z&qBN92k#*b^Ysf<%gRZ^Uy? z8`XnlF*g0Qn{EatYBR>*_y^w&K9I3dacPg|K*Qoy&GD|OcWf5XRVl9JIDAUSLX}}S zubH7sdI#XT$aJDZy`a;~ABoJ}82Og!O}#z2^9kR>3cU@+nvc40CG|GIE@Sy-a$Is6 zNV_H_>-{q5i5HN~^_+?jqf*tJ$n1~0t_g}6bC?Hn>v;~|OD)O^R(|0sjQ0F>FKeBH zS#PAnuNF%U1HpG1jFUXO$%=xHtN=q0zx~(@{DsZFRdzF z8roQ^GdaUX@1B>l(lZ@e+=O^bs3p#4g8?kCtbQ)_rI?Ehl=iqsu)u*L+yezcVpS5b zVe(lfd}KZ(5d+pE>-K&DOlKq(EokxyxSy2fPlVz7@&pmg?-0I-xx10<7j4!TW>7MI zJ+u$QuG{XI*Xk-gvH~;jj2|(!GRbCh zy@YtR7UP7tIa4p~?jpVK1H7V*>1xJV^L;4eR1y5XUcAl59v4|Z9A%!y3#RC}l2i=q zz#vx2p=f5d(#@1_N^cXnW+wRv2ktiHAzf0(n<1=WyWk?~u%}jGJGeE$O={)wMI@NQ#XMg^pRda++Ey3DU473(c*imq+_b6>SjBh*V3obHG$AYWccm-zXtpaOc2kI^?!5Rvy z!3)Ro70H8)$1?|WcJ@{s7WiEerj4Ad!98dZNZ43{Wsnkmf3YyZ+}zg$j~3p1PE=_@ z8}|T?kmOO$O6tNmvHecm{SG9~dolHqf~^eY-Hcd3Tiwpc4Xd9k%LJE8lRHD(<6yUr zBHI@J!BBKVVjOY9P<+zF~dmGp~ zIQyiX1u+j12~%aJ!v3+f!0WmZ1sk2}__MLCbnxG}LLi4rAe3H)czSLDII$#4;it9h zFyu{gc|ZU{-(E=+_=N@eGvH9?7nQmDb=~8Rd?dE5krTjPUcDP=X}OTq;NV!_96Pav zb0x&-e_1P?b*yD~x4Wjb8NJWC;xaYVj3*|HE&RYW=93&C>kRX;*sHeHoy%yX z=?tjM z`VAcH9Jtm7XCAY(;eO4`uDb7T}@Lt;npWqA&8rf23i!J zHumRuA9Pp6%{f$MYHxvLugYiXbaAbbw8cHA^jboIWtwlt$<1qBfeVPgz!@0Z%&U{S zU?iZ-WK@JQdGH_c9)wFzQ(cLI8sztKWj^t_@73^l`@M~({A7w5YQ@01w3N$$VJ2q0 zrBVP6@|=~P&Ez3)wG(=Otsye}{ocv?C zE1_A_atuM2i4%?dn=(^}G&l53r${-rwSx3AEpSQwkIy7J!O0v(MOq)BxAR7`7pE5% z%WdZOTa9a*v^U!Z_&KQjD2PG}D&Kto|C#^30;v*7_k;%&v~lL6w&{g9kTy_i)1}zj zald68wtF5c+Y{_hzPGMzGs8wKa*iA7eGgElDIiTc~wZ%#B%^$!p|sYY$IBNT{wD(J}wR?7;-+ z{M{KKuQ(5j7hup>a~rFO`>>&HBA7AgBjz8H?74HxK4W+HAe%KAOvQ|?t|IavuVJqv z<eWb{c;+gOaSvC9VD7yH1Rj(=FIutaisF z-ezN!&A8(2N?Ay3)nd}mXIoI(Y_4}3}V4rAy(49 z5!x@#1n41RTt-n1_MMF0l`w{v80gG-zH02YIWR{Pa6B@HT*~Vchwes{S&z07L2EtFRhOO8haf`HSCQ02OKqzLi7n6GKlWm+qQ;Q}RiMSe zAfvD}xSHglQNA4Ha^%q~pn-^ar*Z?t5$ zL*5l*F6W1a7qCaIqoxwazDwfEt9Rppf>_Six0ej!kuf;$ zYcyJBtypkASorn?Kc|kYC`cwm`>?267VYf#6CP<)+zCO`{aWKQR{3AlsRE2DbxFn) z28=PSsGI!izDgE;a+qz3vIeSzFV!NaP1IP)F`mrHppWrrxJ!m9%qrfnrl|5bVhraO zbhf$;DSyF3Zg(j%#37^c+ER0}Mz)P#Rf#fCRi}KE%^|yw8GyV(QZ`>;E461>ouq?v ztsBW(#(ut6KLu44bsvpWBJT1av>=wG$6!`Gr5u)(Uqv+%raR7 z=>xCy6Af$Ln6#16>iy!#+F{=1?|a22r{G2dBJC!9{Gbxu&hoNvCVS>BjE?~+K66|b zCSu*XDKfLB?K6f?%c<}-%C733L}FD_S{+9|30be96(Ns`WF!rJN$U^O zjcW!acgvdE>$XCgg0IAV&@V&@OXoKnscZ5&hLdD86+C_{6<4m?gg}2c-7Im}POh7> z%d6onRjb2EMghTwDd-0bDrn7S=E{8MPUDJxBp+G|=i8X^xLK)R%2MyuMXY?i%)54U z`p6VWA*)9e!b{svclnx8t^0Lh`8RQ>4W*ptVR@=3A?-Azd|oXHyShVL%9kjxQBdj& zpL+@;){Z_GE3uY%xwH{+;%+^xO%ouN;5a*&Tf~mFp9I`SSeua#p6f~;+46~OE?4B# zLgQCnZQ`liXC(;hi?P8cJPNVIHSj6>1)wk)a;ygw4AEBI(Pkn2x|U+!&9X|GQ_d=> zcJtujK&YT#v%L0n$AOT9uzF{!(3T{oB{rN$IMqX&#;XjVE*Z9t2y7cCdVh?az5bOv zd0Zhg`TMw5?2NQnm*$DR>(jKQE`0ij<)j%HDvmuA(DHJBp&H6~t zP?ivApRkH^tIM52y2=`H44==@2JvQ#d?+zwv2R8D8_LospybGia4+Q-`M)nXW9hfQ zbGP01C$bSi!(PPj&De*XA zmRUORfhD4w7@}v85&6y6cfY`L4+4)gF861qjt?PE78v3Em@mg2Zq;XVU;^Wj`9}{2 z390}IX{yFwQR81sgyuEKy4UmBhR{~%$x@RN3#!nTqzzf3M50TF@WJtHEh^Ysc*b!| zIVSqIe^Z2?UFs^;`}jcS-6pW)ir>U>{zXaR(Lw4+;GFd1@kxG}^ncToTZH&THLO+; zIk;cE%D<_NzArF%o*;wl`9I#q0wgI0l6sIZ|JZ9SeIScVMOXOn&;9X8zz^T@T4q&z za$6sn&cvBrk9|IKG@%hDMSrp>Nh&4uX)>v`w7sq`64yD)vODEqc1jU^ya9%)4WzIL zM)INaFt8Wmk0|CARu6dwl!77_wS(?oa_^-zwGF-n%ralWuW{L!7JWNgg@OZ^W?>hiV2=E2O@Fz6v&?M*#iY)witDJjo(QKtFlhZy^XF+ zD1~5|&9bNx4D;AM1d9+g;;b`})QN|$i;@h7H>KU^C+ii!3RNddI@+~)dBn8nn(!9ly`90(2s%}_fs#usFvpzY_;W=41N&LDA za#r^8(HJy^fpD_7LZ?YrBHd5JI%mMT8D98&U#{X5tPMLn(rg7wj_3l5H+ZGrU>XMK zKXsGS^L1pCg$%(bC|&2ssz|1pWLj@bs8lR}=qVeJMGbr_se(9^f@MlP<*QaQZA^nkJ-1xP+i+gQb$ zwor*_L4&L>HEj*%qb9cpMb4Vt(+kWP=Ik2MN(Rnx#z367Vd#Fz7(|G4xUf^$KnpND z+Kn9N<@A{TW`5z~Od6j}WS_CPyZM#nubuYq^$Vmz&|v)!=__qYV$^;YMw>TJ%0r}A zQmY=Z8@#S^`)eB?RYIbU4_34*o_nf#q12D$W&D^NpRFxUnxk!G!kE8YvZe582Kb%3 z*ON1*QjTb*xWZtKejDSeem2C8r=oXe!wPvUo%0U?OVnUnn8@H-n0m*E~$>THjOVH68fJ>B$G2SVHNk%s&}Sb9=>l! z26SCE`5vMv>SA_eL@5)7XKlUGG#|!R$_!FF|3Uug6e6TXY6-_r9VRko ztkK{v?fb^D*~p_%!I$SjU0Sd~LmN$C1rT#!Y;y7jpm$2Ah#QTiN25(n?4X8 z(3g;6XNsn{gmMcuh^Q``Dvt@%6KzMEEG^!ve> zO0(m_CkIP9HV3<48%4bxKMho;mgG+iJ!~s4ajMR8oJo!)FBu%H>ejh7)EQ&2s~W=3 zBhK9Y&<7OY^bXhoTMk=7ZuyVT4npKvJ(_ zCN9tO1|W6`Wlb!Z0XzY=H3)sj`7ZV5{wJCRMXqf74+qy(zQFJ=07YRNsDKz4m$vB~ zS6xyXvUhlQdsM7P(EAa%XG%W|utypAnZxd~kR4dk7TCfgqSoC@yVLvMntzcW1@`#8Py+u!WP@${3j)F7rp-$SE-bX8II z)Pj|N`aDHSxMOX(R^s+;d$7d^jPySj^Pd)$MC?CU)m3%$Vk}L9WMi?R*ZEsUFh=|; z-UK<#;p@7RCNsN}N|wrpNl23a;#7Ccw$~v?Pd0m{Elo}2Rz>T)VQ0Z_Gx$`a{Nzy_ zHe`txRALneES2?|ziS&T>En!!jit26Ms#&s8#L(mkTiSu2~ji2 zJC*QKLrzVS9MAyQj~P*)<0E{ux6wbtxN^j|v11cZ?IGD*M@nbnI1mmpqKBsna61nNFwRvA5+Uul^YP)jtOx zUjkSDS9h+9kiY5G$}Be{=0#J%)5(F!kHTNdkh*a5C^LI-^Em37sCHwn_KHvvz3200 zK@s`f@tu7K#M;500;|(l4+loY#Bdkkk$CK_j!5XzV#t?_4c^_+X_?UHI58!=mhC3g zFH2owtmE3)y$VSMKW8;#9i9>`^4g#)g1A0IQejnJ2I&KV(r+xq}RPe-x{Ms(e)|O z$fULU`eMaRyX*w0JDK|;6WAV1GO%pU6yy1V${*R2yfrVi8?7)6S&$%H7v6G+RFhhn zT;#K8YE#^Myw3e5HGPn5O1uXhXQSb&kS1$Q1p%?Vk81jOKeo+Yb9d3AAjb1Eq>l&u zV5{o@x0R|2Eg$@*TVnOiwd8w7V6-J1PFvkEc~7dyo~+1Aq}BR{&|mqp8~I@ZF&r^A zQZiqj^alZOEXSk76B@m)r-w?D<=!4V+=}{IAvJVRoQ$AOgi=#tY>+W*RGE3EfU90u@uPyWIxp^! zqZHg!S1+hS8@4&8Qi#(2l|c?peu_h(sxh@1M2STXSLlB-wY97gI=%fK%mImhSygZ7;?B-Ka$8%;t|Ht@$Q7ZUNW903`PgEgw6oQ+atsm#k*vym5{k z{CjhaDF799~0r2eQb=Rtd3W zdmra(y-5r`X1L}}A2(j1;ZO=%(Qb}BX8FkS@ElXjxd`qr*nwi+l zD?dmKsTWnz9O=86^~D$4fF{A-0+Uw@7haR~F_JZ`tTG-)Qjtgd{NJ6s8l2zyG4Z}m zL28^!zA;*hF!gcJ>awV2U1AQ+yyqzetcXuVe&hXEy|b{y;{ZX7$s>5&Uh#QptwZ{| zu${R&waVFnN}f1Py)H8Pu7F8jwNVZv+XNpKMt-tINwzf!CfAy^X<9owErC62Bp;+I zsW>aV$9vRHd?Dan9iO2%e9@^9m`o9M)H?*sId{JAp`FM0V(pWU<{YLoj>ho~gjOgP zDHvwX@eSAU#WBJWW=YvFHCJM^!L<^zprMGO<j^Fr!_h^)Gk z)wG^(3$4uw4nUr_a21=(V3H7~Lw%ub)RN0GAV8)endDUO5FQ9xYALD|K!+~o6|wP& zs5+LQVj(R`&uz~zsFK9Sx?U;a8Uo%)xX}*?t*Kqu;ca023J_6MUc$XqrXkF_i*339 zYa7LH7WGuWhd!G4&!n%1i&jY`Wa!z(yyL|>#fD$fRT&?(U_l@fOr{AX2+B4oPww)M zV(*+jvfwKW#?*{3gL&oDL^a_QniOHudpE-$e8@vCLL@Xm>SB}#w?IQsRXW9s7!pEB zyXnGaI|OoOM95OKNk#MYCr2*SaT5$0LKkb$U`I-Gg40IKO;!_1eR z4T7H`(IN{7kQe?)3pfIaVSHcG&2dNT$g{~ttfE+Etr?@gm4o2JyZRO|+t#(MDx>;* z3u+xfpf>7Pv}*48^)}u8@m8iG52%q+00x5^CXxg7v&hrZ+Zx$wkHD>RO$X?Sn(3V( zAis};XIJhldVKrD|C=WPaW6ZF+%8m)H#0zOcXR5X{`EutCO_@P?}6GX6AV6$ z-*)nk=U4H)!o57)g%bHK4q^aRURAlYn?An;@c()_4I40h(8{9hj#57IN9IyhjG%y0>feXn%Jh@jD=8qR5DXpHTYYb$(qEWIQLf`dTF zEht2iWUbtviiNcWFoqH)_I4s%V`GWYmH~8DX(&-rROHPp5BXB<9!1Frt64$wsok~4 zXspL)c+FZS5{Yrm)J65!*X!`Tm$xu=u?=O9c5{#9y`s%?A*8CO>LWZcQ#Biv2{BsO*S_-PeZNYVs>|QD&3At>uN=! z$Dt;%bHiZVUzs!{EP~_$gyk6HmSQH=Yxt#F+-m#ml9h0qikfk8XF642-nEO|HGgURsk81u33MlKBf9f5 zvHQm)DTTbWwM#MPDQH3FUo0GV z3z)Ubs6Dn#d|Dv~iwW^PrCBQ%KDP25gc-m274!SSd$0V6ooaeLmMS zsb=Lth}Mlw!1L+(QxWPb_hoa^8b4fArV*{;yJ4?h=~fSC^wXhbJz-Q=&Zg-nko-fH zNq+@1&mqRI`v^q(GSuhbpX>#K`oXs<^A}sKYp}#66VO8znF?saq?f@CbgH5~elggK zW+0)=yFMYHeQ8?LcNVFfp~M2cJkyKiTS_+yRZAfT3d0;zClp)62)!j!tjtE#v)_@D zG@0fJBLTYg=`q*lKsBCfk93F60ka-Sa*KK-1?0uhb=E}ALlFY^(zAL;)KX0~1OOI6 z;TA1D#04%qP={!Hb4mp&G0vGM7H%vW@P!cxPdyH?(O+;?}^062#M&*%!s8%e{G z`dL3uEMrc3m#<-Jg2{kLcD?l2o(M&8K+LF<1R#c=>cBK;{G5IPQ`76fs$Ma***fR2 ze+NznI{=A_2O7RY*{;UI%%B|MLtQMQ*uh+2C1UrV`CiA?_+}Fpp3WP@s>0mlw(Pt#_L1(D4?jY%cSsvr-GB+HvLIdcE1rCVOYv_NT`W0!Bf zphVx{1ND-}Q%!O<>_EjesW>o@a7zNSZxo-_8Xd3WB);$W9iMO6GrMe@psW^N`YC%|I7B^-m4wGu&|(-1LlWm9il0}w@@z?{{l(-dE>VHfWVvy|_*`W9FEjD3eaOxqQm`HbAoJx`**Wu&G zmC<9k?K@Y(R3u*@Iu`s^g|I;}HnW}_+lUJE)dI~|3wB@396vSLX##k4ER6Z0@&JYd-79bwaLYm#ybO{_`7ZsBD^ zWhUL$4he2^sEVyORP7s3v;~Sp8^lB&yq7Av0-*Vz~UdhqrMB`F1{Eeah z-a!-m?Q344P0hI?oA-KF{7_17@u>2r7GbT&1?L>23d%pdA(3ex%MI8wLxi6pOzGRd zzMe|}7@nklN5q>9DfAb7ccQ#e>yc5_&rjo2pH7H&vu!vj;lO?bJI)c*MflVa3O6uQ z`30`y5dVfyV94Ib#M|Xy%E>kG4BaJA<$pxEUxV_Z=p41DTepaGiRDMA9T)r3hX25(0cHT zJkoX*shd?p?}y+(dab39K-$4#crrn-RWWiMU^|mogx;a zOw`UewVv4bx_)g4p1S5E4!6?;{S2`E?ei7!sy(DVyG2vb7}2L(0m>4Ga(Td;V$Q$$ zgTC){+)xxUSS?rRf=aHj(wr6y=7F7KrCy2?D;Tz#O7iOr%n)iVkANwwrSIVBLEh%c z+6*V3b1e7UJm$%cSIpCCgNc9qI2M}H?ez4qIi@Mr&Y4)Y!jSf}?Cugpm-1(Py5YsG zNw+MY8oCIurv=@KkZF$<1$2#p>2lYyEt%3XW9Sn2=&Tn{sA;2DdI~BLF7I0^KO>D< zs>thWhQ29McfyeqeUCKE_ixbs7qSNGYD<_H*pygrPH&b^!d3#4%qBZ;LCr$H((nmr ze}+!6)V6!E{xWkoI^$ZcWIW}biwF>`HN#||lYS`DRy0IU+lU@midfMi)TdjQ=I&do zsIY8pG2T#t=SnS%DU~>`a7hSXvX43Oq@on#gx%5iRvckP_ExC!iv?Zd*Sxrh=vjK! zH$=NK!Jzf|GD^a+E!rX0++_N(L0b=~?7Tzs^}At1D8&(Vk1VMWM<2Pl!2u5(F4UtM z_E}9tb7>#7zhIybJ6S@u!{~cI>WZl`CQCUkB2z+fR;`yz9pA@8)gM!KPE9@jt;V#7 zV;<4UB~(;NuWK$>U;0?3li^zw?-ULM`{Zi$Vx;N!*Z{v^}pSs(M_`QU1c z2#G@hHOwlNQPOYHdbz>vBWYYOm}}u<(Scs6sbf9ULV4B(j=hG~u(Q!0ak>ne{X?ZV zSB51)OhK}5Sf4O_^Dop;^)X5_(qxkIt$MS7Rr$YwlRvG>A~?uP(iqRacNL~Y-&p!& z426t4+w5C2K?v{Jcb4zMX=c@HI1n}5E}7v#(At^v$BBOPxf);uaQ8i7xEcag&`V7Y z7K*N;F+Jh}|M1Em%j%SXrV-vr(8kK~JOk}FPy7pwi$?;}k0RrF7XSRLx+Gweg%V9c zh+kdgzbvO#B#;_PMRL0SW^w;3x?aBo#_lp&;&rkD4_HP6K(w6vkV-b2_{gkgjH#hlC6{1O^rp-wcS1iS?pz*B3?;tne zVPWTsMDW4{-Q-CO&NPWmA&eKW#;V;GVb>uxc|txHwDQ8)VawL$le;x$soh_Yd>^O< z1VVBr$4)hjl;h)$x!Tlqr5pJNf^BsBWNSzjwIaLnu}j>XMKsCzeTsUBl2poSDVL{5 z8Qc(qfeWPv3%=?Q7gyxBX=bk)V4iyRRK`EJG=sly&YQlXq6y$Sj7uU6dAmPW z2F0}prZ)N`M7ZOe!bj=yM~bnX_LzA~+F83q(16cn`9Uc)H!G!}qs#5((BXO*i1FRg z!;ZTGk@ko+HGMh^pw&xacWx)T9)pM6dvQMR!uK99J(+#yqjGr9C5`VO*Wy8%@VXHG zYvNyP@DDTCo&f!~%cCz1zfqwBkSNt<^x7zcEpz*vYYh&Z>xoxqiZn8+2c4(!x(u-!!vqjGHi$cYm z!v@drKL7c?Bi(`W`y=8VdG-M&`t%4ZSagW#%Y|;pD503b`4u)x-a5rZD+5bOFIENq ziQ$=>6APe=FxcYtoH#Nbsngg&aD0P!_l%tv;K3;X>^578Br7q^2 zK7~i>3(tsohec3`Laa5IaVUU~{r+&j>iUDT$Sz-od;%SxJtLMgq;Rawa^(dsS%)An zVMyQ*(l7>OBGXVtM4)6gr$g7>Gu(_9{J{J5fJ0^8jI94v)|XrRCnLlpftONETdOoS zS}V|*q!?RPz#B1I6QYX9aMP;LV2qB-#3QP-lsEW56%wyuX%>gP%sew2D z0E-%2m!SpVFhlK*twh!Q)}8~-#@C1;j#|Zn1)){qG#chOD~Q+H<&Jqe=SIR?jd3ge zycNna)pW?2bkmM68v73mb~8F$f-nHv^ib01d{RO0F|})~kXI?WKyP=0el8tshJ1Xy zyJ&k4x2MAl#~OSD4ZiE%0P|8P)rInz+?6aflU_;x2(cWBebYyF=OF(32dMO|aIDdn zJlU5v5lHT|AKRf20Zq4+Mg(t|6GcBd7O4`!f&wat0MS?SdjzCfDVc9+9;j-k9o3nt z=R@?Km9)#+8Fy;%o2%#ANT){2@B%AgeebBPvTp$F7PED8q(p#t)@S~5FTsWnsA9~4 z<8%j#Sk`9Nx9sxS6ylh3^)OA3_3I0o-&6eyLyFQL&OdSAok@fKm+|=8J_{MW9Az2q zIX9DJYU8Y&_jPE7w)Qm(#`6nFP3B~#?28h1iW;mtRk!CrF2Baz?pJ@cHxz$OdUQ@oWV*;-U8VZ}cD9Mx(d$IUxN6zQzb8s%**qlmLKvsaIedx7#tu}W%@#;D%+ccxxSenYde>CDSK^C3f8+$o(#xH z$t2m6-v%>m5)oOdoJegt3rj|r2zmwz9Q1!k;`k6v2j{?2nTB0u` z$jK*iaVxpM+LAYj`4DEwqPtvK#3AqamF_KRWouV3jc0LTfnScLD=%qW`J^{%dSKpb&t$6`ot$e@@c?2d5pvbpUzr^w(&@UmqzR4g}Cp z9eE}{&Dvl82X?A18Q4U%RLl2&U~JDH82cTk`v1V#TfinO*5IGm|M^Xb1YhBuJWuy9 z{&^xPiN69*1t5?AAEyGu;{nq}h~82&|M3k!{WNC*HmOtl_W#_HiO0sZJy-=E;xi2< zv!phogSkJ8(aOSjX$uO5GBbHrv43-gdp9uuxq)-0v2i_ClT!Uw88%LRu@Xd?wh>)# z@w1+PMSkO0y)VXO79$_Z7Z-2p4{Mp`4NZ!0_&L8@&+TR(XxKP+5x!%lEZ=D4$z;9} z05%iTl4x0wS>Y^Ff}JwV=UOgGanRtL%fBDUnOAOQr0Y$)5p5Z;R@k|&&h_ouZIu&S zIjmoPNirP`zP~V;Si%*3+CDhHj+0ZItkLXA6l`F@(=KUTa}F65#p?xna99^Y)| z)x*sUyn!oHFIN>9XR~aQ#iUQf%et^@y`ogCD@4_mth05QYtTb1+aG0IdTq1DM)Z8a z41}#`@a}U~*ex=+->0y;i5wgzuOP07ED<&HnUZSb%UncR2p*4o_FJfz(%omGe{> zE075ZtwPt)kYS#aCgAxIB|TQ*A&R#B$uK&pc9j7qD^l|p#;vXh@*#w$y+sPyACo#V z^>PBPh$*i>zL$%b0o~g`*l)Eq*?V>Tp+F);Ue{rN1&;O{9VI03qRt1%Czi=ULno8k zpVXeiFOjH$_tI+i&%hWnTPw0F+ANo_e!nGVsfK8qb;BjOx*Kfr8uVmA2&56~!`tOA zj56PoC(aTPG5g)7w7dYzoq?bXtpXNT&g}yWo7|QRnILQdBZ`xIxhyvBb`Pf7z?&BW zr{8}+pLmXGoQF5={upRua;K#^%dA|XZl22Nrk}iA;uW=Yy_LFWcx9S_EvhXUK&%Fy z$L~_`KBv-ta^E4=_U!1Qn*Yygd7d(B`agA+hY&CQ7NcFG2BXm)UvGWV2Jh|+P^Z$U zZPTr~_{M45Mxu+DE%v;yhi-XMr8Tigb=bbE_9rfo zTwcJ!cXyGMYS9@a_sqfgt@Y++^eFCKY36{MP(8Za^15D0AK_PmKk_ro6w_(zc9KX7 zgdLM1CyOCeaS;zVL-v0k=4R*bgU*YW#I00IxOnb~@BC^$k|=r3K$XjgX*SBzOv2&~ z+DZ*|%|;s4Mx1{q@b0G^TyueXl*2Ex41AwjaQ*T;OW$tYL`cVpS!yV93Ywap4^zOR1SqFd|ZfV9!_cXnh#`FPY(dLhf-N7ZZsPO0Jg z#5PqOOY>Y5YY7z5Hb!&Wxg{oy&B+WH(N+lW>LS^Cpxwb(ba3zK)IynJ7v-cnJ$LIM znHU?0wA_%gEY2p+&yBUYVFZ2+wSRQJnzJzB&qGTplRxorA}-x&bs}rXD4V)!12y9G zE6AiKP^fl*Hm&nUPe>1wKLNBj=DAL&BUm{qqX_)Q_r$w`$Q^jur`Mnpb?~FAG?3F7 zD-|I#Al+=i0dRFwsMesvwhF0a$gO#a)kg(mjXw{zUeS44A-sdACU9`8QOOL$-dH|r zn<${HPGazCpz!74dj<{6Juw84N7y)DE{j zj0Sb80ffG(@!nZr+_SxHvqO9=mSRxKgc&^(#HxX&=w{7e3s4*7(S)P5MjQ6E`?&QT z(h#D09L_KeW)RSif3RRiU+r}T$PCsj@XdRfCvbARP`lcmOmq9fW!-QaRFRAQ-5!@W zKtho$hKv>Gqq+p_fE3X3ypFQ_amc{@2ddPYoV=;TJe1$9=6K{E1AGjOfB+RylB+)E zwv9)3;YO=#up`xQpYuFF5|MXnLA0&*bO7`eatTe3ajG*zKvYw_Bv&1#^W+cJvZg8w z1`Cn_0w8F_woOZ+W$50`_XB>xoWl4Gf>3?Fd-X&1ClkreY3pIj)FoE8O=BP}};RgYLs`x1e2f2InCw z7z1CMRkqC8*huIavf6K`a7^h$qY%Cff@;IK1uLZ>&wbwX!#>}~q294vr;@|)6^=2U z#R%v5C8bnvRcag0^sq_doM)J*SeJ*@IP<3YuLZv(fCns{3j@nbfH6Wk4zho)+Nj?G6TIP(vI64fQnvqr z>sGH3@!$ZFG$)Kz$gZuf?i}K$E)NnO@BjJ9!tehO5YY?%_PhRN3+8^jJt_!v;U{kV zUr5^OhjxgnvihIPVO{}2a>YMV10YaFL-m+D;~7}?0LFDU*14O2MBtrAP3iv4)bwW- z`W)lEjvnKBzb?upyUU&WBpD*rVu2}+T4cEzAQrN+-B&K@a>$LY=bGw43SI z&Zhs}cB`iZ)9-;$_jJsfcvwE57oDu%%bcKIlR(U9+rux<)u4)rD+H7zyJ;}VcRqe8 zn{1*`y0UCJW~;fBXn{6u8UR+hJ=w`mqU`(@ zTOAQtlDm%9$teUwgD{C|9pv0U0@ULUs{kb(lA+JCGd9KzG#{NM0u~-SHTOHJ9WMo4 zrT6P-Ufp$)*W7idHZscsPb!JhTd3NQ&oJeA?dRRrBHeORt2r`F@_U8adyj%^9wt^` zfP8xw7z*tvU;>Ph+Rz1mnTBHfs{&j^njy9wzbsZREo7Q!MDzoPU1q5`p%E=R=}uH(uY5(5Q9pcxE**v)$^l^A zIx9QQ}3LX+-S?>^JDofVG{A!NS@JvX51xy(RVM)Bv8Lw2l{^Pm-p#iR`%l> z%&IMAVLw8e+h2`=nR(VFdV}LK^EArC)LHQ{zk}_(Cvv+Q+{tEl_oq?C!ICX$r5}|8 z8pm_Bj8aqmRXmdWz(A<^LaG{vs-d53{Br_ZU@IWyVkc@O0*I{Wy+LoU>STJIs!e^V@PaH|C z%?b%15fKf)VeIL}O`DvcL21G=`>kIBo@geDmqI)D-Fo{_B!0PclzO3ZhRCl`TJn_< zAXB-l4}hNeAi_+>x6hZ3@OqB;)Nx>v-lH$o89}j>&>5k$WKSJzqv<-w{&7Ojg?&KO zPLH_L611~MOQ+NP4LGTO53}vK6`97g5U)B>O!s{7B%%@Fkqp%D2-)Ocr+xU-$YDY} z9b|p6yUW2n+jnmWu9#3^?EphxX*=oW%~tB4SPxz9`AlOqdXugD?uj|Pv+hTIHo^mbWAo5*iyq^T_ z*X7Y}iVzRLtp?2-8h=mJTkr1vun6i_1K78871?>1tL1F9yQqP!>*@I24mWS zIBF&6T4x6R__|)K{7f0+r+Ld{GWnizZ&pOxSRM5sAkTR&o&-Ho4ij=mz2^P3mp}(V zATZ*PJ@OvtM*7)^6weJTO=+=0?dHCb7qsZY;OKMOTJSI>h zb!Ovxr|vT6d+62R{Jvj_EOoK#5iY4q$4xfy%yqw*BGwm9K_}7#q^__lwXj?ngo9?6 z>PR?yY>1@Q#HkoTTw3ZI^%NMdQ*g=5;DQ-UTV;eU8)`N%PsgPynxq1L>!TGR#Y^BD zSLWE#!fMZ>N?tEqe2_bOG%KBzc*ZF4nk`88mvp0Td!&eE;&Y=Yjwz`8krjuOWJsm# zsj@JHN@{{wQ<|+b2X2FubKU6JQOM+oaa~}UEx|}F%iy+O zX8|v}bM|kuj`8n*fF{LAa2;SmTSb<3V9d3;4wrCo*MYHa1l2ZD-}MiKA@J}g!U%y0 zGSMqIJl!Y&>?NkQrcr1fmr>chVJQ^oI4WCHiQrFhW51kqj`dDeAbsPpAi65ta$Jyu zU4sHQN_4YZ