From 0e4b64a97e9fe551ed940c5d775548c77a568a73 Mon Sep 17 00:00:00 2001 From: Philipp Claves <pclaves@web.de> Date: Thu, 1 Dec 2011 19:18:25 +0100 Subject: [PATCH] Add ATMegaCard ISO7816 and Portal Applet implementation. --- ATMegaCard/ISO7816-card.c | 345 ++++++++++++++++++++ ATMegaCard/ISO7816-card.h | 51 +++ ATMegaCard/Makefile | 398 ++++++++++++++++++++++++ ATMegaCard/applications/applications.h | 24 ++ ATMegaCard/applications/portal/portal.c | 126 ++++++++ ATMegaCard/applications/portal/portal.h | 7 + ATMegaCard/common.h | 1 + ATMegaCard/keystore.c | 77 +++++ ATMegaCard/keystore.h | 31 ++ ATMegaCard/main.c | 77 +++++ ATMegaCard/rnd | Bin 0 -> 95808 bytes ATMegaCard/rng.c | 45 +++ ATMegaCard/rng.h | 3 + ATMegaCard/software_serial.c | 221 +++++++++++++ ATMegaCard/software_serial.h | 58 ++++ 15 files changed, 1464 insertions(+) create mode 100644 ATMegaCard/ISO7816-card.c create mode 100644 ATMegaCard/ISO7816-card.h create mode 100644 ATMegaCard/Makefile create mode 100644 ATMegaCard/applications/applications.h create mode 100644 ATMegaCard/applications/portal/portal.c create mode 100644 ATMegaCard/applications/portal/portal.h create mode 100644 ATMegaCard/common.h create mode 100644 ATMegaCard/keystore.c create mode 100644 ATMegaCard/keystore.h create mode 100644 ATMegaCard/main.c create mode 100644 ATMegaCard/rnd create mode 100644 ATMegaCard/rng.c create mode 100644 ATMegaCard/rng.h create mode 100644 ATMegaCard/software_serial.c create mode 100644 ATMegaCard/software_serial.h diff --git a/ATMegaCard/ISO7816-card.c b/ATMegaCard/ISO7816-card.c new file mode 100644 index 0000000..d82cf61 --- /dev/null +++ b/ATMegaCard/ISO7816-card.c @@ -0,0 +1,345 @@ +#include "ISO7816-card.h" +#include "common.h" +#include <util/delay.h> +#include <string.h> + +//ATMega Card +//ATR: 3B8F014156522049534F3738313620302E31B9 +//Query: 00C101FE3E00000267016400C101FE3E00000267016400C101FE3E000002670164 + +//Java Card +//ATR: 3BFA1800FF8131FE454A434F5032315632333165 +//Query: FF1118F6FF1118F6F8FF38F8E098E0003BFA1800FF8131FE454A434F5032315632333165 +static apdu_handler_t handler; + +// TS T0 TA1 TB1 TC1 TD1(T=1) +ISO7816_ATR atr = {0x3B, 0x9F, {{0x11, 0x00, 0x00, 0x01}, +// TA2 TB2 TC2 TD2 (unused) + {0x00, 0x00, 0x00, 0x00}, +// TA3 TB3 TC3 TD3 (unused) + {0x00, 0x00, 0x00, 0x00}, +// TA4 TB4 TC4 TD4 (unused) + {0x00, 0x00, 0x00, 0x00}, +// TA5 TB5 TC5 TD5 (unused) + {0x00, 0x00, 0x00, 0x00}}, + //Historical Bytes + {0x41,0x56,0x52,0x20,0x49,0x53,0x4f,0x37,0x38,0x31,0x36,0x20,0x30,0x2e,0x31}, + 0}; //Checksum + +// unsigned char atr[] = {0x3B, 0xFA, 0x18, 0x00, 0xFF , 0x81 , 0x31 , 0xFE , 0x45 , 0x4A , 0x43 , 0x4F , 0x50 , 0x32 , 0x31 , 0x56 , 0x32 , 0x33 , 0x31, 0x65}; + +uint16_t ISO7816_receive_buffer(uint8_t* buffer, uint8_t length); +uint8_t ISO7816_transmit_buffer(uint8_t* buffer, uint8_t length); +uint8_t ISO7816_transmit_t1_header(ISO7816_T1_Header* t1_header); + +void ISO7816_init(void){ + UART_init(); +} +/* +void ISO7816_sendATR(void){ + UART_transmit_init(); + for (uint8_t i = 0; i < sizeof(atr); i++){ + UART_transmit_char(atr[i]); + } + UART_recv_init(); +}*/ + +void ISO7816_sendATR(void){ + uint8_t checksum = 0; + UART_transmit_init(); + UART_transmit_char(atr.initial_char); + checksum ^= atr.t0; UART_transmit_char(atr.t0); + + uint8_t num_hist_bytes = NUM_HIST_BYTES(atr); + uint8_t next_interface_bytes = INTERFACE_BYTE_SET(atr, 0); + uint8_t i = 0; + while (next_interface_bytes){ + if (next_interface_bytes & TA) {checksum ^= atr.interface_bytes[i].ta; UART_transmit_char(atr.interface_bytes[i].ta);} + if (next_interface_bytes & TB) {checksum ^= atr.interface_bytes[i].tb; UART_transmit_char(atr.interface_bytes[i].tb);} + if (next_interface_bytes & TC) {checksum ^= atr.interface_bytes[i].tc; UART_transmit_char(atr.interface_bytes[i].tc);} + if (next_interface_bytes & TD) {checksum ^= atr.interface_bytes[i].td; UART_transmit_char(atr.interface_bytes[i].td);} + i++; + next_interface_bytes = INTERFACE_BYTE_SET(atr, i); + } + for (i = 0; i < num_hist_bytes; i++){ + checksum ^= atr.historical_bytes[i]; + UART_transmit_char(atr.historical_bytes[i]); + } + UART_transmit_char(checksum); + UART_recv_init(); +// UART_read_char(); +} + +uint8_t ISO7816_data_available(void){ + return UART_data_available(); +} + +#define RECV_ERROR(new_status) {status = (status == ISO7816_STATUS_OK) ? new_status : status;} + +uint16_t process_pts(void){ + uint8_t checksum = 0xFF; //PTSS = 0xFF, so we start with that + uint16_t ret; + uint8_t c; + uint8_t pts0; + uint8_t pts1; + uint8_t pts2; + uint8_t pts3; + + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return ISO7816_ERR_TIMEOUT; + pts0 = ret & 0xFF; + checksum ^= pts0; + + if (pts0 & 0x10){ //PTS1 avail + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return ISO7816_ERR_TIMEOUT; + pts1 = ret & 0xFF; + checksum ^= pts1; + } + if (pts0 & 0x20){ //PTS2 avail + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return ISO7816_ERR_TIMEOUT; + pts2 = ret & 0xFF; + checksum ^= pts2; + } + if (pts0 & 0x40){ //PTS3 avail + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return ISO7816_ERR_TIMEOUT; + pts3 = ret & 0xFF; + checksum ^= pts3; + } + + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return ISO7816_ERR_TIMEOUT; + c = ret & 0xFF; + checksum ^= c; + + if (c != checksum) return ISO7816_STATUS_ERR_DATA_INVALID; + _delay_us(300); + + UART_transmit_init(); + UART_transmit_char(0xFF); //PTSS + UART_transmit_char(pts0); + if (pts0 & 0x10) UART_transmit_char(pts1); + if (pts0 & 0x20) UART_transmit_char(pts2); + if (pts0 & 0x40) UART_transmit_char(pts3); + UART_transmit_char(checksum); + + UART_recv_init(); + + return ISO7816_STATUS_OK; +} + +uint8_t ISO7816_read_t1_header(ISO7816_T1_Header* h, uint8_t* checksum){ + uint16_t ret; + uint8_t c = 0; +// static uint8_t first = 0; + +// if (first){ +// while (c == 0x00){ +// //NAD (Node Address, not used) +// ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); +// if (ret == UART_ERR_TIMEOUT) return 0; +// c = ret & 0xFF; +// *checksum ^= c; +// if (c == 0xFF) {process_pts(); return 0;} +// } +// h->node_address = 0; +// +// first = 0; +// } else { + //NAD (Node Address, not used) + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return 0; + c = ret & 0xFF; + *checksum ^= c; + if (c == 0xFF) {process_pts(); return 0;} + h->node_address = c; + + // Protocol control byte + c = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return 0; + c = ret & 0xFF; + *checksum ^= c; + +// first = 1; +// } + + h->protocol_control = c; +// if (!(seq_number && (c & 0x40))) RECV_ERROR(ISO7816_STATUS_ERR_UNKNOWN); //TODO: Better response? Or no response? This is below the APDU level + + //Message Length + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return 0; + c = ret & 0xFF; + *checksum ^= c; + h->message_length = c; + + return 1; +} + +uint16_t ISO7816_read_t1_trailer(uint8_t checksum){ + uint16_t ret; + uint8_t c; + + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return ISO7816_ERR_TIMEOUT; + c = ret & 0xFF; + +// if (c != checksum) return ISO7816_STATUS_ERR_DATA_INVALID; + + return 1; +} + +void ISO7816_process_apdu(ISO7816_T1_Header* t1_header, uint8_t* message_buffer){ + uint16_t status = ISO7816_STATUS_OK; + + ISO7816_APDU_Header *apdu_header = (ISO7816_APDU_Header*)&message_buffer[0]; + uint8_t* payload = &message_buffer[APDU_PAYLOAD_OFFSET]; + uint8_t payload_length = 0; + + uint8_t answer_buffer[255]; + uint8_t answer_length = 0; + uint8_t max_answer_length = 0; + + + //Now about interpreting length values... + if (t1_header->message_length < sizeof(ISO7816_APDU_Header)){ + status = ISO7816_STATUS_ERR_WRONG_LENGTH; + } else if (t1_header->message_length == sizeof(ISO7816_APDU_Header)){ + //no APDU payload, no answer payload. + payload_length = 0; + max_answer_length = 0; + } else if (t1_header->message_length == sizeof(ISO7816_APDU_Header) + 1){ + //no APDU payload, but answer payload allowed. + payload_length = 0; + max_answer_length = APDU_PAYLOAD_LENGTH(message_buffer); + } else { //we have APDU payload + payload_length = APDU_PAYLOAD_LENGTH(message_buffer); + if (t1_header->message_length - sizeof(ISO7816_APDU_Header) - 1 == payload_length){ + //APDU Header + APDU Payload, no answer payload + max_answer_length = 0; + } else if (t1_header->message_length - sizeof(ISO7816_APDU_Header) - 1 == (payload_length + 1)) { + //APDU Header + APDU Payload + answer payload + max_answer_length = message_buffer[t1_header->message_length - 1]; + } else { + status = ISO7816_STATUS_ERR_WRONG_LENGTH; + } + } + + + if (status == ISO7816_STATUS_OK){ + answer_length = max_answer_length; + status = handler(apdu_header, payload, payload_length, answer_buffer, &answer_length); + if (answer_length > max_answer_length){ + status = ISO7816_STATUS_ERR_WRONG_LENGTH; + } + } + if (status != ISO7816_STATUS_OK) answer_length = 0; + + t1_header->node_address = 0; + t1_header->message_length = answer_length+2; + + memcpy(message_buffer, answer_buffer, answer_length); + message_buffer[answer_length] = status >> 8; + message_buffer[answer_length+1] = status & 0xFF; +} + +uint8_t ISO7816_process(void){ + uint16_t ret; + + ISO7816_T1_Header t1_header; + + uint8_t ok; + uint8_t checksum = 0; + + uint8_t buffer[255]; + + ok = ISO7816_read_t1_header(&t1_header, &checksum); //T1 Protocol header + if (!ok) return 0; + + ret = ISO7816_receive_buffer(buffer, t1_header.message_length); //Message Body (e.g. APDU) + if (ret == UART_ERR_TIMEOUT) return 0; + checksum ^= ret & 0xFF; + + ok = ok && ISO7816_read_t1_trailer(checksum); //T1 Protocol trailer (checksum) + + //------------ Process message ------------ + if (ok){ + if (t1_header.protocol_control == ISO7816_PCB_IFS_REQUEST){ + t1_header.protocol_control = ISO7816_PCB_IFS_RESPONSE; + t1_header.node_address = 0; + + } else if (ISO7816_PCM_IS_I_BLOCK(t1_header.protocol_control)){ + ISO7816_process_apdu(&t1_header, buffer); + } else { + ok = 0; + } + } + +// PORTB |= (1 << 7); + + if (!ok) return 0; + + //------------ Send Answer ------------ + _delay_us(200); + PORTB &= ~(1 << 7); + + UART_transmit_init(); + _delay_us(200); + + checksum = 0; + checksum ^= ISO7816_transmit_t1_header(&t1_header); //Header + checksum ^= ISO7816_transmit_buffer(buffer, t1_header.message_length); //Payload + UART_transmit_char(checksum); //Checksum + + UART_recv_init(); //switch back to receive mode. + + return ok; +} + +uint8_t ISO7816_transmit_t1_header(ISO7816_T1_Header* t1_header){ + //Node Address TODO: WTF is that? do i need to care? + uint8_t checksum = t1_header->node_address; + UART_transmit_char(t1_header->node_address); + + //Protocol control byte + checksum ^= t1_header->protocol_control; //seq_number ? 0x40 : 0x00;; + UART_transmit_char(t1_header->protocol_control); + + //Answer length (answer payload + 2 byte Status) +// t1_header.message_length = answer_length + 2; + checksum ^= t1_header->message_length; + UART_transmit_char(t1_header->message_length); + + return checksum; +} + +uint8_t ISO7816_transmit_buffer(uint8_t* buffer, uint8_t length){ + uint8_t checksum = 0; + + for (uint8_t i = 0; i < length; i++){ + UART_transmit_char(buffer[i]); + checksum ^= buffer[i]; + } + return checksum; +} + +uint16_t ISO7816_receive_buffer(uint8_t* buffer, uint8_t length){ + uint8_t c; + uint8_t checksum = 0; + uint16_t ret; + + for (uint8_t i = 0; i < length; i++){ + ret = UART_receive_char_timeout(ISO7816_APDU_READ_TIMEOUT); + if (ret == UART_ERR_TIMEOUT) return ISO7816_ERR_TIMEOUT; + c = ret & 0xFF; + checksum ^= c; + if (buffer) buffer[i] = c; + } + return checksum; +} + +void ISO7816_set_apdu_handler(apdu_handler_t h){ + handler = h; +} \ No newline at end of file diff --git a/ATMegaCard/ISO7816-card.h b/ATMegaCard/ISO7816-card.h new file mode 100644 index 0000000..9728a13 --- /dev/null +++ b/ATMegaCard/ISO7816-card.h @@ -0,0 +1,51 @@ +#pragma once + +#include "software_serial.h" +#include "../common/ISO7816-common.h" + +#define ISO7816_APDU_READ_TIMEOUT 3000 //300ms +#define ISO7816_ERR_TIMEOUT 0xFFFF + +#define ISO7816_STATUS_OK 0x9000 +#define ISO7816_STATUS_ERR_INCORRECT_P1P2 0x6A86 +#define ISO7816_STATUS_ERR_WRONG_P1P2 0x6B00 +#define ISO7816_STATUS_ERR_CORRECT_LENGTH_00 0x6C00 +#define ISO7816_STATUS_ERR_INS_NOT_SUPPORTED 0x6D00 +#define ISO7816_STATUS_ERR_CLA_NOT_SUPPORTED 0x6E00 +#define ISO7816_STATUS_ERR_BYTES_REMAINING_00 0x6100 +#define ISO7816_STATUS_ERR_WRONG_LENGTH 0x6700 +#define ISO7816_STATUS_ERR_SECURITY_STATUS_NOT_SATISFIED 0x6982 +#define ISO7816_STATUS_ERR_FILE_INVALID 0x6983 +#define ISO7816_STATUS_ERR_DATA_INVALID 0x6984 +#define ISO7816_STATUS_ERR_CONDITIONS_NOT_SATISFIED 0x6985 +#define ISO7816_STATUS_ERR_COMMAND_NOT_ALLOWED 0x6986 +#define ISO7816_STATUS_ERR_WRONG_DATA 0x6A80 +#define ISO7816_STATUS_ERR_FUNC_NOT_SUPPORTED 0x6A81 +#define ISO7816_STATUS_ERR_FILE_NOT_FOUND 0x6A82 +#define ISO7816_STATUS_ERR_RECORD_NOT_FOUND 0x6A83 +#define ISO7816_STATUS_ERR_APPLET_SELECT_FAILED 0x6999 +#define ISO7816_STATUS_ERR_UNKNOWN 0x6F00 + +struct ISO7816_T1_Header{ + uint8_t node_address; + uint8_t protocol_control; + uint8_t message_length; +} typedef ISO7816_T1_Header; + +#define ISO7816_PCM_IS_I_BLOCK(pcb) (((pcb) & 0x80) == 0) +#define ISO7816_PCB_IFS_REQUEST 0xC1 +#define ISO7816_PCB_IFS_RESPONSE 0xE1 + +#define MIN(a,b) (((a) < (b)) : (a) : (b)) + +//uint16_t ISO7816_handle_adpu(ISO7816_APDU_Header* header, uint8_t* payload, uint8_t payload_length, uint8_t* answer_buffer, uint8_t* answer_length); + +typedef uint16_t(*apdu_handler_t)(ISO7816_APDU_Header*, uint8_t*, uint8_t, uint8_t*, uint8_t*); + +void ISO7816_init(void); +void ISO7816_sendATR(void); +uint8_t ISO7816_data_available(void); +uint8_t ISO7816_process(void); +void ISO7816_set_apdu_handler(apdu_handler_t handler); + + diff --git a/ATMegaCard/Makefile b/ATMegaCard/Makefile new file mode 100644 index 0000000..cb0f900 --- /dev/null +++ b/ATMegaCard/Makefile @@ -0,0 +1,398 @@ +# WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al. +# Released to the Public Domain +# Please read the make user manual! +# +# Additional material for this makefile was submitted by: +# Tim Henigan +# Peter Fleury +# Reiner Patommel +# Sander Pool +# Frederik Rouleau +# Markus Pfaff +# +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB). +# +# make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio +# 4.07 or greater). +# +# make program = Download the hex file to the device, using avrdude. Please +# customize the avrdude settings below first! +# +# make filename.s = Just compile filename.c into the assembler code only +# +# To rebuild project do "make clean" then "make all". +# + +# MCU name + +MCU = atmega163 + + + +#Fuse settings for ATmega163 +ifeq ($(MCU), atmega163) + FUSE_BITS = -u -U lfuse:w:0x81:m -U hfuse:w:0x01:m + HEX_FILE_NAME = MEGA163 +endif + +# Output format. (can be srec, ihex, binary) +FORMAT = ihex + +# Target file name (without extension). +TARGET = out/atmegacard_$(HEX_FILE_NAME) + +# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization. +# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) +OPT = s + +# If there is more than one source file, append them above, or modify and +# uncomment the following: + +SRC = main.c software_serial.c ISO7816-card.c keystore.c rng.c ../common/sha1/sha1.c applications/portal/portal.c + +# List Assembler source files here. +# Make them always end in a capital .S. Files ending in a lowercase .s +# will not be considered source files but generated files (assembler +# output from the compiler), and will be deleted upon "make clean"! +# Even though the DOS/Win* filesystem matches both .s and .S the same, +# it will preserve the spelling of the filenames, and gcc itself does +# care about how the name is spelled on its command-line. +ASRC = + + +# List any extra directories to look for include files here. +# Each directory must be seperated by a space. +EXTRAINCDIRS = + + +# Optional compiler flags. +# -g: generate debugging information (for GDB, or for COFF conversion) +# -O*: optimization level +# -f...: tuning, see gcc manual and avr-libc documentation +# -Wall...: warning level +# -Wa,...: tell GCC to pass this to the assembler. +# -ahlms: create assembler listing +CFLAGS = -g -O$(OPT) \ +-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \ +-Wall -Wstrict-prototypes \ +-Wa,-adhlns=$(<:.c=.lst) \ +$(patsubst %,-I%,$(EXTRAINCDIRS)) + + +# Set a "language standard" compiler flag. +# Unremark just one line below to set the language standard to use. +# gnu99 = C99 + GNU extensions. See GCC manual for more information. +#CFLAGS += -std=c89 +#CFLAGS += -std=gnu89 +#CFLAGS += -std=c99 +CFLAGS += -std=gnu99 + + + +# Optional assembler flags. +# -Wa,...: tell GCC to pass this to the assembler. +# -ahlms: create listing +# -gstabs: have the assembler create line number information; note that +# for use in COFF files, additional information about filenames +# and function names needs to be present in the assembler source +# files -- see avr-libc docs [FIXME: not yet described there] +ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs + + + +# Optional linker flags. +# -Wl,...: tell GCC to pass this to linker. +# -Map: create map file +# --cref: add cross reference to map file +LDFLAGS = -Wl,-Map=$(TARGET).map,--cref + + + +# Additional libraries + +# Minimalistic printf version +#LDFLAGS += -Wl,-u,vfprintf -lprintf_min + +# Floating point printf version (requires -lm below) +#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt + +# -lm = math library +LDFLAGS += -lm + + + + +# Programming support using avrdude. Settings and variables. + +# Programming hardware: alf avr910 avrisp bascom bsd +# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 +# +# Type: avrdude -c ? +# to get a full listing. +# + +#AVRDUDE_PROGRAMMER = AVR910 +AVRDUDE_PROGRAMMER = usbtiny +# AVRDUDE_PROGRAMMER = USBasp + +AVRDUDE_PORT = usb # programmer connected to USB port +#AVRDUDE_PORT = com1 # programmer connected to serial device +#AVRDUDE_PORT = lpt1 # programmer connected to parallel port + +AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex $(FUSE_BITS) +#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep + +#AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -b 115200 -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS = -B 1 -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) + +# Uncomment the following if you want avrdude's erase cycle counter. +# Note that this counter needs to be initialized first using -Yn, +# see avrdude manual. +#AVRDUDE_ERASE += -y + +# Uncomment the following if you do /not/ wish a verification to be +# performed after programming the device. +#AVRDUDE_FLAGS += -V + +# Increase verbosity level. Please use this when submitting bug +# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> +# to submit bug reports. +#AVRDUDE_FLAGS += -v -v + + + + +# --------------------------------------------------------------------------- + +# Define programs and commands. +SHELL = sh + +CC = avr-gcc + +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size + + +# Programming support using avrdude. +AVRDUDE = avrdude + + +REMOVE = rm -f +COPY = cp + +HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex +ELFSIZE = $(SIZE) -A $(TARGET).elf + + + +# Define Messages +# English +MSG_ERRORS_NONE = Errors: none +MSG_BEGIN = -------- begin -------- +MSG_END = -------- end -------- +MSG_SIZE_BEFORE = Size before: +MSG_SIZE_AFTER = Size after: +MSG_COFF = Converting to AVR COFF: +MSG_EXTENDED_COFF = Converting to AVR Extended COFF: +MSG_FLASH = Creating load file for Flash: +MSG_EEPROM = Creating load file for EEPROM: +MSG_EXTENDED_LISTING = Creating Extended Listing: +MSG_SYMBOL_TABLE = Creating Symbol Table: +MSG_LINKING = Linking: +MSG_COMPILING = Compiling: +MSG_ASSEMBLING = Assembling: +MSG_CLEANING = Cleaning project: + + + + +# Define all object files. +OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) + +# Define all listing files. +LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) + +# Combine all necessary flags and optional flags. +# Add target processor to flags. +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + + +# Default target. +all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \ + $(TARGET).lss $(TARGET).sym sizeafter finished end + + +# Eye candy. +# AVR Studio 3.x does not check make's exit code but relies on +# the following magic strings to be generated by the compile job. +begin: + @echo + @echo $(MSG_BEGIN) + +finished: + @echo $(MSG_ERRORS_NONE) + +end: + @echo $(MSG_END) + @echo + + +# Display size of file. +sizebefore: + @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi + +sizeafter: + @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi + + + +# Display compiler version information. +gccversion : + @$(CC) --version + + + + +# Convert ELF to COFF for use in debugging / simulating in +# AVR Studio or VMLAB. +COFFCONVERT=$(OBJCOPY) --debugging \ + --change-section-address .data-0x800000 \ + --change-section-address .bss-0x800000 \ + --change-section-address .noinit-0x800000 \ + --change-section-address .eeprom-0x810000 + + +coff: $(TARGET).elf + @echo + @echo $(MSG_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-avr $< $(TARGET).cof + + +extcoff: $(TARGET).elf + @echo + @echo $(MSG_EXTENDED_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof + + + + +# Program the device. +program: $(TARGET).hex $(TARGET).eep + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) + + + + +# Create final output files (.hex, .eep) from ELF output file. +%.hex: %.elf + @echo + @echo $(MSG_FLASH) $@ + $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ + +%.eep: %.elf + @echo + @echo $(MSG_EEPROM) $@ + -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ + --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ + +# Create extended listing file from ELF output file. +%.lss: %.elf + @echo + @echo $(MSG_EXTENDED_LISTING) $@ + $(OBJDUMP) -h -S $< > $@ + +# Create a symbol table from ELF output file. +%.sym: %.elf + @echo + @echo $(MSG_SYMBOL_TABLE) $@ + avr-nm -n $< > $@ + + + +# Link: create ELF output file from object files. +.SECONDARY : $(TARGET).elf +.PRECIOUS : $(OBJ) +%.elf: $(OBJ) + @echo + @echo $(MSG_LINKING) $@ + $(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) + + +# Compile: create object files from C source files. +%.o : %.c + @echo + @echo $(MSG_COMPILING) $< + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +# Compile: create assembler files from C source files. +%.s : %.c + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +# Assemble: create object files from assembler source files. +%.o : %.S + @echo + @echo $(MSG_ASSEMBLING) $< + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + + + + + + +# Target: clean project. +clean: begin clean_list finished end + +clean_list : + @echo + @echo $(MSG_CLEANING) +# $(REMOVE) $(TARGET).hex + $(REMOVE) $(TARGET).eep + $(REMOVE) $(TARGET).obj + $(REMOVE) $(TARGET).cof + $(REMOVE) $(TARGET).elf + $(REMOVE) $(TARGET).map + $(REMOVE) $(TARGET).obj + $(REMOVE) $(TARGET).a90 + $(REMOVE) $(TARGET).sym + $(REMOVE) $(TARGET).lnk + $(REMOVE) $(TARGET).lss + $(REMOVE) $(OBJ) + $(REMOVE) $(LST) + $(REMOVE) $(SRC:.c=.s) + $(REMOVE) $(SRC:.c=.d) + + +# Automatically generate C source code dependencies. +# (Code originally taken from the GNU make user manual and modified +# (See README.txt Credits).) +# +# Note that this will work with sh (bash) and sed that is shipped with WinAVR +# (see the SHELL variable defined above). +# This may not work with other shells or other seds. +# +%.d: %.c + set -e; $(CC) -MM $(ALL_CFLAGS) $< \ + | sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > $@; \ + [ -s $@ ] || rm -f $@ + + +# Remove the '-' if you want to see the dependency files generated. +-include $(SRC:.c=.d) + + + +# Listing of phony targets. +.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \ + clean clean_list program + diff --git a/ATMegaCard/applications/applications.h b/ATMegaCard/applications/applications.h new file mode 100644 index 0000000..b0bd87c --- /dev/null +++ b/ATMegaCard/applications/applications.h @@ -0,0 +1,24 @@ +#pragma once + +#include "../ISO7816-card.h" + +typedef uint8_t application_id_t[5]; + +struct application_t{ + application_id_t aid; + void (*init)(void); + apdu_handler_t (*select)(void); + void (*deselect)(void); +} typedef application_t; + + +/* ****** Place application defined here ****** */ + +#include "portal/portal.h" +#define NUM_APPLICATIONS 1 +#define APPLICATIONS {APP_PORTAL} + +void portal_init(void); +apdu_handler_t portal_select(void); +void portal_deselect(void); + diff --git a/ATMegaCard/applications/portal/portal.c b/ATMegaCard/applications/portal/portal.c new file mode 100644 index 0000000..2e1ed6a --- /dev/null +++ b/ATMegaCard/applications/portal/portal.c @@ -0,0 +1,126 @@ +#include <string.h> +#include "portal.h" +#include "../../ISO7816-card.h" +#include "keystore.h" +#include "../../rng.h" + +#define PORTAL_INS_QUERY_VERSION 0x00 +#define PORTAL_INS_INIT_KEY 0x01 +#define PORTAL_INS_AUTH 0x02 +#define PORTAL_INS_UPDATE_KEY 0x03 + +uint16_t portal_handle_adpu(ISO7816_APDU_Header* header, + uint8_t* payload, + uint8_t payload_length, + uint8_t* answer_buffer, + uint8_t* answer_length); + +sha1_ctx_t sha1_state; +uint8_t challenge[sizeof(SALT)]; +uint8_t current_auth_key = 1; + +void portal_init(void){ + rnd_get_bytes(challenge, sizeof(SALT)); +} + +apdu_handler_t portal_select(void){ + return portal_handle_adpu; +} + +uint16_t portal_handle_adpu(ISO7816_APDU_Header* header, + uint8_t* payload, + uint8_t payload_length, + uint8_t* answer_buffer, + uint8_t* answer_length){ + + switch (header->instruction){ + case PORTAL_INS_QUERY_VERSION: + if (*answer_length < 1) return ISO7816_STATUS_ERR_WRONG_LENGTH; + + *answer_length = 1; + answer_buffer[0] = 2; + return ISO7816_STATUS_OK; + break; + + + case PORTAL_INS_INIT_KEY: + if (payload_length != sizeof(KEY)) return ISO7816_STATUS_ERR_WRONG_LENGTH + payload_length+1; + + *answer_length = 0; + if (keystore_is_empty()){ + keystore_init_key(payload); + return ISO7816_STATUS_OK; + } else { + return ISO7816_STATUS_ERR_CONDITIONS_NOT_SATISFIED; + } + break; + + + case PORTAL_INS_AUTH: + if (*answer_length < sizeof(HASH) + sizeof(SALT)) return ISO7816_STATUS_ERR_WRONG_LENGTH; + if (payload_length != sizeof(SALT)) return ISO7816_STATUS_ERR_WRONG_LENGTH; + + current_auth_key = !current_auth_key; + *answer_length = sizeof(HASH) + sizeof(SALT); + sha1_init(&sha1_state); + sha1_nextBlock(&sha1_state, keystore_get_key(current_auth_key)); + sha1_lastBlock(&sha1_state, payload, sizeof(SALT)*8); + sha1_ctx2hash(answer_buffer, &sha1_state); + memcpy(answer_buffer + sizeof(HASH), challenge, sizeof(SALT)); + + return ISO7816_STATUS_OK; + break; + + + case PORTAL_INS_UPDATE_KEY: + if (payload_length != sizeof(KEY)+ sizeof(HASH)) return ISO7816_STATUS_ERR_WRONG_LENGTH; + *answer_length = 0; + + uint8_t* new_key_delta = payload; + uint8_t* challange_response = payload + sizeof(KEY); + + sha1_init(&sha1_state); + sha1_nextBlock(&sha1_state, keystore_get_key(current_auth_key)); + sha1_lastBlock(&sha1_state, challenge, sizeof(SALT)*8); + if (! sha1_ctx_hash_compare(challange_response, &sha1_state)){ + return ISO7816_STATUS_ERR_SECURITY_STATUS_NOT_SATISFIED; +// *answer_length = 20; +// memcpy(answer_buffer, (const void*)challange_response, 20); +// return ISO7816_STATUS_OK; + } + + + keystore_update_key(new_key_delta, current_auth_key); + + return ISO7816_STATUS_OK; + break; + + + case 0xFE: + if (*answer_length < sizeof(KEY)) return ISO7816_STATUS_ERR_WRONG_LENGTH; + + memset(answer_buffer, 0xBB, sizeof(KEY)); + memcpy(answer_buffer, keystore_get_key(0), sizeof(KEY)); + if (*answer_length < 2*sizeof(KEY)){ + *answer_length = sizeof(KEY); + } else { + memcpy(answer_buffer + sizeof(KEY), keystore_get_key(1), sizeof(KEY)); + *answer_length = 2*sizeof(KEY); + } + return ISO7816_STATUS_OK; + break; + + + case 0xFF: + *answer_length = 0; + keystore_clear(); + + return ISO7816_STATUS_OK; + break; + } + return ISO7816_STATUS_ERR_INS_NOT_SUPPORTED; +} + +void portal_deselect(void){ + +} diff --git a/ATMegaCard/applications/portal/portal.h b/ATMegaCard/applications/portal/portal.h new file mode 100644 index 0000000..3a8f574 --- /dev/null +++ b/ATMegaCard/applications/portal/portal.h @@ -0,0 +1,7 @@ +#include "../applications.h" + +void portal_init(void); +apdu_handler_t portal_select(void); +void portal_deselect(void); + +#define APP_PORTAL {"\x23\x23\x00\x42\x42", portal_init, portal_select, portal_deselect} \ No newline at end of file diff --git a/ATMegaCard/common.h b/ATMegaCard/common.h new file mode 100644 index 0000000..3c7f217 --- /dev/null +++ b/ATMegaCard/common.h @@ -0,0 +1 @@ +#define F_CPU 3579500 \ No newline at end of file diff --git a/ATMegaCard/keystore.c b/ATMegaCard/keystore.c new file mode 100644 index 0000000..b23e9e3 --- /dev/null +++ b/ATMegaCard/keystore.c @@ -0,0 +1,77 @@ +/** + * This Keystore manages two keyslots, a "primary" and a "secondary" slot + * The key locations (0 and 1) are at EEPROM location EEP_KEY_OFFSET and EEP_KEY_OFFSET+sizeof(KEY) + * The value at EEP_PRIMARY_KEY_SLOT declares which keyslot (0 or 1) ist the "primary" slot. + * The remaining one is the "secondary" + * + * If the "primary" key is requested, the value at EEP_PRIMARY_KEY_SLOT is looked up and the key is read from the indicated location + * If the "secondary" key is requested the key is read from the alternate location. + * + * When the "primary" key is updated (parameter "update_secondary" = false) the "secondary" keyslot is overwritten + * with the new key and then declared as "primary" by flipping the value stored at EEP_PRIMARY_KEY_SLOT. + * This procedure ensures that there is always one valid key in the store. + * + * When the "secondary" key is updated (parameter "update_secondary" = false) the "primary" keyslot is overwritten + * with the new key. The value at EEP_PRIMARY_KEY_SLOT stays unchanged, declaring the new key as "primary". + * The old secondary key stays at place. + * This procedure ensures that there is always one valid key in the store. + */ + +#include "keystore.h" + + +#define EEP_PRIMARY_KEY_SLOT 127 +#define EEP_KEY_OFFSET 128 + +static uint8_t get_keyslot_index(uint8_t secondary); +static void write_new_primary_key(uint8_t* key, uint8_t slotindex); +void xor(uint8_t* src1dst, uint8_t* src2, uint8_t length); + +uint8_t keybuffer[sizeof(KEY)]; + +uint8_t keystore_is_empty(void){ + return (eeprom_read_byte((const uint8_t*)EEP_PRIMARY_KEY_SLOT) == 0xFF); +} +uint8_t* keystore_get_key(int8_t secondary){ + uint8_t slotindex = get_keyslot_index(secondary); + + eeprom_read_block(keybuffer, (const void*)EEP_KEY_OFFSET + (slotindex*sizeof(KEY)), sizeof(KEY)); + return keybuffer; +} + +void keystore_init_key(uint8_t* key){ + uint8_t slotindex = get_keyslot_index(0); + write_new_primary_key(key, slotindex); +} + +void keystore_update_key(uint8_t* new_key_delta, uint8_t update_secondary){ + uint8_t read_slotindex = get_keyslot_index(update_secondary); //read from the valid slot + + eeprom_read_block(keybuffer, (const void*)EEP_KEY_OFFSET + (read_slotindex*sizeof(KEY)), sizeof(KEY)); + xor(keybuffer, new_key_delta, sizeof(KEY)); + + uint8_t write_slotindex = get_keyslot_index(!update_secondary); //write to the invalid slot + write_new_primary_key(keybuffer, write_slotindex); +} + +void keystore_clear(void){ + for (uint8_t i = 0; i < sizeof(KEY)*2; i++){ + eeprom_write_byte((uint8_t*)(EEP_KEY_OFFSET+i), 0xFF); + } + eeprom_write_byte((uint8_t*)EEP_PRIMARY_KEY_SLOT, 0xFF); +} + +static uint8_t get_keyslot_index(uint8_t secondary){ + uint8_t primary_slot = eeprom_read_byte((const uint8_t*)EEP_PRIMARY_KEY_SLOT); + if (primary_slot > 1) primary_slot = 0; + return secondary ? !primary_slot : primary_slot; +} +static void write_new_primary_key(uint8_t* key, uint8_t slotindex){ + eeprom_write_block(key, (void*)EEP_KEY_OFFSET + (slotindex*sizeof(KEY)) , sizeof(KEY)); + eeprom_write_byte((uint8_t*)EEP_PRIMARY_KEY_SLOT, slotindex); +} +void xor(uint8_t* src1dst, uint8_t* src2, uint8_t length){ + for (uint8_t i = 0; i < length; i++){ + src1dst[i] ^= src2[i]; + } +} diff --git a/ATMegaCard/keystore.h b/ATMegaCard/keystore.h new file mode 100644 index 0000000..1b52a7e --- /dev/null +++ b/ATMegaCard/keystore.h @@ -0,0 +1,31 @@ +#include <avr/eeprom.h> +#include "../common/card_common.h" + +/** + * Returns non-zero result if the keystore is empty. + * Returns zero if at least one key has been stored. + */ +uint8_t keystore_is_empty(void); + +/** + * Initializes the "primary" key of the keystore + */ +void keystore_init_key(uint8_t* key); + +/** + * Loads a key to the keybuffer and returns the pointer to it. The pointer is valid until the next call to a keystore_ method. + * @param secondary 0 - load the primary key, 1 - load the secondary key + */ +uint8_t* keystore_get_key(int8_t secondary); + +/** + * Update a key with the given key_delta. + * @param new_key_delta bitwise XOR between the old key and the given key_delta is performed and the result is stored. + * @param update_secondary 0 - update the primary key (and mark it as primary) 1 - update the secondary key (and mark it as primary) + */ +void keystore_update_key(uint8_t* new_key_delta, uint8_t update_secondary); + +/** + * Delete all keys from the keystore + */ +void keystore_clear(void); \ No newline at end of file diff --git a/ATMegaCard/main.c b/ATMegaCard/main.c new file mode 100644 index 0000000..270701f --- /dev/null +++ b/ATMegaCard/main.c @@ -0,0 +1,77 @@ +#include "common.h" +#include <avr/io.h> +#include <util/delay.h> +#include <string.h> +#include "rng.h" + +#include "ISO7816-card.h" +#include "applications/applications.h" + +#define INS_APPLICATION_MANAGER 0xA4 +#define APPLICATION_MANAGER_P1_SELECT 0x04 + +application_t applications[NUM_APPLICATIONS] = APPLICATIONS; + +uint16_t main_handle_adpu(ISO7816_APDU_Header* header, + uint8_t* payload, + uint8_t payload_length, + uint8_t* answer_buffer, + uint8_t* answer_length); + +uint8_t current_application = 0xFF; + +int main(void){ + //DDRB = (1 << 5) | (1 << 7); +// ISO7816_init(); + ISO7816_set_apdu_handler(main_handle_adpu); + ISO7816_sendATR(); + sei(); + rnd_init(); + + + for (uint8_t i = 0; i < NUM_APPLICATIONS; i++){ + applications[i].init(); + } + + while(1){ + if (ISO7816_data_available()){ + ISO7816_process(); + } + } +} + +uint16_t main_handle_adpu(ISO7816_APDU_Header* header, + uint8_t* payload, + uint8_t payload_length, + uint8_t* answer_buffer, + uint8_t* answer_length){ + + *answer_length = 0; + + + if (header->instruction == INS_APPLICATION_MANAGER){ + + if (header->param1 == APPLICATION_MANAGER_P1_SELECT){ + for (uint8_t i = 0; i < NUM_APPLICATIONS; i++){ + if (memcmp(applications[i].aid, payload, sizeof(application_id_t)) == 0){ + if (current_application != 0xFF) applications[current_application].deselect(); + ISO7816_set_apdu_handler(applications[i].select()); + return APDU_RESULT_OK; + } + } + return ISO7816_STATUS_ERR_FILE_NOT_FOUND; + } else { + return ISO7816_STATUS_ERR_WRONG_P1P2; + } + } else if (header->instruction == 0x11){ + for (uint8_t i = 0; i < 32; i++){ + answer_buffer[i] = rnd_get_byte(); + } + *answer_length = 32; + return APDU_RESULT_OK; + + } else { + return ISO7816_STATUS_ERR_INS_NOT_SUPPORTED; + } + +} \ No newline at end of file diff --git a/ATMegaCard/rnd b/ATMegaCard/rnd new file mode 100644 index 0000000000000000000000000000000000000000..d36f2af328a4c177221926377bd8c3d53dd2880d GIT binary patch literal 95808 zcmV+OKn%YkGbqKcB8><Xb}mK?!j*s?5UGrxg_&ZiXx@L>fLnSBVt3gi%LrzMi?S6( z4x*H(j}Hd*5~h6H;a`b(2O<H>AooayHnS)6dxr7?lyV=0h|<@+Ke12+9dqd1PMEce z)hF)j9iBWXq3>(#udQ5NNjT@=nyDKPzxA<)rUPp;?p1vM^6(|piv}hjdYMD3^ez?+ zef4n{<*)l3LCGNmX+u5|;EZ`R_GdR572E!cA-AB0`;x;<p!GfHfEX|jRrUUqAU;V^ zha3YL@SD|o@6#DfyVZhTpn2P~i$x|^%MM0mb6S>~e#)V@SQl$gA0_OotWWJ^9eP+| z$@sQ+B=&m72J=z{T#z|zgWTXKyN+{oz?Lz7rIJc4-)y<l<DAIZVjJ1oDLWn;$V<1z zC6bE0)6h)4S6~mgwNq9LpN2^Tr<MB8L4=X=ZM6MX@El|~>e5O~hD3nFpb<fl(M-J6 zk<a}UVgD%suCSj32~x-G^3AnW=5L#s%d6I#U+PQ#$B+X2L38ot)DC|nfSJKNNh9Vc zh#$8(;?s$RMnl7}FtxzPaAKs{x>}-%iT1X4Hb;-*RLD>FCFU9z+W*UtXKbnrT_hPg zDznZ-g~DQhNTK449i+%Amydr@fUV$NsfmpDrN>LtS4^HonKG(WpWm2CiiU)eV=PId zr#YMRTa?4Sp&>afL*1}wCH$)JpJWL;#u3vznGvgr-)Bi)7RcWxXv)s^RaQ=)B#WvB z|1;55E#GYTrQ*BDf(G)!lrejx0t@g3)q?NAP2kll&mI&wOCskfi5|B5c2bwke{}+v zVegsjsvIsE{3>DZxkWOA<#Bj)vbSZ-TI3SD9THd$`_<ykSv2|w;uCos0_i3GIw6wz z4H8AEqAu+Wd<Egqc@46ql$#8C^kS!+3fQOF3hFn9M<Y`a?d^OW;aNfZb8~d0mrw51 z>`gqCfN#KTagKGRCMq9^s3y<Lb@w#p*V-TNIE_LkksAC;=%?T4+5W4Ln@k#r`)0!k zpvUP${sBOc@oZfTiL{q@@77Kql^Gu@I9~EawW2bKRo33FnXQ@ZIvfIdVI%n|f{$r+ z&j)m(Cpl>D?-|Vd#6Z*0{Z&A2a!qt(^IByK`R6mbrGvU-qX}K-e7d26YY`sJsfC_U zxXg1AgpJb%3=%vYaad<d8mA6(MHS~S`@GQbEcA7TXOgOpPc^k8=Ll<MetYp^^q8iG zyR(Dz*r)2+o~vkXUQBpJlK?Ft{b?Y6*`VvmF48O&{l6gbY4l&?czGkU2n6SIsD&<K z3`s>66aJNvA51tnLIRM{UY$5-mR=voo0h76$AAJb&?XETl@G23t?;b7JQ4%!VFj5p zs#VNR<wR=6J|bedxgt_2J&%EAp{j|w*268KoLHS|DUJ<P)Q`^Pb!!!_z8oMNX*hqt zP;iuMKYv0nL1bX-`7RS5jX31<zSUs;xRFZy=CPZU*dD3}PJ_k31HjQR48>&wdqBZJ z;LxcopKVAD7bR{Qx!O}WT)>FoM>)dM!QJ60s6I+jRz1GpU^xk6^l0Yq3hWoK-qlI> zHx`!u{E@M^1cJk3P-sklB@r4=`ecTCvy#W3V*O~bf3@;gbf5N_$BS{+RX@9-66j9< zjUaSrmS5b~2+mf84>M)OTJtL<U#nT|`W#c~T%U-UvKmC%QyR@$<=<+#AMojAKkE?= z?dCjc<UYH=05OmaP4x5yrg96*r$*XyJ9Pq<VSXDhYZR{ktsv~3tVvu~sK1`V2oR=@ z`o)LWM?T_k$%TYN(g92$)w$2(L|7Brt%}W;#I6G1VHq*IHG)TRf>lv(zD;37n1Wj2 z3S6c*`eHLkRTo@ASzzc%PBuK(fsYZ_tscyMq~R+|U&puuazPbyFU2g?+|QU4imkTH z7R8>DxeceZ+IL&`o5$H=Te!NzLou*<)Fam@&mI*jE<U{!Ay4>+aw65akHS@eU2%!T z0@7iP_!M^!wnUUtt}U#+eIWAq^)lncIV19V1VTzd$MMtn+%ox8GfyQ18d6G(#-u`< z6I+d&HR>jw>TRE$3HTNw{+RR|=i51Yqhnb~YP650#lDiTKV{(asAZqZif3nZI@glC zoglbq!ivDQV|Vyoqlt)TXDB-ElI{7-qW9<=pLv+~8#m}Cp6f9Wbwm|24#Xs9it4tk zS6#1&T-O=V3m)e<6GM$a6w$4nJ=k^2XJ#qu9<GU9Mu<Vy0FPu>%HL*5nHGvKmq_kb z-oCleLM_q!ymPTM)JKa_X8!7Mzh*&uVYg|A?{V!#JyH<t?JkT>HL<oNHYwKzu2Vg? z#1=zuGrUxwZ>dc$b}Y9{<7F9oh?8F}Se)8Pt0WH>_1`5)I>(Y?ym$cuuwk`m$6jK2 zNFz3j29|@*aOA`kv%bwi#9#ur0pbA3Av8%wH*+R*TLw>}B^k;pX3hz(SA8xN4gZyc z@4(bij*P^&vlg{Z6SaKRaUS#;r~7M6j`Vb=M{B~aB8^BjH%E@*#91Rt_{M`m!6D&k zIo#4#E#GXYoDNC!r-mvc@0fk7aqV=Cw>3BRw#HXuE=UYQm9Ss%$wk+KEfB2CJmjHy zcwzz#@I+;hJKa0^lQWO|b>nC0s%{=lh(t$%5>Sne6@)xvf%$-=5EvZ0=n_uKmDY|v zbYlkC6YK20jA0cB`xB=<`f$U<F_M;@e+V(C6>h)X@jKO%?+hFSLF3Tr4W1<k8dpo6 z=Zm|ygQmf!;0t{g5Z-S|orb~kP?Qco1i_}kDpB0+d5mHd*^KK_FMPbA0a&owm8&e@ z+}XH#Q$wsEUHBO?{(wX=qZR2AZ|zK<l)0C4KBeHPsNVW$f_`J*IT({G4bP{9n+NJ6 zo+-Jm!W<EKeFA|&fk9R9|J0H04P3Mf=N2m8t|`o*bW3N(vqJ=tQ*Cek-IXZL9+${} zcc7NZ&j*)Ne_eICw&HeJl1kmiinGQ=Lle-f9$ct+4@X6U64QPCXkZ_v7|3guZhxH+ zX--~5SfamKK<JQ9Y^`ivoQTV32dn3mE3VHDr3G(uoD}Q+pQs6Lc1+}D3yv3r{^4K< zxyPbh$cZ(#XNMyq__zVXA>sIa5->fN;eH7)rW9+fuN*wr5zfpN{GQP%y?-DvXf)l| znU0GTmk+B%-ZKeRc22|&l0}@N`FRr~jQtd0E=dg*rcT@Ri#Hy&h!$o~%9Pf^u7OMt z1kJ<OF&^a^FPcpG^ungO3R0$hSWud*u6^x$jq`;h@{5PJ1E%pSMbCpY;3F9cDmKoy zgooe*h(VY4Uxw*{E}+eM6_UOlL5Yy|D0j|A1~Y?gz-{3Sx&<>VRc%fU#3duE_}>#r zJ*I&A5b^9}Jj<XaS$b>ok3e-%2aKXMIQFx~)k5w7%=J|kZ{M8x`2nLK8QDtfSD((+ zg|G9q1ct&QvM9BVGgXCd;oX=CI>tiNgKgnViLgf$!=At>r62k^(Ua`GtU-O^z<3ao z?MOXV0uKR1sH1KM?-M+2F`ad2w`_*|0t8@#2tuYH!f9~NRVLo+37#`!#YqqsJ>TWn zDqBqYeRH6McyI!R(FdKwXhP4RH97ZP$B6P~MLH6)o@AJ-8&6Ut%!<V(vOCn0ex0G& z$a<wbD-mApSWQdRR$nfNEoM!tL{A`;*{;ex_J9{L-!!~ru<NxC)I@#~5FI_qfd?^z zaB#(ilkzPjO$gNIKMHWjq_zu(h6A8LSdjbu+dzv!2JpkwfqxNz%(8UUw$FA6_NK-T zW7L^!s%_t;`T8^C*2q8BaLc7<IU18YoRgXG8|~YDiok{8lFgijNx|oE>cnm$Op9dq zK6emj{_Bx#{VYJ3&>OtF0TPf7{6!$5*f@JK^K_M#U+&4wCgkcKzRB>m=BN7F!tddH znt|%kp1j$Sd(ZMUMb_p&O44`!Mn$7CsP|9C#PUNWAt*^-7L0D>O;`kKOCL6gCimFL z>$d(D0DU1*xICsY3N^I0cfV$li)=K#mXI1vD@1IF4M$|-A6a?HB1SP&g{))#*pRAh zD!m@C3S_5B+Bb?A*1Eh>0M)UswLL|_f;4cp<RzP$d&(k4xM1UGJ<s5Gi6{43=exTz zk#%jhyr<D?X|B$Ug;iqz>Hsf59YJ{O_P&N;5!hYR7;W1OxwOL<5WB3S&6=d@s}7#@ zxFq9c80v#Ap$u6h$Xm7w<5$R^#JLi3T%{PBIP0^YkeDqvZ1ax<g>#mqj|<l4uRA?r zG1!*tA1)aA`+`%Gd=<b|;oj&-ZikqXJG}A$B@;S5Lm`n#{io1tEYAF-LArDA70o<U z5dIw?$w`kFRNmkD*`qtDvo7^MHgE=1GX7NV-+dY33W!!_zKige)PMb<@yYZj=32Tc z6V7=wBG%Xrd-Nt28{X-;Zj)?H3`Hc6ioKTgA2zAQ4?0C-gV}JV#2d0JMbD5GoZHzt zi=fuYCbz4GZh+iy{B;4AqOO^j>t0TIlp{Xe!MJc!g?-Y~-TesA7rbvEY;nAFAh+3R zNzTXALx0eK3?jAp$9B_}{cHf8sQGTAO*vQ7{!L^K>O`!Ajp0xkeJesAIEW)=nFty; z50~_>7A`)#QP4axFy&SHPVodqQZhVE5M^C^sAJ#wXcK>o0)=5>xwvz!g?#ccwG?)r z<hX0YAA#wBZd7bfoCLVy!)r0F<gIF2?<?)y%(*1uT6iiD&O8<64+~`ktKwF9ZzKJ= z!&7mB#83mQ(OmqgLB3&Nizv507Qk*$EUew_35^mItq**~QDdwvd<;Vc@B(CEtC&u> z1T%7U;U-!5n-XJ;*mdg|z8OIa@fNjC$CZOWapB~M+xE&<W-bXnWKqkFXEm$wzeTX3 zB{-_`%_UVDZ`zzY`2wQxsPsyQ=9AjJs<C`;!A*ojLW0r248RxR{)my5{eSV9^^2wk z`f}nm=|{|6RX8s4y#*7)95BfgmY;su5n5d<U0;aF_Ldj#|6MZQMhW9~=>~41{R*)c zlq=8Aq(=)&r#EXRKWT73RW(mO1W}?rsiB|9-6pwubMnNrl4PCh_)ZfgJ&Ku@s_xzZ z_|c+2sB!;P^-ty`IXkkG%?%YKJR5)tFo$qs<a(P8%aqoS?o{9Z*|CcS2Ez&wHe5$J zbMu9UVj@YISE??<Y@qmAa{4F2sxWpHCJx!vd#+>2+1Gk418kw4SeR?)uDh+8UCKE} zV^b*YKdf-=b)E+Zg66<VQ09!fH0DPVay{TtIS-O$q<d=8uKX_mypi+_h8F{$Kv@9# z0Kzg?G@eJQ;@=q9Z_B;c6JAZ}MK3Z8_Oz$QOO|$y#8pBK0F;qFZ51pI-9`DL6F9!| zKm?J(Y=F!$R2BZ7kqEr&AWlgoh9a}LWmAjomW}Tee4q0Pm3AIRS##PI8ZR&94Qphs zTOBHRtCLPG)NJpZe0sn`fsrt5ot#NYhF2pJD2zW9FfTQ|M<MapManbRbdJ~LuS>1Q zsPitBz3u?00KdcVG4<t!$&=Te%J~L^05Opb-1G^CL;`ZO6{ap%z5lTiwaj<i*4eK} z9j6%D->aE#nEhH13td+^tU`SE!FEyiT~`^Nnz`A+dZF`JwEL!W`xR0z87vCihiD^0 znE-k+^ED)2d+9>Wkc9~I7A0NF7&g216IQ>Uu>B-MI)bus)aB1ggvYY;^|XgGlEj<> zC}AHur~?mRL<v$EU7LAYpbF_0|8CH2EDhz9O0MP{+Q^G0me}rl?ejhRF>{uMe?x#E zfG9CqHJV3zg45ysnqgY`3KE|knaQfkZ)W|A(6?<ioG0pg4${<Y&n;EmZ<+lYwGT7( zRi+QV^y7z#Bi5OJ8v<)U&Ova{g$;1Dg?4(@Bab`817bi%;!??62B}lN?a&>ajoHMC zVz${f>NLLwK!VZPEqeWqK&9|2$M2GeEJnTXuml8agC5{2sjd#lB)2*RVzOxoepaCm zc?Ggl^<1BbnfB}F4=dGv-4O{~#;DQ`Eo4mhl*b+>sER$8P+qiIrb}7IYtmkAJ-ty9 zJ<ZYOyehF01tp@2IfP@=nQeazQ6!#Q3F=o4Pi3a-Yj0ZJDrwy9DCm!$RXQ#s%n7B( zE5Od6z<Gg_ll{GUvGN2ZL8<{DkqF&ond<AlOJIfw5vE;pIdwv}qBa;un>Kr9z={w} zJ!KKEt*qazY4u)r=|)__>7h<N)uH{VU_QAJbIhcODrX+D8I>xIZN)7@ZA1*ilmhQz z{V4&iu@3}g6I<!I-*ea%S`KQ}9$tx9_xses?l8=yr7J65etA`rPn~4*>IJNF%!I`A zk_Ak1)fCSUP(+Lpg?&O$gN;!%twub75ircaba9te&b~EZbtoquS~+Xdt~`x_r7-$6 z;zwAI`{iqEAFep;(;ZCcR!_bJ@Z%-Ot78920ES^B2s-EdD?r>KxZrbG6>5!-bW~#A z2>8_EUYU4Wvbx8E1K{yrMQWn%ea#V6PTobR6HkqlwjRegm(s7!eTCTai?k=oTK4-^ z<1Q$@j<Iw^w=$;XYIr`AaJ_{f@<~89@RzhNHoelZOw{IoYS16tI0;a990us;ZfedR z#fhr-E?2xF@VFJi{(!KcrdSHw;yW0VscfbUo3vZzIh!MT{6moo{f1zYtDXMYu*xMz zdNU$bC~wM4*VTT1fH0DTy+V*jY~$ToIxFLTS-?x+MLAMJeMEpWBXvk7E_&VaDW<Q4 z9b(C7=YI<j7VN*R(CnOyX}8aZg##n-2=(WtE52V)>0D2I1aX7caekDc9~p?LW-ogT zmb8z@NAsc_Iq9;~)C|s5HE#yo5~_@!giX^0O<}c}-aDC+8jkvOqnFGS<S*$BZ}e^B zEs0+S=)3-cK;gm|5&F#+#h(H?kOO?`q%QlsKw&`;V2qfSs_vetnQw~E*Oab4?7+TJ z@XP>KAfK2CDR-|1jK(#S#SB7)AVawzQ|s(+JqVyT=@g&N2o!fNRK5Nn0cc_GDa@`g ztu$R{$UC>Qwe^M<BL6t5)BkLcoSFHng8mV(&9z5Y!Y^>W<snmPU4A$)@-<}WTW=Xn zn`L`i0}2p_e3Edy!~tRf_#mTbo6gIHW@4%jZ)LoDAoFN9U$%IL^8=Oe>+~)boW9u6 zNh}sE-~6a74lUH>&I_c67_$3iHp=&BMC+nosTiLtnB40rzsmqNv9`3Q#+zd5*-FZG z_O@4szYx$}O<gLtc@24YLKf;=^GvDTR--#bhE|I}4Miz1m=^Y~C$N{1zZj_yhs$ zu&tCFuE{+#fkrT+gdp-s1covrbeIO26B|9-G3%wH+o*mIQ1rg$VWQcn>m3d`M7J_` z#l>TisJ!2?$|VLJGg*XcVn0dKH{B+g%Nr;9j>E)(v%vM?HoFEAQjN{I<$_CbPgF%t zkR%No1rNdn0#lH@Y$0rE4NL{}f;NOD!Ha;FFgjGSZ>CK<^h1Ur0$X7FxfXJsq>I|F z8q90jEE+8vO$zjfv?GU2vjz3=$7Sjpo@=?C!U@Dz)1S_>HMK@E!-ass;c&5}m6{ED zWb==d6d$a~-M48sU!_>YyCVv@#^OTy0E5&}j*LgeLy{oeX}R5V*}?0f4%!8IQ?jgN z80$+sSHM2taL81*%%-Gk-><nG@TtrW<hA-Oa^0jT3wsv>Z$V9Ac9_@dKAzx+8TXr4 zTQAxy8vXk3;$1n2^TY(Rb4BE$!Wn@o5q}*J$z2CI5@Rn&4TmJ18)*ve7H)66`~W0C zs!}iQECjt$v3-Vc@^wMBuopJww+jTPQ~S(PrR<wMTU49>dSKHi-9J0QBY-F<KR@6P ziA5C>e;mPhaDa5+(}+w5=5o3%GQGtBF_Bc=nn=s6MqELN(AO+K3~`m9k6FaKvV!Jt zx}_7lm7*Srh(?xeUo3fTfh}=t#GSI)M4J=K9JYCevm->95}6%~c?PqEWYS38#|f5K zKQ3Zz*nH{`4(()~TG<O9=co%^r>W!Nd5NJ1xT52E$OEO&+YMd?=`+nVboU>|>GRDb zRm$JFxl+SUpe2ZlB9__wS^x`)HYO)p_?p97fZo7J^LDi@c1`yM$Kzs*X@$>{6%8G< zc*a9QhynJI#@w<g)sJ3y>635WObMiS3r81I-prX*s%~#g@AO?a7`97>=K>427Kh&h zTF?re7YI-01W!{XTw93?XOuf1^Ej3A-;`*h&jB<62eBaqXru0Z%z(rq^O$rS*W0cL zt>+w@J$vAyiKs^oQ`H^sc<r){A*D$xrygslEx+7hDG2Vz3_~Q{ibw`8GEBuqp`)mY z`_?l**1>+Tp#&Mi3Im3*1Mu<0MUtYt86gWu78k$%VIaBLr+V9Bs=04d&dd~aZzuib zLCKK^bmErie|&M^<jiU`K6DYc4Hnh@Ujf?i8uY(4;?{^C0vRE@`Oy>1JcOXrO5BIJ z)>7`xP80<f;=g!)1A$VZ>{#vl9a6b`Qo$VH=s0h2Y{U$+v_+?b4p7t|+&BnB#;{|x z`Gym-t@Me8X0sc$+sC+K;`n(Jvs`2r%Wl`tuY`>AbtET?L$?5?u}k&FhtdMwVHyZ) z$FB3@hRM<=DSOY-74B}-{jNZ)Ku@uhC3>rqPOfA;o55QhyJ0d(#D_2<G-<MaB`~>! zqZ2r-lFgjg*sdGN``6-5Sp{puuAuDbjovk!M`+?+IaovJ0Zst4Ayz3a{tU5Ohij^? z4je>z0U|)TwZj&GeNf>1IU&;7URtQTOQVKJ0_L^5H-d#RW7J5FhQ*-+sU)83D6H>& zMRDU)YTk|(<o=4VCY0(v-@s^4Y>k~1NpGk9+5|en12F-Gk#O9{O!BlP^?MdG-gF7J zMTRqC#0~QVhr{v_tb84C$o40=dvfv=R1a@N-7`q!Hrod}gE7H{Q1U#K;Xa5^*NuAx z(o&p#oZz@PK|*jL#VC^>K8Y~a;E#Ca0_XtWiTSp@7c#%(q1!pC)9g*`Wy#8CN0<{E zB>P%(x)mW#X_TsjP9l|=9*Q}(^OYp7i#<o7!+3!M#nB@z_-vyLh!)rUd+-8ea>|s~ zj;}SX<$Rh^TY1|8xbZS&Y+Fq#Mf`$(5fRN?#5q#(&6K3Bx~&p?jnbvvnkmX3mWf|x z=+FNo0qc-UZKf@Fox}N1f~{hGx!|X%n-19|da@(+D3m_YQ7zov2nklkE@Msk)uU{> zK7&!gJW+vsfx!^q?5OFz?XX;x%sv!wjfAA53RyP$g;JC3Nv&4wtjt|)Ic@V2H|)3E z7D;ZVe)~{!t>COU%`xOHN}R{|(;=ML_#UHjiKWH+vf?2bNSbBqLZ3jH@jJ#M0|+EG z8wcrf&ZOm}+iN?#(y&z}E;_w|@PHvO38ZCeYpx&ch&@yhzNzuOWRP1;oAo;v0&dXU z9w|AGL*<c5yjLN=X+SzaBk|eZTS%KF%Ny4E&Qmq*A{_|m=D(Z6%7JEZ8|72leLLY@ z7^n+8r-5n_&+TOVx?qC1;Zx}C|2(mPB(gfx1AbxVn7Vos@;#L?9=8}5nor6lW*X~D zzIV|g44EYxJ1eq7^w6~prnTB`JG_&EEx`=o@EHXwVUKvkvyvq(xZN@@#4JPo0YL%d zAn8a?ru6%#bHAlPyJ6$GSV8*m6V!}iH2EhILXFWBub(|gpi_A~F)-xSYVObNg{;9m z;4yrM!2?2IAqn_*qStvI1F6vu`P4G*<;*HnO>SguTTHu}GmGT6`xntpECmg6v<+4y z4;z)+j;eIuw@H+Sj{|kS2hflW`~=Wao$Lr4SINI81bb8ST+}&V(|CRY!0}K(9YCq^ zF4PQP1$p8EsqwzlU~MQYj@;$B`%*H^#dRV>xgmx~B8Mm<Ke&N%A`}TPcf2RCTLdcO z?#S&2%raFGPH**WH`v!&A6bdo){B3Zpxhal3+^@@2WwNW)f^vW8Oyt8qstgZyHX*1 z`N1;b<QSSO%FkyM8cX};bDI@^pCV`oURF3SVn0X`<9z8bd=#Lk>AK!BdUUh4A*U&$ zK8O`&o~oJu8zBo@H!8Qz7ZtuPL7d3>27(e$T&$@eE=dgq1cTy*c(Rhz?|$?VR_zWQ z#u@XPL96iprm;KfvK+L@Zuf2GEr?9FL{q|jpkj$>hJW%gv<6plp5Q4dKCW;*#WAv^ zL~DZ|;C!gTpWvCui?@Y`Vk6m@tExURP`7-BX_K#<JzIfmFnblU4|bIHPsc^_qZc?X zV)#iBhV2nO?V&taaQo#JOW(!_)8=i7EN7e=X&dg_?HlcuJV&4tSuRTa#+733NZxj- zN4_)hXJyMD);V87`eEARI~)V)A#VBHf(c?*Xiv_S6&~-2eD~lMiQh)};-YI`KFPo* zFj_U5M|x9YPf4|hS3;h#2(`!NL;e7fA)VMTS`{m6Umtm>VxHN!dO%|VX|T>6h3G?W z0c~NtDX|~u$WBI;;vQ?MuAdz!=&vq3y%4d@@a1It%i{*fGnYoIQg4mjg=zAChoRHR zxF!=@FPly4T@F~)OKf)C_qj3)<rXU6@7V0h97nC=&3P39FYq4J81F0W9~=PDs0_YX zV4Jz>(VuMny+QFob|6N<gW*w|jfxf1F1#!<y_K=zr~6A%#_Y2_MG!0P?j2lsSt4r* zk5*>Bi}07!e|}L693<#E|FV!oy@CP20Z`SAeiRW-?F6242&8ul2B(8gQ6$Za#kaCH z)dsE-j2#tuzk%_AWf59^3gN~W)4Tn5@kiC-t65HJBp%DD#l8YyVJK)m&cUQmx;*0% zSnb>BI!=JJ5XOCD;c0k&v!F$IGWO)g`eVbHp{x7f!}x(OpoKX?a3F=)w(7?&!A-zq zFzSUJ^BA?>R=A$<NM#Qv)OsG%8GgIK5>d$Pw!fy4+H|UB-m7}vBiL+v++(Y<Zq&KY zaugKazG-rPrGdIIqU5Ri5Bu~|r_F0LKKJ2E7<OuB9;>MS4j{%!LKl$UoY>gv>%U9! z#?;b3O>p%vhL+RLOmy_N7PJp{MFWB%QOnFn{o}C61*KB@%!gEZPXYu$<3M;}W(XR` z3)83F+KQ_u4(mm~GU!xp-wkMp&PO!jwpbQx-wbI5e#3DP#q4K{tA$S@1esx~xxeFN z$jbNE=N>B<&no2aOU=hrLr)TvjgAymPTmFBbL&wq9KFaPL-+xMKv7|=s$AZvNZ+T~ z+FOgdmg9cuF>W*)_xi`<(|HZ@WRzMTnu(4^#N%Qaxtn2Ixw=z>eNmv$S-ip^foM>F zJTbC`WkXt!D@{K{;i4F*yV^24#3MuYk;Y78W%-MOCcr|#AaQ7f@AJ&3blN70dbW~= zyppkTL3ClaXcz8IeI!E~VM>_CI@7CcZr%O3VN#gh8u?25#}d=N{qe9wJcDuabd^Ux zr%;-WNEF8o@<j9#w2W85-*7F(y#u3Rcqk&S`HTP+ux_-ub~4vTkAh6WC2%?jvd8Ds zx}7r(RkRLdWvk1__X1Yp56C1Z?#eynp}M$C!^crW1R$c=D_hS?amS_eIb<_?#RIc* zL^Q&Zp#AB<Pr+eO`5j<+S+cv-GHu07)<r+!VmR2-LcEb6e)&)=9jsaHYK?xRpbN>g zw^tW0|4aczWHahjFTX5df4QN-J#cY!_twY%@<5c)44g$sf>WXG$^W;h7A_79Wfog7 znuRO!UnJ<N|K8Eqym|mb6OoME6uG{G@WItlUU|qegynE+#U7Fv4GKl4GHan9c!`rn zO;dKv_jGqBx5^gT|43nmfg-?};0TF_)<&+QtqP46L{3vAT^qY=a<9Ogz-WORF-vsk zRVqL35nb(?9IB1p<@m^Qm%Z;n%t80>$Ly0Fy(zFCwHby=Lszk$Bq_Nc;~97hA{O~? zf^1OejsL^|W{~P^9KDH9W~_UC;c<zj*G?ZqIk2;|?dHs+#i(L0shv;wv@%5$GM<3> zp@S;m_c^Cy+Gx1X5)|oVPkW~FOGPp=RW!`k6s{MHpES92a`uGB29tvyz{&6&1vtXf z#7(o*MUE21pOg44qWl2yvGfI}Gi&9p`w!z9SvuSEIs~C|88y2ibC?ENgA>5bz*W;u zEd|^c`A(vrIGMm3ar$+`)`34Tz%@13)*gR3F!Lsrdq1+l&ER!nCcMf4X3&cbr35Qe zU(7gF6OK)EL<WMRFsU`3W(c_ubBu&E;P&Ve-W<95Gvk!V&X*KTFO}G@%Y4>D&mg_# z04mXb46_9E<9ArsJFb$9EX3Uc3DESNhiI~11zE!_5d3dJ{L%2eWRP17DztugFxOG8 zJUwv`<=*@FQlibL<w^?27vcVh(e@0+tkTSE6b-($L1ocfy$d17*wR0Rabt98*X|yD z8BqQ_0HCoLv<v423*zQ@n*u^%A(?5{&hDk(D@d<~$&%Kb4ERMdnpKNWg_QGuB{6<f z5qv#Apx}8KV!GI|TC^%w@Bdt}IV4)D3jcQ@X89TtN-tN^E^Ll$RlF<FU%cBuipjTT zrW$$LLL1ck9&(#?>&KqIY4O+8Utf9Jk~;kYwE%XJbu7kAl4LE*f7ii26)?Z`@#X<5 zK<{&`)y+Osz|2t;9csva1|q_lDO!&z*M47r>B0VSqs19QyF`O>(}fIT9M~D_D?NWv zfIQ@J+V^`s12H9}I@%E%JleR55+*%J5jKssamG||4|U`x3hRczvf+mrstYa`EnVE{ z{N6#Ba>@kO<L~Ir?ZjO6IET`aZ0`(xM8L;U0zJb}pq*F<`^G`ikxiNP>NY+1FmI%G z3)jNVfhJM<tW%AA6w^*@V7zIN-Mld&RQcYcd&xtn0WXl<{0ZQ9Io8u3Z5a(~1U_=$ zr7J7XeuaVZaV6#T!>4iD<r;VjvKEjo-Mm_{inaIVRw_Nu;DvniF(pQ8b00J-XMd{@ zFI){=1*ucMt?<p~R0^LaDe51dsAw+*OcO=v6aK6Ljgd5MRSe!_NYXdmCYj4x)|(&8 ziR4H0!-m1LamK`BL)r9NR~Syal)A5TtQ2m)ozT6!&>)ZURn=}9-J6SBXDb7LkTFcR z^rz<fZgVWQP3BcAZ;t)D&>;+%v;yam3QZ-|dS179#**MosdX>+yvKvnP@Sz8>`o*k zJE|jZDQxe(U62^vsF^Q2owI0UA9@%=3b1ky6hv>L{E5+YEeHHE(S!^qwCZ;bM+M?x z$e3n3s;W<Ll;y8V?RKqIUEYZKwxWkP!}6h&$RB5k8uv@)WSh&4)`UM}f%$<m5#`L< z);o_QbSY-8i#?YRJIw=iv6lry;z4-van)>o3{bU=M5N*htfxFn0*3H&MdhN~yNbin zfV~5;0VLEqJ_BO$xfD|_jlH)37SV3m-HJLUVtaAz#e4$uv9;t@E57gJ%sAz?+INe@ zMk3p}T5~Fve?Bp;<*oW%VaX|$T3-6-U@o97sQjMsi}gn~h9+XlTDA*)hEUUuY^5!` z34+IQ@-?(n#@}MunCgqaC&}uTo?j`~kI&>a+f}OnzW~s|EO2cVET7ycxxC^aS@@cQ z>%dFVWDNNvqdJL`Mw~Kf#m{CGix0N-<`<f8`1~_q<oWyTQ#>7@=vZ%AZA;vDC`Xr5 z?_FJ3sQWHcEPd|b%&Fx-O5(>^V*2^wg2{m=5PFD1X0RG1+B<q9W2)G1dfg-4m?#@w z`sw4$=oD{jysnU+4Y@osFmx59FWa4eNl+HmZeML#XiCl&<uCia!jQ5|l|_z%Ou+R} zhphAMm8>6-IQ>vzj7g>A3V6pcV^mO1%p`RwCXO0)zn75Q-6%L9Vkr1OvB8ya&UJ;4 zVs+UjihCx~%YXKv=jq!{8wH;VX@(mjE4kb=xNQ?G9Blf$5+EEb7;QQHV=?&UgG+D& zRk7X|*#8=_pR~D$VUlUh&*XIagi}L}0W{PmU)eZ_l9w#bn58?r(=u(u9|9TiOY~Mp zpK?gWR+26aoTg|jA50m?3j-Emn<zVvfu%8fH3MexDb!wm$#g~r!_lFe$;;N|?)xlr zofPZ8Z_&7&Gf20mrox(`>c~B35%0|wRb2n5K`yksrjW@DmmFV-S!U@Q4{FuQekYT9 z{lh`J@G@j|>LyBC#wsH3ne8b&uP}|p6(Xhy+sBJyC)tbCw(o}CviY?V=8fwVzMt?& zWEac-Rgm9J__U%|iEH-0=kU8kqJkN5`*gzwFoNOXI5=aoX+>;<48a7!5^y|wfZ%bd z-EX+v<BI6_-hxOFhka1tZK&KY2%PmPHm~!KwB^-G&vrFuC#vha4};Wzeu06q5tZy7 ztvS78kVq|xO(v9E2D>w(<apX5iYTQXx`>0f!KdI3IQ7#P3{E%y2O-BuLWcljkoioo zWwolu-qPUwiO}~AhLp39M0ElAAT#*o6WX5|2}*WXCNJuoFKL|{Y1_~1H4pb?)a%Yl zq;{G{d&092MeGu-JnX<d;h-w$&i^!!_TA?R+g2Le+B#m7$t|}nH*6+9>cDSt-E}CJ zuOA$Vc}5Z9edux9#jDm1KF3hA97T9ivTkKfI@D)=%79cbFElh~CaY+WUQA2W7w#(U zU+wygf~EMnQiJ~BA;|gj5|n%lanzL1t_^*ZVjoBuhblsTu@SB9Ts(+zW^}8T-|l<u z^E@Tat0$j(DV9GT;7d5i%Cctl8U!nIf8d~bc`!nSaq~53*6#<56BNEKKuxsNhF_t1 ziE`G3&SIDN&Vt0?_lOpz|N9}r`Ea7dT_PE{O2Ws0;1D=GLlGdn*|5uGXM3v-Ze(=o zCJyRFFQVM3DG$BW0DiC$CCpoN3$}(9v${lT63?uJ%+us;pADFl>W{y4K%_vL0ei91 zt^DmljUf~?F88l?t=2s1FfLU;o=};!iiWn6B)sb&4lI>Sy+qNhoNw6-dp+{t1gT)Z z`9Q}&vO&iIf|1}28I&0xY8f9*iN|J=@4W3`tQ$S6p`KX?>36?plpB6(vhRIefvKRf zS=4He9_6Wv4+ccyg6MGn#4;jv376*{yBJm~pI({y8>4Hfk1nK~3P?6`x21+FV$ax@ z%I{}gia7SumfT*|d9OQ-LN%~vhda`;2_;sGt!I5}aPM`@6va=nl_7trF-}mF?T){s z@LNS|Gd}m>hFz1W{j9L<tvrkorQZwohUQ|MNNJ`%+raNIT(;?lRs#RfupR_BgJTs* zPZx%F0`}r}$<{}%;vC3%wnjHommOYNcuRnH5e9uS_~nCDaNfizBd$A)0)?^D1+3y+ zcscX(B$T<Xa;+464>0w@7XwcrL1@t)9_ToZ^AxoY^<>75)5Q#dWiewknPwZt+cK(E zpH7%JItTK0we}a)-#<{njWIL^_o5c5x}U=W0?=UG2>n(8o`Oihzu}QNP2lv%rzf7P z2z(d7UT}$PX0BVG3TO`QMXVCcFLiB}+3q^tk|>-n*=_0!tR#%|q!*(9>5%_kk%`<# z{W8(lOg~iMzc|prEOET$^lEloXBb;6n_pXa3bKb+lfMmNB?#(QpAIOnKb3LrRqX$i zv3~@_;$z7h2g8Hmz!*a+(0)k3hGX(smD^t$$yo=4gVMkaP?WWg$HmjK{q-P+NwSAT zp`&@JlAaAIWRL5r-fw8{?u^aBRS@6)35mug^U618)~f2?-`MIqu997%7+5OEj*i8o z11iw`y&<p+lw_~DJX4W;4RDp^EW1pdC74<ogKOX(i5Nz^gM#3|7{D2Ex>XYYjUjaT zmZQ#gg+}r+1m(lp5j#(_wMFNm3K_<m(ppX4L}@baRIK0KXiU%5<@^d^XPC>2XEZvt zMy7+>@>>NHa_kk1jTFVuvu*U8BxqXB-!z#<JFv2>MLdHsQI=eO8C7cku5vt&fpk^( z-sj8ON3z1SfX9>4oSZC3EjG{hHTOox6Y`!Zm>)VBvf9-ef9Mep?eqkvb4sOGyDw8L z?ftD`&5Kkx57X3bUwz5pmKd*_Jj(+2L3Z%>wa3RMW6MaFr+-Rdb_thv&-SIp3iDD0 zUBl_1UC9}?D#w4)fK5R3@fJmr6Ag_e6ndUwm}mlj(14xbNvIc|e3)=M<dXUgQ?(sg zc*r7`nO}QZ^GhY?JG<7SuQ^=v7_|!ZriLrC?qy_`dVkZPOj!hK!#|+Y=-qF)O*7SW ziUya1UT_#xD_zgu2T3zGRkkk|oo-3orU+{0&$<;89X-i_mZ9%h>?*CR?J8aGIZl!V zE#nM%1Tf;{SugwCQ#!2zL_t$v>>3>fO5zuJnzDNYP@+8`5SZ<XzqgT6-Obr&i`oYo z<NC-x2S^f!JR)%jRd(K0Xm9Uq?EI|o7(|;hdUPVUiZ_>;&O3#(Bh{II8w2{0Q%ucd zP0Q8y&W42o@<6m<^a!V@=r7+)*a2J6nvNP&!*5V*jE^<tCrggz6uTW$>74%-knByZ z1bk9x&F@sro>aI`!vq3T(98`LwZB&c4^l+cR?cn}UM?6dgZ&WkZbkgU&=6^i&X!ew zjxiN9zGqU*eB{7t;m@fxzSi)rR~#?syiTz7wT9-iDr7oavioGZ>N779oqgEAI#2_Q zV7Hlu>jDm8Tq&s@z8C;2v413OI}M<;7&5w~5~%H;Bq)22^VTHJ&NWol?0>95%#g$( z0!Y!G3@If(t1(X%CB8dSBYe5x<H>oJvVKG`R)oIF@MhGie@=C@mscMSiS_rC=B^4| zHmC;<D`d`FH2c=xANd(_3N<#wwvsoUmzeH~sh7X+(2Sg<>kGcd@bk^+bpQ7u#_B@< z00H&UHoWAp+N|r$FU5`mHPN!2B>4$Erh#~&V_CsUq2@}P#yivZY!)ocoF!=+uWBwo zEKn@!-Hi#PhYQxH&uh2O7S!H;xPf4Sm{2<Cv!7R)|Eq~`)>S@l5dG}&FGUT*lz|^W zi9kj`gV9k8z9i5aol6LzcS~kh>n{2&gG^$z7{|J^6ZI~p{Y%j^+~kTXw|~AbkiCA< z@eM^qf)hfm@Tp`@d#1Dc&Ege#o}mb+Grko1F5(S%1fk=}c?M#lXc;>yvR*_uGSf!f zQb}Alu(u^BJFj9L_~;<sNlC{yLbf5+`L2UKQGk39!R&FZRo-u&otXHl08c>#wR0CW z?6w_eSn6vJ3}r=Hg5H2>vyb%`7v3xR&oZS{Oa5h%THFhmhRY&n$vd_qH@TOC?@?S) zh>X?@k0r#4lJ~skunLr>E!*6SDVAPedB`INnC2UzzK9|BTBn=i>ZrcI<6x*vzxA<{ zML%M2x#i->c-PmB9u%k#JoOP5%-(fr_l_3jZrW|{oP7B)qcoal%Bp5y%9!L^+B3?< z_L9}Tt|55X^6RJm+Q5r2x1^Mt&+0TtW)~V=+8H|w1E<m2O{-*XTTK4+kT;yxxUcaY zL|HSmb$6tfgMWY#F;At{3#%6oZ^kSVP0VFf_}=5$J$rDX<)~^7js)a$`V_;y<k8v; zinK;oL7wp_Wj`9gYXBc#yNQE-P;snvZkL>1_&vj+F}f9FpSZYE!%m^~=u^ME@IXZH z=OqfNw4VpLb5a!St&Ob}8BV&CVUG~yJW3Gj%})iC6OTRQvP!gff@Xk<vPaeXUlZs& z-jXQ|9zf|z{#O7F07arQsC6zTP0K`QqN^Dyo6j1hN()zpjRU39Z!F#28u&|Mb_hns zVA4t5Qwgoc{v)WlE;7Bv05Q<Jyn^9S7_6GC%k4(2(OtcX07hYR2!#^UtlS(3SVc;J zqM_(`&64$<hxzjohaHj_oK8tZlr!#iMYnSorF;ty7WLnzsoO4#y(iIIEep;z6(<f_ zB@14scuFERnYSqvuWCJCpxTMs_Zz1AYw;eGsXuDqehYxcG0VkglR6)LsIU&z)$aYw zAQ1VjgZ~h*MFqmb5F&kOgzvNM=3N^j+x)7L-uxT!<7KE?pBV|;cRR8J1!0i5T~b(l z+rcS~AEX(Go3_h0_KwEI)3W{bAcsk^hSjrdcRoi@Q>;8PFy$56o{9+f$5&%K`7on3 ziP!fYr>Xi6;?zCvp?#>3FDz*MAJ7Zjrdiv&tD{}Xi1YW<#{81eq@4TNbJ-Qep95(? zOknhAbAIKa={a{pX3&a`1~n719hG?u^A!ZabKu3glcP)lL?Ba0Zl*2z{id;M7e2p1 z(O^xPMF=w~g^ugQ-U3N-h81F;EV;d4kx9%KbiM{ak?<^KDC=HL$n^(SqAwW@DyCoC zcslbV1#NN+6b0XM>xB=KM6D9`9iup?;V;Q7AN=X?|K<T}AX@p`qqta7>wRy)OheUe zES>yN0gWJqd-Ea%ZE{Vd)L4J(p#RAr23m6pHR2|F>hmrZoi9mg7amW#L=uv%ZS1`d z03{)Q*x*_icr&uT)bQ^0tfz?kM&sjo7$X?Dn&S%T7H)2BOuY1AHwm^VwI4R9jxRM0 z_cm7c4};VZe{SLY2tXD<Zt#9ZaiXC*dD0@?J1Ju8Xuq#hUHph(mbre>q5Q1zTqL@C zyJ8Z;9d&uvpsoo$=HQz-*z&3cnsbT<2Ev*Ui|m)5&uN9RLIt3s=s0iT{pisOEO-2b z(0VPBYz@4J079@tl~b;#t=fFcaMr}G13lxR>FD21NtNb~E99#B-@~~u<AvM8s({}j zXqnE7rMC(f#!h0iNq2JBrLX#pK{fD3)N?*R;Dv}IMmiI+1obk8R1n{-41GjV0PPTr zjD-}yp1^6p?(u!hP;`uz70*wlB?_vh>}su!eRNO;jiYslw)S&f73sci(QU3RJ^V3X zb-5-t>j%CQ0j(0uJXOI?X|>Ntq&E8}!g_$yB5j!5tC{{A;QENeM{&b+fd>(yPZ=fs zt6@)Qm4B}yJSc#Uq2!25_M=vbF4p}%K*3VMe4uc5_C|(t8x#tj1SxXwq&VBtihkFC zPM~FY>Y*>_Oy3~-`0=7-iF)>8=lE(ekHl00D)7!_r0Z(FEbwe)-Fpc9^+8wAhb_|l z{lf4ul{Lx-W&x{VKPka~!JuR4XfEzceDvYRIJWc0wL_EuZm^w{NRI@iQYtteLm9#g z2!}U3CJ|fgh&@Lz!-P@uZ6qy=O(#S;g0gYdbY3*b)|ZZmrDnRS0G_d#V9U5i08;@i z(flp(@70Z7aLA>%iFWq!#<fG$@SgOTSBo8&$v@I?oOJ6(hH^s`A+1TR7l}^|WYx-l z_99j(zCJ;KVWIt5@k=G<tGetmeN<4!twLQMs2Jax%j;(k8`Qdf6EJKwoc2g}cSrWa z#-LE>tlsPnJtQ%?grd{U{1jlU_zZ$XQ8T`EvA1CtX>Yx47%WTU7wHb)R!N>WxwbQg zm9rn!8GkAeUhIjjM_tevEV})~kt0nyMf1j$V((f!TQLh%rtM0Nrg2K8R;f=99Az0q zIOAft*rV%-4^`El&umn^|KgGH+-3Od5{!(*rAC?<T8IkwR#(~&%hcsQOW5YBo8M{K zUORYalFN_wrDrNZK0$C{btz)5*gdL%Z-L#jxdg)Ep+M<jPPw$g7l3a)UNK6fSGxZ* zu$3h~8d3W_6A+B-6s<jcfN-GYc-mv_Xgu5z*r{9p3KCX~UWFOby6+Mk$XM4)y%vym zO$XJyO+hq4W&o<NT?EO(L!t2L#=g^7{JLO*xMHG7sZ##Nk#J3g_486?&1t3YqV4G& z-r8u(??<Q;4!<PPDlC6?fM>+2v)=T%H$eu`bG;R*FAuy#0mA_huzUp4!c3v6SWY^X zlO9bu_0kvI{|JLu;GT%N*HV66F&Q-eM*&k2?d?6Rq0GqSXWKfe*Z)6}ac!lY82Flk zdr<St1mv@q^&dB}C-v$Vjo($+3d>eUj8fzc`z11}W=^Zr-iv6oe`FErT%L$X*B9$< zpG+tPj>GnW=in=ep7*)tbDPA50<&Rcfa;;18M(Vs66`OmEbUBO)QCD}0*jHhOcr<W zW@U?e_haVysH09fmC`3{%A6<Iddl)<hpUrroV{s1&oML=Mh<he6?UIzO&Vm{%c}=( zqJOA>zA<2RDYlQJq&b`N%amu18Z}DxS680Dm~yM7PAep@svZ95Ae#7(QpIl4-Q6kJ zKYL@7N%^KzO8=(;!y)1LIUoaQwa<p!l9(-uxMDU*mKTn1<lV_Aw?BqZlI;u~9O&q8 z|4l*Z08arnkVkE%ExSx1CHNzQ*>U;hQ)`KiCR9l-MxDa-F@~IzC=3iFB|3Z8Vm~ND z&XGiHa-0=<FG5VPk+i&*u<w+7uW;?8eY$Wm5X5~Wz$t-00z*?F%-9s`zwST+VL+MC zm<;N)FXj}RzRF;?nHQ=~PqdU|k6TqLPOb$Y!U&)f$*f1-b0`#+z8*jr!wXOrSl*jS zNQVal5+SUV?Ix|OT}~^NAFqg62WkO-0ifWhIG*zxwF-B`_HcHzMt5@t6%xKY@Sw5j zB;Q*2Dxz!|y_>K*wE~vV&kTh5QIH(nIhk9E3nr%;Yx+KNQ53%}Kny_iVHR!wypRDA zAndsv@Tk=`e)fS^lE2;1nAyt9#nxip_-Inj%$8KBp1&y24ZUO_K53y|3&=;8GVgU< z6sX<~Ec6UEr`Gy?Q-pld!EAw?5n9Z<G&5)9`b)!Bz`k%nb?~KR3d=T-C;S^hOF>s) zJSY&3&E(~3DnIT}?L1kaN?8`${u-ko7)eeR1W)5dc{8AN>9-CSMgB4v#JVGc2*HNn zk{P{r07rvUpnb@MmLgsnsY`~ZBTJao8$Q~ks{7wTnPF<xjvrK!zfC~qLHj^ALH9uP zkw@LbNHMjg7Al+18l+gb3o|!WCvVD417$#qVJ8WDMbhGISq$2=`^Iw8Rs3&EP4p!< zJ0=@i`nz)CrRcieu}B3Ma{n~3Mzk{LRlB<i5{G$`@|+fFpMIb)h!y28D-G{J?I6BL zA!qrEQwHqztvAiK#Uzqi4Z87iMYnQ?q*F_MSK+J~th<Qg_Q@pGiyPKzj-7=_6Q|8< z<P7`u!s8J*eQ+_vERzik1(nbNykW7qv~#x=H!rqKr`1Ydc3I^5+f%FU-&|-of73BI zG-I}D!(ZUZ3nsT)hWjIO8#Vg|a#nRN20r58Ko}r&+4kz^4=Yz+pE<blQzgBNAtz}% zUm|$9vg7soHgcCze_e2>b-%aq1Y~nsg}VZB0d&y@y`yCqdJ6J)wPr=(qRffK_5;Qt z^GSxMv)g3r%f8n^2k?Srz<Ys0Fd?Khn`hV>%L~_Yu5~Xa-CCh48O}I`W7C;z?wzb# z?E6i<L;!;_;N^(gW{O(}x-u(O?*EO^bS($`GSNqz;z;TG-@>_}rdSI~Hf2V7`eQRl zR0MB>-EsWokosSODRDoWP+PwW@#kbKdq(ra1uzmdtVVs~P<bx`ywQ>TZ9%+!(czuU znN>UN^Q^7S98_8D+U**7+R}>s<?*UTzoKBpC<7iru|WkvazRx=PCynw{$Y@qO^OA! z;uctLYyHZp_AXW}Z%q6FK>+ZOl}sMhyYIs6fISEhSIurzY~KuZBnNvF(jELt@K@9> z?k$boHJL^_<7RlOlTK_TojY4qIsTKeowT{fK|=u`AuLG^ho<stJRVS~Jw2ds=yVES z=UCoqnLY@CR-mTnD^E<d)E3SQ6y~f79Y)D=W;F?^RxUQ2w`u2o3xO7rPYksr$LrF* zned8b2RbtYbW^wEhgkz^kUw9*$xsKZ!hM0j5olcQsay|PMB9U^V{h0aS_qrR>T$p1 zVQQI<I&@<PNE5>xpjdhPvr+_H(TFV(++2$o2bvSgUDt>nN2qcRRVAMqC~6HJ1c-7+ z6moAc{52uh*&cd1^7CM{xOX$xRIlxf9i)g#C&$av_uO~f_Grgm@@fQ*Q*_K`bsM&y zHkp=Me+r=_$f{=l8<0v!c7|00zVPuOL<s;_L7(uLm5L0uC0D9S-gmjgQ}TQvQTdE= zH8s~q9>N%*ny6a7yHbLDP~kj?f%b8B<oEib!x<5}sWJ|AMF&$8%%4=b-cmH3V{~3^ z8>W-SwvEO~W81dfxM}R9v2EM7?Z&nm+csvu-^~2YpRD!ly>Fa2uGUG%LDqP2dgXsr zX<k=5lO2NvWTC0z;b<xNQ=>tY^EK90S&`300h~(0ytVXAe}lg<&N?9&lfzUz^k7~q zkT+7hOi3s?P8K~`y0%oX0}2dt@t{n6G2Oacga&YXdFWtAP4=3$4^m6{@~-u3V$3fL z`z;=`r#7Mo>0Z!Ky4a&HcpSI+v2x>aFCqj&LQF3SA6!zOu{a+6<ZPNe7X6f~9?JXZ z8{C?}0xu<s39?1<E6rfaZ9m@KinNfLX39G`k8p%@o^*qo8p!crJbZ-!mktQiJv=Rj zH7o8Kqkk)se=z%OePx{&#IyUU8HvzwY~id*I^P!iFPU@;wP-Cjs@o#>_T6P1)!njz zI>=Xz5TCLyFOzRyZ=bN8AjHr9XC~C-%IXVVH#DF(H=+hSmI!n82-_CfrUwqd+olfx zNES5v`KQ&cOH~nQct#zfzx5P@uA!dsVIk*Cv_9<xYl%zyi}}{WiG~c3ky7DJ|IVsO zt&C7;7Q=M?qKtjX3K&&{yeL3&zGrh;_9p5rRpcYcEj#)BsbBYIDxw4W2HKyGtmU~@ z5-wxz8gbA}Q|!~TZAkm<Q}5T9d-z79QmyA+W<)^MilFjv!Qm!RZ+O2-c~;KwRZ~~B zaDm6yksB9k4XhCkUQRpBp&Vc-KYgT_Fxf61&xb0FHzd>8%OQ~p7D5ehjyVzUF23tl zU~l4BtQlO5;6rBkzxAQ@;qO?6c|RREzoqP6x=)Cx)yjh>D)W09D@pN{^sOm{6Qo2< zv7u8Y=|p3z!P<t%l8XI8o90DlWY|IAY9c*KD~&)(PP&ZYKiEbredxjZ$&gxuOR(<t zCqd+bxbk^2-#M(AB3K8^%#hm`48?GQN{tXm^W_}1b~xmtb9OgeFD^_^2eLK$>@uCG z+D2}$`ZnjWuc!RMo0p+qq%(-pa$19I&1VS>7~CdxhZa|7{$XY%4X-Ym!(1`ADPm#b z&Etz~=k?ESNOecv-HGg}ZFs;wuSje2cUpDYMFqHgzp3vEla4BEookYKXMbH^Q;-H& z)eJtoP*bdn^*-GiLitQK9j+B^%H<^|?;WEn##K%vRUqAMmf>nDcdPNO#dm%ld%uGn zHEdgHIhRSZg9vF#4ZNP$pAJ;bge6>Ww~pXJfI%zUe~;{f4|S5iS^A3?D0I3nlSNyo z`Ft|fDkVk{{S9jfHjV#72WD;9MO8PJWG--uvNbuTDzWMRVqc&txfSy3iwLBaSZoyt zmvX?i47m8IqU0c?C7s1EJZ7=48lA#;yP}wTMr=QZ4K3ZqH08OTnAvE{(x~erxtZSS zG`2%tGDrPIh!@LZIRherD=HoYeQu17MS+&WG0aY^$)uO<7tB4XGoP8DlC{81WLS)1 zc-(ji=89vo$T<T_r@!OUpTOR2Fd?^73p5?%79_Ej2(T86`d;i<2F=NE(*XG%&ua}G z_fv*NBdBNmhQjn^ET0lv+vfHCXKkyqvUskty9rrEo9CXrW>C*uob{!gZcwSwr=&mo zwi%a!5jJ-FD@*Y~hbC$VpD_y6M9k74p;1`Ya%v_|TfOC?w|=F&9x6`N+GP2%e9XdM z!1B{Md&_x)K^uy)!%+RCtwSeAN;CD)p0h=G=KyWN#+3OytPM3?*7>t8j61Lv%ROXv z=K-$hFiH1!V~)y4z|Svlf3zboph0PnZ=UHr`MOrLiP;6iygS@ofX6=mF9H~NEKncI zO0b}x`d}3lua(;uwe*j+4^$Q23V60>R&!=ZroW`ptHIHw!MVaYmnnCVr!2vJt=Rja z)p;Dp&`Q6D@OH1#?Fph-mqY#%K8zq@LZb64!+M;4$*S5KzcVs6=->P=IobPr%%RV* zI5TFvr8OT*-)g0*s7=<ir7MBR-V|ShJj2qo>@;dz9~lD;;C?1%v8R7>@^ul*E0?=C zdPP}v=9SZ%7KkTe`SbIo7VW23s#5AXo^=M@>3ii*f;LSK*yN@dbvZ=x`*1uc8J44> z4jPsp`<bsRyJMje%l(9;G(1<|&V~4dm|_R4ztIVG{xnGouPEyFn7y+~%0jS6s@AE3 z<!fXNMlb)nnULAJ5?5~hiBQlKR<a~bI1H%8&dlP2{qZOW6Nw-(B!4Br*g=v>rlrs^ z`4pIvFfMy8ZmNI;{UqeU?ps~|tRKDKd!LY!;SU%(%#Y8RFa&e(Q<dzAwkJpRAO<3O z9IN&$Gz)wpP3$#Vo``QyGt9EiCaeJDL0#vIhImX$LVXv}Z4vCM&Z}|9q--qbv6Wr9 zg_Fam`FWVxSVF*I2YB5&;0j90(vi*{5ZUjO54}5bK}TyTlm65gM_IAafprOj1k@=u zP9FVDXR5&XdYkF*s-L+pQcp)ZJ-lugW$`!ft*}>cYJ^m0`BJO3ZK66POfNe_vH=(* zxsa9x^kpA8H)-H_4l;qRBFnV`_jZ`h6BK`S8sP3ZG;X`UH;$=0AwHTOdC1%?l22<F zebNZ(_q%O>tDO-;Anthf4`8%omG~=2IzydBWDyo)?iAkAJb>wE%h(l2vg3WsXj5bW zI}*|ib|lmx6mV^4itz{W?g8TaKsXB2<bP>$B_q$(o$=76gy_uuG#PFeCUJ~C26y;) z6FQHLJL^X4A$Vhmm!ARD+x#cJHan@DxJK=g`B-5SPik0Sn~PMJ0$=t*Ofv`Yqu<SO zBLJzdX$f;|v&G`O0Jl9J8z2>^9D2R=I`*>KJxOQ`{K(4+vv~3uLY^y?Ls}re^!5Zo zlkRB3_@L{=70{b#7JA+^z21tg7b;Z>lSvpl>h1p*E@HVLaAl9P4=WR*e%He>14+js zi}8RIqUXbzcRLDB>G;R#4w4)c7gV}-*wpB(6A{z|l$)4T3eWJBdVt=~TCuaT?t+|` z$Nrnz&DTP#_f#&c+wz@2($1;w5BDy{IH&jI8$#1|ZPeFDc676z)L2|uha|Qb=Yy5C zF+4NPa%uU)q;$eD?3ND90-8|$Wi7&WE*&Mfs*uol%FMIpP5<#7Gp%rj6j^U|yPm;O zQnOU(@S~;naTbBUJ9Atgb2I-e{zarwYLCG!lMCP~{`Ml;!LCgwKjYp@C`ITA5xQ$? zJmR3mAVLHM2T?|w&_fPAPr?7dW`bL9`lGIs{kxUuh6@5%pM3|F1_&5K3nj1}U)f4p zULovu)p!y87KFV)4TaK#aFt;_OA2M))CE5cv8mUqdAjjuMmCzMFr&A?pOw-0BAJ3% z=gi-!W}^|DOejya8UD-mx^=|+(<x@*OS$(qpe*VV;gn({(KcPWWSXtuX^YdUNL23X zz2P{l1?k^$Vu@rEkG?#jYW&ECU;SPkaqcp)G^jHNx6$}=C=8r)WsStr{HN`m)q;BF zN8XnVYraQ?vr?FQoZVi2*W<w<gM)TC6o*p@-int(C{BDOV)0h<JxB2b3hQfdFzUmX zbCp(})xCQ5*eKFoV!j2fIMx|mr$UHA4~AG3pFKd%{aVR1YAmotID`aDN(fWv0@BN0 zX&&DSC+qWNCLqQa!q-u$FbcbH9j-!|;k>3&F9t^y&L$WdOatTxapzdv(?{@3JstW- z&rd;W;%bXXpA)9f!qSZF@iq$OGtcfjK?p&I8C5z3>PG&d?f9_H!Jhfq>5W3<48Aia zUT42MUsFFRJBfW38C7*pq&#A+wsMs%FN@qM&B7lU^d466SqNw340y8ZVsB`Ukr>Vl zDL0P`SOyAf;M)D|&MHuPf;fJ#_UukjLH^&io7@f?upiS=E21WYfSdIJP`qhdVLo$` zc^X<2sUZe$?cYUtYf!<MkatR?q(6o424GkJys6Uo$CS)?+mM+(8T|tDew|o<X4d{{ zx@7l)3=9xf0`B1n0`Q6^yhe<x=sG!X?0b-J1wdnvw#r}<#`zGc9Suzn2yZOM(`Cs% zn*{thx}yo!Pblq@A$H|io+GL(t3=W}#OaU@V76ynUN#__;u`EF%Y#YP@IbsfYJv^M z6lYLI$OdQX2jocJV3a$NB+xJ7TB+|GxG6MK)2!(GNb8H`Q?|}PTTUBq({eRi2T-j4 zoYZGSr1n?%ZXH;x`;6t8xwVn*rMY>;&v}9>k?1OgO+KlLeeTw3&b-PRimu%LX{>j> zS1m@gd^p2kKqM05VxCj&+KlazjTMtqc>vaF*U)CO5*Zm+^%moh?OPlOnw#nGN)et= zw+;sw(p&1Q1gBi<^V)Ku5a!4g=Wu)+C@H*GjGskywB!b-$39=kah|eDVw3r*obtd2 zg45aIpYMmmw0R(PT#OiDYWAl>X{!?Y9F5nLX<mH;Y1LHctb?I|{#*{wBgfmFP$>z{ z!WhgmrB{KHTyp1C*kp>Tw=UCY;GA%$Kd3LUkffn&ni`&bJGhH7W!G5TqxH~+NSjzc zDigth=Gt+&ysg+j<`HM8X0&0xxr+n7c3&2-zqR!cAk49Uqe;PA{Rfo%a`Il>H4?V6 z!eLWFrs~;DAGKNF0x^X@YirrTDFV*yx}9?=PQtgEpHG=fSf!Uui6XFtX=X2@c@y)d zPS7t9Cmv8rDqoTIM9W!hbN`*dWV@!C!&Dq?uCH*9gFX2U`x<SphUu7h;9k9n4xlnl zpsVJ5RseS<$)7`1!Zo6iEQRQ_NE>3*Xn9p9e4n{>mPv#)VNuP2SjHMJNT>?{1*WX5 zhfmP=#@httkM1@Xj&MeuHaTs1&1My#1m<8<(RvfwVN0Yt!lQ#n?qRrP*ISrQ0|6?; z>-z-_pKPWGR!H#xWjj4qd~r?YSJmPz>D6J}yEXFEhzj%1aL|@oER(N4vBEwe2gEe1 zcz{09cs1k&ywX7{^E?}7)Z_eS-|$A(%_4Bi*W`5?;ao!`>IFrAGE=Ko1G|Q5&8J&j zf-J(l7)M;+m0hLUgblhZ;?aW)mJ4mNw-w_?P^yQ{Eo?||!fj`%U{9kU$4p_DG_fs^ zTQHzJ`GX`Jdt*J6)qri%j?3Kg7m=)~?Z~jh!k@c0o=E^5dD@FD*Ic?{=*RrCl``QK z_W2fHYhHf_Q%B(Loo0zNtOn*<cg0PlSSKpbeR1DtNHx(urTu}3a1XBGfXH?)0nx95 ztQ!@Io{&Qavw?N8`6DX}#$vcr1Vrg4UmH+CB4?at-8bXHn^(^ClvKn$FR$FJ{B`~T z9K7D$ehTvlHk^nmI3%*dFD>#%*qM9te5(hojU(^kMx9UEFi3MtZ8%+6n;J_NXK?7+ zuayZ8fofnr8f=euq|35ih4&yA8H<zHP=UEP;^kz#V{612qRIE+^o>V`*Mp#S@L@w< z)|)ErW9ZA=mOL(=lnxBKy9I9w9!{8t-!M(}pb{Y>=7ceF#gWL^8y_);@(9S@P7NcK z09v?Qd2=WKykP7A=?ail=@>TxQ%NJJicmW6<G4OVMnNP<W?wp4X8p2qsigHaT7M{i z=&E4rtxuN+=?QC+$aIyEoUCTkQh86K1linLnPkPhu*RCflTNpyV*&9Wa@;d%-eHt^ z&kx2MHdcux$Lhk!H;ldP(Fw|;F*vhC?&)O=?`|-Vyjo4M*L<N;kk{G*2w3K9H7wgr z*_B1^Y2-l9`MwX|Yu}<g8h8D8;E<Te9aDdx(IpQ89y=>*WkOfoRT)sFNEb<0_>YUK zf$-tNg}|%>uSiDPRcvYR>jcR8M!!3gP{N-sFvwajpz9-*ibdtKvOhIrme{&|BoKGf zkz`qn3z)C)aK|^)0N}m64(tLhVxTFg;|@y}Vv%swd4A7V!nmeZVPj*k;r>j93jO`? zr$QS!u=Dh6-;}!AN_?mYdimNh9Ry{Fj1xaf4F%u1E<F0&`(kZ>PS&Ca=iHq@*cQBp zDU0jom!8{J$$ljz*ZAn7v{xB>KKD5)Qu5;Z$*7gso>(z-29Y%U8aB9VP6`%qP(-f; zJb2`gNz%vEBOcfW4HM~cb#Ww?1*d6_pxe27YlwgGt?(@5&d^Xtjx^f_CzeQry4Ycs zk2NOqV|)NYqSr~0;-ZE(QZc2f`l2a{Be2CT#OaoDHUgomDOS{~psN%Fk>vYJ1+#+c zi~@b)KYmF&jz@~&)A=vU+DmeUG4K!-V^2wA%rqden+(Q3YhmR>m*;b`16Rt|qa;{$ zb0L<E1|8{&A(34`jZK)2O-Rc*ed`1?KBY`C@wO~i2&1{2?ouA~vE07$NZcfigC!dz z?v*jmZS-PG-+O@eN<FnnH7?(8-x}m7`9KJx0cyW$zbHmFMYALx?YRzb)NOoDLok@1 zK#pcCuVECt+3<*Zj4&BnKP+Ww3Mweys1!Q;5GKRKV|-rx!{H`Sj1-MJvRa7`pOK`f zm3DW^4I|-qSM;^o!lyx;v>fKbr#|*chpqoRis22FC{e)(P@fD*LMFT@BVZVXH%qD@ zRKOPO5b`JSquM7NJ!$zWzF8NA&ew47Ui#?+^Q~A&Suk=Yu;%sxyz28@a8%IzhFWwg zfW8;rzS!xvL`_JfagoRG`7gO^(R=-Fx7Y;Pm<0@P1~uzVBB_&Q1tPK1f=V1-;F2Vv zDztG89e0F~UczI!7lY&65m+#<_0B+?`GUvdaIn876A?i%^k*)?n!mGGQ0aT*8AT7S z;chCh^C}`#iA`t>enNw~kcf}>FXa(waazU`(wF_~mJ>3$K85(vPw2~)JNL)hNa{Hx zKY??@h+3z5jUc?WWgx^aVJ9=}#XK(Diel|F{4*tX>OIKuj+K0AtY&$%28uTyNTG#o zFP%i&sNHUUm!xJV5)T7}YQVC36IW68lJ8AatmduS_QWZq^`8oKnhTWs_AvWngAT^P zWt1W%#yiN@uCLK<I7md;e_D#Ic-gY%lGn>`J2wn)!FNxzKGQ+9fpAfI(pHVsYzaIq zxa>ev-j|l4bogQNn$HyqzWm9ez*L{JUGlQ`@s500qgu)4I{Y|<#5GIMe*LRxe;hLW zWTNjh6NWj1CcF&!(6n)oBw0vn{lIXZ2o5o=h4&AXOfR5Gpqq>n0JH$BxNMCwSLr-} zKrWs&UROHF=`UV=`x9Rz<oj&3Hu-@hKW(OtLR8C2I?oNe71c8ZAMiX!O;w<+w+d`N zQ8q=FGz8O?==ey|-__UtcOZJkM$6DFfBPhkwSBiHp&#oCCaG_|S82Q$zL;}EAjND$ z+?~*5dlMJhopw`e_$mZRuNxzW#PhebBQz^3N7`I`nF1gkbG`3@M#dK7`sVHt4J~4> z%umi5P;2=SIF#+&sK`-XfxW`H3|gIBwc3emG2G61%kD%=qcIdvIt3n_@kW_v7MoXD zva6yz`AenVh+w9m9d&>$a4ORM^G0^zyHD$mV_aaTE+~#;`-1;;ZlI=82flw4GWtc; zq}U*fh*KR#<EDD27-&Gg9d;qj)^uCTfO;Os@sfNrrrIWwR2`P+grhTg6&}|cn1hP5 z38hDbaq`)vZRv(h>r?>w4)^i5uf1!x3LXXFCJ<LNi3x{1w$LTE=*N4P;ib7Qs~h+S z!(o{1B^>zlg)#jEF8ZBJu4CbxSZe(kF6Y}haQd69hh9vSzzHM2G?X-aT*>tzyxaBS zQ<)t9RmHI{@zQ}$M$keQ$iD@1VRB0vgovT!66LoF;EDa!zW7Wyh3y%r9zF9v<5H)~ z(dBdQsY(P?w!JtNZ=;&_HC~Yh9^$b&KWjn38Ft@~XY}Z>JK;>&E7;^ylAZv9)7LyP zf)vDV!AOP~(-{z7iC7Ih`<4TovW{TFG$@dWM2|t_XTU3WqqKt9M4Swp^RV2J8pMWB zN%`bZ8qbq>dr+<`MbB$16QgRRD~C;uJ${K?{?vsIb&-&`*}Xpwktc<KDH!6s6A>bT zmBb49B&`i^YW}bLg>e1dq+)#Qo78p5!W+G#T%j0Dz6K{E<UJ|}uY?}}!cgOvw{v!; zpwOv+wPClWtU2}gaSJdmr(l9y70n1DG%45qgoC9BPTgSCB9bqb^IuH4DUnvfOt7ma zEBph8@jp`Z=iOmE4paaxq^26$*?@LmKf3r|lh7sbQ75?lTfuH9j#;{QMeZby>X>{> zk_XWkSMr>XkKZ;UpnTJ~349|lOiRO!a9c{KdGSQOy-d9D;YIe-&Arg7lF?H?$=R$} zksoVp8Nw8<2IMBjG-n=xdK6R7ReRjO45Zer)o4{#lN*C+@znqLKl-kj0-cR+CB-;u z9|wnxL?mmIOb7|XjwQU9cQ!_;Dd@-OHLaxeTyVstm5=mbVX;a!*CbCdd$zz|`cZv7 zeF1}uV+G11AK(EGx_)aB#JZMuX_P1)cw_8myM8of*QV@XFR0dxw4@{)KYoHc(twLP zT7<oH^)jEYpjVLn`CvirS>Bs&7omoZr2la2x@qnaekXpT3^6(D^g%gtCf>cfah$rv zvwC~hWZ-flzU64a8nbjDAg#Cn^h}X+^jgCPpAtmr`{mRgeiZX(*mXELP!?KbM4$Th z*b5#o%gDJzJOv)rpDrK?ENsh`C3gP-8n$P%KQOwo4WX$Qs(mI5_O)azT@57M2O7TJ z8wR(Mp{DVAGob_#2p^-_@LAh`?Z;ZmX^W*ZpB-$CS|od4`b{VS8^wQRP5)k$o%4gL z-;+=W`D>h~#y?&J3hc@TbBw7Zqa9R>w$@k5SGUww<<F8fYa}C!S&x^H_{Cn(3V68~ z>jNKzOF(`z^E<~BslF)`ga6L2NuSjDmmxLIu9lqbowi>AtH<Gf^o@p4zs&N7z=!>; zbr(Y1_YIF!BV5TftcuA`r&`J;yhE81_1}p6-|cXnWuS(Jg>Q+!L-QPwrE`ycqrA~E zK^^A<4lF1~UNrXlfhQt1{u?`OrOJqtiwD(fd=)64T%blKt31!~4s;mrpMZ9?LyluW z6XxyY`{?)OXNVlG*D_LC#9&ExCMW+;tg&7ao{{qB-~7tQI3Nglm<zuVGd~|Q+p_(e zVge#tNdBhwW2%pzi*Y`($Pap0rAR*(JN2tH&)@VMICtj5fac|8fY+^kA_jl9WGj}+ zS0$)!ZD<(f(w`U+XVes4pFCuDJ)^MICvA<*?A5ffawr?-_eb_2%3kdqIPBmK5wzOK zMD&<$Rg%vY(3d#WkI0`v(DA5r$L|b+gv6yQTVs+3nC+Vy7N3^@kPaSufyUY(3r8)( z)<e#CQA+<%GktALe|aQ^VsP9D*pbDVc3HU|@Aeu;uu`_BEYJ;pXd%FYhdB76Ga&_u z3ZsHVT^EVAv*fE`Gn8d2SbV?4#UC9>UY;5Yq7Z(G8<1-g3&`JrEp^LINb5=^saW~) zs0D~q0TqfiqaV#caC!@^mG37LjJ-=BpkOD>(OLboqFy14C}m}Uq)-3Hor+wc`=eB< zyL+|?fuoTvc)7kg5wk{@H_ZMq_ppq%vL=gnWoIl*l~dssze)4(Hyn`$c6K`VSv}H% z*d^M<B*9;;1j}DF0N=9Os4`1eG88L$Yg&pj_{=y*lCe0@a?Zf|7{L?VE=m=Bli`#; z`yF~#J(FR@>NK+l5Hno#mN;YTA0Li_x4=?o!ZV*NM1At@xO_$IK+K4BECQx{+3L*} z&!*RdjBYLN^*Kf$DOh3#2jk;EI{!l~D0AW8o_rtTF^XT^)(NA1GB_+t&(WsBsiujX zQVo(%X`FTq1oG;pWZG?CXrPtE1d?mPr(kO{9$iW^RTz<oY>WFbzkxUy>np|N=~DO9 zPx`bjZem|aJ1i9WDsly#B#-J_z3=T6{ylan2UnJ!0&|KVl`~#)iVIr$ukO2dZb>Kt zy2xdd-4H^6e63hN0W?icjowxQ#&01LjbfnHG`zBzWZ4pz=q`U;WL2%==%lx6Gt2BB zy>jl(jRLaSXIgDVlg;qPH|VTG#q^1@gDOkC>50I?TQ1Z5voZ$TuFE>TBux*1#6ecj z>a~~a2AmdUiN8OW*V!h*M;jhUj$oN7BqUl@)8!$gCGuP~O#DwmM)lCOD=W%Iqw=g# zL?kc`)k%1zbQr@}{y|5#@h>&4;&e+|QiHw6e1?brn_aB)d-XMb#4!d#wjT8eVG7)( z3+Ixs0gGE<MEfI)tGIc9L7zJ#bqas<HoyhxlVoIvrw~2OM}&P)$F$s>wvf>8m+C9A zk)eCYERj@JKhMdAp(-Zo4vkf_?m@6?3OY2#{?#76@z;+`5jygrD8zCp+Q3N$3NzuW z>l);qIb?9&{NFhDq3~K=1^FixXbmy`>c}`$3YtE_2myurX@kN;2zvrlvhro9XG<?c z-oQ`$R8`!`3^jfml#j1i<c;%Z0ucA>s0V=E=uPbx!|3b;Y>TJuy#9VWK;*lgZxMM) zPp#AiQ6dqz%2F0;%g`uzo8)S*b^Jj!a!UhCo7Jw$@Z^DuFR=hL(lVUv_J{zAK0KxM z$c8|%yL<?ofwkOlt>i}{%Ca$e@!$cnZEG%Bk;7S<Kp#>R7+dwO-^5pvTP~z2)D?sb zp#o67G`ac!-ySO%mejRvzhJzSBKr^btufxpdPRhKOz>cR!@|8cM=wS1__jGLZpd%4 zm{g4LAIS*@T{5v6T{#b_>Uj7xZjaxJZ{A${#rqss3n@y^YzSS-%+^mMy7vY9g|>yt zX7OcDL}~V}Mt`L6dhg_NY1*Zv=$oHJWJ6LB*HH0#ppZ`DqFeG4`G)x}Crot}JxK3s z$n*>m&;55HBb9|&JoIU2Qf8f4`b+eP<B~y95pj=E{P}9S%j5p7?|S8)8#CTUz$!N@ ziYl-gg}~ZfmMjJu`G{}5ue|rmJ|6=hR<N#$k2yZFvYWS5V10do<a<9e7VMY3;RA-n z63#Rnq`H6hOPhluC94ON@GvpiOKyRtCgN*iKSFQf3Q>9Jr1$|^cN9nvOTCzwBU&KR zZF!T827ET~c-{Tt{WeelUw~JE2^>RNUawKlrSxfQ;#qum?<5i_$RzLV`UeDE{{|Qg z$gpU=|03ySn5Q{Y)4t1SGKKgVGm^7dU;$~EoLOVIiG;Q>EEQJuIf0&=SweUr1)N8S z2r1}Foc2fiPc-TrqP9{;0NnWceOKR&nG}fUA%Z>#awspKQ}S^$k|zI}DraL5k7f}Y zM7t%xb^Cowl-LoCT1b##2+UXDt~G{OQ5mxl-*9ZhU}iXof6G$QK3}i&o>X)~e0tan zP9qC1PwBY?_Y6>+)01tD**)NTGjg;Ds+gCTg=hlM=Kkw`+<9P{?$Qav^hW=RVcdcT z>T?_2kMdr%*rgwb7UGw)re6Yyji6W1Dx!4%=Z**eYiLazAk4+qvVFDQ1(Ldx^as{& zaw?0u5>NyEV1EB!l2o8gil{cLgpO3FN6a*_crhrz9_}#8U*+^@XlODS8aMv?i*&jT zy`O<e4*elVB@F=Y1}hq!NFoNi%u5jLmW|}FQB!Jryxtj_rp|L`#gBD9b!)^SS`BrH z%o1BjRzvU>AlK@eU~6;I8VjtVYs-g<AuuNn#*hxKd>a#dx(Qgc_d#dsDV!<mLJ|_4 z$w2UE#8*Gol`q}zPM<yH&tXbajF_Y}$K`RXKQOf%LwH(rMUl|m#V(^ox?H@N%4Tgd z>&Nq@MfTQZ4BY`N=@emu|72GY`q=4Av0nuOp-QTiKXiYEP9>-K5cz@T3TpN5_pX6( z&ypgfvGXi1NBgKT5&*el2<3iHQj|1L14garSLdHlsrfu*WZhDRm}y_!3lez!>rC1h zWrz$5U4(J`8}?Gm#Re5_o5n8|wU;L6)x48=k6ef29pVGZV4gpJKzFLwcB|efn1EL} zZn0S``yk|f*WyY4@3*NPo|)(S@QXu9(>n{R1e#^0y%9=<z*0`+S;iC<<Rn5=cQU51 zELOu(>130#!4K2tT5ARoq0&NtH7ZXD@G!zkpMGgfA*wEJT|MhEhng)%!~mY>?-PC- zJ8EYlO3g88z*sh%hj~|z&9Q2Yc5nj1{Sl(cEKh1jU$AvUjlx5q(Zs6S3ew;#{i@rO z*cd>FJ$>{g8O{5Au&O@NbzdS}_UT@|B*(4w+dyqzrRIdpzB+79NE#U)wPwukeIl8W z*OUQ$lo8$JGH;|_lU|R&6i6RtCg;HvQaP&o=-~bN3+wDm=+;B!_Va*9#lj1Kb%gxe z6TYu;N1aRF7{bCqpB3kk6KihkA2l_7bmm}Jz0keNu--Ulitsxz$x5b&k`VzgJVE$F z=vs5J-3PTk5(1rFfwIve*xQjwl~w*p@#vx>lDH5i<1of@uzEXE5+m4#Ob*W^{j_?M z?>XMlrf<Wq4XohWLaZ8%AZPSBd1yL5Ff-TUr@^Y*={H_OBI+=or`(4T_NNpUB4=1L z4l>B+0{`|M|52qmg02&PQ9D%hQKY2@gyHWV<?-@e!LbQlS*9y^D{m1ZDa0|qEDZ?V zxr~f;BxyptjTu)1h37yvNT^?c`eNYuZ4P@lCk3!XeL=>uysOoHlE;-#+p=1jXKJsc zM{7I7QVeN3b_BZKQYJl5p^E7-bE?_f6m8hFWe$uhNhCQM6l!&t`Ijp)RAo+L52h#l z$ux#}aV-!BC`|MZvLW}RhcF$;EVhI2q>Ud#wTi%>OpVW;`SKYx*>c2x?ZO`?Y7io0 zdv++P;BUIW0Fg@M!;AKRXsMCm7%5x&Qd%59=jA0=MQd~YSv%m<?)vXxJRXAdcg%7x z`E66|n%}%xj4(s~cX^5H-rPUqr8-06kTWNreRr8gS|oA?+U)yPNw+AaPF;RH3LGlF z;d5|7?Wo|Gz?E}+wFH#-O7E+uBU%7QQ;ezZ!s`rjkBWJlwvAnAtrE*u1VErBY6-(K zAO23^qmA5gu2MC5zRW9t;ycMWC`R_5xP}qAh4Gy2|Iiz<0yZW@IqLy$R05boc)shs zcx>zD<rSL@lJw;7MTW3xN8ues%<0ZN%|NwG3|e^@IHZG%t2hGp&5l<Fe|U_>ZY+l_ zwO_8&$!t~<bOrw|pmj~S%5S3^ov@m}AzdelR@V~T9~aZU3EXTa{;Kxz%<En6#brba zOf>F<t;I@Yh@m^6UXQ^Ge7zee&ZTjiN-)j*^K!QfaiRk3H9^wz0Hp06+(pG)w<6<H zCl1y+BuiK-uEhFHN*N16zMu)4xx<MCk`0jKX1C~D-&Neaz<Lc)puG+i%Ls%<uOWw7 z=Jx-+{_3B0W@}k47NAk|=|Q=v5<AaN#NpT2?#40vO;ueTS(SY5!{^(Fvh8)gLlCNE z){e*Qc0h_KxfrZ}=l-3s!ufM9u5%;y^dCp78Q|TcpML>71P9C_Tgz!e)i8hwt=-8< zoM4f~BWaXmq0caa@C2@I_(P%ddt3#=*Y`SHj#ns$|IG?X>Z?(zobdX4SKnxgc_9CL zsOA)3L9<a>jGY-O&p{K2&vbJV&rAJ-fcAI67|x!Tv@WrL)hE}|4yS>N2@vlC-jD5M z%_+A7u-#csmb<6>77i?lO=X=6xQSwvHG*=PoZ&n`b6FlHYT&GsA}=0WUuvt~Js&w1 z2b#lj;FBsCdf6RmEMv&aUfy%98v|{**8nrT<g7i%pQ@KIu*|5N+E4&yXR);UM`ckm zt#>)Ht!Ji^BmubAfTdy$epG5;_&n4GGjx!KQIBL{aR)8SmAEciC@)#=vkYpntmT5i zrRLUa>VSbSHgXwJcNoYrNew(c#K^!hV>G4HpC{qrSk!ldYq!RRqx%k#fSYa8jz4?G zl`B<$6mCTi0)8VCZgNSHa-`mkhlq>#lAyd?9O1*B9DUJ(yw@3uwdRwBr7r0ZWrU7D z{#7Sig*kKWZn?%<Q1AwC=r_sraBCnnX*=cUNfGo0%_Sb)hfL3ZIYu42Fpl&nBBR-u zw!o0x43hd*BBV6~3$FtHv3GN_uw@{n<pN8Ibtcd7Gc#3koPC+KW~qw5YTIiSaa_y{ zu(fKoCM*Wc8X_K&hYW<Zh-EC)-;rj;y3l4pGeMu@(5xe6SxuHt34e15-0dW}@skRt z#g<#!%36s^p<?kdFm*zLG7B;avVy7-=d3dRuWZ-pEy$FJe&xz30j8pI9?6&GON~N5 zv4P(Dx`(ROlfige_?bcSvhsHfY}qh+<>1eok|S?nZbs<Ya`)Jcnb;W%lKDN)VS*|A znP_*N5V;|4E36|X#uoc(vrb9I8}8ovNyG(Z<tg(IiGRCol>-FGZ&AB+?g-z=cY(e3 zhwQ)m)I}bohD3{MA70;HUpwS~lhCTeHt`<_GY|+f-#d9gN#kG;hLWbL2P@6J&g}4u z-2F)z(^yj_P6u-KS6|P5+KgH~(yQ0zG_`H+NglK3v`}G1EByVQhkLUA2@q$W$x$P; zC}r+6W*Mvyh!)D0a=g=+Qqe2qH?LP4rG^3Q6CZ+a66r{rxU!1v1p+Vmet0^Dj=T<d zJ9GX%?HXaYCnOUyWYKo}Bq|0U!On<e%TTe=>lpK+S^;92>BT8{H=0nC5R?y^QdJf3 z#cpu6-J*e4^?Rc9T^L9G!T_%8vak33CHHGsI-9WY8cBQty~NwkCuo~Us}JENb8zqA zpblJxcfCnF+M(^sXw&#?(q_ZucV7>+A<keFf~Pl#O=22oNPQ-K#&#?F+A<yLyWJ;- zUadR3IGP=60~II=lTFSV01YnVp9er>FyPhdmEIBMM7{NFva?YIN|G~J2%AkFp+?J+ zS;ZEXQ_&cz**(yPE@?}b{F6I>Lxq<?5#ka*JO<{!$zGd4jPII_R!{;HGa#$|qjplT zuR6||s}9cL+z-FK87imgaeLO=o2o_FP)?r(F&F_aX#`fX?UmeQEbF`YtOI@ElyG4! zTw;mOT3-2yEsfQs)dfAioaW(rG50Ik03#y?`d0Vzb%9G6AeqgMT0wT9#a3ByBHVuO zz}sDOi@(bZej#;$R&<?sdKxML;>y#z&2C4eaPLRNv{HB_($a^)?e+gPXFEHH3w~i6 zw2uN44Gh{(&~)87Z|}a(j&(YNh{yHQ=gC?w#>A-Q0mEo2#iCd`4{lr*nhlEA*0m$H zAYo7+B9GY6#3%QhUZH@Y4|zy9>Hv7xkt`^6US|Ui24YBASns-Qfx!Ud<cAF%o$Q85 z+J6rc8`va*vB<t)NYo{})eUo~srYLOqdJOqX-B;SmlX;1!otibBE~Sx6~Y@uhG*>P zgEr2nY-?nHnEX54I9%<BL1QIw4uzEHKn;izL7%nE@_uRPUzj!cr<ryf{@l!*=v>q6 z>9}(crUhv!!Y^nCD3gcfw6s$-&5?&iE1S5#WMnx^H9S7=YB5c1PO0T%nj}Ij>to0d zD&BMpG|F<m(m+!|PV0al&4FU@PsIGA?4fJ>Q@@Lv84{0c#j;m)ubR>q-z+l1Wa6L) znJ~1F%ZxZ-KMvDcQGNOX$uxWsct<~r-GQ@ainKnvd&_PJfSS)FS}E1$h4lsM!C$NS zXCvKnf|-V=t4QsO{a1{e=&4BDAoCz{4vSeoS5{a4a5E?DTdfO}D<J_y3~GYv(n_rJ zP0!W2aaoFV?Fd-P5-CfKYH47m6R&OF-w|Udi@NEBAa2t7RIG|b8^VpyHpo3-Dj9&x zUk}nYq8;}ZM{%eunt=Pj{ApYAE)6mqE399q*=Xr{Wp-{EC4g>^<OD%EFvhgZN(Uqu z3M|VAZOg23GNE4<3NCSU+qLr7vGHgv@%Sy33?e~TMW4`IB2&<(kWxga_6kP=QnshU zRL#FC>Mk1bk4A<ljK@}%&n|!H(s^0+!ta=1pN954{wzsdYpA$az%*6<b3TWkIr0n2 zCjd-o79W5O$IH?!d|Wn7XdGm(Q3I&GC}P$X^YZe^tswe&Yr4!U>hl!77)FUge^_*m z%@$P$njn1<&6`)TnSv~L3o^6T@&S321yAoj6cH~_d(c+Uy_sXF&*50Re;Cl199uv{ zZ0!-R;LUBow=Wk|^QSp<#Bhs|D}eAynFO?}Y@;@*U2?YwQc5boYVIBXZybu*yS8B{ zG?YUAJy(hSZ}c<7P0_P~?4QsUM^l_dqUrwQMiS8dXpECVP)7b?ea+h;uwX#azj0OL zm#vTUTQerRO|oo_Nu~ByyG1@xSt-L6{e+cMCgjTQA2;J~5VH<|uuCpizOWhn%V`=N zoq>T4-ntRMlacASodg5oG19asTfRhT2rxb?i&@Hv9Fm(E>>zf{8aK;9DyXFTcVtZv z!7cW8SX@lEPg2m<SO=>jIiS2h#tOD1SYvn$W9ynJ{<2r62_c<-7zS&O6`s=qQ+#j9 z9t|1j5MLxoTRbI$F|>9U(P&mYzBY(U_B$<xyD&Z@Yy3sLK>4`L7XO2D7OK-BE;-Zt zdB-2yD5Fha*H81CB`80q?_8eZ32$~@>Is!iwJcvEvVdM7=dB1hC~9pb$3!y*X7*4a zDO_vFKmt=2tC0A$qe+m5y~sYvE7d?vZsmw>^908})a#)mT+p!5yyQk=YRzd>c2Mdq zUekZ<X4vbH2jpGP6T2<vRVZ#W($TaQyy4gR|Bcy$bU+QN{10|p9C||Wc_ya7+-Qc$ z{S`k;*LhhNMZR5rY->aKL2^SqLX=W^g~Vs-`-kbSsFBvh`z)8CjGjRjevzCfJRa&} z*l-8>c<9S$_NA+~_C9H^I;`q%Rl}s-fu{6{#-@#w66R$3U+#F6kI5NXYg4-C_dW0v zf1A0?53Xxcu{02#l!nX2&8alS3SNeUF6(WClcX)WUzvD7LGXnM6`^ub*qT@_Y;lR7 za62Qk!n~bZne0mvG#kVs_R{Bq@d9J?AvxHZR5lfqTd=_~37*IlM~5cNhf?+Q2LsVY z8#J@4G^9F+EvPd{vk<1kC+pA0jbV$vOBAnnMG{^q0Mli3Dz(Kf)xv;<@Rc}QoyjMe z7pxh7j35vG-O;0PzC#wZgSTLZtIQZU=3-gN!zV&i`$yWN|Ful0LEydj!^+)+UOD8> zXgC$i4%p~T?LFP@NuTlPjE{r=_<Pe}B6i9=cOdtc)E~`gjoyh^ySS)7bzC$7>%>lx zeCqw#d$aREK2*^Hm_Dk(HaynGSvo7y9sz(WL<!w-gerr-=*Dl-H+CofpscKSp@}3z zo>DROBZyyQ=LQF~gIM{DH=DYo8pxgaiS*TO2jkqqC7Bc9hP|1imGgZuF&8?~P{u?K zQZ$@3<@i&h)YzO`eRP6?5;L!=@q8}DUQJINI03}jZ8*;2d0JWThurV(0N-TxP`ACT zASd+2%%7+C+YTES<^0&yW0XHDqeL?5)CPt{jt@_+QRFkaLzG(3kWr|G_!MU0X2wee z+UF1AEGi2^AE`V{&7QScT>3ZtJ+~Ut%2uy}-Y`Y;N-8hH9h@?noa!{*h+IfOis3rH z^VADGp8LEqykO#UMsAT0HYFRkrbO@v0aG@tr1Fe5R_##$4qK<hITmSGZRd^ztjAAZ z9K<OWQ$Br6JAfm!B>_NUk3Hq>8v|YMo*Fg882aJ!l72?Rs10@BT{nszcDEb$L+5E& zX7fY$ar7l`M{q*T2XrbD10%4WI1lIjmHhC1HJRQ5`{$V8F%q-?vm#b)PB*ftrK+*; zH&6Z><kQ(jQYZO<ReZ5d5OD&zh1v#yVBP+bfl18<cO@Lga1G9VlQT4J{lhY+Y6Zm6 zQ5y+{+(_f8I=hJLRv#$XZ_S%pj|ynK2)BWfyraWG;W3Q@(RC>K6EwRk<z>o*!Qat@ z6#6On!Xz4gedCc|6#AzpJ%}@6KvplXc7E0xp)=7i24+x{%>S3-C9fySb`)3OoiImi z@;`$#u8I^J{dY~Fw?;=7))aI73hAvwi}b08gXOns<tklIE<176S$TR<YxS-#VpQm= z;faQQ(Gj#K{DNa_q%tvima5cq?sG8Sy}VL_A0x8KE-_0V`a&oD@=D)F@Rm>bk?N=# ziHf=QM8b$wrECv36ktp=er+O3KDZVyxkm#+M)P_Jw;Nc(b*Cxl*v+y@%^C0O{{Jw* zbN6x_qAdlkuIAz%dm{gvhd2Qhn19R3Ys9n~qyq$PONM^i#W?d&po~?<U(kEW8YlgN z6ev)FBRF*b1pE23VufD^x&2}~k=5r3Wnq%gnbVl;S4E6Xk}UuC?NrY2dJ0evq50h( zqn(ho15L=oo<@Z$G}<v8sw|U#o$4h3aFgJs(2L>JFSe&A4wvM=2JvO|GP3N4lrkBv zW0c~5t^uUG`jL%}HLNwqGv$Cq9zTrY(L{#R3b0g~SN-wY-qs@dy>bO{t}>x39;#w? z5itp=I`<`4_t2;w(mf}%G0UBqAc<hNICz<>t2z2Qw+AnsSYo^OaeBj`-qkZ}_(DBE zhujrI;{2SFKXs15+p_}<a5F#~!G8iabrz4o`S=Y4=tb^Jo^uiWy4NNZOwO%(sUa-V zYHB_o-`oVZ&N&j8)sPNSRA}G>kI$vkZ2P?@03_UVt+ZlZop)PCH7KXf04PKowG3e~ zwshDqr4iBdalTg>^5q49Byi4ddFF6|T4b5}OIiQtUO1RU<X5bZb)M7-dp0HYSu~QG zIs+2C3G5jrgF;OruYsRi8Yy=g(Cd{MUc8-7EaHFN8Q^j<ih1$P@1yC9R&s_g+r?dz zE-$e`luI<BkBEdU8lXk~AQOZhRfp^@xE_6IX2%Rtm<Qi*pbjJ=ErmfkGL`orA1i-q z4=w;m#Ql*<g_T?rWPf4IF!AKe8ueYd%#6cNZ+<KSV+iwHN0!kAvVj$p$G0J`_P9y@ z@Bx;coDy%$RAOuZ3WenSR~3;b&PuxWS-QMO(rt9{-`}J}fN3Ye;^4f~q7{6Skd45! z$m(;zWO-2C!wZ^Mz=e(0?ipautJZ3p|Bn_rdWdoUV8dOqzXTcXqOmH(>(LI=%+_Py ztKFVuDToj)%u`%(7XN)D5jc*+T9!1w4)4yrz55H*81km&MqpEPc>Lc*tRnIg!=z_S zPy*DE7|MdVW;aSx?bVAVPVFBOfa}N)341aRsX&pB#1C`_15j!+m2|ovt1~)TG^qe? z>;J**>irh>uPo1NE_i<+Z+iY>0!RtsP#gh3W{ov|31HXZoV;x+m+Ac|ML_&c6&`Kw zjN9B_!t~o&AjRHiDX-?Fvgg8(R}RHQ*Q1QoHFcSX@TpWITLH)*QcLrz`!e_yqGWjL zY`@|3(=bjw7owF`ec^!87|Q-ySe`b((29~)Wws5nR{DryEK&pPqfY74;hy=KtW1lS zD^Sl^yY~YSOA_s0aNfa+36(W_yeGa2d8Q|4lih>F@lu5)G;cm=jDWbfUB#t$7j{1u zEFSNOz-l6K`oA0Qlr6?Td@6SzGN!yjO*pt<_L^h@AFjMRtwzhEPS{v>D+ziBU@OeI zPs8FyN-*slTX+O4SRVj*=VjsR<BOcDckFH(|Bt@aO0dhYu9e(@5Mv@I5PGKs$8wD* zyaUofgDoco#yS`w+=OE6<!Rt36E;<)ywYZie&yX5L<*#lIAq04$D_S(pcZ*?Vrq$P zloCptSmrsP02xRAwW(n^@s9rczj14cjlGIco9Pdyt7K1aMZZciy|$A98^#ZlnNtMB zd$AIKY5U<PBMm7A#jeV0y@xRNzmN?D_t--n#;z~o{(C5H6L|+Cv`_~5hj5l9ly4P| zUyvmIl71?76HemdyWiYF8)99pTj=&=R~OH!5j9O|R;G9szWER%uWbHln{$9EWap#+ zJJrmAV{d9<7pL4Ucl-1O?TrhP6;Avg8;AKwmFB`**Y{#9YB{J=c&6^9v402{8{)@o z?|eWpdbZp%MzZ|;?!Wz7R=oB4BG^CM+UZ|w7Xt8pfAJG3mD%*@8jeyyMT5W*AKJmH zx^69v0ml8<6O=|RlIh@hL-S(s`y0ssz3&#X#e~n_JY)A?-}G-zToufc$_Y2MB&9=! zNhw>${FimII#ToXfq^&2(CRMo5{-hxal)y@V`CKNZx#9SrI>a-e@7e4OmJT;RmOEC zwDz!p<}y;2sCK?(*?0~mUPYP$_rtf{nNoU!EJ+KF>SkUDM&`i3klzOSk#|hP{xowI zH`A1Sz#68cPI<8HEaObWDh5x~n>W@UKD-q>xC6C?P99?9Ro!v7C*a>i{Am#`2C)R> zH~XP|KqQT@b1zIl>pG9Cn)VtjB3*~3V()3L<$$1=_1H+Eim4W#AXN+hY$h(DwychJ zKlt{$Hip~`mzx&No4{{07t(D2z?b_Fp@f+{@*IJc8rs4@AC_c{;I)hgLp9{PluCRm z`{?GyxxbUmrqb)kwTt=}>|kT#(9m2>@v$OH=<QBw)x7dLq7;6%g9d=w6RSP{mp#YR z{awbt+4nq`|IT>>*jBhACxSKCyp72B7l)AwMfdHADnttaOi(T4>uym&ze(#s+VxO; zi$&^DeHgR;^MNGsSwFxnNW_RFTnbBe6MSX&?08)sHz`BF!_NNTU@e3Dv>wa!^AD&n zXx$CB7#J{OoPOb5K&THz382cLd=b=*HbNZ*aQ2DxkpN|%nQyW;_hKQ;Osa(na1g*L zct7rKV-FgCSW9F*PKS-Aep)opKfx~3`7DJ&0DcD|cK2UdYxY1YO4=m%ATSnI*R)h1 zCl~s6v4HY+RhZ4v#x!)FhN2CF>_!na+|}5*`1gEVu4CiRv^wv^UP2?yvbP?zn@V-v zY_~MC2ptXB|Jp5>Hxo%tTNKbbuAveX17rIXmVc~-+2SBK3WCcLx~p&S6M@r&+PN)( zm75%?X&ONKYk|QUQn)jLASlo}{=Hd!8kvm&ldaw+-w)yE;MePC=cnq2$h6opRaW?e zCd;SQcenn;^fNpz<v@SUy#k;|yr6;df}+GlDY9KW9Rti0<##^8G!X7MWa|lQXDN!K zv#_mVi#H-=w#nr{fjdRMsN6to<Mfwt)Fs|blwbdS5~N{i5)l9hK_Rj!DEOAFDRpRS zj!mxRft|e>ql5vjD>x2M*3$HDtWg}$WhM<(TRl~jbgRm|y6vw6A;18Jozy<&@6SKA zcS()jSau3aO*My=?Ukq(QTS|{62AfK_Bg?_t8dY+CJ+B4?A&Z3LUnmlK)ZLn5I3V^ zMcG4ae$Q$o8ma<qqDsvZ7)hfBj|8#kaD|S81mq13Al>Q`60-y>{7w}SBSlqNzQkh( z=$X=-xY@{(Tg@FS2Ic)AnEZ>-;ehuUZXEM*tKgZ7<<1F0LfK&xeU;(Vih(Z6$%5i) zoLGX|fv)IdZN>oM#6)jQQ(VP?AW(CAz4Q#})dck{CstAp;vs-TvgIfwloWus4M)!X z)sHW|=mAVG$ug{LV1NXFo}IfhX>%Gx#4ePUqfC(N+_IbiiM`ami{-LF{m%E$)RYSI z9_|_6%<WZA?cDTNTr$9!2-*AwBgFDkEY)AfZcD9AL5RGM+um4h)zhOlep`x5L!|P? zOIK+WVBF&AXwj_ugd;!dL6-U>^)BpO9uwpor^^4wf^j}Hr>%J30-+~<r|RdoCsCvN zj1JgGek)axzZi-fD@-oDguTFG*rbR4H=O3ry;C3h0Ey}U35*g2!HtEr3Xv=b3B7%U zV98fa-wfx1oEwm3bY)F8!^2HqmpTjPNLbnh6o;Okp99cL!>UHM7IHlcv(uS>U%>ol z`{0$5x}%ewrYQrtg-PqE8{vl<?+%mN1sr=Z6p?sAP(XF#xH>P1C#WO@(Ci@gQD6CH zkpFp7V;J<T3y$ZSy9115ZmGrKt8bIF`{0&_HK_zVqw^`U`ovnRmf=LroZm&X<7nr- zr|d8`6j~E+2%EwJ%<?MMy4MZQQoE^Ure82vzJP%~ZV+UsJbd#)A3x)u<xKCnOP<!S za4#$;qh-~ADGm>t#ii1p!yr3#rJ@W+o$LAK$Db~-Q2$tP_tRxg{cUyLv42{&p6w}& zU_K73H)NYcj7gXmbHkA)N+DsHB6)Zii%`|pBoWZLcQybGRC^bvr{u$$j3^Hb5kz8F z3kl)@DHKdPg%5Dhy*hXDTyD+!H*%Ho3EDw}2JD4&gI}jtKqlKg5LgS#>bjd8U0ET` zTya}~Ko%@y2{59xYd!XDBfkyjrv0Jc5jhZFapb(^d$Gr>@C>oF)JyPQgM%wu$|Ihu zbn>D>jF#2!cfwgXgyE!l9R%89qBj_akdAl<`jk%Z&^$=@06#nAAYBR^9?paY0w4`3 z{}k+EJYoTi1T3XRG=Hc7Hp*u};#4Z+;{w>NlK)Neb{<<v*1m$3$6T<*lZAa)D0#AU zxqR|muqRaY+Vqo(cR}b%th<8n8rbo>$c=P!21^FU!*oR(s#1NX5PMso_(UNBR6n0a z<ip7f=ZKW#9v?xbnZgg6nW@gA+R{Wsq6b2((2M1&%ZV~4MDd{l5lImC+2)wweUZ1t zz35}JobVql*1`ND_V!LiP+_P`=N`P@m>l;DcYnLpAoEqBaGq07Ru@*m0#f=gppHrH zXoNB>(-XFa_DeABI**{I<akk`$84&N^{@*q-w+;!SuT&)B==m!nr`4h{~wmlF+9$; zYuia0+i7guwr$(CZ99#P#x@!>w$;W?V_V;KKkxT9zh;}v%yph?9ml@QJRE!GNc&)l z=n+SESd_)ku+O#us-El-={t@kD4r10{!^4hNq0cNVPH_{jYWzC<KZbuS+0`}_o6|9 z1VeUI#kKV#;=^>#n(b0TPlcOb6uIF%GOjsXoD`K>o6t5II9?^b4-JqqL6??yy=ela z++0yBqD?6nk7EfSEQn(vqcd81OOqPd6GY@>H8e{KT$1<hDq9$i5oo~;js5|&Gvg2F zoATwifa~C;!WpmdA7DMkz^RYpa#8Q2G8t*p97p}_OSREI4W)jX?-51wB0v6x9qzGw z6i_t~ZChDg2F@4RdDD?@#AZ_9_{e-46{ZjdZgvlu95JOCzXVx#H<mjMS+v!)KHuh4 zpU++M)iXayh^3@B$tfm$QcO0bWA!Pc1tpyK)c-L!c3(B<Lqxks45_5}p(``SeS{k? zLhpK10s%W9%1GOANj}Z%PHOqAQw&?Nm+#fF!1|6p2S-<qum*u+yq3kwv-rcVhrUsc z%q+G#-NDdq4W2jcn~u@1tPtP+JEv=P;H%gvYotllcXi{p)F0sVpWC=npkVhUdSsP^ zo@!$TNVYfz8=!pm??Ny6`UNsTMD-GY6f72m8pP*R2$XhzW&xc1Hn?(58mLP&|G4nd zJ6eb{mp;k{owTmmVm8{<goL2sT@u<%L0l`_IzmQldKrKTp_#@&(DOa%wTA`7J?VCn zEDQI{CLaMBTr&i5*DU&S<-#D|3;i3?yjiZ#i^<-L7b<g2IItpm33D-J|0_x0!c}^^ z1#Uff8C)BzP}n-I*{+D$`sqRRWbF|^!Q}gUM+tbnVXWVV_D!__Wq3p%(=|KU%51%Q zjb1IbKFfo9WP4ND(p!KllUk_)Yy?MhyII63Y2V))A9GRPd(-llHH~V<?L4ba1J!js zT<ll4K~E-&FrLMxjkHbzm5PdZ1~;p8LqhEw+6jYn@0mh&APEBl>RC+5ZQAs_lvHSE zi!ejx#EbEx_QP+i-%^Q+f3|Q}>)-2CF<E7m!l(3i4q3{h=Pp!NJmr7WQ*P`Y7OTDq zqL#!lFzF!%g|<9_5{02!3$Pnc)SUGcj1%^xc`tv6Vyp>gz1c{IsYHlC07!kD!{LSu zwC9mzj;i&=OwCU|xIzvu$kmWKXJBPf2gZLL1e9yex#AW9f<YBwL1hQhoESYSecXF^ zVXrrF({F%!=>JWbXiRD)f^NaS79lQ;t;bU6>N-xG0!62?Ypdi`tB*%$@kajm0qz*f z(V^#E)o8lt0DC<f+Wc7OHCsi8?w5UN_f9fbp6D|XtJTxYQTVUhlGcAmionpfj;FS0 zTI+DlhF6djCDSh^ylnwf{?lB@$3?U>sm0Edo^nHnhla#}iaTLaP2&GB4v$+$z_f&r zhD#I-1ROM!c#(R8LfV&e2l51s2EX15X%T(X5!%kYn+Nh+2}mVzzBP2fDCuJ7CR!Gd zxP(+d6|OP%e^z3_J6!HEAo8Xnf$AJ^O<~KGppK~fb}=x`oW@2-5%scKd}%l}Ceb$N zp=PO|i<Mo_MICC;|E4@R9aL1rt?fiJ{KR*pTrtf6L67=TGdS(cbU6H4G!O-Cff>7n zVWk*LzOs|ZH6$tuO5E@QPBid0$QKz{fpIO18Z_Xg{v&ieG3*|1fHW&U<$5!5c@9$* z*#`aFP}S<F83$ys+FZ-SY$F9ykh>j-dH|fdQ5!Tw8JMgv*1SXF#=-O2C{Ic-{lI$> z$an(<_^C?%_e|L8k<VQsY-u>okqpzm7hzPRcufkx#+a>h`>VA?<NFsZ2uD)JraYBc zJsQ6LI2WWy2>x&F-!>=&`ccu6VEZ>?tr;FyLw+ecJzOBopk@sVEhrurP_@K**5kYs zx4xL9ibddDd$+Imt^?@G0AWvPjR2?Xt=NT2-DF!@iL)kS+Cc3jU$Fz+MHt<vprdn8 zC2*SgF>FNSj@ZmP@zTw|y%5t&F_;{sn*XziYwWg-{J*PbcoLYM5W-wpo{cmiCpJ)d z!eLzRj!hPk2YC>7nM0q+4~Iz^>2Xd9>l6tg?w??i>|rHV^Km5o__%I}Yi0A4XmVZt zc?HMM5d`@S)i_=n_%*kMCB&>y%m)YZGk`b}EX>%H`h_k;&Us1wa;xU$94$UhX-5m& z7Ot*1o-6&^tdP3V7cY@0e3F=4$Y|03h6z4~DRBs;%aJq9ZsP2NhD`qs6vxse2r;?y zMXLcfaL_&zuuQvi%(x1u4XQv<)Gzaram5VZ`u&$lR~goi^VXu3gtG&3P7a=pye)<! zjH1bx$h5;c$za&ql+>zfwt(#&pbLiL{pZkBHJ>^|>C?LzUrLuZG_N@8i@f>qAFP-E zxu`h&doc|*VK(fkXKxe0AiLr52SXA5Zx~hTowMj$cN>`s=3_)kjbrd?q$1@Pu|R4s z-Qzm<v+foDRtp?XB{jIN$YFfA&9q$FHcfC=c~>uri(SMc=`k1RPMwA!F8;9Zk!$cw zOHafd&Q76%XCQm$xhXQo7NBuXunfobdDT{xiN;(x52zv1>!<{5?Es+f-HG_=nWMPw z`+0W!bJU;&X$X}NVM9erjb?mbIQWmjI_1{dV}4qcSqHU`t(iY;I8SeyB1pj8G4i+x zz)S=<F|DE}Fbw53!<c#MH0HGM9tFb%c_6PwU9NlvHYAbJSJ~_5MrT<B;OuH?Rm)6` zgqcugo$*eQm{IczH2>Cc+EVM@5|T#4BKyP@VoD7QSOlXt^2=1#<>N+4@y}(KrX)X` zEVr-)ejaEqi}iA}WNbYQByIK$z4)4y#T`lxxot@Vd3Qv=o8|CKN=rn9g6-TyEnCb` zW7PG=U5At1;X=Gdx-^H8n?g&CLhTkuds{r=U}`C3W1IqOYr9Lj_)TYO^hEqH@5v^p z#1dw%LuH#O!6hZZ8s%-iOcb7|Tgmd!b?X=c3T_>zl|uwrGALeG(w|h^0wnz(yA9Et z=?PcragOX)D|m!n84Fh*(@JXmpFzn%8$q4@`^sbZrP{Qwv-@EuO%7u32STz$8h`jF z`=8J~w^k+%C9PHKr~W%i)G$VGK4qr<6HxfQ^waQFd%laV$qpiSZ$kTt)-%>p689#1 zYC<g?{puB8_0^BXXgJHX%1VEB44u+8RuH3zVIIK_oKE<oM~F4)!7lP0OnBg02_(*l zoreNv;tg`JB&9-L#;n}eXn|@rAsl_dW@DB&+*HR3wyvyZOy81=r%kjRE!$3)3=U8S zWRP6FT%c<6*`f&4D(mN0STjEL09fXv<xPPyr#EyV#a*(>Ge#tV2jqbZCqQ~F%d9b! zpHkgjuuSb%mmVJwhGL5UXKW&4b+aCt@5nh@Jz;C;&+R1m!Jf^Z1Zj27Pe@|a7rp_e zB6NO+!k$V1$BGN_Hi(MCr$^KzMa&7q=GkU}6azuAZ~afukxec`Y*PhVUZbVJqxy*% zGi=lp?AbU827Yv|nO?Iyf%u?9#>M<6?$_JAYCZo3b7#9NM>v#dv2g`-fd@>phPlE- zngoF`7qN-8lwzddk1+eYx>kRWXUPH8l#AS{KZo_O_-WCE$5F4V`*~w!k2Xi`IU|#c z2On_8dzoCg&TxnAvK*0=g*s#Fl$SmMi_RNrJdPrE;(038pY_Ob`tH%`>Q@E&8__Qo z$+|<oo1KA{aQkpslZ<)jgt7!4ns*<VkkI^`9XuYHSJk%zBiVP2Ifm|!WMjh)uh1qZ zJ+<%Kzo=0Y;)hF-fidY-S8eFU9p2J-Y?~z3HKLxGm(I87o3;m)a{M*87$_)ev^sw8 zpk^jBcHOqhawJ(XEHuY7I|77C@ZM12o%u@QFRNWc?x<Te@U7xMdOq5BW6MCvWj6fh zZcar^!Q$U1z__;Px$&Q4qJw{s*_mzVskwN$;xeC4+NotoqX}Vot{$Nm{J&tFfV4B& zkS~}?Yu0Gif{t9MSWpPcqUrlfV@T`&0xuUOeBYI5@h`O$-^g8o^DXUF{W%}7j`hw> zne4VC;<Y9X$W+3?d(%=uJb%E895X?m;Fk~_P%7m67o3lhsTi9|Nm#|@aH~%45c2^w z7y7YtUEy&pxpY07x|{IN-QQ9fERG2MnNOuCS{uqXIpE`FF11HB+7HSJRT3}cL>W#m zBKz*ly_b?$$0~X@109#4i=If~IaM=Zd(|4q6Xn9bL^P0yXO33?_$0Wl5CdErdiDTd zB8fuYhfP!hczi4C)c%@Ic9Vl#b_qZ)eDxkoahe`-CxPk+MFmDnexyp&HHrT2K@?4= zW{f^^rs0*vh(k-aGx6x^|Ir@`<mAL5isz#?BVb54VA_@=6Tz5)<si>oid9b{(PLIy zY~&+}2hNjCguu$K0j#!$ZCM>`3IttoJoZl+IE}PE!yBz+*}R92a#hu7KDD3=lncH8 zEvBY3{yW6opa7ktm$;JfC=*I)UCf+q!k6e0sOQjPW$w79pXND}lM>B?_e`Vgra+L5 zK^tBcD9aYaianJmR*Ds%#niUran`P$6ZUEw$97n_RA(p%w3Lplh2ki$<5i6@K*1NM za_NfFCeO+ph`plT@QVlS2YE5O{6k0V^PhK?2eM@%2%tj5pwg%sa=l_nsGAJbJqDn7 zBwAVHRq2ifc4IvfNh%+HH_8n)<QF)4HkI}GHC}oP$9CD9XVm<4%<&kdh_?5X5xOZ| zc`VRF9?g<wLX&e(qDKu~t&N^7kHD@A7Meo?5=j-9i%YV(P_p|<`noJwe+b?<jSMw6 zFEu2lt|VNkiGA%6Yn=jkY<i|VwuyB6s_xI^hHmgAS9wVB64xkp$-uqfag;|rjVQ#& zWzWqls!T#3u6EJ#xv?HgqNYD&Iye>Uihy`2H0zdEe2`Uf7#zjbKfGvBXhW!T4lNf? z$~(15z})GKy?3=Gab!sMo5LJ}0C@0VXAz5*+rJEkKsvX)3>`rl;!Bu|(fnHv{3kC@ zlE)W-U9Vh)H+|y%mC;y7R$D#2J(LG#oqW0DA5|zJ!|L%4z@?KN?7HcRvpRYA`~M|7 z=Dz<mdU<9KS!E(9<^HwE`XMp5-*eLVf1sBfWF7riF4bH8DeQw!nWPc=yG;mcmmW3{ zilm7lNzwsmW=uAR)sK2rm1#$HJEZQU#-3EvKz`;<HI*#|EAy+mbN@Kguq-s*{-$8D zj*t+iMfH!q)@w|0eHU!;E)~{kiD4FrgW@%s@hix<5DaC++GTy7if`NV&j@Idd`-I# z{}}?gaZPPn2tA`$+w1#kg#53a#Y$1LYtQugqnTHLfMv~<-Z@tiKy!qd&`4)6$khU_ za{x<p^SyI_f9xcEyG}Zev!|LE=pNNI;DLMXfdO9VB(hCv7(xx~e7MeXmh~Z?6iEb^ z)-aX@x6O1aLP6TynMyW>4EjquJ$P&~8s8Za^d+QO%`ik$u|KR6VUoc3tI*6#@W*bC z7jcs`FgjfKp<G-*kSEiO>64h}kf%I8T`%B)78zv~bvJH%k4R3r()j`c4|I3kX-RqZ zod~K%e4Qz%^fhYJh-ynyhT-Gwmm?QY@gc*e->By)@^Gxi0)ZV?P!UShwnXPQ6#yur z@7joN&M;Z`$j@;ANfYwXpWOKVU{n@s19geYUHd~1uTslaW_C1PgrJ`b`PPq9neyC6 zOQZ`mbb8kg+m0r0@2}TnvxImtYeh?eMixV?U3$-D@`XKO-u-iAC`rFmWI2g;=Py-_ z>91ilQ9ICX&>Ny7>FiOTwgnHvr)bXrtzFw}0^UDAc)FWP#JyN84t-?{HLvs2U<8+U z2rJJOBguoRlpXM3Dn|L5il(*MY*xDolDsxnvka-mW++m9AQn|O_5P!kbSZ__?&#BS z8<LzbJN%UUWmcj)4hI=gmvZipzx$nwYjGiOGdHsXcMcA|AeCw+0m`k!0{b!>>(q~N zR}Q;@R(u9@2qczh)k?r_mtNZ*>HT5Q1Nr!(f6D1_$d*)>x~pCV|H6wAcwmSJq6UF8 zsf787C@1+1C>Pbf>F@tL*-Er>pUH4Hp!D`7-GQk%Mzk@nC#d1Nbk-aC-uw$3RTV$V zTM`Vo(PX9b1el;acZW7OfrqOwKIC~kTe4=k`=+NS8oI4X;HJ>z&HQQi(GayIGPGKs z#x0bIIvW0ulb?^Ar4TC)Su)Dq>}(!(>eJh7v;=(oDw7mG$o6oekSxR}L)mr%uy<jj zQZ27$&oM6W&tITIN1dC8G))<m=q}#*Tu|J<L)wJGqW}@>6BtFY)IH+wQgDo%2<@q5 zgtA(mYZ5prYYNpZ+ed$GeF#mttSNq0!y$5tx3O|Q0l1C@#?5Xi&<J1;`CJzIitM7t z4kyNOOd+cyF0<faN7*wOx}s#jR})-|qKKC^Pe^}acg`B89;Wbve2UktnZoS!R1pyz z7@}vK2i79{Pw%Q}Z{<FpvVI<bFwFJ9@1;QtV(kJuEhI*BDPIqfLt|N{(VWG}%_k`j z&L?&ci6<4zi%<Cm^A=xE(^aYj!QuX<yJm9o7{DEnqcLFvB}lXbV>J@+gDDS6$`vat z+l0plOo&|A$JqH<-SmqJRFGA<RJ+S&uLqkL?d6=c=4rZ|$;hpP!uYIn%O#f$M$Mz( zk{XyVuzx-pdD^eO*Qw}D?X$<P9Mq5Lw}X}$zhz$Iwjy~#SQ?#0F+6T+cHpU2f+5|A z`LXV(S8ORtL6i;JkP^UDj(puF8E-&Sdt6$6B7>ec)TT`nuzk1eiYd<U3sgd`!Q0aM zyLQS8NP+0y2GN51`i+UHqzofve;mnoHH1F=1}_>kD(a{hh)2e#4L<)L%P{&$^2nvD zjTKY<(^1$CqGzBHIju(ULL~k%%%e&2m}Nqpa?5AZv`yNz?C|X*WE+?lXpk~m^;G95 zo{BpRd=v?L8!=^-#^$7-&TfZ4n`r*+I~C4P>XZY!7cQTN>)|9$e=!^x6R~WJA)}<$ zsh5pEMyDyrr-D({@JHNT_A+exr~irFkaIs7vGR@ZI$P`vl@XtATux$)1qua~5050e z^HQ}&|AMAQ09)y;R)}Bt+9(a0z&u+2iECsx<$L#M<6LV(<e}=Xi;%cmHZh6f@_%oi z4asq?Y(F1!I3^$;K{Rd{?t4~21VMfq{igm+_#0S6#)G+0woO1hg&dc{tz&gE{>Ve< zY#kIsLF2=B!%nZb+?sZ>39nmJ+#Kq>-AjEVDE5nXrd)|3NCdW0T?wq{%#1&uvOQkf zLO9T$dOcYsHe8<BSu8DLecRHp>J<x?GaYqQY2yOgf;>7UU0K-=)ZP#WiHe}L?|(tD z6su`%jZ3w4mZ=O*E2;DO7oza{Iqg1qKQ>`KI79~C6&h(t*_hXH^P4zX1qV3)P?HZd zW5x-W{q4zY>BJlMt$(gCZ0sA<WvCz1PP*3?Nfr#w{rb@iT&YHd0wO-pfuoJSYV&tl zC$FAVlt?oYc-hgc+(xWk(g@r_mhw;CxvJnUXzJ8lWAynD6(XMV$us#QJyD+iW;i&m z4*5AK^!sMv{yh?OA9Niwh6w8Kzy$JtjZA>BD1$zV^uxU;9mEjiA29=GE~PJzXiVcu zT75VEwU?PBk7}@AzwoZG*L9(}R_rSv;$@exP~n*tQ6o}(23%*{#3E8R9LWHvAHJO& z3;KRELIkXl2;7Pj*wkMJ=?B3TMSLgy#f%z`FX}ay(v8-D1b9JbOxdhCfv@$IpMHO| zv&8TKGP8boC22t?6}n)rlaX516wfeN6VcM&SsirPb&i<!r!tSX6=4G5e_M`c2n=Z$ zfqlr=j>|oU589ftaS`FFqWU*nqqnBZ&y~e-l|zgY^eh_^e^PulM6*hGD^1s*eTw_F zpI=q>E)IIN=U;PybE65{^ONf+`XYmUBE9=Nl+hlHS4hflx*Pj@`0^H+<8s(FOx|tF zm+F#jufHg|Q@`9$EoynD_qt^E0EKtjU|ld$zu4}Gmg#HN-e-r=AWV_C_P}d!8Hg;P z2M_`HxV&?N2tj7dzK{z8@@`8Kv&Lb6??lON(!}Ug<mt@vCjT7x(B1~l?dHM4V16n9 ze-~^h0w3o@fNFL94^#t8(0p1=00s9bv8mJx*6~)C)BqNfLR)(o79$e8$9);5Z6Dz^ zkniM02H;IxU0@;FPTB6KVZjS1bQkvT^z-t$WPhs96brCm6g|NoOGcv7EdyelDZz0E z5K+kesF(yEl#cmwNPS*JHIu(SLO_(G<Du9?E%kA@)|zp}aaq<6W8N}U5~tnWA)$Z> zqS~oqZ|nS#{QJEM$Mouu?vJ<nLH+CKd#H#Il>T@p<wL$4k~6DbOT%jI&vm1!4u6+j z_wQ}6k64~t>DIu*B_j?H*pi}9;Sj8G<Lt;(YBKcM3Dc9=SLG>mKmblwquVTUTi!%4 z?VGnLmoW5OycX=yPf;U~YNGr~YQ#WsFtqFGC6r748DtFpd}M0>x<$ZjLyx~Po|%4X zh@_p=3uANyLxXiWpy&Ku?VqAUd~TSuNE(shA3ojRup-Bx6G@PEp@dHVfIZ_9e*klE zI<ld@mlmn*h5*$LLG;)Y)F{y{OsfU}FZyFVK`j}uhcZ6}uP&y5mKK))d04Vmd795i z{anui^w21x&z{ytt3(xvQZos%z60uU7DK@Eo}!Iln<}uV{K0Qjloeg|^yQhfdL=mR ztj@0Rm<I4-^u)i1*zDp~+I%LUy79FIbN+_fVc|Lyks-#kb_lRT=}}BdwX1)rDVfqf zl(j`oz#kr8XnSuFI=+z+_Xv6VtqHJqdQO%c0_2#)*h3zJ%lcoPT--|+X*U5w;HYwc z?Qg%|J1A!UlYdrx>qu)m{fvHRIpeDT+78Kc0{(sZ1<*jl67xlo_I|cCOygUhQH%A+ zCRmnm715T|B<IRg9V(wcv*<!{g8Z<V>6taZ!A{M0f0^H@%58X>Uin2?6*Ij<H_U4o zx=0lejO+9hn-aWx&EFp!G3oW?ywOP!Gs$DAC<XYHnel#B&@dX%dtZ_2Q&%ST9)i3z z?2~I<y-m5QAAV{O^-=E=Mn%m$sf}(qTd^Bh#>F0n+5B*zmxo_!wfC^4sPpYL6{5PH zFr$>79E}tOGoFK~*EsLxOLG#mbUx!;gE}jY|HrO~Dek~(|Fk*UNfDx}d=lsJ(_)RM z3i*o^gj%T%AAfutGF|mjPY*ka+d`x&*>OW&8p6X>;wMm-#;vmXB1o?MU`VF7lc#@x z0V0NLu{xB|zK=jwD4owBm?roMrR-wuKTjL1q=)Jwl7`tOkN>y+edh`_nJdrpc6^s; zjHkG=B^yCOr^SOj8M+a8r+c@E`bB(s+cN>ipuC_z$h7(fz^7{Eh>!+50FE@GlT`J; zyRw_oJU-pO%dM&BVYF}h^U*!4NrHCa^tYShFeS^tdlG(R2ZwM(-W6M%P8%qQ-0%0Y zgNlvU#l>=am}W}=&kZ43(2#i#kbQ?VfF#gP?RP)m>B*0YQlM9LLhw~N-$$69Wck5+ zLkbSe_ff*P7p*pcb1y+g6yYj2L3>ohWAmpt5LV|iE`-+dkjc=z#J>P&HEaPA%mca1 zR^fprJ8oK#vJE3GKaQ+(2%n=%ARExc@lap!ft=7*N=M!`Og4wl&mXY41=iMA_WpE* zcKCErS5I+}>>=&D5jiPma@68=D*XCE+)a04fb+4oRA08@D8H+7bl?uTMV|w^^yb$x zE3Z0<qm*4_-jB0f#H{7m0K(uX6iGf8rm!%RyPpqh5jZL1-4w|__P6rjAOp!kazSZD zg0{|e;ryb^zz_*lmyfo2Hmy|P3ow`*E9T(idcBbdXM$8OZxdMOI90n{v`rTPu~1(k z5oqz_(6|0MlyiOkDD0tZ(aHPt)mg%W$^yhc57Hiw5~HCeyA#|LcW3j6@0!96M(!P! z@PHC-((v&gheNylN}hmKf1<J*UixdGOHtTKv%_-dl<;r^iEtKZRZ@*y?)|eSOTnsD zf?=?hv#cb?ex28O&2;=QMU#)2sE@HJ0AP|>*{>UmTfq=O{CzK44*J%}-m-c;o6UCi zRC{!h!-vEC7CrzKT+HMh-h6wMN)vDuh*xwn{`oT*PX0)YwkrTo#PEX!%>{R(B!7N@ zUK5$KO;|ow9|8F#wB+fJVIj#mRRq6QWDmV3IL$If**r`+q<e7=SISZ=*aW~v<Sg&b z0pQ)e*P37+%CTN)i!X03mbC-cgJYE`<6baI`o`w|KdtUK6E-Un=LgVDofTzocuYGM z%x0PhmlPem59SDNXF3jt6>UvEvRku`F-+GId|Mc>587njEVbsIX+qcU)4GxM^pv1< zsmCy5ocwqc8WA!j{}ZcY@#;IE%*=-ojOc9c=358AcrSM1$1vJz%j0_4uiG?6^Cvpm z2O@uv%G-&{mw0GN@(v&&n~UqJbWITtON(GFIV8*s4Goe4A=t91b&RTlU!5tgJ!+tE zAfup4^K!Z7R5}9KK=vgNQOS%!=L1%YqpN}iFAQ3=oM?Tb8WJc->Fs8Zi2|S|BOouR z+U2M6dvwu6PTH*O^tDeFbUIm$T2U}niEt|V@k!%|kw)HNDR!1}_Y50}rsc|0@ezE~ z^_I<?lh)(X;-ZSLfGI1iy3aw#?S?{JHxzEiqe7zB=o-e{V`61hz))G6&jzKw@&T!g zOcwXp7FL&ow%rh`QX#$tU84_)NbDJnrRC65wo1bhVABYXUZ;rlp#GouvoK&BWz}DB zCu}->DA2M$MilY}?LPhpFxOcaR>yC-`9dxZ%2SJ9m26c$JMzh=EFsLMVh}QNZ7jmb z0iN}Za%fwR8HtSl>fc>}*ahjII0H-GqZCJksmLE9D;R?>FQadnt~ls9`2yDc3;hU6 zSaFQGxmi|Kc8YcoFRm_aY$N51a34VDdH6-LY0%tBXL#%OPr2`;sl|&<$@i$7c3sY` zC+lT_OQ+=nq4gUbpje-T{H`bLB@7lUgd%i4SKE!(Fh-t^^RZ@ZmN^NwazjWCm?cSO zc-c}c5vs@)V$9ogF}u1#i<P**MOBIP^01}5FhdKRVu#XG1n73uDu8PqxT?y<bpGMW zKf+J%MoaL?y@QH3EL8@*yc{dv#9L%Cyy`bb)pLF2idu&ATt6#7IV?`WqI>uzGoXQt zG_9%Dw=FC!904K#s(j;h59Tpo;e=!NYPVPKRkL^@??wKjlRhNwH+wJ*N`SaBT0DQ- zZg~YF61iDcZ1wS%4RM`M?GJqfKl9x#FP0Vct8K>)xuzvC0<^B$5<ITjh1yH~+V4v_ z3A%^rHUx?lW{hV9NL&yLSoTQtqj`7E<Oh>)2d-;}v3+fDSZNA`Vig_*P|%>5jmH3z zdOuqmcO7utn@qm6r*M{2+V~1WI-#oZF)#_R?Lcy|PP(lC9Z7wqO1@sO`FR)lVezI= zF()AWOanc0^fNnW!dlW$)q4t{#F(;LAN+a^4RJ;fM+8RCZ(wM`wfj>QMGRcs%5!`e zOrIFZwXAu=Qg>zGT6;2;Aq7F1O%wNz`G98jUXX){0#NiU@@$accF3v%$qale?SNOe zL8!t|ZDrc{%eIR$zV-g*E;G#uM9KRSEN=h1-)7E}>SbH&Qas0`u+)(~z_T?;+wK=U zDg@r%iI?6tY@?hP-4L371GW>3Pu#h+?rNfoRlPde>A(%;PJ9)cT7hT)@M+J7aFYs7 z;7S`#K*@z0Vp}K}udL2@z7zKcod*f*=q8)|6euitGDDUA${Ezf?*cG&sdI$%w03p5 z@jYsd=Meq_&j4Soa7gRcHcb};4iU5U%L8P%u^D1{FtO+`PWGqg+EexDw24~B=Ns`x z2aFM?7v<d<c<)?N4@?7An!kbb%>lSAkU?cGLI0OJop^v@`zFY;BRQ@@s5e%bUTf%I z>0~o(NV;xawWY96b`qm#(kkV_(Uy@mQy+%k<h4w)+Cey2fr997#-z(lLs|e0jd}DH z1+ro^LA7#;Fl{z`OL9+zh2XHfVF>6pFUsOy!(8v$)35}$ccr;U7ewrc;d@ev1z?;; z4}WJW@m`R|!=NAAz$Rj0^!lkR_}M#kyI*Ip2U-U429f$fD<4n8xich$yNN)8gj@rY zN6x!avR}9?HfjWYmBt~R&Z@(DKfH2DUZ6{g{rz{Hqu5su5?<8@6$=5<A3*m&2hUfj z@&}k+z;uuV0(n4RnVZ4HPRbgSVCxsPh*4t}c&ux9m<fq=CQ|j1!fcD1MtVUYP-Vv8 zMFKMiJxpE;;4N%EY27}OqTw*O(@KRCz}!)+#6tRn0Nrme(x$Qvs7GO(mP1)S7l;>i z2Nf{>4Q(>gxriy>D;82r{3tbox#JM^v1%LugQDmUu{-!(36?LC`A2&0<sX0D-G}dy z*xz91%W_|#2aAKhGi8VI-lcHlrAre=5P$n4d=}4e*t5>UgZ{0LEQx1hHxrx01}0I% zqEAQotD%wXICiN$0BdK9>&%3qBUknJ#V#NBu4q)lDi+}vcH=sDwaR|2)>J+QG%&JD zpkSMPvRJCFcZj2Q6AVYb%WI|96cqVORQ>nMIyvFPz2!;cUXfG1-SPOHX5g}4kG%r2 zpmD7w22dMt7(vRTF4quFRj4ug_v~I*nCI(gWxt-4^tP#B`uF`7Ryv7y2$v&W2I!Ih z)TR~P!6{TH<DW`3U{xch9|6f-(R?&QV5{<Iz9`I%CMc4Sr;tP=82AmE`L1tr$_9LF zO9qF*qE~ltgOmE91KdU=PZMbiOvorxf8-9>bfbG}cpz#~EtmcsEJQh~to9LXG#2DG z%?n{jlpZA4qG%qm^l904pR};2YP(-S|DRpoUw4ByMXBQm5{@i(Oz?*gW3G=s9pT{1 zBiEWw#ny@^X;uX5jcTMWIPWqz2q>d()4>e~-;i0(nSf6A*ac)ai?Ms>PnGOAUD>V? z+Q}730hb-X{nAXZ6m_Ylrx*qPG@!YIge^uhqJH-!1`^WP53pcB78>4L=RM>l?p-<i z+xj`2DA~@2K2n6cK^l^PlRO>iW+s(x0?m*CllRX>8u`EnW2}y?#Ai1aplVI~?+JL@ ze+lmyjl;CvmjkDI9$?o8p|-Cw7Dw5S(+|Kw<Ke=OM1QfCutiHWtF}5G_e?fOi0>P6 zX@6V41{0eLrBlv}`x|z;zz1BN^oc9}^x@8}_f*wxolEm$7BP<XWDxU8fngdeN|Qx& zHV*))EM+{r6C)LC{r_}XmEr{|9r`ZZrFYQ~EBgXtMHFMcP^L#x*}z=HQlEG1M;m;3 z`RkhMsa`=;mL!hqnjX&hT00L1vuQXmIug<XwF#N|jqaqN2JY{QTv|c<6_ETbZ~R4) zb!*tVX$FE#b;V!MS=5aP>bV&01n<*}s7ac*{4b5J;g<L50;0W{oo?QDX<JUgTPJZh z;uR?Zr0-<3RE7dkyFT2DiyI%Apg2TtQUj69PZ*<&%|Kb}Z?dlaE1l|xzF0IW6h5o= zuuV#R-o<l#2)l{o^B@{BaOAFVLL9#Tq4MIlzq_u*^9nc^`VDuZD!~{)@>n|DU!hzF zN{cGSRobVH)wVt}lc7H%uW=t}IX~LwkMg!(GDAC1RC@e`E|T#Ny=h2it4bMv<!Wa2 z;-boaXaWUJ>S6+K>=jr8$qH8)_K2sTGUS+Z3BGyep2PdsqX91G+f5*IX3yM>>txfK z=;6LXk?6yA`$(=)ji)$H-p-2!)@y7G4eh~luU@`2{sM^_%D3Yj?e^G?%E1R!2-v8h znv?D~JTfi9bQadGc&AC!vJ`b&Lp1vtox0hQErGmXdlpA5C8ZC>En^v-jXfb9w!JN# zfZY!LwA}&xD;aB*yCeF0pV6GXJc4-Zo~CynO5+rH@L3_^8U*fJ&cH;Fd+<u(#7TNY z6=^;dPvXLX`<ujo5cBoWJ*kWI&omn#l$rI#iw4Mz7Ubo{mQ)QdwBl{s5;=#`n}O@{ zsHjOp9{AtA>T%2kNB9rUr1nG1oX@k8KChb<@mUtgFw{_dlz$fvjP!7F5zC7}Z7Xm5 z@6X9Dpn4K~Qn>B?7tE(s)UzQy)qrG78VY!QM)_9I0b(fo7d16_7i)eoAe4Z(`jP5r zwx`r6J8ObRqG@0Agwc_%M~>J``m{X100w{_r*j85)v4iqjwL^SEYHp6sabtK5otav zvVg0*DnLSn?)8r|;{s375uG1hgsK&On9L4g0j5P++J<kHgLuj?cphAqj@1a;sY-%; zN`>**>~NB4dx`%J9lPw&p7}z9ca);|P7l`BVtCt3u%0i90qf%Wd@Ma=F6)b0$##^k z1x+k~gM7TzAY<U^`8F>^FZ2#RubO)SgRdcr1VrIDJlZW#WAW0l4dJ{wn<?*oM@1Hs zH#Vv=9b@DuQgsvI4$9XVdGeaNmxv7hp7=00!>f~TRa-Lz<TCvM{OXS7b~1Fta?-7s z8Z_I1y3Der8gN^j((IA#&8lL2#VOi(Z@a8y2eC4c9;_5<r=N(d55pWy?c^N1rcEzm zsQY|lO;8W_Wi7TNvv*-F!0hZB=UiJJr%pO-K-uma@EE0p@KtTsD~pn))R3xe)z`o- zkjeCjv4pHHaTu3_d_d)3Y|m4*@}KEvQ-+!zP(#_iu+lb=87t4QHR$#R1#7%{Fyka# z#TNL!lQT9UYH?k4{AtseKwgT=WwUT8SGlw`GZ{v5E0tDW-^CA*<FQ+|N2yKWrNuFG z@=synN8In)g*mmL){m;!{BVQTvSM}G;aVdj0Kqq_f#g3_0X*gtHb0QvB<&5Y%-2)b zwbIj^8r<osg94jOI^NC2Oz5hJsc#YUDe}1w^c)|Qb1?`M96If9Wv;JFE{5y?mCkTd zTfO_!xRED~G=Tb$5Vj(X;R-k*6jqMKLH->4VirbsbvTyaYPI(K$hbx{Yn}WL;%GKX z2m~m8ij|;^^FswCeQr8iA6$)HKusSVyuBH-Lce<uKU$j`;?%6;$JkipgLF1TkeS5z zKHhr9wg2Rdg31Ur{CToAT@|LFn#L!H?5N+v-6+BVA_21BXq=Ww5aR{a9J;(?7e#Ne z>6>Xf(~KdGhxX6U0mJT7un~oPsanus=koiMO;7?8d-_wNq=RaQf2gww+n?D}H^#QS zG?@BPuWuwmzSjfd$}IfqO+UnXKpQ|?=SO=?Dy0}X{#!&DylM@|Fh7Jxnv(p<I>7z4 z9t!PT?#@Ul|A*|f2@&Fc0MJCTc|D3QUmG51v)im(=1oHnZ#8#_0}1&16b|Vp%zH<T z^L)H#El?R^9%~YN>W{kXI5GMV``>gZ9~U=#=7ke$Kx>cW`^&FlAh@~ig$wrU`dECu zp~`&w)>`}$SeiqK>@Rr{1V{JNIol8CnLa-kvqT4376P5MRrx$Kt5ZRS{vN5Mh|QG9 z?jOc^)XxYk=0g+BoZ=aw21Q<4KV%X$+>t26cte}ZmTj&O{2+D)qm?cBuY#vh4*6w* zj=*vnCtD<-_F1$l-uhIN_1?M1Oev&wHEHq<V7xt3)bbo&>`UY-m-7QLPyn4D``#*W zM-LlVERxeowe3!90H#N?b!@ekOVt48a=GkM>zt<clDo!4Z*qLKE^%6Y=)CFt-W$ur z!I$FhbUvRBdSg`Dgj_m?qm9x-N0N3eAQq+FUjt}KEZbe>IZDfU0NuC-Fz`l~xSwh? z=YjY|++L6=dxR%i3FvN)kDFpJtRq9Fi&C4BMF0>7YF{O~_UU3206}yAr0d!!=HVh0 zg$C7}N6byOeh(1dxsD!{G%0!cj*7~M|L#rPEbUoN@#Y(GD_WjRYqvsYu<@@77(NRX z3y%$^6V8mGvu{7`dXBGVAY9(-xl|tZX(!3Xc??-L!H7kmLhubL74rXAaqhWK;*@_9 zJ7R@Bi0ma5&YYjjTaoUGN`ky}^=Fq}@u)lGe`PKy)q~ScwFyu}A*;bXAH$aj+(*`` zee)YsF64h>-Vf6ffg|Spo8c29N|7`Pzd}|o%D2oEP#R3@6mSS6m@sueOOn37!wQcW zi$H@cH3Xy@<a%e426Q^@yRAP}EA)~H$LvE!qou^lVT>r;x`|O<>0GelqmScLo>YBh z6Y=Oa*{}&d79O8qE5e##5^j5O|F}a)BPa0rzL*VDj~X8r7QT?O2_Hk29(xIhPJegy zx?X3P&zubxG@*!1v8tngA|*crlp)*r8TOC$FFO4<_}^Tj4y;H1r@vhxji@PJKnx>2 z!ubvII>c{BxdLxM%UNb<iBuqSH_)3oNF8}(8ca=iTjdYlX>9=>wT<EL@!zXX^@j{= zxz(MDHV}e)yV@r<ih@|qit6BwA@a`J?CYelFX>5!-CC9F3b<G{iiQw;s>=EdQFak@ z&D{_3W%{;Sg5yeUdgc1I+Vx}SBm5@H(lumL)umqw$xAcwL#3-Z0TWH>Yypo-p8SVF z*~q%lvMXYOE>84^xo^@}np3j}Zg1(=GvH49VdF{?@oVTljEf2K=*fuP<}5ggGHS=$ zw9@sMc#0?BaQhru767Fmy$i9}tOB=B<wj4}D~CDer$+YHg!EyAjcB5oTMT;!)ND=| z&cf@A%1?fCrr0owew`xPabQAkb~E9>5}X*M2Gl3aLSlC_)&q8abFnQzy(cHjZ%qAl zI}1lzX!&5hE<L7^F|gD+eJjZ8kV?WF+Pal$;V^sB^>nbz!{wC;(J1WI5(eTNAlJ=e z<i#<xZFLbf5^?((Q2`!BD_nv~&b91%O(#qGSL5{UcHr;;aRvAGHMN{jCOTp@C68X3 zF8yO>4ug)7E^ojpXclma*k~iHxA1t1SSB^u-RGA7k(oH6?9vJOwTQ6MY6Wm>x?_mi zIz38ODh2qRg58<g053`QhmO!MklXoIX-y5r`1dg8Tea3N^Ttzi2Ep#&VwCao`nZdq zaqSq9NKNKsKCvbme;9mw?m)~NCsHj0sFmyD@Y%*!R=EWikmb*pdS{H-s8$T>_-mP_ zOAlq&J*gxKilcxrnXD!j(g?(&%Vl`{opUSu$N?CxQ8v{nT|xIp!~8uRIg+k<*97V+ zUjm?R?y5)QuSIse$gPo@jyxQEWg0v{X*)0A`@?iffyi^e5;05K4nS81|Dk++B{lQ_ zT)n;ctWut?AE7-#Nhq5a9sl;X#;jLn>LB@xkt@y>@D9dg#>Fj4NKc?YJxe6LT_oAj zENWh+@6?wZ4c=vmj$gj^7f$5;&7DsV5NX9POQyaD|3XH^;~Pgw2l$29STv3^A{c}D zFdbzswqZS_NgW-bd(Lm+s-fq|wHFF;=4=8M*F0vXlX;KS9`Na{NI<0Wh!@V3^Vww2 z%DbDSvXg;@`0%gJWEY?Uge*{@(wi8Q{JFQLO|oXq8yH*|99`I?x^z(=&xcXiH!c(| zBr2SI-TjbMCXXccP>gk=;F$KVC=A#Mk{)3+JrUbeJ?h-~Gj^{k0lnOP@~GV1eOimR zXS1a^FWPNwDu7U+$pGvV(--bFD}IUnY8czSRz^UMK|sBKi%rS`OXrKGQJ(A}7PGw% z%gB*=Gc4<lM~rZfTl;Q&DFb&FHoWDVr#9v5<c&pY%xU^|;HeVhhkZ{Ts50m|5#!(7 zYM^AXA7`Upmr#SQ*9Uh4h@dci5m}c@0~CsuwC!o&`&yGVH{(0PLrmGN+CMOpzubr{ ztRMmhNrS122)(04ABozZBhZ>_Tm3wCo+><R{v$)FVKROaCRcXni&Lu-IB40$bXzv? zV107{v3sB!xe~1f@g)X(-g6mSYP-_(XI#wfmKNvSqg=<u*?%1?Y0rr~%PWwQio^_Z zDD3vW|K_1;5s%aTe~!}Q@1L|rmpo=g6Va>R5{cFS@GUTXsNZaxo#}k#h*gz1WW&F; z7Hd-G<M6_QG2Cn}!E7E|D_)sR{SB8jJ%*vt*yy!tz2r=219%sR$M@Og6M(c#uxGas zuy5+r)5OQHw?9T=H9wef=(cm0-L8XIp((^euwz*`R>Lc%kr8x8hgv$}0+;JjqhHh| zb=r6~<AOi?W%@mxR$Cp@-wo%z?3(BwK74LOr;>;4Q@Xq78uG}VGmCMe*Cnc4kua7R zue$Y@xmPF&tGT|MgxtMXNC<f=7a23*CsWlf38%f?f1uNS$xA|%3~)0mv*B5K<2J90 z>#)!q8rTB)KE%D{iYtIG9I@DJ=lQWRE-2}|FQFZ}j$XCBt&>HwK6_T0kKOqT&ApcL zi?{KIa1UrB+HySO&kdR^;E2FMBJ#KKY=l7v9z6|FaJev03)#yrr5^#A%+JQDZYU0n zO^Cu6xPVkIcU*?(_0u>B4(&)(qT%BKawd;Vi7EgfZX6?LaZjb;U%(EX@epuioFnZU z(f=*T*d1n71O79<!3{jaC_svN3`3%KejZ`7#m>V{QV`WC_2BCDVh$fZiu{KTd?omQ zV6D6?t201DGjGv@+prFP=30YskssF?9(w0gt2Tu^tcNn5*Df`JWupK5-8E;&_rzI| z4Z?8$`w5(0c}15I8dbbtn6s%H6(xagB~6?`_}Cp(8q1~o6r`JHy5yCp{yg?GFh@kz z(&xecPb`_rZLr9ni~PL3udEfHQ)-r@`v-0^qAjHip(^z=vB5nxV<wP|`H{`cQWxi! zE$g^?I}(RE<YdW8PMr_FiPv8eoR0Ous^PDuh6muNX}gp#TMF4V$Vz=U^HwShl+4J! z>(WMFQg-_iH%Z-tW1%bbLR`C$l~%!Rr~XYm9Y$(4CqKi<x9ud{pBg)Ol0_O3yDdqb zN^n!BWH<v*?Rq}nfm(NrI)wrt`isq#9AZsTBTzg^-SX*N+)MPbCwcD>a@iaD_X9Rh z!<w(&*tANDkrN&AE2QDJMf{jmF|1X|^8%C4QAxfQ00DW8fQkUam%x#rg`oG{YwkwT zmWGj3Qo`yAhpms7IguU^dtrEO2wGQr^bbbzTpuf^dT{>z9qnIldxJGa{94Vl>9~Qk zDVKH#JrIqk;C=hR7>l&!Sq#|Zb^9CthB47R%7>FK<E+Y13`{K|#E$M-K}}>FLTCnF zOR;Rl2!qILqe~gO4MPI_P#TzEvXVT$nAa%DB2`|3mHTEJG^a-=0FqO(#Lqgxb)eap zDZ<cVgv;ZwN;lZhhJGClSycXAt8`I=?;i!6LImB>+Ymj(S6C7bpJYZgQW)UjYtx7c zUMg7g53FPXk+A!8+fe!KD|uuLX+|btELXd8`EbFv4r3Q;c7VH)sI6x6c?o)vjCbkn z4<z8!C$`#O%8!6#aYRA0ytr90Z*<CPg5bffOq2(tMM)L6;sW{mB$*`)aH!dy=y=>u z^R6TH?{s#t3_mqpvpO}b!PaN}XT3e!!G819su9W<MBm(fA00sn_E(tqW@X7>##UV* z5$W)LjDw<GcO+Xx6oi=g<)vh=(u<LlFteh%&vEYkL+|Fh8SUgH@LQ=AhQH|5`C}j# zMXILkON&M3z~dEaU&FhPgb3#4J_M_9J6>v-6Xof`6G9Rdh=`j{PZmi=(@0i_Zr}d7 z_vtlF`tu<TSm<pG0{(&Z&7siM%3XN!C1<KveK}rlE@jQ~hLP@2V<*759YNBd1>yz8 zp<vVizP#npfZcws9iOqq^x1&JU|F}(M<-8q0IqUo*C#L++5HU=tJ#In?|xLe^p?(d z!52SNl;z7%YbL(A?LVHZZ{tv(2r~AUI>Vwz)RM%(pqJ#I@N9{GC!*<`8Ej{E{y7W) z>8UIPW0W##-Y@3j^Gd0+1t$9~!vP)N125*pr{ujVrr+m|Q1rgU3E)8k`7{QFCi?mV za(2B1VXZ=PP8FYr{>M?5iuOuQFSUZQ;OqsFXqn1@kbfLG%pXj^xc{$`ZVlJP;*{Mm zJ+7S%eZWQ`^*DX{#w9gybN?w1n}(@_M0+o%v5Xba8*H3HWuHJ_h@jn~RW6I83CDPv z$B_jYLzDqy0LT(|<Y>qPWRT0J0W%qAe7aKLR5O;DW3~L3n0d&glEl;=a0T8+9plTG zo5{oY`=9>U-Xm|tx&DCfwXj4x`qj;)y%ZA&SV${*;!BQmq(jZ3(fiXm121SyfMO>W zn+<L?;wnWyJX&-mdBz?cp_k*@`sgydMz=EiOE>g&*Otq`Wc(}xDbcLxw6d2Ul*uWa zyV*of$_w*{e_o*!K4&!hYMTOwSQ~50P^9FyeWH^|dP{iRG+6?Tsb04^3p$+t@-I~Z z3QjF*=|GpL2wbaP2ET0FrcMB_-<z2P1EyxgPoy7^7x>xl&|}Nzv`)T0hKw$fd}Ml6 znJS*PGH}v~%3a@&cmn6Bs`yW+WY%BmAzy__TAMPw9!*b6n)M9$Qd(tiudI8+uOu#6 zYPfUW^dg(wfKs!3;a65M?)bkag>*6k-b&=&_%w`!uScLe0ZCm#P+8gAOK!xQWfH3k zNy9R8sJ7-91LTWB9;ZEruTt>nye^xjAr8vcXrX60mLUU5oGVuP2$Ij`_=cJ9(B}&f zp0P@LrRP0+RvO`3#WXbfw&o}0Ec|1bGO`0FnkAR_0{%H~xl3tsGEyM;EH4_!jhm%g z8wUIf+A4c_Z5#yOb@BfhToJrwY}Hw(g72vH4x7dyup*K$C+Bf*>B<`hwqOiTjV17< z+`w;EIGME)D@f@)fiB6QnipinY{7;rxvm;JWiiY{(u`yFcBaDMN52DKL5^5$)@2fE z4On%*AHTuba9pOJf5d}^nVa%TA$#~?{btzhj&hffa8;$e;N@!?1}8C=?kpqCp+2pz z!K*pJR**@32sluG%^$$s<*g+7qDt<zC;k9TE0cahg``4R$vk$*Jt;!(#(;nd*Z-Ai z4`aNK?Z)CB7ZY}?EcfltzD^YFYG3`0-hC9O1cj@Qvk9;xk4SDdyw}2{b)1nGe_)LS z^w)n70DVu%*>_AhMNaak>LUkQdwYaD^1r-iK)&w90T>f3AzhlspRpr85*`16J>yV- z1P?KCh8aFG&Hi&%$52BTzrlw4`0My6`&DN^8+lM)nTt;pO!(#ov?ck7J;#DDHY%NR zR)@WEm4UDaTNv&J(_c|JwYIJn54b=B0|hq1wkVYqyn2}_jSWC-BNc-s`3p$i0RW|U zK4Lwoh6r(zP+sL9`c@T!`FDTF;Ht_PZ0ZU4Dt;G~cCI(`v`TomK&7+RgV*lIX@zN< z{Q6s5$35*lT-uCk=C8X2C&f{QVcTaQ<UJ2|AzULol{9SkqnkeY-B9@7oMX2Ph$dQr zzCCyMkI;|ZB5Z&p@L`^uXwTlQKK~g`OlsX~5D8R!tm5s$<?kBFA9%<X!R$ckljJX# z_^Oc^rwC`TOV@I)CgLPASOVUW=kdB<8&t$EG^Y_I%vpUO?v5{iO^qDf$^yX>+FM{S zjCH3-#upnz3E&n@-K{fb4dKQjN}FJpGysM<GYy78U-aBlo`y71x#nB`AT$c+)ZBrf z49amOoI+&e;*WT{(rzvg(&UZzKS1@Ngr-se(XaJ)`tSOFzB^>G@1Zu%@Zk`rE}s~n zHA#G#L8rmB${f>>g&||XKX+ic7;f#z1*@I<4q9b^#PuH5i-HSTIN2gkHwjVZb5<yC z5!m>@cE`w%Z$co(N!0HI!cp^T@VjXMiuXVC5ctr3bHy@)VcxiJ`$CyLfLLD+n>9s8 zjC*kB6iuI-Njyk>ODrA+cnv+jL79@$5iV=>;wmVE&zK6_Iw4a+5O!LD#AP%2eKp56 zhIC)VJSjc3yumV|A?$w|C-7MojHgdX&|)EMqbL|CjS&WuO&{rn^5KKq^|Y7z#dvsj zh!vsBIlsS3)%@qbTa=FcX?8ZpJ1FpQv}Co9WnM$}oVZsO4b;397F*u$jXbHI&am?R zq<-T$*SOVYC<H9S1eO)8z4D-f{WC(uS&EsVI6RYyJ61c`-uqkWi==Gkm*DJ%Q3_0+ z+rZ0=Y@iKTyncd3Ck1c<0tikZxN%Li{O__?Z>};SKP;<VmjiZ~6Q@0=OlOF;Iq)7C z6W>90<M=;DVlAjXQFQ0y{)qQNkUX+jZQk@>_DM;JwSib>%AdZr3j%h^c}UMoESCp* zHrn;Fcok!e8FE)k=Z0}_Y=gi65Zi$U`f^n7_M{asI{2W98Z3_!Qg&6N)#Fcj9U{x% zYsMkE-M5KzWM{<AP_Rj*YhB6I{udFEBIDGhsK70MwPht(!M^&%g_gos*Wcq@eb}|` z3d2?gkO_yve(dB$Q?L5Wm{7p@S}vY$Fv1X2bAR48V6`enw5ELKfl4(*f`3E1#(Vfz z<|uo0?4J$f19g*W<N{k!JoO)=%~o{<X$k{R4!76;R>f>n_@3R-wQL+`Wyk86(nt|< zV7EnKS}5qG(GXlkbxVK_%oXJwWUlkzlBi_r^HzxV5eZ2Fz$8swATASl%nX2O7vtD| zuGj+bc|ME-MA;>*fG_4o$TSu~jNg4PH^ukZqg|H+{=th(xna+gdpalo96pDyo6N<Z zLtUIOm>n@L75r_S>%;hdr`*z!ZA?&G5;jGPKe3FmHMf~z`ur!$dJOk8v5?}yVs;Gw z5H%LcoX6?u1DQ|Sl<!zly_!-OddTp+lDJ@rSI=;~gs*5piqvRU5aVZ2J^<FjIqLt9 zrgvbg^nKsA!{nN5+n6+IvTfV8-DKOgZBDlB$<}1|zdzsK^Spqzt=3wt`?}8aIQG5P z&f6s)F!?beKbMc>-nBKcs2%WZ_yY=%0N=d4*%NqK2=@UYWKh|<r6fO1ri~(MshH10 z1FQ6`Na)t%0V^iH$J!EncWiLxIkxU65R-rBiyN^O&iJjPree5zZ|ehROybVRDIHg+ za(Lg=m8>p-1@d4|qW)^SXXFAU-PsHydZXN8X^hmnTfG@X`o1PUEr;$cY|;}U;6m8> zeaiY*Y~7KY0_;rS4>A9$!9+WllRz->!hgpxLuu;&{1^#p2zC&M{QyqA<-6+rA18ff zTsxqGH2LLRR|Fxc<QBfTd`0iGwF`}<mhpLBkC^=6RkHB<p;UL7%##gplK9Sdb7)>> zXwZ2XcL}gHGT(TAD+o>!ldox=!67!?v$N}`r0a6Mf;-Nk0hXNSfj}e$ol|T(8ky<j zV0c4_XQwJOA0P*X#*Ig+4wI>Ro{I>hGg2n>ebzYp?7wrGInxJV!Xq2;P0WiKMQbf} zwOX$221>?6hA<Msp#%E?lmTA(cT&kCzJ__?2BFYkBmAVZ?Ff6{H1sXo`1&3CUUmvj z%V|EZLH@+)E1Un-wXpQ_{oyaK@Qc9#0RjTW@yAdRNk-f49)!Enopy2<p;+0!KTG<4 z=?alisjPlxgJ2}&?Gpn}^GDK!iyGHJ4@12q_f6c1OofXOtPGSf5a=6!gHjCCVd4l{ z*m=hm$h@gow5za@rE8);-pb(edY_-2mSMYi@*a`j#XA{;rEv3fCZQbFeC%{97z|qw zrE&6O4G_({IRUmkt3{ESP-o0QHrAs8Kv+Eog7n1`Zk6H6ZbY94_w4eI%^794KN~oD zpx^#!ay&YK?Foq=$VOh}#4+-aFa(;-eA<HLK>8N`=OU$arLbzCY+tjF8&e1yc*>3S zVs|VEa(#6Zpew>`{`y%Di4pimp8OXQ(iGmIyCoooH&4E<or)fGA%&t2JlkaqLx4&O zj9pN(d80?!%9YRv&1f7y60_>}3`j&K_!Z|*@BaZl2a-+jyoRb3m3gSO-oeF8vXain zE#G*#gs(StawnSvalO~Y8BbvoN!P-QAz!2O3oD<)Jt1KYK7u^h)98#UrxqqJ6q@wN zyyF8X(*oa&8seuTvYG&ba->(tes;(ljQ6$Az(L{%hVwQWG~(Z;XIIoiyiUBpaQQ<W zudw-6n`Qwu5Ia<vs3r8893JR2*T`kcn#lh%Rrr(mx8?62kI{<xIVKEcFR%J}CV(So ze52jFTGu(7M06$(9^V%g!T`yM=cecSAc=3cG00w}JEKFqPO|2sN8X&oaqd{~x6Xeb zyJ3TPDj9||N@~v?SY^^m&EP!)G<4k{2IcL8`(UF6qR>ieKI?tl3Sd+G&I2t0AxuVS z7KGQ~7iM@M8X&KWdwS|vlC-LNc%$l~k^s$L2Jc}sbU85={*e4BVgw32@P>F%T#ubI z<#y&<@f;j|=@t#Nt}EWkXpC7C*GR)c@<$E7#|`P?f2!s%@D(CH33;(9$4QlgzpqW} zM-!QkFC&f%eKyEhpVY*1=1bGQtc@$pgn?uBEvZ4e4eIxjz;QuxzeIh*GBT#fMY6>; z^a(sgKu^ECjiDC)TXVs28AmQ@+k5}bjvH2sCMGR|F98#Wic!XMB$0`^=Cl->+v5r< zK{eKtm2#JDU3YW+{}%GxgW#k$lfr0$41#p}Kr4~RX=1396z;!Zmq0oMuzNBjdnU;i ze{OO-zK1;y?IZ<l<M025%sjP%R)c~6eN4Eh&@yc2N!``*fUl!h)j@6$^X_l8MfHq! zF^%N(a37dL|7Bjt2`LRs&C%aX3nN}}g%HGsCSm5lqF#<Xz;NO!Ep|)?OOIjg3J*nI zUn%nW+qjSWHqoS7Yiix4qFC-V34`z5VeT+X^5rKAR27PLRrx1koiK#bfKT4eNjR)n z$sX(;=84=FX8kts-K5CmU8DdviqXo5iSYR?Uf=o!zK}eo5^Wp5{UmYQdW~=#yXCXQ zK(aDaHQ}q9xZruT;Et0)5MF>xpkh`w2EutS)!i@A-#V}Rgc#PM^omB?kCSwcI$IOE z<6$o(okSBRb4hE)DtKa^;zJ@HQ$-H3+1LcaOR=E3OeYtX+N~Bm3ZxiyJ-Pus`41sK zY&{@lPOd1rpou1Aoe~S~&qv}1e2+=X@G}tTCEHRGBC3T1?qOACJka^2C;PJ4WVG#i z17SZJ*pi)V9_d^+DbmK%m&b`A*I*}xmkr^~$zvmbv^Y0Wlx}Q9o~PtULpL3v!d(vX zH0Ft%{C98uVvcjMrli-j-hi)!_;kES!_3_lfBwTf8-&n8uF8$yfIZcDIPgZY55RX@ zDOF!`m0$oyfb%h>tme1Qf<kN#8iyGbXW7)KY1ZIJq2qrU|6_yN#K5C9F{*a;^y%-W zmya`u(eJ;X_J8IBS3)?L5Vu64EC~xTJ+3jpw}~sV@w>ud`ydMl1q1AdHNlCxr{=Md zmPU;GPeA=6&0~!0HR(BI*tkYM5h0rDs9U@NTcL6BI=QDD4Lq+{7sW&s3%tYbmQ8qh zfhER|!yp_Xnk`-Gxhr@bGFY5pDM}2lZDjEaF>R%CZ#;)^m6eQXFB8G@x*otjL$<-i zwUWq75B#_5Q{s$ULh`ZnIV-r~XJ~l+uUpuq1&TscEpbt*BUyfg*fGLv2spzuXQlF8 zv7f%w{(T>L01MG*$hem%#mxMw1(_l;7599cAEsxNK{p13jGTN4yDwpiVw1$q&m)Sr zKFzno#<#p=NH|-P?SV@EQw?m!?B^@Fyp;-wQTO)8E^x}gWNG85B4b{2OR9a?>34B& zr@Z5Tf|Ie;mh%wA1>;Sv588jeOT@gZy?p)-d6e#2idGk~(T}W{qM7@VC#^h~>Hon8 zBi$%PVIAFqp87`eghoY73)<YBxX~7Jw_qYlDK=s!{LGke&?Ku}wU;?{1yAB&rP+;B zaIW9v6u(s|UfxFoT8lsvB+bhV{O3{B<*Hb1<(Iz&&wzf8l}>Eau|4Ppf@}Z>Op0g( z;ckgs+UveRExc#w-`%2sF43sgW8p}c&I-0K4Y=Q&Kf(`THq=L(WBQDDO#xbvnfhY# z&U6&636kY@Ld8=ZxiYdGuE>T~;ZhX1su1nOa*NjprPM0FBxK&Ookwi74!J-w1>7F1 zn`sj^L({d&GdVf(ZxI6&?-P5X9tEU6(EcN&B-GHYs>ckR-9k4YarN2F=b?y-6;od> z%qfR8lD}m0l22-L0XS_f@-Lr!d3B&d@AbzB*ugup1P?(aqQV2o>S0?!y|`1EPhtJv zFl(-7qTdy<FD0u~KXd1(=+3ix%vq-2i}<Ys2=_U|g-Aix;>F?1A$sC(w!9_!LL34H z<-t7u8QqV&Eo0W^@}z-9)TaV>8bhOJaS%*Ex*C5jZMO&jYIx555&g;hD-ymCK$^ae zLCbFbXwSKKC;V?qm5zt|2B%co)j`DKHMAgT{g`dM7O6!c$CZ?@nGM5Hy72Zs$1gJ* z4~XqiN_h5=Aazh-CqtSVLLU;6vack(odQ^qSiP?uq7I5AIaR@Pa;Vb?xx*VNmb84~ z8bg+VAP3WRkoE$$4P2KJ(WSW$qrCN4msp$tFdotvwwlj=ry`3TR~h<4GD;;{)6eL? z=kIQike<c$0?tBwAR$%irXlv~w8!e63a&dlnw<*xx3LN{I5mYjL0SF{nKX>YJ-(0J z+zN{n)&YcboDo|3D;fL;^`v#eitt=fXeYZOna+p8lCcfQ$O6`~r|+(?W+m;GiUb$s z_>Ag6G}}{e!JRs>7M_R9K@$)?{dxH|u$Onr`DMhi8bl~`8aD;6f-hT6j!2yx<E2dU z6$xN(l~AjrmJY99zxD;9^^45mq=(sz#M&L_ir#6H{jTPGvUV)6eb<q3ysdW5fFS+@ zVQ3h*%S|gpXn#Y#Nm?nD2A|Z9n}=y4ZqWuTS18F{IvF=E*y+E&BCCO3eMWSvS?6o7 z6-s{@%(GWs^a9-l!TI&|KUU|~Y{oClbRvqOI+a*N4p=sZxC9&Og~?eWfWGm3vNVB6 zxf3FqFauzpGgqt0`2~YC9ByQ0t`%$LLO=nh#r_5;MNT1P2TlU){H>9)emx@vZY!)s zoek!Yq-}A-fV&Ydufl77qb=oISBRVf`ie(ZRxxKTUqNvRAH@Q%b5617Y~Mve9m^d4 z91?4o!(D%mS_*o<jccM(yJlpB_ipw-$_qQCw5xibym7uy`6*3tuUVSW;e~2gZLSkh zMw!C}4P>RUM3VMntcI=<7rXh0fpkCD>dJ)Ppod{Y+5O*;Rb<ag05T(IkVMT(AQ%>B z`p&IS+6Ij>9DP?T&}mSZrV$~DhR1MfVLP*l-u}5CsIFjDRWpef>>-qZ4ZN3U)1Ry$ zmBiZ<FJgO6Jm~(i;N<mOQ3=Z3+Qen)-*tidT3LRN+dq}&&rhP+)$G-@iR(wa5i9VT z{HQXt?|>iY82z=U5d`SFEB%l?AhUYC8n_5xu%|yrr>U6154tggkQgYz?*x9KNx?(Z zx2nJk*67p}-x#EKow#sm72{9thsF^(p`<#(WR5PwcnRyD-KhfCv)<V|U1b0QC+$8R zqe6BIV#~>#@+u;WGF>wQJ4F&lO-fdk-8RN12tkOQ_|d#9meIM3bxt(9^ra)v04Sq5 zt5aI8)o@pnaG2jp3qO>F_B;})zD%OX{A&6!!n#WtrUm{g;N++hG?NHid4NY32CCdI z6C|&t`Dq!}2dI)lORTPpdM^lY$A85{o#GxPdF$m|mW{p-;70<?0<5!7yd!xnqiU3R z0F>Z-i}4tNMr|gv$f(0S&>9)uTi@YjP#<`A<S@u=)3PGggvLO{>IX{lIz5gWH{3Kw zI&Phkg1Q&xw#-*&ECA>lPOOwakhFzs2E2pd!8i6z&V^88EGmN|0BP}t`M#*6=ryxo z0%qBj7bpz}CjhJmb`z-af)(`|Mm%_rrUh3!;Pf1DkdLTACfUX=)KWL{&1i0Q)63dO z+G2$FPCUsb7C~8L8?~FK9{J&-q{m9&O5w69`jRbL>_BP#vN9*HEqu@K#9r>OG;_T+ zQX7ia@h>p>)&#{SwnB(m8r%#_+llC;2-NE9$Y&X4YAM3#KrDEm2_+y&127(79<$zE z0rjLy>5r9|wzj@Dec5c!P%QPVNveEy@>{=f@@Sr>U5B1XT>Z_EakM3|Mx+egR!zO2 z1=Z?unyE*wg)Vu4pV@&9A9)fyBJKeA017d9Xs112b8!~$*8+I@8XT5Fp7jYyF?xqE zuO&+Bwh{1veZHOz0Kn%uy|5Mn^MTtZ<0CIP!H`~X`8jR)@??gZEJX2#l8{%xon0jZ z(5*`hPO0Sxo6C<F*0(g%X>qw;!5sO~>KH<@z$^ri4S=MI9ZGj}Jd|}mo$}TnY9+tR zIUZ{y`oGpxtFe&~kOP5v_G7^*x7Xx4er0*z$C@eCJb4V6R)cWo-?kc$-PX-Wa95?y zRPk*!-g80I<1DQIWW|YZVQ|YDLcFkpL;h0|DJ!r8P!f2w8U(M{1~jX>XHg6;bZqpZ z$^(o&@QU}BPk0!k+r_JJ6``<Ts{McL=d8PAi0;RKQcw`cb5_k)z54*YVYoH+3CJg< zVXV8%WUX3D9s=-kfxr52Fzmzgf;RQiO~yxntV>jaxkPz`x1v|J_n{Y4UN)*1-Tu=B zl_I(_I8!hJw0JJ_^4up^0Vm4Rh47YBWP#|@{C>s_ZRm4=xOYunJWACe_wZSx5RN#6 z3Sfu<ZN~(uZdGCiDtJD!9o+xbW($SF3{2ZA75|p4<(#kez|MuzC2n?`*ZYw%RTOXA zTG;4qdT@~@QgzqzSIuf)nEt{Ad!5~rIe8fQc?)G+;90)#-wg5@QnBzdY;3ueGDI`M zj!tIlLHuVZ1(OyV98@XnYsmmCa4Sw&;Um~l!|vg@xium8!ZmueDAWsgUk3Noze|6J zEP-@KN#vnB=#r{ed&t4y`b!E8Q=oQQ{kO`(Sa$;36f06P<rtSnaavo!BPww@i=a=v z&r*=UAS?~6BK~t`4*fEB5@vA81PEvWHgfIg@?u8Xn3*B8MusGM-p#)D9Yt>+1$iCg z^0OXEebu%erMYT&yQWRIG}G}4(<3fgaNjv(nM)Dk0`aoYzogG;%+Sh5avdhj<1XNo z0_XLA$o^4@5EP77rTXyND=6dJj@dkR56A6naZ(x8!bA<*-#I5k#_X%$Z@ZiSm@Z<Y zS<&@V&wo4V|N1c(oMrgzg?jf3BF}NGFIAzYx>`pY8;izPSGw$;F*F-V{9-stFbKqm zXf@4CZ^7e(6v$92^=c!9U97kRpNe>f4}#e+KyEj(wLoQ2D_#Aqd_Si=jYkWK7SB(; z(W>dp^?S+@0dU6C4~8Ku8MSPQEnQhBsKovYC*g{*yzOamJKY>Sve5YMHuw1As<bj0 z%XV<Mu`wP&k|OSxw96MJP8oWZ|2=F;l-scaofeTmghpv*GCNp&;oDXL3?~cNfg;@0 z%Fqlr`u-n2;@+2?I;{H+Cl=+yi;n2qL-KW87|9Z#B>GZF<N>@Xe;j~@ovBHr7n>1< z#hI^Op2kV19qN1aoE_cPCQR;eT6pE-pOGXZzctc`6R5xa5~LW^ve)Eg6>^tkJ`n{i zIvAXCcT3IFuBlHkM+Y=Ge(OjPzgqGzPX2m}D}>^bSVCvJK|e987Ui5$f7!-oZ;EsM zoKK~mo?%Ua)P;L09g$j4-P~?BznOVp3r$V*%hG>oLvf4_Dkgz#51qU3J|@nzSe>pw zms=OEAo~7N#4M?-`dK~ajZkFL;rVaQxEqI9@_7VR$Rm!FzFo%gp(UhLXq~uH{BtFq z_X7Y*Qw7B2IrCHAjGH`i9Vd3u{hpBzie5nbKm;`b@dBwO#?L;1kzGuRiP;(wZ%i_d zi8x$%rQ4q=FS^R$(L^$P0Dh>0w}2@ez0vM|<~Zm~kl`lFSnJ#>R}-eAgox^yZ(rVn zhXi>`JB^cDP>48AYb!JDYyyBkwfcrKfn(ofOlbwf-6bba^Pv_0k=id+$Cb4D$xAt} zNe2s45)zR}vE{Y3AbyQm#jEY$K9rE(H8#6I*KLE+rA<Wq+?M5dKIjV&Qv0NLlcosS zupT)>#uFgv3iQG_8;yji>sm`fUlRwikXEZTeL8!82g%=7eZwCZ1B09^+zLy3B(Z=d z5aDzzU<*rG+2Tv<)l#tK=>pO!WA&*Ix*@Nm1*X{CR$wtoF8HaxuIvHUI}pMk9ZP4e z5bN28-~^Zg{ZKywi~BnJ9Q%swGyOdSgqZ3M|GRYFmNs`Db!4L4S7G@4MUuGq7S-?k zgAzS6$1}}v!u-*1I1xA+N^6qK;JCiFDE3dv4>1@{zObQ)=IpIidrl@k(UmyAiS;Yu zRcmx_2;c~K#F4bM7b<1ojq{t<MKl+cX5?s@(@F!iOL)Vkv|*gv^=2H@bsn7E^|H#U zzZYqEl^VyEa4{ILUrE3gO8TFOG3Xh{U(oD0YUwWWxP}k1S=`uH=fc!sK;A~QPL0EB zr4Up7bfL!cJzxpBX0pmzJ4O2{{F1_2Ys(JCri52Ape4T)+p4Svaq0oNw93QhuCLkw z&v~qTh#_IpT7~{ox4w-0jf=SvY6)&yH5k!I?M1e5Hf(FNjasSu5~R9*3W9B5Whj<J zS^TR6)#{fo5|c678Dh>kkYS@&@%#Eg6r3iA)B7ghAC=E~3iZhh>JrDcWlA+gpo}d? z^Nmn3TpIw;FheS{d<KCE*2j^(M<zqnq5=~Qh!jQZYPtt&z>GRvOB$Un?-|{Po<E~r zM3ZTwMQ`&Ce`6x-#bR{$VpYeRv<px(Vev3LY|W&(7jFT}U5+#K-4R(vg=SBu5{ggN z&SiKsCE9IIlfEj9tQ&;szL<Kyd;aZc(}G%8F7vAM0#sK4ai_%IPj$nMG^$8n*Dtfe zaV)(JjR^JD%u>RQ(FoS3m6RDjwtQy~v*ijux%wosb1vJ4Yx2pr!9cKG$MQkM2I6lo z|N8H#+5I4q0(W*e${PNd%+hpS6XC6COaR5X?fg~sir23_k+Hy5B(ZA8u;NsjcfC45 zW}=DCkt6tAcht20P^q?EDxQfsF0=wlNCc1*kH$JunRN$86P6KTn+DyGS0)J#%O!h$ zK0&!EKIy2!GL&RVTDZ<Y0SQH(ii58=VnvJS89=D?Ue;u(8p9AoZzSz`fA{l&0%PL% z3Dz}anUq(e4|DgjlxJPOvdUIRx^oF-CYp^+EJew0^2dSwhBNMp6yMRU54i)5vwG{B zYrkl~KC%Zs&;<Ok%69(9Fl+<dTYs|`Kf;+DX?4QwVY+KKoW$E^zfZ(H9=K&JKNA$3 z>U@okQnYxL3cfAw>uO+a&{oLU3Cl1)paY{L7;(E2YpHk1n-HM!Ex%B;g%2%N;-)0V zvrnpFE{WsTAzH`c;?nZ!s;D<vuEHbxBUuH=au^7}fTR-ZrH{5#C~@m7b4~}cI+&?M zd_Be;Q_&FU0x<vv$E+agdER$mO9M~eWD^lYk)Q?7nKXZGgGIMt-6lgSOy$TIykH~^ zBh2D-&?1iUGZQkRfb|s9_OlBVgas5WUUD;(I^gPu2wH(GHaj{bBXjnld4?{mI>!2E zL>)y^W$a&P^CI0$_49Rxi1)d<Y{J#kGaAGi69z7C5(n{v5)COUc0MBq>O*+iB++`O z#g^%#ML54B{|s<10}`sO*wtmvYr)03TJm31NV-O8X%P{SY^bexAyM<eSBcs|;fZE+ zI5U<*HKsmX3cIeHsfIYKaI3(!P^mO}y(qn-a^J36`j=XOZQPc%covmKjGuF#Sik^j z9*o9uCal(XnuqBUR@!AfUJv_5(<QQNu1i5Y;?tK;AiqQJ^)4ttH1}MCT3vN<ImL6B z_Zs_eFu8HU7%-X)-6@j!csblI15<gQ=$!-36L4FPEgl%;k!Zu>mkgG*BJMYm{x*N` zJb^Kg6p$<8i&eaFsd{#@)C!sJi}$*UVcLi48{FIgF?s+*A<lhkA$|IcZOe>W_pB;s z5;~}~QS$hx0}fRUKL=*C1*){5gClTZhd4|Dsya}6UR_2i?g$?Cm>tfIof7ga9uYyf zX}I+6RLpjO4*A{Zrq`s{v(r#%_0l}rx0p#P_&6}5_k6bpi#KE5vs;L`-oDA@s3lWv zg7GQq=q0o6>>GpPmUmmP68$9fp=+lZh-N*Ca1=^vbZl@yLOz`&d`i<yDVw|KoeJ5P zW_>3Fs#26(aMB%ba(>LHa_T2HNMoEa{8=($cJ8w^3Vrmuih$j}>m_Z!vHVtzPynRe zAiu~H!!#6>aFwl{R?f`;PCs`IKh=B)tlbqQv`fq1qy~nO@1mQE3Oj)L5qj|-xB+%~ zD2?B6yW}1?+#MtZ+*m?z_n1e2*)3MCv$df)wvE~(3@~6Ak1aZRe+%u*J!hd%@xU{Y z?^SwyCj3JXNh+-2#8Wtp{zM}J<RyWqJJnN@F3zGYUq206+KiPnMb=R(qI7~r4TaWj z#?@L7pO#9mH)JE1;{AZLq<#NTe&T7(-|81YWUhTthW7`LU*lirJqjlN&oQVw6f%6S za`0Tobhbz{NYCH%yNBhkxqEG#N=B2<Z3X?<i5c&nWQJ!JJh4dcQ=o_S?#*{2<f)p| zG*7y%P?+(#*7<ZCHg^Qy+#M79wsyJI8@NS;3WzhzBXxyF8&mG}Laay$fEVeD6to?5 zf9X{3yM~C=Z`IwXvOz|$#D9F>>^Fwa8yJs(G`^FgGTMc$%%-t~7G~zuc~S0m$3(&7 zsai*mBL5fh&I_mGJOHBhQQNT!yEc<MBP#)>@41@hUcMyxRIfFK(U(P2SSsto5e<+J zb)`#|m40@S){tE&@r;{YFm=QCMj_8&s7d&-C+KzzTkzc9g!+k`Bv?btmLp=IicvFr zv<xz-J+F<tId>MYH))=ynOT)-zsD>NEjREz?1qkkL(UbzcP1Ccgt@Fh@uB8bdt5Zm znml`=lHhT1CZ1d8WJOAdDLLvKc6Kr^93pIdgB}R^36@%?+jKf?YrpB7M#&wSkkU0> zr_fyGdTDma{fp@b7i+`H10QC<w!bIR{1h+&5DT?xATTLE@7dP3X!q48qzb=!(mtZ? zm_bFa{(iAkU30-x&4eA4379E!MyTyyObf=t#GY7G%@DcB8uf(BnXB0*{RVfy!Ump@ zOD}Sa(>y)rZ{KHU5weroV-&@-ox%o}8+pC^`gZI+4jQEZx0k&BB$a<{Z<SHCxDR8W z%}y+~vlWG>R$>NkWnT<K@fJ;lF9k9Vurg_c5(x}MlGov(&AWD=N@VRaTjHW@7>8&r zED5(<9<LR{2g2Y078}?p1Dct3KSdZFHRJD|OSitwd1_&Q0KO)jC2%#srnB0tX^(c= zRq(0WEerc&_Af%@sX!I`R|b+-^_@<0*~oXJC2_*g^2QvIileVifdXLpN@^$Zfe~kG z^AQuL@<B^HV@^RZUI*N~DdD`n8SSN?UfKTIN;Id}b19?fS=B!i&rxiTR!a2-Zd8y$ zg~ajC2!RlHii_Ud_JS@2PuP&KzmI|Pp;<330G;<ryNf7=dSg~PytMM+mEWxjyL{Ae zeSKna9aI7KGtzv+{zB>cTvQ2k-Ce{FFRrLhwrco@VGm}ZRHVML{$z<b*6V9HT#|X1 zX|lM<830nL0Kc4vQJyzCFIeF6-=wPw<tH4dE76K3Z|9G|KIEORv3i1}^6T77?kJ&i zklY*Uhi;6U&n4m5z!l^g5qu|ibf!P7pk@yhZni4Q+mqtXn5jLw`lIcs``rIk4xQM8 zAO(p4nTxBA8Fo@;jTfE~$GK20C^ZqUd7iEY^g7TXXdJl*(B+A|H92JM6-u%`i}F|a z-Wofvu#T8Pa*5<wfVUa=$42g`dYyDsE|!CxWrv4+`2ABph{rI%yw|rc-+t~8LGqg` zv!{z-3$dC-&Q;sxzba!Lt?*31j}H4*g7Nw_P%lsRYdRpse#V*A)C`A8>dKXK1)R4Z zIlwr-QhnR~`L2N6TWE)fqg~L+giZ5t;|RAygL#9kLhQ(?qbRT=zi<>Q=)ovytp->9 zjb=|e?7^44w`CzzdI5CHAgyxT_NVmn1CX7tzC>Vz$Y!w!@N)<-?S1PVU<xP#>x^fC z87u)motKm5Uj&{0eE@1ntY<N5)3Wu`21+LIzk<wvcui&o<*v`Vx#ld_GEv6;4-WxS z{m8bK0gM3Koz3t~F>0k;pEQTcgFll0P>p#!ksGIsP0uSB7_;a&J`Dd!e8boy)u6Hj zGW?-Z4L}REg3iuHH(TA@(vQzS;KvVi^zV}1s`hWJj?1mOrE?oHT*gS}0BMG7S+gtC zAOl7-6qZRGjXi{t#0y4Hm00!}0+s)l0kCy;JUx)xXs&d%P1q_<r}5<r=o8!t<A7TD zZDZI?O{7KD!8_YWU$=SR&OSHWWm89A@{#dR3v`31jmk+Dc*R020tlJH99o7j<+rC_ z(3u(YyH1F<*U~kqGh#iJZxJDk2WXh|*fdsNV+u#ZQd{*({?m=?(wy?z?tF0m+gS>q zendac*`Vf*O^}cdi6hNU2k13+om+e98(cVdR<kwlRZiajmC5%Di#UKOM|VD|`xHsQ za{x<X5FJVu&kIugB?7*HdpwDCc$Qe!KFnAX<wz&VZ)ka8yn)d{sCi~RG<SA@FsuaN zr`x-n4A8k58{r}J2h4xGvk^^O9O_w0#<&FmyZDHosi}I`>)tqhZ+!zh4yVO-88WpG z)$CK0!CpIp;lzLlD^`8*Edhh>OIpC#;Eangv73Hw6JDJRAlrN)#sRo8gAFR&S|@zA z6Vo29xrA;6;?S2wlrEmSfO}+iA4+SlZX*zA;v@RZ4=sMHn;O?DQ6HAwA!2ZGfl$x} zBH`ddV07BA3p9O1MU?h+W<BV@u4jEVd*6FO9hg~NFs1BVv&423)wSPf90`jqU@t;? z?(!it3N6dwbIHZI22hyrUB+4kL-g~h0I8l0C_+7Zv)FM7a1cwjtfAoH?jbecmPi!q z27q^{_}(XIa<a)kuUi*?@}=6pyTn7uRGD0Q<_MbC>&=~hOcD?FHP|PsWPiQPp^8@@ zO_sAV!gnRr*E~dF7H?<Jjc@*EvpuDin@&;&vZQ5Ex#%!`#}1t6C_Oy&NMzgGRE=6o zuhRlU2H-ycrlAfO=e&?oeD^!CK>8dm{j2nVNM8LI1jXK2Sk4LzL19>!8D&Jq(^(<o z3B1oz+>Esfo!#`-&{pHiL;XmyXH0@}tsT$8Ty;0_%qQxQD8Rt_OM4CoXGD+#ef;J9 zqx}1R^Z{PnhIbSFap?c#P`MB3p%ssIuGY)l)AeW}xeYKTrL61Anz68lWN#I~PO$hf z<Jikmh!0err3%12U?oY$N}`W!+(z7^v)e)q0uN2y^^-H(KkfC7KZ8VBl!l^7MlGJM zM=ms@Y0-QU9fVa-w||L~l%#J|M#@o&oU`OQvr>vqD2n1Kj{39&{hV*v3|ULitfh_C zMH@w2F^O4lVM;C5gB`<cu`7j_Og<tk=U`aKvVNf-c+Z>jfNz8#QhL@_3(I|^a+_I6 zA<)B8hwWfzX;mo!0%}}1B$8Ba&yR)d;q#C1!zBy<T{qu0=h8MKr~u9VuHz}&*ERpF zL3W$@-gVg2iVH7=-~`Ar5$~G9*;LK}^ad(dG-=Tm992oo>kuH&gEu9Mz@?x)(*+h; zQftFn^ODxbSsbxKF2A9AfA7kVMN^`C<=kzO!Hgf9!bV`G>iDYXt*c*e{Nhe*1o+xN z-^KV1>eG_Au1O{<opT}6hPe_0y8BAN0Ndg7E^2tLsYNC3S7$x3@$>xeEQd8wt-_9Q z*T*Zh@?1OU>rfx=-Fd7{4roD)c)0fweuX-jX7Z8BJD+if6=?$D@;$_p#jor7DU3lm z(&RP13He7J)jX*&HL*Y?2mHa;dB>sRyABK%TlDr^W@u52ff!`8i=IC>@xc6+*l#u8 z{KRiNpIW^pr#k(DOQ(_Jcs}F3a_-Xyq?fK&W_7V*`Xb2Ns953^Q@;n=|EMp+epQ)^ zwlT(J1$VONApTWX5gVR{yoUQbsj&HPJ+x8TB4e8KmA?ef*u>~-+Z_^$7?YDK$_(2U z=6sud=Dm;h?1L1@XLyVnYaRB0jJE>s^H-d`wdq!6n;Ht^uNeQsJ}Gpyzfl%0U#(}u zwvE#FBKrkn;bO~5F>)$o+vgHJrKeV(|HtHW%r2II3n2r?joXl}DB7kKzjC`Yt-|$| z>QfcWtxqHK!QIWkI;Ulv;bW73jB;Z&eHwRLSs~!l?!^Y!O$7m^0UHk7W({5@S~wlA z#7fjYwP@amxA!7qsQo(rSc#dI6TD9fN8U8{(?hKQne`JB)Q*2kABJjp{BD_y@En_^ z<8WVUojtO(){SQwj5n@tvq&5c0)shbP+90N$T(=+jr9_}j15G0DBx=uF!6`Y8$J=b zsJ|c^<9bSXkohT;Dxl|x6|5z+9*3j5fnE6*(PFsvmh79?fD!4ML`=wZV^MR*Q2{N- zm5^LrQgbbE?ySb~UJu3*vNWhokLEIN@ND|OYG!L4d(tD}5jG9hmDHtMwb(^Nv<X@y zSjucHowADTcCz>kdoZP;=0pad3I%)$Bmg|MpATrCZ-GNAhE7%n|1}gJ4{b?g7jJP3 zEl%vXbc|*VayG1!ATLQ@_o}>wGbwq_WXU|_UI%ZxDKH7+6U`g2+DX0jBX@~tX$>g> zdnGn_Nn^%2%#`wkTnMzWM;J6tIO{g7fBsfrN!%*V9%`D%1rOF_U<^HR^a$q`B4+3) z&ZZQ5sT}p`Qb$3q$t~O1wCENi=B!BR{VZQF$zi?Fy$R|9+7gfP{<mHNBE%`7wJVgk zq3vOSJwHVqcl{N24_1Q(IFE>a^`rV%F#+(vOzg9cKZUd9UE6gM-;(?J{C8c#D4r&c zmH}Nh-sNf4XBdbW@c;}HfXPQO!PDfRHEOgFF%68&Z&Al^|7-*miFcGnGnN`37Q17H za1ltIBXl4}7e{P<C}CfpAD1z6(^{sP0q|7^+py*Xe0d6zKvgYUa%~vLNOJY~9Ii+0 z=DV;6D(Wvpq($%RzG}dJ!1RO`n#)A(Owd|(%n+WHV&NCbB*r@XXe~!~FCFTZ&`u|? zRp0gvQz_Su8osvr7oPtZ35A6xw-7kL<E*j|aL>u2UZvNRwlwAwk_Y7hK?aE?4tkzv zeqRwF;O8VVIy@WeNx7L39%K=9c7zO4y1Qt~QBCU^zcJO0<ZQhgF27?)vL=KtgXmFm zx<rr8WwTiEB>*P<;CTET20~OsUgmu<^3J~=^G(zzGQ|k{)dR+MTFZ03uNec1;M&qt z=Fh|Uw``>~?O5!=%mg4S&eA@lXy`5R9KxJ1xJgRI%J-D#dh+z?3OYp8U?F_v=)>0c zxZ|d?QcfU?l??YEA2$}m<&zTB3zQTzEuQNm@t=(GqLv>VNeC4wpu+b2u@Ibn`<zrj zfUONz9=c8PlFpnqh)ZfIQ5zZ!UNk31zhv!)fb>mA09$}opmq*FYt#aYs{jl;9?m8- z+g~D!{aLR-z0;~-I=uHW;Ha^aoVg;{PH-9o*dK$4&q0hk9S*&b_FLp%zxtp!L?Ive zoY*4{c{lnS2Z-mnY5=hiyrvV?uWjO03(uJa`7Qhx4V1TNCyHRr1lp|S7eZTX>5QfS znaN0lx#k;W7MrdCxag^YE%YWP^;b4=%?ln7D6viYAe_VQwj!>5iH;B66r$#@<;N!n z^dz#vWFQf9DOtKyqp@g1vJL!;^;e-f^H_%+G|V4|vr^I<OBK3bV<4^dm`&f0MF4W( zqmODYBC@gE#J81wKJ|P#5AsBAna2BjjF9aF@$6%XPIe;5=fc2pd4?+Z$p^q?cbSb( zcWU#AaMS!Cg2|i<U}<pbC52soi|z7r&fT>o4`}&I`Y#34<W-&W*phs-^A~>O*eBUo z!}Z!<z?Npehb%4ZC_`n;%}z7tz80DUMXtL@s*c4wI6aY*H6|yh<d7A5s3&h4S8YTz zArr?vdi$+}tUX0@cm?OJ=ul1fi_U*5KmAuEQ%cYkxb|My$)lX=Qm$T`#-7t@(WhjT z+u&24+Nd0bfG3flX1t{}1yDt&^qLS%C5|)~lithG*j#Vtb`mOz@AUnh-&^K@sN%h? z@LU~O?H~1nEqJAd06$Z`(&|gA&Z;zq=J3&yogkHFh7he>DhD&-^GRMjI&`S<2Vie` zgu@KAYfu)pD}2YAlcHDMWZ;5tfH1DMn3`q<XtNR`-wIJcfARmAqs-ER=_p_sbq*FS zROIlVxBsvP>TkfQz@jDMrx=C478YFQh^OJ*cyr3J?<Y!O)#;_|*i!4&qBbMvmS8#& zw0KCUSYkm}#++x7ktD#dX(<V@3IND**c+L+nO0|nIUMbVsOHtzJ~~2Wb>a}iO2C5v z8U&@@J9**SI=ibqen1Zy+sAH~4r}@iEf08b)6VD>ovi12!R)AF_0Z16!jmWC)^6ZO zx{D<$-AqmvtI%BdPWdARROf$UDZu?2M(We{4_7wrf#wfY_pl<Z`G}fx>4u79xptmh zQHhmRCL_ebeuF~|sV3EFJKSHN!|8f6*r!&nU5~~|m7I1fdIXew46^Xa5MEC6^wMo) zO5C{#&}^ZPiE4z~91<;VAx{cw_`0XqpR`0Wh!2Y;R~y=1SPQV5z{Z{LR=)XC?bmmt zrHkv6DZ9fgmTceyS2-Yugzv+-y8vfB(gjuD-wa-&&rQ7$D<ih}Uq@tB)+@<~P>ZAU z7A5I2rYb-uARHM=2Ne#lbhL97CGuBsZ-&J=K@JT}tXe(;b~Z;_!M?{>0xLbmCSiJd zB#xLRJ1>BbS^PNz$XHvTemYXH^0q2KM6q-q62k%DZ7IwpyXg<s*%Ug&kNepW1kz^n zk?GqY@|{W!xdlU;=WHi)w&}+r5!wPhY);sDr7fNGvWl;5pjti;Z9PU8+<nJE4#uq? zK<&Uc#Co?9qDuk|Xzmh!5jtQi+gj_vhc~UD=ths3LcaZG=^b>)V;y_E!+@}hvsMAR z1iEpjn?BIH!&vjQT~|AoSopwU6=>?hGbF(SFL14*XVe1Q=HaT<*@WGbjWIB#SG?Al z%uufQ?1)#|lzkyD!m+ff+5C0lpW~mN-;U)3w}as>>u=0-$NFGa3bP*4)Tk=LF#rD@ zd1p_uWxXKooSKR-JN}|dR6FSeQQgHP5Ar1-cV7xeGqVj+fKBW@Y8-daGWR&&q&&ow zsAs@&W03yMH}~)}M0)lvRLI2B8trIBEvcsUo{?wc8UJC1?)lyD-r^@N)GJCM4=2-Y zF*{uANa^hxkCT6q|40C-e|v*cvi2F)7fk^l)>>x71m(ebCc`-p3)&KE1HzdZa#}pE z0ZK@6K1=dkzvhu<qFEmv-G-O@2=lN<Z75^L(M>mSCpJvQBOW0!Q9kim%2W_DlDuM& z4<4k{#CyKg0h>27)(ElUeW|hE6anWAUn1Cra3>)?qzcdf@rJF6c;SBhM2G4ra4HM_ zWB5;8gngfK)Dx-&H56~YO$PAY=&GC|$_Xd4cpVtNN+^w7>@vX7VSM~C5NKzLDMHIA zJ%eKm<pW0&D8Ko9DEK*gOhJP)ZJAO-5H(e_M57n$9+22aZ@ASyHbA-S6>e|J8Yy<S z|6p~**CA1uhQ%$_;I??6C&h7Wc)pr@o}R1O2Im-(n&6wwlorI*1U`HtXbkdF&jN8c zkeLUxWTB*8m&9U~4z;DqjTtK&KZOJL<Y%j;r-UC1Fv~g+6^*~R>Xe$QjxWOTC{KZH zBkr1%#jzf(yC2C;ItPy7+w;$YR*q1x#MziG6{1h5y5E>T<cgv)2R(n>0&VnIFZ2a` z`cs~5d5h`~9es7ib(_krFHq(>muAW%O`6wfM|AX@?>52+zwdWTIHeTEsv$2?crJfb zQF?3kt=p3fwSn&e#HbBw;M?&VFp83Z3@IeRf}uV31*Bu>J#YGsZN*9(msC}JllDU{ zf{;lpyedrFZ03);#~g5mrCx6f{WkuadC*m^Q=-a+pPVLwUUl;&)>c`u7Dd-IQ`0VN zEr3aars$f}d){7VNZ1S|BI-YBw>vjU0+l&|@BbCG7g{%m+l}_0Pg$&nVvtm#WrGF4 zZ}>}QC9^{%z)Si&{80|8;k297j~tJHr?*pD(SKrz7)ED0ikY(@Mx!k87xv$f$b~wb zIt$@8rgU8G-~%_k!t%^j%6~ss|9Ke;oz>+eL;JcSKb5)uIr#T#ymvmv04ei(saIG2 zbW{$id4J?o(1#dkkNm-MmjoYHT)_L#_?Fp!Ziu)l9Pt}+x9*gDTep35F9?{bu6cVQ z-Ch2yGM$`0D9#8wPX%t@da53HV4SnJ=2N;Z;ZVy3G1vz*J-Ym-pn#yVK&vdX$8)X` z;hwy-vBX3w!Y$>{mzK#-ULGGY+~j)Vml+b5ose~$1;SPGHdA^q6&Rs<c&6!DI-}?F zeE&xRXjboP-o%ND9K#%)439~l=I-|Cs$H9mQ!!AKk0o?Ih3Y_6;`!_=+sXB4!&h>j zWO8O(UWu(GtK!l&3X^y&6?sE(!bcBd5VPpNio3L#%*uN%XTck^Af0|@{XNvX;6SBv z{q+}=s*aKzHwo6SG=EIJWgP>D;Vo;w{FL!8f_YL+Y?MoIiu_fy_kRAV`y{vvF(iFp zw*v~>$Ky?j2@qEpxb^=hzr?_Y!17IHPu9I@`8c+dmF4kZX+sY;?Da_r!1-XWXX0pO znvRn$Ki8o2;PZ#gB_dd3!1uW5r>y$E<S~yGQOIcmVB|~(tpgg%8iMLFZ^j*Qte+Xn z=e1E)=#zgA<1MAP(_gszx$?lVX3MgBsAsjh*FmZD<<gVAViwF~0LqabVCh6RWRQRl zF=^0@%lPmzm^Zia;{{0QO!jDGJr#3}ANL*@w|1d6f?10ad?oWV_%r3`h&&>@g_GFm zG}SS@&h`{8S_>W4PV}rFX8&MJ+;GiaxgGmi^OrqzNj<1-W2`sf+sFp~_dC$ieS8@F zgE2nVvRv2WJ|+E|)(u|&jl6%N(UiQh!7h1=7iTvUiw~~X)#x#uBEr+`7TWX6NMD?~ znQtV|hzC0F-a~DGF@Mt|Juh-}#fSi!bBW0J8ClV1YDYPoX8DSchr@s2hhESL_%{EG z!EcW~(!OK`-e&t!Wpz2JrI83AV45Do-IR#g{aH{4q_149DZI~i5X(#$E9kyHi1;P` z?VEUb846m&*=!-S8#6}^s`~WED@AJ;m3Q<o#~(VsK{*AY|Huh$7wixGu~WpEX%xI_ zH0~)T<OsqB+|f!fr2eXAGp^a3A^b@;Kxl_3aGWZ3&S>E(&07a#jtTeDCBroHW;Q^F z#&;2kz~{2}A}xx$I6;;UVpB2gBEp+OXaZEMPKlf+GN3g85&1zI^Wm@C+K^`>n1}!% zOwb~Gi`bw%KgZ8Kg~>VEq?ND^1y7vI%A#81^SoOS&URYM_FNOfiI>_`g$9l}f){a< z3d$E5cxPo%f1GFe=$U~2!h|&dGQ*U-9M&$t!jb~e2+LKx7Ya?)$3C#~B~_gOg%CEc z<mByZAB3ac2x4`+VigXkEC-P#L=;m>jgJh@lhRSAU2)5T3;#f2^D&LWp?}Q+v@Jv_ z&(mto-&;a3_O{C{daj)&l@BvFxFeY<4+z%BaEoDS#AcL+eDZcZG{AFb#cSAoQrE7y zCx5&iC~<q=Dm3*B^Ml_cFJ0M8%KQgMd#GymVV7@lA5Oom!2IkXZdxrp8?~hz@)TSE zyyE`6Lw$|;NA4S_+^t}k0(ScEGIRG?BdfPsm^8N2*+nljnSP!Dw*ll#S~OUE9d)Sp zzc3SRt*uw-aBNOx)P&_wl5=>?<s+)ie17z{_WpFBaK@#SsvWMryI8^l2!yUJDIsPJ zI1g5#e%1coKMaf3EYD)}oX04|&YgN#1yttby1x+zn)h+rH#|I){M<<8s!hc2{#Eba zl>c*-0^RfPyo9wGVDnm^KKIDMwb+>Ef&|;sj|Q-~K>>#P;xD1h{?7I(Ly@<XKo8N# zNgP<gC2&hL{CqI`iIeKCM{?5keZY9m6Tz@~jY|tWGtO&kKERr(dnk@nrrlLh>_RE3 zs`!$2%rC{>S0WD+YZ4Z{^!t92I>8uLi{)Nz89u|hjU__tlJd+YtL8EgUfSU}U69*M zhNg4<5ar+FcQ+t;rbdkg$a+>>k0h8dUn6mb*5=|@?9q_uEIFdo1Jg`stn8vG16R8~ z5dKPem+Ly*<)VztS*Fn3cJtQOUA&-7M6CZYv`~W!j5^zy`>h?a2DK78H&Hiv)*2?r zLvb2umZoijv%voUTyfyFf_4;EaA(4QyzB-{kWUa$;(x1)629R`6t)vtkM^#tqJ#a3 zeRMn2VbdyTxw`2mn%f;`f&cLZnEyE^K~12xR+0azFtC;Q2;FPo5EeY1rG<xY;<50r zO{kL52?7KNA{YhRqt8Nxv#{OASg<s1eou)<HjDInS?U(<y7N5JOb{t7e%46ump6<{ zn=_k5tJpY^8}5+_V(>S@_ZcBv4GnH4sWDe*7txmhq{V)0kPR%A{2~(Xadf0*cewoa z)nv~TR<MO=#N6=8Ybp^?9&n*Jd<+>hLJzy%nKf6A$R#wxyFxVf19S<Fo?d}IegE`; zzPvv7J|p`zmx&he(i^Mh8sT4o`F*Fzw)Y?G|0tKn>sLZ`NnqMA6~8{`KrG_<WbTq6 zQc-lHfZRw$znlUYM#ZOhoWfR=1)FbT03EW;<raQ~2NbCi^pfk<@+7YcqPMaB8TI#T zkxSz0HlLEdj9q};uPXU<1oR6`HF3V;;$)=NnsSb8q`F*xw_5z1c`6<b7lI-xL>O%< zF3miz&sl7%aAaiTHOos>ho@<_Rzr|$;#ULx7586Gxhlx8LBh>#`LX5L6?U*Bv9oJ9 zu3^T+MeApW8EOT?HUgCvAF6}SVVU}O;8U7qs7Vz;Xcivn3}wpVJ19?rxTa0anSMLH zg!b`Qel@y+_3LnM9T+T=s*CSoaM}v_63eUp`XnY6hY5A{7u{8ynhbX7HT|ChXw`q5 zDJ8hV=za~*Qvm#pQHHy0lU0exT#EDvuGSx+D&V#d?}Y=S&rm3Fc<`gME!HK3opA+Q z>TOc|NBmY0yv%)OOqM~s>JBt2SG3iBU%i|=B-rVlY0MMKk2F7hgLarX4->7j$=0|$ z8*fEsnX}MezM~FD8M^eP+UvQvLnSi558gE1dzFAoDwbY&@c`Dc)HMRn3jjAImgS_t zHYKLwIOQ^^0siVR5QHrBNkp91RaxIt%1`UzOA1uE(*B&yts`j3!5L#{`oQLwob==f zR1(R`Ctb!?i)sJHQrOlO&-nSq;1t6eOlq`dZqB!&P<w%gw_b)TDT%RU7Za___Qy;~ z)mv76xO(Dp*@vLFlZnM%Irz)oAes8A*5{9X9aHiFc|RBMccqnc*^yGM#!OH?!m1tT zz@~qzM3o&iPW9^g9WVb;1q#H-zKQKAjmc30SXfDAH@TI6F%M|$JuNrdCSj3}lx`Ei za5&3nRly4n{Pae4k*osO){?H~1JPh8jWj)7llyBv?t>3NQY0D2j;}oF4dXYuFFMS; zvw}p|$&+2SMHK>DYq<poJ;ieG_1%f^Axct1s`eO1GuEG?P=P=fOgy24F4N`}xJt6> zKB<qu36<7KmX5p`Dw6Bq&|1dS4pwnpCIF3T>Pz0L9dGO%tTNi1>-JxY`KaOe%T@%s z9KQtnelzW`0Z89zUMQsB96Kc8k(58rL|ytRhO`<on>^Koc<PywUHB+^jU3hvCZt4F znR^cPUm*sV1ylrb4JzC1P;E}L8D0nm%Agt4WEfSmbEu)mkLf#Q3WUR14qT)tjw@+C zE9*a#iF_>r-jVfxwfVmV?Dwe8S#8FqnN@Pj2{tSIpEn&?&Oj-kL{$}4!D{bt!rdL~ zcUb(sBJm#G5#{VxVDjGC2^$k*W7a(=+vrghU_}1k!ti3t8=BRP@^FG?T91`;MKHS# znk=v)V3BDiC`f1?bQ%=Bo-x@b27nCH==!-M8F{bSiw|NLu9=_5eitPJ<F0EYbHizs z8W@qE2cU=wEKx3$Dd)UWk;hQszf<iaR7C&IwiWMNp7LJy`t-3mw7N8znsSYkc%&yp zW}7{?{oZrnP`MrcX4L<(Q^*-6=n~gz&7Nf@K7>i~1*2c`B875XjeU`ccka<cdSm{e z$36ym_q*94gd8k_KgHl`4Y<EDzyhSW#P9URn`h9`!))^{G9f0UqLKUPr@4Qr+Ijn5 z@&i3~z{-fen?GD9UDW*V3|j2nnTK+!u}y2fSxc2vGhGcVII}goVGY=+hWPe@6`o)a zw$K~V-ncsyiE8@ah-a5VHNdN$Tv2PQz4c$#sW~4NAZyZ4UCUkEM?;_$e7{)q*1g37 zP}P8hhl>+fX0>JYYawl1RI2B$<9fZF4SX`i73<QJ%}6RAZJ(|+MX1i_WVMa6JOPBF z?dx;z9Hh3g{ZA`mzqR;@t|#V57dBH<aGbdH&C1B!l=esz%4(R&Wfi@z6QU_|Hot@d z`f&JVa(XWMM4L5fO*hG9F@oQmJNDSl>#5f>QIO6HtumnxB<$R+iJ{gF@QX<^HE8O8 zG7ToE#efyrKXt&~$NwE<iKy!tJ5UPPRhB8seHp|{d^`w*_9Y-8XotFxq_+Fb{h)K% z1e*H5?10>|GUjtAzHxIY(k~@X@5I#>Y7?a*TJ9hjF_uh}3xzZ(UAN){aQ*$GC5l~p zisXSrM!l?#u11^s<HBzU)P%;(p|0bmHV@mae%DCg{e)~m`R45yUzFWpUgy`e<2ogV zF3=Napxnl&ME@zxf6q|b{R*-dHzxCFq6%;&TmdUWh5vRw%<0HqA#-ED^LoZ68MnF> zV|q>cGns9ZHBF0-m;(QBhh?#tKxuhnpQYaGU7!E;9!iHK6I<vpWwsZouK0lHepGY{ zo3Ggj_iaM6%~4kds3uBAv?gn(+3zz4#=~qYgqkM2WA*id2<%pxfor6Tsi@%KdHJnq z>Y!_*Npb1WMR2`24VjHm&D0K=-zGo2`WBG<E|GLhIK2{uYU-zw560Iap;1bHOWnDe ztlaW0DO~01tYY)R1%xCvY@xR^1|sxg+V`lWFvQRw*u2Fm4th5#2v_e-ohZwFlGo{d z8|xSQ;nd1H`E<Z+b;xV=gCIEb){C4(>lqIAX9z{(+5MjpexX?qe`2JzsXai1DRnjs zXkf()-NH;oarYTK;1eIZ0SzCQ7g(ZxR(o6j91>l%4960w9xliFEr|)$IU!ychiQt? zRlJTg_BS}i(5Z$W4{Rl^mH-B+uON?O?3RMZGvH2!?0%fxrIqq{+}4ba%U385M4woE zjr^?QQ%;0T5yuwPrY<{4Ja*uaNoq(HoKZhJ!h#}ZVo)!^9f5SIU3cGjbo^=M2$<|% zOK!WqJhB`E+$bj)^xupM*;D3&zW<M>b70T2i`H$>SWRQwwi?@wZQD*8r?L4qw(W+E zZQHheo^S7co!^kW>sf2g`yK<r?V55<=e_L;Z4O^>_y<+x$oK<>2eP>tuXG}2hT`%U z{oUaxnEiY$oWFEvf|W`emC{kb1Vpj2G5UZ#Fr^!i$6xQ=y>R7ImiknR_|__YiP{Z0 z28J^6-_|@^AbSnJ+MXftH#)kznZu+3pyAt_1}JqECf!Ue%a;q4pZ41{r2<)wG<}y4 zde=PSA_w4qYIN=pFtN@*@xgh7NUvdQekVZ+D)-<!RThlHH*pqG(Vk8)L1*kN9TRqj z2^AVKEg_vWZX7I^dIRWZp{l89{X);68>OUZ#DY15a?I>QslP?6t9`%70@8ZQl|G|L znyoN@Av2o=8;dNF_&h^)P77riJ=3TNjQ0S7<fu({X$y^VWP39^Li+Ic1*1zj-}@T? z__iD9<rv`Vlp1j9&z}(Ro~xw=vVIn1&Dp<ub?=49jXS>R92?$ySecKkYSzM}`&<`- zWA<>hNP)#xU(LqFwf-X*v&|mfpOV1X@dkE9d>|!L#P-7OqNawl(P#<$s8k~yDCKbh zszEC0WP0H#JOI;KJ;M8ZnI>c)v8ARboZwNNrF)O<MF+Yl`=Hk)m&oo^RD(^N=cNI@ znL5I`a7J_avU$CWp>gB>)&xWO05c#tN2W&8wav0r-~$r*FGfXeTCJ1yr&VW%_Gp3; zgFb8R9d23!zmpsI4~Wn&C_O>8zk4H}8eyn=hcc{%P5!t5PPj)BO3U&|MHup3K7P{f za+Xhao~D^1Kbb8L0Lh^~Yk!7S=};-}d*>L+l7LR{u=dU?lqif?+weu*x|8UtWR5Am z{Zcs7$kNh4e|1Pl6#g31J^K-r>zpcj$@N4eTPPj4UoU2iSfyURMNiQ)07at%>K8$m zU{{kuDQf_F;lG_bJX|Od<op#~7ayktWHWlX*cH2_I;7bA8}k;FJW7x{YzN&QG`0PN zqs)C?M=vh7JMSqE0X0>e`PY&}aJ#MKU-o|5AH3zZRW={D+u$#WD$i%m(dHP5UF$-y zJ08Ijj%a;|b!PWEjkH+$Z9_XStG$q@*93P*oW2r{&i+|B)WgWoVr=<pVV%HAaH=$u z(TCyIu7Tb|uKB*G2*q+PcG8tHrEJoE8<B@|R^sPQH_!G>Te32t?)cIEIlMf@-038; zQ$xRoQ}#S;tb4yjZW+$UhcNh*3j?AZxtw85`W)X{os?TB%xvBScOe7<1?MP-c`C%D z(B9Ompz^q{TL2{)FuN*4%0h2tQl|HPSGvZ(E5T&ktg_^v$dTn97`=u0!aD6LFM3yV zSOkFTk^6uyGvcL@Zki?y$iZjb1TfoQrk$PeGx{U?8#1@_tJLY4!FvxF-&h7ucwtCv zC~N<e`LPL{tkpgI0NW*CjAg-<uo&l08}Rz@5hPoN;~PwH%HWVD<C21z2Nsrqb1Gfj zNBw4lTzm9Xl5wZ%i2oy(*b6qnJ;P#Y;<PYZwpHDQzi^8dN53ubpOR`t*Z4mUI0-D3 z4Moeli+{d7#@i*~T}@M*)v3By*!MPARiET>eCuRz%fHL(HqES_Ci4n;Kqh!gz+Rl* z-cHVL4(S&KM7g1TI#L8h>VyHt@Me=GmmEwo8X*v7C?xx12|roX|H7=o9&P@kT=x?} z2uo`dB&|b^fU5z;w9^6b$k(x`KV#!mfm;GaW!bnwpBaR=P^ysrwWllOg7B%3!?Zln z7pZ^lx#mN#RK+@3@K2c6A9}>4u-Q-P;CQvx4HpMvZOLd=QTXhd3$#`G_(#WQn^Dr} zp`B2|z0NuNM>2oZ%PTt1SqS=%NI%L+n3ggG0a9f%dzM#Pec7GD0F;O!30&*I?hN%? zjBuf08+Bea2;awR#<<P$n{9>Nn3P&^=g^eI`Of!J=ICGmsbi~c2M}bS;M0rBUO+BB zsxu#QHFsQGk4@^KjQ`sG!TpVLX}k#QaA5x^jFOv2o;EWU(Z9U!^m_V3el^5TKgRvA z0Uxb-xMTd+(Ook;Cue?tiiLc3r^^+71D%w|FbseMR^@RuR+e=}>0EzVpqBA4&148Z zgMXW@$nf?4kr2HEJg&}YqQ^MY7U`-D@IAd|a{X3w`HmBqI@+DURckhrT4R+}eIcZ# zG>{l6s(dO%ON5c9ijl0{suuVG1-f0B)j|x>BA-A)p&V$ie1^y_e9asWSGG;Voe_o} zEQ45S>Fl(kGU1HjT`qop-8StFk6hN<y&HO~t@IxX^I&k|ZTr>qT&jVe7O4%O9NJfS z0Sr!xPK_b%PLi%W62r=b<JkLjZoeM=2NPy9*V19jQZ_EEbYr-IC55&N9frZjagCx; z3hbm9N1kL!uLJYjwour$d2(cRVFf7aG=wpq0f665r6Ha)FdZTSGC22@rU=ZY56&9s z-+_r+h~deUG2U(y3n8bX_TZOb`0>CX&FXZrOYI6IURI-U|7CIK;z*AShbB-!2~gQ^ z56z^muhX<t^+qYN^Cz$%h9r~4(wM78(x&Q9c)3BOT-(jjPi7WA|NYh$9ay*x;sF|y z&n^lDK>Ke~^O?y7DOkgVQOPa}3B4$bu7y|mb_^5abK)JnChI#~w})e2-)*8W1Nb^x z>rV*BsgR7D6LLj7@-A8-18^_XI=(so2`5uk9ptuq5==Pzpmmls=#e15?yZfmk><z8 z!D15|otRga-U7#PcF9X;evGdK=R89<7Eq|lW1szTb!%d<Y?!VJKr0LppaXc%iO7N7 z#cO1KKBWR44C7KueZLastY(@4pIJ!TUOVOj4jGAqsn-s!`1bef{~U9X7R?b9O}wFr zq8T;PNti@!CHYxeur?Z1llZ|UH(gVP?Qrox@RSIxWQ?hQ3{p*4A&y+GOnjrZv!V8Y zt1U&@pwv^5tZ0dEB=NykBeqMe#{L@du93XROU6ROr?V&C3EvGT_3!$(<qAL$X##MZ zA$V$Tp&F*7+trCXEx+pf4zV;9hW@Pwp943D_XIZ6waVmYz#z1>MLEz{$?>@FlZ-@q zxma4J*d2c1w*#cDVTTpiL~X$~$n!Lz66vRS&tNx1k4k{v6*f71#1~5Ea*Q^VUGbM5 zXaA5~V}4-Vkehn!_cP~**7!?b0tEf_+83IgDo@7qjxXT5#9nC$xS6ZcG@$|sJsCaE zO5e`DNBOhoO7Qne1z>e=Y(0m6tN(tV<Kg)L;W5<*_(hYb2`RBp{vhKX+W^MH?pS8G zLYO}!qe~Lr%EtK8LtH69>XX1%)3L2P4-kq$L+1x!oBXkgm`n*axE)G<6dc?Z<&GEq z70;Z;5n++aH!+K0i_GvJmDP*8K2e+jOg_%^t^8_ZZVBQ>h`fgPOI`0ha}o#9V~NIQ zm!+Y8dK6yB>rGHnPnACZFx;d10KN&f)Sn%^qm}bf`~_?QgdXyoNUvK`v9!=~GUQeb zLjpLj!&!J+EX0k*XZJu#C-1%6<79h6Ih;6J`Cs=rMPb$wM9#kGj>!A-v=jP;$2gnt z(ubII8y5vX^OeH*&3o{aWU~%o;XR5TWU&q%Kx;lUGdgy(NPgjo(DZG#%1Gl_d!07P z282WK3tX{_`_-#mcyTYSJNe&BbD~Rvvw;Mt{%@}YV?_EdnMO}mc@yz&YtX!bWH}+8 zx3?6+xWunIJJwn$vV_3sfb$yW&f~zMbYx<YV-g{l)2ErVsP))63!U0}A_iuEw`^#0 z!7@hPHK|$9`K#$TuN#^1voxA%6o|cC;zK3y=hq*ll@7Y{FF&0f_x2ZG1!f%A0D+lU zx(gmU%I5tj7R*N5GXRtkMG)e;65S-Wgq?5)9O#E9C0$I0?JY(s>AGb+pG|R?3?K4f z{|&*tnn@|7Wiba(MDFr_d(|a^WeP9#M&=3}ecc!vMKE9BtD5D%%suDkZwfddrCm0- z^}2^B-jUJ7Tm`yJ_g-HhS*LPskE$6fImW5_wR35)aS;%HH;S5*M5d?m3PHwC%L|zO z&?bNnFM8ZnKW6;s00+AU6OYfgZDYu@4P_u}PXmu+16*K<op#qT$*Pnae9wsh-Cwwh zoM7Zdzjp`%MhIY!+|>c^q*HAa_&F|v1<!WK`2Ub+G4WXMn?_HqgDS=qPvfln53lY) z7C*`fh>lA(yI`*m?&wAq7W@QqZintEiv{2vlQ{^B!$6B8v2Ohqqy{vlG3UknSx$hQ zo%LR|82R;n8ZfTF0+#ag;ff}457vi0aaGojka&@(+K?nsBJl8<R0_Xx)blX{wPAbc zcQ)|7xQw?aVYJ=Kp|PgD!PgsQBi+_g)~x+juU%tqxEreEQx{}(@y`EJ9D94#FOxeV zM>l#6C5K(Ih6B{lMBhpXLN)7<@6E7$6cWF57}d4{*|wY*&pk*wVZSSu0}N1Cu&}YS zbRj0f2PSdWa?6PdQz=qbBP>v}R;ViGm;LGiKviQI_TT7)Ck-*+x;)|+ZDTVRm#cNY zgHU~bLjJh+ny=G0!`JabAXA6Uo`=&P;F-C#BX5tqP8Ih9%O%#Nm$4gcPatM^dSfN; z<Ey`!Pr4*@;IX|yG$kM5T_la|=&MO6T9-}B2YO8Y!nxPS<cheQD;9iZk68zNs|n=* zGQW}FU<ey#CC`8x=cXiiQ=l952k@AWOI?e2rep;YIc?tp3A%?-sT{QB>E?e;I0g65 z)Va-3O-2So-v)VZLC{TKtaH<l5#nmCs*L=!*lr#EcN1Xxbt(E}KC9}U0Bfp?UPymx zc<m+)YE-$eQblk4c>mKA4B|?dgxHGbVn*++Wcq`lW}Q5Ja#9H$crX~<;3dBbC~tia zM=j2k;Tg~|wt0$)Q)}Od1JdQ8Rx?@aa8ie%+=&T@42HTbrFke}ag_3wb41xCt%|!` zL(LMui%1culO|$1`mQR?bknhAKt(>XH}efd1LyVM=R_un+o_2Or4Rt>+G;6p7o>_& z#hYF&Pf@+~cnpSW)=xO*ybv!F7TDy0YRJT?bpcp^^;Q(t`~F6VV#BUhV&{>*$2|9A zi%&R!Jdnc~1})L1%&OOq16(7B2Cz*)R?Cwog(#qVUSQ|LFtfhS3kOj&jndu_<dO3z zJQyds7D(eSfXaT>lr;bcY%SlKgt?|DGj%fmN(XY~q-e>l%<~b|;fNvp<zk~$yK@Mo zC$no6P<H&jj~aQNLhy@+#iU?~$J<2oc`C0R$Kns4b^=JyXWOJi%Ko=pz4&|{ZrF<C zNiPbs20G&>z(l&rH0wDHU}VXldWsCZbu?33V)O?7v#u&N#y0mDEam*%zdrgNID%C1 zHeZ%^b?`q3h=-*mG5>9n{&(`6NJIhI<MRIm-!E%{X$8DCbshK93+<QjXMUBaXZR=F ziXs$o5q>Ew1{j_Wb+%wgBor-pJDQp@D_DFR^*F7x%9rP71mm9j2|M&&a`mQ--tNYW zPwlMW`*AC_5$k;E33!>ZO9LY_5C6l>jeC)ExhpvMi_P|TpY4@nN7S<hQcU>URCIf= z(9Lzyp#Z{GD7UCdJcFGa5WpOqYo4G`i}-*R3KSNdnriP5C*JkOHm2>q2>8ijTnGzd zBjsp;=r#Po8*LoYJ;S_S!1otI<*HQNA^trRb@_}hN)ZFUtHcl)Z=SAf61hObI?KKl zNu}rvR1u>W9M;|BgsR4G4=Ep4u!dmyTfR;l3ayv`!K-2Bpbtcb*P`ic4Ll~n?tT>G z14}!LM_di-E~Kd>KqLKQf`A<xC{+LN-Qzskm&5o0w%Ox%Gihi9*<#Cx3p6_k)v~Cz z5eJ+bCUh06Z(n!4@jWaTYYMx*TA1Pl`9808F5%JeANo-_330SQey7}i*@VN))hAq5 zroBw-W&IOPfH)htz*?oMxw&c?IU&hzxIja638=qJ^SyaQL`cBkNDiNACl=8!I?r7G zQ>n~i*=_1SwR~gy-p8ENrv+?B=1v*x5Z98@ym3WV;v$fmI60eB1}A4Zq8B*`sj$7_ zjf;HRXMuaA;6?7wBR~*{2!0nQfwbG`X$Bb~JR{U098?q3SWtu@Bd(F}cg*rp$cDgC zoB*F0s&kv4jB`QjyY4ioX6#^zKXJ^i2m=KO>twp!ofh^cSA&0v2GsmFe4a0yux77* zh*l4logG-am7?H^2&S4jMa*i@1ST7i>93KyR9?9CE4pQ+K;-Kw4($y^Xin$?Y^-)~ zN;cC2PVjL1PiZVl|9m|#^A$wd7AyG%{D8Ly;!Xa;1CkFnEn*U#my9C=Z5o=ucIH~7 zq&opD5d|SAL#*YECn@J6^bG~ehKV_h3#Q6;Gq4d7^QF^Klt&HqEXFiM?c~3ZJHlQK zB8N4ejrBl2KoC}R;Chx=p5`vY<Ebc+Zre|_<ujk8#G9!uQ@p*G_-nZ@VUO1qWQhw( z-~A%j1(o7(BjvXUd~_b<z&jR9bX^qg<k^$A&8h#Rn}^s|AnLhsKi+s?J$_<>x7Ggp zjVf{$#t-d}mWaRRMJ+J_*t0uBuOJ4mXYXt=88#V~-%pIX-i4-(5L?Bj@{vlK8F!FM zi#zFZ4YaUj+r$H1eiRPBHXC7DI+)9ynq~o1mF8P6@>J`~*s*>!$p6-H^5Sz~260F7 z_H%25G(1|62*O-f!E-kTNnx=IeWMAINX~cc#d|L=&OsbKn2z-v;s$|X-H+X3N;`n( z#wpuEI?^Kb<dRVVX^w&qS0s`oW%-vk>P<zGE@9ZYB)^LP`457MmGSbvkK1^1JK5<0 zqyz#)t+|!=h}x#4e=%E&+<t5<`>Hk@8P88D`C$>NRLDBSpmgmPnM4o7<}VbzI)KHH z{$|1q2xnRi*zqIf?3KQtxM*-}J}|f=E)Ec$@*tCn(~wlPR`%lbAZTNPbOF-n!}<Xn z0uX;tP$vg=x5tr8%^i&-hf?tW`AdbtgldK6jV5?GAe*K!Gh&`y*`N#a{+0w*{5Y%7 z{`ulK<(6R~J%PFRsd<ezzj|?cPCzgeM!6v9cl&joa3Y-jG2yVCt|pdZzZHOV4#^G- z%$Uf-%^h5{Ddr{rn#?J%0Rd28c$mYQHd7I8uotj@tO4w(b-EO#X~-ifq?6JZUp7gX zTXB`G9R$|`-~cJ&F&^UzM>(MA@j>O!$c6P%ujjwt!Wy$jUyph!M9b&*{K|aB?z_k? z0CV%Vkxi^WkW>i{U|oYYw3pyxxb~V>4{+Ot^C)q2Xji`*^bB{S=O9y?O=`23EPhna zeXsKG+@6YO$XtJh120yPX$&2N>=xdN3!`56g_LXNWt<3$sE(Pvu|)6l2I(vt?4J0r z<Q^%>&bqiBYqdY&86tX9dp$oVf0^_qD2$3Xw#pn?0Byro<@!A&;MS>O|FD-X;1aMz zxvf&-dCP2QNTC!#y*j&ah+70jI7$G4=ATI0NeD#6K%6#G$J`dLLl#UU4p2i(<0EP& zw;8y2VLW!ZUrC6$r~tjkWbBxihku+ovA_YL`o-b@2uy;}#34@*fhya2!!ap<?6_a0 zUiXj(-lW({=Aw8^w%>ykl3J*GYK&q3LVPU9wYwQLRF@0{3-tZ!y5^1iV3pjX7YY&o zCb7i==<>jC-9tSR+tbIH152c*tx+y}7|2ZI?YO%uEqr-o9BJm-WkH*cPX(-?{Zku$ zBGmAo3tx%Oe82bPY=z^vQUIej2aY#N;U%LH8W<vYoMHqUE<b4hZ(qC4g$S<0UKV$d zh8vqSLV=o#nYgwF9m-@w;b9wm9H-qPeT=PK_x%s9u~avCXsAH0?FSxU*qf|R6kg(% zm9lIQGsKY+^Gl6IVXL8ZAp7<is<yWwKm&F2=hGH^Nl}-Lke^X*aES;?&>f2k`#7{Y znoeaNe>m#i8682S=A(`Hh4C2;B;wT<sNLP;>CKEKDW8E`lO(CCqE2gJ0pYFMl4KM@ zuTruuSnvblHYrxD+>c`+#cPWD7Ob63&$N2JpAbFQNb~=#jPOyy?;kM-&u^lWFk+ch zGZg{&sJeZ&EnG)$T<!$`7VX<fT%kX)wL#Kvkim36SXd!!;ogD#Zq(hq?Zn-0T$d^K zl&2i-D<SF<U$Fj%I-&}OKQA4d7bIdq5+Oy2RsLa5{C*;oHI*ihE5`J#gCLH_Zl?N; z|H?_YUl{240-eKXPK;(`P710>?G)|{<Dbtz@(IGQC22AB?T_RX?yf?`$^NC~@E(6v z94B`xO9k+B$KO7_#{-mySS{ew5onu3Z^Kaa9$iyN&dp1jNMmJSplL%Fv+!J{68$rH z+Zg-l?=G8{+Skwj*mDc>0{T5TPPF}(i)TLPxBOh&DLj6pxveiM`MSQ`xi>)k9`qRD zPNnA4C1<2g(^)nBy(1?M+ZNP*DvlClx}{UHlGO_9qEU$ava90tSubolJ<{<IcVH{i z;T|VxyMt&$9uv7IY27Q36FfZAWLu1g(qQJn3;3t1e?)(04**8%W5a4N4rqw{Q(p<s zJ-;XH*{-&yU*pcp3b;GE?mgJB#bUVeH}`}t6Y7M?N_wa~>JDO)(Y5L;Yku0q5!vBn zw!yk!g=~m2%&!qqw_UKEx$32c%S(PKQu%uZ<{NJbB(HJc5JGno!4Tub)`O@+szjrV z*r_FudXoYSn2$OXNE)7hqmfodI5(lYqdb_3ov>x?)7S{;Zyj?x+@u5D*bfO{f{Zco zTA(81tI@6KgxUWoLVW+9?VGWbJ*%npw;^O}oJ*@*p13ZWX4Fuj#2?v_qD3vi*MQ!B z)EhmlBZpWycGE>p!m5(9E`l9RY@5v(*nKlu-qd;l(=E#qgH5mYM4@)n8eNK`a(hL) zsSJ9l_ra-I0Xau<)iTA{B)8bqkcnF@ewnQU9v<U5OL5+R5OpMC%Qt*Uq*W2;l$BMw zdN}ZKJ04!mb>xjQgQ2%%TrCT`qgqYCmgIqw^Cb1V0cuH5*4H#$>hNEWEUd2m7_*(O z;LyZ*BRHuDWueFrVyvt&YO0_1acdndV7&lG)pu2iw=%$&*-1@pQ^5&pUuA_fqD)e; zj$&TN4@BzyEUFRz`3_V`!=okoU2@omC{sc%X3yj*#iQ~HN<dlKymX|K)FFbi+nLzU zpl{Xq1VhrPhx!QkhhDT>`c|GXq;4%7%2emo{JP8teVlkrpyGj5$Q5B;lDg%C(ba{^ zDgu6MRKIzDgRNogkhX+;q@O6;b4U6L$53O=Zo!l$5tgat1|M2NuSWkOzQPc&4$F_t z<xBuLg%8_WhGJV;hQoGHJZMcPtt}#`=_}^A;-1t$Ovew`z-E@BLKK-fbwtK}#J^Da zyMK<#H))rue6ob$8r*-I`;Y$5mHzyK|7TB6LBJnK9}>|Xu&=e}n4<PhwrcX9|MBa! zIolq-iI3;6<1Ephymbi?UuE8<;qwhaP#TWHS<K^3$g+D-nxF77K|Ec51MsxIK!SLE zVBJJ|iJ}}=aAive=PyrQT}eE0hS=z?xiDWG1VE@oaKTh{u(y@-omaZV_YGH)h*Dwy z=?cULic&%PKEwZoFF9jV77YlsaNrSsbCETr{lm>c@Wh1toMvTk%}80C$W(iFKtL)^ zJ`&jYD$QL4vGPwxn0BhFogm*6=a%kvvH@MA6WP!MZc&3UON(Yz5Mbj4L*0C%h~^Du z5#c~dxqH(v!c1erYab?->~Ik-?0scUM7Krm7_3dWMifs)o51H7l7uk|g6$scPWaIt z1&(o-^_xbd3ap}5k-V``1B7zg(0O?MSN$8)e=eZ?fLH%r790!&<llF7<YsQCO~|1G z^(J@HSeyz}W+NjOlKQ<~xn#%Eij7I`0_GfiREgSapma;#Uo$K%9Dx$X&TzpSGt_oS zNaUswC%3<o7Gr*?)^~~>v7zkG9ZzOE!MgqqHo4*cLZ*_Y7%3i)wszK9sXV5zm%LgX z5#1DwS!aK@7P<zRHm#FEw`9lM9(*@bZ1=kMkA@kMgWST0Zx(Ou1y03-U{Nb(RW%ZA z(N_@Q(`A3O)a*6_!I)Vtxn@&mZ}u5U`9LuxVthaD+$}F0GI-b`jW(trdcYEOtuRmS zSMCq&B0`34V1)AwdD2PC(l^SbHg}#hcVCBgQ#9pP=1u_F#&lTwqPXC$(@-C<VT#NG zm}@}w&in%}o^ibc&d>u^QsbJj)D|W4-V)j1&Xa2<#r9V$vnu*$b{yOraJ<j}A2E(G zNeMLN=sDHNvqA!EFKtNK>pL+Gw5$qCU)vs}+@$ZZ0dD<G5M0-b^Mr5Vh6{j#ZI4Md zGjth3X9}C)@7p)A3RWJD+egk~Dr>&#`pN-<882$ciz&uT#Ga(DMCX5Zox=+x{!Hs2 z(KcQd|9lNro*kECH(Ri*_WRzQ<0QQIUG{6yxMv^PY-{?CkEhd(TEhY6pU-D7)+^PT zPg4?0(o48A^&ylLsEZw6t(liKHX7HMDm8vZmM^Niie3#6vQz47*|5}y)pXzAS+3dd znlOtUUg2ES3$y=PvFY!<L|v=R+v{g&K6&Pea>v1B1}%w{*9;`r#mrkw_=L<-?VX@> zLKzu7!_f^8&hqHb@T80S#BI|*%YSRAG}YD7q_@e8wRD|;W{+QZBQoTEzR3sf5-5~r zqmdG+E)!H3uE<n#K9eSUOIlAy0EMyxL~`ngqIzeKY4>4A+##K(#VzA>hz{zC0aFV^ z-aaciW5OpI9!g2!y)^lG!qPd9Bv*X*TI}-Dx09fm>AV~=YP<j|FsNkGxpZ}U&-goY zZMpT?C5T-~qB7sN6r&6I+B8W!gLcU;5->lQpf2e`^90^>f7#9pD_P7IEbmrSqKGOF z$r4SkiA<UyddD$xfR$G_>l^{IKm&YHg=nkz<wGAZV0m#R>zirIa5@7Y##2^6<Lp7( z{pCUVu=3A_w`KiB&6rq!ZT-CIgAdll=66ef+kkau*lx~l^skI}8HZM&3F$(2_{3t{ zmsm6a)k#VXN2MOg6v9yd4t{kluF>oF^(+3lb<{5>RJZ7X!kIsBCx%^CLKlW(aIUP) zeZNH$Nf1W?@PB9%q=oRD@TKtC6~6lM#)l=iB)Bt4Fr3I?9B6GMO%nL@9GlmcV|_S) zug9go@q&@Y!^wHXo3G=g%W5AYz&CKZr!4SRiF~iwrU-|Va1WAXccJ94dL$aGF}_<$ zJ|%J}ZRu(=3Zh{lLdRij`_D(wg4b&kfEYlITK+TZ2i$k{G{Dylj7H4m@a|UK@fKF9 z(kt=CU;F;mZ_VROfG}d1`lQHy1EkIt|D9afV-Lm$295PDYN5&LLO_O+t)9*}Dn%CB zdb>N|DFSgdZ6;W@-G<`=->gxLxsrtkJFFqO3XgZdNVl%f%bnoeo&bjQt?>*kT93W0 zIZpzI6}0Fr2wY#I3)JZ7E@N~Thc{uCcTc?t$gtnqYT1D6hfX?evY%kijTZR}UN0TX zq$#>KBYXyD3*dV3`WwI&u*bX-#OKJ;$8odp<unf&M6NA^P#g+8DA*UxPa_nlLirMf zrKScllv)WAhU`*1Y-``48dQqMtec6Lu-^gwC!a6k5Av}H047hQ#8U~O0N%juk+4AD z@iv{*P9*$?_~lvppjZ}=G{*M70~6)9!E3U+7NATFFm>8nuayC^`)M1~&VN>CVscA9 zqQo<#ajt$zR^`4ZGIZW9lj)AkM9a5}>CH@7%YkyT4LsNtiHLs|fR78eLKeFi<mDq8 z1n!vc#sg!_YUw5b<AjD9bsk(H5={avg@*O>(<!chf$XG3(S>U-)wzm;pzqjNfu4c^ zmv9vhAXV4%&CO2a7nFWu#P86oeFf%!j*@%MUX;w<7&lB5Yq;q$ks7z;4R}S?)-hH6 zm313t&nMqDqb&>lXmk0r>R%{S_{Jf~h05YT<!VfUc0K`w=e5cGQj&M9=)REk6rmn> z$t;sF(sX4e|8kC%S9JouCHCashkVNL2mmZ0-8@*-EOXcl!t(ySArW6<9qoHuaF3Ay z*qnNppv@7f2aiLGzczMNNCZhMv1J7gf8<Q=tcw1FH8lV4jxxb1)0HMNwkhN{Wdg2% z%yv=OPV*6$FZ9>Ib9CSAoAi0>UolQ4YM~!w*VOY!7p8i#o~mT$R+T8{P|?awdWR*7 zU1mn0r_n+4#IhLV<a<H&t;#Td2{-4(LWUJp-mW@BjkL{VOTkNUV3?B(EP<oF&=WcV zZI#d>cnq=Xa+^1r3BPBq$kF}gfK`tl>eSggKF|!+Kt!3olW#QR)Tsjbo+1O126t}@ zrHHfCXusg8+4gth_@}kJmT+f_Cce-_h&G|X9i^~}Iz1@ts}&AFb9TVSy_eWY5B{DP z2Xub^3I(|Y%zv%YtHf47xc|LF#zU=i`CaVmj<1(V0&J!_{k+`;;h5K6A|t)6twE;H z68K2`!eq>zD)4@OT6TU7p`QIEhk8GTr3U|rY4|}C-|<c|4M*?cY7QL{2(!IgYQYFZ z41U=L*al?yFA0qpF2VsKOY?JF0vVeFB2bA>x=F++G)$mJ_an17hRX%JFH8^M>Qc*V z3ujA}tlq)b*D86f%o|&BEo(X}@_ofn`8Z=eUyn-P$32o|Jb0!HGgu50wD=Lh1cS&5 zrMi=?1;=>MfdJ-FE6J$>jnAgp`}#u#r84*@sS-7#fUT2NUrZuZrii8CFKV(_>Aim| zxa9~A#cwOheCPE9cRasSAb%O<zyfMR^b5vHhO>VD??5ccgo=BFRI<fIhy#2<ym}XZ z6}ud5LvJbUv`-P@b!s<r2o^>iEgK*A*m@I4CG6}G$Y>qNzNq&`=WvuX%6M=+a&TH4 z;>oURq;-uLS-fjsBZU6Og8)rwXK+8sqnVC-t2uoX*3cSVJUKYqhHxZEGW6=_av!CB z5Y_zYdUg&fRQh`s6ji|fcY)1sFXsgiKrCyYpmjz~vuC6Z>dy}8!+1F-ptt)Gvskhd zEreA8aKv^IaIh)j_I8pSDX+uCPo(MOSfaUbKMAGY&YWv(u?;lp3Zy6~1{VfeySMcz ztq%CwP^hmv{F-jo7O^z!gp(!xOb~?ArR&I)ccYwp%`1m^pRd9~Mm7EoEJXzX5Zs~8 z4s1O>0+Grd&$crY=!`|iL$~ME{B79D^W+ho+0pajzPY8qj6~MF-{JcIk*21oqJ<U4 z|0I?Ie%(Ee1+K5DKm4K+(bt*YGHNY>!T^a!`eIpzL)u$p!{ed&3T-)1ECzj!OfR+z z68~tgtT{8~AIaU<vRO4KJ5u<S#1dOzkFcf;cjn>ysANU}@DPkGmdbqq94`4J9{Nkv zZov>>P6!(7?*EZ^j!2NKDQMH3u`OL1s!*S7N(jWlx3F41cfh>B$fhlA{pfSwhbU4a zE*8!SE84~a`?qhylS7Rl%SjZJzMQ#Kq~QPZ>=%Ws-JREDd|6ka8OtbmrW-iBjlwKc z1SOqLWEI%awHw4^%m3BLLq3}SWQwPMUz?iCG-w^(NzqzZt-{4$;f^qdej?6$!U_Dd ztrKSRP~}cy@q`;B^Hp81bKJ;HnzBeo6ZGnnKU2Dg@?zGD7x4O~Y_yTy5{cQ=_1nb+ zK!5=6;4J{APP&rTs^fgh@!3|}M!plN3GKNHd6bMCV@5S{@;h4u4mdD*`N$TQh-h*A zKrAC6&^JL8j(%<|DeRLAeX-2@>^2qv{DTo;Y^i?)LUN~9b9)8g+0I*C7<?ZNNMXJ# zJmao39+&DntOD9gUQA?2H1ky#QDZ&*JqbPUJySigj(u*Bk5?LZ@Wq_8DVM)~1~@VA zqyOm~y?PLvXPZ#taFDbO%;<hr!i@T0pOVPjSw7N%|ARTI_;@!+A<7pIxkdsYqxt&k zV8nvrfc<a!3a<Cd);An{c$^}Tm-no3ixeBCMJMhN=H{kUE7p_(!`vI+)GXp;lA55$ zHWl^~XtZn*R8>}?JT?}*-;J=<$pdCmqw_^}cMxBsB%cw$MfFQ17FSu1R0A}Xiq~`H ziVa=MQa?sVBvqr&RxstOpMY7V)*ebkIIc!6N%t4Fe>mW(2-0&Ja{HfNJ^sxR=Z875 z--<u3|10yq!aC5L_XWhc(0AdS|6w>tOe%+rZ@YQX)W^7UJopVN-Be)tW^dVrcTj%Q zKG&)IQ>kPB#}+q(!Akz}ew@=h1@D(lPV5o;#-da;=MnTrK6uzP00)Q;4TiX#CPy40 zf5a1$4N_<6ECeX~dxonmBRi77-}J>^Wvv4C9Jsb0U4Ht;D<SbG0VD)|0#vOrYjnaa z>_}gB=0|pqCiCAkq`%<$4o%>t#X`~WfZLrQFry3bRN}+0$C-!MS2-Tr>;uTrCjjW1 zqigZ{!t~5L8JIO}apTN_*0j?Aq-1>$0Oj6Kej#)oE^J1?!u<Rb2P6p6^dn>z2Z=<E z;}raoodoyML5xxi?sk(Iu1moqCJSk#k<T#dYz}<}CZ64i%=AFW(iHjhOP0~|F)Nd5 z$2s`vRrXy(vE+)2U+~rq=pLcSL)Kh_hS4u0fT2fz_KSRu*syvk;{@VfgSA+7U^Gi1 z2HoVZU;tf7Q5f;JFb|%PGmO%F$$P|vR9cF&(L#L%S!W(34`_>V{ot7!-GFnRf(@4a z0NBB397g|Tcb0H;K`-QQ`vHp5c7rb{qT|pnDt*b?DH}qes`WOTp_ZpI8^v3&L9Dvt zFLI-8lH(W4{a2Y&skupKx#%~U)1(<nx8SGGyyEt^IbR*85<Z}aOg2q}&jCVSXv|2h z_0wg#fC1sXSViXNprfd2JQD<x(L8YXotnvjqd9Cxn8qyJT$L_w*x-ClJro4p;@ZEy zyG*lpG}RVE$@Y5eEyxn74|lR(J=`Cv({}oKF$0UKl@OoVp!Oc(ZtbmAo{O9B<TH3` zvWmaI)VrwnXUnCVmV1AQ#tX>_iA{lLf?I<5#pPxkKW(BdAD@173gwb$S|V4Q^24%t zm^PghGkPM<Cd+G6z^5JHvc6#Sc6RRWt`3!_e#8*Fa#PKWye(c`nEgE6ioz-QLwkCe zUAcKK%~YI$u)OP2@*`XCsC2`@>esK_AH!NHZTciU%Q|=P8V%V+X}o2SC`KABU4e$d zX^Au$lgsTs@rmoP)csRCh}cjFDoNi3Rh>E)Yht2YRVnS4Y|AVa{mkmi=k?9B1pjnP zZx4ozn#1tsf93YAcdF%pat(qp%zq9GdN84pB0Q)8NT9!w0dtnS2ec$u9(X!f+4M%{ z=yPfi-!^#I)M7_FxDYrw@rhLQ0Y+pebZt=RR-$HRSGrMp%Ly4%8u07~I)BJF6cl*4 zt6jWCWUXmvyeNrg?IY8Y_)A)ZGM?%=ib4(Xhi^DjD;<9EJrmvihNM#Ip|GS}X~T7t zP~OTw)G{6K@-?bAwR`i2)EH+UMnbmTdwU$X0n2a*^zF9>WRLm9Ny5S~*$4N-dXV_( zH^#Ay2P<`blwER91BkFIR|=|x)Ay{M7SB9Mo^Lmu_fDMXDP3~H6xDpmWWT7H+e5BJ zYOWgwfA7{GH!2)(!9Ny%d-XL!Writad&%AL#9{gCn$YxKY&Z-@S)`qf@QhW9QepbD z{71p}j~o(DDPyeVaqYg>d>8JJS>rX>)&mvV^SAHUId>Mn>*}Gzl}YrLy-p>vf^dI; zGIgF_(SXmqQCJJ<zvrMpr`dknnPvG?sOW$Dan|dTE$l`Q(i+N41Pn6thd>RoPd~vc z(^y)X6G-C&SmsL_#aIf}NG2F0$i^#o@iEqZHPVe1B<G|;{l5TTc}*^@0e9e4M;YFi za|^m;=j+k9u3K2@!o&ndVU`c9@xk&Rz<rbjMRWZ>57Cic^8h?2YgYm2tw1^_zdaV~ z0zw;}Y7+tmt#unXKXo97C<<MZ*U0@_loX8`zq+&{^o)$Z)t?o0e@tsn##+OXX%VS9 zse(|KhX>Nc=oywRPc7`z989Mcp_ucvS$Pl`!6dU*hw#tl%4vzO2AwKpMMt2+WPeM; zkMK&p(ND&&)~rDGo$tA1)+@xp{sSuWQMe(ez|*mzjn$VN-l3}09)nj?|75H|{Breg z-rui>#gRjD(fKlXTx2h9b-jGu{`ox*aD@TZxlh7)9vYKssqa{h8+|_YGk5J=;3*Ur z09Q8NQa<9&;tTG#SA1n2Ut^J{_<!qetrE^x>=Ys=B%PLV`f{>!>Vzw$cpJmZ=Gygb zNkM`pKhg*yE1KqZCp7m~JV(kNItPV+7@e<2r|n00nY%<3EWmdZU#%wMWynft6fv#F z;Hj-_ct0DnE%l$0zO*R!;xlUnTW_I;MN6dS`^5!xpvHf^O$j45n0lOYbcRmX*_t6O zCr5-+O7Qh2{C6<x%>4mwO&jn}SgfBI;9acO`{JOWkxRF83w}r^;lAk{x#79nSn@p@ z_^OAo!#+^XX?V7z{EV4gq}i>H_)T2$c+6g~^=#(*b37|7Isj$fUs68BcRE%BQWkkq zz+R{g3ym;}r*MXDU9iQ;*^MI@XoxRQoD^gszzz<I8WWFNT3nX-e)f>~Kl`(O-Pg;) zPJ=)B%p$P^_)zO~mImuy)Cm_1=j%|^JAyphqG2_v6b=zNsYike803sTgtx~O13*XA zbWr=|CAo+Q#A5}CEPP*8lqK7Wsr&)lS8ntgk2F4!(dH{A&H=kc^c#neq!9po1uH?z zK8J%kWJB0XmieXb$|RW~lxFyvo(~Ai|HPHOIb2Vexs9aM#fm-d9%`O~vUSSave8<- zzSZLoa)aLzQ!L{G%^Wj*Jg?WB-6O3}c(CF)zPCg}MC#<2UqjtgR@yOb{ltmsQV|1G zPJI2&q-rz{nd>dKyKkN<qE+C>!Vb#s>r=3qm`mqA{E*BI>{ya|d8M_CcMQMvAt{CF zrUmJpCi>kTn=y;e;43@F!CY&D$?N>?l!}mPUCpSfy?>g_(5wT!%W}Z=;MoT8&k(}$ zhe0$pMoBi)e_N-Y22MwP4)yDea0dhM#-YnOqX2lP_YL*R*Q|#yl7~ZN(I{qp&r;S7 z6Y-FOZuFOGjskY0gGa|>&~GO;dw)CB_06XxT5Td)ZaLA$xI8&64O+pA?(dGwk{E2O z8|6#tJ}AcbPer>g$10y=aeMl!$K{GljqM&a=2N^3&u{rg*sVDK+L-e=hAb%cf&SXf z)R*>aVnA5@--OdPtK*p@P|AeU%EBOm251~8F%bZhX6RA21y`bl@TywI1|%#fkTUN% zi?5hcklt1po%w`zp#yD)K_HK#w=0i{iS)BZAQNE8(HTO3!OGjf2}iI99Zdjo7!AiB zV{z#6Od6ReH1{K%O_U9hO({i$t2i{Y)m2f)g~-_AuiMI{x}7{%&ElMB=9T5+WBdCy zud!&Z@6bm1)TM&i%wp(toz+v{s{+pUD`?NwbX%oe4uS#2jF=#6fLdZ_X8p1_VNmJT zX85wi(=Kc2erMz~RmUmGhO`vs@1F_V?U&%bLOnuT)7%2HN_G|PKZ%{BIWR3g{NnwA z(KEVHMbp^<0d{zsL4H`c`92;zWAVCm*~JGvai*n|ToJ{J0r&81$h(QqvyihP$NFL# zVZ>3&hMja~C|vzvFrCSyl;-c1nesJ7Sc=bxc$oJfV#g=d8hZ-6^2`m(CH*olMS-NR zK4+riLBQBOy%*2v)nd1-WYgx^FQ_hu{RkL2nr@wdf7Fl^S*=v_9wl@NT(bbb%Q`_* z<B{c5B7N*|pC%E`Im(!)KEPPcQ*pbIY*{Thyp;mr(7)KLwEv7#luz;?TEG$bgX-OJ z6W{pmE@T1DM?xl*_JvOcLRTmZdNF?z_|3PigSC+KKIH@*ZG9faeXg5PYghmIuJZ$) zm~&}Ss_KvcZ3y3ds1-Vo?PtF~B$<(v7bZlP;STkXR}(}i;M=g3V=$c<VVATB#M^!u zb5Sc$kZl;aH^FKZR{mGvKc0>r*@Yp5Qge6B*_bLWaJ!Y{B~UkGW><y?2c-ejod`?9 zkQW=P4!jT&iy08?xT*oYV2^_mKmXTpJyjlik#`}$ovc~@YVY!{YNP<0JlK9y1C_Kx zbTp*Wgda+ffP)0m@X0=DwO3yMOcUm#ARB3wi0|dkRnqKPdDi~+x03ig?K|GypH<6< zSdTqPP_I?MM8N*nF5Mcdq*(9%dI)!Lb0^;51Q9}TEisv1kGfQ`$NW(4gdZ6uQc_%; zFo*e|url+{NH7?%pjr_quzzt%Z~RmKNc$AexPik?09OIh*pRv<X2<nA409ejH_-CG zL_AL(i`mD0wFwmH7X3l2yTmhV{Qh+9B32OiXLeNH;@%tU)?vEv?e7;fw2EwgSbxQ@ z^XInF^sa!?7ZEYEaVB+5Us~(LI*X{aRyj$piraVAajl;>F%hw&F>Y|(SZaxL1e%nN z+Q8cj0&<7=SXyJS%f$J)FQ0U*6<r9W)^u;=uOwP^WrglMkG`lE_)SeC#X%&%G$w{v z7WNi~n7+=Kd!F0~ern#~JPyv%rjZdC>~?Yt-lKZu-SNlC9T}#gI?*<v>%Qn7bK=+s zOwTPCJ6XeNz=ZJzm0~Oc9XcC~x^|l!2hL`&%3E)?bdnL{4OraAiP~MC-&G!*!82kq zAOrCYOfq}eiTjk_zY>@;gP%zAT1);R@7=FpjiSKJlN2n`#$39cQR3@(X_DEb#qjNs zA+(16!(*1^P+#o)HQg>BKR;;@j4kRwf^?F+S=IeL=j-d4vmW|S#va=n`nkkkh&lJ3 zSUC<yb`F^t%geVqP@rDG`MyVOEf6!a_x9y#$ISCIxAW-Af!vl4DC|ZSQNep-&FZd& zJwF6)ZgFrwn0Qz{OdP7hZx$`dj@&JB3Z`sVhgC?70rqNH`fqClEuOuQ+eX+l*aCmI zoWp>+D<58hHNAnICjF7!=W?x1Bc1xM&+WJ)JB9WJAhi4FrXj&JMW4C$oEBJ~!>Z|O zQx#JQj7Rn6=`Mfiq4Ma?l*%iZHs}l}-ZnIN*hmNpZC{1WJ;WUD)5$FS_g*j4`dnq@ z?W=<{yE=v9a(=`R&)S6(#+*K5sI-gfaE!;Wjauh`v*6^T3>Z}stpr+V1%7lazW{?d zki49j4S91i?1!y$2NJF$!T)`f&Q}RWqs?6-I2IlS4^ZKOByTnn?7W9va|dIsJoj9^ z{-Nhz;{mBeE<uT&Rj1QFeo{wR{{hDv3o~3=n>Yb^6LG0sEKfiaEG~zZgdgjrR_}25 zMmIG{zh`HSn9wK}c<1Q;xG>;%imIUdpJO<tf%!nKWOEaHxve~J21owYR9R;ZVIq{h zp3>Ck<hBdb=z}J%N*<rws~kdcjKZ}HTA{ar`4Am}(WRXousM$+T3|*fN`BdOF$|%u z79{wg#c$n1_|@}gqG(4viJde(*BXo^+GOPq--_*X-7y^Vl?dGCHq6?MWSS8|=<u49 z28#o4c+oE;c}O_PXfemC$QuVVZ7|At=OF&b9FZX*%72kll=OVI%$a*uh}C8l+Ik@F z(`}T}yH1U1CI*J}b$ROf>MEe2P*8^;Gw9(Y!SUZb@3_a_38}x~q1a5uyEy+fJjnc( zw^3v}E{tK}txCAl$PhN2i#MeXXfuV9i|~RavUL>1A>c0$jfOlLYb-IHzIRPsbBIZ@ zIq&Vs%6bg!DQQN@U<?SETtAtTcrO`yOB-uEA%7FE$SV!&q!JzxGT*_|{JZkIoK$hS z(Odl{J4uT0cWGUeX^773AH<WZEK}H%!A+44HWCbJ<lhvKk^d;SPOxQGG$QdAJt-l| zjXop67m2-d61A3Pc|Cv_+``|BK;0f%rz$lq1q6!X<(D>PWxbzj()I^(Aa!qr*+%M6 z!rXA2B3c=uL+<byN}!0f4+ik!?+!R^nmP_0>Gll%dVxdK)(ACTaUH_EvaPE6D2h_o z{&M@;6!l*(=(;KXcRM6&&E9t#03*L5%gYIIYpBpdF$FAa<#!s7OuJ5vieN$RQWC|i zFZ)>VA4$T3N~;7H$KM^u+S9|zn-#gRC^yTkXfFXnN^6nJYoAME^E8EAneK-c*eYv8 zLCPl~F$nJUV0UG>Jb1INL)<VBPk2R$?;3S}e4;Pp#^j4sC?<p=$rmXhEHDLs3jcEd z&CTT&AEEl|v$-h3;I^4SL`TCtD^CDLr>WP59TcwAd>aad%eLZ*7qXIow`_xpWFrO` z$iNuEW8*pA7m|Jvx|9}d&@TIp=03i<D@#-Y2hSN0w5*8Nl>^=J0q8R0bXZ*XE{Q8; zG5$P%+T00jjK9TfGHQd2#+l2Oqi+_3GTdAuFlhNvfV~ZsaKmdmfk*B}Jy{`ExSyon zhg_u=JDGMuE+p9}7P5aj7pcUsle#8DOcNL>4vhEoe|@|h@J)1LSX?()8(OBaj8K3k z-zoPzC)0fkuQe|kUDdzFF|+q>zYUt-+Q5c`AN(@A)6NgR4GvFoumviKM24x(tI!+A z*{5xr2!wWG-3wm5rA@vR(ED$0wDOK?WQ|Fv=#^B@Ft<+BLh{cFI7OJ5_K|ETGRl`X zN0*yULxt+6zR<ha0d-jU)<G9h^csi8w?QLgn)X-{x0a?IP8zD%$O3a(zRLvPXUA`D zx=q{-vmSC16v~lj1C=IcPs~9f&nCT6{z*B0TBx1;SIk8mxDPK_Dj)W7nR1zCG=B)o z!vVJ1M07v9%0u)aJG`p~6=Ss>0Wi_d20pIe`uHIrjf7z1HQu_e{O|mW{r~unvPiP` zE<g}n;Q-Z0&rj007CUD_^zP0rVVo<3WUgxH=s@&f##siWbtv2&Q!VXPP$X`O%(@0# z7nhM>x>MO6qilwTRoB`z^<A|)@nh=%=4_Yk?)&l3hXq)AjW)RhZij3jS8dAN#ijkv z|NZ>AqEls$z^ZC|Fx6xLZSsNr8<`{x?<|wFmfM}=V?hL`(0<57;dP;w-W^m=J<^h; z&XMEA&+52n2H17X)}KH>dz&Apht7n^vUYMV__9ZjnHwXOkw~xv_3Hfo95Y%Gx-lQH zXXOiGcmK`F(+Yoab#CIoT+EJvd;Xoj5N7aj+^~7jE&IbGsxR31h90V2IX^o5Uh;6K zE%@8*mt+?rj3MOId7$~Jh3s`l8k#;EY1fPhT+3BX!~kgIk464T)Xec#H<jQs$f&7q zxor&`du_S4FL}=J|3bGCu<1)OvZMj#RhL=q$sV9Y3>Bzj5exQ6c!(`l|AXRV)_lUr zl=5cqPtzZPIkZp(ehkai!CanCjEuM?Yq#~-Ws{xeQNaBNpw9J#BI`}tj^KfwMYGdv zw<Z>J>In!y_5X0HwfiFX?>-UpO_759BohBoGv!6F*AaCQm(V7h=rO!_VI`KPFE+s~ zqv@Gz2gVBxqH-!c<IxJUSrO}c<KF7`#m!iwg!;cur)k$<Xc4w6wYv>2Z>k#~S;vDA z_*Bdo`-cwou+EfgIkTjb6Gp{MOt{UaG%mct_O@%Zx$Ma&^nBp?b9M%h`CFKsLx3cb zmB@rJhYRJQ&jv87zSfxYn{dQX`~J~g({l}MvaYkoVA0(>7k8(Jd?k8%l@j^i)ULC| zcwOq+&8EDOw#9ffMD1(!#h0W<xS(P3(ZZt=3K;%$oWwEO#?tS%%aAxMz4;i4v>LXj z#{*MXq6zL0;HU`0TeK#e<iRlM(h>SQ^$lq}sqYv<Q8>x4svIAP32sn4M+P=`JNFdk z(s@llu=h%$2C{AM4ZlzUmYLrV5b8DA4b+N+4W%B8R2e?c#>7vSdHyAdjBnD@oNH9L z<*x@pASKI+s_`M$hh{PN+eNV$wD9DIUmh%~99fGkfRd5vu3ZxR-&Agf^^(31!Hi~x z7YG9Q($qwfH}hgGY*a~&W4V4561Oeyj%u2hM>;^iT}~6AdpeK-S0`g6t2@7>9zv2Z z>c<#yS7l>e8tx3T|Ma;3=j&ZA^}z=o`HG`Si?I%UcJ-O_Px}9Y0S*x~dLYwmM<y{n z^;+zxo4Gq~lgw|kx(HLz5urzBt^#1JJd#YQFe3KICZ?)Pt2e0?95$=JjzdjHKS4i& zUvw;^c#s6#9}37ot(LofLjf>3L1B)IeN_;Z6uKomT}ncg*XKZrFYLQ{059sp832DS ziOpI}BN`1iw<t^l0e9H+OPcdoy|37n2=*RpT(Ar3h+PeF-|WU17MZFub(h1v7esZ4 z;g{7%yB?hfF+}Z&<-_MB{Qj}9gbV`<AD6rk;v4BNgS~*fuc?t!gNmuF!(q<WFXL;= zIYI?jX%izS1N58oHM%+@pkuZQ)raspg0R1Szq>w|51k})rD=}kQcF>gOTH7t`tkXF zIsl0|3Ei7<2JsClu4rA021Mu+o+yEIm7E--;|l-K;9exT<IEG>J+o!2iTV<~vvs89 zpk)WokhS&%8z}Z;m%uYRp}z|9+&?<URjv86xR$oTU|@I@z(5jdme?>=(|4^I(ZC5D zZozYV_&xZme?=Y_-~YFQ$~OkVEX*<8j9A>DHLzk5A!Wf;e(OLkH!}Yy@7}n;R@FD2 z+h0N&nl_7jX){iU;mh>nUHlsDo*(NgX#8}a384e)+s1e498By@+9$~%7bSN5M+yLa zv?x?Xj4u^6STHm6mNG=tRLT{#$R1k{&_b8W)IN3NwQP4YxtDLPz7YPy*?*A{J_HsM zZE|^o+_w;osi9S5(Xi<ESy-)|%2Q|b$MTA1rrsw`+5PFFc;FG>uOzHbZ)~-F$;?&# zQ4%46|F5NU?5?xxqHyEJZfrYgY}>YNqe&XO@riAljnUXP8mF<H^u7Cx_ZOTm=N^0S zwdTC8`8m7n^VMozUkH(z*-oqa^JM;5(tYZ+Slq!(2yf$?wCgBy7@n^nx2}|6fQq8` z3mbSzXbvEOFI>l(5BfySwc3?r!L5{xy;=zK2saqFw-LLh^+x5lu5+H$cAsDKc?7l` zV8MSt&Zz25c)5f68S=75q}VxAsCdRrEl#|V(eD6Z=l1V(99~6J$fvp;sPFyE%rFN* zyuVG#q^iQBNip6WX8q+*zn=w0vlKxOh$LQjn#HfY|F{;t7b;byJF~3P)ytsOF<c)p zOeudWy;=jx-`nz5P18f{DN7eM1bkl1s2Bu2$3hxH$i`w{f`BXt0qpCLs%iD}WMMP+ zkf|y4vtS`WBQn|2vF?Zndicj#o%6J}Amk|rA!UiLr~u+{eBN)34~rU?TTN0xR$ejP zxPr#v(*BH|0Eo7E`-!q(7j?h|VFmtWCICbi66UTt7#-bUvtZc?Pn`u|k@1hzhq0Mz z-Z>_p--i=!-?3)58ED=Gu6xaPaIs}Oh6;cG8{!P}+(29#nZd>lx!+JGc?&csYvLn~ zE>hL##B^X3_Fx-#NEd#Y)Km9TTyDA;{!2!jF71QW_YqL<4k_`=xUWq*nA4d(YKf8o zpcT(_$;S_M-j<R7t*CbhvztexX}a{-qFU{sD5!*241;XgOa3O%C}s9#++iuZ=82y* z-*O}hrlqiS!S-VMypNz4=&jLsQ<?Hep_b^=mErbeT(6Mptij<u*~A0Ey81_Q4YKYw zV-;!NFMSS5_Br%z@4v3|AV-0+>lVx^Kuldjs$AHfMhvA8t(@6LSmhi~eGmvoY4|?d z+nHB)+^pyU`3PXEQbi1iwWN>3{`I5Z(yxA)r`Gxt<o_dd$B<+AApKq}_s>On)(4IQ z%Oal4hD!5o!BrqP+Fo9eiw$^yY6tmA57KRMiDdo^Z;5&*+{)cY_O#BF(rdqE%$`^) z_%+WR%C$ok?7{sRR-6;Eugk(>*y@x{;Gl1nrvS2-WDhGt&vULDSwCT2G+P)o85n=6 z{o2l#28Oq<B`UI9p0~>jgcn?TJKQ)TYoGAS)^m6d$kwH!l3U`22cSW!^xJlA+3VJ0 zeoKk9_Iy$SCBH{YsWN;{0&`$#IRB+o4ZO4;;D<_3*C*H2bpYP-#W!8D_NQQUpu86- z)2L~d>rE{R^y!Jg>4n~fjb~T0#(=w6xFrPdb>dyN#wz~FagPF^5)Bq{j^DSFwHsm( z*{Lgo%3*DDbERUpvY5gPc`;R8;TsEBMmhCmbVg7&f6>{cEAwL_%lemi*Z%fGruw8G z%=OzjV*g=X<0Myxx`6N)`}<likJ1eRxl9F?f}*gPaPY7EfLUhwVsRW+ad(mw>WdS- zzY)ajtA^f@qLw7EPaJ3>llA*y@DNM?(j7p4-#hmv4H8^sMj!EyS&l9&t*6~`7a<sT zf=Fjf0%mq@XWBKMr%bBCw0X#Qp9HgOk+N*H`B~+g!*%x0)&84+J5=(?v3=54>)ki5 zD^{_P0#n-On!_sFNdz_t@Lvf5Q@@L)GKRcOe?Na41~q0MQq!jR*D}YXh7!$jY*Kw* z)zopIO}jX8?C!db07&lP+l_7FE*=BRsQ$iqPBJJ!EKs4Md3cEIHk}ji!De`@;o&F@ zK9RDMH=&__AwYnoueFzB$Fdx^#P%gl6>~C2jYhGn>61qNR+6=I?19@crNVSFra{i@ zvkV%b3NgK)*7xCVobx~&P7-ad3vP1KP}|=2dA?;ebMvkd;s1p437^Ev8YI`X@ae*D z0!4kY_5fc72WW<Kl2EQl>2P$k6n^nign$w*xq5Lk4*hxKk_43SzBlb0M!-Xdvoa5| zH?-V;S^6L%#%Wt}O=Tl`;93xk6&r9Ng?TERi^#Hkra_zf#(wk2$<YEpB^4(j)l?nM zv#ZB^mz4zh0t52$skH@VcaFGiObLOJKT}V!c94xTA$$39cbu?=Q3dRlhIDS}Px$`Q z03<21(i7VcBCxVgJwRU!!3&D?*JoxicJv3|qn+T0-%EFKLu&IAatDwySQ@!KxbZLU zu8)`+d`vrtT*jc!*-4a!y0WrEjv`rL&*+8cdi>hJPMy?_`mM$&Cw<jGhs%5Z<}JyH zNIEhsu>tX(!UOm5_-G3b$ZSI=v(~ClC~!mR?8*WFiAr(WLZUL-Eu>YmC>;#=t&*(Q zbXC}DV7A`4r~!m+1C;`!6WO{b>xi00?x~K(3oQQdII_qO!h^6j|9<{tp1>pjkTe9C zlxHb7PhgSn7CojLF(Da=AD<4<;Hxx!d-@=ET+1;XnB<7eB7ZyzYC87}&dhbb3(SZh z)RQmb8LX#Q@Hmoor6>H@zyul{!qxHTcB6<??58l@XvzG3d5Mu-U+R#W7sRGr*>{#k zYhWB$_to1SYwYy&%gY^+<uuK@aj$#s!N?QF2bLTC7W3`A-XM(0Au50u=ar!O&NFx6 zEjARbi@#fb>d2HR8}Xxcso~m-w(E<#D$GQ%dtVD?7_!O2>Xa_9SuTi-e0Ut9G#y)! z(K$k+n=rIE##Mkf4qt7wZn|jkEk&{UTU&QdKFVvMa_Y;()&&DbVzhdE+MW9=JrGxE zeH8C;?cRrTyfw8%=mlV3q=Q8fFFgs0?htc5-4sx8d5hkHLDd;I(|8b)aIMadBmVcc zS?l4wCKXQ)9{c@(t<fPngnk=MUIei{L(|1jhZvJw><6D%`eti9E+qlwQg~NZs`v^e ztV+eFlb`XT8$=s=*>HBG*Zz#ATIH+gWbW>50+Q|&j|Yq!)Ly3zNDGU8HTlsmp}VHq zK(2AvbAD-~Ce63fiA;@o%WWm~$<H;fca#MNy0HHlm9=V60fK_0qRT<pE|7smKJ?y1 zL%JtS$kMnXZR_MYrvMLUosP%wMti^p!sY5<QPqzCb!5AR`b!*qaacqn413T6s;7b^ zMG$YFgsKYA0?JP-kIETnBTY=(z@<JGVC;MPy&I{8xz2%WQG`beH^muRESj0X`<8g6 zZ;q|gkx{4vD8|w3`D*iG1d5e2qsQ4`me6Zr@G1YCY$I7MO!=`nFS`-W0S<NgZFxkB z<_fW%0%I^~u#%uP=aT_j(y5AKM(?g$;bfs~0cof1fmu*im(*-YmaSA4){3L9U1k?A z3HY;75cQ6?(9O(UXKBK^z2Q^zS2eY5MeC9a8{gVKJ?99y2lJt^nq~c(vhHq@<`qv| z!1MI_jy^*msD)}15!a$d!DyQ;tW%fCr_&49m(=Iyq^5@KAWl>$U8c#z#6XBxp8OJb z<4)0n%VC=mCwTB%2FK&WlBDuEhZS~7BMy1L>2<h)Uo%f(l)z$yhaH?sSa2p^@E9fb zdq}V74N3E7bd5<sQ_pips!82lE6kUSQakw_FjvAE12@>HH_E(mpkx*`4TBIw9>@!x zc=f)R<Y&OL?j}QZ<g;$lwp!>N*+M1hy$exgTm`%J#hTD>l!Yw>M)WXV#{TZDTj&Z* z91ZP;ZxD6v%%3knd4O*|{}OuvetH-aK#*YfXDXi}DY{Liun8{r`Z&+;%hBB%HhF1? zGJ;`%<%0dJ1FWbOUX#)8n9E3nY+Ot8aqmUKv_@07p)WV86#P*EH_S=JQ|)4VtOV*@ ze?@-91IImLGDqzapWtAA!>EP@2k%4U&;qg_TY!X9|2~AQ5Ehie9*|izOxNORCnHI- z8uv@gmqWjcJ}k}zF0|t|kAj@PVahy^mc?s#V@6X_F5=D)$kp(ej^6}kd*76185!Q~ zj8@uy2vH{JsCDEN!qN^Il44OK$1W~i3gRpCSM@0<nNjFe%5Ho3EH@A>=o3Y@L;pcz zina<Nx`A8x@~FTG1#KJz8+fRmf&47K3;u0pKATl~znS((5+03{py(K`Tjgp3>Y@Kj zy#mz2uD>nHg&t`n%klx?OS`Kp8%Cl-r@^cjK7a(uBz(r%&4}?Hyaj6l^8mA~ONWfw zgNY25!~}$j>3O)L-&zxgt4z+U_=)qMBZChDUebPz2Us@zX!@7Vg3s|x*Q|8-kV7|% zX;Sy_l%R64!n{-{OLB;v!h~XE%{uV5NhGquj)i;BY{}vL(Lxoj17R~8o9!k&$GOq6 z8m2>r)0W9PJ}`vl((23^0^Qr+o2KNAFDjG3LDOP@^_p`_-DIda%D<fNeIlw*2L%9q z6PV<w?}?I*W2X)dUTusBX+{a>{=6xmsZ}}n+AGKM1G!G@Umf{?)&<72&{`Yl5*@j% zwc>??krGpXu00}vs|ufl7??H5KDEj<g!L+Iuw7_1<kU_Ly;LUP|D4b1m5O><g?%Pl zB^J#}@0JZCT_3*iI6dTU-Qri8DBGz~$GDJH0VprzLXu4dPkR{yx>&f`OdnSOz;z;a zHk@_%^c<T!=RGt>Av89c4MFUPTT5u^yv$}V^-dQy@w!zd@0Q5;wM6k=CfC2OQ3LQL zqV*y70zn4no&AVh34q?BX5-jtmw>oo{`qv+@SpYFs?wjym;Q+!T|U?BCtk@b-LJPD z0Cv)^n*ZT7V@W?|cd)UZ%WDmie>V>tQ(7XRKW2b?FZrZx^vb+9cnq3A2)VvNY8DeK z*p0-0i1a*wu_>V9;xS>C4)vG=fBQ5O{N~)ZU9>8zV@8X&w0_B>#}dhwk~n1_LKKA4 zC*wS9dFu_yuZnW++w6370B7qNXQ5W9xJ}_xIrrBtJ}c|l3e8{J=jG<Qd7<<Y>3h;G z(Oo%m4*BOOG3dfyW&62w6$Uxhdly<&YZDcNe;ewFo6?4&Oen{EmO-_hNnk|vT;%gQ zdo~e*%cix!)9PU5#mB`I5Sqk64a|^r(U2HCji8IxCh!>sdZB`!U&kb25O$Z7GvZ~x zJgM%TA0zz*>h@Ps=E=N-q+n^rygyN02}1EjxQLz8)npxy5a_}$$oQy-3{A_ekqnQt z;nsmaVyk9&55(2gCz8cy|3YPKrjAaaK#8z@x7wpiLhC&ZUX)Dh=hyJNIKpO`2oc*1 zUVx(?y5Xz&fsah%;UYj)V8ctX@k0nq28O99yk}(5X#*T&RMNW0?dD%~-CrsDy#wZ0 zHmP984j*KOhDCvmAK-2){Lrei@eq`h{>rIF_1!y9ls`dfBX=b&;|E^Kn%tS0zD{Js zQi_iMdf*R`<#!%b@b50lgE0^89xX*!tPZl-8s3T`?sXCryVTnLFU%b7(3t(mu;L{J zHrRlqR0mM2;J#?9WSqr)cUK<3uhe3+MI^%FLK6K%Y%Eow`2hvyYPRpa#!`vlsVLd3 zVm?u^ub8`#KJ|=|m}5_qB~W6rPJ`F7u36DNITK1R@{<Hz_dKI>{MvHi=k%VsHk@?$ zaKo(!WU5OPrX{`(V6;NMT0AtA`Gf9wKJ^{JDOrIqX~J(G1$!dH9B<54GOM3DPe)63 zJvj=dbq`DH!z;Vt*_`#qAVveDShmWOFUW~r4IuVdSxp%f9cP|-SM!}K@k65a$K+9t z`Yg|n$x~_QD)J;lObfHQJ`8w5G~9?m2JI=~@MQ%0p!R)tR#KmE08)f5pD=*UdYBk^ z;aWr#H09Uvd`quNP)>H6jtiaI#m8d&rTp2wehIcLuxb=VBEDOZ@aZ?rv(}!@2+_H1 zZ~E8l5BnEP#KNPN6%fx09tmwt<cxh7ND(n4(b8RCt1xtolz-qDt}!7^YikQ8RZg3% zR6lo|1ninOuwg@{^Gf#Th~1Fa1!A78RBArHb1XFM0xhCPb*zx=yAL*=7i9WY*m7(8 zKVJAaey5aYF*-B2XQfJShFOtKzaJQXvj%<88^6OEn^A`g20HJkacj(Vzg-*MrF-yL zHt;NfE{M(}_#}6Bx&LJMSYL05tq$votOuX;hV`2CTAN(bOq>iTfR}s%U;#eix8P9M zX!m@O`K}{_lno{eRu@xzYynFwL{t%{7P%qRB7Sw?Nk;x@YIr%LZI-(YTFGlf)MW-a zqxMUPo#wVW2HV=w@Dzs?U$-z<nVt~$guO_>Pd^DH^da^F6|4TTKr9yIP;sTN{Fta~ zzTWc<a&BTNsuz>nYUv-BB++yO(+!l1QHCusSO;evF^NT;YjtT96}nrFQrTa0a#{Ni zl-IxU-jIf`lF6or<0X#JQ_%x(;mf@bE-q7`C@gen4ELD>ohs&ZzgyOLG0ks0?_u?5 zJoE9yBPTV@Kk6?f>uCtmxEN*7=?$=Qt38^aTdv8CrWqgthZo|gYncz*6s3+w+_?LU zh0atR_nlqnVYZ}e?JI8xILwR-J+wYrWc8!(u*iJ8+=e(!u>Wt=NWI2Lam&3ZfQ-Qu zo()UmdHV2i6ujnC@xGPt?9Ymdp@($d#J||<H<NGw2e@6rBn8Dus~>LB=^DsrvA$yV zSM{A4RizVD$SNEz(A7;t7R$g5hu<`qiJyE$vbd|{+?J41;oyQXDQM$X*#Q7eOoW}- zLh#1@KT%YD@s(fr`&pdX1}{PS2wY+}fb@Nv%1Sq`U9E6i>WLFQwYtWaUzr)7{m;R+ z%*yZ>_{_|Ewvg4;rPx-XRAfnuEawowwQef*pldP2I{rIJ9AyRlzH8)_H|Hf6aPL$y znA^BAeA4K*z$_RtcPmHUT<uXUapuY&f?~QQ1w?LoK-UOj$%O#lxL3coOu2_~8^H<^ z7_|N_Dvw~YK>V?gV(2G?YNSWaO$aJy$a%x-k(s$i7&4xN?YtuydOqFFIp*1(%aUJB zUX8101|~%cUHr!RY1*)_SbLeHxRhQ#CP7j=LlH_A{62xLEJvx-2C-G{1eCHqB><-Q zQg-X;DPy;GWP)uFnyme&s|!1vB;dceqF>lRqA?@l<$^G|0&uerC_`rrd}63aXLN{$ zX5ZpSi(w<eut*)H-XUkvJHLGrP58>-uAZ8Ef$OUl@R1)sB7b<FQKHk)0SK(h06t~$ zza^WWZ(g6)Z$vIYcHg9QRF$DO?qx|@N#o%CJ~soLm_pvy&I@jYKno=$*MM49a9GKN zk0v0F#V(ZIWaH^6IM_+)fa#S!MxJu<B(9s~+I_J|uw(UWrP|iHHGZv^b|RcWcpj*2 z##KJ#{<P%p8W0_Y=Tk+gns8vNk~k~C=e7~86^f?7!kx@e^M-HuvN#dz4kh`^CBMb% zkaP?9+X-SQb5=<-^qc=4<F=Tik*k5^bIrs2$*9V}Cl8oY!nhlM-*J^Rtsmia!0l>` z=0I1VDG(%S*Sz?u_UZL<E2ZEYYI$V}>MF_NFCNzdgT`>qe3%IIrEj$+(Wh=bM>A{L zKXh6*O4`=;aKB}eowOnMAF{x+l`Po^T=e<&{q6&@VqB8mCAS&P)|^wd#pmrvK}k-! zZm*O=cr3O9L=bR7N3)K6n}MsSr{&v>QZ<@(-3amI8#L)tc*VKx*2DtVzb(rbk^MZC z!eT&f2rXa2a~d|qR?)2RW3}vP5iY~e8hy=)D!CkPr-5s*BQpJhT^Aw_l+3QC7J)3c z2Nl(rH^%(J`}B-DqJz-J)#rt<%S8RS$br^Itg|hC>j1$3r~Csq+Z4hJZoS5GvuU3Y zk=uH5bDpsV2{B*_q#nGbEH&vg;1&p@ggz2&QS`H;U=DlpC0)3}*iq^yXCW0WuHi1| zxT~Z7E5Oyabgo!(thFO}^D<U#J5#CF_x;oN;ZzT-OFcHG+luzuwfbf94@ZG_s)_ze z*;voAkm2>WyQOU+E1cL&w>TKJV8uX4W+8T=)+>(t+7f~nuR?IZN;H@AMsp>2f5Slm zUBUWyUwGa4#|H4--Q$I?i}2L3BsmeO|4~$E78^>KlkZv-n|7fJiMkO?W{zc(u>5rr zVEehoLtBDYMeZCj8UVg4mL)M>GDK{)RFvk(czMoQydN1Atd^bT@TV)|jb=joT$!3h z=%mn1O}8F|%RZD2$*K&UweV>&<GZKB;JUuDUs;j^t6;ut5NziWPKNC%V*X<K6t7z1 zR_wF83zf4j0K0T(ayzu3t+Z1FKBh14;>PG{)x3bafH1H84`U7kja@CmC^=Q-X;01! zO(z4f!n3feQSlg@r37y<sZ%9}LpLngQGJ<sH=PjSb)?zgJqU{d&|q4vbo<QS+9hYl zt}c1kn#4Q}qCt$#wseK%HAav;u7pd?h4KGGPx?54Q0e(LLC^FZaxUh@Qglxj=o5Bs zS<vZdQB{-^&+dh(5tq;ttbqs2G6S06Os<Y>S&u6o<Cd1ZQ=|j1z%4A(?lkMKG)bwH zt%QI|U-Wmjom6hax$Dilwo(-t{zDeJkj-0ID9^p+5kJa6T@<WyM*io#-9PI{ym}z* zE}7t?0Dvd^7$CNTZcPw7dhqI^IyecE%-;Px!kQXlfAe-=WV0gZZ8HDdc}Sc=V?E)g zp05zuBr)_$#4Wz%jgutx$sqV;=bwV$vEE}}5_-3A1bexomX`k#MW4SspgZ5yiw(lk z$mi!RR+3{)*L^&&8vIPCiJc2i;~}sl8kcaeY5QDL5M7qV_>916zH)-cBqJE^Od0^I zq{(-dNAXAZ11^CAAu8#{k0PI%8xR4OSY}4uP~M#+_0$qqcYeQ~TSPP*7@4PhTM^bJ zk(UCVj3*s7Xf@|K{HsP|)G4uVZr73v9EMBZ80O^EYPO>h*&vtu37xnfZx119Ri+4v z(ldYPP-W<hbx@({IK8m#EsY4o{XXELO{~eTlAeH4SN(fV93#zsXwkug7Dq6k1^$|# zvN4f1cuD#_U1_XpS)V@gEminZ=<K-K0c;~)8d$6e3_GW~*R*yYUeoH;M&P^uN$I(S zJP)p(3)=+WG)}X^owCJ@B^VqLX^H1lPu-f9Vn4E=tMvN_)JKKa3)co1h~y<dZG!}* zoIQcOyy7!dP<Q}1X+8CU5pV<jg6g2hz`Z&4)53*Ey}{vr0}JnCofyxmeM+<F5S}*d z|6eTVI$Qi-p7+BN4Dcar@=7;$FB*|ir`1&QD+W>o^7bY=AzC#5@St4M6|n7#Q+C5o z`4%M!&5HhT<`E;Yuc|fKzOQMkNLZ?E^Q(3z8b0K3-oehT>jsQM2uJ`zPOcT<W*m<r z1NqG>a8F_AfS^EB)V~mA#vf_*)Jc8<`E1w{@O7n4yrqq=V#0;Q*jXKEtZ5n*HXnxd zHfCF6KOgoMwFO==fBi)*<S%b??3V+XGvI=383^UE#cWsw_my9ARbkIPt0c|~CPv&^ zp~E#Aa_?}kWE=|Yv=IOUDI>=lrHT)~soRre&=t!<_QhxYLwG38{#2*w0~lGAqlk8@ zV5z*)>-EJkL$zZC#^z@Y7e2wfowD+E#__BJ>5lGTBb4;-X}?d(x?dAq{00IF14nJB z2nn&d;O4{WK?YgJD}Q;wNWoCRCcp;4AQC>kf11heOmoH?q$7L(DfAU`umGI)(-b!* zDRPu}stYbAd@dxj3JegQRa!f*B=~z=p8+)<^yuty0NlpGx8tP;IKd<8B){x+w+Xot zV~+P&5Cg8lnS|P|=rRn&Tyors7e=`*vmKrC3`U-;25YnFaY{?ws1AvL6tWmNrSNEx zP~~}i`_ay2uv#$wy8M|xS&GkhLE+9I%j}c?pbwTG71!JPPu~gy%TW~cjJU0CHpR5i zWcfG(LzqnlSC&tz_$HY5*<T)AG}VzD7UiPEVOWFrS!6@ZZciY4`s)JWAj0dw`L2}A z@uf!(sXAi6hCI%fR>_=kMnglRyYM@qFGbh7$J}Dx_cUFFV}iD_R>yTE*HjG7BdZ6h z0sgFfrI~L9*vB=PIqOLXa*8-%5FLu&Vqjc=8rilL!xTNyJD2eM)rQCC$3xFdXk9e; zXihfKB@%&jrwX^fp$YQ}a!~ibuuwaE(OCE}0&^SF&41ugzKrjF8F7H=L<g&uJ3Bjz z!EZU%bdcHP#A}7Oz|wJ`GxRTa>u#x|xZ~*=xxNuk4vs|`oB$09fGgKUCu9Dbk&jmb zO6G*+_gIF(fkra%wEl_!1=8fS*eLZ!hhaGwbM&$5R9`!%PBx@R^F<!NhM!HlhcfWt zrIxljMCI5D<4H>faib5ZLqyHk!{zf^u+k+Z-)Kp5(xiWcVS*G_p~le<_~B^6{mBSu za2(<7JrI|}Yfbp12E%UilOqK$ckm-d-CLGQYneQ<B~Sae0=rOVCkO$@FFo2O(r3t_ zFq0eW(zr1<DroWD;BRE$ELUpx+nlFV3S%>maz{t6v?g&+13`g(&O7bg8I7k4(bL6) zbW4{8dTZLWuTup@<=9Mcaw>OKVSm5YNjAHN6-&SemzcC`7p{-;qz3r)F&AUlGG^Pa zVCe3*zo7l%3*5<z^lAhxbk)}LL6Y^S=X-03zM`s}P2xNLk>9#U2u~u7dsahth@K8D zYJ?Nd`ATy@D1-f_<AasKEnCCd@#6jC>bh>RiEyZ+G01lZB~n2$xxfdz0sbh4j(y6a zsAA2r@@-343aV7qmVj^+9vX{vYd>whGSLz3jc+C}duO%mxd;8aTD&S)ug}V9YJe?q zsnb6p&_3_#ctPU=dEy?UlyQwHs*DQhRQxYmy*BwP9+1Q^$ow{7(hzkIowJvw^+THy zPS-Wl?IhLrqOX&s4znpnQ=KWjlP2E({a_Z3ft-H*ts-9W5-M8dx87((aSOl`dZMk3 z1zv`GIHTn$-2z7Ju#_6BJv?6E5Or5g!^31Io6ilbVi<+F<)6F%F_gVLAYhEp)A%b< z+Vxp+ireAP!tFsow!G_}BwUKLA2wfuD_4Y<q*2;z_++k!;QE_cqDE&9cRC0UQ7g&D zkI)TAGE$Wa@f2!Hbyd+@Otj$cc-f(r;aDzL?1#$HxlL8vhq}-QMg4fv!L&>k=W`12 zrG+mKD#V#lZkkk7f2$MJz*mqweX?B5QFNx7;D_=xlHy`=TpWrzzM_q}fN1ZGbC(1O z>&if_2tncKG4$nEe5P+t5CvD?#L4QZ$z#XWmo$g~$0nuDDIMc<4SSV^o;Wr-px`aq zSWAz>OC7nO{65~>>Kx7tjv>VODXU(miP}>qHN*aNWBPMwsfo=P5p<-7B#df8_1nF% zXWQefrmJ5OitQO;F87lN+CBc!8tvHBh5I>Wv=rOn11)+S!SqN-u_>MPrQakf=J)R2 z+1?dr@4<NxVrL2Qi}kMHA9RQ6_sQk~Pw<CpEU`(}0rduje`5L>rLLIx5Cqd?GeKTw zkUD}#lceXaB=#<?*AxWR)!4lyR^?x&Po423zpc5ZZrC7O`Z@DpV$d=8kOLQb4Mj%l zfz}-wAT1T<zY1JbGOV&a^N%?w%FK|$#oGJ8NuV<{#2Hm+6~`*<=XSmYe%;bb2b9q% z9Y1Uj!=NJ9vnZT115^;vOwYEfpU(QL^UwdpOoZ%<yd?aR%WKviTEG2qm9psPuM}v` zd>V=@dVhz7g{*Mj#3`N{G?f=RDpFHVK(4JLn{l*6OL&RR-;p2u$8_8J$uEdmDdhW{ z642z}PPmb4HY)`HVEr-y!(=yU%@v2;@H3p*sZs_df8ahi64*B^+VD!(WdO=Q(zv)~ zK}95;<<yT5fOwe3P7PGM`IdSGdoh%^Voop^6}qlTlAjQR7M1;DltXh(Xwqs8sv{LG z%>}J)3@MIzyAx;VJ2#18rGeh90tvY{o{5bWkv|T~+PA30B}5{Ma@=m2q+tQkd@wIC zmb#*3_*joY3t;!=ko7LT%YmIji{}T|fCc%XLc+g-y6WqVV#)<@Vh&^A0PojmX9}?& zuyyivbFvutk=TOxUvn<Z7o5d7l)5#xWWa`uP%c7D^4D&@_J~$$hXE@9ENUDVOD(*N z&`*p+w8Z)W#6}BsBWOWWh@s6O4+aUt{$r<)0b<Y-!k7E)Bk6Wd5}4<LU@m3RvxI2- zVtP8cA9s|Typ$mCni_rlIxq1C;svSLFQ|?&h9O!F>-Uu!3f1I#K3r6yQ51l|2L#Gy zSoPP*hvP1pdy(6v_!dP*3G_laB3dmDFKPAt%kq#$0f^JPt#RD*Kmy=kya)8R^NO30 z=_)=rCgo2#t~9*@EXu8CSTTwKb-Xj2<W@?klz7C-!XL=_nx_5Zy0c$coK>7T@^7NT zDjp@l5td-D%kmtNX1;khHF$bjLgNL=1ZuKWVeob5Lq@9Z<G*;lCKe!ab0AV;oos(t ziCwz-w&aEVsoZ8-74Y66i<Gl$!ZT~vol|@Bt#_^(i~*;-idwvx77tAzBS`leYaB3d z{83N2FxCUzgf@I`iu}3QQ`U0m=X{WSh&Xt?ks0a<0n-Q}^eAF0g(R;^;v~KM|J9KB zpS3*KmURg;v2`;3`qW<oyIc8}`+ko66r2mX^JzZkya6CnW>s+6F`?=<(K5#AW|0Cx zc!lGU(Q=}~SdFN-2!&iIhEvzE_?36?rjgyuGLAQ-ac5zKF=f+_CQ%SEFxic08J@_a z{E`tL;kd$4;iBoBlaDemGaryYOT4>WhYZb`$gi5~^1_4fU9H@oc;<rA>?#Cu>eHG} zG#RV1@U2IA07bw`zYq1i;nz_$ix1wq#PBZARhGE*4YK;e*2T~B-59NqwK-}#LR;*( z%!8;`n0{82ef<%f7P>FfOvTxmtK)H&Znze&Jnay}#`9_Rr-<F*Lckcj4mWxYlUK2^ zY4K<(GGs|a;M|#joqsuSDle6LTE{Ju%4&>g$ybos89G$NwEi=cIp)bWlN5b3gU3dr z)M9D24NlD~{~oIBB*(x!1mY~`#yzYm=Xa{xisss*^NecgNsR&9M87U@A>q+$NwfZE zmTXKbg{frmngYPS1|R)JZCk;r^wQQ>P<e-cG#_Y#cankq1iL0Sv(hzy`%{v$MqNQj z7vcAi@5!~?C#bAMfW{rOb5L#*Rx=+xRTLs)Qt+f*_hRlsi#hdy!OD05Q~?(J44FqU zQ(~rzG2pv7jVP^8{Br{AS?Dq3w#2Q8F;;VlU?YztJ9dL2Zyo`@GaL&iMhc@umrFc` z-4?<#Hd+UNp%b_Ijbd}j;Y-J_ASLG*wGc%SpbIXvDs(DD3uZtvqT2#jT4D=F7|snb zKWm@WNu40DaZ5uU7v%<h`zzU<P%=VTBHneQ_=yh8@00VV{CaE-x)wrU`e=q_*&TI_ zanI<P4Y5LEy>f|rZxepe_#ytOKS9loDHaivw#RSJSzBGTd*b?091F-|K!qBaKI43C zXA71zby;<bX=S5W8mp1eLR;fs%|A_3<ZW&MZe$l0zCJrnTI#=?12D*XtOE>CBF_f! z!6U940esn~zn>x!EIRS(N1B$U1UZ#j-mqr>0UrE-vw(Rjl?})o4)uxrPQU>s?SI-7 z3Lww=^;kOC!6k)*gq8QAxkF7-fBMg|*oUysw+5Fezv!uAZ_!y3T||E8=%rEuO0^ST O2K7K?3^`piVE+Tecfnf# literal 0 HcmV?d00001 diff --git a/ATMegaCard/rng.c b/ATMegaCard/rng.c new file mode 100644 index 0000000..de84364 --- /dev/null +++ b/ATMegaCard/rng.c @@ -0,0 +1,45 @@ +#include <avr/io.h> +#include <util/crc16.h> + +#define ADC_RNG_CHANNEL 0 + +uint16_t seed; + +uint8_t rnd_adc_read(void); + +void rnd_init(void){ + seed = 0xFFFF; + seed = _crc16_update(seed, rnd_adc_read()); + seed = _crc16_update(seed, rnd_adc_read()); +} + +uint8_t rnd_adc_read(void){ + uint8_t result = 0; + + ADMUX = ADC_RNG_CHANNEL | (1 << REFS0); // Select channel, AVCC Reference voltage. + + ADCSR = (1<<ADEN) | (1 << ADPS1); // Enable ADC (Prescaler 4) + +// for (uint8_t i = 0; i < 8; i++){ + ADCSR |= (1<<ADSC); + while (ADCSR & (1<<ADSC)) {;} +// +// result = (ADCL & 1) << i; +// ADCH; +// } + result = ADCL; + ADCH; + + return result; +} + +uint8_t rnd_get_byte(void){ + seed = _crc16_update(seed, rnd_adc_read()); + return ((seed & 0xFF) ^ (seed >> 8)); +} + +void rnd_get_bytes(uint8_t* buffer, uint8_t length){ + for (uint8_t i = 0; i < length; i++){ + buffer[i] = rnd_get_byte(); + } +} \ No newline at end of file diff --git a/ATMegaCard/rng.h b/ATMegaCard/rng.h new file mode 100644 index 0000000..c309ffe --- /dev/null +++ b/ATMegaCard/rng.h @@ -0,0 +1,3 @@ +void rnd_init(void); +uint8_t rnd_get_byte(void); +void rnd_get_bytes(uint8_t* buffer, uint8_t length); \ No newline at end of file diff --git a/ATMegaCard/software_serial.c b/ATMegaCard/software_serial.c new file mode 100644 index 0000000..bd9fb39 --- /dev/null +++ b/ATMegaCard/software_serial.c @@ -0,0 +1,221 @@ +#include "software_serial.h" + +#ifdef UART_USE_AS_STDOUT //Sets up the serial port as a stream for stdout. With this printf and stuff will write to the serial port. + #include <stdio.h> + + void UART_transmit_stdout(char c, FILE* stream){ + UART_transmit_char((unsigned char)c); + } + + static FILE UART_stdout = FDEV_SETUP_STREAM(UART_transmit_stdout, NULL, _FDEV_SETUP_WRITE); +#endif + + +/** + * Initializes the Software UART + */ +void UART_init(void){ + #ifdef UART_USE_AS_STDOUT + stdout = &UART_stdout; //assign serial output stream as stdout. + #endif + + UART_recv_init(); +} + +/** + * Switches the UART to transmit mode + */ +void UART_transmit_init(void){ + cli(); //interrupts disable (messes up send timings otherwise) + SWSERIAL_PORT |= (1 << SWSERIAL_LINE); //data line to high level (otherwise we might trigger a start bit) + SWSERIAL_PORT_DR |= (1 << SWSERIAL_LINE); //output +} + +/** + * Sends a 0-terminated string + * Note: The caller must to switch to transmit mode before calling this + */ +void UART_transmit_buffer_sz(char* buffer){ + while (buffer[0] != 0){ + UART_transmit_char(buffer[0]); + buffer++; + } +} + +/** + * Sends a byte coverted to hex digits + * Note: The caller must to switch to transmit mode before calling this + */ +void UART_transmit_byte_hex(unsigned char b){ + + unsigned char n; + n = '0' + (b >> 4 & 0xF); + UART_transmit_char((n > '9') ? n + 7 : n); + n = '0' + (b & 0xF); + UART_transmit_char((n > '9') ? n + 7 : n); +} + + +/** + * Writes a single character to the data line, bit-by-bit + * Note: The caller must to switch to transmit mode before calling this + */ +void UART_transmit_char(unsigned char x){ + + _delay_us(BIT_LENGTH); //guard time beween bytes + + WRITE(0); //start bit + + #if SWSERIAL_PARITY == EVEN + uint8_t parity = 0; + #endif + #if SWSERIAL_PARITY == ODD + uint8_t parity = 1; + #endif + for (unsigned char i = 0; i < 8; i++){ + _delay_us(BIT_LENGTH - INST_LENGTH(8)); + WRITE(x & 1); + #if SWSERIAL_PARITY != NONE + parity ^= x & 1; + #endif + x >>= 1; + } + + #if (SWSERIAL_PARITY != NONE) + _delay_us(BIT_LENGTH - INST_LENGTH(8)); + WRITE(parity); + #endif + + _delay_us(BIT_LENGTH - INST_LENGTH(8)); + WRITE(1); //stop bit + + #if SWSERIAL_STOPBITS == 2 + _delay_us(BIT_LENGTH - INST_LENGTH(8)); + WRITE(1); //stop bit 2 + #endif + + _delay_us(BIT_LENGTH); //guard time beween bytes + _delay_us(BIT_LENGTH); //guard time beween bytes +} + + +//------------------------- Receive code ---------------------------- + +uint8_t recv_buffer1 = 0; //Byte currently beeing received (only used by timer interrupt handler) +uint8_t recv_bits = 0; //Number of bits done in current receive (only used by timer interrupt handler) +volatile uint8_t recv_buffer2 = 0; //Last Byte that finished receiving +volatile uint8_t recv_avail = 0; //Is a byte ready to be processed? +volatile uint8_t recv_parity; +volatile uint8_t recv_valid = 0; //Did we receive 1 for the stop bits and valid parity + +/** + * Switch UART into receive mode + */ +void UART_recv_init(void){ + SWSERIAL_PORT_DR &= ~(1 << SWSERIAL_LINE); //set Serial pin to input + SWSERIAL_PORT |= (1 << SWSERIAL_LINE); //pullup + + DDRB |= (1 << 5) | (1 << 7); + + TIFR = (1 << ICF1); //clear old interrupt flag. + TIMSK = 1 << TICIE1; //enable ICP interrupt, disable timer compare interrupt + TCCR1B = (1 << CS10) //Timer prescaler = 1 +// #ifdef CTC1 + | (1 << CTC1) //Clear timer on compare match (important for exact timing, don't do it in software) +// #else +// | (1 << WGM12) +// #endif + | (1 << ICNC1) //Capture interrupt noise canceler enable (filters out very short spikes < 4 clks) +// #ifdef ICES1 +// | (1 << ICES1) +// #endif + ; + + OCR1A = 372; //Default smartcard conversion factor 3571200Hz/372(clks/bit) = 9600bit/s + + sei(); //global interrupt enable +} + +/** + * Is a byte available to be processed? + */ +inline uint8_t UART_data_available(void){ + return recv_avail != 0; +} +/** + * Reads the last byte that was received. + * Resets the availability flag. + */ +uint8_t UART_read_char(void){ + recv_avail = 0; + return recv_buffer2; +} + +uint16_t UART_receive_char_timeout(uint16_t timeout){ + while ((timeout > 0) && (recv_avail == 0)) {_delay_us(100); timeout--;} + if (recv_avail == 0) return UART_ERR_TIMEOUT; + + return UART_read_char(); +} + +/** + * Enables the timer (interrupt) that samples the data line to receive the bits. + * Disables the Capture (ICP) interrupt that triggered on the start bit. + */ +void UART_start_read(void){ + recv_bits = 0; + + #if SWSERIAL_PARITY == EVEN + recv_parity = 0; + #endif + #if SWSERIAL_PARITY == ODD + recv_parity = 1; + #endif + + TCNT1 = 0xFFFF-70; //Timer value. We start above the match counter, instead of starting af 0, this makes the first tick take a little longer, moving the sampling further inside the bit, not at the very beginning. + + TIFR = (1 << OCF1A); //clear old interrupt flag + TIMSK = (1 << OCIE1A); //Disable ICP interrupt, Enable timer Compare Interrupt. +} + +/** + * Capture interrupt, trigered by a falling edge on the data line (start bit) + */ +ISR(TIMER1_CAPT_vect){ + PORTB |= (1 << 5); //Debug + UART_start_read(); + PORTB &= ~(1 << 5); //Debug +} + +/** + * Timer interrupt, samples the data line and writes the bits to the recv buffer. + * If all bits are read it returns control to the Capture interrupt and disables itself. + */ +ISR(TIMER1_COMPA_vect){ + PORTB |= (1 << 7); //Debug + + uint8_t bit = (SWSERIAL_PIN & (1 << SWSERIAL_LINE)) ? 1 : 0; + + if (recv_bits < 8){ + recv_buffer1 >>= 1; + recv_buffer1 |= (bit ? 0x80 : 0); + if (bit) recv_parity = !recv_parity; + } + if (recv_bits == 8){ + recv_valid = bit == recv_parity; + } + if (recv_bits == 9){ + if (!bit) recv_valid = 0; + } + + recv_bits++; + if (recv_bits == 10){ + if (recv_valid){ + recv_buffer2 = recv_buffer1; + recv_avail = 1; + } + recv_bits = 0; + UART_recv_init(); + } + PORTB &= ~(1 << 7); //Debug +} diff --git a/ATMegaCard/software_serial.h b/ATMegaCard/software_serial.h new file mode 100644 index 0000000..e7a423a --- /dev/null +++ b/ATMegaCard/software_serial.h @@ -0,0 +1,58 @@ +#include "common.h" +#include <avr/io.h> +#include <util/delay_basic.h> +#include <util/delay.h> +#include <avr/interrupt.h> + +//Serial Data Line: PD6 (ICP) + +#define BAUD 9600 +#define SWSERIAL_PARITY EVEN +#define SWSERIAL_STOPBITS 2 +#define SWSERIAL_PORT_NAME D +#define SWSERIAL_LINE 6 + +#define UART_ERR_TIMEOUT 0xFFFF + +#ifndef XPASTE + //Macro magic to glue #defined names together. See http://groups.google.com/group/comp.lang.c/msg/8c085fe5a8ad1296?hl=en + #define PASTE(a,b) a ## b + #define XPASTE(a,b) PASTE(a,b) +#endif + +#define EVEN 1 +#define ODD 2 +#define NONE 0 +#ifndef SWSERIAL_PARITY + #define SWSERIAL_PARITY NONE +#endif +#ifndef SWSERIAL_STOPBITS + #define SWSERIAL_STOPBITS 1 +#endif + +#define BIT_LENGTH 1000000/BAUD //(µSec) Duration of a RS232 Bit + +#define SWSERIAL_PORT_DR XPASTE(DDR, SWSERIAL_PORT_NAME) +#define SWSERIAL_PORT XPASTE(PORT,SWSERIAL_PORT_NAME) +#define SWSERIAL_PIN XPASTE(PIN, SWSERIAL_PORT_NAME) + +#define WRITE(x) if ((x) != 0) {SWSERIAL_PORT |= (1 << SWSERIAL_LINE);} else {SWSERIAL_PORT &= (unsigned char)~(1 << SWSERIAL_LINE);} + + +#define INST_LENGTH(count) ((1000000*count)/F_CPU) //(µSec) Duration of count CPU Instructions + +void UART_transmit_char(unsigned char data); + +void UART_transmit_buffer_sz(char* buffer); +void UART_transmit_byte_hex(unsigned char b); + +void UART_init(void); + +void UART_transmit_init(void); +void UART_recv_init(void); + +void UART_transmit_char(unsigned char x); + +uint8_t UART_data_available(void); +uint8_t UART_read_char(void); +uint16_t UART_receive_char_timeout(uint16_t timeout); \ No newline at end of file -- GitLab