From 55b57ca0cbad2001a119e156465e95f33b48b3b1 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Fri, 28 May 2004 08:51:23 +0000 Subject: [PATCH] Initial import --- dlls/geoip/GeoIP.c | 686 +++++++++ dlls/geoip/GeoIP.dat | Bin 0 -> 692128 bytes dlls/geoip/GeoIP.h | 158 ++ dlls/geoip/amxxmodule.cpp | 2990 +++++++++++++++++++++++++++++++++++++ dlls/geoip/amxxmodule.h | 2152 ++++++++++++++++++++++++++ dlls/geoip/geoip.vcproj | 163 ++ dlls/geoip/geoip_amxx.cpp | 47 + dlls/geoip/geoip_amxx.h | 9 + dlls/geoip/moduleconfig.h | 462 ++++++ 9 files changed, 6667 insertions(+) create mode 100755 dlls/geoip/GeoIP.c create mode 100755 dlls/geoip/GeoIP.dat create mode 100755 dlls/geoip/GeoIP.h create mode 100755 dlls/geoip/amxxmodule.cpp create mode 100755 dlls/geoip/amxxmodule.h create mode 100755 dlls/geoip/geoip.vcproj create mode 100755 dlls/geoip/geoip_amxx.cpp create mode 100755 dlls/geoip/geoip_amxx.h create mode 100755 dlls/geoip/moduleconfig.h diff --git a/dlls/geoip/GeoIP.c b/dlls/geoip/GeoIP.c new file mode 100755 index 00000000..182a137f --- /dev/null +++ b/dlls/geoip/GeoIP.c @@ -0,0 +1,686 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */ +/* GeoIP.c + * + * Copyright (C) 2003 MaxMind LLC All Rights Reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "GeoIP.h" + +#include +#include +#include +#ifndef _WIN32 +#include +#include /* For ntohl */ +#else +#include +#endif +#include +#include /* for fstat */ +#include /* for fstat */ + +#ifdef HAVE_STDINT_H +#include /* For uint32_t */ +#endif + +#define COUNTRY_BEGIN 16776960 +#define STATE_BEGIN_REV0 16700000 +#define STATE_BEGIN_REV1 16000000 +#define STRUCTURE_INFO_MAX_SIZE 20 +#define DATABASE_INFO_MAX_SIZE 100 +#define MAX_ORG_RECORD_LENGTH 300 +#define US_OFFSET 1 +#define CANADA_OFFSET 677 +#define WORLD_OFFSET 1353 +#define FIPS_RANGE 360 + +#define CHECK_ERR(err, msg) { \ + if (err != Z_OK) { \ + fprintf(stderr, "%s error: %d\n", msg, err); \ + exit(1); \ + } \ +} + +const char GeoIP_country_code[247][3] = { "--","AP","EU","AD","AE","AF","AG","AI","AL","AM","AN","AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","FX","GA","GB","GD","GE","GF","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TM","TN","TO","TP","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","YU","ZA","ZM","ZR","ZW","A1","A2","O1"}; + +const char GeoIP_country_code3[247][4] = { "--","AP","EU","AND","ARE","AFG","ATG","AIA","ALB","ARM","ANT","AGO","AQ","ARG","ASM","AUT","AUS","ABW","AZE","BIH","BRB","BGD","BEL","BFA","BGR","BHR","BDI","BEN","BMU","BRN","BOL","BRA","BHS","BTN","BV","BWA","BLR","BLZ","CAN","CC","COD","CAF","COG","CHE","CIV","COK","CHL","CMR","CHN","COL","CRI","CUB","CPV","CX","CYP","CZE","DEU","DJI","DNK","DMA","DOM","DZA","ECU","EST","EGY","ESH","ERI","ESP","ETH","FIN","FJI","FLK","FSM","FRO","FRA","FX","GAB","GBR","GRD","GEO","GUF","GHA","GIB","GRL","GMB","GIN","GLP","GNQ","GRC","GS","GTM","GUM","GNB","GUY","HKG","HM","HND","HRV","HTI","HUN","IDN","IRL","ISR","IND","IO","IRQ","IRN","ISL","ITA","JAM","JOR","JPN","KEN","KGZ","KHM","KIR","COM","KNA","PRK","KOR","KWT","CYM","KAZ","LAO","LBN","LCA","LIE","LKA","LBR","LSO","LTU","LUX","LVA","LBY","MAR","MCO","MDA","MDG","MHL","MKD","MLI","MMR","MNG","MAC","MNP","MTQ","MRT","MSR","MLT","MUS","MDV","MWI","MEX","MYS","MOZ","NAM","NCL","NER","NFK","NGA","NIC","NLD","NOR","NPL","NRU","NIU","NZL","OMN","PAN","PER","PYF","PNG","PHL","PAK","POL","SPM","PCN","PRI","PSE","PRT","PLW","PRY","QAT","REU","ROU","RUS","RWA","SAU","SLB","SYC","SDN","SWE","SGP","SHN","SVN","SJM","SVK","SLE","SMR","SEN","SOM","SUR","STP","SLV","SYR","SWZ","TCA","TCD","TF","TGO","THA","TJK","TKL","TLS","TKM","TUN","TON","TUR","TTO","TUV","TWN","TZA","UKR","UGA","UM","USA","URY","UZB","VAT","VCT","VEN","VGB","VIR","VNM","VUT","WLF","WSM","YEM","YT","YUG","ZAF","ZMB","ZR","ZWE","A1","A2","O1"}; + +const char * GeoIP_country_name[247] = {"N/A","Asia/Pacific Region","Europe","Andorra","United Arab Emirates","Afghanistan","Antigua and Barbuda","Anguilla","Albania","Armenia","Netherlands Antilles","Angola","Antarctica","Argentina","American Samoa","Austria","Australia","Aruba","Azerbaijan","Bosnia and Herzegovina","Barbados","Bangladesh","Belgium","Burkina Faso","Bulgaria","Bahrain","Burundi","Benin","Bermuda","Brunei Darussalam","Bolivia","Brazil","Bahamas","Bhutan","Bouvet Island","Botswana","Belarus","Belize","Canada","Cocos (Keeling) Islands","Congo, The Democratic Republic of the","Central African Republic","Congo","Switzerland","Cote D'Ivoire","Cook Islands","Chile","Cameroon","China","Colombia","Costa Rica","Cuba","Cape Verde","Christmas Island","Cyprus","Czech Republic","Germany","Djibouti","Denmark","Dominica","Dominican Republic","Algeria","Ecuador","Estonia","Egypt","Western Sahara","Eritrea","Spain","Ethiopia","Finland","Fiji","Falkland Islands (Malvinas)","Micronesia, Federated States of","Faroe Islands","France","France, Metropolitan","Gabon","United Kingdom","Grenada","Georgia","French Guiana","Ghana","Gibraltar","Greenland","Gambia","Guinea","Guadeloupe","Equatorial Guinea","Greece","South Georgia and the South Sandwich Islands","Guatemala","Guam","Guinea-Bissau","Guyana","Hong Kong","Heard Island and McDonald Islands","Honduras","Croatia","Haiti","Hungary","Indonesia","Ireland","Israel","India","British Indian Ocean Territory","Iraq","Iran, Islamic Republic of","Iceland","Italy","Jamaica","Jordan","Japan","Kenya","Kyrgyzstan","Cambodia","Kiribati","Comoros","Saint Kitts and Nevis", +"Korea, Democratic People's Republic of","Korea, Republic of","Kuwait","Cayman Islands","Kazakhstan","Lao People's Democratic Republic","Lebanon","Saint Lucia","Liechtenstein","Sri Lanka","Liberia","Lesotho","Lithuania","Luxembourg","Latvia","Libyan Arab Jamahiriya","Morocco","Monaco","Moldova, Republic of","Madagascar","Marshall Islands","Macedonia","Mali","Myanmar","Mongolia","Macau","Northern Mariana Islands","Martinique","Mauritania","Montserrat","Malta","Mauritius","Maldives","Malawi","Mexico","Malaysia","Mozambique","Namibia","New Caledonia","Niger","Norfolk Island","Nigeria","Nicaragua","Netherlands","Norway","Nepal","Nauru","Niue","New Zealand","Oman","Panama","Peru","French Polynesia","Papua New Guinea","Philippines","Pakistan","Poland","Saint Pierre and Miquelon","Pitcairn Islands","Puerto Rico","Palestinian Territory, Occupied","Portugal","Palau","Paraguay","Qatar","Reunion","Romania","Russian Federation","Rwanda","Saudi Arabia","Solomon Islands","Seychelles","Sudan","Sweden","Singapore","Saint Helena","Slovenia","Svalbard and Jan Mayen","Slovakia","Sierra Leone","San Marino","Senegal","Somalia","Suriname","Sao Tome and Principe","El Salvador","Syrian Arab Republic","Swaziland","Turks and Caicos Islands","Chad","French Southern Territories","Togo","Thailand","Tajikistan","Tokelau","Turkmenistan","Tunisia","Tonga","East Timor","Turkey","Trinidad and Tobago","Tuvalu","Taiwan","Tanzania, United Republic of","Ukraine","Uganda","United States Minor Outlying Islands","United States","Uruguay","Uzbekistan","Holy See (Vatican City State)","Saint Vincent and the Grenadines","Venezuela","Virgin Islands, British","Virgin Islands, U.S.","Vietnam","Vanuatu","Wallis and Futuna","Samoa","Yemen","Mayotte","Yugoslavia","South Africa","Zambia","Zaire","Zimbabwe", +"Anonymous Proxy","Satellite Provider","Other"}; + +const char GeoIP_country_continent[247][3] = {"--","AS","EU","EU","AS","AS","SA","SA","EU","AS","SA","AF","AN","SA","OC","EU","OC","SA","AS","EU","SA","AS","EU","AF","EU","AS","AF","AF","SA","AS","SA","SA","SA","AS","AF","AF","EU","SA","NA","AS","AF","AF","AF","EU","AF","OC","SA","AF","AS","SA","SA","SA","AF","AS","AS","EU","EU","AF","EU","SA","SA","AF","SA","EU","AF","AF","AF","EU","AF","EU","OC","SA","OC","EU","EU","EU","AF","EU","SA","AS","SA","AF","EU","SA","AF","AF","SA","AF","EU","SA","SA","OC","AF","SA","AS","AF","SA","EU","SA","EU","AS","EU","AS","AS","AS","AS","AS","EU","EU","SA","AS","AS","AF","AS","AS","OC","AF","SA","AS","AS","AS","SA","AS","AS","AS","SA","EU","AS","AF","AF","EU","EU","EU","AF","AF","EU","EU","AF","OC","EU","AF","AS","AS","AS","OC","SA","AF","SA","EU","AF","AS","AF","NA","AS","AF","AF","OC","AF","OC","AF","SA","EU","EU","AS","OC","OC","OC","AS","SA","SA","OC","OC","AS","AS","EU","SA","OC","SA","AS","EU","OC","SA","AS","AF","EU","AS","AF","AS","OC","AF","AF","EU","AS","AF","EU","EU","EU","AF","EU","AF","AF","SA","AF","SA","AS","AF","SA","AF","AF","AF","AS","AS","OC","AS","AF","OC","AS","AS","SA","OC","AS","AF","EU","AF","OC","NA","SA","AS","EU","SA","SA","SA","SA","AS","OC","OC","OC","AS","AF","EU","AF","AF","AF","AF"}; + +const char * GeoIPDBDescription[NUM_DB_TYPES] = {NULL, "GeoIP Country Edition", "GeoIP City Edition, Rev 1", "GeoIP Region Edition, Rev 1", "GeoIP ISP Edition", "GeoIP Organization Edition", "GeoIP City Edition, Rev 0", "GeoIP Region Edition, Rev 0","GeoIP Proxy Edition","GeoIP Netspeed Edition"}; + +char *_full_path_to(const char *file_name) { + char *path = malloc(sizeof(char) * 1024); + +#ifndef _WIN32 + memset(path, 0, sizeof(char) * 1024); + snprintf(path, sizeof(char) * 1024 - 1, "%s/%s", GEOIPDATADIR, file_name); +#else + char buf[MAX_PATH], *p, *q = NULL; + int len; + memset(buf, 0, sizeof(buf)); + len = GetModuleFileName(GetModuleHandle(NULL), buf, sizeof(buf) - 1); + for (p = buf + len; p > buf; p--) + if (*p == '\\') + { + if (!q) + q = p; + else + *p = '/'; + } + *q = 0; + memset(path, 0, sizeof(char) * 1024); + sprintf(path, "%s/%s", buf, file_name); +#endif + + return path; +} + +char ** GeoIPDBFileName = NULL; + +void _setup_dbfilename() { + if (NULL == GeoIPDBFileName) { + GeoIPDBFileName = malloc(sizeof(char *) * NUM_DB_TYPES); + memset(GeoIPDBFileName, 0, sizeof(char *) * NUM_DB_TYPES); + + GeoIPDBFileName[GEOIP_COUNTRY_EDITION] = _full_path_to("GeoIP.dat"); + GeoIPDBFileName[GEOIP_REGION_EDITION_REV0] = _full_path_to("GeoIPRegion.dat"); + GeoIPDBFileName[GEOIP_REGION_EDITION_REV1] = _full_path_to("GeoIPRegion.dat"); + GeoIPDBFileName[GEOIP_CITY_EDITION_REV0] = _full_path_to("GeoIPCity.dat"); + GeoIPDBFileName[GEOIP_CITY_EDITION_REV1] = _full_path_to("GeoIPCity.dat"); + GeoIPDBFileName[GEOIP_ISP_EDITION] = _full_path_to("GeoIPISP.dat"); + GeoIPDBFileName[GEOIP_ORG_EDITION] = _full_path_to("GeoIPOrg.dat"); + GeoIPDBFileName[GEOIP_PROXY_EDITION] = _full_path_to("GeoIPProxy.dat"); + GeoIPDBFileName[GEOIP_ASNUM_EDITION] = _full_path_to("GeoIPASNum.dat"); + GeoIPDBFileName[GEOIP_NETSPEED_EDITION] = _full_path_to("GeoIPNetSpeed.dat"); + } +} + +int _check_mtime(GeoIP *gi) { + struct stat buf; + + if (gi->flags & GEOIP_CHECK_CACHE) { + if (fstat(fileno(gi->GeoIPDatabase), &buf) != -1) { + if (buf.st_mtime > gi->mtime) { + /* GeoIP Database file updated, reload database into memory cache */ + if (realloc(gi->cache, buf.st_size) != NULL) { + if (fread(gi->cache, sizeof(unsigned char), buf.st_size, gi->GeoIPDatabase) != (size_t) buf.st_size) { + fprintf(stderr,"Error reading file %s\n",gi->file_path); + return -1; + } + gi->mtime = buf.st_mtime; + } + } + } + } + return 0; +} + +int _file_exists(const char *file_name) { + struct stat file_stat; + return( (stat(file_name, &file_stat) == 0) ? 1:0); +} + +int GeoIP_db_avail(int type) { + const char * filePath; + if (type < 0 || type >= NUM_DB_TYPES) { + return 0; + } + filePath = GeoIPDBFileName[type]; + if (NULL == filePath) { + return 0; + } + return _file_exists(filePath); +} + +void _setup_segments(GeoIP * gi) { + int i, j; + unsigned char delim[3]; + unsigned char buf[SEGMENT_RECORD_LENGTH]; + + /* default to GeoIP Country Edition */ + gi->databaseType = GEOIP_COUNTRY_EDITION; + gi->record_length = STANDARD_RECORD_LENGTH; + fseek(gi->GeoIPDatabase, -3l, SEEK_END); + for (i = 0; i < STRUCTURE_INFO_MAX_SIZE; i++) { + fread(delim, 1, 3, gi->GeoIPDatabase); + if (delim[0] == 255 && delim[1] == 255 && delim[2] == 255) { + fread(&gi->databaseType, 1, 1, gi->GeoIPDatabase); + if (gi->databaseType >= 106) { + /* backwards compatibility with databases from April 2003 and earlier */ + gi->databaseType -= 105; + } + + if (gi->databaseType == GEOIP_REGION_EDITION_REV0) { + /* Region Edition, pre June 2003 */ + gi->databaseSegments = malloc(sizeof(int)); + gi->databaseSegments[0] = STATE_BEGIN_REV0; + } else if (gi->databaseType == GEOIP_REGION_EDITION_REV1) { + /* Region Edition, post June 2003 */ + gi->databaseSegments = malloc(sizeof(int)); + gi->databaseSegments[0] = STATE_BEGIN_REV1; + } else if (gi->databaseType == GEOIP_CITY_EDITION_REV0 || + gi->databaseType == GEOIP_CITY_EDITION_REV1 || + gi->databaseType == GEOIP_ORG_EDITION || + gi->databaseType == GEOIP_ISP_EDITION || + gi->databaseType == GEOIP_ASNUM_EDITION) { + /* City/Org Editions have two segments, read offset of second segment */ + gi->databaseSegments = malloc(sizeof(int)); + gi->databaseSegments[0] = 0; + fread(buf, SEGMENT_RECORD_LENGTH, 1, gi->GeoIPDatabase); + for (j = 0; j < SEGMENT_RECORD_LENGTH; j++) { + gi->databaseSegments[0] += (buf[j] << (j * 8)); + } + if (gi->databaseType == GEOIP_ORG_EDITION || + gi->databaseType == GEOIP_ISP_EDITION) + gi->record_length = ORG_RECORD_LENGTH; + } + break; + } else { + fseek(gi->GeoIPDatabase, -4l, SEEK_CUR); + } + } + if (gi->databaseType == GEOIP_COUNTRY_EDITION || + gi->databaseType == GEOIP_PROXY_EDITION || + gi->databaseType == GEOIP_NETSPEED_EDITION) { + gi->databaseSegments = malloc(sizeof(int)); + gi->databaseSegments[0] = COUNTRY_BEGIN; + } +} + +unsigned int _seek_record (GeoIP *gi, unsigned long ipnum) { + int depth; + unsigned int x; + unsigned char stack_buffer[2 * MAX_RECORD_LENGTH]; + const unsigned char *buf = (gi->cache == NULL) ? stack_buffer : NULL; + unsigned int offset = 0; + + const unsigned char * p; + int j; + + _check_mtime(gi); + for (depth = 31; depth >= 0; depth--) { + if (gi->cache == NULL) { + /* read from disk */ + fseek(gi->GeoIPDatabase, (long)gi->record_length * 2 * offset, SEEK_SET); + fread(stack_buffer,gi->record_length,2,gi->GeoIPDatabase); + } else { + /* simply point to record in memory */ + buf = gi->cache + (long)gi->record_length * 2 *offset; + } + + if (ipnum & (1 << depth)) { + /* Take the right-hand branch */ + if ( gi->record_length == 3 ) { + /* Most common case is completely unrolled and uses constants. */ + x = (buf[3*1 + 0] << (0*8)) + + (buf[3*1 + 1] << (1*8)) + + (buf[3*1 + 2] << (2*8)); + + } else { + /* General case */ + j = gi->record_length; + p = &buf[2*j]; + x = 0; + do { + x <<= 8; + x += *(--p); + } while ( --j ); + } + + } else { + /* Take the left-hand branch */ + if ( gi->record_length == 3 ) { + /* Most common case is completely unrolled and uses constants. */ + x = (buf[3*0 + 0] << (0*8)) + + (buf[3*0 + 1] << (1*8)) + + (buf[3*0 + 2] << (2*8)); + } else { + /* General case */ + j = gi->record_length; + p = &buf[1*j]; + x = 0; + do { + x <<= 8; + x += *(--p); + } while ( --j ); + } + } + + if (x >= gi->databaseSegments[0]) { + return x; + } + offset = x; + } + + /* shouldn't reach here */ + fprintf(stderr,"Error Traversing Database for ipnum = %lu - Perhaps database is corrupt?\n",ipnum); + return 0; +} + +unsigned long _addr_to_num (const char *addr) { + int i; + char tok[4]; + int octet; + int j = 0, k = 0; + unsigned long ipnum = 0; + char c = 0; + + for (i=0; i<4; i++) { + for (;;) { + c = addr[k++]; + if (c == '.' || c == '\0') { + tok[j] = '\0'; + octet = atoi(tok); + if (octet > 255) + return 0; + ipnum += (octet << ((3-i)*8)); + j = 0; + break; + } else if (c >= '0' && c<= '9') { + if (j > 2) { + return 0; + } + tok[j++] = c; + } else { + return 0; + } + } + if(c == '\0' && i<3) { + return 0; + } + } + return ipnum; +} + +GeoIP* GeoIP_open_type (int type, int flags) { + GeoIP * gi; + const char * filePath; + if (type < 0 || type >= NUM_DB_TYPES) { + printf("Invalid database type %d\n", type); + return NULL; + } + _setup_dbfilename(); + filePath = GeoIPDBFileName[type]; + if (filePath == NULL) { + printf("Invalid database type %d\n", type); + return NULL; + } + gi = GeoIP_open (filePath, flags); + return gi; +} + +GeoIP* GeoIP_new (int flags) { + GeoIP * gi; + _setup_dbfilename(); + gi = GeoIP_open (GeoIPDBFileName[GEOIP_COUNTRY_EDITION], flags); + return gi; +} + +GeoIP* GeoIP_open (const char * filename, int flags) { + struct stat buf; + GeoIP *gi = (GeoIP *)malloc(sizeof(GeoIP)); + +#ifdef _WIN32 + WSADATA wsa; + if (WSAStartup(MAKEWORD(1, 1), &wsa) != 0) + return NULL; +#endif + + if (gi == NULL) + return NULL; + gi->file_path = malloc(sizeof(char) * (strlen(filename)+1)); + if (gi->file_path == NULL) + return NULL; + strcpy(gi->file_path, filename); + gi->GeoIPDatabase = fopen(filename,"rb"); + if (gi->GeoIPDatabase == NULL) { + fprintf(stderr,"Error Opening file %s\n",filename); + free(gi->file_path); + free(gi); + return NULL; + } else { + if (flags & GEOIP_MEMORY_CACHE) { + if (fstat(fileno(gi->GeoIPDatabase), &buf) == -1) { + fprintf(stderr,"Error stating file %s\n",filename); + free(gi); + return NULL; + } + gi->mtime = buf.st_mtime; + gi->cache = (unsigned char *) malloc(sizeof(unsigned char) * buf.st_size); + if (gi->cache != NULL) { + if (fread(gi->cache, sizeof(unsigned char), buf.st_size, gi->GeoIPDatabase) != (size_t) buf.st_size) { + fprintf(stderr,"Error reading file %s\n",filename); + free(gi->cache); + free(gi); + return NULL; + } + } + } else { + gi->cache = NULL; + } + gi->flags = flags; + _setup_segments(gi); + return gi; + } +} + +void GeoIP_delete (GeoIP *gi) { + if (gi->GeoIPDatabase != NULL) + fclose(gi->GeoIPDatabase); + if (gi->cache != NULL) + free(gi->cache); + if (gi->file_path != NULL) + free(gi->file_path); + if (gi->databaseSegments != NULL) + free(gi->databaseSegments); + free(gi); +} + +const char *GeoIP_country_code_by_name (GeoIP* gi, const char *name) { + int country_id; + country_id = GeoIP_id_by_name(gi, name); + return (country_id > 0) ? GeoIP_country_code[country_id] : NULL; +} + +const char *GeoIP_country_code3_by_name (GeoIP* gi, const char *name) { + int country_id; + country_id = GeoIP_id_by_name(gi, name); + return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL; +} + +const char *GeoIP_country_name_by_name (GeoIP* gi, const char *name) { + int country_id; + country_id = GeoIP_id_by_name(gi, name); + return (country_id > 0) ? GeoIP_country_name[country_id] : NULL; +} + +unsigned long lookupaddress (const char *host) { + unsigned long addr = inet_addr(host); + struct hostent * phe; + if (addr == INADDR_NONE) + { + phe = gethostbyname(host); + if (!phe) + return 0; + addr = *((unsigned long *) phe->h_addr_list[0]); + } + return ntohl(addr); +} + +int GeoIP_id_by_name (GeoIP* gi, const char *name) { + unsigned long ipnum; + int ret; + if (name == NULL) { + return 0; + } + if (gi->databaseType != GEOIP_COUNTRY_EDITION && gi->databaseType != GEOIP_PROXY_EDITION && gi->databaseType != GEOIP_NETSPEED_EDITION) { + printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_COUNTRY_EDITION]); + return 0; + } + if (!(ipnum = lookupaddress(name))) + return 0; + ret = _seek_record(gi, ipnum) - COUNTRY_BEGIN; + return ret; + +} + +const char *GeoIP_country_code_by_addr (GeoIP* gi, const char *addr) { + int country_id; + country_id = GeoIP_id_by_addr(gi, addr); + return (country_id > 0) ? GeoIP_country_code[country_id] : NULL; +} + +const char *GeoIP_country_code3_by_addr (GeoIP* gi, const char *addr) { + int country_id; + country_id = GeoIP_id_by_addr(gi, addr); + return (country_id > 0) ? GeoIP_country_code3[country_id] : NULL; + return GeoIP_country_code3[country_id]; +} + +const char *GeoIP_country_name_by_addr (GeoIP* gi, const char *addr) { + int country_id; + country_id = GeoIP_id_by_addr(gi, addr); + return (country_id > 0) ? GeoIP_country_name[country_id] : NULL; + return GeoIP_country_name[country_id]; +} + +int GeoIP_country_id_by_addr (GeoIP* gi, const char *addr) { + return GeoIP_id_by_addr(gi, addr); +} + +int GeoIP_country_id_by_name (GeoIP* gi, const char *host) { + return GeoIP_id_by_name(gi, host); +} + +int GeoIP_id_by_addr (GeoIP* gi, const char *addr) { + unsigned long ipnum; + int ret; + + if (addr == NULL) { + return 0; + } + if (gi->databaseType != GEOIP_COUNTRY_EDITION && gi->databaseType != GEOIP_PROXY_EDITION && gi->databaseType != GEOIP_NETSPEED_EDITION) { + printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_COUNTRY_EDITION]); + return 0; + } + ipnum = _addr_to_num(addr); + ret = _seek_record(gi, ipnum) - COUNTRY_BEGIN; + return ret; +} + +char *GeoIP_database_info (GeoIP* gi) { + int i; + unsigned char buf[3]; + char *retval; + int hasStructureInfo = 0; + + if(gi == NULL) + return NULL; + + _check_mtime(gi); + fseek(gi->GeoIPDatabase, -3l, SEEK_END); + + /* first get past the database structure information */ + for (i = 0; i < STRUCTURE_INFO_MAX_SIZE; i++) { + fread(buf, 1, 3, gi->GeoIPDatabase); + if (buf[0] == 255 && buf[1] == 255 && buf[2] == 255) { + hasStructureInfo = 1; + break; + } + fseek(gi->GeoIPDatabase, -4l, SEEK_CUR); + } + if (hasStructureInfo == 1) { + fseek(gi->GeoIPDatabase, -3l, SEEK_CUR); + } else { + /* no structure info, must be pre Sep 2002 database, go back to end */ + fseek(gi->GeoIPDatabase, -3l, SEEK_END); + } + + for (i = 0; i < DATABASE_INFO_MAX_SIZE; i++) { + fread(buf, 1, 3, gi->GeoIPDatabase); + if (buf[0] == 0 && buf[1] == 0 && buf[2] == 0) { + retval = malloc(sizeof(char) * (i+1)); + if (retval == NULL) { + return NULL; + } + fread(retval, 1, i, gi->GeoIPDatabase); + retval[i] = '\0'; + return retval; + } + fseek(gi->GeoIPDatabase, -4l, SEEK_CUR); + } + return NULL; +} + +/* GeoIP Region Edition functions */ + +void GeoIP_assign_region_by_inetaddr(GeoIP* gi, unsigned long inetaddr, GeoIPRegion *region) { + unsigned int seek_region; + + /* This also writes in the terminating NULs (if you decide to + * keep them) and clear any fields that are not set. */ + memset(region, 0, sizeof(GeoIPRegion)); + + seek_region = _seek_record(gi, ntohl(inetaddr)); + + if (gi->databaseType == GEOIP_REGION_EDITION_REV0) { + /* Region Edition, pre June 2003 */ + seek_region -= STATE_BEGIN_REV0; + if (seek_region >= 1000) { + region->country_code[0] = 'U'; + region->country_code[1] = 'S'; + region->region[0] = (char) ((seek_region - 1000)/26 + 65); + region->region[1] = (char) ((seek_region - 1000)%26 + 65); + } else { + memcpy(region->country_code, GeoIP_country_code[seek_region], 2); + } + } else if (gi->databaseType == GEOIP_REGION_EDITION_REV1) { + /* Region Edition, post June 2003 */ + seek_region -= STATE_BEGIN_REV1; + if (seek_region < US_OFFSET) { + /* Unknown */ + /* we don't need to do anything here b/c we memset region to 0 */ + } else if (seek_region < CANADA_OFFSET) { + /* USA State */ + region->country_code[0] = 'U'; + region->country_code[1] = 'S'; + region->region[0] = (char) ((seek_region - US_OFFSET)/26 + 65); + region->region[1] = (char) ((seek_region - US_OFFSET)%26 + 65); + } else if (seek_region < WORLD_OFFSET) { + /* Canada Province */ + region->country_code[0] = 'C'; + region->country_code[1] = 'A'; + region->region[0] = (char) ((seek_region - CANADA_OFFSET)/26 + 65); + region->region[1] = (char) ((seek_region - CANADA_OFFSET)%26 + 65); + } else { + /* Not US or Canada */ + memcpy(region->country_code, GeoIP_country_code[(seek_region - WORLD_OFFSET) / FIPS_RANGE], 2); + } + } +} + +GeoIPRegion * _get_region(GeoIP* gi, unsigned long ipnum) { + GeoIPRegion * region; + + region = malloc(sizeof(GeoIPRegion)); + if (region) { + GeoIP_assign_region_by_inetaddr(gi, htonl(ipnum), region); + } + return region; +} + +GeoIPRegion * GeoIP_region_by_addr (GeoIP* gi, const char *addr) { + unsigned long ipnum; + if (addr == NULL) { + return 0; + } + if (gi->databaseType != GEOIP_REGION_EDITION_REV0 && + gi->databaseType != GEOIP_REGION_EDITION_REV1) { + printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]); + return 0; + } + ipnum = _addr_to_num(addr); + return _get_region(gi, ipnum); +} + +GeoIPRegion * GeoIP_region_by_name (GeoIP* gi, const char *name) { + unsigned long ipnum; + if (name == NULL) { + return 0; + } + if (gi->databaseType != GEOIP_REGION_EDITION_REV0 && + gi->databaseType != GEOIP_REGION_EDITION_REV1) { + printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_REGION_EDITION_REV1]); + return 0; + } + if (!(ipnum = lookupaddress(name))) + return 0; + return _get_region(gi, ipnum); +} + +void GeoIPRegion_delete (GeoIPRegion *gir) { + free(gir); +} + +/* GeoIP Organization, ISP and AS Number Edition private method */ +char *_get_name (GeoIP* gi, unsigned long ipnum) { + int seek_org; + char buf[MAX_ORG_RECORD_LENGTH]; + char * org_buf, * buf_pointer; + int record_pointer; + + if (gi->databaseType != GEOIP_ORG_EDITION && + gi->databaseType != GEOIP_ISP_EDITION && + gi->databaseType != GEOIP_ASNUM_EDITION) { + printf("Invalid database type %s, expected %s\n", GeoIPDBDescription[(int)gi->databaseType], GeoIPDBDescription[GEOIP_ORG_EDITION]); + return 0; + } + + seek_org = _seek_record(gi, ipnum); + if (seek_org == gi->databaseSegments[0]) + return NULL; + + record_pointer = seek_org + (2 * gi->record_length - 1) * gi->databaseSegments[0]; + + if (gi->cache == NULL) { + fseek(gi->GeoIPDatabase, record_pointer, SEEK_SET); + fread(buf, sizeof(char), MAX_ORG_RECORD_LENGTH, gi->GeoIPDatabase); + org_buf = malloc(sizeof(char) * (strlen(buf)+1)); + strcpy(org_buf, buf); + } else { + buf_pointer = gi->cache + (long)record_pointer; + org_buf = malloc(sizeof(char) * (strlen(buf_pointer)+1)); + strcpy(org_buf, buf_pointer); + } + return org_buf; +} + +char *GeoIP_name_by_addr (GeoIP* gi, const char *addr) { + unsigned long ipnum; + if (addr == NULL) { + return 0; + } + ipnum = _addr_to_num(addr); + return _get_name(gi, ipnum); +} + +char *GeoIP_name_by_name (GeoIP* gi, const char *name) { + unsigned long ipnum; + if (name == NULL) { + return 0; + } + if (!(ipnum = lookupaddress(name))) + return 0; + return _get_name(gi, ipnum); +} + +char *GeoIP_org_by_addr (GeoIP* gi, const char *addr) { + return GeoIP_name_by_addr(gi, addr); +} + +char *GeoIP_org_by_name (GeoIP* gi, const char *name) { + return GeoIP_name_by_name(gi, name); +} + +unsigned char GeoIP_database_edition (GeoIP* gi) { + return gi->databaseType; +} diff --git a/dlls/geoip/GeoIP.dat b/dlls/geoip/GeoIP.dat new file mode 100755 index 0000000000000000000000000000000000000000..ef08df0f0bdd7c4c7e005d8023dea9697843512f GIT binary patch literal 692128 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
33?~!slr}) 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 V@WI|FQX@woz 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 z zM|$V1N>@z{xD7Nj;51-kvfY5gz}j@Ro@raDE;bnkzGi3|2pRAg@EhvYaU2f z0RzEgDS6A0ewbl|+MS0JBg;`(2I5BIk}omP(m=7C1p_Sz!e!*G00R#iXr=STlt*iZ z0uO7yje)iXo-y!V+J}HXlJ0kf#d1wG$$jQxubzj2F@|ONbO?a2?JdX zJZ|7py1JaMrgNU%40Jc}3pe&}>50D-?rGpD1HBCNG4P~;-kgBcyuqBl3}qup_kOb3 z4D>fJz`!j%beXDZkb$R-#4~>Rs_LGqiM!um1J4;4V&GYJA4(l2yRNFLQZ;ci8E#;N zfsqE%nJog}*3#+O(47@4ly{c+iRduYY`d3v`4NNoemVvirdR5hH zRn>fsIGtTqR8^a*s+qF=49qg{j)B<*<{0>nIVY;BYgN@;1M>{1YN|>#RkNCEQcb;U zV3C0Z1{NBKRa0%MsZQ0@)78{_tT~~YnqE!4PnP47)mviVV}>76m&y+3j#|b=mW1U7 zR%l*QO|8^@R}myZ>a5nhhOn0UnSsv<>kO`nc)_ygdfw~YG9jz zFKKQ!@P&aL2G&$lU$FJ-YHFukN(R2tz4p@I#qdxy^$lTY~Z3?IC2GLsDT-3Y=)Ycp{^LXDqAQ+ z&B;&;GSun}^{avF2Cf;^J#KiiheRCl;h%8mOnRcfZn&Q$d?RcSZMx>3fByWFtp zOmC(t=SF!qTGHv9sd{Cqd!(Zq72K%gMn!kxdE_a!-b)^vsU~Nt%5GF)ct3S!rb;2q z)s@rSNOz;E`~Sb5mt)CrBb#ZN)GX>4?z$W|a^0xoMs+u8(a)pSaHA$crm=vM0Du^V2N)Mo%}MbfcGU zk_375cB2nFN~VNQapwJ~GN@D-KpyDEG&cshF~N$B{xv$*#+KpXqoaWb@il)eyKe(~ijXiFB>rQ;8%PoKP#vLg6-*GH? zGwORcj=Hhmji1~&;Ko5#`++J;Dw#iWCIa%l*&#O$yK%&wct234G?MQM9&_V_n73{n zmrR)+|Aa?c<#CduoO0udEY&?rop$4z8)w|O?8aF)F1Qn)r#k26zX0GUojKw~H!g7k zGHCKhuefp5jbB;q7x(RV8fAJi#BXvlcjI?AZn*J>8`s_VlYQ5)^)GgjvXc3?8}eHB z9}bl4dsFW7CT_WLhY6TaX5xM;BU;Q)4t=MIyG)ceQN~RCry)6TdB|dxWwL;DDQ}{w ziMvhYnYhP9x`_%V?l)1<#C;|znYhW~Xe$Y&8Hvo4DykGH;wMkWePG~n^d4w0j7NS0+OGSS3Dv5CeehHxJa zTnwuDrrDQea(UQyZ09A&NTkC@+ zTAO%?`Pp*wH_?XU%CgI2RF-;#L&(W`)J!~yKW3sGp*^(&Rs4>GM|gCdO>{BQ!$eov zPIMkO@r2IoM(9o*$McoU=_PxEW^WUH2;%oO@wADj81^$UP-bpofQc8_acY*DMHpn_ z9l|pvhMO2{Vwjv4*zjES)_ z5czrPIO=#469|&OCriC(;uRAwX=kE|m&re6sWVw>lJ;LU@tWo3Hk5-GAmcCv|&O|0Zp#mQuaPh=)?#bvAd@@1qZwwYLCVxx(*Cf1wy%)~mm60=nU zCO4vPU}bq5aFdBGCN?va>qwl>O>E`nm-teXe#2yp7O?;D_In5{J{eMo_&+t1FmrU$4an!{3CJvg|&*TFpevqpvTeW4{QMvh> zIBeo46NgMZlC9chtM=KdN4AoKJ;Fg{GaNH<+Qe}aCuIl|CrtEYLN69MW#VTRACj#` zW~*!R{m&-On>cIYoa{6@&u6Qb_b{YHqfgm#u!2;&Rfn)dqR3CExFzt^PD|Lw1FUzvM)-jyyN5$yR@x_=hu*8^SU9 z=z{$HuZcT7xMkuF58#3FB=(6s;mUVZLtKL6=KSr5v1aF++4Wh=>%WnY)A z%6U-UgZ0@exkFaSAOCt1Pa+jO$n&702h}{N zKSfIB;~qRE$L>Kd54w30KLT{8_VA!5lf|i$qeP#i-`j&e+8490=6;0!9t`$ifCqy- z80bm-z>=4v@^jSF9z4SYaq8zJepDI4aHt2vM7b(}NLg9qGZ#9z5s4 z3m%N}V5|qDJ&8{UjFC;w1r&bXgYirrM-@j7c>>cSIZDD8J$OksO{6b_}GIFJy_ z?ikux=fU9|bu341@ZhKi8$I~egH3Y5GGVg^TRhn2!RHLO>RxAa)OPY0+PRdYzVu+1 z2RrF}Mg3a0Ud~aw$=_&aj|abU4flHRqX*y7-{-*r!uKBRC;Y`6nfVV44|?#gc7F2U z5Y5BXBh)gviQRsTeB6Vd1;{6;C#jNfig0(XI!!p^!8yWNs$A*kJ-A4|ARC)CFENz9 zDY@#32iF;1_23u6uO9qHxJGR*Hx`2A|3UaupXk3B-k|-kjm z;sqvWc+pQ@Z%}2PSxgWo$BP;?bG@ie5HnAw)%2pa7qxVCdkeV$ynFlyTD<&jomDGpmJj~WM zy7duV=TR>n^P-a%?O3Ee{SLadBjF{UAgR`cp&WHrf;dlj(VN`Oi|z!OPY*A8l6z_A zNx}%OVIOi|FP_q^{RsW31E_E3szF|i_2OwShIsLe7lY}`h{-h{>cueaJnO}CUJPd_ zqmS@nBzYRAJ&HVaA zc#SHrY$gA7FW%6tZ+dV4zH+J;^SyY>i&<=Xn>x*l>4X_Nf2KH`v(%YQbB-79=+?P} zdDPjt>RrMD>O$%ws`P!&i^ZDf=Bf|KOQ;`ee<|T3FP3R%xlEFye@tg3brtm!>T0Ug z|I~{$n&qfJ^J1$P>*%caVhdq|7aMiXCNDOV7wMz>Twe~`bk24!zROGU=NB)2m7^wqpR11Ls^7f$Q?7I`{$Sd9Hr>os*S+}5i~FnJem&NZ@V6KLFzsKe z9O+FjZjs@G@+F=EoYj@dgpbb6{r=dQnQi| z_xf{nPzk5x2~?L_>kg5TZZkctIpL`nh$wCr2CNLLscKDF<-8@3|%dgkVVa= z_N=aQeW*_U-yJ~4t>H^t&NY3g;e2HhtrsQTm*aKw>sjk94JV1{45cQ$C4>2F&bSxj1u~!L0>AQ+y3m;n2S-30i zBCP>%&uoem?Z~;T!f!jy{n7AnMc9eR}?beHcP#s1GB380N!p zAD*QnGd#$&5e$!!pYvf9!&3~$=*+Q%=Y1IG!;3zQXE=fSg3dWpUA;t}sGXMy7ptpD zKD_0_tJ;6fhsosEsc-l&#fLY^SM|)N`tXP5w|$tV`%d>^26?6rvk9|&xWUXh3~yCe zcjl?Nc{xyiXA410R-lEQZ*QtfxSA+YS9 zKK$jwb?w(<@(qR!^VB~++~dc;K9u(3rrh)Wi96&iw!)7hCW~{2AEo@b)1P=oD9%$3 zE>sym%K32@yGTx1whG9jydQTnbTd<&3Vu}dqp}~Bn18Py_YtI^w3>P9em_$EsNzS8 zA0GA!Qq!0g<4h#Esvp(-u>8o7>G_fAN4_6fe$@0M+mGsg6M~ghwI!|@YQ$6xj zo*y;*=#!@g<*66*)TBIBi*rj1?Z?zSH7`#U_)+Lb9Y5;%QCGKqn5XJ%Ud_og@S~w0 zjr`cia2vJQ53e7M{c!lv#1ESvP5o%*$4<7&DBt8MJL~MD3wwemp_$>c`{$#4}?qucmH(4DzEpn|k=s&ySwuUUHiJc+!vFemHBWJ~hy46mO@4meTL>>>JaKsKZfbdXSoQHCXW$* zjMV;fgi(HsCXCVkSi;(xYMdXh_%WX01V3ITyx_-+gqNrjsp~nJ|IKF-%~v_D%y6rKXzZ$8kB`thzG^Zb}k^Vgaxt(J1tQVSS%sHKM2Qj5s%QDvTs{a9Q}?XRUi(2k7q zp&u*#SW4$3?Jx6Vx#kswkEwsxQmY7`=+@PKd`e#9$2vdO`tcdVv;5MSo3+$>9m)hY z>Ry}t*zCs+hFhqg`?1xJ?S5?YBiXl9ZS@7YY;7gZm%6X;SDL@}W0&ULgm3)VBg;sZ zqmx1Ra)kxtvCoh1b^d-o4ru;?aFF^VwL)!mNVgs)9HAbi9`oaPvNfsl-IcY~Nk1+# zJmtsFgwt}d`*DVRR%f0gWYks{v~$sqOPXcQS2SPs-+spVRXf)Rzfphp;}7lsNw`kU zt*vhOp#u1u;XgX(U%CI2Z)pbs)Tn*?-f~9(r2>hY|D9BU(gBpwd>0|Pp5@5p1Gt-T z548fdBDE4#ehkd7t?mmTJ%Gw|?x#xSDufhjDm9H-SX)(R~8|g zTFhzZ22fqM<`HbQRZT)I?bi+sU4}-iu|Bh0KEv^1L&c1dIsR(Dm_W3H?0Qv>+YykZO zcqV`WY#m4)M3qsVCIoA%!Gs~&9~!_g%`p}n&Ts^EWB|_*M(G?`pD_W94`3{v=e0kM z(3z)i0{MjiUev8G1u&8PGPMN@ZX9}~K;%PR6G)Ya5a1L)4CwE=7j;IjbM1#W+L(0V3p zpvp`(66VS0KM7l?pX=7G0rX~_?b`W*up@vk2|Km_mFy5^?h0UE0K4gbqg(e7z71e6 z;XCa=U0Z#xd4B*0$UkW3U?B0AYck27=p3RRrXHalr5+O{91q-n$5q~*m0l+U_$`1_ z0bCB?=K#(#=QQ;U^=ts=2$DRElfMwa#X#bhq?hQoVjXF{62MhDzfgbGy{-i?f*pUC z+dIuasDDzgQ~#pgko}{p{X^$p>P_mc01!;v?MJhkz#T!9q9c4Kp)|D&^)71JAjaza z@0sjXD*b5=pbn%CqOM`uGeHavVkn&U!$g+G=AETgjWKo2grZ_?#efkbSa^ zyq%idlj83P;!B;gGl;LqUsHE!e|HdNdGKV8U9Myb`aGZL*wmPBxlY~>$pMy9Z#F-%eVKu3s@)Iw%&joQl zh^s+d(7i6o%r##oTnQ$=#9oqrVfZWc8ud5o?^H=Bldt{^qHGA)gSaDbUb)Cr-kc5?Goea(d-G$1#mHqw5rd{rERhhgIonh=_X;0U1^ z*+#WfWt2Lco-+hj2yU8&RL)O)gv?|pAZhaOhTsb!6oQ|AfEuLA=i($GOcsa`q9Mfo z(;6q2gzzAtc?c~CEveG$0YWQkalUG;{f7t-Q`>~lme7pTel??B=j9YN}}521tR zj)YEBSH9|^{jP+^sZUV5QM-rW)%&4m2)#mhCWI$Lcq)Y6OpyA0Lg-6w%%koX!XSqI zsRO73b;8pcq@z3rGaM4aP=YwaLU>lQ+Jek^xecvFzNu5HKc}^ufl&{{_ z&a@DwYn~CpOmbURm>t6V4CjRKP6!Lgb3>R%m`{C|`lvpNg&{1W^Bz@3TukVguRb6w zp?(;`@(`BloR30SM()fyE42SHVPyzU(ElWaEg`H9VOYO!%wbai-|Nqkn>*;Ku zZlrFaZVsUvt9{N;X1JBGjk-OAFGBb-gdGffGIOWS?9K4&5O#&|eF(ehe-pyK5cZJ2 zrS1*kJ3`-lHGo}`&nf$9%7_O-_((=bk@@Nz;k@=Qgm5v0D-17DFNctPfp?YRFFJE%@3L@1^< z4x@?on})H3$+j@UVc5g)vdKYphT$R@VVGgKb*~ld;t69l!KZzH7y-?}FhZKwTUdFhj3Eq%hLOu>gkfRq%U1{4Wq24P*qVG* z@LU+0<4{*f&~miHXwEmP6`3=imDKM<1dZ~qv^PhtEV#-T8dhjExq zN2o`s$EZ^OW^$pzI6>zm^%ON(N(Pd&EC2Y+9ft!4&w?T zInS$M{KB+fsgi$97ymts>*PP={L0_|>RvLOq}^cnH}xNCay~c1P?5wv|5h?Ta(fPU zL{N$>O?NV(G*!YfguAH8H_xS1`3MRkxSQrZ5#&TrA%goDR*aw$LHgbsxqU7wN01)D z{Sl-@P=&3f3RLL=l^Q`B!?Fdca)GKUj|eg&s1`v6{fq*YTafsnDJz2P2x^dP6{vji zBd8fcbv;&|w320d@~ekh+OHi!zUG1gRfk-cS}%ekLj4E|BWM^w1BP`tiVWH)f<^_Z zDZ}Cj8nadWCVH)!(XmC)HUfJDEh2D45RAYXfj0tI1ZD(A1a9U#3Y4ornFWbo?Rg}P zWqoY&M-X5sX_AKw5sDxhL71)LL?Vb3sF*w=D2c#|Ag<>it#OuWE)yWMjNsu29*E!} z=Cq37!3bJM(3wL^@&Ap|Mh`0HBN6n8;L!-WMetYzog!!#L5B$1Gp7qHcO>^LP<;zj z=LjB;pi2Z@Y4&HrkOK9Dt~sngb&uf52zo@&D}tW%pJm$r=FnRoMc)VpMer1J`b97x zg8t;;1!{DG8b}_;zE4LmgyA#P!PMjt4UJ$}1kY+`yguF$97V3F=OP%*)=@fVOaw2G z$42mcB=H`mlp4qU@ze>_7dW)E%FJJiU}6MQBX~K2$q~H5?&431;8pT#RQaL_F<;lM zZ$$8><|%|%3e;QLd7CgTg6R>=ieN?rGwHlupx!A^%L~-(2K8RpR1RqB5wLT-e2_NxzC1E);E6DG9bcK}> zd`4as!6$^(R7w6cf;Hr|)bCho9eI5OTO!y%-bmdf*)n(5quZHt_b!-usecpA~;l_ek)LS)KR7DsBa_K%jB|kRK+?frHZl(gI2eJgj_XMZs0jRJS^+ zXB~Acg5#0IXK#AdQGM&E;dRsr4sg<1iwcTfB5_d zHR(%uJ%Ya?xWQ`4f4U)KN$Wom{44k8C~ih@N0j$}&IC~?hLSV2jw%&J`6%v;;;tx4 zM^Pq<`E}H;I_eCMrEC=CqWFzmt*&y_Rd+{GF^YSls1U^ib=ARo%WJi%1MOGAL z>#4kY%3n`4ucva@v0XjYr=F@FML`sKQPhf}Mie!pc&1)r8uEC)o~j*1eiX0QQ|s!f zo%PhAda6zo^`od8MZG9~si(@-S84TCaeY-7MT023^;L`diSC{1t4189D2gUg6i3mR zVRAi_S6Ndj!e?+Bn+*BxxM<=JuBE#(idIp$l71AiDBMx_qA=-5f=9+859DzED8f+$ zq6kG1q(6jyayZG4L=mMwqP`l#CM$|~6fL4Cq2HW3mQ5|m((8dJUZwLOoz~Qcs1NI$ zHiWiOOl9VyQFM;tG2PlOiuU9V)Q;3ny7jI4s!J3-7q3MDctSZ$vRJiivC;AH{?yUL?Oj&5@hG1{w6_ zC|-#sz6U`3Nl{Fe)sEsdJ*5$xs=R`IJ&J|(6HoeYM)4L~r%z9}YA#di$FPW;0o;N$WdN%!^_!9SP;2=0|b&ty}L#u^^iGmQlHBi!O{}5sL^* z+G3smK27PhB#MuvKK-TCkEqM2lCV6A6=ZoqC80c4MzKn_enMDH{WOX-QLJUe_@3deD0UOR ziQ+rL9_qJI>?KUo^WVo%?v48iQdw5!2l7Gf{1{FAoRZuphoU%4|40-kqBzO}JVup{ z$E8X0ruyn6_o}?VbV}AuzKE52n%yNlOE^b8AH|hu;{CA;QCuVlUy9-~S!N~S)hPau zdz9RAqxejJ-)Z7(AS%&4Pa_q_VxjTk?=v0WIGNB^167^o{eKCB=BKI?_LQSEjQf0)Q^;J5# zDz%#SGYFZ~tQfMjzgj+LsJVI!c`@WOtPw*^LM>`->TbQeWX^Ty$cS|b^OA@IXAGlbXc0pjIxS;(fFnwNs~8@P z;h`8>|7TWG?O|pft*_d~&_9MpVt71;M`P$1!(%bDXL7q3PVnBGB4FvPsY$UhTbvs(Frn7X?iM#elc9GuddWr zS6OX93?pI~7{kyQ2F36U2Yot*U)VZ0h9Pu*<20_tt7G_7c8jd1%!;pI*K*f=7Q^Q;tcziD4C`aq7{dl#d;$+@6GQ2;MME#S z`Nyy`hHWu?5yN)+GLwmgYKPoFWMK;vUphUdP{}mDis5U{M-t?*i^($z)i*KhCGUyh zTY{W8Fz34%_Qmi$O>y?eaEN>$h96@1F@}Q-rP@pxf;^v7J*@pBF&rf?qJKQ;Q%}Tj zk|32&#c(Z#pJTWf!|52#$#oIKS+>4cs6H%IYYWx+7%s>`6{-V;>O!IVr%+vr;i~NX z7_P{jwt-4(pz1eJO&X|QV)#{V5e-zNfok4Bb!eb|i{W|l%A)W0#@jA2CswXK2rzJWT{K*8eu-@=_1?yyjbq0C=C zUMpJKLK!-;fKpbRvJA^vsA8eKh5IesZK0Bdd+1l7N@hh1XE>94>D))HtXnU#NvcWN z6q>?mx;5QGRSVUu+wV$cScyBWyynTYki{Hf8A2X840A11*M0LW)X-ehLM_c#8mN47 zfp+TX`ckK!h5GahErcvIu;8}P&_Xi{jVv^_P-LOl!nFqKu7-)_l@~%yEHt%{!mvq0 z^+-cyv*5H~x8Pu@p=_GaP`NA^9BWELHNT-+-cXrL@L2F$@LKR$*w|3*YN&o{sLnQ2 z0SiG3e>7BgHc}al62pZpJZvFip@oI0g}8;71{G6g(s}U*K-MrcDFFVLJtdlE%da| z+d?l3PqIsHk*Z#lcvUQqKAgZVx&K><4-NLS&|f<_OpwV8v@nPrpQhGk-@z6}SQuhq zIL)CJhUw9trSrd;j7;|8tVYSQSQu^LH49@byl7#ph4D;y-b%dQ9!HglO_1Z2r)>HB z4<{x~FIjkntrMv)Td2pGNYf+>uhMK#l=vQg=`KGS$joIAi@ssuO&-(~3kxkwwJ_Vl zTO9Ol3o|TCvoM{ZBun3hMQWynS?nUAJj9=4VLo%-u`t)dJaRElR%1@%T{;V7i!xkf z;R8DFSy)VXpXz4o5(~>@!gQ8e_=scqSS?zlmeZGUSJ00asg)K^lUG^z#KN~0R$JI= z;ZxaE7S>o;XJM^{&n&blQf-UWBP=Bq)>~*-q&gI-jTSar*rY4V5pA*XIm5?`lzg#j z&my(W!dDiyTlmt#7Z!G~RWf^V&O86p_iGEgE$q@uBst$$*rW5GWd2?Y$1Qwk;YSPm zEF7@#y@mb%=_1qn!NNfcGP+cdhd4i3IAYz{J9+VM;g*GeE!?ycKXD{m z4cV4)sCeQ_oDx4u@XvNi#S;m4Qf1o<%Y4ej6HgO&#Zfk%xGf9I=;hV5i| zapc936-RCy*>U8=u}bH!AyjAnh9XrXj#}iJ)NRsA*j1#y=T#6o);I;y9Yd(KwDKar{`ME)=ONMe0V8Y8Ho$9d8w>vc;-m zv2w&=#Nmv?6-Q>Vs!^UN2Uy<9LW%uCcnmvC3+!+Qji_9Bt!xB#wHGRl~;0-8fPCF{Z`I?c?Yi zM+Z6`3dmKID=&9GaR~!T4c#^$($I+M2 zhuU23|Ac;V^p{h>%_i0Ux9bM6^=axeaXcHxVDb>EWDbpEnC2Ha2RXAN=!}eGN*vF{ z@k$({;&>sB(e%f}F)og=aXcT#OO4g1jn&b{s&W%GK8^{p-ACd2y8l((50*eqdArSn!C zZ^tn^j%jhsjAMEnGw8q3Ol@b{EQXT*Z8J58{7xKm3Fn)sJ8X$k@|aKO-8dHL{DpBW z()=D_F;&*{1MM$~<3sXN>POUNx^=l+bgchz9G}o!DOVpM`3}iyvMlna@x(hG$!ltD z9G}IpHI8*`T^~=pirWy!W`-N7o2a#IY760WYCgx>7RPpm((4Pt4(gXwIntek`b_>h zj$I6Qa}+tWFB@I z<2Vw>@i>mgaf}HKZK{zi@#^LO;y6Jkxl2V)#c?K%pW`?k$0ogpi#gk~%xq#)=i|5} zS207o{Qobx$>_|>oObe@%G`co&aYH4uj%XPckTQU$Df+7$MF~W2K8@hGYf((LiCLxQOP0gXYZK^u^O8vYN)Sy{YJGBV4 zsrgh7hp1D6x;m#`N#a8zGDIPr1|^7=pkWDIC1_NFW+f;pL1Q)*Q;+hXnvk1n$5sM+ z36f0?nlc|Jp`*O{Q-WX#+$HePF}3e4fxjg2pNV|hkzN7Kp%R42QZ}MN5@I|?iyEh2 zqPsL_HOY}j%Mv_Lg8xU>m%!Upz3)G#5{-&7M5z#|H0R#S6&j?@+561%EMo(Tlth^_ zWRA>3M1~3tN|Q`U6cwR?XpmH*S@M7Ov+wHX`}u!9`}2IB^{#il>s{}9*V=3EbM8Gs zRR#XP84P<7@uH^}Q7`WIBIZR$FXCS0yhwPF_9E#;%FAD<_uQl;Z`;h1p>eOXC;OUt z!V>1aXzxYAi=ynO-Q~dl|Kmjm3Y&SlO475Lr;``=c+uI5yS(V)MOW$fRc$}v-ChiC z=6SrC=Uy**c+t&^?&@o-YR}-|Urm^kQ%sWd^5OxFj&n!3i|*JTl5!s}>Pp^MYL9p^ z#fyGkOz@(=7mrK$s27iUG02MnUJUf|hu59GbiQz~7el=Kt#e26mT;&Sqr4dA#R#<> z?&Z&v^M}YiPk1rX%U>RMG2*JpVTHoL1tg zS>l-}g{OpUK1pP<7Y#}(c6E-6@@bM!r-xq5^j7S&vy=m~P1~nM=6G?b+CF3C^AwHw zD$?2lBVXvnA}}rErZG8yH(vt@C2N$h*R} zC7$<0sK!p;XV|^iXhyWji#ufMLoYTcyvOxXsjVSJC~X zW2g9M!q2_f<;54`UmmBk+l##{da;KqMQ;Y!7s=ONeBac=4l(l>a21pH)04r2a2VPK}HFu)L)v`EOGA-HSiG_|sVUOBVk2 z;;0u#r2LPu!=U}kS|5%{;>OV9b9Va&Wsu}V6;JY^k_dI!S7je+`%uM)GbKF5hf_sP z6SCFmB4_x(*M=8NaohP( zn=5>{(ubxJ&M5Ij_~jq*|2{dQg=;0bPRKD{FHb0M=0kG{OMEExq0EPq6*uazwuP$7 zeP}5{$&Dh6Z7Y%1KD6=SCh=Jc#k>;FEk1;NxYdWC4{hcDZBl6GgV%@K#qSU2>AE|-=5_qp0`Yd*?ZWBh&0LF`HlII@*yr^!iS_8m+L<7J7w<+o5LsuU<`_RP)zVxP?nil{0zYljy;ucwT zuMfR^=%$Xk3wvnn_le&xq(41HR%uWV_|V&=1V{9c^!rHRVWZzy;2`m!Xi2>GIbtzH#> zO}N5`*F`9Ip9|jfVV4hY`LNxGw|#iuhm}68@!=ga(p4g>g>16chxIvPUXUkktS;aidKg!_cw`>>yunYtyO zeI=fsN<6po{LdB5&&7m4`S7z3e{cqU_=S0*f6jl%hhMn>x&I6Ku<)A?zx(*R@J@4H z?DS6`{`KK6AC71r{@aJcC7wS@JpcG`RF;PwJ9f0hb9$-gn2NCAu~4i}oMfT0g-RAqww%8~>RJ4~^@>sV;g|m{G_i28g-b2ex6s%^0}FJI4I5gZ=a*P$Bs=8IOFis@ zIayr_msx0P;c^RCSkBu&S5Car!c~^@>_*N`iPu=T!NRo`uCtscHM-3%t`}!*GYc)r zEtFd*wVZnmt(945F0|qN@3lR%33sLr~v9N92 zLc#*4mE0YB%0kvc+CoN=q};WTvyeBM&#QUSLO13Hg%<9#aF>M+vfNSF$wC*A&ce2( z&JDM#`0Zv!?y+#Mrs=<4x?8y4LJte~u}WTXPFdU2LN5~^*U#P-9=GtIh5i;Eve3ua zc~}wS4ED9~h+@)D7*zf|s@lhd11t=-oF}+}!a+g~c8Cba$f}_hMq3zWVYub|${sx# zp|(%RnUTU#LN<()dd657tL~`DY$1-fFv-G`7A9)!6O^cwb6ihRE}h91rdgO`VXB24 zlDKWBTbQBsNPTyXW?7iWky@C`^7LKCrOa!iU;hy2{QL3m+LBclCW@VVi}mT!Us_KDDsjSZ=RYJ1u-+;WGvBa|>~P zP$>DA7ItfxyDV@Ip|@XI_}0Q637OS<)z{a;Z@6%j>TdM*SvYLrdkY6F?6>fP9H0fJ z7V$?5KUr|s`_Hn*+&*aG7fmbqAq$;KJtV(c_`||)7Jj$TPHo-Q@u!8qOcuFuJ3>1) z{;}|{g`=8ESAI+rQAKS%Hcqy2g6(W;C)&>5b&~D;Rtv96A`D|?+u6q53^~QdSvF3! zafXf4Y@BZ6McHxJ=9$#Ao$Z%)T*=us&aqL=Ms?fSYAAQt?722-*v|G&i5s6%=)07H_a|vyEnK zq7cz?sqNe}%WSk1X>Oy1jdDh^)bmKGXJDykNU7&W8*OZ~ve8;PLrXnuLWgfsk%Yxt zY}_hOXmgExzRiYZqn(XA=#s|hj@Qe9*cJOWgFt=TM%0GiM!<}bGZIvjkT7f`B0~9I z{zR#bxUsGiLZ)$Fk%^@q&R0Jh18wxT@tBQAC1)$jc?~$OILO9e6)EQ< zt(&(TFVl4xyR$Le#z-3@Y&>B`;bt;5N7)rSIVEFkjI}Y&=(s!WlQyQ*dqJ44F!WTuT-;gonhuH zjh_{AHcyeYMK+e%SZw138_(Hz{;lqn=l8lmJx8?V@S$;Qh@lb%q%oIWd^ z$X(49Hdfkr-Nsus-mvi|mw+_gQ`XzIbGUNX-8(jR+gN2|myOjnKC-dK#``wb+E{O6 zosD<3z$ce_X7aJ9)bpN=4U9&qXHltVajECUQqM*kAKKVt;{&=;>Up!&vx;h^p3OG4 zsO?s@-CpYX*v1YUpV-)DgVwg%_(D~m+So41SEZhBNG{rk#T46dmH=BjC0DUf5661()m$g zq2yD5&;#8-E!4?p*xE4d2G!HjWstTsz#QkJ`=& zhxU)zsNx6wIMEM}A1C-L?mMoBC;3s??`(aQ{5V;JZCP~fpW;VVKTh>KrcR>~zWh=1 zGlbl@&h%>oiTh>EZ6Zn zw~P*2fUeF3e$+EI-LYKc$K`%p?8l{k)c2#Y9}U!&ts44qi611q8u@WbnTILo=4TT> zF7sFHnXct4{J6@GrhZ&$<8gk0gg*i1M@#Xu$~-K#VnaV#`_aY^E(cm@AiS9YG(EbKwtjg1xXq6{{AlOL z?SALzLVefs_Bt~8{P6o>`C%*mtaURd;78C{TcuWEzq7+cgd|asm@w|gP(H|W|Mw%$ ziRM>;glS<$nDrwkhgnOv3x0HzyeMq%$DO9OgCx}H#E^=2_M?kxyBeLljLtnqa<3%a zjGVpn@Z&x|`uK6b(dnt$UVc2_$AjX%js8PMhyAkc!;<&);}Jg|^`oDP{f#me9%B;v zG2nk&4KfNt{FuNg^JAnWL;V;g!iK~B7@<~A{BPS)QW)*W7(d2~j}?v+(yJ#8p%Gpa zReVY~NjO+$^NqTSPt*e#|v4{jDl)6Mib(F5KbA=OR1(_)O$l>3<>qrLaVj-Qr&f_Xzj; z@tw%m!f%A%`q5na`&9g1xL?>x@&npAd2;*FkDtVU79KS6U;H>^c$+fMuYUZ)MaNe_ z!r%S)L*!3C{u1Fv^tT9gju;8~QSpC;$G9~Ga6-Vb;|Vz1EXj!hoE*SO0aTKlLRVfn zfGS4ESLQstGpeTsoSZpLczOV5h@2^`DrD_hB37BFS^$>>P(6UU0i45r^~&Ph0BVTW z44}41En&FKb6x;-0?z)ND07Z&)IVQU7X(m0fO-L3D9e;{Kfg#-7t2Ey8wAiW;5=Ed z_Gw|G0GbETIDo4HxHNz(185RJ(*Q0D;EDh)S97-)HhD!~5$q~t@oLpx6TtNWTpIx8 z*9o7KSQyM^70GTr9M9M(XLJL_a58$={S_W`a05=BEI^dj$S_P0T z^YoNjn*efU9_rs5z^$siMaWMgc(n~+rqtR6Ug_fO9v`3UdMEMJOo* zP&B-K0Hbtc;_P?O9CZw!lL#f91Lz{&)kxZxdFa*M0o)V7qXFC-K<@y$ncD6F^a!A5 z0QUuOKXX#+g{Nqm>J`8PoQN{d14j5@0DT!5egq)wBYZf3K4qT%Wu8Y=>?iCmq$Vf* zG4(Yd;GARz2Jm>mc^@(;fWZL_ae0}Cxiq58Gcqm>h6^%#?hJ{FxeXZo$)p zB-2GEmU(6duz=&@SMizW0X)mOll~knfw=+93pj5Dp9x@UnP-|7?0i)%&=H9C7cxBp zSQNlw`A>;^nteWi7Zi~HBufK$C4glCyri^$Q7enJocEUv=X5L&;8hjf5v>T|%>Z84 zsNax5>a*2b0lX8y+X1XJy>MKVuL@wbk#JHdSsTE{0M-TYUI6a~uwMSV{Sr3>@ILKG zv%PRr0G|Z#K>#0`5p7mXwrDH+Ncgdk8{N_}&(;9884Ip&+XL7azz&8kfSmz+#-%FD zp9ip83G+n&Uk0#CoGHPJDdggw0KN-guX_Ai17S?Q5&2g5hGv1De;>es0QLv)gBfpJ zz5E!!Pnuuqur2Xm0DlDVO8~zHa43MoTIv7Q{uaRR3NIxCrT=FDM*{dOfWI|N%5RbU zp8$>qD&BsqlH^zbrv`x_P7J~m#0kNQH#2S=P730bASzKoS#fgE*@r6!QAOmPGUvg^ z)jTbT`azr?#Kl3J5k!q3&J5zLAgTtPEs-0@7yR+ZAgTw!y{lRfYs);9_yyD;&JAKy zndehxGJjsD%u_Rnx1<^8y8-o>ZT;1$y z9Yh<}N|O;|FEH2e@ za_@c_adWR%5JQ4^Ac%*8=pDp^#uIlR>l4Jo#^=643=HCtARd*?e!~7i)M@UVWFAwI zWB}7il0lLT7INNM^|*`=4Psc(IRH>HT;nAv@b@2s7#GCIAjSkSDu~g+il=NhR%6xH z-4(|NF(HU2gU+_^j%#8NPibiX&Bf#(UJYVO5HANYHHc|U1I2uL5Q~DC5yV{PWDrjW zF^k#D1=zgen?j96<}fY!YNfg7nIN7GVqOsQgSfW2=N8p60Tu+YFzDPJ0?j?)<{mDb z#X-ElWhLSBYEBE8=AI=%ER%4lkir*(cuAZCr-e?F;9<7+{@t|6~r*yTBu z-;i03@h#4v=7p)t_^b@#ogm&-ey$R(7Ovr55yZM6x;6JOb$d1U3~26Iud4Ti6mAIO zeZ$urJGLo^4-_kQ$92af*&M_cc|yrY()`$r?vo(48on)vPYoa5+_NKy-9hZs>~qMU zsp|6}zA!ppitGwvd~@e$%8r<{dxF@@1+I$P`j*8RUe?^XI9uac37f$5~Ayf(BL={g8;p7l1nJOw&7N5}E`5fnz zkdr*83Q4%!IBI&xSk=%w*jME?J)x5n-X({tg-|<$>LJt!;hYf8l|kl%yWVStP%GqY zt^Y~R3*r0_>V#0&XmU`jy&!~oA?Gt_at@q$Q3#iWaB&C?LZ}~dHhelsdBc#i5aYV8hAP%(laOF9t)v=2#<1VWJzqR500X6W?7%y}vV z;@sxWv&Q5Qrf6!W3MrW;!sMJ0!ZXwi;pq@&QK(k**7bQ#2y;#Dxw$$ogaskY58+wk zm77ZoLs%r2*w(#cJ{Q7EoQn{ahVViNON@R4jbd2{FB*xf&r!b|!Yd&xH`(HzJzfjp z%@9_E@VaL9X>R`N$c^?}A*__0w?h@57QGV!=gzgcI)ryaSR?(lA*@psJ){xh`Vig^ z;k^(xm@INfy)lGMX6?9=4@1}%!sZY@4q;0O9~sZx8TllHttLwDY<|iN31Pd`+#P9W z2%nj8xi-HDVL$UcgzrMw6~eb6>{h0IrK#By!q*~ug$tW|z7bib33dJ77sB@@=B+fM zA2g5yA^Z};kFv&W{7Jjb&mkNXp@gC4*2)MR4&e_q`89;!LiqiEAEbCII3Zr%yWi32+xA2T^;d!owr;Zfr3fH!9mWCTi&RV^&vqxPR#zkQ?4&&l5 z8c9-L*dUCCVO%1lp_*c7u=;#H)mZ;{Gp5nUOO%Efk{iFj|V-D5SiV zNNZu6Ft)aEPNX-hc#H7XFzyJWtvIW06KN;BJ?z}eDC8f`6MbRC!mz>!gkgu_4?D|> zsq1EMFpOvzA;$FnWl)vz!Z~Lm2rm z+J{jHqZoERP@tx}x7?{9xVvJy^Xd`CeTIM8!qe06ULp?&dkc5B@H`a8qa0uukA(4X7=6PPpFp{B=od!+aK%Z( z_4cta28A&ojDf~O<~jWw9L5mYBzM=*&@e`YF)WM`VGNg9CM0X02xFvjiQJ9YXr_vm zz!+m;To~hx{W@wjA&hBZOblak7*B;U$!NL}o)X4X%^+>M=j!QU%nf5k7&F5a&tkI_ zC5~&h+CCk|9FcEYIPdD83FFzY^Eft7IA2JI2dejlVJrz_Q5esMu{ez9jQ?F#Tb=L! z!xf)6FJ(h{vdlYJ#?1ld;Tz$Kd*xeUyhCeY ztTglD#&A^_tGWDTbC7Ut7#qV_7sh*Gyc@=P6Cc;+hA`eYad78rQy81W_<#%6Shi(n zOBf%S$nP~if5Nq9vTj=#pNel6?hx)YwfhuIcd%b5;9rKZD~#PzsHMX#k#XSB&e;LP zIb@ED!kct5`A*L7(}wW9khS|oeh?lI{-`~NRm=glJ*Y(eMOBA{hlRfie+%Q!Fn$l? zk1!6ja9*PF`mKfMFV&LM&Jl%z5&I{MqvHP>$uW*4;w%l1kg*~^G2$#_UMEFRN!W6oG#5Xgl8HHjM!NbToJ+95!8;LTEuyrsUE>DzW<4! zmWt;_P$Pnx5$ByJYiA12NNIHUyoXJMeUL+^X3kwkxMZQx0-x)z?6*~w!M$k!w z>y(cq^r4H2U4?f=D(+LvC{{5E=}b2bguHtMJ;d)5-Y@Ja118^ki#!;?Ln2JS zS9$)Aps%sd_*1`M1dm71UtK@SF!KG6kYqpv10xu$;-Cor(tUr3iu|yi3PaWJFtr^n z2*yP4WCUYX948zvM7eVyq4ES3CknY*Iq#F0OL~Z&!X+j? zHG*jooWz&^5zLQZMg()1+Yvk+!K?^otEwv(tXjEbZUoOnoC6qz^Nv$^HiAVFERbZO z&}~Ir9KmzPX);iBZ%G78HLhBEwxWkGMzA7+mm<#FjF%(M&E*y0a^b7O*MzL{lzX^R zmT~is;LV8hK?dzG0hms2N3cGEl@Yuf!8;rU-~TJNtA*@+O$2KrSf}Di<<4t|%HUrSDX&@xHp3DxoWtU`SK^? ze2em1;dg4aPn^zB&h8k8A0qfEf&&r!7;)Yh(+JJd_|Fj>)ac>5_X7Iy>q-I9H20TUmAC zIYR238$}JnSz9ZL+Ok7W7zB>GP84;c&Mm2yBD0b2f1+p@b#7brqPQ^Xtlx`-7YpkP zDQpl$6|J&MWUx^b*G17dimRfyG>XfkXcBb}fxIq@;`DOo>z7wV(Nsb@cBM#7$*&f_ zMtH4|%G9}D{01XwCQ>4-RqiQ^qIuN0OL7!$7L`ZQQiG-Q3xJ!L8<(R-6*F8~mkK*1a zx*0XD_gAFcBkF7sYMPLw#)!7qQR;aK6gD8?(2tmVZh5hti>ViZq_OcG8Ox(ZXHm>0#gD5gi9 z{gXqUp}@|J;%TYP63!N~$2lT%h0nNE>WgEUubJY?S`fw3C>BPsM0vF+ip2`WbHe9^ zF9_?Edm5B`xZ5zDmPPTR#>=!RC=M@kVMg&v6w9Ni#y{K9sGaynu|nRu`9OSw$ri<% zQM_d$Mm2i7GKzQ95jmFteOn#Hx+vB}u~w^qayDm=??$oS^v>j=d_xqQqIf@wjaqTc zF$&}S|36WD9>s@I=fJZ$itSNsiDGLMA4T!80>T;p#N+^Vwuyf#p9OE7y17fHYgC~X)V>lt^+^x8ZiM&pVIm*q-JtxOdC5Fl>mXv!aJSB!x zRpf1g7bU01a8?XwNO)!pRb$TCgK}Q2%01*~OH$3q&ynW2!Wu&MNM#;$YsFAI=G<}4 z6V?&djiFu)=Zjw;Y+deYSMIzjxiE%{B=M@qL@nXwA49{KbBQ4EbGVH3u! z0l)tr!(}n&mc$S-c}T8^p{XR)xj{S9RWV#G37c>|Qs>&3bFXAPxpQ70!woU8iqq#> zD2bso=Im5^rNG&FkRJg^(jta(k(R<6g{_3N+&YG^66_|~zd43GVz?!S+hVvihPKD~ zS&RFB47Y2@^oQ5&{O3P0*p$Rz#hl&yRV^is!XHB*=6oE$I8c+}rI7A%mbs|u9*gXq zkte4P2gSCD819N88ABn4R1Db|(lKPz<4I~x&0Gw5PPFb>EY{{f|BRt?4DDm+6vLfz zxPzK>6tW|#(FZ!yg=ruKc1Izr?q(`-{}qyoYw z6Ew_;!l#6jgtRbOu_c)r!_)F}S`5?GkPgpK+RTh$mdI>jtlX0-_sof5Zp^t~y8-8y z{O856AcpxdJgered#qg;!y-vIiG0TA!g(%+mt%N7h8NT$b(Sa~OJ#qV+ZWF*A}<+d zUWsA3^l66!WJq6AlvW5iOvZ{UkrT%Wr2>o8A#&BMl+HWCRl?Q6HA3pFjbWX5uH3`o zdLw@?h7E?lFS1d%DTWV>yuF%iR&h%V9~t?_BA>*t)kwB6X{F3AwoAA}xHE>&L_Rl~ zUx<9EX`(W(-7$P+YWKvjSNv+DX)i};F5@ubsI4+DkN3ZH}oD)YK@pFYW;;0!% z?YQ%TsFoxo=NZB#b;ZvYULd5fp7cpBilecF7Ypmh(IAdX#2X4}t&t(rzch}k<7g7c z6%t-1yxb@>6}eJ)l@YQPuWMAiHjeA!xIz4SqrfhxP!dOTNlJxfLN3M@BIQD=wG`nF z(<<)ld##0Sgf|Iq7TzMH!mW&?l8s@!E$-a2+Qo6Z$Q?pTydplKCFG9ek2^ObUSDbN z4aN~N`r$Yt;!$Bt7&o;elpD!7Qp$vM90id~9ND;YTw!kHB*_aYDH_r~jynzSV3a$> z(LIjNap%FIi;$#i9CwM|9mlG%ap%rO(nIq5Oso4vdJ22R@qmb{`JkGR zKNLqF!ygvuD||%$P+<~p0dYJU2gzeXk^v$Eg)OBsIF2DIJ|4#taSSz@!{Qij_=q^h zmV4No*T^_V896O*EsSBUR>3$ShcjLdKPj9boak~IG4Y=)GDSEwj%gy(P3;U#Yl-G` z7P;h4o7y>X%oXQuKppltFOK=@g8bPy7Kkr2l0_nm*Jo&(b01E&2bpaHWv_&gRpN_-Z5J!dV-4?qwXs zyIKP4g09FXD2{F7AII^D2<2Nvo+)?! zEa=lXwyU_q)GjLbd=|&o~rVWI5N76uvY1 z>&iXf8@@k|AH)wB$&VsG#j#PXm_G-VHopiD2@eZ@RY_1$~o&-)1KT*i#OnD`7YLc@_<%F|%t0ZuW2>GcAoF;y{k(`mh zR%KDu1g=ittOPDe;OqoyNTHgry6~KYb6YuANK-WvsFOe~W2bfk=ZVud*49m+UIOQv z+6xk(oL*g+K>Y+RO5kEuQNoL9-yng8a-N(QEi_8ta_KY{UYbA?W9_m8dQ0aDNtz0; z6ka7{p7R)UO#-bGxHf?n30#*ziK?y_-XLt2aL%agt5n4@VRIoZFo(;unC6G@boj^8$j3jQ#<-}dj3*xj{G_!eU0-Y1+ zAbCeq+sVX-nq3m;D*0Ur+%3X1qnvne0{s){mcWAvbWh-Z)%FnHmvGiH)p{oIKmxra zbho(P$MJ^}=&NF%1RfTdZDROH0{tYR5jK1@fk7%hCLACfD0HWCu=o(+<7RZjR2-hb z_yk5IFj~bYgd-CeB|`hOFvjq)35+wGQ^49M6PO^$MB!5jOkz@*n>B+xC4rR*OikeV z1g0hMbOO_*IYT&8I4gnK%5&;-5@~i$0`pZhSNM!@o{%~GYyykK7YG-!xoNmqlIKjm zy^z3b2`owAWyzN&uq=TWO$1(&kOQI3SHzbKUlq~~4rGP+>s+b{ydnN(0&kfdU{?R< z^E(M_N?=t2?h3kYI9hLN?znvLk_=B1|@3H2!%4UnlTI0=p&uQn*X#EC-Q23G8Kv zWS2K7w>`&9L<@H-(5elJ3u{U)9V5;!d3kHVjXKMM~g@Qb!P>K~GXmVZs4QWC!< z@VBad7ygmJpIRVP_)8M@btHjf3H+mmEFP7@zh)gF=_G(Bi4&5}-p(!M#3W8iR{Zxc zN?3bx(%FJ43t6m^#3@OfriP~qsdl<*N!%$oQ`V}|j>y@LhW#NL``3*e^&r_YNAlP{NCZ7YpkP|MR3F9W#X*jpG< zo^*DwmPyE-scoO}S7$~(zg^vjb z7;gs|3xkswVz`^zLsc9m9G=7o5jPu0CNVCFQAU4s5@QS>Yb=kK(mM8Ig60b^)lGj95 z7_Z*ooXQmOtt2)j@pcj`O%lG7#JVI_C9zhmRwuE>WFxzqt%mO=u|c)#lXy=J-RYph z`zmfU);>t$vm`!DVp|fMllWMzwj}YAtg|YfPiM>gD zq1rE#*qy{Kao2~hlGt;czU%PUQuro`Zf+g_$i5l;y;s^75a-L^yIKQ`c=i>lK5S-K%2a1{7=dM60-Pr5=X>cmyU9uPdWSi zzeya^{zDE)JVI_qyiQEvq?EHwRZ5{s3MZ#fS+(rlO&hji?Wrl8m%?c&oSVYwDQAFZ zq);t|GgCNA`c+fTF3qm#+u4%1IZ$2voa1cPNTH@F){?2(LbszjDb!8je7QskuM4DH zFNF(JxG3dpdK7XOBB`H3%M==?_enSdnk~E`Dqf;uv8*y_ZX^}#?_-uK5V+w6mY$a@+ zLK_*pDTP}kxmm~^{#MfwlkGMM+X-){ld8HyMX!)LmI$4ESXQ^=+eN+GJT zhf|11!QH*7A5$@&LL!Bfcv8rHJDoyC{J&7=Qs|mOK7~7Ft&l=d3hjme+3b))#}qnC z*h!k~h*uXA;k#5t$=xFNq;Ri@J2l-?7?whh6#A!dUkVSX>i!gZnpVAJhhFtg;gJ*` zOyS`a9!jB)37WhA_cdM9v3_dndiZDxgH(J>I3R_AB5v=4Q_ks#z70v?@f3!t%8dZ! z!&8`;!UzeUNMT$GBU2ci!YE1HhGS9~YYfsR+wvNp!jmaXI8M$FDV|DUY6_DiWRH_m zm|{3xotDC^l=GZ8J%t%5%oL{@Z-wk=b_#P-cshkSTzaM#);^QMJQD{NUC*CQVS%x{ zFoi|pi;d(tk>`#5B`Lfv$-iM*J?@)TZTmMStYr|^p5l)NgP*MuvCt{QuPBZW6p zSS8_G!nadcDZ<)!jFHtTyqm%rBVU`sI`RMPtXJ_p;RZ9hjVXL2$tK|kDSW8J*lf~l zi{zYwk5l+5g-=r0o5I!6=!ST`%-)t4T|hm z%sEGUROAArov%~)A%$;J*q6e$>iRn&t2o&2#Yy(lZAlJrh4P<22q`E3IR#G|2UGYf zge%J2j-iA2!Z2Kpdq{!bX98KYf>FXa8ihm_J#)j#N^mf8dcIbKaEq;I6I9~rE{9_^fb;);|y_EziJw1sYu^k z_o}6Ft|ZmdI4524AkTo*NaH-oYo<{vjoNHz4t{iiR~<>}3hBuOXPv;phsz|S&gDkGslsw)8aJeIRT|f( zadjHkC=RYa2l?gCG_FrqJcIDYM}xdrTaw1@X_TgMOB!Wqv`(XW8ZBk8MH=PmYqs&~ zMipBL>2@3A$xR|R3*9-rHI254*lj`%r=9WVjx>U4c%{r>`qHq{u%*V~`_l+$Tx{Y- zBa}u=%3)z7ji?Bn=Mds)q*Y9$kxV0%cJ7i)4>ot*&ZLn|BPShJu@$R`g*1w3^pL!L z8h57AHH{8wbV{RR+Id+=9U`yJ(&?i3Q^@PCH11|GjeF9#SG629FIw)dB6aB7eQ69$ za^h#gEeXG>wnb*s9_u3Nl^VW|k7?dV3n5rLiN8ozii0n|3}=;|odL z%w(%wY3xs9w}fA%@vX=n;oda9PU9PyGV!@OvSRxE}tH#(^~cOykEi4yExE zxBWDJmX51H&0l1V#lva*p2n|f{3Zn&ch@z^A4Wp`ztZ?SjiYHCN#h?SCxvd0|E6(F zng=CeLr=!p5>F7GDC8DONu>l@r)Qjfpt7(^2B&14JH@F&%1@J=k~1 zAcJ@YK~;r>VPQlV%^)ViHSRv|Co;%NlFT3_k`~hEj0hu{6Uk@LUZfx_n%X->ItbmB z+ey5$kaoI=bQRu}!QDpAt>)egMsYSX=#@ctlUhBbaG&sgVNW4Fc_4#_rPe!x2PJ$+ z*vBZayS^C=RPm7v`epD~2K_U5RINB)yr{!#K&Ik3eNYBNGZ>t4K7byQ!Q;o7qGVVG zPh>DWgAr2TTyTtx_DJI`y&9dt^bE$x;8@|f3?^qVK7)xFJek1+qdZStKb65GW~1?h zE=^IZsToXD_PS2e@{A1TsA{HgmT-0kPs_=w+EwOeuponHB$+3ipTV;t?!B1aF3ey_ z28%LyPV&W>iu2O*8N47*m_>{U_kpDuyeOSzLVEI21~1DiD$pfbTb{vI)xMg+YZ<&F zz9NIyGk8nd`X8#eIfIWg*pk6V$E`c+P~j8p7;L^RgKskUG=p6kY*(ut!krm> zk-=vfd~PgLnGL^G(G3oZyH)&3xF>_X8GLPKmVsiEZyBg8zRTcn2KzGjIfL&rIFP~q z41UnUrzv+i|Cqr~vcnL$(@pyaGx#NgLz2^)tNCjNe`oMp27hGmyX%0O{F%XDnTm5M z+fx5X2LER8PXG7Py0TDPc%HBhjjQ?jD$>pcS=1BfF2^FTi?X;_lKMucfruNfOR{LBVq;T#X%fIl6Wzi~&o2Ae?i#7`BO(w9Mnp?8CEsI;Fz+zid#qI`jhtKN$e-_@X^WA$2 zeUey07CAJ37BLkA!eADmEW+Z9eESEbbIxs&tU?jzV`Wbk5?TEV^XTBa5z5yDN)(v$#8pdsL(kZmhax(OnYm zR}`|l`?7dIlKZphnME&gD!aA4RixU3v?gJnEc#{fu#xu_dBn_De9BNcp{6*S&YnLoT^3%M+?VfF;>LQ;ql^6X7QBB1mVQ& z|2?Zt$~s>#=0JE&$zp02)3cZ+HA>tY^b8eeW--gi8KtMQcp-~9Sv)J@T;VgqdBXWZ zj&Xs=LgAt;p37pfae%eY8#Q*fM0{x$FN-Y8;zbcwy<{Ru{z?|hC4W`uuBjDSe4NGW zS-d0R8^SlUc#9F^;a|wME0rFUtjgkpELLanZWe2#OyOFotuxB&vv@y?_p;8}Y=e*% zm;fwpwQ*ktV|S^S>GR&L8#Y|CPI7N2JEMHbt$*eSIgGR{Q$ zEQ`;x&W_4n+)VpY3N*4yo^x~iDvPhP*dsYL_e!4%-$>zG7q!IpW$}}W-)FHuiv!|6 z2&w<0u|WQ_268Zq!&&^2#i4A)Z|=B0{F=pYQg+AAf&W1xIsBQ$ku3gF6@`DBXwcw4 zSsayP|7LMa3JeZTW(rSRMwYUNNPhnnh$x#y0q zwu)|Fu4dgF8s%_)4j0Pi1;Tnl`hQUl4RW|Rhx(GR2`|bU=5UFz>`EHv&@_ijbGS_M zCh~_>m*;SW;q-xXdZiRt#g%n+4!7iRO%CNbT$@8_4%g*ygZjGO^w=zi62rMyvmvjt z9Gd6QBKLpa3gFUinL}$CzmXw2cC3{+y={}jO~wM--faB2RSIo$xXoy`6S+NyJEX(7 z@nRES4!Inx96~wR((wyf6%Yvu*;hD+Ob(G866!IULoA2*alJDFNhzmtNNe`pu(*?w zRTXveIo!p8^Zic_#T+{1&|Xz{8U=RUF^4WWbjqQ#gtS0?%4hTYpX!mhad!?qa=0gl zZqm8eH1BQ*^?BWw!~K%<%%PW}7dJW6JBO!ocrb^NIXslZkR1Bt&@YFF_|LnNd9d=P)AYY+}QOwDyGLY|GkF zIgHO?bk6yfEQ@1u7;E@AqxPhXQ(=OtCaTD^nUurZIZV!BQ4Ujbn481Y9A@P(Er%J3 z)pQ}v&Que3I%d1pa+o8++HKkrpUGi?B=d5ZpTo1_?ua(I>9%?~hu3p>C5P8?Sf0bHxr$HQ*@f%a3dM)|Z^-PMIlN^e z;C_g|GKcq7^-d0}a#)wcYIV9MhqaQsYV_yb9Nx=e{c*w#;xta3jX7+~VN(tt=kP%e zn{)W^IL$3Ne54{HGh4I&2{TP(tKvz{>(d;z=deRnRNI-uXU2azz(IYH!$H~kGKXC` ze3!#+*M}Uw&S8)EUZH!N{>H84BY+w8z8ntZ@V$}m&*2Bd>D!Nn|CGbe;%*p!$>HxD z4w>4+IsBT#A1eNq!|%p8E%5qN#lMV@@i~&iKc?-`9R4-@m_khjPadb`aY7zd^3L<` ziNcfes3bzk$s(17)TiVW@l%cD^gJ%i^!Q8@6ex` za!}_;=UfSSlcieCJnE`gOISOP^YW;ZuQ(UEaX4R97v!C}<4EhNNPbZsjl?e&*3YAX zNJBQyJ9{kcJD%|UPaaq1acLfx=g~wumkDXj)wv>%rjoFDke~mGUu`7U-xdDC8?%Tog5}90IR9^XMQQa(dfIytA;2 zu&a<&cO5rJ_vCSJ9`|#KO>K9P9(mknBpgLgIoV72KpqdOsyEY5eLZ9}If{q#7$C3u z3Lg>n6ZRKADtt^xX9ngmERR8QX|Qo@NFI+HK2*jTy5Z`bWJDfMw^7uH9)p>lF z$C^Celfv3O)``5E$9gjbY{I14Ao=@wY|3M!IOQBN1Nec7z-C35@-0&MNXY5}2TIJe+z2vrL>tAJ|aXA7xcy?}FMna$lyuAyR0Ar)$g zxWl0iuQ~d3?2I5Ii%p6Y#%os4l7_}0mF@*5h72R+EH?KbOB=v7-J@a6EsfpXBB}b3wXBR zyuOnOwk>0;Y;HfDAYXIK6`mKE?4W1?F3 zz3a=WbtAuA{8b^Fu%i_PY%1XO0^Tj)jRIDx>dgY)Vls=nQ$T#DfHeiIDquB(ppm-S zyS9LJ#u=(n$ZLH8?-lTV0UHX=Igk=J6dUC~x1A3P*ipcT1#B%~a{(U}uti1~5E}Wo zfKOC(my9diR=}qPY&UAIaHooF@|nozLdNjR0_qg8tAIZX*j>Ou$_v@9~$BHT><+F_+C2hbB&8X6mXz`pCtcLSXKHzD;jM0O98(Ya7a~$h3=NZ zs^3)nUHFH|*uS_Z7x6bY_9BiH@ULqB5grvXV#ky=Bq%z2KK(qQh?9%XzHwp^Clygi zoK*}dlfQBirxsDAh*PA`5UtX`0XePc{4=G3{>Q=@Mbs?f%p%S%qN?PqI;-gXpB9p8 zMVwni^&-wOP25(js!{yEJ4h|ruPr=Ja`s-gh$cmxU&O^lXC+=BtS7v%h>N65IlZl4 zbe2_vA{t59Pl{{QN&fMYFfmVB2=K-)kR#Z;x$5! z{W=k*P*tA)i)d9uvm#m)QBp)%5v4`vzs;~Ar=FyF@&BGd%8O`O#Er&|n`y0!Xj?=Z zx>3YUMcn+qwYSo&9!A`Zy{(9LMcgi(d8QYyiq43Nu!;z&Xbb(qKoLQsLpx!^BSl2T zV?wu!L=pXpNEUH#5h=;jMRY78Q$)UqtRy)h2RMnd&+)2Q6!Ne8?<}H2vErQ}|1$<1 z>r_P7B05Wf#V#hh?vmv0BJL6CC}oDdTM<1a=`QS1#C;<73u%Fxy^46KhzBI;EqqY8 zR7R-NN5zMW=v%}i;tqpr(t@5Y8+*rvkb+yNEA}c$&o`<`l7_h`B{9DdL$T7IGGfc(#c7 zYC>gpy+8@+&h?@qo-bl?5zk41KDchspBE&d+R`GH7ylnsUjlwp^}YX+s8muJ%aBM^ zs0@`1X+TLygEXkmz2}bS&i9^s%tMkgH7BKL5TR5^iOi&gLWuH1=Ajar{onJR&;I8B zJm-0zcdfnF+H0>poO92;AMjxbW|rV14T^C%d?w92 zAvN<&B^Q+73n>@!ln_~5f@LLGQi7!=rQa~po+&La!3ueC&HIl`D@(Ax1Yefmn-Y9g zg4HEhRf4Y-ggNu#NY|8Ltu!ffn_#qWOR&zEaUdH?uu0-~!i}bv%@V&a!4?r((wC$D zp#(qk{4c@o5^Ph`{|UF3;HMJoD8WuMI=_;;Oo@DPPYL#xV1Ehr89gH(D8V5GIVkjx zg~MhC{lde%1iz~3NC}RM{8oaaB{-%tkcs)}k^EkQKV;y~?_VW2A@OhFKf-^Np>Kcy z$^=Ru@;SOw0^a#qE`T!vI90s7u!8V3Aq`F!;qoJ|7{Hkl&k~+(Y$}QPAA%|eyt~Y~ z0h}j7etrN|46iCuP3S*b)Cizv0G9`FK>&3ExX@VE5~&?1{l=4V>IQI801X1Dr>2Vo zs4wDgNmlZb02&3*Fn~*?r-la<9UBL5nKb^*l(Tb10IdUP5X z;f(?C57^n=%>g6>xFvu)1L&xxP62e0S7(X03U3o~U)(OjfL%rI2$a4L=@vk*0PYH) zhxFY8xI2J*#qSYv67LhC??nFnmw3+r9u#>XQ2J@&AtojbbK^7-9|<5N&7%R71P}~( zcjthRp)55qAgd7$ASN*qKvaaCG6K!wv=1O5B@Ycopi3%%p#h|&%mgqXfNTK01IPv7 z1dtD)pfXn1SE95p2H*y~r$^4ak9`8@Cr#gg_gR=l?yq%DLXld+_~_ zdL&`aj|VV1fMEeVAtkdN9>56I|4HFfW(G&fV3g2bPGi*cbO6r<@Qn1&3iCl7 z?EoeRFe!j{j3Wm{gDHXkK59)3V0Hl0WH6mY2;jW{J_z9b0A?67y09Q0YD6RydCd%9 zmb|W!_;CPpCC(9kBK%Y??DR7(eyyT;0nAquBT&B}fJG7)22e|J76-7zRF(UPX3GLt zAHebeR?2dP@CzY}`DMU+W&KqEs{>eNlwSwDA8zsFSrfoF0j!mtp}0rB4Pc#F&)jA7 z-4MX;0KN<02Zh=gz@`AU1h6@P?@y`#=Zn`?liQC0>|%%d@}EU1 z{uID2X;M0N_5|>20DA*C5Wqf@)qbr{&e}l+3E)rwht&=0UVDN@}>} zTLsY}h--pqBmK3?;kqDN2XVbL{6i0aD%(nICu|?Y4a$K*{Mz2A@!sT*I*5*p$@f1( zx_6SE#^kpKy??vrHer__x(9K45O>O;tMCqWK}%lUg1F0wbiX@@`+~SfntM;u_fRw% z+|Ouwwtpaqr-FDeh++^Aae{()IEY9Py@Ch^@kkIQK|HDm%%3|hAkI51-7WD@5aD3y zKQK!h>Z3u}LB!M=7y5-|zlk7{()g!JT09d(A&9JaE{ME{ABrxHM6M8WH;BiB=p96V zDfP8J5JQ3(sFDr}VzALq)OLH!h(l%I|9Q@^Af7OBhKoEIEPZ4e5yV?T zj11z%AV#TabP&&oj1fL<=J(kko)6+VDVY!JKzt$S{f|*3F9q?csx&r;mt`|9h*zZH zlfVDH#(3#p3u0mruLm)K3tPT)=eXVo;!WjDkrx;C+d)hZVv@Yx5l#-`-5{oj`xToS z#59SF;MbhK?@9B%a7GXx1o2_8^jU&oS^1ekd>6#5AifAmuP|A@%fHD!xp(T)0B$XTDO=$iEEY zt02|}u_}nwGWc5YId^MhGetRn6U4e8zLkdYIoS056Z&=A9>i{mJA&9L!d`w7*`<6a?g`@8Aod1vIEZ~g91LQA5C?Q3 z`5%+HDh|no#D7fvS>i837N0?m1o2xCM^Dlm(u;DI2OUR;iIhznGVaUvBbe z!cC-UDrDGZB76Y5%7SI#Y76&SXl|jsg%%dBRclLOE8#Ul-g>UH&{n*)h3hS}G4*6j z|M8%m>GTE*T`Y94(9yz;9Iw1?60%=jw;10}7H+f9*}|=scdzufKL_HE<#r3*Ep)YT zr-eI=JICA2!d((MI`%%1=fA{zEZl2(&&<4k`A@AqECemwZ=shAdRlnE!b27wl*sNF z?O}1o;VeHQ{;06TLO@xu$?u4S_8|*{EQBrOEkrCNG?u7bViw{SY~?`XiApbNA;UPP zm$V2MTh?fDoCvMef;5hWz7~oWdMmPPYQ=zkWWd9-pM?Py`Wul=1I7Qh4hLHpV&MrX zAG0vj!sBKvG#+MVYPf|FvU$?NQ^tV1W~7BN7DibZZI%9;b@XDnp0@Ce_1_7@YCLD* zZ41v^7-!)Hg?dp)`_@fKb){B;q|!bGEagR7nY1cZgRq#!jbyM|9STWq?84=ubW{rkch#^wVN|2FiI_)Os};cQc%ITn7j@QH=5 zEPQHVnT5GB_{_pW3-c^2urS}k=b9rfIe(q_xX8j%3yUo*kqehJPi8j#Z!Imiu!5_F zzyBAmwD6@YeFN%wt+Md7h3_n^w(yP2)>v38Gqy73w-(l0SSQT{)rTe8pcO^3(Zcr@ zHmQ}pZ??Q2aZ$g;!Vk)MtL5GIz4J|pZR24}V+(sMY?s##;Z6&?RFj`1aw2w%(2;9k zuZ3SE?z6Dp!XXO>EF3g7^rnn2%q{$E)__02Uo9N7a72#3SvV@fec`trmq_2=MfgVI zPagX`|IOs`!2Cx|B>!4CVWCXO`&^8Wck(l_vW8GB7s90>oEk#K5Xy&25A6yeoM!mx zGCsq&oEgHoYC21Jwy;tN=Y&w%xG?M{KKzGJD}?hys2)O<5UMFcRUv1`uXc?PE|8|C zkYl;f5C*9oLcI{`guKW2x*=R-d|3)=E)JnV2=%38WjMe~LTD&)iT)j0*1u5*w}j9* zgzH1NEQIDETpmKR5UvQJNyz(GqiNYx#OGIraFx-s>1xAUgm7&LEjd7Hq&%!H{En`Z zh7npD`!-6WZ3yi{XcsE|FV$##LkKrY>|m5Pg>bX+Vg!!5V+ePK&?$s2A#@IbHMv#D zrrQ*jn%fQOs-`=PK{x5|3gI4+?!vo6rGI;VZwU8?a9;>LLZvrx|F*)&J^dBJ?|(xG zXdWLDJ}m4dd?bWNMYx1YLf+{|5)2_Jr4>RbgqV0(7zrV2>=(#5F3}bygq*ch2z^3G zhfoY56GA?OtZB-H5SAl5Dum!jKT#T2oci7(90+;e5c)~%Z(0Y0yie91`4C<(UN0KUu}1T92;+2P6(fd@QGahw~FZaSqO_|FfWApAuJI8+~mAa_KSr6X|^PUuR>TF!WU95 z3t@Q(E5v#H@_1zMl@h-ca=|cRCbLT7*DMtO1VEg*t>scTebMII5Y~mTDTMVhpk_k| z--WPIVjcZx#2?pYX}%9(O9)%F7koWO^kWF8gt0AzW3&ljmn^pncL;Ze@KdPtLn7^W zhj2KAJs}(jVXqAKg|OckFf46|2SYfdR&tK?=MavB@QXCR8oghl-$FQQG#vi%5dIF~ zcWM6Md7@~4hVYl+jQ@{X{}rAHp-k92`4RSZJ-2OHiGFbE%Y|`j80UsjK8%WLsvtZq zjMKw7BV783&SQthXR7I}Fe-&{wm8d9{W)P&HX^6YpQH1_I6sVP(pM2y75X_>7q1ca zKHD7*~dIwSrt_LNyPg#s6>FDvWE@dd*4t z>x}*NVcZl(n=oz&qiq=NPO@olY?wd?>2EZeo5ScNev7c9@#-ALZDHJM%;?xfoP=q2 zmDwG_JHvP&jBa7v6UJR(bT=+{8$y?R!{{OLJ`?}`FnSv9*Maz87!QTfD~yLv^7VUs zG>qP1l!TEBBM?R;jG!iw3&3KWu=f!!EcBKH-~WV>kU>ls7urHToFv0YhmkTOT{7Y% zSrLDo9t&fb_)y{F zLN3K8M1~8QBm+Jb#^^9cNJDX?$S7klM&xPXGeX)hF<#Gw@q8HL!+0U=-N$*oDDqMm zW5XCH{<3f)|NVzBUgcct#N(dgPN)5AYJFWeA&iM(yea;MupR&L2SaE)DU6T9cqfeM zVNBNCO%c8;oGP3qhA}^k&%#)s$n#`O&g*k3jmS`o#21ILRAh;eF_(q0Tm@u$ylDAF7^~E} zGK??PMCDh~Oyciv~J5950&H-zzB7@NY_7%qM3;rF$f z2b%1+guRcPTf_KK_CJ`#%uw6ZFYUL7v0G+4!q^$cF7cm)G~>ndd`}qr!`Q1J6!)>n zYGUgFDG!FdI~SuJ=Ghy;&pd1+_$7>g!}v9f31l2^UM^J-7 z6ug;|xgg^GCmk0GYssdz(4WV;5nQaMi-h%r?6kf~pg{ze7~W8h%%_nC!d=`rg3H7& z7hWN35<#;Fn#$PU=~qh6u&mzI(l-~j5VjPy5?&*u<+YL0XX)1Ry*`4@5wwZm<_Ov< zpLW9b5!@KT4H0yZ8FS+`hd=&TD~YeUMPf%`Cn3AIHG*#H?zRZJh}<5*9T9XD|KB{` zDUqMN?ot=sCEhJ$kb6wD`+ z5$7OgiHj3BFIMI$R;Pu z3kyOn$YKP2B5);gT)mCHZv_1#=x0LFazF$Fjd+Px+F%(EiQw@F9uprb1MVG%qL z!EiIDOq*Ri6~XfnjF9C>;iw3n5g8r9mX0kY1ZfBKSUn zA0pTi!B*-0IxwprBiP0TZw^e>jo0=Fc0{m~r;4)jXJi+rJBr;ARE%Oz1ji%T8^K{k z+ZVz92o8!L;KXSn=ygchvKl`}a73-YMDVMKKVIT*5gd)+nCeWC*Cf9DiJ)8*e?;(a z1b;^GcLaaQ%b((Z#F;aVPw?1}0#WbG=fxV9jp7uE933^B*;Au9O`7siREU<|swVQw zU*mN~wDgoaGm2_aoE61+QJfvcxlvS-%{ft2j+VYdV|oh|*^hsI6je-|swPhLC@zYk zMijNwR5OYTqPS4p_u}DGJBm6+Q#b0JS}YXjt6mfrb42Q*z6=@&ITju%4Wqasic6(w zBy23>%Z$zCBK~S=BHlELW>GX3zcPxeqPW`R$(Zb@g_=lOMoYi_=i}2gQCu7K9@wrE zwiZ&nUZjn%t*|No_&17J6gNb1Ulbjp=orO~QE%hiBxEl)tBYHNJTN;&(KU+BQQRhj zTa6hlyU6BtQ|&vVxI2nFqv#$*wRpB z9mRM~ZWOOYF(HcAWlS4OmJ=m%THiF}Ei+%VnIz>qQB00via0CA=P^c}8pW*4b#7Kk%v7MbH+6vfIY7DusM`Xx~;jbfRpA^T#XR&eZm{uk1b^ZR8K-$e0M z6sx0H6~))`^{dBz*F>>a2iJ1-QjITvqSz3{x+vE3$l{+=@Rz0hQ)vG2uN>J6pEfr| z@naO5)%EvL{Gg^S!mUD%nx!Ldqi8bRuBIJP{1nAbv)yRMi(z-mY>#kn6bEIzPq;sd z15xjlCe3_26vbg4DQe{~e=%J!)DfPLG5i+AsWBXl;&0g;6CRJ^_bC44`7e=0WaVKT(v4c?bT#QJj#H9Mbr|E-ov6im+VF+qpC-A4Am`D#UP>G^fRIdJGlC&xm<1 znwa64G4D}_(?L8thRPBv3D1dn>zroi#&CWN=fz5I8C-#MtRj)E)ncd>Lv?jsBZdoN zsHrA@cU&kv&3JY(rP>nf2>R z^i$;iLJnj=?7zF=pcn>op{i+!&|jHDwJ;cMSPW0a@PwKu4v*nUaX-%yF^rZtQaDP; zJIk0Do{iz@7@m=ao${jla}xbLUx;CR3@=LaQVio_7%Tp=(4S4Zyb{B!()h>PYcaeX z!|SY!loPlUHCenZ(&bGl-xB_B?M;f|9cd=VFvX0Ektgx|S1Fj=v>2v~zh^Y>i_8#y z!1ZP}!bjpWg|lLqEyC81W0)iUiP7+coEyU;iJuAQ3FmXxL>34a3TezBycSDb62nrF zWy0mc6++r+t6oewFeU({v=}Js&b>;?Wp> zmv~HgT*YDhKVtYhhCgHYE9O0P`DZ3w{)ypVMds4wKxm0L&WfW<9B0H)HjY!{I3@1g zAj%0zm_zwEPK%?0H2#`DUA&bd(57M>XBvCfrBp#8Ewts&Q1KrI~#OtPwBW_1pRWKaSdQTxjCgihIMSO`SL{lCrLl?!4-WGk*Oz zZjPft9M{EhNgU1MXc))kaa<~cM#9E%TxODCK8$&V^dwD0nhM!;rN~urw2I^EI9f<- z9!FeWEsYuby+)i7u8n*D^E*lFINHZ?z0tQ3X&d*>z;;3|W}4j)M+Y_CXe@71P1tlx z9QVf2QTk4CbP?$+yfu#7j6J)%J&tY?yT)-x9CyY`Z?zl(=jEaoitAuQ+F+tgM~xlcuejzpxNU}V3;%%pAZ=?Wc8kkW1I{| z#4$3C=i(R@$J5e`7LJK~uP(Xo==+Sko)z*g|9l)T#qoj)@}emV>o!&fBrhA~D{)MZ z@T+Y3jVnn?7}!!#IY!jrEx5dV~O<4jlN8NSscqv@6=HL zMI2wsW~GofzOPgYwoc^x|2Q_ru{w_Rajc2s8#S$!C0oCZW8MEBZG)P=6EXt#A}_L|D< z(<$fs9*E;`90z4~Na#<{&*Hzt@vHITVNRFd;y4k<(K!B&<5(Pj#Bn^1-;Is$`)3?~ znS+!EFSFwHj{^Ry8TT@`QO@=b{4zGm+Bij=`iWXgr`o7sduK>_>HV;$*`-r?hK+M< zR8$iqoN41M!_T%+$#52}vW*LDoNJ@1l;_zv-?Ub-@qiMmCQWr=4I4E@c=O_58T>+t zwQSV2QCpnKIwDN)U$Ch`<1=#MVki7pO5hkZQNtyQX5U=)kxS_c$tmMZSSnO zLP#(2rZzg-XlCO&8&}$BW#cLvEo@wEqq)p>wJCF`O_}3u%CwYtqD>ikT_b+2&_6?3 z+ql8T^)}ksXk(+Tnoe(9rgB^F|5~L@duhl!*tp5YjY^3k%YL(sTa-V=i5gcY8+Y31 zY@>^fTV;8h&|jIii+8nghwa^cxKtR#Z|bI|yKHo~akpK1d+n*1_u5F?xX*@Vqlb-0 zY}{|-K^r|ezkK)?G68a457~IwMlX|G*-Z4_+p9?C8p8%0LYvkD{7zPF8j zHu~7;ds6aT82xPwP}e+`X-4BgHip?4Y-6a6AvPXUtG`*8$>VnEvkLhWHij$7N&NTU zY&>Pg$T+kgY2$etqij5FW3(CF7&EA6Y&!N$w7dC|s8HpZ$u2BaBr zoQ+p)ykdK=g_$aGyp7k)+_6(;HNnOQHYVD5M{(W|zG>qv5e9i%WRm^g=g`SErr4M+ z{ky`cHl`VS?(z4;-xtmhPEc`TQ`_jlDA1XJfwzYwmwiJ80vuG>43y zzCWw5obF$39Jg`A#!(x;$$+`hfY&kEu$SL${Hdlt%-H{u=)aEp$3~3={)h4&?14G6KJWXRta=S;F<*5Byep4trNIT1NmR?*DD`J zYnwp(1lq}qA~V0i1m`NfQT!&;8sPJP0$n9`6n09Wa{{*|aI3^RT0C9YmqbQmOb(pa z9SPi-z`Y4{OQ5@YzsuxscLMh$N>3r$H{tuA1ny6uhlxogubvWlD|s-1Vge5(U`g|^ zuvY?)Fh~NACQu@cUqGfr-=JADp#;(igcFF#CL)ZgI9KufPav6qoj@W{`WHs@<@uaS zl-|l&@Js@EiCJOJG|{q5~X)NzeEEQ7$W_k z1O|&R8Y4WGz~c!FH5x8}VF^srq9qPbU}OSMs+HnX35+nD?z~1NFxvQz5t+n?{{)^- z;8}^!nbrmT@>h%bMd3@ru|me-vKg1a!~|YR;I#x^mDhNoe|vgemJ?30f8!+12yZ3u zb^!sd!g+w6&i0z;6MUf6WEu)4+-o^;Ku~EC$KF6E z1!og|dF_(8TgaUE8p5XiC-H;ghj<&ro( ziBprPko0`ZCrjUipO*A)8Gf`gk~k}gibiE1 zKZ$4(fh0mn1Zlv9WL6zXIEjcXH|a|vZjD$Hi6r7l*d`@LV^xzfBcICu|0{{!No106 zlE@~JPaF&CST;kFcsz;6 zk{BwHGsO~BlJPKU{NW52e^U6AkgIfL63-_wDv76)7%k-()5N}bJ(I+GVvpDxxV z@twr=No+`#K78`l!)s#_o08bfWo&B2Ww0fQ?XusR#1C3XKMJ?`i%RJ4_Z{Lpg+B>* z33m&bA*1b0qAY*>Dcmolcp!;`;)jHXg>(3`9De_s#E~R^)uF^{a6A8|X#T!FCVo7L zKa}C`Trle8PwD>>{w@4R$Oz2g1W)f2kV1u&-v0>83QtL)TneX(vxemjp(C%;QaC;3 zeVjZ)NK#ScOd$={_<;W@&}!gGb^3H=DO@ED9|^bx=-WJnYf@;TXf4&$D&;Ldf74wn{dL0DLh9+&#&pp(g?7@n z7jjLqwS(f^m_lcfn^N9A=;jn|kxfToC!t?GA8(VUi|}?~SK%E(hP^X|ZsNXucLl#Y zg?m%DN1S?|rG9IV6rN4t{uH7q^h}{w3J(~Y2UB=RoG~9xd0U2?_mLEWQa+kONeXQh zCm;>0LD7;jltMU#h%sPaEJ!ScJ}JagD5PMgkWC@M`lOJQI}Laerc=lmkzS0MQw{T` zlAKCjj>KXLZVJ6klRu)qDLkG+zZ3?i&_9KNDGWF%;2?2Ya-9zme=LQeB5!Cc)DKHx zL<&!&@TBy^h15SK!o!5Aj!a=p3ZqgOEhQ(EN``$pg=eJkMT_76rZ6Xk=Tn%R!V4+9 zmcolEypqC8DZHG*SQDJ~<4$sXReZdVHzr1YJ%zVYn2^F7DNK}}O23ykB{D;5-sZAQ z;T>t%>KjZ+;e!<3O<}6^UHIj13h!yPPv_$2amRoBErl5=@6{6z@M-)sr)VE?-cy*J z!pszA$(J+2j#z|`C9+5IPg0nl!l%;A6@He&JP|Glf02Bi!V+l~q_8lB#VIUe4(f&I zlcg!FNMTvZ`=Gj9$oTB>3puV#;mg#2pBcFHih*Z zi@d%~VV$-EOFiuXt zQrMTm&J=d1@RJF+ONRsd+M^(QO(^EDU;ID{heQqvxqc3(@UxCbda=T^{FP^N8b?wn zlg4i;{F%bh6pqXOSgQ2f`QKCcL-R=ckVf}c3je0?cMAW=a-x(!^ZaLS>C!j(e&+0` zY}&gQoFXij{_pv%d>R#`Wb0`nrwiFj#WXHWlH;uc~ zxW`n3W(;+o@#3j_zu`SaxZv68gPMzngbxeZ*CWRAQIV1~0wUa`Ou$ORO(T>>B8{;0 z5n(iqcp5Q|PG&?~dS6VYk&~Dbrqjrzkrn4T;J+Wpr{PFbQ1Sgz6s2KSz0(+)MxQi> zq|rBx{%Q0xP0VUQ8iUgqn8qL}>Fc{M&@fqz$E4?wA5UY1_^>pdNaM*ghM$!4Q)=>a z9+}3oX^cwa=`=>CF~-!^Z)K;?n7*DfgvuAvn3u+jX}p)lOKD6=V{94|(|9?J*U}i5 z#;Y=ZCH>#$_wnh{e-!j}H8IEp5zf&YX}puhn`ykA##>VI=%xX$Nk*J(ylDTf_*A2r zCNf<}$M@5ilg5lRX8Ic8hr*A9jKIjV(wHrg{9}{nC(?Xs^mEhr%(yV}{4_SD@p&36 z(^!zkGBqtsV^JDQ#21@5jJeb}E*GI@g~%5|M*A|2Z_@ZGjn!$alJaZQ#0=MnuNBhQ zFUYrPtV`p&G}foF;Ur_WZj?wz^37@NO5^)9wx_WrjUUytHH{yP3j=Nw|3BkJ4X+(( z?3Cswzg4%4-Qs)FIF!cTG!CS(FOB^tIr{ZHXf%h@_%)56)A+?`7@0OlB>Ma)6VuK5 zn8@)oei!*e_@`<8EA2h5(~{4V|D^G68s#$Hv*iiyVv#b!vcgk@Y~`jnRlK~>RLI~o z!%xq6_YRs>%;2UB&dlJ_49?1+Mh0hRyqid+49?5o9P!E-oSX4Za>n$}#`80%mO+&a zs%E_3NYLKbPvZOkOzG#ini(|6;DQV;%HYBbYAaMN#*}@X4C*Q-eR=VZFY2l3;tc9% zK#@wz^ms`I4dp&o`bHTv%b>9|G`lQ=%QI+_!4=Z@&mK)paHf4_25mFADuY%TT%AD+ znKf4h{N7udtggwRbq3dFaGh*8UO(FP8MKjx(QM_=PGb8EI%IHzxIZqs+?Xl7Pu-ls z!x`L?LAMM#W^ii;oig}b?w#dAep?1zrR+j4qhwZhh~Ifq<=xRLBwdH zA`BHb8asnT2B{2^MnkW(IBUYYAs2r(gIop!GRSApJL8>-1)(D>X5h-6dUo1J%D%#W z!u~=w(O{tXAmQK)hKdXkJ|?8u<08Y1NUz};jLG213`S+}l=>PW9GUT6!EtiwHTtBL zLy^j7GI$|_XJz?Z2G5JIJ{+L$LVPKMang^?;AKUaq}Er&Uloo&De~(X%*e%HXyg*+zjSt@R^z@&NEG)XRuJp1*RibV-dHZ zA~X1s43=iFGJ|CqtjJ)wjA`R<;V&dU%=6z6x~$4zTLxce@LdM0Ggz0wnhd_lV6ALu zK=*GA=P1@2zCnbVjTvmoU{eO0O;+C<8~Sb){~?1PO)F!1Gnm2N47O+RQwBSX{Z5g& zeEBc3JA*x3JZ5x^wl9N&YT7S6Amj%w#yph4VKdj9mtS~PX7OtVe`jz+X1`_ddj?0v zkIC}5IFsQh7~v0ze`fHPh_C!7gVVG4H-l5M-VuF*j#-q+mc9}%n=L(dxZTQSaatCq zW>MZKXX-<1v$!aWdJ_F%vIzCFxJ;S` zzCMeFSv1b#(kvPoOW&B$Lj3+$$}5CTgj6;)xC2f{GUa~EZSvpQx@&B=#a$?#*x*yQD%O{ZWia~PAuLrW|mBoV+9}+URhdHwv;3HXBSv;CWAd3>?>o*0BamWycjb!mu7SSyF zWD(0Eqo#Nkb{0wTgqieI7HMf%OulxT#KS*}Vivh93exAZ|D6?%H0+m`tK52<4Ets= zIE#KV=%2;FECz@(85$2di4V!*i7Xz=;&Ca53jLe)Fme7|YPhj~QiKskWbr~4BPEW? z;@K=lXE8=1?+8z4@l4ixSLWx&PN{s3tCv3k6;i|N#VlUR;?*q1W-(5_FK0{t8uS&3 zoIaY3&*JqgUXz9ashN<)M6-A}%UlU>a+_rFmTcY@`t$ov7Lz5?W{O-$-W8cDoF<%} z^_~pb^uELya`_;O4>d2;v(uAtmJDVKKh9!~$S1;2g>!}cP)5gj;`4={3l|6%3Kt0% z3;(w!mu9g{n&rY3LWcT6WMvj#iqzDv=~gM{uccWn^y91*rx(lqZ5HR|u#U%R7VD|c zVnY^Nv-mEH%~@MQ1OW)78d zI4g&!iF^=qJA(%rn2g~#r5(x_{t1)HA#L;-5jN#=7@9*qhrT%!a&U8Sj7?EF^W7=q^vI4NCg$)$4&!rpku_KAOTw`#DJ{q4@QSKI_gB^A z_w}0i>%s{_8q?;D9H!>*W)5#l`Ic##l*5!9-pOIIqAf6ghR*@MtBNt(X)>Ok!}~eB zC+-h~VP{BWeLl=#Ne&<7@M#V+bND!iS!$Xsq$SgsWB4Z`)XdFcK@OkgFkhN^M*q1X zbX+LDD2K&ny#9!m=J17@mI;^VutJ0`OJ1nEiMphd-qJEr+9~^;iza z4gXz)ef`OC<-K$JFKPZ3{*%MMIh+vp$4kpHd7PR@Ss7D2CGXu1%1LB>%I9&qc!fMp z6Jbn$g3gdwQTB{>R=)J31bL;CcxCZ(^EgkIbU#0jMtM}pqjnxu^QfUX)$-nFhw6Fn zR|-s^W*!&jaeLd#oDu5ead94XrMW1NdU09 zi`S)j)M;CW-*`68qeUK<<J4zvOAqw#=n%%QVa5>O8K@<0={OY0!Tl zWSr*ek&CKj9cvWmJeo%+j}o;8@(7v;mdGU8g!72y z5s`+zQ4xlU=V6O4;NdUgpK_@@`sb0(BQIqpk8Ixi0GJap0(l`1HxEY!MWNqU?>zcS z>?33^wC`se2jnqC`hj^2%6qq)!9v=QKbFU^Jci2PaiL#_C&Y&fX<3`!|K{;#9wYL2 zUdoYqjLPF_@zHsV5ox2YpAmmHkLU9EK^jKjQhyQH zyr0K()!{v%ub+{}hY~+9jvtAz3wq7UV{RU^rTI9IPx6=}&L%GGPsRQGsrf9AdD6_! zm%g6m>!1bFEX-qh9*e{m3zrD#wNzx8kZG?F`NFiW%;QV(uZ)H^UyHBKV{IO5#Qj~y zXdLxGWxh^(WW8{M@nt?6$@ADG&1R$jK94P&I2ms>n`&qwwEH2D+SCK(zwSlFiu#oL4}l0xJ7KeB}Edc4wZ?&o6lUu1Wz_r6ljB z;Z&DcLoPK7xKQMRf_Jv_<87@1Y8SlE#k8NKP<0DvR=`CC@0SDh3b?F*iwkI2@a`b> zg$;z46ug6%%1b3S5;hk4dfpu_r#n9a6uf`IxJdy`C6aH_4^gfxcwbgtRlwB+v@M`H zQ!04>144@eS{Bf%;O%RM;=^Yv{_$@Ct$la(%jbma3uvPx*#++)v}{+vEd{hM;Kl-O zD4>HP@UFyxu+y6gxVeBu>Y6SL-jN9u(5ZmVssg}qZx_pSxp zp@G~fq^6t5UBd1K+->xY+m^Xksop2-A!LvDi}Wnu0izk99v>>;VI{!cdlm4AINu&q zEGeLG0f7S21q2I-7GSBDvV6nFiRMp03y7#79G9Petblj{Nlk<;OccO@aHdicNhmTx zhU=5BfC|VJ(5HZW0mT9e1vo5}s>G_&*e#&9sRl>QUby7=t#Q8so-Uxj@)=OT@B#)F zFtmU{1q>-*u!1xG|EaIXwCX56F8#0qo-i8U;K>3;7w}X8BV{l`$fi*m9ajbW-MIFBkAy0prA95xy!MFXZg7+OLa~Okkl3cvIpV zLaw5>w4D5vLz_tjyi>qTwN5Tz3YTI5?-nqv;C=fxRY>FM+_nlnhwpz1_^^N(1$@9I zs>dfPd+_^r1)(v;S#&I5w)X5b{QkFqIcg>6GG^sJl{i=UnUMPV1#ICg7qFp#1qFOj zz(O@GDqv{=i^Z1+`QD5{7;RYr%L`bcdUAg;2sh(O9tAS{vVgA&SY5!X0=_PIZ`)`P zlH-~J)@o2(9^6Fq{Z=lFxvqfq+LEk5lK=h>lTmjY3)p0AHW%={I0JIXTMPJE;tvJ< zSimmvZCo1#>=56sN;3G)0)A5P`s$Y}aCZUw3fLnv8tfI}rr2M=p#lyRaL|;Itz0~Z zWx$m~kwy5WfL{wZa+1w&;ztWOCQD8n2l#sdRUGfM{G)(B3#j1WuL8xGG3ip)K{*GfINnjlO~Y%*iot(UtaQIB-GzVupINiaS4$g2; zQN}c&3+>O6$e3I(l^mSw;2Z~)9q%tG{87;CJO}4Hn4>wOCB3RTXyBllgW3+NJGj6> z4F@$H#1xi}G`rA2EoJLU$sX%CsOO-rgNrm?+E7`Y|Ng&&`if6ScE`*wad5eVh7KAz zxKtU=k#S=Omzhjhfkiz09W-;$#6eTXyMxfZy)q}c((%rJlB*qbbr`I^R*1>fqD-O^v@AcBOanRO5JI6b*Y1~r(b@B}kI;fQseIq+^aFc_M(%dY( zg#k6XP7>+ZS%i^qGny_Uw+mVSI~?5a;7*C%jLlsRx;wbn!QBq-alG3xLvc`ybDx7A zrZ}8yKj)r~cWyu6;6VqEIC#iGFNJ#8@y-nvoEIZJDrJd-0B2A&_eW=8_ozd3mmL*u+YI02a9C9Sm*_j!BPjy9ISG%+`&o*D;#{GHOb?S zwPFHaI`~Svn3bd#hw!x)_G+P@{8|S;D(p87zU34UqpoEuvb{ zyUS3+ySBgnYZOtlh(<+RP(-~VE-a!>5w(h_UG(l*eoT_OMO;(_R|3mRaR<-;A}%SS zei02!FMe$s7IEoG`7^`DMKmqqvLc!kad{C}6umQzc`}-xKe1U6R~K<*5m%{|Y5O&4 zUPKFH&uY-66-UZ~s3zAI(Sd!5w=SY>5!Z{i5i(D@v=eV%#0^F7KZ4<*!HfDEr6;+m zh?|S(DDf6$&R#kd(OLcagJSh)d0P=(inxb0G`?MnxTA=>inz0gZmI+A{RgM+MciHV zPHEPV?o8(1A|5Du_k#O`J&L%$h@Rr~Vtha02a9;9h+gXAVMSomBSk!_8DXv3X{iK? zaEb`Z%qk*QL`Xa=j0ou%)r^zGi%1n=8+}3~DICJz|A=IY$QO|x;sdgkyyq-MAt?DB_hO-Yw$QA|@6wUQMqFUl&dg`dj7=@i&W@B=VNNCPAy`ZS~=?JBJUOPei1Xwu4KZ@_CqebB0iGAOd%u85}94Z$3@H$=g_!N z{i=Ri#M~n07x7sU^K=wcS19Jga(%9q%peQpxJbBIxJ09N~x|Ael1)rTq9g7{6@$zaVnB{lDJv;y^u;)U@K257e5s7 zXAwUZvAc+EMeHi#|BBdI#P%X~$as@R#}kQp{-mAD9=S@1dx|(-#NHx)E@EF12aDKW z!~vaPL)8UmF;$hm6lwf>5r1fY z>DxnT{KXQv_?w5ki+@-&*W3I5aygygp7D@gyqIlS7pJ*6#YK4+fqHLHdZwfRx%f;EQcapQn+&Bz-j*H6D(BNDbRa~6s;(XUT!}&3d zp;%b*s;+k@n!`t27nixH;o@Q!HC@zlae<2q)e8+6gbCDkagmEUF6zpwjr2WKy?U;9 zhhlN+yJ+a5fs0Gz%aqs=hjXcm#;$iSZsdA5rs`4>FL!aHiz{4Q@1lu|7A~5)xXMK{ z7gxI8*~qSG&pKc2qPgq6G2=uq4zp_M;#wE2n2hq_z6J8yD?e zv~|(W^?pgkRO!ydZgA1T^*$3ZL#E1(ZgO##i<@2C=HeC?on3Tv(a8mk*)@ycO}EO( zus!(x-^CrQvx}~-ch~lp2m8I#MK_K2F@msLCYM6P!#Q+zMi~cT(F8a7|)!JLgO8UNiUGzIC zH!7LoKo>(?3^LIMi|mxkW8yKXWn9czOGg8`H%C7hk$q=z0&0 zi(D*ou~>YGaH)`6kFCqaNmjV{!o^C7Tv7fp@|BB?(yVgvwTpEwR=fDd#TplD&5oci z`{nhmEJ@b8*r1%*^qq;%b+yUx%`Uzd-{NAcNDu8J+VlERnr*`W6K)so5bhNAXj^8N zi(g&rc5%?f9x3+<_X+n44+tM@TZUl|i60jJ%!5Ta|DrtE`w<@IYWmH^Q5S!R9}^z` ze^h-5+)dT@{&T1_pi;_^kfD;2R4VZf=9Kq+qf(@dg`$DD=iYP9ozET4O+u)oP-I9n z5K*Z#5y_mAG!L2w8vLL0T<81u`+Uyl`8<2=wbx#I?X~yW=iKu$0e^A-ly5{{2Pfcf zH6&--f4R4Z@E_Mg2!|%X2>B;Z2pJ6yobjw4@+}+{^0$$rg%na!Bjj&`bdPvk$bad2 zyzqn&P70x>cr9UVAr(#(8OVR@ERfU*;go=%8p7~S2Gvdr;fxSY51}3}y{+Y*SwG}& zDGfqsC_*`l#75FNGla$>O@x#;4dJYSGcB8Q6dFhiVN2oJA)F(^;hY;nEAh)TI!aor zczy^Mh_nebFASk=z^Tj#v}55H1yIFQoi35e99xlu0^-aAnB9)piti60%q# zQYtJ9`FAA>JBQFKgf5DFS0N{&n@IN%dWiH4;VKdCt4t3n@VYvLYb5L~q@+TmGK4CT zwNmR7!cElVCqTmMgx7~~gGfK&jlxl#465sK4pwT+4PNy2wGh7GREF?=2(O3m z4tJyw)=B40?M|b)|A+9lVn`!w!jZlk!h0eAd_@n}t0OwFA@FBo2-`x~6vBrgd=SFs zkpF8PdoPA@O9)%lq$uHWXgj+LVMhobg|IV(U79tfEBj)T-64Fez>@RyMIZKr@L33- zhOk$fbfY*0`$G6!mW!u5`u1fAN16C4gx^E>I)ooX_$Gw!L-;m?@1#ka?1%@#A41r# zOkk(H*!HIoehuO05Pp#+^S|g4`}$3*iO&2H!oMN>8N$I3{tDrMmK(>#5Ygt}A^fA9 z*-4+ZcK!>&FmZ_cx#_10duK-sT{RQcO@D>bIEBoOqfOK_ag2%MOw=%Otm&VwX_-3g z_jnU0nEuUTMUXkQOw>00jHN*$yF1B54-+SwIMYNO6Q`Lt#q|H#iXulrc|C?x}-nlycgDXkw&^n@sc%d>de5h>4p`+-hQ=iCawn zHy!HF)-%x{6N43venC17HF2AXVJ3#FJF4;R7KeGei4n3%e|T|pqfCrvOibKs;!YEH znHX(ijOiaXSj&q8zuUw;nn#9(7aNXMkjI(0PxHd)(d{^Y|1}Xd5i((FM8z)XXT*dh z2_rm2o;W5JnTVRW-$cwr-bCC)mg6#!Hjy-uGX1CBS(+)@aZO|>R~TuKUNMF_xxv7C zCJLN5`Nmme7ZXj)Ht~Ro$tEV5cu=*2)QUb#G4Y6rsV1hIc*w*wtpyIDo-$#EiHDW# zoTGkvPJGnFEE6+LJf`TeYr4dEKF-NiWXS0T_2-y)+QeKF^GrNx;wf2X7>iBj%Z+nX zTwr415mBPTViUVKk0v&lSYl$0iDykLH?h>j^Cp&=cutwgj_4};dcnktT(fe9&FRAm z6RQ|E6Du_@?3Y5i`m%}D!Fn$WUoo-H#H%J=H}M+NTb?kg3=RYMhKV<&Uu@3#eapnV zCf+vjPGErc@2;&f!SlHh!*{b*qRV|F_ zk}!>FpV2rvjAJB81XFx$7>&a?E{v1HI6jP8VVn>~&9I;O^orKluyzT@Ou{mSgB#dTZG!5gdu>UO6Pn!~zn}>0B7%jqRDGRh*Y;{f;=Z5{e7`^2xru@7x zx`fd>jJ9E%AI1gY!w+0-!niPe_-;4p3rV~C2B z3@wr{h6j>+bQHf`#Sy}h!ck$2SJj6v6rwFGC9|~id2>YGV$(W%ucsPtFMII488pg~pW{2?@(;*1M$tm4~0d|twGGUg|R)1kHXj? z$xh)eVR0YZE&j2PbHqioC+r_lJ`Ll`F!pjR{P&-OrMEAP&&9tGQjN7=aW9SF>oEQd z%h{OkzMi{P9HT19ZKB-L~mpfcmuI)V!% zJYUEzC~qUqzS>4`Ndy-~aIqxqgiH+T&Cl5mZLdErP2e=pOMOWO@imdWx{GUJM9_#`ix$8tJX7 ziirQf!XmLsl53^VN4&2%?XV#y{rU)Qh=4QFFM^vC;TwZE_m5y`1Ops5e$l8ux5&$7suF7mWRm*yI?#SWY*pu@!tiF5RQysjL0bA9TD6qLWR*H zbnGsXyM^}zwf9D_SdSj#B8WtAUl6_VA`^t62uzW%aAqfiq2OhyXh-0PP!f$G7VtQ` zkS2XdMvzjE>7ZXXf{b`pm=n?h)6Y{9k`yAiUwmR9c_4yG0e?^dq1u!P9*$sY1P>{0 zjQliJkxbV_%n(-NzyBG*5>-7K!ORHeMDSPyvm{~d<04Pc6E0!C@abd_=XEmXMzA1) zCnK02!BY{;3-sqJ!Jbx;lS1W%45r#HDxwsgk-{?ZXCqh|!SV=}MeuwC&oLX7RQ-7V zSB||XT;9pxM6b|DUy5L*gzSPshUjHQcy+{oY+NIJMfj@lwFq91V6FIG{kb>Qm@scf zus(uyN<8MnV{%1#D#Hbn4#Am13lrhtDSvRSyMld(l)Yf!r_g6-lv z0?Ez@b_M*^PR4He|FQ5B;U3|qLJn|m1fPj>TVRpb=PG^?!IvUm3BMM8Bc#r^5xk*% z`(AzhAlxtfQTUVaXW=gq{L1)i_v1(z+utLoY2gp<)fWDY;GYQo(k6UBcu@GakQ2?F z_FwMy7XFI>77j^HA*&4Q@Eg=>B1Pq+#F>!PIYzvOg<~z8Aby;M<1PQ=hoS{K!%e%E zh086}ws4k(6D^!!;Uo*ESvc9kDHdp|j<6r!|5&JN`MXwEZ3|rKr(39R`KeV;NP`V5 zG!$QMlPYX;c zhW%U%tt|h}Ld$GR(%M2B3+G$7K!c(VFLrUEg|_OE{&2VC%H`3worQ}nw6}1Hg-d0b z%5;E^T_)wVnxiW$Ty3F)g-#Z(w9wJ=-yTqtc9~qZ!zG(!9n(Ukkl0R9UF7P-z{$LDMnzc&&v# z@`0QZTE5Q0^@>ALLgaMxvv4DQ<3Ii{B17Hu7RCULgyng|LiVrX(j?7Sa}MO_^gMVIgWE zt{IOBX`E^dZ&Dqll&*A}5q2%)Eo79mSz%7dlwjiV;s6U4CR>=re*(zDM9bfh9}rFw zJ}6`@t{G-=2%Rf&}7tRn;lafa)JZ|Ap^)*xYm~fVGLnmXSHjpPQ z%$6ORnqy(E_-0i-Wnqbhd7Nkq^EIxg)s{QS0?Xe|7Ft+jVX=j6+VE*%y9nd(tc9hP z|HNHPMGo^h3-4Qa-ogfD;|msEwD7uxm-z=jQ=_rYt_&wF=~_;Z&-NS!ke6E1&#B<>n$mqSYo_m z;XUzpg^cHVk&{dOU#yC*Ze*t#<|YdtSlDf0vxV&zKD4ma!WL~Bv$amQX+x{0t!xL~ zwy@K}E(vMv4e4-cFf1Qi*sH*PVquSkPsQ0C+fv~(3;QhpR|d`+8&aRE%;ftY3qM=< z%EC_;zGepU<9`d^TliMZS^Q2y>i?io(A0hlKL(uEIx1&=Q8xa{)yTI{T1^8*(Cws26x=beI<>k0q0VA%MN*=74FcSsB2)Dr(_M2D-{INC;a8%Npx zKFmqy#q>DFMh*M$TRv`3Tw=%B=w;)08?9`dVB>TfHEo<^qn6CFZEYJT$_P3AIoZak zHtN_o#l|a|pcQ&oQ`g36YEs;w*j+svXWOW6qlt|MHX7MzXyXjqKQuD;7-}xJGi@}s z{l!AJc~R2TMspiy*=T0_J0v$!4u>7Ju+h@?_rSI4j>2FBak-5v zG*T*buyLg{=>r|3awi*QHcD)i+K1opQ{I{X{028Hy@5~E3paijQ6Hu^KFT2swRjOHcA%{E5a7-(adjazICwsEVCLGpw_W~?|V zLu?FHgo`m}*TZexF8^;6GVCL4j8sN(;JoM?1IU5gX=8$o(Kg1}7-Qoe8+X~bThU|O zs6fqoZH!fqY?6`WJ{#kM2vdP`6tWSqVcG~w&iK$h>RUE!^~;>0!M!~E+gNHNX5(QS zaT^nDBy6}glFUrLP*O+fpu1{Xh8Y`K8=j4vjl7bamU+>=f{pt%M$TPP@_>zLw*SmN z$;N{=rrMZnV~XwXy42_N)#Lte`v)P$flHNSx{5P|?C}vBi)=i~B_Nk(+IY;yEO8Fu zai)-bptrnec8-mwY|ORsr0w5;xLQ{T=h=AL_780HC1<}2Y%J7zp(o5bI=om_bmJKt zOT?cIBs4{ZWeUY}Lc02bjdyLlXyY9l%WbUVTC=gn#!G6o(#Fd+R@wMbqs#OAe{mA_ z_==6!ZM#llVdG743Ry+TTijCk@sE(6kkbgsdp6cHA%lQ#u<^d! z+i2rM8=Ex14{U7aWGTWN9osSqwwjfa4Fu5LOdbcW{iz zQNp8zjDHQ0V}*<%TOIG9se=<7oaUgWgOeT9Qf+PFiNceP(61wYittn+jnoz4ES&D( z3PUKatB99zhM7j#Q3A+o~oN7HCRH%5BgI*lIgR50! zRnb&$6=|o^!3_?o9Q1W?t>f=A)am2+`@mkF|D|@lkX7`mpM!x8Zgeof!A%bOt7<1- z5b5U2g>$px?odxs)JP7Az7t2jn@m*$r}-s2$V;9dt&2V))oL+Ei1A`b3z5OOeHk_kfQ18aGi zDu#t^N(`%!aON4it=gd zYr1fTgGU@ZtR@@P>QTvimKax+7>_ylmsJklb?~@@r4F8OFqa<6$vHy$Gn=o294vD1 zl!K=o%yTfGc~W9rTVnJrF|IE$7C2bQ3F7U(#8|0b7CTtNemU2Hx6}9tz%(c^29_Ah z9ISTmoP!q~JkJ^Aw}`w2I3TjSYF&!FmU~9Bgp# zp@a7wY$}FML1U{A9Bfv;MM?}?mbW!46#P;$R;pMx(Pd`@M41E9XXRFen9zjpAWgKr%C zAmO(TzH{)s<7d~@664_#gM^*#S1nHwKRNir!OsqUbMOnpDEVV0{;M`>^7`Gu92Ng` zaL~bD4h}Fa`EXrgEG#jWmKc9K_=i(gVk|E)R+Sj9loaQbSMikYe zI68{zQ5+TZ15V+Q$i8YsacmSPMsZveHKRB_iW8z(%ZD`{Af;a`irP`kl$7}xO+ ztoZ#;6sJUSaujurQU5JLQPNz^KT_CRik~e!N61y*DvI_|oEOFU zQM8VN(dJf9yda88RcsT*g;87-Mcb%QHV{+);oJ4A716df61oj^KCPMs3=D^1R389m|tA4O*o@-8A>qv$5mT}W%J>KR2v z)PJtIDvDkrR||O_z9x#^QIN2vfoh82rE|8tsTkhQaw zR3oDPBN(%b&WwuUzNr6(;f^To6d4`GJyDDize{+xkUDHayjR7sQH&F5F8TN9o2*cfOi`Xpjp8AZ^~wz<%ycQwkXk>@&LdGg8pR7- zSy3#A;;|^^Mlp-6r1Q9@o5?vliaAOx`n*>6>nEd_AH`Eq%u_xy=DZk$r?tQtOxj-< z#nLDiMg802;wYAIYPiM^9ez{FEPXbZ$7LcM#dGTSdEuue#!fl8Jc>0+(G|j%ge!%s zgf9zMM`0_6nZ~a~@v4Nc2`O1C^1ASiKy#gnZv{GUNAXU;-xYZ;iuHkn#u?l9qu3b5 z!6-IG@m&-jaJ*4$j$(ThA4aiN5#FNJ_Ze@gJpV`WlgN%JK8j*z6ua1*TV;t+t<-y-%5>}!1p3QMDc4B`{_&+KXQfg-;F6XSo?Dnzo^)!)VQwH=wE95 z7R8@Y{2s+08U?$ilQjER6bEGLmQsVlA?oYzDE^V~U*UgIAm%UOLn;n0H4GJJ%0l%R zPKe$I~F^p3eHDfqChFUS46+`V98pLp745!6#QVgfW zaB>WFVt9ZzalR21o*F}4Nob@fIbHVa#ZW)yA1wyTKCxj8jbk`NwT)spQ{;cOO;n_j zrXtMSW+KgnErQyXBE?qc#Bi>Pt%BO~VrU)kP^oc2441^vMv@DKZG{&J+X*igMoJC0 z)VNf?CaB6f+P zM+{wK=q3fOSzg^^{sx;bHG0O-E9URyR|z>CS94M{FZHBJ3GX!(F;vF96JD=!DVL%KwvsO*Gy$t96AH(1nZjE73 z%-_A~Kdlw@hs6Bz1C@tyDq|QP!-yDei{WAQFcU*ogoDkAqjdKn!z4 z<_am9QEEITJ};2W7kRAISP;XrF)UPZQ4G(BEEYadYAg|v8)OaC= z*Ti3pVR;NMGqGb>DalL1g{8(Skrk!J%caI@CO`~pB%$TkO8q}~dNqc3MApXeb_}np z_Kg_U#qg&12GzbLzC)a?-cj*g;d{c}rN)LBeu&}y7AQhrLAv7ZKG_%VjR zWB4hC-(&bWhF@d;Pv^e~>y;Vgzo`kyA2A$=;m;WUQf(vE(iE!>#?Z3NXkBLfBjtaE z{{?+rBxewZ5l4+Us>N}19M$7EDvrxlb!C~+wahps?x)sOk{m03oUo51C&bYvj+$|Q zYpNAT!#HZQHjWeHs1wIYasNlplZ8|uKP8U3ahxg%i`<2X+(3w@OIRMe6Gia?cjw(qQUixrt+<)sr z-j@oB$#ohXZ8BC==*LbKjT`0RO~U?h|6Vgd@#H85#xX9ATjIDoj$7lnEsjB&h{16T zm;R7AhB8Fr93YL;GA~Zn?KCCj5yFvij1nobPRbgby!J<_~aI9A9i z+Pp80N8=bDM=p*Dam3>Y#bL!^#u1hU>d<~fabPg*IHDT0BgqiWbxfN6s?lJRakz1$ z;z$Q_`o`K!99c=Yd$Ty3x8pdb#Nov;DUL!M6IFY^GK5VYP?5b;|3UdoXC|v(lBsb_ zkK-Z9rvTQhrtVS{!RdD0yAv4dI)@ zetiEg^0x3D;k!cWzbCR@NDq0vAICXIneQ|sh$LA_i{)Nbw!a-%m*KvFo$2URk zw{g$`s`2_>!XJdg%Zwl6_%)87;{J0Pub<=iMZCB<{HAU2_c;EJpo@xKh1~+3?jmE#jGiJ_33~~z7G5Kyh2A1#%Z$ndh9yvy zz|9F{iO zav&kiWCE##{~StXUYt-jfqVj)1ag|+tdN#@F&{iRQ_wo%aJWfMOki@t-;*B@P7*$t zIDFoiqQ0gk@USxTp@hGOOiN&T0yDI5=s%5c4f1}?7;>w5G=Z7&?NYs*p>UR>{dh6v z3IBXZ;hY4XR9eoJOT4>1CBkzQ!$RNYC-8IvOA=Th9~KHJUnH`ae##&v9Qd;mE)8^+ zi99EKUPvcjOkj5c%M;j^z={N3P2eRBYGnee6Ii9;ysU{X=EE9I!7J*8(c?tCmcV-n ztWDsp1YS?z%>>?%agLfxb)7gh>C)S3^-cos${-`pi=$qjz$R5~NZ|bhHj1-5UR3xX zfh`GaPT)hyX@_R%Ij422>@YICw#%^{3fImAcB$&4K!K*H^Ra3_Nnnr2r$Wm2Ch(bf zw#u|BB&H z3H*}4&zg6dz`+FmkxPFk@SyViUk#9b zab^!Gfk}|`R|G>*E$J^_CSLUyc+IRB)QSm zOrloO|KllMwM9-8o+Lb3SVzeCpPEF&BAVlG8=%B~d?+G)Tgg{WAhdqa@Bu zqInXHC25kxSt3n^{28KIpvl*CEyP<2&kp1q0#oALBw8iWCJFNMl4vbLetr@cB>lxm zUc?Jk)i#NX7-aEwNnD)7CF1|nY=1=Y@+3MbL{}uyLF7syQN#MPX>Br3#v3nz2`Px?2bDP_j2 zGUM7L`X$jPiR+T+oAh^7UUSQg>yx-a#RX-?qB4W}HzqM4iJOw>pTskgyijH=FEehI zwU;De;!V(!yfukIN&mLUYj6@n0zNc}VdBG+xJ_h*bl8ynj!=&ylNcp(N8rz$BBO<4 zl31hFbaxWtlm1(#dy=?UgnVog@M{{g*TSbh!*59|44%cdF%*$R{yLqw|CX;r+si!Uu%wv|1lbVzP=;gj0pI z^N`59WybWR|62pE8A&`G@JEt(G~hEu9up4W_diK2X3iurkI4{>caF$h;giCr7!5tc z&JT2+7Fm$Q!a%Y}gppxvpGjhgiq9soJc*_3E{SE5G?xN(o=@V1BwmzoD>qVo>$oC` z)s!T$NoZwl85-x9tp zd`C!4uA}#o*q_AuB=#n;A&C!@cwdWXqjWYUu{ntkluk6xg~Qxq!!1edNn&dfA0@FZ ziJeJoPhy9*h-$j+5~;r{Xt+Cxk2Ob3j88<0y>sXMR7INoO!>1<_<0iFCGkZPUnlWp z5?>{;vCQ~LoAB3V#y3fPo5X=KZ0UTXp#rbc6v|TQnnJnc zorPVBJkaTuLU&21-y`VdsuYH%&?|)-Q@A>XK1Bs#?-VLhs1mOX^sfyp6rJpw!gZ2d zFT5dzekpV)H%c|A&gI5UlJ`$xPznQ57^vdSfwfyyq(8UPw;&FKB^)9h9y5lea8C-u zCA=+#(J9=X!l)ERNHS7bbmk6mTDvpl9|=gtNOG6(?x2>Ld2b5Q6vn0yNnuh%-OgoM;BE!huc7trYA)?i`^X6OX5m2x^(AsT5vIA)UgLDYz+2O(B!Q#1yhA zcq!xp&Ado)AO-RJg+)&uNMTY6lT&!`2(>BVi{!!m}y7n8MN&o=ag_V7X_x@q7v|FzYn$6~g5ytW04=3NNM5x7>frO&^G> zQg}J=q<iD?|2#_?$!BZV45DjX|voG@8#oDj%siquM@w#XzI=O%Dc z+P`a@oJO5APEju$#i?o3P5Yx}r~Q<2r>ly^dTG=bZy;L~{^9T}VY4(^iZmCtNP{O6*77=Al5>PSY_t+NPsrNVX`CPM3(|+b{kSlV4r#Pa z<5E>!ltw#|i-ng2`aBf17r#t+c_6<+q=LWy29l0xbV{Qvjgml8n#QbhV|KYgAIj6{ z9LVRE8(q_=Orx75-Gx2UxLTyA@TxR=iSSs(=GTaGXuZ>@2sq`us#LsI*hkn`c%6{` z-ylNGej+ytZ%U)T2yL?J<}}8nF))qMY21>=urzK>V~`Yz=cU1E3`wJS14)wLcuZTRSjp8*KTq}HC_=fP!G}ei{CFK6Y7Xt63@m?D5 zrv2|I7#ZSv@eM*2-xt}K#wL*ug!~-tg>vJ=H1?*kC5?|I+?ode_HdgfWqTSs()cKi zooVc14)CK^lj z{pU2k;lj}$HGHcXVN}0M<9mgdtC+?8l5>uJOyj43|19#0@K@n)!poGgf28qe8viOA z|Kk2H!l^$f^0)9GA^rR>jq0wyd=8}n5pu&tHE}L;7LN+#N4q%2#c?ibxHwkAV&+ii z_&|qEYPx=Q)grp6?fSP8D$uu+T(od;vWxmI>bR)u;uLno{a;wjsMB23b8-3+5;kO2 z0~cqyXejv^E*iQ1{i4`}*x1EcE}FP#8pw-P&0I8B6DqGNHz;iB;vyGkyJ+p=92c!r zdv4I`Jdt(MJm1BIE-rA;#Jq`X`Tlys2;)afeHP1s%7L)cSzm3#P!jA_a3@fsJS zUH=6_Z`Z#eR=B8iaf^#87yVpZ>*6{WeO&Z)v9sK$-P!2U*>E}=*SomE#S5K{Rh^9* zU5qwej2m4HaB-81{w}I_HR^RW&g^Qm>}uTXVxWsiS7UisV@p@#x30#mE^c!%$i+|> zgIx?^=(-tqbTj66Gd}5N40AD@Guz$h-Q7raH(u^;-0otOixDnHx+w2q)az+{($iRW zm2roQJ6$Au8U3y{F1p6}`x;}6i*ZV%yIkC@_}n98aPD<6R{YK028-Mi7%1X+=}&O| z9hmnHQz2qim_CbJLOYNbQsF48Vs*MD!%tlp{nVAh4_ zBIhDcpS33xYYQ&!mnIGN(~Lae;!ziqTs%S__!F>;$*%u*&Ag_#nCfD>i-%lHlaLA{ zRW-xK!-0fCDzobn?*Fd;GU_qmEaBra`-F?RE@r!!Lsu0FF7wOy{eO@iEY5RLGlTgq zwzznj(Q~nYlkQ@ni)R$EMXvvMYKw*JZi$O!E}nI<)b-DYyhp6>ZP560E}mB})S;aC zqKlP^{Bjp7n0PKW_4eOs@EA#jRW4Sm_GQ`G-P=ENu94*P-o~pg-g5CGe*$o^*2SAH zUU%_^>p$;&(c6EBpi4BhPBTLCwu|>&yyN0M7w-nHzDeI)Y*0#k+1uFP+h6q?U2LW& zEpSjqlR#adsheL4jor^DBeC^_^zzx=Z6#8Cl~*S7k&7}#UU5Jx;Q}pUHl;nzpDx7`cD^ssS74>aij;?+{NF@aJomGe_i}1 z{bHv?WN=IdMg~V^P%VS%nZr-t)JKIM#-lTb-wV~q;P?!V&EPocoS?t{pv@C9{%+4H zV5hY*Xr4js3>s%}Vg?N}I4OhEGB`PdQ!-$aIzmS8)C}sXA*X}Q>GSCs)R*OY^rym4 z63QD$hi>pXgC6qlzl3KBf7Jvv$)IV*|7Q@+lCYVOZI7-n*inm&pVgelCwTtP;GB%V zVe&dRgH{1QPo%Z*eBrSbMw<*S&G@_Mg~GPNi!x{@Lixoamt+pVS*4_X2A5^fQS!@$ zR|q=@uM`&FuXf6yB!jLQlxEO5gR%_DkEo?i7Zqufyjuo6GU$GUq-Vz8j*6ywWiTj% zt7(l9%ix9#dS}o#g9=G1Gq^T`DsgU=)Zx|Vh~jk_T(2VKoQr-L49MU{Np2GM4{B>x z7}U90#eo^zlEJOwY*lPKID=6c43TiCa99Sniww`;Hj&ygGD3W$u-Kdy?#SRyNk$7P z8I!?X;><=)**zJIWw^Ni3z>W5s6M0GB^fNs z;Mok8%AcYIj*b^i(f;#NdqMc3kn$B7Y?b~?8LZ4;jrc0z%fi({8hIsyb>gpP@LC41 zXRtN{_QJ6c-^k!i71t`yc|UzCgZDFdJA?N!cqfB*wFJ08IB??n3^r(i6#b-RV+NZu z*p$HsiW}36LVEaN23r)96?&FoUTw?Z^9;6U@Not^GT4>DP8nykxx_xoV7K%~>Kl81 z-Em9FU{4002J)iYpJlL566)|UO#C8)?=$!^gKskUDub_;36#?^A4a~-;5+Gabj7}Y z$l#|8_Gj>;B16r3IuiV>A<%y&+pn3!zuf(n!S5Ly$lwo2{tV=QaUp1EG<#6OzlHw@ z{}nRGhcdV%3uJL|7Dg70vZ$8DiCI+7;uR zXgQ1eS+rO44i!d8h0!pJGqUJhVe||fI5Ue@Sv1a~Sr$!--DPoB;Ahdv=2@JbMT;z2 zs+V3B#x)g2RfTa*7Uu?<#c`dNMVl;IOL%@37X)4vYcI^=B1zf?t=a{os6f0liz}tm zK8wp#d%5rmVTU91soYV;PQnslX%=N!lpmqSA#};2GVAYbU9;%MfbjRqD4w%ld3GP&H8^8NHwWQzD!xs4yKsb%!W%d*S}b>D{eLv|PG%s#|Ixt52=5Xy4tHm9ONEi*=AXp_S&YqM z90#tw;=U|WS&YxZ&Vnm(LKdMcB3YPOgtPu{Sag!HqB1W_qu`<45s7Az$Rd_STtyC? z7e|!Th-i(E?ddEgX5lh`S!A-vNi!=~X_=uQdRY`SSWYqHaKCgomg49pWw9iS2eWuG zi^*Bc$YP3|pPI$AtbZ$iC%g>hSjF(-?;S=?S>jH)p1t1!k_7*A!fK+Wf6F<(`$Raj&$IX<;8QA$ud@D4_G{)F&;P=2 zg)Dx@l&J7O>Hi^%-?P}C#c$eAeq^5TPk^)dS%mx-kza-EqPmjpk1YPt6#SXRU(5$( z`++PDivJx*W>y%@HQoPZQ7eZ-+}?Bk3PKKs2zj*}st5ci5hn97A~l4^=5Rs|$B7>= zIe%AdkweQI&J{m9hjY}BhXGbmt(A)8 zt#i0Ihx2o2OMmz$z&W(Z;X?7ECWZ9yq8!@g{0J9|m*o5n^HTNOo;}JRI&gUo*XD2q zJI$d(4&^z2$G$R$jyaU%(1}$%n^hP?_>7!GS6BhMn1krmqherbbXbv+2{#XvP#Gh02p2%Tt4zqKZ zBVk-#F{7T$VMz{8<@`N-UJeU#n4j|>qMsJhD{|t(92Tkf#W_49vb@4rrCT#=nWal} zcrJ%!%66Jf@bI6*tD39q@NVdh+|99KOt9eGVJs9&c*=+Wh?-Hs-J^hfO(b z$>9Sf|K=P%)WA8>yg2r)Ic%3?TMk?Gx?@KUJ1MO2e-qzbVSK{UC8MgGX)Pm#Zb2ZRTO)S(0aB4$KT4*5BFpo0=39S`>=sYuz#(6Z8yoo$) zDm*Ljwz;ZW2-&J-AU{WvbA_$)Xp_fzflh0Y^Mw}#1G!Mewt>z?d9)KR4wE@~N#5Vg zFBP^IUM9SpD8kwfd3;~t|6xVPJZ{OOQyw?uQIbc`JWBKEl1EwIzY&)UI}5o%H!(1f0w)_fB5wsv#27EYbC4{R^_o@>#gY&p8k0E&sRV|wg z%lo%BlHuxtgxBpdI6^owkKgsKkMcY6xHFHt^8W30bRJ_w$l1%?dEBewJwi%&jpf|Q zrTg;8<}p5xcpek-u=5Dz5$24mQ|3Q?h~#0Z$RQk1k4_%3ynkPg3MnV28;Ly9c_gKr z5^}k*mec3vkqPFMj^*;0oJT&72lDXpxL<=Uie@=#j)*SJlFi43PY7q{F-L^8b48xa z<8R#~=H+pUhxvKz&g1DkUe9Ae9?SDsn8(sQ7Ul7b2D?}ua>z^acvjISXJojDmgVuh zY(B?XmIE*3@nZh)`(ehJ!WDU};R4Cy2aac|{OqtYOGCy#gY{+p{>mHs$9Wv!&cNlI$DTaC$m7#IK9eVV)jOwtUml-})6cc?Xa$zRsgg zrT@TN^zhp}zEeD@R#yZ0A&+0UPV@LFj~_J*4P_3=jY0aftgrH~%0fsn$%+!1K2b8n5QzXb;sr9Oe1j z2uID{iN|=TA)VqQ8#RyfP}{@t9%_0x!Se&oi^{b;e;*@f@K5w`vghZU(J5`NuF?E9L_Seug??@k|d*#2b75 z4#4DOcTGJ%uc+V5!#N(BduZvQh196P-p`hAZ7Ti$RrXxTTd{dCb~bEZX`Jt&y@v}t zTx(};-R;Pt{!^IcsCE-J@oMW?ev;T<633QRrJI| zFArDCCHBtP(lK7-6&|khQ0d`X&1RMC(C0oL`ie8{smA4by@wkVJr?_UxY0wON`pgS z4p7qH!*CA+JPh`5vxi$f4D@gdXHB)m*bb7xe)4LFhhg$(sF10}PB~4tc^E0R+l3>j zrqmtfVKno^!<~u)R}ecLTxpDv+vFV1-5w$y?(uM+hkF?oZvMh?LKfL-e84Ao2nF2q z5EiEb)p%JRY)KpsX%A5k2^C|)xR66jill@iEBzlnTn_~g84r06Sr0i?adcE>t*7E$ z(!5`s!ik=LFC&@cVVQ>qJv`-MvWG`K(4Q$Drh1s+;UN#xB$=&&Oh1A@EdGe+?|y7D zQ^m(T%<(Xb#yvcKgfbOodl*}3ger}>l0PZ5Dh*cgny2D?4^MkoB)-7ILXo2V#U7sZ z@QjBgM+jN9R7KxDe^wBGK9IcN;l+S2_pm~o>z&G+xRuI*Rl=8rtA%TXuXuP>gqr*V zmbFYmE)$;rwXXTPgNOMv&+{J6DBvv*KX`cC!!{4^c-Y|KUA28Lu&`dltu)^E@S%r| z9zKv{lhD&%w^=j7?s#qSur+8~jr+fceI9mr_}Ifv48hV zglxOl!)F0!k;=BGkfwf`J@gK&=8!D4?d) zwpSXvR8_lx6ARc~Y3x(+i%R3<0_qh|r+~TzoKnE4(*Ls3_(qPMR>0{6?5{L_tTcYF zG>)$FZ;|y2Xiz{yd3a2fQCGr71zcUgnFX{dpm71`6wsuAW(72rLAE+egoA2cKufi4 zA*^5JpA*gw#!G%~0j&x+zku@!XsuR_s*J`}M$;AvNtJO`m2p`CS4eVs&{u~7t}LKemC?J(sFcl41#~T-q=51Q zN((5H{*Cf*K$X$CfG(2UT4fBb@_)kaRzS}Jx);!+fMK%0k&a|{G%L-qYCE1)1q>;m zcL6sQP*K2j1ymN$r+}&gu9aq@%1BljZk5qjMaCgtWn5oCKNW8f7SzR!1w2q?Os_Kf z7cj7Z0jj!L$llrTmI4M9aBCo$p;m)ce4@%2TEJ*}Tfm3{h8J+V@l+@VVA3_0l z6fi2Vu%ODgGvG_Bj4=h=SHN8b+*`oi1>B>m=c1^+w~DZmo3g_Jl2M8#u)g#TI><%t54fg~l8F2EJZ2zfiBT8??n z02VM+#1j?@xW9l&;u9G|CYX-v#0SME7cix8_(`A5DSt@H(}dFtm{q`x0v;{k;Q}5x zqB)gk7VwzV{%7;?0%jNR#1Xf)hhUHDmH~H<#!Q(2>)axNbGO=HiFGE zl4`e1#Xq9AhMa#zY@2FN{uJP4B6dV=BG^GhTOm0+ifAWfF4{SQ&JpYqv5$;)jbOhB zc8g%|2--)mhnTwyI|y&);a>!W_Y%R!Ci{r!DBL%!ZGD`wzlxnAIN(4014SPc!4VO3 z5q)q3hlw~Ofw7G_Xv&>eRL?(+T$@192*ML$m1h;Ac7td)JD)V zf(s+)6~UPioDjh&5u6x7?}*(oPl{~6V>&s4KH|`gyjXQ=1ZPBWS_G$y|Ctie|J9xq z!Fds!9YMbc`bKb01gp4ZsO_48=3J@$F65ja!37cYkKk8v{*x->_9x1l1AL{HJz@5;G`* zYa$pN!N>@PL@->V8!8+o$(>8=4tte2Bf_?$B4~_YbOiMg)TwG$i8V-I-xAZQ#56_F zqN?Ty4pHrx2(A|A|NJ&Kf(a2^8^MhcjEmrU)m|4tx03BQO*cqk_YyNcf?FcEDT13N zb8Lw@UOI1$;I>dF?c{CC?GfA)!5tAyir~%&CUR;tgLV>m{*T~pPHu@gSIsXfG51Dr zzck!Ow~I;1$q`&uVg{C&DG|(zU}^*pMi7Z06G1eBL6G2MM z;o%Tm6{&M{iOEJ#h#)6UUPzNzjH*V?!HQH7$ba5*t%uu93nS5j+*aLlHb8 z{=*T>l#9lx)uRzSuHs{%@+TsAGNfBQ@N@*TBX}l)=OcJFg6AR_ANF`liJ2wg3F6F& zU~U92Na5|`yr|k%JugMDB!ZVCcq@YW5xl0VSC~&Ccs1;Cl3Fc@;LQkLkKhfuI&@1^ zRSTt@3g3=kaRiGZcvo%T2{p9#^`6Au7t$?GiCG%K@(4bN;FAbGjNqdPmZ?drJn>@* z7fZ~i|53Gq3p0Yx#98?t{^t>_j^K+3zN9~87<+j!G?n>zZ3OEW5={O=66-~L9lMg&TxFG2QX|f8ozUW~X0O^_y^$kO}tp2>xKS>zNPnFJ>w} z;f!FLh|Ljf5%G_ZRa-^;%WS55e{vADO-vMRMC>4JD_mG&Sk*3youc*`&UEJgsNJ1+ zQE}HO_K4aobvI%AD0YvcgJ?RI7pr*f8O2^vbc|x}DE3k9J91rXEyebW;+QD*kK&-H zJuG#K;s6nyg}lE$FlwJ8v5LD}mnaU7+HLNTD7r;)XcUJ>aaa^x#iX|PN=)mcm?NTg zMYGkBQ5-D|M@iu%9{xk&xfF=vj3|zaqE8gZM{#l#J)$@vik{K!zr^nq#WLxn+7qKV zDT?0G#=ct5Z|s8fDN;^5PmSWVkUl-M{LCmWjpD2*E{x*rD9(?fZxsEa_G5r^gdEYi zG+2g_xxB=F4{$+P>>tWpB+kXcOTt>V9S}u%6qiL&62;|FT&b!ngfx%WK$%2IUZqi# zMeRF5(!`1=YNM!(q9%%}D5_P}Iyz#j7&Q!%hQX?3k!ORUQ4EWM1h3&Du8LxWh>^lk zVJ)MbGIc7}N6{dnF^U!uO~Pi{FR?KyULD0XB3hXYziXpNMlmjmguHrP6xT;_R}?oy zaa$BOMsaf#jpxM)6n_k3{jPYH3NU{f|fSgl3kOjL>vH6~)uCnF72z@%c{_ zv!Zy8DV0$oWRZw^4i-a=xbxqBp7E4NOEa{1nA*F>H+D?>im#h+39r6PN5_4(!~5VLD)OBDY^@vmyPM(uOgZ6#)#LY=i7k%?ia z7}~_JV+=dQ&^BflHTkS%RJ4n2k1KL^j$s$+vgW7s=}4ieZS zhCO3819SE%xmV0SF{avmV(1h@#~AjHVP7)EpROv#1~0ypJRpVxW9a;!jt+{UOU&*L zRMKkmAu${o!=W)89>Za>u&c0LsXY@O5!&2ML>sM(qhdHZhGSxO`{*9C8yO{!joBs7 zi<*y*p*n^hF`OGi&lpaNp;rujVmKj&lVbK}|HPQx2idB33@6KS8q?}MGoPz7)oQfJcfZWToJ>S@;}Yy!~D6Na}9w8lT#K$g^K0!58GD8 zP$f$^WgJDTlWXLhTH&A=2FEZoh9NTkz*2h~J}mSz-Ex)0MhHg=M+rv@>xA{f$K>!v z4XP=I+vv9##>dbS!*wx?iD9g&t`=S+>{@EB6+st`Q>W~a*Yz>nApVWQZl(4;`%R*6 z7P5GYh+AXmu3B;?h;zH}4&j|KOcZgfWH>K(#c+2F4=7IViQ!%mjG6mlxId&P$L!8R z=9G{#HHL`jXvm3)VB{xaaAQcuke2727*bq5iXS5L>RtT(Zwy(vm&0VV6Z0|qnx3xa zta&l`F}s@-HM2A_kU!a$0=%Zj@Sr#|gycLV;^7!(hMY%4^eQ!v#qdlFkH_$I3{S*t zT40bo8N*ZZ17m=WqS;jPYz)sS#@NyGVR+AqVYZlagf9qBRY1NN!-p}LAcs+)9_`O7_Ij7XH_RSauG0Ahe@!?Ml zi(_~@hDBUQ{5Y2U7~Ykt{-ws}DU@fw7?#HHehf=u_VC75{C|ifczwW8m)euzvKT(% z7!~1kEIs^54ByA_X$)V+?C!Q)xFUwnM68VAa}leAH*2Q82`FQR`GZV>(?+$j86$bNr~;m;U;Q;|A1iTFK+KSIuB zrS@+K{1wCBA!oCQEkatdHHL0+{2Rj&acpC*jstOYh{MFOQygvLXdAct#SU?st1mA# zJI2v2jzOiSzSKU5p2z$j$8K@#634D_v~Wq5+W#EX$owD2?s1!+CzYCbsmXIwph6!0 zg?kC9c}A((Cys;S=*TYO*f$RT#Wr3pfBzN70daJS+vLni8Nly zI1Y}3Rn&Y)9EZhms5G<4R$b#bJZ{67l23E4OYISwH23i%<2Xt~J34OnvhKoTge)E# z$2_HF3Lh`A9zyEu6~{?&oDj!};?TXkI2XO+I5}?LI8W5VWW!V9_NSny#?epSJ1vgW z>0SnN9B0Sv7IS7CXT@#ck^Wz){bxpfWxzRcysF~4>f$`%`9f=a9Q{SVCJ$T`$CYth zOod|7m`me!)1l;m)+WNsg;&J!rdkbDM}1^%sivtcj=DI?Ik_rU2rJ{LilZiuY85$~ zG__Xr!qV-}hX=iA@*TgYa1nv1z0^?M?PI$fW=TdWH95=@?K8~B@e|m<_C*BfA zByP_kx5jZ>9Cyky6NI-5?+|V(H522wH;zeh+{3Ai<8JZ)DmBc3bZ=`Wyf2Oi;#F31HOec&O?%aIF6YjS_L|n z*%3V|&SP;rF5(GBW*kq7X6+$m=IM|=yv#hyzWDrKYm>o7ug+rd$1yvOIqIu*&At%F z+&Er|a9w{E$C@}+auji_isN&Ql*aI)grR3Lfd?Qy>DOHm5UEKbMrth_K+361=eiUvH9#>{I#_@X`KgaP4Gl}lPepPqB z#j%MV)>pV^iT_6&e@Z`x&{MPXH}i7>o0+H+*dnw4iDQQZwlX6n@Gq0UCX|*lLsFGV zpiROiUTR?MF>c!?&@N%8Z^wj9Yn-p064*Jhecz-QTd_IEvReY}6ZW@72aDa-f0>lGD z;VuarCi>t64oTop(Pv1*S!JfHiiZo?s$ZGumcR)K9GSqe2^^I`_XLg(YdK%Xh(1rv zk4vCO0>_JUfjB)A=#|+1oWIqQ6BFo@z)1=8{ty4;kUk}W)71RbR^;(XRhN|6`;jvf zxFUhG66l}6*$MQMOkd$Sp@wr4I6r~&RAdu&%Iktq+l2{SD*B=XE>7T*uoY#lC^G{R zxGdycF0p|c#gz%vBrq_6$^=RhC{Lg?fwBY!m6;)B<|^4n4HXHDDl<)LQk6ipG>}g- zY7-bjd2t4ZU64OCf#G5f6OK{as}dM1Vq^kQ>P+C~1V$%tO#*cZG$v3lVK#3_V4Qky zN?=R^%?Y$5aC@1VRA%liGn1v{Y6-{7%-95OOyJrCt`lcm0vQQhpTG?X6h!}@$Hq(M zCgHR)b4vpEC2(s36BD?NT_i9;qnNH%cO-D9BwL#kCnazFkRa~yVK2zIg5_mR&=a>z|TqEYJ1YS&Fb^>z~n3KQ@34B#% z)=S`P2~gp@1YSWKsz;Epb@_za{Wd0$(QZaRQ$u z@QG62r^4mJ6+*URN?a*=mGE=n7eZE1V08lPRa_%nD_lo!h!`UcUnlTW0^cO?LjvD& zoihI?@V$s_Wu|Sp*`?h4s3NO2B+#MUo^>}$!_VUXlEAMb_D~hO=Cy(k|LIIl1pfrI zYCG}ppTOVDy&5T%uxg9+aNz$i|0l3p68|Q!LlWEM86<6UlSG@OJ@Yf+b2ntewn^-g z#EwbqltjBEnDDs;aI>Jm&MH#ju1Wi4ED6fDPoh&2yC<YCnsGo9U6SaW#DS70pGF>(w2!RW{NN-G zOX83u4ozBTlCwZIknS3qbVSm|L+gwmnZ!v+9F@e0NgS>5cBfj6;+Uk(@EqE4N%TzO z_@q6tbBsNbcJHG?*7i~_CnW7}@hC~=2%i6w+wW7x>hRDfY5%CpDb$uk|0GUJ;+!N- zPvWd3&Pd`+X`m|V?8N{7n?zswC$yPE>zBm&Nt~O+c^YG@81aJ8JZ|(CCUJQZ7bS6N z5*KrHN&A$WI@z2!fL+LD(pBPIk;Fi8uGGwuUy?+rIP?saGla@z7)MkgqLSVdQ7x0YlgRoJ4 zpd`(s88oRSi7^`W)zU)_eLgmcJCe9IiJR$IKL1JLx+HE);`$_R(1;jg91%5)PvRz7 zON9)K>AK~)C5c<*gxiD+un9@r9@2-En>&-3$oW#hP}QU)?vmN0?-p@S68DNYy4)U~ z?@uC`#N;Frinj-nn36;^iK$6MF)&Br%hoOkze7)022my?4@+9QOWD5)X^hxyqeRZts`ZC-GYnUnlWn65k~8eG=a$@tt~Ujd^PRL2jpEq&Fn-a}qx#u~ETBPV4Ia zC5d0dF_Oa&+LXkfN&KF~A7Q-FycNv3b?BrkvXZzFswhnd->2@M|l$)I$?BQS+2kph#Rk$15D%z=ecX2uhPb@ck zirC9RM+bX5*vGMH`J{4lit@w0sy$2e{tmi1=;Yuq2M0Jf*gswtjDzlu4H#YnIZYh9 zG7k+qo_q&A9GvZ-r-MEYdO0}B!3pYx&OA{>sdnMsqE8l9azqYJ=Ws&F(;U=F>2PKE}lOM=G*TJZAd%tkLgAxZ9IJlT<`3b1-Lg7WiMvjYpaXL6g z;Q$9$mz#0r=5hyDI=I3C1ArH&hB#1$T~}^OX@-L`2Q?1L9aK4}a8T*keVM9wk*Jo! zTg%Pe<)+rb5C?-C3>I^;%xe`J>L5{W-~J4DQ0L$(2O}jj!a=Is6w1vg2csPn%k8fT z=;WZ>)H`T$(BPoa!E~u&cQeaPvx647f?~X$EH_s>xYofn4#qn6h|-!pIFNA;ZgOy) zI%4s94f6)!jl%H`o>i7+D^A%h4kkIc)xkvRxlK61!R;a_bBBXFLz)YpO{n%R2Y1V3 z9344aiT66#=HNaDuRFNk!3+nJ9i$yR;2`Q?ii4?=r?+`UL_b$iTmzxdc=5Ys4IM^ilKh@V$ zbfAN$9XuloH>;{mg?Y}w^UMzwrd@>{0y~}U;AIDM=sgE7IG7ubX!igM}QpgSQ;K zAiiz>_|6=s!#FC2UxYPht*eCc4dg8`wfkR2zd87W^X1@o)!tKKCWkisDNdxq{O#Z$2b&#i5hp5vc!k;O z;9mx<#+9uwGb#*HI6DQC!l5a&Nnx)Pc1U5@6xyb+Qwlq#&@P3CCI3`~nN?wSPGOf6 z=8D59e!ar%mO_UV+NZF4%BEsY-y+rSk;0xSEUqw1E6gVqW@UxhJB0&M*e8YkQs|h% zzA1cBVb)ZbZz{|$4388#rSN-&`J=*Yt}t6FOy?B3q;Oyg2c@u;rdFCAD{bH%oWdbA zveL9yara7dSPH#T=$bFJ|^kEt}{E6u4XoRPw5>?nm>D$VVc=FUnpvC^EG!dVi#tJ2(CX&$IFeNz~m!Z|5i zkwU)|E=u9t6fQ{NycEvoT=3{vX_A#DQ)&9AaG^LH1+QYIxj2OZDO^IcQDO9E~FoiOXD237#o~$&pD$VRl^8yE$LWMNHswS^hnyM6PQ>ad% zCWY54&0Ce`U5#;&j9)CVAt^McFf@hHDGZ}4QW&1XRnoIW!pkbn$P`AU@R5oiSDNLO zrY?mBDXEv_%1YCiLX$XaD$RG2Y*BHH@M__YmFCw*q)W*S^&|6dRQn)PzH-!l)BvQCNh5J&tBZYfXxHE;jQka;+ zB>G>sz}qT~sj{yN?@rl!*jDDfA$@-eQ$$Zr;QN1DB>>@n%#6lQY8RoM@Rx>T92Rp!wY9%r0{Vy%1b6Y7HWQz<;lHO`l4DLf;B zG@n-!pW|Rtm?dVnDihOsr`kCwyrAZDg)gS?atiZOc!`Uy%D#r9S|YFcbh2#wUkdN1 z@M;RLrR+^Nl`Kf%O-7x<;|<{&>0g+_J1M-S`F%T_*>}hPJtJC;5g>9+r zFCsZ)c52dSlSU_X$0B=do5oIQ?3hNoG@cWm!PY9UbK2&4HrzFhz0%k%jSgwFPh)rS zc}vAw-l6P~#-3^03+Yy!d#AB)8vCTtF>Srw$|UZW#{OyhyoF|y&*lfD(LHTnIdx9s zz%;t1aZnnEq|qgfgVmNEj!ff-G`gkj9VHdET7Fa-N2hJN zpzAv6*6)}!PD|t1G)_$8xHNjEaeNv*()PSfZM??w;ZGVTr0rsCHH>&t8hz5}oyN&& z`xkwwijwT&6e`y!NRzXUw_0iROXG|*&Q9aZG|o!f1NKuNZ~smA*fefV z<64TPF)nSB+jYY0g)H8#M0cZ#7d|t(P8p$*g>X+|2 zS1|vlkyA01Mw+Wn%fVHXj4&%CKhL@2KYt8I>WL_(;ft81F-}WkBiBnB@2Bx#8ZV_W zBaLU%cqom>(|9U^=vyi{dx+#VC>jVkj*8c(P3B$txBLANZ@enH`9 z(s-xJEU7ZjrSU=<&!;gvjajmpu}1;ooHUkJnPtj6bGbs(n3u*!Rra*DT+El#SeVBA zG+s^P6}A1J7BZuhGOux>xmweBU4tcuLta&79}B-J&gv@jRvPc7@wVD7qDhJkN;16= z7mNR%u(kP;G*;89G*+bXK^mW=@gYr0V_7J}WkSi1Ra{qPKGk%PvpkKjtL%60pQZ7+ zm@9>=()g~*o+NpFA(en?|28>X=?jrE$luQ(~1eachqH*7Bcx57L7X#;dv6+i%O{3-F__D$HigQ_9U~f zi~U`jZ})3Orc)OOxHzWT^sF{a)Kq?;i<4X&9OdFT7e`aMB)hw~RMt|@u`aHxHVgRt$3-s}JzVs3 zQBiFwt4&q48D4EpaB-rG(ba}8$Hz#2Zx?5|IN8OiF8atG8gq(>8>`J}98PHD87|Ir zaci}?quNYX+p}F<;G(aKb6uR{qMvKOSz>cqOFYlT`7R!)HnD1xt~O87co!GDxX{H# zY^Z@}s!g`qT*4u^23i+x+uXwP{k3^t08b#lvd!37$U0m;Cyo(!L+^A6esM>rQM*B@JR?$UF{;qxG zc&l)&I1}hz7q`2(%f%foCc3y&HhfoYHdLEQiqcn;{?u3aot3VM?f!?zw@3q(+*)Inx%gPw<|7vqYRse>^NEX3ImGAJ zdlwsA{NUn8PG5~(4y+>ntd^mw=@Os3b(n~DFbBCHe>Uo$)HUJJ7nx)d0)zx z)|eeLHeX*T}84PD_ z1|=DspTVUWT#&&<8T8NK!p!!!V{_H^V!AYA^D`4NFA@VXxPm^<;Bx7w7<=U0U75i^ zO&A;Gs0>DD!1r|QoigmDK7$77Crx{J{A#$<4HSR|8Hjm=>GK!HpSk@v=FG%rV}S!L9Us2Dfk) zBtx|%Zp&ao#vWQo(;habVRy*?cM2y8CuMM#h`WXN2*17riY))Z5Z)EVMiXCcA$6E7N2Jd9>wwkbZ5u;kl-_79t3>Ihb z9#coHIY`W|wPr~MOPLUAty?I6RIT|igH;(Ulg^JaSdqcU8GM?-C!x;cYt8bI?p13( zljKTaAL;o#gEd?Q;!y3EB35&mt9ES$>&01@!B?ToS+(Zt48B$I8{xUN<~#LrrA+;S z88V9>S(UXbaRVbKgUuOi%wSUnKWFf32EQnUaujR$<1f*SCEm~ep245e`G>Ho*8G*h z-!w9ewCY;3MOFV~uq}hF8T^~U&{{L1)_%`lUu%$s$)d5=G>gMQ?U1#9-nMNPyJfLs z7CUFrE^AXUubo6(S8KQ9U9xs-*i|^b*0fjE?pf?1qJxkEy!Mm~n{X|2fZPa3tkIDB_M@Idv*<1ThY7o8 zaX4FLaYPnJWzkK{BZars+S3=WqqFFq#W7j?9FoO};vbhqPl+9$MGq0Iom6XjWpSd4 zCuDI??e-^`C#mgZ`GJov`($xi7N>CfID8pN!#Lj4vp6@4GqT%XU!Ix8Sy`J}&(7kU zEc%L0(DNEmzbtYg-AVVq=Vxv1;-vS_;^HhW%;KV~eI7#PyqM)K$>P$GL(hwf*6v@e z^w2DZWpPy&!zD&0{Ye~=#dO6s=~1d0okg99dSOErO(Ghz_Pjx{W)(@;ad8U}|LQER z5kbya5!YrhF63M%;^A6z1H&VW8?zX%6*Qt%AwSs2;ublXYB?`d!m8V{n2@!>h<8-F{ydk7VtaSNCTzIg4x-4`h+ZVoDa#ET(1=p#Yas zt?4|-ln*koEaH?LWS$;mz8z$a7;KVRq_c3cNM%tz*f@jD`-4rpA;!%j!>AZy>V}x; z5cAj&lcU?S$Y)W^qL77`#WzDt`=RE7q2}OW#?KEFR2a z274T7HjFgRC^LVQc{q!iS*#mn_8D!?7;PRMZ8s*4<*_WD%i{4Yo=_Cs#nJ&Qh{#jI8_zW-HV%*kS&qT&VNT;YqtA4l6``Ab>6oW(0y%op?L z(PoqQ|5Nd=(dISjUy#MyB3`FGBHk3T(}h{QCHf!PK+d8p-Vx_r;o?y8JrUbRnUbOrV7IXMBi+{5Ciy@&{{aeWOxJ65VlBBn0 zu}#H)g*(?7Q`{uAq4twTo zhS^oPTMq4W=pcG`;emB_-`^u=ttGLSm?ZWVv5&B$@ZdVLUk*p-uzwC+bLf=AfjJzI zL+6~$Gt7;gYvMsU9Fjwq91hNb9;WxmBp#Z>Vd4zeXKCadoBv+YTAR}Q^%=p)aZtSWYQ zii(G5;PlvO^5N-1)}EQe1v#9R!`V6eUW0Dw%dUC&my7!4aDEQwQbrrxd1AKGl4lN>@a%c{NkWS_`CWov4!x@{y^(tPQ!#EMw{ipT@(Kiam|A)_E zGRxf}&aJ}RgcF49<#rKw2=5efMkeJDrR6!?FV5Y9~kQ4oMM?FcsEzuQP5)XL87j&I$9vLRjmG=uv0<9A@Sa<~<#py= z(N%T!9Q9rfOBqXif|0`#@wxmd#_IzWKa@5WKgwZU4j^oD?$TW z<94O^Y_clkf04tQ9KIBPwU8Fp)S0!S*{Ze2uX0!)w*6YfH=%~_a`+*K@3pAuqJ8+o zMw!iJ!ZH4o!_PTv3~Q(J`A-hNsx6)To3g|vWiu9k7x9PiPhqWG@weh+a}HbBbsqoZ zuq}tJIsB`<%3Yopg9Le)yv^jKnY9=>JLJ(WkG6U2n78`^nXF>)?3BmOc^hDCNcld( zUGvy2kM?=%bH>u{c^s5ShdlPpV~;%c&STF!_R8Bs1@#cAaGyLnhI;0TxnCX!9yjGND38&3yI~E^V@MuX z+;XQ<@S5Y{&4(G=2kb*3ecYg8N~yqdz& zIabAML&>pq<~q^WhnySoxG|6MD&A0M?yNKS)|s30xI>&@2mXI{+XwLIqK@lxL2u{P3pt`}vJ`FXq|zcFmn^7vQ=Gv>JfDgS96pXaeWkI%$kA><-jna3(w!qr4!n*Bu{ zYx4LqkJVZ!mZQGb=CMw}K+XaQug~L`Jig9jLmuDc@qHfO=JB0Y9L=CM;tzTJD4ScC zDlPdbkDuj}jp5p)e(L-+kH7QyEssC)*p$cbs%4g7El2cc9)IPx|0alBRhBu*rXC7DenL+_iw+ zM6jxT0lOE_p57O;0HxsQmB1+0@Kh4&L@e_^Krb`igGD1V@c zg9_*pa@df=Iiz5Bu0w@~70^`#Ifv5*(cMDMsych?dQ`#Y{G$u#UciY398*A#0*)1v z{NoBZUi4}SlhaehUcwU!_(uGb3OGfa-olfGeG2$qwWq3hS^;MiaJp#f`AJo07VwLR zvkN${{k*7*k^j2EM5%Piwkz& zAx-9`1zcXh0FG3HC7;Rsw>oo00aq664$gc<8#dLMk^-s=C@r9(fU*M0X`#+wzt@>R z>P%$;Rg$-{RA>IGGc^Sal1#1e?>aNMfFbI7Gw<4D$*=-O6fnGitJIcLNvk*o>~y3g zX~5_LS_-HufK~Ov1|f@$1vG_pGsCamkU1vgTrJ|70>&0FPV}`xuFC5~TwlNqjFx({ zs~VC&zJQ7J8(#qwaI=V8gtr!OyNKHgm>{A-YL1dZN0<_(g`Mi{U2~>@ ztcp1yIr#!QtI8|jp#qBH`vpudAP_xGNLN#s*MkMj2-_Z5Zyqk-u>xj_^GL{lR0OB# z@dBPJ;E4jBF5t-mo|0p!iYGd%dZvJ9C3&a}=vr@{S8-MWvlWw+IZjnC6fjp+jDZsV zZyG(roF~pp1-x9q>jlhLki4RG@xKCI6Y;9BXT4b%aLAezKaA~qIqvG~6f@K*u97VvukzZI~F)1>Up1Wv>LDB#a< ztxXdD?*jfQU~>Um7$o7g#V1je-zwLUU@zMWfQLOi7!NypXyai=4?B2h>)E`@-IKl0 z;q5%^r?B?l#q0HcTclXf2v)e=`>1Qu{df3myULHDn*xSQC zp528hz$)t5SIw!Jak#&S&K^2>I6zElqYa#?13er>zAPb!!Uuae%)=ob4wY3Kbr_@0 zt{x6oTjmfJiQPOLCz&IKM+uMi&|L&o9pm9x(KLX?<3;xn_7wIKo*+C?NU_W7O>faB z3;PI932RUFaGL1Tg#$H%XL{)C;Vchl%ePcAQ9YjHp`Sd)q1~lLcbP@!ZjPNkhvv)DA%Zf2GT0^e$P|p}+&}jks^`_B7i-#uFHivGR zu5~oV!`0%@Ei>!QSa#vzS`W8*80X<857&9P(Zlr~Zt(DEz5V`yl8@D!@nNf{q~~T2 zw|KZ!%-Q11t2Yxo+~whR4|jUFBb0x&-c0l`$;0dQW|1V92=A7_J;IOc&3&5F`-PJ| zO!4r5Xin%#P4rX`Uy6u&c*#S|!xJ9j9()f84;c?h4`~mMhm>a@5wEQ`>*~!n^~P24 z$9ntyUe-gwL(W6q!$xs7)tgZ~{Cg;R_POX^ni_T*czBrJ_AtZ4bPo@5EjO694Q9^< zvrmJ0h^tSFs8fTPNk@5h$A5$it-=14yvIB|?x9PAIkLeV+hBLzCp|px;VFg9(;lAn z@Qg;+qrqk;M#ys>PGZ{zGt0wlRnhHpxTxiy7leHq%!?l8i9WxtwCw$=HLkVyo4I0iz9zGVQNySe+tn#qj!)G2= z$ODvQ4D(v)VN8QvR-bcnnPI~9a!rF-9nuW!wI0@cSm)s@&%R)yhv^*R*G#HKd?V(! z9yWRS&cg-|-+TB$wo&ZI&^9i&pFI4+dFPNljMcnc+hA^NFu!{Ejd9yxrqHYWMM;DC z-NQc~{_ya(hd(|1#TekO2X$+MH``5|X1wF815$%dL`SaRI#LmK9ir6*e?^eX)>SFgI_AH`95qqerO0AfR z_bQ@S5qlSH&e^Ak!;0uw#DPWZTSTWK_A6rlqK(W2>XcJ|KoOmbb`N5weT4@Vac~h` zq;|Ltw1*UNs1#0=09$n}qI(gC7ja|}M-X;&qr-mYq zqZ#3R(HlLA=vmyp!_uU=+Da(T^Tvrqd$v4D*t>|6i|8YoMv{LD^{Ytwv?88puqVtj zia5K7GmAJY98s0*?_0z<;;=`$s9zE1(sJH;3C}O0KUEdc$Uk1EJLn6=Z!KP2#DF3$ zDdJM1hI38m1bX;#4f6`&l|@t+F|deo6-$aJ6+sV_iD+$JA-Ymn74mC}xT=WSB8C<* zNX)@S3<-PWa-b4k!&Eg~NahF;BZZ?vCdKNCxU-1*BE}TaP_&1H#-iP@cr}p-=@t>s zHJGc5m{7zuMci1#*dneg+CAmkBF2dz{X&DeKBR9bVjh!BgBdT*O-0;N#Lc4r*I?gj z-CD$LD!!rOq6Tw&(LOe3*xXUHUjmSxSj2s#!)dxp#@}7UJtFQEE>@f~GPyt|YZMO% zrwFGCTkm|MqGLi1HeN&`q>~~XVXBCwOqg7@MP!S}X!x8&c0ne?FJHvQA__&kS%k-h zRz$Ig=`zwUA`mf6$R-~*m|7nAHM3Rpd@mLY7!YsPF!8}pK z3q?Fx#Iub2BA(HDe7cCQ8tmT6Fy^Xxu87%1JYU4DBED}hzsQrn%OP`$*xF!BqnTU8 zD;!r5FLOqUc&Uh88cq8~vuC3{bV z)*jMmcY&^rW?>N@74cRP?-ud4sul?;{0`mKnsi&(D&#n~)vG~X2QEtg@VsnB4_{Jw|{Mf_02 zkDBzFMl)1ZKdIHoMpM^ler9g;@k?dt3cJgtOj{|%h<)gEYLwy|Rql=G&e7ha+5n`s%9PHx|-|iRLMpJAw(;CfT zK92Cw)yLs7hGH|MwwsS5#d);RJlSZo@zFkx_tD+QvEm=&<0(lVr{dF%=J`g`!$&V4 zJ;j-=+7o=7sN&p4Gq2J9Hl(+YGklyZtNL)H8tf@PUT!q6G@8?Bo)2z1bkqulbfY=b z$GJYv@^OxjvwigS?fvW#xeu8W%g7+GL}5l8LcRYW7z+i%%Ua}^AY#) zNt0Qnv8-t_Ngp{Mjt|#I%17GAh9>i~#`RB=$@s`J(wfZ<&1UyzvtP5x`zZP-`0yC^ z&2}%N-?}y%-$%fJZ#LbUP0wc2yV*?l@vM&reLUu4hL4#(9`f-pXSvztsI!_)|7P=u zk4G6l)U0{udGB#90UuBJcv54be#Y&9X7jXYN<&-s|^<9Q#mHSe<&;apR5 ze7wN$Xf`98&8TL3XYnEzf{%GVUgD%T+pp%RmUBJd$1CAVzoyyT*lb?)@vo29e604d zz{dwZUia~ik2ie0<>O5s3w_+tZ1;t`n$47E^R|ygvMMH%63ymaAMg8E?BhMfbEer8 zG`b}|mU1ea%|mMbaI^W)#|j_II2}Gd^6@c8t*U35%?r)uQy)|WbFY4`K{S(;dJxm zFP9z@#WtE{+O*jG_Lq+>KK}NxnYp^fuJ`sWw!43PY-Jj6F?+VyVBmCYV}cEU0J{Y+ z0d@+|CP3T3rr8|=bZoI_k{tuI3vfV-IaEp*xG=yO0s6}uX9~{>aCU%xqWcCoM?`gt z8Pa0T4RC&d^TZjh-Y*bcCz^ia)NnVsD8R)51_Zbyz@>rRwHXOKj`CsMWi)_%(Zo*t z{y#uzfPn!@fSLeR0jdLg9%f&hzEQjlR~Lf<3=c3^ z^bjHY9V%iNCs&8ns{)J`XM}KMfKeh^YwJYU3)!|ItZEAI7A*2t@!0Z4oNZXun z3g(8wbnm60hR|?8DK?#&!mSAi1q&{tH#0sau+M=pUdPN?Un06z!V7=Sbdd>QadSo|%( z-vKrS_%p!o0saU;0ZP(H&gowgYo#{__$R;?4TK!3BGNDt{|4A5J2A}$xe>MzULt|E z)6jkzcASQG)6iF6DD5=OrgYxh?mW%D;oU{Jt8h0VlOfkNWjahlw`tg88ahwIp3|`J zG`pwlCER-&_7TxhNPdi|SoHqFP9gt*X*Ro3;J|4(bQ%s4zl-qyQFSHYHdXKYJsBD) zG-yIfAu^Oo6qSfF6-uQH4Tjun%$OkwQK*OrXPQ!D7B?D-)DzYhHZb|zswQo3bEA>ryLkS)(U>K2+n*{}XY9`t?sB8G8%^A} z&yA)mqZ@a-agWQcuGpqEb8#COPZX7y7;#-ou?ZzyTca$pK@|w;4A~MH~ z_uQDP8R2Yl70q*Fw;S`h7~FW@jffiy-0-=v&<)FtMQ*swWG&X++~bB<>x7x`fsHqD zzZ*d}0#c*!BmVJ!H^OfF7Rj|i1q!2XWZa0kk#r;OM#61>cb99AD~*$qawBbgQo>ZT zZWP?exsf-c-~gHMVz>QwHaH^cEOBF<8%y0-<;F5MR=Ba;jSsa-nJS&Lm@7>hdzhFT zYus4v#>Z~^ue?%+p}7)1abvCa2p{XO|u}SkneGY_!+TzAmBXNY= z-Pq~Ir*77cB5oEwJ$}g|Xjihy zSj4a0IKXw{#}an#iCn8;7u`~3UQ zLXuzHI4*urPxvR@_}7hJ-T1?eQ%dGHA@l!T#g%Th_w4l8~Qg;d~1hSUAz&ML(ydbCG(>S*U2Cyf_oM*uo_i zDp>aSeE#n5DqG}ovZ^G7OD$YxeDV?T3JX;%RJQEx$tYJ^xXJ<-8?UP^Tx0mP7A`Jw zQCQVNHOu}Kh5D=#cS>~&cUZXILM=Ai)S6uGW1a@9AI2DB}*-*;}60=26Z&g zoM|M|+`_#U9<*?ug$Ja0zl9e6d5}&^3#}w+re$J3I=kQb%?*yRtA*|sp5XG}`7h0US~BdOtLW1!fT4o(~LT-=VS|0 zxMs|c@0s~j3vXJOX5kGj=8rWfdYf)xh6?E1G8pJB3v(^JZDF>BcPz}(lBOmXGe`HX zg*ldeI+1fAl)q=;eGBs}%-4u0Bl4}#nep!|d~e~PWq&7=e7P|kz%Jh;$<^F6r0gIlFQ9j=+q{GiDL{giREdA9L@ zQ_K=QtZ}`^o#;V3PJ{>TJ?Nks+R-(qk4T4BTtA&W=H^c+7*nQX_Wt z;0e=wQdUn1oe83cr#*N^&YfDZ)FeHn)60Y2BF}p8oNB_Z=OuYT$b$3{>FYs}2mOrj zMJe|;CdHBu5DpY_j_7Kz_z(}qi467NB@af55A$HS$OxgMPm@s|jP_uRgfE+}u_CM< z6?lzT^A+I);j11@6xl3=NgllJ!DJ7(7p7>rav9KYs%Du*cA9T^@TRQTHQj?5hR^ii zE%CQY_?+dzTn}bT@~+3;!gJ)Awsc5*PhImom@h&JlUbmM3x&*|nr_o;dEgOm%O8Px z;1l-?143skA@Q&WaStNmQDICtUZE4>NnuLp*k%+rE6jPY!GpX9%RMM~@PP-5JvgX4 zLUVrag|7e{ln2W^xP>o_MXnpQJ3jQ_V-Hq%uu5~ik~>uLk33kdGlc82h3dJ+gLNK! z!UM_!mbZZ(@41+{gw}g7M`WW1Te*?tYO`>Q@P#7#PaK5!5s(MlCHYiH3FSLI*zdt- z8rLolzVcwV_~#ycA+krfSIB|y(|ErW{x>_$jDIbiZ#?!twd7nJ@Zhiq-+6FI^6yy? zSve;RHy3q&@ZgAg$$#|VC=XT1*`)KIJUHpW&mNqhj<(@(dFU^la>8FFIVJqfgFig@ zT_rj#WQmyDpB|j?;4csU@!;XX|H`RDC5P2B4xce z*K5DL^EyxDeBlMc0ZN<6m-E^uzwMI`|Kk7Es)834<*JewmwN3}i#qhivRp3BD}E}-I#=^V2XyU~}KE&#p#-G7?@t_y?c+tv> zX3}ZyMN2R4_2L09?(?FB7xzof4@p>=cjc3uo}KkmN4&Lk=$7(_#7Q0&Y3oHhk@mt4 z!j8iJMJ}p6D&9%hS=dGRnDB97S0R0uE zMhHg=M+xbfAzoI_Vdx|=<=Jg`#g->06FG3;#VbF_}3QBKbFCr3>vpz8|a$dxF8hDYA zJSlX-rM<|inK8qs6~pDdSRzTmi^X1iARRskacJyas-{!M!(JRw*AJ@Lr#%1Fq?KQW$JG2u$uPZNyg2E_aS7QxAuGOmFvPE3 zoHDlT`kf{|oc7{xFaD66I)94%C3LpfKjQy-amH(ZNJ1T=%V%%ibA+XQDC4ucO8e}? zoN``eeP>tKc|Mev+WEo@gck}g@}Zo_e=~To5106Gse~1T6@92ALZ6P>WjqB(%C#%2j-*YOJb>T<1e|Be`DrQ@Mt0Zxr67-kQQ%KGYUr&2Lt39U+^H zdyBg23F)N1&wenYyrCqw(zy?}`EZ91jU>5U_}{3h*;w9aOWs7hsSnM3xZ8(&q|87Z zEPI=m(7exwQ9j)7Lk}NX`0$7i5BSj9hn6y-w^lwpSRz&%AKLrykPmGoeAvtpHQO29 zL0uh<2PXNb4^Q~e$%n@z?Ce7qk^l04T+OaV_@oa{i$5joX5`O^bQdxr&3pPVz=vKw z^p@~hAD$C=-iH@NoDjr5KJ@pYuY~=4c=3OGi`1mgVl#??J`D3=kPkzA7+gYmsL_1M zXwqu94cco6UXjjtqdCD4x|%5dnh%qV&>6xM zA7=RQx({#oFx7`?C8AT|O&_NJuRdMP^x-WdWb+*#=J_zohdDmXmi%2IyXaxA;qMvG z^Cfv-xIpM+vdD*&4{jeKK3G2ZeDJ8(D|Ed1eF&-wc$or6$oSHd93O+10-0`r)hvkwi^h&0Rns~1clxkL z&Ch(;C4G9{E%JE@wY@%k!DHWted^+IO*LL$`LJIS$J;kP{OZHEJ{l#rPp_TdM^kNEJTVmakv?=f}#()tKRVe*30y zz8@F)ae;IwztC@wlyXO>ydO9Daj_ql`*DeMDhMn3QAxxp+NFM6rl#}Ub%h_-_)%Gs zD~0rSmB`h?20Z-zxWSJqeq7Ipeq1McH6f?Cx(J;=Ym%uU2@7?j|Lpy%rXTnCQOl3U ze$@7(o*y^+QAcXbpI2S+TZEf<`1{ewj|P6+>bE~EYA9r4ylykj$#3`L4nOWRQJhjx zewTEb_|a5^lDkKU#>~FXXa+K*Z5+CH|n0ekg3Cxp>HrjuJlX zM_Wla-gbVpS2E-sMEDU6t(e#^yao8t$#1{kbryEB1SpnL?_)EkfmYL}m$Rn_kN2 z_%T<__k@(p6PYi3U%0?;|Co$ji;Rw2#PY)<;uZQ#uiuXWdR+?o5%(h`c~}@RI#H3B z-~LOC^qf#LX?jy4X(4Ak>&H?*a%$#<1>s`h2f`)7A&N_f%lud_$%n!f!j*n}C>^<#%0>ogJT{n(=E-XPp4+$7vAr1@59ZWFS(UF1{ae5W6KCHc&c zT_U@U=I4IwF`PeG{KAj@YVH$$Df~*v^mu*kaN)Op9Pr~i)62Nb{GftT^N=5h#eWbU zVX6K2(exe_DbLS;jD-9b@#B7+5;-9}>Bp}|$0^irYX0uWX&&`{{Ncx6e*DP;K^YPq z@{iR1mE4gapz}X~G69?uKq+$S-jLxMZmj!USkz66d#I6kBx&W?H^J?KW!fOMl8bB3sy5-%ins|Lh zscz)g2XI5czE9N<-Wb45>RKr^XGFCEs2xB<$!`vzjK=>|LXQ>E&JK zR>N--X%xWi0o)v|jJ=`Ns9Ve6K0o)rvD|xstfcuUA79tM_ zTbfL0^tg(Hl7l*s4+#>@8Q0LDl%Hh^&@ zym8d8NY3RqA#ir%OblR#gs%lKNn~;W(*l?h!0T!mV60bJ`cr$?M64IxW809kq zcuT^!h3^C~TV$4rMV)sgaZKh0@Lm9mB$*e$d=curAHV{`7aD!Hkys+00K7)xGdh6) z3gW>4LIETK2pgS908#N+0C7_jXK^M2$f_$9K-%bMM3`sJNb<&NaR47m_(1?mM3x$z zWg^RkEbyx3n@7fz)8b@6*(nz2K&4CY2hEjKZSn@{}%pZia>8? zBtcNOfFRBhDHTLnk8)iDZG&i~=7Yl4!Zt#Ben{kDA@$oCd3%u#!j8g6 zO!Q77RPHR&C5Xq25IdWrWG4&y7B2n{dc4}ZlO z>xCeC2Qes!K0y=((O2?*!WV<+FT%}2&9l3b1Lu!Ugad`_8XUyvAch1nJcyw|43pJM zoDO}z!r5yhBpeyUD9P!Ky|m@^au8#J7$3ygAjV0J1>{A;SAv+p6{~NQt<+wo{=^_& zlN$M?ASN3=C5YDzpUU-V{J#;zn?byzuIWL{5Sb}_OZc{s-uTKqOMJHQT_c|p#9YIf z7&YgqIbZmG5DQH2!XOqI?iO*<@C4yCa$gXB!vjGC4G$Uph)6VOKQG0Ed|6}Agwad} zkrGb}GeP7qRyg`9={QGMkNLOAuRw_#%jHLF^7;rZ4B{&z*)Pf0Y>Lp(nJnUgAik53{CkmuK^zh}Y~)U?Bl7lR5JyFh z1#w*Dryzb7q1rD&`_4jg!bsTsHHcGcvXZ}v{2s*LL7X-^e+2QT;eUy6j{Xt(S9nH< zkbU?&9}bY5qh={#=@80@lohh~+z`$S;e0h|;#gf6LYojS3ZZrgZg7LtDR4T#g^D;Fr7qYjq$d$sYLb%$<*+u1RL%2SKDiT%=p<3wd^Z9il zR5zSzRK9^tsnsYUzbS;8A=LU`pErkaX9#sds2@UIbSTlhj3R2%|d7r!rdV>En!8Sd(=FnK{XHI-Vp99p}_oGgwQI42PC9^ z%M!g0hS0i1^Pv#>h463)T|;Oa!XqKHQ*ZkaI)>1pgr<`l@zD@Eh0rC0&Pv;=97@?ENxDZ|oVSEU$%E>DsOfU+L$wbqf6vFEvOb%g+3FjzG4dD&xOf&K~MI8S# z44)aoTZX?a@{Vv;2(v}jXfez&I&($d6VBrfQt$hwcR>gXLr8|OD1=Z5?hw43eSW7e z1W(BR?PHts`=22MLh#FqcQmHNE6A0pJrWKf7P7wu8VMoFS=Nn@7?*y6`&u_aV#>r# zhmbKm8#?>Omk*u&K_Sng#UZSa!Uw`7!lfZB6Im`~4j(F8C!duetdjhr5Y~vS7Jkf) zsf0fL_4yj4y!-hCxKN7-^#+JRuLO7x3 zPjdcq2)~4IT-?#8&dCr?hwy6%r;MxLLipWqC!asm{4<2V{#X8wT>UFNBcwjUaD{PB z`0QC)DvZ)$`=-FIGDb*#ZW!glI8T!Eg%=1f6jI?L5gL{kx!A}r38RAH6-6o;|Cfbv zO&FI;c!jXC@JiuT!mEW&K8$j$npK2Vh1G=D39Ad8THO#vjWFs^qHs3}YYJ-#Ylm^O zi1ReUuN>D^ljgUCQBS;n7!5@lgzfL~#`*b=n!U_!Y81xpVcZwS9bq(8*PUTB7NMWJ zM4E){w^S#qyTiCg!e(JK7irGF|6ueFNbP<#TL>QrqoqhIA@{Z8r*#-@BzZ_k;lqxC zu${2IkZZVO`2Tn4qY_fTQy87Y=o?0tFrE(Mu`r$p+h@q*VRV&_b7DLhwzuI^VRVy_ zFQ*gqIQ>i*&xO%FjGkfikRg4tw^ta?YP_r}z47#TK8)UBydZNnDeq%AJ@*S^Xc#Ys zQLI4ym1C6*9|nXmC~W_3)Id&_;tmdDh#3weQutCBqrw;##)vS6D--8=iP1+& zlSka>Fvck8%O*548OyaNpW`K@w^zcL5XNLRUkziTk-x?a`TVaY2{osL@vE7Osgh3% z;|-(#W*F1OXBf%MFvjci?YE8O9g$gK%ocgq$mfJHH;nhx!T+4Rd>AdH|$D2%8`IE;u0Jy4BTER47$oh^QJ@ZI{EsjmkKj*knF#(0}Igzt> zfzlC_ji8JaoZfRwD4!oe`3NqE;GzgFETL1b1iv_fiV<8AL4}C@l?bXDA#R&J zOU;@kqSrPGbt1Sgg1Qmh8Nn?PG?ctv1ob0mVDz0>w?=S#1h+-d=zrzxy~B8G9Kk&i z+!aAnNtzfvf+r(*K7ywr=pI40 z2%eGV(9WNrlSMeu$E^Nf7H2+xxRA`6Y25_bfi2rT24Y4Gw!;ENy}fnV}~kn*5N$S6mQ zJQ_jF2&tBcV5veRxqltczf41nW)C8$>n=HwiZjx5&h)!?p;vOUUM@B0D13 zX%y&lm-ucWo1aIpM|`i5d=bGu!|CL!2oS~o2#!babp(f6jzB? z7G5b_$zT4B;#%=*gsf*3LzqLgC>lm_T@-bqs2)X)D6Us8yKXRQH%3t_ikqUS8MU9o zoySPN0@se>=BWL$%!fce)bW9kR&}GeC5rk{)H8k#@)u8(zmxE-Q8bR?HuW}&;*Kb8 zH=54m-YI3e;^XUGQ8ZC+(icsMx zk#12uE%M(ex<}DNlAcDhR}{~RKPP-%=)8&3Pwy!DL{S_?U!&hom%tjf&bI0*n^EEWDL}s#jfOx$OBT zfP~|Pluw9aZWOOZ@kSIAqnI4UYo==w*MF@We5t)}loxU_NA2H% zS|sGJHCa)3lp%#|5`9sGqVPu%lukglOoJB{h~X$A>T+_6MX@4^cog|462?_Bic}QY zDAG}6=+La*gYuA*gs}=yERAAu6d%ZtYP^=HmsMS+A&@MO;zPq(mX+eGqF5vHQ535+ zM;{BRKocUD&Dtn-N3kx7%~7nE@&*Ok7`1=njMpX+>T}+=M6orBZCV4AY>#4B6rV=1 zQ*L(%Ib?eNOs<@Eih;T2-IEQX4b zR1#iVqPIIw;25ruq_R9*DNZ@_xjKfLFqAAF{~|3 zNN$rWmV%nRNbZQCV+?o3@K6kmW4JeF9}aiL(1aw0rfO1hw+u;|8A)>yy1g%kRx#Wk zvk#>f!Utk#sa{SfO(=g*=BrG@QQj!&G04VPp*bV;B}gQ49lPC|1`1qrjkpVi+33;24G|5UsckS$TH7WYmU> zj4(}}8>3Mb*3}a&$qY*J@df-KKUL>!?FfoP+vZdrzk^cPuUq&)XhU}UW zLo9~ZW0)Vq)EM55VOk8+V|YWFZwmkOJR^pgF}!7jj{Kb%=Eg9K)rets4DXicbw)(B z_hOi5=8h$0-1lSf#;_m;xAYgru!uWCT|`SlkI)hNVhG3Jk0BUCpv0&{CLDc6=tLf( z5|YPb_&A0{3`=52#*pXAk0BdFI);ptnH!TN^2(W-6k_-whQ)G1w@xp~(im37uq=iZ zF)WYaLv1v!2ksi~V)|KWlKDtvFJA#-_OGI|YfTJWWB4S7jWMi^VSNniO8DQP&N3_D}k9>b^Vb>usg0}VfmVRsC>WWx18KcC02r-TQV{fiiWh+$t0 zhhz9MhVNteDux3w?2qAVGj_WAM*Ld`HT>@kr`v<_c}Pf~JbakR5uS>1{Kx}2hNCf@ zis4ucKgaNsNq}m<#Bf5*<3@NghF_IG-STEMhv$C`f5z~;4vNz;{2@)JEF9EdYW~f` zpZiN=q#^gk86MzqAdYk6aK%wNj&tHD6}O-KnHxP*txOzc zxG;|LYF;EP7eD)qba5ON^s@$#~_LmbuPs20a{ar=(IE?z-(T_3k^XKdDpqgEU@O5vtB zYMM-((6!a1?ajtR-8k-`FpdUs)Qj6^6f>-EtQyAAD2`j>xXl={mw|}48_At<+!IIR zIGVzrZ}L$Tg?PH7SnCar>y` z(L^E1>v2qz|EZEMD000Kx9@b`A{Tq7$FU%e8B8*cnQ^=w$6HF6W9Nw85ud|XfH-C= z?z=)tn9N+$`(7OL#OIsd_tm7%Le*rE5^$^6GCJ(_#<3<2UmS@z{BZ>12*{ApInt0c z!@@`$F|DYmn#?V32>m4ESQ1Anj=W|k9Y-dPteGi#%Nbq}SuFfO9@t9{OXFA};WFWJ z;fF%@u9W7gI6l&FXtFwvkBzzGf%r)rYvb4)$2u8OvR-5Zhabl#an3TYaFJ_^np=&- zZE9{eIyfFUPs!I@ zb<+7($n(>Ye;3F1j+`}*<4_4dKg98S97p2#h39`9KgV%Y*)soQar`7ra{6)bcpSgQ zaY8yLg}(|<37rM+Xr7LvOagys@BbOcznpsB0^;~vnkcZ423EU}f%z;;TKK!eTq=_Mv-<`lc3EZ1NvjmzO zTSuRoB=;xmn^%hjS|{*80xgYgs{|fQfI5rhoSJP+7x}{pJefe-1iB{BPC2(v;PC`H zB+xm5jtM-Pz#|F!2I}13InqwdM9nT5FZp9e!m&Gx>IuyY^LZ+Pr&alG3HwB)D+1CC6GyAcmi)FFd~7835=AtQ3;Gy0;3anIe{?=6pCC7 z!E0HOYg_^o5*VMrE6RjJ<4vDqe^s{h>?HGA0+SMWBZ0{YOif@)0(_!96Z@LQ3KI)4?p{^iD3 zo@_F!a02lJBC_J?7fm20&YamyD0)&gPbH8}pmec|R{rdeoAM z`j=WWVe=&J<%rZgZVn`ALk{GB8&}2{&gIO!ZWs~8CCh?Lac4sWb%a_ha8#3X5w({@S{(~@{SiK)h$ zlMj*kznQe3Sa?lOVus-}lXy$~Z6kSy3#`~hwb@C$tF1xvIdaGupQ};7m&81g`9jLy z7h#lzNw}rF$e36nPA1+Yf=T$2@GET^28;*hA4(#UL|9!MEG1m|QJIs+lSnF`gpd-) zXPT9iB$Gr|wzOhzK8b>yvq^7@RYuB}B(Xe+rAaK46?5Q4g%6pV$O>vJTDAC0Et;aC#CB=J)cKby)dk|qnw((yz+k;F;Gb?&F9lK3l$ z-;y|;#P2Gyvp)Yw;!iVoG<0V0?V$f;p(=@iPQP$p%+ z&pNa0m{9+`lzk$dpR&)%3xw>tD1|C1luO~-6w0S?c?uV^$zT6Tp;8JJ#48G&kzOi( znUU~C;0p1|!Yfm_TI8yfy;Ry3+fPK-NW!M$p=t`%7*yF_mqPWF{RY8Im=%%yh7@X~ z>;wNsCG3p1W(svvsFgx(lljdl)X~5ltN*ZG3b&3a_UyIfW@H`*+0n!+l;PyrxRBlE3_$!ka1kTk#Z5 zPhp1m)BJG>zj?yH|D3|RDZHJ+tQ6jnNko6EWVW~ydQJ-OrR=}YHdjJsGB1Vs;&eM# zo)@GLPGMmRz7!UvV5Q)e0)x_tCk1cH{xZLl8~+xHpHrDaKsx`)LtNX+Dw0Ang=h-# z6k;WG5-BieniEqgWKu}WEt`zOi%I5E_CrxVg%#>5q_8-JW#S*Cuq1`0a!5^HG+EBE z@ccJIN|?_|>93No4L|=$VQUH>r?4S~H7T$}pQvlCnVoehtd|J~=y=|!ifu|^bISg! z#aoPjR&QGh+ts^_14&^=3bQqFJLQ=kn7}TshZJ_F@Kp+*r|?Azd*orSiRk3HFNH59 zr^!A(|5H=uUn`k!G}p}MKnho-@m&h%r15DuusO_$`G$ zQusZE(<#i6=Xt_EQ}`=|1;s8d8-}xrUH_zjH2zKDObYxZO$u2eXPvmxXIFJ8k~B)E zabX%|(l{@TvT2-~wpVqq*j13{^V7IM5@zeH$&1n`pGG+eSD4XVET5~3T@})}JdKKJ zT$)BD>1;JRm!(>^fBJs*y%5Np4KzrZj4%?R{~y*u}KzzqYzaZWduz-87n{ zaZ4JF(x{h4!!+ur(IAcEsx}o)@=-R8+tT*dpc7ssx2JJu+McO9Nm5m8~ZA!Fo_8L}qh(ipFyQQ=MHFoDf9UQJ_K8WW}YnsAbEavHD8 z?UXcrP{LC+9GY_oZ=|sxjW^SHOUl#Jm?6U6nIhDAJB>MMypzW4G-gT2VLImT8lAam z%uBrQu7%orXvGSgHmca%f&NDgHEq8hbz<*cIX& z8E;I95{8Jfydv>5lIl&!11p(IBdt+$PI+b0$fl7q{%Ok@DWtJFjm2rKO5=kxmZz~q z$t;ztWvUWmIV1frjTJPPklFHbx;~N#r{-f>tr0qld~F)vq_HlIU1_XOV@Dbr(%72D z#xyo7lT9Wcy4oVo&WhTW#&)^=RLBH4-kpYjCM%lkR;s5BxO#=5eG0fm!k5 zUHgm)LGH?+RK`C4&&l9gMJ$~`natTI8LmTiotwcG8JtJ849?HsBI#csyfAb2!Ks`` z`3x?WoOO1VR)q{IsjH&VyflN$rE{6knSG{RIfLpMT$w?Y46e%HnhdTs3Uqa?F{ggj z462#tbw-DIUZ25DYTl4RjSOzg*k?7%$cw!-GpJ>hYa2p&oeUn!pl$~BGq^==>lx>q z%?25?$e>{cjWf74gF7?0ErZ)--bl#VzawLxx+FwrICo{xEQ2N)+?_#Fd2?3sJ<_BO zHJfK}Uk3Lo$@1TAB)#!WXq!Ph)9d8W zA%jjCbj;upBY)H+>`YB(HM^MJ$1`{-gRU98n86bn^vdAL44zi+Q^IaW^O+2KWYFC- znJpvsH2FN6L2q?Em%;NHykOLvtoo?gH-mm6D|IKOhyH37WiXg)FM|PUGS7h-3{p)v zMkmk^bqy6dK8Iy6M$O^E5gClkV6^fXWwN5}%N&lJjLl$j2IDfApx*Hryi&s3s~Nne z=0stA-J>UQdB~Q2rWj>z(q(`I=?_@;2Wki9c9m}&UG#jdwA_M_K38N8dpEQOwJ zT+!{E48j@A&0tXm?`5zsgLxUeFSYr~oYhz$eP{Y;!r{BAkb#wfHv^CSpREbM0;(pJ z0~v(mA*f`iz>B4bWRS}snn5yySOy8jic6DuQh{oz3^Ey{GxmcSoAgGKl^-hPGgy{E zA%hPxSe&t+1fG=Ik_?urNgZDFww%ojKFnZ+D(U3F60K4=5~{7vV0{K3XRtPdH5u>- z{X{AKH}&h(r1Azi-UO>=&Oynz+Lm{J?F+&wqp@KW1?502j%z41UVkk1lje{hw79E;%-jXK+IP$xmkR ztN1D5Z${3=a9VNy5dLX$V4i>T%*o;(mHpog&WNzu?Ba8sD{C+8bF#QNi&9yft7hpe z%80P5tO)&|m&HZm=Vx(278hpiy9O0_(G{^=7Uhiu9DG2DsR)nnmp_s%3FQ7S~B$J&WtJxO{-C zsuZdZaMj47W)?SQag!99N&dh9S1sf7;Q_9jv$!RTI+D~i@@@lM^$f2s(tCibVHQoZ zxK+*DvbZCQMn>oMEc(m&omt$KMPtc_53t`&niw5&rhRu7_o!&igw2JNv-iF%T4!;8 z);^$kwGeqAi9kOU=blQv1Grh6SM9vY(qgiyy z;<+q3XYHF~mn^zx@mLm5W$}0xPiRuQX6;vdD)V|Wd-h3yLA%js7SCkuJH9jHblW3q z-}`zBdu8#g2E`4_aZ&y}9m*${F1;}y8urPeZ`M95c=gNTMe+VdQpAYjcS>Pk7DKWa zq)HB!D>|XKp;-*e;w46uTgGC}!xepmlA(N5785nh(OJBl#kefSWbJnu4t%WSbTvMU z-u(WLOeP3l6;g*jUz6G-xus;Xv3fm=ce0q8#oJj-Q>ot&zA2oZ#amg-$YN&J{@oc? zi5I>7hm1Q*nzM!PDyun)J6HIg(9xft#iA_U&ticFOFtaiLUA5Y?ks#+Seg`%gkELq zl*OM#Kt-dKV;IUJmqj>>WEK%=Mm5DTMT`p*Lh7&N`JYAF#HA#ouB?y`lld%`XHm%7 zuda);_R01^)_(e3lEpHSrK*7Qf`|~M)`vNvv_xa%R9jS$R#6_E~*i4&`$8wmn~XK@Jz@a8b^ldd{zNuXOY;&Y=Qb zvFg>hpTe9OtCIklq-alg;xqkDel!dT$8gmIGtZBZ*)~9hpOV$ zjD#D%dJZ?{aJ}-pK^|%d`4J-XcXFtiLxUV@?frZ-kHNaIW*3pX%2VEPZQxR>EA8R^3tkV4$YM+J>Q$N z&wSR0rMq9@TIBFh4iDt)ld7exTIJ9thX=)53!QN})n-lTp=}P2<OhoLzXKWQhUWH(?8u3 zC+09&%CF@xNrZ7(s3|#2Rm9iLc&DkC&R23<=jT5;By$Mo5Yf(M4pHgHd|nc3^xf`pDj7;%3*5`J9F5U!;T!bOZiiyV8_)!K9ig|Q?fgUFLL-? z$?VY(_DbKW;l3Qc)E=QGi^(YabNDWYuQiZwbOL-U{R1VU(DwTr4(4#k*wXy46n+pM zG0I1C_%(-PIh@GhryP#w@UwFJ#VF8_2OyE5Pnxk)aw>=4a`?T(?3|X#AI6aSf2sa| zOY)EKU*Q>}@UnTFYxsG2{H}Z11$kVY$Ax+Oguf_{@_CfY z+qVYVGEb*&m*i0~Z=Wp{^7ie6@=AGJnzzq$a$c9^?VHZ!LK;@iI&w{J`&9=a>daxy*u-`JCDYBG|A&GDg0NB zre;w0NS~{&S>8V0>FwS;TIF$H9xc>$fBx+K<$*j}Dkzm1h?)=P(Ib!6d34UBO&;y? zct|D>3mL1e$X^3o?elmLTZ*7=<1!vpgj8I@nRl*jl7?V zOoje=49KG>kK#Pa4s@M2(0%};e4sQPKG;|d5gDplQHR&CJcgUz5qXRhA0-@ZUT0@{^9bhQ%OjwH`^`$5p+a%3hVlr@b3{moj2p`%n@2p4bRG!} zIVqp15^*z1+u6&xJPK0FD+fARoW}VSyrA9wB3rG!gEgtBqT|m78ZZ4p10d=Ia#OU0j=7$4a^$Tby z-axo|pzGEGZYyBzK-Z>$u5ANd`v$shFW`=XeMe&{?ku2j!T!<$$IkU|mul6-)b?(b zc8b_u^TJFz z7VHmj9x33l0v=UYCt+t{7a_w@(^)xPX;{D$1w2*2EPnn|uFKIOnE?`IjLzM{=v1zWC5=iFsgt_1&l7>wE|w2 z$(RCODPXK7bR3tQ$PrEbap8mlUM*mv}G0V1vxpo3*jAfKB2op!0;x5pB_0 zV$RzN*j2!GCH83npB1n}<~xN>&7C}V7qF**&lTEvD%&d^E-+5$KAt&?@nr#}7UQb| zekovo0SC0Izb@b#k#B{}fdl!jfFlKbU%=r44i<1oYx43z_Sb$Gj`)L=nZS<)94p|c zv1Qj!1^jHz6E?3J{f;B?{t$a)iat)~Bbd>tvxk&*@#8Oj(54MIuCR5XY* zAkrXrtUDAUW069Nl!}a*(lgKFd7g6#Ns@fZ7!fj+^j~M4wr{`J|Mfbr^;&!F_xruy zdpP^-d!Fasi{IAacNy;%vaLVX;ZJU`3f@upx2pCCyGZ$meet=Qz`k|(cOCW{Un_s2BdhX4~P3u--kv%G?0Fn4-G}wL0+_J>_amjnn+}^sn2~1aK(~0m)L?qR6N3m zHa@hJc%%=leP|`_wRMzpqvCi?KKYe}Z>%)0I^!A~b@$Fw?^)Z}7alQ{1_|VTN14^t5eYi+P z)?Tcb1AMs5hl_o+jiPi;+07;H zPZ?~e#D`iRN`0vIq0EOWAIg0PK0&Ausq|sG4>QEM3BJg-`w8<+VG zJR%wP1s`7WVTGzzD)=g;@uHBv46@pXSA2L`US1~N)AKbS)>8E09UtEC;cXw*$m>nv zTL(q(#(}=?a+Vd-i@^BneDL`Y@Znf~1YpJ_s4j3Q*m~IKJ~|`9sL+cL_aUih37>na zWKUB*q@{4)Ga_F8IUj!VA+O*zH)J0QKCIUa7JYDhcwfAZi?GDHU5n}iDSZ5W=)*=I zKJsCMl#hi|w7NbKFDbD;_2Dz|O!A{h@c9z=W5MrzSY2YhE`uL@_|b=*>J;P0 zw2S_%Uhg_+rhfI|4;dfQ-) z6Mh`xcjwXayJtDt)bqPj;MLYw6>A&#-R}jlwxJ)b{AlDyb3YpU(aet~e)pDXD*SIH zP~p|W?>-R@_u~i=@|Ge;3fGiat^GJkO>kATF@%n7{pjXLJHPw*VC(Ju=-|f*%)yV& zGVAC^CzBg(j`gF9AIBNxof3;)$NLc~u@WWLiPBFJb~QHiI@ym?{qD|rir?K0=)yGI zvnzk)!H+YPBsne5^rMI0eR`fHOOmtw=<9bkpPs^V{5aQ--hQ0tM=uQ^z1UxlB(FYZ zNXhBTnEm{?z>kakxKQIpg}tT=k$iyPy-k?XKtC?`;}SnE)%Xt*GGW$Uroo~8U_Y)D zze2fDiSa9-eq8OxwaV=p;Sk|aAtTe~IzNW_F~X1G68YAG;z&QP_amnx;`_oI{21-W zjcS4!(&i=&#TY+k_%W8;k8yt7?#FmPZuR44j<6paORV2YtbHZcA*I#?CgykFig3U3 zaH1cR{kX%ANq#gfbw4uW#o8%;O!d3(zG!wtsr$-znjfX|y-Qf)cke{%WqwrpQSL{D zv2R^!&E?_W?|!aF0}dm{AN>5+k9+*6@nfcDp;ilkBQVR4yUiG~U!0eF{kTtEo2^#p z%OJFzu$d4%+<1pv>iur_afpDQ8 zPl_B}>h3B}`?182MSd*Sl6c00G+>db$+-~DNwe1#vc z`ms_$R%sz|wY=!ZOMbkp;%cs+BWcvGEaOkT8q z+mCtyyyM4aKi>5t@5fp{;(olx8_kb(egypR`Qg`2!nAoY?V!eooJofLh^iP-$2nHi zW4zZ&tsbRT!jFvlmGmR!N1At2sdav-`_sw=rS6`Yl~+zHVL+*6`%&jdK`uohn{yPO z#_#*F!H*C8_)t~rg>3F4KR(vH3@Wv*)O>y7$0n{=KR)H6QqJrwbNftYBttn|e*EFb z7C*lA;|nI>$5u1%Un(-qw)ye3AKU%-N>$gDTEjKY-xy1_{+%B``|-UWKl-u5j~_Gz z^c^G1oqqfzV_NcJ8oT`X&5vLF_*Ir%ffU)z-G2P8aiA|R8vn_iJb=Ia*zd>Re*ELd z9zXVK#JG$(Amd7{eSZ8aFWTRtzS9>0cbB#TxJ?T09e%O-&;Z&5P(Oep0`4Z(W|-b_fP1swyJCIjlFrB+K-9Vu)jY#qQ+0aTV+ z)umRACi>`r`!u0Fv0VTi185&W2jxKJ7!mHGaWNHgpYCm4`48J2;lMn1_j*5&84ck%ouoH40wfVNoaGGdU|yL*9LG+z#O^`I8a!cwb(ONe7wYAxe}-++D3N`k@%#W51l-5R6Y3@{7pixj*Ha7zat_J~+UC^r{eJ*O5%RxFEw4vR`27Gr&;T;+_3WVG zT%{kYi4C0106qy|a{wC^^HbSu5`HG+cem*7#pG;mF(b)kyp|ay6Uj#u|L3cAeL|89);HAx>hOnxEstyx26gCQ?u}Bjk6Q)@+ zxsW#(Y2g)v?sI`6ua-d^DX~=$ZG&iS?2ih%&!9Fz94%vVy0lYmdtnFRF~a|%byBf& z5XXufC+s3*TgQu>AmqfIB+@mA(?q%jak9uM!c&Ee?A=GFt9V8b-9;GfOp&vK?(vev zvyI*}h;zix6`m*TWomniFl=9=oG;QZhzmq6H2OtB^f#P2Tr56Ncu5e0MFt5k4dOBp zrg3=?hn2ZUBVJboai!6(GGl&?lp(^QruJHq>w*|2GCYV8B8|%2d#7WWb$t+Hq>K{Y z5X6llY-KcOO57VLDr18fCuO{`xmo0vAZ``$=Igc~rmA>*5EG5%9YIVIpDdgr^z82p zqFlvk!n=Yf5h)e2-7*m-OkNR0rHa#qGmK4@Sx&U6kytC7DV!y|JBWKkXmhW~ab?zh zBKI48P7n`>KPY@i_^^U|**+S?f*|HfpC@Fr$AWm=@cBVJA@13;c3}`t2C-P;Q^Kc% zSY+&bBijgax*6nQI%w?+Q5e^i@MGZy;U_}I z;bH01pnGK6B>YUcS@?MnTRg&7Kq6DitS^Ju?)hpP+{Qgk&x@~u?pf&TAa(@tjgt9R z_?_^3A@3lL4?peV?!*><3}R;xKWiuaNikWwE9jnJX+Zonh&@647Q|mc><;43AbywG zA3^tI$OsJR#U%b6bRX!9us4W(LHDHkkM=Gq|EhI9waF23J8Om9v&SJJ)C(Q>De_9y z)(@dc2n|B+=6qNPjYDV{a_6*>&})k$Or@!8nuTz92+dX7;{RvUGK97v92r8J5L$)Y zoLigbj*>B-AanT$58YT-3P+Ou~k zqvd#`8e%9K(|t?`w}vn_gj+%wCztWUn@vEkQQ`!p%3&wJJ%lMCOjN)-WI0JV`5>>U zA>3&e#xym`Jn35!LYd4;P2bBycp!udiIpMT8^ZJuYD1V2LbV*LLb$`+7d0W2lvy=p z*31y@<{Fa$YdK~2h|er@-`>m?zb}OQjqe;|`QL(nD1><-JgjB&h+2PCI9JH=VYZKj z@Oa4m0g!yY66WBOF9_ku5Eg2YdzKtbRz0mdaZw0M=%qM|4~iC(?{gt6)2+Hx0iRc5 zjJZ67m&9KPVTH&_;VL21eo?`_{8#eJKfH+)=amp%Xz6fEf3CJQvUjGYWTL{~Y?pc1VP~U{`y~wx1 z?}RkiVF-i#D94>4{1(Db(tj5268<9mRY>DmW!7#D0zZf1%3-KKmnzC@*6812LEgNd9MU5*K(V;J5OlL}Mn9LBNoVy$P{CG0+-ju)OFJW+U37^j5M zRl&Q3ak85BRvnj?_q+TIcv{$9v8St+ak__brbdZ*@}klsjB~;`TLv+{|2JdEi8xmc zofmd*s9s_879sB=(pR{&%<3nX3&I!>#)WdZNZ4PV7%R)% zm!g*&eXz(CVO%M4mC>&b;~K+Pmsvx@xIT<)rCcW*CLAstAsi`W@YmJEC>3uA<3^Fu z!kdI+gtX*jjbqos7$3&XVfX0_^BlZ2j0xcbCkl$Use`u*CkkmiDU7?qm>kBmFs4YH zD!kJe(2*;RSYjrEyey2$Fv`QIFfDq!>vRn=XOK2kVN`3Hm?5v4Flw~|y`5@S7!QVV zcNq7Wxu(m#Va!(XKH>e!VNMtih6Rg1C*ljkZRp{-OUL4}@VfXKl(EZOa{tn|W?Qh=s znc|)>_Hu8J;GZz|tAqQ(_*aB0DpzJ9qVvCy3X>t$Q}Iw?{RloNb3ZLQEP|#HG>o`A zcB6>9$2Jx=5qddLY^EX;YZ1Y{G>%|U1V==0N(3z<=oG<`5wwkRL|7w?8ak~hPiJ*N19U|^?;nOnrV=~%wRFMjK=Lk-W;MfR`kKninx=<>qePz zD27KcB7)mxIZ@*E5sZysR0N|VxFLcYBbZ$7ex%M&Q)w2#7-m&&-Bs?sFJgDbMR0Qj z;}w=>RBnmjRuwt;v?*bCA}D7obc|pk14eL11d}w*m5MX7+?o=>R4$uxYqpYkpxl}k zL1_ecMNksKL*>>Z<<|Ui>j@2Pnc{O9R76k{L1hFpBA6a=4<`$iZB+!-5j@6kA~)v(W2Wbpex5iHPxpCf!Af(IjbjG096 zsFa5zctpgnapSPhRdJp$Qf@siLVdo-6A>h2xiEq!wW8PxFB*6QwMYZ@RkPWZQ(n@tj29^1i=X2i@+DbI^|hcZfz*H{1F5q?#b=5@&n&B4Mh-* zARIwN?p!3OFt>aJ^~BkQgc?l>Q$pSa8TBhGZ0Js3r{eO zo)kq_#i2pBC{BywWVxIogHw$eYfl&VMy7idy`nfXiu0oGw4N13kEnZ>oh>Bk8O1qK zoU0;J;^hq;7e;R-*(Zu?qUamNz$ng-;=-u=gz6`}K-jv%x+sbP;{7=e6;}HS>tYo< zRamD~SeHaGIEq10Tqf~SrOhChtJq63dqosiMRBE+ep0R$zofz%RACK?;yM+F3a=G% za)(86V-&-qxIT&zQH+#+nde?%jf&z1R#jMIDy*>;?lWa{6l1wgq8Jm!xC-|PHNL{S zxxyM3#rUZEjAmB6CRA9rL@`M#>Q>r~6E_EcE@D1uQ04!VyRhpUB4D6E-{$e3bGw^dx2kUb}hdMb)c6locInPl0KC~{G( zk0P%Q+EF+ng(!+5Y<*va`^2e>;(ZP&16I1lLo2N&mDY!x_b5J!;u9HvEZo5Ts?us* zX>E++vnW1|Vw3c?mF|M?SZQrGkvl2WmMFf6;(t+Wjp9q~CydXli)y#Ym`}H_M7|b& zBm7qQosdI87j6_gqWD3*{!z%;0l)vRZSChMeu-k&K{~5`HTTHwDE3D2yK4Usa@_um z;xDc3zlBuxaF?re*Z)6eb{OQ}DC)(qKME@b@G|d&4-sc>R1OvA2#`03pC?RdpJ zL3l%@brJ)Lca5Q23}?o0atxm5_ThtTA46Kjq%b9S-rboPX6rW3n#@_u$6&{> zK88XJbukoUaAd}?yjt+^AHxSRF!GhUD1I2j$1!{qbN?I@GvvD<5^hkR#PCZD8)Nu7 zhEHSI8pEa-K9AwE7&fcL-uz0owwf(5d?9ycPG91eF>Gg^F>H&u|4E$9@$P07udige zod4+{h96@1Hiqw|d?#d9bl<@>R_VUQ`Z0!|)Zd+)Tvh!X!!9WdI8gtf{MQ()IDU&^ zPYk_wgI9kMULL7(3 z(IJi_;%E~`%Q#xaaiqd}*|ug_6}jbl19Eg6?c!(~cehO@Mr?i%oDo0pH@m#md#1^ODfM7g9B0RIZX7-1I7d}X;J+NWVtd8WH;&$M^r4x0v0Mh{ z$I(yrv|)=({=zt}i{qj=2FKAqjzMt@h+|;fT}v0Mk2K?T$wB)jWMs6CF5{>Zir*F z^0`sSZr)_NOv|xxOo(G#9JjeV-_iHmo8} zqL*S$5l$6Szf)wI@GjvZ#Vn1ZObf4ESRt$wvc>7LBw>WAII81#IF6b)?unyTRWpUN zgm(*RN&9=_n4{wCIPMd<-_)MIfBysG4;tkm5k5vA5qZ?;b4BLG@t9GVGvm)!@rgJV zh%6L78OI`#r{Z{8#Jh88|BQ-@X&`qh&&KhbMDnE~&&RRMD9brJajZ~rxf$41ar_X+ zi*e-Rcqxwe;#jRwdO40Yal8`8>v6mq$7^vsSZO_6Y0a&)9@7Kv4aHefX}!q}KaRKJ zcsq`zmDY+%YgMK7Ql<579BUb*(t4}XdPgqn;s`0YFAl#*AdX-h>r|T(hT}-a5s4$t zJC}<=X6(*-9?oTuh+{*g^;xBriX#(8S_WIVLsnYZIC61p({9Ph+Er=UaeNs^A&!sZ zD8{iq4kwQH+RqacqiXV;rB#i)Kuz;dJY> zI5taZHr+aWy1PrWYD*kn#IaRzsPH<1RdIa7++@66_*EQVbGwsQTj96TzY~5R#|{w& z^qTuIj$fqg6#gXqS-49`vtQ$|67H`1TO7ON*b~R^ar_m>A94I?Y`i4@R(kE#<-KwI z8^=F!?337ey46Mc{y3m$C#u+Wx^+kb4HKv*@z4Ysh}0K)Jw43uMhP@epm73Cr8G&n z+cgtwreZe*Y>~hbDjqKEIo)b0(o40p=b@!_0`25`l(3EPXkl9!)2zLU9fZdu&{?Eo z0-Z!?(2wW;1ddnnIAIrI9}W8u&C!VooFuWUuv-G%6F516(-JsE3getA!haw_e!BP> z3G`JEDrZVLOV~qrfvS3npOe73BK*H3H13tag(~(I_F)_mR-G@>Pk4clJL*Lu{Sz1@ zGC+8-aG>xKAuTTzVVuhnxZLo;ruIssTqSa~@R|gM7=5V7wL;F?!SLIdiN=Ta6D8h}z@!AG zB{138Oc9xyz?~vZWq(%!RSA?NP$982fwBb3#jlv|{!>B*tWU?)&apkQpgjyom-E#DXa!1#Wcz@`K~lK8Q3gOHY=B(O1oPgUf;v`xeNnTnf* zp9{Anur+}%#QVyIzF(TPLB1`4?W!gJDuJ)XzcI?UBHsy_?G7bI@`K2a!kr2HB=WPV z-DT{5HF17RV0QxbllVP>{R#Y$z~8F+Q}|cHJ-su5Jqi4iz+U6U^Vq%w{!O?iTh@9f zJtT2R(%rqSqoRs~D5mB!;!cNnDsj|0FI-9+(u4j5j;9xmY#> zlek1=knmEWH|&=uaa|IFrCgE35U)yjmGEleHA(l(z<|7lCULDqua#lq)Q1~!WD;Y< zuNRI=;sy~$xKU)Z@FpRHj1^&oaU$cBxLM>D)1zCBg+@%qbFcyE?UDHE0psaJ?pCNW)Pku0lBZFLeg;A(3~IcsB`O5^Gg_PqG&XUOL=v53nKI*(P9h_oO`?!QE(u%3ycs3N_r|R##Szvi8ubs7 z_(XiY@I&E8Nqj7_A?g0#Lq;HOl=5j3UnH?focd=;_x}%WPU7<)M@jBTu3Og#hpp~ zq{u%DcL}NglEkk`>`vl0DR*ebe;1!>&N+Xo_*W8t8?QY{>^1x!k$p^94eeJEDQ*5j zwsMF_Js}?f^;77WLW2~JNa3&)nx@cDRgHv=g-wL?J&~Kg;muQMVff*x|J#3Brf_5m zZB*4t*gA!yMCi^SN2kzU#kMK56Y(N1Hh1=qV|5PvKN4rwLCNo+0$IIx~fyDxM|mk;2&`UT(y5R6I9@^F%x^V(%3C zq;OdZeN(tNh4YnCzZ5PKxgdoLMgFtzui^j`WT2_NL}XA3mx_4p((CdR1{<3zM6MKG zWz4Qg;i(jcq)?v1&=e-5aBT{sQ@AdLktqyIVT9Tmo^n6^=j$?_0T}lB6mC$2QPTOQ z=tfSc-hvWuO5x@d#-uPVg|RYlMLp}srw+WmyhUMe74mGrgl|h>vWmA0C#G;m3X{Yc zpBE!cNueZ#sVUr*!ksBhQ|)rK%LsfKMdVeQLYb;Ou_A?sQm9Pf?i8k{P@BSx6lzka zN}-xFA{X|H#(a;;-p!ORm02QuxZIP%ed70~FgtbNLl)}yr|>`ubG(5ytv@JBhJ84N z`6)b-!s97Cn!>yk=BhakBkvs=JSIyX#=P^`6DcfAVL{40EHN1(uP06M=@i~bVNnV% zrtnM(FQl+Ih36DuNea(0zPy;!5EvVaassr4(KjU!B6s zBD8$PwEmh=UQZp^5?Q+@g*Q`(r0`Y>z7*b0VQmWUr0}kWXt`#bX78o2&Wtnr&d&N% z2&NEFOz+tpN+GNwM}`U?6VVhBY+Yhp$d3RREtx`E#gvc%Gbv=b9?WTzW_eZFLb?=E z;EOmCC*?jy>x3+lf1tTrFZ@vWk&pxRaS9t!*r?(sLb_0=*CrJ|OW~UoHj96r!j~dj zQusoImRosSO}DDN7aA#SOW~^&wySoQ#IMEg6Q}*RDST&qzfWO@;XiNz%VwwP(N7{j zvtJ^=2*>gj5brp?{}D3V-=+T{{8RXskX3(+>=Eu2&eLOJpZLEi>=!{=`@fK0homuu zU+UoD-zfFdXkhqZX*4vvQ5ua6pFiDdnnu?&nx)Y>jpk{zNuxy?N6O&vG>$NqEk!zL zvRa9^79J&hX1aBB8Xd&jrqNEMz0h-EhR3MbF^x_lR9@rzAH$DJql@_QX`Co>f^g|{ z>m-qv&9kzbiYKRWN*bq&pDH{}ID_YZk?z7XjmYMDh?ATx(o=Yj@Z2=c6X})yzdfXn z6x#O{IX{hlA{PiROrw7q7cpCQM7a$RXOS)gWpjy;#X)IYDt?*pa^Ya1ckZIim1$fh zh5TxfYtk5!#_%+Trg2@`JBtALNgX`Ok=bH-elsB zNn@Y0OGvhLox_YDB7yL2Vi{4QE)|-<`&6Dfgstuc@Mb zUm9~%y#FBa0mC0kNFm}h##AZ+4sxx{pLKas|hX)H)% zp^4+=@RW+4{UY&a(pY>@oFx)d)2-*ySSh|Vjpx%?E}Lb>@`W^3sCK=Y`)IngDveju zcrlHa(|C!qsoD)%W^C>i6+fSDZJlnt#wC%)>uJ0p(M#;R>DHSn()iEm*4t^U=W0nK zn#Q|n_*J!5_+A?8((oPR%Lu#zX#~>C5JtkY(=@9-HmpGHw_+43!Ad3Vd}!Wq^TGpw&w_02)U@?9D`C4Mj5k;V^c{3y<7Ui_cZ_$`f})A%Kg zU8c(G%de(L%iRk5y9xeh8vly_CHz~sCyl)#{|NUPcShTvM*WPt?LcS=4-wYO;7}1S zp9UE;R`IY58XCP(=D<6D+BA{aRM*pmq9PXht0717~VI7^9}Ep!3E+M z3cWo0XK+OZ12VWw;>E&&8C)X5{0E6#n!yOOwl9}5*ra!*vAjy;YT-4)AsGx6;p+=; zUanJdm~gmogm7dA*Nf0>l*l%2{vxA=H<{WoB4dT)G8iv1%H(#7$%=6%WN=#sQ)F;^ z1`|c7-yt$dI5~6RCsXQErQDgpG?BZ6)JsJ8ZGo~3sxv4zdWA@(aJq1Yuu8}u9BM=u zp;lyO2D3!&7TzPg*^JC=74OU7evvuC2ZRp_9};r8GT1yU9YpUmKCk*ACSZ5Czz?_JPh)h@~4SrIn(Tn0-GXS8J*#4}i)!Rr~k zpdc$Ucu8bs2CGEq^`Z#vS7-2w_{&Cl)!4jdls7VXFM~BIzL~*0B5!5zwy|WKcMV@_ zl3ABQBm-XtK~?#M0aF_?_F)l5h#DnkY!Vr4$RL?PPE{#kT9^@LGY8%V=QD7m*clW= zib95EXX`Rpuj2a|d>}%RZ?QfU|0six4>G39CoD?Yn8BwRY!=@n{LJL`c?MfE*pk5) zM)BJEQf7?L;x_T^T*e|_3BMMy_FIwfOpz`-xUXjMLk3nBKW6Y(20JtOC4-;T#LvQA zLb{KhVf~uH?-~3iWw+69onieU{-;qU&anQ@V4sS6gnNbm@NUwx>0cH13z2mn0lX?_ zSce#1FN;I7I4q0$Mrn}64EZ)RN+XebB{s>TsnMHd(cJJBSsX5YpUhfj(Kd@CO>HZY z)>#}S(nff+&>PQoS@#jsK8w?{=#a$;SsataaanZCqH`9V4zfH}oW1ZIyJT_v!AcgV zWN}g!-LmLEP9BaC1fkS&Ni0kWYH&!bF=8B+VhM} zZ$lWZZx;PjJpUl^0>dxLy0?7)ECxs+XMEzoEUw7n5{V2lD2q$QFEh&JSqv8UI!>D_ zRlF*Tt3|F64iOF&dY0E^QKI~ZWiec2L>4z^F*1uWSzMpRjaiJ!;)X2d&af6}OMiNX zH9Cu%vUq-mwQ`2FW`?zHhBa2ccer|ePe7^7r;esp{X7QBx zlfq@($@%@yEQpJQY=YO~ESAXNS>bcSr9##|PfPI|Wc-5BSBR_>uFB#?qw~?fI*T{5 zcv&mq6(QHmt697z8}ir9B3UEyrm=Y|i?_w!G0M9lOyfPx#X2F2T(^Ej3kZY4kdR;1 zpg}~A(Jay;F=0H5gh*1zOj07W&xmA=p35SiML|W|*wCKs(%9jQXYpYc@2f>BABe2y z4Jd<;RQ%Y~j^+L@zESvT7F)8|WNJSX*__4aBHr2Q3-PVOFS#8ltcTkqZqMQ?5w`wy z7T;v?eHPzJ`A)c4%Xo*e`GNP8l$}}pnZ-{=|2d0YS?uP$lf|!D@DpdAWPUTXTyMV{ z{)fnNe*aVCZ=>%K*_*{bBKwT)t=0XUvYg)k2oDj~%b|V_hl=wx2)n?mLC*b5c{aZm zl|!!_8s%_G4vi`1&?JY$b7-1F^PKx)vzd@bqZW$bosk&fh#Xqx&`NQR%(1fE%eilUykhShZp@)i4p-&SH-~{aoS#Gg9Qx&OfxP%i^THf1 z${qOLEY~ob7@!Cj3t42SOLDj(hd~^)94^h_vK&@wwRp9I73xJPSBiW3)j3?7!!<@3 zlEYAOZ{)Ab;rbkg70wermOJpt z*Zdrw&f$q17D`_rWOts-;VEOouvCbPa(G4t|0zpycs7S+5}(UqsmSvO*(}fD#T;JX z!jQN^$Y`q!VJKcNskqv-_(~3e9A3@g%^Y4+)$2l9z9F*4SiY6RS}AV}-^t-!5ieod zzn85nidXelS&US6Ms7e=@Z{iv*P3 zFXG;b;@k`tspY%*iU$Y zkkKy6qrW(tW|2)?tl~gpzzhfFF)WWu^B9`PWqDkk$K|RWoX3@UT)}?H@f#kVO(@2> z#_%D=;94oHx-Rej?OYOG!}Azn^pPUh=P^p;JB{;=c`VOkbRJVA-jv6fJZ{ZnY#z7d zF)ojr^BAux=I)ttps2mk(m9yOX- z+OVOw`1x-h_vJAwk9+dCJMaEhV?m!H-J8d3c1Jl7X@7qn59To^j|UXIv!u$RQF%vP|JnAU?{pQ<3|8_yqd@BdH3gz*JRJn{@zd%9Fz6@<=;Hku_(v4 z^LRIpcf{E*23ecOd#30q4BL$7|2#5z1oBAa5!BFy@`&aU&Lg5$=)1eh{o-yck9Zz? z#k~kG^CRFqQd%l$vtYQ8vT7)2nqvezj}KHVpzv(rh|Mpvx;*qgDt`@gji?~h2?Rk79@|MJJ^7tW- zZ;j=5d3-OvL+CmFXli%n@lzhZ=JB&pc8UBV++St=X7t^8{GP`jD%PvE4y$&5H2%xf z{+-7j!}sR#kKz0B_}B2x92{Hce<9ruu~E;54TZj;|LoAZM3v;vW+8cbh6RPMmrm=ZM2c&Q8tns~*i}$eI^C7Exsz`EDwRNtIem2gt z(Z@zF8@*N4RbA*_ZS}QrzKyf0t#hiaUe(qGylnKhaiNWiWH~^VgR89pHZHbtjf%sB zm)IC>V~~xZHZHYsm5s}63}!D(>oNZRmyIh`9H_)@)h|?D%{VrO*zT`bGD#1wwQ;?T z>ue0SF-$Ha)XE4OBW?HD&B5_b@}pFHgN++SM#*e+wRMw?J8X=xakKQXHpbZ)Zy)%T zI^O={s;ygW+{SioOdydXSH;w7>vkIxZTBayyEJ_ylWa_5yEdlUn4*AXvcFTD`EV-l z5-$;+r{7^Lv+=r(avP7?sIYOrjY=CcZA`aOZDWRwD%*Vu%uuMitF0OvwKndnwm9#+ zI2yBT+-u`*8}}%z*JW1CrkQDIPPN6>=h%42c7OhTK=`1keb~mMHXc!tj$CzfZOl{g zfokg^HT}4ar8ed>85>X7c+$oK8w<65*b#bhw4bu^vUeDWj(Z(_xD>$AuUf?aJXpF$HD{ZWjJAG+P@g*Ct*jR1jWiC!F z23Apj)y8YGT*R4WL)F$BHgY!B*a+Hq)5d!?-m>wojkj&Q!|teG%d4$bB5Q5DTJ8R+ zgmpIjHhc=@vkLpBmN!tA&VBAmWz>uq+&Mx1wzGV#2UHqx?530ak~k+rc_ zbHO5Sy}XT$Hf$Ro*eKYjvr)9+uyv*6wp(qz?=>W4y^W7;d}!k%6Ejh5Wvi_XHa?NU z5i3+%A6HwS+SqDila0@9d}d>_jW4xkxIDI3TU%^=VdGoH{7w3oHnuZ@jcqpmuD14R zvS#zk{|d`Y>eX1^Xfym)$h+V>8{Zqg!^RKdKMHA21L99MepZBCHvYBoi|szqezozJ zjo)niVPm(A-+902FEF%`*Pn{eu*Q0ihkqM;Z8YYu00>{_-+!>Nk2j<2*+i%Pe0;hw zQE-th5)Ub$VFC3D?i1nA0vZ%h|Df8##OX`RMg<&EK;r_M7SQA%8#*>Cpt&Nn5K=ju zW;O1!iHFTjur8Su1f&} z3pl=jz6G36z{&Jd?MXuVb`|MnqMcH}c?FzWz?lV{R=^pmJzeMp>~1X2DxhZpJqkG6 z)OrTz6mahUtFV<`1@xBK$5c_|b-s%I3b>$v{smm9;zdH%GT;EiFE;I7QoyhR1{H8k z0hbnVMFE$|=5pa+V^7~J4Zlj{YN40pkOGFPc&)Ly&cq*Hzzq^d6fjccdf_Nz$p|+V zFjmFU!kY>hV`_QG87DrzfLjW<+357TwSWmKl6z^~UO-I&6AQRg`W?ba1xyy1BIGzs zHMx;bE8wmIrWa6BKzRYB#-^`2A+hoxuNhLRgw;YOP+P#01fF&wEEnHNACac@+Y8~p{56~dJTtTOtG1-w+i>i;+A zR|*If@M;0?74RAdvw+uS|Az5eBl4#4dRxVJOzpcOYlTc>ozZKy}7w~NX-*Dvh18<8O z>pSr_+7B6Xhb(^({wUlj{7Lw80lRqbYu_OLD)F}h{u0?;!0!e8DgK9WoB7Q(M*dsM z9^qa!`cDD-3iwyNeU1Ar=s0g%F6u`B;UPuT6FF4KIQ2yu6wy`24OMI;Y%FXdq-E10 zni<|)6u(dl6@fpC#-e zJX_dMjh<6P?;_5XLi_WI=w*0E8T2WluaxtJ{e*lv)A+(7h8A&A5rZW57Y-0!EF4(G zB_dw(mlknl5tm81T*x4UMXnH@Sz}!#a3pZMC4iFbHb&?|NE__Wm1+Gv7(3<#MxqJO~=Y2RvCpaRbDFMbrn|&UoPSmkynk) zYen}}7~OfjA#siH%_80^;vMm~jm^6%t`*YWbL7wCJ}G{q2SkEJgo=n45iTOCnTiM( z)mSl+XEjZUB2p?Qi&$1;t*o)qa_202S!IjJnaFt&TUZe8=8H#>x*|Rjd0+T}aD5RU ziZIj(3dpb?#IHvGt%%)*|1R=J5q}!R&&^+) zcjBHR_7>e^Gp~P&*k|~^MXaeg@YM@A+W&<#t0%(N4;88Jpn-$N4h~bXp{Z@;;2m|j ziIk=eS~zItpt%D_`iH{9jr|rCTRJ$>D6Jf{HvA}&Ho~JFY?m=}XeXt;gANXkaomn@ zZ|NwplaMx@9ULqEjl8-zc-X=54z6`@f`jwu<=}M3{aE%S2VEVU;-H&@lO6Xbdj2@c zX9w|A2dB~4tTetVIm5x(4!S!y%W>Zqo$0u5E%>u%54Gj}OwHDNIylF{xsLnOH;djo z;a)5{=)?C`J8G;JGW)T{y1+qy2NycHNCr$}XN~)l{s0FTOZlnBdVzoE zgj*bwcQA-)IJnfoWyOjj+dTGv`t4yxHr zeyO#Ej$!*h>=d*#SC74+>`Yu)GI0SEUxm}6Fj*T)AP zJjB&iYjvx&POY_i)>@A^@Hu$Y!Ab{n9V~J%&%u)p9&_-7gU21rSLAbRt=_fPfLd#T zgN0Ha;AcAO#ZxMBZ9lCQ&IF!uu++g~2hXZ%iEwbO^_&O|hSplobLbo_V@EiTibH*5 zt+m3~+)!(+a`1+O7ahFn;3Wqyt7^4yOs(~b$Sv}H&3L`eNtCk2!P^erl>U}*Qmr+$ z)_TXmdk)@puvQ|6#aq(rOaxA--@(TY0uHhcf)3&iLR?f1!VV%1rqx;{YJ!W0ImaCL zdm|OKR>DErLDE5rQ(0@(*1CUk`~g{J96TtJb5Q3X@1UUOZ28WuwTj$!94wH{Gs5>B ztatE%$?CaU>q7@0srZ5nR@Yh^9Bgy&iG$A_Y;^FMgHIi7(%N8RugHvKv%KD{wYE6; z(!m!Fwo37qM8Gp+2Wu_v58EAl=in;`-^k``VWQUhR)m9-uC=~*@Pmpw9AxDFql2B? zZ8RWk(c4~rmd!2)zli)QWbJPvyM@0CIe>qP{G}!Iw}Ym2*yG@kI_!1uuY-T2bB*oe z(ABy-Kd=1`PzS5d-B;hQwLYq~Hu9#cL!&wzT8G2xP`?fh>abb%TWhUtwN^tJf5k3H zY^-9FI{c(!vpTe^L-RVcszZx9w5-G7bvU99yG@IKi5yvneIl*v(54PYDF|~oWTtg= z9on+#nO4)8Zj#MsTJ2Tap$;8IjuEz0Z71;~XS!R#v2{4^|D)(y=q*has z2Z+raC7&cdNVA3ZY3V>K&09OrM)P%?zIG0@r_zDgk@%4Iksan?2fEOF#DUIQugSVy z9q8u3qZH+pPV$j#duX4Y4)h}L&5lb^ACku$=&O|~8LFQHBk0zjIKY8{4h(i+5X~ou zPZHDdpK@TB14F0`{f{oCPdo681H&C9pNyydM>_25{AY=yh@%}C>%bUY_c;fWOnw|o z$2%~=QSuEP!6Vq|#(EmjpXRZVD z$mct-faIKf{_DUZa(UTWtcg@#LM|lJfh_WDVvg1ymd}43SV1$_fjq6}J5Zqcat8`I z@)Ad;LvW=7MGm~=K(Y2o>o3zx^VJT#qDxcBQ~*(zVxMADGs4F}$&Qk~{ba?#&%;BC!!k?eM0k5=Z%#XtEz2ReFtjt)RUMWQb|v`%+w(Vj!`*G{Fr#eflo-p|0s!!u<+v!oS=D9mwrle%7M>F z>a&$E$iLJ+Uy*$6z-f{*#IwZaIx8nlmjiAR57A4Mc6}s%$N$|$3_1{UAWA(9fK zLbQl-rpHJmPMk#EVF^!?r-o+ch!=?x;YX669QfIR%W~E@ zaEVIG4Ev)iaro6?U&?l1AAi@i{vi3&fh#0`Y5i}Kt8zB6u2lcmfol}66XCS?OgR+E z4Nlxh(oK)y%`{69OB2&;xQr8JX_j;1b|=b{-%6Bdw>eS4iHc72%uuEIY)oGU9CiJA zB_|p=aVI@1J8=)mUBoKHs!rTZ(vMZDIZ?-n>Q2<8crURAaX^NuMN->|`N-)MMfHgHJMlz@eaou>&4$FG^lwZqIX7{lspbzj(M%29I z3`iR%+B)r*(RRf4MA_0s>F7jPCmzz#Iyv#M=8uqcCUzl?$WYyM>7yjwo#>&Jo+Q19 zW0+DOCmwTRh!cG&K2Gc>L*caVuJm_e0EzH%8ETLdgJm3?c+!bU8EQs`dVxWt^eHFi zaC~GOhB`6KiQ!Jj8`YBO^aYZOtG(IjJ>cup&0N#?SN@#GVT6Qy;M z$;2td=ZWd1HBFMCIh{CzgE`ZQStPTGFA(SRGC*3FxtL33o)Z~P%qN#<3!GR;zKFP3 z>shS0#EDEQS;TB&4pCxC^<_*zc&-z9vVvD=9co!H~V0T%6b;vJHG#QnsbZ2DdD_lWNkKOjn| zJ#;we#79mXapDm5!^Dr%o^<$x{3!7l@k8n-$R*B6Cq5-VMf{BTIq@Vt#Yg7lD<@n| zd`(@H(@vbx{HzlWa;H}0uA2DB3h`*g>x55pKS_WXB!-BmGnB!VU=pR#h!YlhR4Xwj z;^gV9l1_Z@M2gBc#BYh`h!WvE$#;w|<^?ByapDJ>7l}U-CE8C;{46uV%+q+uiOah5 zSCZctO`QMG`ky3Ms7rtUc4DXtSDk3$!auU9y6~@T)Gl0e;$|1FJ8^>xa6!53R|k17 zlYV`<(S@5__Ol!kS>D-sGgK)T%D7P4gq0pyV#*@0>`L|JAy~Rq`bEoi5zvLS>iz>LaboXjE~bs>}Y4Lpqw=rntw2x-L|6 zp|%UvU8w28y)M*X6}kT)hj`YaDMU8g`^f8PMZ(r|p#jbNU8qkY-Au=C=t3juCPnE> zy6;V0c+`alT?(PK zBlir4FrZx6NE5?cSn9&lE=+ad85hR5Fx-V_=`cdZfkfQSG2kc{Mr-A}4E3A~<6Ri5 zm2oae4&pq)g~={VbYYSU-?O5KGKo{9Yc5>Ku;1+47qRl;uM6`fe-~bKVTKE{U6|>@ zEUrnpFDGkB9$$IEg*jY%@|IbG$WTkPxh~Ap3sU}EV}T1xTv+JBVv38HQbj&Klp%|g z@3J#p$R^L?h{-z4p_{ZK0hhV3*@aveUUnhRg%vL3yRcj)UA_Xq`IR7r^q2J`v%k`X zVi$_^WXbHjBy-C2WR6z3u-=8$F066k6&GHWf#SlGG2bKGyUYcrL%1l?qYaF_(S=Pe z`*+$UHwh?Nz2?GOE^Kk(bvkS%Zev4Iy4{5xF1+Ewn=V}BILm^RfIFGCoF+N)`){nW zi`Y&c0b-HV-AhHtJ0$yD*iUjm>+iboo-8w_A^3sTKO{Nm!be&;L~@uYBXdOSpSW;T z^J65(i6>k*Ng_ik37m2vNb@rnK6kH(s7ru7ibunPu>=|YqwLbQmd<@(=+xFo|Sq^^)8i-f00 zzL7JIio-AIq6~GJZ>pt{wKiWF~iqk=9iC68f~-$A@_iG5?|PB-qRS=o)dNU9L462+nP z5_OLoHQcDCmFjNXOD>~#%Mw+Syp}GlO;V1*>$p)@>-B_aUZ13a8@JL;;xuxjG5gzu z*p&DHQA(S+OO`t1{=eJ4>CuAN(v4OmqO^9S4S8E)g(XTv$-h0@k|1()bmJi%vlGd~ z#7Bso-RMGc`x5&`RyT5qAiO)dkRBvG-RMQqTkCyD9{W#Qk5lPK?C-_^l7YlQ#3zUn z^G-boPq{JFjUm+2?MkVTr`?$9#xrhAbYr+1&$%%|*B$A`vu=!bV-%I@%v@@Xp_x8~ z$C8h8V?4F!D5@!)-yHQ)mnd8QbZY*@ zN!AlLND#flY@)K+jn_z|cT%*Ke4AEYcVj#G8$@wPe>HfA8#~?byYZGAhuwJFjlFK{ z(&xo)H};Uf&n5AW8}GZZ&y9E8*zd*x79C>IQRe&}gUbr}z>SaG_|T1mdIhG}kKiFH z$Cs#&-T1c%O?HACS2%`38>XWBc7 zh<|JUe`I&^;9ojibK|(V<&DiQBwi|OVBt5B@!K@AV?CclSRjVKP)J-C;=lEc0Gl5QUK@ZeEh+FeGH{q5;N zZx4EDy-KF)qj@bl^!4CzDw1kHl5{TykPq}=koJGVgC{i~?7>r-H)5QjG>3WcG|4l% zbU4Wf4@QzSrt>Hdd>)MUV66vZJXqwxa~{m_V5|pIJQ(M}L=VP$FhO$TdrZ07l#j?K zc`%uZT@&;-;r$gSt$k@*G;6)E+dGG=qW_$1+ueasGa*oIT zpIPyl>%jsK=6NvRQ*v#;jbA{Mb{Bd|zHh$RgM1G%Jjn52i3eF8WHMm0Ow}S&WizGp zHTF^ua%nCjNL7@jLJod8zlC~U@QjrJ69{W9lbggZs z>X@ls_TUu{R(Y`6V?TQ@Z*%1GPspnttYKY={7|NSgLj<=A9}FfgPk61kRlH@dhnVD zn>^Sox(9E1u-$_f4!Whyw>;SA!P_3} z@nDw+yFK>1)Xtgqhu|`ddp&qZ)*)wB>K>Qxf5}jLaKM9iWld(<-?$N7=IebAK49HG zbe8ux2R-=AgO5Bo>cJroj(Bj`gOAxesUpXE`SV9+B3vGpIOf4g4~~0q!c%g0S}wn( zYoB^>if+o$-ixSJn(ujB(vnVzNIa{2bH`Cc<{RiK{=g02ze0mAnZZJ1H%K8voF1q*%W`v zgD7*8S(Xu#gySBhMDZX=eJDpm=HeR{xfhkasO`mFUR3j~x{3^Ad-4uikqjU5 zqO%vBs66b&BVN?xfJj9d967qMs4H<&rh1e_^zL5t@S?vLJ-v90VlOXxll0L(=^%Z* zcw8&}*i)%Kz>6m-4)kIW$rHr?wL6&RQ^X;e6W>)4iBMGL@yX z$Y&E@AkHC5>(a_xFP3;Q&x?g#%x6bLTtFfYi?p)XYu{GQpqak2n(0NBF3l#%AuiQE zxnAUvOPus)sRi1UCJMb+<;4mrVy+}9@}ijJC9S_Kx#_uHO);JJtD3JR880sZB2eca^5X3b}2sx5TeO58?#ow%JSnY`h}n_lej;zgbvi-~VB!rMB|E-!X#zQ>Eb zn!iILLH0A+0ph#F_jLUCNj@NcC?~t_-A7&=(msd1_}Gijyf`8!3&l^oI7*Vue2#l@ z(u)&bRFXIKjPR)!r)YjeWvcA|^#6kRB~e7l?Q1XGUYw>P<{6T+M28nnt-HMTFaP9b zDi0N})_q?1$pcym(o;f(wPKK%UPQEFc@fn-Mqfli9dSrhZjG2@v9d^clc1AikP>O+~z|Cl8VIJb!qyHt3>loA1agFMXch(Jw868X3tigMhgRgRwUVCAwm!6@(q8Kwq%Y(T5j$x;$$*de&{->8 zeCSHvjhG&&?&Lj)J&C=Dl3{O>KE$+hU-HL^{e0+8GJq)l1AQ1oevVCx@}v)gb?H+i zLwp$O!_(x$h~LTA6*ro`5eV9x##)s#87*9UdhjAniGQtG%iA0Go z$%pTCCR2P!w<7vfAEx>60^O$jFhl##^kJ6fvwbBWjm@F*qSmFMd795BSwLJ!Ttr+< z%pl6RW%`gup5;R}Ne*!-aT!sv%Jtz#oo&7k1wIt{u$-lZ+GhpHN*^xMvzX>fy7Xlq zR%u@L`t?`H)5~TJ`C47N&WH8n8;BdVzKP^2gTF?;g}Bv+ZQAE`AGZ7KkN)2vO6I}^ zchF&{h}!dQA9iWJTh1NLk!9aHc!%abANG?R(53H^yhnVWDAzV0k{tBmYac%H;iM0T zeE68+VIRgYfg>cJ_;B2ZqdpvCX$=+$p3rW>KlR~rA5Kw`x}WKyFIeSEAHE{_K<+-V z`e`3RKAiEv<-=JY94wU=2sxZS`x~;-9k&mDA3Q$zeDL!0S6NEh`dxG;0ziPA!t!eq5w;9Y5OoQI}#pKN^wT z@3&V%eLot|Y)Dh;irAP+6F*w`(bSJ-G#~JzOqQyerJDQkAf0P)YNSd_KU!01rGvC# zmGnw$=SN4H?fvLLB2{DtAJV)NiHwZskNDA9>s|clO5RN?kNVM_d>5U?zo#F){OC)u zH?a@#G2+8?d)$wHH2V_=_%Xv`b&PdY6X?2SSs;{_%T%TVI)uc@eIju zt=Gy@Bgvm7jv|isV~ij2k*frGj>=e~nB(-kOz>ld9}~4c$&bl?JWq29v9C-A$u#10 zElQA?&)#Lb8gunka++ zswPr#E%`d)dZLIM{MhKnYdozs`LUULdhtl<7C*LX&-=M=zwXC&DsO20O_Cjc`*%>K z%3Czw_T!KryU2GF_xSOiAA9}S@5eiS?DL~E|DCE7zan?Qk9Ym{HJDtO2{y=5@B8tg zA0JR`nWaQL=*LGgBfM-&qcnGz!9Vun2#F}4_;FP8Hd*SpA7}hHLFJ?$U-Z$Em7@}6C|Wa9I~?}z0_z>hGC zf_{WZj?zcm3_naiA{0BZiTmWC4v9%6=0}|IAI(zonx3SXB0jHM`PPqf^f^!bj+pL< z&G>c>qG?XjZuz1Y~qFhZVceI0B#DPbif|8n_0J1pyW4mZV8}V0A&Iw%Tl>L zB0hrU1GrTy{j==bi4_8<6hOs*eJknq0PY|WXE{WQNK5U8YDG|;y*Y`)ehkP0PYK*ZUA+t%WauqS@sRpdI5|esZYIu zt~EMKH430*0F47^MzKi%O#^s<`A9`MWY7eg2k>A3E$AZ|rju+%vvmM%1875@p7D0% zQcKJZ0rU@`BLhA}>=Z!H03Md12;h+by3o0EpyV!=ROuSPcxL-3i@FEUBY^2y_C4ox zKD`3y8$fTC_6guIo$VafdYpPcqWDXy1Lz(r7YQ>0m=nNEDzmiDY?2p<_sds@bYgP@n5TW_2e2T3g)-XwKch5C{Ka(0 zAT9|YGl1*>vUDxk#&a}JpQOuZ<_3_b_51(|$d?lfwLYIKc4YuX0lY%7IDnUQ>B|AE z(tI_^BKp4?z#5usiR*~z9e#tXYThW=NV18zIe^zlwh*@xGqUWDx?T_9g8;S%u#Z9B z2;j{C-VR^~P3iki87T54Y##lnSCW$t_x6A|L(+ac2YwS%}%>vc%#22oEd_Xkm*Jdcew)OsV5#>6H; zG}Zb8B+ZC2+7AZNmb?YAC9zcytx4Jtw=uG0)sAL+Vuv6)l8F9L5S_^Pa=IT0q6f{+ z#4bT})t=o*9wl}UV!vK>J*o5}_9pfrK1S>t#QWN_Ul9F+c#`@6;=mvVkvu_^?OjqD z9K_Q!p9*3KiHJjk7)E}O(Vo%zaFP+kk;EfeY81)nASMJchWt6=SmHRM#2g>Q2}YZ! zl}RL%iBp1*BJetnL*4-oAi7kh=nxg5MK;pE{O!0M>3zdAXxGwv*?S0 zSgd_ANR|YVsgwTOUw%*pG2Y+$a>Z@UKqp*t*<003Zj_gC8B(& zBvs^CMRRo!uaJoHYOv(Hb!(}tBd*t_8%Q<=u}Lek8eb#dqLr;dY$JbNE8By3gZwM@ zXb1UDUHX=8aaRxrg4nI~JtTXH?-2LN+S8@7GrX($d$Q6rze(=@1aTyYgH%4!`XQ3T z#E*l>&?E2(m7_r%BT0|pi6FiV;v|(%i83;$NIoNePW*!C$WmVg;SJ(znx~0pf^Y?K zHti6ElSFcsBR%r&AUs+W#TP^{2tSnoQLYfuo*|myAPf?dnBK%J@+eW9VADrAm|BLM%fp zODsne|MDc2Qj;G4MJ$Bc_Wf=mTD40ix8U9e1OLY7(2GhJV%HG5 zkx1P~L+Bnt51R5y-BS}O>K(%4A@rg0nD*}*D%nN*X{CP%144Krgn?QaM3P?2Plhm9 z>#-~~B!rPPhlVhWs$){=0=_GNE`OFYz(VR_uLHo=hk!y*$B=d;#b?E|rvku-8hmJ*i{Q&}ocm*$fc5SJ4RiRZG^$`IC)7llwv@=^$^NnR$d zBFY)@3dyU)HCmLW6g+;=*l57j%b&~DGH;8W%f8YS_ z4B-Q*E~h!gw?o)PvYS|nP46Xthqy0|YvAWcgGa(o%WS0Ok<_*$2q zCOH$rS*&8;MTe)1h3}4P|5F~2dD&zA!0ZLD+GhwBucxH5Uw&w;ZcgQ5aPP@ zdX`F(r$YFi z@?VL+Y5n&QZq8P>Wvf3!C>_R?5Uw%KUm^TWBB8E^@DKUFTB*bYu7`jy@BfE!Qy4dp zi~o%zRkGF1B&D=oEnD3ZMwKwigmGIKWwl<8q&)G~FlsV*g)l0GQIX>9#5;(!S$ZdV zWumlrR~YrESEX{d*6#_Un&#C>8fL2+VYHT3!gwHzT2hgE?J({msiXbtk~GOy_lMCa zjQUz{5Jp4t=4`QX+D(@>C25_lnrWpu$%A3EAZZy!E0XrvsuLr$q1l$$jwn59Ptt+d zF>K#S6H$&%VLVLnkuV+&qjT7vb566s1w|oTqs@>;jq#!zI@?;alE< z9md`;a>7_2#?ml~!&nwZVHmk#6y&T3W5_yS}t)}a?c7?H<;vS;3 zJ|kPb6UM19_J#3L82iKcAdCZHyhn$3W#qG!1bm<7JRRplng@yPfQ`<5Z+bPLPvfd`fdE!!FBKpXt)iNxmR{8Absez78W6#_2Hp z)XxylhT#aqNiKh148sf~L>?v@L~%&3#z+`e z7*UGpD^*E5PBTGFrn!9oi$rRD8^#a==VY@oa6SxW;JYw>4deSTehTA47#G9%LDyQx zh4G`z9eek47?;BMg{3>Q)ms!V(-hC&!uUIk-^2Jbj6W#uro)vm{-T+F9P6BH{$X4T zsJ3Fpl-!E2Rv$9AI}F@yppt>R z4BTm;GW|cvR>x&A$n*aOsv7nao2RnX*V)RIt?n^Uoj%nJcxBPb|9=^%L8T@e@@1=9 z2HG2_ZJ?=v`wTQNP{%+$19j<^J_qkNP@iTnTUpumhXM@^G&bx#xsecgAD69~7$rac zCad=W11$_RGtgX%(ys>@A(^dO8fasnm4Viba3Nd$lC3UftG427;IC{Y0k3A;KhD;{ zKyL#b4Rkf|kby@GbTaU;fq%2r^=$hgf=BRseRP7v9hi?64KyvJc1{!$M zz#s!pNWWMlV*4C5*uYbgVUBu)Vz(SM)IhO;VFqRyc-p{N1J4*3ZD6=e4M$*vbb%>7 zYhV;dPtv=UijXk|o@3h59Z7zifhh*Y8<@K|CK;G)*iRA5Gv0Fa%2ChDQZz8t zz%=SIhJBg&3{3Tl8B=trE{p0-i9jM<+iBo!18*^T$xynmi*dH4pJ6s|*uY*H90Ttd*v~loh~j*} zz`F)!=cu_k_USWJPHF=O4SZnWL&N@7g5gX|KrImk(U+$i}~fs+PK8TgbNPP*tb1E0&}(k)Y3my3S`98wL$kW1P{#jSPO5WJfENc_YAF=!xUAZ%a*>ux2Q+CO5z(mZM)rg>b5 zfuu}9j@px>-e;|Ebm_Mw=ZNQJ|JVBWBo_<}l+Q=FP%l#Xk@%BgUlxM;F9t4A6h*rB zE4h&0wD?_ssCMuY?)x>Qk&g7`G6veHg_IKu} zJ51bdqLPWbOx$UrvRU#(v^Pija#R%)RZWC)RD>By%zI2!XZ30(VhngMO(}}!sG264 zny6)>zKPl<>YBLEL>)RLbJV#U^;3?jC#H#CSoadKfr&;Y8q!VDlTeLKG%@jej=D;R zYs3dkG&Aua-I^1z)b3^r855FLCi!?WCZ?E}YT|k7 zUD>s1CZ@{>ELFW(Wu83$V`71cStjP1m~CPXonMgd)BnZ)Kju7|^NCL^RSQjIkS`)G zmZ8u+T4Ey8L>Bd7OVudqIVLukSZbo!#4;24EX_5Mr#m9OE-6;`x$^H6~s*@rsF6CRUr6$kOMv&#R0-b*WlQvd+YMl38?+2pdi8G_lFV zHWQmoY%%c~9p>l=TTRSgsunL*ubX(&#C8*J=u~sH&ko6-{4EpvOuTJkkBMC-c56>* zNM>ZOiFX*hV5wTQRIOo^{U#2Wc-Q>DPg2D5eG?zD?g#Xj>T(>U@{x%{CQg|+Y~m9t z9}|xd*Dh5@O`I@s%*1i&3ujR3zP?nQH1Vm4lS|b(iZ?A&pRvm4CcY&3LY5O7`if@L zWhK`_r)AHfB5}@|aF}q>bebjKN^sNk5G8qW^J#y-i2!+!7&2j+2$LJc?rbGOE)^}3 z{>xO%M7IdyvY|zgFmcsH(!@_DQYOAL@r{XZ=_$>fGjX1yG?Jl4FH_%}_<_m=S!42A zyi8p*@uN(%-Zz%W{U6zsWbZQZtBFe{F4KR?GW7v{elzXAcacL<`oqK(6Mxb{Zof;5 zf0_7OwgP$GWQ%*`;UC$$BluUg_Xw_;Km^xK`|DuhyjO1iM{q;L4k$`ZDmO(?DuNH? z`JV_x5jQzX(?>{|2yTtoztvMVf^rd*Cr|rqlKcM=RE(ekE55i)O_dLSBe+AVFi0Bj zjG$2jl_RJT!CevD6G4@T{mN1`g1aM_x2)vuhcsO+g6a|bS3aclUL8a(9%@EVFM?VT z+!wLmq10ye`O8$D2o5wwn=6&+;6q^L~K&2`b97zg8mUa z6~TZAo`_&z1cM^TS*BJkQ(Km)1IyHt5e$yt(`CxPOr2k*{#mAmMDTP3Ln9a#L77~2 zcdn|Jt6Ju&XCfFLLAP8rI9ENFtET3vkr9lG;MoYqL@+9X(GkqeRfV}~Q?A-2J`s#% zGKX^2(OmUKt{P8s0@0hR;<;*)OmPI0BbXV%lnACp@O%VQ>F{l?x|pl}&Q;SRm?5h) zS5?SUHS$#bJT)tVIT6f`;Drd< zBt=AduPuiJe3_<@RV1s4uMl4)u8CkRiCnIW+xiH$MzDd(M&c%-6m5>+HO;q>9LiJM zv?41AN!}v9O-$cZ-%XybyO;c(2=+zrKKcF#4v@S{e2;j7qxV4s zhh&$aa*+5DQF0j1Ob*lhn0O?D&sa-Jk4A7zdmfMAgcQ*{DQlAClrH_8RX&g43o2h~ z{VVEU(>zT)6Tw+s>L76vT}0`fhs4X1(MR+Xr6@oWj37jECePk~4Dn|blNgD>B9Z)~ z5yUi)leA-hljNxgzKP(w2)?CxPJ5mwIh&`xkKkei7ij*VOQl7L{9^<^X~mVNeu>}` zQ<9>~5&RaxuPjYF{~o~~y7bQou10W$rj-6g@^=JY_T?X~|4VX>7|c_!(8hwYP|3m# z7H+d}qlK~-ZnEqTG;g+Wi-l4aN?Z1hDv#vdP8=mK0Tu)kd8!)Oq=$M4tWIq17x@ zmjw9W@nZR91AceDhJ~6Ieq}3ywJkKWaG!;S7V22I-$Gpr^(_1M8Ggu9KXa+nx6pvO zUCvXIp%gW;(8NMx=Kp)1`YTU06$jnZYk5jKD2X+foGrAp(84PDgW6T{|GySm)0FL6 z4)JVj;c*M?EOfWf-oitc{kOs$q?_{8G*QO0lZDO}9u|~`|B2~Lx>)E&vnz2tPoGCE z`)WrVdXV(A(8oeA%l?Lih`pKT7Ww^umP+uxGI#k(NIwgMEcCZ9Ku3_d7-&H@Od(HL z7;fQ73xh2@&2f0j!Y~U%EDYs1m&v#P809H>{!^;RlE}AbVUFCP%2y*SjIl7%!n17M zEgiQo+WNnz7bLgmSTxqcI1*8$Q5he>2{JW&S3AkV3=5NKPNCcLMDdwQGL1N$SUcZ7 z870mvnNSO}E$p%If`uXrb1W>e@S=tJ^qgy99?AXr_G`fc3yWwjl&Q~Gjig@|GGxZ{ zRg-+xj6Rtb@+@RoSZX2LLXL&z)TPB1`D&SkTt;X~u~ojxw@_%Iz`}A_02HO6w)tv> zg_SbfqEIAABN~8H|r_{<<@8qlZEqowF%v=J>?sw3_VGAEwIAr0V9*1pmbHl@SU4_cjeP$rUwxXdPO{@-p2}CJEPP?%GYg+nlv_-4e3`GlwD6Uj z2=e9MeEY_xIG?r=NU!9{E zuy8(KeV4C7B3cMrh*&Tzm=?a5VV7+rU;Uh~EDKTA{ViYp!HRJUDN!sWEnLZ0|K{6& z&?!xSBbyjKujMPbIu+%-g&I+OC!1{)-&^?I!Ufs)Ec{^MM|xf)Ue8xQS@@Y81?t8E zdnI3zz0SgAiZ@aDja-UuE>M41xN6}~3x7!t)JqkpvUK~KX1N0OkA-U%{-s%-Mb|AL zirWg*?FIIJSgAnW5Jkl(Zj7Q#6gNdtI*Oa4C>1UFM{H>;-L+eyxSJ8mMsaHt<)SDb zMYRI^(*g0RQJ`*%qCylk3smg_Rj)ublqRC68pRz^RF0xj6n93^m=T&5sMZDQt|+QR z(WXGPEwFzCvR#3?JBsR2+#_M5=un^@V(`ud>fWgR7YSVplweIMilSB&O{1tCMg1u5 zi=ti>b)u*nMYjUgvq1G`EB8n37q7<(lw6rNh@w#x4XKFOw?H+HqDd6}={cxC4VKY} zqE!^lqIgi6)1E^LREsEDMlq~F4KGk5Bqd2cinfwDeMU1vyC~X6F@}6xftpyLI!4hw ziie_jB#KTt+QU&yF0j{C=P0^H?Ngvj)P5H;r9gFy;?XFcFHkcJ)C&bl-s$uZhbVeR z(I<*tQS^>t4&%=)P!Z`@6nzA z5J{WLP~xyCo{nN<6wlCm=wh^+5e-M zNFsb`ftoDcq&bC{SD>bnEHAJ>50Ybg6f>fj6~#lu8bpwYepV zx1!h@#rCNEY|J+5uM;cE_kT&m|IH|NM6ol9E$nG6KEosW+fnS&KD$Zw5Z7^(-icx# z&HdWvKoswizekkUM+x%5fA~S|nJzj+^KcX&lN^cKFa2_S62(!?kLl_sblsC$Ii;1) zqWE0%FG#*5eig;nT9@vhAx}3giKU4%3Kw;E6qcL|%?e z#g2!f2uE?QKvi6>YAjbBm)qN~$%+x;a4OL#Vl<^RE+mSitnKA0ce&cVTt$|vZ&>=R zgd&0L|502b|4#P*D1M6KLKGLN{6IX<$UjC)K8XC8;x9yby_1G6N9~^*{WXfeqWCR} zKV{yd_=65|A-9!}NeEt{+r{N7tz4zUKe7YI@UQIfFXsPF#89fx9+onNs(hg;7sG8al#k)o7%EVg zqB}?`#BgV!s!V=+40ps(nb9f{?eL7ya`FoLiIolt;w4ao5%1V zNeg02qWHIpp|0+4n;6LM!lXQroBS`~#b|QZ`hJG>9(PB;8^q zAF_0(nO@A&V$T?Q#qd}Ry{Y&4|4aMQd|ZqDV;B;{0Gb1dgJO6xh9}4$WIlsqcuM>K zua%)xhQ;u-E_z1iGlGg_BF@i}k0OrN`WTYuh+~Q4i0e3g6JnT1b5aa1#xOaC=`^Ph zpO0Z`4AaQl6snHQa0bnpG0Y~JMSP@Cy%58k7`o7>CsDGJvrKRvedfooAciF|EM)SF zh>MAmdDz9k$)fm=jzBYz+nvW|~8^|}tu$^QRaWnC?7`DW)ErzW$Cl;#b z3)So7v-D`Z5yP9zb4Lt2Nu)cH|64J<{U1}r-7)Nm;RA|$iSNX)FNSx?_Y)5g=NGE? zNF>htBvSpu7><%3jNzjgJ|;gzJS^j1Xuo|sLQ}{mBpHS3SPY+$ACKWg44;ypBxV(= zQzXk+S89D8!xvP(jNvPiyh2sT($h50#NdhHEJwgWbP^>!7l}J&UuB8ur71Cetmr2O zh(Tg;p$f_TwaoiC{nK*8Xqih_v#!-&W<%u5`s-ui70V`0cNW7hRg3&6)aW~C7_*juoo+3ibF3^~?(U1@sXXbtZO+qifv$iRo@S zJ?UNdI9`gQM;ue*=o!Z|arBC#e;mEz=u5XgaXj`P|Hn1&7st32_IWoTj=^yZjN=Iw z4bl!zl8D2^73!%thQ%=?j-kv%L^&iq!Kbw{JdW{kjELj8I7Y@Xiq)Tu<9W6+I*u{g zQ)>5;1Fqnj%5sSVkYIyJCf!7Dq-L)8kkW$Ba1U#4$6D z+4P^qR#wsZ1uCzsP%p+YFOIo1*XcO(X-Y2^k}M)F)}l1DB#weOGULdNBP))jab(Al z6UQb-NOxb{mc_AIri`PJ$Ljey$nrQ=#!*Of1u^X=wTj{>rm}<4UXJ5%9IN7ZGmh19 zycWkRajcKy)i~DDZA~0+({mk7iLif#+91iqv60HBx?h{)_-chZvqEi&G|$<2WKGQ5>Jd zaXgNrEILMPxKg!PsZPXkDvpzJd>ThfR&P!Gj6RQ&OLJeu@nsyRWd!2*I*#ttd#zM` zNY2FZIEf<;KPx)paK+(`!yShwj(#iE06L^6*Cz{}W+0A89KkrkafDd$8R|wHW*oy; zs!=q@5G^`H$$l7=J$LY-;vnPe0zH# zj-TWBA&wv8xJc)jD@)$_{v=CU^Iur&l8*Lk9Dm30TO3#7_&tt418AVVY#N$|h4 zBBmTy`%+i%gCG3}g8;C+~OyDN+n-jPtfl^v8O;WT{l}Vr+ zdD#S3b6CnJaBBi<$tA)jSquqOOQ2!`cO`Ip!hZRX;|`Ka3EW9inYfktR3WcQ6wkX8 zxQAS#rR!Fwc`va>0yVW~Et1*^yvaCqv|g8_9`lrawLZ-Ty0l>ejS_eufyPvtXuT=P zE{1BBK=TAzB=8``Jrr9e&?T0ffWhlC9ph!`~(UT_WhQvJcJa|losV3 z=*k3&5+#4BBSpn5lBQo4F@aSHyej8Q0{tVoH2ye*PjuWRJQk)_BxGlCBmsr9V5 zA%Tqv`}3ozERq&CC$Kw#*AjRmfh`GaW42p~67BT_wzFdEBGs`-buLnGCh%4QI}+F_ zYnVa0u-&&4*p+|;O!C>k8uAU$1l~A_*t3n7TGGcm{GGs+1peY&iz0^ zH`6Rd6t`RGTqcQIlPH@+`6S9w`CkO7a$6D=lc?~Yu(xX;DXo-5ha~PyqHz+Hlc=4< zT}j+Shbl=_CApipg*jIvubxB=l6#5Ui&V`dY9+CgK6{GP{vvf>67^YHhgdg>dP&?* z{$7zfSfoBKQVnP}BsL-*V}vG2v`(UF5)V>*Acx&*;`7iI!SvMe-H(Hc7PA zdOMQ#Nt|U-$0YhB@lX=oljxL07nVLue1zDU=qXZNNu;fANj$1~ph)%5yeCO7V(%nk zjQ<$TzS`&UB>HLIKZ$SXGmy%lB%UCV1u3mOnZ)3veOk%!R1!my7?#9PD&G~Ui$&^b z@}G3XBT%^V(F_nBAaXfJXabgmal9)n1nfP0g zdY33B^oe7O{?$7ONZ`c`3=VByvgei21|Xh#p+ZNU(x(5 ziO)&CAby$rzfW7fPQsDIY3gT)XNd>cStq$fcKt{6kb9Hx2}#1AL?nqo65%9*+CN0n zyI2`oF-h7mtVJG`voDD_`QycEaIqT3{w9-1=~~|;@h$mS7M+)kJ&Esh>Gw%oApe1Q zQR_b@?WZy%Z8?6X_)8L(IFF)SrXp7|za?>%{CDCXN&HD7K37QoO5$%4`P@7m?H`)| z60gbrPlA-a`75H33bOx`-;_exlzp1tOtVx9rM1s3BxO?eHLz4EmqM)+%BN5zgP$7ki;!~_96|3iq)%0R@M+%iwsFcE;^rlLeym6JM!#wpZKp&=a_ zuwUXPM8crX@w-+U(s8p(27dy6uPF+CWVeP+Y;NQ&_0C@#YdkQ^tQMyX66naxBC|2qCkEPI;%Hu?F z>z6`*%?FSSB+BL46Iy>Vg~8-cX=O+XL&=9}MMmbC6y~NdJcXGlj7Z`66h_LlrtoYE zV^bKF!WcS_CW`-ann)Vsbe!=dYdC!qQBJetbm=Ve z*~Ax!bBHezUt^qkDP+)`Ph3D;n8G3wiNBa+E1j2+XA-kg$kskNBM}CI_onbp%6`N`_`Vblq_Cf*Y2{t=_fq&Ih4=p-RbK*b)%1q{ zu4D?)KnX=c5}BtcW9A}58InjOAu|yw3aNX$L$mHY4;d;yN)*ySnJQC*d**%4*=G)+ z|GVDX{y+c!^X%t+-u10-t@W*Med}9$?{n_CE%>+vOIxtK14~P4s1uZS`x4)f;M^Pz&sObL8Jv?)$WqbP7B-?L?wv{;!owT99l(N)vCDq_xDI^GsHY#W=}%tHzc3Q=Egg#t*+DLg#Q5{%OI#%*ojQjf5t&j#eh z;%r5JiTI_SWPs0ZnSnlBCJ8y!uJGY%AFk9at`btnnerN>B0YAk5958f&WBMxT<^nh zA8zpBW}iL8Z}j0NABOlaSVcBD{E4@%BRyWfWgd>HGqf3rE-hX;LlNPG;ZnP>lglh?zN zJe6l25us$9$fLp+@(g2u6Xz;3F+SnL1Vtd7@T3n<`|y=rW|0pSKD_HgsSk^NDDmOweA6@EoSJXW z%{OH}lry68&6W9PaK0IquOoo_#fNIHV7?iXZ^q}Fr}Is%4sA>TCnu*8Su`R2=f^FzMbk#FAjVW|%v`0$|*>3s8VzBypF=``CcqnZyr zW}CjV&4Afv&}{QRA3pQpV;@%f@QDvA7=E+OJ+sZI+2*m?=2IV5`7mj=d26SvlLRpKZSM;VU10oNa!aZKAVHdbasmOR$cP@?pIX-}taW zl8wUuX4|att@tJ%Hj9`7>xYAd-}~@`4_nx$4?n4v`t4Pamr5b+`AgX2TghbIcmGX-XHfqAFE#MSMB0#jdL5_Gi>Ngq=5e1Tb2VAd6w zEd?gyLzW{_xxoBgU=A!ayM6fAhd+JTU~Pnx_lRR4tahTs`eilF0aEE)fM|kp%esuEh%if*+_Qatw@hCr-I(T)FkewXuw}(zQ z6+e>>YmfEYJ0&*ZS=QZ;9;$6Ur%v$OhmoF=oalAJo=*}#xfRt~? zXu}`>5#H>#UnjdoI8?Z$(0+0He|-Pr$L)Um(-U_Hhxu`*AH&5dyP87P6zKW6$dOIDTXAJ5U5`F_mygFdI(1!_{tp8)csNM0)TW1b&# z{Fv*_nzaeJZoVIBk%fLNQbTs~t{;p2_K}(V3t_1r<$jcT3a$RB@S{?aDq*#dRW*Lp zif0uG^?o$@(cnj;9|QGc5%lNbGPT(o@Z){O1AE{)e(1+qzx|8grG6~q)cjbk zc>735S1veu?^kcmr8|1NzWj0sg8$Z7Fqt$p8Y3F7p4Zr<+f$y{;7x4Q( ze*CPp_|cD_Xr97mi^x{tHsSLch{OHrM+-N#AAhLT?{eLC;SN7`dS2b-M~9+)JBzJ+ ze)u_%I;TG`V_^Fc@gw9%SeEcdNZ!^EFES1_i>MzlI)Pt(;lF_K!xc|>k}gFi>~FfX)GQ2-qytF@R11yRXT4ksK*G`B5Ur%7Ifz$F1(`v1>; zU;vi|>@H@*%L6tKUlFi5>Pq2N0bCQn)d36&*p0(lUZ)qCYgK!0kr`NIu4jh<+z`Nx z>X`~$9ga9SfFS{!6`xS?<^XO9VCdex_6p!u@!LEJ_3sGanE-|b@U;3F9>AReJQToP z0o)hB-2vPiz&!zs@a(^~$UX~?RFQ-}92LOm0PYXq0ST`wGB*^N!A0i50LF0iA~Uqe z3{$Iz19&Weu>p(=;1Ma)y>}IvM*|qov5M^ffEdY!MdtAUo($lL047LnteTH2GEZq~ z#uu5#icD*KJ{!Puayu=t3%Ymj3jw^w^$lR6{Lt!_mlVJ+2QW#5!Td@9ugde}PZycV z0Za*iOZT?4%-e9K$ww?&>SGVcU1QytRzvt)Ljtj!nB z78VGfFETF{84ghtKyd(b0`_oZGN(6a?YsaM1Tf#*ah%k`02%{W#PHTw?+OS4Gt8|T7)K4kzXI6n*E z`v5-YUJlr7$<<#Iz}EqMp}BwQt<+Zmto8WxB6B{EfB@D9uql8I0elm{#sDaMiFabW z{}(6O$owz41K1L<{}z^W*%|urq)bt@y40{?IhvRt)wE3Uw)h3AjgV-;Kwn4iV+!Q=(c%~c>#DPJZ?HR5IN%`O)9^=cOAPx)S zkRZk~{|i?Z8S?h3B{^I|YIX>sQxF}4_7q@|!*veY1jXg1=VRkvg$%ZH|-3xl{Qh)aXGSib5nyhON0DXSwtSPx>LBy`1PL9CVhiXg6(>)3yj&ep4gxHgDE zL0ltu(U`9M0G)sQ8^razWC@pv`ZoqKm@^96`&BxS9vc$G&C;R$9EGkJ8pLfu+{!6S z!dABjF)D~Vg0#bSpN!i_ICu=E7n#J%~4h z7*K3(DmFul&3(n@?I30bF@tNz`+wo+Vtb0s3L;;{JmDk7W_Az-3?YVhv3b1MOei)* zK@`hQPK_5AbZ!s}f|wV?e90MXKWo+tgIJ^(VAOH$43EV@Gz3w?wU8$FCLK~1M0pT3 za$|+CGKi`ms>NU66!_VYOyjE;JVh`NuGIF41^hpq(2C*WDm9n4l(0Y5eDu~ZC9M_aWPIGk-Uk0%z zh%dN1G$Ljq_sh;XEX+}PP?1>Y{>iS4MA)S+TZA-PAh&J#O5G2X)kb6Z2nyk z-)nSwn66`#{usoTAbygNPNv${Aht0J>GY=pCBMiszXq{OdFi(xewV@9g*0pjBVYXW zVtXq>1GqFT46Pu1LHK1AJLfs_5%2$l2+?~|8!qD`LBxV^f`}?Yu2U7qrA}Nsh4%xA zAW}gj735u|kPafluvZU!5}(4C|3Ul}#O@&eRNkf;?1c8TnzSc~|AP1@h=2c|+97*s z5D?n;lub<&LK_v?d_R%4!u^GB6`KP?I5>oZROIS&2u`+L$c8-^;?NKd58<#7+J|hC zXVq=eIYLEB=u*0(W60*uPQuQ@BZWr^y9m1qXBC@nA@mR7m=G=q;n)ydCjSsl3!!@m zCxy@>gq|TBAHoT=T%Mujg~jH?5PF4BTx=g9=M|f(Vsml`r-pD!2)#q7=FVlDbG@X{ zCxlN$`i5{$2&ac|W(a45&@Y59ip|Di^KG%&T5Qe=;p`CpC^n&DlT;7qYS8mSI6s6` zvB?&je~Qh2+F2Kda1rg~x(m6L$QgK-$Q5Nw{vli*!oUzN3)#4(b9m8*SA=lCbgm5H zst|5vZ3s7pFerrULbxV`YdPo~bM727ZjPy(W3CV3h7f+8V>-+=L*|;d=9-&AxH*Ku zAq)xOtGVXCx#q%oX2LvkO9(?lsF`PW%`->OH`)2-wh-ohb=bug)oXSu-Hsn zY?d!J{>AojiDx%)bO;ZIFeYRlu^A*k^9TsxVNGzX7Zs0$FwWzQkntfr5yE33JT4*o zVPw)d6Bq;Pft&ZK5S|U;=@6cg4i6V@0ebJb5T2KWW6`UWycojd5GIE3Qpn!na0%GS z%L?F0A-p2OV0blz*E~+Mr-U$7MRL~Csy9NI9>O$r&YmfGGh}a6_)x&n-wt7B2s1)> zCuIMLIh)W(4mV4k&Nt}YCrh`WX#{tD*^S)9v=T5L$>hp<4M zOw}C-yIK@NLkRDNP#?l#IkqH(3ho!#QzoQgLZx2pdB7ZfC9V zYvH;O){E@Y%5DtdhY-FAVY7ta3O9w&p~SG^cPf4_>@3NTA#4rdCrP#lsm6J23*i@S z+n;5?gM9y^TCN%ueh(oY!uAk$XkF;Bog%wJh%i5d5Kyrt1YZb#d6@I18hZ|^DilIk z3(a}aa(2sraYBfyHYTJeDP${G{z-(8Q~=XysSwg0&(IQiG8e*sA?yy}Pc0Ce{}r;Y zi8#dHA?(pa{t;60ZwN=rt9wI0*xoMELYg<6_y1w+AI5%Rv<=&LBkX~JN`(W$I52Fp zIt?H)t_}|4&@kGCaY)$y-PR=aK>fqQXdku@%T!w?JR*!vVRQ(iW7tL%eaNY?wsROq zhV9wGT}G?ewo4ejG)mVnjt=Aau-#(a!Z=34W5ehk#&P15vj<*1q;p(}`I$cf6t>SS zJ;OLrq*3YOq%cm_D6RS&t9KZug>h;aebkn6#ynl!H;ikfd3qRUgmFokDY4JvSA=nu#=0_$sU_x(5_5GJgTlyDD|X0M^dZT0 zGWGf}28Y3$gd4)RF>E*2O+rg}{~yM%u-!E`hjB|7w}mlO#ao4QwF_8#yNY*&u~3rX zVca9honhQ1LY=$ADDm`1NO-Ssq_Diij0$6H822-rWIrt&t(AIE#W6yf^iUWNi`Qz_ zkAyK!Jy4&KOdKD^6Jb0S#^d3AZ_Bx4Ou4jy(UxsFNN{4#$u~Us=9^mf9M(Jf8jU0rw!xvFs9J?;eF>aJ8U)V4Glp) zJ&YM)ycxz@VY|g>Gj-k$+Yhs7z&l~glqQ87nhJSg6oio<#_X_7^^|kV@8FF}7)8>g zkew8VF-HM8H;e@$^TL=f(onMRJ^4Zv7YW}lF^j_}CZt!&PK> zRE4o5jOs9Ivwu4yg~LL4>?9jAbQ;gjcgS>-WNV-{TBaZkZ3mSRTew zD$AMlDz8z@|6Di)VOK9*d=kc|VXO#arI&5!C}t8~tGu?KGmOJn9mX1s(wY@{>U|l; zS7H0q&qTzF=gZe&YzSjr80$3(jp1C_)y6Qs@iGjfg?`u+#`j@t4&ys{o|0Di4`KYM zacLpfh~C%|MkI`_Ol4tglL0@|8)5vS!1y(c-$WKO|9gaC!)r$vJHz-Rj9rqiC@~aL zttAZN$`a#O7<1f!VlOBR3B$rwO#We{!ia|L9ZpQ6)6}?#8%83GBt4^i^0knYr9vi* z-C<l|Wg=Lw{`ZU6 zM9McIy(HgX3I_<;?LiS75y8O`93DYC2|4Z|5t}Cujo`3|y%ldSq=cM)An6c6mk2sW zY)bDGv0J;d@JJzxM~Q4Iv2R4XMsTz`>?UOMVCGBj_8k_o%Hg%;C<6pkKs3 zZm>@liDyM{ZUkpXa8AT#R7zS$JTHRtBlc4XK8NmGf(R~-*pu#}2!`u*P5;QgS4I?a zxi5`iKm-Hjiq_5_;QRjwu8QCaS{t!hg>t@jBa+kRK@kj#;F<`oRi6Wy|7Gy?5e$_* zH$-q_1ViYq2nI)RXsPK`YPy!16H3j^5!@0%pHh1lbbhJnUuteuliP&1M{oy?DK*!W zn!%;!?ou;6f;;7Q&XF#n!FNaSYy|g2@Js|FxbFP$H-fPdjErD(1ouU7za}^;f(J^? z!=>f{HQ&W#UTPkU;Gqb{NWxwJEEOX5GmeR+W@@QSJ*1T~Vg zs=m~`6T!@g&8S>!N@hin7r{c#B7!*)%#NTaf`SMN)tol-dXdwiseCkM-r&uD1oI=9 zr|mFA63Q2-PwFg+pd^BKRlArQO3m4-R2`PlArbtbuGljTsHAzcJc8m$5q$1Rno7-@2)>HoiwM5dcBZLxCT-@5uT=ohhIJ8a zWWI`EgBtP(psCdSCW3Dx_T4XULAj$hMX;GkL+<@9g6~Cs5H^>Z4@=EY;#-7t?^cnI zO3lv^{1(A45&Y_fF0Ew<{Z6Mbo;4PWJ0jQ_L5Lx(jQ2+b{s>wk@I|na6DhT?Al8+d zKm9HCs!~FQq0NK`erZS~(F!*+Z%Eml{`1;t?d7e%OANiJ9h*SPEg1?j;XfUt8ng2C~e}r_=zalh#FVnRHI5^aSacoX* zWztl{0Ijf z9dvMP4&?r#PA3PaIp{2%BOUZ`aFm0i9s6G-x;W@6!roZy=HOTd$4GKgndw_*j&smm z#k0%Id1Zz=$2&O5!3hpdl)R^d3nXV%F9!p}Pj+ysgHs&zc5p?Rxwgz)$LW-rKHgYE z%FJ+mJbJo=^EI6_9Gk=YIXF|rvmBf&a<=ds2RE0Q+h~J|t#iMCp7ES>kz>!GiyaJd z(BHv82bVawRJC-=0LNxgUc<}GWz=+VISq4gPnmt{zrW0kDKl3&xZ1&EWj5zLB{{3E zad54J>m6L@_3&buxxvAWDo&Q#^fEKp!7UDk&`3F%JxtaP8tULy+0a!d3(u_E9SnDH zhl62U1+7kN;^Jc6sU^G1!QCSFIJn=z2nY8$xYxl*3EwHRdALA0%E4Tb2UIm$$l3** zj)Sod9&+$7jn^nNfK`t;7$?hJdE-$B;~hNDSvz>r!Q=An6AmUgc(=?xF;$nDrDf(R z2hXVLX|K0u9X!XGmYFZ)fnCi14qkQeqJx(mOmy&)gKx{sHr2A9Ne*6d&{AfCWhNrw zYYwKg`cRlGGgC#{l$%4#%^ME#987aC%dxjc(;d7iH@+o&+rc{yW{A_(hnL$Wo2g>w za%(n=`Hubgj8mR1QsAIaq)1pSq{7kVX0C&32lE_MIrdIqzJmo07HPf$`Csn%{o8SlH1oZSw-=+1HXfH4z@a2?_jfo4P0CY8y$S3o;i13XP4W^ z+~lD3T=>qxj}E?f@Po|b-lUw<|H;7?P5GR1bFQr2=3qOAbMUK!U!=@_IJMs#{Lb7` zZr^CTdy*4GdPeOZw6fb?(S0wMPLgeuoD#L0m!bQS zj&dFleWLpw^C|30gZTxUsJ&_DIx;@{sUhceW)x?MpY2J`5ji)C^E?Tc>4GQ*L~)@; z;XoHfaj|%RAr&r(;!=-OVPMqW_3^qaipxEI1K3m74 z@&vEdQ&BvtCQnE4jEGAEN;G9Emu*wxEX6htv8inpS8C5ow0yc)&i zC|*;Oq(+<~PUTd&c|D5hQM?hwv?wy_CtGgzl$$rDvsaS0qnH`R3`uC`I|@9KSyALm zn8(dkVGn}Yo=(RKQy4`_6h%=ijG{P-c~Q)XVr~@ODol?G)3d_#sxb4TSm4c?&0Afu zD2jKZSR6&~3e%^;^s6xaD@ zdG_2d99z#$?auQEZH2HRD7XV@(uaFx5x#B{vk`{|iahsv!xlbrP0UXnVmL8@oN;Dqu3h7cWU^36hB4rLli$U8Z|-AaYTjLqT122WSeK( z&r$s1@rNqRZ{oj4@kbQfqu3e64zKoib+t>yM=DHe2r0>Mj$t`1 z5=BhJ5k|Q|DE?(MM)7wP*(i2L!N2LtMeUnRPUp`k z{)%Ekh2aGG>G@)PTYgUz|3pDMpRO>J{1-*r81`}xh{B zyDc{FC`}sBDF)()73Rnodc^FV=TR}6uDit0l|ArAD28KW=qAqMF)^&Du=mEtNz&bu zucZ}ws@lVy6~me8^T5h|&Cgcx9O1b!^pD{@Hi_Z<7%qsRoz%Kknqw-> zMKN3)!wHqK0SPKrMW?z!G9xLd2;qVMAM;8nbzW#7>24_N^TXoEr#1Y$sI8a z6CY4%Gu53jn*{EP;lUX0j^REP?}=fA2&?WD8A)p^?KdBIjf&xZul50v(X?E(V^n;| zt9>|zvEq+-5`G}~Xw2^Y@xsT1j|-m=P7qSz$r!GywD(|i4sR@ZJrlF{9z4Mr9?!+_ zygdAZ^k0l&k|s4VhL=QM_U3z2rFq5Uug372_$`|Ilo;m5Fg1pEVt8FXd_y=bhPOnf z$MB}e?OKbs#krs}MDD6IGh---VU{P)6Ui6O7LKemg zjA4-{f0q-~=p`{!OIR91nO9pLLxsmHMXH43D@~0juZ^KDh9(v3g$>-NUhR{WrdfQ6 zCwVW1=QQF6F?_5I_@QvAa9Iq?MHp-!(GrG)@TE%gNerKJAU*;}VI_l{-~SY@5`HF} zQfW8%>KN9jA$8aZSN6*ozKUU^7HDk@Uwf;zj{91ip5GwydZqa$hM!{iR>e&*d@r(D z_+1QdYke8sKg95(gyb_S%@*;k!fi49EW!=N+FxS(?!X!0EYcpv-u4&*%33>wJB7Pq z_(P;62ET|ehMARSiazIMiVI2@60#VMAtLSwqn^B=(!{kdTwy|(^ma;0BrVJciz`ho zhJR!BbHLrgKZSqA@V5x%dqn;bE|8!9WB!k!QyhrnkT^^nZR2)b+6ecHV{xUatu*_` zaZnrw#BpF8%PY<2m1a|=*1;YyRPG<#XBGKa=-L>z~ydHXmHkE3&yIibq* ztup6VnGTY(|Bi87TxIVQI>&Kb97o2{RaHj`yTmb|%3NJ#j*jElIJ(7gOdNx&%+M-x zca<4kW#2*3b=~9W6-SRaPEf1k;}~CMo~|-I<2W&nNmb_cD)V-gDX20h#nC&CljArg zjyY9k0f(+KbyeonIQqoVRArW_&sDTDjsCc1}I_s;<#c^DsVt-+4^Gm&c2GRiL|G0fL=%TjLP!&ta#lxV_4} z6-PlFZ^tn+ju{fN?K>hZRc2Nk`QmxPV3nCI5>-Eiam(eQp$IC*LqF zNJ73Tj?HoWsH*RT-^cNT$jQ?ADUNL_Zi!>72wU~7Ha~m(7p5|PAXsgFljL{dcCU6v z96LR}D~>T-No@PdPs6xwcXCVPEheq#-8#|FBUcENiI(I z>^a3nZ;zkqqL0T%R@(Pr9pITfcXqKn5|JmcbV z7f-r)g664JsXC!opK|fET2)n>nrc&9ZJu@Uyo=|gMuoa+^MZ>PUDT`FhHBGTZC-LQ z*~QB)UUf0a#Vam8tTs!l&BxW|6REwX=ATxZDK6e{G1bNEE>?MiuC6xITugWIb+uVn zZPr(t?bYTj7d0;4b}`?@3>O71-f@xVVy25(E_PO%7O#1}i`gzh8Ym(xbTP+8k&9v% z(P|T~Hg2`aR-3sl=DGMs4NZ+{Q)3pmD08vU#bWx+#k<^PH8xy32}@j*x;T=W{IWrf zIl9J_yQtJ$DqQrcF=y78Di_s^Qt7Z^{~A;4;v*MzF5aV;Tr|08aM38Q4yZ9#spn=F zOC({F8z`wU@4Hy);sd&lapm>KahJJRF3nrj@b((>KNp|5_}Ilt7oWIT;bOR|*wu&{ z^C=z6rB@G+3O{%8g^SfL*0>m7VSCRQ>xCO!eCJ}L zi%l-Raq%s;K#iGEV`fT!vvg*OfA8Wa7eBc8k#4Usi|L0Nv%JP^k^2drrRPYrW6htAvAuO-)AFCV~A#+6wmIqWnLF0 zaB%{+CD1>CK?z)vz(9?7X#xYJe@v~tCA%zvD-*apfh!U?UXnhwhKKc4^aD+;HT@*K zwANgcz)cBUo51x6`^kt1n#1K0(T~`Sp8Jjnwna3x2#<%$q4a#6BwDm zC$(mEtyx=ZzNzyuY!UQdcVmB0_R_9^n21fG}VS$cr)e}t63AUjE3R4x7d zQUY%z@Un`N5}1;}D|AHyuX+kpo-9tXRh>^w;B`s1t2j-3x~KDI!oC@JOUNcO5=bTR z4*ih8%miu@n3cey1o9FnP9Q&l!USd~P>_I6LBeE0gLxIn=5VcJw;6pdo=q?i4j=Kdt69t09Z;$$GYisa>pE_V956TNoz^tW97=0-vdNWdffju!=jP&J3tCH%j^Q1inaMbpmUsQ)h-q zcx#>cGJ&rWxV_FiQfJ21nMdo)*9mM&U|j+m6Ih?X2Ck`;Y2>SQ=9>h*)hMq?IJwSj zW~e0a9Rn|cX?5nUIx|C6KPK=K*Gqg}ovE%fTe&m|Y)fD}H$?)!CGblEzj7(1)8x7C z_XL)U@8HrWuv2sAWIw7iex+T#$i7rVTnZ!{^+*NPxt~dA8n-TSo-jvpxeo5Sz#FGf0X(DSPOLRK2+-iR+WNHi_%F?)B!+db5`c*I;f)+Cy>~X3q~plekU7Te+rG);7Q0s~yHU@+(P6Jd(tnNj%7PN#fol?&i4s z@n_)(A&c!B%*Z6}SMfgKC}D>NdrCf##Ar{mbAuTp{*drtPd=6bAmwpMOiJR>Bqk;? zK8dH3cr1wtNj#p!6AXq1)4jp;l;)F3JjLbXH+UQDLtmc;^Gp)YC-H0&&vA7mr2L!) z^Fk6Ya^VS~A(!Ccm0UQgl;#&CnV zRtDVAV5TSWb`ozU@fO2F{SOt+Na7v(P5hn)GrGYZPqUK9OQJk!?=XT?_?ME4acSIbbS*{?tO6I+n#QQWx z-upoKVG>J4=*eYCEEgXmNBvLyW8o*l6+&vRRJfAx9%fY%pC#?h46n~cRwuE>lYAla zrEqM6y@yhoJ30!-zBjXe%I0=n6%FQKk5@LBLp*+H3RP;=K82%FI6Q@pDIAfq8@5Ag-+K%; zr+J-H_N?ig!jU444d%TD(B&aJqzRv~#~~ zF#S?EGlg{xX1yfTJX;Fq2>C6hb5r(DEjBfn^Hb=b!UZY&a748WQ@Ds#D*o7DwltXS z%qN-!x89{G3{Vd{H2P&J+?>MYDO{Vv6_Q_>!k`qcO5y61eK6c9mvZjc(5w7*S%ZCQ zxGseoQ{XPXUU-8rL{0TDIE5i8#2ZYe!R*#3x3H@ehN_2KQ@A~a+obuYYVSy47~@2o z;k38G+^O2TQuajP_o;|{yt*fa5h?pD#_Qe`MvC9(Nk*k`zsK7)+O0G?g$Gj@m%wZbskh^ zV_IP3@MEtRwLlZ)`Io$YUKW`od?kffxo~ProSd?`Wr~nws>tiYH&U1;GTp1~#hd>W z=BMy>3WXYChVY#fW~PuYK1-OF!eNc}w4JSDfsn=ajiyMvSU5*G*Q=eELKn4Kz-=Yr z!W0(K1LE%r7pG7n(oLFW;^o4M6e?5uKD#_lwH&cJg&Nh?rqGZ=ojB$7DRh@kqa;n9 ze3#x5FG=A&`I+(dzQ_l{4^vp0!bd4AOJTVrW%B>=jplzT`w?(!@skw3PGLm~t5aCX zw4fvGQ;}7|&r0xOg&$J*Nx~nAjb?D8*`nfY(xKWm6@O;5H=4&A&95o!NZ~gL ze-~~Sz9Rjd;=6=@q|hQVrO~|AXl6>GEC2XQaT`=Z2nm@e!YM>N?ubN%g^ec8jid19 z^y%|N3Q2WKo|2!_!i-WYg}D?CO=EWo`={||3j3w;R|~;XOYMv ztvxJ_PHD7PpNFUIt~^4>st##%OoPg;lj5MArFNw7s5H8$mU8M4k4~eTs%QXlEF^xHmro7SADxObD*Mwr?ppB8PZAjp=E;k;XJe z5x-K!_jRgzGmW?8SgLUrZ>KRsQ+UUl*UU6#c|6l-^3y0xV|E$^no(O#hig%kMseC6 z>l};M^Zfg-G!~>WFOB)qq_A~}g=s93shkKU+!Tw`s7|9KjjFVs8nidd6pH8Axf|*JK`VvQMBdHkqAiw6M1{{$N}+nW;@?W|NuMWPEA(nOnH5O{S{J z)Hc~WB8E_ii8O;SLzJV)nG`x{MAO)lMl6j?8u2uebWs`!ZWjHb-TC?(##9>VG%nR2 z=eEkTO!#T!nEaX0JWW>pmB!y`uoeG|x3%p*X_yTDO=B;;q$+MARw1)*2)1gI!TuTS zmqFXizP9w+drgK_2W0GTaIv?8GB`M6HweRnmNTvn$)HmPhi1?*gTpfRkI~q3`;0v) z4i_GgK?e~^-j^S)XY$YNn?AcbDud%P=#s&)8G8%eRmw*TyJhTrj}c$&4ca|}9vORY z{C~|jA%k8S^vvMI%)b1oF>>5oae4XE0WhRyU60 z)U-^T1ur`MF-|Rm$1`|Ba!TkldgI9qo>D`OOCcrCWbjf3&t~vk#@=j8yQTK0_~^T zn;Fc=;H?ba&e$YIV|b^;g?J}pzlO)28R4@sD9a!(gM397b+|)kXHbyAybKD}uqcB$ zBE>?^=zSgm8LVxxp8?I!;N1)sWUxrJ3o~FX<-AB1t60K-5&2e4HaD5_3@YR|hEQb& zbs1DCc&ddpLRQs^Y*TKm&!9nJ&?uy-P28TUTB3dW9*5wvYVPy^L+ir~mS?augJo*M zsjbyt)_laFGxnVo-N>VgGx{WhPcvAN!Ah+ilL>p^g09NoGqvTy(H=T*bq4D*Sd+mz zx>4qRsqOHUkX@}6`8tE&o9yc~_RqE(GWafojq3axO`Jo2E3zqr&7OqMYm_sRf5>20 z20v!-lbSFyY+=yyLmw5lWw4!7&fr(7@%x_{{Ly40P3AWannB8oVTSGw>F*SBM!TEL z9~lG{BrWoQF9W{_y%Eq5Btw);!WkfoNCu9~V?@yd(F|f4WHN}$)h>t2Adx{bgTI>$ zozIH{rBzG9Vm5=nGRSGr-5LDJ?A>e*Xf}s6n-0z9ZzlW<_GIu6vum?Cw%MG}Y)))8 z|7EZ@gVUSMna%c8I=9)FEZSskM&dfsr3~P1wXmfms}swK2dwLTl;# zc3B*j#UWW7nziYU&4~=2_E{XBwRc?H3rA#eOcouoI68}tSsax`r>sqJowGPHi%Xi# zmCg1DrlgDHU4<-O*KC)#n~GF8Hj5LpI4+Chv*@1P_jK7qwKs8Io}{P9EzPEvs!qz{ zlq^mbAJ%L}G@IVyoZx-UrcV~9bJkh(&D!5^xLU?@`e$U(FKdsd){RU&D~ofpI6I4T zFKDbWs(MKHuyA6tc_fQ*yfi6B z6lXm?i^sEgOimam$rD*jP!KXd&^(6UQ|vs8r?Yq_Ywtt4Dik@j=d`j+>@@p@EDExC zQ4MLs#4KLQ;`J-a3Y0S z%+I1oGcA@w<_PBsY4bdhubb@`61d|QW>KBRqAaSicvtgcCyTQv$)a4HlnTqT_(q$$ zLPhFSX7Ph03{g6{CW~4*ikzcxruA7gWzmpDqq?P}qg>sb#geT3tD@F~u$qTX7E81E zAd3&xIgcSmFZ)@R#d56$JwRo9hGy|?79TUTvi4bkW~@*+t>i}I2H{sgg{!joEQ`<8 z+qP!&YqQzjY}RD4E{iX+_)79Gv)I*a{%AI9v-mm-ztV!!Z2ydOeHI(D*r2XhOf{Qt zJf3Yfo3hxf#cG`?P5nNLAL)%Orpjza)K79Ut9WP2ZM8LvZQS^ZN&10iv+CC@TC(^p zi$AjXUHaSA?GE8i;VvQlxx3lEp5>PGF}*Y0@##K`fCzaoi;#F&_?MI&Z^ffo#Ii_c z5tqcxA|bNJi_DZ4i64PagF*&r&p-m3^<#5ar(|w6KZHYY^_Rryf9L`%}E?!~=F0p6O zL2AybgGJiqaP<;%?Gkfn4u|Dz#$y!+-ALEv&?Sc>ayTjnX2=dXo3uL$JLS+>NI}TfK5PDTh;O0Dl5Hhf_qzdyBAh@;*77rs7x?7wa$L&&c829Qx&KVmvcvPb*$$ ziJYCoIiBREC5EHh$F3YM%HaZvS&8p}!Iou=7 z;Y-Z(YQBrFfN~hEc)Kr$2XYvd!~OJ_CjQ_O^BrIQ=kTCf(G`vQ6PSl`cvuspA1EBf z9hbxS9LCWwjZVMOpIq_Ba(Fyv&)>&Xq|Fm@cshqCb9hQUw7Qp5ekO-$IXtTp4ux z+21ptDmjI8(Hr6vvbc)han0dPnZZ9>qch*mVP+09a(G8(Fd8`#%4g+JBuQQl`CKf1 z1kC&Y916q>JqhJpS+<&!!~7iP<}gnI#@L{@Iotv*=t4y))fVOOE`wH07K@Z{zTB`} z@f<3-f;m*=>;X4fmW<=?zvWQPYj-%gdbEwx8>V(`=4LQ8Wb>w0(qL>Q!`LFN_ zz5>dDNJ&?nzaQlAp<;=PwUm2=Ak9so!*447>Io_T-QzoQ_D^DW zGT|^V#FPC0j|_t)hH~2J%fX*RIER2t3JOC)))p)=5sy1LM8)T59pg;kIk-7wa!6?1 zlfslREnKj~9yD3;oRG!cIsEDIQvUt}6TZB(NBECiMEQR??7tg(CB$y*w;N_R+U&N8 zu0#h4yW-V$_r5oiblm~FaiA0^r`o~0(PcN_0d#aAR(RnvINt3OXE-^=P2o+hoOhc0}8js$MZoBQ4VUb}*$+5d}oHV(! z=sjYO-8f#72Ndf6hpaCFx2gKy|Ga0P`5etkhEhmEC7LKor0`9Y2t}ySMA1NoN)Zal zP>PC_M)$h7?!DxaX3ZKkQe=n*&V0`A-S4q`{Gb2x?B{*n^{&tQtk3$awb$NfpNS4n zPFRzKdv$A&u!bUygj7xuX)HWdSia2tb_4g!rU`4Fux1J4LZ!mNo}O?oD`zC!%Nfra zVvB@zO4wNmYngCQJ?>Gh64qLN&K8~{JeQcT^Aql~sbBa}hh>z`V3A;35KP+?Kz2dQT85kr3U|Kld&I#+9 zur3MrwB#IR|>ledn9bT&Wo!P)-&N=k?EGBz9wP45;lO5C#;_=uNC%5 zSYHw5aQ8A?Cw{%Kzo+k8h8q%glZpcqHb`V}!fw>;{G;v;a0iw?L^xE)u2ai!OTz9< z*sWSijO4b2-JWo_6drdZY`FLcVR0uRa_l2DJG38_aG&_m)jbJ&Bw_ce)B6&(l@EUs zHdbb1g!c2k{%IY&2^GZXeo!k&=Ltc1-=xUc)36wVgT5zb9mcA5Kf_^E^~PT13Q zlCb#+Tad74685aRE?#uFhc8Una|!p?-pIM$xBy;|0SCB9ggW_)30sn|m!-UvaGx1c zAgEu|GVoAbE6+CTtGV<=CEMY4Xwj$yFh6z_AMdpoe z%M-R*rxKIHhP*o>Rwk@Uo5?L&rE3#bO`C+RQ&ikiXv5~5aZc`rguShac$*LZ6~jA1 z+Ps^v_r%}#ln)XXC~;5Zj}rEA!Zzv5Wf+X-6Rnv~xwG;2pLr4`?DK?u&5R{%v&1hG z7AbM>nZHu8MhR+{;G2Yfr{cF7Z=Di+pRg_5d`fUa2^z`%M;ZJi{5fI2$g)KV&M!gR z5^PP_ZwcGx&BZW{j<3_VCv0EBb|mc2g#DrTcX~Fv61H1>kMI{|a<9h1v~Vx_OI>gs z{++OYyjK4vY`@13aAPTP@7R+GOUbw$_y2_Xla^8Dvk9}L<-9FD&;8%y%s-OuR__x! z!j2{G^(ByWZ={35kdVc2(jwxUv}R&SiznR;pOah6{9#F}nY6=`?p93uBa(Kc?2i&2 zEj&hexmMt@$%FSZoQqmXtDUstlkVovvDeZMP%{H{lU9#Dbz6Hv(p{o7rcM2%os@K6 zV{+v@sCjRYw1$d@tr{iW$58achK-YUs@yUp?ifvyc3RTi;hPGZ37ZQ~7ji_bJu_*o z)NhNVdwo1h*iy*avy<+FqjS{Vxx({==L=g4JD0fEz6+ApHfa~iGfyAx4DG}@5N^U3 zC#`+bz39-A2RrJJv>r+K^4c+JmnN-?j5{UmG7)xtxkzVW*AjFs>cT6Mc4gAKi7(VB zXy3hPP~zSwG6Pp9t*_G9GwD99y++te*jspQ()x(>C;<)nX~?|3a6Mn2v;j%$pL8!D z#Vm0Y^f@qTgVYPpJ|2UUcB4{vlkjFCCt`@mP+_kU+#)}>Chaz*i$lIWX(N+%hl<06 zBZPM*?XINtD?$Gf_hm1;9+kAa6&U$FNxMI3_a<$0((aS}KxKZ6_)TguR(zcBX4Ue! z!Gz?&cbOkd+M`K(NE5+1nwYeQwT2%NP7+QQp2s|txW78iRW~(h&n0bI(&i|V$CCDV z(w-2Xp0pWC2&0|p5%O8$PbO`)%%}`6!Cd8GUecZsc}n=SaK3O<37!>MAY3TCuf+W} z$McHng`~YChl`T7*z^3N$dW^Pe>rJOllGeQSCaOsNN=q=M)Ep`@3rN!S(dbtr2A$H zCyt}8rR|8MENL5c3a?1o%A~DH+A5t~igp0o_?~EJRFm9FBv>)iX1CEE@ibmeIqZ&DLW}; zbyDuNscy>Me(MQO5S}QkFMMBVH@*bWNE@WwZJ$GKl(JJ&2QNd6t#QguP1%Fo{Dr3p zo2IO}NHZZ@(cpCPPfBoR%DQMEEmC$?%G#x@CF4(7D-CBoF99Ow2tVT`IAv|b&rexv zkuOTzf2h1b{KAyAP1#pcD1KXli&EApWf!NcgACdWFA;8$Sx50pQ?^aT%T&Bv*jczk zI#WG}X-`?VlwF}5a;0&|SEj6c%Ds-zfW;muyDDXUQg(I9dMPtKQ+AE)ck2G3cgn6! z*=!jXv2V(*Pgy@1U+2xv9&W-?2Bh38H9ZsA+O4-nq4NkfD@Lbh5rrfoCQ_5}@ zAs-_0R|$rt?EaM9lCn`LyESEZrtG$q4NuwaDZ3+O`%AD;zp|b!!HATR`%2xrwYxMO zBqLMC2V58MXQfkiU&`)Dxv#{j-z(!#DMrhZ;utR4Qq(BLSSjN;xhWf;vI!}7XJZqt zmIt(Ejx2S5`ku6Z5VIj#QB9l@!S>(}_O-tF7lub>!zc)yOLy^VDQ#RdeJ40lq zXUW=GDSOhZot?5d;&X*XKToCX*_1skWxnv4Lu%<^0mmrixkL09QubTQ7NzXnlr2u# z%9OpBve#0!gl7Ri{F$;>QucDnmZq#`DY|kqFU5sCtz3&a=2b&iOS~flx@@Xf+t|gzLb;AGUH1sn$h^{lzqdKg}Wag)pGXvSE_ve z&xIkgEh+m!gd#)wDP_N=>}SR-kzqG1b)O<`<*6!#K55oW;_oTjp0XX%X~V;WJ5#nR zWvP_y*4Xz5|4iAxT$w5Rn`^hXTaM~ipRtlzQ6HB`bEH11eJWP1F@Cf0NX=_o6 zvz3jb<>8pL)lA#5Y4@+*i`gh*t+XAVw#(91J8fsCtxnn+rLAt-PEK3Bw4JE7C#0=S zsr!1Te%elw(y`S2$-B!-(LhCxt6|#xl|MHXX=@^}vGCNidqtprTH2bYt!dhtrLAiz zdX!>-R`Tg-J42R(OEF9Vw@BOhX*(-z=cKKrs#>M(?6lodid$uHXDQB=ex7htDefsn z>$F|WIMdcPZ5O2N!nEDTO{o;)OEIYw?b3Ep+GdvGiBile#k^9qPg}>dU6QsAa>C#j zm11crE=^k}DJAM_WhpLC+f8ZfoVMO+>yow}j6ZGN()Pc!U6HoRQoN;saEw=`t$W(m zt09X|@!@~kdZz7aIowc+cS>({^Lp{mht~e?B$k?4)f}+J>aX}dFRBeaC}smHt0HZpC0m12J>4wNEQio4S` zHf{H$Z8UpilGBzhMWz&4*^f!v{b|d|XTB6zj&W%lFNchc#{}`na=ith_#aB!M9+Y0 z@)3!&oFpa=6HVQN-Re8 zRN9`F&Q|k9*yFRD+_Wu7+p@GROxxnLJ*TSYg)ayf32SONFN!Zo+iPiiDQ!ztd|61h zucYl&ug5yFe_d5?r0q@5hQZLXByB6DlnR#%%Y-Y0^_F9mNV$-$R;R5(yoQoom9`Jk zwkB;GB(6={TO#X()m)+?^_QcOB6(Xy`q`MaceprJd{=nda=b6nbUDsijt|rJt%@I| zZByF5NZZG0`!sEzNNlqlotNXYw0+K%yd2jr$DrjHz8qhs?JKTf+1$Gv6PDxaw0)!E z=X|BWNmm%(rR{r(TZBIdr>Kgt{gk$!rTilNHElb&p3}BnS>2Yl-_rKGm*HY2namwh z{_yl&Y5Oy6yH(udi8R~GMXusLPyE{>to>I#?l1Pv`~S2hJf0Lu@hlLTsc5s@_EpRY z>4EVSJcs1SxO+H>lW{K!eqm7wW-Oes&>>3X5FX3e;VQ;6RwHAF9a6;=dxVNdX6z^t zD)dP_CS!G^)D#{oJWg0EW5t*Z&krRdWg|s{=W6yZ=(ja3Er8ml0 z6OPNXX)JPT#&~IF6CS5YX_~QS89QCPxp3ifoRP6JGqz+omdfpGTx=OTTeU5Pt&}m2 zg?@^OI#>F689QI3b;d3hX_K)FGS)6*7iO$&#+G?;u3V0bWIzwAm!o~gI%ez=DIJ7W z%du`bF3s3w8SCU(u2=KRRb;=#uIZtxl>Z5@@M62tYt>z(hwv)l)fwyQ)n1cvKZipn z#o=5ly-&u*Wvnl&GS)9+gEMxW^y@QrL&o}NY=DZj)Ntc+49wV|jD5tDYdN;?Zc1_9 zn6aBOHY8&=%lKP~Lo+r^MPB;Z>6YcVHDh;W?6!;zmwvnOj*R^z`w=SMDg0H+$c){W zu~8YjN8;TX+a>*86?cn|&e;7K8zY6i6fZ_&Gxn!y$7k%Zj7`YcqZxZ3V~=F)!HiAJ z*h8}aOEwRS^KOvMc}!Aqa>h8iqB138QzcFl7U$yejLps1^o-4tI3r^-Gxmh|0l7^q z$CE0~&e)ucWhCZ>^D;JHRZj_@7V`DTGa~HtSrMnqy;?2QEI*gA=QH+#crmKtBreX_ zi(acGA}?j^Wlvd}u~)>Sa`jrqe$3eG8LP_J8yQ=ku{SeT!nMltLWAWkH%Y0Q^x@5a z#>zRfd>2o+GGo86ZW-LX4`}u2(N&@i*NS~{>WH5V>>hUFV}6x_GWB% z#`b8W?CwvQZPG~hW$bSi|57cz{o@hFus>r-6%S-AAv21!;gM32!^y}Xn=xP3av8I% zDkc&a)({>h zJWfl?_~9QFX?Y62{40J;)@o+mD-LUU94nEeR@Q1~?RXVg%O-Wawsl47W$lEloh*K0 z*6L^Nq^#9ZM>MWqh6bu?SVZZkh_kk_2;DXjIZfEqt8FIIJZq+Ni7zQeTW@ zNEz&!|1Gio3$}ndoyeIXKilQ#%66=*2ZP+;jE3%+Jjk}khKT24(~0) z*fKm&hKI5?QOYEx?#VJdlC?*(HYsb9vo=Q}hdi$gQ?fQymM@jz%`z-6!(&-{GHZ`# zZD!V{XKjXR86J=FGCYyBS%)Ze!ecglO01UWd0AVOwWqT7OxB*3PMi5zdt0^7X6?DG zEy&tJrGi!TOng3TFJ$e#GWYoyi{F=Fan_b*?ZvFUl(i+EpC9DpWwtHD)-t@3wb!%u zYSvzp!EdVFUWPYR+@<2OtZmF%N!He8tu$+^vbH>HE3#H5o4v|5dt8~de`H^twaTom z&RT^RVY&>tGE`-4ji(f2eoG$KWo^Akwa`{z0|zVatZhb749{ZUGVrSYhP#W z8|m%TgjL^V?XaAEpS1&7+mf|Evi3vPe$CpCS^GI_KgqcB3Un>ntH@Scv-W$|wq@-% zDcx3}w+yytZHJUwJpVhhwl8bDvi4`zc4uvm@^gox8X=p#vLCque`W38to_X-OSxOM zqgPcPY&Q8qP;uUy#1zuf& zH&@`KoSmGrRkAF4XsEW0h&fv)eS^k$YR+2atVzz!$k}N*YbLX%Iom9o<~ciE3hxzp zFv2r)c2>?>Nc>hd6kB>WXXosE@pE!^ZqCjV|4|)nm2vBwwUNkHzpcQ9IlDAxZ8iLM z!i$6#3)||X_TRnD%<+0{Agm9w5QyGB^dTko9p$=S71GAoc@fxbEG$5pY?JsD#w zak$9!IqRRZ8)P=XYd$b%gT#+niQ`tfC)bTR8o zR#n|5EROw-oZX$X;W@i2XCrcUr>c%u@ANz}XQOh~NW~_?dvbQ4Z0^ljQz@fWERO5` zoK4Qz*ql9-vvE0lAZO!qHX&yhtVCPSC;NR+O)grAi8*^j{9$1i*-Y{rKAN)`Ih&HR z$8t6`XVX0W>XqoV5|8I>x|HkGs{cyNRPhPnP>D}!__Kv`q|X(fCwxlC$e(7?l*wm2 zpFusR;`3fDhp@=wi$$m`@syWDURHN(%c@tzUzPq^&R&;K_WMT8-ppA^ z&X##?zvs<=&X#jUX=R=#T#>WSbG9;P@5*dd&dNnr^Q6mJMb6gbtTJa+IlE&e#;nBj zm3Uz#*5>RjnZ3Rer7Ka*BWG{tY<Z_?_YX(pz>ADzLrS- zjmWpc?}XnAw+K&N<(>#XivJ`JY~mhLe$Cm|oNW`Q*?!&J{;uM7;SM3~|H#?Sob6F@ zSI%~eoTdS?_D>b}=B&Atztqv+Ohw-Q;T+}dUvBjh_X`gQ6FEC`6nem)MVoNmBI4aw;i^@L ziO2JHgh-9N9p+gcF49|0j?CLpo_@3lhgmc4UI>o$bn;qKju*06J8yMZo42}oJ1KAV z@^)h0PEc(hxus40ybVy6PR?7yyfskm4PGW2sW?c*#(6tc#U?_w9lQ!nJ>D#D&Bag8 zTPu+>@^)t4&Ju5tci+xt6CN$|cC+XI?7W>LgL8$fEoSxnytU5TWqE6pw@!JxAa57t z?Lyh`y|cE=t;gBq;=FapTYJyLB_g+~i;j7FnqL7B7GJmW%)ML&ot3vPUiP{&!n|Ff zVlj;2t8iuBddRrDbhc&HRe8HQZ#U(wXWsfszb0?J@^)?BdaF3n%WWUE<%s&_?S{Nv zm$&{hxL#Q7WkBBUm;J!J4VFGAZ^d`#~5^ENDRlk;{<-bUx` z*1X-7x7+eIJa4z>?G9G0!aTKleicUK?asU{UWL+CsE{}^Z};SFRNn5++gnoTbNwpZ zo45P&_WmktUWH$!kICDEj4*HG^ENhb;}pQ&RS1?NQjQ6EdmwK$%h9MDEz5C1IUdT} zBYB&cw}+X`a`Y-kpK|ms$0RTE0p)l!Z%^iJO5PsJ+f+}V#u1gfJJsWPo0+%id7Ht3 zlw)K$?kmT*ay*f@S!`8~8ReK)j)mozowsN5HYaaS=H+dPJS;26x^g_7xA}Q{ zyBwdFyL-;Iay*;2=km57Zwr;@edX9+j!Ze8R}6)6IIG+Ud-DoB1?oX3180J zQW0AEW&f&*ujTD^Pk)1_vzE%Tysge#iS$yhc6r{)^0q2(E2OOSbZ&R$;v{rlk+*d! zR_3kBvsojuHgB|fiv!UnSuJsW-ZqMC;HW)&n!V%kcSYV)Tl)VXZ=0liDEvq{;Trqc zv;V|XX#AN(rjh)MynU(S=Dd9;@|Eyw;Wxr>d4kCJ`@C(>+ZKv>`yp>Xa@4%+^7&8R ze$HEHHTLPecgq}6D#8o#U9dNn$&#*V!0&D$S&+nu+adE1q@ zu9^ZyHE=cd&cB0)L>xR>`t*HL67#6!^&y4$8G`RB-nqM%cK(@BSPdDRnBR$)IV0 z558Q>W(8|5a=MVp86sy2Z{>$SMOq453C|XuBc%O1tKIYTJoUn2Yfo=ea37*xP~dM_ zxE=9mE7DGQk?_6MXkW0)#V;vX2N7C!6uDH`sbH6he5he|7VjeLD*Ru;t}5`hhhN*Y zZUwti;$|6ty&64K{7FT6zPeyNrEHVZOT4%6T45g{E&CR%pU1B&*bdqEFW8U*pU3hv zaR+rn!3K&9@+=37+*q(ZvcFly;t5Fmp(+kLWJYe4a$A8vA>ukLS`IJRohpv-#JfaB z3X5iU7i>bo?kU*V0^e~ynBn_GMi*?1$o;~7tFeDI#uaRQ!M&Pu4bVdoACSR=UOW?3 zd{{`EM?@wSY_g|3Dl$b_40T$;9y_Esy}&Ql*$mHq<{?$H3ihOmv(??4f<2|;T;V)n zVl|#F*fRy2uVP*~e70ZeXd#7M$daYVi z;5|1gd%s{GsOzFPhDY*|+P12|#|8VkV4oE1b19z|?6YED{Ip&Lz9`sc6~7doUxBYg zicY>M*!Kl~Ud|1J%6DEbTcrF@;0Fs2R?(nM1%5u50oz`%U%hN>71>s>-#q1ap1H~Z zeeNjmEeUs~b_#b1cMH48=Fb9OWF0&O_KEyeuw=ph7XPPU2MSh$mjHJ&2pVb{LWaW(VMELi zF+|N>dp#=9vjY57N!(Dw&{y%(TfYh%ZaB(tgyBfTpbFevf!ix^M+J^H9Ag+>fl;3E zv4%Q^;|#~kXDxHTdO+v&Q`>NN1twIWuHi&OJ;Mo#ZDIu`(PyDh-*A#)as{ST;4wLD zU}#}zXgJN#$Z#s{4UG+tS75pfW(u3A7k1IqaJr$Hp}Bge@??b@z!`=!4YMmSNA`0o zaF*dbLrcRshE|5N4Nq5Keg&SXz`_cgtH55Wz-tva-_SSHu52zE1wTsd%NZyP=0y zyRiaS8~PY}ddfA1UgEul*LwN~^3zwve!}Yv*NgP`Y(B2Q4IUrJxi;Kr7_5PFHS!%O zrj)DkX3u7b$WX&DPr1c#t6>Je{3Yzm{~qP@f7K56Y(^OFfkZ48N-j_OiRe zjfb7SDd)?CEOH2?Y;IW2Wh{|Oaa^ojsj-uk8&-R@6&|5pWq8l9#_+bpwX%Q9uug=2 zstxN68&v$O0{gu*ZZy1O;QHb5u1K-d_YEHywi!M&d~5i~@P%QM;ZwuMhEELpc_&Oi z{0Itf{<%n`@I#)cM5q#98ouHRkw}~8_;CfpH{9PU-6lK^tHgJPpA6q~*%-DMe&8;l zs(*w7gg+a8m6Kn%0ZQ5Gb;N#uGwft;4Lc-m7xHaZ`v1c~59GTH`wY9?|6l~e+haJq z6310yuji)@zyD?U$Nin=gRvd2ApbSg7CB(ZyIG#ARPYSezjGIb6jfghv8L0X4;s z79ImMsC0Wg7N`XrC-GD%$BVP7StaTKjZ~~FtOuL`)aOqYaTG$Dodlfh@diLcS#lfU z!P--RQ>8Q(?&JHv!1=&wKnp2Nfo8xNKy%=9pj9P0RHAdGdwn@m26VEJ_y54zKuamD zggq*8J!gtv0Rzqj&I1N1{<|yDU0rh)+ISu=P~PaOEpRc=PWnZ{|1#DdxCH3nSr+w6 zfy;qTvgGTC%S7mzt~!f%@$9Mm54b{NH{q2+>fM1J;#Yaf#7gu8`l)yg&`YGZS9`5U zAE2+uWQ~jaIT!i$z>PqE&vF28gZMyC83YU#pIV9OmAJ{%Zx$H>3>6s$+$wU5a8@O5 z6JfM-)!iK`4i}E_#(0;CBZZ@YyFIFz%yz>oB_;Kr(8cg=w}wNNXnDIY>_#_xxll)JYYWX6!5gf(n?fS;_XU2qvFR( z%L3qeU?K1v@O>qIl=yokUXab-DlQf;uAe2~-#oe}8rRIrzz@JuU<2?9unKq;{2nm> zM*?q<@GAhayp8)munY(HG@fgGkj@X!mgy{84)8?*#TCFxAX5qMby@92<-l5CHBbdq zfP1Z*Ra!b#h*r7h>>7E9SK%#SJ+Ka_29Bt5zhlVSi}(asT;_78wI437(G7w|W*8`ul%0sizd##&}|AOD+$`H^vp zDt8k9VK2bH>Wlh$RX6}7fY$1ZtuCxWikr3%X`sN_0dmX$Cx}~|e$0?tQ=V(M3hk?4 zJ~%#i>-YKG*||g$K{LM(0V$l3;?#tEi2D%sA?gG398oQ2B<2Gzh#jh2tl`7qJ{%^6 zHl3<)gbzphFjw)@e-{nmXrFuGI7V30cW`B%$De@np_UH~eK_9dezw215A}VhBVN~s z6GZCy(6!2~<#D19-93JiYEKq6@ZlQijeIyw$|*iH7CBYOwoOF(R-vg#GhuVD_H>c{ zRXEd!i+yO}LmMB?lGxIRbA4zfezx!&;b1S4^Hew`EZF3mr3m4Lr2g4QjtzRjPiQ9TuNtQ7hzZ7Xc=7LLpL9;^5IH}-G%J8hY#aC z4_8a<$y|B04^^SJ5B*iV)`vbKeZAU#BG>tFy{AmB!T|9be7MPnf#QRNgM~K=A5)Jv zi!+8HJ`5Ef=EE%_PgLRgD!fvK+kCjkhueJ^&Q$OvfDdnJqDS~}rw^6-PTyTV_ik{c z&;1H8k5N9{?eR1DuDuWU`P{F>zM(H!kM_AgaX?r1`|yYlV|^IU45(9{$P8wJ4-fd< z9}u7!iw~;mA>l;f!#=#J_$P7M`!Lz({^-*!vY+C^RK>|4Yw2r)kNGgmhsS-G>BDp% zX2?Tp&-oMHa4z9%OdnoR+u1(MVf;Kte0au(c|JTX{V8Et6>9SHKR&Fg!e9LGrwJ#w9+ytR^o>=jp%HBdjgw^B)yCgx7so$pQMX zf}{3fnKCm>nJm#*N`=dXWj?G|W|%#WXcbefJ3eew0QAo|-}T``AKvr1U(n<6z7HRWbK;6qNwUd@ zFMRmehflQzKJj6YzM1%$51%V$#>w##zx3fN^|)F3;oScE8*zm*u-v z_`!#t*r~+xcrmKN&)mK|5ARpGzumFbhn+rb^I^LWzxnXHB4KRol(@r(KYZ?Y@Hux! zDLK1*_|u2oKI~C1bjyR|-Rr|X1#^SGe9c__&5hc@KRz7r;a_gQ+-&8u=sDp-QXV>U zb@B6`-2Z*ZO34VhKj(ZX_>lLC?8O{+g?z4c;&b44-1EheIGVrz;23J%zVvhS`eGK&|2Q?iW?cf*(92CQ*Pj+{# zgX0{~IqhpX?yn`V`SA{FJE-fRj(k$-&F}v@?$06eVDUr;r#Yzaps|CK9GvX9XFVPA z^ladup@Uj-*hul8BK)EXr#fh&z8>_xh~3mda|g{d3dZ~`Kj-Y=c)6m(GugX?77kiD zILkpx$K5L!XEEnzt5_WAxem^klk+qLM$+0r8%4z?%mCxLkW~)aI=I+DI|mmz?rjg7 zGdY~K-hBS!xZ4YJ(!s%{4mvvSm5$xfLnjS^W;{DCcW|YH&Qu(9anRL^ik9r?3J2Yk zbNXRc>7l!Ws~q%j+;eA;l&c-|bPoO&1TXQ|IOyfzdZyPwUkBGZ=%enwuEKWS_Ee#t zgXP6_>7nGV)* zp{{Yo9zv4!4mQYuoHksp^hwX}sNXQRTnC>xc;CTC4nA=3p?aYi)5s>99DMA}X-Az_ zpE~%$!DkLW_jDR}=Kk+svrY&0!rhps$=43HIQYiFx5^2{?;L#ZxcB_bJeL7i$PW&F zW-A9jX%FF<$b%97;@~%)k9_^;V5>r6t8Hq_z}TGI#dZe?2Rj_>ckqXUor;IGyBz$f zEpE5^-J>mz`d$ZrOW!B_OW1P_{t@8@_^(L6HSUgdK<6?^k|(Kyl)_`)IM|HhA?Jyo z;|}jf-U0k5I57Xg-HgNMN#XOu@w=la=A7OFe#HF<`VsQGr#8>cuphVZ=HKrwq^OW2 zrrKY)|NC*6AM{rAz>FQ?M;$+o^y3&mj`HJZzq_H0(45j?O+SuR3`P6n{HW!}R&M@6 zinaaj^@vJcKThGqPbS+W6fcieZnuf-~j|<+-h}o$w;z#lrT&OZ*t9X=MUC z`f;iM;6B#LkIOuMxkzU}y7( zxSE62T=W!PBkbjO?ksnL_SnS73e!S?%5-)Fb&f1s#?rjpi-N5Jne!S+#tDXUyzwXB}o(o#B zZ)%!;kuf(zHYxR^+>hmctn{PIj}`+j`j$A@0< z_pCYiOn|LE_Tv+;-%sWIGe5rY<8x)HxRZaWJZu&+Jc?iY@s}Up`0+i5@5gr%)j~ZyMp1sA6SDO ze(dt&55N2CIy;3^*0|^FZZ2j&_W1FqR>E|NGj+qTPYS*L?ZhiKLbqJf@c@ntpoUrs+AXeR%s3Y!FQnh1Mr8o=x|Zr42M_VfVGklW%VgJO#S+5~V`0A~l# zGJsYA_pD^DIC1QV!#^j0a|2+HJkAT?eDT)8d23w#f&kibfZYEz1a7450`9Ws(&9dF zaR8SE&^~~U6a(lGaIedB&aT<^(f~RIFuLemJzgF_7d7u3IQSZ{E8QxeY{;3S=WYS? z4B*NDt_q-g06o<2gWjFY)f#(OrTUrxdI#J^*o&jkEMFTy9|og+l{xGiK)(P625?;f z0|K}{fc^nIy9Pto;j+XA>bfMEd)31FzQ zSIian-di}>02Zp>7nIf80~is&9RUoNpa0e&LQ19;K1SrWiY9)CH2r5;Z!wpSI&YXQ72@`jLcz8S!> z07_LX5pve3FApH2hARSC7r@E@)&#IBfT{q>i=G4S9!SfI04hCR+?|MPd0uFRGm~7X zTzJ(1ydA*$05)g^vLV+Ym+{5`-U+y`af+93E`av}*b%_{0er|^h#vt}RGi$8xcCFu z6u{R3d>p_R0elj`X90Z5(_CE;KM&xiLZPtE#V-TctRj2=D&Rh#wrYf`@l62V2k@;< zhwp@}q79END*hmxz|Vhbq(29+P3Pb*0sI=kR`FOhj;Kb>YW$|+?*VKNpmsG*tVY9X z_k{f;fPDe%3}Ba*7Wbps|M{}k>OGDYnAuK@m58hLhe88d1Ba(fS8e*g)EaX?7p zWB@5|rr3~sR3?CY0NDU?+A-J{_bx7y0yp`fyUAP7eT$bl_X$ayAevO8S+y(DG8n`W zL4<;+5kxqMw|M^_bT_DI(A~jeLXvn8XH?^?Y8)2C;c~^c^v~{&4B}`hM+FbQzBnd` znn8EZDc1lw-NyxSQV_L*I6)4N52AL^JvHhC-IJF`U6Fe7!{UiS)MrQ9(3lg3dU6mA z)ucht-Md)TD2P)u#$o*YXAsSTI5p_La^cY=h|_{-su*bLZuQk@9z=^EPM6IYL7W-H zh1Cb`FXhmrw-k1kes&OTf;fjE1#xcBy+kh5bKvu76Lha`jK7$}3xa4zZ$Y#Ty4NP2 z1)LhzUKGT|K|G`d&usMOFXN|_4g6>`AWkFo7L3IwIYY<(; zyH&eW=^jB`Dc&uJ9^^rEmjRv7Kb>3^#MKRd6Hw4i) zi0gys7sPeS6+JMw98~`x252l)SY%)WgSe4%6vSY;Ep|aati4HX_wwO?5WHgLyMnkch>=0ut*TK$^r^-by#Ej4-XQvG z?1Q{)j1FRqTCq9%9jk>gE{F+1j8}8!+bSjI$#qgrlAw#M~fe1Tj;S$QgVh=)Q9?%j@OIAZ7*+ z5G#Wy3t|P=t(1w?cvxgr5RX)2QZ-g9yb57u5LL`uH6E*Wr?r?LM)H=IzTMHjB?y?bktk7sNL~e5=*V9(n!}zYk)IP7U&IQhp5Lw;+BB;@2R4W}gg^+vkh>MIwm7GlV)J92>&%AsiP%tq`8qT+krEhd&HJ#=Owi4Y}KCy%0aX>sHaA zTwT`>p&dW}6GDR!PFC-%VgL<8I6Z_$A@>q?N(fCuXdFV55KfiC{g(P^;>8WBnRs&{ zt0Km>I&< z5FQU?4^+VXp8#N5MB-8 z6?tF`ymk{gHLueZXC#DWiu}!xd+WvEOF}4B%zO)exwo8*>VkJHBZNeG)m_>?CMhp zTu32&9l|%>ylj*WSMPUpBEBVrzeD&TgdN<7Lf9I@PnwIL727YuUxl0<2DweOziIRQ zUASFHpRD~Ogug=ADVtp({29V-b-hRUbG5sSnfARZ?h{feuFro$_*aqB)&39;gxq^z zjwlgAE`+3FNQICQNvoC(d1OQQP3t7Ds)EqMK-k?Rx2tMrHJmUaVfe!cg%JoN7G_i9Oc9au!rt42aY+~#gmGc`V6<%&1GCXi znYk#8i^FIi2G?Zm^=_8xtVajAD(3l8@-RAu(K(FE!nj<~(m(S<>=H)Tu)D9)_#r7* zgwZ{WZed&*cAq%Wrnu|&2;(X*!lLJ%VGIc4nlP>lqZfy%bkY7=MM(dBWZzfVPgrj~ zt`DQX7sCzme?u69!x+c`YDDzFffH}!q$pkF6Qv9ZV|*Ax!x$UJurTfj;}$J2uCZH1 zZWG=vJY_wGhjC9BBf=OJ#+_kzL%u7Fk({{oXt^Heu6L70@orU--y6ml@%zFUEz)|u z+lt5i$}q{eFc?fR0~5lS8pZ=*JQ#N0_vHJ?4}~#_1{y3g@UX}uoWb>Ix87aVlf!sa z;uO!O!+J~$<1ufYa0WTv>0vw-#thG9W*AS1&kAFX$dh5r_G&L(kGbOWgq_vV)8g}m z&u}av&xWxejOWA`3a^y$^WxWtFA`rYd{Nj-iF!#Hcv-kq_=@mV;cG%p95eGq7;kEd z$(Myu62^)!N~J9K^fHm_)?=lotO}!CeBgTAydD+emBOkps>4|0S*{g%OSn#Wt4_N0 z;v2$vJB)Y3*ciq;oPAY|622z`Mm2Ul2J;hQ{Cb+!>PNy&!jHrFI*d=k_&n@>a`MwK zKI2N`m;Gh`MHrh^{4(tRKpaKdd?n6V`$itV6<*K%pOdKBTq67-jBWDyV;Db)u{j>9dI2)hYQ7kw3!NDY8qrTewF^8!n-BYP(O7{3R?ZbW5K_q~-oF z4)C1fgobdVJN_#^H<$sRw~7s|*( zQo=$OBO*~DPl|ZNy=AQ-JWP0s?x~ItXVsAr93_6Vr_7T<%?OV5l;cEd3E8~1NF8Ba zVLc(e)#dXaFOvEZoaAxt01af*(6i*mLiP z(4c73LdCO$ErrF=oh?oe=Xm0Ia(ljzZCi`%;PZbOTv3=$bEWB@mb-0am35g8i6ziM@hinn^Tw~5>?WZU5) zBfQ#$YC?Uam*G(&cYArhH-h^kxKG8=5sdM4P61num7j6K@exe$YFWiG7Hvo#ieRGG zi2A+&d*&KJF>gMP>+R3VF{qOXNx6Y$2P>5xI%q;uLwx z)1QuDzWBjq%$EQW_p{RrglyP`9|4Vk_`L81;UeK;;fum0!utHVIX(i4fG73R2woA{ z=YG$<@EX^=PWIO$cq4*0RmG2<(sEe@Ogp#1Qi;nWSQSB81S`BIE2S5k6U$Xx9dS1$ zHm{6eLj+Y3tczex1aC#KHsXFMfWdRCxkFo7H5Zl0dJ%3rZ%6P>#NFXH${Uq;BlsYK z_ab;-TNc|Ew{DUTWy9j82sTIXaRgsR@Cn5TK8@hBh`Wd1qkW9{Ma12i*=mXQH&%TW z!Pn}G(H6t_Hi91`_)eMsK7t=awg~x&cODF$$4^pz_ViyP_&tKH5&R}^+Y}Ye=##N+ zm)QyDkchZH zx=YW+9!b&>uaFAagHdmW)!D2kZu z!%=r$B2h%6?yRwvW^q-qZH*`nQ$u!CYNH;nAw42WGye6godP>W-0OEh)!G zQ7`JwTJ0$6L{V3Pv9Dqtm?8#zqAcr2agySv6N>b}ej7y5Fp5SBk2=F++s3j#RYFPGZ!Tomr$=#yIBU61T13$*inFA&jJm6rIz96^JBo9nI9IONH6uJvW(>Zy zNE_h=QCuj(NZ6KLv{TrOnak;7HK*7h2s?WErBQSe=LSNv%ZuEr?IP0EGq@s( z?oo7$x-Vz06mrKP?;(Cw)P11Gg9;ClYofR|ieA!t%ZB3fy!nr!uUDjHKN*l*AH{$u z`u~4^21ebjauAn?2rXH>(c?GEeu!}BA#HCFzx9xg*!%5VBvIU{s^L+LIHdNjC`Nik zT8@gk&mW3?-6Nfy^0+UG(NT=?dZ$7g-u#b^x-SQKpD;e^zIK=(d_Y*#f8qYGnW8<9 zhvoB;sQW6L#mOob`4n-Aym8`#5nd?w3LlTUFB7ImF*Ax8Q4HnNNcZ?r0&F(>LimZ1TW$2_k5DDIbWQJgP>XCyuw#eygnM%|asKdL+8xg0VV zAqOa2BwQ?HY}A)T@sf(#T#7GQM|6Oi`irRByUEs%oC}UDw)NqGI8dg z#g*c#4yj#z2xopO)mK#%YrKrD6=8GMu8X4DE3S`XgZSH?LIWP}sK~UxCqm_Ykq?9) z3X98NlLDr}ClWsuviO+@qvgROk1wTcj^ZoN=4-DlYroYRpz-$-Nw!4sgDijaTowKN zOiL-n;cOM(=GpwF=D$a=-BZ}=50CFu?JnW&DE4?dZT5P6Ulf0N{BK#Z_FrX~bF@E- z10GLAk@PqpcBP~4BQM$%F{`Rv6!|DD=ANnr&ww0KXz9eLuwJj zg)y8J!?`iEjG>iRb#@Hr9O9Oi=f%)k%K4t&CWZ?<`{L-@#?T>#b}_V%;i4EW_AHCF zjOP+h=@`RhF0J!0q*LpRlSjp2VWT;cUq92fCQDcwB}RIZBQ>KJ;( z&@+Z>JiX|d*xOV3h|s>TNI&6qhxqR=Wq|Mo;lLOMi4=RkF@_;3-W0>lhv-8O;k3L( z#ao59#c;bwF`nU`*j1t}*!#$qPhWCk&7LJKwoXGvcu|nF67nvY@Kv;~K z_)rWJHOz;-!P1_`Bo!ye@Tlj6##66^` zlxM>(=1X}-_^fb23=2gV6%C%3@e9I5!o^;58Z3$7^%!1?;T1J`IfkVoY*=jms*109 z4&R7jc?@sHP!hwkLo7?>v)H7}Gp3W3F;vE|DuxP)3EhY!okgc=r(geheS0_<`_4;YY$vp0`g_WT&5sd?x(dtEK*>l+D7ggkQ(- zjYzS_;z-HASF0^v+aG1~Qw+aI`PtJC9qBgN{N{Q4J%;Tb-{INsl(I{>Te!!wVb^=b z_X+><^uJ^HCx(B$;(ob0;1${GznD|1O2?29VQg8i-@IpEkYaK7TJT?6Cyu6Z_~SS} zjzAno#1V`m8b?TGv|Ebd-7Y6vOvINak$#!*xDN5yfp$T33N6azjs zj^m`%5*EeUahw=O9VvA^`+6cLc%JLW(J+payxNoFXdqtn&?t^mRXj!5*sE$Ha++6U z7|r5nA4l^z&X42tIL?maj5yAU<4oDKIK+~kTgK7q5ak?kIypCv^A6El$I({BHgR0w z*<5&tK|Aq_;<(tWrSnVT=oUwZI4+B$qx4I?+D_i6FOQ>Z9G#_i5f;bG82%T>6^AHS z#?ec~?s4>p}9CEVNAHt~&k7I zxj5Fc7{{_WUWnr*RV@-Oj^o8RmUyEpM*eafuc~%w9IuEJ_1EHfBaYXl6eD@_klKo24)h>^tERGeP=c4`pk#!|tR*vu6ok}$4%$%7ybM|xQY*SK_Hqoj@lr5sNri7Bc zMN}x!q9~HG6-s2^3MnO$kVFfzM9Gqb64L+v?suMk$MwIi@4B!1xu5%e-sOA0@0|J0 znVDCL@Tv?8i?GO?EdE*%7At(+{I16(MfkV~ON+3o2yYhQEqRs|VY!I&tSG|DBD`IM zcdV`J>)is+dqw!52&<(q`@W?SJv5%zjyfuT1}1a-dZ$g|&UvKT6c`A?(AUK9u-ym=8W5>dH{`-&THw#U=)P2#S~bQ07Cq=?8kL zkP@<9B0eOgM16>f#C=FumIG$Pln)snDwRzOoleXu%n9kN@}ad4^?Yb3rM~cRVFTe2 zR=JT6&3!o1hogOHtkh9HG!bz_b=Xu&Gi%kthgLqcl*rzXG5@h5$I0dzw(+5>4{fEl z^P!^;?R_}jhYr^EKrfwq=pwPR^}@<0NTKIMA5Qn-Bp*(e(#?nNmZFWvDL$O)!)eym zmF*$V89wwBIkTY2S?28J!@1IX`_M<^93gA6$a%)k_u&HLu6SP`E;6N`5B;b`Ga zLN_~yV|=*Php{T?#y_rr-|oXCh2wpgATm+t+TP*Aojy!9Wr~O^a+eQNeVAs76Yufi zJ|Ct_yw_UIFwaa=X8CZxaW;I=hj~6c$grB?ayp2%t;A9gYI0j~=_|MB4?ku^T=DL0>) zP+aTt9*UBzGs5sw@%6$D1v+iacINwkpZ6t0k}p`whs`ScrSL1Edk)42P~Z5lMG85a zf2V3&h1-NI=pG(!SNMbQN8wLuNW%^v_W1CN54(KcH%4{}f92BYYw*7*{9X8mke=Nl zH2mqqUgOmN692nE+2_N*Dz)DVvK9Y=+rfU+@O$04UTTWh@}qWv$W$GLv>hsPm}QIn z2>87xkUl^BA~Y9^lvr5mN6?Qlzc&#c<))KYh==?LE6X|*JM#Iz-}^pWOc)m?g#49| zl;8Wftx}j4GR*kBhub7MKMwaJ@AqD|s{E+O+35~eUkXKr4g5GlAvuqR#*g%)g&&Rm zINFb+)UX#H0r|ae0nygfkLG?fGc!xMYAvmcWBh1U(93bgTl>+*IP0|Y<3vB&`_b8t z4t{j<<9JT3psX7ei+Azk1k<}3p?;DdC;QP&N_Xp>t(ZDR;;Cjn-H&tp=;23CKhBUy z&zY7zi&GOn+mzmZ^f68+Yo6=J1%8|-k;?hj-G!#~E%5jAqrVInTXul?FZJUpKQ8lQ zkWvG!)#ZL%;m2U}yIEXmt*$ox8b7Wz?mR>M7;4HeKZYB3*%1nF5Z)-HK1yXr3vaS6 zsNdrEZVqFFV}+b4m2u*?32zsU7fukm%XyOc9e&&;GTDzQB6kY;U0Q^`Wg`CRM;?D@56+S0?N?E=ZaGWpt@si*By%qOj zL1e>Mw89+fB0pZ$1bOkgdm{~;%VO?!{{EM6iIAnJyeYm+$gmbKfAz?kD@5M*;~i7J zR;L^)=eSBsM?&Xn8QvFuApB6s@i6<5_*&t|1^Op`e5#P1^?qy+=TO;dlOLNEe&)yL z=J`T|V{m2J>MN)C@r`-5h_DE=T!F0$w+X*D&vp^kq31_Gelq=MksU&Iu~Xz%KYkb4 zCH&2@Z2O1!Zh!S_9F;${Nl5-uisWyRfBe`d;yR_y`Ue%Gb}>-w?fe?Ws9B7I#og>` ziF30t%j1w@?`}+TsPw~%;V(vA@uFh*tf6aLT#V9U?-pGm3<#Mjldas$tX3f&5{8Qr z6^Y32`i&KP{}7Nop;WRM*Bko1IO8na#(3Lev=eV{3csRxym&`b zIu)a{IIkdfeS+y-MNTZnNv7~3>Mnk=@D$;x!qbFo&Xe9l{0!llruP(?tuD?kMlaKQ zi}We>-V(UgI9JMf#W-Jt@3owMp~AjGcf;%_-oF?Zi_kW}&L-z_DM!waJB0&vD_Pc1SA|MWbxaT9WR_9oLG!IL?#Kj&OGRxqPgEGyvx>Ms;;1E#kgC_JwkU) zIh;}K{XEX&K9QNlm}ScSB3zRPi@kR>4+-fc_nIg>NBD^FQ8Ua{I8XR^F`f{aFJ#*% zjktcFQuuT+o+;3u6MtU#g78J*OTw3}BR7(T5*GMO02wmBC#8(#MJ&|{dv8o`;`m2laz7*HjhvI959|_kAUA1+^_@Wq}6yvjEd@6l? zF*X%rgZRe(&WKGuFKD~DAp2FZ_uBonkmQ?UY!T<#WXR(?gB^s|1j1R;jf8FF#LW@Z=_kCh-U!XXXdOF)VDn!@@t zq@-7tAT5yw_L42}uArPSFJxFHLIZhy8zINgKqKdSzlJh2Qh210*~TT_-~Q!&yGaR} zmf&dV8#Q=lS&DDKnwNmcA+^*Pj?s`9wz44|SAy26!&$enY+EU;z&hi!)Gj4BvBbL*u%FP4@M2ZtE*((f zz45!G1edBT*N{a9sshg=t6g4#s}v3{!4;Z5#VfT{IJ>LWicM(dajl%xho~AKc#}k~D(l=*f-zRpRk*bT<78v@Hf<7;@uo}= z;VGjysRVbF;7%!%OE5)sI18qnVXDqD!)fxc{ymx?=QX_q_i9U!&nT(>D;(rARfN;I zU*rKHbt(@Tf0(1vG~G^kqy+Pndb9+Ospeem1h!(=M6MfgzC3L5qz1D<6N>GS6!&^15~ci!at{vlaQ05-csjaw%_? zV40e5cpMc+NL*2Zca(iwE6=V86}%pn!L`5FvFc!~Pzr4NV0;tkZ^FkUH=`T^# zmxt9351>H+M<~m(oH#`ujRH6_;Jw6L#-<4z5d|B-z zDc#hZ6XYtf!pQ-gBIQ&odzuKxz-*6z_iahGJyTs%VZT()3gB#Y)JvUmI@I}mpijWN z7oDS1K*Ak+o+d@Z1uA=Cz`L=tAXkG;E()NZrccgA@QTYnN8u#_T&h-=sTUeJszCu< z$*u#qB7ng%vlZv)DzNfZDoE!w0SuMlTH$p846!+~{;&W>1Tb6*TU~D{at@o-ZVX_g z`WA5+8TLKtkt>~vtyfuJvT4!>u@a+LilxKVZ6GYgSbDyL^l5`a7I$`@4d8i=^En|) zxj8cXVgN4%@UnCc@0Eb}$82d>s0v)YS2eHK)XVF#xthc`IFSI}l(0Nd3& zSBz^#{88ag0qh8PpMd-{5M^X6lwTFr+Bv%h8)J90qnIE_)Epv zFOPq;lKTSqSAz8l~R9W^o>Fzk^G?SA?3>`Tk!>Lj4eV>X?(_VWr-Uoek?s zEK=wz^B_+QjbM zqLHwdl=YP^^?C{d+TQmpBhEy7sdcXeGNJw&| zNMj+ZHPO`A>CvU$IU?Z_HPb>h*MJ$eEJZ68SA7;_UW z5$YWC@fveSVJ9`D&ZA2yPEbc(g(nL65eZY>G>q;-4wVWQ>J%ABPE!#M?{pb@XyRum zOLNasoUIw1C3JmJ=h0ivKEiWsxz1C=^W7lT7pHllrrB4>3T)d?{{BKL18ns!5xKM! zm)X>~lJpOf^K$d^6kkz_D@(msVIHhNyt)+E6e!neBwR^0A6km*b$*AHVz`R%oKh!_ zP)8&;%0E&#N;q1`FVD07&EgBidG^QXypI*$suacBjL<*6)O*#NAcbUNDJF?C#c;Ct z6jLtVzyB@`W2!KxUN~`@?~yWHNQKj!q0Qj-B+uGRowZq|xL@P};e$fA2_IH3vrF*^ z&!DammgRZp@u-D!OYvkW=9OZ;7VvR3VP8)atmgvbPg(XEk!Q7@T+HW6@w{;^`-{r< z;-7#nt^Qn$&{kPeilwqqbe?5e)#asFS&Fwx@pdUz zNO7zBjyRXMofi3Bg{#c4TBW#dG_%?Vwj0UUl;WdOtdp`<_;Eq@lLF4R8%nWJ+nb!% z<0j)g7oTg{zYuN~ekr7r*#pR}vZWN?YCPoMX%}r3(&J{jy%ayH-yiudVI$mEiv6YDKehQ+NS&OB zGCemCF5^o;8EP75wsx6!_dY}lNu4qrDutX`x8_C4as&9v;1@48g`Pke%F9qHg<)Bl zK5pRi9}#Y+iZXr)lt`s8Eo7EQR!wrIR4J^du)a7w?12c);pEsq_h^c5w;bwqxK>lgvXo6 zCY_9TE<+cUIzf0~Y$ulCq%w3bLpO7JUGufc`aMp7zgXUfK>Lp?>l)(!LQ zGW23uaVmYvs-H!lBf=AXo+;;>a$%YG9-y!AA|bCDD*e^t#litX4v*X8(lQJx^L_@o zOyWRi@v(LC`j9*3Lh)O zT+=yI7J1x4@+Wi>pA;?-J|%ow_>AybAzv(bi+f)D1>uXrmxM11UlA@8IzM;gt7Uji z8|-x{9qx6{gbNwT!tMYU-SF_Mp&PQU(2vd{@)5({h_OM zw_US)ME(@+)p&R<|E=&J;XdKN!u@49sN7pXo(P^V?>1iUUHbzyNH(~ zTkhRz66HviBVCSEIV#JmpJrUFvYCP~Cv(0WRU$O-sAq=5%Wwt{1H)s=(N8^5; z3(NWP{lD-8VOQaa!jpvEgxoVcPA>O8p*}^(w;w+K2vF|*7r)bmJ%ncn&lL6)o+bQ) z&;Ql1w~%%El;a$6{su9_^Tf}$EC+cZS6HdO1vdBR6#8>U=H$*{bLuWdepxvNT6T~K zt5F{;enmO1v@GklSBlwd%B%l$0Qq$?3@OJ@a}E<(pjlt98I2I$AiPmHQaDODTF6=7 ztcJG;$5=J?dnBL#aI5eoKzN(*cHwy81mQ#>hjfS9&d_M5h~Fu^%WBS1YMR2k%e}u? z#a29~OSxA#LwKKMXDOuT{&GAZ{-Dq;`@`j!Q;ylXn&{z`#lzKnRJO;2bA|JSj|=Au zpAa@tlLh5?svJ+-34O*0J9@4hFPG!_a=a+<1+}97l0r9m*>Tw9KHGJGs_BmBhrUC-(B{l9Rda8o%xlao4Y62B$3iNz$o*#@b^;0?iD96v`*eP*`@E2?NYdL1=-oN8LDCpfT_ysCrjUWzI$W>)X ztQAC^AZiD3NYML*bSDxIki&wg8-zcIA~p004`hpjC z5RHT0m*@`6v`G-ngE(3>DK-tFnQ_`$1ktj(yjoS`v1#OMFgdkUH2J&<^| z!d}AOLG-b#yTH#?c%INH7ud+zwr>y@75Mv$Uo0F@pkErq)j?bq#N`qP3J2*F@b6#@ z4&urnt_XVnd6@^x60cH7eoYWVg5Fz*YlFB>gd*oc9I86Q3Qi>(jtGL;8-f@u{l*|h z1~Dq=-F(=D2QQGDg1AL(Zx&KHU8%7_ObX)GASMJcE{NNey-mo<;|oSOQ6j6c>>c8h z)!mdJ?zHi^E3v;SPm_l)Qf>^6Ob_B-t1}~r`;2p)XBF@V#NFbvIbTdmREMW;b`W!d z-oJ2tM0gV)d-D6A)^@JQydWMAV!rqQeVc+so;1&bAf7V*v4lWW_c`^!l^CfN5DGK zBq^m<2C*uLcdZv!@Vy{b2l0W#_j%9JU*zCEAz2f|x*$F>|JtDU7WZR?C-2|?Nf4g~ z!OF8$+*R8U#Ks^t$>WsIg81CFI+e|~_t*tT>+tI!zEP7c!f%Dl(!Vu`AA{H?Wf|}P zL2M7=2ZhY?Z|2a(<0mOU2eHFa6n6%(hZhCk{|k2se-r*L{3D3n^3y~ApW=Ikf5|}6 zrTz(GpY(r))ZOe3s_aJSX3Y_>~rJKU;!jmhi z|E}Gs=HXr9bnza-GfY3T!uxrOWqF(>@oXXQZ@nwf$Fe-*=h%{-C&T#_xTpdbRG_cI z3(dJrBkWh<{moU@>|f#ioiUODu51Mcid}Z_GZ50?_f!oEMe}eeL3QVf-{&1G-*9~BD1*Rx_r;uH{?9>WOlfsbeOuVN8 z(@nWoWC=g~6`5)JERp+#oc@Cqcv$=);rU!c5mqB7K2m{4EyZwd1s<=!yaLbs0{*0N zH>sx-K3#!lM4m0kJ}=%+T@2?SMP91F%jS7SWTEYrS51Gd0pk1T77KJbt0cs!0E2- z28kPmo6PA}=JN`CVanzT?{B8LCSSSv3Mp<8`BummcedSHz@6f-wJIDYWT~H2{Ab|~ z;V%{53p!K3R(MZhcQLHMZ{iexmxuapDI|L=MZUKJf0<4*kAEt#uLA$76~9iuzruSg za8Ss*`Sak5U=8tuO{pou@z)OFun-P0y^hGCq3YXgUDLPn{x9wiArJx!7Kcz`S@y+J zr6H6_VV0c+L#R;5RLGo6MZ}{aBtnRZ$1Ter#*^YHQ`nZJ(h4)`mtoGbc~dCXlUQGP zxUhkcFEuiSW`8F0&MEgTzTL4`FZ!S6GV0DH5*=;c7L!Mo8sa zk;(l2r^ry@Fin5B@Ot40;SEBza{FXtsQT|2j#eutI&_{fAxsEitXkbF94EX@c)M`C z@IcLpDmBRpP7Yy;8R)q)gu9fQY6gmThcG9EdqTKBgy|vN7s9>VV+E}^q?sYivL`kalERk@JPVD#8p2{_UlYDAWKFgr@>nA0Qq!p{3t@Q(E2O+-b?ATFJmf2l zyHZr%ld@X)zVL(pdOiwattqbebt>*Ed>X>%A*{FVHpsbAxJmd~LEA4v*c`$)A$%$E zE0?mit{{=ew*{>jZY%I?58;RZW;v>#r2K69FY@mc{u;t>A?&gg&A(f?HJF@`N?v3D zZ~h|n&CG@k!e}n>2w}r88imm$j3dL|-M+E#C?V^(`~T4jn+ls*s)d@j45NJ*$Ar;3 zj8;k=D?H9@u0k7yZH4VD)gg?|VH~fpqp*{uT&pe$PY`ys)Jf{MTNo#cbQf}_rx$MGmZi@6_bQwb_TKCxD73f~kmTo(2|(c>eUx59Wgj1|(~7QPe4 zN|9sik;^J;nlI$v9LATn8r479h4F0|--NM6^WsimD>uRK)Wp@<7RL7q-Lo=!eo*+M zc@F#(N&hbr>Dej5YP&>!Go8vGVf-1!?lAU*y{|{o?E2j+kL&dBF!qJ3%u*gkP%q*=H)hC#T^t_45fLbkCvQBI4bM*!-9Xj#a9akUwV~7eSi{T3dw)8bDi(hYj0D&?SNn${rsmB6v#VK3lP8B6wB`yI}9nN3bY@7b19B;)}wU3Rd_P zDGP;eo4p#rYY{AtU@kxZMUI z^UZ$*@9Ns&c--Q@7r}=Std`;Z2tKg!xKpr3I!k?Icdd^j*c`z+-b^C+B!cx3d@7F{ zFr6DB-gjC^HbwAx1fN-j0sM%^IE(W}@nr;GnesKwYPBVT9T9vR!S)Egi(s1!TZQfn zelN~l{X+ylMew6l-~fI$&guVRd}jo|MzBkvt8fh8|3|PVf2YLQ51nFd{Gof;a8S^pIVhDbSJbliZaV`CkLa5Dy)bi6h$~%{ffi3k!bZh zgjf_QdE!wdqDYE!0`=xmbcmuw6vsu;GKyAF9AmBMIW~$OHqO>j zv{kB2wEC%gyC~Y*eBEcw$4Aj6ijGlqma~)aC980PRqiUnEqYQEr-*kGb{C!;_3n7= z{Z#fY<+LbH7vZF4@Q*)>pBY6@IXMw`YR-;&-?#4-#ko=R)^hcU;v5^Hvz@25dqp^}88*k6QOt{CRur?NxIc;qWq2U!eS*n`4@L2? z6rMgFyw>JK@hEp7UjnSuV^PeF!i}FEwt8Ht`9g+Ih;Sqe?3B^=v}K=(;#uR*nSrfd zh~mX4URLTQcA?7DUx~uKnlFlCsj{yMUlYDATpYz4QSSr3B|^3$e^aStLWawuc+2<- zv(fpE#FfH#qgW+E-ED@|QM@0;8i^l7@u6jF+7734Z4@6z@u^blgr5j`$*dRIAlxY2 zWGOcMJc_TP_(IC&D83ZoS#w>}@U@h0gj;wgv^DvT>o2jdl<&p2NAZiu4^jN6)BTh1 zXWus;gKa8RuJ z`9F1LYs7GH3^gUXZBv`i|IKqq40Xi0NoYPyylxC7F%-q%kHJ@vrJ*>67Fzs33}s4{ z#=JW`SG!yxJ-jVf#1K~)iXj|BG=@m5dXw`$5L0TdS|wtrRG5r;*IFv(y+*jfq@`!r zR%6S>aAXYm7!GHTG1OC*`@Fsg2f(fy#LzH?Bcw2NFK3Nn|NB(5vFbC$qe%=$$Ix8n zrZF_LR{U|5*%k_03f*{G#c*s4ZKNC*Lu>Od;OD>M97DU9ceS#42hKN!<6}4>hK@0G zj-iwJS*?rt-AKABJWZFeR}A> zUD@&07yT1sxI^J2o^f0G$x@~W?~GM{;xILad!U!>SnGHs?Drtc>AZolU;xx=ZgpWmj9P_eBQq z`=2pvjA2a->tgsQhP8GcKelQd^CvN^SG7--^=YUZbZ_BAHpTEo44+xU&qeqN`{o$F z693XtoC5vd#PCB5TVmK6!?)_?JK=2YoNX~|m;ZYqKf-nw+K=4)G5i$64w--ET}#zi z@E0j8{;S9?AyAi3jc^j-J%s17q;H;$q>isSIb;V0Vo-AOEodv|HKqe|l_Q>$`o z8;pCqXf8khl@g94CK3@wg}l|X$9UZPO~V8`QkaS(uWV%;={T}+WEArK1I_F@7x&)K zdP9xl@HpzlQC|kP?Ci9G!XspJVxu^YmUv_wjYW=%qlpNYg0on0akNm# z6b;9Sw~FJqIF2=)!)P5xTZL`n)j#93Q|R70c8H^E9LLAeIgXCfJH@>hIJf?++$D|^ z;@)Fnx1=Y^b5b1LMY_ekf5b-H$#I+#|KIyDuIg!VoE69Evh|4L%s9>vrW8=6jj$4%)Cv-dH_PF;g@$phP zX7(~Mj>&OMl5&TTr<>*}@#;rUT-&>(PmSZ=IHtvMkHWi!JNe~*BP=*0j+t@XC&kT_ zBCFjm=b;;X{f;@-0nS9!6NH-t+Hx_(o9Sscqn+^l_k z1Qf^Hx~04$q_Q&Z{nir6syIG~<301Q7J1*6{lhrc#jz%ikK_0#jXX(kiGAZ zj zJkk8FRJR1W|5rIBfm2O6O@!Z@V#6K@oMHNzB0Yuf<>PGeUJ3LTIdI<3N#I;5tiZK8 zU;F}7E=-`WxLaYi>SsHI{9@ymBrq_6OBG&bA`OGYFBkGOQMp3=O5s&P_DlVm1coGV zt(5D86q$0_r|b^HJHz$Lju74;2ApfnJ*Epf; z>-GdDD;%G|gajsuPfS#Q=k^YT?yOA_zcYbp3EY*y)WrXOu5@p@?v{bC4$~93FM)d% zvg;WM?y>C)kn1Clgp;S&rxF1fEs+jL{Dza+v>t6wo?p~xbK{P0&~ zw#{g90&hrJB4o9tBAm{$1l~(vc>-@sc`JbxBHR_Uy_3MZ39K};yHZvu+{i!vCi1?J z<_|J3V~U zm{CZ=kOwE2PohB*RnqGvQD20Y=iy23#>*9^?T92AN~h8&={**v!BuFS^v)y00}8{Y zN$)>pH%p>L63x}{bS+EEq<3RyLt-oG#|o)T)!UUx{Nry@+9uInq@9N0`syHMEic$4 zP7v>uMCT;B(5$j;gk6<7QOLdb3!nca(IbiONt~L*$w{1&^uFEkklwDu`2IhM)49l6 zAJ*x|=l@CcOyW#cIIvb{CB4tzITGjTokSn?+d%(hmikr7o|i}(Jn2dAH?yANp9qlu z$|SDR`m-(X-mHI35<`->Hi_$0oG&+D$~iRY-7sn6>J3j~L=xAVLj8s$Zd5p$4^H{L zH91EmFM$@(CEajAmN!%f2Qh`2M ze5Qs?=UqwMo5a*4?nz==5_c=hbL7@xx|3!Ewq4|R(K1t%kB-SReCW()d-tTg5)o*jN z!pBLhlS0me1NfAiKZ*58Y|wa|$N_Ik;xld@*@!ISX5kFPFV!h4e4WHMx@}VAu_ft! zz(Mkz3|o`fp2W5!zAx~w)ep+j)|OxXOk!seKPT}^5<8^3Q^_pJuTplIpUUqAe7E=> zA*auq{9avjeqD%O^6nlaHB+dQ@;*7Ll|pS9 z4l$c6!qj0>>I#cwc18SB_;{o^g%a_ADXh$+%)(#_k(BrQ^%cU9Ff61knnGm?u@n+1 z#MOkN_x=AAQVQLBT8C+Cl}&lCUp#UtNG3hEmCNi!Z8JAHaRwhb}1Yuv9+*G3T^-Ep{>1?4k;X8km@APjyk8% z#W>AfQ#d(=6H_=zy+6nMzeslr>EUsTg*2R&^4^`EE@Xn6u;if6bTVN`*9Box+VNT$93(6s}dP>x6tcW_D-_*QYQnh2aue zjUu}nk-`m9c)jqTI8xy#A;Zx&i<$a-r zb%>Kvn4ZENDcqUDWVM|lbc4Aog=q?>ns|2#_lUa+wB4(a)n+)|oU>ARD24ki`+&%U zmVG#dM^cz=**Piiy&|hUYGWgxYuR}sj|<(>Jt6*N3JXLI%=hUOo=M^P6rPn{#ch+S z{;B^3DK833H2s%TcrArjq%2HfkqAq@YJ@*$y`I976c$T)!*ot|sW{1-HsIwctWM#r z6y8l?MGEimvf}sug|w~YP}M1MmCnU`){s5EuWBC%-O8^?;S+@)rLZ=IkHzU+XM{CB zO<`jS>s4n%LEBAsu0J#J3lTQiY^(8A3g1#R{Tq=jsp?OB==_d1Mv2>md?}~6UHk{( zkHVi)-rv=6>p4K4U!>E#GlgHp-EY19mckzjf9IZ;b9V}Vrm)BSbM>Pu8~$a=-y;8* z|KAj9RARrxgDSn7KZGQ%;K2%O3TstX_i~8BI>JMRhY8v0WPblg+%@-CqO=mlQcBDd zsI30^w@ga8kPX?qLY!xrJS-j&Muik(B7PYX;@ps2t5hW_6{b}@Bg_hO!n}}9cEqEe z!urC)g$;y92pb9;3E3&TXe@qIrML5&2#*#v6*dz#7t-Id5^XDSOr`hGtd;Os;c>#& z!Zt#h-HC2j>3yQnUf4l+ys)FNlhB#FRN^~Lza?J+G^!ITy$j(aVK-rS;mN{Ngl-n6 zX^Bp+^uAf$LwJVpOkq#qSwi}`O1)ISx3G`!9O1db^MvOM-PkVFr1}ak6801J7hWtJ zAf%s9ZZEC$p5I<394H(lyj(a~c!ki7|0=EU)xv9p*9xx_4iOF&($61ohF5xj82NhP z2;mLF8-*ic@NVHf!s$YqdGM_!{f^I6ce5&SzX(O1pa+dVWUESjw#1=)^DpwK z@G*1pjyKQv<0A8gPYB&^Tp<3G?Hty8rV`IedIUlua;N+lLn;SgN*fT7_kmSYC;@EAdvP_eOMukWO+Q?w$IG$Dtw`Evx#51 zR@U|#ku8<@wi4TT%~pDEp|=V-T95PjkHYOHQvb0MKULxnwf(sgJ4Ak|#I8#0)W-YO zwjVbtkKYvjZXzq}R+BxI__Gp!S7L9a_on(UA+zK>{!zHk#Ql{xH0|B|4-!IHBaMU8 zsGUa5w0FCxC8UR(#~}*qn0T0)Fk3f`B5_|DC29E6Uhl=i1HA_nmYPVtJdI!)Nj0nx zhSCV95lbVI_TIxsg>;hhh$~E(m`bCbT2-czP9v8_Chh&OmKCxUIgh-;DiiCg$>C`< zOrt^Cdzn5$NIyA`MhcHSAj;oFNYBwCP19(WM$0sst85D^?s_~%VJj1lQ$am^x44`9g*lq^qBMllPT)k+7ezf7<(O z}xIB%)>FRGP(r|_JE7Q1&J4&M^UX#YKG_FahQresk;e4}t!_wTl)@X+7+K(?d2|{#rM;J6a^fv%+?mFhG$y4nHjUerx>YzX zjoZ}Lndu*&#sp1gqD_jEy+fYK!YM+EG~XpYHI2K|n3k^oRhNzSrHJXu-YcYeM!Nc) zHu+46vxN5xAF!#p$7u9CEZv>oIpU89A5G)2f)t(e(s*17`FxQltgi(MpAtSTbOq^r zmSEBwZsTMC@taaT)sqxxQayE%VI<42hfjQMA!cBJu3L91WIcUi07 z()c}%Kg{6T?os%sdG^|xaI}A?@sE1hr|iGhkSQJqWq^$LLcpU&#@l-bXR6n;RtASE zRXc-2%u~m*uHU+*7iHiR_Y2)~h7!vLMA)RvlyZ@v&|Tvp@o)wa^F&2{*Vx#WM0WHZPWD&kDlD-aLQpn>VGVZ#g>Njb7WKdPXKvo+12MF!2R>*hvS zzoqyw*5p`)Y;~MSYtvmFhwU@ysB8z}@#bMQ8ahktlEDcg6uXM>O&~dslQP~twp#|> zGdNkCA{8Q=pPIpG@{^w~(!=VUnZfxP^vvL#49?1+m-MrRJQuw)=wr?;D#Z%tW^kTF zay~`B!1#qCeKm4^-Iv*ZQu=3bvB-c-^*wxsvX@G{EQ5g}^bZnQsO;bju26Vo23Lz* zCEUvUzY#XME`!k-49Q?b217F#uGFxM_Z2B-uUAOIb+{pekr~`5#odiZWxQ9+x$ez> z2DfH#a|UBFxJ919s=&5mEgWanZnOH#j?Z9%=@T=UWOL-HVRmu`Q!=_@J0OT44%v28S!U@uE*yycrk+)%zqYB z4Wqu03P;{Rh9iUxg^h$q3TbF8Gka_zLgnZznu<3Qy4ScC;w^>82wN3okISNG7Ok^5 zDT_8)bWp0Tu${2Iki8tAMdvI!s&|H+Y#3d#=$gd|7BY3BHQ|uDWpS#)?lPR5#VOh9 zUn@9<5C5|`GmF!+I3tT5GEihI79sNB4mm4}OR_jSi;J@8mBo2k^v>d(Ec#@tAK7tl zpPTi*THx*j=Vx)D!V7E|tk&0t$C~}J=%2;K%JS9F(oT*A33% zt}L#|VpJAaW-&aAtFpLOwyU$a#l-?#bfbET-GiaT#Z1y@z8YtTt1n z7?R(g#Y5a1{1;$ZJXqj=*bP|dT0N4*yeuBg;xUPA!sc_uxiXK7%+KOUt;rJ#BlkRklT#|`21gfZk6Rm-eO-GJjefb7Vk)3DWt-EyDEz>vUo3x4-09SZ5PqwNJBHZy{3~v-muVO)`IGO=#o6OJH*r-(~To z^sj_pXR#%VZ*+p_;hKLd-7WrB=i!Ygi|@1eA&cz=&L0b$Z2NN-JF?g<@s})iX7QW& zuUYIW7~$^{{}6J(Y`7U(?59MU<|%Aque+Bx`hI3$O|5Y3@Hhe!^=96}mHg|e)`Bdk&!k~{mc9Foe$g$W@$O69y46p~6COeTkx zIb?GfFf&?<-4IUK8gDITXevd1<#w9BDw?tf1J z+H>{nIl%F5YB_Y4*hwMxIgc(}OpUo~4j1KcVh%lXI4Or7Idse66gj)Imx6Jgn#1Wi zoF>Jc7l$0i8SY zkUWq_%{*%4y%z$C2j{DAm<(&>Q9J*?yL}yb4i&O24R!MfC@ji*w>4iL{yd7sc{kuu zlCOT}Un*N!9_1qZX(%XCVIix9^JthyB#(M|MDxhx5z8YfLp+Z}!AMehR4U{p$s?Ty zkrlFe1-(9M+NJTZ^c@;E7vlk@1Nh7`NobbjRX|2$5WPR?1Mo=49-dgO72 z#AUqJ`20T)qB}?QoUK$ZVQ*odJkHJI9GyxUcyf7=oS(;_JTBlS$>Ty!Q0BhEi-i4z zv-t4e2wPnuPI74;U-Bg&kAYIiDPEq(5QT&DxFV0MIXga|$>S=C zMypzXr8Q#j{?L1cGy~mquPIP2t z9`DKUZXT-&va9oWU!fb%2dd1IxJKrW@>r`=%mIHaWu4Hi*r$1XpU3(J7XLd#ooVCq)d?U}7>hUXbc{oCPw&bxbk8kt%PU1#gHCwfLcrJKwI@|O3Gmjtg z*qO(VdHk$uKM7f3hml{b>tA`pS6{pG_$}}KsuBAl{*lLSg{;YAj~en~*(>swg)aM# z!hO7($-JMl=Ka6QLkMdK-FF*^H5Jwp)~>=KA}qz!q2@eHq^_{Y4F0O>PZNr(P*R0* zg#lryuuRA^6%?tkFjQ6jN)eF~6;^4q>^H73AxsKWW=M>NHfbe7im#d{U-Ssg{>^>HrR1hXf36Uu&rg? zZLPh+4njBCj#brvNuVBgAhog+Kg`G(M^dqm8?B zbaNHTY^RN>!dPW*6^;|Sxj)YL|5X?-g?vI4h!cgAgm(xh3%O7{_G?Fk@&0Te61k0Sp1DDEU~N`(wkLS zCdK`jz#?xcTv3I$|La_-kY{a`t`2v>uCBrw>F-zJ1M`1a^}pZ4TEGu~tMF+RK2~;} zc|NgOtT%<@*(knA_?hr?p&ROEakp*0693vEKLQZhBBc2{k*${9W_@j!@`Lb4%l;%X zMtf#Q6@F3Zdi>QqyR5?RQvNV~cNO*&`1hLrR~7y??n>=b_-_^ViyTz1`d;m_HR|DD zDK$;6CE~JN!#buPD&kI7-Fhf8-7Sk>VR1c_m>v-6tl5=`m)AqkvaVIA9>S(XM503X zW-MM0357}Xq(pdEPm5%PSz%7dUF1esRS)%~)EBzxG!Q?+oDJ)tk#T2eTn|T?(xhJX z9iBCtN^DjS%`MCEw={l?NGsv7LbpX**FzhHZH4WGtj6(oFn+xC(#e!@TCpzmaDtSs zrVrr#zaCDhhi;~HuZNSx-QZ6ZKdnGvUp*9_VZHQJc$Sb^*Ra?Bk#!}|HkR+#HdSQG z5GqB(J;OcoJl%T~QYk}&NJOO+A`;46qN1WgDH&3fA)-i`5=}~y21A30lBlSV|Ni!S zU%%7(ul23H_OqY;KJV~N=X~efb8VB3A~y&-32zjhbapWYKK!?Ow<6qZIp@W{UZJ_W zl-q=+iyq>4SSMGnX8~uE-U{z3LLU)xcu>E)2>qn=xBhzy4EKr;EW#k09b8oQciC)v zzeFCxLq&#J&+sCQu-pu9R1qF1P)1w+P!YyhK30VON38Ow$T;D69{HL(`+d9!Pe`0# zot(~-mOoX5r!Ai(VkSF9oTGiV2-Au%)q0*2dAjTmEA|STYX0nc8Y&X6k%CY`3LLSRfHeKcMHwDeiGj++$ZGt ze-`2Eg#9AFTK#|>Gd%~3a7g;^!asyO#h5y5{YOOp68lyoecUMHl#Ob2h2$!YQt@M?ehs@b$k7)#R+=LRA+|ca^KsGE0)Dm&jTD|EoX&?K1=+^pO@wCf7l@m( ztbCCjp;649^4JPq7m8i*EA$EP(s%-{vST}BoneuPFe=>5hyNl8A^S>-@O@m`^}i?Q z9933f&Wfe7 zg?27nZT-%g@W+2#xZZ{9TxkDaov991A-}HX8VfY?LvPw>1Qk7BYl9-6k)#uZPtv+;QjIp z5e^j&6PoM@@sYw&1-i+OE>Om(_*fyc54-Tlf4dte^LXK7!p94mPjF$P3r|aVQuvgR z-cxucSUtkq}@tgWs`u)J3p&a2yuCiZF z+bF{)!cT>pgcoWeo5fB2E#hAYw+g>>Id5~!b(J;0wu9W}!cQ)2cj0>%cDV4Z3p?fK zU7n9#>HJPBN%DgWKPt6Lcs;-K@4_Be*^>UYR_POwj3qQ-&-4x+1Kp|}h zTsY{$ZwgHphg|sGX3hBjbm1Qt4!iJ|^dok(9LC=+=L1<@?vA=}!i8fl94}a_e{G#| zZf9U{JJ=-JzQBev-c2wDoQ{2v#kk1@Uzo#i%#qF$BRX3`+ak><)hA|LpxKZ1U zn$j88ay#QWLv>h|TOD;x!U5EC<4id@Q<}L%4curb1IVS8%Td+z7c5 zv^8l6yAg9EVwI=}E5|KiciebdrQEpKjkFu3Ze-lZxsjEJ&)aDzahKg#%}d0*QcXD# zWiN5#QYp>cXzoS}yJ8#wA5gS(<8n7HlYyluUg1V7g{;P|DPHBqwQjU_qpcfltdpsB zZd{}AYOT+?_F>m`Tue9GD`m#e!Hte?@WV$|yTOf4b_}M+&bDS3J7(%#C3bT=SCyN! zcW#lwmF(`uZPsa~Op#6QaN|xnXDI9`KWEh2jeFg=%Z&kU^l_t~8-3llTL&9kahuHV z|G06F+xaKs?9S9=L#770F<3PRsTvO?_C>tkjgf8)abvg}L){o=$7bd`LLoVejB?`v z&4Se)bYrxR6YAzA!5B9lmU*m@BYDJ5VW66ilRn;!$3#pkmU_aC32sc3$c~;Ap>7OM zE1cxUWKPPBDLn8rooA#!>&8^8P=8+HG~o-v=|a`aey4XiJ0AT({y^5AR_+#a0c!G#_)@}P+a z=X%P1g5W%rYAod0biO4QSObe(B(X^75^^LS4~jkT+K@J%2T>3F9)vsyc$`aFP{ts*8}%D7t!Zv&VUl+)YUTEq1`S%EO7=CUUzC zdw6h%<@ERTpsxqLxI1|L7v3dgs*h~c@Alvx5Bjk$eNfw926Ao#Jh)djayA*{!7vX7 zYYg`Z?-vdc4i(bIQE?ltaD;HAaFp-?;e$e&AM)S{55{;f&V#X9v4@3^2p|3L8jkni zF^%VOp;^NT9z3mZqVP!%p0dR`j7c6m>%n9XrdW}kJ|ia&Ic^M}Q~10GGeo8dUl2|g zau>|BWR~{Diyq9j3M;(q!RsE(@nF6Ob2a8ygs%$c{dX1%6fP9LCS2sfVvqBY5NAZ> zw#0*_s{e-YO(FH~_~jq*w>4_0}w^1pqpR=7rJ_RG6khjl{J z*Ln{&sOI|xy?p4wrwTvv;A6XV8$I~Ma#q_U!)HQ<9NXs}eC@#&b@zpEtME(VS3=s% z8S#z6ZNlxs9m1W$Z-q2-`(9oA;K44DA3fM@JKZDllMQL!CryP z?xz0$d1gheXYXlgzbgb3p)rq3eBiGd2yo`UDaJ@_0`3To4n4| zfWshmqgmn2Ufkk!UMEnzRZ4dumD|<4hwu*JokFHeFTK3z?ZsUZIl?|7eZ9C_BjGOY zC#Ap8>~S_6;KjXO4Dn*1x9sJ_AQ=XGai3N0mtyXcLnRIq4i}CPjuf)s171Ar#e?c} zwD2L}7~xnUZDtK0QTV8EoN&DGG2!DvnkR4(yqM_4vl_{hUOeT+6fd6kf)kk}q;0aD z8pUU#Vg9r^5R7=UiM~cELQQ<_i}HslVpMQZE*1pE6u5^XpzLu?lw|w>K2NDO@I8F67`>c(KNdx7FP{ z!j-~R!qr0B%zCa>_^xoB@IB#r;RYeiA82?Vda=cekG%NQi;um|V}XsrPlU8l*`y`< zOt@J{@pBotfM2N2R^gYzuY_LOiU5wwo_{)nwB>pKpEIeXutn;@Q#})qL z#ZlEcW~*^7-2PQ~LRhXCC@y=)H&E~ODk!WdtR$=~JVkh_kVUE#qh>Lx68ZZ-!fL|m z!Wu%_nB`VW;Tgi(!aBmb!g@lQ>ldR@v2#CaAZ%ESvx;#}G0raj&$DzMC+8O9{9>FZ zTVo-`CdFm9unUUemUtl>7MDH7FOuRC@^JMO!(R-qDi;fVLZ-Ne0oh1`#Ryr>fkldu zDn?W_W5T#FAxsKsGiO9vVMdr0=7c4}QX$Pvi*ac&E>?Jnu$i#Au!Zns&6Wx;6J9R7 zLfA@prI6;<#kjT@Z4|Z@wi8}0yhdnhUZ>f$FGiabbZN=zWjN7$?dI;|j-YIkp+IlJMExb$EN7z?r zM$)es{WXSrgad?3ac2z_A7qumBKHZI9U?MRdwH1naGNsCiKB|~a4{Yz#zVz;P}$K! zruevkIHnk5tuk54BgJ@B%D4jkG4aQXF;V1+VoVS@S52N2H{U5@&1Jm)7i6atWSCX|)6}}>*b6zp#7vq3h zak&;){k3AeQH({!c)b{lC30uczoZyTt%o6-ys0iomK9^UN={Oz-@rnIS()-z_xCPsP|*jJ*Z^ zpNsK}LUTeH8^>cvAs*tz-;T=Yf2!eO;gN!xCi{<+qr!PwmgD087UM+0*+esZdiWzW zZMjwzeW)a*vXIItzOolrr}^*#um3(&_o1o})nqu`hiSU*5t*$ak%SFviJu{??L%Fk z^P;+rklB;3na}j0zB~_@TJVa<>m2AG|&oz1R|lejj2!1bkqfpbrrrLOz7;+|7Waszc7# zlW`xC3KK#qDIYT8X|>`6vkJ{jOMGbNL#Yp!_>h;OsSg+1)i5<#gy!Zxw6Og$q}bAj z)^c9v!{t6)>BAL1w31?)u=!OAxoDaHkkj`#C^zh+kAG-UTKSH@hc&iKyx!oq^b|L+D_|VgbI~B58 z4{g1C=q-hQdZ_pDp|219eYo3)ews^1>4i9e(~E&f9bA)q!c!iy+3*tN<7W*(?sRcaad{`*XhRiM!H|E#Hm-z68$WmK`&Nr=X zxesf(zkFEb!wMhX@!@Ty=;6*HuC&h8R$pW5yenm$59@t+&t}=R>HU2lHu>;@51(+U zefU_0kAyUA6fs?}mrt$!naF10=RRz)y7`LWRv*6i;Y;ogAHMS88y~*5gE5_M^Eod; z$#?khtq(iZob{b-0snzJ#fM!!?3VbW?S;-g1$?g$`&6IfWQAXRIPAlI9}fBOs}H{^ zb-)hbpokg9?>_utb=LgT@*^t#mkJf_)%SARXXo{Yd+fP%7z1$`)rUzQD`)k+rRI zwwgIOOBLq*Xle~?a*6dc^P{=tEeZ@R{kY7JEBv_JPKtwRWu4?#`O)5w)_$~;*v5~x z1=*|pxK`mcwmCb!PKue-^?r2l;|3`mt%s>jmUs5!W@WnwZ}Ow7AKh%$tko@kbeD3g zt$dpwJ;ZOf&O7|L(`HSpUJ85raaV!f$B(`RVLv~H`qAHyL4Mrh$Gu7oC@>7P^#}WL zzaRH0G*cTQn_2u};_P?0^^f%9Q9nlcFc!Z<%3 zS9ZMcF{?k}$3*c7wyhZtD?H`L(-J4qVErchjKXJyQ-#!@vz}>wyzIvde$4b^y2Kea zMcXVtX8ZACf%1~LsXWJzd4A0G<5fRiQSW9h2ItGUz>kF@<}_hyksojQvDl9{{dnDv zrOGa`GkU`kI+rQ6Txe>p@MEcMFZ5{r=>~UKJtV=f}_D=EXmi{R)5O z$*WuBZ`OHGN@{N?}ObCQ1~@}6~6;xRvtTZJ8+5HA&(I89*{VO8Pj!fHa(maS?itSPJ|JVRJpSVu^6 zy#US);7s*ZKY+7E8VDN-&k~yF59b7&$4!ldYFxkLfwF&Kn&+2)0?vaY5}!oBkV;Tyl28C)%Of(g_ZV#f!~@7El@KNa zNNH+mJ3%f5w`>5p07?TWk&Ox~a3g6Nz-0kk%q*|}0kjC9nLN!4oR=y~e@lsUULHWJ z0Itwb8FKJf25?OPR|U{EfY!3L5i-Sw?E+;#`gFBK{tOhiYb9PMY;O%6I6-+j25^H& zrvPpa;Kl%M3ZQeqd0yQ`$g<>J12`zsO(OX%YDIEu0NpL8`St*MDeMuz9d>>044|jw zT#eoV^b6oF?P7*~l0SpUZuy*%-!uy3oghPe2@z~%t zT;T}eNZ}~q1HuP|G(Qx;xB$lRSmlqu2_F_dB79Ux8?)TTD|}4&xbO+#1mQ#>%})jJ zYyeLyoFtqqoFaTic(UeHh0h6}7futtAe=6wd1e4}0+^-nMd57WOTw3hCu`1C_=@mV z;XL7d;Q}GeuLbZ%0E-kZ7QQZAB3vpwS@TVW%Y@5?ZwXfj-xkumGJtgftWvmIxJI~E z_^$9|&G!_p7j6)~FZ@9Gp^)Z}1K1qEMundUKNW5gekMFw^K*q;gkK1^3cnP7C8YTq z9c?-l+a+$H=`xLdeKNb_Eu0wnta_?hR9!e5l#AHc5x9I#G$ zep8mGFtj|pSB|b91q|xoh*L~{}CP)9uv~W6N=lv3Qq{j1)a-2gyn@5 zgfv$QqIM9KgQyY2DM3^X;?$sX%{)z5MM#?&+v!163p#g`>OzX-+-e3+JwcokL}Q7Kgy#y+6SBJ|L7Z=gbV1O$BU~tC zb91H_DRc?lLXXfZEEdx24TT_J>2XTpPX4cJvxFU!aLGY4tsj#K+GU4Syj>KGZS}D9zc$KiV zu#K>-kmjp{=n%v;LFZB4wZiL!?SkY;XOHSBId+|2b6 zza@xUHL33Zo$2jboE|~kA)8sBo?H4ycEPtg|mb&+SKe|*#~@V@^TP!f_PP_xk0=V z{NMAR$$SK)aK0562C+1V*R-UIgo}l*3zrC4)9jZw6uv23CR{FjOSnQv^E*Mj8^lT- zkgJ5Ng=>Usg|wNYdY!`egzJSHgzpPK5Yqfn5MKxJaS&ewu`!6xg7`$KPlcPT&D7i+ z#OK=STZ9yONO0R4#Ftu@uY^=sncFu(Y@;G^dk{P90kc!ex7JMm_e%XB+$H?cn)k@| zQxFG(*c-(DAoc~F@9_LA{6)yV%(r)b4dQ_I^>0Fo+~bE-;rAd82l0nE#Xs#K!Sm=y z5PwNG=hQzzlnddgE^Ehx$A$k2PYBtgxi%u?TrkTED+ntJD+wzLX+AaNT;Wd(p?U~a zLe5uNstQjRRuj@dom-6%YRX?rNQJ4|Av6e~PRP0G)D_kfo++#^q|F>r4HcdxJX?5< zu#xawp)ptE^+sXNvFsrZ9-^UP=VsrAzT~6H4@Eu44ypN>FE$c$B^^Wn)m3(18Lya z$#&N{gquR>Qc$652;D-U`DDRcLg+5Tt)a4C^=H}J{_9z#mAo^AULo|9*^HsLxEVhS z($?4Zb$3CkKdaf0pCsNJ!jKRKYLJ73gN64A?-!ckvGP!b!-T_yBZMP`qlCuHA&m}U zOb8FDFP?GK$A<7Qk8N>dn<73ggvVqXuhnCU+v9eS?014HPYj_lZvo;Y)Snig6vE^X zo(W+}LF!p?dRp`0kLAycOcR;`Oc$RaoGGkv;>3#~ycEK0g{C9cdD)IMKso@FA-g>QwhBINv%r_)gQP6#V` zoa?U!R)w%8gw=A=zzZF5t*x^zg!e;uPXk^rWbqAl{2$2np)je2ABXU%!i~aDtdli2 zar_}{X4i63VW}-4d=YZKz;;05R<-(4*qq=0XY&xg31PeHY!mW2vm=C^;`8{=e?@pC zI2V8MA9%oruq%Wg6`GFBp|VHE%ugZgRcfDY%aL&VMd5zouR>mGehcA`5DqG&=THd0 zTW%`<8N%TZ{tDrUbaUmW^KXU5b2Nlww$*Wwe+#nZ!ax`m!zdqiuI=0^gv*ZYN>VC^ zaf%4X!z?e1r-e~fN)_v*e!7%u;j#x%HNvRRY#6n}sHM~yLOMCBI$_jPSl3oK(`LJ? zmj+=p443`*%vnlJ=ktH-X%xn}VKi2Fp3uBZY9h|nz90-=7#D`&<#@tyhfx%UOIh}A zmc^rx<1xR(Q*1}#mmaXCf|i8CNQy_oh=vgtkJ&8iBy5FL7$sq(!^kR|De&YtBu%hX zVqR#*b8#5W!?;8Wt2Gnhnzsm}Wf+%QJ+0=K*@jny(LRh;VYCh7$}n0>ze>m#Hf?Mx zem>qVjBCTVI*e;j2p3=3npY{OK6J#sVE zMoE7_$YW`A7>|VUP#6z~F(!<$RyQX#oA71xqY_zRoQ{89+#U<#=`bFb{zMp0hA|6jHOB~5t=jT4IY8&Wtpw8T!gE!B8)X*yshw^FjnbIS*g%0xxu|531|4+0-`;i5|4dZ*Z)pX264DJeJPZ&R{ zEN#2(mEor__DbYwvd?BYonOTFTjf`K75&XB2g5idZkGBFtN$6sVat!$qy6tNDn#&4 z808{38pd%Mj@cva-!M){nXQ@fy8(zeSN`(CTO?MDpt8bBLaqi4r$lh7LNmuI5mb+$ zsuX5V7pWGp*Z&C4h@hs#TGnHB9L;qiXb?f&2#B4`ppV};ktaDD_AM9Tg+g2#Lxi5Eps6oE@N7I#PB5&z2eRjkk_WWWB1 zbDoj}BS=LMiXf^~SQrso>n#!K{oQg&l*Z1Xc|GOQuO3S zxWX4l&?16MB4{2#Gc6;ZGf+2+e`y4lMbJ`aGd8xp+^%-32(F3X$_Uy-aFsl*g=WFq zM$k?n$9%OVY<_J79V56dg6k!=7qWN<5pzAfL42NObYlcJE9@LWmk7Fw-xMkPSfQIj zGum6YAQ9Xug&lRbYjV4k9#-cB?-cJD!Cevb(q8T@g+pb-KGxaS9svC!xHp3S((kd^ z0R>G4MldLX`yv=D(Hu+ni}NKhYYr73CS*8VWQ46hO5p=G`=H3^NZD`Ek5Oojw1*>j zHiAbYcq)QNrH_l?36b#;Jf>xN+%67ZJWo(+qVP!}MGk=5(-BP4uAD5KB7DZ~TrTNU z9?}s!r&iAkDNc*v1@Y-tVX2uByrOVc1TRMLGLK}{d8we<9372wg{;G8r>}B?5zLEV zVFdHle1VWD)_g7EeEV*Z&dgo~k6>8@A4ae|f;ADmrR<6bRz~nP z4+%d15zh3>(7+kEHpy=XNW^)>_m_}1@_%@_=7+yRhUCX1C>O=Qs&+z1k!D1l7iQ&!49P1- zacUHmqRxGxvhWlkQ&hN}7Dbh)^EJP!LMr6dJipJ8Lu$9R9QCtwkn|%H+WF7LNC_GWP zqRtWM7E&bls!6fX9D(%vqX-A}nNfDU7LfXhnqG%dLsm72OQe@W`tH~uoGm_>}Topx&C@zwac$H&zpfK=MOI zs@b)m^3757j^dUmdT?s8br;?yyj^JaAXnoKg?C2LQx$p@)VWKkK2h|S*f)y1wO0Lv ztiUC@CyIel42U{6-+P4=$p@+JV4=B--5INOPYO?7 zyPl3>QWVcbF(Qt&L)X!gq!1qIfUry!Kl!WLxt0mHHrx zkE8gIi^hw;kSX$w%6=kb$R?Yj_&SQuq%hnZ#ph9MjbcmGxvza8q)z^&JYNaT9gX@o zQEZd4J&JFm*rCO;hU8UaI3tGBW2g~B zwV3mB_tk|=k=KklSI$~OhUB$ls24*WbyQbKk;Ttc&H6$!q=qpR#c-B9XUA}U4Clmf zUJQ+-oGUaVZya;J2;D@;w&WKmd!g_mAw{NK;_euNF?eF|#o&!Ok0OhOG?4pa&OIU^ zWJn&0AsRziV~YqWvg??t#f4@h$r!GVAr-^rF{ER-IEIX}*%(S=$Y~`@3f42PY*QiE z(;0wxvluRop?S=?8@3QKMcz``%Y^25pniqIRvcIiZDP1eBWx{XmIG@WbI$s9LWbnm z#Bg&A*T&E}hU;SJ7(;s%xn9^oNE@4TyCH^7Qf?HQ^R!E>>?fFRilM7`H>+IFT^~aa zE};C~g|`WB7t&xV-x0%|G4zh1r^ePx$kcSc2$8dokRippV;CPpzZmY9*k5>03Vt77=$uT?| z!xSmc6!bM!BYdvlNSGGGj2K=}o#{d|+L>xKtDx=d7`}|*r5IMk@Nx_bW0<4t+!*G? z@QTjXSA`roPty6yE)X)L_*x806fTNkvF7-C!AzINuq=i*bX317_%MczF?=Nd z$3muP_(W&)rv>NrXEAJvVY5c~xsYc!2ljB8^-i0l*oY(=)(AH$yte~sZl42NR) zP2)T$q=CcxU4}n|X0(T6I3B~182*XjFI{Q>7Shj4>rovu$Ak=dko>E*CxqqV&h?)n zv3wk7#!(@TsuC;4Q7Mj7e<0y)wK^*7B(J+p4;y6qFo?Xy;Blg9w2MF0adE+=P zh@*+>oG&yhb75S6tS971cv!lWbqhU0uaGGkxcL2#c@R(&EsepM~k>~7r0c& z;^ddbo&OqkxsV}wD>b}Qc$JVM&D`3=(Ke22CAN#>>bUc(lGg~CCBIIo_QLCh6q)K6 zM~^seh~p-SorE{W(K(Lq`Tb8JZRB0K!f|xdI^Qh3MaUEvw!0eMCcIr}R{IWdR=6{c zo^jk2N3XbZpXx27PTohJzCwl+`-%6DV{9Dv#4$wSfH>}rV{jY;k z#W73a3&QDf%+NV9v*1j5F^)NL%$DIL;mbmvHLNfTo}h| zaV(8vQ5>(wu~=)u=3Im&>WhR0--u&b9B*pw3_025YHnt|Lj3JGR*Sq7$4Z*{{71-Y z%YI5x-eRUDry z+!DvuIKC*@UtdZ$WBxjh?Fzq%V_SiT*&T80EO34&&Jlhe#}DGW;@HFMzt(4W!5;ZZ z*}X!u7k-Z8a2&r#*)RMxjze)AP^;gB2Ma3vF3%srKZT~w5%Is`I4<(H@Six2>TEhz za8CWJ)O5ZDh@)J>x&A{)g}j1z#RO_6P$_{b3M(gYO2T=)cdGC-A*1nMQwAb~Tb)ECk~Tf>BN-#JUjko+8F8wt-9 znz=U?r>9B6c}{zN0vAZRP)LO-Zf3W-B)Wwjp;ySPPlQf?qU?FTX%dp&+t!IB%D(JJ zXDs1doCosxk8PV2naYR%R>>rgwR|UkbB~XJG$|5OpV%~ki)|@}+?pwDop^vh9#Y8fOrV$Q z_q6`r3G_|it_1qXGuiIDyA$YVJ*KaF5*R4YfCTOpG5Vkc?n_{>%2F{SH>n}kHY|aW z2@F>_Lbyy5a#m6S_Z~~7coEL<~LmZdDV+o9xVVJG`cK!?wFc3fb>s5f)sMz;f}W z3A~ZOo8rCr{T~r??R`spg^+FEPL%zF!j)E8mB8u*)+Vr~pw+uJYli)v!u1Jk5P4r{ z7VSgp{7B?u;gx*-pTK7EPlcO=p9wjm&lA|1z!rrxe_;tn_$BwLLUQ*0jrca=ri@`6+?DHZ;o52^>h^7m53Yzghza!0opL4oW#B zq{2h)j|Bcn;7=)s6Zng#8^8Z4q~UMr<~i_D@ng2_aeHW;;3YkYa!FK70!imCP(FzY zN#|-t-d#viDT&I;lCz6bEk7-ZDoN*G#vA|XNz_cDn$1>EqK3G6FIFpwIttGa))sQv zS+lNqJt5x|)KB8PBpM`fb`lLG(sNd_>}q_DltxLME5bMRW}J-`HnINmMflm`g(4SO zy(kHnI2*F88M!wJpJrWb=k8A;l0-nA28AJESjbkKR8;1ekYPNDgyl4(#7WX3>?>;t z#S%N7(j@ZMd2&27Tq3cVuz3Uv=ZTb31WP_<6N8-)~2k6n_u$rfbUZd{)vZcd_m z61T{CtMFuxB)2EggC1329V&MwaaR&OlCoxyb93j_%+bfo{-+AKmlUN|KP-to{N@9t^ z#Ywy_V$P$b;%v)1^_$|$l30<%@+96;XqxZl#os#j@cBQFJ-+^zvf8xLda};iB;J)0 zvdVi3*C(+diTA}<>5IWMv-pQnNVt8hJ+;y9FJssw!)FpV+Z4@P3i#Fn{*~ol+sfOL z*seX!Yv7KgbFt;#-znu=8-Aa}ZYe(`u`7umtxl)$@39s3itJ0`mn43c%^3FECJYbA z^PBLXZOBsG_^9NMr1LE0PvK!?pZ0Elfv04=XE1PBDY3Lk(?(&y|G9WYol_3^<0!f zv3OAmt`t1t?gFRRa$gF;6#TYf!0I7O*keT5s4ylyUXbOmlPRP$-?VVF=8{c0Pd0MG z5+OsrPRpm9&&8SwFBV=RY^M60Me`I|NFk?_d%tDMx$<0=a_-dTc(@{kRuZoiUX^m* zskIii5w;c5O#Nz&>KdUlT0Z~L_(|HUISF40cSxaQ%J~lA4Z==Bp6^sTr_fE#F2b9H zU4=YuZx&%+x1?}u3f+ksr@`A(SjiXv!aGvvnZlhZ=ksxjL_>O~a8C+%rEqr&eNxV^ zk@pqSL(Z+A!u~=YLIXso->ajDWKast`TSoXhM7g~L)9k-~5*viL~pB=m55 zAcY72t2|^w{t6H<6Gg^5z`kV5e(8xG{} z|D>F+a7-4`Fin$vHihR?n3@8^=QLBJ6Q@ahK{#E=xz9}DCGlCp7gLy>0;@6QG~ri3 zrOy%074Elv%~SpPDJ)E3fl{W`Ytk1L^!~c|5_y&i-zf02mt_i=< zBJYwXS75W0&xM^d_b*b|nsVOCu`O`}F@>*fwQoeW6^ws}l%2wFg{JuT;yEjwn1VfGw3oqK`d^(8hC zHWZ$fc3v@>>^W&PvaPO{cwQQft@I zNIRFl=0Y|kzch`O3Rfz;T>J`QDZ5r)FSjvo_cx@WxdHol* z7qY_jDn-4clpBOx5GwNuFeiSKvR#GUgnV{KCwsYt2Y~I7yZbiFZ%?C#_5S3uN~4cLmZH)(jk^o7{cW{-tmj@S1BLv*b%WB*KiOg1`*iHxFB~Eq zD&(^Bm>e!XLO4=5O33*#`=E-C7Cw~5!)c63JNI#JV@ zQNSmPKPh}l$em6PmuONNlXVD@Pf6n$%Q=hhv`?Q)V@BG!`#;aqP~-*nCBo6t#_`Nl zI4g~p(s)sPwvbsie7S(n6@NweDo2vWJk6b@=v*L9ve1%6X}p=n;xxMR`=4nn6z();Y3IWWW|v7^E__Q!k*T+}ciyr4Ze<#)Ea%AA=)_zrd{@Yk@F;yxBV3=x2Wf0b zJC6e17tYf-KUDT3AyXXiMjknQ{*%U*G(JsZa~hk{_$-Z9%5E2aF27N}5N8v%{ZiMr zuY_L&13fbzrf(i`T#jZ3Cr14`KKc}%fjXg5(#QZ6Zy(()8?n^sg zm|+v9eo4c_kATzoRc53Amd2qp4oabot+@Se`~5SGf6_Rd#u3}(uQdL)oPHMJb~KG+ z5|7)|ziFJXoHk^fgQ|Q6l{2W2L8S~TN|~pzF-5}dlnhSIIL|7LQYC}h8C1=nW(KEc zP$PqC8Ry3gt7pLJa3kkNQcKm?>I@NzbwuiBP)}y2Xe07jefK9~Cl);4==eEM_qKtE+VTzo@oq@+H6sd44&cG+ppFuE# zfU0q*G=wq;XYh2I&mqY?VPGgZucFkQW?Y|1~N0HB9T4$snt0W{xEp zT%18^26>6RvC`R8oXsz>3)0Mvutf$}WN@hrErpk5aJdK@eyCBkGUg0gXPgt{stnjQ zhsv#uI49UHgR5m@D{etv|1;>2!FB4feFoR7CI{Kjw(Xd~4HEV!p<3VRh=%v zo7CK_VK*r^XK;&3-74%Zq=AFEUA%|zjtqKbaAyWR6>{!0{KU_H6_Rr#yoUGT+Vc9J z!QC13&!C^eca<_YAcH{}+?xTzfkOJp2WK!u;eBdyzfBFzU^v%Ap{X!J2GeR3C!4_o zQXVYO>3k@IF;*FCt38szqnb4@+T%pV3m+3cE_^~bK}efft0y&0@~1P-`z&sgbhwgm z?{NCO7eB)TjGzAsr)Kb+2o+~>GMKKFe?iDsSzN9e8O$sQU(7hK&}IusUJ`jZgE>6M z`87zrHhYD2`2Bw&$-E5ai!aFFwG0+!oNrfBCmOO?+1E2znZc3_-ppXBZTp5uP0l5Q z72?ZumkbVM zus?%eWn+p4&WrdPQ@RfxQty0w!hZkY9?as;4F1jFa0dTmaD-PRzW&ePZ~57fw@xZY zGdP~XF`i{Q@M^0jUviwtpnMkPvOv~JagaCb2}6Y}DrTK!;b@aGSI(kN7N=xUEsImL zsG7xTSyah7w+!02b>$y_Ddektiq*5Il|_v#YG$3okApX7*%?{X&N_3Ur-t4m)Xkzn z7WJ|?GwWQRO^@}(>EYHei?dXjoQ89V-E8zKG&1&d=fk zRp1=W>xYZ7aA#4Jg)57dddTpmChN(v(Sk*?XqH7u7EQA#%_6Ur zH#241i@EGtc`6LqV{`RO!prZaS+vTcWfqrdU=%OU;tI<-2B*g?+GKH67OgcZQ<-|( zEZWIwM#WiNlSS7ouFc|xEUwGq`YhVZz$P4jhb%f;KX)$0PFZx;THUC*b4|Krag!$7 zTQB+8s#_M_v$&bNL-V@DR$!;h-j>B3S=`Ph(m6ph$2(Po`;NWz%3^pHy|cJCi@UP8 zJBvP9^tHzWJ7t}IS=^IFe-&ZKR;)ij3-0WrEbhx8)Ma0x+7tdxfHH+tLeJan(zjxT2MlAN<`!Iv$eVXg|klEteMxeH9I`B}V?#eysrNna>@ zE$h5BqhWCtOR{)fqVX@aoIB#pELLT)EQ@!tSf0fSrQQ;9Ja22kIc%O6E3L>PtFw4F zi#1uS)p1LO8yAPjMR-r*df^7)`_@K}sm9f2O}^#-IO{xW*eGPk{lf4G{s}-9pGhR& zoW<;a5Ud<{|oxIBnaq*lsyfJGJB3FT40o{CnXK!d(T~-Qs(MG_%QG z)!Aoz`B_&m*4&@PZ`_ak6EI#UMaVfv;z5OnviMzdr}BpsW)Dj_V)ehQ{!bRiHO-^K zV?sWJ`B&tG(5xP3$5EBfIj_1a2ziMhuaql$Wl}kZ!Fq|ZS$JB`S>!50lBy!S-d4*w z&t0qMP&IbX0GfB4==n-ouT6Fv`!9nWoGkwBCWM6?~tv5l!ijKV&(FD3y^aj zR-7YjB;*UB^K#BDrm>K(f12cQzU9;}6u(GVRG_=n+#_@*&KLi7oW30VIYe>@a0+~p zEDQ<5Li(vk<&O#DLW)ei#lLCNmdYWWa~=z4gjr!uSRyPH(oBzObus6g!zH=0AB1m~ zbG|9TM{O-~&gJFO99pUgIcG||+&Zt2VV-&2p2Jl+=hoa>*hbh^*iLx0u%TA_+MILq zx=zSNCcj?1gRo*VIj@j7mwQGXIu{B#UIO+z2bUYA+IEp z`4BaSiMg_0S$|T^DYE&~;**RboFaTi_^fcMkjqQ|^WxKTW#87IGChYG63J(($5}## zvvba~S#B@o@UrD|MCQuF)T>sXCo(^W1y)%oGF=rGi7ytup2HH6r9u|rDe$KFGOH}- z5u3x?IjoQ}R7L1~ryyLF!)ohaBeFJ!cXL>m!%08Mdh6Mc!~2$hki&=KTo#u7SbU@K zlN>%1`Bb>cR@LB4%Iju-Tm=-x96DYYsg>&#o!%$zfj(KjpwHA-BCE+&e#u{F1|d6){=r2Xgp5hu?BIl*2(=pIN4ef8=mj z4gdUatG{wMCgtxO{>kB}?Zvb@p2NS^Za-AN!Ancf(sI_kT%6>J611|MwyVTj3)>Xv?ZjzdlWWAU6<#N7FXU@H z8anV`;PZds4MH}da$||}qcr4vZNRa0DRFN1Hbu`-|Ko9H1sN47AxnB^Ye^eKt$O z5Q#&D!%8q*#B{{$$P$dQtsW?7HQL(7h>W$Khpqmo%;SWtHogRpiSxu~$nA*|Opr2B z$is%>Q`Y~q$fT08req z$bPvi=cvcI!dHY8xy>uV{1UuYf(2Gw_}{i{zF4W(r7tPLQtM>uO`S@d^|BJ@B_fX& zo`7$aV1-UD^0!Nze?U*dZKXsLt`=WYg0dexL+@mf*J%{4T>m zr4Cv19|g|C;ztS;Q^6q19#!g?+8(zRm^~q0uGBf%9djuvl3g%wLt$)+k7=%f))k4YOVOObn=hljaFFORO(#Pi-fLHxJ78D=q+_FV#PwA z(627o3-w^Bb4rGUVIjv!C0YuODkh8z`SvzJgXPSo#WTXJFejX*8I_9XOVPB{`HmL- zd`(Wgq`<@Xzf@XCxm4J)AbU{RE2J2HrTA5)Xj6*TrOrcpekFhvxV0_Cb0Sxlf?sdo zM)BH$YVF0VN;lOyN(o5mWSuvb!i>L*6xP3~6kWx;S%sC2#~|OrbT7qi%97t+iXN8J zd8c?!VJ{&+L8g9JsdKO4)~6JGOL4bC>iy)QPENe16a%E(D;y{sBpfWfPiXu@#7+HS zRv&IFkCZY>c&h3@C_Y+fR&0!TZDk)8H*?(1w*aNi8#j*X|Kk&KP7qEk#gqSa&fx2R zr6vg{3#XJi&jDENS&^ySeO95!)HK<648Op`ReXk3XqYAbqHwm!sv1)-mtu~Txx$O3 zzgmg~rI;sWet~~s0beA(SopedNkNuR23Y*fQY<^Up8OLqYgi%jwveA-zEkRaL`(mw zQmnQ|)XAe|Z7F!1FuP9v_k`;uZV)%w55&z8{!uADE_FUXWvh)mp)5DbCOL;IySWsf z+a9+_H~nrEKcBaNQV>~Z9)E#{Ya+f)+3mVO?GWE7ykFVxbp4s3tIZFk&W&$ZDSjzM zF|Yrn*je*cc&|18Ck zQXDQVdw<6wf0g2I*_h?l`NWC-y#ANsSSgN|f}9?1BqwBZbIf@l?~Iw8$T3vNJ0q_s ztR$=~JVi*)SpErc9#!(FnMc*U^TpBAh1G=Bg|yXBS!QeH(IAgAq}R^lOp!Wy)Xk%w z_0Yy9^=(^*4aLtAGCVtvbMk0p4Q3cAJ_5>v*f@_SDn)+26dEqfBbvuWc?9w(QkJ4C z4|g73g&rY4fi2F%FYe2OA#L19xCQeFf2%4S*Tsytdt zZzF7LJ?*UL8mq9c>+;SQZn?G3<9f?G$TR?B9nxZh3)v^FV7BM z|Aiz|Id{uP>7nSfJYFbJX5{f=9y6uP5*pj=0?s-w=P^ghTp<}s9`o{eEsy!q z7v!;!tD%mj3k_eK$5I(y&tr**(TQ&qgv;_+u8{TLvUSMcmiUfvCD*o~$r|ysd93I9 zh_4gAXPdK&4N}aQKd}76JU+6Vo{f2Yq41Nu^EBhrJT~R=nG|L>i+nEJVnr6@w$*k- z{*_W+3%@DQw@cYkpnS_-B(l}_B0m&lf0VL2k3H7&lL$vb|GqqawmOyl;=c+H2!FF# z9$@qz%Hwyd{2{^#Qa_x>5v%_t^0ytsQL7)zKtk1g%yM*TS>gK zkOr6fI#uCm!YWNs)n?5|sx?J*tJDx-sahguSe;58%j=R@er8kWISjMh8Z<@2rZ~GP z&T8r$gxolQlh~*!&TWb&O>v&hHdYZD&bP`1O>v>+Y+EGmY6`E2Tj;T^OmQ~%HHE(^ z0?HaOC?2xTNK?d`B5Ff=;^GM*!(>4!EuInbB+4~K)21jGG``J=6RMVbB2;3WB+%*>#lys z^M9WGe4fvGKksK)pSAYd=j?mCNikE)wZPHPZ32Difh75%l*kg278F~MT5G-q1*ZjP$ z#7`4=y5!&%43Uzpg5EF;ZOOhZo+){jtt?lH~u{1#j& z<$@NBl)_RuYZ69jm-1UG9WR#GC6bp)UM5Mhnc9^tIG-=N_mz*FuQSt^!!<@uP855fRVfIn{Xnxw_vK( z4QHA-)TcM$cT1nqg8N!jWtSB#r4L=>sKAmj+2cMUuX!TIKW{&dy7W%m^$8<5f{=gKr(@;piQc7#>Pxj_2J94^e^(i}$RvX7J(NnR{@i6oiC zFBAE4$txtUl%$D-tEFF)!}U2_t9Ff+yiSsYF*%I2I=eScd@3}t@(G&M#2jvrLZqR$ zos)97DVP18#%dZ;nVduW?`a6>!yf_Xa9b|>VnUsAYA*YsJ|S>wqxcA5XL$JY67yk6KKLHVWsg64J(k0)93Ic% zNqIdX$>%Arr=&m4gGj+CpOOBo4yKZ4aH(!mHwLK>p8q(eQA2L ziS~95@8s})4(|$luPGX1eqfm&<*+D+k8}7chfi|&O!%A}KFwjSmWE+((i83T9Olb9 zkB6aV@kI__3gOzBrhT2m_c?r%!*{~J)k2fJKtsd%A%~xG_)!Rh)0c7~*H_BVIV{a# zaSlsz_$7zmMEg~eH~a5WxEyr(BZt3p_>+gfd>wmk{FB4KLd=dLb2$gAIDmr{9W3u) z1t(k6W!9A(tn9RBH<4F$u!e)x9IWnSzavUAcLlfTnhw@t5FrFduq_UDcF@7W<_^|% zu(5;n9BkmAql5L8Wjm4SyP<=PY+f_vO&o0IU{isnGo7T9%;23JbaAkSgRLBFX+v>O zZtY+jCe>s~W5L@x*ulYe4z?GKZR9?uX-5Y;3E@+WL%Qt3p@Ur=?CGGZgWVnM=45v| zi=^!4U=Q)hWQCM_Ip`rmcgEN6+A+@FwkP{I*x$r=u%CmT>LDj$I(C4A76%79I7l1@ z?5Zp|x+^9_k<7i}IXJ?B@1W`+aF99(9V8AS2eD3t=A&`A7!? z9USH0I0t9*9`9g)gZ?a))3K)tl@lGDBqrY4Xl+aIc2N2 z7z56=)@*3?c~a)vxqRv12UhFgI|pCO^o@gWbz(3AFVo}&GJP+}Xg@kwOV_g>|}rLn8RNk{3YZ!$=@ZHIQT;f34cmqmcLcfKRoJP{3~#&GSf#s|C%EY6;&>Ow%6gn6 z38qW^HKh9h7pJ;7(Z$IwPI58OcGVOx$i*pQnqrv!G#7(ioG#FW8sg#%TOkoL&vbFV zi?dvuBib+*XG@_w!=CHnJQu^|V!{#}Ap(DPc7cnFU5s=wO2~yaGC3Csq01#ME_ZRM zi_6pjlazD0g13Oyg&badU30aI*)Fbeakq`8 zJ3x09JkiA@7dN=Lk@tcS(;3FUi5*s=$u6e4xW&b7E~dD+)z(RlA>3|P>JArox|n8% zj6dDQU3Q}~GAo(k;t?13xVT?&?v=dH#(coVOcxKjct{B2n|dBrqs;J87f-u*%*7Mp zJZ^oTq@tS5wqdttxp>aSGcKN04ZL?uwC7#CATKh_s=esqD;F=h_`t=>F5YtSii_7> zyz1gLyGCS^|Avb(8XsiK5{X~#m6j0e0Ias^Qnuu zs+>b!bot!Hd>8Z7Nt5LZ7hhVAY5UhMes%GUi=SM4>*9MC-?>X7P`u}W~`q<&o9**~LjE7@|^s{|q4aa%e zufa1~f0<5@Btp}PqMhVnh=+k5PVsQEhe0BkYRNg(!|6g!YnsD{0NtQQ^ zo7}_M9xm~4j)x08oa$tU zw8we4-NSgM_AtT2jUFa?xPf<;s$!8Q`y?CrW)D+5O!jb#A}|pn^Fe&8hudsJSPWB4 z^)SQ39Ui88nC9V5S&fNacX_y52z6#*kb6Ab@8Mn#_i5EQ5mV{|9v)O57?VuOnI2yB z@UVxcJUrszaSxBG7+N2*H9XZhqt8|6H9v6!&e^O^YE#M_dR^%;RCPzCB}z5 zmlWh9? zc=(ognLx(*PB9lq_TkHa4+}l~=;0?t-dG1RtL3%G!_OWT^L%Lfru-|9Rv*84Si#5d z9{%>Q#KWKR{lo5xWBB_&9;Rx6{_(J!kAFQZ6^BKdRfCV^{cLYD5l>gvzoL)TeXQhT z6+b&3SN5}`m@`_{$7+828zIAA!^he_*7UKKpS>|K-x|nV$43W0+w*kiMPxl6Tl(ne zV^bgN``F0G20k|Q+q=Q|bl=#=CVu;yCGK;6-QLVcXCIw>Y_1v@inQ@uToueAU!H8` zV+S8w``FgUHa@y2ChrbbNWykLw)eBUjIFy#bKKF#Ekl* z^)Lme+2SMck@Mkk?mk>LQ(;*WJK!rUb&^9LiI0eL7x=7=kh1xQ=FB@G|F#p&f|PZn;5gMA$0XRnS~KM{Hz=HqA|hx<6n z#}Ph`w6ms(v+m=guSJ-MUdQ-2&PP8V$6A~#IF|2!eDqf?Zc#J40X{DBaiWhieVpXu zG#>+foZ{nTAA|htxzDz+PP6e&wb4%ZF+}=cNlxtyA49bpN#=DEf4j-Y2p_|Ioa^Ik zALnRBEQ2>Mt;2nsXQPqNMCbds(8mQnMyf)y%4R!_5|h3c`?%i6B|fh9ajB0hd|c+^ zav$7y=7{Fpuk>-1BGA_?_ccDQ^Kq?@(ZV@#UbK$!F;;6~vapPCywQA&_i=-d2|gxj zMToPj?DLI2CfOBd1O~s^#}prvecYm6naJed>f<&=HZ&qrIei~@_;}FAG#@j3-09;k zAJbJ5SD9@g?QRW6@cj32pY(ebho<{|JYer`Gp~nyJnmzrk4JnwY^O%%qdp$fkn`fO z4}ba7$J6YRkEgT>2EU1)|9w28n53~(_V76$Z~A!N$ICum@bRMJ%=X*gv6J?aJ&RuP z@tUl!+SIT6c!S4F(}sD=#|J*%_VJ#NcYM4nCfA5d$x!cW$hlMh(8nh}KJxLgJr!9b zcf}kVoGx>H{Ndv>A3tzE`1r=hJRe{BnD65YOJgX`;wv9tvw>P=#^FrA^|8RmccPKQ zBEPpfoB5-U#Xf%Wu}I)TNpq+FES*7q;eqetS04WA7`@mr;!9YJJ!k&(v1)+7c(w=l z+s9HL|M2h^!OWWH|8fBkWal=$7=+cX5Mbp1D+X98$U+TKd8S3H1nr+TR}0V~!0G|k z3b00iHL2L`P3GDG)(Nsx{U(K_TsOe_0oDu9F=+q!LMNFv2(V$0-Pf###j_O~2iPmX zCIPk&uxWrT18f#x^8lSx3@hxz_x}O52-^Q5oH>!U3eY9M)&aH&+COD66lb?B3l6e3 zw{+xOm|}+jT?6bGV3z;`$` z)U~oq#N}hIUI7jX&^y4vLH4X?Ml;_-0~{9o-{(~_j|gx~fFlF+4R91ErG9=TK10## zXhmSJ`UN;n)gCK^CSJz}?VmbM2yl9U0Rc`9aH6JmQh;OXooEhMZ07I3_RKkXw6<`?G$lmO%=bQlN1vodraP5C)VNV!pM1b?{ zJ|~TlM+Ue#z=Z*>4KOOeq=Z;#UN?I>40yuCmd1sP<97 zYeZx4(E%m|xGuo;0mcLvtC~4klXqNz@ruvj2ALROQh*x*+$g4rM$=6S$Wl4e$pK~r zxFx_H0j31FJ;1F2ZnGIlAZ@CKW?82Nm>%Fx8{sD2I05cfeA9V;bi60P%mDWWcp$)i z0q(c=2t#oLKN#R4tq6y7@6R7P2Y5sQS^1+j@<9IbXMk-(JP}|?fF}cd65y!-uLgKJ z!1DoS1$b8EXM*e#An&;6G&B#R7XrK#V0M5P1@dlUI(FdY0I#qr@y+e_T7Y*0ydL1K z0B;0%GsymO1+$wtZwGiM$o??MVvD@TVSx7od?1`;c7}wH0(`7oE7}`*PJjggJ`M0i zfVpgute?q?^~?(}pIgOlNY?*lfNuhP72sKDhSa`5)jr`LbXR8$AC5EDrEP zfQ12m4DgdW%-L}Xc=9g_@Uwcts@NIIUjqE5GvrrgAIG2nN+F-tKX`+O_%pz&A^zeC zAL8!-|0?4@I+;mZ8eq9F`>PJ0s&#DU@*!3Vu|kLy!>nVBL)xDF@E>B8FzXmO?94Iz zO@j~}LaZKQtq^O3SW{N^lT)V4+9B2n!67TB7gMYoqGO2l!t7>e{S3Z-hz-K*89{=H zyiu4v8a58GMTkv8bPBO)h|O$XPLQY6u#67%Ah+V_%IY^KQr@32*JwogrqMOP#bLW2E zGsIr{Ng+-TF)+j_Ax;i4 zNH{--lg4SD8saqVA3CyctYL77Gn8?N`as&y5N8TuLr5SpEX3FlXNR~r#5o~GhB!CG zh!Dd=oTpVV!TFdtKg0#>zgEPY=QLdyVpNEW6q8B0*|>8q32{}3OG8`{;<6BzhuI(f zAelWkjlEKRCU|v-(IKu0ajj;}S+F_eTo+=D5Z1}*u+-~A+{*nNVp53lA#MmUA;iQG z4=F5Z^ks@0Lzsr#6ylZ;H;0%Uf+aDgAxu%Jtb{JNal?eTJ;bySQ$yTgeYr8nzca*i zE}X(L0^RQpac_tjA?{HSHi3n4*7s@1Q;P*W5aP!W4~BS~wS{;t#7rLVAs%KEM0-T@ zqT^#B9v5PI!Z=Tcm=)rw5Kmj2G{$@;#Ir)!3SQj6&xd#=#0w!_3Nbsxi?R}Dk&O0o z(-wL)#2X=A3-LPlA-AO#h%w&`@s?JBx+&nD5TA#5H^j#w-V5H~+oxDEc{O%&nZ5Qwle#Bx#ln;cphXZZ*#MA@lmTEy+WQiN3_tQ=vLDC?)$ z@FcGmVf83GEvcKGwq}%_-fKlzKf>A(){U@Egbo53jThHzy$Btn>=)Gx!hjoyuwjIa zqU|VM{q~AxX!rq_EXotZgD}7okgp zZKLcw9Ac-leS{rE;{@592LJwZgs#jhaF+KKD?vg}*W2nR;kKf(cQoz{Y(cqSaA;G6=RnTrsy z{}KEMZUisNo)nBgD`gNN)ap<-XG_c_h>%1`#pJ2Qm`q1WPBFrO2&D*zM<_>VM5sil zMW{w-jk4!EIfmI5p&n&#c=)8?92vYRW z65-?sgQDyc2)o2e=y+;`(=-c$rayxt42>`(!WmKacVigGEajOI&ayR=$(qkrspm+Z z8)3MtY&9=>jfn76g!6f8M7SWrH4#QexHQ6r5iXL;D7)4dN4P`?6EQ3cyDY+$5iXB# zh3+i2lqQC~D#F#OmWb)wwGqZg7#(43gzF-V(QaXO61dZ@k1$SI*m+a)ga|iAm>A&( zE~Ubf#-x*MG1PC4a8HEE5$=d^ON84ZOo?!-_6FZtGdQE&9$~6nSS?)`d>RXjaA$<+ z>Tn-@A|?6m2s1Q0>by9MdwKIRT7(B9+#lfq&4?z>k!3#=VWuK;9};2YM zX%`XXMg9{Jo>W!bCnJSCtwggTyb@pGWvJ!n_CzBFvBQrD$Jh|1-;15x$A= zwLk{p=KMCocXmhu*W&vKizEEN13$u#5q`2KGmGI&7e)A4yOi#{=<-X1-y{4Q;Wx$M z9}It{+?~+7;D8? zCC2J8R*kV*oIN$jWMSNdYs6SH{?D^u?HC>C8)r`hUgS`&tN5Gnhrcm)jEn;jC zW0M#gin&pYjcsJ|nPSrzonmYzD<8p}&gL;XYiQ=n<=!&JwlTJfu}zGvW#TMYSQqK+ z9z$&xV+SVXKLJpDT6c`GlXO~n=*{Bi{}}tk*fqu;F}lXsUGBTZ?LT|!rXhC==dx#v z9x?Wc(OsZvGP|)iheB8tX{>PH7zf7KFGf$BYyTJrs1oKib37=96QdCD*V$@>9F$&6<#7MaW(pjX5T#QkPQHoJkMpng=7^)hhRrBJI zOjh0&&_n3671?KgMw}j*r1Eaj{InG@W2Ob7G8BW1JM@3gdjEyl)zSr9b<6}(VJ)(IrI9+aFVKHuuF)7a8ZDy_0dfgmjviidz zgR|@@F{Z`1HOAB!x5c>K#x&MDw77jc8%#87fvOKIf4Dx7<$J8H_lm#=$6I}fmPpK!2+z>b`#_Sl+ z#CSf&voW4i9M0D`zMvs>eo1*T#w#&iit(~QQ!3Z))flfSm)UPj^hS)2V!RpST`}K^ z@pg=N>{^h(ReLYShcVud@qxO>eM_7%nVQPSG3LeiB*xqrb7FjIcLgh9md|+j+d4@m zI6uZ$F}{fLr7hUtU)!zA`F_juHoevPpp#=;oi$M{kFA4D^$f3gu4#aJx;XGyd3 zf6?l58~?`RJ;v`b{*19C#vkG^iwW|VZ8C@d#8@uDzcH3-Pjc?8jav&z`&mt7g#>FS zSTVt>304xma)MQo?9A_D*J8B{A8~t}?w{bG1P3HIFlj#x*gBTP%3I{cp_3p=;3fzX zcnN&rEM^5ULk-zvu5X+m)i6;fSuL-8lASg@T8jyeO;Ad3Xo7NrdV)%VT7qhVR-2uC zW^7Xsqc;-tPS8t;*=7ePI7CxmOv5=WL7xPNCpa>}5n^V=$a<89oNwO*$0Rt~Hj37M zGI6HNcwB-Z364*2a)SN|PGmg^1}F=yW*tvTFi>;pW4kvf!D$IjNpPxgGFcDFrzaR} z6Y(*}=A4n>oCHG?3`=lkg0r-HNoHZRvf*dj4xF3dyadBl8*xr#MAM8e;7yufWP*nh zT$td-1fvpMo8Y1ZmnXP5!KET!lC*zQV~WeH`xObUPH<&{tAwxv49@%O8V$*0y3q;7 zCAcoZSj}jR^}SvS`%ka&2_|YdL9;M7$PMZh=Q1h5bm9qaO>lF9Tg05KXza`s8<4qf zOK?Ym+Y?N+-Czx@XIg?gMdNn_b0FN6;GP6`3nXWT6n6Vw9{ZfBhNg@M5DLTpp8TC7jd~_Wpe;!7~Y-PB2SWe#|3*NqIeM*Xa2K zuO@gQ!Al8dCwNhJD+?gA!S_E2Ua>V8-`5hnk>GU&WE@WFO{;SW-cB$l!8-{)Oz>`k z_Y=Hl3p05?u)~iMe4<``tZM0NqJ5g+iv)8M%uDcDg3raLm8Tiyd<~hD!!Hwjli;fa zUkl_Xe^cSN8k+lS0gts5-}A6d@k4??68xCpmjpj0SR~p)+lQYMEEZxaVfeSAu^M{4Ii6-+!g^w&Fr8mty%eJN%Khznoto#foYBd1&}6r|6Jk zl@x2HST)7!;;)vrpMmsULkRcVT2j`gd)oeHiA9pIZipw-BwpQoNX=cZzFM9Gv2e6o;fZKEVY}+tN2h zKXyLFF`SfQn%#bEisR(Vq)fz3*gwS}R-59a6a!M6DC-D?W$^=3oZJ+dK~70=dWut1 zoTd)2w`PumQw*{FG|12t7p6Ef#kncYN^y3IVG3?)X4&W1+J>h%KgD?|Mrc>FFj^@u zNHH?a&UQAD;k;HY?r3EOxanFIhw9Wag_*HrtP2JuTF7|5H^G~ z&Si9p=_#&DF*(JU6cbX6O));j^(n^L6(o~gVip!KF~y`5H>9{xaaf^g)J6))cpCUTlk5eL7CnJ#Hp7EybM*NMD-nO7TdFyHh-nVg{$5;+_=u z+ErlLjDNrQtcrKggDGaFc*r6oJlv!|$_INh5V!EeNJZ)#nXhfb# z@qCJBQ#@x+7zSiZUq~@qVOgOm`=u0rrFc2TmnmLJ@nMQrQ@owxwG?lN`MPRm%r{fK zC4`QQ#zgO=ct6FvDc-YLOlLl@G~Ov6rT8qx$0_Cr{6vzQ=hGB(?cK-VjP`ko`LfQF zrdBW$hlqY{4%jJQ5cK(~` zb5T~%(A+^Q<*{lWE9bF_z&@&z1+SLJ>O!dVqSu;vte3}Hd34BQ?L5}Wx1aEwAcM1* zbuH2{j}7x!KaUL*fxaZL!j1CSIN$y)gM5bFG>>ib*es8&^XQbv7I|!*M`wAlT5bsz zxn&+(2{A1ip=jIW(M2F5_vibcJa)-r`#g5cV}~a4PI>ICj9gQ*5WD8Fdmdf$*v)2P z1nz`xHX1YTna7ws_R6Dg9^LaO(V?WaJ*vIEIWB% z9tYW;Fbh{Rmq(a~lZTgwYlE;4ejb5_oE<}P?ol2|9FBaX4jTSuRQ8`Gz6OCky&W%Z7Vz^kHhmg)OsBzg}IK%<0$DzN^(*9 zSPm;cI*)VmI3|x%^5~bx33(iw$MJa_Ck}hgEd8Z(7VN-)JO<`*Vjd?6G&QhSC+9Ip z2xGE%7ItbLXXJ5O9)pFS&MhZ=h^3J;G>>6_5T%5=7JkA$* zp5zEgX1^ehQF)Ba<3jb8F1%R4MIxAtm*jC(9+&2Ec^;PuH=HZ-xRPrm7nV)%>O4m0 zaZMiA+Iq}fu9KJHjLqZKJg(2<-aN+TF(r@jc}&VlRddLFmsaYr7v=P{Lg%tm0SX?ff!GS|-3b5|ZSgxqc8GuJ(KC)}6E(|O#V z$D?^XkjKnC9?at*-b(gCJc8$c9*-yj6PYD@ERQGics!3MgqzlJIiAvx@u|%XL)?CE}3aE z=KMUquryQoS9vVTM84>FnZxE4R0~7tSN8}NqVhSz}kiX`)tp$JIKWOt}BK6p<@A? z7qET-n-s7?0UHV5u+aWVa%0OkNjEKEvjRE^G)qs}xqxj8*rI@~3)r%Ntz_jInLcb& zK$k-McNym8>AhV6I~K5g0XvAv$oxb{(@q8KT*!XMW7+!dT7X+X*8=t}V7CIg7qEK) zdlt~GfIUc-7YpFL=)PAWdsabzHxoa^G7l@@vH}h-;Pe8HDB$=4jx3j9bCZh0)`ZDrmSa34plDJe^vqK6fmrSv+YhZ^Ey{F>Ld7vdbys&_a3m8?vMOt^RpqauY1zai@4p}qFmlrU#fGY}^P{5T1TvxzV1zcOe z)dgH*XJ?8ZZL@RT#}shAhGUhNp~e+3UWn;GT_zSVxqurAm{h=x)|Yv2;-oY*rLuvy z6mVMsQwq4XDFT_dYuI0P-ci7V1xzd8-U99{;O+vZ7jRb-pBZNqaE}mEu&Ly}0`4#1 zfkOLp#3X&FfF}x=S-_(OJY2vdx)<0bPK~~g74W#?kW7S?JXyf30-h@1Y2oJPW&CFf zcvikd$YkfanV&D<1#R`&k}pcWRKUxH>^ILz*h2Di{s=(6uNCmREr8kIEa3eD-V*Y* zB*Ay2yes*hB&%hF4+{9OfRBZI#O-bGce>0eV6LkDw2=L7JZt+*Ln@yaFi+t8We9(} zLx12Xv-016Dd0B+d?)4GLiS#QF&D_|`vQKjH4r5KCk+=$E-GMg0Y6KpmG=eZm6E>- z{7v$A$t9AU%b(gve@Su{ME)sce`M)j$)%EvL&VHw`C|4USV3~dV*3PXTDh2cts-go zH}Mfr#OlTD09-?o3Qasq*D7Ww>ci64k={Xa-6FV5G<7UugCf>fd@eWRZ&<`e#q4yY zZsaB!ZYsH%WGBhZB|A%QA-T+jj$0S8V-edZa+e~uFJjvwwrfg6&JImO`tD?glDk+_ zS1G$m?ruSn_h{1hlHOgihoq_Gf717n+*i`fsHgP(B@bxA4=SRiX(BnRyF~=-TM>Q} znV~`r`67|&;wBS^sr4-gFG`mF%c*Esm24HiRzzD9r%}va2l479rFRhrTjY=;4z>DW z#q4teX-5?Gi*}MnN%rAa04XzdgK$^Om2#8by|Yew9aqHh#q6A?m0OPTgd$EVVn7im z7TcfQhCi@~leNJ(Wp3a>MVwO1{wIi2C70))fRL36t?bW`BF-pgzum;(yiK^}i1Qff z!AC$5!;0Cz$2?o|9La`E!>xW^5hJ9ZFG(^9Bc)$h#3)NM_{ElUNiqAK9Dak=Ff zgy5A$TxFS8TPtVBS@RlQ%sww&CpkuPtRx#Xf{y^!!yf?@F+mD{VT{8Y>>YPw5tEEA z`9Gbjlhr`3&MjIacIMV%_LYGOB{{e22A^8Q9Ysu+KCOs5rI?fat|r|e_tyMPm0FE$fTTA#Ir)4X~Nlu z=Zknr$O}cxF5*S$CKu()MZ8+XD*_pZ%T4*3&HF|XZ_D&%5pP+LxlB@%muvB!-9;aW z^Pwd1kA#10hjXk#_qj#Pll3#n&us*H%`f7MBEGa_BIJK_r{-lK>{UXyQueUswMPkiN~ej#?qc?kG_(F+Df>mreS}aUZ9f&?vxEam*k8J7 zCgp(|(y>KKPLeJ(ai(qwo?1cOml8;l5S5T<%CRJow5bE!5`_|qoE<;^OHwIIA(Iz} ztqN7M@!O=-ZTwy(99BZ_Qg)CYT*4tz=y<4Ai1RwUgd;T5Bb)F(B^*=A{-sr4$)hFd z+pmP{H7%ZLO z&AO-z6>_HJSxwfnOE|xTb4nO4@LcU)^3N+_gb+qBaW2qsWD_{5gp0LI7ir>LsY{wx zjgz{pgv(2~x`ZoAxT=IJo2+KtulX-B+Qy-Ej7(!KVVsolB}}jg!BG3AVI^r>u)9Zzm%{@gr7xNEXh;O1fl#* z$nPcmTf&kO{wm=QA$0#!iedgO{U3`gEn$Unc7QKe2B?&?LzqJ&SCpw4S*47%%UHFH zwaQpc zL!_Tk#xN;E%Q&-)vzp>C_}OKgE94w;OuFG^oYxe`fESc8^1r^L%D7mxi!5%Kmo|lB zC6{Y>h2>mT#^^GxF5}uVuKEA6Tvx^z%QVr999PB-WsEOlqFg5Ymvf_yGf4_vZWdv3 z8Mjy_E16=gx0NxqjN9#yCeyKLW!xq3PRZ%k_wF)gSl!ff?|*&oFXMqS9uoMVWisYW zArDJF(u6-|-JdAqNsF7vrV=Bck%{=T;y-7-UMOduXJ$)Mc~QzslKePLlyxdtw}K8fAYHQfx;l!mzBLitP{>9$!X_1LF6*X} zn@M(R;&-FzzPnkpv6Wol{l8^R^U|-$m&}! z!-+JED@gu}n~Vj4#R^K+YH-R*1=R{_!dq=#W35+kh>(V?y(;J}g&7aFOzMXUJWP^~ zypCwH9wohxWZw#owh>6{C;eE-#kPPm?@da&VI` z!=9nxPzy5JSrrVkLlTHk@;X;BhgWdkf34?Na6tv5Di~>#UT78LOL=hxmsD_B1(!CN zh+l4pjDMxVUL|?8d19ch{@@-33ga;sHny1jyXDwtZq^a}2%;LZxBSw}K?naFnuyjzYltoywcJXFDb z6+BqM{S`c59gU0eooUGie58U$D|n)U$3!OQaZ8~7q`;?aoLQCZBPg$Dq&!=}a~9!u z{}(FRm&)0aFG_N_2jBn5{S`@`*bMs`i(I<&^$OmU@EB9zC)rUPR{lNjcfJCWj_P( zR3d0bm+T?Awc13bCMi7Rk+sbRkOcqK`;;!N=B0WUr>n~$qkcMv;Q!c%1}u*q*z6% zidq%rDk^F_TU4#0RaNm$VVy+UsyJAEu2<2hW}gIlN%oc`fe3dpl|!pIQgIHe;&25y z!tNHX#ZfZ#sp6O_`f_zd;P&9f4)l}N=*QVzaeNj1O^d48TR~b`64RYn#YxIOP?F%u za$#>zsp70EPOW0F0-jdI>D)s4n8!Uy=8!7RsN&2jhH6DjOq#fk!>Tw}0ne`D99tfJ z={3BH^Msfkb$%6>R&hZU7gjM+b0mkMMpbc16&LA#q2t9e@!sJ@0xQ3)ip#6G!Un%m z1jc0dNVvL+YpNJq#kEyjr?N+D79@SGTFtYl>aLTdTNDIumggQ>EWg#WW>l*>?(=t|oJ>>CTJz46VyOvNGVk zy6LFgPrQl;s+d{DgPH=#4^^`tuh5Yxn1~7|LjBPy9#bEvKVHQX(m%H}^DdD;(_xEd zRq>2!p#Cg3l0fQ=_JZaA3*!^#MTPe%k(>Dlu$;}5qLYGbF4@_}H&tz^ z;a08KT8gQpi}YUBe!dd$(dAV^u&}4aX=w1sddlRvaYef&XRZ1TJ%Qt<@JENQSM5 zq%hR7_=%8I{Jivn^<}h@)hn%Nm9=Uk)LPMKMVlSgtc^Z^Xem0UyC2pisM?*uNB8yWLf3M+sG$K86e3BB%CCDU=u=okd1I^D+WtHtre$R zkX}Ptab_#d5Hhq0r|GO#3=?v86Mk+hhAV|B>AWWW{8n7hijkIVs-hevPV6Uu240ZWVZ&HBD{Bbm@1M!~R;U*xUy^*;24{p< zt^T_8eM88bl5g4g@3i9mR=lg>dlsZSFJ}4B2BH3OE9SJ~6C2IcK-%0^d}e9JYo0js zo0tZt3ze^hf76QZTk)+NzmueOflO3>XvM--{3!e`+6;8rHS=dX`D+`Za7&%f3@=C~5c`*Rn^$CX)O}V7|O;RzoKnfd?|L&b92Rv_%bD zN}Si_fs-Z^>-Ibk{6J!mP|Er;A4f_b^aNipClg=7QBZu=npqBkb@dGW# zJPH{(SA(loIJO~l@oMmE+0&L^f&$e>kYz{GV-?0>T0^Op{lGmhSx^UxY8vAcXI?&A zE4A!nwkf!^hFT46H9Z8yVT&4aVY*&Q+S{(zAyN*Nr2Ant94-P~%twVIYdA{9(AuYl zzLsg)a!d{Vl!#>o+o`o4d*K+eHn-A z!jCs2YuT603u_o9 z3zG9_4Ufz8nDu(1hNrmJO`NA|nAJ3V#_A0FoYh~DGTRPcRJ50Bcv;9R7H39Nn2~P? zf77OBz_*3GBl&IhV|OevB{leUK_}FLmR<3ZqkNLEz`tY7LdcvZP>!{o2^^7VcRxrBU2YiV>NPn zAv?5T$N&27+=g9jE|aCJhP$<4k2dVyhHn40?%CwtU3!l;>}^34VV^ea*M@xsHrHVE z11$MKs~DWVIh)J1iYJb*VPL_?Ds(X!+q1Nx@c+f6soaLD@Jf@l)#`0+sM~?)HY0$az_*4PU~eN->u<{Hr!+JdoB4s zt1#CCvOXyJki{Qv!{cpuM8ikh@R*HYB0tfFr`qsj6Zmu+X4#>c-Lvw2t_{yy`~@Mi zB@O2#nO+uRBEQ;(*X)qU>sEhL%3E!Crwwo0fX3xr%XweQ2W|M!5Zr23vP{)pS>>^~RI(BX{?JB)%9lJHfXKmf; z_@7LB)UjtBJ?hx2j_%fx1g7A%w?(M$)1;HovyKCW>|e(LQph2GP#sPkEp_B$T4Uo;YUT~)``a$!aeua!R92DwgNW9;zyIwsUH&W0Lq@rf2;gd6LaWQR9d zf(brZ_$`uCByY8Z+v}KWy$pGph74$ily}u}Zyk5bWrifddu)XJtg?*%U=uR4jwkAP zSjZ!FJYL76bv$MX%~|OFgJRo)ckNBI2{_c+q;j)WkQDU$t|2&6?h* z<4wzFoVP4)Vj3^%?}_t%ll4RCA6ef|>X=){oH{;j;?VswOJIT7dGXum@(rxqzzRZEY-B&-T}jedS7~5%4Of+1O*C@Wkg}%aT9Ru^ zt|LhT-Ax(%vdM3t{DRrBk-ep%zCi<qVq<16v5( zQj*A4Qs}acRk~RIc8%=Ow!I_?)JG^gyRlP4Z$Bh=k=#|Xt7ISk{(l2|HqfnsJ%n`N zPc+n0BfB^B28ll&m9n?w|BU39%JfPA3M&h6byarkta2v=qvaj>3 z%26((FOz}5P?DTTN^Enb7UzbcwV+{9veZD?S}SS}3A|bb)*5J&LPsu8qk%&k=w-w9 zZs1^953v!`uglGk;O?Ehn>GPZ$94P4*AjSY-zU_t}qZ79Q>sNoGZ5yA7g znH#vhftwqc(!k^fZjqIyW$|xq;5H@YZwL^dsvvhXFwHUvvZUz^%xK`Q2JRNY{6_|q z_cXHq)ZpI#f^=bj9#EqmlzgaxnNs+gh^9w$$8q_1$351-tOg!$;3=)+6OvC_0y$3$ zA(Q$uR)0>)^O7$#Fk1@q8X6_vp7DCQk-ap2rGZzaP=BqFeLAH=N!puA^p+$Sl!%e< zY8$*K`MxA~1+5=S|HvXA%aNuz4a{xe(?<5HjTf0lelEg1;RgId2=yNcmopE{*9Mj}@S6}0f0sh9Kbkmy zN&nk&IPrg_FSQ8gg_px z`Rhn_kX%=ij>Ner9W|uF6dNe)hP|+nO=?na(hHl)w3*G@$r3tCF*R)2q;K5|U3z8D zi~mQ~S3p@+{olK7MQm)vLJ$5&*pZ$sRIdSj1^JZoXfmFJwxm63gw_s}v(*HKXsgT3d zc-t0i*OH&r+e=c}K?(`fd$yog3wpO;CxJV6=wk0Kws|clw*|YkW50q{&94%#F3yy8cf4z5*=l*nc7}jwYH$5W~l{bi?_Ap=P(Vc7O81%5Nx#I_!cx(H&d~pEg05< z6D)FK3r6eoJINv(#VMNEQzeH>a*9v0(|x*Sp3#DlR;SfjEf~wp>8%B$S}=y5)g;2+ z|KvFW$4QP?N!ev`W0dn0WuoMy7M!nv5a-yZhNwGk>pBvQpwOWX>(N~>hoIgwAGFIvn_b81uwSX zd7JhNip6AJ(pq|1IGZ$oRr+f!m@kF-8~k-u@(oFIp1fuE&cYVFZS{Agu(0n*dA|i8 zNTHJtHQgUcvdP>&X~E}O)t^d!raJK0=NA5=1&fsA6a0X~^Iy})+5fr)-)O$5n>v5j zg710msoL}zTl^;>KTEP!zqa6amGrk3ESAEm(gRJX@cOd_e_8x*DgQ`vEKBV4k&Hrq zV)I&B$})xa=X1{Zas@13z)A(IP{>youN9?`Or5puRLG}zl|p{-66svXcXY1H$?B3! zm7Fzg*IEUvExe0G=xtq_!+KJfA;Ar#Zz$SE(&>4V0ydZ4wSZ0KXR`u$6q8TM?~E}G z>RT4jt$?k?+^Uct%LI8bXUc7a_mJeK+fK^%lI&%{chtCg7V=|(NH2A96gwC4%|fJi z0lNsKXHHxnYrC6D!6ENqkv)|j%R;NYtRL$86tJ(N>}UOObO%_g0}JR^$j@^IWkkyU z1su#$6mW>Fh>&mAE%n2d7?mRn7$5>e9Hr86B{2FxYc;5VV{AcK4VoOME>@5FkOEqi z1G@@JU~#z9q|>J_8b=x`N>o59B`zS*yfCNJv4VN%Bd< z$pu`Xh*Ko#hZieG@^-ALEx7a76)E$|oc8B;iP}E?`Ch z(+lmN->(t#S|!X;Tvx#L@=5Yc73YRR{`|R6zqrjka#H~}i_A=zXUy|oqnK65A5<8c zCAz(UJLH5qId^Gj%#Auj+*8248UmZF7z=nmSFH30E%TuQW*6|V9Tew+;T|nuj*!PB z9~YVU69vpws!z)8Q`Y%Bn~CMzb@b#>EBv}acM{nuODRcqvTHo{9M2< zs+;K@$d^9_ELJb0{9eEx8nrnV{w&}xb&>YBRsN+?%(wFrAxjnW(m|56Wu(xY3GiC3 z_`mo323fI)l?1L_L?@9APA614TVypU1XnL&4e{B#rj)g;Pa<79=<7;fPjdYtHt5hr zrt!bAz)d8(N^V-jX8#|P@tmvn^@NFb}6tS%o;@e4~;SLtr(IV{aC4DFP z*|~_`ma~iH^eJKw>AQ)uyNzhl?%Sccw{+tBNZGfD{Vc-8c7W9nETW(EgNis@O8+7b zF5=K44zV02c321f2t2^iWqEr>GLC1yHJEHuvmms%>VT> zbEfnJnr0w9l#C>eZBj&Q5vh=@15OVl@G2McKQP5+r9&@~S`l?24auhD@sdL&PmnaW z!;1M+2d|T)oLtPmG0rA;H05wku8zvnq>PXxenv5WycsEZrsSw4OU^3(?|Wiwjut+~ z_L5KVoFc{v8Q%e)P{iaS&MV^lA|?u-Bxy{HoYH~c#;*VsagjFQRLP4aFOj@d@-j&> zxk)K6FX9RzS4v(bd9~zp$!jDHe})zz<6c+9^>&rAc_{w{02dEO!Nb3Zr;50_i2I7T zrHDIk%@rf9d$BLMvv>%seCiX-TPgTa|E5lQFh`c?|7B+x&2YZUq$?>SSI1Wi}(f@@2y!eNlHgz?2R$5Y>|hHAn>g6aL01Qx zI_+<9nH$}1E>|YRmJYUd(9OYC0vVA6y6x^@8z;Z_(KGWWd0PiNIoQs@jt;hWu!Gb7 z$W0Eb)YCyP8zm?6`QO2=4thJ-MYZD2B8_+-1u~v@chKL#9uD?%u&0B)9rSgum-Wm{ z7=0fH`#Sl(m8GVn;r#MGU5>a{Rh#glXI|x0S*pva5%Gaa2WX-1$*h_ z2nR>n(GlT{9OYn;gQFb`w9&a4jjLmnFiUrwgNB2_4nhY*95@bI927O`g7wdY>ECtW z%gS@|KXYV)2J$?FFMk}A9K;SX2Z@7JnUG^_skCZbRLbmf(B`0`8j`?^vr}_Wx7Fsj zm|N4q2nWYIIK{zG2g4kk;NV0$*Jm!nImyAvip9l7=N$E^4u&gFx+QX&M#1Wx?qIZo zGaQ`dV5EaH#o^qM!``zUjABYkhE0NF9E@`?*18d&S8x$p zTY^_Pm@ccUB`;;699%2inDEwoor9YlT<_pU2QwYqV56|h}A?r`v;gF78O=HM;|4>-8n!F>+yad59HaD=L1YIwhs|JUz)Y8*W5;2{UI?b2n% zIQ&N(JZe`3Pi%sZJ9yf`94;pZPdIo|KDqJDRL*rU&&khrZU@fDHGKGY@VtX(9Xw}G zDu$+Kx_W`rC(cU_-gWS@gV!Cr;$XgmR~@`2J_%+L7bp>PdUs z!8;tU_0Q<c->|0Us+)Xzi^-0fspo_gT+F~Z_4Tq z9_%jubnuUZza0F{BTG05y!-#_UH@}0d;kMsd)^f47`@g?< zOy}#k*x1FoE;ewno{RO}{CuV>&TP!{-^E7Cfr$|(xQUC+Ty%A@siF{MM26Vh#TIV9 zTG-@8yqk-CTx{iH7Z+Q**uh127u&kn#zhYo9=~YKuLN)r^5Ngb_AaRORFgl9+tI~N zE_%A?<$^SJy(_u1i{2I?nO(cO=^(-zTY3JwIMKym7b)k_h3}%ph2x^&qNtf=&CPmtSv0K>A}ly(BybVA z2sOoQ5{z9WYI5Un%Mi?5)ELV}n~Rc*GN(XHN={RS)9vQ#leSz8oVB`(<6SgdG~N6@ zNZictP!}iIK(wXvVJ=3wILXE7E>3na+{Gy_PPHqIuITVI7b9dv6C(6>hKn;@j1)*G zbbgkLv#k{g%z3nn2`CYPNRa%= zE~Y4u8QKLdF0{!o&{P+9ySUiJbuKP(aixn(U0lx9Yh{J`cKhh)0BSpmUl$?BX#OkGOc$j)Jb3!{aXI zC}%U#BtPlmSr<>ac-qBW7xNUCMK*Is`HZ5F|D1~#T|DpN1^F}tdZ0r2G7nf6uef;6 z#j7sfaPgXp1f#r1SXhF;xmawgYBt>;E|&7}r;C4F{N>_r8<9TA|JTJ5A!dvO z;b9pMOMCgDZK}7dhvmHXSH5P2ui#-z4=Z|D$HPh|s3*8+usZ!v*vtZhI%+&2)%LmCwMqfO*2eJKgsr#kZ?P09IF?JTt@i0yZhh{Q4*TX~)6Fi(}>t?#xJ4sAtIN8JH9;SG> zM92jmF7z-}`bF02Vl_>4+Fq*WWs=h*S-LB@p*&ov=2af1OSxKdk@8{buJv$(hZ!EO z_i&xM=*_sDX;%f28`X7_T?w~%c-F(M9%g%(<>4L=w|ThJ!|fjK&{{S7>j=L8=av-0 z>ha>?5P?+I=E?d$TdHBo2mmYrc@Rf(}J$&uqTMysxMAZ`}<#*Dl%;fp+ z;U^D2c0hiX&Mp#umHwND-#skufd9e6-!^X%^KYK;KK}8rl%EIs*TWJKOcYA^SXy1i z^Rhlx@UfhbA8Ywo!^fI_{&da9 zPV;oSwvR4;{#@Nt2$gkxY~W)(AM5)dNQ4(3&NuYiA82po|9|(fg^x{qY$~v;B%g{m z^Rc;~|2&8$Y%;`_KDLtoZjwZ{_R(EB3Cx5cdidDQ$F@Ft`Pk0Kjy|^cv4fvKy_+Pd z^i;6V8EUn=r>q>lkY z*fh)UXdlP;80cdV$Eyb$ZVj3o>*F{kpqJamc8CwpM~jc5kAj@g1G^j_uAkr2sq;o= zHlyz&@DX;1#Wf%MX!=NelzpU}AVth9r{uRkRM1bGkD8AP5#_*q2r@+7M}wo&X~3OJ z<#-<_`xxruL?0)}72n;FJj};QTxJ>z$3^BTK2Gy-s*m9|qDh#}N7yK5a2fa*>0_dg zGkuKpah8wKKF;)SkohVbfF|wk5j*oMFjPo(x&u`ESXA+*^<2((DfryYf$;U-L z&i66J$7DHVV(h)Z$AxzI%$aA-R3Dd!aIvCr?DTM{Dn@0Rj~jhl&a(Ts!pGGa4V$Sq&gY{1)Gr!5l9X@X6mho|mk6Ue4G@Vhvde znm^{_2`+LUbNu|f8K!iUPm0Do8F#La=Y7oc@r;kBwftyE^JjfLXK5Txg)e`6yyW9W z8-nI9`*_9APk#F3xLB^&e7x^tzK?}I7WjBW@K*&3G?Ve0(R9 zZ|&@VuO=PRj&5ivP zA<3=*&I_<(QZV2c3V18f;!E0Mb~kk-=H9c;G=uw8&20k&0cbk5vJ zquidLs=8x|tBuycT30d|r(t8GTXq4l=RUD>7HK9Yv8dyt=Cr0q#1K;Hld1lTLU zz5(_Qu#c^YS#0|S*gwdBKEg4Y!5$c(e}H}g4x*v*H*OCOaERhETjG?51vomu;QYI3e}CJYXt54 z_xJ#31Q;6NlmI6LI4Qu10fvch%0(w9t1M;+rv?}iV0eJj?ChKBoh}o4W;I3z7!%;k z0HXq&72xa+Ynus=7L&yxd2E330nQ09P9O(Pka5oqFd+c%hSYx$I5EJJ0VV~wIl%b= zt_UzWz{LTk1h`PP7ueakD8N)Z3!Etq`H}$B0$dv4vY`E)Gjry?xLgG{`Cl2}x&T)( z)c{uqm@W^DPIC_Y+5j^&-n^d5=lTFQ2ACP(h7MI_{x{iuN7^j`9t?0Rg9ext;11S2 z!0qx(KO~cLXMnrxDqfdX+-y`?5yYg0UnT*sSlBd0z496wrH%_!>SdPM+3~E z9^i5LB;VBe2{CENl0FsSg8*{_yc%F$fENNh9pKpj&nN_)(CWDW&#OrjB6RX%fS2X- zCAl(1dqr`X_G>mdBHo!*#z6kJffX@Pa65vxCoe6L(%$!VtQfYRX$;DttsG+Y5S>DF4zY^u zB6HOctA*`nzBz@~2(ea(H5G*+IFPkNbg@C{jo`W=wg|Cah)qJQA7VrGZXmZLY!qT+ zA&kq5QM!iMOvt8^rZ}62?Wf0=a_Z5Icw1BSh~IeM0OKV%M``ZYB?BE*rl z0%USHM}=@g935hCh=C!F4KXOhF`69{*E}E{C;vQ2hJ+}nx5egGl)?--A~!@7!V3|G z@IwSP7L#N+mWwhDk%mZA7G^~x3(+e7bV4R&ImGoL+CrQYq7vd%MhtO6h+2qdh~dvoTS8t*~*+8;uKj8u|KXF9^$MJr-e8p#E1~5hxv1+aY*MQ zL!7B3nKn~m9nKChI>abBG_)}x#)`w)G0Be$adC+8A9t-iftqE~Pf5JxL%6uxst0Crwcs|6u5YL2o+9t+fJ{#gWYiq{%LWq|`ycpso z(O5C!l&>gN>a5#qA>IlxKg1g$7KC`+R*92K0ehEX5Zgz6`NQG&AX6h4@z-DCT&TGrK0@lorWfXr6VjCVVMZaM)~ez7cVBie1sLE{9ZsSX5N*5{GWyqR*tYr zl%IZ`BHXX^I!9Pl2(5TA&($NW8Rd7GHROQ~*NU)ql%LX>2<%!XLhlIcM(7q{y$D?+ ztRG>c2pdG$FlxV#m<%_Luu0T@4>GxJ8e#JYn<)fyCT)udTdK(r9NMyc1sY-d2wO+! z5utm8ZR}X`&|KsZwo^WAa^i^W5TRFu9V7G<(}X6zQ-qzB4+D|Rg6zV%BP8boe-MLjBsa!8zS5q z;l>Cz3%|)mzeP<>J=2>N;dZVxA;t;8JJe*9ySU9G+#TUwA@^wRI4NY_CxpX%Ai_ft z9#qp*Z+3)-)nqleSJ{{q? z2+u@#*6tLJeJ+3bH^K|zvq>7~{iO&CBD@^oRpGDLHSk)5`O29Ia~?V5*CV_Y;f)Ay zipdY)bi&?+5#H{wHkkRl5x(O2AK_D;{}Dcl@IizRSq*E#&>u(mM1DAlW>I|>;R_+3 zOA=fZ;Y;bJ;6%QT@Kc0uB77g=+X&w&L*lW9^FxFmJMj57>E{T)MffGcufj)(#)yj} z{4RtuVx0fU<21%!Jg8&*%|#gFp9o9E_&355tw2+;A$V^RwD8xdK;=u~M9$=kv7isC0_4W{g#0tQMnlj8)_ICpUJHzj}-{;`|=Ls#1Q$ z^FKzH7;DQdXMsW2iLtJHnzV_mA7hIc8^qXH_=b`j*-SQxv1yF1aegBpnSnNov3Z=I z227PssBFnJVswkqJ;qisww8x{r-;8zj2<$lEiXFRF2;^AwvVwxoS!ph2I;D2j9#h? zD^FWS+&M-iM(-F$#@HpsJ~4KsNsK-Uv0IGYrO+pb%mu$^jJ<^PjoY6R_clz$-8V-6 z82iOIFvk8Yl)9KdV=;Qa7zb%wCP~VJV;mOa5GF5g9>Zp0SsOJ^4+acqpKG0urGDaN=M6Jm^yajs&qN*n^iofl)G@}bEPS)Cu_f*6xyOwo?` z@8)%3jEhuxGR^QWj&VhdOJZCW<5D@{FgdPiF)p_wBALjQF{a13D#q28Mkc$MO@e~bsTCh3F)VHqEaFjd3p zMV*;*AUzWFOt5W&?GtP#GQBZ}9TM!Qoax8-?3G~W1UretWlvh~1iPq7Z)|cF`XuN_ zB*8ujc2CeZ!5#_r)EG%%#F*dzNwBvnNrV@(-8aGh3HDTh z{g6LI8L~bFbrlmhQdk+jKVeNgmO6o-AW9G<2sPt83C-Gw6C@h-f49*rK{-Kdf|C50 zIbxu;1Qq2!#BRV^g3}Vz6P%c!kzi6`(yl!gjr_9`oUMv+MKKV;(Fx8;FebrRc_zZp9N@SF zyL%%kgdt{d@yp@$!imh3a)ab#zW+~f zoAjF{Z%J^g6f$QeAfYpV`8UD60`Ew0CpS)lyDW#jWZsjsf79%~1hW&|pWwj+4~S!; zlk*U5MW+66f=ASAhV~fs1dk_}pI}ac=My}U;F$zZCYUSQQ<`NO&P(vLb<5Dk`LhY0 zvmiMyBzPski$Y#X@G_5x4kabw)da7pmpVNxNbq)o*M+>1;4LX{N;18LQb?ozPJ;In zyes5ANqR6t_#nZDHc28MOaCOnmkB=QBqsPw2)m4{FA^-W2%UUo^{=ITBT4)_o_i_2 zPq1E!9}+B^;>QI4B={-8ZwY=*@QY=V{HxU$C-^hL?+N~}$+MSn|4Q(;kR5D6{^gmU zVu`?|(tMQ~=F(PQCT;)SljTyZl4AK3E2UULy(?M{J=1FC6rF?^=bclmm15NtYou5$ z#p>3NA+IT>(brC~j+$N4{9Z#>>srrjuAgF?6dR=2BE^O&HchcnicLh=SdyHsGBit( z=9{J1yn_cKTc+riV(S!J3FjZMBFL+|_0S_l&lKCLxm}7KQfzO#NZYZ4&StL^JEiC? zaA%t{@m(yfPl||miX&3&p5lNMd!*Pq#hxPcO|e%8E0$}Y6#J=bU+aP1_Lt5<9hl>4Bb)Oi@TNAjPpMj!H2o#nCAS%ADVLG}R{a7*<9F zIWEPJ6oVDoAmp^zY>O%U6ix~+g=^EJIWN)zA)(}|T5oZR(^DiVhNehUR8nLqN+PsM z(yE-IErt2|C7aB-nxc`SmZHvykms7bHB%gKGhsxgcS4GjQ=BMQ!&00i#iY%H>y#9y zr8qUk@D5fCLE8~F`WY$4r5KrFbc!=moSot_&LYw<5QfU;@lJy zQ%p#4p2d0Q7$=i#tjQ@ZNHIkOI{cXDzjQ;Jn&O5O7pJ%?#U&}GrMOgvmr3?j+RXg& z6j!9UQXmb@$#!*$YlTctag7vHpBX8xPjQ`)ORa~QY5VtnZ%lDFE1%-F6gQ{1RkT}D z7@zbo%QA0Iai@Cku)TNLDEtcXJt-bYaj%xpeJSo&7iYmt#Dghjr+CPM;aSUMiJq5E`~~d-_P&(j ztrRb(SdikC6tAUtRUGEV-uaf#O1_@r4cql*2Yg|Q_fx!`;$4C7Sk8M^VYm-cd}w#j zM=3s5mzh>B;7?QhmEtoV-6=j#@pXzXQhb?WQ3nrn@|CL1#J)-Kow~l|8qg~Go`=8n zZ>suJip42@PVsAsUqt3`=;Sx)RLrgR_Y{Am_){SBF>By&9^)DQNr5as@c-rcpJFNL zbZ%%%XINIqGLm$@oD}luWQ7c?WLPo7$^uu)@_kB9Crc)+bB5J3teRo9tbG*pOwJk^ z))dVQg!8+0hAlF5$*@U=buz4lSzWTN;P zq6|TX(7Iv{CPXZRZ&T9@l?+*iQifK6j73g4Lz|j>t~Mss42=x640V=8DbX9r%?!tj zNt%g!LWc7*oS0!$hG7{-WH>3qsToera7xzxGXfgY$?y!Pv1od9XBipm^bBWaI3vTz zEdR7f8ZQ#g%5Zkp{w+izeAFME;oJ;kGK|YGHp4mcW4h>Pyqe6A6EPvf#0=-z(V5Sr zlhmZ2$r-N7FooM8!vz_pX1FlJMOph#wdj!Jx;Von+yzR8A2I0vvJ6*bn3mykRfB#A zl6f0LofM{ zs`*%k$E6Tq&XiB6`DBKtEIwDtJV^$9Cc|6OpUv=GhWQzu&+tly7c#t*;YAIQe#qqY zvbCcAs=8jY$O1KA&+ul3H>8te3@I08cvsA~CEu}b-^=h}hW9gkz_>bvjMYaOKDHd= z&c$a^KF{!lMHXfFGQ(GDa@1d2ocgys2l)Ii`Mo6l6Zug(m7g;FEd3hcze@kj z_Ab`;B<&9&e_H%6DKud||77^rhGvu3Qmy$OL2LVa{$*ORd@Gi1&Cjdl1Trz|E41dh zQ8CSxTJtr$aw|Hu{_llP=T@xNidE&%{4izpR;sSCyiV5Qg4O94dRXV((V$DZH=bUXnCn z=KDyevM(#3ocC`v#N9;YK6$8|JqmE!o0N*}ty#R@ibgA%YJQ}RN!y`np3s_~OD9SWlVleW%9C4hia4iQ zKf_ybS}V>_bA;sSlAO4aQqHtZnx8FwR4c|v87)cAW358YIO*dh**v!u6Rduol!X17bv9YstJJ)@71K3e zL=1jyD`vK0Mk}tfIJ>U5`VFnPNrpFCZ#P?ov|FXmYQ=39yuB57Sl#%)s}*-!1!D;DaAcw6!v$@S|3I){2j{K|YcERFe5{4}LD4ifJxV^Gl6_Ag`~5eA9|=|1b0VR{S7@ zX&dHGYSIr6K#r7>IaBh`qkPIfO|e{T^17Dqe_HWRYyMpHcPog~&%do$s)QvPGMmO5 zO8J4mv?R%7E?dHKrQC$q@={hPVMQr)OR%4nol5!N{adAk&g%USUrqSxC9EOE;H)r} zwM$q>U>8YxTUQD_vzH}Zzm#utD!i_d+^Ce_p*AjI6DicYO5u66nH0m{qJ-{hZdpP% z%iOAjtxNe0i&m7|Si>GAY-@FPZ7+QXNmhdh>(jH8-yeIGu#*((JBvVN7a_Y!_K`Fu zl)IO(hiKIIW4`= zoK_ZL?*QpXNzyaT2io32B^+b*W2KNkxRl>Xhm_D#%6}q8owCqDcS>-T7;z@-mk_9= z^c4Xkkf1wx?-R+l-@{5dOov+v!v6I zO9QvL|Ri@g(+$$63!C5hA3`6Wz|hsly$02h>S zQ3)58^5-Sa2$88JTq4gG+o2hpZaMqY>>OQgdpY(iOSsB5xoa3`IvuJ|)M?IZMhVxc zhS$pjk(mn0vQWR#n%^e#TkOzo6?v9=S@zpYxKsKak}SeqCEP8Y>D|NSt*K#3_t_}- zm+*k_2UT#!VurJ+m+-JSkI4K{y8zhBYLmumj=G+({+}x0nG)uzIZw7vtG2OnrXh2n z)pI30U&4zeykH};sxN8M*~{E0Un${Ld3a6U=9jQQiV4k{ykYZyvxK)wcw4;-?KBxD z?~3!DBtyTiWT<>-k&mR1%!?E8sjB*!d*3ICMvr)By-2TwXXcImy@_YoyZ}V*@k6oBtCWe*`$ok#q3(f zrplj*ZDwf4634M~hrx5n`E$4TEy~^0ToZpFfu`>J0cE2(XDCc*# z{UuotMrUuoG7c%@pfU~?-d~cgSTs66RJMmnl7D!){q4t*QU-`jpC+-R)f`yHASvWC z3I}p*8OJG~!SX|d`=Ukp7lfNCaV{Lqh%3<3#Q9nb>LN(bXO=OpjI+uZUB=nMN6ExwKBkPZS`{RpqoGk@O5+8d zD{o9`f>l`3i7NgiIXSfftoA)%NDIseI`FQh}Gr!?beyw}OdZ zQO@5`QQ<{z#)P`r6jZL2;fyk_v#AoiUf@iN+^8vI#copFZk9BmKjO>(a{eI4>$Wm( zmwt!jost|KyEuxw%eY5VaIfTjl61l@avo5K2PK*3Y$ZUP)qX_aqms;x;NxY?vCJo= z5PVYEQkknFP?@K$r^|T8a_Eitb7ef=0eMmUmn2`7{aP9Gt-e6Zk~ix& z6prhV*}kReV@Vg5@wW7LB+SP0zL37C zj4wr?H(um?t^B_!{peRZo{%|`Kh~1TYgiZvRoThl)ii$R#2D0ja*q>og_yo z=g!hsZOae3)!OpC#*5@Ngb-Y_4Qoj!$gVCHU#BfU{nk~JrCz@+Kgu?c+)&cgYGY-) zNr#*{znivUv$p@;ZnjVk>+webZRpkpD!dqOYgu)d+@^yEhTFCc+XR0g-9r42(mRMOzZ zHh67t#CO$eaAO$|{pIRz{YE@Z&0-RNC@CB}%2*hMMqthu&se z`_strZ5Y~y6V%1ZkWV?RE#KGFPin)-Z8%lUQ^Yx&@BgKkPwpe68!`>g(0Uu$hBKuQ zIjb%Io4QnZHjXleZTX#LOdG~ZFIDBXW_HskYh|x8V}$tQ$>unb(-p+Hg6S77u?(;#XRQ;MH<6U6Rdftun(Z*SF!u zHq30pmRzFz`_ICua4aUu&26})4Yyjp3Cbb-m%truxT_6!T7t1Mw0mqO_o?^(4x9(2 z50RhQ(v8DMG(lz-9uxk!wHg0l1ZI1=K0@-d0dlfQa&x6`9CY=IZ5KrTh5D8 zUXpxSo?ns9@h;@=e@UM&e1RlwUl(Y`^=2F1Qqx4dmVW}M4ew~;-fhDNI-TBY!~1qk za`(|QpDQRoYRkXf{joT_H52)?4WHT7#V!AZmdYX#zLezo%uly5Dc+l0OB z`a#H#l0QkVBm5V6__YH<^5Qo9u2uAh__q!J$cj&N1eZuR-cZ3ZmHY%= zT5^;grIxK=xk~$s3+BUKLte3hl|(b1J5{ho1*?eJxstEdRV!Gnl0R;du)1(6+!||2 z=d`l9b|pWtsdO;}NzVIv^1Qx!4S}2uE7(YcjpcTeO8(0@T`T$h#bmXadd);^QNcD9 zY$>E$1>GyyO8VB4{P+d!c75tSFnrq zK-)eQ>}JcdyOcdT^fGQ=fqPlbJ{9aQ!oDvCW*$=_IS5UO{UGCH1m;v?^E7 zRzbCbiiU4u)nsU_8WkL0K~p9s%24U1_rwZLtzcLMCuyk=&ZHBjCWOVx0v_H3CTQH@2lXU3huAq!3rMekOON@!ffmL;R+s+w@1Y>^Z0lL z^D3BA!ISEG!gf7X!Q4vz5Xhp%TJ4^Fm&z;1ww^R`5~=RJ+eq%y|A>qx+(QMHPHq!Iu?$Wy?Yux6e0nMKX)bSl?;v-)rg8 z`HvO+rlapC`T4nmUn=-jI!(wYXK@98R`9zP50O9Y0sEKDnaqDGSgM*oGW}b@k_tF* zv#-fVHD8CLw1ACVwuo72T`(i>7U=`R$3c9`eQnIEw8witVfU zE2$k6l+2#h{8;9VsaF*{Rr7;-XWK=qU8L_SypMGHA-;Pxzc=k6xu;}bNmK2;tJtrK zeU#q5!kG!X_Gd9UkSY#T7yTGMd#U#q^I%2cklA%;6^99AR=kKDQN^HY{t52LDh5<> zlzM5)Y8+j~Ks9Mggo7gg*eZ@wDQG@ey+f>j5(-r~RTPDjY=Y9(QwYC`u!=yHr+?y+ zbkbr~l?n?;!>o!{m64p1hDNX~w_JghD(d8Osqp>3JTre18db2DYjqS~{#P+f{GrwS ze}9}%#fi2=Y_dKlDQz-OsbWMGrz!zvHN1+`q?5xLKb_`k(m$_})%M@tRPQ7qv^`&n*`8CRGo=fwn5rBu zl4PAPuHupoap~%^DlV^Ln)V2rbYt&@|td?|*FOw+Xzxnm^N$d}kH+s_QQ8k-Mw7M}8Qcv1ogr zwiTHy-2-AiSj9ui!Nhu4hL6bYqaAX1T+45c5Y9WR@uWCU$qBv9tzw?d@M*h>o>ecS zlmEOxDlbTRQSzlKUX~ScruVAA*Q!`h#eB=>e7!Et8y0y}OOE`7RlHNh+iKDS54v|1 z@jd0qtlrmf%mdYjHqgg*Lg|6mr*cc>^J@OU_C*zobhgm^%PPK-6&DiyQ+`v$cU63= zh-@Cfmp>wKd6Q3s9)8k#;HWt%zf|#O6~Bt}TNQsO#NsM`7ecZrI~88c;cp$(RQ^%s z|BBBhi?CD;sO5*hsns$yFx;{=ELY3Vc5>)ydFd8DllaD#hBR4K zG^V{;Ex#`?fi*0$W({kJ&!tQAE;X!I%a6)+YFJlfdLV9kH>ja&4I9?5aV@`RZ6rhb zr_W8SLlf7SFwf0v*rJ9lYxzM<8u4yonrg6g^xVCMZ3MEnhXz6?#J7|G?Ja*t%VA11 zXWX5X>drOnQbTX`wrQs5$HeNxxMny)_7I214hem0*sGS`@~AV`-s)o0oSc*RP8m6a1ai9_Tf>kVj#E%( zHMo}Fsj2Xt31y*{{|LUQVsfcFHMr6VGCf~<&;f~RNNb2|NMuNkVP+jTCF$i3NTr4b zmtQS^y)30|XW7_F{0HQ6;*P1aV1}4wz zdMN}Mnue4&)^Jk|ww$z1H4#)kuHiFveIog(Bu@qwpS@qy@J$ViYWPxT=|24Oe+`tpzLvrhhB_tBy6<%2 zeJ}Zg~pqP3#Q%5`+AqqC4zEWT<7+sF6{sE#%2pu%fSDXhlY z_56tLB1vVPI@XoW31V~oIySCj10fq)&PMh8PQfE(lR7pP*j19=HmhUvdVY49Qd4fJ zu5Q+LD=Aw`9>C{+DLriOwo$f zFxx$?-dD2iGw~%@#>A3-$b-Ma8LOZGQh>(v$p*lc?YK z3F-*zi0k=plSPsoby7#Fu@K~yS)6*Qj^|1b{*~4t&99a|oq2K;7B>!O*yiHHlQHt(?bops!0b#~oD&piJn?~~k#cNTt3 z=JS6&|6Q{O>v%{C)1Iv%5PU?+qjk*TIiOyGkK11ABzNXVfI6P4V_qF|dA6uTl)Rp{ z&1dU)LHcubJTJx2UaaF~HD9t!j`0<%zgEW^boqoQu`qxsvu~y&J^IwhR z^?e;bNdHli#UV)fa~;13`PDKBE|!zuCF%T+I{vge=kagp|42qE=@RM8WT^(wz%q^e za~j?D9B1HKG-=mi23zW;AvrcB}nstqI!qz&Av|BsM~+}gM1t zm&gcpo!-D14NPocWCNpwoY}xxQqGnuj)mmW4V>G+mb84X<5!1Xex!svZQy2E-6DCb7ATV=^fdK`ibI?udP_kU%A7OKLA_%a;k!1s_htJ*10M?EC`?u#H}Gi#pU9S# zA;<+o`MJh!W_FP#<;w=Xk`uGMzqX#gmF;(u-%I|Ww3!>3KMCO~qT64j|JuNB@iLY}rMf9{#pbOtwUp2wAF`9|CA%X(`J{F5AR%QdorLtwP$0O%(a} ze?Fw$#F=F0CRS}?jV4xW=9_nQBh|HL6KglImXN$lV3%foK(V>5@b#M5xQX?f z*szHW{x5SQ>uM9L&}viZn{{Ar(ZsGzY}rK5Cb~7zqlvAW=-$NE9jvzLz~8os?bY1Q z5_V`}N2{CMda1cn6TPMEYP-ygl2emoY)U!a(ukbU#EDIu)Wk5$VW5+(ISHpWF}jK2O`O@pX~IWHo-TQY1l2k%SWXzO#%$zyHJ<~n&J?Gvt-FwbOD3UQlB$6nl z5)vw;kO~P6QWQ!__^)s6`}RBj&+|R&S$n-}zkB%hH=c9PwWgn|z=R5nt-!bnJTLKu z3N%t@XnU~&FG(D4{+F#YF7qoYvJbCT;LQq5s=yl+c&!3cD)4#*CR;7nb0W_bQ`MPi z8Ul;VGra<{DlkLlnH6|TIT_kf>+K4>Q-OCa8>`F~XS;6r#P`+h4=V7XLT(82DzK;m z^DFR?M4oa#uE2r{d{W`vX)r(W(+VuKBJ)tB?K5?c+~r?f;oTj5S%IY$SR(HFwv6kX z=l=>USN^Xn@Qnz2=;}JM!m@o|f%O&mL7tTrSR=AZxLVjt6@RS2S`~jXaUD-q3jHkQ z7vTosM&YkQdVVwKrV8(NeY5Zn;pe(b+$!gvLUwYSRV3eT{rpEF*A+!>ZmyVZXP>vE zo!&^C$A$AyY~u5lx-;yiXfq*|-9`2=!=65L^`V6i`})w*hc-U!<@5GPEAzJ&aqaFc z-d4Deu$@Ks^P!Uu`}@$rhxW?gsvKavqdD1!10{Bra*(i#MZ5WMj1LF<|_KW*GD^5J41E-^C|`Y-e0DjzPFc!dvFT6BmJdam~2dY8(FYkj!R(lX?d z++gM#eYj20n|!!ggoayuxYf9;a=VJdgm?IGr&V{+yM3tO65{>8&@T)KgTj!Indu2D zNyLY!iPU2fy6*z!@b7cD2DrR zzmx}rP8=aV(wy$$FQ!k2^$u_Ct#D!$^w#4>%7IHRxm@VXCgs5se&DW<#X#A#*9 zbnzL&nZg~d%wkarbG{?;uJxJ9dp^vu==&n9_@T&L;XI4ZFRS&j51*L6K!mjx`mn@@ zMW%n|!{_2(sN!PrFU`!Rm-_IP56j9F*XM71SRrw_@LMx{XM}Zs@OdZmmBLj%tQO(f zl^b<#KT26Eq<@_cKl{8p@by0LhMCGQ%CTJA=LS2R3ga-@RH`mIcDs~qhChQ^PvlR_J{W!vp-couA*?~SrT!y}W z93_RtqcsYr_mg<6-#c+Rg`~d~$p^@Aq8}%T@E&8J*N<})b#Gt>i=QVv-zLO`E|kce7yEIERk_rNOGvyz%9X+)!X2TjRlG)ct?)V_ zd%~qco9p?F5^u5)b*_P1R3y30kK2tiG|Z1XY!$J1m#vVy{iyK6CnwXo%*24rc1R(< zEUIL6KcXr|{N8&f=HWUaiThFQN5YSkqDjAZlvPt6w^NF#|Yz$j`Vx)yGS0EILeRFRK%VBs5lL- z__!ZWSY~E>N_-6WvL8?T@rl30J~6j>3-@%`n~;38OSmFemv$ z+ZV6;G08YP^SU3?{Fv;=8-DL5d5Vz!spYVHx$q0&Vj=4; z@#9B7miqCH-@CzH=EqkeUkmxXKykSrEB*M^kMI3hL0uu<8#Ck#KX6B=NM)5DtNmDG zo*nvHKYsFKgCFbs_}P#3GSJ_P=YQia=SDw%_2W0ccl%9)Yh{x>oBjCHk3Y=6#gDDx zTz<4|GyN}-?PVGM@#9}V5Wr3WZ2E0Aa zVzU5tSI8APwB`ZqDa9ph5kN~Np_$`qrM6lN+X!7wR%AmwuJ;LGmdL)UwV!Z*VS6EW z5S<4EyhFI7u#@mWAseNBka!niS7EmR4mN}H92!6mDcu7&OoSC(=x`N#2E2b>~>Usc#Bi#G%?)OyQ?*nykmzgft03&mUIzfH(0 zw~GvOX_e$oDR&9oh#dN)_)QN6y!#ezA(2WUoe`yq3S&aIXW15`^b@NBs16_%Kw8-- zGD@sbkvtPXRta;$ys#j2&bk0f0Tct?9Sai@>jM}bz&%p#72a1CrQv=RA5fA9%R(c? z9}3`M5jsbSus@@<7dZ2e2Jlz_PpJ5~kWuPS8XptDSn;O=ct(WLX9IXn&5_gpd;l+) ze;kjd0A94{cq7g^!RCRrINphhz8b)!049sSCVX8;1GgzQlT!nDD}ZSVy(yd?zzppO zX5%)~oaD1)csqc10(jT5QJ*c&iJcR``{JCI4+5AQz=u|(ZC(KLtw_U1#u;L9K>&-@ z)~5k14B#{IMbjY*YU} zfYkx~AZ29$t8BL2tPn-|=#0|oY0sJb$>Mqak0q=%klW?<;gQc=X ze5;V1p|VW}<6lA^p|t&NYwRD9e|i27>g9hBje^)&oVHy=c(NkjRlKo~Z^@bly%Qh_ zu~`tURop#@J%ZRPh~`1Gkg}(ccN$)|gWml)NvkrkO%VGAvA2}AL9`Ru#|+NDpHn=2L;hTh%P}K5k%J@4h^DP(3>&VIyi_!j8oy(J&41C=ov&0 zRi|>e8R%!RR}e=@=^aELd5#qJH9u`f2hlHxW2~afd~6WM$#Z;}^MoKy4`M(N1A{nG zQ_AWm$-t>TS>zPqslwANMB5oboTcI*;h942Xl`c*agK`T3I|(=wayQE*Y^v8xJ2Ya z;YGrWh3xI6MlK8Da`7vKSDMZYS1IS!L0lWeHPV@!`gK9v6vXw4Qn?|Bp~i0%p@;g- zLENI^troqlY;O*ec!%&#I#q?|?Yo2Cg}y@QW4pSh1cHbL5mYf0L}d{CWp9SUK}00- zrh*%ln2K=|sU*eSYg-n17fBmS;%w(vdSoS^rmJ~l+#2U6G#a&B{j zn5Tt7K0k<$#6K2(B3ximE+K9URa_+eEQrsQ?F%8JOu`xaQloP>GfRV5reU(huYwJ) zKE9D*xkmSG5I+R5B8cxbMc)b8RX0&Yrd_2eT^+<4TT$Gh4Dlwm7r*}##Fik|*<`L) zhM$A@C5YdH*bu}312JxGA{f_+X?WQ0$2l0n$F)f!Xqg$2j&mgv|tJ{L!J^WwF z!*>6c_>Zdm8w5hwDde4;UG<$q-nD>xlgLTnPN%+W$UE*DhtNdPro!Dq4R4L;+&$!- zUH1^uN$#q%xfU|F3}LTO!y|dC5L$=OHiR|`(YbfXJH|=&kfi6Oie!mA-nQpdRVScPd{SJd@tiufDC zsY16z-wb*8irl7)%n;5La#76^d0Y67iOxSeg!iP(5mJ0#E0E;F5axw2SFN~}JU@hw zRs2Y6fWvo#S|IV$5Ed#42iuD$Hy+^p{8#w7j$E1-tN3LIOG8+qVRBs5xpBh33Sk|O z&=6LI@J$Fmgs@zhnebb+xFUq_LipZx9CgmmO6?A}CReKiYlJ@v*9w0UvcnwL`VjsK z;pY%GhwzK~!#o>8*cifZYVKDhWXFCFVUrXNpBoj9=nsu$O9)#P`ZI)Ww!hpOV7Beb z@VD@v5dO94Vkc4Qo%weby3-VkjVc>XS>%lsY9eeZ+^rJLMBJL(L!8d$B6|wix0WJ% z30nzU3+ZfA+3<$EZKZb!aO<|6qWcQ>6EX?S?ZrC?4-mS!?No{Gl{l~xhg71o^n)tV zMT7~vigXhmY$CHATE;o~RC-k6s7f4OiQbjyS&1Vmy$hDte@?IUvri?Ctn@B?6dCPX z+3;9F<>*QrQ;B|3oPmqyxJvITbG)#BB~B1wTW-ckPOQX9>d8PMC*kBuoFaaz@HEqD z=Ee~XQWBTpEJe?*#5vY38$DM&94v)Z&acEJmAIf17gyp!4dfyrhrq?-#!kGn5|>H8 zTnV7pgUdba^r3rVgKVScx|Tz@!lD!h>OQde(O-J66ibW0^}RneV)nCEuo z8CHoqL};UUmppF&R*3sd@mG51`G7DebkjoQ*ohH2U2`$sB&-)Y|GnbOf1d_5+~(>5=?@A=2uBJZ61qN*5`RQETKK5Y z&GX~pZf2eoe@f`~qtl-$Q=StaTc*4q?y|jDi8m@Sz7nr-wX2gaSK^gQOeotI9K}Qx zUlmTW(Cb=elU1BzBF$4P@s>id%fOUm{#=RcMB*Rr|R5%x}NI}3LaI(^qLb_=6%*gNQ&2>E2) zR0d{l7WO_Dpp#MJ9@3i&Ih+<@>=i~!%SLA_`Dtz)MjPp_BI~vdV;?EBwX@KEBKwEY zUWCtR9m3w*4A&^vJS%eRr09Xd&SCFDMvUU#o2f)92Q28 zuy+kQT-Z~{B1h3n&fejMFKG4Qi1;U9Ve}1q=R;;-k>uzwj*&v%FN|Z2_u~0qUFt79 zA&gVP7!byZVeitw>g?@FVGLB-lZ8~6^HljAKRt|d!#E?1vm_1@o+)I8v(>|MtUs(W z*y=LM?R*(75Hj;cVO*+)E)L@o5qGw~Oq_c2o>)S;{nV0pczJrJQT*LFdnw(alDp=G5Wtb9}DAg ztK~ZIWEf-Qd8*9$wDD&x8_nFtn*M?%87JjM;dtRo!k5FCU>^2=Vi{*~k`-SMV~Y4> z)nbSn8=A^x7RIzNW`^-*7&F3{ZdG=8-m)sQEX0cMNPIVp*%qZZCyY7fAfnLd@oR_*odAo5zWZ<@r*$B#fn2#reOInfz<3wLFX! z@_cK~9m#3?A&m85tPEp~{Huhk&G};(KS^0@+181;wtg1>#gq-^`8AAfVf+@xmN0$~ zV{;gr%;TE=!}4#H{%2YAuQ2`zW4kGTi|pv|P7&-J0U`~b0<#;tM9?VG@Sf1w8b{FN zzshbA>@KC5DzX;0JWLOU`bzkKlj^Iw<6_ zQS4}j10(2c-1V8BE;4sD{ot~?E<^VSdPQ(p1cyh^qb%Apf+MV!%ho%BBW36#q}W#m z7d<+HW6a;r3~b`KvYh;bIGRteS_4E@^W-lw(DaidIK?>Me4b|fbdh1a{}(ya^s^#3 zTb!SpGyl2b{QIxL5%144&l6I=z;yD9BHmwKUo5;tc&YF*A%E$J(JR#RD}_UZR|&5c zUL(9#$b=l}^~&#Nb*LI;>ocLKg27;n>OVj-WzCUzr#X z4+?jctx`Q<>){9@;?c6cQIAKEFi$dqs^y&y|#4}~loOs?m1(8}a6h%rFtrxi` z;yo3zQU2B5eGv>-KiyyOJrKb|5%14z9~6!dj+B8Sw}&Gbr6R}9;^+w4bLI0RfCwHl z{x_5=Mg-pWM=S1*P1n);MH-Zl$_)xW|bE9Ei1oO+xR6dSiK?I*jbe>PG3Zsk4 z^v}!q;s};T@MQ!`{+n%C1YcQomyP(1Jj>0wB7z?rkKlU~XIhb;x*N-yvgq0f zHb(GM1V2ZxPWpPGYvmW?8?4H&BELnjIfCCK*kt;SUi}gAJ}6;vYguSp1l!etzy3Rl zf8_Z$f}Nt?X`i(a^-lOM+b&Twmfk3eU8OrulPGpmv8mOfznK~Kh+^+3nn%$xiajk` z3v=!jMQe$zOle~knWU}wK31!ph4wRLf2-9YiUTDc5Jg9ecCu(^Dp4F1MOTHonC|+2 za1@6|afsET*u9MRFwSZ0Deh|ZGQD@yJ8imII#OcaGTYH*yk8W@s(75x%__0KiYHjF zsGMkgU=*h*db02o;i*EN*iVn*Oz|`1A7r(d;jAdmR><}C+$b)LVsI4aM{!=6PUi(y z>munFmql6kQj3ybE`Eg>hNyUzkoU>1p=%VqHj3+_xIz4S^AC;U#qd;nqNs`@u3|!%6w>2Hky0@& ztQJzwlzDPd)Tx*k7NV#%8)G3V4M-iu;d6mLcGW)w3Nnl5Cv znIin55}Id4@op4vNAZqCj?T@@Y!zwXt;ie;y&uH~#u=I$#ivosi{j%b=1X7B@Bc(W zWR%+{5*G-$Xcvks5`HF3$o7T!;wYAhd>O@(D3*$IEZm;w`~N7uiQ;RC>=KhNkK)^? z_h)qEF3)#Stc~LPDAq*rLlmoIUMakVfBzfxUZiuQ|3`@=EdCV5&nm8qVtv&68UuCW zFA_IIvC%}n;bG{vD7HuOdlY}jut~UC$lb9eia*7-3OSkEqWDXk)wvzb&wo{9s((cO zwZ)7Wn#R0q!Ok)45<}w{8pW`y6jzs_CMvppw3~P{Aw#>1aPphSuy+i5#?Vqq3n53e zR}8IVXk|rK;nv2AZDZIs<_&+J7}`nXJ7oUQ%6?|pUr|=+5JT4(4v3+13>{-QP=-!I zH@*BLxPw$A=@Ntco49T<92UdDF&wJUAwo9Ct-CmXNu~$;%+o1f0mZyu86rO-hNBhj z6+`bB`o_>Fh9hI%$K|g7)A+|62k>CT%_oQ z=4X|QrEsK|#&CHIm&Fj#oG?Ukg^J`uVz?%Tt7K;JYHQ_MQ?9e2-4MggF$|S{qwps4 zbmM{-zcq&2W4O(9c7B*RyTRmlir;0?yJM&@PNzSHN)-b!1Vus?<MOG3EvjJBV^jyF}xr1o?hP*&Ji*Xl@G)}EK}yiFki)w z%EV8^>0c1Tr)4^oMKOG4(a+T)MQ)2@_)_{3i?YRKX820t*H&C^gq{`RByJ|ZSCM=r z&!T#yS`~wP3R@Fv_=P2!*K)t}{4X=fIu)t^9K%NKyI*41AmY*ze^v3f7=AC)H^=a2 z41dJ1CFcD~&suF;V<2(GZN|69@VD`Q%uLTt@rE})5ZPIHGe7(l*;UxsME0<$ILU5t zG&8=t8Jdgm(Upc4akP%3WgM;I*vp(9`O-!|62+$5#6eDH+qiei<+hKMcBbzaM~67} zSKaoOfzx$>I0@@^ihDoWcA&7cbQZhu%Xs_6R0Dz2g4aU7rwG#nX6UwMuaI>RyI{o>wZ0)NDh6_1Ofe;mh4 zcghJG+5jmuu%9Q14>aZEc*D8qRL)5pr^PWyq0{3y!#r&6OyjPT#B-#a8^?KZ3@(d0 z!v%3%B=N$y_fbwSp8Qq3M*X~0oI1O7xz)WwPAWsRcdoL1MCF<|u8ZSZb21x;O#KE{ ziDRgA4vor9;y1^=UyfptJ-;=MVG?f>-frW)Lq&S-6rq#+Zt;qE!;eH!@y8J`r}KnV ztQ3ZY5&8McOR+eTam3?DNaq4$KY8<66-O%W{iO*{u)J|%+G_2!nz(l{&B#nbotTqI z&g~RotqgbQA66FQD8(B-6sVWZbNIa?Y>QQf$MIks_e){%0TDJ$ezQ8mJP&cw`0~d* zY~>O0(Q!N~!ko0R3b)6lxLfEa<9JF%UOo9i&(m={6ZcLmZdX1V_dcTHt<+d~o{!_j zI9?EEo^duV?miY@ihG}bxo3(AaZHSRpHICaGYzk*$W*+Ce=Y8PmF{(g=waO{;%^9D z$0$xy6_V+3%!qs6rf?0-v~@Krj(6gC+ltKWx;;CN_tY8Ioui!Z3t6Ox_@Rn(rp<;yshiY&1;>010Mj&Il>h1`-` zF8-~M9=FuLQ}KJNyOL)TDXZ*k=4?O4u`!Odar_*|PjRf5XPuDq@ACf=#|BL@JMWZV zmG(E;*dlwrNu%2=<&QYFs+BD&awTx8iQCNoR~*}oQ~xIpB+&m~-Wz!*|D6&I&yqVQ z8mV%svYT>|?iu%9VAob40nkU&T22UxUI0tc!sW^>Mi6zalWCD7Gu zuC0Tuc&Ms$PvEeGcf7Eo!^5Ss*fW76jQ7$2DfW?ar0MP`J}QBuO*tlke#TpBfXAuD zrS!vP7LoWO|*oMiey)pA2PC4o~-r~fnyF?xpdLBcalKU+mc&k;FSI9SN)=Uabh zxG;f>6S&CyjJp1~b}vid+5|37;OYdfNMML6UdaU@8}TaR*C@0@zs~d<61X{mp$V+v z5*6MgWGhr|5x-S+S)_P-0(T`aOv)XW`PN32Z zjB<-u_sHF?S6qff0!f8jo>T(a1k$EdCs30>rYse0xdifM*$NhAs7^Yku9U#Nn$r3N z?kStw`(zkyJA%#!#2*xn5RMeO`F~jcZnje%QE0UAQ6U?p^KtPf5_nR?)g_Km@oC{R zLg#-@e5~+!)4AHmsX3DI5}Dy8k(U#gU^a>q?dX10{z=x!*Atj7J~@FY3Ge#;hH$EI zn($2_yTRy;1U^V$W&-af@Rlmh622{bM@SpZvlHG`_&wnq;rl{{sDCKuT;V+7eBnnz zch#ozlLQt>`Bb=2NWCAw{3-r<0$(QZh3SiV02`o!^zhAmkA&Orm@HI~qit?&K zWqATCzV|9G<~g|RcKz9@P2-ugxhf%CXsxj&~@xr zE>0DHSEHMhXS2}VmTVDsdHxjNmhk=+h|9@@+Y{bvC>EKA6ZNk=J0-nyzMHq5litkp zW`l!ml*C?1?3%>xNi2rjP15_h zb&|G8?2~NxZD$tURPU?Ku*hxyq<3@T=AlCpQzdpxqH_|Rl)}h7*NOp>3dwCzp--)Fe)m$mr=J z&6RLa5@(uzmdGfc{F69O{9NH+(^>cYBrYf`Qn@IJi=~jem3gU(mznK~B(CJVsX4cv z>AXtOtA*E;_4B$Uu1{iU5;rJBCkMqYy`<_laURTki_O4o=Da=mzkB;TB;F}>({gvR z;ogHeeO8w|AWtxfkmcbWQ8{t^8>vVQ+bK z*CdfiA}fVOZp@Z1YlTIw;W{bBB~aevag52yG*nRA5r$Rr+4 z;-RGXP)38h(Hf=I&LX$bNj#dwV>S;i&l5>JrRq&m!Fd`PG(mepTx^ayd=fl&re9=m85r*@A|-;uO=}?hDk}hmc;AU?&PvOZ}7lW zk)52T9l?qm*K~<9l6WhLnPy;Sw&h0sb`tMMr^qgG)y>unyeE-E;I82g{UC|CNqi`g zHYTTkUef#GA_;4Kl*Gqcw4Vsw>itxFp(%?*od0w2FOpbnQKv6SVyTp6WoBmkI*D)0 zx!gi498s@ai^Lx+O1>(I)hezLQu)!$Kbf*lWPK7pi@0uVNaD97Hk$IQ5oY+^GHjMe z<&Pw`7D)TrS+iD|m?<%wv*`c>nabMwn!u_kfi&T4I2jKxiCh1h=Jz5?p>?}M; z*hSb?*iFa`bRJTL!>e#;6?!N`ci~~y0ebpr5_(EM!t~xMGTO(KzEwCz;!(n*s~XlP%Awrko~nx{%`?RE4vuaAsA*+eO~r zo?XVz6+d3L!R*O-sh` zfY2pzSZPicBb;#cB&MAeuR>K75>-grzN3euNU4}MkxGqtM#v)fQLYNbD&(tBtNev3 zELP?^6`6;{l6bv^?lE$o^x@{bUxfY#MMelm3Lg@>CBb*6qpG|Y#g7O_3m+9eCVX7@ zgpeJe^C|H$!l#AL2%i-`Cmbtu1An0kjHXm3Kq+W)-H}p+^tT;WJfhmgbPkEEV4tzGEwY zwu%cS<#!`H{lT;%vgT)kwu%g^kNXjb+#^g=S?UtL%~T&eE>#o)+4P zgGzx&y_F2D%|`Ry;%$Zd2-^ww71FR@3i}&(ckIkV{Q!v_g`HB^ERlNW6b>?fmlV2+ zyDA5ZA7ar%MY^XN)^?8+j+AnE3Oz015h?T%?=9?OI-Bb&^HIX1g~tf{36B-JUb&}+ z{!&gz;S`YpDV&({E*U2Y2MSLXaun20mF+a)>B2LFgM{u}LFZX2o}I!uDO|wnDes|U zu<$(L`9eCWUnuiM!i$BM2pOW`vJ{4_oXmg{C?pBrqebeg-25unesk!e@IC2;S@%RKO!7$Iz5l2@N^1~r@SWx z7N1DrN%5zIV@zk1+cPRYD|}8kR>&r}y`XN4OX0;7UP)oRP2fw?Uru3yDQ?aus`#pK zQVOrh#t>6YPT`Fdrr5#G18r&@BD?XWHAKEt;xco7 zZ63C=+(g>At*~0(OaCE-RU#|Rw%Q2IKc?_=3TsnXpTbWmtSbvKGY!OFQrM`R8!Y;( zHNoib66xGz;vYtKWMK496aO;8=--x*hJSflPXF(W&FIeQ|2+jXQfOB*Fxn)IrYiEF zcITgF=HK0HOxs-Io~E#3OYyzZXeH7*jW!nD+elm0qM2JeiTkFppUD1c9FRu)bi>Q5 z4ifnytD_NCIZ(W_@F1p2qf6R5-n$CDKJdqX6g@@%^46q3W!=qcV$I+b23 z_D*{rG_!c5Is2x)f3Qg9Xem4H2l}OPY#PT&E36Y1g(YFV@E#$P zxLyrUV`Lilr!gXp2hw;@nK|v}%HTZ2sXY0o@njmK(s&|`N78sKjnQd5DnGkDM*hcD zbhE)))Sr?vMo5KepGo7TG@eakTpG`%@w`G~g=~eM7t-Fx%_J{s_9%|GX?!`2iD^ub z`4tmgbF@v8{+jT0;p8-?h&ay}4n)Oi!Z*{Hna1=qW|)W13(onL6c*o3%zl&^29)-?X)$ww`+7FUQ{ z^W@uQ{yU9-ME=!0?^uV;dH%2VzT&crkc3rst@bVujjPe58h2XGrpB99qfIq-uSUyi z>`{&8rteve7RFtzy_Ba_HCq2y-&=ZH;XXn($13~EwqG^ci|nru^$se!oE=SM6>bMs zqqAigC8bL>x|-6S=YQj4`1=plIHDTetI?wxhgCPcOX1$+o;|$U`}ne_ki}jiy@k~K znBG_9sIt23!!gz9r&f-&wmA96i}x40<8DB;x57^po+MGTXlBl}`57z&Lo}aXjSH0FLd(M^DYnHBH)bGSs?cTC zxLl;4#4F7|q#9Ql=fOz-H7Z^!yiUl3H;4=s-YC3D=(62XjXSDwYc+;Rysa9yi@2w0 zhj&W3OUPCzR*3tm5vYb=oKwmWx1bd(MZ&^}@Ff{Iw3y~0&LygmQb|hTD7r~Wt4O`N z%#)Fr73QjuuSP+fNp|F^lTs9xs!=b(JbdW8SKQ^NGF-*`g%1e%`r17kj#QDJheRG0 za%fZ@5g%RM@F@(H$ExwT#A{@DQk?ozB4dP43z`2}i#}J4vBsYlao4zU;x7uv3t!@{ zv00i>jaMYP&b%r|;?2tpEyP=zXD^XfH5h3V+olG4tChCay6aE7 z8tiMzel-oBqOx!8YtTXZ0T!jdlenu$Pv;sOB&ExL^=>L2T!TYI=wy}d#t##5SM$Sb z(9`rIOz$nyM|h;Luh8W=TKpJczcT$e@#BU4g|43i%yVK5PBPBcPqw)_MWUNn;^``$ zVa`D!H*0^LCC<|wdvZ=0A1r>J5;DZ?f*M>X@e~y=7I$Z}OT{m%!R0j#&p2#!nrv4p zG^D2C{CRZ^uBrLo-34ve)!=%0+R4vTJ=+>uKT%YW&9AwvNhS4c{w>ERmhj-3W>QT2f&UW2L{B;-j7-Oy4ss8%su zg9)lqV|jRjb$xT$^3n?ytrcOCVh!#QFV&!4#O>dEYcO2J`)cr>_2>SYh7Wn8{0N{1 z#1T9eM7-Ye{=WvJRUB1=M^v36Lyw9-R;D~rgQw+uQuq}2nuzm1Q|5e5e5{bEn(LBE zGET~i!j0C$msEUNI6>&nu@lAJRb!I)YeJqpCyVfM!<=u_U}{an`|W8pn4!>{HJC2q zR-Hqd->Si^8t*R1Deu(aU0ZvzX&wYOtmTD{HX22CK@FyS2e2Kh|JvjrW~lH}-Wk_(e(9*Wl-}hBjDcR&jNI ztHG8U{9c32nz~I&;x*0Be>tBbx2qQS<3BREC-I#!*g4~!{E=z+ z8uKn0>?+>K6h<2xZ<@hwnT9h!Gm#z78hd2WT&Y~<7UHbiGK0M`Xq9PrtaD>&W6`}c z4f9WZpA6bbXU=^y4Oi#=Gw6^(d+F}v4z08Gvx_`kGdMVdZW7(c z2M!O-pl1f%GdRrrJu*1lxbwKZ(@S}JXV6E4yZA^pnnB-;_a!kNAV+1qhtQ*i#|SxO zZrp3fsmkpt_7^`v$mjs;`AJg7@cv)qMsb1og&ABdauMsQSC^>B{l!nCF3aGm3@(>)MFvAeuFQC6ayG}Ug^(59 zM_1R%aGmgaA@>eLL&a~*;3kcQrNUIK*dhTGS{3_>;vij~GAsvFH9X6wgw+tn&Z=1^yid4ef8C$K0~tJ&!GrRT5RNRX`>_0@gpZWf zeN_Ch44x2qTsVfm|6qi}A0tlkbOz5D=h=x%^f|4cvBKwtF9^p8UlfiPvif}f^OOvT z6NIk_CkkH`P7=N*q<;V}0U7V+d5Z82;Z)%?;hVzgLi)MQ%-}8caF+G+ZIS+pzMH{p z72mVy9EPkhOOIuX)cb+GNopi@l_`w2G~=Xl+iHdG9Rt$)c_0;nj-S+L?d9EIMVee-;O1 z(LRd~rqjdf9W51$+z!m5bD84ucg^Bpie);ThghEO(hn25oQE6lnZ*%V^fIT*)<@AJ zg-&s`h)0{)FN+hhI5vypr5tB^eSNGQ%mxPs`#A@zYJAbCA_KOXAsO zp>wl1U&X;$oF_s*yLy56g=Nl*#V;vS=)5e8%cZzlS7vdwibJxvs!YEoi)*b9JLci~ zEN(E*P!SjUf9Q(0sXF=XSqv*n<)U|G;ZugYg%$tJ7Em!*CRQp#SQshG7Rw@$MZC=E z##NO?wZv2w>9S}|7FiWDmW2LX8F$^QwJOCd>a!@R=rZ4v#qccd&Eh`uIQ{-I&x2Wv zRB^)pb=CVX8;50xp(_J(k(kRp@3 znZ;XKOwW2ZX)}Z~g$z-drMBJ{z9Xc_gxqFl@m?06Wicm((8R8JQ{h;DX;VNg~!)z8?viMQ?*Jklc7C$MpPPkt9vzeJ> zLl(bhu~GB+tME4=L!7`(%ClMchtTb{ty%n|;-A88S^TA1+l7A%ISQJ&{j1_mIq%F5 z;m*QcgtYCN!#+7Q&S8%nn&iB_-&DApu$gdoA`!+U4-@vVP|qCtD%BA=^vZdMTW=wA_Q~N$QX#ua{c_o^5MC)9BD_j?wU9QNxfib0j=L_0 z-Bi3m#i2q*Z_ME)mNpTe`PkvTjh1AEKGFe-=9Dn7#FPKHNwcsz&4 za^5RAdRXO&96IR*9g9!pFfNBNIXtUcPYa*PdCzxz^ms0Z=W`e+QGBZALmm-F-A9H!;)S`Jfkc-`_$7IBX`Z-`H|9r0!kGjo`3 z&KbFeuW-DT!`nH`lI~i3Cx>@c%f0dAdVVj5c{0q&;r$#w6#qcTQF9=3a}9r!H9v<> zbNGm7h8#YYf&ITlqgY`6g*kkd!y+rv@VPp(LQ}e!dJbRa@O2JLa#)tb(y}~XiMyTt zO%C6xxLn9qR*0}mG<+}qLk_D%R%%3id|qvyQGEH6!>>84&Ec0Ee#&8e4(oXK&?Skz z`q`Z1+&1t`$oK!+n=Jm8!2vY75a-I-E04YNXq87BDXsJWc^A}H;y!t_6LGI5n)Az_d34TWe>R#&`#cU% zv_t-Xp9ruIo$}rku|EeY$}y53lt&j8$vLiWdGyHRU@3>>ai|CjgKc z6Y@Ao$^hYsLbf|lglSI};kZua6y(3uz$FaG&zdNSG7mg$z-rr#6o|RVOcsjNy;}g-*Jf6DCH zdwI;sQxY**ciV zRqR+mrveU?$i?5efUX4`R6rLgZuqNt{#VhB;*bJ*7jS3+JqzewK#u|rQF!DDgf#{}*s_0sRU%p@3rxIKF`6EE~tdoc&c~ssRO@ zRKST=WN4tcv$1%Jil+)sGus&joL|5oPF(?K7I1a}XDLKKk4NG;1@Ej#GT8L18A3@bGJ_J})L?=0XhE<$F1dgDr9&aV9XUqw@ehQE$a+iGOArhrTV zc^R_89EYHa1r=+BbW$uDFBMQ<0N21hQrv2}uYi#S3@_k8iT4-qfca?{A@26qL!1N^ zA1+{&h#TW*^K;T36MtOzgz!n>BkJ3j0>%~abOFy7@Js>EDfF!EW%hQgRs!!FUQlSq zx$(sU#!GQMdAWdB3z#6~72!l7=ayF%=9#2CuNCmR^yU($h%@?z$W)F(`kN|Fx9E%l zW{SThoMrmkBD}!8Yszeq_iVo~#N^yQDBwedTyN(U8a|wwZ^Y?zep0{!%SLgb@kJt> zhtD;TFN8EK7GcFDB1;QcUcj;fzAoS^^Kh@x`HeZrzZG90Y{h3Wb@B%_u~O(BGgtE* ztM3-BDd19(wNifK0(QD8t}ozc)%r!q{Or$0@n6fb{a)~H;WkMjq34eRwid9Z%;VbK zR>1ZG{wmY|F5~|efLiQS>z({vo}I;A-A1)&Qj1+{(YV(8ppzbMjx;r;F&_bHu{%9{ zs^#B*)uOq$8&r#0w5mnRT5pVdNvCa%#@kxOHp0DY!MY6XQ;QC@XjhBkoSv){`M~R)x!yb07#X%Ycd6!yr6?ezu!QvflEQi)MoGt0(d5Oro^uue>(?;jc zRBk2rR^6WVnC6nKRxNk#Jz56NkMlFzv9&l(sg75uzi^SYKEPTzN&3KAoFa0vkoOGC zaB6MCRhak5r`O^P6$jPg%rc!eerR%bt@lCyIl^;mF<42?6P_<*l+FvqFA};YE)l;} z=qBNE@hgNk^H0EP8=kg!!M&;$S4$^nwrj1{b+x#@7B|-7hFT0I(ceJ1^U_W7aAJAH z-BOF&YrX6Kt+lvKy4x=f?~rn5t#=W*%QCZ-idy(<;nUFEC<2NGg-&r#zBGqx5m6I6 zGRI_#3n_9YleMVQ1g0cXVMXWXS+}MZ8R_l}oU8S|6p^n*t*R7iyXGW=SL-?Zaci`(y(_9cFiSlo4Hi#Uh& zr^vQiY_G*%>byH1T_0G>%40Lw{CVskki1T)0@y@MhrR32w$A&dLH2}4F?-&w&O3p);p|t}@bfS1e0wG7 zAhSE-9CniK#?`qF2i1A2n$^2VcQfCu4u{lvd+^{o@5dt8H>Ybuwtiusf z$a~eHw|F1nk;1+f-I2|$C}tR|4jiklvNP=4@n$}u&fB>I>b%p)i4xs9XWfAkU3Jzv zRZ%8Ctq!M)y9pdr*YKmJES^;dA~$xDPLgxw99-t7e!hwq$jlxbaygsxx5N-du-U#CO!aO+}iSlly`@ zg=b*S$(_=v+$C~%9V$eanPcQk`c(`F`>FrbE9<=DsGEurh1~v)iO0*h}ui=QiA;>>-N} z*5RQ#jHts%E`A;UJVi&8`Qf_%-IF|0htbxPN9*vI@s@HvQHLj`JS7}chv(|>be(s3 zeMb1KkX@oOR-WgDF9<0z^kN-eS8=@XCE?3;m{5mT>+p&)Of1VYN!@!*$P66LWI()0*`*rxB4xiQG z!#aE7br3q?t4GaUDLb!zVH<5W4AFD9@rY=jU};Qim_(SuFgr%)gYUkvc4s z|EscE-_&{kk!QJ(naNkE)_211g+B;a3RekfWB1n7;rBZHC}nLOei8XexULTCHLE|{ z0^p==P-vs@SK)6$H=mp8@NXS9*I}E)KZINAu(i&6NdHsFM#=wDXuI%l;Xgu#XxOQU zrbWH~DPrd$b}eF;qIarnBy_XdScWD-H=opZE23Eu&5PK*=(V_q(6zXyoGpZ|73zBx z(W;1c5?c$~6tQ>F`}_B{!hM8vQrTCA{e=4q+Y37g-NDkah~7nXl5$`XhZfOU{GcMb z712fg?^-sBgB3kQ=tj|9{IDW=7SW^V9Xp2$*$46?6zwH+#|!m7Djr!xUy-AV=vTzi zY?1GOg!GUftLSk;x4)?OFXDtE&MIPn^b?CXy@->FIHibz>gUO2y*-t^;>lmg-jbi8 zT7!gV3Mn$}*+pDj#5qNrFY(+W2CLS2LK^V`K8+NSDk54$qKH`0dnXeYvQhG+oK->=DW;3a6j80V zYRX#7%9AV0Tqxp^B5I4cw}?7TNKsf4)(h_uGA*a>z9L2xFpl5{73ZE-Grg+pmU&ITlHBR`V z&>c-L6*0Gnmy39-hzUhZDdH7HCl>Kq5w8}#zrCF#S9G$FMT*?sprMHAMNBIq z%bR~8b@CZ<&J?mpaaIxUsra_=og&^XdJnv_g*1@QQRsc)2f`194AH=CUJ>()_`HaZ ziuhEakBj(3bGV>vCKoESNcfp>$NYa$#Nr~B7V)KeyQHko%jEn@==#hSzfp0y@Y^C* zhOlfU|opJqXYaV83C%$h9?Mv9t^!=?$2U89(g&8`D zA1LfBJV@wH2wlaym2j|#+wX^pcQ4^Ek&*lw27dyggu_+rDLg{h%M7l!eM&e|3X6S3 zjw*T2FDxEodOwk4OE}IH_juC3gcGC;5IT_+PqO04C7f2mDOT&$Qp4lV>1LpLkVVh5 zXg9TfP6-#4aIT_*OE|xT^GXdjlQdjV!i5TvJO9O2WX?-1=Veyq3Mp5Xa7_tA#IGvh z>ar>>$+hNZlIu&jp@gCG^y8zP5r(+kT*56<$X(srO1RyWVItf$cZ%FqLWRiPLg)8! zW|S&WLZ$SeFjQ)I84^~J`6HYMIax8rRBADyu2M-_&Xkn2>8w~Io+%+KLdEr#weqIa zmQZIIs29t4eF^uJaIYyl>JBgAepP=!$XX1Ikd0(y2@jRC}E04*@3AgOjD7Z+m04zNStX-z6YLV{OywWikMDko^ASjCCo9-pEUfSg!v_W zs19&}%`IV`I9nOTKmICVVF@3Xu%Lub%ri!P_>_xZgw91Jd}g)S+!rM*DPgfGUy5+? zEEQQM{K}%!l;oQdmYecz2`j|;@W^c6m+)f=KS)_w!kQ9Rm9Sbx=H%&!=-%(GmH1N$ z>q-runyoM4XNg<@>}N;b|Cg{y%El6YE#WtDchdM>oQ-ZSVOt4*l(4mgEhe)1pE?Bi zKu!Kv34fQcUD2Cu9{y2r4DbKz(WGAY|Ml3p9*x9zsc-1juJvdvDTdhAw@ z7WHUWkKGlezK2M2;hrYa%&ld8!`m}XQLB2iu16agxCZvF$3FFFt0JQ`x2wm#^$nl6 zxmTC_*Q28h?d#E@9tT+8yv(Z7sU8Q`EYH*{9qw_duTm+*Q0wq zdPq4;$POG{k0a{QQ$_A>H{M<$N!P_CE!zz@An;RBoYxq*@-L>QLL2$(3lV$DMnI6Q$q;^`hH(4Sxa zN#Ljij+9GfUx5nW{7>K*VHP=-D{sHeayH)rO5g;m@0VzKul}S21|-nm@+S+peE&az zQxh1Jz$sz|CvdwKYKT>~<(ogk!xA{n?gBgExMw6VN})3o7@ojL;SmWuqPLpOyRv85 zI->>7mgOlOlc+xv@j6$)6dWr&PIkPM6kL$N#bPd$y-1e&O9UvGV42Gjn3%xj30#@L z6_%vH6eqY!?MrdrklQhh~90 zWKGRGh1tVhR)0?dGZMJh^7jew9!1Ul2|QqVrq4`ZP6D$Mcr<~B#6Qff7hu%Xe=LC~ z5_mj;*_Jo+rG3&ePbDxnfv4p@V@V2lJ)6KhF(&Kz1YVT;g6;OD1YT}P;h?Wt{c8>U z8wtE=Q%qyD?X5`1|7FN`Ok%4fwocYx#TglG zCp*fvw)pl*?36_3Bz6$f#qt#IXz|WT>`E+`e1-q`%VM^%M-qD{(KU&^lGxLxP{ym9 zb@#FQegE6%{+4H*9!VT5_dwZ$lIYnGJtT=kljtR;w=Ke~K1m#r#9>Jst`HesX7nSi zj4sKelQ_m|40BwAOXh?m`iUW)*ifgxl?_N@u<*bn23aL5pCUXYiBtbO;xMZ@?Z5n) z)*YV22#ZbIqyFojoy6EA&Pn22l^P>!l;>IHxFjwVKR$``leoZYjO-%0oYBQrKOtFv zH~!KjuF%=IEQ!m-@R^$YmBK@XuM)mmmem-Yl*DyOT-(50pTrGGOm1Lq6rR$++?>R1 zN!*geR7>8fW_U7Lb_`$tCowIFWD*JShNR_tZtOg*DP&}`vN>4_7%e2xB$v3@z`Mep zte-?+HOz`Ejs;3~Whw$y+e1yDSsG?dxBQ(++$DUsY%k5?UK`~zHN`XJ@?{AznFkwO zGP9C+NX)}F>k$Di$YTPJTYk3Xne}86bL2i{qfaMWKJ%TM#EVHho5XVp&6DNm&kMX@ zT^4yMiPw{OIf+-3ctt#adzL(}*OD#&dF~tH$-F7>F8}>k5+5h=P7)s`@op0DC+n|l z-;u>Y;jminAF_YS{w2#?3V8h^_unL1rLa~?um5G)z@1jJP73RaTrY*z z0_&$*o-9~lgH+4^+|ee5O;Xq>RsR^hZ3-KwTE4%>)g!~JT?(5jea+~brLeh}4zjGa zMXKd*_KvEvmF(8C+oaG*W0`6cZ)dZ%7wDWq7t5Hx2zE@hd@*ci@w?dQt|{zh@oe7z zg}bJ(R|>jhKV^%_H-LH z`ZMJYmmQHpz&9fJ=1&Ueq;QtV(J7prs=w=E^aNv4I8UK-Q}tiwCqGv1467NR!uett zqW(hRiyAbS=-}~DHX(&ewL8R@S#X7-S6ag^I|kESWJn#?2|*VVUUyobO!%cc*ZVfKlFS zAAK`K-Y?5K4+w0pYBPmr$(pQ(Q+Pz~qq1h)$AxEG<_Q5-m}8lzQh3_puT*)i+-GIy zrSMz|&kJ*jc(E+67gKmic323nGx{*FTh>kBXorx zr(dV=jQ}4H0nVABq1J&$lm-#(HV2mB!lXme=R&q_M8WW*63%+d7R6RDnbDVyI0T?b6sNjZM;M zD-HRL1$fsY=6p9zqrI4RVm3=-^E5i9(IMS(+uuUbEoG_SDveGGZ7sWvEZ=0{wQaio z&*iq0H4SuDKV4*ZPz83yYo|1J7HRt5Rd_eq-P71ZfE7%UJ(akZESYWsdt1%EmN%uk z%iUl0fHZmtn2@Q~Q;hk-%pqy?lFPX-)2ER9}Tk~CWL=C2T$OEvUmvX{$VA^Ed2txH!3tGjoun}62Jc=W=$tk)3{X(Z{Qq@$NTnl{k!hd(nzF{ zO(UsjN;WNCao`Fs)#SDEayfBT= z(^!z_c^WIMm^_u=*lOR}l-)23jbx9zirmPHl|XrIBxcgG)W7eyy=-UMF0wnwGPIaC|4jX4?wr9M8SIk5ZW-(< zhV{wQ?rz<#8kgjr8SEw8O?Gd~Q@n2m-80xvDJGqE{|pY0ribi-vIoiblr_pjl+{bN zcLs;rkcl29_i#&ctRw9xeFezyIy!@6q&ZghxD1ZBDW*<8xm2E*!AUmMKZBEn2gnYz zJY|E0Pmvvx!BBxytzei1RGyxxza%(Amf%bQ4mv_$q?#Nhe3lJSM!_08M*O)Mj2AdB zgRue>j8i(n`C=}x{DqdkI8*<4{Sw&;vaC#o*JT-8F6Ii^I+?*lVV+W>xmtCIIgv@4 z)U_F0Coo;)WSyBCWN(zEl1J#K3=$dKoWboG+>*hq3Qbiaqqj9E=}v2KlNqEM+)M^u z2H6aX8RRl3WRSN-%s@@nbuw@*HX&biSU<2lag;$UzGR~mS2DOmZdJCHL9>9VGd+X5 z%V@7{f%xf9EnZfHBykUDV z(YNHj-H`Qe1|MheUIrg#@O}pK8$usg{E@%{>$0Cugb6;iAzrUp9ok%3!(N6%8bn-(>J@2H%TZDf^wB%PP4)$eQ9mW$>%qpELNSf&VRo zKQj0|gVi>7O(%a!_Lt@Vv049S&?<|yvOuX}=Zouni(Kd_qve-c6`m(KMS$xAR zHp-%nbxpddv$4ocvS^pBKM|Nt+Go*0{ARM7HzaP6#g=kAN^eSSoyGQ9Y?H;dS#)X; zGrFCX5qDOoi)D7qVplOcWwCP>yI6kBYV2m2J+kN~Wmnlfv)D_(DEAiLCyV{E*w>~o z)ZOr!)B#x>B)3Nv2R7vP%%YdvgR?lKf$yEgp|%t|?_)!U3y?X&M*C)QjL4(1INC-z z`mtG@Aon=g`>^&D%k$Wvs8$eM`{&0?6`(_~L?2%VY5 z=q!e3F)E7@;#p^;t$CJZOr5jko@1luW-%^{^F)sQuX4QH^R4p2EG{9onu`TY%?Vjt z+TdQE#Wh)6k;O!jSK12f>Z&ZRwk~rgWpS-_ud|iOPtM}@EN;l+mMm_};wEXPSmn(P zV@=KCHo3PpkgPB*i&Pc~TQg~+X%)%Hn&xv^G-Z*OpkQTewJ7Xl;o5P%hG>vQa~5G1 zC6Q4UaYMA6MKy~`1H*zf>)w&Y-C0b};!evjdY2vL9+713waknxW{JE%iwClpDg2<# zHM4jqi$}#gEc=MfWgQA0&*GUZW@j-cizg%?|73&aDdDFrGdGKQSv+f%tni%0&s)ul zS-g?OOIf_4(94!*xqwmT!g7>pnkj4BgKCsab75zxo z%;n=O7H08@m`@vW8C_(vKF?x#7K^i3n#B^E`-P2unZ+`TziOzkB8!z-e4WKN4dl00 z`CS&PviROsW5YjW@neIM%+Fb@&f*uV`8A8*viRL<%pCu)(LV+Lvi1MrJwJzkZM0Rc ze)C7JexoMfwRR5ch$LRu^6Tf&R%GiOHprok@P@KX+{gl^Y@EZUIcy?^ZaZ6nxV^=j z=deu<9dhU>*%q=}HWb-Pcx%ga64+Ljb+)s0I_I!!4qbBCIfor`*eQn{Z3<;;X0(gd zliV$b-E-KZLDtnq_sZdb9J=MOZw`B}5m>Na4&5!@-vSowk;5T59GFAT91gOjIP}2{ z8p?X*&|8dYtWOR{$~{c>@End%uIah2$fINpb4(5=<#22c$BR79hEB-gMB#o7Lvx7! zISdqkat;HmnEW7Ng29#?B5-OB!*UpEqa5@!i%++e&$P_&97b3?Qh@riau}P#=p4?? z;p`m7DC-;>HM6EY&obk3IA3_Yt$%@Bqr51GD|5Iwhs$%gB!|m#n2^JzHn&A%PwW+z zpP0inIb3DyTy6PDIb3V8S8IA<-jTy}xp&ImC2M-SCx-`exHpFxIo#Kfa({#7!5kivJ5zR+?T{57w)jzn z9?RhgfyZTM%bF&i6rN-CPv`Jr4$tH;PyAfjXRZFZ99|H9-ZG}hOL95x%Q?JaF+;EA z@JE!(xd)w<${m%-SxsB;92>tjOW39G2T^M)P$J-!#ZL#L662iTN&v?;EO7|AX8g zZH1q6_%(-L8q$Bu;SagL%dWP{KXdrY%KjEGqjR`_b7+;X-~7$&XxGYP?L5}YW1W2c z>0n)16J0-#)^e#|ld@qRZSvU27HQj{-z1OC@@SXGrZ(DMz~pW&+@XOXzhxdB^XQbv zR(Wh~v&e7r-*LCgW7j;k&tr!?I!o52VcZ?_*g21#Y>H`qmxgM)<*|DnUGvzZVe~y4 z1l{sDAdkKC*q3Ajzh55RZCQ4;zYX=s;~?P!EyHL};e)NdS00Co>1{QA^5~n#VR;;G znIrNz(&|mytaFrQj>+SADUZ$LIGaKNuM_g<*T9^V$0>RA&tp&?C+9JsAvDld8{9w+ z$zy09r;1@UGxRX4JUx$*d7Po>nR$#57;e*zcvK!|i#bbnw2hu4Fh+Jw<@53wD`uRA zFcr?XnhWx{(Bg}156rzpEkE#hy=273hODQA zpKf603O}323wg}T<9WHyH3(Sn#XMflurW z6|>&WnYJ zORHQaz&4iW@l75p^7z{7*Yx&n9xJVkWxvnkmpoSG@uSEetp2Awezw@;{+h?{dHiO_ zBDuN&|CvXt0{+V5pFI9<;5o#=+F*ihJL zHY%WPq2(`#jSJYsViVo8fGrAWU%=)CY}Sy~p`r4Y1#Bg^qs`sAfKCN$V_j2fTkCFL zz%B)JE?}nux+rmn0(P{;jhJ)X*)qEpuzLZ!S(l+b3g~KGqu;B5{R`+;z`h0Stq^7V z*b%AOPh@wSbwB|<3+Pe6ftI2EAd3&SfMhS>-US>{z@Y^kRzRPICVP#AlUcjgVMiem8M$L%EjxOLliO-fjr+_g9oZFDjfyOeifN=#}P{8;C z&bM_;4;M;os$E>b1i6>k3YS_y!Q};9SHKkoTqW{K*@?E=)dfr{;2OE6^0f`Q*9)`A zl#iz0E=~14+EtbdLd>k)mA*$4 zy4pH>Hr0PylA&%**jpqA-KPorHq|$snAd(y=q}eV2Q=Z}CiGBy2Z}#PxTh@jlpP}6 zOSZS{p$*Z)n$Wiihb#98T7{Tp>eC*j(9yET$g-?itK&5zVlHn#E~fftlv7}0|0bN= zRR70f&*%v8s8Gr257IskZo(-7CVhy-T!EpgGfcZfmjc%05N9;uOp(K7$uKlh3pGm2 zSxq=w?r2#?xzw~{xXAp{h&1QPvMchu#>r*F=W8x()ub4EQ4=l}e@PQAZNda$iWxP6 z%e5d^Xqucd%Q8BKZ~m*S>5x;PnEa$BTx%Pn%a*Qh!esSkTrxK{VTu^yn;Js52v1c5 z4Be&?Io$06Oy}qcHItN0H6bm)fA2X?QEGBcaGQ{CLP2dXrAZowieengdrk0dh|!=4 zp+aV$ShFiN)o&nW$v8n)s|wd-n`J2=KVA4v*}G)#mNi-T3g0I?L-ziLDEH_=>&~+0 zmSrCnenj?B*~erV;%VVETkaFGPc~tW0C^5NmR|vC0_`(RnA?O4dGnW@Crh3Tzlr^P z6JBVlf03Kli%nQ0&|dbHCcM^!SG651$YpuG32(^de0jaugtu&z$KahNyeIcvJD2yZ znCTx_^1}v_MLurAr(!;_f`xLKvPj@FtEYHz6P8%lw6s)P_NDA%e)&^Hmdmb?{aTh^ z$6`9|w@p~tgjKx5@b@2Nzn5k7hbH{ogddymlT9&MzgX8)_^k=QTV}O#|FACgfARj` zgjU6R{eKkw*Vad|ev30T*VuK6Sl9CFDQkUMDmN%%W8n>D+Z3@;5pAv5l-fk0c15%o z*wjW%{mtceD57H#TS%~_?3&THlFL%t6w#%KPDN}lW?R|qY?Ok|7Vl8R&PD8K2inQ< zyNKDI`U8sSQN)3kH~sf4;$X{A ze28!_+1{4#Q^ava9L73D9Ik3d*qTh~Tg1^t9M!XzNxka2OJhoxP@nX)Gy}&A&Yr4I-ftetDsqAI4m)qzSMO-O7(K4)Xb+P_pgV!}h zOtSb|2}oXVnaP&9v4|V_6u|!ipop7<>(2=M@rPo|U1+Mntwr2s8Qzq5hn!YKqF8@1 zlawV$73(iK2r>d$*_y5cy;gb8Pe}g-p-S6fsZkTt%O?S&Tks@e4(~QpAhaeM#VD>%OYQ*Q{&G zzG26DtBCiDc)N&q#k^zr_Zsx`i}=90W-cEU@tK$f(tljUCvrcPT`0Rq*62T%Y_Tm) z@{1ytNwBntFB_C!37aNY6!BdVUl;MM$ZxES=_?ybeP6^Xxn?Y5S>dN5es17@E#i+N zek)>i5x+O2o3UvBwDtdPi2hpyocf_{B}R??58#-9eL2C!=J1vhU zzUSv{?C8}0bpTU%-Om^Q z4t8^}i-TQNpPjQ4z93|Dcc=c8N6^(lHwSw<*h|%h>Lm&_dpp?IssBZ=kL_(g2i+~^ z@7f*6|NqOu00%u-%E5sSdb0u>aM05>%w`U8&`Wi=)Eth}Jk-JA4*EDaOnkiug^o}b z|4!tfeI1#tvvfY&A}NCPPa{R_0DuKTtg6>o<}+u<6xA7(GJdX z>VHmhEH-eqgL9Nf*X-=M4$iY{KGwlFiP_aqvn&p#I=H~W)ebInaG8UP99*KYE|#To zf`dy{furzTP2u}L4kkLd!oiiAso7c6z*X8QHhGPM8yrk>aGir|Rf_#kdA) z-00vYWleGFe>aWh_x~N-(vZT+w>oef+~y$T;C2T|2h$uRl*Kxxfs})^=FUFJaJa04 zf`gocyee~jdT7>74vLx)Wjs;jT?Zuxo`cYV?;z0VoP}A#$U*FYk2}*a`LctmG!<1Q zUvto`)54mZ1#3=s@Qi~yndsmy2QwVp?ciPq_t@!EbDuB)d%oYngK{6R`!&uEYWluSH+MY=>qqz>=bnvW$mmJJ< z@VtZPl)@rI`TmcC7wz$5V=wT-Uk9%_c*Vi1l9^_>Q?EOCgO5aw&WW>)w;arO@V0|@ zHH&xn2-V?y&%yilQOxCH8y`6MNYy@+W%>dKA6v}g)O_mTR|g9neB)q|gQX5WbFkRK z=aR8oZr>6IU&uAP!^i%Y4wgGu=HM&!z&b2WyTZZOPW@j%v(H$vs*o0~4XrCra(MlRNOv4M-$Zv9z+1v%)3F50;D zAOEC`7w6K}#U>JLEK5y073Vf_#P%-sb+MU?9b9bgVjCA7Ty%7?g^MkvH`~GbTe;ZU zt>1f@$Rg~jlZ)+LZ0lk>DH$?+XBS;G1haVYp|PWjJzVVMVpkVCyV%8Td1hghS-ZK| zT?{KvQRS{Ky1CfX#a^mxP82)Y+r>U^{rS;UW)J(hILt+N7d>6<@8Uog2e|0rw(KMO zG0KCu2Ge%qg{-0aTfP+O&h%b^I$aW3vNoC?Xc@Zl097L;#wCMxwyi`#V#&&afyow+BFKyWG{1Zxtd`S zK7v^1N*7nVnCRjvI~S6CL+Kh9lkA$1q5e7-H@Udp#f>f|ySPD>xfGluN9Pbz)ZtLx z|6Sbb;uaTE8#**aZnHI~xwzX!!bRXB>7w8w|kGr_n#Y`9X@geVGhCT4?;Q<#9T9*y5)GQZ|xOm9L z!`f?V$kRUR;xSd`j98q^Y!}bCc*4a~E}nETM^Sdd6=t_j%jJ!T>2qB?=i*rx^R(tn zXA$zxyLdrsMNDQW-~V^9*u~2(-gohei#J`o>f&`5uc?}my{B;!79HG`bm@JuG*z!k!#_yg9EgK{?_!md?32w< z{G*HCT>RwX7b$<%U7D47{c3mWcNc%USnc8uJ^EPRoT$HC{H-hn-|^00{q zcxdfmEf4E@Slh!oUi~J|aZTInd05}8-w8QKcEVX~;9(;V8+vHt)gSc~^Wx^V^{}y& ztlv>&I|@8(>S1#a?LBPfwY-|wvEki4>|uvC$~`^o=V31o z`*`T)VQ=Z#q-kScm1RFn@9v?8hy6VqU`HP>{y=G%!umZuoZ{hN565^o#KYkpdU-h1 zLvLG$v+m>JF!jK)TrS!pJRHUK@z7VY(OObgJKAQk_^}@PdpOQRKjwNkL95MN&Vtbs zJ)C6Qpv%YF$sPuJ7$B0RNDlHa*u!XHw!vK+;^Ax$r+PTk!%z>Wdl=^7G^MaCFUro4 zOF(zHhfy9zco=Cl{P(k5nX_0{3`a3DI)_W-VT^~d9?tb}o>zZe!3vCWPse!}uNBzJ z-or2OaFK@#bx1fV*16cLzuYwwoZ#Vh50`qF?BOyG*Lb+x!$c2Pc(~Ha*x^vV|L@^y zd(t>Trcd&4oyNLW9kSc&1x)1|JWTa)qlcSBPO+%Pec|1JvKjqsWf{RG)86 zPxIhal!tnr#P#j>5k@`KOUMq6qHVem5Ux6dzPr@;&>iP9()g> z`U#ZIP~;)j=;ld*xn&PEo>dQ3RWKuxZ}xD9&EjOIYq&dQS?6vKFL=1e!($%q_3)sF z`?xh4YX;A)UK&yMfEXT|nI0bYFpG<?v3vBI z02i6LZ+Li1xo_I8-uCd0eJpca%HH$vv4{6PeCT1mhYzG2tR};68imtm=ra$Ws}t5_lN^1ChkrbL;o%1lOFew;;Y$z8JuLI^m6X)52hNLj zg%~~@zVYy#hi^Tsv@&cqGdHCG}AM)nF z^S6Nh@bH&r_ouD%w_NtmYX5p@>!X#A^?bm`IzHC&v9|xeSIex)YhAzonB|dJ-^YeN zTKm|*Z+Tr|rqjm9Mt=P@Fl(}NiZ}MLxsOeJwD-}@$EJS$Ih5j2`m=X4zy9Q6+V0?E zOCMW^A!!PB)QEJq_A$lBHa<@D(aFcYKDPC-vybh3bXLmtvdrq@V+V_O^s$p)Kg0Zc zlSMd%U3~26V^<%0_}I}fA{mz$47S- z_p!f^1AQFeqlX>W?9o9!diwR}IODSBAwGKh_4{ovzy7z9;SZIDy&dM`Xdj3B=eO={`>OF~r9JAA@}i z^f5@|vOYUx%~Nditahr8VcOZDIs@Ft(~Mn8HaFd;~t4e7HV}J{&!Q$a4jl;`#7(0-4C>$%H;iJ|Z8noe>K%T4uu< zmq&{(*Q(}YrjKSH_xQNO$6Y?A`?!~2(!YEsW&dgY#&c5_X%5Jj*q8wW~k(#EclF%Pkqew@rI9Q zeZ1^ro{txNJm=$izy5)Xsmx|x^zo7^bIKzR_dOr)+qrYWNq*pCfsYS;e54M|^f}hYK0eX7l(8QUvCzjdAB%i^?&C9s zNOHu*K9>4e;^PagAsIfPxDJedX;<|tAK&>{?&BLDD|~#dlg7#vvxjeeth94sE^p)C z`}onvDjz?nE0!{2{p90kc|Q;EhmU`J{ORLwwfdK4 zy{68;yx|9E6#zl~lnzxX9>2AN`u*9Qu5|;n39w#(4Faqmpmk8cvzhfF*icFW>NgT@ z8(`z0elI1-sZrT3z;*#P4bU+_`v4sRY!+a1jmRv@xJp|D*fMDOJAyM};#L7V1=u>k zHbKktky*@b)qt7x_5pSd&^f@40lEa(K}u7Qm3LA0gkh)XEY}S z7#5&kfPv%#^bc^7mV#}t?8yNJXwg`fJ+P}m0fqz^9N-l3rZG-KBr?ExHZ7E0JjCW z-R>PbVV{WrNhwG3?5XW^fMS45fP8>#fSg?`Gp|B`CNZqcbXq5XAHWUZ*@nr_17zy|@|4=`V&uuonr_@Ok!Y-2%y6GD8< zn^lNUcvB7VX@IW-EDZ2PfJFg5m-sXL=w2LPiFS<-d~V8{qo@D+7F|#~{UKj;jLvAUz-ZOdue|w7V|I|5 z)x2GY_=C6i5Pt^vJHTHOaCThPe**lg^`UFpK!|lhtQBJIu;qShO064Wy|DfVI6F7F ztwU@aVuKJHh1f7eo3Q156-L=%+py)+0XDx$i1s1ch1fL2R=OqfeOmHVvct_o>>Hv( zh@C=g5n|gATZY&=L`RCl`m+pWyoU0_-w>U`miG;q&Stg?(Iv$8Av$X~GG-P#gxE0z zw}6RMGI!??T|?{=VmAVQ1yp*9cMq|LF!#lX_YARjh`mB|6HhTehh>P@K6Z}#h3Flk zdx)MP_78Djhyz0O(28;H=8zwxbgmv7I5@;1c0F0AmqMJ{p&|N)=o8|I5Ql|0JZ$-t zffd->k&-c;53Zv^92?^35XXodYM&a83vs-au`);R7vd(?2{A6jNg>V%(Lcl~Ax;i4 zFvI|fjdD0PtmgXuhkwVvmm}F;Rj`4LNZU}LGh{-w? zlrf!CzA?lUd-k{p6yF>o3UNz_e2A$bk|Aylal7i@W;>Y{BBA;`Gp3VNh>S*0>#;*J z8zLvhbUT!<|3kQ{&=jH=!qK=~91hBUyb!+aKL`=>F{1kzOL4*D5ch;Ag_s_q9HPea z$&Fz1+6!v9Bh4Z1P!>0iJnfwt?yeAb+sfv|-W%e<5chH8B$#1O;{$TdA(_dE$epE{ zT%3pHvQ-v;G{oy69t$xq#N#2J3Nbsx6MTg7g)x8pA;cU$2DLcd^rLxChnO4Izr6a4 zEJM!BAiQfqEL5Md)ye-XJvP^s@ z#QP!M4e=hAU0u;q&uhNbd>G=>5FhcjA7X(>Mw$DG6|nh*AwHA4$c}C_i$nYtVo8V< z;=c&7G{mwHU&?iPW90WgLoC;tnEy+Qv;I274@7NJmhiDbyj}U+J{vYBm9!QC);m^kY6XIWWvSwis zVeP2CBWp!1|1In~5!MyMn&jF4`VlsY&^p3~5jIeWBtvb4P35)`+C|tn!X^<;Q*XVL zyJ>{>5jYDj7qe(LkI*ebhX`FFY!RVTge@a%rBWSbXY&1@2-`$0CxQ6@0@Y*H9u5!)jyGPhVmCeGE+*5U^+)F&c-VqLt zuup^oxF!+0OR%4rl*bak#b0c!y@#GaA<_y;?1BOqK{ne;NcPa zMmQqEkz%-6hpO$PA{@hA%P8Lj#R9QT|Emqr*9;erU~Mi>|2ya;0>FvPj=;`)q_ zaK0*3W7HWQ&3Ase9(Ar~Rfb+BS)5jTmU z(h+c(ZY!`R1wn+nBZLvE5uym?2yujxtwRCpRBRCrT8l6}LUV*WENSZ88R0H5)SIF2 zi7+$5y%Fw@a9@NOR?jH=c_6}r>cmWh1I>!?NQ8$XJgg~G!;8^JBRpn%ri|q52yaDr zBEoB2=Lj!Em=odI2v70;z|VgpJfpoJo-2l6I{(-a`JC+YvfN6BUbOh72rmo265&-P zQeZT+uPgLMgg338xfk)j0EqBTg!d!7%R?pRJ%M+H=L>&enUDDJkFkI^u^1mm_$|UG z5mxXFL|77GVT8|Ae34z5&-sA0t6}E;MTBJ$mPYt8s{c&rKDxLCUqx7MSJ?1hNBAMa zHxa&z@NI;Zs>vc0Gwb^Zt5kt2Y?vP-{HzK;=}eORCBmIi@F{;%{u zm2$TB&lwq>&Nxe%jP$Tu~Cc-W3*9} zBpYTw47H8x4+nxx;`;5kU5ssFY#L+B80}+h9%D15P{W!XVr(Hjv8miK#?~5TE2Xn0 zFNQkB*dfNYF*?WCF2?pY%1vani(CSZxTEk+F?LoRGKSwZ#(pt&i?LUX-D7l(v4;eV zvRm3cl}Ox;Eh)6OT4e+K3NXYzyT>><#{Mx5jB!AW9(Dyxor7ZZv=cPza7c_pWAuvA z+w!c#ntfs%W;--Z9ueb=7)QqFAER%K6Ji_{ z>9*#XG0u-MJjOXOM#MNP#>g0>Y)#YN=on|mEw3V2gy~~qjO9#YoTr}2@Zyu&xESLb z7%svEF)od9VT?;+TomJCjZ2<-+6i(^OJpvSdwJaQe^Okj?W1g>z*RA>7Pv-sl8s)= zRn_a^>tnnhV{(jpW84s<7~{qmx5bze`dur z2|uKh%=AZM%!%=6jM*_Bi}ARku9VC9{!ff2ZGDQl4o^uy{ImckGB?JnF`kX_e2jS_ zpOZD~^FoZ5W4svSB|a`xmbvWw6YO_6WNvNDx#af1Zj(eA$+j;_3Ge@Mjgn%5g)x@ISQO*)7@yfb%@B+2xL?Fr z7Gr6QFU9myBCTm@d5oW9tcbBH#@8`c#`q@2x7rsoWsdS)jPKPaQ+P4=2X*pejGyd! z@&K5|eu?p`qNc;&dFw7=b&OUe{2~6&7=Oq3t6?tx#Q3+tHFZ#`->%n^U0as?x+QEN zyj}_G3$&IsV{K@0n-Vq>Hl;Q$VfPX?DPfxu+Lh3ugiTA>tW>{)wU_0MVsio3;U7C& zl+dw+EyYm7=vF0cE!WjF$#g1VhZ43ep>qk_m9TxO{;T-r_F^<$tbWH5b}3<}5_T5D z1vG25YYDqCq=JUoql5!X=vu;lCG1(k-X-i+LN^w-gR+@@O4!%dq014wmvDfX{bkAY z5HMK>m2hYYJxe&GRR2r!U|A;iDxtU4ljj-kQ^FA?99F{N8qv&x*3{`+!c`?4Rl-Fj z99_bQ5{@ZhKncf|aC`~JsnkL0^Mn#kDxqHqC)&;mRXct zAW%&8vm4k)2e+WPxi-xK4nH*V}<^DB&iNHU3RtE6%+3%;l2{? zwe{K342wC|10~EV;X%vHw2Sai36F?;nA5j=_o&VZD?DDp8zsyx;e`^OC}D01PnPg> z33Ez#%0BuiW8yO^Vk$ga!gD3e6T`jZ=+9fsK3^1msf1Tcc)5gEBXZ>0UuiF!4 z*5u6+J}%*{66Tlib_ws6@QzZb=fvMD;eF{%g$?=nZwU)Z_^^bJBpa#IYmN{#pOo-< z37?j*sDy>u6c%Br&umThu(*UTmA z|5oJ66224o-fC6}{2JuyRT(JPvv{pluD=_ww(L5x>&h~;e!2e9Kx^3zWKYx^r)|o3hM)hI(N3VP?8dU2 zl`}%}W$aqU&gJ^chFxR{IO1+)>@JtsFtlCE^>^S2_9|oFGP;$qPZ@hRWSJ-h z`<2mM{QeC^df0Tz4&s!{=-I#=(xB{JMjwR^wd7#}hl^zT5pp?;zFdbgjw<8WGLBZ1 zdv{E^zJrwUI!^PYdqNo}mC?_HWJ$8s{#r>Yxzq#7I7LMUs{SC^!Lk$#QRq}zCJwdW zG=bA)S@R5yNd53K&Msp_8E0vTk+P%8^-oyLwvJYc!RH8%kv-RHc#y`HF|LdY${5eH zq$o)ir@gR@i^W`IkJ%-1P4v<-t}5fQGOjG+a`9KFEJvq+*F?DlS1Wo=8P|%LWclkF z^ph>Vp^O`)pCW6j-Q0kumXRpqR?FO0#_eTHvo42YO47P1l}*cXH?w6pW#n{L^JO%Z zQ4nU<6n_6xS(MQ=mP_YpRsAvo0iJe}yrME%((rg0vjvEs zDC0?CegHw&=TYQ~|1xNKJyXV9;b$#F!EM zW2MM%W$)wbf1ArqSyjf5W&F^P#o|B7+r=Hf8`t6sY4J-A#Ya3ba1##O7+EuV| zrT!$sYZGM=Y-*YI0-XNl6>K5gL6+6Fw1E1pD(F z-l2k>_o>_HMxYR?xkI{gh>* z`&V#4rT&CSrKxkEq6f+Ltl(e)BQUm?nBEl}D!?o*+F=#+t>EwqjZwm@NBKJ|*$7HEoN7w91{r`b|qJk&I z&ygiV!P9E;8Cf2oxdPA1&XeU4dcM-~%NQ?+d9i|*#Jp_zwRHSwU#sA)3SO6t)!qt7@(NaHM-JxazhbDT=3C{il>M$@j;pNZ2W4^SpA`LB_7~Y-W%<0r zI=>6Ami4?e^(TUMvdrbxUP_XiSFvRk9je&EGK`Y%SjATVWwxoJ zOBJ1}*uIKwtJv2lN06dqp1NP!VL01ST?JtURK4G%DudbD+JagPLz9{;v!FeMa-WGP^Uk~XVcMYBLfwpvBaxayO8dPf!0#SpX3T~$0-#oblh zTg5%%*)T)*Rq;R-GsN6)^(JKO%qnJyf2fLw1$a*Q7XdqeRPJN4k82%BvgQ+2JXNiK zE8xj0=7?u0hMulsuH0v2spR!+74uYq__=ERl@-AY61-T&s|vkT#mhG36)~o_*F?T9 z<_%dk#`L$Uc)N=EV&19ZU4i$ic)wbI;mXx8qkJHq`VR#dB3@9%$5kw>;uAaKrxq-# zVsRCpN&LAb*~t38ia#{UpCbPf{#*8+|Bl|O2Gr{Jb{3&syM_&G zSf_^dYgku2$@OYreF9#sYuLc@T);LKv(L7|8_UwAxLvLO9I>e^L3@GCYAwGnL8e0u zTZr7!YC6{HHwT8Qd<&?CZEE!|8FrE-*tUl4gxL>W4$)b|b*W*N+#TiaB)hXLHM=N< zV7D6fs9_+#0xC4z9K7HC0e$}TwVv%&_jzurv5ZqL$4Zo zN_=n)ht%rNfRwGdWA|3bEM}it{hYJf;UXzJqJ|@DII4!ewU!syOgvge%!m{pTf=cm zr2cqYzh4alSfqxNRH`Fi|J#};YhfuKSi>nI2gwdruIYsK)EZ8&VW>jGYB)_3XO7y`WbA zjHW&{J_Tr?#r*zf4Oi7Lp@z$9xYSOED|2}bSJrTaMxje36DQim;d>5O*Km!ZlQbMx zkIh^s=K30Ls$p^sH^^mgH`Xx4o^w_sb8`(-Yq&*%nJUg9_$a=uhJ+?~yV{;+n@@59 zdGnW^out+3s)jYp)sU~DC_$lyCaW}$U#7SC@$Hh zs3>Gk8u?lc%~pIz4byp|?2_K4l)E)e*15;-0<-Q@$_&~2#dDMg<<8`TORLHhDoqdU z@R3^mPXk_$*6^6ckJm8UVrr;=vW7V|JXQPOkKK{vwU+GM8lJ6To(3`u?elV9kbSWs z(Fk4tKlo_F0WyQ#b4L(T@BwT>)RSuTHegUv}$bQyngzxjG>|M29W7v~ovnTsk-OT^?gD14uEKlD?j?OUE2ChaX7p&rzRlRb8T;9+?hS$i zEI!bJgPPG(_+ZPhPOoMh){NfG=+lft#hcOpAA5uvII!3OrZ*ZWSMokt#F0_Z-B!EM#%D8 zPa~V_-wGSmjI)|CT9^gN(4J#8V=PbdJdtB%IS`rg!sly5x);hNxTqNyTg)fQ3C$=; zf2jrk$JU#GTRFbp<1H#unKFb3MTv?cLR2WzhfJ9x5i&)n$W%h+5|T>g?D_2RoIUUT z9#a{T$`F#7%tPk6|9aPR?(^OKuK#tt*SglT?sebK@Q(Z4yVDIKHwq`#;pRF_s>4ln zn5-;kb~r`Kc%{EDyiLmOb(mI%JL(XZI8}s$zq1Z^*I{}c?y?ZaLl3umlt|CLb$Cc! z-&cqGB|g9b^ZGBOpB=GxDl-+GC459Fv+M9^9cW;b9+JoFFux9SOnjmabL;S=m71qq zS8zcc7PCkl7IME^`XU+Fr03~6)T!yl5EKuY5*CSA$=&I=oYd zcTI8r_bhj<^!F|LVI4lN!$)=a*cAFdsl%sr_{J!{*}cYLxZ?Y#%^}0JaIBV*p!PXsZCWHtxo-t(u(z*erJBjaHqjVA9Rk)k5YXG~O!PVbW&2GZ(7Gkx%#d`>Q3iqjr?km2Zu(z;JP1IFB zAmBg7_Y?9gAU`nR-y9DTj@3Qu;6U?ds6zr6Xq@K5RPFFU^Vd~_)Z|r^p(6trEGPMp z0EUY5vk#ly`4w;g#{@vajo(#q8y@h##yU2Dc53pHczggS1pE&XCkjaxEB&MZPFA%M zR-Yl3Jyp%qgr_ToB9~~SMs;QYXNjCGbf3b`6{qJsk@JP40{*XjDRR3ofYAY59Kc29 z93zrY^pXI^n(q3#EP%^R87Fc@z`vWjYHq==4&WN|j1S;is9q?+2vwyH3vNp#UD%)Mg5)%o1r*bhh}T!k)bTYv;}pJ|UbdiP0n`T&mxl&! zJU){Fqyo*~>9a{O6F@eAh5#C^0=wYC=F}virw~Ae!CYHv7taOoQUK2fu!OUd?w;|M2JoU*i7DJT>z4y~HGo$FSSFi0wi#L;z-u)#<*~Ff zfHeWE3gFEEUJu|6`Pr}Q{VffTe6`5i!gqx4T8Pp20$3Zs`%>IQSmDC}J`Lcb06tO8 zk9C66%#CyTEPyWp_&k7hHFdZSO#ITu@O1#+2k=b*-=;Dnnh?9#xu)4Ah^|5G8pLiAITtsc-D^C12C+{N-GbOVi0(n`RTE;h9zpb! z!lS~Czn7Z(*4TOn(JzQTLF^y&FXnw~LI+4;r~QLCD2M}VLT)4nOF2Zy<8~nDr9pDm zhXws7>cfK=B*Mdh%_D;t8pL2JYz|Q(3AdwyINEd;AI6ZH!-F_Bh~vbmbEEkLHBaR5 ztb)@SI$5C+!c#1IS`cRjak|7af*2{%QjJ+>1#xx|=WMK>7sLfp&R3mLR_($dE|Nal z{9{B|hczz=Vq6eogSae+OQmy77~*!h`L8hll~(iWAgS|T`R`KMyMve^n z_@oW$;2Ju`FOBH%Ph!<>lOQg7T z;!8oiY#}G|>5Hc-FUzk6{U_MvLA<8*T%jhHl;SF-+^yB%+4n{eZw5ia?JW`BWZw?@ zZ^^j5Bf@*`8dKggh1K2<`v14Q{FP+aZA97%sca^)c?j*yK#|=MxpfGkqx3C>TM4NjrRX+lZY%60}?78G)BCG=pzt6e%>yiYh$#a@I8=O$svU0npb(A_cVlMm zU^RybhYF7h;b;*z5?(Hbg)ltiKj$AS?o zA)F>co$Jr-j1We05ya07;Vki6EqYD}=Sn$Gczy_@LjM0`N54bXxiEy$R`a4z^V19U zizQxS%B7kS=gX1v8JmRf`Q11-p(ry66CILV6TCzvc6hMxluh9!s8*#F>`IdEzWrsZBbnALaVtrgt`!(wx){) zYO+E#Ar^6UYWr&82|1G?q(rEvMKZz$VaqUbYUb5ZA%vnu|DXDm5ULhx>FAjdp0yD= z@%a#z$o7KiOG9|kcuS`=JO8o}UJv2b5LU>uT=<&#SBk8v>GzEg-VNc+5Z(^qtq@jQ z$W?wve#h5@@SfFK8^Zg>UGzgs$0=Xb_`j;*jDAzo{BGkq zKZfv=qU%lnIfP$o{2a`0YW^O=Um^Sv!k-&Q|E_8N8^Q)P|1+^w`2W6?ar4?VjP_x) z4r2?2+Jw>8Je!66EA8gOc0#7OtPX0rnQj@z)?sW_qihq#w&r&pW^HF>cL-xgi@ItK zcb2$I7`uhhMSNGGtI#!!Jyc>EZ;8TJwOGBXQu+fU8j z!al;jW;h^>{$cb})AfE}7zf$-U0(->F;Ip>YV<>`!r_)X$f8GvF*J<9VGJ>ktHb(7 znQ}}R$A&R1jNzuZ-j568c&p>GPE^zJldP|k&BLry!Z@|Yb9xOQY5p_Ke|8w>N<7CD zRyfc2D1|Nv;}Vez!x*j5MZz({i_Od-jg{?EDVGT^7mlm(xOug#z|~<~qb%y<&30WF z6T_Gg#tmUyFVXpLl+*D^VcZnPWXq+3W^$L+B!bnR@3R9*tl#$XPY!qgN zIUxsG2%{oi45K8%tg=O`VLT)5h0$bDH^FDse9oLNsM953yb{LJFkVvgMT@>{gvFQH z@LmmLx%g|s6{fTPsxaPUkNhV9!Z*VHqrU&}AI3XjtXA`Fq0Vy5uM8yIHiXeC;)~oMGMg`dOld9BCW5vi zeB`5zAB#9C{>im=5o{6h|1?~CVTTAhif}yKs1y18$!GYjBiJV5f3nzC*h$EzVk+B5 z(3wpsZ0;EGzZW3kwv)u2BmNt2HoK^~t8h2-ca@(V?GeG=5$qX3_lW-kjBXmRtFxEP z^sw0@f}U#bBXoW7agRxnz?#Mh#$$pM=&^op%L&v8X}P?J6~UzujEmqh z^IR^%=oKPdmMbIvS;_RP&2vozJCWK~j1&f>;D`@p_>f zUP7F8QX*+iErN_VD{ws{p2*sW|33VEA*19Un)4%y;-8rEsR&2HThHeatc&1F z)&D|BkyCc~wUlon_*TT}-;4hc`M)Rg^%ng}gt@=DJD8|$tz zJ$qSSJ)+oGo}R*eqUa^!ocl%5SIyp0^r_MJkD`AR2Sm}&>bQQHb)YE&M4Wzza>)l8 zq4O|vk`FR|WE96lF*u5$at<;7Q6h96ZOX7Hj*nt^6vtZbaU#4d&~}2^$XmvCl0;sJ zMnrLnWzleIjrnxrBcnJkiZi1)CyKKqo^2tfoLj@skK&>zMn!R<#0#wQXf@pc#zb+k z>6b)tsX}8-xh#syYYK9}Zp;p^isJexu8!imD6WZOyg9F}sn1>}ShX9XxLKhaqnIc% zNukNYo6P2lPqAvZMseH5q1rJ_i(+~dcW&I{U6y-K6f=zTBEZ4ix3QC@9*p9VC?1Mp zRum6MG4ubguh~&Nro>0B+T&5oG4589I5&zXqgWKhJcZ_~)B^FR#23~SUmQi9LQk6* zh$3h;-5g!zNE9*YQH$0`5w|SoOh(ZdMJkF+6lvL9Zi8$sE0$F=XSvQ(jG|Pdl%uGq zSrvN1CgC$em&KaT*?3(2B~dJ`F}!H}gPzP4)Gb>CVsSJ5jtVaZMEONAX@1Yt7?wKTy;8{~!EBH9r-87RBdst`mM?MOso? zdi=&h-$n6*a=$mF#k^j+YyNE9HGfm{_bC32;*Ti)iQ>;F{#J#*td1Lb%iRBqVuP}r zf*3ZBVUrlz#IR`$tz-U8fyG_@wlQqRXw6Neotj(Jh#kZ`#<1naxy;(S#>TRpV%W}< z+Fo{yVW${6TRKBK$FQ56yTs5XhFvYojl|{dE|CiFI8N^t!(K6TH=VYUue#rtAJO9Hi!fCJv}^9umV5F$|31@E8t_;V^|b zHf}7%ZIERh8N<*R2FEbO6xY{LHPw!Z;rJMa#c*5TX7q8P^1=uEjJhD#M4 zYaaS9Gtamft`@&Sc%|?vi(V7M#2CiMa6=5&TKaV{OpxJvv$=uYXw6A6+$8g4Q*Mr7 zilw_1yLIEH6Nyt}m>$D4Meh{4&|Ttp*JRCz;Q=-8jp4o+?zg^bSIOm4d05ez8+&Fe z{m~d6v$8ICjy0J+H->r2deX%CF)T1n|5F>+TpUB4qEDO7A_3zeg~Bl;V~E5Miy>;I zXsZ{G$B?KI*+oj}=@=TMXDr$nL)N$(xx+#XUJS(;DlwE|D4WNvMpaG6n__r2hG$g2 zwgUO{F}z@jOJZ1Bll7AL%ci_yHfFsV!}1v3jN!EyR>iO)hLtr@cKUh@Z`f+M9^Z;# zwRzsQnhbG!H-X^=tc&4G>0emyUzzP| zBj3jGLk!==@VzN+m42*gI)!C_R-Iq0+HW!ZZk$otxcwQ!UlRY0;olhksj2gyxU1Hx z{{JrQExDW4``7>079!`P&Sq+EE^H^algb{{fsIyWBN!TQxhG zxV^{@LO#tpPiKo#*|{FO)MM9r{|m}4_5MpFXLH!K9=prDhmh&iyBY7Uti9^7w@446 z^U$_Wz5n8?xml0>>al-4de@^*jjgXr(R_eJ*Qvt;H&zDJQjepg3>EV8wbPGLbC{4r9WKJqaV@>qRHos7^*Fg6C$&WR{4airCDL_BUs6-^Qj1h5$bPX{%(KGhGzK;qdO-@Ovs85`zF3c! zB)UW@i~0Uv3i+$`ST6orjb|lKL%#nPlDuAzH&l(BMR@GJRqwwoB!9ae@73cSMc>uF zUL#}|j1t$@<9$V26zXn&eJuSf-U4_k$XTRLB##Lz$U^?g%qi@iTiK(+X_iG6WKhDcBb$cYaeg^2BCw%W(7v^%2Z;E3|95*ZKs@)RD ztu;-Gx2t)FaH^0+sNWgK-8#sp3-3~hr@%dSJ{rekasLv;PKk5kSP;h(n#J5W=7~Hhbm#1RJ1?HHnJ(l=;#h1tZ7fw6 zM@WW19Ko7UxQ0hLq&Q-6Bqi3z5sxEL(--Tc;z*m4kj z9IwZ*N+D)B@r^j%+*nzy=G$?+6UQ2*zq|1mcrjcX$NLh=S%=8I`H`-c?uz|M4gai$ zyL$u=38rxSQb*2LLN*!wCXR1)%_09Tj_<`eS~iJ4#<5<*`^m=qvyF`h`LA*OrZb5A zcacBh{&O;$o%t0&9K^rl_($YlAr+S0ARC>n5XJ?r7YqeeE3(hO#*EbV3Q)Z z%_OqfE`cq@w-B~Zpo2(9nVp}wmE~@ez_!LaC9r)0+toPz;tA|%1}1*Y?|&26Ie{(` zcS$r~`CVwY1oldxYXW;F{LB9Cu9T3?ZX(^S$&|el*f)V53G|Y`X9D|((99?|5^np| zqw#|4~Wc1nKls zJkj_`37nF^$!by`VLCaTr!ZEOOUiC-#Y3Zs`BzaoJvRhi;d30!TuvyD$+f|P3$ zxXx@0al1Z&8xokDz>Nt^QfQ(XSjwdnIg6X6Pf6ewO=`Ks+a%tez#ZIu@=rA~&B*iw zW{BUFz}+JED9icpP2hn9?vrxAqE2V0Bo8IO#d8W9^EWRLtr372Kg+B;?6s{LK|IgyTB=D<=ztvRZ2>+1&r;wxl zJAn=2{|Nt0;6IT|Y|UFGfuw)JZjx+%k|*aLX`MuyWb^YgmCcf9m&E3BGD?Np7D=?1 z(n07Fw`7(Q+1$Fu&#Y~e=p<#kB(^ut4mBQ*zjG2hC9$&x<9gXe28MP`qH7YnS(8zU zyPI>*8ohfGy^`1~iJnR9okS1w(9f)WYMlFu?^mPH&?kw$8!HDS(N9YM8vP*g0m6fw zE*$7Mum4FLW}IaQB{4LKBa#@RxgRMUob-<+E)F+Gh({+eJc(nH7$#4PPS3ICKVIYn z;fW^Fc~a7UQ^D=zBu0o+bjqn}o|eSv<~bvYk;a|vtR&7hhzLfq|(tk1awUC{Do5T-Ee3!)cNw`u>lY!-zlqS#f*i>os?VMNmv+kgI+p&C_-_*biLlfLBTPXGo29Tx3T;x@H0588TBrQe zmc(IOiR7D0cj6Y}?Nit)g$^lfsb)txS>JiKPGQ>=wn_PS7FKiULPR#VPhkf|-Nl?r z=M;95LcVj#zcG-}_*GlV0BJhYDBEt~Iu zQaG36Duo|;gy>`1_S(^-Q@AJvaypqlCgpz);sEYf z^ke-|8a7ETOZgXe$H%2`eF|5kaJ9yEr9xK;`S%d6N#WWQ#&c6yW?h%UgcL4UonFEl zYN}04VNwe1rS}!yl=82KHw&i-*}O%BJN-5tuD1*C5Ka{`#3S=g@#(_5gznmPkN6DX zy(#}Tai5Unei7zAs4;Wc52f(1_{}38_R|y$z zBCO*)-L1mjY4l2?hnhXp*vI_Nxv%v7guR7*gnfnk3!SrH8V9A(KaB%7t}q~tgH1Wa z2vZIfKTOEx;VL!A3LaVG9HP}8Dm+Sfw2(W3>pYBW#V>z_#|k+?w|}{Vcuby<_Af*f zxh>)KUtN%&EHXlPO1k-py1-jN8mFg0a)xlEkVgv@9tLOWkT_d-P8#Rd93khY{bvJi zqtv707fKv0ytG9iuY zP2pjAW4ihC&crk(8RxUmVtxgX#?7WoN#m9@ZdKE*6%DtiF)fWd(wM5Fnx|Nkdb~4@ z>1qG=!3z{iadGZWgQ0tbGlXp3E5bT7+@JQZ#t)?Npa?m8dDzA|Q)HHqq1kCXF8*j5 zkD15`&Pii#8c)6#@f8z4tMcLB_*)`8?5V$<#ye^JAWmGP(0f9r(D1(a2Wfng#)oNqWTB6Z(DP{x z|6F{X@QWJ#s~Y}|j`MGYoD>iE@6-5^!?5{&tcw73{%et+()c;;|Fe-_ge25|OXCmC z`uDW||L;7d?aws+O5<;iQ^(;crvID9e`&PJfVK^3@Ii|NYVvR;-!$W2##;;9WYD%I zu4BE@tK}dxjZd+!sm6WZ8EK8AN+cx8mu#<2*A$9J}9WvN4%mg|lOHPw{R-K8sS>%lR|dN2G_ar|YXR%S!&YBF`tvc`5ByR%6S?8e?n(yl#~mEw7CI~&fua9 z#z>^%hIdH@mu4{5#3y+D&){;3s>4!_P@Gc<}@5$g^ z<<78P?#tl*jQ@GZ&E^hejm+%N0-Ze+-g3N!9qpn zX7HrMd1`XL^VM7+e9HWb6kTi{jhj*m=vaj zteMH6F@uJhUMOZW{#}nGpFvTfLdO5Qrf%1iq;PR68C1nNQ%}V0*=NL`6}l9bB6%T$ zCFZBX!{bFY$=zDLoWUy@EVH>#=i#wDgOwS)mca^{*{`d%%5q&7Z>afZ2BTzHoxwX& z-WIw;k&DCJH5t6e1ynD57;x1-pe=(BGx*3VP#>%4C#t~Q&qSzyZX;yZ9Jw37R~dXG z!`H&@eE(y98l0!rAD8%(JU?gf3okV~oY)bU(Jcu3`dx-UY>&9^TB^Ch6I;jz`CB#k z*I3#%X=wiMaW|FHTG&R|R=AmPb0Pg(G@xSx+Bcws6n5v}=vr4cOT@hu1~?VpU^vw+3{Ta=4T|#HsJufNtX5g>LTt?9}Wb?Ad^Q zM5w!c%00e_uYel-D{yaNA7NkN{=x%k-21CEh6%tCY?D}J2NIZtT7Sq(U` z0jIE<^pmu_CksainaIkgHsDMdPE)_93(si4$eL;`D|U7R&XL}toY#Q!rLfu@zWi^% zXf-diE-tcYkzf8cU|a((kutUcmx)|z&dbfoDO@3bWdp8mz*XW+T9a$c!+(>0t@w2f zxItt>1FjdjN=}aFMl~n0f+>@w+|&SGa&KHX+mRXuz}vOqGYtj(lQl zz;rdI=vSQ-?^g33^UM(8;@sDOhZ=Cdnh#j?L5ni+VVgDiEa{IlV0HuMh(9WPO!&Bv zSFIwr<2%e3>AHWE(XZCGXUT?bY1Qq7-*91JgUJ_)d-3S!9lCQt#4;U8RukCepRB z`G&QJ>3cS!o46a&UXEL|he%J$>eYxojo4S>e!|}7WO`rY`->bPq~2fTz(x#c#6jk9 z-5qS6fg*?2L=QJUs1ZkqA8876hlmdq9wj_l=yuaEan5>pBaRh6t|m(T1T{}=#Q!w4 zlWL+P#7_~PDm<+w%G@*5+)Immrtz~Iac(2dQFEQG|9Oq*CqAkX7b^NPKZ4 z>KgHMjUH%3(6XE}tZ1YW^&-(m#6;Ze;^K)KCDn+uRmg}qXJaF>rso=wH|}~VHlo^y zQX|TyS88%S)o*IVGZu9$b>St7pFlov&4ez_4V8}UjbmP=VCeAS|_iLk;7 zQ&u%%bt7JH#G6vyFrA*ajKAH8cg5eaQ8Bv4_*x_E{R7!P6nG!u0lUG`tnVex{{RJUfevvN$J;3$i#ji}SNMuck+iZB$MAg;|WQ$sLo$Wm#OD z#n>z^snJ>XQp>trWSliw@JjKkglt}Iq47p2a=R{z3FdKwzrng-bYd2hEIQfro3pq@ z;uKSEt*Lo?7Spo0!?LEDht=-PV!G*V?IGu$Ebh%>hID>-q>bBsR`7u=9;~V0M)+_R zGqZRki&<8U`s^Cc=3~lwJc~J5%+2BnE9mOGI`bsXuL(V6e31yvi?evzxXTJ;5i})a zV~dDHt?8WgS;Wnm5OI1+JT1%!8-$I*tS~2}zmP>Gi=vt(Vc9|)UR9jL6KSdmJuCj4 z4e5m}R%Edxi)C3X&En-OUd-Ypi@Jfa&MQ{oRgvXcyk;IoXUz`4|nl1DC z-t-@{_$iC^YPx=jKU?(IEdI#iH#L73@?!!G-2PPaFLVBr#lOZ~oefza=U?_)BeGWTFaeiWF zGwhth9y#oi!){W#2zRw;R}uPmx60&u=Fm-gce7FSw;X!p(9@hP>)gwf{c<=khu%5t zpF2F;W->9@mLG7$njR;#2ikR{y*VK<{6R0sp6-Y!h)yO@H50mTAj1hJUfST zMb0t(JT;liPDhEmDO{MtC2EcqUX;U_94;2;r$y%oVfE`sgAA^UM+MV zz{lrseGb=3xh{tZBJRS=A~)o4qZAgIn8Rf8NkV@4c#{Y}Rx>&!hZ#BClEc&-Zq4EL z9B#8j*5O%mN3QwbZcNMJt{m>nVS29l8yQ9y@%>K@_h`Uu@?Ak|EycY#+?T@xDs{h* z(FaBNT^=hxoWqU&96Bl#$|0;d(&iMBXwH8_5|h6^ z*ZjRqLd~R*o>UHL~Lb}RV(#c z4sYbJLLTZXb6Azb>$W%DN8LAbcsGZ)a(G*|)mn${>f#+PtVX*ghxd45N@Sh2s_?$> z1L22O^Wz-W#H32o|6WKzEPcTwf^4; zzZd>sdt|+`e#+tZ9DdH>S2cgh`QHL?sI2gt6u#d4L*!2(4@HLl&S8^0{>fp3#D9hV znW0r4$TwgAX>QB!fAiQ(O6xq@`<|$2_(Y-!ktX zrE#7qYSP0B+vc%T9-Z>oF^}!?*goHU=rX#4)$DA34u0o6y5_M<9=qnz#SHGUuv^|= zJtpp+$DT^rL+B2VZtA_ea4+HBLi*jB?2~UkwI}f_0445c{jx$I@xC<*#RKx_r!n-m zkx)EHoMeE^B!`$X(3HdS7$ouVn#3cF4;C3B{85MZQF#o{<7g=?c#Oy}A;*7g9w&$& zCp_MIp_5VK|MECVp_7Fpgf7JBsd-!@+v(D&oRP;!@iR?v=Cdu4&2#fOFOLiIIA7h3 z5-w7YhY0EULgXTaMvGIqM9s0n0TM40zg##@c!hQ3rf^jrS4+P}_>{7)wXt0%GQm=A z5V=t}hPQw`w&3@_c}$jalkjFCb=JQ{{MI~fQ*kP{OX2v*Sz&74|9#6e;hlL*SM)C7 z-9kp`oRP={KKW;FnJ_sL5s$X^t?Qf28CVO8h} zU*{L%BCPzZDbMGzMEnKocd5E~(VQ=Fs9J|t@>rF}vOHGg@oFBg<*_{P|5DCPkTu!+ z%Dn&orm-W6ujlb*9&f0Q`=*i}j(l|0q zA|Dz5IPYJL8T~Ym&n14AZ~lIHT^`@$@kJhA=JB#TU*++&&5kMD3*YAPeIDQC{hyps zVMlx(Ao($mzw=n1$8UN3l*iAi%z6Ei$FJgax<&pyk3XgSk@x?9bLMjUOJioufAVNm zz`uEH$m2ijnrq_L3I%Lhz$OL%M&PQoE}%`JdHfVPLgHpJY+h*o9mp01Y+XQmi5&{q zvfy9OI~M#Oi*jXHc`JpOyG;Sxin|5uRKRx3RZTA14h8I5z>YF>E?{Scb}BTl)h-2e zQHajwi+=%oNa-rvUC8eCETCJ#zc;xZ(Y?^TzxFPmcL6;L=p|=Q;XYQM^V(O+epaVX z0S6S&x6pi#*k8I^mVTx|KE?|f=+XE7dA0_2zA^ROxz_A4kSJR!9#}#m50mm0`Lcu>5D7uyTpFCWA ziYFIvYQg{Zb3_5BNM~j0r-`2~Jfnb-s=!domHey%&Ne^C%+R@No+mtCI7;aDAV)a5 zfJ?Mo7fByez{TucxvVf&;-v*#UchDI?l55GC*`?<$Bc9;SBYG$YOFlIfa?mlR?U{I z3APt*DBwo<*~`R&|BF^um{e#!6T9*wfTA}Grxb9DnQ6PNfT?QUUcen9Tt*%_(+apt z%{#Sor(5Xm0`3v#Fu05}#M$qC1w15vzmD4n#2*y8V}_oY1R;7# z_e}xcsrhY9{M$zeYMT#M|4I0>@E7xQ z7{3|+qlmv0{Zr_s{C5%msQGV=xIw&C$-nq>L+StC#%x+b>k`_Q&_+>C#63}OR`Tx- ztl3Wb7A0(5Li-Xrme4_pdkL^*30sx?UsE&7`)JdtgzZb%PNmqdE4V`mJId3! zgq=jF^DLlYmlAd_p-Tz7N#E6?U27`Pwuk9V?50q6;a*HvFFi`wr-Yt0S#F!ZG5*Oc`$VkK@iN;dnJq5S}R9TH|4nlelY)k0{|3MX5XSv=UA?g}Z5F z31^pZW(j9WBA;XoztAws5{f;o}+7c!xbe$R4%k?$}S9xLyx0W!egvs)>=EHx<|0sI1 znp1?gScoaCaGNdc9nz-SkH&k3Iwz98hMS0*kMCwZ}im&9K-g$ujP_^Tx>7k3Bw3e#7LtSb3$EqKtrq2`-H zwKH6B}J?m4O6g{7p@I?vh%;O#`zvQKW z9|21Ex`b~OV$+4bQ}cV_55gaX?2!f*{7J=s7XG3TMQ*>9@Vi8En*S`}-xB^Rf%lHT zOZZ2}8+pC10RNTHs_b7MHkeM%D7Q_@*tCo`Wwb8)x!f3PEABik&UR&NQAP)a+Ly7L zRp?muZ`@4e^AFMQv5akG+g8{~xSeo&;SNGNoxgJ#j&mYZ9Cj)Dx1L>vB)f@pEn|06 z_7K^#-267Rd%5|(wwK7>!XD-3d)z){^fJD$LhdN-UB>=u_9>&U$Xy!10cG?vTYnLL z1mnOCD&w#+29$Ad8S|waQpUit|2GpDC{E@MI&*OYOsLgURq|8-X3dLuU|$_1ZT z#_eTHD&uA;lV!NcY*Sdgj9bdM)%bcS=Y{kyDdW{LmX`67hVi119lcz} zGVxc;>54Bm1Dh+#cwNnv@~krF8)dvz#+%k;HEyfbd|UXA@Lk~=A**p)t7`9?!mJO) zKXQuj6XB=A&xD@~nf^r?--v%%##d#0T{Bdc`nHT8%J{B~?>E+eEMvV@ppA8YF5?$d z*!)%eH{tKXKZJh@{}R&XuG{~X(W-*~biL)Jb%Tftq2gcgHxcsk+q#0yDrlo7^|lrN zenG;}<`w_?+^*su4^-OA?+$5ik$-~TJhHK%^8_;JGHh3lnr{P**tS;hZo zf0FQI;RqpDp8BccrwQ3Sy@E50bIerERP!w1*}`*#yp=F|p7{B~Q5FC8N|D=zQbr3e zs$h(WOSwdxp0OgATGr*JkE`H{3a;X@A!UpTUR}X8YHp=B?M%Pc{MS`5!T9x+=HF@1 zaHGVD6-=_|GeI3M*HebDrWL>{hSrYZdMUyoGqxSF#ocvR#uAt%e+ITg&S;E4+6O5`#= zX@t@F6+ETpf*NsQ#ec2D=;8{36+EpFn{^@q;UXDA6@=A{2whf8yj~a=GB+XO4x5yC zx`K>IgL$}0T;VK-#Qy@a()`z-3R?DJ1!d_a?Qt3^(n*-&)$nJ;pRG}zxB4$su*CRM z5gu|}C01y`S1SIWuUS^Xs}-yeUoL!2$cb=UsoYgUn%x-QtoVNz`7PmUAgg@O|+Qg!Hr2N8;_p+5Dt}Pb>Ib;%7p>Q(adYpieZX&X&kV@+++K3O3f3vFpC_7ev%d1@#9jgA>w?!4J zcnhF&ga6G7XGG*#uw~W%*t?aG$~H1@E9@lPPPo00PI`6}?`+CWmb*(8yH?S~bXR{j zMY{@j7w#e4Q`k-DoO_AyU8D3A-$&R>xUX&1;A$M^*i=FOL@T!IFGf700SMyy~Cn@AB_IS8;sR|EU0X z4V91i$Dd{RUlk`+{Ua_H8^`B=@zaHDQXE+Y>zpY(tBSL$ z{@2-5&XIDinoc=i$|&Il!V86?h0eo^#+a&qufJG$iI9gACwplXmubG23#p8&;tJzT zp>kCfSDSK872}OxTg7$a6HGatzyH+nd1K2FtKaaj&g3d?sp6(8Zq|y?$yJ)dMbp7~ zYZbRiccZ%9R(@&~_f#>hiaV?RpS0qoV|o>LRsCBkn|F&iKEn*u?-RdY_<%}1D9)pr z(T6o!a!zfQqK~L+HfJlufjw5m8~n##TIZYeRoxR+H1Y3$3Q3+6nJ46!7gVviho^Yz zRk5&&9P3mOuVQf(p(>uPqE18QIs~c+it{T!j+{!kidYqqDx%WaJC7pjjMi&UktC`} zRgtv$a?#RNG^m-W`oA}zr?HBx)^m(1uui^;7pf?5keo;rl`2YAl;xqH24b}ePl~&D zu<|oiJYU7LRXnHqRJby{O4CfTq>5!#EUn@t?cx`;Vhp`p#Vb|+%J2MCUaew970au5 zt?K`Ri!wmsNZr8xOhuuBw;rZt^MGl^8!mXQ}Ox(-E{vP)B(91&) z4X>w%eKaqZ!hZMl(A&d)in7V{J|6n20{0Yc6c1q2Lq87(dFb!qK$&@B(#+@p4+l%( z7)`|s$8pM5hf#)3r! zHr-O3>EUd3eHO=H-JK(a{_{l6_b|r8C=a7OT;SnCi@LF~)J3*`FZOUL$KzqFtEo}Z z!0j?A>|&gU_dHy|i7?B2I8j<*$H?sb|4$8)`h8x_4lJ#uX) z)-1?m54U-^$-@+RZWi)~_V9>@ zdptbgVTOnMRP$aT{r8LT+Q`Lx(8I$T=R*>?I5R!WvX$X1=$Y+du7^iG%<=G;hsWhS zt7es+kiro@>0yC~c^>9V;mBE#`cobjYRc2}XMtIEv4>|oJnbRvq0U3pL%>6brzgMv zRW8>p>>*+!VG(Aq?F4nZk%JrL(xNnhn$B-4_Vc8Cmo}C z4+WM|IxCFf+hq?`4`mM(t%e&m=k9rEQZ6|w6QA|4+{1GoUh?p~hov4~@UTQ4mqldF z7j-0X*e`on=HV3{jXLWY;`XZT!Ph*zw$@Uw^SJ*@ZegNGk&-RR-M{-iFr;B@{X{;P-I zbPTlg`-g|tP59Hpe;)qgW#7Z!atE}AgNIF;(5eY&YW@u&%hI-KQ}YLBu5Ftp zbZA1`CbVn9W=+_<$-jDYI_!>v-=Ycar7(*M(>pd{t0w>Iv89j|wr;{UP5#}4qQg#2 z=-Y(tny_aRwr|2NP1vCcJ2hd)CUkD{ujJ0@mT_m*XPquh=-Px`o3NWIvy?kkcW=TT zQurL}61z2_XA`eKZF4&dWRZ z{{Brkq6r5uw+a24a8MKaH{rl0{|^b$@0N5x6AsomIV3I)^?^+|Ox+zSWU0fOFsRAD zhce2I<2kYk$24JZ6NWZnh-}pTwQa)DYVu;v`fi%Tqzt#!K8^$6IGb>16HfU5s=5wn zD~cq_Rb<61sNk9&7)XnPA}$6L5W$roAWBk!|36WJfFzM129ki769S50U{OIaVO0;J zAO@1knh*>aPz+#Pb?@A!J#P4-CI9)G8Z{@>xn28$O*D%u1&v2!ozhNLF8wMy^4{an49Ap@*E88$F z^$^2VhM|UGsTO9!_`?k&R0X>w5|1*BHH(FvBp*Fw=0es_2w< z%PodmrHq@0`QL81*Kmj7Zo{31yX4Jxg02fQxku|sa-U(2VYcD^6oLDh8+fi^o^D%q z8J1%oG%PX9H#}x|$ndaXfnlLWF>Flx5yPWthcG?HUu1Zkd%&<*c1Dg#K4ExLRm9te z#-)bm4Nn=KF+6Qp#st#3QS+?fIb9KE!o^|a7Yt@tZg??e&V{1V4M9rAv)B12FITtN&7}goyG^|Z?F#*oC-moFn zOAF_E%kaM8ZNq;I?-({IGF{vQo%o+W7~WH4hGk=h9~d?(=7(vu8RR2bIPX@&w}y`m zUl=|yd?x#+sk&{3&t+lSabdqSd~Nv3uw7a42#Ra=Rzcc(~_};L~@PlEe zytK!Bc_+W%|#J>8YGFo8b}e|MB~?C*f%Z;m}2Nwo4$4EmxgAl7Zsw+=& z4&-fqoTG;0c*hBzzdzGR7k@!f(^1QJpLo$&$8oabAC8k8bsZ;q{>>#$&GI>iDmIlg!_J)qr6!Wk9rI7@u3(pXq>1g3N%h5#L#*VWc=ZG__xWY{x&AASa zb7g1RTr{R}p1Sd>wG=;J_%C5x^Hz?&j@FK@jy8^q9Bm!#B)CvlinX+NbnyIn7l#l# z(&f0=amoMNJ3G3lx_DDFy>5=4j!PZg9hW&SPca!b=GjB*&-E#B^m3Fs%5+V+F*qX& z>FwyFn2g3QXYc12>FDnmLc3#-V}N5|+6kR>whwk(sZor>Asjo@G2AiCaTV*;m5t?$ zkc5gfRo3z?-lXF=(e1>LWAvZg2bUsw44&#T5bk2{`7Nph<*nI(>A9ZMa{98Wo(PWK%H z#>AfCrPtW!94~0>^C`k|ktj29cf92Yj@Q)994j0zi@)SpDY8Y;UU95eca`t{?CDj< zn#7~#b;mks-f+ArvR24KC|IBP29b?I+TRv=CwVtYVkHkF!Dg^8q^3Mp$2kaH{@3gGs znaN)-@bh#j_m;Ava33M}3CHdi^3A!w@Bra~LMBZ6!Qz#Km4$~Cc@Gn>BCIMryvTcm z_>sb+ghv;73*yy;)rH3vd5;%AL0Cgrv&dUJnY? z9^(E#C7@wIgMd>*e*W=ptI^?s%)H^t*b2EgqI306Sk4JyLb;_PhkbwOU28Cy@b7m@A8j7 zYK8j=`wO{%T*d+71BHWx@f2bvR|X6T7#T1$V0gf=fcyFTe+7(rvO7XXCLBLTA00pv zIlW^7u91a;u~Lo`ju%c4UMr-4dhYy4$Rqg+Cu`m*LVBkLOiP@a>EbhlGlkO>fv#EV z-lEcO4Y)1fc5TSG{fKwUb(ipN;XOjS?&bX`K3f=9W{v{RRs4BL`GClS0rN%pg2CZz z3)Ed0@UTYF!jv8re@wVY$o2fU$YSZKi7R}j^h@Mg8t`<$Q{oix<4Cq;+C}U>8}g5k zo(p(hgu~fl8p{J-R9F+vRbnCJkBm&XLdYPrtQ3E_$g)a&b&+L_;;@$2G<&Rc8_%nN z^#N-G)@g;gS2-8$8v@=A*ck9u$lnU6=S@c!IdN0Kd$b3<%lk-r+9`NHfMY4(4f~;H z+$^Mq5w>U@wg!9>@Ub|REFt1&DMQ|g6o0Pn7eYpk#_a(+1HKOUF5sJxe-VXkhsd`= zM*BYChk!}ZrGtG}z)t}`COut02mGq;FG=}Z$iIuSL!;XAPrwBH5r7PT29(S4XpGDn ziJXzRXOv9 zfHj4+gzVPNP$zND&ez?#8BWadA7)R=P(MRGadtWN$%z-FY@qI`85)XEK-oXV8zm); zXB2sv;aN(lv5*OzBhp0JRM<>NSQPlHC0Ffx>3Uo^L&LUkhbWN6SA~*6&)Vf9#U!I}6c#mY^-BBW5 zDlAL(URnNv!6AKQ=_~A)y!}O(!+>NNm|;-jgOiuThlmf&Fia%wkl`6dsXHRWND(UO z8ZCZxhA~MT^hUc>X+H*a1zxn8{n{8zuw^s2sBlosk2nhhE}YDnMSeTEfkmei8F k(7MOS)_n(-7FxAxR%mj?6@~V>duXA3+0e2f!^=wl2e@E+-T(jq literal 0 HcmV?d00001 diff --git a/dlls/geoip/GeoIP.h b/dlls/geoip/GeoIP.h new file mode 100755 index 00000000..06211df4 --- /dev/null +++ b/dlls/geoip/GeoIP.h @@ -0,0 +1,158 @@ +/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */ +/* GeoIP.h + * + * Copyright (C) 2003 MaxMind LLC + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GEOIP_H +#define GEOIP_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include /* for fstat */ +#include /* for fstat */ + +//typedef int uint32_t; + +#define SEGMENT_RECORD_LENGTH 3 +#define STANDARD_RECORD_LENGTH 3 +#define ORG_RECORD_LENGTH 4 +#define MAX_RECORD_LENGTH 4 +#define NUM_DB_TYPES 16 + +typedef struct GeoIPTag { + FILE *GeoIPDatabase; + char *file_path; + unsigned char *cache; + unsigned int *databaseSegments; + char databaseType; + time_t mtime; + int flags; + char record_length; + int record_iter; /* used in GeoIP_next_record */ +} GeoIP; + +typedef struct GeoIPRegionTag { + char country_code[3]; + char region[3]; +} GeoIPRegion; + +typedef enum { + GEOIP_STANDARD = 0, + GEOIP_MEMORY_CACHE = 1, + GEOIP_CHECK_CACHE = 2, +} GeoIPOptions; + +typedef enum { + GEOIP_COUNTRY_EDITION = 1, + GEOIP_REGION_EDITION_REV0 = 7, + GEOIP_CITY_EDITION_REV0 = 6, + GEOIP_ORG_EDITION = 5, + GEOIP_ISP_EDITION = 4, + GEOIP_CITY_EDITION_REV1 = 2, + GEOIP_REGION_EDITION_REV1 = 3, + GEOIP_PROXY_EDITION = 8, + GEOIP_ASNUM_EDITION = 9, + GEOIP_NETSPEED_EDITION = 10, +} GeoIPDBTypes; + +typedef enum { + GEOIP_ANON_PROXY = 1, + GEOIP_HTTP_X_FORWARDED_FOR_PROXY = 2, + GEOIP_HTTP_CLIENT_IP_PROXY = 3, +} GeoIPProxyTypes; + +typedef enum { + GEOIP_UNKNOWN_SPEED = 0, + GEOIP_DIALUP_SPEED = 1, + GEOIP_CABLEDSL_SPEED = 2, + GEOIP_CORPORATE_SPEED = 3, +} GeoIPNetspeedValues; + +extern char **GeoIPDBFileName; +extern const char * GeoIPDBDescription[NUM_DB_TYPES]; +extern const char *GeoIPCountryDBFileName; +extern const char *GeoIPRegionDBFileName; +extern const char *GeoIPCityDBFileName; +extern const char *GeoIPOrgDBFileName; +extern const char *GeoIPISPDBFileName; + +extern const char GeoIP_country_code[247][3]; +extern const char GeoIP_country_code3[247][4]; +extern const char * GeoIP_country_name[247]; +extern const char GeoIP_country_continent[247][3]; + +#ifdef DLL +#define GEOIP_API __declspec(dllexport) +#else +#define GEOIP_API +#endif /* DLL */ + +GEOIP_API GeoIP* GeoIP_open_type (int type, int flags); +GEOIP_API GeoIP* GeoIP_new(int flags); +GEOIP_API GeoIP* GeoIP_open(const char * filename, int flags); +GEOIP_API int GeoIP_db_avail(int type); +GEOIP_API void GeoIP_delete(GeoIP* gi); +GEOIP_API const char *GeoIP_country_code_by_addr (GeoIP* gi, const char *addr); +GEOIP_API const char *GeoIP_country_code_by_name (GeoIP* gi, const char *host); +GEOIP_API const char *GeoIP_country_code3_by_addr (GeoIP* gi, const char *addr); +GEOIP_API const char *GeoIP_country_code3_by_name (GeoIP* gi, const char *host); +GEOIP_API const char *GeoIP_country_name_by_addr (GeoIP* gi, const char *addr); +GEOIP_API const char *GeoIP_country_name_by_name (GeoIP* gi, const char *host); + +/* Deprecated - for backwards compatibility only */ +GEOIP_API int GeoIP_country_id_by_addr (GeoIP* gi, const char *addr); +GEOIP_API int GeoIP_country_id_by_name (GeoIP* gi, const char *host); +GEOIP_API char *GeoIP_org_by_addr (GeoIP* gi, const char *addr); +GEOIP_API char *GeoIP_org_by_name (GeoIP* gi, const char *host); +/* End deprecated */ + +GEOIP_API int GeoIP_id_by_addr (GeoIP* gi, const char *addr); +GEOIP_API int GeoIP_id_by_name (GeoIP* gi, const char *host); + +GEOIP_API GeoIPRegion * GeoIP_region_by_addr (GeoIP* gi, const char *addr); +GEOIP_API GeoIPRegion * GeoIP_region_by_name (GeoIP* gi, const char *host); + +/* Warning - don't call this after GeoIP_assign_region_by_inetaddr calls */ +GEOIP_API void GeoIPRegion_delete (GeoIPRegion *gir); + +GEOIP_API void GeoIP_assign_region_by_inetaddr(GeoIP* gi, unsigned long inetaddr, GeoIPRegion *gir); + +/* Used to query GeoIP Organization, ISP and AS Number databases */ +GEOIP_API char *GeoIP_name_by_addr (GeoIP* gi, const char *addr); +GEOIP_API char *GeoIP_name_by_name (GeoIP* gi, const char *host); + +GEOIP_API char *GeoIP_database_info (GeoIP* gi); +GEOIP_API unsigned char GeoIP_database_edition (GeoIP* gi); + +GEOIP_API unsigned int _seek_record (GeoIP *gi, unsigned long ipnum); +GEOIP_API unsigned long _addr_to_num (const char *addr); + +#ifdef BSD +#define memcpy(dest, src, n) bcopy(src, dest, n) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* GEOIP_H */ diff --git a/dlls/geoip/amxxmodule.cpp b/dlls/geoip/amxxmodule.cpp new file mode 100755 index 00000000..b021ab49 --- /dev/null +++ b/dlls/geoip/amxxmodule.cpp @@ -0,0 +1,2990 @@ +/* AMX Mod X +* +* by the AMX Mod X Development Team +* originally developed by OLO +* +* Parts Copyright (C) 2001-2003 Will Day +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of the GNU General Public License as published by the +* Free Software Foundation; either version 2 of the License, or (at +* your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software Foundation, +* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* In addition, as a special exception, the author gives permission to +* link the code of this program with the Half-Life Game Engine ("HL +* Engine") and Modified Game Libraries ("MODs") developed by Valve, +* L.L.C ("Valve"). You must obey the GNU General Public License in all +* respects for all of the code used other than the HL Engine and MODs +* from Valve. If you modify this file, you may extend this exception +* to your version of the file, but you are not obligated to do so. If +* you do not wish to do so, delete this exception statement from your +* version. +* +* Description: AMX Mod X Module Interface Functions +*/ + +#include +#include +#include +#include +#include +#include "amxxmodule.h" + +/************* METAMOD SUPPORT *************/ +#ifdef USE_METAMOD + +enginefuncs_t g_engfuncs; +globalvars_t *gpGlobals; + +// GetEntityAPI2 functions +static DLL_FUNCTIONS g_EntityAPI_Table = +{ +#ifdef FN_GameDLLInit + FN_GameDLLInit, +#else + NULL, +#endif +#ifdef FN_DispatchSpawn + FN_DispatchSpawn, +#else + NULL, +#endif +#ifdef FN_DispatchThink + FN_DispatchThink, +#else + NULL, +#endif +#ifdef FN_DispatchUse + FN_DispatchUse, +#else + NULL, +#endif +#ifdef FN_DispatchTouch + FN_DispatchTouch, +#else + NULL, +#endif +#ifdef FN_DispatchBlocked + FN_DispatchBlocked, +#else + NULL, +#endif +#ifdef FN_DispatchKeyValue + FN_DispatchKeyValue, +#else + NULL, +#endif +#ifdef FN_DispatchSave + FN_DispatchSave, +#else + NULL, +#endif +#ifdef FN_DispatchRestore + FN_DispatchRestore, +#else + NULL, +#endif +#ifdef FN_DispatchObjectCollsionBox + FN_DispatchObjectCollsionBox, +#else + NULL, +#endif +#ifdef FN_SaveWriteFields + FN_SaveWriteFields, +#else + NULL, +#endif +#ifdef FN_SaveReadFields + FN_SaveReadFields, +#else + NULL, +#endif +#ifdef FN_SaveGlobalState + FN_SaveGlobalState, +#else + NULL, +#endif +#ifdef FN_RestoreGlobalState + FN_RestoreGlobalState, +#else + NULL, +#endif +#ifdef FN_ResetGlobalState + FN_ResetGlobalState, +#else + NULL, +#endif +#ifdef FN_ClientConnect + FN_ClientConnect, +#else + NULL, +#endif +#ifdef FN_ClientDisconnect + FN_ClientDisconnect, +#else + NULL, +#endif +#ifdef FN_ClientKill + FN_ClientKill, +#else + NULL, +#endif +#ifdef FN_ClientPutInServer + FN_ClientPutInServer, +#else + NULL, +#endif +#ifdef FN_ClientCommand + FN_ClientCommand, +#else + NULL, +#endif +#ifdef FN_ClientUserInfoChanged + FN_ClientUserInfoChanged, +#else + NULL, +#endif +#ifdef FN_ServerActivate + FN_ServerActivate, +#else + NULL, +#endif +#ifdef FN_ServerDeactivate + FN_ServerDeactivate, +#else + NULL, +#endif +#ifdef FN_PlayerPreThink + FN_PlayerPreThink, +#else + NULL, +#endif +#ifdef FN_PlayerPostThink + FN_PlayerPostThink, +#else + NULL, +#endif +#ifdef FN_StartFrame + FN_StartFrame, +#else + NULL, +#endif +#ifdef FN_ParmsNewLevel + FN_ParmsNewLevel, +#else + NULL, +#endif +#ifdef FN_ParmsChangeLevel + FN_ParmsChangeLevel, +#else + NULL, +#endif +#ifdef FN_GetGameDescription + FN_GetGameDescription, +#else + NULL, +#endif +#ifdef FN_PlayerCustomization + FN_PlayerCustomization, +#else + NULL, +#endif +#ifdef FN_SpectatorConnect + FN_SpectatorConnect, +#else + NULL, +#endif +#ifdef FN_SpectatorDisconnect + FN_SpectatorDisconnect, +#else + NULL, +#endif +#ifdef FN_SpectatorThink + FN_SpectatorThink, +#else + NULL, +#endif +#ifdef FN_Sys_Error + FN_Sys_Error, +#else + NULL, +#endif +#ifdef FN_PM_Move + FN_PM_Move, +#else + NULL, +#endif +#ifdef FN_PM_Init + FN_PM_Init, +#else + NULL, +#endif +#ifdef FN_PM_FindTextureType + FN_PM_FindTextureType, +#else + NULL, +#endif +#ifdef FN_SetupVisibility + FN_SetupVisibility, +#else + NULL, +#endif +#ifdef FN_UpdateClientData + FN_UpdateClientData, +#else + NULL, +#endif +#ifdef FN_AddToFullPack + FN_AddToFullPack, +#else + NULL, +#endif +#ifdef FN_CreateBaseline + FN_CreateBaseline, +#else + NULL, +#endif +#ifdef FN_RegisterEncoders + FN_RegisterEncoders, +#else + NULL, +#endif +#ifdef FN_GetWeaponData + FN_GetWeaponData, +#else + NULL, +#endif +#ifdef FN_CmdStart + FN_CmdStart, +#else + NULL, +#endif +#ifdef FN_CmdEnd + FN_CmdEnd, +#else + NULL, +#endif +#ifdef FN_ConnectionlessPacket + FN_ConnectionlessPacket, +#else + NULL, +#endif +#ifdef FN_GetHullBounds + FN_GetHullBounds, +#else + NULL, +#endif +#ifdef FN_CreateInstancedBaselines + FN_CreateInstancedBaselines, +#else + NULL, +#endif +#ifdef FN_InconsistentFile + FN_InconsistentFile, +#else + NULL, +#endif +#ifdef FN_AllowLagCompensation + FN_AllowLagCompensation +#else + NULL +#endif +}; // g_EntityAPI2_Table + +// GetEntityAPI2_Post functions +static DLL_FUNCTIONS g_EntityAPI_Post_Table = +{ +#ifdef FN_GameDLLInit_Post + FN_GameDLLInit_Post, +#else + NULL, +#endif +#ifdef FN_DispatchSpawn_Post + FN_DispatchSpawn_Post, +#else + NULL, +#endif +#ifdef FN_DispatchThink_Post + FN_DispatchThink_Post, +#else + NULL, +#endif +#ifdef FN_DispatchUse_Post + FN_DispatchUse_Post, +#else + NULL, +#endif +#ifdef FN_DispatchTouch_Post + FN_DispatchTouch_Post, +#else + NULL, +#endif +#ifdef FN_DispatchBlocked_Post + FN_DispatchBlocked_Post, +#else + NULL, +#endif +#ifdef FN_DispatchKeyValue_Post + FN_DispatchKeyValue_Post, +#else + NULL, +#endif +#ifdef FN_DispatchSave_Post + FN_DispatchSave_Post, +#else + NULL, +#endif +#ifdef FN_DispatchRestore_Post + FN_DispatchRestore_Post, +#else + NULL, +#endif +#ifdef FN_DispatchObjectCollsionBox_Post + FN_DispatchObjectCollsionBox_Post, +#else + NULL, +#endif +#ifdef FN_SaveWriteFields_Post + FN_SaveWriteFields_Post, +#else + NULL, +#endif +#ifdef FN_SaveReadFields_Post + FN_SaveReadFields_Post, +#else + NULL, +#endif +#ifdef FN_SaveGlobalState_Post + FN_SaveGlobalState_Post, +#else + NULL, +#endif +#ifdef FN_RestoreGlobalState_Post + FN_RestoreGlobalState_Post, +#else + NULL, +#endif +#ifdef FN_ResetGlobalState_Post + FN_ResetGlobalState_Post, +#else + NULL, +#endif +#ifdef FN_ClientConnect_Post + FN_ClientConnect_Post, +#else + NULL, +#endif +#ifdef FN_ClientDisconnect_Post + FN_ClientDisconnect_Post, +#else + NULL, +#endif +#ifdef FN_ClientKill_Post + FN_ClientKill_Post, +#else + NULL, +#endif +#ifdef FN_ClientPutInServer_Post + FN_ClientPutInServer_Post, +#else + NULL, +#endif +#ifdef FN_ClientCommand_Post + FN_ClientCommand_Post, +#else + NULL, +#endif +#ifdef FN_ClientUserInfoChanged_Post + FN_ClientUserInfoChanged_Post, +#else + NULL, +#endif +#ifdef FN_ServerActivate_Post + FN_ServerActivate_Post, +#else + NULL, +#endif +#ifdef FN_ServerDeactivate_Post + FN_ServerDeactivate_Post, +#else + NULL, +#endif +#ifdef FN_PlayerPreThink_Post + FN_PlayerPreThink_Post, +#else + NULL, +#endif +#ifdef FN_PlayerPostThink_Post + FN_PlayerPostThink_Post, +#else + NULL, +#endif +#ifdef FN_StartFrame_Post + FN_StartFrame_Post, +#else + NULL, +#endif +#ifdef FN_ParmsNewLevel_Post + FN_ParmsNewLevel_Post, +#else + NULL, +#endif +#ifdef FN_ParmsChangeLevel_Post + FN_ParmsChangeLevel_Post, +#else + NULL, +#endif +#ifdef FN_GetGameDescription_Post + FN_GetGameDescription_Post, +#else + NULL, +#endif +#ifdef FN_PlayerCustomization_Post + FN_PlayerCustomization_Post, +#else + NULL, +#endif +#ifdef FN_SpectatorConnect_Post + FN_SpectatorConnect_Post, +#else + NULL, +#endif +#ifdef FN_SpectatorDisconnect_Post + FN_SpectatorDisconnect_Post, +#else + NULL, +#endif +#ifdef FN_SpectatorThink_Post + FN_SpectatorThink_Post, +#else + NULL, +#endif +#ifdef FN_Sys_Error_Post + FN_Sys_Error_Post, +#else + NULL, +#endif +#ifdef FN_PM_Move_Post + FN_PM_Move_Post, +#else + NULL, +#endif +#ifdef FN_PM_Init_Post + FN_PM_Init_Post, +#else + NULL, +#endif +#ifdef FN_PM_FindTextureType_Post + FN_PM_FindTextureType_Post, +#else + NULL, +#endif +#ifdef FN_SetupVisibility_Post + FN_SetupVisibility_Post, +#else + NULL, +#endif +#ifdef FN_UpdateClientData_Post + FN_UpdateClientData_Post, +#else + NULL, +#endif +#ifdef FN_AddToFullPack_Post + FN_AddToFullPack_Post, +#else + NULL, +#endif +#ifdef FN_CreateBaseline_Post + FN_CreateBaseline_Post, +#else + NULL, +#endif +#ifdef FN_RegisterEncoders_Post + FN_RegisterEncoders_Post, +#else + NULL, +#endif +#ifdef FN_GetWeaponData_Post + FN_GetWeaponData_Post, +#else + NULL, +#endif +#ifdef FN_CmdStart_Post + FN_CmdStart_Post, +#else + NULL, +#endif +#ifdef FN_CmdEnd_Post + FN_CmdEnd_Post, +#else + NULL, +#endif +#ifdef FN_ConnectionlessPacket_Post + FN_ConnectionlessPacket_Post, +#else + NULL, +#endif +#ifdef FN_GetHullBounds_Post + FN_GetHullBounds_Post, +#else + NULL, +#endif +#ifdef FN_CreateInstancedBaselines_Post + FN_CreateInstancedBaselines_Post, +#else + NULL, +#endif +#ifdef FN_InconsistentFile_Post + FN_InconsistentFile_Post, +#else + NULL, +#endif +#ifdef FN_AllowLagCompensation + FN_AllowLagCompensation, +#else + NULL, +#endif +}; // g_EntityAPI2_Table + +static enginefuncs_t g_EngineFuncs_Table = +{ +#ifdef FN_PrecacheModel + FN_PrecacheModel, +#else + NULL, +#endif +#ifdef FN_PrecacheSound + FN_PrecacheSound, +#else + NULL, +#endif +#ifdef FN_SetModel + FN_SetModel, +#else + NULL, +#endif +#ifdef FN_ModelIndex + FN_ModelIndex, +#else + NULL, +#endif +#ifdef FN_ModelFrames + FN_ModelFrames, +#else + NULL, +#endif +#ifdef FN_SetSize + FN_SetSize, +#else + NULL, +#endif +#ifdef FN_ChangeLevel + FN_ChangeLevel, +#else + NULL, +#endif +#ifdef FN_GetSpawnParms + FN_GetSpawnParms, +#else + NULL, +#endif +#ifdef FN_SaveSpawnParms + FN_SaveSpawnParms, +#else + NULL, +#endif +#ifdef FN_VecToYaw + FN_VecToYaw, +#else + NULL, +#endif +#ifdef FN_VecToAngles + FN_VecToAngles, +#else + NULL, +#endif +#ifdef FN_MoveToOrigin + FN_MoveToOrigin, +#else + NULL, +#endif +#ifdef FN_ChangeYaw + FN_ChangeYaw, +#else + NULL, +#endif +#ifdef FN_ChangePitch + FN_ChangePitch, +#else + NULL, +#endif +#ifdef FN_FindEntityByString + FN_FindEntityByString, +#else + NULL, +#endif +#ifdef FN_GetEntityIllum + FN_GetEntityIllum, +#else + NULL, +#endif +#ifdef FN_FindEntityInSphere + FN_FindEntityInSphere, +#else + NULL, +#endif +#ifdef FN_FindClientInPVS + FN_FindClientInPVS, +#else + NULL, +#endif +#ifdef FN_EntitiesInPVS + FN_EntitiesInPVS, +#else + NULL, +#endif +#ifdef FN_MakeVectors + FN_MakeVectors, +#else + NULL, +#endif +#ifdef FN_AngleVectors + FN_AngleVectors, +#else + NULL, +#endif +#ifdef FN_CreateEntity + FN_CreateEntity, +#else + NULL, +#endif +#ifdef FN_RemoveEntity + FN_RemoveEntity, +#else + NULL, +#endif +#ifdef FN_CreateNamedEntity + FN_CreateNamedEntity, +#else + NULL, +#endif +#ifdef FN_MakeStatic + FN_MakeStatic, +#else + NULL, +#endif +#ifdef FN_EntIsOnFloor + FN_EntIsOnFloor, +#else + NULL, +#endif +#ifdef FN_DropToFloor + FN_DropToFloor, +#else + NULL, +#endif +#ifdef FN_WalkMove + FN_WalkMove, +#else + NULL, +#endif +#ifdef FN_SetOrigin + FN_SetOrigin, +#else + NULL, +#endif +#ifdef FN_EmitSound + FN_EmitSound, +#else + NULL, +#endif +#ifdef FN_EmitAmbientSound + FN_EmitAmbientSound, +#else + NULL, +#endif +#ifdef FN_TraceLine + FN_TraceLine, +#else + NULL, +#endif +#ifdef FN_TraceToss + FN_TraceToss, +#else + NULL, +#endif +#ifdef FN_TraceMonsterHull + FN_TraceMonsterHull, +#else + NULL, +#endif +#ifdef FN_TraceHull + FN_TraceHull, +#else + NULL, +#endif +#ifdef FN_TraceModel + FN_TraceModel, +#else + NULL, +#endif +#ifdef FN_TraceTexture + FN_TraceTexture, +#else + NULL, +#endif +#ifdef FN_TraceSphere + FN_TraceSphere, +#else + NULL, +#endif +#ifdef FN_GetAimVector + FN_GetAimVector, +#else + NULL, +#endif +#ifdef FN_ServerCommand + FN_ServerCommand, +#else + NULL, +#endif +#ifdef FN_ServerExecute + FN_ServerExecute, +#else + NULL, +#endif +#ifdef FN_engClientCommand + FN_engClientCommand, +#else + NULL, +#endif +#ifdef FN_ParticleEffect + FN_ParticleEffect, +#else + NULL, +#endif +#ifdef FN_LightStyle + FN_LightStyle, +#else + NULL, +#endif +#ifdef FN_DecalIndex + FN_DecalIndex, +#else + NULL, +#endif +#ifdef FN_PointContents + FN_PointContents, +#else + NULL, +#endif +#ifdef FN_MessageBegin + FN_MessageBegin, +#else + NULL, +#endif +#ifdef FN_MessageEnd + FN_MessageEnd, +#else + NULL, +#endif +#ifdef FN_WriteByte + FN_WriteByte, +#else + NULL, +#endif +#ifdef FN_WriteChar + FN_WriteChar, +#else + NULL, +#endif +#ifdef FN_WriteShort + FN_WriteShort, +#else + NULL, +#endif +#ifdef FN_WriteLong + FN_WriteLong, +#else + NULL, +#endif +#ifdef FN_WriteAngle + FN_WriteAngle, +#else + NULL, +#endif +#ifdef FN_WriteCoord + FN_WriteCoord, +#else + NULL, +#endif +#ifdef FN_WriteString + FN_WriteString, +#else + NULL, +#endif +#ifdef FN_WriteEntity + FN_WriteEntity, +#else + NULL, +#endif +#ifdef FN_CVarRegister + FN_CVarRegister, +#else + NULL, +#endif +#ifdef FN_CVarGetFloat + FN_CVarGetFloat, +#else + NULL, +#endif +#ifdef FN_CVarGetString + FN_CVarGetString, +#else + NULL, +#endif +#ifdef FN_CVarSetFloat + FN_CVarSetFloat, +#else + NULL, +#endif +#ifdef FN_CVarSetString + FN_CVarSetString, +#else + NULL, +#endif +#ifdef FN_AlertMessage + FN_AlertMessage, +#else + NULL, +#endif +#ifdef FN_EngineFprintf + FN_EngineFprintf, +#else + NULL, +#endif +#ifdef FN_PvAllocEntPrivateData + FN_PvAllocEntPrivateData, +#else + NULL, +#endif +#ifdef FN_PvEntPrivateData + FN_PvEntPrivateData, +#else + NULL, +#endif +#ifdef FN_FreeEntPrivateData + FN_FreeEntPrivateData, +#else + NULL, +#endif +#ifdef FN_SzFromIndex + FN_SzFromIndex, +#else + NULL, +#endif +#ifdef FN_AllocString + FN_AllocString, +#else + NULL, +#endif +#ifdef FN_GetVarsOfEnt + FN_GetVarsOfEnt, +#else + NULL, +#endif +#ifdef FN_PEntityOfEntOffset + FN_PEntityOfEntOffset, +#else + NULL, +#endif +#ifdef FN_EntOffsetOfPEntity + FN_EntOffsetOfPEntity, +#else + NULL, +#endif +#ifdef FN_IndexOfEdict + FN_IndexOfEdict, +#else + NULL, +#endif +#ifdef FN_PEntityOfEntIndex + FN_PEntityOfEntIndex, +#else + NULL, +#endif +#ifdef FN_FindEntityByVars + FN_FindEntityByVars, +#else + NULL, +#endif +#ifdef FN_GetModelPtr + FN_GetModelPtr, +#else + NULL, +#endif +#ifdef FN_RegUserMsg + FN_RegUserMsg, +#else + NULL, +#endif +#ifdef FN_AnimationAutomove + FN_AnimationAutomove, +#else + NULL, +#endif +#ifdef FN_GetBonePosition + FN_GetBonePosition, +#else + NULL, +#endif +#ifdef FN_FunctionFromName + FN_FunctionFromName, +#else + NULL, +#endif +#ifdef FN_NameForFunction + FN_NameForFunction, +#else + NULL, +#endif +#ifdef FN_ClientPrintf + FN_ClientPrintf, +#else + NULL, +#endif +#ifdef FN_ServerPrint + FN_ServerPrint, +#else + NULL, +#endif +#ifdef FN_Cmd_Args + FN_Cmd_Args, +#else + NULL, +#endif +#ifdef FN_Cmd_Argv + FN_Cmd_Argv, +#else + NULL, +#endif +#ifdef FN_Cmd_Argc + FN_Cmd_Argc, +#else + NULL, +#endif +#ifdef FN_GetAttachment + FN_GetAttachment, +#else + NULL, +#endif +#ifdef FN_CRC32_Init + FN_CRC32_Init, +#else + NULL, +#endif +#ifdef FN_CRC32_ProcessBuffer + FN_CRC32_ProcessBuffer, +#else + NULL, +#endif +#ifdef FN_CRC32_ProcessByte + FN_CRC32_ProcessByte, +#else + NULL, +#endif +#ifdef FN_CRC32_Final + FN_CRC32_Final, +#else + NULL, +#endif +#ifdef FN_RandomLong + FN_RandomLong, +#else + NULL, +#endif +#ifdef FN_RandomFloat + FN_RandomFloat, +#else + NULL, +#endif +#ifdef FN_SetView + FN_SetView, +#else + NULL, +#endif +#ifdef FN_Time + FN_Time, +#else + NULL, +#endif +#ifdef FN_CrosshairAngle + FN_CrosshairAngle, +#else + NULL, +#endif +#ifdef FN_LoadFileForMe + FN_LoadFileForMe, +#else + NULL, +#endif +#ifdef FN_FreeFile + FN_FreeFile, +#else + NULL, +#endif +#ifdef FN_EndSection + FN_EndSection, +#else + NULL, +#endif +#ifdef FN_CompareFileTime + FN_CompareFileTime, +#else + NULL, +#endif +#ifdef FN_GetGameDir + FN_GetGameDir, +#else + NULL, +#endif +#ifdef FN_Cvar_RegisterVariable + FN_Cvar_RegisterVariable, +#else + NULL, +#endif +#ifdef FN_FadeClientVolume + FN_FadeClientVolume, +#else + NULL, +#endif +#ifdef FN_SetClientMaxspeed + FN_SetClientMaxspeed, +#else + NULL, +#endif +#ifdef FN_CreateFakeClient + FN_CreateFakeClient, +#else + NULL, +#endif +#ifdef FN_RunPlayerMove + FN_RunPlayerMove, +#else + NULL, +#endif +#ifdef FN_NumberOfEntities + FN_NumberOfEntities, +#else + NULL, +#endif +#ifdef FN_GetInfoKeyBuffer + FN_GetInfoKeyBuffer, +#else + NULL, +#endif +#ifdef FN_InfoKeyValue + FN_InfoKeyValue, +#else + NULL, +#endif +#ifdef FN_SetKeyValue + FN_SetKeyValue, +#else + NULL, +#endif +#ifdef FN_SetClientKeyValue + FN_SetClientKeyValue, +#else + NULL, +#endif +#ifdef FN_IsMapValid + FN_IsMapValid, +#else + NULL, +#endif +#ifdef FN_StaticDecal + FN_StaticDecal, +#else + NULL, +#endif +#ifdef FN_PrecacheGeneric + FN_PrecacheGeneric, +#else + NULL, +#endif +#ifdef FN_GetPlayerUserId + FN_GetPlayerUserId, +#else + NULL, +#endif +#ifdef FN_BuildSoundMsg + FN_BuildSoundMsg, +#else + NULL, +#endif +#ifdef FN_IsDedicatedServer + FN_IsDedicatedServer, +#else + NULL, +#endif +#ifdef FN_CVarGetPointer + FN_CVarGetPointer, +#else + NULL, +#endif +#ifdef FN_GetPlayerWONId + FN_GetPlayerWONId, +#else + NULL, +#endif +#ifdef FN_Info_RemoveKey + FN_Info_RemoveKey, +#else + NULL, +#endif +#ifdef FN_GetPhysicsKeyValue + FN_GetPhysicsKeyValue, +#else + NULL, +#endif +#ifdef FN_SetPhysicsKeyValue + FN_SetPhysicsKeyValue, +#else + NULL, +#endif +#ifdef FN_GetPhysicsInfoString + FN_GetPhysicsInfoString, +#else + NULL, +#endif +#ifdef FN_PrecacheEvent + FN_PrecacheEvent, +#else + NULL, +#endif +#ifdef FN_PlaybackEvent + FN_PlaybackEvent, +#else + NULL, +#endif +#ifdef FN_SetFatPVS + FN_SetFatPVS, +#else + NULL, +#endif +#ifdef FN_SetFatPAS + FN_SetFatPAS, +#else + NULL, +#endif +#ifdef FN_CheckVisibility + FN_CheckVisibility, +#else + NULL, +#endif +#ifdef FN_DeltaSetField + FN_DeltaSetField, +#else + NULL, +#endif +#ifdef FN_DeltaUnsetField + FN_DeltaUnsetField, +#else + NULL, +#endif +#ifdef FN_DeltaAddEncoder + FN_DeltaAddEncoder, +#else + NULL, +#endif +#ifdef FN_GetCurrentPlayer + FN_GetCurrentPlayer, +#else + NULL, +#endif +#ifdef FN_CanSkipPlayer + FN_CanSkipPlayer, +#else + NULL, +#endif +#ifdef FN_DeltaFindField + FN_DeltaFindField, +#else + NULL, +#endif +#ifdef FN_DeltaSetFieldByIndex + FN_DeltaSetFieldByIndex, +#else + NULL, +#endif +#ifdef FN_DeltaUnsetFieldByIndex + FN_DeltaUnsetFieldByIndex, +#else + NULL, +#endif +#ifdef FN_SetGroupMask + FN_SetGroupMask, +#else + NULL, +#endif +#ifdef FN_engCreateInstancedBaseline + FN_engCreateInstancedBaseline, +#else + NULL, +#endif +#ifdef FN_Cvar_DirectSet + FN_Cvar_DirectSet, +#else + NULL, +#endif +#ifdef FN_ForceUnmodified + FN_ForceUnmodified, +#else + NULL, +#endif +#ifdef FN_GetPlayerStats + FN_GetPlayerStats, +#else + NULL, +#endif +#ifdef FN_AddServerCommand + FN_AddServerCommand, +#else + NULL, +#endif +#ifdef FN_Voice_GetClientListening + FN_Voice_GetClientListening, +#else + NULL, +#endif +#ifdef FN_Voice_SetClientListening + FN_Voice_SetClientListening, +#else + NULL, +#endif +#ifdef FN_GetPlayerAuthId + FN_GetPlayerAuthId +#else + NULL +#endif +}; // g_EngineFuncs_Table + + +static enginefuncs_t g_EngineFuncs_Post_Table = +{ +#ifdef FN_PrecacheModel_Post + FN_PrecacheModel_Post, +#else + NULL, +#endif +#ifdef FN_PrecacheSound_Post + FN_PrecacheSound_Post, +#else + NULL, +#endif +#ifdef FN_SetModel_Post + FN_SetModel_Post, +#else + NULL, +#endif +#ifdef FN_ModelIndex_Post + FN_ModelIndex_Post, +#else + NULL, +#endif +#ifdef FN_ModelFrames_Post + FN_ModelFrames_Post, +#else + NULL, +#endif +#ifdef FN_SetSize_Post + FN_SetSize_Post, +#else + NULL, +#endif +#ifdef FN_ChangeLevel_Post + FN_ChangeLevel_Post, +#else + NULL, +#endif +#ifdef FN_GetSpawnParms_Post + FN_GetSpawnParms_Post, +#else + NULL, +#endif +#ifdef FN_SaveSpawnParms_Post + FN_SaveSpawnParms_Post, +#else + NULL, +#endif +#ifdef FN_VecToYaw_Post + FN_VecToYaw_Post, +#else + NULL, +#endif +#ifdef FN_VecToAngles_Post + FN_VecToAngles_Post, +#else + NULL, +#endif +#ifdef FN_MoveToOrigin_Post + FN_MoveToOrigin_Post, +#else + NULL, +#endif +#ifdef FN_ChangeYaw_Post + FN_ChangeYaw_Post, +#else + NULL, +#endif +#ifdef FN_ChangePitch_Post + FN_ChangePitch_Post, +#else + NULL, +#endif +#ifdef FN_FindEntityByString_Post + FN_FindEntityByString_Post, +#else + NULL, +#endif +#ifdef FN_GetEntityIllum_Post + FN_GetEntityIllum_Post, +#else + NULL, +#endif +#ifdef FN_FindEntityInSphere_Post + FN_FindEntityInSphere_Post, +#else + NULL, +#endif +#ifdef FN_FindClientInPVS_Post + FN_FindClientInPVS_Post, +#else + NULL, +#endif +#ifdef FN_EntitiesInPVS_Post + FN_EntitiesInPVS_Post, +#else + NULL, +#endif +#ifdef FN_MakeVectors_Post + FN_MakeVectors_Post, +#else + NULL, +#endif +#ifdef FN_AngleVectors_Post + FN_AngleVectors_Post, +#else + NULL, +#endif +#ifdef FN_CreateEntity_Post + FN_CreateEntity_Post, +#else + NULL, +#endif +#ifdef FN_RemoveEntity_Post + FN_RemoveEntity_Post, +#else + NULL, +#endif +#ifdef FN_CreateNamedEntity_Post + FN_CreateNamedEntity_Post, +#else + NULL, +#endif +#ifdef FN_MakeStatic_Post + FN_MakeStatic_Post, +#else + NULL, +#endif +#ifdef FN_EntIsOnFloor_Post + FN_EntIsOnFloor_Post, +#else + NULL, +#endif +#ifdef FN_DropToFloor_Post + FN_DropToFloor_Post, +#else + NULL, +#endif +#ifdef FN_WalkMove_Post + FN_WalkMove_Post, +#else + NULL, +#endif +#ifdef FN_SetOrigin_Post + FN_SetOrigin_Post, +#else + NULL, +#endif +#ifdef FN_EmitSound_Post + FN_EmitSound_Post, +#else + NULL, +#endif +#ifdef FN_EmitAmbientSound_Post + FN_EmitAmbientSound_Post, +#else + NULL, +#endif +#ifdef FN_TraceLine_Post + FN_TraceLine_Post, +#else + NULL, +#endif +#ifdef FN_TraceToss_Post + FN_TraceToss_Post, +#else + NULL, +#endif +#ifdef FN_TraceMonsterHull_Post + FN_TraceMonsterHull_Post, +#else + NULL, +#endif +#ifdef FN_TraceHull_Post + FN_TraceHull_Post, +#else + NULL, +#endif +#ifdef FN_TraceModel_Post + FN_TraceModel_Post, +#else + NULL, +#endif +#ifdef FN_TraceTexture_Post + FN_TraceTexture_Post, +#else + NULL, +#endif +#ifdef FN_TraceSphere_Post + FN_TraceSphere_Post, +#else + NULL, +#endif +#ifdef FN_GetAimVector_Post + FN_GetAimVector_Post, +#else + NULL, +#endif +#ifdef FN_ServerCommand_Post + FN_ServerCommand_Post, +#else + NULL, +#endif +#ifdef FN_ServerExecute_Post + FN_ServerExecute_Post, +#else + NULL, +#endif +#ifdef FN_engClientCommand_Post + FN_engClientCommand_Post, +#else + NULL, +#endif +#ifdef FN_ParticleEffect_Post + FN_ParticleEffect_Post, +#else + NULL, +#endif +#ifdef FN_LightStyle_Post + FN_LightStyle_Post, +#else + NULL, +#endif +#ifdef FN_DecalIndex_Post + FN_DecalIndex_Post, +#else + NULL, +#endif +#ifdef FN_PointContents_Post + FN_PointContents_Post, +#else + NULL, +#endif +#ifdef FN_MessageBegin_Post + FN_MessageBegin_Post, +#else + NULL, +#endif +#ifdef FN_MessageEnd_Post + FN_MessageEnd_Post, +#else + NULL, +#endif +#ifdef FN_WriteByte_Post + FN_WriteByte_Post, +#else + NULL, +#endif +#ifdef FN_WriteChar_Post + FN_WriteChar_Post, +#else + NULL, +#endif +#ifdef FN_WriteShort_Post + FN_WriteShort_Post, +#else + NULL, +#endif +#ifdef FN_WriteLong_Post + FN_WriteLong_Post, +#else + NULL, +#endif +#ifdef FN_WriteAngle_Post + FN_WriteAngle_Post, +#else + NULL, +#endif +#ifdef FN_WriteCoord_Post + FN_WriteCoord_Post, +#else + NULL, +#endif +#ifdef FN_WriteString_Post + FN_WriteString_Post, +#else + NULL, +#endif +#ifdef FN_WriteEntity_Post + FN_WriteEntity_Post, +#else + NULL, +#endif +#ifdef FN_CVarRegister_Post + FN_CVarRegister_Post, +#else + NULL, +#endif +#ifdef FN_CVarGetFloat_Post + FN_CVarGetFloat_Post, +#else + NULL, +#endif +#ifdef FN_CVarGetString_Post + FN_CVarGetString_Post, +#else + NULL, +#endif +#ifdef FN_CVarSetFloat_Post + FN_CVarSetFloat_Post, +#else + NULL, +#endif +#ifdef FN_CVarSetString_Post + FN_CVarSetString_Post, +#else + NULL, +#endif +#ifdef FN_AlertMessage_Post + FN_AlertMessage_Post, +#else + NULL, +#endif +#ifdef FN_EngineFprintf_Post + FN_EngineFprintf_Post, +#else + NULL, +#endif +#ifdef FN_PvAllocEntPrivateData_Post + FN_PvAllocEntPrivateData_Post, +#else + NULL, +#endif +#ifdef FN_PvEntPrivateData_Post + FN_PvEntPrivateData_Post, +#else + NULL, +#endif +#ifdef FN_FreeEntPrivateData_Post + FN_FreeEntPrivateData_Post, +#else + NULL, +#endif +#ifdef FN_SzFromIndex_Post + FN_SzFromIndex_Post, +#else + NULL, +#endif +#ifdef FN_AllocString_Post + FN_AllocString_Post, +#else + NULL, +#endif +#ifdef FN_GetVarsOfEnt_Post + FN_GetVarsOfEnt_Post, +#else + NULL, +#endif +#ifdef FN_PEntityOfEntOffset_Post + FN_PEntityOfEntOffset_Post, +#else + NULL, +#endif +#ifdef FN_EntOffsetOfPEntity_Post + FN_EntOffsetOfPEntity_Post, +#else + NULL, +#endif +#ifdef FN_IndexOfEdict_Post + FN_IndexOfEdict_Post, +#else + NULL, +#endif +#ifdef FN_PEntityOfEntIndex_Post + FN_PEntityOfEntIndex_Post, +#else + NULL, +#endif +#ifdef FN_FindEntityByVars_Post + FN_FindEntityByVars_Post, +#else + NULL, +#endif +#ifdef FN_GetModelPtr_Post + FN_GetModelPtr_Post, +#else + NULL, +#endif +#ifdef FN_RegUserMsg_Post + FN_RegUserMsg_Post, +#else + NULL, +#endif +#ifdef FN_AnimationAutomove_Post + FN_AnimationAutomove_Post, +#else + NULL, +#endif +#ifdef FN_GetBonePosition_Post + FN_GetBonePosition_Post, +#else + NULL, +#endif +#ifdef FN_FunctionFromName_Post + FN_FunctionFromName_Post, +#else + NULL, +#endif +#ifdef FN_NameForFunction_Post + FN_NameForFunction_Post, +#else + NULL, +#endif +#ifdef FN_ClientPrintf_Post + FN_ClientPrintf_Post, +#else + NULL, +#endif +#ifdef FN_ServerPrint_Post + FN_ServerPrint_Post, +#else + NULL, +#endif +#ifdef FN_Cmd_Args_Post + FN_Cmd_Args_Post, +#else + NULL, +#endif +#ifdef FN_Cmd_Argv_Post + FN_Cmd_Argv_Post, +#else + NULL, +#endif +#ifdef FN_Cmd_Argc_Post + FN_Cmd_Argc_Post, +#else + NULL, +#endif +#ifdef FN_GetAttachment_Post + FN_GetAttachment_Post, +#else + NULL, +#endif +#ifdef FN_CRC32_Init_Post + FN_CRC32_Init_Post, +#else + NULL, +#endif +#ifdef FN_CRC32_ProcessBuffer_Post + FN_CRC32_ProcessBuffer_Post, +#else + NULL, +#endif +#ifdef FN_CRC32_ProcessByte_Post + FN_CRC32_ProcessByte_Post, +#else + NULL, +#endif +#ifdef FN_CRC32_Final_Post + FN_CRC32_Final_Post, +#else + NULL, +#endif +#ifdef FN_RandomLong_Post + FN_RandomLong_Post, +#else + NULL, +#endif +#ifdef FN_RandomFloat_Post + FN_RandomFloat_Post, +#else + NULL, +#endif +#ifdef FN_SetView_Post + FN_SetView_Post, +#else + NULL, +#endif +#ifdef FN_Time_Post + FN_Time_Post, +#else + NULL, +#endif +#ifdef FN_CrosshairAngle_Post + FN_CrosshairAngle_Post, +#else + NULL, +#endif +#ifdef FN_LoadFileForMe_Post + FN_LoadFileForMe_Post, +#else + NULL, +#endif +#ifdef FN_FreeFile_Post + FN_FreeFile_Post, +#else + NULL, +#endif +#ifdef FN_EndSection_Post + FN_EndSection_Post, +#else + NULL, +#endif +#ifdef FN_CompareFileTime_Post + FN_CompareFileTime_Post, +#else + NULL, +#endif +#ifdef FN_GetGameDir_Post + FN_GetGameDir_Post, +#else + NULL, +#endif +#ifdef FN_Cvar_RegisterVariable_Post + FN_Cvar_RegisterVariable_Post, +#else + NULL, +#endif +#ifdef FN_FadeClientVolume_Post + FN_FadeClientVolume_Post, +#else + NULL, +#endif +#ifdef FN_SetClientMaxspeed_Post + FN_SetClientMaxspeed_Post, +#else + NULL, +#endif +#ifdef FN_CreateFakeClient_Post + FN_CreateFakeClient_Post, +#else + NULL, +#endif +#ifdef FN_RunPlayerMove_Post + FN_RunPlayerMove_Post, +#else + NULL, +#endif +#ifdef FN_NumberOfEntities_Post + FN_NumberOfEntities_Post, +#else + NULL, +#endif +#ifdef FN_GetInfoKeyBuffer_Post + FN_GetInfoKeyBuffer_Post, +#else + NULL, +#endif +#ifdef FN_InfoKeyValue_Post + FN_InfoKeyValue_Post, +#else + NULL, +#endif +#ifdef FN_SetKeyValue_Post + FN_SetKeyValue_Post, +#else + NULL, +#endif +#ifdef FN_SetClientKeyValue_Post + FN_SetClientKeyValue_Post, +#else + NULL, +#endif +#ifdef FN_IsMapValid_Post + FN_IsMapValid_Post, +#else + NULL, +#endif +#ifdef FN_StaticDecal_Post + FN_StaticDecal_Post, +#else + NULL, +#endif +#ifdef FN_PrecacheGeneric_Post + FN_PrecacheGeneric_Post, +#else + NULL, +#endif +#ifdef FN_GetPlayerUserId_Post + FN_GetPlayerUserId_Post, +#else + NULL, +#endif +#ifdef FN_BuildSoundMsg_Post + FN_BuildSoundMsg_Post, +#else + NULL, +#endif +#ifdef FN_IsDedicatedServer_Post + FN_IsDedicatedServer_Post, +#else + NULL, +#endif +#ifdef FN_CVarGetPointer_Post + FN_CVarGetPointer_Post, +#else + NULL, +#endif +#ifdef FN_GetPlayerWONId_Post + FN_GetPlayerWONId_Post, +#else + NULL, +#endif +#ifdef FN_Info_RemoveKey_Post + FN_Info_RemoveKey_Post, +#else + NULL, +#endif +#ifdef FN_GetPhysicsKeyValue_Post + FN_GetPhysicsKeyValue_Post, +#else + NULL, +#endif +#ifdef FN_SetPhysicsKeyValue_Post + FN_SetPhysicsKeyValue_Post, +#else + NULL, +#endif +#ifdef FN_GetPhysicsInfoString_Post + FN_GetPhysicsInfoString_Post, +#else + NULL, +#endif +#ifdef FN_PrecacheEvent_Post + FN_PrecacheEvent_Post, +#else + NULL, +#endif +#ifdef FN_PlaybackEvent_Post + FN_PlaybackEvent_Post, +#else + NULL, +#endif +#ifdef FN_SetFatPVS_Post + FN_SetFatPVS_Post, +#else + NULL, +#endif +#ifdef FN_SetFatPAS_Post + FN_SetFatPAS_Post, +#else + NULL, +#endif +#ifdef FN_CheckVisibility_Post + FN_CheckVisibility_Post, +#else + NULL, +#endif +#ifdef FN_DeltaSetField_Post + FN_DeltaSetField_Post, +#else + NULL, +#endif +#ifdef FN_DeltaUnsetField_Post + FN_DeltaUnsetField_Post, +#else + NULL, +#endif +#ifdef FN_DeltaAddEncoder_Post + FN_DeltaAddEncoder_Post, +#else + NULL, +#endif +#ifdef FN_GetCurrentPlayer_Post + FN_GetCurrentPlayer_Post, +#else + NULL, +#endif +#ifdef FN_CanSkipPlayer_Post + FN_CanSkipPlayer_Post, +#else + NULL, +#endif +#ifdef FN_DeltaFindField_Post + FN_DeltaFindField_Post, +#else + NULL, +#endif +#ifdef FN_DeltaSetFieldByIndex_Post + FN_DeltaSetFieldByIndex_Post, +#else + NULL, +#endif +#ifdef FN_DeltaUnsetFieldByIndex_Post + FN_DeltaUnsetFieldByIndex_Post, +#else + NULL, +#endif +#ifdef FN_SetGroupMask_Post + FN_SetGroupMask_Post, +#else + NULL, +#endif +#ifdef FN_engCreateInstancedBaseline_Post + FN_engCreateInstancedBaseline_Post, +#else + NULL, +#endif +#ifdef FN_Cvar_DirectSet_Post + FN_Cvar_DirectSet_Post, +#else + NULL, +#endif +#ifdef FN_ForceUnmodified_Post + FN_ForceUnmodified_Post, +#else + NULL, +#endif +#ifdef FN_GetPlayerStats_Post + FN_GetPlayerStats_Post, +#else + NULL, +#endif +#ifdef FN_AddServerCommand_Post + FN_AddServerCommand_Post, +#else + NULL, +#endif +#ifdef FN_Voice_GetClientListening_Post + FN_Voice_GetClientListening_Post, +#else + NULL, +#endif +#ifdef FN_Voice_SetClientListening_Post + FN_Voice_SetClientListening_Post, +#else + NULL, +#endif +#ifdef FN_GetPlayerAuthId_Post + FN_GetPlayerAuthId_Post +#else + NULL +#endif +}; // g_EngineFuncs_Post_Table + + +static NEW_DLL_FUNCTIONS g_NewFuncs_Table = +{ +#ifdef FN_OnFreeEntPrivateData + FN_OnFreeEntPrivateData, +#else + NULL, +#endif +#ifdef FN_GameShutdown + FN_GameShutdown, +#else + NULL, +#endif +#ifdef FN_ShouldCollide + ShouldCollide, +#else + NULL, +#endif +}; + + +static NEW_DLL_FUNCTIONS g_NewFuncs_Post_Table = +{ +#ifdef FN_OnFreeEntPrivateData_Post + FN_OnFreeEntPrivateData_Post, +#else + NULL, +#endif +#ifdef FN_GameShutdown_Post + FN_GameShutdown_Post, +#else + NULL, +#endif +#ifdef FN_ShouldCollide_Post + ShouldCollide_Post, +#else + NULL, +#endif +}; + +// Global variables from metamod. These variable names are referenced by +// various macros. +meta_globals_t *gpMetaGlobals; // metamod globals +gamedll_funcs_t *gpGamedllFuncs; // gameDLL function tables +mutil_funcs_t *gpMetaUtilFuncs; // metamod utility functions + + +plugin_info_t Plugin_info = { + META_INTERFACE_VERSION, + MODULE_NAME, + MODULE_VERSION, + MODULE_DATE, + MODULE_AUTHOR, + MODULE_URL, + MODULE_LOGTAG, + PT_ANYTIME, + PT_ANYTIME +}; + +/* +C_DLLEXPORT int GetEntityAPI(DLL_FUNCTIONS *pFunctionTable, int interfaceVersion) +{ + LOG_DEVELOPER(PLID, "called: GetEntityAPI; version=%d", interfaceVersion); + if(!pFunctionTable) { + LOG_ERROR(PLID, "GetEntityAPI called with null pFunctionTable"); + return(FALSE); + } + else if(interfaceVersion != INTERFACE_VERSION) { + LOG_ERROR(PLID, "GetEntityAPI version mismatch; requested=%d ours=%d", interfaceVersion, INTERFACE_VERSION); + return(FALSE); + } + memcpy(pFunctionTable, &g_EntityAPI_Table, sizeof( DLL_FUNCTIONS ) ); + + return (TRUE); +} + +C_DLLEXPORT int GetEntityAPI_Post(DLL_FUNCTIONS *pFunctionTable, int interfaceVersion) +{ + LOG_DEVELOPER(PLID, "called: GetEntityAPI_Post; version=%d", interfaceVersion); + if(!pFunctionTable) { + LOG_ERROR(PLID, "GetEntityAPI_Post called with null pFunctionTable"); + return(FALSE); + } + else if(interfaceVersion != INTERFACE_VERSION) { + LOG_ERROR(PLID, "GetEntityAPI_Post version mismatch; requested=%d ours=%d", interfaceVersion, INTERFACE_VERSION); + return(FALSE); + } + memcpy(pFunctionTable, &g_EntityAPI_Post_Table, sizeof( DLL_FUNCTIONS ) ); + + return(TRUE); +} +*/ + +C_DLLEXPORT int GetEntityAPI2(DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion) +{ + LOG_DEVELOPER(PLID, "called: GetEntityAPI2; version=%d", *interfaceVersion); + if(!pFunctionTable) { + LOG_ERROR(PLID, "GetEntityAPI2 called with null pFunctionTable"); + return(FALSE); + } + else if(*interfaceVersion != INTERFACE_VERSION) { + LOG_ERROR(PLID, + "GetEntityAPI2 version mismatch; requested=%d ours=%d", + *interfaceVersion, INTERFACE_VERSION); + //! Tell engine what version we had, so it can figure out who is + //! out of date. + *interfaceVersion = INTERFACE_VERSION; + return(FALSE); + } + memcpy(pFunctionTable, &g_EntityAPI_Table, sizeof(DLL_FUNCTIONS)); + return(TRUE); +} + +C_DLLEXPORT int GetEntityAPI2_Post(DLL_FUNCTIONS *pFunctionTable, int *interfaceVersion) +{ + LOG_DEVELOPER(PLID, "called: GetEntityAPI2_Post; version=%d", *interfaceVersion); + if(!pFunctionTable) { + LOG_ERROR(PLID, "GetEntityAPI2_Post called with null pFunctionTable"); + return(FALSE); + } + else if(*interfaceVersion != INTERFACE_VERSION) { + LOG_ERROR(PLID, "GetEntityAPI2_Post version mismatch; requested=%d ours=%d", *interfaceVersion, INTERFACE_VERSION); + //! Tell engine what version we had, so it can figure out who is out of date. + *interfaceVersion = INTERFACE_VERSION; + return(FALSE); + } + memcpy( pFunctionTable, &g_EntityAPI_Post_Table, sizeof( DLL_FUNCTIONS ) ); + + return(TRUE); +} + +C_DLLEXPORT int GetEngineFunctions(enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion) +{ + LOG_DEVELOPER(PLID, "called: GetEngineFunctions; version=%d", + *interfaceVersion); + if(!pengfuncsFromEngine) { + LOG_ERROR(PLID, + "GetEngineFunctions called with null pengfuncsFromEngine"); + return(FALSE); + } + else if(*interfaceVersion != ENGINE_INTERFACE_VERSION) { + LOG_ERROR(PLID, + "GetEngineFunctions version mismatch; requested=%d ours=%d", + *interfaceVersion, ENGINE_INTERFACE_VERSION); + // Tell metamod what version we had, so it can figure out who is + // out of date. + *interfaceVersion = ENGINE_INTERFACE_VERSION; + return(FALSE); + } + memcpy(pengfuncsFromEngine, &g_EngineFuncs_Table, sizeof(enginefuncs_t)); + return TRUE; +} + +C_DLLEXPORT int GetEngineFunctions_Post(enginefuncs_t *pengfuncsFromEngine, int *interfaceVersion) +{ + LOG_DEVELOPER(PLID, "called: GetEngineFunctions_Post; version=%d", *interfaceVersion); + if(!pengfuncsFromEngine) { + LOG_ERROR(PLID, "GetEngineFunctions_Post called with null pengfuncsFromEngine"); + return(FALSE); + } + else if(*interfaceVersion != ENGINE_INTERFACE_VERSION) { + LOG_ERROR(PLID, "GetEngineFunctions_Post version mismatch; requested=%d ours=%d", *interfaceVersion, ENGINE_INTERFACE_VERSION); + // Tell metamod what version we had, so it can figure out who is out of date. + *interfaceVersion = ENGINE_INTERFACE_VERSION; + return(FALSE); + } + memcpy(pengfuncsFromEngine, &g_EngineFuncs_Post_Table, sizeof(enginefuncs_t)); + return TRUE; + +} + +C_DLLEXPORT int GetNewDLLFunctions(NEW_DLL_FUNCTIONS *pNewFunctionTable, + int *interfaceVersion) +{ + LOG_DEVELOPER(PLID, "called: GetNewDLLFunctions; version=%d", + *interfaceVersion); + if(!pNewFunctionTable) { + LOG_ERROR(PLID, + "GetNewDLLFunctions called with null pNewFunctionTable"); + return(FALSE); + } + else if(*interfaceVersion != NEW_DLL_FUNCTIONS_VERSION) { + LOG_ERROR(PLID, + "GetNewDLLFunctions version mismatch; requested=%d ours=%d", + *interfaceVersion, NEW_DLL_FUNCTIONS_VERSION); + //! Tell engine what version we had, so it can figure out who is + //! out of date. + *interfaceVersion = NEW_DLL_FUNCTIONS_VERSION; + return(FALSE); + } + memcpy(pNewFunctionTable, &g_NewFuncs_Table, sizeof(NEW_DLL_FUNCTIONS)); + return TRUE; +} + +C_DLLEXPORT int GetNewDLLFunctions_Post( NEW_DLL_FUNCTIONS *pNewFunctionTable, int *interfaceVersion ) +{ + LOG_DEVELOPER(PLID, "called: GetNewDLLFunctions_Post; version=%d", *interfaceVersion); + if(!pNewFunctionTable) { + LOG_ERROR(PLID, "GetNewDLLFunctions_Post called with null pNewFunctionTable"); + return(FALSE); + } + else if(*interfaceVersion != NEW_DLL_FUNCTIONS_VERSION) { + LOG_ERROR(PLID, "GetNewDLLFunctions_Post version mismatch; requested=%d ours=%d", *interfaceVersion, NEW_DLL_FUNCTIONS_VERSION); + //! Tell engine what version we had, so it can figure out who is out of date. + *interfaceVersion = NEW_DLL_FUNCTIONS_VERSION; + return(FALSE); + } + memcpy(pNewFunctionTable, &g_NewFuncs_Post_Table, sizeof(NEW_DLL_FUNCTIONS)); + return TRUE; +} + + +static META_FUNCTIONS g_MetaFunctions_Table = +{ + NULL, + NULL, + GetEntityAPI2, + GetEntityAPI2_Post, + GetNewDLLFunctions, + GetNewDLLFunctions_Post, + GetEngineFunctions, + GetEngineFunctions_Post +}; + +C_DLLEXPORT int Meta_Query(char *ifvers, plugin_info_t **pPlugInfo, mutil_funcs_t *pMetaUtilFuncs) +{ + if ((int) CVAR_GET_FLOAT("developer") != 0) + UTIL_LogPrintf("[%s] dev: called: Meta_Query; version=%s, ours=%s\n", + Plugin_info.logtag, ifvers, Plugin_info.ifvers); + + // Check for valid pMetaUtilFuncs before we continue. + if(!pMetaUtilFuncs) { + UTIL_LogPrintf("[%s] ERROR: Meta_Query called with null pMetaUtilFuncs\n", Plugin_info.logtag); + return(FALSE); + } + + gpMetaUtilFuncs = pMetaUtilFuncs; + + *pPlugInfo = &Plugin_info; + + // Check for interface version compatibility. + if(!FStrEq(ifvers, Plugin_info.ifvers)) { + int mmajor=0, mminor=0, pmajor=0, pminor=0; + LOG_MESSAGE(PLID, "WARNING: meta-interface version mismatch; requested=%s ours=%s", + Plugin_info.logtag, ifvers); + // If plugin has later interface version, it's incompatible (update + // metamod). + sscanf(ifvers, "%d:%d", &mmajor, &mminor); + sscanf(META_INTERFACE_VERSION, "%d:%d", &pmajor, &pminor); + if(pmajor > mmajor || (pmajor==mmajor && pminor > mminor)) { + LOG_ERROR(PLID, "metamod version is too old for this module; update metamod"); + return(FALSE); + } + // If plugin has older major interface version, it's incompatible + // (update plugin). + else if(pmajor < mmajor) { + LOG_ERROR(PLID, "metamod version is incompatible with this module; please find a newer version of this module"); + return(FALSE); + } + // Minor interface is older, but this is guaranteed to be backwards + // compatible, so we warn, but we still accept it. + else if(pmajor==mmajor && pminor < mminor) + LOG_MESSAGE(PLID, "WARNING: metamod version is newer than expected; consider finding a newer version of this module"); + else + LOG_ERROR(PLID, "unexpected version comparison; metavers=%s, mmajor=%d, mminor=%d; plugvers=%s, pmajor=%d, pminor=%d", ifvers, mmajor, mminor, META_INTERFACE_VERSION, pmajor, pminor); + } + +#ifdef FN_META_QUERY + return FN_META_QUERY(); +#endif // FN_META_QUERY + + return 1; +} + + +C_DLLEXPORT int Meta_Attach(PLUG_LOADTIME now, META_FUNCTIONS *pFunctionTable, meta_globals_t *pMGlobals, gamedll_funcs_t *pGamedllFuncs) +{ + if(now > Plugin_info.loadable) { + LOG_ERROR(PLID, "Can't load module right now"); + return(FALSE); + } + if(!pMGlobals) { + LOG_ERROR(PLID, "Meta_Attach called with null pMGlobals"); + return(FALSE); + } + gpMetaGlobals=pMGlobals; + if(!pFunctionTable) { + LOG_ERROR(PLID, "Meta_Attach called with null pFunctionTable"); + return(FALSE); + } + + memcpy(pFunctionTable, &g_MetaFunctions_Table, sizeof(META_FUNCTIONS)); + gpGamedllFuncs=pGamedllFuncs; + + // Let's go. + +#ifdef FN_META_ATTACH + FN_META_ATTACH(); +#endif // FN_META_ATTACH + + return TRUE; +} + +C_DLLEXPORT int Meta_Detach(PLUG_LOADTIME now, PL_UNLOAD_REASON reason) +{ + if(now > Plugin_info.unloadable && reason != PNL_CMD_FORCED) { + LOG_ERROR(PLID, "Can't unload plugin right now"); + return(FALSE); + } + +#ifdef FN_META_DETACH + return FN_META_DETACH(); +#endif // FN_META_DETACH + return TRUE; +} + + + +#ifdef __linux__ +// linux prototype +C_DLLEXPORT void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) { + +#else +#ifdef _MSC_VER +// MSVC: Simulate __stdcall calling convention +C_DLLEXPORT __declspec(naked) void GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) +{ + __asm // Prolog + { + // Save ebp + push ebp + // Set stack frame pointer + mov ebp, esp + // Allocate space for local variables + // The MSVC compiler gives us the needed size in __LOCAL_SIZE. + sub esp, __LOCAL_SIZE + // Push registers + push ebx + push esi + push edi + } +#else // _MSC_VER +#ifdef __GNUC__ +// GCC can also work with this +C_DLLEXPORT void __stdcall GiveFnptrsToDll( enginefuncs_t* pengfuncsFromEngine, globalvars_t *pGlobals ) +{ +#else // __GNUC__ +// compiler not known +#error There is no support (yet) for your compiler. Please use MSVC or GCC compilers or contact the AMX Mod X dev team. +#endif // __GNUC__ +#endif // _MSC_VER +#endif // __linux__ + + // ** Function core <-- + memcpy(&g_engfuncs, pengfuncsFromEngine, sizeof(enginefuncs_t)); + gpGlobals = pGlobals; + // NOTE! Have to call logging function _after_ copying into g_engfuncs, so + // that g_engfuncs.pfnAlertMessage() can be resolved properly, heh. :) + UTIL_LogPrintf("[%s] dev: called: GiveFnptrsToDll\n", Plugin_info.logtag); + // --> ** Function core + +#ifdef _MSC_VER + // Epilog + if (sizeof(int*) == 8) + { // 64 bit + __asm + { + // Pop registers + pop edi + pop esi + pop ebx + // Restore stack frame pointer + mov esp, ebp + // Restore ebp + pop ebp + // 2 * sizeof(int*) = 16 on 64 bit + ret 16 + } + } + else + { // 32 bit + __asm + { + // Pop registers + pop edi + pop esi + pop ebx + // Restore stack frame pointer + mov esp, ebp + // Restore ebp + pop ebp + // 2 * sizeof(int*) = 8 on 32 bit + ret 8 + } + } +#endif // #ifdef _MSC_VER +} + +#endif // #ifdef USE_METAMOD + +/************* AMXX Stuff *************/ + +// *** Types *** +typedef void* (*PFN_REQ_FNPTR)(const char * /*name*/); + +// *** Globals *** +// Module info +static amxx_module_info_s g_ModuleInfo = +{ + MODULE_NAME, + MODULE_AUTHOR, + MODULE_VERSION, +#ifdef MODULE_RELOAD_ON_MAPCHANGE + 1 +#else // MODULE_RELOAD_ON_MAPCHANGE + 0 +#endif // MODULE_RELOAD_ON_MAPCHANGE +}; + +// Storage for the requested functions +PFN_ADD_NATIVES g_fn_AddNatives; +PFN_BUILD_PATHNAME g_fn_BuildPathname; +PFN_GET_AMXADDR g_fn_GetAmxAddr; +PFN_PRINT_SRVCONSOLE g_fn_PrintSrvConsole; +PFN_GET_MODNAME g_fn_GetModname; +PFN_GET_AMXSCRIPTNAME g_fn_GetAmxScriptName; +PFN_GET_AMXSCRIPT g_fn_GetAmxScript; +PFN_FIND_AMXSCRIPT_BYAMX g_fn_FindAmxScriptByAmx; +PFN_FIND_AMXSCRIPT_BYNAME g_fn_FindAmxScriptByName; +PFN_SET_AMXSTRING g_fn_SetAmxString; +PFN_GET_AMXSTRING g_fn_GetAmxString; +PFN_GET_AMXSTRINGLEN g_fn_GetAmxStringLen; +PFN_FORMAT_AMXSTRING g_fn_FormatAmxString; +PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory; +PFN_LOG g_fn_Log; +PFN_RAISE_AMXERROR g_fn_RaiseAmxError; +PFN_REGISTER_FORWARD g_fn_RegisterForward; +PFN_EXECUTE_FORWARD g_fn_ExecuteForward; +PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray; +PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray; +PFN_IS_PLAYER_VALID g_fn_IsPlayerValid; +PFN_GET_PLAYER_NAME g_fn_GetPlayerName; +PFN_GET_PLAYER_IP g_fn_GetPlayerIP; +PFN_IS_PLAYER_INGAME g_fn_IsPlayerIngame; +PFN_IS_PLAYER_BOT g_fn_IsPlayerBot; +PFN_IS_PLAYER_AUTHORIZED g_fn_IsPlayerAuthorized; +PFN_GET_PLAYER_TIME g_fn_GetPlayerTime; +PFN_GET_PLAYER_PLAYTIME g_fn_GetPlayerPlayTime; +PFN_GET_PLAYER_CURWEAPON g_fn_GetPlayerCurweapon; +PFN_GET_PLAYER_TEAMID g_fn_GetPlayerTeamID; +PFN_GET_PLAYER_DEATHS g_fn_GetPlayerDeaths; +PFN_GET_PLAYER_MENU g_fn_GetPlayerMenu; +PFN_GET_PLAYER_KEYS g_fn_GetPlayerKeys; +PFN_IS_PLAYER_ALIVE g_fn_IsPlayerAlive; +PFN_GET_PLAYER_FRAGS g_fn_GetPlayerFrags; +PFN_IS_PLAYER_CONNECTING g_fn_IsPlayerConnecting; +PFN_IS_PLAYER_HLTV g_fn_IsPlayerHLTV; +PFN_GET_PLAYER_ARMOR g_fn_GetPlayerArmor; +PFN_GET_PLAYER_HEALTH g_fn_GetPlayerHealth; +PFN_ALLOCATOR g_fn_Allocator; +PFN_REALLOCATOR g_fn_Reallocator; +PFN_DEALLOCATOR g_fn_Deallocator; +PFN_AMX_EXEC g_fn_AmxExec; +PFN_AMX_EXECV g_fn_AmxExecv; +PFN_AMX_ALLOT g_fn_AmxAllot; +PFN_AMX_FINDPUBLIC g_fn_AmxFindPublic; +PFN_LOAD_AMXSCRIPT g_fn_LoadAmxScript; +PFN_UNLOAD_AMXSCRIPT g_fn_UnloadAmxScript; +PFN_REAL_TO_CELL g_fn_RealToCell; +PFN_CELL_TO_REAL g_fn_CellToReal; +PFN_REGISTER_SPFORWARD g_fn_RegisterSPForward; +PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName; +PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward; + +// *** Exports *** +C_DLLEXPORT int AMXX_Query(int *interfaceVersion, amxx_module_info_s *moduleInfo) +{ + // check parameters + if (!interfaceVersion || !moduleInfo) + return AMXX_PARAM; + + // check interface version + if (*interfaceVersion != AMXX_INTERFACE_VERSION) + { + // Tell amxx core our interface version + *interfaceVersion = AMXX_INTERFACE_VERSION; + return AMXX_IFVERS; + } + + // copy module info + memcpy(moduleInfo, &g_ModuleInfo, sizeof(amxx_module_info_s)); + +#ifdef FN_AMXX_QUERY + FN_AMXX_QUERY(); +#endif // FN_AMXX_QUERY + // Everything ok :) + return AMXX_OK; +} + +// request function +#define REQFUNC(name, fptr, type) if ((fptr = (type)reqFnptrFunc(name)) == 0) return AMXX_FUNC_NOT_PRESENT +// request optional function +#define REQFUNC_OPT(name, fptr, type) fptr = (type)reqFnptrFunc(name) + +C_DLLEXPORT int AMXX_Attach(PFN_REQ_FNPTR reqFnptrFunc) +{ + // Check pointer + if (!reqFnptrFunc) + return AMXX_PARAM; + + // Req all known functions + // Misc + REQFUNC("BuildPathname", g_fn_BuildPathname, PFN_BUILD_PATHNAME); + REQFUNC("PrintSrvConsole", g_fn_PrintSrvConsole, PFN_PRINT_SRVCONSOLE); + REQFUNC("GetModname", g_fn_GetModname, PFN_GET_MODNAME); + REQFUNC("Log", g_fn_Log, PFN_LOG); + + // Amx scripts + REQFUNC("GetAmxScript", g_fn_GetAmxScript, PFN_GET_AMXSCRIPT); + REQFUNC("FindAmxScriptByAmx", g_fn_FindAmxScriptByAmx, PFN_FIND_AMXSCRIPT_BYAMX); + REQFUNC("FindAmxScriptByName", g_fn_FindAmxScriptByName, PFN_FIND_AMXSCRIPT_BYNAME); + REQFUNC("LoadAmxScript", g_fn_LoadAmxScript, PFN_LOAD_AMXSCRIPT); + REQFUNC("UnloadAmxScript", g_fn_UnloadAmxScript, PFN_UNLOAD_AMXSCRIPT); + + // String / mem in amx scripts support + REQFUNC("SetAmxString", g_fn_SetAmxString, PFN_SET_AMXSTRING); + REQFUNC("GetAmxString", g_fn_GetAmxString, PFN_GET_AMXSTRING); + REQFUNC("GetAmxStringLen", g_fn_GetAmxStringLen, PFN_GET_AMXSTRINGLEN); + REQFUNC("FormatAmxString", g_fn_FormatAmxString, PFN_FORMAT_AMXSTRING); + REQFUNC("CopyAmxMemory", g_fn_CopyAmxMemory, PFN_COPY_AMXMEMORY); + REQFUNC("GetAmxAddr", g_fn_GetAmxAddr, PFN_GET_AMXADDR); + + REQFUNC("amx_Exec", g_fn_AmxExec, PFN_AMX_EXEC); + REQFUNC("amx_Execv", g_fn_AmxExecv, PFN_AMX_EXECV); + REQFUNC("amx_FindPublic", g_fn_AmxFindPublic, PFN_AMX_FINDPUBLIC); + REQFUNC("amx_Allot", g_fn_AmxAllot, PFN_AMX_ALLOT); + + // Natives / Forwards + REQFUNC("AddNatives", g_fn_AddNatives, PFN_ADD_NATIVES); + REQFUNC("RaiseAmxError", g_fn_RaiseAmxError, PFN_RAISE_AMXERROR); + REQFUNC("RegisterForward", g_fn_RegisterForward, PFN_REGISTER_FORWARD); + REQFUNC("RegisterSPForward", g_fn_RegisterSPForward, PFN_REGISTER_SPFORWARD); + REQFUNC("RegisterSPForwardByName", g_fn_RegisterSPForwardByName, PFN_REGISTER_SPFORWARD_BYNAME); + REQFUNC("UnregisterSPForward", g_fn_UnregisterSPForward, PFN_UNREGISTER_SPFORWARD); + REQFUNC("ExecuteForward", g_fn_ExecuteForward, PFN_EXECUTE_FORWARD); + REQFUNC("PrepareCellArray", g_fn_PrepareCellArray, PFN_PREPARE_CELLARRAY); + REQFUNC("PrepareCharArray", g_fn_PrepareCharArray, PFN_PREPARE_CHARARRAY); + + // Player + REQFUNC("IsPlayerValid", g_fn_IsPlayerValid, PFN_IS_PLAYER_VALID); + REQFUNC("GetPlayerName", g_fn_GetPlayerName, PFN_GET_PLAYER_NAME); + REQFUNC("GetPlayerIP", g_fn_GetPlayerIP, PFN_GET_PLAYER_IP); + REQFUNC("IsPlayerInGame", g_fn_IsPlayerIngame, PFN_IS_PLAYER_INGAME); + REQFUNC("IsPlayerBot", g_fn_IsPlayerBot, PFN_IS_PLAYER_BOT); + REQFUNC("IsPlayerAuthorized", g_fn_IsPlayerAuthorized, PFN_IS_PLAYER_AUTHORIZED); + REQFUNC("GetPlayerTime", g_fn_GetPlayerTime, PFN_GET_PLAYER_TIME); + REQFUNC("GetPlayerPlayTime", g_fn_GetPlayerPlayTime, PFN_GET_PLAYER_PLAYTIME); + REQFUNC("GetPlayerCurweapon", g_fn_GetPlayerCurweapon, PFN_GET_PLAYER_CURWEAPON); + REQFUNC("GetPlayerTeamID", g_fn_GetPlayerTeamID, PFN_GET_PLAYER_TEAMID); + REQFUNC("GetPlayerDeaths", g_fn_GetPlayerDeaths, PFN_GET_PLAYER_DEATHS); + REQFUNC("GetPlayerMenu", g_fn_GetPlayerMenu, PFN_GET_PLAYER_MENU); + REQFUNC("GetPlayerKeys", g_fn_GetPlayerKeys, PFN_GET_PLAYER_KEYS); + REQFUNC("IsPlayerAlive", g_fn_IsPlayerAlive, PFN_IS_PLAYER_ALIVE); + REQFUNC("GetPlayerFrags", g_fn_GetPlayerFrags, PFN_GET_PLAYER_FRAGS); + REQFUNC("IsPlayerConnecting", g_fn_IsPlayerConnecting, PFN_IS_PLAYER_CONNECTING); + REQFUNC("IsPlayerHLTV", g_fn_IsPlayerHLTV, PFN_IS_PLAYER_HLTV); + REQFUNC("GetPlayerArmor", g_fn_GetPlayerArmor, PFN_GET_PLAYER_ARMOR); + REQFUNC("GetPlayerHealth", g_fn_GetPlayerHealth, PFN_GET_PLAYER_HEALTH); + + // Memory + REQFUNC_OPT("Allocator", g_fn_Allocator, PFN_ALLOCATOR); + REQFUNC_OPT("Reallocator", g_fn_Reallocator, PFN_REALLOCATOR); + REQFUNC_OPT("Deallocator", g_fn_Deallocator, PFN_DEALLOCATOR); + + REQFUNC("CellToReal", g_fn_CellToReal, PFN_CELL_TO_REAL); + REQFUNC("RealToCell", g_fn_RealToCell, PFN_REAL_TO_CELL); + +#ifdef FN_AMXX_ATTACH + FN_AMXX_ATTACH(); +#endif // FN_AMXX_ATACH + + return AMXX_OK; +} + +C_DLLEXPORT int AMXX_Detach() +{ +#ifdef FN_AMXX_DETACH + FN_AMXX_DETACH(); +#endif // FN_AMXX_DETACH + + return AMXX_OK; +} + +C_DLLEXPORT int AMXX_PluginsLoaded() +{ +#ifdef FN_AMXX_PLUGINSLOADED + FN_AMXX_PLUGINSLOADED(); +#endif // FN_AMXX_PLUGINSLOADED + return AMXX_OK; +} + +// Advanced MF functions +void MF_Log(const char *fmt, ...) +{ + // :TODO: Overflow possible here + char msg[3072]; + va_list arglst; + va_start(arglst, fmt); + vsprintf(msg, fmt, arglst); + va_end(arglst); + + g_fn_Log("[%s] %s", MODULE_NAME, msg); +} + + +#ifdef _DEBUG +// validate macros +// Makes sure compiler reports errors when macros are invalid +void ValidateMacros_DontCallThis_Smiley() +{ + MF_BuildPathname("str", "str", 0); + MF_FormatAmxString(NULL, 0, 0, NULL); + MF_GetAmxAddr(NULL, 0); + MF_PrintSrvConsole("str", "str", 0); + MF_GetModname(); + MF_GetScriptName(0); + MF_GetScriptAmx(0); + MF_FindScriptByAmx(NULL); + MF_FindScriptByName("str"); + MF_SetAmxString(NULL, 0, "str", 0); + MF_GetAmxString(NULL, 0, 0, 0); + MF_GetAmxStringLen(NULL); + MF_CopyAmxMemory(NULL, NULL, 0); + MF_Log("str", "str", 0); + MF_RaiseAmxError(NULL, 0); + MF_RegisterForward("str", (ForwardExecType)0, 0, 0, 0); + MF_ExecuteForward(0, 0, 0); + MF_PrepareCellArray(NULL, 0); + MF_PrepareCharArray(NULL, 0); + MF_IsPlayerValid(0); + MF_GetPlayerName(0); + MF_GetPlayerIP(0); + MF_IsPlayerIngame(0); + MF_IsPlayerBot(0); + MF_IsPlayerAuthorized(0); + MF_GetPlayerTime(0); + MF_GetPlayerPlayTime(0); + MF_GetPlayerCurweapon(0); + MF_GetPlayerTeamID(0); + MF_GetPlayerDeaths(0); + MF_GetPlayerMenu(0); + MF_GetPlayerKeys(0); + MF_IsPlayerAlive(0); + MF_GetPlayerFrags(0); + MF_IsPlayerConnecting(0); + MF_IsPlayerHLTV(0); + MF_GetPlayerArmor(0); + MF_GetPlayerHealth(0); + MF_AmxExec(0, 0, 0, 0); + MF_AmxExecv(0, 0, 0, 0, 0); + MF_AmxFindPublic(0, 0, 0); + MF_AmxAllot(0, 0, 0, 0); + MF_LoadAmxScript(0, 0, 0, 0); + MF_UnloadAmxScript(0, 0); + MF_RegisterSPForward(0, 0, 0, 0, 0, 0); + MF_RegisterSPForwardByName(0, 0, 0, 0, 0, 0); + MF_UnregisterSPForward(0); +} +#endif + +/************* MEMORY *************/ +// undef all defined macros +#undef new +#undef delete +#undef malloc +#undef calloc +#undef realloc +#undef free + +const unsigned int m_alloc_unknown = 0; +const unsigned int m_alloc_new = 1; +const unsigned int m_alloc_new_array = 2; +const unsigned int m_alloc_malloc = 3; +const unsigned int m_alloc_calloc = 4; +const unsigned int m_alloc_realloc = 5; +const unsigned int m_alloc_delete = 6; +const unsigned int m_alloc_delete_array = 7; +const unsigned int m_alloc_free = 8; + +const char *g_Mem_CurrentFilename = "??"; +int g_Mem_CurrentLine = 0; +const char *g_Mem_CurrentFunc = "??"; + +const char *Mem_MakeSourceFile(const char *sourceFile) +{ + static char buffer[512]; + static size_t pos = 0; + if (!pos) + { + // init + buffer[0] = '['; + strcpy(buffer + 1, MODULE_NAME); + pos = strlen(MODULE_NAME) + 1; + buffer[pos++] = ']'; + } + + // convert from absolute path to [modulename]filename + const char *ptr = strrchr(sourceFile, '\\'); + if (ptr) + ptr++; + else + { + ptr = strrchr(sourceFile, '/'); + if (ptr) + ptr++; + else + ptr = sourceFile; + } + strcpy(buffer + pos, ptr); + return buffer; +} + +void Mem_SetOwner(const char *filename, int line, const char *function) +{ + g_Mem_CurrentFilename = filename; + g_Mem_CurrentLine = line; + g_Mem_CurrentFunc = function; +} + +void Mem_ResetGlobals() +{ + Mem_SetOwner("??", 0, "??"); +} + +// raw (re/de)allocators +void * Mem_Allocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, + const unsigned int allocationType, const size_t reportedSize) +{ + if (g_fn_Allocator) + return g_fn_Allocator(Mem_MakeSourceFile(sourceFile), sourceLine, sourceFunc, allocationType, reportedSize); + else + return malloc(reportedSize); +} + +void * Mem_Reallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, + const unsigned int reallocationType, const size_t reportedSize, void *reportedAddress) +{ + if (g_fn_Reallocator) + return g_fn_Reallocator(Mem_MakeSourceFile(sourceFile), sourceLine, sourceFunc, reallocationType, reportedSize, reportedAddress); + else + return realloc(reportedAddress, reportedSize); +} + +void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, + const unsigned int deallocationType, void *reportedAddress) +{ + // If you you get user breakpoint here, something failed :) + // - invalid pointer + // - alloc type mismatch ( for example + // char *a = new char[5]; delete char; + // ) + // - The allocation unit is damaged (for example + // char *a = new char[5]; a[6] = 8; + // ) + // - break on dealloc flag set (somehow) + + if (g_fn_Deallocator) + g_fn_Deallocator(Mem_MakeSourceFile(sourceFile), sourceLine, sourceFunc, deallocationType, reportedAddress); + else + free(reportedAddress); +} + +// new and delete operators +void *operator new(size_t reportedSize) +{ + if (reportedSize == 0) + reportedSize = 1; + void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new, reportedSize); + // :TODO: Handler support ? + if (ptr) + return ptr; + + // allocation failed + throw std::bad_alloc(); +} + +void *operator new[](size_t reportedSize) +{ + if (reportedSize == 0) + reportedSize = 1; + void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new_array, reportedSize); + // :TODO: Handler support ? + if (ptr) + return ptr; + + // allocation failed + throw std::bad_alloc(); +} + +// Microsoft memory tracking operators +void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine) +{ + if (reportedSize == 0) + reportedSize = 1; + void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new, reportedSize); + // :TODO: Handler support ? + if (ptr) + return ptr; + + // allocation failed + throw std::bad_alloc(); +} +void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine) +{ + if (reportedSize == 0) + reportedSize = 1; + void *ptr = Mem_Allocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_new_array, reportedSize); + // :TODO: Handler support ? + if (ptr) + return ptr; + + // allocation failed + throw std::bad_alloc(); +} + +void operator delete(void *reportedAddress) +{ + if (!reportedAddress) + return; + + Mem_Deallocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_delete, reportedAddress); +} + +void operator delete[](void *reportedAddress) +{ + if (!reportedAddress) + return; + + Mem_Deallocator(g_Mem_CurrentFilename, g_Mem_CurrentLine, g_Mem_CurrentFunc, m_alloc_delete_array, reportedAddress); +} + +/************* stuff from dlls/util.cpp *************/ +// must come here because cbase.h declares it's own operator new + +#ifdef USE_METAMOD + +// Selected portions of dlls/util.cpp from SDK 2.1. +// Functions copied from there as needed... +// And modified to avoid buffer overflows (argh). + +/*** +* +* Copyright (c) 1999, 2000 Valve LLC. All rights reserved. +* +* This product contains software technology licensed from Id +* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc. +* All Rights Reserved. +* +* Use, distribution, and modification of this source code and/or resulting +* object code is restricted to non-commercial enhancements to products from +* Valve LLC. All other use, distribution, or modification is prohibited +* without written permission from Valve LLC. +* +****/ +/* + +===== util.cpp ======================================================== + + Utility code. Really not optional after all. + +*/ + +#include +#include "sdk_util.h" +#include + +#include // for strncpy(), etc + +#include "osdep.h" // win32 vsnprintf, etc + +char* UTIL_VarArgs( char *format, ... ) +{ + va_list argptr; + static char string[1024]; + + va_start (argptr, format); + vsnprintf (string, sizeof(string), format, argptr); + va_end (argptr); + + return string; +} + + +//========================================================= +// UTIL_LogPrintf - Prints a logged message to console. +// Preceded by LOG: ( timestamp ) < message > +//========================================================= +void UTIL_LogPrintf( char *fmt, ... ) +{ + va_list argptr; + static char string[1024]; + + va_start ( argptr, fmt ); + vsnprintf ( string, sizeof(string), fmt, argptr ); + va_end ( argptr ); + + // Print to server console + ALERT( at_logged, "%s", string ); +} + + +void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, + const char *pMessage) +{ + if ( !pEntity ) + return; + + MESSAGE_BEGIN( MSG_ONE, SVC_TEMPENTITY, NULL, ENT(pEntity->pev) ); + WRITE_BYTE( TE_TEXTMESSAGE ); + WRITE_BYTE( textparms.channel & 0xFF ); + + WRITE_SHORT( FixedSigned16( textparms.x, 1<<13 ) ); + WRITE_SHORT( FixedSigned16( textparms.y, 1<<13 ) ); + WRITE_BYTE( textparms.effect ); + + WRITE_BYTE( textparms.r1 ); + WRITE_BYTE( textparms.g1 ); + WRITE_BYTE( textparms.b1 ); + WRITE_BYTE( textparms.a1 ); + + WRITE_BYTE( textparms.r2 ); + WRITE_BYTE( textparms.g2 ); + WRITE_BYTE( textparms.b2 ); + WRITE_BYTE( textparms.a2 ); + + WRITE_SHORT( FixedUnsigned16( textparms.fadeinTime, 1<<8 ) ); + WRITE_SHORT( FixedUnsigned16( textparms.fadeoutTime, 1<<8 ) ); + WRITE_SHORT( FixedUnsigned16( textparms.holdTime, 1<<8 ) ); + + if ( textparms.effect == 2 ) + WRITE_SHORT( FixedUnsigned16( textparms.fxTime, 1<<8 ) ); + + if ( strlen( pMessage ) < 512 ) + { + WRITE_STRING( pMessage ); + } + else + { + char tmp[512]; + strncpy( tmp, pMessage, 511 ); + tmp[511] = 0; + WRITE_STRING( tmp ); + } + MESSAGE_END(); +} + +short FixedSigned16( float value, float scale ) +{ + int output; + + output = (int) (value * scale); + + if ( output > 32767 ) + output = 32767; + + if ( output < -32768 ) + output = -32768; + + return (short)output; +} + +unsigned short FixedUnsigned16( float value, float scale ) +{ + int output; + + output = (int) (value * scale); + if ( output < 0 ) + output = 0; + if ( output > 0xFFFF ) + output = 0xFFFF; + + return (unsigned short)output; +} +#endif // USE_METAMOD diff --git a/dlls/geoip/amxxmodule.h b/dlls/geoip/amxxmodule.h new file mode 100755 index 00000000..b548edf1 --- /dev/null +++ b/dlls/geoip/amxxmodule.h @@ -0,0 +1,2152 @@ +/* + * AMX Mod X Module Interface Functions + * This file may be freely used +*/ + +// prevent double include +#ifndef __AMXXMODULE_H__ +#define __AMXXMODULE_H__ + +// config +#include "moduleconfig.h" + +// metamod include files +#ifdef USE_METAMOD +#include +#include +#include "osdep.h" +#endif // #ifdef USE_METAMOD + +// DLL Export +#undef DLLEXPORT +#ifndef __linux__ +#define DLLEXPORT __declspec(dllexport) +#else +#define DLLEXPORT +#define LINUX +#endif + +#undef C_DLLEXPORT +#define C_DLLEXPORT extern "C" DLLEXPORT + +// ***** AMXX stuff ***** + +// module interface version is 1 +#define AMXX_INTERFACE_VERSION 1 + +// amxx module info +struct amxx_module_info_s +{ + const char *name; + const char *author; + const char *version; + int reload; // reload on mapchange when nonzero +}; + + + +// return values from functions called by amxx +#define AMXX_OK 0 /* no error */ +#define AMXX_IFVERS 1 /* interface version */ +#define AMXX_PARAM 2 /* Invalid parameter */ +#define AMXX_FUNC_NOT_PRESENT 3 /* Function not present */ + +// *** Small stuff *** +// The next section is copied from the amx.h file +// Copyright (c) ITB CompuPhase, 1997-2004 + +#if defined __LCC__ || defined __DMC__ || defined __linux__ + #include +#elif !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L + /* The ISO C99 defines the int16_t and int_32t types. If the compiler got + * here, these types are probably undefined. + */ + #if defined __FreeBSD__ + #include + #else + typedef short int int16_t; + typedef unsigned short int uint16_t; + #if defined SN_TARGET_PS2 + typedef int int32_t; + typedef unsigned int uint32_t; + #else + typedef long int int32_t; + typedef unsigned long int uint32_t; + #endif + #if defined __WIN32__ || defined _WIN32 || defined WIN32 + typedef __int64 int64_t; + typedef unsigned __int64 uint64_t; + #define HAVE_I64 + #elif defined __GNUC__ + typedef long long int64_t; + typedef unsigned long long uint64_t; + #define HAVE_I64 + #endif + #endif +#endif + + +/* calling convention for native functions */ +#if !defined AMX_NATIVE_CALL + #define AMX_NATIVE_CALL +#endif +/* calling convention for all interface functions and callback functions */ +#if !defined AMXAPI + #if defined STDECL + #define AMXAPI __stdcall + #elif defined CDECL + #define AMXAPI __cdecl + #else + #define AMXAPI + #endif +#endif +#if !defined AMXEXPORT + #define AMXEXPORT +#endif + + + +#if !defined SMALL_CELL_SIZE + #define SMALL_CELL_SIZE 32 /* by default, use 32-bit cells */ +#endif +#if SMALL_CELL_SIZE==32 + typedef uint32_t ucell; + typedef int32_t cell; + typedef float REAL; +#elif SMALL_CELL_SIZE==64 + typedef uint64_t ucell; + typedef int64_t cell; + typedef double REAL; +#else + #error Unsupported cell size (SMALL_CELL_SIZE) +#endif + +#define UNPACKEDMAX ((1 << (sizeof(cell)-1)*8) - 1) + +struct tagAMX; +typedef cell (AMX_NATIVE_CALL *AMX_NATIVE)(struct tagAMX *amx, cell *params); +typedef int (AMXAPI *AMX_CALLBACK)(struct tagAMX *amx, cell index, + cell *result, cell *params); +typedef int (AMXAPI *AMX_DEBUG)(struct tagAMX *amx); +#if !defined _FAR + #define _FAR +#endif + +#if defined _MSC_VER + #pragma warning(disable:4103) /* disable warning message 4103 that complains + * about pragma pack in a header file */ + #pragma warning(disable:4100) /* "'%$S' : unreferenced formal parameter" */ +#endif + + +#if defined SN_TARGET_PS2 || defined __GNUC__ + #define AMX_NO_ALIGN +#endif + + +#if defined __GNUC__ + #define PACKED __attribute__((packed)) +#else + #define PACKED +#endif + + +#if !defined AMX_NO_ALIGN + #if defined __linux__ + #pragma pack(1) /* structures must be packed (byte-aligned) */ + #else + #pragma pack(push) + #pragma pack(1) /* structures must be packed (byte-aligned) */ + #if defined __TURBOC__ + #pragma option -a- /* "pack" pragma for older Borland compilers */ + #endif + #endif +#endif + +typedef struct { + const char _FAR *name PACKED; + AMX_NATIVE func PACKED; +} AMX_NATIVE_INFO; + +#define AMX_USERNUM 4 + +/* The AMX structure is the internal structure for many functions. Not all + * fields are valid at all times; many fields are cached in local variables. + */ +typedef struct tagAMX { + unsigned char _FAR *base PACKED; /* points to the AMX header ("amxhdr") plus the code, optionally also the data */ + unsigned char _FAR *data PACKED; /* points to separate data+stack+heap, may be NULL */ + AMX_CALLBACK callback PACKED; + AMX_DEBUG debug PACKED; /* debug callback */ + /* for external functions a few registers must be accessible from the outside */ + cell cip PACKED; /* instruction pointer: relative to base + amxhdr->cod */ + cell frm PACKED; /* stack frame base: relative to base + amxhdr->dat */ + cell hea PACKED; /* top of the heap: relative to base + amxhdr->dat */ + cell hlw PACKED; /* bottom of the heap: relative to base + amxhdr->dat */ + cell stk PACKED; /* stack pointer: relative to base + amxhdr->dat */ + cell stp PACKED; /* top of the stack: relative to base + amxhdr->dat */ + int flags PACKED; /* current status, see amx_Flags() */ + /* for assertions and debug hook */ + cell curline PACKED; + cell curfile PACKED; + int dbgcode PACKED; + cell dbgaddr PACKED; + cell dbgparam PACKED; + char _FAR *dbgname PACKED; + /* user data */ + long usertags[AMX_USERNUM] PACKED; + void _FAR *userdata[AMX_USERNUM] PACKED; + /* native functions can raise an error */ + int error PACKED; + /* the sleep opcode needs to store the full AMX status */ + cell pri PACKED; + cell alt PACKED; + cell reset_stk PACKED; + cell reset_hea PACKED; + cell sysreq_d PACKED; /* relocated address/value for the SYSREQ.D opcode */ + #if defined JIT + /* support variables for the JIT */ + int reloc_size PACKED; /* required temporary buffer for relocations */ + long code_size PACKED; /* estimated memory footprint of the native code */ + #endif +} AMX; + +enum { + AMX_ERR_NONE, + /* reserve the first 15 error codes for exit codes of the abstract machine */ + AMX_ERR_EXIT, /* forced exit */ + AMX_ERR_ASSERT, /* assertion failed */ + AMX_ERR_STACKERR, /* stack/heap collision */ + AMX_ERR_BOUNDS, /* index out of bounds */ + AMX_ERR_MEMACCESS, /* invalid memory access */ + AMX_ERR_INVINSTR, /* invalid instruction */ + AMX_ERR_STACKLOW, /* stack underflow */ + AMX_ERR_HEAPLOW, /* heap underflow */ + AMX_ERR_CALLBACK, /* no callback, or invalid callback */ + AMX_ERR_NATIVE, /* native function failed */ + AMX_ERR_DIVIDE, /* divide by zero */ + AMX_ERR_SLEEP, /* go into sleepmode - code can be restarted */ + + AMX_ERR_MEMORY = 16, /* out of memory */ + AMX_ERR_FORMAT, /* invalid file format */ + AMX_ERR_VERSION, /* file is for a newer version of the AMX */ + AMX_ERR_NOTFOUND, /* function not found */ + AMX_ERR_INDEX, /* invalid index parameter (bad entry point) */ + AMX_ERR_DEBUG, /* debugger cannot run */ + AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ + AMX_ERR_USERDATA, /* unable to set user data field (table full) */ + AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ + AMX_ERR_PARAMS, /* parameter error */ + AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ +}; + + +// ***** declare functions ***** + +#ifdef USE_METAMOD +void UTIL_LogPrintf( char *fmt, ... ); +void UTIL_HudMessage(CBaseEntity *pEntity, const hudtextparms_t &textparms, const char *pMessage); +short FixedSigned16( float value, float scale ); +unsigned short FixedUnsigned16( float value, float scale ); + +#ifdef FN_META_QUERY +void FN_META_QUERY(void); +#endif // FN_META_QUERY + +#ifdef FN_META_ATTACH +void FN_META_ATTACH(void); +#endif // FN_META_ATTACH + +#ifdef FN_META_DETTACH +void FN_META_DETTACH(void); +#endif // FN_META_DETTACH + + + + + +#ifdef FN_GameDLLInit +void FN_GameDLLInit(void); +#endif // FN_GameDLLInit + +#ifdef FN_DispatchSpawn +int FN_DispatchSpawn(edict_t *pent); +#endif // FN_DispatchSpawn + +#ifdef FN_DispatchThink +void FN_DispatchThink(edict_t *pent); +#endif // FN_DispatchThink + +#ifdef FN_DispatchUse +void FN_DispatchUse(edict_t *pentUser, edict_t *pentOther); +#endif // FN_DispatchUse + +#ifdef FN_DispatchTouch +void FN_DispatchTouch(edict_t *pentTouched, edict_t *pentOther); +#endif // FN_DispatchTouch + +#ifdef FN_DispatchBlocked +void FN_DispatchBlocked(edict_t *pentBlocked, edict_t *pentOther); +#endif // FN_DispatchBlocked + +#ifdef FN_DispatchKeyValue +void FN_DispatchKeyValue(edict_t *pentKeyvalue, KeyValueData *pkvd); +#endif // FN_DispatchKeyValue + +#ifdef FN_DispatchSave +void FN_DispatchSave(edict_t *pent, SAVERESTOREDATA *pSaveData); +#endif // FN_DispatchSave + +#ifdef FN_DispatchRestore +int FN_DispatchRestore(edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity); +#endif // FN_DispatchRestore + +#ifdef FN_DispatchObjectCollsionBox +void FN_DispatchObjectCollsionBox(edict_t *pent); +#endif // FN_DispatchObjectCollsionBox + +#ifdef FN_SaveWriteFields +void FN_SaveWriteFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); +#endif // FN_SaveWriteFields + +#ifdef FN_SaveReadFields +void FN_SaveReadFields(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); +#endif // FN_SaveReadFields + +#ifdef FN_SaveGlobalState +void FN_SaveGlobalState(SAVERESTOREDATA *pSaveData); +#endif // FN_SaveGlobalState + +#ifdef FN_RestoreGlobalState +void FN_RestoreGlobalState(SAVERESTOREDATA *pSaveData); +#endif // FN_RestoreGlobalState + +#ifdef FN_ResetGlobalState +void FN_ResetGlobalState(void); +#endif // FN_ResetGlobalState + +#ifdef FN_ClientConnect +BOOL FN_ClientConnect(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ]); +#endif // FN_ClientConnect + +#ifdef FN_ClientDisconnect +void FN_ClientDisconnect(edict_t *pEntity); +#endif // FN_ClientDisconnect + +#ifdef FN_ClientKill +void FN_ClientKill(edict_t *pEntity); +#endif // FN_ClientKill + +#ifdef FN_ClientPutInServer +void FN_ClientPutInServer(edict_t *pEntity); +#endif // FN_ClientPutInServer + +#ifdef FN_ClientCommand +void FN_ClientCommand(edict_t *pEntity); +#endif // FN_ClientCommand + +#ifdef FN_ClientUserInfoChanged +void FN_ClientUserInfoChanged(edict_t *pEntity, char *infobuffer); +#endif // FN_ClientUserInfoChanged + +#ifdef FN_ServerActivate +void FN_ServerActivate(edict_t *pEdictList, int edictCount, int clientMax); +#endif // FN_ServerActivate + +#ifdef FN_ServerDeactivate +void FN_ServerDeactivate(void); +#endif // FN_ServerDeactivate + +#ifdef FN_PlayerPreThink +void FN_PlayerPreThink(edict_t *pEntity); +#endif // FN_PlayerPreThink + +#ifdef FN_PlayerPostThink +void FN_PlayerPostThink(edict_t *pEntity); +#endif // FN_PlayerPostThink + +#ifdef FN_StartFrame +void FN_StartFrame(void); +#endif // FN_StartFrame + +#ifdef FN_ParmsNewLevel +void FN_ParmsNewLevel(void); +#endif // FN_ParmsNewLevel + +#ifdef FN_ParmsChangeLevel +void FN_ParmsChangeLevel(void); +#endif // FN_ParmsChangeLevel + +#ifdef FN_GetGameDescription +const char *FN_GetGameDescription(void); +#endif // FN_GetGameDescription + +#ifdef FN_PlayerCustomization +void FN_PlayerCustomization(edict_t *pEntity, customization_t *pCust); +#endif // FN_PlayerCustomization + +#ifdef FN_SpectatorConnect +void FN_SpectatorConnect(edict_t *pEntity); +#endif // FN_SpectatorConnect + +#ifdef FN_SpectatorDisconnect +void FN_SpectatorDisconnect(edict_t *pEntity); +#endif // FN_SpectatorDisconnect + +#ifdef FN_SpectatorThink +void FN_SpectatorThink(edict_t *pEntity); +#endif // FN_SpectatorThink + +#ifdef FN_Sys_Error +void FN_Sys_Error(const char *error_string); +#endif // FN_Sys_Error + +#ifdef FN_PM_Move +void FN_PM_Move(struct playermove_s *ppmove, int server); +#endif // FN_PM_Move + +#ifdef FN_PM_Init +void FN_PM_Init(struct playermove_s *ppmove); +#endif // FN_PM_Init + +#ifdef FN_PM_FindTextureType +char FN_PM_FindTextureType(char *name); +#endif // FN_PM_FindTextureType + +#ifdef FN_SetupVisibility +void FN_SetupVisibility(edict_t *pViewEntity, edict_t *pClient, unsigned char **pvs, unsigned char **pas); +#endif // FN_SetupVisibility + +#ifdef FN_UpdateClientData +void FN_UpdateClientData(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd); +#endif // FN_UpdateClientData + +#ifdef FN_AddToFullPack +int FN_AddToFullPack(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet); +#endif // FN_AddToFullPack + +#ifdef FN_CreateBaseline +void FN_CreateBaseline(int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs); +#endif // FN_CreateBaseline + +#ifdef FN_RegisterEncoders +void FN_RegisterEncoders(void); +#endif // FN_RegisterEncoders + +#ifdef FN_GetWeaponData +int FN_GetWeaponData(struct edict_s *player, struct weapon_data_s *info); +#endif // FN_GetWeaponData + +#ifdef FN_CmdStart +void FN_CmdStart(const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed); +#endif // FN_CmdStart + +#ifdef FN_CmdEnd +void FN_CmdEnd(const edict_t *player); +#endif // FN_CmdEnd + +#ifdef FN_ConnectionlessPacket +int FN_ConnectionlessPacket(const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size); +#endif // FN_ConnectionlessPacket + +#ifdef FN_GetHullBounds +int FN_GetHullBounds(int hullnumber, float *mins, float *maxs); +#endif // FN_GetHullBounds + +#ifdef FN_CreateInstancedBaselines +void FN_CreateInstancedBaselines(void); +#endif // FN_CreateInstancedBaselines + +#ifdef FN_InconsistentFile +int FN_InconsistentFile(const edict_t *player, const char *filename, char *disconnect_message); +#endif // FN_InconsistentFile + +#ifdef FN_AllowLagCompensation +int FN_AllowLagCompensation(void); +#endif // FN_AllowLagCompensation + + + + +#ifdef FN_GameDLLInit_Post +void FN_GameDLLInit_Post(void); +#endif // FN_GameDLLInit_Post + +#ifdef FN_DispatchSpawn_Post +int FN_DispatchSpawn_Post(edict_t *pent); +#endif // FN_DispatchSpawn_Post + +#ifdef FN_DispatchThink_Post +void FN_DispatchThink_Post(edict_t *pent); +#endif // FN_DispatchThink_Post + +#ifdef FN_DispatchUse_Post +void FN_DispatchUse_Post(edict_t *pentUser, edict_t *pentOther); +#endif // FN_DispatchUse_Post + +#ifdef FN_DispatchTouch_Post +void FN_DispatchTouch_Post(edict_t *pentTouched, edict_t *pentOther); +#endif // FN_DispatchTouch_Post + +#ifdef FN_DispatchBlocked_Post +void FN_DispatchBlocked_Post(edict_t *pentBlocked, edict_t *pentOther); +#endif // FN_DispatchBlocked_Post + +#ifdef FN_DispatchKeyValue_Post +void FN_DispatchKeyValue_Post(edict_t *pentKeyvalue, KeyValueData *pkvd); +#endif // FN_DispatchKeyValue_Post + +#ifdef FN_DispatchSave_Post +void FN_DispatchSave_Post(edict_t *pent, SAVERESTOREDATA *pSaveData); +#endif // FN_DispatchSave_Post + +#ifdef FN_DispatchRestore_Post +int FN_DispatchRestore_Post(edict_t *pent, SAVERESTOREDATA *pSaveData, int globalEntity); +#endif // FN_DispatchRestore_Post + +#ifdef FN_DispatchObjectCollsionBox_Post +void FN_DispatchObjectCollsionBox_Post(edict_t *pent); +#endif // FN_DispatchObjectCollsionBox_Post + +#ifdef FN_SaveWriteFields_Post +void FN_SaveWriteFields_Post(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); +#endif // FN_SaveWriteFields_Post + +#ifdef FN_SaveReadFields_Post +void FN_SaveReadFields_Post(SAVERESTOREDATA *pSaveData, const char *pname, void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCount); +#endif // FN_SaveReadFields_Post + +#ifdef FN_SaveGlobalState_Post +void FN_SaveGlobalState_Post(SAVERESTOREDATA *pSaveData); +#endif // FN_SaveGlobalState_Post + +#ifdef FN_RestoreGlobalState_Post +void FN_RestoreGlobalState_Post(SAVERESTOREDATA *pSaveData); +#endif // FN_RestoreGlobalState_Post + +#ifdef FN_ResetGlobalState_Post +void FN_ResetGlobalState_Post(void); +#endif // FN_ResetGlobalState_Post + +#ifdef FN_ClientConnect_Post +BOOL FN_ClientConnect_Post(edict_t *pEntity, const char *pszName, const char *pszAddress, char szRejectReason[ 128 ]); +#endif // FN_ClientConnect_Post + +#ifdef FN_ClientDisconnect_Post +void FN_ClientDisconnect_Post(edict_t *pEntity); +#endif // FN_ClientDisconnect_Post + +#ifdef FN_ClientKill_Post +void FN_ClientKill_Post(edict_t *pEntity); +#endif // FN_ClientKill_Post + +#ifdef FN_ClientPutInServer_Post +void FN_ClientPutInServer_Post(edict_t *pEntity); +#endif // FN_ClientPutInServer_Post + +#ifdef FN_ClientCommand_Post +void FN_ClientCommand_Post(edict_t *pEntity); +#endif // FN_ClientCommand_Post + +#ifdef FN_ClientUserInfoChanged_Post +void FN_ClientUserInfoChanged_Post(edict_t *pEntity, char *infobuffer); +#endif // FN_ClientUserInfoChanged_Post + +#ifdef FN_ServerActivate_Post +void FN_ServerActivate_Post(edict_t *pEdictList, int edictCount, int clientMax); +#endif // FN_ServerActivate_Post + +#ifdef FN_ServerDeactivate_Post +void FN_ServerDeactivate_Post(void); +#endif // FN_ServerDeactivate_Post + +#ifdef FN_PlayerPreThink_Post +void FN_PlayerPreThink_Post(edict_t *pEntity); +#endif // FN_PlayerPreThink_Post + +#ifdef FN_PlayerPostThink_Post +void FN_PlayerPostThink_Post(edict_t *pEntity); +#endif // FN_PlayerPostThink_Post + +#ifdef FN_StartFrame_Post +void FN_StartFrame_Post(void); +#endif // FN_StartFrame_Post + +#ifdef FN_ParmsNewLevel_Post +void FN_ParmsNewLevel_Post(void); +#endif // FN_ParmsNewLevel_Post + +#ifdef FN_ParmsChangeLevel_Post +void FN_ParmsChangeLevel_Post(void); +#endif // FN_ParmsChangeLevel_Post + +#ifdef FN_GetGameDescription_Post +const char *FN_GetGameDescription_Post(void); +#endif // FN_GetGameDescription_Post + +#ifdef FN_PlayerCustomization_Post +void FN_PlayerCustomization_Post(edict_t *pEntity, customization_t *pCust); +#endif // FN_PlayerCustomization_Post + +#ifdef FN_SpectatorConnect_Post +void FN_SpectatorConnect_Post(edict_t *pEntity); +#endif // FN_SpectatorConnect_Post + +#ifdef FN_SpectatorDisconnect_Post +void FN_SpectatorDisconnect_Post(edict_t *pEntity); +#endif // FN_SpectatorDisconnect_Post + +#ifdef FN_SpectatorThink_Post +void FN_SpectatorThink_Post(edict_t *pEntity); +#endif // FN_SpectatorThink_Post + +#ifdef FN_Sys_Error_Post +void FN_Sys_Error_Post(const char *error_string); +#endif // FN_Sys_Error_Post + +#ifdef FN_PM_Move_Post +void FN_PM_Move_Post(struct playermove_s *ppmove, int server); +#endif // FN_PM_Move_Post + +#ifdef FN_PM_Init_Post +void FN_PM_Init_Post(struct playermove_s *ppmove); +#endif // FN_PM_Init_Post + +#ifdef FN_PM_FindTextureType_Post +char FN_PM_FindTextureType_Post(char *name); +#endif // FN_PM_FindTextureType_Post + +#ifdef FN_SetupVisibility_Post +void FN_SetupVisibility_Post(edict_t *pViewEntity, edict_t *pClient, unsigned char **pvs, unsigned char **pas); +#endif // FN_SetupVisibility_Post + +#ifdef FN_UpdateClientData_Post +void FN_UpdateClientData_Post(const struct edict_s *ent, int sendweapons, struct clientdata_s *cd); +#endif // FN_UpdateClientData_Post + +#ifdef FN_AddToFullPack_Post +int FN_AddToFullPack_Post(struct entity_state_s *state, int e, edict_t *ent, edict_t *host, int hostflags, int player, unsigned char *pSet); +#endif // FN_AddToFullPack_Post + +#ifdef FN_CreateBaseline_Post +void FN_CreateBaseline_Post(int player, int eindex, struct entity_state_s *baseline, struct edict_s *entity, int playermodelindex, vec3_t player_mins, vec3_t player_maxs); +#endif // FN_CreateBaseline_Post + +#ifdef FN_RegisterEncoders_Post +void FN_RegisterEncoders_Post(void); +#endif // FN_RegisterEncoders_Post + +#ifdef FN_GetWeaponData_Post +int FN_GetWeaponData_Post(struct edict_s *player, struct weapon_data_s *info); +#endif // FN_GetWeaponData_Post + +#ifdef FN_CmdStart_Post +void FN_CmdStart_Post(const edict_t *player, const struct usercmd_s *cmd, unsigned int random_seed); +#endif // FN_CmdStart_Post + +#ifdef FN_CmdEnd_Post +void FN_CmdEnd_Post(const edict_t *player); +#endif // FN_CmdEnd_Post + +#ifdef FN_ConnectionlessPacket_Post +int FN_ConnectionlessPacket_Post(const struct netadr_s *net_from, const char *args, char *response_buffer, int *response_buffer_size); +#endif // FN_ConnectionlessPacket_Post + +#ifdef FN_GetHullBounds_Post +int FN_GetHullBounds_Post(int hullnumber, float *mins, float *maxs); +#endif // FN_GetHullBounds_Post + +#ifdef FN_CreateInstancedBaselines_Post +void FN_CreateInstancedBaselines_Post(void); +#endif // FN_CreateInstancedBaselines_Post + +#ifdef FN_InconsistentFile_Post +int FN_InconsistentFile_Post(const edict_t *player, const char *filename, char *disconnect_message); +#endif // FN_InconsistentFile_Post + +#ifdef FN_AllowLagCompensation_Post +int FN_AllowLagCompensation_Post(void); +#endif // FN_AllowLagCompensation_Post + + + +#ifdef FN_PrecacheModel +int FN_PrecacheModel(char *s); +#endif // FN_PrecacheModel + +#ifdef FN_PrecacheSound +int FN_PrecacheSound(char *s); +#endif // FN_PrecacheSound + +#ifdef FN_SetModel +void FN_SetModel(edict_t *e, const char *m); +#endif // FN_SetModel + +#ifdef FN_ModelIndex +int FN_ModelIndex(const char *m); +#endif // FN_ModelIndex + +#ifdef FN_ModelFrames +int FN_ModelFrames(int modelIndex); +#endif // FN_ModelFrames + +#ifdef FN_SetSize +void FN_SetSize(edict_t *e, const float *rgflMin, const float *rgflMax); +#endif // FN_SetSize + +#ifdef FN_ChangeLevel +void FN_ChangeLevel(char *s1, char *s2); +#endif // FN_ChangeLevel + +#ifdef FN_GetSpawnParms +void FN_GetSpawnParms(edict_t *ent); +#endif // FN_GetSpawnParms + +#ifdef FN_SaveSpawnParms +void FN_SaveSpawnParms(edict_t *ent); +#endif // FN_SaveSpawnParms + +#ifdef FN_VecToYaw +float FN_VecToYaw(const float *rgflVector); +#endif // FN_VecToYaw + +#ifdef FN_VecToAngles +void FN_VecToAngles(const float *rgflVectorIn, float *rgflVectorOut); +#endif // FN_VecToAngles + +#ifdef FN_MoveToOrigin +void FN_MoveToOrigin(edict_t *ent, const float *pflGoal, float dist, int iMoveType); +#endif // FN_MoveToOrigin + +#ifdef FN_ChangeYaw +void FN_ChangeYaw(edict_t *ent); +#endif // FN_ChangeYaw + +#ifdef FN_ChangePitch +void FN_ChangePitch(edict_t *ent); +#endif // FN_ChangePitch + +#ifdef FN_FindEntityByString +edict_t *FN_FindEntityByString(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue); +#endif // FN_FindEntityByString + +#ifdef FN_GetEntityIllum +int FN_GetEntityIllum(edict_t *pEnt); +#endif // FN_GetEntityIllum + +#ifdef FN_FindEntityInSphere +edict_t *FN_FindEntityInSphere(edict_t *pEdictStartSearchAfter, const float *org, float rad); +#endif // FN_FindEntityInSphere + +#ifdef FN_FindClientInPVS +edict_t *FN_FindClientInPVS(edict_t *pEdict); +#endif // FN_FindClientInPVS + +#ifdef FN_EntitiesInPVS +edict_t *FN_EntitiesInPVS(edict_t *pplayer); +#endif // FN_EntitiesInPVS + +#ifdef FN_MakeVectors +void FN_MakeVectors(const float *rgflVector); +#endif // FN_MakeVectors + +#ifdef FN_AngleVectors +void FN_AngleVectors(const float *rgflVector, float *forward, float *right, float *up); +#endif // FN_AngleVectors + +#ifdef FN_CreateEntity +edict_t *FN_CreateEntity(void); +#endif // FN_CreateEntity + +#ifdef FN_RemoveEntity +void FN_RemoveEntity(edict_t *e); +#endif // FN_RemoveEntity + +#ifdef FN_CreateNamedEntity +edict_t *FN_CreateNamedEntity(int className); +#endif // FN_CreateNamedEntity + +#ifdef FN_MakeStatic +void FN_MakeStatic(edict_t *ent); +#endif // FN_MakeStatic + +#ifdef FN_EntIsOnFloor +int FN_EntIsOnFloor(edict_t *ent); +#endif // FN_EntIsOnFloor + +#ifdef FN_DropToFloor +int FN_DropToFloor(edict_t *ent); +#endif // FN_DropToFloor + +#ifdef FN_WalkMove +int FN_WalkMove(edict_t *ent, float yaw, float dist, int iMode); +#endif // FN_WalkMove + +#ifdef FN_SetOrigin +void FN_SetOrigin(edict_t *e, const float *rgflOrigin); +#endif // FN_SetOrigin + +#ifdef FN_EmitSound +void FN_EmitSound(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch); +#endif // FN_EmitSound + +#ifdef FN_EmitAmbientSound +void FN_EmitAmbientSound(edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch); +#endif // FN_EmitAmbientSound + +#ifdef FN_TraceLine +void FN_TraceLine(const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceLine + +#ifdef FN_TraceToss +void FN_TraceToss(edict_t *pent, edict_t *pentToIgnore, TraceResult *ptr); +#endif // FN_TraceToss + +#ifdef FN_TraceMonsterHull +int FN_TraceMonsterHull(edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceMonsterHull + +#ifdef FN_TraceHull +void FN_TraceHull(const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceHull + +#ifdef FN_TraceModel +void FN_TraceModel(const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr); +#endif // FN_TraceModel + +#ifdef FN_TraceTexture +const char *FN_TraceTexture(edict_t *pTextureEntity, const float *v1, const float *v2 ); +#endif // FN_TraceTexture + +#ifdef FN_TraceSphere +void FN_TraceSphere(const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceSphere + +#ifdef FN_GetAimVector +void FN_GetAimVector(edict_t *ent, float speed, float *rgflReturn); +#endif // FN_GetAimVector + +#ifdef FN_ServerCommand +void FN_ServerCommand(char *str); +#endif // FN_ServerCommand + +#ifdef FN_ServerExecute +void FN_ServerExecute(void); +#endif // FN_ServerExecute + +#ifdef FN_engClientCommand +void FN_engClientCommand(edict_t *pEdict, char *szFmt, ...); +#endif // FN_engClientCommand + +#ifdef FN_ParticleEffect +void FN_ParticleEffect(const float *org, const float *dir, float color, float count); +#endif // FN_ParticleEffect + +#ifdef FN_LightStyle +void FN_LightStyle(int style, char *val); +#endif // FN_LightStyle + +#ifdef FN_DecalIndex +int FN_DecalIndex(const char *name); +#endif // FN_DecalIndex + +#ifdef FN_PointContents +int FN_PointContents(const float *rgflVector); +#endif // FN_PointContents + +#ifdef FN_MessageBegin +void FN_MessageBegin(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); +#endif // FN_MessageBegin + +#ifdef FN_MessageEnd +void FN_MessageEnd(void); +#endif // FN_MessageEnd + +#ifdef FN_WriteByte +void FN_WriteByte(int iValue); +#endif // FN_WriteByte + +#ifdef FN_WriteChar +void FN_WriteChar(int iValue); +#endif // FN_WriteChar + +#ifdef FN_WriteShort +void FN_WriteShort(int iValue); +#endif // FN_WriteShort + +#ifdef FN_WriteLong +void FN_WriteLong(int iValue); +#endif // FN_WriteLong + +#ifdef FN_WriteAngle +void FN_WriteAngle(float flValue); +#endif // FN_WriteAngle + +#ifdef FN_WriteCoord +void FN_WriteCoord(float flValue); +#endif // FN_WriteCoord + +#ifdef FN_WriteString +void FN_WriteString(const char *sz); +#endif // FN_WriteString + +#ifdef FN_WriteEntity +void FN_WriteEntity(int iValue); +#endif // FN_WriteEntity + +#ifdef FN_CVarRegister +void FN_CVarRegister(cvar_t *pCvar); +#endif // FN_CVarRegister + +#ifdef FN_CVarGetFloat +float FN_CVarGetFloat(const char *szVarName); +#endif // FN_CVarGetFloat + +#ifdef FN_CVarGetString +const char *FN_CVarGetString(const char *szVarName); +#endif // FN_CVarGetString + +#ifdef FN_CVarSetFloat +void FN_CVarSetFloat(const char *szVarName, float flValue); +#endif // FN_CVarSetFloat + +#ifdef FN_CVarSetString +void FN_CVarSetString(const char *szVarName, const char *szValue); +#endif // FN_CVarSetString + +#ifdef FN_AlertMessage +void FN_AlertMessage(ALERT_TYPE atype, char *szFmt, ...); +#endif // FN_AlertMessage + +#ifdef FN_EngineFprintf +void FN_EngineFprintf(FILE *pfile, char *szFmt, ...); +#endif // FN_EngineFprintf + +#ifdef FN_PvAllocEntPrivateData +void *FN_PvAllocEntPrivateData(edict_t *pEdict, long cb); +#endif // FN_PvAllocEntPrivateData + +#ifdef FN_PvEntPrivateData +void *FN_PvEntPrivateData(edict_t *pEdict); +#endif // FN_PvEntPrivateData + +#ifdef FN_FreeEntPrivateData +void FN_FreeEntPrivateData(edict_t *pEdict); +#endif // FN_FreeEntPrivateData + +#ifdef FN_SzFromIndex +const char *FN_SzFromIndex(int iString); +#endif // FN_SzFromIndex + +#ifdef FN_AllocString +int FN_AllocString(const char *szValue); +#endif // FN_AllocString + +#ifdef FN_GetVarsOfEnt +struct entvars_s *FN_GetVarsOfEnt(edict_t *pEdict); +#endif // FN_GetVarsOfEnt + +#ifdef FN_PEntityOfEntOffset +edict_t *FN_PEntityOfEntOffset(int iEntOffset); +#endif // FN_PEntityOfEntOffset + +#ifdef FN_EntOffsetOfPEntity +int FN_EntOffsetOfPEntity(const edict_t *pEdict); +#endif // FN_EntOffsetOfPEntity + +#ifdef FN_IndexOfEdict +int FN_IndexOfEdict(const edict_t *pEdict); +#endif // FN_IndexOfEdict + +#ifdef FN_PEntityOfEntIndex +edict_t *FN_PEntityOfEntIndex(int iEntIndex); +#endif // FN_PEntityOfEntIndex + +#ifdef FN_FindEntityByVars +edict_t *FN_FindEntityByVars(struct entvars_s *pvars); +#endif // FN_FindEntityByVars + +#ifdef FN_GetModelPtr +void *FN_GetModelPtr(edict_t *pEdict); +#endif // FN_GetModelPtr + +#ifdef FN_RegUserMsg +int FN_RegUserMsg(const char *pszName, int iSize); +#endif // FN_RegUserMsg + +#ifdef FN_AnimationAutomove +void FN_AnimationAutomove(const edict_t *pEdict, float flTime); +#endif // FN_AnimationAutomove + +#ifdef FN_GetBonePosition +void FN_GetBonePosition(const edict_t *pEdict, int iBone, float *rgflOrigin, float *rgflAngles); +#endif // FN_GetBonePosition + +#ifdef FN_FunctionFromName +unsigned long FN_FunctionFromName(const char *pName); +#endif // FN_FunctionFromName + +#ifdef FN_NameForFunction +const char *FN_NameForFunction(unsigned long function); +#endif // FN_NameForFunction + +#ifdef FN_ClientPrintf +void FN_ClientPrintf(edict_t *pEdict, PRINT_TYPE ptype, const char *szMsg); +#endif // FN_ClientPrintf + +#ifdef FN_ServerPrint +void FN_ServerPrint(const char *szMsg); +#endif // FN_ServerPrint + +#ifdef FN_Cmd_Args +const char *FN_Cmd_Args(void); +#endif // FN_Cmd_Args + +#ifdef FN_Cmd_Argv +const char *FN_Cmd_Argv(int argc); +#endif // FN_Cmd_Argv + +#ifdef FN_Cmd_Argc +int FN_Cmd_Argc(void); +#endif // FN_Cmd_Argc + +#ifdef FN_GetAttachment +void FN_GetAttachment(const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles ); +#endif // FN_GetAttachment + +#ifdef FN_CRC32_Init +void FN_CRC32_Init(CRC32_t *pulCRC); +#endif // FN_CRC32_Init + +#ifdef FN_CRC32_ProcessBuffer +void FN_CRC32_ProcessBuffer(CRC32_t *pulCRC, void *p, int len); +#endif // FN_CRC32_ProcessBuffer + +#ifdef FN_CRC32_ProcessByte +void FN_CRC32_ProcessByte(CRC32_t *pulCRC, unsigned char ch); +#endif // FN_CRC32_ProcessByte + +#ifdef FN_CRC32_Final +CRC32_t FN_CRC32_Final(CRC32_t pulCRC); +#endif // FN_CRC32_Final + +#ifdef FN_RandomLong +long FN_RandomLong(long lLow, long lHigh); +#endif // FN_RandomLong + +#ifdef FN_RandomFloat +float FN_RandomFloat(float flLow, float flHigh); +#endif // FN_RandomFloat + +#ifdef FN_SetView +void FN_SetView(const edict_t *pClient, const edict_t *pViewent); +#endif // FN_SetView + +#ifdef FN_Time +float FN_Time(void); +#endif // FN_Time + +#ifdef FN_CrosshairAngle +void FN_CrosshairAngle(const edict_t *pClient, float pitch, float yaw); +#endif // FN_CrosshairAngle + +#ifdef FN_LoadFileForMe +byte *FN_LoadFileForMe(char *filename, int *pLength); +#endif // FN_LoadFileForMe + +#ifdef FN_FreeFile +void FN_FreeFile(void *buffer); +#endif // FN_FreeFile + +#ifdef FN_EndSection +void FN_EndSection(const char *pszSectionName); +#endif // FN_EndSection + +#ifdef FN_CompareFileTime +int FN_CompareFileTime(char *filename1, char *filename2, int *iCompare); +#endif // FN_CompareFileTime + +#ifdef FN_GetGameDir +void FN_GetGameDir(char *szGetGameDir); +#endif // FN_GetGameDir + +#ifdef FN_Cvar_RegisterVariable +void FN_Cvar_RegisterVariable(cvar_t *variable); +#endif // FN_Cvar_RegisterVariable + +#ifdef FN_FadeClientVolume +void FN_FadeClientVolume(const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds); +#endif // FN_FadeClientVolume + +#ifdef FN_SetClientMaxspeed +void FN_SetClientMaxspeed(const edict_t *pEdict, float fNewMaxspeed); +#endif // FN_SetClientMaxspeed + +#ifdef FN_CreateFakeClient +edict_t *FN_CreateFakeClient(const char *netname); +#endif // FN_CreateFakeClient + +#ifdef FN_RunPlayerMove +void FN_RunPlayerMove(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec); +#endif // FN_RunPlayerMove + +#ifdef FN_NumberOfEntities +int FN_NumberOfEntities(void); +#endif // FN_NumberOfEntities + +#ifdef FN_GetInfoKeyBuffer +char *FN_GetInfoKeyBuffer(edict_t *e); +#endif // FN_GetInfoKeyBuffer + +#ifdef FN_InfoKeyValue +char *FN_InfoKeyValue(char *infobuffer, char *key); +#endif // FN_InfoKeyValue + +#ifdef FN_SetKeyValue +void FN_SetKeyValue(char *infobuffer, char *key, char *value); +#endif // FN_SetKeyValue + +#ifdef FN_SetClientKeyValue +void FN_SetClientKeyValue(int clientIndex, char *infobuffer, char *key, char *value); +#endif // FN_SetClientKeyValue + +#ifdef FN_IsMapValid +int FN_IsMapValid(char *filename); +#endif // FN_IsMapValid + +#ifdef FN_StaticDecal +void FN_StaticDecal(const float *origin, int decalIndex, int entityIndex, int modelIndex); +#endif // FN_StaticDecal + +#ifdef FN_PrecacheGeneric +int FN_PrecacheGeneric(char *s); +#endif // FN_PrecacheGeneric + +#ifdef FN_GetPlayerUserId +int FN_GetPlayerUserId(edict_t *e ); +#endif // FN_GetPlayerUserId + +#ifdef FN_BuildSoundMsg +void FN_BuildSoundMsg(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); +#endif // FN_BuildSoundMsg + +#ifdef FN_IsDedicatedServer +int FN_IsDedicatedServer(void); +#endif // FN_IsDedicatedServer + +#ifdef FN_CVarGetPointer +cvar_t *FN_CVarGetPointer(const char *szVarName); +#endif // FN_CVarGetPointer + +#ifdef FN_GetPlayerWONId +unsigned int FN_GetPlayerWONId(edict_t *e); +#endif // FN_GetPlayerWONId + +#ifdef FN_Info_RemoveKey +void FN_Info_RemoveKey( char *s, const char *key); +#endif // FN_Info_RemoveKey + +#ifdef FN_GetPhysicsKeyValue +const char *FN_GetPhysicsKeyValue(const edict_t *pClient, const char *key); +#endif // FN_GetPhysicsKeyValue + +#ifdef FN_SetPhysicsKeyValue +void FN_SetPhysicsKeyValue(const edict_t *pClient, const char *key, const char *value); +#endif // FN_SetPhysicsKeyValue + +#ifdef FN_GetPhysicsInfoString +const char *FN_GetPhysicsInfoString( const edict_t *pClient); +#endif // FN_GetPhysicsInfoString + +#ifdef FN_PrecacheEvent +unsigned short FN_PrecacheEvent(int type, const char *psz); +#endif // FN_PrecacheEvent + +#ifdef FN_PlaybackEvent +void FN_PlaybackEvent(int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2); +#endif // FN_PlaybackEvent + +#ifdef FN_SetFatPVS +unsigned char *FN_SetFatPVS(float *org); +#endif // FN_SetFatPVS + +#ifdef FN_SetFatPAS +unsigned char *FN_SetFatPAS(float *org); +#endif // FN_SetFatPAS + +#ifdef FN_CheckVisibility +int FN_CheckVisibility(const edict_t *entity, unsigned char *pset); +#endif // FN_CheckVisibility + +#ifdef FN_DeltaSetField +void FN_DeltaSetField(struct delta_s *pFields, const char *fieldname); +#endif // FN_DeltaSetField + +#ifdef FN_DeltaUnsetField +void FN_DeltaUnsetField(struct delta_s *pFields, const char *fieldname); +#endif // FN_DeltaUnsetField + +#ifdef FN_DeltaAddEncoder +void FN_DeltaAddEncoder(char *name, void (*conditionalencode)( struct delta_s *pFields, const unsigned char *from, const unsigned char *to ) ); +#endif // FN_DeltaAddEncoder + +#ifdef FN_GetCurrentPlayer +int FN_GetCurrentPlayer(void); +#endif // FN_GetCurrentPlayer + +#ifdef FN_CanSkipPlayer +int FN_CanSkipPlayer(const edict_t *player); +#endif // FN_CanSkipPlayer + +#ifdef FN_DeltaFindField +int FN_DeltaFindField(struct delta_s *pFields, const char *fieldname); +#endif // FN_DeltaFindField + +#ifdef FN_DeltaSetFieldByIndex +void FN_DeltaSetFieldByIndex(struct delta_s *pFields, int fieldNumber); +#endif // FN_DeltaSetFieldByIndex + +#ifdef FN_DeltaUnsetFieldByIndex +void FN_DeltaUnsetFieldByIndex(struct delta_s *pFields, int fieldNumber); +#endif // FN_DeltaUnsetFieldByIndex + +#ifdef FN_SetGroupMask +void FN_SetGroupMask(int mask, int op); +#endif // FN_SetGroupMask + +#ifdef FN_engCreateInstancedBaseline +int FN_engCreateInstancedBaseline(int classname, struct entity_state_s *baseline); +#endif // FN_engCreateInstancedBaseline + +#ifdef FN_Cvar_DirectSet +void FN_Cvar_DirectSet(struct cvar_s *var, char *value); +#endif // FN_Cvar_DirectSet + +#ifdef FN_ForceUnmodified +void FN_ForceUnmodified(FORCE_TYPE type, float *mins, float *maxs, const char *filename); +#endif // FN_ForceUnmodified + +#ifdef FN_GetPlayerStats +void FN_GetPlayerStats(const edict_t *pClient, int *ping, int *packet_loss); +#endif // FN_GetPlayerStats + +#ifdef FN_AddServerCommand +void FN_AddServerCommand(char *cmd_name, void (*function) (void)); +#endif // FN_AddServerCommand + +#ifdef FN_Voice_GetClientListening +qboolean FN_Voice_GetClientListening(int iReceiver, int iSender); +#endif // FN_Voice_GetClientListening + +#ifdef FN_Voice_SetClientListening +qboolean FN_Voice_SetClientListening(int iReceiver, int iSender, qboolean bListen); +#endif // FN_Voice_SetClientListening + +#ifdef FN_GetPlayerAuthId +const char *FN_GetPlayerAuthId(edict_t *e); +#endif // FN_GetPlayerAuthId + + + + + + +#ifdef FN_PrecacheModel_Post +int FN_PrecacheModel_Post(char *s); +#endif // FN_PrecacheModel_Post + +#ifdef FN_PrecacheSound_Post +int FN_PrecacheSound_Post(char *s); +#endif // FN_PrecacheSound_Post + +#ifdef FN_SetModel_Post +void FN_SetModel_Post(edict_t *e, const char *m); +#endif // FN_SetModel_Post + +#ifdef FN_ModelIndex_Post +int FN_ModelIndex_Post(const char *m); +#endif // FN_ModelIndex_Post + +#ifdef FN_ModelFrames_Post +int FN_ModelFrames_Post(int modelIndex); +#endif // FN_ModelFrames_Post + +#ifdef FN_SetSize_Post +void FN_SetSize_Post(edict_t *e, const float *rgflMin, const float *rgflMax); +#endif // FN_SetSize_Post + +#ifdef FN_ChangeLevel_Post +void FN_ChangeLevel_Post(char *s1, char *s2); +#endif // FN_ChangeLevel_Post + +#ifdef FN_GetSpawnParms_Post +void FN_GetSpawnParms_Post(edict_t *ent); +#endif // FN_GetSpawnParms_Post + +#ifdef FN_SaveSpawnParms_Post +void FN_SaveSpawnParms_Post(edict_t *ent); +#endif // FN_SaveSpawnParms_Post + +#ifdef FN_VecToYaw_Post +float FN_VecToYaw_Post(const float *rgflVector); +#endif // FN_VecToYaw_Post + +#ifdef FN_VecToAngles_Post +void FN_VecToAngles_Post(const float *rgflVectorIn, float *rgflVectorOut); +#endif // FN_VecToAngles_Post + +#ifdef FN_MoveToOrigin_Post +void FN_MoveToOrigin_Post(edict_t *ent, const float *pflGoal, float dist, int iMoveType); +#endif // FN_MoveToOrigin_Post + +#ifdef FN_ChangeYaw_Post +void FN_ChangeYaw_Post(edict_t *ent); +#endif // FN_ChangeYaw_Post + +#ifdef FN_ChangePitch_Post +void FN_ChangePitch_Post(edict_t *ent); +#endif // FN_ChangePitch_Post + +#ifdef FN_FindEntityByString_Post +edict_t *FN_FindEntityByString_Post(edict_t *pEdictStartSearchAfter, const char *pszField, const char *pszValue); +#endif // FN_FindEntityByString_Post + +#ifdef FN_GetEntityIllum_Post +int FN_GetEntityIllum_Post(edict_t *pEnt); +#endif // FN_GetEntityIllum_Post + +#ifdef FN_FindEntityInSphere_Post +edict_t *FN_FindEntityInSphere_Post(edict_t *pEdictStartSearchAfter, const float *org, float rad); +#endif // FN_FindEntityInSphere_Post + +#ifdef FN_FindClientInPVS_Post +edict_t *FN_FindClientInPVS_Post(edict_t *pEdict); +#endif // FN_FindClientInPVS_Post + +#ifdef FN_EntitiesInPVS_Post +edict_t *FN_EntitiesInPVS_Post(edict_t *pplayer); +#endif // FN_EntitiesInPVS_Post + +#ifdef FN_MakeVectors_Post +void FN_MakeVectors_Post(const float *rgflVector); +#endif // FN_MakeVectors_Post + +#ifdef FN_AngleVectors_Post +void FN_AngleVectors_Post(const float *rgflVector, float *forward, float *right, float *up); +#endif // FN_AngleVectors_Post + +#ifdef FN_CreateEntity_Post +edict_t *FN_CreateEntity_Post(void); +#endif // FN_CreateEntity_Post + +#ifdef FN_RemoveEntity_Post +void FN_RemoveEntity_Post(edict_t *e); +#endif // FN_RemoveEntity_Post + +#ifdef FN_CreateNamedEntity_Post +edict_t *FN_CreateNamedEntity_Post(int className); +#endif // FN_CreateNamedEntity_Post + +#ifdef FN_MakeStatic_Post +void FN_MakeStatic_Post(edict_t *ent); +#endif // FN_MakeStatic_Post + +#ifdef FN_EntIsOnFloor_Post +int FN_EntIsOnFloor_Post(edict_t *ent); +#endif // FN_EntIsOnFloor_Post + +#ifdef FN_DropToFloor_Post +int FN_DropToFloor_Post(edict_t *ent); +#endif // FN_DropToFloor_Post + +#ifdef FN_WalkMove_Post +int FN_WalkMove_Post(edict_t *ent, float yaw, float dist, int iMode); +#endif // FN_WalkMove_Post + +#ifdef FN_SetOrigin_Post +void FN_SetOrigin_Post(edict_t *e, const float *rgflOrigin); +#endif // FN_SetOrigin_Post + +#ifdef FN_EmitSound_Post +void FN_EmitSound_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch); +#endif // FN_EmitSound_Post + +#ifdef FN_EmitAmbientSound_Post +void FN_EmitAmbientSound_Post(edict_t *entity, float *pos, const char *samp, float vol, float attenuation, int fFlags, int pitch); +#endif // FN_EmitAmbientSound_Post + +#ifdef FN_TraceLine_Post +void FN_TraceLine_Post(const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceLine_Post + +#ifdef FN_TraceToss_Post +void FN_TraceToss_Post(edict_t *pent, edict_t *pentToIgnore, TraceResult *ptr); +#endif // FN_TraceToss_Post + +#ifdef FN_TraceMonsterHull_Post +int FN_TraceMonsterHull_Post(edict_t *pEdict, const float *v1, const float *v2, int fNoMonsters, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceMonsterHull_Post + +#ifdef FN_TraceHull_Post +void FN_TraceHull_Post(const float *v1, const float *v2, int fNoMonsters, int hullNumber, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceHull_Post + +#ifdef FN_TraceModel_Post +void FN_TraceModel_Post(const float *v1, const float *v2, int hullNumber, edict_t *pent, TraceResult *ptr); +#endif // FN_TraceModel_Post + +#ifdef FN_TraceTexture_Post +const char *FN_TraceTexture_Post(edict_t *pTextureEntity, const float *v1, const float *v2 ); +#endif // FN_TraceTexture_Post + +#ifdef FN_TraceSphere_Post +void FN_TraceSphere_Post(const float *v1, const float *v2, int fNoMonsters, float radius, edict_t *pentToSkip, TraceResult *ptr); +#endif // FN_TraceSphere_Post + +#ifdef FN_GetAimVector_Post +void FN_GetAimVector_Post(edict_t *ent, float speed, float *rgflReturn); +#endif // FN_GetAimVector_Post + +#ifdef FN_ServerCommand_Post +void FN_ServerCommand_Post(char *str); +#endif // FN_ServerCommand_Post + +#ifdef FN_ServerExecute_Post +void FN_ServerExecute_Post(void); +#endif // FN_ServerExecute_Post + +#ifdef FN_engClientCommand_Post +void FN_engClientCommand_Post(edict_t *pEdict, char *szFmt, ...); +#endif // FN_engClientCommand_Post + +#ifdef FN_ParticleEffect_Post +void FN_ParticleEffect_Post(const float *org, const float *dir, float color, float count); +#endif // FN_ParticleEffect_Post + +#ifdef FN_LightStyle_Post +void FN_LightStyle_Post(int style, char *val); +#endif // FN_LightStyle_Post + +#ifdef FN_DecalIndex_Post +int FN_DecalIndex_Post(const char *name); +#endif // FN_DecalIndex_Post + +#ifdef FN_PointContents_Post +int FN_PointContents_Post(const float *rgflVector); +#endif // FN_PointContents_Post + +#ifdef FN_MessageBegin_Post +void FN_MessageBegin_Post(int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); +#endif // FN_MessageBegin_Post + +#ifdef FN_MessageEnd_Post +void FN_MessageEnd_Post(void); +#endif // FN_MessageEnd_Post + +#ifdef FN_WriteByte_Post +void FN_WriteByte_Post(int iValue); +#endif // FN_WriteByte_Post + +#ifdef FN_WriteChar_Post +void FN_WriteChar_Post(int iValue); +#endif // FN_WriteChar_Post + +#ifdef FN_WriteShort_Post +void FN_WriteShort_Post(int iValue); +#endif // FN_WriteShort_Post + +#ifdef FN_WriteLong_Post +void FN_WriteLong_Post(int iValue); +#endif // FN_WriteLong_Post + +#ifdef FN_WriteAngle_Post +void FN_WriteAngle_Post(float flValue); +#endif // FN_WriteAngle_Post + +#ifdef FN_WriteCoord_Post +void FN_WriteCoord_Post(float flValue); +#endif // FN_WriteCoord_Post + +#ifdef FN_WriteString_Post +void FN_WriteString_Post(const char *sz); +#endif // FN_WriteString_Post + +#ifdef FN_WriteEntity_Post +void FN_WriteEntity_Post(int iValue); +#endif // FN_WriteEntity_Post + +#ifdef FN_CVarRegister_Post +void FN_CVarRegister_Post(cvar_t *pCvar); +#endif // FN_CVarRegister_Post + +#ifdef FN_CVarGetFloat_Post +float FN_CVarGetFloat_Post(const char *szVarName); +#endif // FN_CVarGetFloat_Post + +#ifdef FN_CVarGetString_Post +const char *FN_CVarGetString_Post(const char *szVarName); +#endif // FN_CVarGetString_Post + +#ifdef FN_CVarSetFloat_Post +void FN_CVarSetFloat_Post(const char *szVarName, float flValue); +#endif // FN_CVarSetFloat_Post + +#ifdef FN_CVarSetString_Post +void FN_CVarSetString_Post(const char *szVarName, const char *szValue); +#endif // FN_CVarSetString_Post + +#ifdef FN_AlertMessage_Post +void FN_AlertMessage_Post(ALERT_TYPE atype, char *szFmt, ...); +#endif // FN_AlertMessage_Post + +#ifdef FN_EngineFprintf_Post +void FN_EngineFprintf_Post(FILE *pfile, char *szFmt, ...); +#endif // FN_EngineFprintf_Post + +#ifdef FN_PvAllocEntPrivateData_Post +void *FN_PvAllocEntPrivateData_Post(edict_t *pEdict, long cb); +#endif // FN_PvAllocEntPrivateData_Post + +#ifdef FN_PvEntPrivateData_Post +void *FN_PvEntPrivateData_Post(edict_t *pEdict); +#endif // FN_PvEntPrivateData_Post + +#ifdef FN_FreeEntPrivateData_Post +void FN_FreeEntPrivateData_Post(edict_t *pEdict); +#endif // FN_FreeEntPrivateData_Post + +#ifdef FN_SzFromIndex_Post +const char *FN_SzFromIndex_Post(int iString); +#endif // FN_SzFromIndex_Post + +#ifdef FN_AllocString_Post +int FN_AllocString_Post(const char *szValue); +#endif // FN_AllocString_Post + +#ifdef FN_GetVarsOfEnt_Post +struct entvars_s *FN_GetVarsOfEnt_Post(edict_t *pEdict); +#endif // FN_GetVarsOfEnt_Post + +#ifdef FN_PEntityOfEntOffset_Post +edict_t *FN_PEntityOfEntOffset_Post(int iEntOffset); +#endif // FN_PEntityOfEntOffset_Post + +#ifdef FN_EntOffsetOfPEntity_Post +int FN_EntOffsetOfPEntity_Post(const edict_t *pEdict); +#endif // FN_EntOffsetOfPEntity_Post + +#ifdef FN_IndexOfEdict_Post +int FN_IndexOfEdict_Post(const edict_t *pEdict); +#endif // FN_IndexOfEdict_Post + +#ifdef FN_PEntityOfEntIndex_Post +edict_t *FN_PEntityOfEntIndex_Post(int iEntIndex); +#endif // FN_PEntityOfEntIndex_Post + +#ifdef FN_FindEntityByVars_Post +edict_t *FN_FindEntityByVars_Post(struct entvars_s *pvars); +#endif // FN_FindEntityByVars_Post + +#ifdef FN_GetModelPtr_Post +void *FN_GetModelPtr_Post(edict_t *pEdict); +#endif // FN_GetModelPtr_Post + +#ifdef FN_RegUserMsg_Post +int FN_RegUserMsg_Post(const char *pszName, int iSize); +#endif // FN_RegUserMsg_Post + +#ifdef FN_AnimationAutomove_Post +void FN_AnimationAutomove_Post(const edict_t *pEdict, float flTime); +#endif // FN_AnimationAutomove_Post + +#ifdef FN_GetBonePosition_Post +void FN_GetBonePosition_Post(const edict_t *pEdict, int iBone, float *rgflOrigin, float *rgflAngles); +#endif // FN_GetBonePosition_Post + +#ifdef FN_FunctionFromName_Post +unsigned long FN_FunctionFromName_Post(const char *pName); +#endif // FN_FunctionFromName_Post + +#ifdef FN_NameForFunction_Post +const char *FN_NameForFunction_Post(unsigned long function); +#endif // FN_NameForFunction_Post + +#ifdef FN_ClientPrintf_Post +void FN_ClientPrintf_Post(edict_t *pEdict, PRINT_TYPE ptype, const char *szMsg); +#endif // FN_ClientPrintf_Post + +#ifdef FN_ServerPrint_Post +void FN_ServerPrint_Post(const char *szMsg); +#endif // FN_ServerPrint_Post + +#ifdef FN_Cmd_Args_Post +const char *FN_Cmd_Args_Post(void); +#endif // FN_Cmd_Args_Post + +#ifdef FN_Cmd_Argv_Post +const char *FN_Cmd_Argv_Post(int argc); +#endif // FN_Cmd_Argv_Post + +#ifdef FN_Cmd_Argc_Post +int FN_Cmd_Argc_Post(void); +#endif // FN_Cmd_Argc_Post + +#ifdef FN_GetAttachment_Post +void FN_GetAttachment_Post(const edict_t *pEdict, int iAttachment, float *rgflOrigin, float *rgflAngles ); +#endif // FN_GetAttachment_Post + +#ifdef FN_CRC32_Init_Post +void FN_CRC32_Init_Post(CRC32_t *pulCRC); +#endif // FN_CRC32_Init_Post + +#ifdef FN_CRC32_ProcessBuffer_Post +void FN_CRC32_ProcessBuffer_Post(CRC32_t *pulCRC, void *p, int len); +#endif // FN_CRC32_ProcessBuffer_Post + +#ifdef FN_CRC32_ProcessByte_Post +void FN_CRC32_ProcessByte_Post(CRC32_t *pulCRC, unsigned char ch); +#endif // FN_CRC32_ProcessByte_Post + +#ifdef FN_CRC32_Final_Post +CRC32_t FN_CRC32_Final_Post(CRC32_t pulCRC); +#endif // FN_CRC32_Final_Post + +#ifdef FN_RandomLong_Post +long FN_RandomLong_Post(long lLow, long lHigh); +#endif // FN_RandomLong_Post + +#ifdef FN_RandomFloat_Post +float FN_RandomFloat_Post(float flLow, float flHigh); +#endif // FN_RandomFloat_Post + +#ifdef FN_SetView_Post +void FN_SetView_Post(const edict_t *pClient, const edict_t *pViewent); +#endif // FN_SetView_Post + +#ifdef FN_Time_Post +float FN_Time_Post(void); +#endif // FN_Time_Post + +#ifdef FN_CrosshairAngle_Post +void FN_CrosshairAngle_Post(const edict_t *pClient, float pitch, float yaw); +#endif // FN_CrosshairAngle_Post + +#ifdef FN_LoadFileForMe_Post +byte *FN_LoadFileForMe_Post(char *filename, int *pLength); +#endif // FN_LoadFileForMe_Post + +#ifdef FN_FreeFile_Post +void FN_FreeFile_Post(void *buffer); +#endif // FN_FreeFile_Post + +#ifdef FN_EndSection_Post +void FN_EndSection_Post(const char *pszSectionName); +#endif // FN_EndSection_Post + +#ifdef FN_CompareFileTime_Post +int FN_CompareFileTime_Post(char *filename1, char *filename2, int *iCompare); +#endif // FN_CompareFileTime_Post + +#ifdef FN_GetGameDir_Post +void FN_GetGameDir_Post(char *szGetGameDir); +#endif // FN_GetGameDir_Post + +#ifdef FN_Cvar_RegisterVariable_Post +void FN_Cvar_RegisterVariable_Post(cvar_t *variable); +#endif // FN_Cvar_RegisterVariable_Post + +#ifdef FN_FadeClientVolume_Post +void FN_FadeClientVolume_Post(const edict_t *pEdict, int fadePercent, int fadeOutSeconds, int holdTime, int fadeInSeconds); +#endif // FN_FadeClientVolume_Post + +#ifdef FN_SetClientMaxspeed_Post +void FN_SetClientMaxspeed_Post(const edict_t *pEdict, float fNewMaxspeed); +#endif // FN_SetClientMaxspeed_Post + +#ifdef FN_CreateFakeClient_Post +edict_t *FN_CreateFakeClient_Post(const char *netname); +#endif // FN_CreateFakeClient_Post + +#ifdef FN_RunPlayerMove_Post +void FN_RunPlayerMove_Post(edict_t *fakeclient, const float *viewangles, float forwardmove, float sidemove, float upmove, unsigned short buttons, byte impulse, byte msec); +#endif // FN_RunPlayerMove_Post + +#ifdef FN_NumberOfEntities_Post +int FN_NumberOfEntities_Post(void); +#endif // FN_NumberOfEntities_Post + +#ifdef FN_GetInfoKeyBuffer_Post +char *FN_GetInfoKeyBuffer_Post(edict_t *e); +#endif // FN_GetInfoKeyBuffer_Post + +#ifdef FN_InfoKeyValue_Post +char *FN_InfoKeyValue_Post(char *infobuffer, char *key); +#endif // FN_InfoKeyValue_Post + +#ifdef FN_SetKeyValue_Post +void FN_SetKeyValue_Post(char *infobuffer, char *key, char *value); +#endif // FN_SetKeyValue_Post + +#ifdef FN_SetClientKeyValue_Post +void FN_SetClientKeyValue_Post(int clientIndex, char *infobuffer, char *key, char *value); +#endif // FN_SetClientKeyValue_Post + +#ifdef FN_IsMapValid_Post +int FN_IsMapValid_Post(char *filename); +#endif // FN_IsMapValid_Post + +#ifdef FN_StaticDecal_Post +void FN_StaticDecal_Post(const float *origin, int decalIndex, int entityIndex, int modelIndex); +#endif // FN_StaticDecal_Post + +#ifdef FN_PrecacheGeneric_Post +int FN_PrecacheGeneric_Post(char *s); +#endif // FN_PrecacheGeneric_Post + +#ifdef FN_GetPlayerUserId_Post +int FN_GetPlayerUserId_Post(edict_t *e ); +#endif // FN_GetPlayerUserId_Post + +#ifdef FN_BuildSoundMsg_Post +void FN_BuildSoundMsg_Post(edict_t *entity, int channel, const char *sample, /*int*/float volume, float attenuation, int fFlags, int pitch, int msg_dest, int msg_type, const float *pOrigin, edict_t *ed); +#endif // FN_BuildSoundMsg_Post + +#ifdef FN_IsDedicatedServer_Post +int FN_IsDedicatedServer_Post(void); +#endif // FN_IsDedicatedServer_Post + +#ifdef FN_CVarGetPointer_Post +cvar_t *FN_CVarGetPointer_Post(const char *szVarName); +#endif // FN_CVarGetPointer_Post + +#ifdef FN_GetPlayerWONId_Post +unsigned int FN_GetPlayerWONId_Post(edict_t *e); +#endif // FN_GetPlayerWONId_Post + +#ifdef FN_Info_RemoveKey_Post +void FN_Info_RemoveKey_Post( char *s, const char *key); +#endif // FN_Info_RemoveKey_Post + +#ifdef FN_GetPhysicsKeyValue_Post +const char *FN_GetPhysicsKeyValue_Post(const edict_t *pClient, const char *key); +#endif // FN_GetPhysicsKeyValue_Post + +#ifdef FN_SetPhysicsKeyValue_Post +void FN_SetPhysicsKeyValue_Post(const edict_t *pClient, const char *key, const char *value); +#endif // FN_SetPhysicsKeyValue_Post + +#ifdef FN_GetPhysicsInfoString_Post +const char *FN_GetPhysicsInfoString_Post( const edict_t *pClient); +#endif // FN_GetPhysicsInfoString_Post + +#ifdef FN_PrecacheEvent_Post +unsigned short FN_PrecacheEvent_Post(int type, const char *psz); +#endif // FN_PrecacheEvent_Post + +#ifdef FN_PlaybackEvent_Post +void FN_PlaybackEvent_Post(int flags, const edict_t *pInvoker, unsigned short eventindex, float delay, float *origin, float *angles, float fparam1, float fparam2, int iparam1, int iparam2, int bparam1, int bparam2); +#endif // FN_PlaybackEvent_Post + +#ifdef FN_SetFatPVS_Post +unsigned char *FN_SetFatPVS_Post(float *org); +#endif // FN_SetFatPVS_Post + +#ifdef FN_SetFatPAS_Post +unsigned char *FN_SetFatPAS_Post(float *org); +#endif // FN_SetFatPAS_Post + +#ifdef FN_CheckVisibility_Post +int FN_CheckVisibility_Post(const edict_t *entity, unsigned char *pset); +#endif // FN_CheckVisibility_Post + +#ifdef FN_DeltaSetField_Post +void FN_DeltaSetField_Post(struct delta_s *pFields, const char *fieldname); +#endif // FN_DeltaSetField_Post + +#ifdef FN_DeltaUnsetField_Post +void FN_DeltaUnsetField_Post(struct delta_s *pFields, const char *fieldname); +#endif // FN_DeltaUnsetField_Post + +#ifdef FN_DeltaAddEncoder_Post +void FN_DeltaAddEncoder_Post(char *name, void (*conditionalencode)( struct delta_s *pFields, const unsigned char *from, const unsigned char *to ) ); +#endif // FN_DeltaAddEncoder_Post + +#ifdef FN_GetCurrentPlayer_Post +int FN_GetCurrentPlayer_Post(void); +#endif // FN_GetCurrentPlayer_Post + +#ifdef FN_CanSkipPlayer_Post +int FN_CanSkipPlayer_Post(const edict_t *player); +#endif // FN_CanSkipPlayer_Post + +#ifdef FN_DeltaFindField_Post +int FN_DeltaFindField_Post(struct delta_s *pFields, const char *fieldname); +#endif // FN_DeltaFindField_Post + +#ifdef FN_DeltaSetFieldByIndex_Post +void FN_DeltaSetFieldByIndex_Post(struct delta_s *pFields, int fieldNumber); +#endif // FN_DeltaSetFieldByIndex_Post + +#ifdef FN_DeltaUnsetFieldByIndex_Post +void FN_DeltaUnsetFieldByIndex_Post(struct delta_s *pFields, int fieldNumber); +#endif // FN_DeltaUnsetFieldByIndex_Post + +#ifdef FN_SetGroupMask_Post +void FN_SetGroupMask_Post(int mask, int op); +#endif // FN_SetGroupMask_Post + +#ifdef FN_engCreateInstancedBaseline_Post +int FN_engCreateInstancedBaseline_Post(int classname, struct entity_state_s *baseline); +#endif // FN_engCreateInstancedBaseline_Post + +#ifdef FN_Cvar_DirectSet_Post +void FN_Cvar_DirectSet_Post(struct cvar_s *var, char *value); +#endif // FN_Cvar_DirectSet_Post + +#ifdef FN_ForceUnmodified_Post +void FN_ForceUnmodified_Post(FORCE_TYPE type, float *mins, float *maxs, const char *filename); +#endif // FN_ForceUnmodified_Post + +#ifdef FN_GetPlayerStats_Post +void FN_GetPlayerStats_Post(const edict_t *pClient, int *ping, int *packet_loss); +#endif // FN_GetPlayerStats_Post + +#ifdef FN_AddServerCommand_Post +void FN_AddServerCommand_Post(char *cmd_name, void (*function)(void)); +#endif // FN_AddServerCommand_Post + +#ifdef FN_Voice_GetClientListening_Post +qboolean FN_Voice_GetClientListening_Post(int iReceiver, int iSender); +#endif // FN_Voice_GetClientListening_Post + +#ifdef FN_Voice_SetClientListening_Post +qboolean FN_Voice_SetClientListening_Post(int iReceiver, int iSender, qboolean bListen); +#endif // FN_Voice_SetClientListening_Post + +#ifdef FN_GetPlayerAuthId_Post +const char *FN_GetPlayerAuthId_Post(edict_t *e); +#endif // FN_GetPlayerAuthId + + + + +#ifdef FN_OnFreeEntPrivateData +void FN_OnFreeEntPrivateData(edict_t *pEnt); +#endif // FN_OnFreeEntPrivateData + +#ifdef FN_GameShutdown +void FN_GameShutdown(void); +#endif // FN_GameShutdown + +#ifdef FN_ShouldCollide +int FN_ShouldCollide(edict_t *pentTouched, edict_t *pentOther); +#endif // FN_ShouldCollide + + + + + +#ifdef FN_OnFreeEntPrivateData_Post +void FN_OnFreeEntPrivateData_Post(edict_t *pEnt); +#endif // FN_OnFreeEntPrivateData_Post + +#ifdef FN_GameShutdown_Post +void FN_GameShutdown_Post(void); +#endif // FN_GameShutdown_Post + +#ifdef FN_ShouldCollide_Post +int FN_ShouldCollide_Post(edict_t *pentTouched, edict_t *pentOther); +#endif // FN_ShouldCollide_Post + +#endif // USE_METAMOD + + +#ifdef FN_AMXX_QUERY +void FN_AMXX_QUERY(void); +#endif // FN_AMXX_QUERY + +#ifdef FN_AMXX_ATTACH +void FN_AMXX_ATTACH(void); +#endif // FN_AMXX_ATTACH + +#ifdef FN_AMXX_DETTACH +void FN_AMXX_DETTACH(void); +#endif // FN_AMXX_DETTACH + +#ifdef FN_AMXX_PLUGINSLOADED +void FN_AMXX_PLUGINSLOADED(void); +#endif // FN_AMXX_PLUGINSLOADED + +// ***** Module funcs stuff ***** +enum ForwardExecType +{ + ET_IGNORE = 0, // Ignore return vaue + ET_STOP, // Stop on PLUGIN_HANDLED + ET_STOP2, // Stop on PLUGIN_HANDLED, continue on other values, return biggest return value + ET_CONTINUE, // Continue; return biggest return value +}; + +enum ForwardParam +{ + FP_DONE = -1, // specify this as the last argument + // only tells the function that there are no more arguments + FP_CELL, // normal cell + FP_FLOAT, // float; used as normal cell though + FP_STRING, // string + FP_STRINGEX, // string; will be updated to the last function's value + FP_ARRAY, // array; use the return value of prepareArray. +}; + + +typedef int (*PFN_ADD_NATIVES) (const AMX_NATIVE_INFO * /*list*/); +typedef char * (*PFN_BUILD_PATHNAME) (const char * /*format*/, ...); +typedef cell * (*PFN_GET_AMXADDR) (AMX * /*amx*/, cell /*offset*/); +typedef void (*PFN_PRINT_SRVCONSOLE) (char * /*format*/, ...); +typedef const char * (*PFN_GET_MODNAME) (void); +typedef const char * (*PFN_GET_AMXSCRIPTNAME) (int /*id*/); +typedef AMX * (*PFN_GET_AMXSCRIPT) (int /*id*/); +typedef int (*PFN_FIND_AMXSCRIPT_BYAMX) (const AMX * /*amx*/); +typedef int (*PFN_FIND_AMXSCRIPT_BYNAME) (const char * /*name*/); +typedef int (*PFN_SET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, const char * /* source */, int /* max */); +typedef char * (*PFN_GET_AMXSTRING) (AMX * /*amx*/, cell /*amx_addr*/, int /*bufferId*/, int * /*pLen*/); +typedef int (*PFN_GET_AMXSTRINGLEN) (const cell *ptr); +typedef char * (*PFN_FORMAT_AMXSTRING) (AMX * /*amx*/, cell * /*params*/, int /*startParam*/, int * /*pLen*/); +typedef void (*PFN_COPY_AMXMEMORY) (cell * /*dest*/, const cell * /*src*/, int /*len*/); +typedef void (*PFN_LOG) (const char * /*fmt*/, ...); +typedef int (*PFN_RAISE_AMXERROR) (AMX * /*amx*/, int /*error*/); +typedef int (*PFN_REGISTER_FORWARD) (const char * /*funcname*/, ForwardExecType /*exectype*/, ... /*paramtypes terminated by PF_DONE*/); +typedef int (*PFN_EXECUTE_FORWARD) (int /*id*/, ... /*params*/); +typedef cell (*PFN_PREPARE_CELLARRAY) (cell * /*ptr*/, unsigned int /*size*/); +typedef cell (*PFN_PREPARE_CHARARRAY) (char * /*ptr*/, unsigned int /*size*/); +typedef int (*PFN_IS_PLAYER_VALID) (int /*id*/); +typedef const char * (*PFN_GET_PLAYER_NAME) (int /*id*/); +typedef const char * (*PFN_GET_PLAYER_IP) (int /*id*/); +typedef int (*PFN_IS_PLAYER_INGAME) (int /*id*/); +typedef int (*PFN_IS_PLAYER_BOT) (int /*id*/); +typedef int (*PFN_IS_PLAYER_AUTHORIZED) (int /*id*/); +typedef float (*PFN_GET_PLAYER_TIME) (int /*id*/); +typedef float (*PFN_GET_PLAYER_PLAYTIME) (int /*id*/); +typedef int (*PFN_GET_PLAYER_CURWEAPON) (int /*id*/); +typedef int (*PFN_GET_PLAYER_TEAMID) (int /*id*/); +typedef int (*PFN_GET_PLAYER_DEATHS) (int /*id*/); +typedef int (*PFN_GET_PLAYER_MENU) (int /*id*/); +typedef int (*PFN_GET_PLAYER_KEYS) (int /*id*/); +typedef int (*PFN_IS_PLAYER_ALIVE) (int /*id*/); +typedef int (*PFN_GET_PLAYER_FRAGS) (int /*id*/); +typedef int (*PFN_IS_PLAYER_CONNECTING) (int /*id*/); +typedef int (*PFN_IS_PLAYER_HLTV) (int /*id*/); +typedef int (*PFN_GET_PLAYER_ARMOR) (int /*id*/); +typedef int (*PFN_GET_PLAYER_HEALTH) (int /*id*/); +typedef void * (*PFN_ALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, + const unsigned int /*type*/, const size_t /*size*/); +typedef void * (*PFN_REALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, + const unsigned int /*type*/, const size_t /*size*/, void* /*addr*/ ); +typedef void (*PFN_DEALLOCATOR) (const char* /*filename*/, const unsigned int /*line*/, const char* /*func*/, + const unsigned int /*type*/, const void* /*addr*/ ); +typedef int (*PFN_AMX_EXEC) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, ... /*params*/); +typedef int (*PFN_AMX_EXECV) (AMX* /*amx*/, cell* /*return val*/, int /*index*/, int /*numparams*/, cell[] /*params*/); +typedef int (*PFN_AMX_ALLOT) (AMX* /*amx*/, int /*length*/, cell* /*amx_addr*/, cell** /*phys_addr*/); +typedef int (*PFN_AMX_FINDPUBLIC) (AMX* /*amx*/, char* /*func name*/, int* /*index*/); +typedef int (*PFN_LOAD_AMXSCRIPT) (AMX* /*amx*/, void** /*code*/, const char* /*path*/, char[64] /*error info*/); +typedef int (*PFN_UNLOAD_AMXSCRIPT) (AMX* /*amx*/,void** /*code*/); +typedef cell (*PFN_REAL_TO_CELL) (REAL /*x*/); +typedef REAL (*PFN_CELL_TO_REAL) (cell /*x*/); +typedef int (*PFN_REGISTER_SPFORWARD) (AMX * /*amx*/, int /*func*/, ... /*params*/); +typedef int (*PFN_REGISTER_SPFORWARD_BYNAME) (AMX * /*amx*/, const char * /*funcName*/, ... /*params*/); +typedef void (*PFN_UNREGISTER_SPFORWARD) (int /*id*/); + +extern PFN_ADD_NATIVES g_fn_AddNatives; +extern PFN_BUILD_PATHNAME g_fn_BuildPathname; +extern PFN_GET_AMXADDR g_fn_GetAmxAddr; +extern PFN_PRINT_SRVCONSOLE g_fn_PrintSrvConsole; +extern PFN_GET_MODNAME g_fn_GetModname; +extern PFN_GET_AMXSCRIPTNAME g_fn_GetAmxScriptName; +extern PFN_GET_AMXSCRIPT g_fn_GetAmxScript; +extern PFN_FIND_AMXSCRIPT_BYAMX g_fn_FindAmxScriptByAmx; +extern PFN_FIND_AMXSCRIPT_BYNAME g_fn_FindAmxScriptByName; +extern PFN_SET_AMXSTRING g_fn_SetAmxString; +extern PFN_GET_AMXSTRING g_fn_GetAmxString; +extern PFN_GET_AMXSTRINGLEN g_fn_GetAmxStringLen; +extern PFN_FORMAT_AMXSTRING g_fn_FormatAmxString; +extern PFN_COPY_AMXMEMORY g_fn_CopyAmxMemory; +extern PFN_LOG g_fn_Log; +extern PFN_RAISE_AMXERROR g_fn_RaiseAmxError; +extern PFN_REGISTER_FORWARD g_fn_RegisterForward; +extern PFN_EXECUTE_FORWARD g_fn_ExecuteForward; +extern PFN_PREPARE_CELLARRAY g_fn_PrepareCellArray; +extern PFN_PREPARE_CHARARRAY g_fn_PrepareCharArray; +extern PFN_IS_PLAYER_VALID g_fn_IsPlayerValid; +extern PFN_GET_PLAYER_NAME g_fn_GetPlayerName; +extern PFN_GET_PLAYER_IP g_fn_GetPlayerIP; +extern PFN_IS_PLAYER_INGAME g_fn_IsPlayerIngame; +extern PFN_IS_PLAYER_BOT g_fn_IsPlayerBot; +extern PFN_IS_PLAYER_AUTHORIZED g_fn_IsPlayerAuthorized; +extern PFN_GET_PLAYER_TIME g_fn_GetPlayerTime; +extern PFN_GET_PLAYER_PLAYTIME g_fn_GetPlayerPlayTime; +extern PFN_GET_PLAYER_CURWEAPON g_fn_GetPlayerCurweapon; +extern PFN_GET_PLAYER_TEAMID g_fn_GetPlayerTeamID; +extern PFN_GET_PLAYER_DEATHS g_fn_GetPlayerDeaths; +extern PFN_GET_PLAYER_MENU g_fn_GetPlayerMenu; +extern PFN_GET_PLAYER_KEYS g_fn_GetPlayerKeys; +extern PFN_IS_PLAYER_ALIVE g_fn_IsPlayerAlive; +extern PFN_GET_PLAYER_FRAGS g_fn_GetPlayerFrags; +extern PFN_IS_PLAYER_CONNECTING g_fn_IsPlayerConnecting; +extern PFN_IS_PLAYER_HLTV g_fn_IsPlayerHLTV; +extern PFN_GET_PLAYER_ARMOR g_fn_GetPlayerArmor; +extern PFN_GET_PLAYER_HEALTH g_fn_GetPlayerHealth; +extern PFN_AMX_EXEC g_fn_AmxExec; +extern PFN_AMX_EXECV g_fn_AmxExecv; +extern PFN_AMX_ALLOT g_fn_AmxAllot; +extern PFN_AMX_FINDPUBLIC g_fn_AmxFindPublic; +extern PFN_LOAD_AMXSCRIPT g_fn_LoadAmxScript; +extern PFN_UNLOAD_AMXSCRIPT g_fn_UnloadAmxScript; +extern PFN_REAL_TO_CELL g_fn_RealToCell; +extern PFN_CELL_TO_REAL g_fn_CellToReal; +extern PFN_REGISTER_SPFORWARD g_fn_RegisterSPForward; +extern PFN_REGISTER_SPFORWARD_BYNAME g_fn_RegisterSPForwardByName; +extern PFN_UNREGISTER_SPFORWARD g_fn_UnregisterSPForward; + +#ifdef MAY_NEVER_BE_DEFINED +// Function prototypes for intellisense and similar systems +// They understand #if 0 so we use #ifdef MAY_NEVER_BE_DEFINED +int MF_AddNatives (const AMX_NATIVE_INFO *list) { } +char * MF_BuildPathname (const char * format, ...) { } +cell * MF_GetAmxAddr (AMX * amx, cell offset) { } +void MF_PrintSrvConsole (char * format, ...) { } +const char * MF_GetModname (void) { } +const char * MF_GetScriptName (int id) { } +AMX * MF_GetScriptAmx (int id) { } +int MF_FindScriptByAmx (const AMX * amx) { } +int MF_FindScriptByAmx (const char * name) { } +int MF_SetAmxString (AMX * amx, cell amx_addr, const char * source , int max ) { } +char * MF_GetAmxString (AMX * amx, cell amx_addr, int bufferId, int * pLen) { } +int MF_GetAmxStringLen (const cell *ptr) { } +char * MF_FormatAmxString (AMX * amx, cell * params, int startParam, int * pLen) { } +void MF_CopyAmxMemory (cell * dest, const cell * src, int len) { } +void MF_Log (const char * fmt, ...) { } +int MF_RaiseAmxError (AMX * amx, int error) { } +int MF_RegisterForward (const char * funcname, ForwardExecType exectype, ...) { } +int MF_ExecuteForward (int id, ...) { } +cell MF_PrepareCellArray (cell * ptr, unsigned int size) { } +cell MF_PrepareCharArray (char * ptr, unsigned int size) { } +int MF_IsPlayerValid (int id) { } +const char * MF_GetPlayerName (int id) { } +const char * MF_GetPlayerIP (int id) { } +int MF_IsPlayerIngame (int id) { } +int MF_IsPlayerBot (int id) { } +int MF_IsPlayerAuthorized (int id) { } +float MF_GetPlayerTime (int id) { } +float MF_GetPlayerPlayTime (int id) { } +int MF_GetPlayerCurweapon (int id) { } +int MF_GetPlayerTeamID (int id) { } +int MF_GetPlayerDeaths (int id) { } +int MF_GetPlayerMenu (int id) { } +int MF_GetPlayerKeys (int id) { } +int MF_IsPlayerAlive (int id) { } +int MF_GetPlayerFrags (int id) { } +int MF_IsPlayerConnecting (int id) { } +int MF_IsPlayerHLTV (int id) { } +int MF_GetPlayerArmor (int id) { } +int MF_GetPlayerHealth (int id) { } +REAL amx_ctof (cell x) { } +cell amx_ftoc (float x) { } +int MF_RegisterSPForwardByName (AMX * amx, const char *str, ...) { } +int MF_RegisterSPForward (AMX * amx, int func, ...) { } +void MF_UnregisterSPForward (int id) { } +#endif // MAY_NEVER_BE_DEFINED + +#define MF_AddNatives g_fn_AddNatives +#define MF_BuildPathname g_fn_BuildPathname +#define MF_FormatAmxString g_fn_FormatAmxString +#define MF_GetAmxAddr g_fn_GetAmxAddr +#define MF_PrintSrvConsole g_fn_PrintSrvConsole +#define MF_GetModname g_fn_GetModname +#define MF_GetScriptName g_fn_GetAmxScriptName +#define MF_GetScriptAmx g_fn_GetAmxScript +#define MF_FindScriptByAmx g_fn_FindAmxScriptByAmx +#define MF_FindScriptByName g_fn_FindAmxScriptByName +#define MF_SetAmxString g_fn_SetAmxString +#define MF_GetAmxString g_fn_GetAmxString +#define MF_GetAmxStringLen g_fn_GetAmxStringLen +#define MF_CopyAmxMemory g_fn_CopyAmxMemory +void MF_Log(const char *fmt, ...); +#define MF_RaiseAmxError g_fn_RaiseAmxError +#define MF_RegisterForward g_fn_RegisterForward +#define MF_ExecuteForward g_fn_ExecuteForward +#define MF_PrepareCellArray g_fn_PrepareCellArray +#define MF_PrepareCharArray g_fn_PrepareCharArray +#define MF_IsPlayerValid g_fn_IsPlayerValid +#define MF_GetPlayerName g_fn_GetPlayerName +#define MF_GetPlayerIP g_fn_GetPlayerIP +#define MF_IsPlayerIngame g_fn_IsPlayerIngame +#define MF_IsPlayerBot g_fn_IsPlayerBot +#define MF_IsPlayerAuthorized g_fn_IsPlayerAuthorized +#define MF_GetPlayerTime g_fn_GetPlayerTime +#define MF_GetPlayerPlayTime g_fn_GetPlayerPlayTime +#define MF_GetPlayerCurweapon g_fn_GetPlayerCurweapon +#define MF_GetPlayerTeamID g_fn_GetPlayerTeamID +#define MF_GetPlayerDeaths g_fn_GetPlayerDeaths +#define MF_GetPlayerMenu g_fn_GetPlayerMenu +#define MF_GetPlayerKeys g_fn_GetPlayerKeys +#define MF_IsPlayerAlive g_fn_IsPlayerAlive +#define MF_GetPlayerFrags g_fn_GetPlayerFrags +#define MF_IsPlayerConnecting g_fn_IsPlayerConnecting +#define MF_IsPlayerHLTV g_fn_IsPlayerHLTV +#define MF_GetPlayerArmor g_fn_GetPlayerArmor +#define MF_GetPlayerHealth g_fn_GetPlayerHealth +#define MF_AmxExec g_fn_AmxExec +#define MF_AmxExecv g_fn_AmxExecv +#define MF_AmxFindPublic g_fn_AmxFindPublic +#define MF_AmxAllot g_fn_AmxAllot +#define MF_LoadAmxScript g_fn_LoadAmxScript +#define MF_UnloadAmxScript g_fn_UnloadAmxScript +#define amx_ctof g_fn_CellToReal +#define amx_ftoc g_fn_RealToCell +#define MF_RegisterSPForwardByName g_fn_RegisterSPForwardByName +#define MF_RegisterSPForward g_fn_RegisterSPForward +#define MF_UnregisterSPForward g_fn_UnregisterSPForward + +/*** Memory ***/ +void *operator new(size_t reportedSize); +void *operator new[](size_t reportedSize); +void *operator new(size_t reportedSize, const char *sourceFile, int sourceLine); +void *operator new[](size_t reportedSize, const char *sourceFile, int sourceLine); +void operator delete(void *reportedAddress); +void operator delete[](void *reportedAddress); + +// Allocation types +extern const unsigned int m_alloc_unknown; +extern const unsigned int m_alloc_new; +extern const unsigned int m_alloc_new_array; +extern const unsigned int m_alloc_malloc; +extern const unsigned int m_alloc_calloc; +extern const unsigned int m_alloc_realloc; +extern const unsigned int m_alloc_delete; +extern const unsigned int m_alloc_delete_array; +extern const unsigned int m_alloc_free; + +// To be called before new / delete +void Mem_SetOwner(const char *filename, int line, const char *function); +// Actual allocator +void * Mem_Allocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, + const unsigned int allocationType, const size_t reportedSize); +void * Mem_Reallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, + const unsigned int reallocationType, const size_t reportedSize, void *reportedAddress); +void Mem_Deallocator(const char *sourceFile, const unsigned int sourceLine, const char *sourceFunc, + const unsigned int deallocationType, void *reportedAddress); + +// memory macros +#ifndef __FUNCTION__ +#define __FUNCTION__ "??" +#endif + +// call Mem_SetOwner, followed by the actual new operator +#define new (Mem_SetOwner(__FILE__,__LINE__,__FUNCTION__),false) ? NULL : new +// call Mem_SetOwner, followed by the actual delete operator +#define delete (Mem_SetOwner(__FILE__,__LINE__,__FUNCTION__),false) ? Mem_SetOwner("",0,"") : delete +#define malloc(sz) Mem_Allocator (__FILE__,__LINE__,__FUNCTION__,m_alloc_malloc,sz) +#define calloc(sz) Mem_Allocator (__FILE__,__LINE__,__FUNCTION__,m_alloc_calloc,sz) +#define realloc(ptr,sz) Mem_Reallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_realloc,sz,ptr) +#define free(ptr) Mem_Deallocator(__FILE__,__LINE__,__FUNCTION__,m_alloc_free,ptr) + +#endif // #ifndef __AMXXMODULE_H__ diff --git a/dlls/geoip/geoip.vcproj b/dlls/geoip/geoip.vcproj new file mode 100755 index 00000000..7998ffb5 --- /dev/null +++ b/dlls/geoip/geoip.vcproj @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dlls/geoip/geoip_amxx.cpp b/dlls/geoip/geoip_amxx.cpp new file mode 100755 index 00000000..0c498dbd --- /dev/null +++ b/dlls/geoip/geoip_amxx.cpp @@ -0,0 +1,47 @@ +#include "geoip_amxx.h" + +GeoIP *gi = NULL; + +static cell AMX_NATIVE_CALL amx_geoip_code2(AMX *amx, cell *params) +{ + int len = 0; + char *ip = MF_GetAmxString(amx, params[1], 0, &len); + const char *ccode = GeoIP_country_code_by_addr(gi, ip); + return MF_SetAmxString(amx, params[2], ccode?ccode:"error", 3); +} + +static cell AMX_NATIVE_CALL amx_geoip_code3(AMX *amx, cell *params) +{ + int len = 0; + char *ip = MF_GetAmxString(amx, params[1], 0, &len); + const char *ccode = GeoIP_country_code3_by_addr(gi, ip); + return MF_SetAmxString(amx, params[2], ccode?ccode:"error", 4); +} + +static cell AMX_NATIVE_CALL amx_geoip_country(AMX *amx, cell *params) +{ + int len = 0; + char *ip = MF_GetAmxString(amx, params[1], 0, &len); + const char *ccode = GeoIP_country_name_by_addr(gi, ip); + return MF_SetAmxString(amx, params[2], ccode?ccode:"error", params[3]); +} + +void OnAmxxAttach() +{ + char *path = MF_BuildPathname("addons/amxx/GeoIP.dat"); + gi = GeoIP_open(path, GEOIP_STANDARD); + if (gi == NULL) { + MF_Log("Failed to instantiate GeoIP!"); + return; + } + char *db_info = GeoIP_database_info(gi); + MF_Log("Database info: %s", db_info); + MF_AddNatives(geoip_natives); +} + +AMX_NATIVE_INFO geoip_natives[] = { + {"geoip_code2", amx_geoip_code2}, + {"geoip_code3", amx_geoip_code3}, + {"geoip_country", amx_geoip_country}, + {NULL, NULL}, +}; \ No newline at end of file diff --git a/dlls/geoip/geoip_amxx.h b/dlls/geoip/geoip_amxx.h new file mode 100755 index 00000000..61a2418b --- /dev/null +++ b/dlls/geoip/geoip_amxx.h @@ -0,0 +1,9 @@ +#ifndef _INCLUDE_GEOIPAMXX_H +#define _INCLUDE_GEOIPAMXX_H + +#include +#include "amxxmodule.h" + +extern AMX_NATIVE_INFO geoip_natives[]; + +#endif //_INCLUDE_GEOIPAMXX_H \ No newline at end of file diff --git a/dlls/geoip/moduleconfig.h b/dlls/geoip/moduleconfig.h new file mode 100755 index 00000000..4667b58c --- /dev/null +++ b/dlls/geoip/moduleconfig.h @@ -0,0 +1,462 @@ +// Configuration + +#ifndef __MODULECONFIG_H__ +#define __MODULECONFIG_H__ + +// Module info +#define MODULE_NAME "GeoIP" +#define MODULE_VERSION "1.1" +#define MODULE_AUTHOR "BAILOPAN" +#define MODULE_URL "http://www.bailopan.com/" +#define MODULE_LOGTAG "GEOIP" +// If you want the module not to be reloaded on mapchange, remove / comment out the next line +#define MODULE_RELOAD_ON_MAPCHANGE + +#ifdef __DATE__ +#define MODULE_DATE __DATE__ +#else // __DATE__ +#define MODULE_DATE "Unknown" +#endif // __DATE__ + +// metamod plugin? +// #define USE_METAMOD + +// - AMXX Init functions +// Also consider using FN_META_* +// AMXX query +//#define FN_AMXX_QUERY OnAmxxQuery +// AMXX attach +// Do native functions init here (MF_AddNatives) +#define FN_AMXX_ATTACH OnAmxxAttach +// AMXX dettach +//#define FN_AMXX_DETTACH OnAmxxDettach +// All plugins loaded +// Do forward functions init here (MF_RegisterForward) +// #define FN_AMXX_PLUGINSLOADED OnPluginsLoaded + +/**** METAMOD ****/ +// If your module doesn't use metamod, you may close the file now :) +#ifdef USE_METAMOD +// ---- +// Hook Functions +// Uncomment these to be called +// You can also change the function name + +// - Metamod init functions +// Also consider using FN_AMXX_* +// Meta query +//#define FN_META_QUERY OnMetaQuery +// Meta attach +//#define FN_META_ATTACH OnMetaAttach +// Meta dettach +//#define FN_META_DETTACH OnMetaDettach + +// (wd) are Will Day's notes +// - GetEntityAPI2 functions +// #define FN_GameDLLInit GameDLLInit /* pfnGameInit() */ +// #define FN_DispatchSpawn DispatchSpawn /* pfnSpawn() */ +// #define FN_DispatchThink DispatchThink /* pfnThink() */ +// #define FN_DispatchUse DispatchUse /* pfnUse() */ +// #define FN_DispatchTouch DispatchTouch /* pfnTouch() */ +// #define FN_DispatchBlocked DispatchBlocked /* pfnBlocked() */ +// #define FN_DispatchKeyValue DispatchKeyValue /* pfnKeyValue() */ +// #define FN_DispatchSave DispatchSave /* pfnSave() */ +// #define FN_DispatchRestore DispatchRestore /* pfnRestore() */ +// #define FN_DispatchObjectCollsionBox DispatchObjectCollsionBox /* pfnSetAbsBox() */ +// #define FN_SaveWriteFields SaveWriteFields /* pfnSaveWriteFields() */ +// #define FN_SaveReadFields SaveReadFields /* pfnSaveReadFields() */ +// #define FN_SaveGlobalState SaveGlobalState /* pfnSaveGlobalState() */ +// #define FN_RestoreGlobalState RestoreGlobalState /* pfnRestoreGlobalState() */ +// #define FN_ResetGlobalState ResetGlobalState /* pfnResetGlobalState() */ +// #define FN_ClientConnect ClientConnect /* pfnClientConnect() (wd) Client has connected */ +// #define FN_ClientDisconnect ClientDisconnect /* pfnClientDisconnect() (wd) Player has left the game */ +// #define FN_ClientKill ClientKill /* pfnClientKill() (wd) Player has typed "kill" */ +// #define FN_ClientPutInServer ClientPutInServer /* pfnClientPutInServer() (wd) Client is entering the game */ +// #define FN_ClientCommand ClientCommand /* pfnClientCommand() (wd) Player has sent a command (typed or from a bind) */ +// #define FN_ClientUserInfoChanged ClientUserInfoChanged /* pfnClientUserInfoChanged() (wd) Client has updated their setinfo structure */ +// #define FN_ServerActivate ServerActivate /* pfnServerActivate() (wd) Server is starting a new map */ +// #define FN_ServerDeactivate ServerDeactivate /* pfnServerDeactivate() (wd) Server is leaving the map (shutdown or changelevel); SDK2 */ +// #define FN_PlayerPreThink PlayerPreThink /* pfnPlayerPreThink() */ +// #define FN_PlayerPostThink PlayerPostThink /* pfnPlayerPostThink() */ +// #define FN_StartFrame StartFrame /* pfnStartFrame() */ +// #define FN_ParmsNewLevel ParmsNewLevel /* pfnParmsNewLevel() */ +// #define FN_ParmsChangeLevel ParmsChangeLevel /* pfnParmsChangeLevel() */ +// #define FN_GetGameDescription GetGameDescription /* pfnGetGameDescription() Returns string describing current .dll. E.g. "TeamFotrress 2" "Half-Life" */ +// #define FN_PlayerCustomization PlayerCustomization /* pfnPlayerCustomization() Notifies .dll of new customization for player. */ +// #define FN_SpectatorConnect SpectatorConnect /* pfnSpectatorConnect() Called when spectator joins server */ +// #define FN_SpectatorDisconnect SpectatorDisconnect /* pfnSpectatorDisconnect() Called when spectator leaves the server */ +// #define FN_SpectatorThink SpectatorThink /* pfnSpectatorThink() Called when spectator sends a command packet (usercmd_t) */ +// #define FN_Sys_Error Sys_Error /* pfnSys_Error() Notify game .dll that engine is going to shut down. Allows mod authors to set a breakpoint. SDK2 */ +// #define FN_PM_Move PM_Move /* pfnPM_Move() (wd) SDK2 */ +// #define FN_PM_Init PM_Init /* pfnPM_Init() Server version of player movement initialization; (wd) SDK2 */ +// #define FN_PM_FindTextureType PM_FindTextureType /* pfnPM_FindTextureType() (wd) SDK2 */ +// #define FN_SetupVisibility SetupVisibility /* pfnSetupVisibility() Set up PVS and PAS for networking for this client; (wd) SDK2 */ +// #define FN_UpdateClientData UpdateClientData /* pfnUpdateClientData() Set up data sent only to specific client; (wd) SDK2 */ +// #define FN_AddToFullPack AddToFullPack /* pfnAddToFullPack() (wd) SDK2 */ +// #define FN_CreateBaseline CreateBaseline /* pfnCreateBaseline() Tweak entity baseline for network encoding allows setup of player baselines too.; (wd) SDK2 */ +// #define FN_RegisterEncoders RegisterEncoders /* pfnRegisterEncoders() Callbacks for network encoding; (wd) SDK2 */ +// #define FN_GetWeaponData GetWeaponData /* pfnGetWeaponData() (wd) SDK2 */ +// #define FN_CmdStart CmdStart /* pfnCmdStart() (wd) SDK2 */ +// #define FN_CmdEnd CmdEnd /* pfnCmdEnd() (wd) SDK2 */ +// #define FN_ConnectionlessPacket ConnectionlessPacket /* pfnConnectionlessPacket() (wd) SDK2 */ +// #define FN_GetHullBounds GetHullBounds /* pfnGetHullBounds() (wd) SDK2 */ +// #define FN_CreateInstancedBaselines CreateInstancedBaselines /* pfnCreateInstancedBaselines() (wd) SDK2 */ +// #define FN_InconsistentFile InconsistentFile /* pfnInconsistentFile() (wd) SDK2 */ +// #define FN_AllowLagCompensation AllowLagCompensation /* pfnAllowLagCompensation() (wd) SDK2 */ + +// - GetEntityAPI2_Post functions +// #define FN_GameDLLInit_Post GameDLLInit_Post +// #define FN_DispatchSpawn_Post DispatchSpawn_Post +// #define FN_DispatchThink_Post DispatchThink_Post +// #define FN_DispatchUse_Post DispatchUse_Post +// #define FN_DispatchTouch_Post DispatchTouch_Post +// #define FN_DispatchBlocked_Post DispatchBlocked_Post +// #define FN_DispatchKeyValue_Post DispatchKeyValue_Post +// #define FN_DispatchSave_Post DispatchSave_Post +// #define FN_DispatchRestore_Post DispatchRestore_Post +// #define FN_DispatchObjectCollsionBox_Post DispatchObjectCollsionBox_Post +// #define FN_SaveWriteFields_Post SaveWriteFields_Post +// #define FN_SaveReadFields_Post SaveReadFields_Post +// #define FN_SaveGlobalState_Post SaveGlobalState_Post +// #define FN_RestoreGlobalState_Post RestoreGlobalState_Post +// #define FN_ResetGlobalState_Post ResetGlobalState_Post +// #define FN_ClientConnect_Post ClientConnect_Post +// #define FN_ClientDisconnect_Post ClientDisconnect_Post +// #define FN_ClientKill_Post ClientKill_Post +// #define FN_ClientPutInServer_Post ClientPutInServer_Post +// #define FN_ClientCommand_Post ClientCommand_Post +// #define FN_ClientUserInfoChanged_Post ClientUserInfoChanged_Post +// #define FN_ServerActivate_Post ServerActivate_Post +// #define FN_ServerDeactivate_Post ServerDeactivate_Post +// #define FN_PlayerPreThink_Post PlayerPreThink_Post +// #define FN_PlayerPostThink_Post PlayerPostThink_Post +// #define FN_StartFrame_Post StartFrame_Post +// #define FN_ParmsNewLevel_Post ParmsNewLevel_Post +// #define FN_ParmsChangeLevel_Post ParmsChangeLevel_Post +// #define FN_GetGameDescription_Post GetGameDescription_Post +// #define FN_PlayerCustomization_Post PlayerCustomization_Post +// #define FN_SpectatorConnect_Post SpectatorConnect_Post +// #define FN_SpectatorDisconnect_Post SpectatorDisconnect_Post +// #define FN_SpectatorThink_Post SpectatorThink_Post +// #define FN_Sys_Error_Post Sys_Error_Post +// #define FN_PM_Move_Post PM_Move_Post +// #define FN_PM_Init_Post PM_Init_Post +// #define FN_PM_FindTextureType_Post PM_FindTextureType_Post +// #define FN_SetupVisibility_Post SetupVisibility_Post +// #define FN_UpdateClientData_Post UpdateClientData_Post +// #define FN_AddToFullPack_Post AddToFullPack_Post +// #define FN_CreateBaseline_Post CreateBaseline_Post +// #define FN_RegisterEncoders_Post RegisterEncoders_Post +// #define FN_GetWeaponData_Post GetWeaponData_Post +// #define FN_CmdStart_Post CmdStart_Post +// #define FN_CmdEnd_Post CmdEnd_Post +// #define FN_ConnectionlessPacket_Post ConnectionlessPacket_Post +// #define FN_GetHullBounds_Post GetHullBounds_Post +// #define FN_CreateInstancedBaselines_Post CreateInstancedBaselines_Post +// #define FN_InconsistentFile_Post InconsistentFile_Post +// #define FN_AllowLagCompensation_Post AllowLagCompensation_Post + +// - GetEngineAPI functions +// #define FN_PrecacheModel PrecacheModel +// #define FN_PrecacheSound PrecacheSound +// #define FN_SetModel SetModel +// #define FN_ModelIndex ModelIndex +// #define FN_ModelFrames ModelFrames +// #define FN_SetSize SetSize +// #define FN_ChangeLevel ChangeLevel +// #define FN_GetSpawnParms GetSpawnParms +// #define FN_SaveSpawnParms SaveSpawnParms +// #define FN_VecToYaw VecToYaw +// #define FN_VecToAngles VecToAngles +// #define FN_MoveToOrigin MoveToOrigin +// #define FN_ChangeYaw ChangeYaw +// #define FN_ChangePitch ChangePitch +// #define FN_FindEntityByString FindEntityByString +// #define FN_GetEntityIllum GetEntityIllum +// #define FN_FindEntityInSphere FindEntityInSphere +// #define FN_FindClientInPVS FindClientInPVS +// #define FN_EntitiesInPVS EntitiesInPVS +// #define FN_MakeVectors MakeVectors +// #define FN_AngleVectors AngleVectors +// #define FN_CreateEntity CreateEntity +// #define FN_RemoveEntity RemoveEntity +// #define FN_CreateNamedEntity CreateNamedEntity +// #define FN_MakeStatic MakeStatic +// #define FN_EntIsOnFloor EntIsOnFloor +// #define FN_DropToFloor DropToFloor +// #define FN_WalkMove WalkMove +// #define FN_SetOrigin SetOrigin +// #define FN_EmitSound EmitSound +// #define FN_EmitAmbientSound EmitAmbientSound +// #define FN_TraceLine TraceLine +// #define FN_TraceToss TraceToss +// #define FN_TraceMonsterHull TraceMonsterHull +// #define FN_TraceHull TraceHull +// #define FN_TraceModel TraceModel +// #define FN_TraceTexture TraceTexture +// #define FN_TraceSphere TraceSphere +// #define FN_GetAimVector GetAimVector +// #define FN_ServerCommand ServerCommand +// #define FN_ServerExecute ServerExecute +// #define FN_engClientCommand engClientCommand +// #define FN_ParticleEffect ParticleEffect +// #define FN_LightStyle LightStyle +// #define FN_DecalIndex DecalIndex +// #define FN_PointContents PointContents +// #define FN_MessageBegin MessageBegin +// #define FN_MessageEnd MessageEnd +// #define FN_WriteByte WriteByte +// #define FN_WriteChar WriteChar +// #define FN_WriteShort WriteShort +// #define FN_WriteLong WriteLong +// #define FN_WriteAngle WriteAngle +// #define FN_WriteCoord WriteCoord +// #define FN_WriteString WriteString +// #define FN_WriteEntity WriteEntity +// #define FN_CVarRegister CVarRegister +// #define FN_CVarGetFloat CVarGetFloat +// #define FN_CVarGetString CVarGetString +// #define FN_CVarSetFloat CVarSetFloat +// #define FN_CVarSetString CVarSetString +// #define FN_AlertMessage AlertMessage +// #define FN_EngineFprintf EngineFprintf +// #define FN_PvAllocEntPrivateData PvAllocEntPrivateData +// #define FN_PvEntPrivateData PvEntPrivateData +// #define FN_FreeEntPrivateData FreeEntPrivateData +// #define FN_SzFromIndex SzFromIndex +// #define FN_AllocString AllocString +// #define FN_GetVarsOfEnt GetVarsOfEnt +// #define FN_PEntityOfEntOffset PEntityOfEntOffset +// #define FN_EntOffsetOfPEntity EntOffsetOfPEntity +// #define FN_IndexOfEdict IndexOfEdict +// #define FN_PEntityOfEntIndex PEntityOfEntIndex +// #define FN_FindEntityByVars FindEntityByVars +// #define FN_GetModelPtr GetModelPtr +// #define FN_RegUserMsg RegUserMsg +// #define FN_AnimationAutomove AnimationAutomove +// #define FN_GetBonePosition GetBonePosition +// #define FN_FunctionFromName FunctionFromName +// #define FN_NameForFunction NameForFunction +// #define FN_ClientPrintf ClientPrintf +// #define FN_ServerPrint ServerPrint +// #define FN_Cmd_Args Cmd_Args +// #define FN_Cmd_Argv Cmd_Argv +// #define FN_Cmd_Argc Cmd_Argc +// #define FN_GetAttachment GetAttachment +// #define FN_CRC32_Init CRC32_Init +// #define FN_CRC32_ProcessBuffer CRC32_ProcessBuffer +// #define FN_CRC32_ProcessByte CRC32_ProcessByte +// #define FN_CRC32_Final CRC32_Final +// #define FN_RandomLong RandomLong +// #define FN_RandomFloat RandomFloat +// #define FN_SetView SetView +// #define FN_Time Time +// #define FN_CrosshairAngle CrosshairAngle +// #define FN_LoadFileForMe LoadFileForMe +// #define FN_FreeFile FreeFile +// #define FN_EndSection EndSection +// #define FN_CompareFileTime CompareFileTime +// #define FN_GetGameDir GetGameDir +// #define FN_Cvar_RegisterVariable Cvar_RegisterVariable +// #define FN_FadeClientVolume FadeClientVolume +// #define FN_SetClientMaxspeed SetClientMaxspeed +// #define FN_CreateFakeClient CreateFakeClient +// #define FN_RunPlayerMove RunPlayerMove +// #define FN_NumberOfEntities NumberOfEntities +// #define FN_GetInfoKeyBuffer GetInfoKeyBuffer +// #define FN_InfoKeyValue InfoKeyValue +// #define FN_SetKeyValue SetKeyValue +// #define FN_SetClientKeyValue SetClientKeyValue +// #define FN_IsMapValid IsMapValid +// #define FN_StaticDecal StaticDecal +// #define FN_PrecacheGeneric PrecacheGeneric +// #define FN_GetPlayerUserId GetPlayerUserId +// #define FN_BuildSoundMsg BuildSoundMsg +// #define FN_IsDedicatedServer IsDedicatedServer +// #define FN_CVarGetPointer CVarGetPointer +// #define FN_GetPlayerWONId GetPlayerWONId +// #define FN_Info_RemoveKey Info_RemoveKey +// #define FN_GetPhysicsKeyValue GetPhysicsKeyValue +// #define FN_SetPhysicsKeyValue SetPhysicsKeyValue +// #define FN_GetPhysicsInfoString GetPhysicsInfoString +// #define FN_PrecacheEvent PrecacheEvent +// #define FN_PlaybackEvent PlaybackEvent +// #define FN_SetFatPVS SetFatPVS +// #define FN_SetFatPAS SetFatPAS +// #define FN_CheckVisibility CheckVisibility +// #define FN_DeltaSetField DeltaSetField +// #define FN_DeltaUnsetField DeltaUnsetField +// #define FN_DeltaAddEncoder DeltaAddEncoder +// #define FN_GetCurrentPlayer GetCurrentPlayer +// #define FN_CanSkipPlayer CanSkipPlayer +// #define FN_DeltaFindField DeltaFindField +// #define FN_DeltaSetFieldByIndex DeltaSetFieldByIndex +// #define FN_DeltaUnsetFieldByIndex DeltaUnsetFieldByIndex +// #define FN_SetGroupMask SetGroupMask +// #define FN_engCreateInstancedBaseline engCreateInstancedBaseline +// #define FN_Cvar_DirectSet Cvar_DirectSet +// #define FN_ForceUnmodified ForceUnmodified +// #define FN_GetPlayerStats GetPlayerStats +// #define FN_AddServerCommand AddServerCommand +// #define FN_Voice_GetClientListening Voice_GetClientListening +// #define FN_Voice_SetClientListening Voice_SetClientListening +// #define FN_GetPlayerAuthId GetPlayerAuthId + +// - GetEngineAPI_Post functions +// #define FN_PrecacheModel_Post PrecacheModel_Post +// #define FN_PrecacheSound_Post PrecacheSound_Post +// #define FN_SetModel_Post SetModel_Post +// #define FN_ModelIndex_Post ModelIndex_Post +// #define FN_ModelFrames_Post ModelFrames_Post +// #define FN_SetSize_Post SetSize_Post +// #define FN_ChangeLevel_Post ChangeLevel_Post +// #define FN_GetSpawnParms_Post GetSpawnParms_Post +// #define FN_SaveSpawnParms_Post SaveSpawnParms_Post +// #define FN_VecToYaw_Post VecToYaw_Post +// #define FN_VecToAngles_Post VecToAngles_Post +// #define FN_MoveToOrigin_Post MoveToOrigin_Post +// #define FN_ChangeYaw_Post ChangeYaw_Post +// #define FN_ChangePitch_Post ChangePitch_Post +// #define FN_FindEntityByString_Post FindEntityByString_Post +// #define FN_GetEntityIllum_Post GetEntityIllum_Post +// #define FN_FindEntityInSphere_Post FindEntityInSphere_Post +// #define FN_FindClientInPVS_Post FindClientInPVS_Post +// #define FN_EntitiesInPVS_Post EntitiesInPVS_Post +// #define FN_MakeVectors_Post MakeVectors_Post +// #define FN_AngleVectors_Post AngleVectors_Post +// #define FN_CreateEntity_Post CreateEntity_Post +// #define FN_RemoveEntity_Post RemoveEntity_Post +// #define FN_CreateNamedEntity_Post CreateNamedEntity_Post +// #define FN_MakeStatic_Post MakeStatic_Post +// #define FN_EntIsOnFloor_Post EntIsOnFloor_Post +// #define FN_DropToFloor_Post DropToFloor_Post +// #define FN_WalkMove_Post WalkMove_Post +// #define FN_SetOrigin_Post SetOrigin_Post +// #define FN_EmitSound_Post EmitSound_Post +// #define FN_EmitAmbientSound_Post EmitAmbientSound_Post +// #define FN_TraceLine_Post TraceLine_Post +// #define FN_TraceToss_Post TraceToss_Post +// #define FN_TraceMonsterHull_Post TraceMonsterHull_Post +// #define FN_TraceHull_Post TraceHull_Post +// #define FN_TraceModel_Post TraceModel_Post +// #define FN_TraceTexture_Post TraceTexture_Post +// #define FN_TraceSphere_Post TraceSphere_Post +// #define FN_GetAimVector_Post GetAimVector_Post +// #define FN_ServerCommand_Post ServerCommand_Post +// #define FN_ServerExecute_Post ServerExecute_Post +// #define FN_engClientCommand_Post engClientCommand_Post +// #define FN_ParticleEffect_Post ParticleEffect_Post +// #define FN_LightStyle_Post LightStyle_Post +// #define FN_DecalIndex_Post DecalIndex_Post +// #define FN_PointContents_Post PointContents_Post +// #define FN_MessageBegin_Post MessageBegin_Post +// #define FN_MessageEnd_Post MessageEnd_Post +// #define FN_WriteByte_Post WriteByte_Post +// #define FN_WriteChar_Post WriteChar_Post +// #define FN_WriteShort_Post WriteShort_Post +// #define FN_WriteLong_Post WriteLong_Post +// #define FN_WriteAngle_Post WriteAngle_Post +// #define FN_WriteCoord_Post WriteCoord_Post +// #define FN_WriteString_Post WriteString_Post +// #define FN_WriteEntity_Post WriteEntity_Post +// #define FN_CVarRegister_Post CVarRegister_Post +// #define FN_CVarGetFloat_Post CVarGetFloat_Post +// #define FN_CVarGetString_Post CVarGetString_Post +// #define FN_CVarSetFloat_Post CVarSetFloat_Post +// #define FN_CVarSetString_Post CVarSetString_Post +// #define FN_AlertMessage_Post AlertMessage_Post +// #define FN_EngineFprintf_Post EngineFprintf_Post +// #define FN_PvAllocEntPrivateData_Post PvAllocEntPrivateData_Post +// #define FN_PvEntPrivateData_Post PvEntPrivateData_Post +// #define FN_FreeEntPrivateData_Post FreeEntPrivateData_Post +// #define FN_SzFromIndex_Post SzFromIndex_Post +// #define FN_AllocString_Post AllocString_Post +// #define FN_GetVarsOfEnt_Post GetVarsOfEnt_Post +// #define FN_PEntityOfEntOffset_Post PEntityOfEntOffset_Post +// #define FN_EntOffsetOfPEntity_Post EntOffsetOfPEntity_Post +// #define FN_IndexOfEdict_Post IndexOfEdict_Post +// #define FN_PEntityOfEntIndex_Post PEntityOfEntIndex_Post +// #define FN_FindEntityByVars_Post FindEntityByVars_Post +// #define FN_GetModelPtr_Post GetModelPtr_Post +// #define FN_RegUserMsg_Post RegUserMsg_Post +// #define FN_AnimationAutomove_Post AnimationAutomove_Post +// #define FN_GetBonePosition_Post GetBonePosition_Post +// #define FN_FunctionFromName_Post FunctionFromName_Post +// #define FN_NameForFunction_Post NameForFunction_Post +// #define FN_ClientPrintf_Post ClientPrintf_Post +// #define FN_ServerPrint_Post ServerPrint_Post +// #define FN_Cmd_Args_Post Cmd_Args_Post +// #define FN_Cmd_Argv_Post Cmd_Argv_Post +// #define FN_Cmd_Argc_Post Cmd_Argc_Post +// #define FN_GetAttachment_Post GetAttachment_Post +// #define FN_CRC32_Init_Post CRC32_Init_Post +// #define FN_CRC32_ProcessBuffer_Post CRC32_ProcessBuffer_Post +// #define FN_CRC32_ProcessByte_Post CRC32_ProcessByte_Post +// #define FN_CRC32_Final_Post CRC32_Final_Post +// #define FN_RandomLong_Post RandomLong_Post +// #define FN_RandomFloat_Post RandomFloat_Post +// #define FN_SetView_Post SetView_Post +// #define FN_Time_Post Time_Post +// #define FN_CrosshairAngle_Post CrosshairAngle_Post +// #define FN_LoadFileForMe_Post LoadFileForMe_Post +// #define FN_FreeFile_Post FreeFile_Post +// #define FN_EndSection_Post EndSection_Post +// #define FN_CompareFileTime_Post CompareFileTime_Post +// #define FN_GetGameDir_Post GetGameDir_Post +// #define FN_Cvar_RegisterVariable_Post Cvar_RegisterVariable_Post +// #define FN_FadeClientVolume_Post FadeClientVolume_Post +// #define FN_SetClientMaxspeed_Post SetClientMaxspeed_Post +// #define FN_CreateFakeClient_Post CreateFakeClient_Post +// #define FN_RunPlayerMove_Post RunPlayerMove_Post +// #define FN_NumberOfEntities_Post NumberOfEntities_Post +// #define FN_GetInfoKeyBuffer_Post GetInfoKeyBuffer_Post +// #define FN_InfoKeyValue_Post InfoKeyValue_Post +// #define FN_SetKeyValue_Post SetKeyValue_Post +// #define FN_SetClientKeyValue_Post SetClientKeyValue_Post +// #define FN_IsMapValid_Post IsMapValid_Post +// #define FN_StaticDecal_Post StaticDecal_Post +// #define FN_PrecacheGeneric_Post PrecacheGeneric_Post +// #define FN_GetPlayerUserId_Post GetPlayerUserId_Post +// #define FN_BuildSoundMsg_Post BuildSoundMsg_Post +// #define FN_IsDedicatedServer_Post IsDedicatedServer_Post +// #define FN_CVarGetPointer_Post CVarGetPointer_Post +// #define FN_GetPlayerWONId_Post GetPlayerWONId_Post +// #define FN_Info_RemoveKey_Post Info_RemoveKey_Post +// #define FN_GetPhysicsKeyValue_Post GetPhysicsKeyValue_Post +// #define FN_SetPhysicsKeyValue_Post SetPhysicsKeyValue_Post +// #define FN_GetPhysicsInfoString_Post GetPhysicsInfoString_Post +// #define FN_PrecacheEvent_Post PrecacheEvent_Post +// #define FN_PlaybackEvent_Post PlaybackEvent_Post +// #define FN_SetFatPVS_Post SetFatPVS_Post +// #define FN_SetFatPAS_Post SetFatPAS_Post +// #define FN_CheckVisibility_Post CheckVisibility_Post +// #define FN_DeltaSetField_Post DeltaSetField_Post +// #define FN_DeltaUnsetField_Post DeltaUnsetField_Post +// #define FN_DeltaAddEncoder_Post DeltaAddEncoder_Post +// #define FN_GetCurrentPlayer_Post GetCurrentPlayer_Post +// #define FN_CanSkipPlayer_Post CanSkipPlayer_Post +// #define FN_DeltaFindField_Post DeltaFindField_Post +// #define FN_DeltaSetFieldByIndex_Post DeltaSetFieldByIndex_Post +// #define FN_DeltaUnsetFieldByIndex_Post DeltaUnsetFieldByIndex_Post +// #define FN_SetGroupMask_Post SetGroupMask_Post +// #define FN_engCreateInstancedBaseline_Post engCreateInstancedBaseline_Post +// #define FN_Cvar_DirectSet_Post Cvar_DirectSet_Post +// #define FN_ForceUnmodified_Post ForceUnmodified_Post +// #define FN_GetPlayerStats_Post GetPlayerStats_Post +// #define FN_AddServerCommand_Post AddServerCommand_Post +// #define FN_Voice_GetClientListening_Post Voice_GetClientListening_Post +// #define FN_Voice_SetClientListening_Post Voice_SetClientListening_Post +// #define FN_GetPlayerAuthId_Post GetPlayerAuthId_Post + +// #define FN_OnFreeEntPrivateData OnFreeEntPrivateData +// #define FN_GameShutdown GameShutdown +// #define FN_ShouldCollide ShouldCollide + +// #define FN_OnFreeEntPrivateData_Post OnFreeEntPrivateData_Post +// #define FN_GameShutdown_Post GameShutdown_Post +// #define FN_ShouldCollide_Post ShouldCollide_Post + + +#endif // USE_METAMOD + +#endif // __MODULECONFIG_H__ \ No newline at end of file