/* * keyfiles.c - private and public key handling for authentication. * * This file is part of the SSH Library * * Copyright (c) 2003-2009 by Aris Adamantiadis * Copyright (c) 2009 by Andreas Schneider * * The SSH Library is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or (at your * option) any later version. * * The SSH Library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with the SSH Library; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. */ #include "config.h" #include #include #include #include #include #include #include #include #ifndef _WIN32 #if _MSC_VER >= 1400 #include #undef open #define open _open #undef close #define close _close #undef read #define read _read #endif /* _MSC_VER */ #include #endif #include "libssh/priv.h" #include "libssh/buffer.h" #include "libssh/keyfiles.h" #include "libssh/session.h" #include "libssh/wrapper.h" #include "libssh/misc.h" #include "libssh/keys.h" /*todo: remove this include */ #include "libssh/string.h" #ifdef HAVE_LIBGCRYPT #include #elif defined HAVE_LIBCRYPTO #include #include #include #include #endif /* HAVE_LIBCRYPTO */ #define MAXLINESIZE 80 #define RSA_HEADER_BEGIN "-----BEGIN RSA PRIVATE KEY-----" #define RSA_HEADER_END "-----END RSA PRIVATE KEY-----" #define DSA_HEADER_BEGIN "-----BEGIN DSA PRIVATE KEY-----" #define DSA_HEADER_END "-----END DSA PRIVATE KEY-----" #ifdef HAVE_LIBGCRYPT #define MAX_KEY_SIZE 32 #define MAX_PASSPHRASE_SIZE 1024 #define ASN1_INTEGER 2 #define ASN1_SEQUENCE 48 #define PKCS5_SALT_LEN 8 static int load_iv(char *header, unsigned char *iv, int iv_len) { int i; int j; int k; memset(iv, 0, iv_len); for (i = 0; i < iv_len; i++) { if ((header[2*i] >= '0') && (header[2*i] <= '9')) j = header[2*i] - '0'; else if ((header[2*i] >= 'A') && (header[2*i] <= 'F')) j = header[2*i] - 'A' + 10; else if ((header[2*i] >= 'a') && (header[2*i] <= 'f')) j = header[2*i] - 'a' + 10; else return -1; if ((header[2*i+1] >= '0') && (header[2*i+1] <= '9')) k = header[2*i+1] - '0'; else if ((header[2*i+1] >= 'A') && (header[2*i+1] <= 'F')) k = header[2*i+1] - 'A' + 10; else if ((header[2*i+1] >= 'a') && (header[2*i+1] <= 'f')) k = header[2*i+1] - 'a' + 10; else return -1; iv[i] = (j << 4) + k; } return 0; } static uint32_t char_to_u32(unsigned char *data, uint32_t size) { uint32_t ret; uint32_t i; for (i = 0, ret = 0; i < size; ret = ret << 8, ret += data[i++]) ; return ret; } static uint32_t asn1_get_len(ssh_buffer buffer) { uint32_t len; unsigned char tmp[4]; if (buffer_get_data(buffer,tmp,1) == 0) { return 0; } if (tmp[0] > 127) { len = tmp[0] & 127; if (len > 4) { return 0; /* Length doesn't fit in u32. Can this really happen? */ } if (buffer_get_data(buffer,tmp,len) == 0) { return 0; } len = char_to_u32(tmp, len); } else { len = char_to_u32(tmp, 1); } return len; } static ssh_string asn1_get_int(ssh_buffer buffer) { ssh_string str; unsigned char type; uint32_t size; if (buffer_get_data(buffer, &type, 1) == 0 || type != ASN1_INTEGER) { return NULL; } size = asn1_get_len(buffer); if (size == 0) { return NULL; } str = ssh_string_new(size); if (str == NULL) { return NULL; } if (buffer_get_data(buffer, str->string, size) == 0) { ssh_string_free(str); return NULL; } return str; } static int asn1_check_sequence(ssh_buffer buffer) { unsigned char *j = NULL; unsigned char tmp; int i; uint32_t size; uint32_t padding; if (buffer_get_data(buffer, &tmp, 1) == 0 || tmp != ASN1_SEQUENCE) { return 0; } size = asn1_get_len(buffer); if ((padding = ssh_buffer_get_len(buffer) - buffer->pos - size) > 0) { for (i = ssh_buffer_get_len(buffer) - buffer->pos - size, j = (unsigned char*)ssh_buffer_get_begin(buffer) + size + buffer->pos; i; i--, j++) { if (*j != padding) { /* padding is allowed */ return 0; /* but nothing else */ } } } return 1; } static int read_line(char *data, unsigned int len, FILE *fp) { char tmp; unsigned int i; for (i = 0; fread(&tmp, 1, 1, fp) && tmp != '\n' && i < len; data[i++] = tmp) ; if (tmp == '\n') { return i; } if (i >= len) { return -1; } return 0; } static int passphrase_to_key(char *data, unsigned int datalen, unsigned char *salt, unsigned char *key, unsigned int keylen) { MD5CTX md; unsigned char digest[MD5_DIGEST_LEN] = {0}; unsigned int i; unsigned int j; unsigned int md_not_empty; for (j = 0, md_not_empty = 0; j < keylen; ) { md = md5_init(); if (md == NULL) { return -1; } if (md_not_empty) { md5_update(md, digest, MD5_DIGEST_LEN); } else { md_not_empty = 1; } md5_update(md, data, datalen); if (salt) { md5_update(md, salt, PKCS5_SALT_LEN); } md5_final(digest, md); for (i = 0; j < keylen && i < MD5_DIGEST_LEN; j++, i++) { if (key) { key[j] = digest[i]; } } } return 0; } static int privatekey_decrypt(int algo, int mode, unsigned int key_len, unsigned char *iv, unsigned int iv_len, ssh_buffer data, ssh_auth_callback cb, void *userdata, const char *desc) { char passphrase[MAX_PASSPHRASE_SIZE] = {0}; unsigned char key[MAX_KEY_SIZE] = {0}; unsigned char *tmp = NULL; gcry_cipher_hd_t cipher; int rc = -1; if (!algo) { return -1; } if (cb) { rc = (*cb)(desc, passphrase, MAX_PASSPHRASE_SIZE, 0, 0, userdata); if (rc < 0) { return -1; } } else if (cb == NULL && userdata != NULL) { snprintf(passphrase, MAX_PASSPHRASE_SIZE, "%s", (char *) userdata); } if (passphrase_to_key(passphrase, strlen(passphrase), iv, key, key_len) < 0) { return -1; } if (gcry_cipher_open(&cipher, algo, mode, 0) || gcry_cipher_setkey(cipher, key, key_len) || gcry_cipher_setiv(cipher, iv, iv_len) || (tmp = malloc(ssh_buffer_get_len(data) * sizeof (char))) == NULL || gcry_cipher_decrypt(cipher, tmp, ssh_buffer_get_len(data), ssh_buffer_get_begin(data), ssh_buffer_get_len(data))) { gcry_cipher_close(cipher); return -1; } memcpy(ssh_buffer_get_begin(data), tmp, ssh_buffer_get_len(data)); SAFE_FREE(tmp); gcry_cipher_close(cipher); return 0; } static int privatekey_dek_header(char *header, unsigned int header_len, int *algo, int *mode, unsigned int *key_len, unsigned char **iv, unsigned int *iv_len) { unsigned int iv_pos; if (header_len > 13 && !strncmp("DES-EDE3-CBC", header, 12)) { *algo = GCRY_CIPHER_3DES; iv_pos = 13; *mode = GCRY_CIPHER_MODE_CBC; *key_len = 24; *iv_len = 8; } else if (header_len > 8 && !strncmp("DES-CBC", header, 7)) { *algo = GCRY_CIPHER_DES; iv_pos = 8; *mode = GCRY_CIPHER_MODE_CBC; *key_len = 8; *iv_len = 8; } else if (header_len > 12 && !strncmp("AES-128-CBC", header, 11)) { *algo = GCRY_CIPHER_AES128; iv_pos = 12; *mode = GCRY_CIPHER_MODE_CBC; *key_len = 16; *iv_len = 16; } else if (header_len > 12 && !strncmp("AES-192-CBC", header, 11)) { *algo = GCRY_CIPHER_AES192; iv_pos = 12; *mode = GCRY_CIPHER_MODE_CBC; *key_len = 24; *iv_len = 16; } else if (header_len > 12 && !strncmp("AES-256-CBC", header, 11)) { *algo = GCRY_CIPHER_AES256; iv_pos = 12; *mode = GCRY_CIPHER_MODE_CBC; *key_len = 32; *iv_len = 16; } else { return -1; } *iv = malloc(*iv_len); if (*iv == NULL) { return -1; } return load_iv(header + iv_pos, *iv, *iv_len); } static ssh_buffer privatekey_file_to_buffer(FILE *fp, int type, ssh_auth_callback cb, void *userdata, const char *desc) { ssh_buffer buffer = NULL; ssh_buffer out = NULL; char buf[MAXLINESIZE] = {0}; unsigned char *iv = NULL; const char *header_begin; const char *header_end; unsigned int header_begin_size; unsigned int header_end_size; unsigned int key_len = 0; unsigned int iv_len = 0; int algo = 0; int mode = 0; int len; buffer = ssh_buffer_new(); if (buffer == NULL) { return NULL; } switch(type) { case SSH_KEYTYPE_DSS: header_begin = DSA_HEADER_BEGIN; header_end = DSA_HEADER_END; break; case SSH_KEYTYPE_RSA: header_begin = RSA_HEADER_BEGIN; header_end = RSA_HEADER_END; break; default: ssh_buffer_free(buffer); return NULL; } header_begin_size = strlen(header_begin); header_end_size = strlen(header_end); while (read_line(buf, MAXLINESIZE, fp) && strncmp(buf, header_begin, header_begin_size)) ; len = read_line(buf, MAXLINESIZE, fp); if (len > 11 && strncmp("Proc-Type: 4,ENCRYPTED", buf, 11) == 0) { len = read_line(buf, MAXLINESIZE, fp); if (len > 10 && strncmp("DEK-Info: ", buf, 10) == 0) { if ((privatekey_dek_header(buf + 10, len - 10, &algo, &mode, &key_len, &iv, &iv_len) < 0) || read_line(buf, MAXLINESIZE, fp)) { ssh_buffer_free(buffer); SAFE_FREE(iv); return NULL; } } else { ssh_buffer_free(buffer); SAFE_FREE(iv); return NULL; } } else { if (buffer_add_data(buffer, buf, len) < 0) { ssh_buffer_free(buffer); SAFE_FREE(iv); return NULL; } } while ((len = read_line(buf,MAXLINESIZE,fp)) && strncmp(buf, header_end, header_end_size) != 0) { if (len == -1) { ssh_buffer_free(buffer); SAFE_FREE(iv); return NULL; } if (buffer_add_data(buffer, buf, len) < 0) { ssh_buffer_free(buffer); SAFE_FREE(iv); return NULL; } } if (strncmp(buf,header_end,header_end_size) != 0) { ssh_buffer_free(buffer); SAFE_FREE(iv); return NULL; } if (buffer_add_data(buffer, "\0", 1) < 0) { ssh_buffer_free(buffer); SAFE_FREE(iv); return NULL; } out = base64_to_bin(ssh_buffer_get_begin(buffer)); ssh_buffer_free(buffer); if (out == NULL) { SAFE_FREE(iv); return NULL; } if (algo) { if (privatekey_decrypt(algo, mode, key_len, iv, iv_len, out, cb, userdata, desc) < 0) { ssh_buffer_free(out); SAFE_FREE(iv); return NULL; } } SAFE_FREE(iv); return out; } static int read_rsa_privatekey(FILE *fp, gcry_sexp_t *r, ssh_auth_callback cb, void *userdata, const char *desc) { ssh_string n = NULL; ssh_string e = NULL; ssh_string d = NULL; ssh_string p = NULL; ssh_string q = NULL; ssh_string unused1 = NULL; ssh_string unused2 = NULL; ssh_string u = NULL; ssh_string v = NULL; ssh_buffer buffer = NULL; int rc = 1; buffer = privatekey_file_to_buffer(fp, SSH_KEYTYPE_RSA, cb, userdata, desc); if (buffer == NULL) { return 0; } if (!asn1_check_sequence(buffer)) { ssh_buffer_free(buffer); return 0; } v = asn1_get_int(buffer); if (ntohl(v->size) != 1 || v->string[0] != 0) { ssh_buffer_free(buffer); return 0; } n = asn1_get_int(buffer); e = asn1_get_int(buffer); d = asn1_get_int(buffer); q = asn1_get_int(buffer); p = asn1_get_int(buffer); unused1 = asn1_get_int(buffer); unused2 = asn1_get_int(buffer); u = asn1_get_int(buffer); ssh_buffer_free(buffer); if (n == NULL || e == NULL || d == NULL || p == NULL || q == NULL || unused1 == NULL || unused2 == NULL|| u == NULL) { rc = 0; goto error; } if (gcry_sexp_build(r, NULL, "(private-key(rsa(n %b)(e %b)(d %b)(p %b)(q %b)(u %b)))", ntohl(n->size), n->string, ntohl(e->size), e->string, ntohl(d->size), d->string, ntohl(p->size), p->string, ntohl(q->size), q->string, ntohl(u->size), u->string)) { rc = 0; } error: ssh_string_free(n); ssh_string_free(e); ssh_string_free(d); ssh_string_free(p); ssh_string_free(q); ssh_string_free(unused1); ssh_string_free(unused2); ssh_string_free(u); ssh_string_free(v); return rc; } static int read_dsa_privatekey(FILE *fp, gcry_sexp_t *r, ssh_auth_callback cb, void *userdata, const char *desc) { ssh_buffer buffer = NULL; ssh_string p = NULL; ssh_string q = NULL; ssh_string g = NULL; ssh_string y = NULL; ssh_string x = NULL; ssh_string v = NULL; int rc = 1; buffer = privatekey_file_to_buffer(fp, SSH_KEYTYPE_DSS, cb, userdata, desc); if (buffer == NULL) { return 0; } if (!asn1_check_sequence(buffer)) { ssh_buffer_free(buffer); return 0; } v = asn1_get_int(buffer); if (ntohl(v->size) != 1 || v->string[0] != 0) { ssh_buffer_free(buffer); return 0; } p = asn1_get_int(buffer); q = asn1_get_int(buffer); g = asn1_get_int(buffer); y = asn1_get_int(buffer); x = asn1_get_int(buffer); ssh_buffer_free(buffer); if (p == NULL || q == NULL || g == NULL || y == NULL || x == NULL) { rc = 0; goto error; } if (gcry_sexp_build(r, NULL, "(private-key(dsa(p %b)(q %b)(g %b)(y %b)(x %b)))", ntohl(p->size), p->string, ntohl(q->size), q->string, ntohl(g->size), g->string, ntohl(y->size), y->string, ntohl(x->size), x->string)) { rc = 0; } error: ssh_string_free(p); ssh_string_free(q); ssh_string_free(g); ssh_string_free(y); ssh_string_free(x); ssh_string_free(v); return rc; } #endif /* HAVE_LIBGCRYPT */ #ifdef HAVE_LIBCRYPTO static int pem_get_password(char *buf, int size, int rwflag, void *userdata) { ssh_session session = userdata; /* unused flag */ (void) rwflag; if(buf==NULL) return 0; memset(buf,'\0',size); ssh_log(session, SSH_LOG_RARE, "Trying to call external authentication function"); if (session && session->callbacks && session->callbacks->auth_function) { if (session->callbacks->auth_function("Passphrase for private key:", buf, size, 0, 0, session->callbacks->userdata) < 0) { return 0; } return strlen(buf); } return 0; } #endif /* HAVE_LIBCRYPTO */ static int privatekey_type_from_file(FILE *fp) { char buffer[MAXLINESIZE] = {0}; if (!fgets(buffer, MAXLINESIZE, fp)) { return 0; } fseek(fp, 0, SEEK_SET); if (strncmp(buffer, DSA_HEADER_BEGIN, strlen(DSA_HEADER_BEGIN)) == 0) { return SSH_KEYTYPE_DSS; } if (strncmp(buffer, RSA_HEADER_BEGIN, strlen(RSA_HEADER_BEGIN)) == 0) { return SSH_KEYTYPE_RSA; } return 0; } /** * @addtogroup libssh_auth * * @{ */ /** * @brief Reads a SSH private key from a file. * * @param[in] session The SSH Session to use. * * @param[in] filename The filename of the the private key. * * @param[in] type The type of the private key. This could be SSH_KEYTYPE_DSS or * SSH_KEYTYPE_RSA. Pass 0 to automatically detect the type. * * @param[in] passphrase The passphrase to decrypt the private key. Set to null * if none is needed or it is unknown. * * @return A private_key object containing the private key, or * NULL on error. * @see privatekey_free() * @see publickey_from_privatekey() */ ssh_private_key privatekey_from_file(ssh_session session, const char *filename, int type, const char *passphrase) { ssh_private_key privkey = NULL; FILE *file = NULL; #ifdef HAVE_LIBGCRYPT ssh_auth_callback auth_cb = NULL; void *auth_ud = NULL; gcry_sexp_t dsa = NULL; gcry_sexp_t rsa = NULL; int valid; #elif defined HAVE_LIBCRYPTO DSA *dsa = NULL; RSA *rsa = NULL; #endif /* TODO Implement to read both DSA and RSA at once. */ /* needed for openssl initialization */ ssh_init(); ssh_log(session, SSH_LOG_RARE, "Trying to open %s", filename); file = fopen(filename,"r"); if (file == NULL) { ssh_set_error(session, SSH_REQUEST_DENIED, "Error opening %s: %s", filename, strerror(errno)); return NULL; } ssh_log(session, SSH_LOG_RARE, "Trying to read %s, passphase=%s, authcb=%s", filename, passphrase ? "true" : "false", session->callbacks && session->callbacks->auth_function ? "true" : "false"); if (type == 0) { type = privatekey_type_from_file(file); if (type == 0) { fclose(file); ssh_set_error(session, SSH_FATAL, "Invalid private key file."); return NULL; } } switch (type) { case SSH_KEYTYPE_DSS: if (passphrase == NULL) { if (session->callbacks && session->callbacks->auth_function) { #ifdef HAVE_LIBGCRYPT auth_cb = session->callbacks->auth_function; auth_ud = session->callbacks->userdata; valid = read_dsa_privatekey(file, &dsa, auth_cb, auth_ud, "Passphrase for private key:"); } else { /* authcb */ valid = read_dsa_privatekey(file, &dsa, NULL, NULL, NULL); } /* authcb */ } else { /* passphrase */ valid = read_dsa_privatekey(file, &dsa, NULL, (void *) passphrase, NULL); } fclose(file); if (!valid) { ssh_set_error(session, SSH_FATAL, "Parsing private key %s", filename); #elif defined HAVE_LIBCRYPTO dsa = PEM_read_DSAPrivateKey(file, NULL, pem_get_password, session); } else { /* authcb */ /* openssl uses its own callback to get the passphrase here */ dsa = PEM_read_DSAPrivateKey(file, NULL, NULL, NULL); } /* authcb */ } else { /* passphrase */ dsa = PEM_read_DSAPrivateKey(file, NULL, NULL, (void *) passphrase); } fclose(file); if (dsa == NULL) { ssh_set_error(session, SSH_FATAL, "Parsing private key %s: %s", filename, ERR_error_string(ERR_get_error(), NULL)); #endif return NULL; } break; case SSH_KEYTYPE_RSA: if (passphrase == NULL) { if (session->callbacks && session->callbacks->auth_function) { #ifdef HAVE_LIBGCRYPT auth_cb = session->callbacks->auth_function; auth_ud = session->callbacks->userdata; valid = read_rsa_privatekey(file, &rsa, auth_cb, auth_ud, "Passphrase for private key:"); } else { /* authcb */ valid = read_rsa_privatekey(file, &rsa, NULL, NULL, NULL); } /* authcb */ } else { /* passphrase */ valid = read_rsa_privatekey(file, &rsa, NULL, (void *) passphrase, NULL); } fclose(file); if (!valid) { ssh_set_error(session,SSH_FATAL, "Parsing private key %s", filename); #elif defined HAVE_LIBCRYPTO rsa = PEM_read_RSAPrivateKey(file, NULL, pem_get_password, session); } else { /* authcb */ /* openssl uses its own callback to get the passphrase here */ rsa = PEM_read_RSAPrivateKey(file, NULL, NULL, NULL); } /* authcb */ } else { /* passphrase */ rsa = PEM_read_RSAPrivateKey(file, NULL, NULL, (void *) passphrase); } fclose(file); if (rsa == NULL) { ssh_set_error(session, SSH_FATAL, "Parsing private key %s: %s", filename, ERR_error_string(ERR_get_error(),NULL)); #endif return NULL; } break; default: fclose(file); ssh_set_error(session, SSH_FATAL, "Invalid private key type %d", type); return NULL; } /* switch */ privkey = malloc(sizeof(struct ssh_private_key_struct)); if (privkey == NULL) { #ifdef HAVE_LIBGCRYPT gcry_sexp_release(dsa); gcry_sexp_release(rsa); #elif defined HAVE_LIBCRYPTO DSA_free(dsa); RSA_free(rsa); #endif return NULL; } privkey->type = type; privkey->dsa_priv = dsa; privkey->rsa_priv = rsa; return privkey; } /** * @brief returns the type of a private key * @param[in] privatekey the private key handle * @returns one of SSH_KEYTYPE_RSA,SSH_KEYTYPE_DSS,SSH_KEYTYPE_RSA1 * @returns SSH_KEYTYPE_UNKNOWN if the type is unknown * @see privatekey_from_file * @see ssh_userauth_offer_pubkey */ enum ssh_keytypes_e ssh_privatekey_type(ssh_private_key privatekey){ if (privatekey==NULL) return SSH_KEYTYPE_UNKNOWN; return privatekey->type; } /* same that privatekey_from_file() but without any passphrase things. */ ssh_private_key _privatekey_from_file(void *session, const char *filename, int type) { ssh_private_key privkey = NULL; FILE *file = NULL; #ifdef HAVE_LIBGCRYPT gcry_sexp_t dsa = NULL; gcry_sexp_t rsa = NULL; int valid; #elif defined HAVE_LIBCRYPTO DSA *dsa = NULL; RSA *rsa = NULL; #endif file = fopen(filename,"r"); if (file == NULL) { ssh_set_error(session, SSH_REQUEST_DENIED, "Error opening %s: %s", filename, strerror(errno)); return NULL; } switch (type) { case SSH_KEYTYPE_DSS: #ifdef HAVE_LIBGCRYPT valid = read_dsa_privatekey(file, &dsa, NULL, NULL, NULL); fclose(file); if (!valid) { ssh_set_error(session, SSH_FATAL, "Parsing private key %s", filename); #elif defined HAVE_LIBCRYPTO dsa = PEM_read_DSAPrivateKey(file, NULL, NULL, NULL); fclose(file); if (dsa == NULL) { ssh_set_error(session, SSH_FATAL, "Parsing private key %s: %s", filename, ERR_error_string(ERR_get_error(), NULL)); #endif return NULL; } break; case SSH_KEYTYPE_RSA: #ifdef HAVE_LIBGCRYPT valid = read_rsa_privatekey(file, &rsa, NULL, NULL, NULL); fclose(file); if (!valid) { ssh_set_error(session, SSH_FATAL, "Parsing private key %s", filename); #elif defined HAVE_LIBCRYPTO rsa = PEM_read_RSAPrivateKey(file, NULL, NULL, NULL); fclose(file); if (rsa == NULL) { ssh_set_error(session, SSH_FATAL, "Parsing private key %s: %s", filename, ERR_error_string(ERR_get_error(), NULL)); #endif return NULL; } break; default: ssh_set_error(session, SSH_FATAL, "Invalid private key type %d", type); return NULL; } privkey = malloc(sizeof(struct ssh_private_key_struct)); if (privkey == NULL) { #ifdef HAVE_LIBGCRYPT gcry_sexp_release(dsa); gcry_sexp_release(rsa); #elif defined HAVE_LIBCRYPTO DSA_free(dsa); RSA_free(rsa); #endif return NULL; } privkey->type = type; privkey->dsa_priv = dsa; privkey->rsa_priv = rsa; return privkey; } /** * @brief Deallocate a private key object. * * @param[in] prv The private_key object to free. */ void privatekey_free(ssh_private_key prv) { if (prv == NULL) { return; } #ifdef HAVE_LIBGCRYPT gcry_sexp_release(prv->dsa_priv); gcry_sexp_release(prv->rsa_priv); #elif defined HAVE_LIBCRYPTO DSA_free(prv->dsa_priv); RSA_free(prv->rsa_priv); #endif memset(prv, 0, sizeof(struct ssh_private_key_struct)); SAFE_FREE(prv); } /** * @brief Write a public key to a file. * * @param[in] session The ssh session to use. * * @param[in] file The filename to write the key into. * * @param[in] pubkey The public key to write. * * @param[in] type The type of the public key. * * @return 0 on success, -1 on error. */ int ssh_publickey_to_file(ssh_session session, const char *file, ssh_string pubkey, int type) { FILE *fp; char *user; char buffer[1024]; char host[256]; unsigned char *pubkey_64; size_t len; int rc; pubkey_64 = bin_to_base64(pubkey->string, ssh_string_len(pubkey)); if (pubkey_64 == NULL) { return -1; } user = ssh_get_local_username(session); if (user == NULL) { SAFE_FREE(pubkey_64); return -1; } rc = gethostname(host, sizeof(host)); if (rc < 0) { SAFE_FREE(user); SAFE_FREE(pubkey_64); return -1; } snprintf(buffer, sizeof(buffer), "%s %s %s@%s\n", ssh_type_to_char(type), pubkey_64, user, host); SAFE_FREE(pubkey_64); SAFE_FREE(user); ssh_log(session, SSH_LOG_RARE, "Trying to write public key file: %s", file); ssh_log(session, SSH_LOG_PACKET, "public key file content: %s", buffer); fp = fopen(file, "w+"); if (fp == NULL) { ssh_set_error(session, SSH_REQUEST_DENIED, "Error opening %s: %s", file, strerror(errno)); return -1; } len = strlen(buffer); if (fwrite(buffer, len, 1, fp) != 1 || ferror(fp)) { ssh_set_error(session, SSH_REQUEST_DENIED, "Unable to write to %s", file); fclose(fp); unlink(file); return -1; } fclose(fp); return 0; } /** * @brief Retrieve a public key from a file. * * @param[in] session The SSH session to use. * * @param[in] filename The filename of the public key. * * @param[out] type The Pointer to a integer. If it is not NULL, it will * contain the type of the key after execution. * * @return A SSH String containing the public key, or NULL if it * failed. * * @see string_free() * @see publickey_from_privatekey() */ ssh_string publickey_from_file(ssh_session session, const char *filename, int *type) { ssh_buffer buffer = NULL; char buf[4096] = {0}; ssh_string str = NULL; char *ptr = NULL; int key_type; int fd = -1; int r; fd = open(filename, O_RDONLY); if (fd < 0) { ssh_set_error(session, SSH_REQUEST_DENIED, "Public key file doesn't exist"); return NULL; } if (read(fd, buf, 8) != 8) { close(fd); ssh_set_error(session, SSH_REQUEST_DENIED, "Invalid public key file"); return NULL; } buf[7] = '\0'; key_type = ssh_type_from_name(buf); if (key_type == -1) { close(fd); ssh_set_error(session, SSH_REQUEST_DENIED, "Invalid public key file"); return NULL; } r = read(fd, buf, sizeof(buf) - 1); close(fd); if (r <= 0) { ssh_set_error(session, SSH_REQUEST_DENIED, "Invalid public key file"); return NULL; } buf[r] = 0; ptr = strchr(buf, ' '); /* eliminate the garbage at end of file */ if (ptr) { *ptr = '\0'; } buffer = base64_to_bin(buf); if (buffer == NULL) { ssh_set_error(session, SSH_REQUEST_DENIED, "Invalid public key file"); return NULL; } str = ssh_string_new(ssh_buffer_get_len(buffer)); if (str == NULL) { ssh_set_error(session, SSH_FATAL, "Not enough space"); ssh_buffer_free(buffer); return NULL; } ssh_string_fill(str, ssh_buffer_get_begin(buffer), ssh_buffer_get_len(buffer)); ssh_buffer_free(buffer); if (type) { *type = key_type; } return str; } /** * @brief Try to read the public key from a given file. * * @param[in] session The ssh session to use. * * @param[in] keyfile The name of the private keyfile. * * @param[out] publickey A ssh_string to store the public key. * * @param[out] type A pointer to an integer to store the type. * * @return 0 on success, -1 on error or the private key doesn't * exist, 1 if the public key doesn't exist. */ int ssh_try_publickey_from_file(ssh_session session, const char *keyfile, ssh_string *publickey, int *type) { char *pubkey_file; size_t len; ssh_string pubkey_string; int pubkey_type; if (session == NULL || keyfile == NULL || publickey == NULL || type == NULL) { return -1; } if (session->sshdir == NULL) { if (ssh_options_apply(session) < 0) { return -1; } } ssh_log(session, SSH_LOG_PACKET, "Trying to open privatekey %s", keyfile); if (!ssh_file_readaccess_ok(keyfile)) { ssh_log(session, SSH_LOG_PACKET, "Failed to open privatekey %s", keyfile); return -1; } len = strlen(keyfile) + 5; pubkey_file = malloc(len); if (pubkey_file == NULL) { return -1; } snprintf(pubkey_file, len, "%s.pub", keyfile); ssh_log(session, SSH_LOG_PACKET, "Trying to open publickey %s", pubkey_file); if (!ssh_file_readaccess_ok(pubkey_file)) { ssh_log(session, SSH_LOG_PACKET, "Failed to open publickey %s", pubkey_file); SAFE_FREE(pubkey_file); return 1; } ssh_log(session, SSH_LOG_PACKET, "Success opening public and private key"); /* * We are sure both the private and public key file is readable. We return * the public as a string, and the private filename as an argument */ pubkey_string = publickey_from_file(session, pubkey_file, &pubkey_type); if (pubkey_string == NULL) { ssh_log(session, SSH_LOG_PACKET, "Wasn't able to open public key file %s: %s", pubkey_file, ssh_get_error(session)); SAFE_FREE(pubkey_file); return -1; } SAFE_FREE(pubkey_file); *publickey = pubkey_string; *type = pubkey_type; return 0; } ssh_string try_publickey_from_file(ssh_session session, struct ssh_keys_struct keytab, char **privkeyfile, int *type) { const char *priv; const char *pub; char *new; ssh_string pubkey=NULL; pub = keytab.publickey; if (pub == NULL) { return NULL; } priv = keytab.privatekey; if (priv == NULL) { return NULL; } if (session->sshdir == NULL) { if (ssh_options_apply(session) < 0) { return NULL; } } ssh_log(session, SSH_LOG_PACKET, "Trying to open publickey %s", pub); if (!ssh_file_readaccess_ok(pub)) { ssh_log(session, SSH_LOG_PACKET, "Failed to open publickey %s", pub); goto error; } ssh_log(session, SSH_LOG_PACKET, "Trying to open privatekey %s", priv); if (!ssh_file_readaccess_ok(priv)) { ssh_log(session, SSH_LOG_PACKET, "Failed to open privatekey %s", priv); goto error; } ssh_log(session, SSH_LOG_PACKET, "Success opening public and private key"); /* * We are sure both the private and public key file is readable. We return * the public as a string, and the private filename as an argument */ pubkey = publickey_from_file(session, pub, type); if (pubkey == NULL) { ssh_log(session, SSH_LOG_PACKET, "Wasn't able to open public key file %s: %s", pub, ssh_get_error(session)); goto error; } new = realloc(*privkeyfile, strlen(priv) + 1); if (new == NULL) { ssh_string_free(pubkey); goto error; } strcpy(new, priv); *privkeyfile = new; error: return pubkey; } static int alldigits(const char *s) { while (*s) { if (isdigit(*s)) { s++; } else { return 0; } } return 1; } /** @} */ /** * @addtogroup libssh_session * * @{ */ /** * @internal * * @brief Free a token array. */ static void tokens_free(char **tokens) { if (tokens == NULL) { return; } SAFE_FREE(tokens[0]); /* It's not needed to free other pointers because tokens generated by * space_tokenize fit all in one malloc */ SAFE_FREE(tokens); } /** * @internal * * @brief Return one line of known host file. * * This will return a token array containing (host|ip), keytype and key. * * @param[out] file A pointer to the known host file. Could be pointing to * NULL at start. * * @param[in] filename The file name of the known host file. * * @param[out] found_type A pointer to a string to be set with the found key * type. * * @returns The found_type type of key (ie "dsa","ssh-rsa1"). Don't * free that value. NULL if no match was found or the file * was not found. */ static char **ssh_get_knownhost_line(ssh_session session, FILE **file, const char *filename, const char **found_type) { char buffer[4096] = {0}; char *ptr; char **tokens; enter_function(); if(*file == NULL){ *file = fopen(filename,"r"); if (*file == NULL) { leave_function(); return NULL; } } while (fgets(buffer, sizeof(buffer), *file)) { ptr = strchr(buffer, '\n'); if (ptr) { *ptr = '\0'; } ptr = strchr(buffer,'\r'); if (ptr) { *ptr = '\0'; } if (!buffer[0] || buffer[0] == '#') { continue; /* skip empty lines */ } tokens = space_tokenize(buffer); if (tokens == NULL) { fclose(*file); *file = NULL; leave_function(); return NULL; } if(!tokens[0] || !tokens[1] || !tokens[2]) { /* it should have at least 3 tokens */ tokens_free(tokens); continue; } *found_type = tokens[1]; if (tokens[3]) { /* openssh rsa1 format has 4 tokens on the line. Recognize it by the fact that everything is all digits */ if (tokens[4]) { /* that's never valid */ tokens_free(tokens); continue; } if (alldigits(tokens[1]) && alldigits(tokens[2]) && alldigits(tokens[3])) { *found_type = "ssh-rsa1"; } else { /* 3 tokens only, not four */ tokens_free(tokens); continue; } } leave_function(); return tokens; } fclose(*file); *file = NULL; /* we did not find anything, end of file*/ leave_function(); return NULL; } /** * @brief Check the public key in the known host line matches the public key of * the currently connected server. * * @param[in] session The SSH session to use. * * @param[in] tokens A list of tokens in the known_hosts line. * * @returns 1 if the key matches, 0 if the key doesn't match and -1 * on error. */ static int check_public_key(ssh_session session, char **tokens) { ssh_string pubkey = session->current_crypto->server_pubkey; ssh_buffer pubkey_buffer; char *pubkey_64; /* ok we found some public key in known hosts file. now un-base64it */ if (alldigits(tokens[1])) { /* openssh rsa1 format */ bignum tmpbn; ssh_string tmpstring; unsigned int len; int i; pubkey_buffer = ssh_buffer_new(); if (pubkey_buffer == NULL) { return -1; } tmpstring = ssh_string_from_char("ssh-rsa1"); if (tmpstring == NULL) { ssh_buffer_free(pubkey_buffer); return -1; } if (buffer_add_ssh_string(pubkey_buffer, tmpstring) < 0) { ssh_buffer_free(pubkey_buffer); ssh_string_free(tmpstring); return -1; } ssh_string_free(tmpstring); for (i = 2; i < 4; i++) { /* e, then n */ tmpbn = NULL; bignum_dec2bn(tokens[i], &tmpbn); if (tmpbn == NULL) { ssh_buffer_free(pubkey_buffer); return -1; } /* for some reason, make_bignum_string does not work because of the padding which it does --kv */ /* tmpstring = make_bignum_string(tmpbn); */ /* do it manually instead */ len = bignum_num_bytes(tmpbn); tmpstring = malloc(4 + len); if (tmpstring == NULL) { ssh_buffer_free(pubkey_buffer); bignum_free(tmpbn); return -1; } /* TODO: fix the hardcoding */ tmpstring->size = htonl(len); #ifdef HAVE_LIBGCRYPT bignum_bn2bin(tmpbn, len, tmpstring->string); #elif defined HAVE_LIBCRYPTO bignum_bn2bin(tmpbn, tmpstring->string); #endif bignum_free(tmpbn); if (buffer_add_ssh_string(pubkey_buffer, tmpstring) < 0) { ssh_buffer_free(pubkey_buffer); ssh_string_free(tmpstring); bignum_free(tmpbn); return -1; } ssh_string_free(tmpstring); } } else { /* ssh-dss or ssh-rsa */ pubkey_64 = tokens[2]; pubkey_buffer = base64_to_bin(pubkey_64); } if (pubkey_buffer == NULL) { ssh_set_error(session, SSH_FATAL, "Verifying that server is a known host: base64 error"); return -1; } if (ssh_buffer_get_len(pubkey_buffer) != ssh_string_len(pubkey)) { ssh_buffer_free(pubkey_buffer); return 0; } /* now test that they are identical */ if (memcmp(ssh_buffer_get_begin(pubkey_buffer), pubkey->string, ssh_buffer_get_len(pubkey_buffer)) != 0) { ssh_buffer_free(pubkey_buffer); return 0; } ssh_buffer_free(pubkey_buffer); return 1; } /** * @brief Check if a hostname matches a openssh-style hashed known host. * * @param[in] host The host to check. * * @param[in] hashed The hashed value. * * @returns 1 if it matches, 0 otherwise. */ static int match_hashed_host(ssh_session session, const char *host, const char *sourcehash) { /* Openssh hash structure : * |1|base64 encoded salt|base64 encoded hash * hash is produced that way : * hash := HMAC_SHA1(key=salt,data=host) */ unsigned char buffer[256] = {0}; ssh_buffer salt; ssh_buffer hash; HMACCTX mac; char *source; char *b64hash; int match; unsigned int size; enter_function(); if (strncmp(sourcehash, "|1|", 3) != 0) { leave_function(); return 0; } source = strdup(sourcehash + 3); if (source == NULL) { leave_function(); return 0; } b64hash = strchr(source, '|'); if (b64hash == NULL) { /* Invalid hash */ SAFE_FREE(source); leave_function(); return 0; } *b64hash = '\0'; b64hash++; salt = base64_to_bin(source); if (salt == NULL) { SAFE_FREE(source); leave_function(); return 0; } hash = base64_to_bin(b64hash); SAFE_FREE(source); if (hash == NULL) { ssh_buffer_free(salt); leave_function(); return 0; } mac = hmac_init(ssh_buffer_get_begin(salt), ssh_buffer_get_len(salt), HMAC_SHA1); if (mac == NULL) { ssh_buffer_free(salt); ssh_buffer_free(hash); leave_function(); return 0; } size = sizeof(buffer); hmac_update(mac, host, strlen(host)); hmac_final(mac, buffer, &size); if (size == ssh_buffer_get_len(hash) && memcmp(buffer, ssh_buffer_get_begin(hash), size) == 0) { match = 1; } else { match = 0; } ssh_buffer_free(salt); ssh_buffer_free(hash); ssh_log(session, SSH_LOG_PACKET, "Matching a hashed host: %s match=%d", host, match); leave_function(); return match; } /* How it's working : * 1- we open the known host file and bitch if it doesn't exist * 2- we need to examine each line of the file, until going on state SSH_SERVER_KNOWN_OK: * - there's a match. if the key is good, state is SSH_SERVER_KNOWN_OK, * else it's SSH_SERVER_KNOWN_CHANGED (or SSH_SERVER_FOUND_OTHER) * - there's no match : no change */ /** * @brief Check if the server is known. * * Checks the user's known host file for a previous connection to the * current server. * * @param[in] session The SSH session to use. * * @returns SSH_SERVER_KNOWN_OK: The server is known and has not changed.\n * SSH_SERVER_KNOWN_CHANGED: The server key has changed. Either you * are under attack or the administrator * changed the key. You HAVE to warn the * user about a possible attack.\n * SSH_SERVER_FOUND_OTHER: The server gave use a key of a type while * we had an other type recorded. It is a * possible attack.\n * SSH_SERVER_NOT_KNOWN: The server is unknown. User should * confirm the MD5 is correct.\n * SSH_SERVER_FILE_NOT_FOUND: The known host file does not exist. The * host is thus unknown. File will be * created if host key is accepted.\n * SSH_SERVER_ERROR: Some error happened. * * @see ssh_get_pubkey_hash() * * @bug There is no current way to remove or modify an entry into the known * host table. */ int ssh_is_server_known(ssh_session session) { FILE *file = NULL; char **tokens; char *host; char *hostport; const char *type; int match; int ret = SSH_SERVER_NOT_KNOWN; enter_function(); if (session->knownhosts == NULL) { if (ssh_options_apply(session) < 0) { ssh_set_error(session, SSH_REQUEST_DENIED, "Can't find a known_hosts file"); leave_function(); return SSH_SERVER_FILE_NOT_FOUND; } } if (session->host == NULL) { ssh_set_error(session, SSH_FATAL, "Can't verify host in known hosts if the hostname isn't known"); leave_function(); return SSH_SERVER_ERROR; } if (session->current_crypto == NULL){ ssh_set_error(session, SSH_FATAL, "ssh_is_host_known called without cryptographic context"); leave_function(); return SSH_SERVER_ERROR; } host = ssh_lowercase(session->host); hostport = ssh_hostport(host,session->port); if (host == NULL || hostport == NULL) { ssh_set_error_oom(session); SAFE_FREE(host); SAFE_FREE(hostport); leave_function(); return SSH_SERVER_ERROR; } do { tokens = ssh_get_knownhost_line(session, &file, session->knownhosts, &type); /* End of file, return the current state */ if (tokens == NULL) { break; } match = match_hashed_host(session, host, tokens[0]); if (match == 0){ match = match_hostname(hostport, tokens[0], strlen(tokens[0])); } if (match == 0) { match = match_hostname(host, tokens[0], strlen(tokens[0])); } if (match == 0) { match = match_hashed_host(session, hostport, tokens[0]); } if (match) { /* We got a match. Now check the key type */ if (strcmp(session->current_crypto->server_pubkey_type, type) != 0) { /* Different type. We don't override the known_changed error which is * more important */ if (ret != SSH_SERVER_KNOWN_CHANGED) ret = SSH_SERVER_FOUND_OTHER; tokens_free(tokens); continue; } /* so we know the key type is good. We may get a good key or a bad key. */ match = check_public_key(session, tokens); tokens_free(tokens); if (match < 0) { ret = SSH_SERVER_ERROR; break; } else if (match == 1) { ret = SSH_SERVER_KNOWN_OK; break; } else if(match == 0) { /* We override the status with the wrong key state */ ret = SSH_SERVER_KNOWN_CHANGED; } } else { tokens_free(tokens); } } while (1); if ( (ret == SSH_SERVER_NOT_KNOWN) && (session->StrictHostKeyChecking == 0) ) { ssh_write_knownhost(session); ret = SSH_SERVER_KNOWN_OK; } SAFE_FREE(host); SAFE_FREE(hostport); if (file != NULL) { fclose(file); } /* Return the current state at end of file */ leave_function(); return ret; } /** * @brief Write the current server as known in the known hosts file. * * This will create the known hosts file if it does not exist. You generaly use * it when ssh_is_server_known() answered SSH_SERVER_NOT_KNOWN. * * @param[in] session The ssh session to use. * * @return SSH_OK on success, SSH_ERROR on error. */ int ssh_write_knownhost(ssh_session session) { ssh_string pubkey; unsigned char *pubkey_64; char buffer[4096] = {0}; FILE *file; char *dir; char *host; char *hostport; size_t len = 0; if (session->host == NULL) { ssh_set_error(session, SSH_FATAL, "Can't write host in known hosts if the hostname isn't known"); return SSH_ERROR; } host = ssh_lowercase(session->host); /* If using a nonstandard port, save the host in the [host]:port format */ if(session->port != 22){ hostport = ssh_hostport(host,session->port); SAFE_FREE(host); host=hostport; hostport=NULL; } if (session->knownhosts == NULL) { if (ssh_options_apply(session) < 0) { ssh_set_error(session, SSH_FATAL, "Can't find a known_hosts file"); return SSH_ERROR; } } if(session->current_crypto==NULL) { ssh_set_error(session, SSH_FATAL, "No current crypto context"); return SSH_ERROR; } pubkey = session->current_crypto->server_pubkey; if(pubkey == NULL){ ssh_set_error(session, SSH_FATAL, "No public key present"); return SSH_ERROR; } /* Check if ~/.ssh exists and create it if not */ dir = ssh_dirname(session->knownhosts); if (dir == NULL) { ssh_set_error(session, SSH_FATAL, "%s", strerror(errno)); return -1; } if (! ssh_file_readaccess_ok(dir)) { if (ssh_mkdir(dir, 0700) < 0) { ssh_set_error(session, SSH_FATAL, "Cannot create %s directory.", dir); SAFE_FREE(dir); return -1; } } SAFE_FREE(dir); file = fopen(session->knownhosts, "a"); if (file == NULL) { ssh_set_error(session, SSH_FATAL, "Couldn't open known_hosts file %s for appending: %s", session->knownhosts, strerror(errno)); SAFE_FREE(host); return -1; } if (strcmp(session->current_crypto->server_pubkey_type, "ssh-rsa1") == 0) { /* openssh uses a different format for ssh-rsa1 keys. Be compatible --kv */ ssh_public_key key; char *e_string = NULL; char *n_string = NULL; bignum e = NULL; bignum n = NULL; int rsa_size; #ifdef HAVE_LIBGCRYPT gcry_sexp_t sexp; #endif key = publickey_from_string(session, pubkey); if (key == NULL) { fclose(file); SAFE_FREE(host); return -1; } #ifdef HAVE_LIBGCRYPT sexp = gcry_sexp_find_token(key->rsa_pub, "e", 0); if (sexp == NULL) { publickey_free(key); fclose(file); SAFE_FREE(host); return -1; } e = gcry_sexp_nth_mpi(sexp, 1, GCRYMPI_FMT_USG); gcry_sexp_release(sexp); if (e == NULL) { publickey_free(key); fclose(file); SAFE_FREE(host); return -1; } sexp = gcry_sexp_find_token(key->rsa_pub, "n", 0); if (sexp == NULL) { publickey_free(key); bignum_free(e); fclose(file); SAFE_FREE(host); return -1; } n = gcry_sexp_nth_mpi(sexp, 1, GCRYMPI_FMT_USG); gcry_sexp_release(sexp); if (n == NULL) { publickey_free(key); bignum_free(e); fclose(file); SAFE_FREE(host); return -1; } rsa_size = (gcry_pk_get_nbits(key->rsa_pub) + 7) / 8; #elif defined HAVE_LIBCRYPTO e = key->rsa_pub->e; n = key->rsa_pub->n; rsa_size = RSA_size(key->rsa_pub); #endif e_string = bignum_bn2dec(e); n_string = bignum_bn2dec(n); if (e_string == NULL || n_string == NULL) { #ifdef HAVE_LIBGCRYPT bignum_free(e); bignum_free(n); SAFE_FREE(e_string); SAFE_FREE(n_string); #elif defined HAVE_LIBCRYPTO OPENSSL_free(e_string); OPENSSL_free(n_string); #endif publickey_free(key); fclose(file); SAFE_FREE(host); return -1; } snprintf(buffer, sizeof(buffer), "%s %d %s %s\n", host, rsa_size << 3, e_string, n_string); #ifdef HAVE_LIBGCRYPT bignum_free(e); bignum_free(n); SAFE_FREE(e_string); SAFE_FREE(n_string); #elif defined HAVE_LIBCRYPTO OPENSSL_free(e_string); OPENSSL_free(n_string); #endif publickey_free(key); } else { pubkey_64 = bin_to_base64(pubkey->string, ssh_string_len(pubkey)); if (pubkey_64 == NULL) { fclose(file); SAFE_FREE(host); return -1; } snprintf(buffer, sizeof(buffer), "%s %s %s\n", host, session->current_crypto->server_pubkey_type, pubkey_64); SAFE_FREE(pubkey_64); } SAFE_FREE(host); len = strlen(buffer); if (fwrite(buffer, len, 1, file) != 1 || ferror(file)) { fclose(file); return -1; } fclose(file); return 0; } /** @} */ /* vim: set ts=4 sw=4 et cindent: */ 3E%)iahr@śE -r9A5;h8c`B/AG[Bb\Pq.:qVgt]5CCY].^.aZ~ȘƟ@9_-@o7ss:w#jok򙑺Օަ4f]@w#A* +[a1+e$wzS l{6!PJ ڃ`#C,9eITq䗛/0do:w$!aB-K'vS4}6ÏD": ݬ:[$3sWE{HmG=7QEUJ~P'S}Y;.} (o=X}\ i¼<&F+㼊>BzB:}.00 Ϯڷ4.a0V!4}T,%͸qn̪3--8Uݪ> k aƨU/7j.ؓ-|xs2WBY?&DՄ53Q8 ,>¸16¯pW#\u@>}Q#Ĩfu~ks+I`fqI4&Jt2Gk"fh8r/t ZP!~\2X<6&]7!bbE`{l!WaNN( U+JVn:;(X CԂ(|glgl NR+3k Nh\kG6gr3gVUT:BVN|bR_;&Bڸ;I*##0JbL^'oQڦuQ7RHߍG\3!x ;fod&lYٳIM Fjf8x Hd7s˱{2YwJ+D[P~V0.۶縲sŵ)gݒNm(I~zPFNKK#W-% azc q'^ޓh:>M(,(yGbtndQh?!J' kX8Db%n zyVksw!iMPaC,_\'mYZdW*1~_F\g<\v.5|xte?@ώԧ0O2M O ,C5;:E {@ΥQ?a'8gPY _" M>1q6vY?̮r %'5Y2euEO=YB%h[wN-JDޝ5J|{_ @oM%GT _Kgo)Pl~r?4({Mƒ 41x9%Y2ُN̊tX51/<<e2+B˻VP- X.2\50Ħiz ϴ8 ]chw>-SF!e1]0="ٯ{$>!M9j4W(RaąG^n){3_'F1=_2cX*0]CO_Yf%W̃}Uk 1]Fbr`[4-Lg4Ӽ09S< MH/~A-SI=._[=P{PuQPSȇ j"8MbZL[Q],nc% .0!5I>lϏAJABdtC 5@}EHZ,`_6+bm6o|I=^NϝDFGx(֚)1*- 'Юl*n/IⱳxCI9[ԺrG bHM#޵ti{R.]#vPLL2[T G3{ =,[FEDYߎI۟XԘM fll/Zw>pn{mʘ*7'(>GmO烫fc ݑ粸+~nRRU#$DXSz7hPaQIg{v18+|h^#ЯG ^uqv5{*c΁MPsAse&)xͅcO]+ZePy&*TjDX#Drm=z_gUyߥ5 O֚64R(Ac [lJ{vZXOhIɽ I?6D++lLDlp8.݄RmrGʧ.URswv JϹތ&&7`q{כlLfYb*a0Hk>Wٖ\ʕ]xējv ߎ7Shݴ|ձ 8q ==l[`VݳC*=ZM#剮Hnsք-1 `ai<^.'cn 5p& =5(QԍZGц4<1S^ėÞZw޿NN{Wv‡  gNQH.{צH O lE Vcx6f!MO}nxLw']i-2dt-"Xm]gRHDP" +ˆ'Q(6ns?FJ8@=ݽ9}$[WFJB've"oC?\bOXw",\\îZ8!ZVT ] 4AA1_co3c rQzvK$F*&q\}9(542V0?4WOѐ'烁WD\ytE^mEќn5Ah^ɔ@O-Hn6,go -o^Zrԟ{JQDD*nm )kf ]x\w;H7f0A"Xhח'"sQaua448`grZE4-_ 7f:bh}- 9Fui+m3BB\Rk2$}w:+B2M;Cu+<7NJ \$q&#ط: <ߐ-Ω}vWBhO ol=ʍVRM!6rF L] %As4P TS!tSMߐdvNꤽ":[]󁓣VBbߩ-HpÂTΘp_|w&oCUR?PRNōXBLG_B,yfݰXJ `K~A޸vQpIymςǿ|ޮlgY\!ܝ5UA 5 dž2/ [(/{pi7w+Ǔ.zBR9׏nG 67Z`݀]&71^<՝OySF @n'cę̥G`gq9aNrj]lOP"oc2̆5 ;ʴ#87eҎcN5Z31HޡFNxch')Ϥ]$s=&l0X&{ۊ!w^-WSGu_L[]y"ԃZ. 9׽/oDN %q5 V~d~4;#jf# w ~tcmz-NGiyv.Od4i c]l $v1T+ e^j)uDSѥgȝ* v42(x߯Zz(k4F2v(2U"!띳/{SAy7<]{me&2jģ\5+e$|a5NPvhb% Ks:K ҕ <m&yr7V']N:!Wk"&Vե]]!rn3f_mKPۍwVJQsC}ecOиD|cIIg-=;$*R| }*&-ZT{{pOVogڿ)o 3~T\ą.)qkM1%sN5o@r,^YMO=0)HMmfwflI\AT"%PR.#{fAȳ ]H .mN_HF>Ud4+h'{ Kˑ.>}yLdn[ݝsQ?U=:S"D%9eȊq;W|x=OiPM]"@s]9 Igx.RЇM.BP=B zu*O0IHje~&GMq3tL,\xHYcTs+J4ঞN> >;=C.02E!bN~d :7ۂ=?Q6|}|Ь1U&F؏^^;`Y >zY} , =]| 9d Um{Ӻ:igqr*~)&qBwt[f958gYJUK0\lf1kYm%wӶxCjkAxxix~j@i/COj\e'!`&+pRGwRHeKDҘ6-icjE'C#ܽ'ꆲEj' 7䓒v5 w*M]_ˮ"θ؅1w4]-w-HYA0l5H- Y`xZ+fi{s dE= CcrGs_h6KzA/! M֌hix7É>H^LJ3,k](?f%|,vUGiE`dQ^{1(?r{ZʤbD 9oNZlX+8'ATVzmϹG }k]eOü޿Hlxئ?kZ;jcE;[qT%1vu@{Sm00,u GV+9WAw9`C|XOɞ̥AEA>GJ%޺{we%f:`IWNp~`I{%#NFO|z5Z!χ1(9_5f{r?qvZ+2gq [s-~%?!RYX\A~o?3w zE,~]+ ,h=n܅hR_4uo^k \xf;&$::叚2/zQ%րT{X฀VT?CM2J6P6P8 M9BIKHᷴA%wLqϤ][{]Wꯦ8( ^.fIɆPNg*iRw'ؾ*-6PڲV+uxKLOn~v2!EQpn{T_yeshj %2٦eL,MTϨUDgE'f7RÉJS lz:fhH:m(/'{M~{zo$כ  < |IC2\pĥ^<$Fdޣ)I]1m#J<UFV/ݷ[s{!"{zh!qg21(Α镞&\m*eY6嘘MfD~8%Վ͠{aWds2w12Q>NZ7tjHa)t|׫;|ـx|^\ Oq>lay? d áhR^|3u/~J*1$}E̒mK믌Vq8Vw+Lo! U>RAɱhY% nb^sМ >,e`}udܟ8M7~h/OSWPg/(Bxtz+T@' r;UNËR؈|{d'/x&l5\X>sf>K=Nk_ާY8>%(@8F=|nA^/65'M@Bצ xCHa {sDWe-7ì Qs+tt|TXǡl9E m]tdoV!NpGCʬ@,ʓauy#ndEl TWo r?0iGgݧdR|ŋoYkց& Swq\Qg$f5tx%I6Q9fUשWș&9lWAI8%Iuu>GŌLSCʳ];>|lۡ~j;4 (u.y*ɤ[ϊXƯ*Y0~G4"gv|"0(t"k W 2݉hbVu{mU qt@1>=?OЇOU#mJf'# {)G m~YWuYK7E g>de#`0Ը`{q 4ˀ]0TEJL`9,bY0$1)S̅ v)qGSJxk6uQH @*maV5ޏˍ,2VA&o =12r!UV\ 1ʎC摏,{ݑ/*wp/oW>;>Γ)HL8r;MFMSX#SxFwLVA ʟ4M3H%۶춏)Pj nU2qΔ~hl Iߋ$Ɨ!o[xY6sĔŒoN)R'z]t^ $"I\[]llaGuA+AVKWU>gQdS'Vxk& 7VZqѲDhVd oCbEPt_.|6K㒵V!.RH: M8RƏ)'(H-;}2mx)t U]5̐pt/;2a0kf 'RΎFwL 'QL7*/y \ńփ@%ũwo s͙Q{6O9@NN;MIkϯ#oo\ N OhTf7 ]/t.y;qs`Cj VI,#D Y3G Fn|@v+ǽ s{ЫY]7L(k-{u-Έu/܅im(\!k:ҹ毿 ` uݰh7;IuwrܤuR4D#a9y>@[7Ӻ{u 4cJZ4Cw΄=^mՙw*Gj1\l  󸝯VKT:(A@"%tArKYhb]Gyd0@뚴J;MIxqp}O3*2H=_cƎ}s`дO/TEM4B,l|{>@9B!aR|3LVM5ֻ +^B -&\Tm ՀogRAbQ`;Zl8WG]q*sˆ3]l%5l 'e,(c,8df9"?'xɄc 702}K]7䛨<4qx4, =z~MF0RU(nZJ#e9b0dLDǁRq(vױF8d3#)'j]>q5(4Dss܃x媰y'Zs619RՓwW1ďaIF5Kt,jc[i$JR>5%>L?:߫v$^TpFӠ'WopE <o?x5dFף|Q7g"r?&IׅV?=Y]N<T灆ɕ8״tpq^=* }0޵σI+SZa{]n~)8LWgkot8$Wyҿr;{&iiC,U^Q.N`Ͳ]Vk o+8G.\/)uѥ HxӷXcgF3p4p5h~|ǁᥟgO [l-dI3z:1x JT[1.!!S_֯ƌRc2mmU Wq6yϕ.^C "`Z(GCL4F\dk\ܴsSG)_yqό ݨU 5.hwAe5mUUuXGI"t2H`J;s.8c}bbD83亚D7/&$$I&X 'c"}  r\;ib!ӄEL&w З$^nmFk99\UsA&D6?3 "rx1"6xv|y%;<%mvf5`A̚XmNshJ:6')s(Ep rShXb{z0jhЏ*ZN?h,$- )s6>7Iw _WV 2PyKȫDF`On*^ʅ< 9T|vHVJRb*+LI\p. qWf8Y'ƌ_̎vhzw{A!R83O5V?"+=+5 *f>Kdڔ<(b&+/X ø == m9wzߙ?( xѣ:I`0(" MrUg)،y,~VzoT+C78P֘+y`QoU"3uHKմAkc`v%hmxy]'~ШsDx{%.9^qː6j*Q^"#vO?jf#J kKcK T/^QeK^fuSQ` ;d##`L(^Dlɍ,Mk,/*fLhљUf|r41u Nk()~Z9Uͤӯz?rwvU'ߦDiXž k{ĐV؈Tbqa*,l>c V1ų#~mlkp S@^\:Io)ւ8Jf_{ji\fA@Qqg%:T}~EoHÁgUڊ~#& hMt\2Y+;dmbVa\ي]U4 \͹8{#}#O8^4 ga'ƙɋO<_vV%YngMuS@u3-"z,:KAB+mVrAk@hϷJ UvE69,Lܧc(EυsBv69P ?)7=/w2ԎJ$)G'׍  :IJ'7'uZ`^o')IR5ӽhRzhP/L h$ٚO2zn\ŴtDFZioR!Yfl0SND(KAmR +`Po>Z9娣hb*%3${C+,B0]7n T^Z \MT>(#bS tQoJ"epIAG@#!݊4- M eU!a[99Ws_LU(ء4qS$mߠh|[9@}p9e&b%kԼTqUտ.v&hYgfd=8yקDIؘ3$K:K}QQ_|ԚVEF5N:{>y Lm킇6sO7Rm0.̚m0repI(Lle cIeZ2^a\؇t8dΔM,Zv!Fv褏aTZQ1o\4hJJJ㡌JN f@O[:J~vbJr[=25C)]m)D85봵SLY삅EKLQ}RTw皽B$[[s;sl=YkxBA2j# }fCƶ+}eOWY-;Y*;Gϩ 6 }nesb `d|8 /&z3%7{KqWA\_T[]qmڗ&bx._>\KZ^.0K9ӿC&{+!?4px׳Ya>XAvvP) ' v}o!"}vgo'b=L z벶E|9<&c&竧y¹"zO7e!a&1;٧+ 5ut[ɛ8 ܎!^L[| @kI!T>7ӄ4NY1mûr XљU} GdK5Ef]~D &sspJy^VEk+vp`/G,{{0mP`$yҷk}6X)79Te75eֵe{P MXKjO'"?fvy2m>@_Eȳ$qfiw=ۀ%Eh^W$vP!iʽ0puD ԉ`?݊n9gf達扄ks?b \Ed ]}|Mmؔ9<}?:Ɔ+fRsSs˔eܳ!ƙ&tغ=LJQӢ>c=Eo)(]W{DhLY!D^'}?W.sm, lST͙9K_rݞ?Mi{Z^V`dO-^@Lvюޭ:&ľKm-FOCR%GԽt\Dr)TwCV./ |RENYa#bM'p?te%=yiyc%X`b4}T?\KUPJDs"Nf$z9`U@)5r^7Q茅iQ۰%a  ?(-E#e{?N>RM(.#g] Ǐ ^˥ӢR3I;DN# ϘVpc!W϶kJtnO(Mh816N1% "񵷜h% }ϞH9SG@*ԎRf| a3d,5C<3wJ!hyRz[SkPC-btΙq]fʙ4g߼TakHuk q뱷} ݊#{dnX \xRNNCW msrSweM׏} V` [6r9Ճ9"Ͱia}k8GkmGoUms~D~]Jd7L@]hdICK VK؞bAnvvӔř)|*ߥe7%1]&S"~V¬ɴ}Jc[]I%&2̶K ?8)M "r^q{MR#Iė; BKFƌp T\LܴO2^#@G9S*v:6P'Lc8^TbnX?:} xB`>L?Qnh"a,59\>X{,DLzϳvv)WABѫ>N|qu!B%3gDTncTC抰D[>yc(A̓N-bT웋|A篽,*JpALo 8οC 8RYI:?gIA/0鈴i] WyU[Q濣[-C2-ݵRqb0E&aC;ܕ:'5>=4;YzOԱ~iCO2˅0rwCFK gr"k^yr 5/Ws8HSLtΪ>yl{T՗K!:ř-S?~W`=,/6i篊+sd @!A01n{^ EJK?z64(Si#w޾^G:k.uG_p-yabYUsN el7 Fwv@bBnf7hbW©aTS:tt Pz6ozMKevԢ/܄{!ȁ7{- wuj 6{tnI,Ԃ,5٠/h LJXa83]X&F%( g y}2ԑd-WPU>, =MI[U{nʗ? NڡYɼZh;/SQo\6B_Bp| \O+y h⥥G7/i,AY5ߍF(h%]8!6]Tafgo7TFDZݡtȍɸ7O :ʺ2(ObMv)|!\cjL@^/!i[czK T{H^lH #ٓjrKk8*y>Ɨg8 -1#]t}` @+yN*tjb"*ZsFz6V^طR8mc34ǽ2e:ɘK۬ ʸ**'(.mڌlt.Qїd5taʞҢ՜rgJ#%\^qkXai(;ZhiUbfiE呵ȓi-xY2^P1&h A6Wt K_ôG AJΙ@c)>Yx.k$ [WG^?OA1pVL7)a3f }AJӽ?@Di-7U"g5Ly8SuOQ3|:;=݅\C|3UX:EF iwjtML,_n:CWo?jvN?[5?%P{DJкyz"iv`kNFnpdcA p Tw|}7mSkƕw4Mޓq ߩRF0mO-cܾզ4 4Ӫms cta<[xx}ݥ>G' wʾOr%Q͟O9 8Gp=Jghԛ>f;XOeuWs7aJd޻Ͱ{e\,oav~juKcP% ӜױNq' o Q4㻿HBv^slh^%3r/yfƠ?o!~%nbxV%̀dVp<&T!7Sm n껁,xo/oNTS3ʙ:2f\K*o6eݹޤƹ~d7 HRXfr1NՅN6{S(I7Є奧 {lRU"x'tNd*IjcWں9%>NK0@t+ amHwX6yg19p'lPY%ybEATo2|܁f SǒĭAÈsAUطE}M->հp s_Z]YӇH-ɤe)[_[IGKl,vŒKGX`^u|.zRuf_\j I+6'$YӎhPڋ?mI![hXW^, zS3:5רUXKOƞ aHYyK7/Xhz{MbOr$-ks ZlYf%RnSQyR^FGW4fwW[d0YaoM\'W b 'QRmF=B+֒H'Oѓ,FLIq&"*ADnQMeі}蹸YkoR2MF )U SVѼ!hZ)xЗ5 ΦY$vPTni eۼWd SC+fv_pY"k) K"}z|/ P9 )bnb~Q+Qgegd&P5k XSj^eRl;jN%2pvCę,׍{[}FhHi]eLIL3Ч"J!?6`T|-&um!s+AL6cG ԟe2\P~C,_T _ 9դΉTH@FGrU/K9ދ- j/`zp# MHaqۈ;/=KN; ـ3)zStdav8\/Üw_4/\˒)sm%kJo0$[)'Fz yL X&3.3 n&^MNcm m4}ystj4Ei6D1J2?SSiQ&[ qxLLZYʹhqK ~}#{8SeJMXBuF ,޼% STsQ#s>x=x :mt}{Rԋ|. v N$Y !Ue,z36:NJKW]_>[Q_ٱ| $߶{)SAD skww5"< HNa'8G83{ѮhFt73rHNpO'!19M%WݳIޡ]u/GB)O=֜"}Ė b&eJzRf{ ՌdA^Aq@atV?{U Cc1ܡQLjC^/;'17J _ >aV4 n=,Y#qbQG{7z\X\*CLR8aڪcZ6c1 m\vTpn 4tt domҜrzXZs%);*K>-ɿi0TRBC;SljHgo }FruYl|ac+"E6kaqڪC[z%EPDGhouE=='iIT7D7&/Óe1dߪyW;-[q) Ryaz¸c˞osI9mq\)Ʌ^ H.v+eX0b)-rp6R C]tiCc&|<"&(oVmī[w`MIR N8Qzb6O+`N's E;R&T4 <9.c{).Uk#6|؜1Q eL!$x'B@G=w9 `G*v7.JkD*5$(}{.ޤx;1JD<@dQ|HC;׌Ƭohλ6κAAYQ@*E3?kX*U1I 9񵔁ǮZXYё* G6m!ԅ,RceN}T^Ae0,Oy NDG+)<^JOWsޱ%؜~] m6cU릉%"hLHgTfYaUbd9D# 0-{'EW$/lےD`Ʌ$i Y+ [/eW=mb/(P"YlՕzڶrQ yljV69XQ QMZ&?8S%vpTZ{J;u cM3pOUƗEJf4aZv+1,!6~twŷU-+V ^󔭠y|Z |NxRYҐՑ֍xJn%PKDŴȀq**^\mOӊ~2afכM9)>/0BѦK7i+{, #Sm; ϩ~w9H.&xg BȈ-Yi'jÅUOF0fvYd;0Χa>*^*H\j|nH>p/{(I9sC"Y+vNhHS˾Q%4awBڙAٍx(YCc_U{"eQ(M[,s9Vƅ:j`'ʫҒɥJ5xYC~b7 QA07QuB^Ч!\%߂ ȰXDLӻ`k׭~ΈESW7Zg<$_Ie137[rxS4()<`M7>٘r-GffyEפ-(:`ZN$g袝+W˩wi%BM͘Q ! HT]sg'ӿG 1PDdn1sQr<5"[y/)΂άѶ1,0t?#-0ٶk ?jչo6 T[%o HeIvU-迁RaYt7O(vr{ON9'%AaiΦɡT?cw C& c@vIpƼ>tʹ帠-uamߤS|'j1xOa!A%/;ɍw)\hP鎇  v 7` |dt+'Bz9f )G R'1qL=vXV.X%e=k/]sʈ*U`ZjrmR@ CwT {m]0" oKZ5Ql7@1ݲD7CbW5`^D(1H{uyӃmv]/o0vmJy|ZtJH6:+60|1(fdn~r'}[-Jϕpu36z2FOy%-n2|;,fFܨV#5EٽFNFᅛt]y4T\G W=HH˺6Q6\,j#CrQNO{|{ޫX'g =wO=~A=e?Ss-9g庑y,wAP9]Z7!Ӊ2٭IIEBUv^rAtM}z)+:P 0_آz-|$! T{jF̲ CLB@f2uW'Fg0gԇ>ouqVBe3pJ d0AK6U@.{j*1G!^d(+gT3z[ ldڻwmije~]ߨ |=P Z:u[m$$'~aX$̍u-zdkqZ36IG1ċiO<5 }Md_߷r@c bDQ'2YPb >V}Hn 1#*aEy=,9wY[^T3bsc;W7&{~nm1sUZ%oىkq L4D΅.km~:%3: QpxZxLOD!~ f!Bf{ y(T瘇 Wt:sW(ZN2M>&:iwoaS Qf>"ۢ ?vd% V+PSLB̧Z\:ٻ&(,{1/@ИlИgsjR8]-TÎ9:J^W&2W}6_}(@k5o[e>^Qï+uU eMbic`yYYi\F2}Lǥ_Cst5d 6+m1oo-dBtȊ?5l T"g@M4CW`Uw$S&g A5݅Nja5񶳄1. t*%-Wj/)ع}۵{dT̉kYܥ7ٕ3d+!Cg!N[ ;UJɠ΀3r+QVag8nO E&U-2V"_K3i]LI x` xOp?0JU BMS&"phW|+ z ke9ԃLm Z忂r_{\WcURxnh)HJ!*?ɷt%_ͯ |9ϵZ~sVWb)pg@z.gt8c)rw_5~cic-!K ١$>o1A^ qaމsqAbLx`t&@)WI }vakz`|&&x/!1xz ufAjDTj _rכC}5Tx@f 5ĆbJWJ8H Y@ن5򯖥?捻(.[,]_:]֡#rH}$#,V9DZ ֻ^4Q;.JQԘg[";2ew$} ōy-x[UMTO"$7cH}ra/QD!NeIf(S]DLeE(d4 vរ A|r!$FY]vzb;70,Hl1rjߪ bY!pf;~NE%s//P>Bi~=)kO"[C39z 1'RG̰h1pPlƗ-W%"jέ0c]H_{:kTAMTTn>ZvP}<ǦFW^B-޹4j qƕ̘_T=b6PaU'w`2EqrL_u"FVa.`2W*ZioVIt.)1hR-l̟)*I'C$KtL{x= 9_n'47{0ݺqu/EJ'xiT]ѤbJw}5J0gPji,HOƌOY}!j|񓿱 :`} vMlG%vJL3kc/mS!> ܡV.׿! pWѾT[OոM[dmC&YW#lU+n'+*2'O{{<ğqMBh3!@83C1ŝ01XHVr?_JٓM_pz q, xl&Oqu;\[k> ϯo'j"wD҆zfJ1SX Nّ{6o ^أ6]ߦ9R_ߵ Z^~F(isN D;IS9[t`H%Q~+uL]?iW}RM1pm!::k#n'媦70t5gnoSWo|yjAPR27q ςOęF4.ԏv.$7jA_\0HcxdHҗĂnTȃ/tW|o51٭6H6c5 jsYT; hx *T'%2W3[(Ly3Ќ@ֽ́A4ϩ̺8KVNW݆`WWh\4֣ʄr1$uOC,d|L5q`a:<EutRd RdtUp틶U(.5,wVMuPfDhfmYNƂ>yˏtf0hHa_N\!tqr1lpe^+-1?F1Snqg>R8UY>P`wC1Tǧ/JQuea9vXi#;t$1p&A`z:Ρ(W5O]b /Zʬ2% 32;tIZX/U`0v$ʒ± -! JZw<9M8; 7JjH,/P*@`C$"NRG ]b4/1_N7CK{1Q$=Ző.2yinypP< A|Wv:fl w/Fd _.n$6uƕzOyY6B,,%E-tO{@x-@Ű Q`w/*贯 e\e(bG? zX\QR_wNU6&;>ʡT446 bkaDI#I0깄[e"V]+k|>0#Ɓ 5 Ks&V25&M;rbӆ*t|KKXRh4Wbk/33{2{60T.aȉwMx,ZEϪOhP_6 mgN kZK9YpH{@F/Vb B+E;w2+Qz-IB; !(ji- Jzvhs ȼX]DFivWI{rb}YS@+6~r0@yKA i{= ޺h~0FY,uַ<,1vF0< `W*l6(0Q.)V∹ 5sWxvVH8KP?zj_a #>Nnn-DIa.| ꎃ&M4xZSp\D@b!jʽ:d-'(ѸV¨~vH?UiWf&V?^[0DMC"K gpdZM[H Պ/znDžT0z| C S0j{@΃ }\[j=?^-vwFNe]MD4dϥMDku(Pz)E7fЊd:WBkW;|C*B[koVq,zL^1ۺ@=ױI!DXmyfS. Ÿ8^1 NJ7Ŗ8 [~[j>1& glVEf;Xеǟ 5*اe=էzYg;ֳ/,?^w Ǵ[Ks=e6fl]|gZ/ /]lcf!u= :eYNoq.]@؉3¥{<{:Ľ%C3.~l/c!̚VBh!G * M߇4VI98|{X*xd $A.FLXF0N(Á WϝpMx:䦛'1ϕ픒PcjB|[iItW8*2ƀׄKQcM3 <$$U0 yQ]*VEp#kΥ&{m;CLQZfSfS[%4}PF>aEͩK&\n̾ ^U*pQ,M *wF|u@BD8M>N,90fN:VOK/;e)rc6W0>J< ܐʼir) _76$%;#?L2 ~9cB&Th3tLB)-JGM;51,8vTi^e8HNazEѐU ^BRg<]` T445 SƤjp)8z3PIyy;Ճ(IuXtd&'Ase8?6'C""/98pj5pxu?Y_"vOtBp 4 {7d.Tql'K8Ÿ\ղ;Q*)xV)5s5%)1/'spkdK$Ր;s"WW~J7X%ͩl18L${id8wa!`,'ynb,Rj2|%Q0tr-Eb.v%#C.D "LC)}'z_8_OxC- T.@ID uF |~` 5 UgEgmHh$Kc<^99AӲ a>5fN-*)YiwnG#X2 kc2dDV!bP~|(k)7]GT /y&q/,D7{4#xJG]8X3C +NKA( N2,K9Qӗ=@u_CLʿ3`AVè x58B1ZsMtr:=}?Dy5~sBWd~E~Q#26lރȺۙ`؝YHE| Q0-a ᅱ^{ ycNPֻc恞 ;+7Q"ޔ\ɺ#̨[;,}IQ)z\Gmoۈ?$NA%TſVv)΅EWhD-xwV$'ګCtC?8[ZzM٘5%ϖMG7f,C"ĎKVC\ 2 剎R&162aDB](uC4˯f2dA-F^^#1$il`"54l#>>C7Mt=ã;K1 %2 DSt!/&%I8k{~YU|U%U(j{uO"ٺhr[FC*E0ƫ$+1gqƤ&M\ɔkq4 3=;q.>:N Ѭ95~jiO CRAgZhYx̛uD !kS$^Q#V冣WqFBQa!/ǂ(т2w4R3UBR)$i ԹG2,%`dCT:iۣqOvI;ڰ/+26PALB0X8ibNP8tz}MU~ۑj<KsSB_3i5{ݗ%ۘ<)DtY`Wb^Jyh1WǬB= e"ǝHJ˃<:b8i4q74xZUT-b薡vК" Rmd"%םbxT#~0!$Zz5u-yP=u.fe@)r2  @/@^ˆ;Kӑ0T,Hzgy:9ۛ,j%DtWf0d39$d-~vn>b{=.Gg4B"D:u{n"ga9Ԇ!E*U21?ᧃ1Z?z֤:eٟҤ j8qm|VbF5uXFw#ɫq +yC! x Mct5}Gn[;_:'^ ,JeOy/6NSbaZ_!ZfU\dzCt% Cg\Ze@qZ?Arikw9i֖sYJULڪ`LK"b,Ai` ,aGw5 5?' uᙂm bD6HAPjaE4 -.Naɦ9MAnPiМ8'PVwD.N4+պZ-ߺ${kߺ"X̂ m93-:_)1Jns98ge{X `bMl7ڇ˥J,`fY =Դkh1Ekh",uwxR}ݵi 89e}E~`7&2}%Or,-xlj;p(#\cC7Xm)2 zۧ#sNB/eA>gᖾ%aT*Xk`LS|^t]6ٮ{qFfJ((2SJl{z7G KԦ}ʿ1\CbHyTHpޛARLWУTLg?z="j'єsURY]H(?Y)Y7c4 5k@oNmG@N8Xbe!n7 { |ąyiP꼥.Ich dymD4Nccxv+5kx廊-6iA/"'ڭv#oe-O E#7:*x=*F4My2omyƚJQj8sœ3²VEb'2\ȈnP-vK CYxhIPV>w o#RUVu Lh5ŒfX&&&҂|d- i{?kH#|K! @C[!m#+9b{`ۅa2I}.Y{#74qeL-}Z)e6,}߁pf!eR_>fcy.cҘeʦDPoڇ-DHa^jUg9.n8i <,HtaPJw> 9vs PAX^'_ b -x4)äaE] $|!MV.YZr.<|4R/4RY +irO}sd<|+ >a2R欁4292;$l%-T畔f.ͱ +O#1Y$YلLz&@Tldw*|aX݊1r%uoe {lzWϠ+ 0ۓĆK4)ڈT(J Ϥf.߸qi폨xG,';l=d}ǂԖD{7K@ *]4Vp<ՓfëPApV=l~ WU猭*LjC,Cl98ic .;¼AJ}Dro7ɪ|>3틳LP/3kȦz^&$SP}b6B!Я r -eKR[PTcR "\ %%:ҢTc93xY}Z`gi?> d_Җ⪃-hMiFicڀۦC| !H;1v(1L֢@cvd[t,PveN@~^D' /ʶ p\^wۊw( )uEApk{Sȵ'iaggF(큑'oV= 1ΣodtXnGN`CwHbZ ݐ2:ع&SzSWv5& [4JF5AH `US_}Y{ͻ_k^e*33eV8$.=A?kREXJ}&GVʣ[ؑOTƖ;H@) {"~^K*'< 5K4zPƪG5%2,]ٱau\}9]\}N 4* 4Pvm^|[fCNgzYد@K-)h"X8|uMP?ӗӛ; c չi)S'>ьhܣrI-4JZD&+V9GT[ EW2q\ܕ s{`5 ";A%i]WɦJdy䣡YBVtrN2jI$~*dGodIL"Vr\##YaQ|h_u{B))8T19%#u?T/4H+2KeLnQ/*QD qW`2Q}{Qr *cfk ۇS2FN 8G9\<` W`jJ(/=ۛ9@n){Xt"ޤ~3ξ"7b Z) ?x+"`o`(ڸjԂEE.`:)k['k.&6-"p[$,L~m} CR +N 0Ney"`ouШ>N}V?rzH0K_w'SX؂>m^c 1 +h͋ifZhց`䣟a3s+;<{t;䮭 ~~OKZ?` ħjZp62=h)٥pI K22Tљd[(Ϥ瑂?5aa(px k a]y{ͤN#<\DӅ+ jpHVVsZ)ԓ#x '_qQ!7L*b D+|S jz"d8zGUEy2$ D:7pok|$!C4'K@"a{+[J63~E߷u~ {ߛ9Iu-﹃@rmSp7-ކ }vEr,nkx\STH0:!رE|۟QJCN*2\|#Ƒ]G1C(Cߘ^M5ٵ7PcDO 8]GbGava)FOfi#65qhJ6{ uTC엞骛5Ex/AH0"_R&5_yy-$+ApQBkS8 .(H0`U}k xB>(j_Ko^HKާEA;"`*t%W$,`f?X4ΕT_p&qmxK+XGdhF{-t-d#ܡӶsaPfXb {x_GVO{58{le) 2Vܼ%ؾ(J,/ ^: UMU) !>wXMI$/B`3. +IDcy*g][Kڌ,[>ؑO+ bIwǸ d2O!C5@>he 4$!C %&ź\k%7p\6\8f|W>jvN:9y9Ҡ6GaHAVq)9L|)a8SV2%%yH( ʭPIw"ϰ C6:*V%xfxEZ+U|+-N(JOA9WLzAaĂ*ZyqIe>ghUX/ hzB737Y~&4c4fhb$ޑl^"6]ttcvV>QŤAhsnd`>2߶_mώe|?~{> gQM1H11nY *2{{1 ʑ;^欛9;u.9y :6-K"RR' *$2(7\8Hx/>?|j{%3g<(V_otRE>sCj4`f1GİRB˸ (޵G[laݕd!0&ݦ~_1o "Ig|).U :Zo2<'Sah [GuH,χFF=k33PٔtI3`wmqݞ_4}2S ))v`WKq:kQ==L)X6aS^jx p{a0<~Z v*3xQ /ceE$ C酮56YiClvWo*N;˞HB[gѮ,Ճ vq y}!Xsy_Qq=HfOڸ6nm&t23ȽBV 1XKu^ zIJḄ3I~  ÏWDQ£睧4){g5~De3MRBUV6k.Zr')kZ+WCK|/pYL9xAwccx[bV;iFy5ES,j^t&VK ,Ȳgl .XhF)pa{lNn"B6\c 2oG:k29]I yK؋v1f@ˆYYs6̛,h Fq6xL g WdzښD#$拁j WK7:km\|@j:֩YW,?Y|a|Cim& d2.NjTOUpy_U,ѥ@~xTPdYнI] M.(R!±"~I1"Qp_w=K`7$e[)ibbM!:gpF"[8(tNoq C_t =1*hb@bV@}KBy۾0ƃRp -[H@#sW7y`xpݘkF gREͮzBWyɨr]wW tys)%ܐGc 3SW-8 c. w-(mgq뒛_AM( @ica=He7}aōi( p!p^[ɎeeR/ _hHPowcg* LA}QzC6Lf/2:J t耀% 9}>p) =|YitOjWN :~ק,@SkIoŭ]538׆9/65\-ף>OɋLE/eAߚieI>ͳP W/5HwfF@Ϟmmo6xk7bHm0U tՈ#f:-K\\JٶhmZcuu@q!FUgd:^:=y &_T1,ۗOkW[s[{D̴RⰌH=ڑWoȽNy"(tb~mn df¼*X"옲HvsN*xaM! !=b'Jh ?2EIOF{dV gKB_ކ P1EUlWlv_)FR?g{oas Xib?3t+|0#X9)h'xqMM/LJNI"fM9p:u+mcaH>*tw<.wA:S(7;o ٳ;|X2 yAfB?J\a2OuR! ܂H:ތlRKJmGgzڭA-+#la~2 3IOy-g6BDhaWųȮ.'&duܴn|ҸcK BOY^DS(G < Kv6})6ɺM$iȹm/Ɣ@}?4Ml5&x9"TB*h$E6;^f/Yy:=thݘ-,U= n%:4?-|VHٻW`]cԝ]V"WX_鸯hIto4]VmṲMME.Zn 줱!iv,f$(սL0P1 9'UáYR-lgz:&Fw|!Q\H9x2Լϒ=ٕY׊gB+zD>.$_>L#VK7F^Rzj;V5`0p͆N}`V{#`mTh b%ai8:q"y6Qό%DM*eԡIJ 1@*;c0ߞ&Q?(φ*Zqh3uJtM%ZHOS>Jl|߱DVͤT).̱[3h%/?b$ ő {ڪB+sq1nA:')܃քrODCG+AA&t}#'_ZPy7g%8qUb0N ;w_r.EgL>/k6zypIcyDM V|ۏ btec'f Fe}ϐ. j Z9wyX+Ox Tgh8'y̶9h,=~Szdwgj"Z,`hs_O"s2M2ΡRK[X"[. ;h:N.{*<8R+Bd',n%.ޢ(7u$a#HPm!Pc AZt^=&_-5د߯ o`PiI,LMCF0&v1t[Kt¸ H+I-] ^yKx݌ [oI񪻡t HKi ptH87t +%\ G0R["D`A>SCj Փiq DgJz^ el { b#a<L(c`]&Kxb)ܨ4~%"`2R>W5:O,H.0(PfP t|d5ڄWjKCkF9֯-c3ͳs  <40 +ǨN!5*xVsԨձ‹쭙,韑D7e}(Q} &m]KñB3F'V}OI+9\nVF}SFڣv*t갡io5R'W60B8f^ ֙aQߓJDqdXSn?"m,|iVTow{tQ˼OomV.m7#YQs\/[}↺ мm~6W+]bpQ0^ql[h%1n-yG sB2…ed/*i\aE QAVZ^hDix+gs5y]kVA5 Lh~r&]K)-U6fM7| g?P'WʾKWSֺ~b:fl!*FO&Qz]!|飭5)"psA v jOAMcGzՐju"J!?IP0S $Hl9ׯY|-RL `'fp`Euʈ/>4f; \jYL:nmQ) q0|{G@e?(-_t%@ k]c"{,ZBs*觡}Z4lm~eDiM}n v$Nv:|bjBlm%֞ZyY5iT:!#Gg8ca4I":'yN⾡$]}3A|Fӫ[&"άbcĎgB+7Xu|2< cND2g-\ v\U}>1+B7ǘcʉfYuT,F+ *@ZXbt%q%nr̞XJ6t`wi8 -؛髲q"@V{ /6j}Unu%%㖍 ! 'qPnRcUߑ^MrN6J]n*ZU}-b]irm r$yk2iVUȁz`[*=Xx L|rd*L}C`W:d%S`DktR~ZF<[GJ&۔ß!{<{G.;\?o7E攦-KT1GխciwHjah,kvEg× R Ubcƙl]5Ò^>UG(b(Zsҟ?Ql ,e8`Â8Bܟ:kc|()638 !t:z"J5/ei=C\]OtY |.I9 7n:k^O/ V'=GoӦB|| G$+ `($ X_QuRSIf`_0] :AKr dlݥiT~Hއ:*+ *, nf0H08G;~k9 ֭ڟ 9򹜪RvR*Dĺ@jBQRHso%)YtlF19cGZ.Nk_1'}*X!(vos5[*| Uc'MľIL͍PaԎV)=td6V#&>.Nbۭ[' UTI`$R&T Uٴ;//&Eg<㫹l22Kfq挜 a`FnQk3# +ڼZJY]nfկK3Xe`HCi8zXt oDwYѺz!3h6\ c]5)Ջ޾r l7^o`Vxn_DQcr2 o/eW9iwY^Jh/1bk2$EZ5z($a$=ϩhcCR.#.hӺrI .lk͡Q5srt:+zp5+)`np***~Hq"Y)|^@;Rj90GQ wfdL@21HS YU|8HƧ O:ER2" 9~㷙 $;gPivRf6+6=O 8cNm_06j@CN1 ɉVꐨANw0Ӵq9Qy.wPt})hq N@Hqc&u܈yAq!!}XD}4Jpl9Hʒ##xRo\zCA?}W-|znՓDv~c[L ]}NlaiFi&g-9 ]Dh?Sު!gG63DU^ũ83JeiDc Qx7O[Kox~|L&]Pb^'ŋ}^ǟ?3>r11Qtw>VPy[xjytO2&sp'n֥?*[" ꥕E2RZ覢* l'}@݀WxV{)hc CP̞Q8ڋ&#: n֮\K"dj^bf·ANX'|H#inT4` 8*E!$%zmJ&m5RD`[%z;Ykl!$Y;%¥9 Gw2 b~eR@_0'+-}tw__d{|DW'Q5K u2HH:K_x1r@㤾&~S@C |l#5b$^*( S&MzZvhw3Ib_i0-Sԩ-u` y*MڜP4gsH?Ht]-h[&˜zL׼zki;dN6 >[$jCC-3s͗^nc­gRw>P)x-o퓯~{󜜬HTNR̝FːFf$KtX$^f*/$owy,tz$Aқp X8S)oˡV=l wU n }T]'Ң,(OGb<@hiǻ令~+y|7f6X8p,ҙfDƩ b& .b+ꂻumVClnƫ0k @mކ"T :]-ky rɠ(`wο{[k8fqDJX PzOVƆd#M{.Tybuh4xiFߥR1%!)v^ҴxclJph3s-nAtCH7o8r~ ws)r{#& ߴVaN2B0o_oyD M+z9~:% lµ\bZ mmb[+ݗ{mv)X>yBx+8JC*z-:KAnLF:)s϶)0g=sf џ߂E[xid)ٷ8X:}p?2e޳Z%ZO+({Zܠ\O|k5o,j6fo;i'1?юb4KkQLZ&#MjYla٪C R,uURV?nƒsgYП︀$op|#>g %);[A=}:J^ɹ*=/YER K\8q:`~c:Qr:r. gYUVEnf%pO05ҽI*ޔ 6I Se |C|բ⃞/̈́BGt U -ZԓkWY>xMt\}!4,ij£nG~mn{G+|d?1(}֎ES  z jq ŝ@X =LL? J|%|l _I3*Ћ)[*Oc5{LDP|ɣH (Ņ%z X֍ v?nc-v|̟Bk4K\. \::Q (s+󴼾oE; !%{YGs@+|8u=?.Z*.{0Y7 |mDm}HݽeT緇Ɯ*F '6n"OD5Elf!غ'TBVy!ИHҌD>hB$_zfLUp;ɿf~w>[=ղ9gFhE\Xe)1t{oJ9Ź +\ZD0ЄYysZKrqB_}36p"@(c6[EּUnt<-g0s[T[]j;dP'~?4:{LGmPǝdo]q!}uF`JTdzb@>gOCy8 fFr\@g8$p]}.ﯫa)iʭnGMWL,nF>="ȓ0la7V5dsR^x/ 0,WԵ>fퟃ\  Th;%?f*Χiė+VV&KQ gC!ϟ(O@[pSN ʿ8.{UyCeq?Kn "&HXwe#m;d/-hԞU]e9 XTUEuNY i^ ` [D"II4Ni_7lIrg`Lž/U@Ƭ/5w gb {+w%܁CJuZFzӸBH3<%6 ֠+5†=mY Ih,c QpXgӴX,^ ^!5tdTL Cgucַ(*Gn җ;jH'{mzV$~&iBVOkL$rluU=iZ},ޝ[ Y ,cs/=J)qtAk2{hۍLrGzEaujes3sDD%Ĝ'iԃLi9Qm 0&͹ #y] 4K}uI7 n?4+Hp찀eMo!kTgʱ(Ye"uIWr苒!E/^GEwdn^6MKV"͵u>\ JH^|v`QUumߪ&#Q_eto'ċ$8Ccn[El"T ?&u}PuC`jSʛzZ įhH&bQ=/zŒA?4/J 鶨;;W*%$e6o?ϨUF/# ?;U +85L^VN9ܒ./~T%$s^kB]AجgHgX'l3Оch+&sokc;4 ~) \5:k+‘bIB$x;qpw2N{yZg[}I0LE6ݷa4#3gyrܷDl5d*j}ި>F[@[c>}a(ѻ~q7)ĸ05k#i .\0=B"B3u[NvNyXW1ʡUR0I oj \maՖ^W-X\GQ8Ac*pJ%Yna_f6ᑺhkx^ ^WZ a ~ f{_XAi/RaB?C;pW5Ω2@;1vۨ>B)j{fb0n}Rgr[r/_dlePBdLjP=GGJs{v&<*jVIP!y *nȇ``|"UV*{@GiGi@al%+w2@9Rfm("5ѻZ#xR!N=>+m19Eo o1ZGI䃌n|[v&PMjr\$͆(&29UgjB~o\\,,^n+PҒ@f&ݠ}o4: d?6s蟔BaKdA%RZ*,˴q /v 1vz8OZ:˜bb]6?|Xn 3[ni|=hP 0O:jɐ@g Ҡ,+t\ts}$@( Ws@h@s 4a%ev$?@ QB9hhЍ¶<- IdID3#+[|yC]Nbj+/\OJ4Zۆ7B KhҙC1q͌.g=ܪгj!@E!Fv7B5oȏ-[iG)ʣ?l s3te G vwAfF-  G-1Wcޡ9hP!价 ]Þ:%S~Q|0a:r=2oP39$1(NeQ]'|sHR3z 4۰ Ni=ca TŢo$݋|8pqpыð: d~hŧOc]FߕnEw&&dM#0?lGT[㲻/2-zZe&?S]PVV(̀J:<4Nyf#4:-2(wcT̘*=|Ĺh5$Ax7bK"8VrvB:eb;Im 8?p6X%`) .co}g >Ӂ?UF=ù,8&T`fEv@;TzX`8-=n](ck!WHwy$E@}m2wj0H8K⁆#3h'' N 8KxNѯ6/]+>?gnHR}`߰H R*| 'xPNUD`mjPQ6GfN=xxM4 #R ]WvW`/B>Zh ]y$lNuX׹d ŭF;nU!g/+o>[atCYOom'J@y?nTyv[j",l4 P!yij[ Y?E]IVR3i`j'*oɠjt'%bTf6 +wd cg.m5t_0#V4u8򢺯rXo}-ݼz7ZT t9zG]ZxeT`<Foe^<>dga`ԳQW+ ժ}()bSK)k[3ؘY:%Wch5)>JT}{ޚq#hlp]C5ш2@ؤ494p3Ǒprw  6hL$(xi$ 8wȨ8ZmŪ/tg&l28K)' |g6bBHXJL[gt|NݶKCL>aʯ^>QSuftcLU' . ᦪCOb`ljia.mT:._rc@EK C ϣzPD2(g w c['*1|t=RA:!fvR/![񽗞떩&g|fVswV -6nD k +@ŁWP,Z$_“ 2Fd|p`#9݆L7zl*^[Q\tq6B0z޼KvN[[s:{yb?ӇebGrBE¢އ "E@s68}]^~?32Ha=g]>?p(sxa7¿2y Y&pqbۂg@4[PJ\Mc^5bK,Qͺx7a]%D>R<>Qw= N*%gǬ%ixEX j ӜE8)zD$3mg 2;&X/b7D9ZͷyuƝJApaA!P8UCxæ͟n bsM O[nop[SKL/YZeto)g7>QO̪:`1ݒnz*JHz&3oGYSi_/OQO0̘dQEgukХZsT[hu_5Uv*D]5 917EtXzbG0i:c:8@Fń 9ڟ%"b'mo-`vd͓1zWXuWB.%ctrJtf@藣Y+SXEXp/Qme< M{?~cٸ+Ͼ« XkU{:wK kc- 9#,eeۘ&HVB)2rsd >1TdS,[ ϗ;gdҼPt?^u[8qȋo ! IDf`"BBb/RJ>VCWoEۿ\QYNÿ'Zi/Dm=r0L9`0p#AR>8dsyw~~Oj *4P}&9^8#M4R9 v<%:X!: ǂCrUf̩x1⢁Q֛z Vx"SwC<FUQ a3y 5-睠>Q-QXY{n=emPqD9x W*TɭO*f5Z5݆]}8sÃ۱pc+9~ ~+"1Tim5$a*\i%7 3wbQF]4Z7EKI)΢se hñp3}ErΔGoa:AvC'?̠l 5 BR1`L&B02򅚆M6Gˋ 3})L u|. Jy!/o9Ϟ|{qDBDRLjzс+`Vj}x$+7x).pyŬ 6 s|$keQ{rN+n;QO4!=EkHx0SQ+wԳ4ϒB@{>Z!݅phKJ6oj$^+52'B:`[{c{P$h l(}]mMt'PA 8\LI QֲIGU JX=[I eؗ9]+]-,3l0*wv ~$e(0\QGf4C^Z2;to d lGؚ.7gBj ?ER o9ЌeMY~!K5Ț\%c8AcP}LdQcr|8LE)F`zq<6Z8sx9]%%2:CEk7EN%Pbd]FW 'h%hauԈû-hcpOЈE=xqk1o}*bQZjT@j aPvo.S- _ ΓbOFn6 D~H& DmpE";22sD"=,"Qe݃ȩ: )ߛ#㦮CLv8A҉?I'bìWi t60cuF qk^vw|ZoK̩j\o*՛d͔W8Ayw98+&xqW9d'ő2|CQ,Sjb#ji A_jgF02np_̛MU^dH(A,ssHF1q-,1j8 9Id壸U(xJ󦽤^؊IaW/] v8@['[?CbPdcKd>*:T=]אI~@7 + 90"#9Gh@#[.g7qف_~J t$[r-TtJ%zؿ406^)r(xI1s+4'Ǣ',*qkI`{;պ\U݅."̲7nQT /&xT+[]6;3?Oew-pq%N F>GbFEX)aPt) Ÿ8__mEa0iO> 7O[qW r;+HIE89Mx|^ f/)0DcQՌ'^-} 1xjᮏds=fldU|`CsZ-$0|;z|5#m6vjŴ@J^)ͦw]TJszuC֝r겿#VgwmqIGoRtVG/1t#Jƞ 7!&yG! ~fHi!66=Wl OT>[m84zi}`b1 71 Ĺ\.IDZaC|=D/9cL%!D}Cx_lp"V,Z8eĒ 5c+3|*yLsԾ_csAQδ݆I\煰7 [7|/zX3X"FV큷}?[9"i#*$UO-a[-͏ث$DnJR 'OЀti\MI!oWkujμ:Mߍ[f@I~|4/mX:zΣeo=a"ջvXǺPA6j4eW(d[[xOxp{V# $.ChY;/ p/f*~eLv W7W{2aM͵sF,@:X|d$VAȹup ]ͷ[a˯$-"qVf ؐRoMXG(LkO&yAL@ }b^aJ2yy("@Q5o4?? ):a#T {/Tu  t6uYp((6!N/Z<u}a4Bc0c[ Kyڗ5M}~#Z̗d}8NW.*B?0foi!jk_'&HD]ٖPIhr "MME"3F.MxjOMlu9n_Sbfz8`7uM[ʏR 8z3w65."X-> BbE#KO[&`@ fݢI@YNuoL&q6MԺw8)+˜Lv9%("x u#y8:"zN.ہ f⬲]]s MAyfezrB1yrѥ8}1jDP$4!!4(1hϘ[뫌7]^/w(yi%(hwDE@pQ+wHd'`P%~D)Y>U/IqgŸu.'4߇SOJebb"~`Îi?x0LzpW[szr79+_u~ئV9P9@B\0'2|/z+;2 :ʽ-u|^#N.1'5FB -R-I,C/MQنPzlUaD=0֟.m? }s'IBW?3\0B Sż/{FPO(Rŭ'3юBއ%;W= D8*jGX |G4`ooG3QvjLoU3Ys>&6} zIUcoYqH)LRq.Q޹s7:;r$ip zj-pC#uaO1 &77v#+&1@/ cCzr#RřްyZZ^IQcj)S W ("Δ'L!%?Ce7WGYc!mm8k鈐uHShn3EoӅ-GB]bM\e)]b 6VOIͪSC>6WCi.&`3HpROF֨J6|c@ gkiqE݀P !(~Ҽ}JҚBhQz1\ #|*[Pu,!$>݁s6 s>`:$(Kg$:,xݟEPS9ϤDN)c] U7ݐ B>_s s8~h#aƺp<IXZ;g]}p/IX8$ъ" r-^yM2p'Fe,$f(鿠3eܬ&%`'!{!-h v-< W2׮ Ζ] ;*$NV\9kxȎݍ,:1}QF[ZPt$ _~2HUj-J 䞨uX({O%2R%il_CAsb|7fAsbp^ 7W_=Ay8tҧ%Րz*lnsYo¤DTȴPJޫ]q\Cha6=G퐴cDݷ7=J-Z_ǀ{詣q?&<Z HGC:$ydǩK~Ͼ,|9ݷL[xᾌ5j.f|J˔k&QVV)dpS<&(]k~wޱ՗a]UM*ו4+ѾP?r'A5WsbCWal*@ω>|0K^_ q>⢇{yɯ$粏u z hY5ߓU5Պ`CW n| NJh-PW ߧV,Z*h.vO{ڄL~bO3g&!'ԉ%u7|* I3WfT d eA#3𯇼 VtˣSCƀL'HT7TH$UMo$tǚit\F.{PNtZϑM |95aPQoAלPâywr*\l>)CT[yxl~( bwpZj5e /2"RibDx'1YB!G2oGx= aK*mvߗ&t-o x3:hT &ti ֦M eMxXz7f1P# ha/NUbde˽1 ظiFbrwf8rB$o0.[S3H; jWfmW2_JS>ALjF4u.p^c"pr=, RNh?y: ڼzalulǖkdN`kg6-+_U<|ԉXA. 8p9eӶqi" %4dG˖44}dg[ӓ@A{>NFu-8V3kv '!f\[DE e.QHݼ  LN[$ ZNw@g&,Hlq.hTOS,0q964ùh%P C*q@^xEY6=?#dtLAR=i7}a]ohl ݽ]~,Bv0 W&j ; %] ͦR}cƝcc35QsQ>.1O>Ih"\ ER)4p;~z A ^D\ >]?]~ 5~а< J%lԼ*i004z̓w<Qd𳫚~e*#?r~[oj7Ñg)%VuՇh!Zm?hT_ߠ97^(rGJ It d+auLxr~]QiMdӄrNN-(ӘEšbGȾWK`*.weՙ,?YSϻ4`H}l 2 G h&?V?Ĉi͹ nCߖ(V Z s0'H_h -߮Rd0K6 c5ִ 7p8KeT"`dZqd"~76.Zp2a*MxW萱1 CoZ @ٷd=$2%Yi!ih|Is㽛ENz(o5%oIg>j%w1?WQjEu/+_NZu&6L/B+0Wf%iiyK- E׶Yi\p?\0Ē6YC .;O` V!kS07pɟ*!ꄖQ^_@ы:gP@$ԥ\[+n!g#! XX0=J\w}ЬDU4߽Ҩ%߻ Ze$h3pQ3a;ǟo>:Oj8˴\̇%9.n?[-ZPX8Ɗ0歰؞DvڋLQjOF€uZcad[h5Pۉg5e5 @e :eݨ1Ѡ " E9:H:)i*-bxXƪ᭗oBAL5ŗ\$`?&)(zJ(O (g0zp͌ vCniH)EL@?f)AƝ({}n"U*<8!p?8&ʁq +=߾>7);N~6ʥ9vb-el,p>$Qc~ ^5kHFGʡC\-/pnUL}g䗉P^_i2~گim(z{Qص2U]y+G]RμR" svvl3R46m_aV6Nؾ 2M-݇مx2U¡ohic6Oo}c$t gνGG2\b '?Ω!˕@knh@$T %jH|,(bRZoҬZ}cg+wl?z:9٠ Cc@EmkdN 0"`|蕫tE4]Rt-pTRςWF0{ʌ`kkdm/vSũ]=4.&y2R4^?Jۯ'ow6Ҩh).czXFRU9"Or,b'}ibc)=\ PY/9Xyz|NLNKm`S;TnmZK۹7|m$@QMJXKw^EpwV3|tiĒi:剆ؙɛd?-L6Ia͇I:nCgBB\tLoًIɐtF*'3-/D 0bVg+g$N A^ 'O1Q>Xe],\MgJ S=؛2ӑ|AocT  t %VnHs&PBqhř Y<oe;!7-M{46;t S,vƂ7'[Rm\ Ǖ{a q `yOcuӞu3PqJ+8 RozDlT-%sņitvMrׅ!m#L􍹤\ί ]5|!{h&Ɣӄ?ĒzΖe|'}҇m2KsTӠ9X9_\5rl˦ɤViZ4ۼ;Mܭ;/5mrj-Awz%;ft=PŤdɝxa)w͹(@^ܤINdG!<.] #9nV{ΤXn{m[}$0 "2ЧO1V]26 H `5{rANe*к!nk}pol\"8Oͥ` ) o/q:"5 JrZ?6SeK3*aˡ)8x/ s.mNʇֳEږХ |o`J y2j:%(\TdV1vLQK c{orȘzq%ZMt|,kanljb)~g5+Y{ 3$P7L7ɿ'nL]P1 G׀|5B;kfkN"}"+gWI (5F:xKĚX`cwu%5qyJoڹ{V` n噼#s&n\6DYi->3t:1$6 @tFwb έ{JØ^uR)I>h$ӷZ5a6,9=&%oFRc%x6e0KYA*($tvmd)٘hƮ֑K1J VŪL2ܔ7|n^y'ާ}Y*C:3#6cqKKD¸Zx`eiA q|5&e|1_^s?In^'9ꥱ&!zYGejbv0Auv$fP;i$*s73#ajI UMj洦ae?Ͱ-SM\}y!LP?^I/]ODŽ<,5)x P7BK7ُoe(\d~"w({"^EXS$btK`gtQܮ/F/MM$ISwjNo4=TJ»5(c |=ZO:I k#kYBGCК jE娚mHw gHar cX4cpIј7009C1*Cvq ViZS>[[QoAZ.H?C`n@R JR27 VdN^=4j *i#K5o3^0s7CbTz"t#+! ovX?+"w ߳L].4eLYI9 tsgd3-Ѫ)|8B>CSl/SqĕЖ c?/ DM-5`ྤTnڝW0ϿqӉ`BZ:VV&DS o].ɇ/ `s~z@67{T4X2PdW"q)6T07k%!J|aha50,6Hx|݂o'!ߢ a{lc9B2(#DƼ_xפτepV# 6ktT)g._l>7Yg go%`X`xʂrz7VCZ}Kx+ axV̩U0zXdZ&.N P_LheCs .nI%tOb&~o:ϻl&#=CoZ2mmD`~WM꯷љ8-;q!&E3LE` zc^\P*pYNi鞝ʘ(^TkRa %^g3{<Е;w_* >FWv+PE(C=C9@=-Ȣ-Tj€pQޗ_=3ݦ#8D\Kg9`=(RPz4R |G3r=od9J|y6>S\QF@wOrzHr}a%,SI0%ڕ+zwDq¯85uM}qVN/@J.&W8:<)8|m:hǙP6u\f t{{%7-9߭?ZLAh;Mw&t,]_zg_?x:K˟#|ɨLWA[| %"\P]uv.>rIYJ $^5s#6c515 jBΛI)IA&~%#Y߸M?-jܢ3AfqBYq65)oZd\IFoKXP_ ka\OZ'S[D\"sK(2mM`MEȟg!jY0iO)j]oaz+v;$rhy (aawlN4}_k'IY үWr?Р-Rge^Kߕ1yx5uF>PWcy"sjyP;5oh~T,ڝw^J]PZ]KN4P2Nt}ʹ̛YN ՙ)/](RaonK]ͺ$69޺cOIP(+جyhbӂ KIǑ'0l-K;dspaDTofw3⎒kq5LRfoLb[+ 3M9 RW-׾V(VPeT)}c@'XM1V{}T)alq&aӀyB(3ЭVFQo@o-N&t7S<<@,-?P-5IJ LWⵣؽ0g/BmІ yO&,K$n_P{Ft-Z%L9\[ vA )M9aX_WGrKwfTs!V!!:yAIK:"Y Qow#.>``u ˧٩'b>@}M?TZii@ڼǂ1y&CbrD2(-tsVDsȻ5ft|x5R;OKWҡsK-iX{8QtH! S3V_TТ(BݎCH\Н;Bj` $Hbx=- ~U6"!)&S5Kdo.0uwb(j )'#",nꖧvW5-UI' ϯ'Zazr6eX1Q%]m 8=F(~>GϯjP` Z^Vv vS;G9cyϙnw{6Xtא41BN VРaǔ`R,S̽yEt$/lSh7h֣(%.1j@s ظB}M2fA]ha)%2fJ s?nIX4×HW[ljRߗEɱԂ52l= i$Jr>{ 1)6kP:{4'db#y^ T@NrH AcRFσ݁4GSsŘjM<E&[+6I5A莋T7"`GV| zݏ+kID&ysZaZ{%#RWi2pȸjx2ݐNSec $;ߧʪI1,.~MaV`xjxİcxp|*t@h+JDE50< ezƿօ3il,;|/ Vs> G2\-:'(@Sz\&hJՇ& {j m!8Yި%n0Mc.SHR1D\py.CYNգ$Vܴn0+5bRiI<ue8% \JE/ G+$jj5ðVѭRSҮ|7fֈy4KC}`4x.=h*VttOvtoQhv=NL&`V3AeMXYe=X ǽr-vL> =N ‘rUI`WLXOa,n5q%PI )Trۨ~QJETT<\3cT(#M% OuuGcPVX׉ǽVKJα#B]a/ L- s;Ci!^%&bChbhg9>O%ovtB?L'zAEiR- Zhay5ƳА/-WG&LH.TI{)4bv>+ڠ5. S"qx l!(e0N7 !u=dr1wiOORh㺆]-C˖ h9֥A!H ZcF'`]8\νQٌ[=iJhɒWu B ؒw|t(/#CP&!U]Q,^rs(PƷ8PD!u1DD(0YQ]X x&clz|T{6&w va+ .#yEn;<^a0 W[54c%ur{Lʨ%rXrG b|ťh6p/G0)Z zkwXbp7)h FNNpVWX/q7'B?P$HAmʪC ]/ r>Eʫzzpkf opRs;s}Q4~3KzN+a_‚0-S%db}C-Ora%/(\qzMxA8N$>L$:Vo9~]wxFaR7QF0uMU-)O:k9uYr s,:@`햎8uHC;D}<{؄R.O~Atqb|KOulfGN蒵*{g^֭갇dt$Ħ[EomQ9y4pCq; ʺj\Ʀ4Ug7W5tV6KKh}(6Lfl.%'iAY~Є;_$J"X/E@~|0*v-njRy82lȌ؆u&s\$"YmӜF IKLzDa Z=2f#N#QJ?йے 7 r(Ǎ>&:OqNdi*eO7aN3Ӥ.~RUEǮ TRO#2I8Qo/]M^hmuDFN2f/ m֍IѤ_{v6z<. ljڌd\>7z*E_ɲEŹ05atVAYR kν$͸'bJDCt1 }װڗײ=dY`|.󉍝Nu$\8PM^w 5Jei5 S#|CZzA:n;TRHz쌪׮숥7B- :ՅųR;A4HoV1tX(n Q>VaY`6<(ϑOf/c-|rUClDŮqg4o$_Y`OKدR)#'` j$&>HH:F]†&ʃr|w]P92 E~3/ 12^MG]EDllkVN D[9D ad!>sE9ސ.W9@3ZX’*6:& |&eb/ɑk#|C=,VΎXBduq:U%% "j_-Գm}4=̙WF xk~.ANҲgg%\ y}P .waM0buJì&Ubb>rN;,4;nbbdG %uV4!#pbT-W!H}e}VvyF5A?yV݁8@Z^H;O3aGUzdzOqS{̐)g/âvٝAft(K7كgN*-8-8xlv٘StRuK,{ژyC8)B<6QDfŸM%o* 1a0.os *]M\caTf74s]M+Ss"-R]C+*ߦZς&Z8MwLKz8/ hdPTeј|&G0%x,ٱO?*e4pMyCf+*j,؉HuȔn;Ֆj;So++x:q+j(tN bn@~̝WЄI#zX *q/g#iUљKڞ˫s̹ _\o‡K98+L|N38")os.U qOn$9O:G=, g-G ,;THJHB`J<xe$P[ s3E>f+Hb'"cpUxj$h=8~*Ac&Q,1}cѝ]eK j>S)$SnΎ9?\AQH`/rꄯGͿn.C5k/RtI+ԺioOO(&%hV)ޓu 䃭@N]T:{H!Gڛvt}U qbd>^z-FMy`X"Ҥ (ai LL1& &u,$j!<W`VXc¸f̻2-?[Lk<9PE(^y̠s&mc)Y%vЫ:CfFUh2 :slD6,JɉŅn3G^wa5RJGsnӏ|eu}=V/u3Oa3gTH>†߉mFP뮲½6?P6X`s%< ǿ}L1l *X0ՂqGbZq FV}oW>%ΌBx{Fѥl} g6|'HTMoўPΔ>s퐍wbKѠ2ݩBI P9X2cE9I_00gxh9SE}"Uװc` 1\h4f,Ț#%Pd%v|~J9hƕUW S:IKNϗݯtobó&o%wtݐ uS#݌6[~vG\!% SHs;ھgf4 ͑DGp?㗉)ީKXmc:ej>ɿQFT7ٴCbi5|DHP3p֋Ba@%W?9ǖ΁|{fJ2 ZZCrd}4mɒ9PLCFB/dwr4ɚx)i$ 6SeO"Q+ + "wĈpY.YD`=]}Ƀ3OQdn e'v)?Q+T{Gl ""[dzq~҇aB>$1q~tU&d_pV$RLU{d ΢A? ЅO7L ux]B^׽>ݍ)BApȆ{v༺#2TbstՂT4z茷e(Ԅ)2.4? ]|;ڠw4~9Hm0} t&D5h=D4d%df#rFй<ލ&7|/sf>0r\ApJ5׋>j3oDMGE=IyX(CkE8ܐ}bmich#TߩK7;k~}=ۦ,u(b>>Qj%7-..v _ m>#8\M%\dVP]_|E*bPx7cg{ǃObxF)记~@6:V)$S^Uߎ6\ 3W>N9(_LI*MXW"?7ґ\a<722eN5\xܽ)if΋(= &ۥToR)\$Qs8XBWmž4>A-}K|a*Z*S/P":* a~kYԑcߝAfikY&&%lXk娂' \?[[ժ5'<㸀`-*f٤gkZآRFO:^l X6|Z?Qr/I(9/_@ҰaTH *;}d[akTnsr%@_쏥/Ӓ IoPSxl4Rf_g~I:P_nUA)p 92j-COW4Xn$$Ss%VodF%Ҫ6v]KsE-cE0!*ܾ&,B"zx=#(ᙯO LޱHҢ!3;̪Lqg9|?>Ƚƛ]ؐĆ T{_5/g Hs[]p^?aWap`۶ 'p"薄\aY!#.pB਋+hVϏ^Z&ꊸV$m0*a+!n(M ˪.{+Hr[$!-ʩb&)Wi>Vp6fo)pP+AWMN]4ђ -x;[(JZni=@& 1PdIƾ4S\$._hs4bl-r 1SaےngE._wq{%k"`;mMWn13ɕ=AQ] qa`!ZHE8d-!mJ}6nB1#!,er*ZAt;i}HnV~\p[d  %:9\4 vl ii]֫PɑNraRI\`!kbϫs__6K?TIF"R[ZR~ cu0˔K#~ Mnii{3CJ). $ٟu) -$1 L||f*4#ƃu,\ԕ8)+%yq}ɯzc`(0My/p$_Dߖ*uSsmw] |~O4bi0nȑO7`BY΄-u!=?'8tb} zNk[X gn-îs9q("݌J)RC.YT9?<1xnCÐbDOrgĨp߾n Cf; r4[BsUq9(=B/} *X/i8öɥ 0>CA@Ny)E')a^I݊P\:!i1w3=[Ilǫ)ːX J*)ۭ=ȗJR(gŽ z/K!5S $B|D%ɉҝ;Ym]C豛74G,SG'ȅ hi<+bX6[ Ir9.YTMmy s@p+D藈}rfv-RwC-Gb[{M|-2}@Gg^+XL\ a̴EQ:c,ضk'`H?s!_≎b^X2?2(T.R C k.^ 8|ɔhm0JD@Dh0}r_.Ѥ6+L;6l=$"wRttOsh?[Ԝm>x:mrlв<]d{ \3kIMTcU52,'|&lĎǾp)и.i<i$~!(!5%/ݗ79t%9MH7%ǣvʌ! vJ.&~*e n=3sÆ 1n9 p,P;dZRLGic  ,D+mp .sxX昘S&hxPb-?@[$k!㗔7hZ+@ŖO:tlWjbjjl*T C(M GJۻU%b$8jx{c@h\Iv@&TЂԒԨfItKm=ұ Ρ-ޖ|eJ!*Yd8wBP4<8qu!t;_tG/7xbFN{ D`|"7@5z|HDa{ hv!S FV\h)7ӯMo7ЯnW3&V Z>>L[~, *dbqFv$wyv,XcsVog{F!=nTZKWm4ZiZ]9sdĢ2 vX7<:@t+ ~_x0߉'{δ#o S5rbqf +Ugx<ޏ+2{(m8zv,B\'v/0/MT?vs <&r4/@r3\+-4Nb04gT|c\So7(}5cWvm ,[FV-[Ӥ0jLJQ\%-66@54JMZ@($4 PჳIMa3}}#p̮Է6K:h{XHs ~8W;×䖢+n?T,T%g !([9I?bTw̄jTq{n;]T,O@gegwTxxaXjJPŅFj6lÿu:6<l866;æT\ޠ ryiq^.a\@||JydΊoh&@hRpdsMoc=Vs_uDSTh[:ֶ_& C{ *p QxeMuVEt B}/ EPbŘ(d a4K@s4{r0[PJŪI B ']ۄGm]lf2J _ÄI&׼d䕪9հ{Y(7P= "; X6Ey|/Ni|й L(n.yr\5A̪[< #~Aѫf$rm2oSM;K{]4 }T b Ɛ'BRG)ޛsAT.f1U]^/f54_̧RJ ,']jMN0$__dAR^k[8ڝ#"`$4Ur9%ї.K;GZ B?, eHЮ5Apx>:M hyCdʔņS ,q;۽:3OJ NuNQ iGFr)LKw "uVY~MΫƅ*jUC:$3]PF8Lv\\AEyI5.t_CZdl0HwteEg'pDJa5;{|MF%yaҠ)bտl̟)0EsGn@8Дb⻸E7VfT`GGQs;gWPF\v*X'74|9,'|#4k&:s|A9+h65JԄ<{EYMXt"P\fT.[MwXX=E:vlx꼯7PQ p,1-cT ] Y@@-YV+zr͙Mp-[~y^ٵUB{0w_d\2H6Xhv4shzr=`}7 _`d řvR {@W)D OQL(X}O 8la@ _3$veS<> }TK-H뽋aiߢU0[1Is nzF9Mw/u߫Ί 2P6e#GJڳU"pE:#sjՠOsRά84_v\Tٮ3 ]k[k= fFL憘AvAPl?a0U1/?%e(.l SF>eج>x< ek87iKWN0|ġn!re4:[-C_ WS6}$&Qr W$8b+!5.n.!Xn kuL׽{}h+P ?WZڀ*$4p[\ODZdEUНdm TT67;CKĪnݼ{:zIzQ:D %IJȧHv#g !H;֝tZjOS?c'xFFoK#deI,HXT8?ww,;(=j6hs@W}.nwqzk)"zV;I4H_Nk+R#D:Fig"0a]$].Qz}'4{ya ?+$ Ѩ.rMZCԱ:ӭ%2Rhj[W\eX45:gKa;0. Ճsg f?ˍu3<,0IT1k𢊂W|4IM.^Q:q(XTI. ̸{QឤoCQB'cJi rEIF uQYK@@ʬ1;hb:cOf {U| 4/>yR:a7^R)XŶjoBZ2g]# EmICP#nCW+8Ow[^z5^h,)e@VWo2+7fLF(邷l lQl62rf齗x ث]cOw77⎿YdG#z?4'զm9j#i'2c[ +|liBrZV>/v"c_j'`(Ϣ`ziv\߈5`FZ@첦zbbOC$NGrwԦ_t;xsHJi5NBnGJop%'Bu 0~|:"Qh*! 瘱VhV;WR>FZr7Z0Ɗ g̀*;%J&Ti]LG7CfYJk쫊u>&&(^HE"[-4+൧8s Zu5ՆH+8,q,-ӟ[Rjfu?}9"1bѸRU;Dd68Fɂ8r cWV8%Y *!M&5NSH5.H<`:f, So˯ gBpcDLg|c;Եջ Ǟ#-I+׽ y~gỴ#rIFtoU 5p37~s_k㉀ 1cb U7(iM}@g pOP-'!(s$L M4p"&`f1C1mAg8e-mbL 20t I'MD|_a6w8mwcȽNB*"<<"|ĥ.l&w6JыN*=#X(Y.,&!7ɞ 5a/EðȵHLjtU$h:ՙQvZaI9GݯcO4C,cq ۍ5mWb|0h]U]}A>yJP-ȳ7&.s +F|6?u' @t O8&IҌښޣ}̅YRkduϔjd(Tuh1. 2s87K92:Upy1^wXW.O>{gcfma8[Z{S06@Ri?MvwS~/` n \2D4PѬ4ʑJԣs`1sلKTE$ޘo_r]Kz,hHSpXVe,_풪*N4wNtfpep{ZRnռUU>)/m!'*h{1y9 㸕`q7zyqDZ@<^:Hqŗ/eL#Bodn?>T?c[Y-_w]@רf@ڽFIP рЏKu0ˇx{(z]H-])E.W.kŝ삤ݝ1╗v ˇߛ5PvRP+۷W֘O{&x唀Ra7k E[j*G#sUO}۹X𘪘Ov?jR\-VzC'x\,*t1~oZ 讑$a#c8VqvkzPy;BeD!OFwtLIL{mڒK^c&+:\ۍ Aė]p!BQ](Fl"";]ߍT/z6!f|DIID+-PGw7ijp"]8 Eh*? 0Q˾۶A b^+'h-HVc1cߣ8OBgvj|{)'0[mIV{I'7l^*^ˁU׺.*Wz4d{AH̼ͫ$t)59`I?z (?WcPP\tQ?CJRBױOk٫ Ƚ"dt7|aQ4u">L!A!^(V a8dy4V'G MnϜB %:j)s[qLx@Ah MsBHk6;x^PW4 E.8xq]?C@ W+}Uc ETj &oXUشpﮓhN.nZG<ȲI;{/&TǽԼǺrدeˀ_VpV-CHi5PڄgGL)me(e0 8O)- *_Js6#,+DЊ y%Nƭ`ߡ!=o'0b<Jg1?&Mxcit\Fꈩ7fҷtlA8|lw.CG$/&gȘ.#&_D7u4ʻu@$h.q Aj53C>Qm]kG{IGZBI^=;]$p^ro FbkhG[A.dxʧwq>kCQB 8C4+B; aku(?5'fl* 5=%[-nM%b0O]ˆy.).k\ymVBsc5`^kt7Q{goNoาdSCWﺍH57|Ze(Mc9S`1g l8 -P o]T2LqYn,  )8t]]7YA~*>Au<,Rcvq֨TQuk4jA,E Ǹi 3^*yϧUE3aAUKV}7/ggMYŅ2=M,6M ,b*lFnX2ivsUxז1 ~9l7L;Gb_?uCu(E@N}dʢ礕w :u\[:haܛ]-mQ&|)zfLjZd8MK[M=6GzJHyo9H?R;%jf3n7U4Ft(b!eE .iw9]^'[ b׵&.Ї,+0Ip|o %,YQG@1?s%Wh60 ț gw@g,h9]Aٴc8_E|g܃t,;lţ# -Բ#Hk)" (=_A*]&e#S0'yzl⹾zkcN'噢O ݀ɢE-R#jatUhxVh$,P⩫rY .2SGUplf3 ~dDyԽUʟ+C-BԹ;3Ȣ0;! >]Pp22x3.&3MBG[+輸hav3U+c1IxH8J̿FWۢNU*(zbSF83.jȷG} RryX2>I6~_;ƪߎ7-+<;5{Lb!7o˅Tm'{._ϊU:%-¨5~zgRxYo:QEaBL)KzCd5Xؠ뗘ƺZk~HM+9Dd*,ޚ*L,>%8y!叏.K^6X+ҁw*jMÚܺiMtƓcʅDLD+PӘKM7$6:PSF3ofC#*-wnyJ| ۅrEHEM H_M_"w*-Lпr32a,ιs)췳w_I|Mzl> ~o6#VB0#a'bEg ['G M J|INT3.Z285GacPkx^Dw0(#"Q [B2Wܹ2,(1܃NaܖՈC*ʫgL)SBem +!7PQI~ cz Wn +hSQx2Iw4!κsRakg%j' [h7f!u[S]n0H»,ye#CcT ~=e~(D+8U#!ʠm2 &ﯯY!Mj.j--y yJ \q[S7fNC`Y.-F|%rm(ma`b9v['F"50")sld5B`H/;:*nl<,[s@WNF,6 eRS!DR`D0j[iqʇ'ˢ < AѴ_-xAJt*.7v,AMTG]M CG;` [V,Tix1ҤtL=Kۿw1 `K^;i^u8-s_̙&  0k?x*\q@"9;8bR~oVEw_$iMe.;yɴHy]~'T^'KW֦*Bxk,ɛdY/UqFc|1pU=\ڡfU p||&rAv?Oe(o8cIt+?nH8Oͻ3e\`C['%O4lAGaΌaB3 ~/~˙*׃h:yG}A9؞Ö!na '1i(gܮ/FM<3q{%UMMgR#v}ԗ!AzUJDS4^qTʙ+d?uVOD>!No2Ras4`tO`@ܨŢhc JO x%J*83(RBF "K/ZzbzC'^6E̯\[u:tRKParJ/%5g6Ƞ,z?+*{F`mّjί}O޸5&"Pa2*|X;;KZy l ~%$g,p@aJ*< FRv iq7xָߩXÇB2 %6p $PuMY5VTICG|F?TbQn GZ/ [9Xyfyd&ɲ|.UAY$W}sSơdOs' AO7zs^2G(j)p(PˮؤRLW8BXg)ڦ`5PZ`OE 3 By䀜/<ɰModh{P9Wcr45Gd(]5F˯s/o DfcVcu>a^g׬1"eQtKQ@[X1!E|0M!T4(_q=zCHC$A-XHӵx{pշ pĉB1LηC:ڛ/+j+^o`0X&ؼۡyQ(/FƿmEѺUO[|}+8]͋,v?'!tC"vMM8Nc^w8=ԠǶmzm#(SbQ%: mMxT)enG ?l ,wDF( BxT't޴:nwbdfz]ςڪe*+1'N]:+E,@z^D_R_^Ѡ:x )ϱ9K)& Ȣ/~?Bk~a,\iQZ^MagDɿea`M*|+^c֤BCHTJL[Aۼe#pzl=Q[~(L JK3w'GIv"i,в,;.c903]'v m)D Ƴ:6T25:R3#eXSEJ5GG tNBg%t22V훷Iu.@6jO<ƷbEJ֊a:4(I >2v\w\_t)ky4~fY:$}U"DhGH:`Ե$X=YHFjwhofJ)69 +s3v^7qe.w\_^ɺӍZO'gYW)a?YI̳ 1?1{ǫ ]qk"qR_)]mvH, yD_o/̡Vw?Εmz84]dNV=A0 ;GP[1h0SDFg:J@XuB7>)vm ϷMw&:U49c?g a} #x.\an"joe/Zn7.&B?[Vq+ >GdǩFa\]ӠOHm,_!Y~Jt>p6^ns,>V]T poVٺ)ɳnx56^ɣL;{@3\:z 3(M2[ ű9KqNH{|j1Ĉ.= -sXݽR ζڂ/eH?m/p<`u0M=|1!|b"|jѧB) =Bq:J~]saJx~ BcG@]7nQ)Zǒ-3#k'҆1I4F\IC&z/8{ْIƉR=^mXAZSƺ6u`m;2愛_=sw=Ld{6ֵbpd*SKF/#.3-/A3%;_`JKF`E:8l:Ë01G>a+_"~Ӟug?^8*b"5'z5;u4`.,, Lkf)IƅXcγ\+>vrC-6 '~8}nK3׈pMDnd [=dAv>kz'6dº877yRySQ"h^WhGwx*X ⛾l/CM2-/R4gZMa y(S? b{Ev/+5" Gc(l[A ,nYaqt7 *ЅlUHu@gݚLa'Sv|O4KݭQwbp;^ޞeArsdU a0[gP3djڦq509b p >)M{%/!ƽqտ` :͓!De y9}P[ɣL 0ibԝ̈f{p_{l~_~74C{TGR:irr7Dw:7[+fiQ Z[+ a3}tl+Z(%ZOlFD?ߟMǦQ\U5[F)y7IC=]xpۘT.֭ܯ&y"F{5zr=#\1452PKT=! zV%qMʗ85;A&sNZh0WJ=[JTUH6)9y5nH&ZԔB{һFilWz;UuԏhkyitαC1ڄ~[Q& M-Wۻ (@J00RXƄ!邍QL-9Iرut[IXJXZh&@{Q`iBg%\ޫ繉4#S/|nX4rŘ0g-z:]0Dʃ'43{层kx<$b) ]ZUq׃*) =sFtr`fݔZ]:Mt*fpIR|y!ݕ^|/ 7UVf;G8j޺]r6DυazЕn;ްA;>G}WJc?y\Llà =`x \DK]-s i-|13]QѪG&(.)s<4$ru}cizM*(l@yA. WS)؋N ?0"M\'|VN@JN6!nDY좼9*)WNHK}+Wi*u'}\SLGg> d$e 9ך.7wAYP)o0R,U*Bll/[SIَ V"iSV$gmCc7d?M ױ/uj fWd\j9E y8 ǔܷ!dKJ 5khD]R =ڂpv:k9ޘO'EiURs<YO/i$v:8fzy_$z^S,NxfʼCܯP_[UU;wpb$w= ?VUd[oF.ʸcfrKQTí,i3ǁZh0UH,T ׃I&7GjX8|=WB$_ aD TC/#U !_A柺DSKR, R5 S08&9lda3 rH? j/L03՝f׌7dqRgߧnpMsnR`!+fQ<*fy&~  RB m(<HF}d}/v6Dx8n!p)aqJT$agZ^`kzi͝P?9>/]H\G\w|H'K 1pD7*sSM~-;-LB)8]F55|w$b}Ι8UG :XYR,K*tMzb~X`=ds`Yx :ՂCZme mѩ/@Q8;qy ֭Fb)-)vr˕J9Xܤ\]=3DR{r<;ZS8=Yeb%85xi*YDڳh!DӟL0>&'ù )P\"+@ǣC=wgFoB0 ~`_e׀AƸ&"+]!v~gd>UF4gv[Um2}T9OiuO mm&miQ.(G_[XN7I|5/9>*oqh~S@ų"TaBc=PH N[SeU~9'SQն b);$jQL[C/\4`F{ ]`#lf M7-8trga 'ؗqB㬥%\Jq"*{2IɲܹC/ː b1~:DM xLo?nV 5P$-e*&6O,Du"2E66^HhN h[̅tOQ10 H1BP~^ow&tnᄀ,B)15@8Nrx*4X!aF;|GA )w}bNetK (X~Lap kIwfL>dɒ 2l@s h5>C ݵ{gz:U#r]@hBܪmJDSqlfYO  /@cCo;b\8#qJ1L!ːCF2SN(7-8&=A9t7sY6XSyA&ctV_)7LK<)${Ar/37گ#9N&2 $ⵡO9MWѥ**ٟj<~8[aB|b2)fv4NշK^^.ΧȾpIARKQfOh+v2{hV]"RX z6r54.MDOtb.$`bT}0Qu8DDE`Z-!lAkpRj9Uʢ`m{tzv=iX{@>k,3*M[74%SjҺ9>q28%5֭cũ^d ,a3iUAçئ.[Pzջ] T-Z^5-Ps~iVKx8셺jT]HB P6-.{9>Z׬q7  -'4?Ezǝܥ$J཭mqJOw7|c eȽ "EmWRl2܀fqާ3w/G v 渏/s?٭a4Qu9KXYaT&d@DC'V_ZP_O+KCi`lYqzX:"^wCcU+~4bPZQmxv\7^&o#Oz]:ʝc;EcU O_N >ؗaP멞1 OgnIšz)Ҳ0HvGhaʠ5({݈=pJ>Xőy 9l)rvC х4%!c9/p]КfDŅU21Dz^KS2o):~VY_hx qtO2#larna2 |3Y@DfQ.n4pe 9k,&(,Ι6.Nxr?V9>\5A@{%_,mU>OffZ菽Ѣꝅ&VEmS2Ѭ[t:CcKd2XgrzGz#[Jz:'G ANĉBWgM͒nޏ.3$7ȫ0m$2Q]K2.nffF+^?5 W_}%/4sNT-_*ZnA=MJñogCg5q?&|v8vrChJ|˟Kt&B/ta>fфR8Sa.B@ I}D)衯3c2Q ;#|A+qk-Ӫɮ "1t&;1DY8xC5x!rif$M:MhS" hU)+[+|zxng|fRQ1PڙAN\I垃;#-Zք0ɊԆBX: N=yXFYUT qz$֫>G%V|] zoАFz-=xhb`W 4&x.N2Z>۪QzBF=>JhxFFnt]3*X3/?&f4wL}#RzYZ +`@* 9}C}~}!1+[E;WRϣb hjchR4 6Vlh' N9>nk"3j ޳$,Z)1 Jz.i+MߟvǛ t"Dg1%̀2hnBJeFz4SHQZwNDK$giHef6,4GK-jHCX-),{i "c:=2o-;~lLuZ ~(͛FTz">d $%Fo$;i /}'u["`Zh!1ѴR<]e } *.8}Ë9aJZ`gJgu|gC-Gmاss{%ROݥMƩќ̅r7ZYFiX:9+di׊Sfj~b}fm!̔qq*x uwAZ~QvՈwiLGi:% J#kQuꪭ_}ί}kFőa<ހk]d/-;j]R<-LoAH$PRX ` @T%d~tVytgvڳbFk LBͲJ+( 锘 g)}O"n/guUG96<|!t*QI>m{ei7,ږ ː *abfjJ}BpƘfXbކ ؟mbWi=r2^=x̬Ր8CJ2%:2 vr@Y0> 1+im/JqfnW]+w?Lj"RQe*aV@H VCPzFPO=hdZwLL,kyzn;Z {$(Ka6~xNu{ENd_{ `S+T@T`dY5f U2yiw[ .P$"2zq>;n]{ĺurL3*{0ԐiT:2p:4/%`ɾ歒D=$>%l\if'cV&!bH8FJȦVpf^EvmYlw.KkXRGt0+][ՊJv-B$mɯ1|^6'8&zm^j:@C3GL,^Bi+E'H;/&%N]5!Ё7]7LMa#~ !_*r%Ś}F9"쾑Ƶ4!bI!ej/ c'^Q:h:kn އa<6)>{Dg+{im/n9ܶtTݬ5m|bQPCֆbi^Ծ ^俄^ws,ʓ. :>v`ZN 6 JNj& uyT3#?'7ɵ7l1^δPx,Dw8ӍԤCץeBi-_YJ̟_{MЬdc˫W*CH5pZwJXum;$Rcn#0UФ>>i c=弁蹡<]q<robK NWWNj ݿWGSKtI g2 8wp{J\],l8V`S:Cؾ&*-":9(:.THEY~TљJ:>GH{ĺY1Q ajrD!44x4~-CAnH4(t(K+U2IĖs[f I9R!6Sck j ~2 ٭P[&(]/9JȇjBUG 4wr%f %=_EQǥ:@Ά upLMxw*"5L.JzD*Ltϡi.ӧ>^gBQ%ۘ#Xo(j=s荋{DNr‘(`n壿KgrezL4طc_!'(A{Q<"9D-BGr jvA$ˏHPqfIy,1l kpDە>p@W anGګY*xӇr*Ab{:{{v Le׽캪iN}tW`Ml#.Ǚ'pA62D^@+T3!00_|O9beB/% Ъ`Ȍ[6cw+"¯ , /0D$]^:n6t/Sl\۳LIq3'me3QIk#hѬ9iHq5|icQ,!ӰBݲ9'Ւ$Ґpe#z]a63ﭏ67E\_7Md=FL^b cͭEjʁdNz_iTw>CRӠ礮rːYH;uϢ 'l񱁈h6銈i Tt/vl.tlW`j6v$9ŧo`cytFADEaȸ!I4s KkB{^yGBNea<`"4W?*k{p|%~/|݌\JcDpU|q31~ZON5]{^dwv(tT1ii[ "`Zn>,Dׯ!ZjVM&AE ڌods=Od;'ٖv)(ՈQ~<`]wD'V4t꼺 R*0]~~uqw VV6FGI@z"l <QfND|$x 8Dd;),i3 3̔-[r‹'6v5iTZ !ӚZ((ӛiw0UŸ}ꡀ+8<&Ekר/N#! -x# * 6zZx)ʤz ; m_'X#k9z2mSZhyAA?&y'}"@Okxd.Xp7z 7{ij /kdDAETК *]wL"vwx(D*(Sckd`w,$)Q~LS.NG` `GzZQmNUOߴ ?O㖟L>)^ @JB蘝ئ pY6#}\&>i jBԽGzQ*v /G,2iI'{IdܤWIyplL= [Tb̡bSEq]TĆaRy͚~K m^huVWH;|OS7zaO-DKLU,Sukۍ NowM}p(׾kϊe[k6"Z R\/zYDUFy<҄}6o]B{SJ m:\m ѳ8 Hd"~R]Eِ_sxQ`sR\gH}WdkC0O(wA]-8XUa<7{NSRbzB@kAK`彽gX#}pW3i,Q|\ՖiX# K$44̓?{DSqD*xc톜W}u1ӊ`=m^XY MW{%[xY`&f % 9`չ3rq4]pgϻif PB(V2IAB]Ҳ g|PL$cRѝ{mMsEU6¾G/ގV[:_aQG>[ S# #Vx/v9]W]#\."Cuс|$"?IANf'tt%3kt@[Cq&;P$/ Jʉad B*pLd(=2a=т;B-Ƃs:~wILJHk䮰Q2९1&8ݡjaTז qOզw^bԘ sԈ^Tv9ݒp*7O)yjAA4F|{Ģ sgՓ,}Ƙ lQP$4W, Y9P4& @o/Xd[d_ JxI[;\jjpzS)TT .0hå)~gP[Kz$Nih#uoZ?buG%ԀaIclH%mEU2+v (3e4T8Wsl] aWyzp4jiCl3Xԝ}Cḥr&K7igq!F|ga,Jߛvom[@Lf4] d(uoc~s!fܞGtҗq7]c};)y13\өhsڨ=Bt a`Z1+sjbKW4et\>W^چ +(qrVzk;}"=OfxÀVJmfR8 v3gemu'@M*TKU1\@yD6kO_L\c)$$U^4kL ت+wѥ)xY'ΜCF<";!eD-gE/;" xQXgO^q>qG^vA.RPK89QӶS4}b*|6VL2wS< e[r'7&P0ZУ20}ƕ)%J322t[nXcM6#\>?'@!L63Ԝ{.GRC˾w'^vi<2|`AE4`cEejuݹuLE4QL\GaGcIAA2v`+Ajb[lz%bMlhlqmQi$[PUw ,?П N(xuەEhHyf 0ϹE)9Vw:BH&rOټe3*R䑨yw!4J5 S9w4f}~ c=A EC+6QSnݶ*gI8YS32VJ גޘI@P>$?J):i.ZCD9eLcJwBٿ URqYHK\+u+#sG(??j6g"U+E3 P?ÛFvF: Cf .%=9+)&f:Q;ok-sDZ?V}opmP.S#HAwB3U\w*>W Ǹ@[,-7bDFe\JZ"YCh:*Ap\y\ZIL1v F}c0v' #ۑCɡa8j!!.(O: zL"qfOY5y0x!C1',o2{`_?:&Np*.+;˝2%Q5Sk!b`4EEa1\?S>9al$ hm-'j(G5"9Pf1csdLS)̫>U](q>\)*#㊾Vd).ܑ5UQ\_t߾d]ʰm24v ԵUpu,:-Ql8ؐF"ҙ5 drh@evW`P# oPdBݪWk{+51n9(36`Qs+ ,P,᪎ҡdg7z'uiTfʲb:ܕ~HQ``M QXLL\D- $zb[3qaX[йYc ~U!i-p/mp!D5Sm&6X}V%aFU+A\9ZKJ;7 ZwkڽiUͻ {v9%v=L u`K{<{(,%Xa,hRfkGQa|Ȣ^s.z@0DxPG8}cZ -ʂ>F`V;-8JpR4q+M돶B[2̎b^4U[y(lS um,MzhZ|87XOxЃeñ=0]hPI_[KTPiߝlLF7́?H:H٩EIr[jxbI F6 oP|\: >Uw,<~(3Nj}81B %Yem0AQuP9<[/t*<ӊ.8L;o\U%LD"g>ÕB&kL;bk$IQVi v{̮ī &rMKl-#a"OURɋS{@X~i IZK*\AmWʭ& >R?"< tQdo.{X=xqT.K.5x(v&@U|GB/uuw35sFCI#,/`5'܁-ooT[ w9=!N:hdό+h'>l"Vbb$/ `<va*UW5oI9+Q plUFNڴmA 5iWXFPz>7X5+%`{AxSx-VԦzF* ^;Y'ͺ_ 2s Pvc*1* | T%M07X }Ԟh\ۨc0u:{/:z״Ef)K}ZtTtvU+۞2Svf>D:w0d$$.NR8ed֬so4ﵹ"˹Ble4mʹU7?(~[νr-AiyI\a"ٝ^t\aN v ,P3oNQ(vXtן"H2V"F'7dnCYQR:^7<=vs^ UgהxA\ߊk`':}|M.ha= GR\Bpjףx'ĩplg~uD-vm jB6M;,%Ys*zT|~w*jygCayd `_ n9s> )_F͎\ I2lTv;"#xK; h]zμ)P")*bwM0<ڠ7-\~޾DH2ڡ2Ǣmp :{槾kU45q9A*XI[C)mTՕ?qq~S\mp"e>mN~p%}^:4V1Wr\5V2t%fU!)2SRWjwx:YlUl MH߸6 3TB@.G- -aO eFǔ] JG]*+?t27Ad>t|(s?Ao~GJcr@" WȆoJxG.gCFڍ^pI )uh nziA\ұ%( 3#]jߔx!}{Q#kt*L!5l\O*CT/$U=5@pT =Hvj,^ڑyP _HL>Iϙ?/ gxbLYʩ(F(.1Ƹz%/R"+Tu0|5vJ/Uf|~Ih&1Qele}nژb˳Fe>ŲM}zU=)wgMCb.gvk ̓`gF>'/ L2A`vSr+ʽpLHʪ55aEDuo F^(|Cbom(){-ЮCWP/yr5`/| SlW\)BU.-"QCzVὨ̕^nZ[Ǹ/ҍ5-Es^w0oG%fQ4%|I폢IbnRB$Xeu:JQ?Y6zt_a'PsSzЌْ:3E躘˽wK*4+2yI;_gM}K;V~8[sI:\DujN]' l7{A|tPE`(}a}]G3o!0VGA#JB_`$%'uwے1wБBعkE7:qka.motnd&$ϫJˏ j <$HaB5֓D.y}LC:@s| > )!J(x/{*Zk_ӏQ0ҳb]-<6֣,uIJ'Tœp:2eK[7ƵCɏgSTg[OQ[>w׃P?/ b0X_㎇U'JSW&OTTbi[W5a?BʡG(ĭ:~O oP rsFEݺva$7W*KI~([G3T44Zмx؟Վ)LG7gS vb<]0RPK}.ҮQ!ۦxmPxkh[HW۲>4 ubB0%ѧI;դW3NPXٰM]y*W@YQlkZ}+xSR %SɯҕY՗%$kU$76Zֻ/SKD/e6o_2`\hۼY1o Xm}m\ >g<59V BZ?YTi~im^WyPFGq1pt~'-ϥ9]kRa-!Vm`A|7{uss˱݇ Cj-h%lٷ,s%Z5-&c/.i<'mg%', :*/8!Qm$6O7!Cx+q?;X`ם\UI{L%_5:|@du\~ED}ڡQaݴ[$IбdϱrMj*H둦 1G92@zK F;{Y?2dE~U 7RC]4Éaڝ0, 8eg |oYG}n{5t>;|6w0#&{TGl.ߝ"_(wlf{;rp9Us&KY@%WŘ;4;ykh')K&ζv6bKT8 XS$@UlDE| @ì4Ѹ,cnl)q.=o]GTr*G Ÿmʯm^- gQ t|DTOmN Hv7DZrf{EDkl>#Cԅau1wvlZcÑ`6yhlE Ɋ-)!p_28/֧m%mQWU_XX2 Eׅ RNr+SmUgUgq}v-do$gAR1PČ??Lت,P2+T)p4*]ܽXӖ%d$rp}d-X+I m})nܢ8Ӏ; 9>ilV!i7\OpEjL|pwd '"mpTH|GȚw J(UEBI8<jhܹ"1oPs>Ex&3a(3=-rhz׽S}neT+jM$la%%r0q2xfju, 0`PM^꫽Cr)w~1uDP_PïKoijLXD$ 1 ]q2D1N5CcQ|mni#h\QeJc/w ;,\ eu­Bi \ E[^CE)u$@)p,h5@G^,,֮<}ܪ8 *- Q9sˀ 8BQjHa]b}}dORvzy(Y){X?Qs}O"5^1/(Ivm_uEC5WdFJ_|[QSԶéޢBq"R tLI0t¥G7Z%+jheIfǤGtPPrU|l)~ղ xh\;ۘ?`1 ΀\2mXRw==rH@:$a4?t4zGŦɼl s~tBѬa/K'P}r@9KpXF'Vw!*fs_ϨZbm؇JqM?$Fx(A-@9ǂ,u>󝔊 Tn+M@'>Aw$9B928r]ŧ$ON(6le9zGS?n=#M&M'"z H>ݼk sg[^M:;v! A{N< ڗkP#uUdql\VXDXe6ut*DfnjD8I!* #tWJՅ^ub7HC3> `l凃z`/ߦH]UO}dun. $KcK&TE9R(Xa5/q$p~zVjVBAY/ V8y?mAsZY\:SXizGW  ,uvݠ OĤL ,~!!HȽ%attfTݔ~)ji /T(bab~sro-b/*M}&32Q|ef/ rcWS޹j칀<BhAQoqն! yk=SX6|H4ӦjG]0[~Up_?z-,A ؑ,}bVPyRO &@ F q[:QA o4J@w0cJX_>5:^1@} o5C3#Y¬xeB9We > 6+lNPQğ NnS,y K;Fw8LҜ'4(&OoL2m[QoB_|q23}Ny)ޅ({[zG<5bomB#4DE;Y,giYm{.Ju7RtE-JCd-]S06<]9f5Y8j nmn? uv (^Lb9Լ@4bz';b*k!9'w|@"EBJlwQPhY/ǷqZL%sYvAG͞PtRh2?)--8.n@ƿ|*̺mY<˼a:\LpE57*>oa(_vGl1GqjEÂFI7MӴ7t&um`qZ] In?[ɷ|b B,.K@J;yr,Ao"MjyL9#}{Yq.hNq3`XPײrS&9;Nr zHX>_!VQL?}Dު#@[餝}F\U:t}9R>.o:?6trB3&/"?_ ?w ҜZIɧfve︀(69v]&G1hXNgd6XfOjc!GzO`:UԙxHG""o0 :l}-%ʒ} >gc v>&-'Չv [;,OQ!oXLBmd w#۩>xivM3PFfM&;8Su""H80DQZPO`J wׄ^s/I5}>mjȁwx`&`:^\]țȥԿ)W>6 (`z$|sd:! (NuRSڭZCCnWG `PǩU)N;UՒ.ELi:,ϬK r%9SOcS"{6ko!`D5^Nb5ě;h| o٥߬n8nLsXM[r?a봑o2V]*Юa .=Ӌ5{63Kh{KCG v))cT|e{woS8ez\`VP[S~p9dU*[wS$MbYdY@O,SpRn}kgvt+X,?{ֺٜd B ThIaf**3S6IR}ꤶx)+IM$ͻcmfi;j,agt^%[}sFpu.L[c6|,y];;}O1pO"ҥg-Fh/;E5uMn~86ǩ}]&tZjr f4zt2sQE# iĈƱL镌ї|G licNʟzvKjnh=_,*BBؚ^.Z^ħkD܋. HGJ VqqxgcD|Jzj9s4}<2yԷ8ǑH|`7-4EP6o:8lm=4 !$i~_&8<*&rl)`:*0(٫;\ѦS x!y+&,?/]QrylZ2SiG4W"Y]bso-\N0N(H[=]UKu4]f5H ?;Sz ,) @N!`b+lrrKN!T匨6&\"% @ce3M&¨&s J㯄!G`…*m@)×RxD ;Ui˅Mb ĵ!ι\eT=wm32}ӵRB[g|@sTW>F([bSTƼCu]Ј'@.wR\e0bhHskq/(bPQ.ҲrGBEb K[ۉ3Ũ3`\ܡ.F@NכJI~e(P"C,nUmIa)D΃5_* ИWq JH;!# E]2]\^qDFlO8sGXyPx^|h? n}VfΨ`75 -dh[5tz=`VWe~#t6u|0JO(M%I?(624Ư3WRIt{ ji_; --KQ.ឬy>؃&)mʴ {mef2?RF4Q]HvFS\ދ7l5t`jH- l7Ψll1ۨ<0sYU5y u=ReXb˽l.4=*zh+ DRG@"$3C_1j״yxr?IR |-n*] ȣT -(I#۹ Hv(^K[֢Fl,163mv } 1D:"U\EBB/-pТ5Ihqe/Y#G3T=8xVgSBn˄ l>ջaDFfPv#*^ 9 |H{nޓ^c┋v"t+E/b6i1l5yU0"ֲ*l37 jpt&o$KW!Ӛ쌋{G$TL^$:AHPc>>]Bȯc9'O9M)(3@>5)7"s,8)U >`dn8%t:|3nQd!+䊡C,WI`5P T%?ϸO~D}x/rꃝ}e*n+NflޟVmhfl[нmKI!sM\yR(^_h5bZwv'{.: T@lS^ ce4%!nB,Go_4AxNY>8>Yά7ݨgڈx/EBd[mU@OS/ xBݫscOPҢThqs: mqaZF_ǟɄOkӀ~[3_gҮޒ"D\(P]Ot'x"m*x(qҹ/ ьn|E撃O9]Rq FslϽ"h!Ȃj)='LIҐ*tșFXf![zhx*.3#6P6V-Fi,'; {RsS(o.0?t in̝"Ʋa5Xɥ4d7Ĝ&иfTCBX3#F,mm&VϷË_0pB"%Șݲ4,V(ZHjn6-ER%:*e& ``4z}UgV2:Bm"jҳOy5&rvGU>ߛ`wK%Ѣ<`RJ1NTzHй6>ߙ#a֠ YHpx5[66s}/NsJ~jMη<U{JB~JU;Y@Ii>7 ʊ#G^p~i9Jbd@%Kք|ndnS9t۝aF!l=#67(x=Z5Foc}3Ɯ Ȍv3 vO5R,Zu)n*ҶMx9sgЇi!X9Yml,(p6ؾ1S _ҫ0?[anƟn!&-3+JpZ5"C]J TpҜ @wn6sQL9 rpiQ2s$!$?gg`@U , a!~sRkDRT:Vt樂# hqfr5(;K,rXL *m!E-SB1-m> YyVt@z[]G 1"4~ yŧr}u(%U՜WOܧIulf U<ES_ďeDͲ}3ZT%/JBe;lT ĤGPg&F 8Df`!zP2>Լ )xԫ퉓 S> !޺@>@Vӄ@3̢ty3/9 JNVѡ;:BCZrn$7`u cKK)q`gHSy+ZuB(Xٓb5>T9ߠi:„ߚhn]҈:Lg};傗ѾrNd~Wg( <E)KO teC3'y:Mď8G^n0|:%u9QOflFcr 4l#CUHr`Àﯱ C߆GַJP57)YK]He8"V"KB'uațbV)5'ie5?8AԌ#}kJcPS|4(M1->a[VjЧeM!%y~~;QI+d6m}Bj$R Cǃ`E \! %S0xȗ g_Iu>Mȏ+ParE6>z+HkFuU@BfٸT?LOfVY 輩 +c930҃kjjqL~>.lo28&خ9'=C#gw(yGj[1 ›2!?*,m-β3^syl @W۹|&f Txagw](@܌&[*EKç=γ(7.5(cGjd_c ٓ.JRKݮ!,Xq-r ch(0oS"?)"QdP5֩5^d#ZyzroAmxꇮBy‰VjyMeؒ)Ą{B%MFmE׎z_n*zճՏT6H5Sv!B5+QvR"Lgq Gf7n,'VFً yBUB4:Q_SM@AstSL|.:[Ca㼊=Wq9lUAeDV]jYe$*ZRW/JLD5:BW1C,Pqy8xcm\bTLS 16__~oͨ耤i:^'s%o(ѡ Dy[*`B־̌<"RJ" AM+T`N) =nR]DG5 \Nu^M ji JEaN(صnv~qkg̽ :RmXn>s]=|Q< S Jڟʉln1ђ+wr|DOi{Z~>@ÛBݽԳ mL\?oR3|lǘK( / 8wˇ*;HwBq1hq~Sρ$nx3B jIg_LDU K跬9.;P^ĞGNfW{Հΐ@j(fl+ J)[Mu(薷@5yWExϼMYZn 5>ǕTWo_" Xop=reƜ^=8@Jl\'Ȳ+u >*;4u=:E>֣>ɈܾUJĊ}Yd1JkOVn}TW[L9Ds^&hkeZpMCţXrq@3,4/g)hmݛ[2kR `JKޙgA OGl:iag\שuh%Rp& Tv#ea|? A!̌]&Fgh\qSOdhlq6`&6rVI [S]sE Xi6,i?ΠNC,:{O&|KBu* [f߉%;4>}(W k͑Ǭ\8M@p@o\qy[ȏf v}P})L!u1/ÆV1KE*5~6M=U_.{3BdLʴ,b #My;J?˜&/qLZG&mcʡw&Ŋa|'J}&%rt\چ^cZZS`ô( 'a]~TQ'0=I$ϔڭb 5y'bp7gw]Y|_8sk(Uh5}M5zvEԫX@tٳŒzw~!&Ruhur!k.)Ѐ^Q-v8?ymO5wٞk ̓Nic3u:l_n 2K-` Jzu\sҝ 4?>M]iQeYqv!k&.U=p53St$89V3<tZ {c贊~}13$Itך!姴 ecRhގ9={?~B`!^L.WE ,lr~BQF;+$,9/u#_jPZ/jn;PvZ'ZG\Gr{ a!a)$m:qz&r3bl-z!/ 2e&zr׀rNgS@0Ƿc)OTWM\؇Nڜu yC,U3V 9?X2hx8ntVf, lMV))9jH$}V= uTxǟB\Vb[Vwe/37(Ϛρ;ZETPk?4hˀ}+ H?LQu* ,v)Gbtbwg{.(IC;*;ZvS7DDja#+Tmn *%g +10YpV1DE{"7(XgT ~$ * 㗌$*:ਆH91Zzk(%O3CF@h65c2wrJKdlFg-W?dJaSC'T;`OnoQ|BhVă/Ea|'N]1MMu>z!p*\HXh'\bmV|ڠHWj v'߱_fZ@30Dk="KXń-B{5"yRTMG"pfwrZg?f fS/7ex" z}gQ Np#dI5_D?\D`1t'BTY[4ui[#u U%{3xb@s T٩DdL՗ͷ]oY<\[Ԙ͓?0-vɥ}f\ܔшeր4FyhOy/ 7ɏUHӅmbO٭4197i,u p@Wg}чahlW-^+kBٚ&Oe8X+A^aS/|Y]z?pgŠq F63D {Lv\UfmC, P#m,nHM}Gl5J2ӎlw)9Ll8Xz m&~j*07+vdyww2KLZk?^We}gc5nnÁcRt.H\Wd9B*ѣ$[atS,p d%i|]GQB}pU:H>d>_[1eYm1l,:bm0ڎ: Lv`n–:OZǚ[&g-K5a;hQ`ݖG]iWzh.Ky-c#ı$Vu iy*d};c'гitSKoҞm; qbH'=){S<:< λ7W KHن"Q=h)&fHXgUyq݌Ӵpo q>i;ظDÅiRfn>8|P"q{-)ú" Y^ORĀ JC0e'^y!&zd|ge?AW`u团 id!C>re$52;Z$G?=BePJʼnPPʷ;#RTJ~ QI1-\ T$3BWvf~B!} Ly)ȁK t ] ,Qm}\joIV4B:DZ/l].7z $|ʵ,{is# |+QBɗ՜ ڛ8P G4zˎqb(<{IEl9_w90RΞ/v$ⰺڎN2O ?p,$}i=AbֲP樋ưʿt\)pQq0qEܺ!e>ZXk -JҲBc ŧ~6z6IFmP =HݱY{Pl/2:+4B8^/YPw_:o'M =QI\r7Ǻ(1ArȾdE4EQ0:Jn`"Ր&yYzkHé-׼0neONRS.+{gQ/ELc RS JXZgQC/4m.- Pe#/Z9>'nPZ[',5Ye΅$PzBG `6E\ѽ#1,F~ޮ[hb"UBgν&:,b+ǀm_nu+Ȇgɽ0GB!axXgXĹтg[q~Tە)RyPiCR!K4ANOHaq><`p}}r fQG*`fXHԅyNM46]hzI:3! Ģb.;#@~"b$m ՃfODa P?uMaYW@GovAvpi8Vٝ {1"衶WNnylc-.1wA$W(ץ?9*])YA2juuHH$@С fV ݦZlj>!n.uNdb֪w(*/x@Aam? PNBH* 6h5ג~W$߼vTRD 'ZG]Wp%NH1ѨB8O*+|tBQE\$H>x[^)oAysde۪$D_FWtc\ͻCҦ+QUrؔaHlSA/P2' t$}m-# r5=eI^>"iX긇LPZs.\?LsyrUZSHV]ۙFoޯhS/%% aprjQUalb͘35̶2EPg;n[q{H#+ƗHQ* Yuz"0~)s%d~3n!  E(z;L뼐>5D(:&wh P";優{r&: /2V_1AK o"#ϜKn}_]ÆqXla1 Ƹ;xŴZH'7ժ!&g1VnE,Wg;5fޑ05'q"ه:t=X&OL@ٷQllkݶͦʸQ q9A}9i>;HD@ vg-oj+j$Vsj!(q8@(b~<جECiz& u49 .ј ˜!ysI־{\Ep!4V5>[5-v3SS ʨ-E͍ qņ\rVL`Yt*V-T t7PM(R@9qh"F,`նr$Px[Ǖ 'Z3ʞa{Z]&jKc3ޘFf2hSB°OP\h3mb\E(wA@@l$kZGH!) .z9D;XVپяg V])^ >'7E,R r0a\F N%b KZ/5TKe݊8;4'>(NeR;Y!2 !y%zTm40U#档j1-l=zcxo5[l'_R$~Ng^(9E د7Zǘ:TYur˞cy{ ¢@Hutl'|YtLan/C3bG|8̻sNxJPquC4^T 6<2QC璆tHa下fbFMfYT_D-$AS^ss .IR?D$!؄MrH.nEN#Aʼnf"w>v6IB[CMc=]r4aOX}]=4 \%p d Gd7vDz-O׬Zf=m䎾)Sv# E5d|3-9Ez|Y5:x!#lm}0(j.tŲ.qog<6($ 4')Ob)w 2m>CItD?uFB-~lz$HMOa1NE9ĕdk٠N% HjrU~^Ķ#ZUА,0- 璬gV'%Y9<&uS ^xb$EnĽbqAȐ)3!}Zxwˇ5/S-C/FӴ39d"~a>yBC~r"SqX8ɚ# M<ٖ\1Q'd+1 MR"@I/\֠Ω2Bڐ-:pcK0r'S78wDY9BzKE@U+<2Gd,GҢ6Q1aN߬2N]vي.?BJD>/ǰ70ߒ`%럃I,X>-H\Aլe4/StZ vnJ+1!\T5ilILQfbͦWOoћa1VӖ*}950"źi ?QίN_7/zM ԡ~asWFϋ -+U57$6JH%%W[a]z!gA v?%;e3*8`>CUV R+Z7}V4eC/5p|-c0xmߎ7nPX(M:d֦bcD^~W.#^dV Nw;6uʕ3H-ܥmYU-M%$rgq1kIS>_jߓG96|Rح GbuJC8cQୗ,ORن^;kPI1(c|53iTlӐ.KT?(SJvj@ĪQ!r,z,X& X9XOjCNIQsv!brS=Dχ9 c])k;O\?]?HDr9ɹFo@@Rw| =?6 ? vB U&;p-Y= H^!=e<mMum!~{7,u(UڸUsהJ$4:WjovQ51zwd)$ 3 99($< ]IKx3"]yO~"7 ?~4p&o77JeΠ<^l_B~qųA.D Ep!}7i:Iv9kMv` F?3ϹxpgR:ĸ,)a#wfJg1{ -m>/xQ>6cU7k'-t 4ا i&NHfFHRnBZ~X؉OyDr^ǫ:`0tuGb36k6VkG(A3Ϝ#TmP)6o)``}`>;@Cd0DCo$/ g^*5e"֩ۜ*s\%_qĈIvCSwC_ˣLH8_XB7u6^"=g.pi9e߽Ę%gYǻ&f#IZA5 TBܯyuB5A:4`L?_H2\G~r%Io' wLfXT/E zTKMhXeԨ|2N!Hہ43ȩ e^ܫOmFLrUjCha0$R֛3H./%-CkuIlNH"[ixIAP~ZD"\♂"bRTJ@P= dҿǂ{2 \BBlܸ5yER"r4w;y߹ AhJ=\ [GO/qTo 2 VB4"95T &|Of 3;(" vH M)JB_"1>x ԀV rc1RZROu0qTVb D hJܪۑN@_~aY@oꤤaHEtyvPIrԮ818eu"'i84Q)xLbg:@1$_0NC%wL,W x Xq|Ijr۾\SM=\-]*i "z5 ne+۽:\_9C-f"Y ۼp%gTO:k0:,aw;^ udn3:43c1ݲ x sK`~KH{ZG>a; I.P[3ohzFV#ΟNk:e顢H QGWD 3/kԠv9ѧ{j+$b7;3Y郹PQY63oXYkIS@sMZӚ;fFFvvA4.=P;p_0_]ׂ41b.w .cæ@xmMCy:Bu/`*{/'=ѢݫUe2 ]+hck)?0 cWݮdM[ڟZ:  7 )>ANt!wڅ6+Jrdi^ZV ?M>9g^ ads( -H1n;UjöЏew"ҔPFnc}䭯qhDqOwGȻybMc0NJqo?S:20hq} ͪq0HGGۣ Fo/.JgKnGjRʍB]6]HL 'Sr?#4閍{<5fъ}uvh5kR)-g-¶%o]T># pz4$͌ ^_1Z)סѰ5 ^sK4ܻRWj@7OI>{28O5>^a)&;Tb\2~II%:slt,k]9:&…^"lxvGKhEpp|{;-Z4ܮ1PZᦙDMޜ%dnV=?CƄpїk*4@Xx{Q3';,p#cܘRvIgo&2`lYE3G&F|s5p覷8蘤7QsK&4h$PJ%x?$rq0IP*6 a o'qT5{ _F'篈5yᅔ҃u3^]G+nNF NíO,MaX9"'*"%=GZuK۸Y$qo3% Y\DRysTZ@ԣSlAX93w!`S&BAgY>z\Bh,(I(ɸ֒9.Q&UgK!ɛMJc{yరI6ػļɕa#%Q0jqƚQbNطKFx@e j !OYֽ`F'|e J}nV%Dc1bMYRJ4V*E_IJMIRYpyJ C- |eQ$QH0V%1vI;eB%\!5%m]@YFAiM.Ɓ f)tKBu&{<]Bݝ_8}p"RhOr"z !1i$6spT:?ͪNWnh إJ(e,'):;*(RY3 G]-7@8&SmKuZN=Т _vV5~IǾq}Ã7,B`Iǐ9һJ ]#$(=357z~l'దc }էH̛v ;"T7Ȼ=AWŜż-Fݡy+푠 W]iwB+`(IѪ|k?5|cn 6+JŐ?&7ȴ$$ᅑCdïc,veک jZ7rhn5-!5Z7%ut̼V&A5&Kk=vJฅD;C4qa(zF13А[W"e+e_VTl(y@0jdָ3`:=M9b;$i.&#*EuzL }r;uaR}@M;ƣ(%Tz3LlL֧g/QjԲm%c!Hk93ɲ,M<jW#vfݮ-t{k'^C\aর5,wNZ ϡWtSzo-iʈd4lKYP8L$̗`h .5}eMq0frj|8aRf:bo+[o2_%^7K΢<p̄7trbP c gU*>}Q-/)ådo#s7ʦ))Gb8vyxWøH]xáwDVp(hnql _A٬Bu{U&zQ @wяM h+V7f.VFKc&vPi%UGϪΪ' Dx܃UxBA7;ݸAVCxE} rg66OsPZT`.Jgg4eBER%n697`EvPHMz# ^o;ӓ@i`u12鷎\Rԩ @UacqWIR"[0%`=jRV%|vI4Gӎ ou >0h?9fg2i %ϵTV䈯; qkf\l .b|A"$vʙ.fn*eV C,Gp𯱷jIzAk0@Au ɥK{ѫUQg%%`:gxytⱈ.!|o WTIt]O̎J )Uv1q/բ`0 M炖ZtGD5FQV6iJ f!~$s.!Q"}*f3dn_1.A:!S?ymF`6T6vۭ6<-Zh]ħr~σ)-je p{MCSFZ r.|Nt+U];+ (camk<^?b%C,r4y@QzSKOa tPfZ^w$albYl-֮_Qg$/0d#֥jdKyH^|9_MbHú|J*u6Lj'E*<è$IU*HhUrB@j]|@}[Bd6S~ أ(P\g~~Nf?]A;В$A=N)wNÔ!0dΪ Os|I5sЋo|>[K 勺RiGp.IރqGթ8;[9_lXݛQk7ĢA$e%6 aн;. 2Bn[vZ[Zoil#Xh#~oN=OrÊ*e4=՜hLLlV#4gbP}u5o ;8*w6k.㹉r 50(`,O:Ls~G8 S/{2!tҋ)uU|KezHkWVQ+OegSB\8>%Klh5/FIrf xVDaX]egI#7! ]ڕwRFeN?@]rInj1a8څhU/T4]5 Qz+Gà? \m5T@^[o C7ފ2&=DCL[ nO}J Fs. a;=>UEּ4AiY w̄ 2Cz1)|GAFH%]UjAY~9/#"1]:|>-!ڕ*`/1G1WgV,ô*7#HCT{7= G&  M^U,`Mqن͟Jej_'6GCO48m!=xfb=-x l?1BF6<;UUw RM0AEÛ} sd@85s xy^<;5VK$2[juv>q@=urX @{?]L?=]VB/JJo}^vǘ=h#&-EP`䀣QbIäY[Kl*80~ݣ.H90Z\g*Qr"/=L^ 7s9laٽ*7:7_SYfފ3lݲǵm8U%dPj"*깿Ֆ5MG~85٧>'*> :!$KCNz;4=V5C.zAY YŎ(tIMb#Ừ>\"d]r0PV2@ xr=#ӿ,Stxg# ϲ1j@Vs;*]C<5V.A! %CI:mblˤݮZ]%S񆶲қ ,'q2`pTBDįj~R'7ďD:ɁRhOQ$W>=C$:kaLuqG B.xLyZw/[@*5fs+05})uBn/ QYKӧH#Ap鷸kޔ!VgqW!,*){ܬ =VSWSHpǰ q&Vri ŸRSolA:ī-_'xgrr$.crvB`rkh) @q;_H 0Oa=g m|K gàP[cW1w(9ۋfoy1KN(}N=d]h.3%`QٍDɯ@mucW1V;;UzCО9e7S_qr !I)Nډ(qTnSD%nd~Egge2ب!)!'@Pf I{a{H4 콐C&6/G3lo*@9h`uǙ|H.{l`5hC.hQwKi2ګ133נTk6pq(WN^ 2uA$;-z貂82Q-r'Cdfq4+" /PeH\M5/6{J՗SgM ĝQ^\^t%H 7 `S2JGOM#wb̩owm}! ;/7T3y?ׄs;T?*1WG%si=SHf?ltOG<6cە.&$iM 0zFe׼6R$7)YA[>,;7лlNhUeI n쏛f%B;}5EH q)WW3Ç41OAjA[D7 ~VD&I4w+)@>V" ,cI!aB93V憛gV>-m[zNĨ4jO1=d228˙1){NZ E07a 8lN&j A9UdsAFg"Sww@=+e.O։.{Pr$>`~s^sԍAr2pԠz  +P0Un.+30'Y(0 Tބ0QW\ᵰckoT%sAl MxHmS6x@_mgqz@|rC o( LŀkTzn gج~mj#m`=x|h \}JOMF76hO.> p\Ԝ96 (Z 93PW ~I0QfW"=RKa- ߢ'Ĉ.,:\1sI@zona&{ޓOh)tY}aZ%RzeF})b)LYDM\CL%HQyz>8U{TljD0m2.'zQi:O(9 x]ƪi?ʓ忳՞.^`y~: [)G>i ύ4JG=?Qj}4ydO: vا2Tnvv= ?R܋턜|^l\+i˲UGFVi*d&J r=kӽ' k^%ū"ղYFI& d:ly3Gk8Bto}·;ΗN)EurbQ idt/ekǾ_;8qC(R)sy8^!V< I෢ȶ,0p+RgC`gW9OLcye Ifd5~RwgQᬕ3(/Dj9B=rx^nXl*쐛R̦Sk+F|"X'p-@ &vzKVLn,>º9} Ea3JBdZ(jERs4bf(6~` -؁WrԅP@#v+0 qָ>=6; Mz~|xT@j8fBu: S@wC (a9Dz %MWk6PNo շ r'<-Db_UtZ67O0yn&UPl݉,Bͷɬ8zX:Ye(@ǎF^_sbP*(/Td՟E y(-dM M.A_Qgߧ-ɴe {kƉR?M/EY*ºO|Z{|UM<͝_Oy޼~p:|'LX^1Zr.<$zlx=5pe&ckeb~jgHvB'KB&}"+)x8VSX},uAzDõg+W7"{ lۻ?ܖ"sc3Awp%@m1/g3x:S)THY@7`+ Gb^|;d xue8{ԛZJ%) D{3{B f\>[ӑ֗)#^V:4P:E{8,8(#ܭ}we"ی=Ho sK4cU$uq2},)PmB D  Y'5!w6r~€+Չlh:)2P01mAk4N6 =&3M&Ʊ^UpɧuPUμEW76kMx~Zqf*gn Ip zJ+OϛD9o'x0g+dc?ḷÃu80Wv:N:`$~ ^yHsE73 @ul3zkfW:g$#̘_,_]&`Q 1VęWރbg[ND~dbAlwl Rs+\ĘTWL-ve>PMg ?#ORPUC"cUgo礇3oz D]Q;w\ų1+U;H^b9LugcZFs #l)Tq6/ybO}ZRxǮp:*`GuIng>-F HHY!![FQ%4XIle*Yxѓo8)+ C_* 3:'8t(1dl$ɁY;bWD=˦Saˌ<LdjSz)jO>T8 YO /;iI B~bG wI`;+􍔘.Z r&yW+[ /a7ש\C/c@ *BPm!1:^Zu߸G}'M|DC03_BK];{W z6ȵ&pPruedIW!z2p|cQ$N%!J^-"lPG6CU4:F\𪊉U_VˤϋPg&F`:TٌuqlGI l&J[w9O2z-idk0Yn \)8V]A<.}\.hc/xC{k⃸@1*Zl6DQ=Y -d&qy/w"A+>^MыAƐDГw?1˦XMs'sl,4, hC(CnaC< 5;4Na@<H Bkw*2!T^H6Qi%<,D5r"{I:^ J L#Ot|FC+")\[E.4 鸯Ȕ04Rxڠ`3.7/w>9řgPP ?}DczA–A@aFSnpTK*U2s-Zgr-e·$|KCl.A;*",FАr{6Y#Z:;8^n&6Q *Й{\kPWG•iNx@T>ڱOyuUGy:M1nS ~M!aiAFO׵;js'N4d}>HHsjni:ݏGCacPqBV j+v\\*o$v>bEK 861ŕPS$8)ʲ}E<