/* * midend.c: general middle fragment sitting between the * platform-specific front end and game-specific back end. * Maintains a move list, takes care of Undo and Redo commands, and * processes standard keystrokes for undo/redo/new/quit. */ #include #include #include #include #include #include "puzzles.h" enum { DEF_PARAMS, DEF_SEED, DEF_DESC }; /* for midend_game_id_int */ enum { NEWGAME, MOVE, SOLVE, RESTART };/* for midend_state_entry.movetype */ #define special(type) ( (type) != MOVE ) struct midend_state_entry { game_state *state; char *movestr; int movetype; }; struct midend { frontend *frontend; random_state *random; const game *ourgame; struct preset_menu *preset_menu; char **encoded_presets; /* for midend_which_preset to check against */ int n_encoded_presets; /* * `desc' and `privdesc' deserve a comment. * * `desc' is the game description as presented to the user when * they ask for Game -> Specific. `privdesc', if non-NULL, is a * different game description used to reconstruct the initial * game_state when de-serialising. If privdesc is NULL, `desc' * is used for both. * * For almost all games, `privdesc' is NULL and never used. The * exception (as usual) is Mines: the initial game state has no * squares open at all, but after the first click `desc' is * rewritten to describe a game state with an initial click and * thus a bunch of squares open. If we used that desc to * serialise and deserialise, then the initial game state after * deserialisation would look unlike the initial game state * beforehand, and worse still execute_move() might fail on the * attempted first click. So `privdesc' is also used in this * case, to provide a game description describing the same * fixed mine layout _but_ no initial click. (These game IDs * may also be typed directly into Mines if you like.) */ char *desc, *privdesc, *seedstr; char *aux_info; enum { GOT_SEED, GOT_DESC, GOT_NOTHING } genmode; int nstates, statesize, statepos; struct midend_state_entry *states; char *newgame_undo_buf; int newgame_undo_len, newgame_undo_size; game_params *params, *curparams; game_drawstate *drawstate; game_ui *ui; game_state *oldstate; float anim_time, anim_pos; float flash_time, flash_pos; int dir; int timing; float elapsed; char *laststatus; drawing *drawing; int pressed_mouse_button; int preferred_tilesize, tilesize, winwidth, winheight; void (*game_id_change_notify_function)(void *); void *game_id_change_notify_ctx; }; #define ensure(me) do { \ if ((me)->nstates >= (me)->statesize) { \ (me)->statesize = (me)->nstates + 128; \ (me)->states = sresize((me)->states, (me)->statesize, \ struct midend_state_entry); \ } \ } while (0) /* * Structure storing all the decoded data from reading a serialised * game. We keep it in one of these while we check its sanity, and * only once we're completely satisfied do we install it all in the * midend structure proper. */ struct deserialise_data { char *seed, *parstr, *desc, *privdesc; char *auxinfo, *uistr, *cparstr; float elapsed; game_params *params, *cparams; game_ui *ui; struct midend_state_entry *states; int nstates, statepos; }; /* * Forward reference. */ static const char *midend_deserialise_internal( midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx, char *(*check)(void *ctx, midend *, const struct deserialise_data *), void *cctx); void midend_reset_tilesize(midend *me) { me->preferred_tilesize = me->ourgame->preferred_tilesize; { /* * Allow an environment-based override for the default tile * size by defining a variable along the lines of * `NET_TILESIZE=15'. */ char buf[80], *e; int j, k, ts; sprintf(buf, "%s_TILESIZE", me->ourgame->name); for (j = k = 0; buf[j]; j++) if (!isspace((unsigned char)buf[j])) buf[k++] = toupper((unsigned char)buf[j]); buf[k] = '\0'; if ((e = getenv(buf)) != NULL && sscanf(e, "%d", &ts) == 1 && ts > 0) me->preferred_tilesize = ts; } } midend *midend_new(frontend *fe, const game *ourgame, const drawing_api *drapi, void *drhandle) { midend *me = snew(midend); void *randseed; int randseedsize; get_random_seed(&randseed, &randseedsize); me->frontend = fe; me->ourgame = ourgame; me->random = random_new(randseed, randseedsize); me->nstates = me->statesize = me->statepos = 0; me->states = NULL; me->newgame_undo_buf = NULL; me->newgame_undo_size = me->newgame_undo_len = 0; me->params = ourgame->default_params(); me->game_id_change_notify_function = NULL; me->game_id_change_notify_ctx = NULL; /* * Allow environment-based changing of the default settings by * defining a variable along the lines of `NET_DEFAULT=25x25w' * in which the value is an encoded parameter string. */ { char buf[80], *e; int j, k; sprintf(buf, "%s_DEFAULT", me->ourgame->name); for (j = k = 0; buf[j]; j++) if (!isspace((unsigned char)buf[j])) buf[k++] = toupper((unsigned char)buf[j]); buf[k] = '\0'; if ((e = getenv(buf)) != NULL) me->ourgame->decode_params(me->params, e); } me->curparams = NULL; me->desc = me->privdesc = NULL; me->seedstr = NULL; me->aux_info = NULL; me->genmode = GOT_NOTHING; me->drawstate = NULL; me->oldstate = NULL; me->preset_menu = NULL; me->anim_time = me->anim_pos = 0.0F; me->flash_time = me->flash_pos = 0.0F; me->dir = 0; me->ui = NULL; me->pressed_mouse_button = 0; me->laststatus = NULL; me->timing = FALSE; me->elapsed = 0.0F; me->tilesize = me->winwidth = me->winheight = 0; if (drapi) me->drawing = drawing_new(drapi, me, drhandle); else me->drawing = NULL; midend_reset_tilesize(me); sfree(randseed); return me; } const game *midend_which_game(midend *me) { return me->ourgame; } static void midend_purge_states(midend *me) { while (me->nstates > me->statepos) { me->ourgame->free_game(me->states[--me->nstates].state); if (me->states[me->nstates].movestr) sfree(me->states[me->nstates].movestr); } } static void midend_free_game(midend *me) { while (me->nstates > 0) { me->nstates--; me->ourgame->free_game(me->states[me->nstates].state); sfree(me->states[me->nstates].movestr); } if (me->drawstate) me->ourgame->free_drawstate(me->drawing, me->drawstate); } static void midend_free_preset_menu(midend *me, struct preset_menu *menu) { if (menu) { int i; for (i = 0; i < menu->n_entries; i++) { sfree(menu->entries[i].title); if (menu->entries[i].params) me->ourgame->free_params(menu->entries[i].params); midend_free_preset_menu(me, menu->entries[i].submenu); } sfree(menu->entries); sfree(menu); } } void midend_free(midend *me) { midend_free_game(me); if (me->drawing) drawing_free(me->drawing); random_free(me->random); sfree(me->newgame_undo_buf); sfree(me->states); sfree(me->desc); sfree(me->privdesc); sfree(me->seedstr); sfree(me->aux_info); me->ourgame->free_params(me->params); midend_free_preset_menu(me, me->preset_menu); if (me->ui) me->ourgame->free_ui(me->ui); if (me->curparams) me->ourgame->free_params(me->curparams); sfree(me->laststatus); sfree(me); } static void midend_size_new_drawstate(midend *me) { /* * Don't even bother, if we haven't worked out our tile size * anyway yet. */ if (me->tilesize > 0) { me->ourgame->compute_size(me->params, me->tilesize, &me->winwidth, &me->winheight); me->ourgame->set_size(me->drawing, me->drawstate, me->params, me->tilesize); } } void midend_size(midend *me, int *x, int *y, int user_size) { int min, max; int rx, ry; /* * We can't set the size on the same drawstate twice. So if * we've already sized one drawstate, we must throw it away and * create a new one. */ if (me->drawstate && me->tilesize > 0) { me->ourgame->free_drawstate(me->drawing, me->drawstate); me->drawstate = me->ourgame->new_drawstate(me->drawing, me->states[0].state); } /* * Find the tile size that best fits within the given space. If * `user_size' is TRUE, we must actually find the _largest_ such * tile size, in order to get as close to the user's explicit * request as possible; otherwise, we bound above at the game's * preferred tile size, so that the game gets what it wants * provided that this doesn't break the constraint from the * front-end (which is likely to be a screen size or similar). */ if (user_size) { max = 1; do { max *= 2; me->ourgame->compute_size(me->params, max, &rx, &ry); } while (rx <= *x && ry <= *y); } else max = me->preferred_tilesize + 1; min = 1; /* * Now binary-search between min and max. We're looking for a * boundary rather than a value: the point at which tile sizes * stop fitting within the given dimensions. Thus, we stop when * max and min differ by exactly 1. */ while (max - min > 1) { int mid = (max + min) / 2; me->ourgame->compute_size(me->params, mid, &rx, &ry); if (rx <= *x && ry <= *y) min = mid; else max = mid; } /* * Now `min' is a valid size, and `max' isn't. So use `min'. */ me->tilesize = min; if (user_size) /* If the user requested a change in size, make it permanent. */ me->preferred_tilesize = me->tilesize; midend_size_new_drawstate(me); *x = me->winwidth; *y = me->winheight; } int midend_tilesize(midend *me) { return me->tilesize; } void midend_set_params(midend *me, game_params *params) { me->ourgame->free_params(me->params); me->params = me->ourgame->dup_params(params); } game_params *midend_get_params(midend *me) { return me->ourgame->dup_params(me->params); } static void midend_set_timer(midend *me) { me->timing = (me->ourgame->is_timed && me->ourgame->timing_state(me->states[me->statepos-1].state, me->ui)); if (me->timing || me->flash_time || me->anim_time) activate_timer(me->frontend); else deactivate_timer(me->frontend); } void midend_force_redraw(midend *me) { if (me->drawstate) me->ourgame->free_drawstate(me->drawing, me->drawstate); me->drawstate = me->ourgame->new_drawstate(me->drawing, me->states[0].state); midend_size_new_drawstate(me); midend_redraw(me); } static void newgame_serialise_write(void *ctx, void *buf, int len) { midend *const me = ctx; int new_len; assert(len < INT_MAX - me->newgame_undo_len); new_len = me->newgame_undo_len + len; if (new_len > me->newgame_undo_size) { me->newgame_undo_size = new_len + new_len / 4 + 1024; me->newgame_undo_buf = sresize(me->newgame_undo_buf, me->newgame_undo_size, char); } memcpy(me->newgame_undo_buf + me->newgame_undo_len, buf, len); me->newgame_undo_len = new_len; } void midend_new_game(midend *me) { me->newgame_undo_len = 0; midend_serialise(me, newgame_serialise_write, me); midend_stop_anim(me); midend_free_game(me); assert(me->nstates == 0); if (me->genmode == GOT_DESC) { me->genmode = GOT_NOTHING; } else { random_state *rs; if (me->genmode == GOT_SEED) { me->genmode = GOT_NOTHING; } else { /* * Generate a new random seed. 15 digits comes to about * 48 bits, which should be more than enough. * * I'll avoid putting a leading zero on the number, * just in case it confuses anybody who thinks it's * processed as an integer rather than a string. */ char newseed[16]; int i; newseed[15] = '\0'; newseed[0] = '1' + (char)random_upto(me->random, 9); for (i = 1; i < 15; i++) newseed[i] = '0' + (char)random_upto(me->random, 10); sfree(me->seedstr); me->seedstr = dupstr(newseed); if (me->curparams) me->ourgame->free_params(me->curparams); me->curparams = me->ourgame->dup_params(me->params); } sfree(me->desc); sfree(me->privdesc); sfree(me->aux_info); me->aux_info = NULL; rs = random_new(me->seedstr, strlen(me->seedstr)); /* * If this midend has been instantiated without providing a * drawing API, it is non-interactive. This means that it's * being used for bulk game generation, and hence we should * pass the non-interactive flag to new_desc. */ me->desc = me->ourgame->new_desc(me->curparams, rs, &me->aux_info, (me->drawing != NULL)); me->privdesc = NULL; random_free(rs); } ensure(me); /* * It might seem a bit odd that we're using me->params to * create the initial game state, rather than me->curparams * which is better tailored to this specific game and which we * always know. * * It's supposed to be an invariant in the midend that * me->params and me->curparams differ in no aspect that is * important after generation (i.e. after new_desc()). By * deliberately passing the _less_ specific of these two * parameter sets, we provoke play-time misbehaviour in the * case where a game has failed to encode a play-time parameter * in the non-full version of encode_params(). */ me->states[me->nstates].state = me->ourgame->new_game(me, me->params, me->desc); /* * As part of our commitment to self-testing, test the aux * string to make sure nothing ghastly went wrong. */ if (me->ourgame->can_solve && me->aux_info) { game_state *s; const char *msg; char *movestr; msg = NULL; movestr = me->ourgame->solve(me->states[0].state, me->states[0].state, me->aux_info, &msg); assert(movestr && !msg); s = me->ourgame->execute_move(me->states[0].state, movestr); assert(s); me->ourgame->free_game(s); sfree(movestr); } me->states[me->nstates].movestr = NULL; me->states[me->nstates].movetype = NEWGAME; me->nstates++; me->statepos = 1; me->drawstate = me->ourgame->new_drawstate(me->drawing, me->states[0].state); midend_size_new_drawstate(me); me->elapsed = 0.0F; me->flash_pos = me->flash_time = 0.0F; me->anim_pos = me->anim_time = 0.0F; if (me->ui) me->ourgame->free_ui(me->ui); me->ui = me->ourgame->new_ui(me->states[0].state); midend_set_timer(me); me->pressed_mouse_button = 0; if (me->game_id_change_notify_function) me->game_id_change_notify_function(me->game_id_change_notify_ctx); } int midend_can_undo(midend *me) { return (me->statepos > 1 || me->newgame_undo_len); } int midend_can_redo(midend *me) { return (me->statepos < me->nstates); } struct newgame_undo_deserialise_read_ctx { midend *me; int len, pos; }; static int newgame_undo_deserialise_read(void *ctx, void *buf, int len) { struct newgame_undo_deserialise_read_ctx *const rctx = ctx; midend *const me = rctx->me; int use = min(len, rctx->len - rctx->pos); memcpy(buf, me->newgame_undo_buf + rctx->pos, use); rctx->pos += use; return use; } struct newgame_undo_deserialise_check_ctx { int refused; }; static char *newgame_undo_deserialise_check( void *vctx, midend *me, const struct deserialise_data *data) { struct newgame_undo_deserialise_check_ctx *ctx = (struct newgame_undo_deserialise_check_ctx *)vctx; char *old, *new; /* * Undoing a New Game operation is only permitted if it doesn't * change the game parameters. The point of having the ability at * all is to recover from the momentary finger error of having hit * the 'n' key (perhaps in place of some other nearby key), or hit * the New Game menu item by mistake when aiming for the adjacent * Restart; in both those situations, the game params are the same * before and after the new-game operation. * * In principle, we could generalise this so that _any_ call to * midend_new_game could be undone, but that would need all front * ends to be alert to the possibility that any keystroke passed * to midend_process_key might (if it turns out to have been one * of the synonyms for undo, which the frontend doesn't * necessarily check for) have various knock-on effects like * needing to select a different preset in the game type menu, or * even resizing the window. At least for the moment, it's easier * not to do that, and to simply disallow any newgame-undo that is * disruptive in either of those ways. * * We check both params and cparams, to be as safe as possible. */ old = me->ourgame->encode_params(me->params, TRUE); new = me->ourgame->encode_params(data->params, TRUE); if (strcmp(old, new)) { /* Set a flag to distinguish this deserialise failure * from one due to faulty decoding */ ctx->refused = TRUE; return "Undoing this new-game operation would change params"; } old = me->ourgame->encode_params(me->curparams, TRUE); new = me->ourgame->encode_params(data->cparams, TRUE); if (strcmp(old, new)) { ctx->refused = TRUE; return "Undoing this new-game operation would change params"; } /* * Otherwise, fine, go ahead. */ return NULL; } static int midend_undo(midend *me) { const char *deserialise_error; if (me->statepos > 1) { if (me->ui) me->ourgame->changed_state(me->ui, me->states[me->statepos-1].state, me->states[me->statepos-2].state); me->statepos--; me->dir = -1; return 1; } else if (me->newgame_undo_len) { /* This undo cannot be undone with redo */ struct newgame_undo_deserialise_read_ctx rctx; struct newgame_undo_deserialise_check_ctx cctx; rctx.me = me; rctx.len = me->newgame_undo_len; /* copy for reentrancy safety */ rctx.pos = 0; cctx.refused = FALSE; deserialise_error = midend_deserialise_internal( me, newgame_undo_deserialise_read, &rctx, newgame_undo_deserialise_check, &cctx); if (cctx.refused) { /* * Our post-deserialisation check shows that we can't use * this saved game after all. (deserialise_error will * contain the dummy error message generated by our check * function, which we ignore.) */ return 0; } else { /* * There should never be any _other_ deserialisation * error, because this serialised data has been held in * our memory since it was created, and hasn't had any * opportunity to be corrupted on disk, accidentally * replaced by the wrong file, etc., by user error. */ assert(!deserialise_error); return 1; } } else return 0; } static int midend_redo(midend *me) { if (me->statepos < me->nstates) { if (me->ui) me->ourgame->changed_state(me->ui, me->states[me->statepos-1].state, me->states[me->statepos].state); me->statepos++; me->dir = +1; return 1; } else return 0; } static void midend_finish_move(midend *me) { float flashtime; /* * We do not flash if the later of the two states is special. * This covers both forward Solve moves and backward (undone) * Restart moves. */ if ((me->oldstate || me->statepos > 1) && ((me->dir > 0 && !special(me->states[me->statepos-1].movetype)) || (me->dir < 0 && me->statepos < me->nstates && !special(me->states[me->statepos].movetype)))) { flashtime = me->ourgame->flash_length(me->oldstate ? me->oldstate : me->states[me->statepos-2].state, me->states[me->statepos-1].state, me->oldstate ? me->dir : +1, me->ui); if (flashtime > 0) { me->flash_pos = 0.0F; me->flash_time = flashtime; } } if (me->oldstate) me->ourgame->free_game(me->oldstate); me->oldstate = NULL; me->anim_pos = me->anim_time = 0; me->dir = 0; midend_set_timer(me); } void midend_stop_anim(midend *me) { if (me->oldstate || me->anim_time != 0) { midend_finish_move(me); midend_redraw(me); } } void midend_restart_game(midend *me) { game_state *s; assert(me->statepos >= 1); if (me->statepos == 1) return; /* no point doing anything at all! */ /* * During restart, we reconstruct the game from the (public) * game description rather than from states[0], because that * way Mines gets slightly more sensible behaviour (restart * goes to _after_ the first click so you don't have to * remember where you clicked). */ s = me->ourgame->new_game(me, me->params, me->desc); /* * Now enter the restarted state as the next move. */ midend_stop_anim(me); midend_purge_states(me); ensure(me); me->states[me->nstates].state = s; me->states[me->nstates].movestr = dupstr(me->desc); me->states[me->nstates].movetype = RESTART; me->statepos = ++me->nstates; if (me->ui) me->ourgame->changed_state(me->ui, me->states[me->statepos-2].state, me->states[me->statepos-1].state); me->flash_pos = me->flash_time = 0.0F; midend_finish_move(me); midend_redraw(me); midend_set_timer(me); } static int midend_really_process_key(midend *me, int x, int y, int button) { game_state *oldstate = me->ourgame->dup_game(me->states[me->statepos - 1].state); int type = MOVE, gottype = FALSE, ret = 1; float anim_time; game_state *s; char *movestr = NULL; if (!IS_UI_FAKE_KEY(button)) { movestr = me->ourgame->interpret_move( me->states[me->statepos-1].state, me->ui, me->drawstate, x, y, button); } if (!movestr) { if (button == 'n' || button == 'N' || button == '\x0E' || button == UI_NEWGAME) { midend_new_game(me); midend_redraw(me); goto done; /* never animate */ } else if (button == 'u' || button == 'U' || button == '\x1A' || button == '\x1F' || button == UI_UNDO) { midend_stop_anim(me); type = me->states[me->statepos-1].movetype; gottype = TRUE; if (!midend_undo(me)) goto done; } else if (button == 'r' || button == 'R' || button == '\x12' || button == '\x19' || button == UI_REDO) { midend_stop_anim(me); if (!midend_redo(me)) goto done; } else if ((button == '\x13' || button == UI_SOLVE) && me->ourgame->can_solve) { if (midend_solve(me)) goto done; } else if (button == 'q' || button == 'Q' || button == '\x11' || button == UI_QUIT) { ret = 0; goto done; } else goto done; } else { if (movestr == UI_UPDATE) s = me->states[me->statepos-1].state; else { s = me->ourgame->execute_move(me->states[me->statepos-1].state, movestr); assert(s != NULL); } if (s == me->states[me->statepos-1].state) { /* * make_move() is allowed to return its input state to * indicate that although no move has been made, the UI * state has been updated and a redraw is called for. */ midend_redraw(me); midend_set_timer(me); goto done; } else if (s) { midend_stop_anim(me); midend_purge_states(me); ensure(me); assert(movestr != NULL); me->states[me->nstates].state = s; me->states[me->nstates].movestr = movestr; me->states[me->nstates].movetype = MOVE; me->statepos = ++me->nstates; me->dir = +1; if (me->ui) me->ourgame->changed_state(me->ui, me->states[me->statepos-2].state, me->states[me->statepos-1].state); } else { goto done; } } if (!gottype) type = me->states[me->statepos-1].movetype; /* * See if this move requires an animation. */ if (special(type) && !(type == SOLVE && (me->ourgame->flags & SOLVE_ANIMATES))) { anim_time = 0; } else { anim_time = me->ourgame->anim_length(oldstate, me->states[me->statepos-1].state, me->dir, me->ui); } me->oldstate = oldstate; oldstate = NULL; if (anim_time > 0) { me->anim_time = anim_time; } else { me->anim_time = 0.0; midend_finish_move(me); } me->anim_pos = 0.0; midend_redraw(me); midend_set_timer(me); done: if (oldstate) me->ourgame->free_game(oldstate); return ret; } int midend_process_key(midend *me, int x, int y, int button) { int ret = 1; /* * Harmonise mouse drag and release messages. * * Some front ends might accidentally switch from sending, say, * RIGHT_DRAG messages to sending LEFT_DRAG, half way through a * drag. (This can happen on the Mac, for example, since * RIGHT_DRAG is usually done using Command+drag, and if the * user accidentally releases Command half way through the drag * then there will be trouble.) * * It would be an O(number of front ends) annoyance to fix this * in the front ends, but an O(number of back ends) annoyance * to have each game capable of dealing with it. Therefore, we * fix it _here_ in the common midend code so that it only has * to be done once. * * The possible ways in which things can go screwy in the front * end are: * * - in a system containing multiple physical buttons button * presses can inadvertently overlap. We can see ABab (caps * meaning button-down and lowercase meaning button-up) when * the user had semantically intended AaBb. * * - in a system where one button is simulated by means of a * modifier key and another button, buttons can mutate * between press and release (possibly during drag). So we * can see Ab instead of Aa. * * Definite requirements are: * * - button _presses_ must never be invented or destroyed. If * the user presses two buttons in succession, the button * presses must be transferred to the backend unchanged. So * if we see AaBb , that's fine; if we see ABab (the button * presses inadvertently overlapped) we must somehow * `correct' it to AaBb. * * - every mouse action must end up looking like a press, zero * or more drags, then a release. This allows back ends to * make the _assumption_ that incoming mouse data will be * sane in this regard, and not worry about the details. * * So my policy will be: * * - treat any button-up as a button-up for the currently * pressed button, or ignore it if there is no currently * pressed button. * * - treat any drag as a drag for the currently pressed * button, or ignore it if there is no currently pressed * button. * * - if we see a button-down while another button is currently * pressed, invent a button-up for the first one and then * pass the button-down through as before. * * 2005-05-31: An addendum to the above. Some games might want * a `priority order' among buttons, such that if one button is * pressed while another is down then a fixed one of the * buttons takes priority no matter what order they're pressed * in. Mines, in particular, wants to treat a left+right click * like a left click for the benefit of users of other * implementations. So the last of the above points is modified * in the presence of an (optional) button priority order. * * A further addition: we translate certain keyboard presses to * cursor key 'select' buttons, so that a) frontends don't have * to translate these themselves (like they do for CURSOR_UP etc), * and b) individual games don't have to hard-code button presses * of '\n' etc for keyboard-based cursors. The choice of buttons * here could eventually be controlled by a runtime configuration * option. */ if (IS_MOUSE_DRAG(button) || IS_MOUSE_RELEASE(button)) { if (me->pressed_mouse_button) { if (IS_MOUSE_DRAG(button)) { button = me->pressed_mouse_button + (LEFT_DRAG - LEFT_BUTTON); } else { button = me->pressed_mouse_button + (LEFT_RELEASE - LEFT_BUTTON); } } else return ret; /* ignore it */ } else if (IS_MOUSE_DOWN(button) && me->pressed_mouse_button) { /* * If the new button has lower priority than the old one, * don't bother doing this. */ if (me->ourgame->flags & BUTTON_BEATS(me->pressed_mouse_button, button)) return ret; /* just ignore it */ /* * Fabricate a button-up for the previously pressed button. */ ret = ret && midend_really_process_key (me, x, y, (me->pressed_mouse_button + (LEFT_RELEASE - LEFT_BUTTON))); } /* * Translate keyboard presses to cursor selection. */ if (button == '\n' || button == '\r') button = CURSOR_SELECT; if (button == ' ') button = CURSOR_SELECT2; /* * Normalise both backspace characters (8 and 127) to \b. Easier * to do this once, here, than to require all front ends to * carefully generate the same one - now each front end can * generate whichever is easiest. */ if (button == '\177') button = '\b'; /* * Now send on the event we originally received. */ ret = ret && midend_really_process_key(me, x, y, button); /* * And update the currently pressed button. */ if (IS_MOUSE_RELEASE(button)) me->pressed_mouse_button = 0; else if (IS_MOUSE_DOWN(button)) me->pressed_mouse_button = button; return ret; } void midend_redraw(midend *me) { assert(me->drawing); if (me->statepos > 0 && me->drawstate) { start_draw(me->drawing); if (me->oldstate && me->anim_time > 0 && me->anim_pos < me->anim_time) { assert(me->dir != 0); me->ourgame->redraw(me->drawing, me->drawstate, me->oldstate, me->states[me->statepos-1].state, me->dir, me->ui, me->anim_pos, me->flash_pos); } else { me->ourgame->redraw(me->drawing, me->drawstate, NULL, me->states[me->statepos-1].state, +1 /*shrug*/, me->ui, 0.0, me->flash_pos); } end_draw(me->drawing); } } /* * Nasty hacky function used to implement the --redo option in * gtk.c. Only used for generating the puzzles' icons. */ void midend_freeze_timer(midend *me, float tprop) { me->anim_pos = me->anim_time * tprop; midend_redraw(me); deactivate_timer(me->frontend); } void midend_timer(midend *me, float tplus) { int need_redraw = (me->anim_time > 0 || me->flash_time > 0); me->anim_pos += tplus; if (me->anim_pos >= me->anim_time || me->anim_time == 0 || !me->oldstate) { if (me->anim_time > 0) midend_finish_move(me); } me->flash_pos += tplus; if (me->flash_pos >= me->flash_time || me->flash_time == 0) { me->flash_pos = me->flash_time = 0; } if (need_redraw) midend_redraw(me); if (me->timing) { float oldelapsed = me->elapsed; me->elapsed += tplus; if ((int)oldelapsed != (int)me->elapsed) status_bar(me->drawing, me->laststatus ? me->laststatus : ""); } midend_set_timer(me); } float *midend_colours(midend *me, int *ncolours) { float *ret; ret = me->ourgame->colours(me->frontend, ncolours); { int i; /* * Allow environment-based overrides for the standard * colours by defining variables along the lines of * `NET_COLOUR_4=6000c0'. */ for (i = 0; i < *ncolours; i++) { char buf[80], *e; unsigned int r, g, b; int j, k; sprintf(buf, "%s_COLOUR_%d", me->ourgame->name, i); for (j = k = 0; buf[j]; j++) if (!isspace((unsigned char)buf[j])) buf[k++] = toupper((unsigned char)buf[j]); buf[k] = '\0'; if ((e = getenv(buf)) != NULL && sscanf(e, "%2x%2x%2x", &r, &g, &b) == 3) { ret[i*3 + 0] = r / 255.0F; ret[i*3 + 1] = g / 255.0F; ret[i*3 + 2] = b / 255.0F; } } } return ret; } struct preset_menu *preset_menu_new(void) { struct preset_menu *menu = snew(struct preset_menu); menu->n_entries = 0; menu->entries_size = 0; menu->entries = NULL; return menu; } static struct preset_menu_entry *preset_menu_add(struct preset_menu *menu, char *title) { struct preset_menu_entry *toret; if (menu->n_entries >= menu->entries_size) { menu->entries_size = menu->n_entries * 5 / 4 + 10; menu->entries = sresize(menu->entries, menu->entries_size, struct preset_menu_entry); } toret = &menu->entries[menu->n_entries++]; toret->title = title; toret->params = NULL; toret->submenu = NULL; return toret; } struct preset_menu *preset_menu_add_submenu(struct preset_menu *parent, char *title) { struct preset_menu_entry *entry = preset_menu_add(parent, title); entry->submenu = preset_menu_new(); return entry->submenu; } void preset_menu_add_preset(struct preset_menu *parent, char *title, game_params *params) { struct preset_menu_entry *entry = preset_menu_add(parent, title); entry->params = params; } game_params *preset_menu_lookup_by_id(struct preset_menu *menu, int id) { int i; game_params *retd; for (i = 0; i < menu->n_entries; i++) { if (id == menu->entries[i].id) return menu->entries[i].params; if (menu->entries[i].submenu && (retd = preset_menu_lookup_by_id( menu->entries[i].submenu, id)) != NULL) return retd; } return NULL; } static char *preset_menu_add_from_user_env( midend *me, struct preset_menu *menu, char *p, int top_level) { while (*p) { char *name, *val; game_params *preset; name = p; while (*p && *p != ':') p++; if (*p) *p++ = '\0'; val = p; while (*p && *p != ':') p++; if (*p) *p++ = '\0'; if (!strcmp(val, "#")) { /* * Special case: either open a new submenu with the given * title, or terminate the current submenu. */ if (*name) { struct preset_menu *submenu = preset_menu_add_submenu(menu, dupstr(name)); p = preset_menu_add_from_user_env(me, submenu, p, FALSE); } else { /* * If we get a 'close submenu' indication at the top * level, there's not much we can do but quietly * ignore it. */ if (!top_level) return p; } continue; } preset = me->ourgame->default_params(); me->ourgame->decode_params(preset, val); if (me->ourgame->validate_params(preset, TRUE)) { /* Drop this one from the list. */ me->ourgame->free_params(preset); continue; } preset_menu_add_preset(menu, dupstr(name), preset); } return p; } static void preset_menu_alloc_ids(midend *me, struct preset_menu *menu) { int i; for (i = 0; i < menu->n_entries; i++) menu->entries[i].id = me->n_encoded_presets++; for (i = 0; i < menu->n_entries; i++) if (menu->entries[i].submenu) preset_menu_alloc_ids(me, menu->entries[i].submenu); } static void preset_menu_encode_params(midend *me, struct preset_menu *menu) { int i; for (i = 0; i < menu->n_entries; i++) { if (menu->entries[i].params) { me->encoded_presets[menu->entries[i].id] = me->ourgame->encode_params(menu->entries[i].params, TRUE); } else { preset_menu_encode_params(me, menu->entries[i].submenu); } } } struct preset_menu *midend_get_presets(midend *me, int *id_limit) { int i; if (me->preset_menu) return me->preset_menu; #if 0 /* Expect the game to implement exactly one of the two preset APIs */ assert(me->ourgame->fetch_preset || me->ourgame->preset_menu); assert(!(me->ourgame->fetch_preset && me->ourgame->preset_menu)); #endif if (me->ourgame->fetch_preset) { char *name; game_params *preset; /* Simple one-level menu */ assert(!me->ourgame->preset_menu); me->preset_menu = preset_menu_new(); for (i = 0; me->ourgame->fetch_preset(i, &name, &preset); i++) preset_menu_add_preset(me->preset_menu, name, preset); } else { /* Hierarchical menu provided by the game backend */ me->preset_menu = me->ourgame->preset_menu(); } { /* * Allow user extensions to the preset list by defining an * environment variable _PRESETS whose value is a * colon-separated list of items, alternating between textual * titles in the menu and encoded parameter strings. For * example, "SOLO_PRESETS=2x3 Advanced:2x3da" would define * just one additional preset for Solo. */ char buf[80], *e; int j, k; sprintf(buf, "%s_PRESETS", me->ourgame->name); for (j = k = 0; buf[j]; j++) if (!isspace((unsigned char)buf[j])) buf[k++] = toupper((unsigned char)buf[j]); buf[k] = '\0'; if ((e = getenv(buf)) != NULL) { e = dupstr(e); preset_menu_add_from_user_env(me, me->preset_menu, e, TRUE); sfree(e); } } /* * Finalise the menu: allocate an integer id to each entry, and * store string encodings of the presets' parameters in * me->encoded_presets. */ me->n_encoded_presets = 0; preset_menu_alloc_ids(me, me->preset_menu); me->encoded_presets = snewn(me->n_encoded_presets, char *); for (i = 0; i < me->n_encoded_presets; i++) me->encoded_presets[i] = NULL; preset_menu_encode_params(me, me->preset_menu); if (id_limit) *id_limit = me->n_encoded_presets; return me->preset_menu; } int midend_which_preset(midend *me) { char *encoding = me->ourgame->encode_params(me->params, TRUE); int i, ret; ret = -1; for (i = 0; i < me->n_encoded_presets; i++) if (me->encoded_presets[i] && !strcmp(encoding, me->encoded_presets[i])) { ret = i; break; } sfree(encoding); return ret; } int midend_wants_statusbar(midend *me) { return me->ourgame->wants_statusbar; } void midend_request_id_changes(midend *me, void (*notify)(void *), void *ctx) { me->game_id_change_notify_function = notify; me->game_id_change_notify_ctx = ctx; } void midend_supersede_game_desc(midend *me, char *desc, char *privdesc) { sfree(me->desc); sfree(me->privdesc); me->desc = dupstr(desc); me->privdesc = privdesc ? dupstr(privdesc) : NULL; if (me->game_id_change_notify_function) me->game_id_change_notify_function(me->game_id_change_notify_ctx); } config_item *midend_get_config(midend *me, int which, char **wintitle) { char *titlebuf, *parstr, *rest; config_item *ret; char sep; assert(wintitle); titlebuf = snewn(40 + strlen(me->ourgame->name), char); switch (which) { case CFG_SETTINGS: sprintf(titlebuf, "%s configuration", me->ourgame->name); *wintitle = titlebuf; return me->ourgame->configure(me->params); case CFG_SEED: case CFG_DESC: if (!me->curparams) { sfree(titlebuf); return NULL; } sprintf(titlebuf, "%s %s selection", me->ourgame->name, which == CFG_SEED ? "random" : "game"); *wintitle = titlebuf; ret = snewn(2, config_item); ret[0].type = C_STRING; if (which == CFG_SEED) ret[0].name = "Game random seed"; else ret[0].name = "Game ID"; /* * For CFG_DESC the text going in here will be a string * encoding of the restricted parameters, plus a colon, * plus the game description. For CFG_SEED it will be the * full parameters, plus a hash, plus the random seed data. * Either of these is a valid full game ID (although only * the former is likely to persist across many code * changes). */ parstr = me->ourgame->encode_params(me->curparams, which == CFG_SEED); assert(parstr); if (which == CFG_DESC) { rest = me->desc ? me->desc : ""; sep = ':'; } else { rest = me->seedstr ? me->seedstr : ""; sep = '#'; } ret[0].u.string.sval = snewn(strlen(parstr) + strlen(rest) + 2, char); sprintf(ret[0].u.string.sval, "%s%c%s", parstr, sep, rest); sfree(parstr); ret[1].type = C_END; ret[1].name = NULL; return ret; } assert(!"We shouldn't be here"); return NULL; } static const char *midend_game_id_int(midend *me, char *id, int defmode) { const char *error; char *par, *desc, *seed; game_params *newcurparams, *newparams, *oldparams1, *oldparams2; int free_params; seed = strchr(id, '#'); desc = strchr(id, ':'); if (desc && (!seed || desc < seed)) { /* * We have a colon separating parameters from game * description. So `par' now points to the parameters * string, and `desc' to the description string. */ *desc++ = '\0'; par = id; seed = NULL; } else if (seed && (!desc || seed < desc)) { /* * We have a hash separating parameters from random seed. * So `par' now points to the parameters string, and `seed' * to the seed string. */ *seed++ = '\0'; par = id; desc = NULL; } else { /* * We only have one string. Depending on `defmode', we take * it to be either parameters, seed or description. */ if (defmode == DEF_SEED) { seed = id; par = desc = NULL; } else if (defmode == DEF_DESC) { desc = id; par = seed = NULL; } else { par = id; seed = desc = NULL; } } /* * We must be reasonably careful here not to modify anything in * `me' until we have finished validating things. This function * must either return an error and do nothing to the midend, or * return success and do everything; nothing in between is * acceptable. */ newcurparams = newparams = oldparams1 = oldparams2 = NULL; if (par) { /* * The params string may underspecify the game parameters, so * we must first initialise newcurparams with a full set of * params from somewhere else before we decode_params the * input string over the top. * * But which set? It depends on what other data we have. * * If we've been given a _descriptive_ game id, then that may * well underspecify by design, e.g. Solo game descriptions * often start just '3x3:' without specifying one of Solo's * difficulty settings, because it isn't necessary once a game * has been generated (and you might not even know it, if * you're manually transcribing a game description). In that * situation, I've always felt that the best thing to set the * difficulty to (for use if the user hits 'New Game' after * pasting in that game id) is whatever it was previously set * to. That is, we use whatever is already in me->params as * the basis for our decoding of this input string. * * A random-seed based game id, however, should use the real, * built-in default params, and not even check the * _DEFAULT environment setting, because when people * paste each other random seeds - whether it's two users * arranging to generate the same game at the same time to * race solving them, or a user sending a bug report upstream * - the whole point is for the random game id to always be * interpreted the same way, even if it does underspecify. * * A parameter string typed in on its own, with no seed _or_ * description, gets treated the same way as a random seed, * because again I think the most likely reason for doing that * is to have a portable representation of a set of params. */ if (desc) { newcurparams = me->ourgame->dup_params(me->params); } else { newcurparams = me->ourgame->default_params(); } me->ourgame->decode_params(newcurparams, par); error = me->ourgame->validate_params(newcurparams, desc == NULL); if (error) { me->ourgame->free_params(newcurparams); return error; } oldparams1 = me->curparams; /* * Now filter only the persistent parts of this state into * the long-term params structure, unless we've _only_ * received a params string in which case the whole lot is * persistent. */ oldparams2 = me->params; if (seed || desc) { char *tmpstr; newparams = me->ourgame->dup_params(me->params); tmpstr = me->ourgame->encode_params(newcurparams, FALSE); me->ourgame->decode_params(newparams, tmpstr); sfree(tmpstr); } else { newparams = me->ourgame->dup_params(newcurparams); } free_params = TRUE; } else { newcurparams = me->curparams; newparams = me->params; free_params = FALSE; } if (desc) { error = me->ourgame->validate_desc(newparams, desc); if (error) { if (free_params) { if (newcurparams) me->ourgame->free_params(newcurparams); if (newparams) me->ourgame->free_params(newparams); } return error; } } /* * Now we've got past all possible error points. Update the * midend itself. */ me->params = newparams; me->curparams = newcurparams; if (oldparams1) me->ourgame->free_params(oldparams1); if (oldparams2) me->ourgame->free_params(oldparams2); sfree(me->desc); sfree(me->privdesc); me->desc = me->privdesc = NULL; sfree(me->seedstr); me->seedstr = NULL; if (desc) { me->desc = dupstr(desc); me->genmode = GOT_DESC; sfree(me->aux_info); me->aux_info = NULL; } if (seed) { me->seedstr = dupstr(seed); me->genmode = GOT_SEED; } return NULL; } const char *midend_game_id(midend *me, char *id) { return midend_game_id_int(me, id, DEF_PARAMS); } char *midend_get_game_id(midend *me) { char *parstr, *ret; parstr = me->ourgame->encode_params(me->curparams, FALSE); assert(parstr); assert(me->desc); ret = snewn(strlen(parstr) + strlen(me->desc) + 2, char); sprintf(ret, "%s:%s", parstr, me->desc); sfree(parstr); return ret; } char *midend_get_random_seed(midend *me) { char *parstr, *ret; if (!me->seedstr) return NULL; parstr = me->ourgame->encode_params(me->curparams, TRUE); assert(parstr); ret = snewn(strlen(parstr) + strlen(me->seedstr) + 2, char); sprintf(ret, "%s#%s", parstr, me->seedstr); sfree(parstr); return ret; } const char *midend_set_config(midend *me, int which, config_item *cfg) { const char *error; game_params *params; switch (which) { case CFG_SETTINGS: params = me->ourgame->custom_params(cfg); error = me->ourgame->validate_params(params, TRUE); if (error) { me->ourgame->free_params(params); return error; } me->ourgame->free_params(me->params); me->params = params; break; case CFG_SEED: case CFG_DESC: error = midend_game_id_int(me, cfg[0].u.string.sval, (which == CFG_SEED ? DEF_SEED : DEF_DESC)); if (error) return error; break; } return NULL; } int midend_can_format_as_text_now(midend *me) { if (me->ourgame->can_format_as_text_ever) return me->ourgame->can_format_as_text_now(me->params); else return FALSE; } char *midend_text_format(midend *me) { if (me->ourgame->can_format_as_text_ever && me->statepos > 0 && me->ourgame->can_format_as_text_now(me->params)) return me->ourgame->text_format(me->states[me->statepos-1].state); else return NULL; } const char *midend_solve(midend *me) { game_state *s; const char *msg; char *movestr; if (!me->ourgame->can_solve) return "This game does not support the Solve operation"; if (me->statepos < 1) return "No game set up to solve"; /* _shouldn't_ happen! */ msg = NULL; movestr = me->ourgame->solve(me->states[0].state, me->states[me->statepos-1].state, me->aux_info, &msg); assert(movestr != UI_UPDATE); if (!movestr) { if (!msg) msg = "Solve operation failed"; /* _shouldn't_ happen, but can */ return msg; } s = me->ourgame->execute_move(me->states[me->statepos-1].state, movestr); assert(s); /* * Now enter the solved state as the next move. */ midend_stop_anim(me); midend_purge_states(me); ensure(me); me->states[me->nstates].state = s; me->states[me->nstates].movestr = movestr; me->states[me->nstates].movetype = SOLVE; me->statepos = ++me->nstates; if (me->ui) me->ourgame->changed_state(me->ui, me->states[me->statepos-2].state, me->states[me->statepos-1].state); me->dir = +1; if (me->ourgame->flags & SOLVE_ANIMATES) { me->oldstate = me->ourgame->dup_game(me->states[me->statepos-2].state); me->anim_time = me->ourgame->anim_length(me->states[me->statepos-2].state, me->states[me->statepos-1].state, +1, me->ui); me->anim_pos = 0.0; } else { me->anim_time = 0.0; midend_finish_move(me); } if (me->drawing) midend_redraw(me); midend_set_timer(me); return NULL; } int midend_status(midend *me) { /* * We should probably never be called when the state stack has no * states on it at all - ideally, midends should never be left in * that state for long enough to get put down and forgotten about. * But if we are, I think we return _true_ - pedantically speaking * a midend in that state is 'vacuously solved', and more * practically, a user whose midend has been left in that state * probably _does_ want the 'new game' option to be prominent. */ if (me->statepos == 0) return +1; return me->ourgame->status(me->states[me->statepos-1].state); } char *midend_rewrite_statusbar(midend *me, char *text) { /* * An important special case is that we are occasionally called * with our own laststatus, to update the timer. */ if (me->laststatus != text) { sfree(me->laststatus); me->laststatus = dupstr(text); } if (me->ourgame->is_timed) { char timebuf[100], *ret; int min, sec; sec = (int)me->elapsed; min = sec / 60; sec %= 60; sprintf(timebuf, "[%d:%02d] ", min, sec); ret = snewn(strlen(timebuf) + strlen(text) + 1, char); strcpy(ret, timebuf); strcat(ret, text); return ret; } else { return dupstr(text); } } #define SERIALISE_MAGIC "Simon Tatham's Portable Puzzle Collection" #define SERIALISE_VERSION "1" void midend_serialise(midend *me, void (*write)(void *ctx, void *buf, int len), void *wctx) { int i; /* * Each line of the save file contains three components. First * exactly 8 characters of header word indicating what type of * data is contained on the line; then a colon followed by a * decimal integer giving the length of the main string on the * line; then a colon followed by the string itself (exactly as * many bytes as previously specified, no matter what they * contain). Then a newline (of reasonably flexible form). */ #define wr(h,s) do { \ char hbuf[80]; \ char *str = (s); \ char lbuf[9]; \ copy_left_justified(lbuf, sizeof(lbuf), h); \ sprintf(hbuf, "%s:%d:", lbuf, (int)strlen(str)); \ write(wctx, hbuf, strlen(hbuf)); \ write(wctx, str, strlen(str)); \ write(wctx, "\n", 1); \ } while (0) /* * Magic string identifying the file, and version number of the * file format. */ wr("SAVEFILE", SERIALISE_MAGIC); wr("VERSION", SERIALISE_VERSION); /* * The game name. (Copied locally to avoid const annoyance.) */ { char *s = dupstr(me->ourgame->name); wr("GAME", s); sfree(s); } /* * The current long-term parameters structure, in full. */ if (me->params) { char *s = me->ourgame->encode_params(me->params, TRUE); wr("PARAMS", s); sfree(s); } /* * The current short-term parameters structure, in full. */ if (me->curparams) { char *s = me->ourgame->encode_params(me->curparams, TRUE); wr("CPARAMS", s); sfree(s); } /* * The current game description, the privdesc, and the random seed. */ if (me->seedstr) wr("SEED", me->seedstr); if (me->desc) wr("DESC", me->desc); if (me->privdesc) wr("PRIVDESC", me->privdesc); /* * The game's aux_info. We obfuscate this to prevent spoilers * (people are likely to run `head' or similar on a saved game * file simply to find out what it is, and don't necessarily * want to be told the answer to the puzzle!) */ if (me->aux_info) { unsigned char *s1; char *s2; int len; len = strlen(me->aux_info); s1 = snewn(len, unsigned char); memcpy(s1, me->aux_info, len); obfuscate_bitmap(s1, len*8, FALSE); s2 = bin2hex(s1, len); wr("AUXINFO", s2); sfree(s2); sfree(s1); } /* * Any required serialisation of the game_ui. */ if (me->ui) { char *s = me->ourgame->encode_ui(me->ui); if (s) { wr("UI", s); sfree(s); } } /* * The game time, if it's a timed game. */ if (me->ourgame->is_timed) { char buf[80]; sprintf(buf, "%g", me->elapsed); wr("TIME", buf); } /* * The length of, and position in, the states list. */ { char buf[80]; sprintf(buf, "%d", me->nstates); wr("NSTATES", buf); sprintf(buf, "%d", me->statepos); wr("STATEPOS", buf); } /* * For each state after the initial one (which we know is * constructed from either privdesc or desc), enough * information for execute_move() to reconstruct it from the * previous one. */ for (i = 1; i < me->nstates; i++) { assert(me->states[i].movetype != NEWGAME); /* only state 0 */ switch (me->states[i].movetype) { case MOVE: wr("MOVE", me->states[i].movestr); break; case SOLVE: wr("SOLVE", me->states[i].movestr); break; case RESTART: wr("RESTART", me->states[i].movestr); break; } } #undef wr } /* * Internal version of midend_deserialise, taking an extra check * function to be called just before beginning to install things in * the midend. * * Like midend_deserialise proper, this function returns NULL on * success, or an error message. */ static const char *midend_deserialise_internal( midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx, char *(*check)(void *ctx, midend *, const struct deserialise_data *data), void *cctx) { struct deserialise_data data; int gotstates = 0; int started = FALSE; int i; char *val = NULL; /* Initially all errors give the same report */ char *ret = "Data does not appear to be a saved game file"; data.seed = data.parstr = data.desc = data.privdesc = NULL; data.auxinfo = data.uistr = data.cparstr = NULL; data.elapsed = 0.0F; data.params = data.cparams = NULL; data.ui = NULL; data.states = NULL; data.nstates = 0; data.statepos = -1; /* * Loop round and round reading one key/value pair at a time * from the serialised stream, until we have enough game states * to finish. */ while (data.nstates <= 0 || data.statepos < 0 || gotstates < data.nstates-1) { char key[9], c; int len; do { if (!read(rctx, key, 1)) { /* unexpected EOF */ goto cleanup; } } while (key[0] == '\r' || key[0] == '\n'); if (!read(rctx, key+1, 8)) { /* unexpected EOF */ goto cleanup; } if (key[8] != ':') { if (started) ret = "Data was incorrectly formatted for a saved game file"; goto cleanup; } len = strcspn(key, ": "); assert(len <= 8); key[len] = '\0'; len = 0; while (1) { if (!read(rctx, &c, 1)) { /* unexpected EOF */ goto cleanup; } if (c == ':') { break; } else if (c >= '0' && c <= '9') { len = (len * 10) + (c - '0'); } else { if (started) ret = "Data was incorrectly formatted for a" " saved game file"; goto cleanup; } } val = snewn(len+1, char); if (!read(rctx, val, len)) { if (started) goto cleanup; } val[len] = '\0'; if (!started) { if (strcmp(key, "SAVEFILE") || strcmp(val, SERIALISE_MAGIC)) { /* ret already has the right message in it */ goto cleanup; } /* Now most errors are this one, unless otherwise specified */ ret = "Saved data ended unexpectedly"; started = TRUE; } else { if (!strcmp(key, "VERSION")) { if (strcmp(val, SERIALISE_VERSION)) { ret = "Cannot handle this version of the saved game" " file format"; goto cleanup; } } else if (!strcmp(key, "GAME")) { if (strcmp(val, me->ourgame->name)) { ret = "Save file is from a different game"; goto cleanup; } } else if (!strcmp(key, "PARAMS")) { sfree(data.parstr); data.parstr = val; val = NULL; } else if (!strcmp(key, "CPARAMS")) { sfree(data.cparstr); data.cparstr = val; val = NULL; } else if (!strcmp(key, "SEED")) { sfree(data.seed); data.seed = val; val = NULL; } else if (!strcmp(key, "DESC")) { sfree(data.desc); data.desc = val; val = NULL; } else if (!strcmp(key, "PRIVDESC")) { sfree(data.privdesc); data.privdesc = val; val = NULL; } else if (!strcmp(key, "AUXINFO")) { unsigned char *tmp; int len = strlen(val) / 2; /* length in bytes */ tmp = hex2bin(val, len); obfuscate_bitmap(tmp, len*8, TRUE); sfree(data.auxinfo); data.auxinfo = snewn(len + 1, char); memcpy(data.auxinfo, tmp, len); data.auxinfo[len] = '\0'; sfree(tmp); } else if (!strcmp(key, "UI")) { sfree(data.uistr); data.uistr = val; val = NULL; } else if (!strcmp(key, "TIME")) { data.elapsed = (float)atof(val); } else if (!strcmp(key, "NSTATES")) { data.nstates = atoi(val); if (data.nstates <= 0) { ret = "Number of states in save file was negative"; goto cleanup; } if (data.states) { ret = "Two state counts provided in save file"; goto cleanup; } data.states = snewn(data.nstates, struct midend_state_entry); for (i = 0; i < data.nstates; i++) { data.states[i].state = NULL; data.states[i].movestr = NULL; data.states[i].movetype = NEWGAME; } } else if (!strcmp(key, "STATEPOS")) { data.statepos = atoi(val); } else if (!strcmp(key, "MOVE")) { gotstates++; data.states[gotstates].movetype = MOVE; data.states[gotstates].movestr = val; val = NULL; } else if (!strcmp(key, "SOLVE")) { gotstates++; data.states[gotstates].movetype = SOLVE; data.states[gotstates].movestr = val; val = NULL; } else if (!strcmp(key, "RESTART")) { gotstates++; data.states[gotstates].movetype = RESTART; data.states[gotstates].movestr = val; val = NULL; } } sfree(val); val = NULL; } data.params = me->ourgame->default_params(); me->ourgame->decode_params(data.params, data.parstr); if (me->ourgame->validate_params(data.params, TRUE)) { ret = "Long-term parameters in save file are invalid"; goto cleanup; } data.cparams = me->ourgame->default_params(); me->ourgame->decode_params(data.cparams, data.cparstr); if (me->ourgame->validate_params(data.cparams, FALSE)) { ret = "Short-term parameters in save file are invalid"; goto cleanup; } if (data.seed && me->ourgame->validate_params(data.cparams, TRUE)) { /* * The seed's no use with this version, but we can perfectly * well use the rest of the data. */ sfree(data.seed); data.seed = NULL; } if (!data.desc) { ret = "Game description in save file is missing"; goto cleanup; } else if (me->ourgame->validate_desc(data.cparams, data.desc)) { ret = "Game description in save file is invalid"; goto cleanup; } if (data.privdesc && me->ourgame->validate_desc(data.cparams, data.privdesc)) { ret = "Game private description in save file is invalid"; goto cleanup; } if (data.statepos < 0 || data.statepos >= data.nstates) { ret = "Game position in save file is out of range"; } data.states[0].state = me->ourgame->new_game( me, data.cparams, data.privdesc ? data.privdesc : data.desc); for (i = 1; i < data.nstates; i++) { assert(data.states[i].movetype != NEWGAME); switch (data.states[i].movetype) { case MOVE: case SOLVE: data.states[i].state = me->ourgame->execute_move( data.states[i-1].state, data.states[i].movestr); if (data.states[i].state == NULL) { ret = "Save file contained an invalid move"; goto cleanup; } break; case RESTART: if (me->ourgame->validate_desc( data.cparams, data.states[i].movestr)) { ret = "Save file contained an invalid restart move"; goto cleanup; } data.states[i].state = me->ourgame->new_game( me, data.cparams, data.states[i].movestr); break; } } data.ui = me->ourgame->new_ui(data.states[0].state); me->ourgame->decode_ui(data.ui, data.uistr); /* * Run the externally provided check function, and abort if it * returns an error message. */ if (check && (ret = check(cctx, me, &data)) != NULL) goto cleanup; /* error message is already in ret */ /* * Now we've run out of possible error conditions, so we're * ready to start overwriting the real data in the current * midend. We'll do this by swapping things with the local * variables, so that the same cleanup code will free the old * stuff. */ { char *tmp; tmp = me->desc; me->desc = data.desc; data.desc = tmp; tmp = me->privdesc; me->privdesc = data.privdesc; data.privdesc = tmp; tmp = me->seedstr; me->seedstr = data.seed; data.seed = tmp; tmp = me->aux_info; me->aux_info = data.auxinfo; data.auxinfo = tmp; } me->genmode = GOT_NOTHING; me->statesize = data.nstates; data.nstates = me->nstates; me->nstates = me->statesize; { struct midend_state_entry *tmp; tmp = me->states; me->states = data.states; data.states = tmp; } me->statepos = data.statepos; /* * Don't save the "new game undo" state. So "new game" twice or * (in some environments) switching away and back, will make a * "new game" irreversible. Maybe in the future we will have a * more sophisticated way to decide when to discard the previous * game state. */ me->newgame_undo_len = 0; { game_params *tmp; tmp = me->params; me->params = data.params; data.params = tmp; tmp = me->curparams; me->curparams = data.cparams; data.cparams = tmp; } me->oldstate = NULL; me->anim_time = me->anim_pos = me->flash_time = me->flash_pos = 0.0F; me->dir = 0; { game_ui *tmp; tmp = me->ui; me->ui = data.ui; data.ui = tmp; } me->elapsed = data.elapsed; me->pressed_mouse_button = 0; midend_set_timer(me); if (me->drawstate) me->ourgame->free_drawstate(me->drawing, me->drawstate); me->drawstate = me->ourgame->new_drawstate(me->drawing, me->states[me->statepos-1].state); midend_size_new_drawstate(me); if (me->game_id_change_notify_function) me->game_id_change_notify_function(me->game_id_change_notify_ctx); ret = NULL; /* success! */ cleanup: sfree(val); sfree(data.seed); sfree(data.parstr); sfree(data.cparstr); sfree(data.desc); sfree(data.privdesc); sfree(data.auxinfo); sfree(data.uistr); if (data.params) me->ourgame->free_params(data.params); if (data.cparams) me->ourgame->free_params(data.cparams); if (data.ui) me->ourgame->free_ui(data.ui); if (data.states) { int i; for (i = 0; i < data.nstates; i++) { if (data.states[i].state) me->ourgame->free_game(data.states[i].state); sfree(data.states[i].movestr); } sfree(data.states); } return ret; } const char *midend_deserialise( midend *me, int (*read)(void *ctx, void *buf, int len), void *rctx) { return midend_deserialise_internal(me, read, rctx, NULL, NULL); } /* * This function examines a saved game file just far enough to * determine which game type it contains. It returns NULL on success * and the game name string in 'name' (which will be dynamically * allocated and should be caller-freed), or an error message on * failure. */ const char *identify_game(char **name, int (*read)(void *ctx, void *buf, int len), void *rctx) { int nstates = 0, statepos = -1, gotstates = 0; int started = FALSE; char *val = NULL; /* Initially all errors give the same report */ char *ret = "Data does not appear to be a saved game file"; *name = NULL; /* * Loop round and round reading one key/value pair at a time from * the serialised stream, until we've found the game name. */ while (nstates <= 0 || statepos < 0 || gotstates < nstates-1) { char key[9], c; int len; do { if (!read(rctx, key, 1)) { /* unexpected EOF */ goto cleanup; } } while (key[0] == '\r' || key[0] == '\n'); if (!read(rctx, key+1, 8)) { /* unexpected EOF */ goto cleanup; } if (key[8] != ':') { if (started) ret = "Data was incorrectly formatted for a saved game file"; goto cleanup; } len = strcspn(key, ": "); assert(len <= 8); key[len] = '\0'; len = 0; while (1) { if (!read(rctx, &c, 1)) { /* unexpected EOF */ goto cleanup; } if (c == ':') { break; } else if (c >= '0' && c <= '9') { len = (len * 10) + (c - '0'); } else { if (started) ret = "Data was incorrectly formatted for a" " saved game file"; goto cleanup; } } val = snewn(len+1, char); if (!read(rctx, val, len)) { if (started) goto cleanup; } val[len] = '\0'; if (!started) { if (strcmp(key, "SAVEFILE") || strcmp(val, SERIALISE_MAGIC)) { /* ret already has the right message in it */ goto cleanup; } /* Now most errors are this one, unless otherwise specified */ ret = "Saved data ended unexpectedly"; started = TRUE; } else { if (!strcmp(key, "VERSION")) { if (strcmp(val, SERIALISE_VERSION)) { ret = "Cannot handle this version of the saved game" " file format"; goto cleanup; } } else if (!strcmp(key, "GAME")) { *name = dupstr(val); ret = NULL; goto cleanup; } } sfree(val); val = NULL; } cleanup: sfree(val); return ret; } const char *midend_print_puzzle(midend *me, document *doc, int with_soln) { game_state *soln = NULL; if (me->statepos < 1) return "No game set up to print";/* _shouldn't_ happen! */ if (with_soln) { const char *msg; char *movestr; if (!me->ourgame->can_solve) return "This game does not support the Solve operation"; msg = "Solve operation failed";/* game _should_ overwrite on error */ movestr = me->ourgame->solve(me->states[0].state, me->states[me->statepos-1].state, me->aux_info, &msg); if (!movestr) return msg; soln = me->ourgame->execute_move(me->states[me->statepos-1].state, movestr); assert(soln); sfree(movestr); } else soln = NULL; /* * This call passes over ownership of the two game_states and * the game_params. Hence we duplicate the ones we want to * keep, and we don't have to bother freeing soln if it was * non-NULL. */ document_add_puzzle(doc, me->ourgame, me->ourgame->dup_params(me->curparams), me->ourgame->dup_game(me->states[0].state), soln); return NULL; } bI;gRWW6)phqgM1/Q$eq Cx 6kṚ[? LBIbMC\^;y]n NܪQkA,@wfoeusN"jȯQ-g{dUΦ6CEW) 0@J& v*gd ݣm$_o<.7QBvy&51r~IrLDvgC@&|!?eZn3V'd$ƫW`] @c˿@w7#aG,1lU䵛*SŸ R(A dd#klLsoD;BMF1lBiI: jN;GJ+z!Lq̶:9=X# u *qS~0+ zJP_`fQ @ %-g(c`_-/X# <\␓`)VCTGgĊ%E)Sm< X1j&E;3[8Ql?8:%a*p*мv5 VD rivQGRb1k;3("M2,=~KN}O+/*GA@&(ڬAZ,a g.BkzC K8,3,{e*MчX0ol!& z;./yhZD#;-dv^;ϧ e1?:a!Vr۠y ؼew cAfɣyB,o8`<bF+ls8}s^4J{}d]߾3{4SYSR ߄~g2Y)t5LW^$qGe"ͳHsTzce±I%j-A<IJ]v*t-m4n /:`N׈;+ׄyGnI7܂1ZĞ_v)HQQJs m8,nԳEš9ӪH׻Ea?i PF*Y'fTCd~]z?CKmf$G-Jj$dR;%99S_WC=LXjD#C2a/уb$kHpĺX;?\:I Wnٍawtjdz|օw_-XJOv9F-bKTK# )qnDhu*&OC`sPQ,Vkpkϳȴ\ORdm<&┝\/{,KZ"p˖vȶ4S9 0<㶬+FUj߆OK1d@4-,Vkw|/ Of՛$cM |\՘d ]=9m _8./{0 Aoے1E,)[o,io>:CLT*pXVnF:(-gbmfFllߔA,*/sb=Nԧa-d[F$<9dێRybҿ"r4cՍ@j߃,>*3-o} 1)֚L946:C)+qR 4wnu$`6Ge+!&\ U@<{ک[=/П̬ApNx&rO*~vW[9U N YvI7XAU07VJ1Zi9~P@蓏?`^&YLMb+{x] ŦTR@I=$)$`p\xgW4ʫTR;O/hD"g Vy UҸ ~IySQ&>{*y of*$.JS>+nXvE@V by\o9n@Bc/t¾q]h\ K$̺L ƪ`F#+f?BEuOQkTyrޜڻ zVFK]B}5z .Z/k^oӻ:ǥ*_tD,A<ZmUg\ idfMwLG-yOF4GRQ{}|[N Q~nDPm w`EnϠQTXDG"J9}ꆷ%3yEGݕ,K+/SJ&"8`{Ꟍg½EQXž")SPŪQ֫GoM)'?!rn' bQGH3Ѿ4 ds T(tx%Hn%%o+k@VO6sD S?,#U@f M^S{oڵ`4yd+g!Mdq%꿀zo##S@YAIQ TAU>a&[(?Dd ^*x]Jɣ~_4|"4|wQyY%wVVr88oL!E%pw!EAZh "3[ʍ1\ 0yВ˱(.T:S:|5A(No~ ;<Ț>4 pkXa#+4y $x"nXwOZo-)kݡR)>AJgG;| .@XA)+ջU-@WeHWJ|ׄ1:{Xl]Ӫ-3J -ҖGr$Zυv˺F.c)0k-令89bnYx*EijR"JpOο׍r&W"Q&w4. %BZq0 4A+\Ak}"% 9Acce4M[:8pjN'WIPW%Fd50fP~:'.'7r#Y{"Z BZD4G|14H0 \c\ot9%XW(OPѳBJj$OjzP" +W OT6a%DrYK}z K&UfHAyK\swW~p1llFϮ;Nt,i,L"?U]-r ZWkU$ `/&j1B^F%yƒ=_E(.5bQ(CLѪٗV :N6 X Sj@\KO{#d.%t= L X=o& !|FI]a>jIиE<^ɡF`UwzD,4T_ס$)⵹"C$dRC#ގJA靏mPN|L(=L{Bg""6M6Tۋ~jk7kQH+ɓD;8A0j#}:}դLm^-M(~/b"yfIFʲW`_jAG0ܴI;>ȹL:5xq)=rfLɛo=jx@ .Js5٭[ᖷL'hf٬Űf3lp)3$Y6\֊am0"qf;s†CG/KL"v+S DzfS,7Oc-d h7jt1<1P5{Cw{:_D6baD3 nZ/I#}h axԙ8μ*4jMypDp$PTMyymVDp13VXtb"h1=Ei+yZtø~sB}OӋid.fS:Gk{"ƵcZ\+!66Wj&%e3 4v$Hr䲒~;URYK&N/H雧anŴ՜eDˆI#{R܍QUKaU?d:jnGQܑ*}wAذ<DY%R*j! -NŽ_o~ѮZq|!Vic_rq☪m®Nɑ#/N&~VPe;J]_o$m EO AZ}>T80ġ.7ܓVW}fo^\0^_6:2 F?%^j!1v1-+W=%_53kW䨿No6#aq~z2G$q~2)NH[ͬmUZ~bijL>w_L_2qEHzMFttv:s_k}ĂX6݆M?# s^NS CܦA79.UGX S;S4D\Cw%xr .L: kԼU`rgc]OPѰ=yv6֗YE;3'|=.75|OM0CYT -SB0>?EunSDw^EUn' ZJl&Kz7&'E3I`3yU.̸̭6 @I?~GrB`eGDwuZbP&G\dת7@R(ϡhަ:*rdef_Eej]̽n%+6dKG#8?ITcy"-r^'Yϫſptz)1!}6V8<ʵ,M9 ~ؗ`Ә6cޥF6+c/3sdqy1{49mґpsDXAG:GBգ[wTwhqC "pu%e d&(I~򺬪-n;ЊYT8;dTKZp, ^ӡe_nxU$yڙ̘ \\jմ,P*.O Թ3ojD) K-!(X~oQPb)AJ1 st0I1<-h;3hHU.:.}FOdh~@÷(ϱ ޙRAl}])8i xu5?L.o9:Ʋed~ʐ{Ug<}ݵo0_tL5RêC1+>;];v68`تgTw[6 ]3ho.A9^i$iTO+hQھנ?{L8!^"A.m1%=^x~l_;_>`v̚H NéT%63n f]~Bc& f($Bƃ~g+<9x|RVj$^<:/WoiA~x/ ,~Ј::u 'iͳQ ZRAd0yhv%HqN1Σ"d`j"\+j¶<ΪDTayz b?ۓ笍3nYSA|y _Z쭭P-7e1ׁ')A;'#a2|tEE0E 8AJ@&=K~)zbXGʌo}w&[ʴ!gj{Z"#_{qE:bQOhvzFkLc !d@5˜5DnONtz:nWYS|]A?7 ]hn^ C'K(4%BL->r櫝ߓ -hBkAlG"]H?}l.W_`VB`12v 2'XJȞh+H/X[Yf+=U1Fom.w*LA`SYӢnUdPjKQӪa#Vp 0kEr:pحQV:mA!TR^, 5K_`VmU % 0tΆb03ب@ca0_MnFeu>@qzN@Rf#˷#'|״[g Ѿ@ \jU.U*Y%]bp&;|-9;%߽ :[/5/><t&ŗWK2v5aۻ8 q^ޭB{f͞E}}A:!w^$è͉= pG"z*Ѭ0.J7VUgAc*'J>l#i7Gѡ@7Ցj M{iu- 2c2H# eøٖ\6Q)8Q˜\!AT%QSHbuZyِn7ԻZ0I.rdu5`.M3-W kzE@N=SvcQaɣ#8? qGu0ƺ2Z0E2&uqH d_6!e\lv]w [KQ1Q`7ڽs+WK`!e,^ _1dS]01nev1@2w|GjHִmchЙMLgO2is]#"Ige%If ; &p=Gio> )[%lfJ$}5Np!X#+t?>cqu_oW%5@1JEHڇ&q'.K{ iuUS&/g^ 6H/Ŧ<2%Dv'!v@1P0GrE(3tq[˃"GOpcY"d܅HnjVot`ے/CC51K(?6K啥HEnKu|@9)IXoEC^IUmWm3 ț@#>aJ5̪}^@Oh[ Hj`$E Yڻ̆֞K޴γa-BQTy3ۦ B`Ĝ 2  KR2:uq4GeB2xQUbcՊ <2=ӧskTfnPS#r ~BOY_Va2]9g[`&~yACsITF^)C/lS/E%1=_K#HTw-m^ i1DD$<8aC5?I.QzdV^q&? .[<rnp3TUhG (F_Җ".2"!x@n%X0nL72[3}Q>Uj3AByQܒk ՟0ik2<609܌/jFiKptؘ񩂵]g3WFtI61W|e5PY-\F ԙ qUhI x1]#(GϔUlct8̏;U0"-jHG5s|C8'gߴ0T;6C;a*V3ۘM<ȟhkX /84zݪRq7=dK #ok'4gzg}W3X&ph tp{ rլO9zկGz(!T6@*pb+\ BD)„Sbn(HedR [8C3׍FOK(P*]LFuOh,?Ռ뛾ZA ]4Yuˉw31x*l&di=q(J+o E4%swG7Z#[d索,/b7 ܁׃B |~ 1X\'̯HUif6VLFL@SnNoIx|txhTv1ÁYkʄP<9^S?顆 P'4*7[KVs<0 <_ LmL?r=s-xM΢s 0&,n _yqxr>$K}GKj, \uݦ(?<dNC4~LGd FP}[. T}WӧEe,N~LӴPGW$8؎K_n>}z(;Ծ*9NީтئPbgDFteH Ub4Jv~)rkpo h1Jnв}f3wTNݕ;vr!.-z܎Lܹٮ &}@n;tFwg2m$>|:%yՏU%5+lݒ, qf>|Mt%j Iuj.H~ KYhw' ? 7 =ȟ:ᛨw3d ;!R\s;Pq 8rݳ*Ek-dF 8}bk(3άc`IJE^n,XGVvtT_H0z!WQfe|*m_Q]f!;kLBaUE+acH[b;4N@BB(u(ҧrLJ3#߉U@XXRF5Sc*9!LW͈̫0_0Nj8tjb|a8ØhwN a)~D&-"Y XX%Y)qMdo:#}&iI9`Ttc Ǐ1?LJxkI`2nH! 0" R[$-,nbyX@a*]SִٟAf^L.qj̀â+ϜG]򄵍LL=zCڅa{S\d0ȇ'B''S_f z0(D\c4bOR=x57d޼|#0**J9oIIފcg]naj/6ބY zAF339"$)Nx]~쀠ϻ= 9Wya ?Kf2tBiEw%F oPe-Ta}|%q ҠSN'z>Zv b*lf9MK:߅ud `C[̶6A|?(ݮ.WɫkءϾk4Vق?wpЖ"QGV0!5lߥ3CFg#`<ks-y!' YDA2Ipk^ QmŭvC) Wr n׆(Y`WP/U8/P7] .ubd>K﷋xE ձn *b%vuϳ$O҈̴sd^K@ī2[_)of7Pi,C7h7N@ <@5%۔Jz<,`)l aL8~W|gT! &9 d2XoHznΪC˲Iƛ(53kpPy?49~`!w< χfh΢h` }wĄq7iĠ@L%WGM Zbg): ӗ)-Q;gaZiMw)=Z6GCC |)i?B( (wZjݾ }X:x8"S,n|qBkHbIwQdh 0) q;̐/n넟mE3p:?-q+\E XԕRxt}̅ EH\O; c/>z;{%P0}kiZ٧[QBM]Cݮ+Ŧ5"gMy:ԳX|N@v->P5x)/n|~ jh_'hkTim&f&)E+;W ivI>b[G"<R &ф$ OҾ`ų- *=}ib@=w{/^Gb/(C;c.&I˞mwO@#2+$iKc*!DHuJAY& ߦҨͺ9 +zR1 qv?˔ U@FaޯaAt wyᤲ/aӴ |Kz3qLJvLH7Ir-czGH2$jvawd4E4M_Mݶ2ݎT3E@ş|}~E82nrYe=#b&([16П:k-7GרXö/-p+LD="q{A$"g4$fH|c;8)|@'&6UAx{}{q  "׆fk8ەV.?Yz3hoRLUnUl4rgdH"zQ'3:O\JVu6Iw_7aXy%-N~ rLt-ԑ@䠖 1wf=ͳy݄ ~M8;0EcͤGLFzpQlZ2 NXQϠ5u‰WJԶ9l<_'1K)#yX SGkk/9AugVuxbtHWs㖂TN{FKM V+>rQtoK  1 7J4 >\V71 oĚZԢt9~\_twDs82}G Uuzj{PXQ]e"UOm*`}倛X CMz|j$e"第/;pDn>G|B2vRA &5`)v6Aӟwצ2m$n>7n Ƭfh%jpcY]Jq0L޲I m5lMNRüS=o#'m}{ |Bs3;naq0ψe-`g= #(KaVNܦ2sB]"\Pfdɥ1}NqMv@܄%Nr9N&PaXeÉ:wZp.1ǚa dlQd~ա%[=!Ov ۬Q|BӞFF ӟO$* 0QMCFi$/p⻭Db nVWXG7Tu9q!+9ޮx8LlJxfBes:J#}1hw n%)KMU+x6)-b>-xWn(v.)^%OHkZjIE [W=d#S B/0GQ,Z7VHaM(Ofvn-9+QcVh$}K{A%)o-9[ȩNᝄwņWMo!G +b;id#!#^s7rzp&#diՂ&h"d i#F䭖|K*Gl"N,Sۂ?,zDOMa$_><W`4}{A, 3QkEr1.FwGܳ%`w7PP Ĕ O[= vV?yB*iP9J,V4/iyHz_Ċy ,(u{oE6B;r]Aʄ˵KjBs u>gQk($}T󧉮&P$bH cb?{A.λU Xϋn871SQjH;3P@Bfp~_{UFo3!?," b.(T{, :Ε Kד<3mJ뎚'7 \چW{ecVQ)P;j^ !7Ň%IܻE BhB &'퐰q]#=0¤ !?5w2tƳעxtl%i؈(0PXoXbs!C:)c|Wzs/oÊ6A*-j γ*~ y ۰Tr2 5~J"0URÒhho\!ϞخB 5sm~{ (ԍ|e4^}].v^BZ7 QĮDލO#J%Zל,4EN7Iꢯ 6KpqLa/>x,Y;8J;ȰHӠ`Ćʚz'߿$Mxw R]A_܌d5#)RPcE*7]~gy]Yܦㅵ~`$g5dTmd-S=W!~\NvD^7MY ;pE+b;^PR !龂@YhJ_7NEoIBaVe~]5 ǒvw2Q6 ~fRWʂr1߮HO&YFAos*Q\JAWٹ#]mT%8TBK ݥ$_צ5jS3͘pVZ.{;)qck*Fˇ6a d4+J"jR*=["&!NVaS^%M[✝竜\-w*{A9;QT >f*U̪O;MJzqy@\,¥٠5ΒWN D ,8@9Ł]2H4*0"L[)=:pSB/B J H-QL)asJx& `5k[pĂw 1Dɱ˕u \1OjJvם%.̈́<#x.%Ы&0Gw6:!Pd<hB*i0BWˋH>?%kO`bq!PuU'rjSܔV(5"@?WJRّWk\U6>eC1G?5zk=GB9_ ʂ&Ie`/Zd{.D3}ATƴ.IѪ,ѝpOq CbwkĥW'a /z7N%Ձȧ䘯5)< AR+749&溯 p?ƛG8#bf{I)'%V3t=B+|CJ锌M~9=Moq49"Q)V܅ਲng2aGL1H7X`j3f]5\&9}RRT$B+Nq%0cnze<ZIмu`#|C@o~8/J ps缒뢹(4K8wA?#ZS; ʴbU>2v$)N('~x}<;'/Ulv")<yHۨS)Թ i0H98 31+'(SwUfJ :dF,ʙIӧ{-qL¹z0؈ Y1à%Jigeq Df.3Ķ7@0k%a055e/p~GlXˢ;krWlQVx(g~.ifJMm_/^Zޟiʖ+5UzN6s#uȃ[ݾEր坎RyՒ"zj0?`/^>KM1x[Qi@C:%ʍK~ q)%; S:! 5|ު|un OڻE%ZD[sU}VpT|x = zL{pC\UtTθJeɧOJ#l4"rYi@mM2#ARoQkCv6KӋĔFi$lsKr"tW?(z[$]o>E VkV~Fd&B1r'wiXQEUÌjBPamUI[Hh:me8> J\ζ'pd'%זVXs,pf80Ptpe/Zr giw!k"&e "8च4@}M[2ͮ/ʏ3?+{'" bcB:q!]$b4P*FC_aܮ( ذQԢhR5cjh 1;5pn]"㑈7H~/jh 7_0{?ע<~?PU:oHY\c]c,mWݟYV|3+;6PoezQ^c?,WawԤ, 4ـ%T_S`d~C*/(;KJҏ/& LW0DƑ34if́[<=z *.uX 9g{2ظlz&;[=ˬk. v/Umwsx3i'%׼ꕝ8eVge(wK{Zwr5M`1KmH<&Pm B]JŪ,-!K_All\φAUGf$!1#h#lXfY^{6x쬿h@+1*e~qɋn )'[wq㎜";td<0vK&Pw~ŮxӟoB2Uܸ Bc;@o]B42 Qģ"+ǪYvsE\! Ur@2z<G;7O$ӳ3жJfF I xGt)Ѐ=+z*'~kAOxJf@xڣ ҿ(k&O-Ȅ)2,s 1!4p66H#N uV)`ā#;Ts|dt8٫37Z2іF#a2,JF,6ʣ^>؄V? B1D-&`7H fy#txOé^v$ns -l|G= +-ZAR&3XaIۛ HeCOPjť0J^S^KX#eiKmS``𓤤 ,6XtnjF|6 df:Il`"wфl]:7IC9 =tgkҫA<7l3[!Ï lgk$gʤ Vfvcd0V 9CP$Y M= yaoV<]$Hj`a-3TpcsNHڑwL1ǒҏ K3: Ty`ܫ$T,HHe~j/ VTND^-bh"mH[_/!>yb TydI#lM^;Ya' [4"RZ\CQS9*6t;Lp#xC4%+or=;-2A:/" p]_776 CB%;O>ҸgI0{Dzm#eݘy0[OtW݃N3R6mωЀpčx}b;6ׅ싫[p,4s&f \=d ,+-3ˑ'0F+AB:V;60&A:H~[sݯ&\ rfd"% hhC- ".ʹ7rU`KA]u;헺u&%3ANI 0\H"[zXJhxɡ4UYҿ!qjj9G.MIf Y?b~686ن ~^//9[6%WX/S$, O ~;3;%k\١ }!NÈ^ͧѠ1'}uDJ^,9;ߊ"M=ꕻiy@‘YTY[jej` A^m;ķ+ZK2xyc>_Ki|74aJ#?73ȍN|W%={99:y=eb.CG^ fAS9ƈupVSRLk Ԩ,r*E**ݼZj{DmݧqN5&uLbc*@KK#J};qZ2, "_ASg)YW$h;x\N_Ɂ.a o-=Dre_lyjG*mrC"sQˇӂgXQTe ,-eoR M `1E[A1}Zk ]eA^1;ti~O.l.j >:zF uW-[dqǝPI-{~9eg?!d6՞7~fݕ7kV $]›*Upmw;_C`9]rllWlM6VEeʻD goQ!.mL7_8H.pHE؏^ 2öd-[\N~},6ovRFG:(Q%ͩtyc]Oitjts+n ֹG;tV<HЫk7Q$&{gA  DZ`AF aqx:Ayh݀?>fN-[2< WC#P0X4SjeMq!#`ѩw։XQ,?9$GC\{J)2#3pӔ%reکCJɨ{/ eȖFwp1wI ^)~R Z#@M2bf O Ӎs$Rb~kR 3 52FO\^|a<y#vq.ZJLu3![jPD'n$ˉ=MXa9Jy#hv>n:+ψ¥Һ/IE8 (V86vIOtAr~R#S7YYKhY`f\}eG=5EALJ-pmveT#,+SUl YKXdI!lmMGrc7O'lx >$v+H7̢=,@xWDL$V?G^f1L";5BqGCg/,-}VMtvL$՞[zv;g\cA #6sկCnCblf4e/?\Ciž==;vdo }oB SXs|U͐CZJ<^:>a0^?665v掠&ri@ֹe MT .22Ψ2r:qŠd;wio@q"yr1%lYf@IݙQ)x TyE{rV.kmtPP3Xj:I_7\:(ח6 -)kUuNNڃ_PI"mcsPv6 j7.Iq@+7[3{'yָ=ADիdt NBt:6PUpշ7{8&(YmU1,J*9Dd{kX$wӷ~ Ə_sCn~Y .c`l[;]1X &RP5+gp&U c@SA>IlpoDYz~Mr2ﳶmi Ч)4l$JҤ[䬅C'hg7}vBg '1s.HEC͍Q>P7~h}x_A} }bRue$)1MZJRaǏڢnehLYuz[I #K̒]! s4 D4YSIVd}k2[m({Hl}x` [SUQX%KTQZA$glZQ܌MsH:ꬉW5x7ZU{Ԝr{f3_U!芟%w(ί  V=Fes;U?+%:Nx+VvmWZy+u5CU')ZCB bƵ&-0gNt6>[Nc?`v _m C U?c&ţEw*@y\j`8P+x"F o70,yK |&=MƮU8rqa7k*Y4mZ]yr!#4 vHNL\!дwU>1ɘ q)?>ze8U0'l`i# !bh_K> w y!,~{^aQ\>\ =9~2c;UW|**hC+' 5Ӊ86xx:Ž T<6!j)b,d8@:a{ۀDkpP'.F.GNA n,qnDL~ ̓H} =2nxvmwӾ,B‡G9RV-Bt᧛ZsSFjezp|{QE]}u)Y?z<^aK i<~S ΅)+V}%UӑУ"ǭһ7@&w"Jō houP5j vjW߉-z6}2@@<+:[^ 78|єMɠO+5y[oO}qٔU;ƕfX6mWΠҺ bzBM37:&:(n8=s4L'R~[71q%xwsLP6~feU#KݗcX/T.ʥj\y;KDGmqKcdD'a/%ZdK؂`U~ lbݑjWe g*aqT2֝GW1x&0 d[&2 N?䡌LMcyv}%>kD-:e}b1ti 455EHe>n%&y(NI;o5̲N7'0o.kRHJ!y՝'ʽ<0H$>ew!J6֛˗OKD]ekQWYfԠԄ3LU ܬ[`+Ik:Yt)i5VJDFapdFMDy@;Fk h5GǦW HRIs[5g?O AvـS|a荸m0~Q`E|6VDLH@*Wav Dx@^ONp0d0!I%0$,-l8ϕmJJ.~@6kw.>ş;$)5^׳Jr ^TOO+lP=D#Ryh¨2Il#Q: iGzJFx0eؿLa߈wx!ϰƮ]F!o*m]Չ=~H?.E`%o3+.RI`߹{߷W31 &|v!$CV-oȦ:[:z< HFW5JwACo# h贊rՊ wu |v@@WXSw)cPY4;n Sԟݛ}ʓ܁{kΆEY_ݤ !~O '$(zNxC@5oz8\v qޮs"=1 '>fuA77>OWaC 0s?_.F ?[^J2'֋}n+0C\3L74d mXF%mP>grè+A{# ܵa>XKo.A@Ů p\y^4<ޘ`ueϪ^J}uVr7 l?`Xd:=߼,W9Hq٪sG#Z2IĽХc$`lvhZDX ߠneqH$YGțZ,17.i+k(Ј\ 2;!4z;**[ YKץ/3GF.H(/$ 4AMUALo:(m]D?4pRKgw(jue Wo'A@9qV\۬ U47?x,NڜҶד➵LVS/>b1OS.I%!J+YHsУb/n>qŕٚXBw x; o/7i,2ܝ6Uw+Q^ȠG E:N'fGm8 úp ) chL{QҁL<7m0ҿ^ ` |et\q 훘QjImۗb:/)cȿXypYo;2C<߯jˀђyFėm'` Yʢ7]f^dwAvͬ5qiC_\Gq{ AQ1ۮzgSX5T8 C)((auEPr4ď _ZeT9WkZEH~Ux&>U[oJ D|0NOd!-L`n'4,X>lOHr{, 7$VYCtmuRV ԰s[|QqwCCc65c&eIMyn΋%q/$Hᄍw dpFA__ռ_2 v?>}=%Ϳ,q|d&c7&?*$- ZZON3zq=? OA3; "wuZ|a@Pkc_cv1tp後80}*@E\&z˜OEs(B xfY( Z"勩\e5 !hd\l .BDhgeF') 3 H7ƻhQ훅AK?iLo(mk ;$M\XD6_O(wF>Uz(t1=cMejcOP ΆmgLFf G s fA8A^Zf=YLSgb%dm!!J| ac̴`LFdFX:s@ Z)>'>ѣ>#`ce&Fz=WmUw2ySh:BbGODM`QƆg#oB!)[{3Mb>FU튶bK+NMCLq-k_!KMD'd*a_F`,\ۚP3QFR>&Gm Om5% 'ޡ[}uODu:,~p8hIp9ĉ!V:^y|g:MCU2*nq304܀)d6u_h6%,Vn7V`)+U.6VdޤrWc }Gnp" 6”&C)f8 i +GLyf ڻ |bߠfsnN.f\-!~=O=Ad9\J;Pq[jJB2D%*^~w.<|RDx/ 5Y?X <<~ib_ĦB؜v@1ZwJf`:qڳUI䎚-e4*0P=9gQ< ^5n_)J)JVm")*y*?OOoQ@t߰^4a~6+3y|" Z^&;@@%lseG '6]*kC))FK7HzT;kH741H<]Ѥ*:Gф$? ZCo:}xRltq5:/Vllp7`/V'uSe@:HzӴwwjJ1!,_'so۹)GptF"܊ *E_5|`K~.>ғld. ;oP_YW^1 yvt:XUJzbc0o^qUUg[l};u9r$ .J& K_ ]/:͏8ZU,ϟ}&DvyjWU ե f+5pQDK굓5S:mH8DL8߻`(_/LZ6F$? ~u1_E'FuC>=i,/gջ"bcTXnvwUAqB6kQ @$0Fj,Y˿dɢ];{|rs&q gpb#0]}8M=ˇ5P+B15fHB;T2 T.ɝKݐ'':C)7ؤ"evA! U@f*UZ%ƞe|}#5,'b\YSW| Rt=m(jc."? o(ŖED.%{Q"c8FVuҾ|wS㐃+L:gjF@A@=4M`@2#H#_+6[XPJS˒z T,=jӈqXfTi`5b90pD:4 NHt%Y*{ɾp4ZSz_=Yz2|l=/鉴K@ 5 Y2l*[BŘ0ѷسtTӵ 4+|] LypΝ4Ԗ:ǒלj#LfE 2_2K2j#"'7˸Dx;˭;,il;u#`K} YPc_ăy+NT`Jv7ҋͻt}viGR#Iݐ(AN7Vj6F~Ma.q K}5ע-1%x"9Yj 8wCMl~dsЋpO$\HflR߮ /|)HH >N b)F0m䮃ʯH8-p]y4E#rbOKzk D5'+@OfA /N N TDK=9kh`r:)i;Jk*lï424Wd+ʊ4oMlip(qd=auFC=$sR)Í62½Auۤn%R/J+_D tQhmN3J?EH 뗂sW1eܙTȯ߷7͞:Y:ةعv9噒TkKVY~L}:Q{~0DDO d0;JcC䖾>sKV ԗs y<5~+.7t.$̜rR}$sפx$Ax4/O 3E`yF_M;ĵN޷4!t{pȇytgݫّi+w&,2iƙV~(Pbpo0&9N2|cI_:,&ԚIȞ:/!@^/d;;46|g<&oٍ¸Zo$)2[a3izŸ\%_]%b oE̴K3s$Zw ߹.*o[w|Ay-Ea}?]ӹVc׫)"t\3[m WIu5z\]9xqt9h8!% r- <ٽwasv2g6PLbSśCsm" Kr$Q9#&Il՞E0 d]|󛨁m`#܊4b1;ҩ[%n"?Wkʖ740Ӄ[.Di[eBSo ?EP:U[;Lj)Φ |߳v羊 Mhz BIK/_+="︪(~yuK!wSpS&g(=0AnšZuCRٸtaU&W㞄D*ZkU7DLG@yYL L 7r);R آz'Y-iôeKFuev2" c*j4NJB Ls%ϫ)Wb|JO_?@;fYEh@[GCjj!*8瀷Y(,/q[A|͌anQ!ƯTzIZ1x|PX_Kg5.+xacV}!Egx+0_S`hH:w x%N\8uWK% v;s< a?${ytۅOz"ݼUilr`jٌ2Â)*%v(%+}PʌIX`,U ZA#tJg[f47sti%anbDW/ V/ p2?=jes,36pyq"/nݪUy[&A?,(̽%h,t*Γ/'o"ckrZb'PAIU /ҥ:XciL$#Y B4$7zIm6BN+JrcD,VL2;YKcK΍@·2x[RE*ɝт&%d!$_]>}+˘9t^^X|ܜz% }1c$ U&Yd U[69uYf(b!8VyYvat2#N$c.oZ+1.WqŘk*B },Ї#;YUFT!7-v{ub>z> Ze,[Di{( lJzei>S"yv7m;Bd҃W,_C7zp=*<[XݽW֧u Tigutnv曔1וL=P! ڕR g(_ Ʋ Cgq^hzWNg=Q@_`[bl9, )NR&E6oI D] k3P"kb%֦\4^տj"|^.#h~2_ۺ;SM>X tin1Z6 xf6{SM `Лl~4Nj32͕*ړts nt%vdCLk,7{0J[sm(ija] ٹinlv0rW9b#] w}_ȑN?D]|"m %^~=EB"8ު"3#m!k-Mv x0cSc[A߬)09 ,܁ Ap Z_ڭF0[N"k[-TKFN%C?#A%Ø5:Fqc#:+57`y9X.BEAoT(Y,茘o>'D%oF-Qh*ۆhTt PoYA~ÄaH0dafF"{#88seoV_z2zص e`&\PX3%_ŰZ^yz=/ku1 h̄uԹD&0xו?ժI9vAl|ɗ@3*Wʂey?%w PKNš|-4 t?xx+8=W`&םD}Ω\ɯ+q5d\0:ك[P i(s;`8to~lx:f|n 1M1Ƶy)y@҅mkx輬liGYHjy˾Qҫ7]Yq7bE=PC5t7jbnԨ@ ?:EfJ% :z֙]r'׼u|} ΀UJ#4R|t+ 샚TB:ٺ |CyAP/ہ O2ۚB}ƍ(cNO"u\t)0'c#U'jE@WL$@!72"l*)TZKq+_+5l`J2ay'{,ɑ vQ&wN8%A;FBawᘈ jEO /e|fAw3њ-XW,rQK'p.Z ]zάK4w+tHBy?D9߻أ@7>k-"sx.I!]x99+&XMe.'wOXU= 6Ay6h-bBP6}zb-U䱼bS0>_gZ`]z"DafYo06\VC)gx<M~Q9qw}V1:2eaHp ^4AQm7 5gֳ(2M/1\ H[k/Ex%MYrsJls'JxLK k!Jnՙ Rg 15:2'g|]TӇ3 f Pܝ2%+{yb>0oۙʲ%b(D!EοPa6PzM2z$em=2*s#11W%NPJNTv=m%P̜j~H#qg9)ӘPPڷ25IYAY@aF >#%(ϧT٪9G~JXJnB[P7jN{YNv."L˾b:6?")?8az)Yp< LbGVu~*GM,ԀȇN&"ƭ]G?S.SaB#C[>*ƚ x8Vg^/}}FKUU1T=: u: 9avL!&Cĉa: Ž>&&=QY톓&|@dC0v&[ٱ}ʵĉ|1w3M "7g'X :`u!J #&$ 29b]6=r^ԵV~e!W3[fՙNmwdz@gE $N@N~ĉ|>H2M%'\ACOx !UuLX؅%tCeۧM苢_qFӐ#މT#E-N ^6Y~ᩛ`V+}W "d#֐gYZk]O,'v3DsaتjKrUA~BPgg^o~ʶ'D/S@Mm.Wf( b Xh~ S5ʼn@_&)QhbqMvsXT|oOPn)ޛ0^5:z%׾bˆ)L;w]":/ Ps[;F%cɿl*]1 o"H $Њ|ځ;%lqB]^p7j;穦ZOdJocXu0suIXDjQ#HLGͰaMb؃Kp"CIƵD;2)ZeHP=ޫgޠKwVEHȉz!Bې6]ES\+mG4 nv*tZ ~hp+tČ(]L?APÙ #8Hjh(eq&FJ]"'|=V fn$ ֡P -{hUGOYs,YZwlːEX 8H>>@g[x g|8\!Z*| /2¬8{J :Bk64"F T_s zF9;ȝbpF ̬ݙSh_9,ƏPezݦfKnCx*:Oc;Z+N޶qݘ@&f<kڧ@fa,5<٘W̐x>",9ǫ `10 wViQYb { ^W5iM*MYj'*?WI MVk8TZS_g:qz i_~#J_^I mkg 3`&-fv`eS%239o13aN] -&b5ObK6q|L!()j!q0'gCͶ-C+>9m ;YB~u,+fc %s@?ޫ6dh(;f(ϳ6@!ɉx{>s!Uy^1 aAʰq MH:@-{DGc>I1l7-ބ}/,.?,[IuꆝUOGJ%zPP W4)ܨG(YՃ,dI8֙CS}NC Vo؀ڽ~vw_l `1cK8G'w&NXuy:H‰&J:-omuJ6V^kM箹;B:=FK:XIkkInRs(YsL/ gzY Li8aJY6αAagyWLS"͌u<1B]/0"/o6wL8 qcf Y*[˰༔i'g\j$abmȘX:p Kw)lw^aD_}1M!E:q^9b[lB=gW?y+ݫ)7#ћRa=q^AcT6-Fv4Nٻ_]_{y"͛%:˹@P0>m<-| xa0/b80vvl;BT ,xX:,!wZG.+'#W|݄cC)pNSo^'Df| b_ђsU13bJ`?gSXZ:8(0 혽mjtT=d--#GoDZ g# kk#GPLT JX{gMz듾a?3Z;ܤBhfz|JįCId̎b!e55;9{FjԜ fhN{ZO)2}"ff5sىN㮎ͮ2ѳogi,t(#FUWyj_E5&h!PF nSG5ZAP"=K"qh0#e߲:#RixӇ~~Fv\vt e \Bz,WѼl13_Z+*U=s}RǿY}?s^bZ5<ơ 4;X櫚dM'h<֊h'ZOdO>T "nPu`|6rB4- teKjL!;P%<ڛuE$rk>"pnhƲ~&t*w<6R6ZSI@/xG#^]e:g,u/:dRN/%#nwKm/DSD-\CHUyؾZ/q gЃy4 .`}н V> 8E+lvW]/I!sӇ(y\/[:UKSweńGVTlE|pTGi>0+:{ѥ W(9[[K*_][6x˳0NPӘ "HjhV1)h;rʔdӚ'v9&i1xEvZB-je_@BY^ s4z`0㱕,pm*pA.(?蕔#%U %ғ& ?'D4yg|X\¿,=մJ{.ӑtLf`֢ئ}[S7Ȕ9ePA@2 6슱-pfQ=t#lGפ9ydQ,)_AR{?KM ӀIxf4whgo9]* *,8ȋ&BM`"$z"TO?{&?I&q 2mzL@*Ag3g"(9.n&? 9:M3eăW@A{3r4c߇P^DE&»~-qʒ%/"T}qyTb2i8N?ZC u\!(F)*MdSLNZ\by @-b6| ֹ֒țK9G+Ɖ{Ww[3rK!y7{R ̎"ܐi?L-f zR_XUFfvF,Ch|{-*lk1,@t\!3W[mݛ̯T0 m_Vf'6 @@­U╢֐JgnfdWC} @ש}.. ?r?==i䙣# gR=f'xM$`5f)u8Bq>,i=f_u3FL`d}uW')щp}xK{ TVܰ)]<5SZAG_\MXx"g6[!tc UDU=d|R<tu{ح!w{2ϪCVWJP/(F:u{!\OF^T! A,5蕒p6 *ΛD G.MQM*4+sYol#GwqNX"vrj7A7MY3@JM2b{} ,.zEQݿ!gv@?BEbpݝ/?jlTՐp@(M^l%fdz ,¤0:&+u%g#لPFp)AiTVspeջN:hZE&H1铧I⭺HHDB',K={1fv8'?laygupT:R/[AeN{GӀi*x+wgcamf jȖް+\Aau2&-CJ 6{Ox5Fu/\g]\ Feri~+Iդx4٘@qǡq4U4ΞNQCDP+%q%"4ݸ\"Z,Vbs7 I4?\zLhߓ]A_W⮊]dI% DNo 7&[DDbwHU'_' ThЯhd`wˋ!/gy"6"NZQQn!.iiG)"Ay3@[AlB؞/z2`ꢤW a*Yd̀ݛ|IhdH K՟<HS Bi&"IßiI ^'49rYյ68VMpǁ^mx"n1~B$_AS&;6Ev|j Ԁ /SF6Z;5n-${~@`$:ΫRzH:B(Tߚ<|P֬%<#)ZfyzVHuhŃl L>f$U%5߹bsfk1@BF A ` ے oXzQ ~%ՏtV ltmc R.q`>fjxmϱ" ?;o]]ԁKrSU\%K"éb{]6iN*j4HI m<˦*1cesDhUYyXܞ"eW*rRan!UtK$a1c҄kk_ڣt6w2 s^ bC۹ 6%u~_k$q\w@wDsz4C"SEIK|Dt7"ui!p-XEjT 8{kDՠ0diܪ "}Ɖ2DٿI;ldtInrInSpN$lΡA`2Kz 葤K=@|P;Lw!$2ϑ} ˔VF(ʋ <@>zghb&7_:͏<+c:4}nkWkm./gB6p/f=IPOϼ}@aWtrE5B>n?bmvD#}Sm`2e(«:JmcD~ JrDtZ1.{43Xi s2_8"RzcO`@:Lނ߅)GU#YiگE@svN,uaŧK |\J:I;-Rbh6[&r)43bo~ wHsT̝C}PUr-8l8E |u دb~U l.{kgN] {)8x׏1}2G8Ւұ/Eok^yq1·Ln*s*G*QeLڐ^s^klQfS,^'wS`,ޑg*Px҂v߮qX*֜ 躪}Ƭ{)QCsP:ӿ~#|>,Zv# b)@ͩLF*" RB@gZe[CJN>B=Z_AjYv 884< Seky3 lMaJW#(ҕIVbl,G_ڨNeg]Bs]3^3g(_ ▗SB{Glj|xY:LJR{F%fIB =,/q"dXtyLRs{:Ú Ц{&QfPl,5S1Y.;d0.*szC?19$JkW4rJsx( 3v:u>st m66A='Mq>$ET&OC]–Kk9G.zoh.8EO R#bF:`0R"375h3]\-C{,rʳ0u74/Y;Z6'~>(4( Ѥ3F􊖹FݧH TT6XZҳ_5kN<PdNz]=<B*'Z\-)ȳ3ziƅK{\싒ucLr/W> 2{CߖcgZ7C?toOPyɳb[7*ǽ#7!QGqiTpmϘ(17-6SużVIg?sdf6-pF"9c4AL4R:*_,>+Mc;mQTnA dXEqbmCÓˋgjI3S^J䣑XYU+sb9..m#Cy}d ` #}`U-xg-DQ"ف$`ǐy y>W0(uן&8qS*'Bx4m~wPyOC mk'1ֻH n8.YZ%w^Ͽ6X8qʢ,FO,P1Ϭ{:lcDv dD46]$ ZEp$dO{Rw&O$ ,k\ab(e.M@܏)]tvġ|D~2@uX1W%0fzwJۧER,dj%7wzH][f& (`a{vfПIP6ZIoB0JOyN߃IM} 0)Ww}L ̜D3:_H F&߰/LB <Dg_JVb}n=8v) Ԃ;B_0KZCF 7eQp/H¤Ϊš\̓$%^9jRsWRl5Ї!м@"]*FV<+%k˼x8}JP?~fegJRXkg>5~[A.IXyQ*e'Vz|]1hHKZn=Yin5g lwh~6!=ܹlV+ܼF&{(>9mYm9qU1m]f6-_$?l/h֙9]ƲA#^Hbf[0AO k1TPԞYA_]H$z5H>WC;몞i9p!ǻ;T)PzAsДa +~<z70h$DjwsE7xkbdWgP>cYe͔~4YeczX%% WПU]f7uwȔ8s^ ރ>6HEA["^Y\eu}{9 )b / 2׊Lغ6NJ<)-  `)Z.xLM=$|m:76ҫg~(BqֽٖDy'&MF^K[9M{Xf5Nt=&QcZUDPw lKb~z@ k,߂pFaY}<۠7J)>PiGɱ:ù,Ր;`덳͓D‰i#"y~3DN^r^?eko~D_4JJ^ u+LT {5X!5 58%o)dϺ~֗]zqqЪ <ϑ }Aϱ@}J*h FCڢR;`+qo"h'(;ʌ>1Uya.!߄сSAl:V\Hd)6|~Yś=BA;6&KFM3G*S2'ϑ:0wFx =(hO'O8!$YM Yl44Jٕ1%Gqj߰ox :6|2n7~+,67J,%(ޙAJm-b|>]2YT&t!QG&>>/);2lD&MILQ;*GVBF׋ftlT@^BD;לmK.i{ɣdqBھb;d#X@̐iuåoJ: 8NEF]<$;^ݰ1Ow%"f # qSFƁ U[_hӤ@ @GTUY/}G0-.Z|ϗa)xJ+tbE375p; klHU|(8z .'L:yR.f#돬n_PCzpoԏaEq)"XC˪o ѥ`'~$dYR/|)9n1*R.i$}{ەzL2a&!+qUˁF0I/X>+J+=tY?Ol<&tۉ*LHs(҈ݷpka, N@r<$}bZ SGQ(5/{xl8ͬQi|X1C3\*ZJ^.&Ӹ!-AAeGEGcې#ZjЎ)g5.<)H}k>Mwn8vᩎnE2I9QS&zEK,o)`hq<}q2"|5¯JNJQE1e(° בSҐ+ֺwKn,;9?Kdfsu(#.аW )9Gs_c/9:^N,t4i句ץ/ɑ*cD)M` LGkϿQmNɘ9M|66%=Y ,CzFCN?&t$_I6Yx_9~qG#~0s]qNv_G)114]sh `eZ8+5 S㋢;`OGH,I ͉hҐȒ(>{ƌYL}q]S,:aE/i $0mZ {ehp=ىNBh/eXQqL9|ZR!WS:a;O,/ͥa`i~_V{9*W X7YO"#MplO(a!hе Y=XX6l<ِV݃uy?L.ӎJNO"X|3jLu1w($ɂ^ܪz$)a'< V8uLSd^lrj<۵$^DfG IÏ$nrkN"j djL >ֳ~,% g[I](8=)0m0e޷b@h81܌|۠t>Ƿ0pҦM;TX"@$6h9;nozo]b]ЋaUײ&8Y]YcKMރN٠g9l)xCX/:%/۵Ode9v_XsODr&N< q ]>57Sͅ]x, e.o @8%[V\E3m`%˒GiTZ4WZm :Q߄Fϣ"{=֐]5;ߨlE]LΡklr(V-)-l%Cj*Y [ ?FwZzj4s&7JAPX_.άHGEnB= رѦ덏>,o߼,*zz)^v(˱,8߈~CCx"@I/B5̼o}=mq *lCflS?S~6E7٨VGC_d<JEB*_E#@qt9D7|DZ%xn)k_n۴/p;v'+h1p"|Tё e^ 6-Uup(:yrv-9N+I@,9atl8S!>.EDZ9uhUY6t+6BJ*J[g o۾ٮߘ`cOR_GNKd/05>b]ʩZaoA p :biJŕ:N V򴘴 O'3&M ]щ?tA+Ț/',)PumE_gmx:_8Va֜)h@L1EBaAܬLJ_1xgѱ>O0{' E7Q}|2 $)Y:eT3̳ET|eEAq_&M6?uh=[ wI!+tO_vGc_L)?>G#F̻Oc.ὼ{gg\K)YCTJn_51n{g*"(Dl.8!m5 {'@ΏBGmآHB44v aկo尡ם .ء9 wcz~gO*<7-\xx=n~kgli/eJ]] IP>;2DS/Or@@m3% Y q5ͬ}Hޝ00Aγ*n q(ZgQw1ZR}"VWJQ QN)3fkLw\9B+7@7"Ϭ(|GeECit=/S-4酁K`KlEv9m",-cdf8X^vxtOIɠ1RO@yh3mdk=%Ҥ/f:X \ԝ=f]Gy-?6ޢ~/8ę.6-D܁P1o햲? $abu)U=k;`,$)O9bXOm|[a&iK2`Щٹ)Ƃ`ɞ%iOr="~!ſ͑GlS.pZZєe!Mo(NԹl |]ݍg[ C<1@h<Cv`Z[u`Vǂ%rȼ>MG6 A2kO%>\L܁nM_8Y zຈ>qn[އh\٧XNMJLigxye$Ip ъ <U=„58v= QGpωTu /Ecg5OߵsC|vnpB0\ o *ǁ8V Q'MELMyDPNH87:%km5u>`eyСqȖvuã֊q~<32] (q%SckĿYO[|_͜ 4Ԫ uX{[ GR Mo@f#k%Sg!;T_!w'f@*cqdVuNG%쫤8=,+'B8i?3Ood6u`:ۗ,uoUKNڠ:$+ C̐Wm3:)l>_˔QjrdH7X̕F9b*ƻO(GW5|n)/\a Qluc3:ˉYڇ ow)éT0 ,*wל^0/,~G" 4>nŃځ0,)W+*ђ"#&3E8HJo@mfwf<# )C( ~;u*- *DZA:Dwы<"E' LN=TFݾ2a&ߠβ 8چy'wWx1:!hc?Ě*RfeS|U0wFDRtܪuG#|Zo=a ;H D`[_fk nBJs'xW=2Zɇ"T9+ˋjp&Ŋ'8}(bc=1`r4Ph ~f6%"k B@7Nå/-V#EO]K}DDdC8`a>梲ƤmQ's~$icyΣ?6@]ewvߎTX}|3=ёp-V\kX뻜#PO~IglM8W*z(ږ{L6Wt*z'>T0 vcEYtT8uBVn`|߻|bzE!V}x-lνSF -^Erq 0&;TY0 GUb&1)T(Ђ0Z!!]sv9~ZBt'$ţhK&՗![Sc@1 8'e}}m[@k.6Qaa/#V`Φ!+OsbmW\s@Ժ:3. Kŀ*=uDK=_2 7tw ]T(Eד"Mi1W곱 ʀOb6(ԅ4}ؘFe]bhQёEzPEuQBCZJ, [о3JOn 3g$Q%ZmŦ\V#G3E=?.Ҩ9&Uyejܟuºm橍H=HBnT۔`kt%%#ƭi?CkrJ qSփ`shsf֚'[tsλYEߨ2P4VH GeGD]Y*Ɖ@+(|h1TK]qmE9MӶx;S^DV/ι=pTwM YG&.bZ_&x14Op3\GK5}uwCݞ=#=xGOQEhw|c$!+< wF+\NXzdd/. pk;s%)BA6 g,W`zjt{PKWަӖZȅ#41BkiH^K {E\$lr>p?Ci($ OO]ӄLi,"]QڪXSh/]?v+m2)Rt3yk+gZn!0"tI(@n5c֋?r;`UՆ-% '":/J;v:#Q&W4'~gF9cw]WҪm^AN1Fv0B.1mNqSQ1&F&1ӈ wgF6{h|۱:x (ɦwxE>CmIͺ2`2|jWQ_ڼMl+x [RxD3.JQy GK;;.^Cw7:NYH+6x\[NVH,+.3ըrטdǫ<=Klt(Sz$tztW۪wX0r83rl&;* ~]ٸ H_O2sCvxe[jЇ6Sb%LD 7-^I\ikѯ$½Dÿ@垩,Da"D(Je:oϕu0h2)ve*#ֱH)9 KtFMS\O3|ާY\>i h$/ZD*uچ/pnb.YV6@pItyN ,ȇ1S;UZ!~ cm٭2Oq]epT!AnGɜ"U:NqY emnK  F~=`B9?ԛ!He*tҼ!'(Y?rHԈw1q>\'&Ao`>2RDeeÏ#@\JU<:9 BA2Mb^9l-/_?cVffދ.Z2fӴ[4z;!' $6EbB{k&Q'Rnhc37z!  "USvl((#ɽ" DMډYi|F} *RI@<0s =At_4Q\&hWMY?~8)VvDФ,*fOhD׀٠آ"CΖ`:'xo:Kr h-G [sβÇs{@ kޢ;/2QSJCѽcE{uD}4^n}1I7 [-L{~J|Xs!y|25amX> ٟ~N\¶묄]>94,X-d;)m9xxOǚMP\A xmy),ޯ^W^"@3#u0M;ܺ ',Dzp5l9&9W"ȃV1fv1ۑnat<1,rM~c6~ G_fH`Ir^'YArXmJu*np%I/')s6ecFG ka/i;Ϻ$,aYaskW TTh(MŰ$8$JhU>oa`bPծ *ww}1SAQvJqEDU@FCezU;Ҷb;@HKn'ןNgH2Id^vdSz,f(G#",*hSn;! yiYٺZ1yUzU=FysWD| }Qk 65% F̮4ذF n3ue"W6]|T PW3մ6JfT`MxmqZZ@E KR,WԩlWu~ϸQqb*hzBؿYżu0f°s-x8,F) kno o=ԝ>D{Ys()v^a_!XW9`mj*v*] /db7ϥ`9ggz6ZXx}B4[١y+Qˆj¤O]pǀPaMyU`z<,uglW C2Rإ@.ҲM^{$$*k!b;@#~s}C 5^ZL7F:p&Wu:uZ:-N)09XE Mn'dУ/45[4s8-=PjuF=I3ۙ |Ӵ٥%֐ 8$&jC?eDfѵcƢknur%͗=YwNp4%Rkl$ha%WAjzV+VG5ب_N}Kkɭw9%-.1Y&x6mRYcзX"8'ɉ:}t&tmcAJnG܃Lx̞H!wCNDzѐkS$VlRUO9k4|cQ^Emˊi {rh7b`s.,sUjs7>oʃ*Nƹ|=?*dh68 NCJMePuEkY@(TE||궝leKSCPdpW{9,Otw3Eɮ VgVRܵ@3]^LGw%3 >*>Lbn #>m/4n&&,sݨ4WPKuF|͞!!el!2qe̪L4Yc.2\Cvm3k/AUE@2Vq}Ov:C1ȇ')>lu=c*wV$4Е!pj:Pʤ(k QMt-̙/vYd~w$/\H蛤bȐ_7"pEBHՃ-sX7I)T87Mr&~V6 $>/d& P}sAo` KLvpW%}XFEIZ!xbh +;qB%vq/uHEkp6GPǐ9@wUEo.FƾO. =Q?^?H1FR@[|Quy/X,>dvl1ڎ49~nқ[jmziQJX,iE:JMh_z늴njW=CkR!x\_n$HExH[u6EJ+Ҽ_7 ? U1&{|YEi.(maܳN Y!oȒ(f8(ĤeAM3/7ԓ)G l:'J/J;FPD'ٚP.B}>ARb|H5c*8{Ue[dxs o|lG !Tf@eӳlqvaGci|[aAGzfOu&X~|A98MN8f#:FWr(۠fv,d{,ѕU= ia =F9NjI߂f@fVzT"8ۨ҆0|;.hҌB|M0&ZDeQ J%6+k߄ns֣H h. 5j{B% z Č$&I'JDz3 }\L0V#ʹK숅s[-v֦#WD x$+@}\ALN!.2_3oTvٍ+ @ *,8C5[B2 DŽ_U.m` H ;C>&=؃O3"+=q5.a+9XS|D/*]n;V8f+~mD+6t7|S4t pq4ɟBn/sv'JuH/NSbNWGV% VțOApߝh>nP:`kϺE77`bZJxufg 2_IDSsU 9$8=˳.wW#|t426U\d^Hv!"ẠZ@(˙=t 9bHh_5u/w22ModH+2Y,#|g3TABJgS/˛wp/t| FJ@riNφvgl+S#un%[ӎX!M(]jrA1(g;N=eqsL@uyB%@V3{‡ѯI#I,Vf7MS\WSJY4e}Kmh V@;u Ul2i\rX!22JjCa!ꫲS{-}JNBc,mҫ'2*0׃([cUB^_(Fi]嫉҈CCde<@ ]{>+ W<-R{T>%oG$iH$`=^8'$AwvboGyȽud\Q[K/q8Zw_w_ %Ô˖1d30:)XjFޚJqnbƸ-\1ՠBb!^STW1@n~\2q.X\@^z\퇣O89R G-9P{{bG"@sI#ox͢,/P+|%l gme锐]N[V➿}튂s{/Lf'41O 8T:-S}E^mpx= 3s߮X-lZ*{L!uC_mh.Y"qe>Ph'SCl N@kP|vg(-.8IA\p/[_ pQ&ɛ^^zRUZaf>J\'\O,Gd1{O8𱸍PFUcqK=!@6CUFEhRW*g2=.BAG}3&%xdAhqIK3Wy7bYܽLpOұн!zXWz]vrǸJYs `{DMLK,SM\(#FOjAE 䲞'0e>.UŒkhndI;+w#f=ɢak%B$Q dH*I*sŒw߱s\` HC%Y\|G"]AWӸ Gz4˓U/vP,c[3ٱ[=945p!%BwAIZ,iS]؍|+8GIGˑ  |yꢏߌ^:E Pߨɫ'. 2XQX r1^8mʮT.:Z2BD3)w^+pQJ56[C!Qο,*}A$zЦ!daSЂzQZX||jn22iMi/J!i2;x"a<w5 jUNn擠97jG1X R‚5ojBR? lYY"@b4; 6I[ ;q^3~;'1~7x LT-}4epr hIŢ[@/K ;,@@^cGvU "VBw9V;񺺞oH+zK0ŵbR]{@|BdiTG:tnMu]iȮI{cea]"ܺڱ +mlr%?8Q2%J#D+BZdHAmaSAN|FDP_56W7^QעSeɮ"I79m"KlUze w;K $4U4I@/_hTfTheLA$wˊca *f+[c̒MY~͗5\R緙 h4=WU%Բan%:Oa?S˸E'!Aow}k}Rvk<ܧ n^`3Q(,:e3CBd7Rm}T4lbG!Um cN p\DL ϗNpxKͨe ;\.[Ԏ*[~z?w+Q8L,ǜ^HbсavkxI]ϴ- ׾f47B({TB'Q^9-u>%B!h\sV`bH27ţ3ow5cK kH솄& 0;uj'5> F-Ey8na%Me('[оQ["VӱSZ(7Díd=UCQ(8фmik$ T#й"ʃFrVw,cidǕ_Zf%n12s淤,b 1ƒR lDnURm vZ1[\UyԹV(K/VtkA4P<:zj0?EF1| Ҥ>`6j|VDǓl?70ɕiB۵yMSszx 3d bIY筥V#៬> 7p|L,ㅾm_-~F9f/˥()h8&R; 9`lPx5XEFdmp%sT Lꮐ&WfBIA;O1PlPEAjq'9Vj>{_|zc6%FM;D6hhڪ u&CoSrgB}Z?s9B}?*10hHr\G "k@Joo~])U]3a^ibTof`; 93kQ' e'_2Rh'o:f4՗'ż&wӶL uW~fP8JJF-âIOI@% ;#J(x⽛i4(5P ^967T,KBs'!׵\i==Y?Zc]aY0Ewku.(#[FJejMEʀRWY$]W9c 8y4+vșfyȞo5.v_OđnyTW4:_+[.O:S|OUW@6/G+rGX$$o'.W؀?~āT7<~GKj_;C90moȬFLMjIz֌ZjS9`},X͸2dwȌ%.?XeХE)|bF!U۱aA u<>蟳ӶQI݁iSiɠ!̴޾4;<|QÞ _qGg^jU7VF#v+g W*ذ?p3HrqR{Zɗ,T@Am8*}C0X" =,)7Ek:n‹gx}Jsi,aL4L~S ]vjg? 0 ȥ,SK.:X8$ɼ*Ru> +>fՏfåg\o7`NepAyy'\gPCp `]ur{㚔K$xl7P%gɭ/ ,٬|}1 ƿ@Y1,1:#1.+*koBDrim/ȵO<վ4I&C8=\46 P[Àן4Hc [aqELg}Ym ^R\1lVp\e,$G2od8Ӵ ^f; EҘ(y?Y|0Et~"^}i,{}GB>gbYdz+OCnPuYR[<΢jaZ_Hx&$`wCɎ0E@]p뚓ƖN6}IׅBOѥs%LCAQ)"YbB[Fk嵚R6bud{m`r; R;UW_JZ{5_2< ;Ŗn7 y4n[Vyhրew`ceѤr<Ţy"slQD O2PP}[] TpfA\U`2+Ow(FNXeE(⪀ѺhLiZ:C\:neK/`SN)g"ۖjY_Lmqh@4(Aw/}6Y).%22WU-U|: [iF;ט4;(UsQd' _߻У؀0Tj.;Fpw`!T$3:?$ovIowtLeG$TsXBە2S;?cZso^!vLo_DuF{|)/KK s5 O݈\BJ_|g0r|O>ZE (QMΝ;eKHwY{ h"l2hnGF_@۔_z)|#DC-%V$\3&bP|R/T wh hӄ dPTH5GM0),OzCO鯒rfVe8.ۻ)F x=\z4o E>IǭV!]&)fd] r`/v y{Y\z(?d]?>|+;#[%ȸ@O\ R 2+FN(Ɋ1v̮ A,EalޔvXǠWԂz00[H1bId%b32p\"ktq_cOj`U]Ԑ X#Ç[/;hL.TjJ[^xoqBޚ(#S,%&;(E4E/^(" tv{=hp!ǁ))raΙ7p-bKb4Jᓘ*4 aAȱUPVh\3d@ho|훘^}ے!mrt~pEJkŁN^Gҿ$_g5ַvRg>5)^mл-?>Q*}70?wR㮯-zr]ȬtFNYuɓVvD KjX7rla]P7Q?hH*2$!tZnlo,"cX73;%bE<(e,vQφh{ +h<:nt*'&BN̘V8P77mmfǏ#P% GЙHBeRf]M[W }8NU"Y#s.G :3sT6p8F5Z ڸg#˺S!HcE:q%TVVMK}K@N伳`z, :T #Jg5W]tʟľKrDqxa|q $zwTz+arX zꗠGi 1J^S.i'!TjF$ôpIJ3}kLo鿉x?S Vʜ y˖]Bv^,'{|l}?ZǓt-6{*Ht`T=܇y]! =-r?_rKշ~̣Y!gkLÏ7~ ՈWJ7e%Kٞ ŏwK]kf(9I.Uydlwg7t=* H"*1"18<[և+Km75/ ;.HbPyENd! j_]IcI>Ö6Y [9B0rVe/UK$-:ǻCw@(,@0l$#^&D 'Sօ6Fc^ۦ-l;GkЫ HWbJBX5 V{IEgu XFXżA)'z9FUB'!0PtW6vs?") a} 0hpҧ.f[9wuGL$jlzP&S`1c$$4!ً?O&-!eo5CYgb̻ATG18m9JKWț5V)MEJP=m՟ UԄ0t]U>{4E%1y|SF|)JJ.#)׭ `ahVyn2bGZ9L_6FM'%J::ė[BADVw7N;hΕ4柶:DD򸷵kQ^CG4+1/T6LT{Y'/X'K2E1#3/\T߽C5iHh񂋮6nozw*3\}Q(Ƥ_@K Itq`̭D5y{Ic'0ZRv|y< &Hu@ݡ=6QLNrt,Ú7k3sc8_c^B+ƄfQ%Cᷞ$duvU}%)"x oQhnN5~L#EsxѭsDM .<Aϵ +q0LkX ie:?n\Q:v=4P;073UK,:yv%%;氾+3^aP}:ok|a1j,w>5VQdkn2DasBLgl8Fo$}0שӧMᾀmTc3X5no 2.DwP&vfG8@?5|'.)N&v"mDânv3BbMߊ;d~Z[Y”w-ߟ1C z^) { iji~L -7BUvt`z^>[ܙB[~T5O-ҮSͧ|^sՅXbPOAAcg͚s[ tb͢n*)PT ImD#ѭ=Æ 7E ?PnBsk4hc5]@hjh+ d)UpXZ*̤, ֯-;}0% ҫv 2q$>i'f"0}vhէF#'m~2Om_pAG8f-ü4 c0 F`l_!B~t*B}h>ܵq9Jj!lþW ZB}9sšfty׏o\^5#0~DlƹC]f֮var47(m>DbP8]~^-vsXH-w]r7}.!>/?0DvH"Dsk?I)͡M4iFR +Y1zgslA'&! Lq̌_BY󙠲-jmiAdi(T-)0/SXX%*LTi3*ژzbM=\%俐xwW![ӑe)Uf[*YspOYtbVF\OW+l.5 ,]x8 ed_3}j;s8 ߕw[dev6=*1abmBG!"*`hb=YcwH FRRL ˸/$P*EuqR"+lSƹN_NjB (4Í*+dts\^oҴ,Cs? 2FkwW ?ݴDn]|sRU cnJ ֵw6\[n5{*bak!K| Om;54Okd$&!rލ_mϚ%]1x4ǦE(a6-UBt?Β}`YXDl:by2i+ C?`uJ'q@yԐI4Q皱厼0)~XDŽ`RٟQ# g.ܻ ^$um/ةu;i4!R؉6;|fZ^{)x\E*upVtԮkѮY?% ^IE/Vp<Vf?[Q(&|;>(q9.ez QQjW[?ԋ壃/F`(gOf @%mEyBB6t5M7(H x|Xs'7CY5KN!hZa@;7zFF.*0p%z7y9x9EV UחܬmOQ5idtXw pQ`s@.,)>"4(W3-gy^RƵ_i_&Ԑ(N?l!ed6`lKY&թ ᐨo_ Yjg$BK)k1RG7c)c2%RID+bԇJ˥[xʐТE6pf?4 JHŜ僰hR1"accQiRP9 m**ۭ0 _`sb.JDW_]fԧ5drBZI| ! dW=w9>-TVpdxOӸoFy9,2vmQ=B0zRvkOtÖN7V;?ax{<"jñ@>+x!D|)n~G<Ԇcv@"=Am_$=l_pAѾa@14DxlPȬ0U3bQ $ @\z2A썴nsW\2\ƙ UɇstjWdEu@ 1wS㌹UAM^0s}Tpbr8U!?n-AŖ K'3 cs[ѱRjņjљK%6uXxĠgo.@Vʮ1~ĉjJ $ٔK"aFYkBX$vsR%>J4Ŋo彦"Y2n-HmA?U!i gm޵z1~V4`el̟OsO!o!C\v'5GW/( . j-W)z'5#rۆ_RV˓Qi OQQsڞv`Lq`QZW\2FE?R Ȑ6# Hpx{ٞ뭦[VVfb/[d`o̕S >9RkB c~aooG q2˥\.zZ1AYnX1MqwbG-;Yv&T`'>">6r> m /t_1^ )q.yJ)ܲ8v_jCkn]$go 9QSo` { <ӵ5Z:J.nMZy*WUxf BkD)X/IeN:bV9ݾZ\ծv{!Nw!*sTs@פ2C.՘,? ~3`z_,?U E԰'_N~Ek:sA/bտzx\[ў!EȓPGΑ犪èV!д2Ői{2K X2uxXVYl>OE;hwR)M6B )jܸUAPq?#ޭ ܼ/R=F 5Wr9vdz`ğ[b@Of|B2Oq̍[8: ѭ `zRվxbmvчz~ !HNǰя4gPG_ŏP4~iI/ Q3<Pۼi,-((]MSgcю=wXe25W,4s|h*spp&MԥW焎҅ ?W IÿeaLTj$sʷb^:V??d j QTM]Y+҈,Z&WŃNJyL^dd ۰ Vl/PɴKiɂ&W@p_TEҎnphkIbt[E9 to4%0RWII͍Y#J61 nșEAv 6%PdcVkEQ#sqf܄U^":Ã5ۘn s^fbyy~}>Eg6ׅOi&GZftG ]<%ȝ8ps.rNfNl|ᙩN|eo:8l@dz,Kpw;I6IsVMCſy;dE({^8^?$?S`?\x@9.랒8NN6 ЂC Af=?aR 'ҨEAQxNrS~Z8u^.Cpm|`n}\JD<$聛|/E"p*.[{5 zfzg\ qh qHkqCX %LJ׿‚BdGOZHG;Ԅ<6 Hr厦x9j! 㪬^v2U|ԥ&Q=;ajXN[m'">!˅wX1b= gٖ }6Ewc(,Mfl3*Afʃ2z8~AMȔ~Rmug>!f|VczryB|  +enFka$:h F_-@vN 7x`N/fVc jkT?HjUr`$CKFiGaK23Z՜v2(FB"l^OnfM4Ie1cw-,:|!Q4@,XsL/a'ing9HG´o{4C`!P,eIiA9%RA#$/ NN7^VG `_i {/p,XgpO.jy4WZa k84 \HnD<O€;&iI#NYy;$jE@6#TWN_7FHp`tBH \ũԿ7@ZGD^1]|tgXujHY:sleC0C̳5}V|qw@>sMBjY,wA8feσ s=y6eܟEb~ΗY} :'y (GXT=lzekY{QHr-RبP co@_/y7A(LINꕁϊ,Pw2I^š Zd4#uPv0>IYXk@b!XӾ;CDl@4x-)2R x{4p1>[FI.pRC.X K{YR+:idzҎ#V\-ıd(XTNu/0hkQVmXlmN}1IOxo-!WY/̓$;4 qW[p[*-_CdP"k͑!\7O)#p8BL젰ֵ=M]!L[d^-̘DssT2rTpAsh Whyx`ݯgb/'I61X &\y3 n Ykݪa"ôjnV};S[(Sl&T+pJK5~i۝_d[tpdTp;'ܾPFvrIePe+d! C~DBm0$hj \E6Ju<:>J12`]=} FP_>5s'Є2No{XY/Xrj=jpTYO9#G$4/(- V ?JֆSզE.'Mpp!!wT'qiɟNu th0oj I wy,,ǨmCz|v _6\9t,x$FqGqs W.F7igP#G7+gcu""HhObimvŴe}ִ ^D4t7S,1 f^e:\P&"h5l$yFevu_ܮ3?b3Qŏq~21؄yh@kO+Y]|Jh{vMJN0ᑽi z4<3<Iu{z$6Z0~“iO&pwE hqdmMiˤDEy)AԽJ6dCY\AZU B$1[m]_hi7RG* mJ^1'S{d쩎aci Gt^gBe)H) mAu&^- ͔Hj!, `!>%nծ%ڱmj:[(pTTKCI 9 uytf]IXy~>갡#\kw/58eϵqh}U2?~)JdBۛV.ZW{/eF_(HPĤ|kw.H|ݩF RHpaj5%9TUі UB("(w QbcBFf` =B ^\@ \ހnbΎZtRSfc+ hO8z=2M(.tp Φ5XD E1<If41{=Q!efd@x:~ٛ8Vrk/ }LKsAU<leY IJ4G%)6aeB3[xֵ=yxL$sBCha[R@{mhmtѿȀ^t{4?Lѻ%aikxv{. -Uf5N\`"0>jT^zYS`=s:fzS}g?{t4ȥsXq\"Js>v$!|9f}.'ȡ`&}%(Q9]G"P&hCPy4.75kƆOgue0Sa{YFwͦlc[m5679" W+!/<:-8̪ }q &MǤ+jtp\\VxuR}װi-c{ Vi%G3qzogv=v{IUfRU-'أ%1W"g UM3 dzx7;;Bkw6VLb+!j`*Ut5W.Zn^]NL)\۰ڟ{!30P.m^:ۃ.c3[e?ZYvER)DjP:_^B.K(R#"s'WPϗ EļgB KdM?%p:Poj{y@b- @Ed-B{r^A^'L-鎷h˗JQ(% hb<y@hl&[W YɪCgjXo W%>*d(D_N KRHQbz *h{yd1߰e/%D& BK꠪zފwlQ|pwbe{Pz@ 0%6{/I%^8ro3E8 |xV Ѧ2WSvq21 Vaۊ^@|>fvNV%RFn$65HIX]5ԟ"H IvK{1慄'IM_RW}+ݭ+/PaIė/`2Y@}_cLȼƫ"uWhr_=|_4p5{OY)PwfDp'S[֑bnpE ?\rQHi@FiIB둊YyYZj(RYu8'\7@uV$glڇw7t{־D+p+ k##(执ҋBZxM&?mQ;ut)012qŀʰaPgnic.㓿Y<{uϠRem_d~U;Wb%++ZB5E;: JQ:?ZyF+|zmLd1lHx .}#U.X\qoԬyz5l/9+0=kWH y䖺\-$"%qY8< ; ^$*eV-oúxz3K1-3p.6X#=D~a[|[-B2hBҏ~/P_68PB8& ӟ[R ǚлӦӎԥr>X[&$߾C 72u͵J-rcf]&?o34]M@o肣yFxzYGJ.LD@B8dPV4:fj+O {`,:֕:OȀ3d[Uu7oVrrI>K W9I5چ+GZpFHS%\419;juT~Hk$%{͒?4,vDi~t/qfk\3hl3*5' Ӻ2;jdkC ꓡe˥j*ڀ2GO.:'JqNCB9n* Z;Np<\ޕ8@iqSH|OiCעeH?[Q*~TE=8Iik[A"UQ?| )eV wc-`Ru4azC?oHvÑ| w `{Ϻԫj'SH">9n W=[ N.S/y`aD9ěuvRHin` ;\'v2=Z)*ƲZ3]ng‹HWBhԘ-Y9LYh6Ԝ;pVޯxBif="d,m4 p!Xrs3'2IаnpkbKjFp%.z!Yߎ8<ܡxs1rl}o@BoZ+f"OR&j$!={a6bLј3+qLB}IK=~ tQ8b7p\t,"}&p_!9[ >,eCI J:%xa0տ~)("Z4Eb,㢎 "a;6Ubc?󓆿Asr'vYd^Ok[hFjGxΙ6v{>$n']xrdѸ]o͎"l SRwcǩ K%[nɫJB¿ߺk@O")K >e Z@ | /?k#=KN\FQ#(`-:*K`AQXб;*@˨߼q#Vޕ\RPQf|wLH\}=KF|[{wǻ ,{UΩBGW9Lh٢憽0 jGP[sM/6/'n$T^{dQkCSG3>Qy, RK얻geT5X¬a) j<)CQs4@zzsg`7xCI7S7 }UWҥV摮h =s ` E9Bο\P7%{GQLOT{vkbex ƶ TZ1߼> ZZ0/dUeGLw FtJ&a.*a:Yw 0_&Y鐩Wu^_# $?me!Zh:n^ EbZz?qm8Γՠr| ;{xI&heΨN" 1l'O\ rpy0?6 g R/^-ї)ɼxF[bze'g M>]ùRKv-Nu ldMb.T8(Hio*2t?WpP,SI:8 ȥgݏt] d?|JTJ>|3 w Nqpy7Lv[@Շ[X QvWgfi%8u2!fs)G I!SRϬ:r@Dֱjme`x<'Mjd&N?F)rO?m&gO!ݙ2M5)\k@TW&Hu9% ;0+(~ X?t&9d> $ytYM(>,V1i)K 1)*`Jv::Vj̡[Z@pYIjHQC"b J ,Yb :1jdP6iPq9%"76]8b?Xm"i"isc+( .MW{l ͉@ŗ0/뼼oNڔgyϮI5گL !}h0Hti,F|GeO'ݘ G|6Q7dME:D!vKE~XL"9<.z(!pΏץ6ӯd]O8?h ?H :ڢ[H cN=Ab7d,ϫes5(x MTnh)E8$ݧ&y# dȱ:ؓf~|U_FJE܈6oǺUT)R;uI(}\ѷ,T"IXcoH=>-]KFss+%;eRYCPv[xTܻ/FBp~5!]3WzhB>Wر$BPM2nRLyE;L,%XѡhϖoVB#[.Dmڳ@* coHFWaSy-ᴗiTc>j U\/S(zhQ55ppl7h@ Y ڦ[n]ۮ]e/5|s5#:`Ӷg"¢}u+$k@IYx* dIߒf{ 6aK2YTLc ~տ7.c7*U(.P+(Ge $ ܰ\D%JG,nrµtk8a`UfEվ\4UȺ1gqwif$CS¯^q%obRoסySX_at.]NxjX|4 6_K+!'A .l'ol @Dpb(X-TdSL-CzLtu2~mFoԃxIׅpZu{U;)AylR 'a֚_~qt\g ߋ] PSUŪ\N8VfBh5nD*3 7Ծ(\\adw)q2x=P+O$T6Ǯ;3E` PLPJ;v(d`]<"r>+yq3RlўA,lS3i3}!co98\̡A矖hmU03^0̋t  i& qM].)Hs,|,,H@ <^G4kY&(1Ӗ{1>E6E 7j${l#Ph3bV1XX=W  tmqk&٦ ";'!Zdf8MQS5R!,nByWzdpWM,_~q3$Z9b)S?FƬm0}Fߍ muވ[Tsא3?YLPH ݯkq1bRKs#³(HԿ^At MEAcQJS AVcw1A) ESp)Gq[Ҡk`}an %-FݔW(m3B 6 ] \V SSޖM_mk2t{KX<,2Mvau4u{zL3/UA\0mf;^f?y !O-%,-5o!xһU֠og1L"l*Ҕ /7:jQ. mbJjQڶ&&wjweGB$I@A6Y@KX?R|aoURXwEЁ4kAT>FYѮԝeEKr=2$'ivG{sg".73`ekLH3/Q/]dN4MJ)diWeG)p9VD$Q#T?WzG 7FӒ Ϊ<3ۦZv6:cLڳ(2l &Hܣ.K :D;#4^wlYa*oE,!`K@cЙtbhlA.yM*8~C8^eCv,-y ,B1+lůfZqf݃+g~TGCquz]`X"[T"%A]9v-\[,\sp!^˘F{/RnB+cFC%S  ׺&L\=D^`E*n%eUYqD/SP{ql.!2͏l+aQHF?<Ѣt<frM_ ;]3BMxQ O:؇A:$OLxO/[3/K$3ˑ5'|ϒ9"|dw44qͤFrc~W|WF7t vakU@1NʜJ&m(:QQKșR(1I&q1N'd-tتnz;, ʢO{IE9*`la~:XQgv꥘&+!4h["[ɓF4WbX"jBީ]rOJ4}`_"E[ea-j/!gXWm_4m+kG΁LoȹдA-1ׄ}֞ M͇5*vTKCaQqaf}tl;;LLJsYoz6iIBY:=tվw1/=Ujr_ e>:N60 S]XQ+d)V6CQ8Y HAbyrCoX4u?Ov@,}jc={\uc&^aRGjl"?PFFnx_qt4ȝm}XDZ.v-Hs$ޓ=بS盚$RWOuXo;Zm:V3g[$Gz▯biTL+=s.l=^/FHB\F׀\d{T|O]e孁]-#*2ѹ}y$!wO@n~'w8dw6@@Nf ޥ/E* 3C"(6is{  -!JfVzK$T{c_5}X\$'R!T!'譬Hz6б'MwՁ@ X7qG|Iun.rll[LEeͯ:Tǀhd=9Vufk[vUfqvKh]Q7 pѢgMrW ",en9<=W-(;;B-Q4DsȚ?ESm+)<q{/ >li3neƤ-훸*4šҟKѥGԨ)zLo{zujE/\>_G~e1,3ɑ6'{֒ ޜ.\c?sn$Dhwpm>4> (9̶ LZ$%X~ !pT}$s:sq0YNw tpLztNo͠] NoLngfs/}3.?ŕU#g@Ϡ*?,WwYUybE u -|mf4} [bSv, S<R58 a0C%LHq>n6s:ik88KZzm]|{בKW(9Mlˇ(BbWaRҷk$TK_ނ+ZOvQ#kZjB`(f괺Xe|&NX43&xĿuM` 'S@0YMБRw2b~X#[2!B䅧$B\͟{qlu,SV \K0iG wAL ÍT8hmN s=HIGȐ{ >;} z96i@Fɲ}/zGRic@.ɰr!6K6[GQ!;H‘öf&xor(zvc Nd*i@ 8u֩\ilSx{/BLFk ek^[6fR K>Bv]GE\S"&+id=;Z3Y; V3ҘshXCjDqjCLӌg:UcN!OͽWkt (aiABVm 7|S\&y\i!Tgp _-ޣqcbQ%UidDVs@'OMVp^x]ՙ54 9@(?H C+ju kzu۲>7otS6g/RK  ;8WcIvt PE^.jM>\yqne \QԨ-ŕ)}wh8Y-?"}H.ڦ2,ѿsKgjq7JLWh M?e1+w0&&ZE)hbD!(b Ųq{rGDbDz>ѹIh}CwŨ&c+dpKC?!"S_qR1x(䉘2HvWukYYZ'8ZqL<|teizˋ t'9.0,ob8G tN|> x2s'KH ρ^Dg'` Zn"h~}/2)-KSv\.t5}Vߌ6aq]0Ec7Pi]RP`\<'u8-3ǥ"T]+n `q%.`ϲ+2(\yaA`]ѝ~p EBlP:RxU|}+zoƽURou!~UxS[}9a+)ܣƉ&)6u~:URz ^Ep#" u`Mq :I#Kte60s C[v@Z @ʄ.PX‿Y\֞҂Oxbd $V \|Z/7 cZKLh"mwfY8qzyS<1E#CEmBr7Z##+XE cI-gzi&~l}H$j ڟ{Rp~@5<jSJrd2@ ZBu `:<60~#9d/AnheI*+WNw.仼J9F;o: QUht'*;{vc%t^v2wkv1Ը eo 7v5'IEYkRn5ߠ9~HԵg<1-[g=Jw%9>!m~WM nL{ ;ds>0j<>MaenuMyun igmUML d$07>Nt>n9gNEQ=}JC+6>W:rхQeS]H3A,֝'BMX*lW&ՠAd [RFA)vK!'e`z & d\paq_R075~sUi#垛[*P}ٴOG4F_*ϕfmVm/&FO5 U$<E+hNU2t,&ČwifW$c6R nb֯KPV[:<bf ÛnjLqw4vVg3"m-R̦qf9+g}ͬs;9M;tNZ@dv]Si}v}Q8 hn+1UT=Y84ot^[A1¥1xZgj掗oq@K*zHtoe 0wHüz#ϿUǪ\|-xlLӪm;*Vy> 5\~胘\e7) }g 8%WDxQEdTņ^PJ.k6ܦN}*3Nn W[.7_z=hH1aU`n芊czEdh&{TM)iEM.a)AgX8ᐻ;'99;0$>^3e]9OҫTB!W  %h.~|9Ƭ/jPE:h,!Ԃt˼rodKK[.~G+7kplc~qlͱ46S+Zys|Dd8P{`W:q (V}g-ˈ?,}j)x -%g !x/F 7z(S+6@=W-o.Rw,R~O> `Ynnܞ7RjP^+dV1?3DtFOEU₇o>}}l4c_/\))vSu!L1&7kXh ilx+#?=v*NYo=[Y5dN*T҅OAa$4;{Xï|%O1U^.Dܿ[ˈ۰K҇T&hj'uRǕdqhr^Ƕִ%XsP%f"'_"C;$[J z=p{?ϻ,_o6Qϔ{U M.SѠ(n RMpyќ;4Dp{1kF kl]~tll"ZK0e^z ו:K:qi@Ix #d9A@yjA80 lձ~ L\)=~,2R:,Z,)UjuDWFŽ૙ac`HIs"l I'+Zh%O>_Ĩ-M-G#| Vo}@U_G`Hʹp–| Uxm4Pe2⢘a1-s\!V>ȗB2+(}ߟy]A) DJ8bm9yGM^4Uc#^lQ6Ji&Bϓuú|Xj#ren!s zIM%{^duc T)Tպ6Fc2u \]KfBP47,n}~zaц姧+j$2=v@`NJ=腻țl>(˚0$`'Iw1E뜯n8q2MM,d1(6+&#)#ޅL8эʐֵDxo*,y R@m{M2(Q ڡV79#4t& Tf$l×;>}ʸʏ=͏.P#dR!] ǖ P-"t.lhi|`񪎘ݛ2Fgy) V*캢!x@zfU}]p-ؔ1d AK.2DeH$qq[@^Ƶ񮐺 uXi) W Ƣ.8N,ռ~ju탸bEvBh8Y䗜.Ĵp׆Ya>0dM;s-?S.:dM5:e{{˪&OGmD륨6r;bT Ù"b׳QrǬtR+daU9 qz"oԴǠbs+u]k] 6IO9pfiV7m&bCe1pl`LsQ UG )ڋ[c.{˰2yuL6pιlwORT;2Lc-/@3f_,U󡍨 Kh88mGR`, CWP,W [yJy 9n}8O4N!HQGqQ OYCr)v\jbOBRQT[O(ETEza@+d\GE\b8 +TYFqY.^d0apdp4_+Rbtl`;=fܸO.C+ECX>I\HشNj\Q,|C Z H&/1C#6k^ Nge)B~+ qS": oxmoN.I!fxƒDȲ X7\i^DL$m\#R0}C^;m#l78d@XFEi(;)zүϓ4Gq@T pfrvT/|dt$h9bv b$MaOK7f䓸[Wo><[1RJ|,}ԪNd}Vpko{¼e(k>Af$Yn鯘Z?xN`_ ZMAlf^ &T= =lWECv%ʂ$8ؼ B*#8 Goțz'Բ|ݹs[.7Tg W&{y' _DOs@2G4M E$4{|L#kBqWVWnwDK"%_In H1UI 78c*sO}D.^p S|qEB''k,+P@IJ >3bcŅZhxq֮v Dgy;+qZTbw!rY^lAPHbq.a](L6ou1ׇzԥt$Ĭl[j`lhJ,JigLToJسȞH-`cJPX3I͓ڛ.r|ႩTNXM]7%|b@H5)gEKN]=r BK۫ܩ&s}| \SA} ຘz[pay[+׭*k\ x3xpx!=޾(m yB0(Va%f}EEQuߓM#vcHFj`!;릭ڢܰx&3hS"g]eOȇHG?/+y"UR9 7KpExr҂[ c3N@QH\̢dq㏖̥}K } G K^CQMlZ`PyL(W)j:q"K#{+vw&i{޺ Jx[;r&K8}_oH,-(3U`kv@VoS;i( Oe#BsNPwiT/>g oJx$!>3W}#Yn8ݴ56%`!ާIsQrGO$PtO8!),0WTQt47+ +tWw -3JZ_+ /_JD7^nXw >?_LwAыi Usbe\x!b\%/r3?gD|{EFe`):b21_r^JvY4! 00  9a8q,o4.vP2Qs~J՗a 'fR"%-% wzmaʚ('!Z k6.*Qӟ%_قqJ$6rfVh/I49"3.UVJ_(j+e:oYm]@؂i;n i+: `OJրE,A$_S|x,"*qtq$ a]Fば6.uy,kA55cO ,H̉)mfhsV T̈ծZ.f<貎c,$|7{ŗ^#4'd~M򐹇$N,edLre֍I#ٙlHC$uu ,%5 HeOpg?qIJER  ph0r+P}D̋݉'~+|Ls&`0HTȝ9ӫ(c1X&=C@EpX+5;+P4dž^"9jٖ$;.>\)ry|Ze8nZ^,be\$rԘ]Yz4}&i59{K'Rh "=t7~~cɗ@ ff& ȒG+!V+9_4#lP$}h{1Lqt"^BZtBWb1{fkL Pa}&tpxcÏbH bQ51<\=Xv\aXA̫\1^F}'<4sK-~F{~j0*Bv͠[4u=4\dQכlx;?V~ hr]t Cq(p ve!{mHmuH95c31>g l%Dt=HROUE*)!B\yHuǎL \9W(uaFUgC"W 6w,¯/6ɾPrigV6Taa(ҘAnV F^[>f/q?:KXn,7j ֬hOZ4[L`Pm;ibM5TeH;fEgzNΩwŪw 30/c@[3Kd "ےO=:C@:Y *c-@ a9zKKkBBT >uNXefD{[ dga L"HM{2RrNq݇ZB?_C+(-l~6{+Ͳ@"K$⠊i:x}'i]FkVY9uEBÙ;ſ ʳ⬈(颙wix+$ʃnX̀;/ӣ_#/$WsaM$gL=JNA+_ CQOv`q/$g îu2yFE9JUB<{񯱵%0/C򯻱h}z(^qUhc^cI^"B{kȜZNӣƃXF; gi!I$AdIGnRdQC_ 9r$ em?{:)KD3q&~yZbyin -+-H5.E ⻑+55a { ɓbCə6 a;&ZW' \tl:BFKz꼰{0fO1?R_O/1nkPt4ɪx`~>q!) W~nC%O7e a%5WŘ2A+)CBds׶uC3#󡟙 X~(7]A?[*Q UI!큌IšU%X7=q}|-ʆ5Q8lꊮxґlW9<òvm5qT puq*[i7ے'i4Xn5-T{6ݦ&N znN6s{d *׶_2Mк|M/fj-Kzav(Ql1gi?sLxQ[_4nÕS)qr@?G!ĦM;H`Fo4a5q@(YoxF㿏< B2 #D Gn wa<brNzz2 UVnUb>nwNC\gXU*Jx_|qd@f{YyM*'\gsΥU6yA!-tsۭQEYFDOh A-k.f-aHoiAq[yOucş?l}2?^4-8Űms QuVX&M~7WsM:~&~i09&0:  ̀rʊm C􁞵lWs2:#uƒӀNT"",$E'h_A+EZ᭨ AH f_-pySI ^ nyj,.:VZ,& jՍţ7/vǵkA˞rG .Fn]2yΰ1@Q/Me/_0[~6 nM3maTO=~{ T y%#c?gJApph㘫*̾⻟"d;"ehxl@0SBUhh%[[|u`M4g3(2qX"_ RڞJ';#C5=CI:aVTA8l]\ ;3$]/i^ dNtmt 1M!4m :;Ny%X&&WymNYђ.֏V $RE=+6.sꋧ@_ܐq쒟8v'k'j ]aFbRք}hVK*d5<~.!.BÕRaf//FTfkm!g'Z*c Xd"TD?$u' n5FQ bb!"h*A*^W8@ס˃5BMi*bkJ[,V|,AZ4`hqhVbA2$PյYD.S2^%b&ܱ~q)7"hϴϰXOBg)X%=ѱ7`.Hbt=D0j2z@?ڱ:er ouL 4ɚ$,㲧h'Hq)rwNL[ ǩ &=D߮j5 {VdsEFM_}Gڲ!1D'1 ޏ8Ed0sujJY#ʼAۙ쁩#[Mˤx/;*R!XeAm:Q7uuy{X_#Zo/ m?"h8Uܣmd}#*:SҦz!Q|I(EJM%֚~6*;Z? X>vW7b2G &h,ハ #}B1_ Ą\nlM{ ՂZAIbuZ.F&@\Ƅeң'd x3&t0wLw$eeYpe ^b) hfS+ H 7P@vZ|Q"e]i0) Ma;y9¯`8sv>hY=\&IĨU&~`i=IF{G&[ȼjEP83p v5&ȳS!! b5!M:0^؁.l=ϟxuCGFe\xWwBH{ >lzG:^݈_jz".Xs/6znԿ< ^_\_Tr}1O,-/a)ίr,@fe9Ɓ( ۅytrxm5|Gtg -N6-Xp 4s_j%fxn TmȇRt Tѡ\kԱ;+AVDzꌝ%ϪQjmu!h'U.O7ߺw>'=>En- sʝĴDhF@nIPdؙAdkWPOq#ܥ QNhpe|z:լ:q?cOe=*em&K;'' (:FU49wSZCvೈ~(}]p٣vmr\>{签( yN$E J,F" \TFvKu!8u`hV&[aiJcp[01L^9ʛW5'ana\(Xk /T}iHv^3}yZax IP6BEO&C 9 Y$FXxfeXўb ɋު#7K%8 %hI}L"7l|>:ͱL4,Ru, `'T!Ĭ,B,=_#S+Zm`VJ"|S}=oGfuoC4aI-+~'F.}g!б= Uo6-2MeV/oW=^Qa*V^$r\񴕦UUj t?@*Sd$ƂxKP0KgGCX1 ͋2*WQ0[=hpпObNHnOrKY% X:W(Ds@vsT@oV,wNeojo}](H%'J:lGVW 93R+^ :9#G.<gՔ_\a)\'e0__We!mPK^,6$¼ "CK]nO-^=;sdY?mX_qٛQs=#R@ri$򮣶ы.OLqH#K_r9[6??Vg<p3!`LY9^q2q+=F]V[*2*, ח *M#Q P[1SLLj%D+j03_-7S2r.k+=1\(U; oYf%&j$4:V!.isG:OWQ]Gwدu49%Bp[ =8Ӑ}R6T )^Mcza}R&Sr/T1օ%ŇdPMH*!pmRI΍[dFK%uz[.5jC ?SfML#Kg?+Z"zì'z!>qD)2'z8Z m~_EGpiIvog a hK&Vk0#f_G![Ťgf X7} s'*27{*k7pFګUE#OQo+LGBOi):ѹ?Q k)5%A&ŮFA?\ݬ\Q141;ƽ;0T@ݶvEv怄C f d_o~yamer:p/3tRa;oVa p ˞k_6r 74? m*&%}hQG ,&bi _&plkU֡VPȶ f^ZcRz+PUeb kg0-%в.}76ʨC0^7f{^T6fϳ0 _S=&,V_/-" gN̵™hGbѡyV\2ص;Gsѥ[:y~Q.{eivO\<>EUH#.= x3˘-r%0u o?P1\d'WatkZݵLɋ=Qe;_Эw1Nr"g ?3T4{."JR`1;u9&-chmtݢ6Q:r Nw$ qQzEࠋ^ٽ]6߬ooFP5X8t{/"6 xw/bSUdc|;1 ܻ櫩]ʺׇ;Nfȗ !^q8 ,:FTxYh}]C`:FN ؍`0`st;2F}9'xOXH @:GgFd\T>7q O/}jrMn hDFޤpe.tz,+[ڹc` @m 2tCuvlqKg5{8j,zӐrK;t*)o_Ycw (}x2Nf[y-m?XQ ]{h9*ޏ~}=֋8c@W' P=4fa}DqU'F.@WM"yk7vm4klOr&kM(8_:ZTCW?.X>Ջ_ZPMOYjWkD SdAt%VdEÜM68sgh#~$IRrU$2WXk,Z2G1K|DwQ>}s=8=bB8bMT w*my%-V]XbbW:|ꡚ̈́zug.e!Y`a2CEfҝŃ.w8`' '`:.YSgI՞ijsBH6kP\yGB]k^cɯr4u&dpƻb ?6^uTtt/%d1we@=焄[b!KRI:VExz*&G@8,!J}]dyS)__ܲ*uc%}m$qz!a|ߣ^43̞. XPK8>fgE"00;~"gfOĭO(%|mU YL듶YUi~۞2DIY?~80(WIwf`Tm*dZ:V?x4 4=s}yK(l!9Nz?NwSgHG"3F?oPj>dKt ~!:rƺR❳5kϠŀ4.{YcP.KuKd8+YHE.6-WyE9J` +^M Gi9fǘ¥ٱ7q?sM Iyn5 Gs1va7լͰ%ے$,f[ Pg]zZs*Yk09kKb7,`HS:@ޣv~M'k!>c更B\N,Ő6Ie8qMU¼@_7َv/X JMovS 훵 _2+.\җ8CRLr>7Wb_ToV%xFln,q|b,~5 \Y?l:OY(4{R:TTGj@R4o{xbI~ g>naPY9&sr.bj"K[a萶2p5ۮUWy 폙crԷ $>f/{"9 ]B,g)A-߽>A|&ߔPnD| {T Uݕo[C{aY]2V#&bt_()kir={tgFe|mY7,e] vX+Od>0)We6a\nKtO˂ek]y+XwY3HBq#U0 :fgE ܅%{O<UL2HO>cX&֙T]^2j2|uY=p>cHuXN̢[+3& 3q}ﹸ0YEEAc?BWG. Jl2oo9}$3WHam{q{>JU(DV 6v(;*z{XMNu߇=n]5&r`Rx\y4kkiZƌ(tC,`ˁp,[S 1 !"ALoQGBSLɞ+)u2?[LlM G(nJS qjPw]o;`ݤvҡ3ršx'E!JO`Ӛ-uF[eAr?kI^2sޚ!{y ~o#:=mՠ <ǛZzR{l=cIpr+Cfaa "x>9?qB%YqEk״Gu;Kwd(Чґ,@8ָl1i M< hL)S>ȾE q3S{WI_SHDsIP|uJ 巔&T[9AJycfd1;I _kWax?i-}q5- d \Yo} ̓o00=Y')HAb6`οn [$mr,fORmGÕ5[2ѝU d8 ͎дރp?EGJk&k;;]Vi{LQf"F1/Y?B _l-M ۅ& bY M&핅|K ם"RG',&[_qxٮD2@\_9aHfYS$0TX}H$(6D$BJhE>K&V I0>QM~0T}FH?\B(&|O7ͺ. QۧHv>oniw/~+vgp#-UΨLWdr#(!OhDoz6"فSQᨁ։qKl(?\ߔfp}7o6{X 6+t6]CtĘi5zX@&bPMTPIU",O+K#S<0'vsgٲckaJ6qHc $l3 lp^wWP) pG"¼C"2 O*:.[EWcy,'394sBe.5>ݵA447a=d,}Fhxf:]_:17dA f?$lsMB>bwr"eR#m.gvA^ϋfMx gKH;`#"sEY[`MVt}Œ8;HZ9ׯJ@z[z^ޕBfzGYA\)G찡DIrHW:1ÍQ.gVlٹ!a ~JCD g׶PxԊ"ZE.iCYQyT&> l$ŕ.\Gh*ύ}r܆}MN @CԹkU:%S4Q^tVN=w'\0*lA*EQr<͙^Xn RU)Oe[uķZD,)]X5xJ)Kb* 5o9Z69:y{h\wlk!N|RZx-9T0GtSv;J1i ̳a>ʱ_ZIe0sIJ3nźz%B8մ$jK{V c`ʳ:Zg=٩ezeh%y /xeq' 3 `(ЯA)%`~,gI 1=P, [[dy= l#23az ɚc +rmw; M ĖxrgedYhwԜ)ދ(6}P/jwɞ˶΍kWqss2_QKB0U`4DEP'+ 8A; tőyMM hNZ"ۘM `}8^2[tlѹLH@{ X*վMALuh5큅Sgzo4ק0|A:ZK8+lv wo/5U} EA0l|)ywq=g1e"_{YA8`aEM#/@&:P}Bӌ$L5\R{ >-j` j1hޅG@Wܨ |+*T&xFȣٲc)$W .3x%O9 D>m" )䎝1&~ >^v',R`YwQFkn,}mQ-23=L$뺵KMe0S|/\#:BO!)!;"A'û!ނCIi f3?Hp !zbZZ x_kkxLO~ut*\gպ:14Q'D%fE#08c}U %$[sJZ,ʦ=G+.i1fD,TZ[İr̥뻇=˄ dn\_LeaA PoɍaWcjPY _B GG{6b9# #܊ҎQ̯Ι޴EEt o`غu !ij'$I:fcj,y h3-e?g'1~H V*: AS+;ɱ q]9vP.a m*xswE F:wo;fq3ЪXoawrMtS/ަmr=r kDO`ieo=D\k=iTܓ΢KIK-F".z7w^tp5u\h̬3 c>ŹV^ȏ|xTo$Őůd]{iS|N悈!wN05X}l3͢f;ܫpJ*b5Ա& \+2JMщr:q.F4-06S_VJOQ\j,J}S,RAE9%Zƕ½xmҲD Rk7ܨÄuc/H,Aw ؔs]Ojܧ_y"1ew#т17|}./I@C K\Ϯ ȩ5Une@JCUБ'=pfJO e \:Ƕ;8b`PXb'tBIқ Q{VL93D Z_q9mip5.MlߒKp-E *A<te?V.r:KFl{ 42 $:kўSO]ڏJlطΡ}vJjpöX~CN Kt_)zݮ*i=k (PG U´8W&z=CI0X }mCET(|(tpV^ﱻv- & =Ե:SvR" nClgk\ su#D=Fv?^n~ꋋ/ 6(ɂZbDŽdE'."5ijc%X01m2+U+q+=8_Vϱ :LD."tI; ex{@,g#z|tO>okʔflᗲC:hFc5?͙uKպW y=H7) ښl4bHqvú۵ w4ᯇgaKvm|ieOp kR DԎ\NÛus CfO"ަmCxq^DE͠)nSE+|PQ6~[RK*4ty7\E+V *ֵsTP_l(*{So^4W43vPcjl֭6|p$i?gD8{ITf`YsV7^ylOJ JPTIhs_XJ{4]+o*MS)aWu2VVbUfV֒Xw_޿ 3J@\VMx2/=E>,;QgdZK(UXKi-F9 J=c<@X- 40@ ^v1,|y ἾyN"헱\;eN@EAe/4un{} +hCѭ_)É -ojdŅ, \7tJ +ّgֈMQ@^ځYEGIlt[6O/ٶTNæ;w'¶AP?OQm)kj&۪/V8&_~6Ky&F&o _I9K#OOhj '7Am"w]2Fdh3& k3)'{&z:h 56?$`beMF8P !j_l"wO|r_`| Wˏln}KͿ`$wMUt9FѰ m}>4̯W "fdvO_~;G.PF%/$uV2 *˖iOKGaWUXVqn N{%|T%.FΥӣ(6ʛ@E{_G􉣞ۖRHq`U.21O׶} `%:Omʇ]IR؅E %;ڗiq2;uvM :`JU-hQ}&3@@M6 !AUދƹW:2 >1@C,qWm2sk+6fh5{}l8uthO!yw*N\*P-h}wޭ?=V#Y)[|WXćKU[On:mv|8+ߦw'%RЇ8aR܋Z ga4.sc(^;/iăcB5La Ol[yZ#?ZѰH?\\wڴʘy -hoh<*y{o{HFR!Br-w9>e覅\LMi)zea<p`(2jFPg{tl[ 5r *+6Od6u5(O1فk u!'XMx] kA[;8*kC2'iùnxhb:00p< mZM!nngͻMp/Vf'< ڸՑ$M5'c]'S)Esu(߼vN5}oȅM*s8٢_R3 gJA>< @A3?T7Ob/uGc44a eRΜq=s ( C(Cӷ%}R:Fʌd;'ZDűL@ m>|ǣRjQ%E_#'=c9cg^#,oeypi"M?O^nR| 8'b,*e,;!`c|QV&zxTL]洋[;Yﰓ)U-d<'5r1 |d)쇃a/V٪ 6Kʴ^>!< $=5q&sOEcY2O$ٿ!pX2\ RMbg;sܜ+l3|&t+ūCApyQMMn-ZS1L{(ㄧXyo_;c@|#|c8g=|tnϊ V}`ɹZLi'~񰤈p(T(r0@!2d|cuX/%`$,i=nT_-L#r@͆3ރyAa lW%+1P!m3=_z8cckN\߆wW(Qr1Х *+E9 7aEgE8Fj=ȯ1P fVxҔ2/"~C;Ƅ85q'V]m$d[\X)DNƒjEJςOZ# oʥO?FᦃK]K"3 '@Am%rN-nCsGSV:c#FUr-xl/潴a zIa_,Xds$oE=Q?2P_OOdſ䋇-9A6 @c*Ѧ?w(cv Cw=gIp lDU|;2$]&`5 ;2d:d Ox C\ZIv?ZB4_(ӿ"H@$oU~!tˡ禦0"bXbKO%C{̈́WFP(>DEl.MtRLZpFAGZ3[6N@@ yF"w{ί6w#yNy/{apm#+Lb~0 `Њ} Kt|n=}*ߔN6%Y/*Ǥvчҳ]\_sd' vWK ~RDN"J!JրM:{' "*[R17H4mTI\QBXI*<, zpydI|4$BN8y! Z\2!*AG׷l$/X9oeG )lq ,7ڑzx9YG!zZ ]O/Q_N) _q ^}6@WVNIZH$9$ 7~|kB3ɼGR :9b8LGNZKNP8LAqUtOLl129gmVTPyFЃBJ̇~Wd|ΔA^J7KEVڌ ;qTeLc%oGti^bfչ*2"Q U/axP}Up:l4M?(@߽k` ncKM멃@fW[0ezT;2 e p-g5au 4'zCX2 oB^=j?5s'߈Es/iJ6y歧thW R얮u n30߲`1|X{h`iy K]pigtG˚.RF(bhӜ8kp-ymT Gr;hDdGG)[a@΋P0,yÿu;v0"r70iKb3Ig\_TdDfx0: CsTS8ymO9sLN+q%oJ?zNl|2rR|)<0:"<(lųOW Lp_J(:q[Hq|U *٢1I*BG,-&bJa#g3AS,*yai!ve1b`Kk0ͶeDl5#(%H"$/:i  z!=úQ.;{s \FЄr]TI&Ug 1#3LZ&ޖE1t/{譂@aKYc[liILGɛCK)+Ŷh 'QA@yG9 ;kʹ^}DҰԨl;hHcAQ6}ո !)h=?ܼO*1 ɓϚJb ăOQ'R eQLG@0|ƋQ5!- _ ')0"Pos 7hy3BU=MVw+)Wģnj!#Az۪|OP?RB:w^AWN![B_U`p֝%G}VFX{ss`-+waByFWA\PaʝH;]D)RpHWr9Ymomώ3 4ԭm3 EMdj"1xf/$(֔<Da[yRY=k cgI)n`lڂz\΄=C^~śL&;Ǝu*׭nrDR|dT֙!=!2C[W!ݘQ!+{7*$Km֌HiB HѱSAN+rv>㳸;7c /ZdF0]r@pq@2b^)LP, h]C~3}??el! 3NGbŘ7o*g V3P=GM+Q*t8mE''ݑ'?'>AkqĥMK( z*i߼ysP'ܾ2xBBrinHԢAsRp)PӡW0\u,W$3)R=|]ρ31IzO$2Q*lҿ.HV{yM!Y:H^sѻ&cBNպJa4 ;lq&̠\xgXY@կc)bkǑuc,[){đAv >g3{kD:c<[qR>On ¦pj+ҿb]\cU;&Rh %Vl7~u* ClAs ZuJa\;*edۮ1GOr#c< :pgo\pӕFϲǫ5y~qC] :qW0!pc0?! 󝭯6^#]%=&|37kZ&:cm4߮R.ɇ:~II&Y0FBJ/V #+T=ciCB| .PA|jvJ2k80ua@i2#z!.iEC']ӧ)%Ht0&ACom# L_Q({(bf=M릶PݍTWT,[}/59#6Yv{+I]ô&j,P:ϴJR%GhbFK* -fBQE+Ŭ뗞@/Jb i Mzkn۽k,;xWj`6Ⱦ-/yVQğ_AD@x4ĺ]죜4En41mXZ</Mךh=X!n>MpA򶶲*^@9/T|DigW{hs܂o#Fs1xI9Fҕ"?bNtĆ H(;> {}UR8B033vreEm9c;V ʔ+On֞j.Ar@,kg|ݎ~='$y45P2ET˝wg_r&ϻV ՑojPC_X6i2يj!`YoH@i"Ivg']ͲcYkjL1C߭4)yS2=)u>S_֯y''RoY\Z/j֪eB h-ͪ軔g;aabctb.Me "ߴ][zl70Y%[u~Yb6R#?))/-vjHmX,(l%Y-RDA.ʋ}J]KSq?Lro;m]zat  ^[^;gD_|F{2P>mGƍ܇(U ieSMJu'F sHG]`߂"I on;2 ׊{ fqVCvb22T^3(BzSZ>o׭W(1Dzr;FՌLy(H)7Z?90'+w8 |{q0CUVP~.Vl~jkbbdzH?CfϑZPRyvBZHgKJ1 G?Lu.ɈNU`DFTegp-~F>g !{+%ghL0Lۦfƞb5n=!YZ"P[\O~*{w&"[=F;(UδEϧLє8\S(WY'q.\(c3<^-j`Nglb> kdn4A0/ˈE*ӷnv#|/R:PXv?jVaT/8P-x+ <շU;yRw1 a(mHẪ{<;'|!¨.ɍ YQހk:kuoTp$<{Q9P(^r(픎p4S A:v4 =5;0yםCm=ݽm{#a $lr'Hwa}ZPbrJ.me˗f9Ҽ?PO@ȲJW=FjrSR[V͆%KSaʡ漓KtZ8F6MK-cUiEv}v_PC-KYEW5Apގf˖4z7'\alLׂ W1t ΄]5DAw{#~M~f8ni^֒bsF4u BH}-響7>S,E!/ $.|xÖ"$l g ȫ '*NyHG,V֡wg"fFu€լvZQKY%/'p 9IP^3Jk-7K΂=@L#W-w5)(QGO4iAR`HB85pҝ턎UR^yQm.9x<*K[Qn| p_xXyP\A'Bc=I 򑕧LxS<:^1?V`wT0W.3̴ lyEI]lQQ MJ lFE͑}-789++ EQ{?Y9|H4%O_>YJNKE,p@( Jo49Off 7%NSgﱞ@cd8j;uMd2`g[s,\VD8pW>ґGK*քXb @%jWNڙ˫ʨbĵFtKA5dnkēU~gZC~nKHdy o_Y bz+\_[̝7ZV ƣj@*#=-O^-ufKSb V,$O®P0`a&Uiԍ[|b0 .`LfAF2pcVGtht $M(Wjrgc) [>Li] BFá ˇ)0dl[aSSVVrj'5e%XD塇Z8&1>J7$ ٦ mH3 ߯ >5S|uJha I@8z7Ȓmg̽{$ gczܭ*W >p[!х( +kw!Ф)5LJ#H1$XfihF4@l8O]T1b:ԈT%mpպ'+S(D4nH= o@_> }D'q7+oYs?W5Ɛ'i"t6_,S-r E t30UNf-dy;tL:;G\@a,We7~ 9,]cyTal(7ªv{Xo;Ͼ)@g>]e$ʯo o3Od0nb4vtJGp=mSoe2hryd]V =QQ*qz}W[ct )hޒ"7RyuMP|5!97*R)׈I+{Pv]sɍhϰK}-60JW1|ŵ^9Ԁ(w1 }z%ςB1ڙ= \3( FsKH^a,*$y[#t cO"$B?HQo=D5̟ᗒVTwwhwm.тtVlj3p,ףedKeAflS^9|p X(Ϲ\tggL$ݭ&/6w~8({emoXܺNmWUa*Uٯ_ z1`ӨQP\-#UfU[4KpR/BzHnEu&T& x{\xn8kW7` 9d![]u:z!Rj« ҳ> H+PK&1GV`sjJ@jGٍ(#%0AD}Rݐh!R"A$$p'\W0CF%мK+h;H*Oo_pZne]:JPWZBjZP`]Q_6I8@EݶaxaW M?ӽXvVxҊ$.j\$lg:,""xk ? :^9U.rH#?&C= GL &Psn2fSGD`NJe p0%HA0/!(D .: % Ear*V `mR@[~*ymdw=V \pN9(f@a2n]|igX6sYv{1҆H! orLۥ%["5>Mlx|QJw;H8*Phs=K^XcO}v ز N7țds#y' 7e(ş]{B<9rl#\gPza}]|j4-C,;^`XS4/Hˆ S~roYk4w.m!.IU<%_JhkR6; &l?[PO]0%ШrN@̜Oo%_/*MhU BxCޣ㕲oxA!>* f!Q sĂ/p2o842\FXЭ92kyr 81x tPx,'pfRxj;<,G)V)$q}fm|=K4睝n0n\j#sW$L6Bz2T)ƳBo;f1%Ii|L('!rf|`}pq2gL))u$f=`8lEof4{,gNëTi#nId1BScr6C߾u~#V`+A9Ɇ|RpZL3Bc]٠AĒUiT _]:r:͹i%)S~Uqʺ2W&"hytoQ5"d '5#) Fs2AeޅXz)(C}.LtY~[ ]^~b;-0h_K>pE-u W{JePcMIfyWi05Io モ;"}I z|(TQM*ּPB'(.\lA`mߨ7nr{bpb@H ډG73,zTrϞ@Dr&G2:R%=YzYa仝RDzڏ4YY2=ߴG:4#Cϧ/Fp*8C^*7es8 r*MBSxMnݔ.\& !_LjL= ؝F'QfL-bҭ>4͒1~|DG=mQHdų+aX[8Z i۱: ᫓2%,KP߃ tQzcO ^X)w [̳2X0$#X/[ցDC8緷'JsLMB' MĮ87"]dƏЁ,u,hlOK\5ykn~Z>~ #VvY;4JC~ce?9)g+%+JԦ42Y J1xD[n}Fa\cT=LwcLuHvj;=^)!go-Go:7)yO.0%T?fTUO*X&lq3%YX_JDb 2Pi^vG?Y32)oN we,6JDw*ʳ\~؜ܯ." ymA&bG+x ؏/LzS1-_-nX[+ С O㣟qzstWxaP%ka;+D hI͛6G3fPOȎ(cjUZ0B,:}V}Ί{9d:d#R2 H3uJ`~fO"rJu 9ul^,^~L91!syc-./Ūox3/-ަCץU!*E@J]a* BV2T3S;u%o%~0_:hU G@r95YL,E, KR#kp+ wgBgNzaLÝWe=9E_hVNB,s BLd*%KMJ%TCݸh=a_y&x}f)͂e N۩՝*׍U^NaX۹!J&H;z/$?34eC5Lg_N2h+_ ։5B5fd+Ty0n+p0(6Cpby8!4>x!YΉdc]E7]-53G!{iƬ;`U}G`6m<Y!q%#7[VjrY15;6^wqbz m=jO)E^XC@W4S}#T14fnh0* y,9Io1u+rʊBcS }4Ֆ{ؾo3гVGG S5 aw si^$=GXȥvB"@piN/DH< jYjvUz{| [_ G}wG6I;(x 16^??~םrLp~b D _8`t$uH*<.iYp4/rGi(c3',>lD]εYk>$\ԝy&>W%̅%ުx^C;jx^xkwn !WW̽(v4΁1_"ܙ!8S^v_AjL7a ꅜIAj[it[Rw@ēNks ϻʧn4g^,3d4:So f/?Mh~-&KpP)W<WpGX`0XoMzAOc0y =vUb8VߜjQf%j>@|'p̛{9Ug*)3'=d{Qj`t)C}׻@;5^˺&<3>́-+,v:>m1QSM ᡌ{@Rg[!|3 ΔHr /Q; CXUҵ/yG@+_* &Uhl ጛ<<(e-*+f "C`C u>7/B".Xyms鯘 ^qd SH̋g-zqڄGwJ|YPM*Ljp2Ru76_JǞshg~#gk)A ɘڙknɞT%(YE$ & (cY A:߻ú+V~ ?_:܈-g  Q l$UmRݜ}ud~"%Zm̾b=+S20,Aq -gHMV ݚNa`_eQL3`JIӠ[Ͽ@_#jMza+ Q򸌚t˷=ny UB&W7ĖKZ2[ 2#BU \Oſ8[mJ5 6vq:p6|Cf K"N < kH`8KRdZ/̧J?ct8n%HxD]&7 R{gUn p(T/ӟĊ^o 35YwXn:&' 6,xu\ndL\sU [-#PF m 8 xF宷tml-Eդ~Z~ iVȣXPplb/sKFǓ m 8T`x7W7}J@;I/h-QRSX, ya&c-PlyM*TCO5hˏL1Q yg%+1f)FKBM&$Ϡ.t=WOguUѥx9)_.=;-JwhʭG3A(\·BǩG5Zn tްq1ye|n;6ۭVLqJQI{l(݋nE+OREq;[/&ؼtoA4V +R*@*oTjum]<>Mvh$u cX'1FvD 2+:JUc=EQ97rϨ_Z 6+DBOrw+D6Rur<n 7c4)Drq!F!=q{4`/k=ɹ^X U;P}B,@`%4fRzr+4G?w`6djԸ;M_܊־{`E1&u%7hIh}Ol8t*#Cvr2ū$ZD5CeE sS@[g(t2vѣX@ġ&<+)VbS ٜyD5z;FQ: `$%*$M'۶W3C_7ُBWA3.Hߖ:v^7cyq Vtw0W#U7$ -e[qs< 0g ve_(`BLJv)mc .^5lF2 ;b0A'6(N6*vFG/OR}dWhc˜0BshafL%CypgӀ~KDjAi dtj$5 يX\Uj^ 1*\2J3UMT +`#2W #SRO0/9 (uDdIlr&m1o:Bџ3u`34$EqJl˒nY[1)a3 ; zpض9)%!Xӭ)o"ȴ*Fd6%"US RQ4GvgKtj4^qY-y q%nkC߅ GǝA6E:]<#ϙ$xƍSσہ W_JHQ8+sDwE؅'Iژg`_]t-$'穁^77u]xQWk uz{4-v)wFbxhy>+1s/QW9?xboA_>m?bxy;]<NQE\CɈtv7,$I}_F_#3 F:߻֧L0rE!%la/-+ޤѝTeH^}4T}v/kʷUF)Q΋gfT'H71ݝ2<\}{pp zmBNWoVLL>ٞδ ; P5g[G\ &{.OmΪ>#"|.z9e&I0ɇW̢^QsU:6{LyLR␅XfyD餧Ńx<tt'hږbiH|Cag֢zA E:v Y=KL,H {$yC2ۊE|V{8jy+օ|rqH]\.AinB=U˚O"[It :/$ wo`i=}LZ$>f(Nn_h}k8԰@\!!C.$Q&a7l됃搸 ݛ`k ƸY{CKlx)W>y*9zW26mŽyA;Vn.HeαXx|SL ӊfAeHͩѽ}F ""KI}ӭ$ :3FJ:pCx4,}oW4KwJE&X? b'cVH5–]gܤ#2r̓ozMqĕDZ ,~#f` `5KXشcc&bPZk^̎% /t#Gϭ>sn9%]3`+ݘ1)My*2-rݱALixN<øaX 8K׹"(CQ#+dyB౰v#H,\yŰC| l"b2\!0PjNok@Uᐓ {x0Ȁѭ}rv%ks؄MnCy6Zn*M!:|`ڋHc:%ߜ^;٧SKv~26)Bk=9lL tt\r>_tFC$է]2 qT^g59Kx%=fѵbkc:zK_J.ذT䕧NHH@v EOS ZV6>br~?g*^5:n&1PdԄ ՟oxxV)׍C OTe^l0 zO4\F`ѫaK@t=&N$ TG%U 3Rk]R+Q yCg3ىrmCFT !KI Rh1D1쒰P `|l6U BP1?0u'XVpKx&yCCR7 A^ʜ "|^Slae~g Q-g™WD֖䨣 ӠY5EJQ3{oPܴųv6']q)/?.dQtQ iqZ`IiRRC}eFGT< 6oҤ=Qq5I lUJ9l&D[`nCyo0@F4ȟDg%W-Y\sY`x^}`pj-e*%YcBz6P졏_eڼ#Eu! q‘~2[ eRZY`dd* YC4FVٙS }{ˊů+'>;-2n>T#ش$vF`3w^+av~)ʥFjnl`arV$MN6g88A0 >9^^^Xwss6c8p!NM"  6O1cB[6l+kyUbPȋE=vGZoYi{@ kMp SCi}!gUYɜ_r8n"PI弥oCk`DCНO͹ @rRO! \4`>ZIzf"ZU uھkz<ʎen;{`9(>Ee}-y\#Mwl{.ײ cNEG=JG_ L]W #gPgTAi_Xd6 dӈ Zb>ac4*I$ |xkxn{֗V9U&A~Cj]UU`cJEbAOc]dVQJrs$z7r]?GXVt+~졝[}v[dwd.r㵃-atYcGH0V 38Mt>]xEu@Iv'=`-NƒVOdʭ` I_zS/Yx3(\m4ܜiگX-{ ΞQHFzLMTbrapw8D U6n&"\ VW+3owN)9#:]ƹf\L͘p ,v2&1%eim l;%˃ +3 uAXޯi칩" 33ZBI,:"qMUz='?Fge鱒2 xQYrJ|:+!AE#[ÒS! n4{EOɟ†HoX_&FLAw@w& +]N`#3/V"2g'MSzMOƪ  "9B'&vWD,mʨ:+V4c[gM 0C0I5"5%1oz P!"1lT7C͕&CA/F֠NN+f=LjzWܫy^D5LG9 U6xLeF64$ ?l=ʯ}ؖaEEy*ffr{0FLsrTfG4Vt#?g_;D"Ii CʛKfѵe+:)}Rfi35F,rq]TՁ^=J\11S 4Z2}`-Ϯ L*cXv裡f;6R> ZBpΜ |{FAIѦG&/"O}DpIw4D` ~%1 |Aٹ3j#CAη7X= R^¡eW5<$+K@H"zTTM#gDM#u23LZRa*-}/ۧ]>'ަ:UȼxEb SEh|G$dpG.TuWE6O D"j+Q'GtdX*.QAQ3c' !0|uZviyֳKQ]}C/yy% Cx\q#u1`,,T/FqN3UO&JO59e MAFL=:Oh\ժ D>dN&b*Ƶ~ $h]YqxRŮCAhV#v3!0F8󙡗E]+'5%%FqS}}K­9OC[BkJq8h J͵D2 =Z P<TV3 b"u[?OZW0Hу\ǹ|J잌 ơ ҽ/[jGWc=Hjret6 ^;M0W7:W5Vvez]V;=-U2[r!WFD638寯sK?TmF4#=L׮mv}tܰRorشb;G7M%OL"K ]qodr,{skkzy kd4OG ֩;qiSuWV0p^3?X|.0S >yig5M/gF%z\Me[ ,`4uG:OX-1He2@.MG%I2<(:cAW:0En;TN\![̲{ LB)w ({kEdޱRo(uXT88}0Q>dkY6)V FVbNuD>sRcJ͵IzuH3r*ŬGфծB||S1ʴڽ<% "SM{egzVW|l8)AڮNʃ\Rץ#iȡS$ _ HR1P5lC ao|ɵh^u \;a˽?†yXT]qyrMO?J^ѫ=(Km#R߂֎O]2SmvZHي(;IL 0|\VN%WX6-v^YHxI&wOB|3L`e%=jͦ+cٿ{3>>!r]"00C!x#Ɩ'KG@DttA5߭,|t @4Q1 r#Vo0=tWhSmkOZ>,\ DX/ڍVWc0Si n s7`AȀ'RUCQk% ;˸NM400(Gw'0ҫQ1JCt YXaWaq r]~?PM_82uQ] )>oA_DE"Q =1E):5< _d*VI)3T@>kQ:^7N:C,`ON>1hwK =̨ϫFqj`\s;fLэH}U>!0feۑiH~~Cq`X+?Zgf<.B0.(34-@Jk5:^x/ pKaaJ&˜LsegS!CLʰ{mB0 _>B n;5_ط f>`90`?kr却A=`Yn q%Iۤ2?l P/GC1Km4N򀏼ANtHVQ g2@FżsP 7 wX*w9Yoy-ֵjWrFzGpԥSD'%JxgOΥ'm ,Y`R>sz(Ź.غ0zKݠQjcx 4wgS&z N~Ӫ9si^dG+~a 핮#N7k5;8V!VK 4IZni+ 5qBP[?0n#;spIp?>"zv .>O囹vTԌsTfjd (r Ovĸ%ϒ8lƜݎ\ (&?XSY㱖+'[zBF[#_|""!EE{$)^Is/'\gf;e[-}iފ)Ovѻ40;,euE^O~FH"Ku ;^-A9#E9n;/ /9qjbQ]UwcLhloYob2;n 񦂱%F-یNsH̯0ˏb**+>x:6Lɷi lBF"Y.㴤f2ŝ=XRCY_umUZNړJzC}O6qn@yU9JBt^7J[B!WSuO5-k/HF ͛hN~*MeZa%G^9h=\'謚$;vvH4J E`eb_ V%?}Wh8Y]HLb=r/X [rul#P_=TL+]>ux` y8k8T#̬/]#h|Bq6w,2."n }uoV=4)tÙe SwP|u}w[~n}Yc4ɡE VЈ"\5,:MDŮDRX(ؔ> O!GbJdqEw[SR9NݦחB<;_R'T)ylen_etNjU=Wո޸Q:O -sP,4Y,E}g?128 %%)ɕ5 lѺ.VtQYA Dmkm? @gi)?]mL-Pe5Ͱ(Tp)Uȗ<|m3xf8h!%$w}4\^)BFlY"qz݀<+EQŸR4ҿ@?.) xsGC-a x4Y5"2Tf#qY<,Iani$Czy/A'uEȿ{DX" Y",c[#7J} v6^ $ Jr P[;16V$[aX׼ *sy~}a =I[t!Z7ukjjL;vqDl&~Fp LAОN;zsۓzfd+S[^s+%pvjh"1"zoͨ-hJ9D 48d )U5eqɷq|¡w% %agB(jfrǝ! " ,ոiꚜN9.! gHMA  rQe&B1bjqhC^s_qRxFG^K2$-B<,L=.8nS˱":]WTR *Yr(uܫWL{ íҟSȬ5D)J\+&ì]!˛~V4r䢤kNa癩8BlrwAHASK4Dn JRen{{F`8ۡsu0r4l,nARv:A{J!+ 0~DaMg ,b -i p=a4Cl> 8]PTkI[GrP#ɈP|uQ -7q+&PݍU7qro%[$Wd1Ma)a5$Dmue$/fRЧń.i)L$4Gs lS]Gk#@Уġnk0oG7|D^uzUt-εL |Vg~p #NxPo\wFW/v%,ë|y4c Ӗ~sz"ƤB,{;kWC'Js T->)\\ ],+(>!/z 5~! p} ~U$|8#=p:;;[NaN\Y#5okj 1iR3x 9!u\($OǚS|#D@~Ͻ>RyR4b&ZωL;"l}CLmrS7ΑfNڷ.i} f ckˡFeZⷳwVKL6 H1Ip}[9woiTI*d洎JE얐DUJ3Ƅχ8ZĨKbEDwŸqt0$+'U(X,5nv-j^% |2XQ 6L!rYֆoM;mѕu{XECHsS)fCq||QTuwa0D?ack?d [5Cy_X>RY*nZߘs7}kq?6)[SZq&}C.QwR]T,Y{9^??mw uP -pG<L .۞H˷II]UFs9ivQB}0f7(UԲ0O)Cΐ ڶZ1iV*Jp\tFtiL,|ɎpǏPr3 Ѥ(O>n,;<sf 7uk?\1 @ZHRS~_R"j¹A>pkOKA;3-5D7&3VTEEfF%@-tM5Cc2T Z}d ˿h)0Xw%s ]rd{oň։ݞ) Hc9 @qrU셰bD×F1 `iS6_M3p?#j;.V((d( tCe8R>226UI{@r cr9fE-tr}̔qWbcϖ ;*#}lr8LY>*ы``>5Wvv>[{I`7"ͩlxdmv$`Ay ŷf"(@ Xyejgg^.`p0cc<%.rI9t@UI\kf iYwau~aoϯw\# ~\ɘ6M弒-dT̗@ڕ%C9Vʴߨe:W qw$Ez{Og>%uVu䠏vZj|*o.W G DRAJB.&̯T=(p_ ?E3ր Ö.# 04w'Y\h )eL}9iF->B=0 2u?'m4’.P!K;Ffz)-b (Yd5?7*u<4Ck-s-ieӃwo5ڽB Wd3JFbA$oF?OHW_yK0?"\iu؏ح6_nPT'RezA~f|{3ZZ s?(aWKı"~})1g^pm*K0-}aWq!Y`K,N޸B"b~H+ ~#c` T34GD )i ‚rHrZ5 @5hhP a<͛ ʚ*MSYyGTp ;iEf Tl ' 99ǹ==> J淐I?(V® !ƩzNbQ./s6 -_Yc[b 'oY%bFl ?ާ48Izðn뉊.?KJJ:;oIU,$ -ɿ[fme/9xF\_UY+YSDapYm&U&c=NaVPlKӳxT@B:6\y;H )Áa@HDұ%jxO"#M_ީoq=:W7Ȝ3ҥ2 'dGfM]3.M:}>>tvWRbgo P uVA<7']$, 'ofa?چ 2vYՌa䱸;:M)r~3`tDJŇ=Mm[{Ǟ<FZgG;"2%׋in `HdF~>FKؐ1-s۾КG]f@(彠O.(%Tߜf# b *4K)ZS5XÓ8P fǨ61]OCT 3Mu NdLI>>E`4i2FlC[ʛ*>Yijc )Ȗ _HC!ÇL,kVݡ%~6/PSD_ L ,f%r ƨqUb/"έ!F—>Ӿ!R{Ǖ#ڌڞ U*A-A}.A# 9oKsRDžnI-陯d@hcMcODٰöf/L f7qLO9+pV.l99T 8Q0O¢4JUy S5ggFfQI13@ ~nN&3rz4"1lxiI/8(^,:G%} ӓuFar%sjs:dT_F%O׋E_$Ԓoc!!ฒ)yew9&}0 tqF 5K?t.vvH2 S&(b{3ỳ@;exx^`iQ;Uo9NߥĽӫ 5QQjf]=FݞWL<Χ'g6n)L 4prgS n}ގnFr]CM\r:nxIVÁ& :'f]Ik. =a*)x@,Pa'xDܮrf{\FxGr8:7 ayeaY .Q:7b[BMXq8zAl^èSl8[/r\oS$eׇt6U',l%N %8٫\uh/򾑈/43 h)}ո=gsbbF\?bY1y#Uxտ:~͋V67T~-7T*6f~&C'`r{fKo011 +n8V[KpAu]^DK^Ռ2D=#j(o\Y.;-|&RyFydV9?nC;g*u{O kϕnD7-b aYj9)wQg>d7,'^f+CTL\MPon84 `ʼ>> 5"qHW/)h7 h>c:rٹzNqg+E!<L\(!ZF+I"f]*Z+#^(':+K"\W<sʸpڛGenPDlH@翼Syua/0r{h{@Bq{V ̳t de8R X^:9y9[Rs;?B!vdxN%FMNϙnD e>DZU TM-~,vcE98=i128ik5bb@\-vR 3r;0`ueG'sj` }U;Q6`jZ,ⴀa)Ms r{޽Br,D"L4nX#u*XI ʆMM~w2o6Bm+}I&yl5=mTg ܧvѣ6=JƱ-"[['+#$ץBf~ X6^7罭sV J&Gn>mlu#ŨC߆bA N_YJB Q8?W4N!=+ݠW+Ŵom~lZNߋ*^3d:/'aX0)2u;;C0kΙL@6Yt>3Cg^$Ri[2<&S_U"TFHV=@0av0$)yPa(ɆKWYS1&@(OOpJed" 's-@riнap_ wfae64_xb:3FJМ% >'&)iXen+pӞfS8n$~m\<*D⣻] (2ώb)-1b}8QfMJرR{"wQm{u0YGs<,4@c4t]y!xh_fivp[Bį6 ό.ťK6!'psИdx!uɖ\,'O*"0ZXgTh*p[H:9lC4X 3}ܑt@ =Fú[_DZTWUBB/?EWM~ 2+gxj oGtl7x2$Up(t+U=PalIҡ )KTZ. x=dzW{H}+k:<.Y7kT(\&5azTH6I 1f2Gl߅E]aA{|#Mʮq6VCI|Gie^$x [MJoYJ3o31Vx4f4ةy-ĦPahGz^bvBGf~#žHRj}O9#+ବȴ3^q t¤ݴ.446Ou3,K,lR+SŸsY1L"@Qp c.̨|>s.8r6U ػx ,qsބb_NL:[n|#=D,hi3X֍[#·D>f* lPRU YQ<P_aE}Iq> y`*,rsSu=A HQ@5P!4a|:u!QthL~٢HGra[%fԌw$a~2wC{6ᆽx} S+=$0bv)Fce>  '3H\GF&Bi4&%!^QKΡVEσVNK: |l[1zk @jR5zny&g '&4?}گ=-y\'yhq-^Q4L+%4LNUGB6|R`O)b.ގe~ LUώL_n@8R^pl@Hִ؋ "F.Z8g[wg-KS"b+qƍ_^zuV[~&y^_uB{U4WfF@^^lRDnC}֐ ةFa0qc)"a9NJ$2J=m*^A(Q`3H:&CPxO%N<85m}xp]7h?PPx_ Sq%!7Hx,mdZ0RSs6k?sA?baMx g9:8I}sV;EA!N&AWP@v!\߁F/Ep)27v68u|O6w-y\ku>?0mkqy͉&ݕ\y*/52Mo@u;PXYLQ˼ZScpVC !PHD4@7rr>,yMk+ 0V,t{1` b?}狵B3ΌY2Z_MMT_>шre]{H̽U29mcwzhQu!@lRv,֔-yb;8i-6Dߏw. hE)U\?N($V@+J;RȦ݇:_1; >}[+;@F2MN[ظ駨Q,/$q(oB D&vB>$g`NX4L.xp0&Gmj3{^r^^`_$,-+WPHL@ O БVq0uw/PRά^Xq` $eT$ߚtEvgܠԱ< NtTQ<R> 6r(8rʩ1@wf-ݨTojMOy<5xgد.``'U](C׼4Xq>AkwU?k`fl,8<a;j,)|KGᯜ2tuZdr|::f4Y!<9ܨmKC/>lI,r;4نzJ}io 9ޟbs{QAܴ,l Ya"Qu-T/)}hDZa,A%W}.q}MGg眼47< Wz&B%^2ׅ;v4 (ŨXPm#Lvk% 024:S8 EM MC5p<~MdXm?=6hJy @dtoTf̓AX~FzT@j} ⋗8;`;;"=t YCHwt Qio^'YլwP&KM8&ʍb0Psu ft6Y <\ŵL#,@Jty熟D}i N/sJvqM}Klv^Щ?\k랙 pR0ZLJdB\ XiI=.pKP,^Am6!N`]uE ͔R%j;|$^1Fϔe^BY`f7[bho .d9GEف;Ky]WZ(X )*~kCoӨRfHB`J0_mv:ƆZ]?f1_ ?洞ctɾ0R-YxFm6} ZS$'vjX*ȶSXXr>vwb[S;Iv YGZ }ݣo v*=1q?O* <NB"8$ctӳ&hzC,V ^F **^wKσ{k,>'C R!s?&6egXeqs51 p)AnlH'z. Y2uJŕM- . a&ޘNdx,++.|w=yoε!> f,qWg U2BH'[M⬰)JɪHhb_xzN}PF<64AԔv[f2Ҷl1,&DjF$_TRb9б0@ <^ z[&t/ԛ0F= du?$mX/12ChYos/o6 0:]  fx B* 4u4ʗj6Ɠ5' _k,D KFfQ9.LDF _O+fnm?_4aXH;QOj8VS f՗8ƛų/90G3;v6  ty'4^|%z/}f,&7opmp:fΡX3q 1pX1 i aң䠓:n4,l\6Fat=]5„!WOkigL2b)a"m=9 R,j?))30:@ߣ-_;? oT ,}lk{_J Mk۴9 5vW1:0HM))|)1U|N nMrKG&|ẗ0V1H՛ؒY:F=M{xD3=_!n[Xڱ7!!_J>S+$dۡ7dc+z&c)mqޣ2 9[6Z"J졓XY02c^s$0{`.n]x%`)#!n0Zn`?߁?fkPwI.H{,4jKiZq8OP=IjN= Pg;ru%yՏOSÐ`d\1mLp|ݧ8sH(dr@twdljPKOXu& ^ed8b>"z"쵎tPQ*4nҁͽrllG4(oi5GACY~&f1bfsxݯAQR ]Ed8 Aт:_ wx x(sq̕,.:%+k@K+#0u7۱@{6q FI5пiJbq2M&|l&c~}@txn  _i?e"/\C"-`GgLQº6]u$F&i.P,iV=tq֕(UzycdB_mӚ~#YY u\9<)">wɁ&:RWU.ԭY[!hj1X[3rϩ--1 СA":|E xp} L˸MP,XnՉ*lY[Ő"Cѕq?˒ nv`)YMX| V-P{C\HAp/ +|;c!aJ|9@ 8$%u`&} u9;Skb!11v xURk ݪ" ȲǠ!, hU:YCscGV$ wg+wSZi"8ł8D!pKKΠ/YFYzWc=2mBmk;xZD& n 9$b=:+Ϧ3YWǟ&-i[YaE<,6h%EKA:0rΦГrlpۓGERlQa3XzACvpRIt:~/P~c=ń"hϰXעkG/ZM-_` $:@hɯoqT WQw:T5hi-Di(Aۉo o(ڬW/0 -:1vXޛqJR O/ m -/TrڝT8ϙS`)_H|q1k+\*91 v]ՖsSb"D;TIq"oea-HrsEQez Gz˫_PbL̉۴Oq˥;UQ='y`KZBb3F]gzj 놶U0r6d+ǸZhhTK ZF!x3;=➵81\6V&C?azRrBwә|Nv-D?JMSv C).H'(Ds=BW)nUw@/=wSඛyxI)wj@Ϲdz4|=T@{?~X`+/T\ѹ٫oynyn:^G.JpS\WZտj,otJP1m WD/tg[ dİAPrh/"9I=V:ifs '"T/D 8o"FQ^lЉOD6HS_#t~3e"}X^fW6006i󓬼>AHG1ڦ$4r$`W9c[jjV& c㝼δ5*+fB)f`%wG}KΕr 曺ETnƅU<=/,U 8`dV&eP5v_q—R.z|q5/WX. ;b(BP1y9Ep?P0\UVSk9}ȑ~U—]x&u\h^Q:$`We|):*~X{iq'/&̳z} jh3Gxޣņ Eoe`671euC8W- -74hB!J;e%q: >pT\,eBWwQMY<+V`jȲQ:N"*Aڌ#%qW; b c(.wLVJץoAb& zrRrGPTͯcEv 0 /Pݼ0]ԓ'!Z@ѳCCX4x{'V1w3ʏw9zuc3\DzJx|ܽ6QG4I~#hAxq7[NZ7S{1x*F_9~I Z +o(^0{8)|FhBjyV>JctWL=# ںC]F}Y&21[?xYOBKzaĦ'ǩ(90dP)b <ܙ mpdg$rYιG5<$r P,m(.B6XT M^۶sAZCCM)?#B>7Xy-eY)@#\z4 $H@D!H8hh֔νސX泣zl)[Ԧ"\\?/,* &*l,`(}>ƍ'Xrr" S U6, 0yo&_aL{/M6~9- 'K\x;b#;bt1D&wW[$Ɠ1 ;>ag j<6O[ɫ JwMe 70y`R,p[v 跹Փ1Aq~[<+tA 1`yi"QcZx6n2 &; VL%0tCQ/$H;^>wj3D-91S؊Aa ۩4bn[&H.V~ Ĕ.#u|rBXz^F./D`Z:GttFGiwb\񈴳esSlk3IRU7C-xF"Laqg\6ZxФ$Ün& 5}\Y32q e3_UK K&Pn>hS6?#}^goCL9n!I̢#θj+.HlB2fL,HW<[okV>ŭ+U&8C_*5d0* D.V NΧ jnczbv #3zY4"7mU"1I+GQY6t7Z0+ EyOĒr:vm!D푆g(.!0;"O%SNK)oжrǘ^ R҃V}֛v)M.쥕)Gaӡ9g2?a[50)29gHV:<7kNyLBƉQzK Y\t1Nƶͧ 7M+elOeZ ܢhqqq|BtϘO/ T)EHkNWVЯsHpqh9Y ,W)yүY,1rtX zX+hɗ$y3M}~2 *`x>H'0QD׆>+czRW `/-,+ E)Nm@@^.7ȬS:J0tp^U0%WFmqaVHVs  jtZImqHʯtbߵes|㹱`±z3l3;\Pߩr/=L=8_#feڴPbm>wi8q,;1cKb!VvJ;YI;v%re^1X:W7%@9sQb4dWK1F{*&`UF(^uӔ8x(LL]"P_`?7dr8ܬSMR}PTԈE{e#! dcO\69;k uIJNd$Gъ kŢF0!…R@GdPñDLfg5-'%賚Ty 5Ԝ~DM+ =)t{c oa:\6h| m-{hœ\Kkxhlv[n:} @͟:Sar\l";n$r~vQWJ@bx<=P[g0G(p8d:qπ6q)l 1+e³Ú^d,abĝ{Sh2Tky;] wC4A7O9[&<.x4:Se3L=rx:G =_XԟK!ZjVirUs!u"q·`#-UUrQ&}F"nfLxQȔKKRLyV"rIT,sWo=Gmn.PpH%8yiNVCPB=H¬3"=]Av#;V@_NC72p{߾BwT<,P{_SU|k5LluQ(ec_Sd oA&qh}0?9mOǖg,L^}g@-$Ѿua0-#rweJC3(kxC6(-|ttA+2t-=bY&=YJJq`ŷaVڥKjTB'vXhPLq?wgtz'NĆ>;m*Q ӄΑT~pU L854qNFw (͵Jw8%?9+ixΚ]ϴ4N<+"nxnreԄJTf aun $B:}#V,.:ֆ!]3$JN1N1*,M5?ۑ8VГkQ$>^&+=gZch@ź ^?p._fW\T.P v{cKcG"ݵ]F.ʷbaBfؙaݞdoZλlEᗃ]+dv{uIߝV7ҳ{koH)/yu]"%m t-Uwg͔{(-MRp#c}tGOG7nLNTͿ xa5mS\dm FftK>/?4;0 ( /g [T57/bJ^ě3eN_/pnZ4II l'x_h\8xp 6W^ H9'&] u7Z$L$+wiNYP!e**`أrXnSoЊ}Qb8Pz'w#1IADOGCsK ewUҘ Ǐ&5v#5\p,%K Vqq%+HǞ~oqAns^c\*DR]X:N̩;% ib@(Qzvç!#w;F򒝘`(M8 8-fŤ WSt2o3UܑBڮ-A"[")##C3-3K±:OuW7ԡD7?$I5ق-˸dOXno,UO< T$utz(F$А^ᖳ)~5'y^ f J:8A=*pcw5fdOʭV2nGAqʯkta^ht[$I#<0!:ݛCI"PQǪJ~)y@*Ɂ9i}uq>6ٛB =J]WP^8Dܷ= cΫ΋K$;xGai?PSQSFG3n꺝Orׇ@N5^[ܦޤ&`QTof aK&a9E8yAd p+P6_ɶH=# +Sb޳thF0,Llޓm=j&;f ?>Yļ?Oh5s=Z6YI.Um|:"c }"%%o-wʐlCqgd-"5."!Q_x`:B/P\}B L6z׿ +09ſ=F{x{CF$`="I 09y֑fsyHmHe\-H mƷ~iDr 4t쉮@d-b{ʸ'E,V5gEVv?+GYMt4"x@nօS)$'tc; &7ߜ|f#FMfy;J\+^ " OS,,Upŝ5&-'I'b@TxaXq`3:Y7kD?bOCٌuG #^{GR]] [4DS^͌BIBnz3X&w?`bmsJ'(O&5SٽF&ga7Oqx 3ж<]R7\*-Z7 s"*^:pOt;Eg<⇂ ];K8$v%;8OW(=.נJ{vn-)F0G ,=I)X톇jZԑ<Z>ved4ule:Q"C6&?wM"ltY0ͣWxG-9mW1sML\%I]IiRT'afXF, \, Ǜx9хvӥ8*g e:T]}Ŧr$Ĺ32'KC>Nhjа;=×(ibݙɶզ+_VK 6(}oH`?eR׽.XH} U;s!$KFbZAC~C5y/2D L{9&GTsU C>B| X  )9>))n+EOIE'XOG[ &LJ:b@] f|}&"M%Ți}[ # IHQ͒z/Tse\D ٭m;בGZWxHNbpF+זn1,ۃap٫>*E%Ɯ&<^5A:`a$g$9'[;$am=O-X3]7}oN#$ Ϣװˣ*$^0z'IKx^5OM~D/( _tt;6TsHa=f|ϊMnBk^_+~0@`N 6?ZoQ pVt˦0n[,3BÑYfnᐓr+U!&O׮ P#,"w^!)nx뷵^&Sʈ q`WMWy\G£i$ǡ]Us:BsSt6ڣ N*6{@-:65j lz 9+k;v2g D"bqM j5 RD&i CeJ h?ek<5iQ=jpΤ$(:`L Ǝ`+yJz]k*@雷Īu&-\ⴒOM>M|b}gѫ_u'=cY)t vx͋XRJ$8hݭ^g?2n(瞸o`]ىIo>lL1!i9#יKkP"-" }\5y*RK=K Or,dAs;X<"\(C=!k1mL Ӗ_og<~XJb1eIN@rLr]-~ӌi (vgW˾Gw$%5 `93\I߀PvPnڄ M>XgP‚{C`hn`" 9o}R97gWӊm$H%\{%(Y%E )P]) 55[oR#ڮyY!>9B{(Kabw5sXd僄:/1oYW}3tsD0I1Ǫn qc?,ݮ 3Q-. f,r%$^zh* r;|Bq5xk Oz:cilt4?uIe,8\%JJWeϔr8  C&Ff1#Z:?>rdVLYIT/-а5f~nba̱3P5YcQx)k IA#p?>smY(8 <𜳴ouXiH@?=KU 8k*%mq],:4υQv6X S$i\eԤg%k1{9l,WcH:pD`s/Em?<=.o62QE=UR(_;^!m+]\4t(yӑCF/$j#Ag^]vTX_ST ;hno!Q#4xK.R-;x\nQNqG. A"(>)){_Z(o 5q.kDMTg*AgPufԩ X73SjaB)baB>w XZ 1Qbe,y@umL܋~ WQI^Ϋ=q[!nU]:yonV;?/ cD{V޾B Á|#D P&;+b\j=9Ӛ\LuӭgI "nB>h_S܃XLucM6Y숈CԠ!$`2ӌ-GJ/y^i4O|Dv,ߩI,mP/]Iol4Y 5_ʗ='@8 ]@wzH,5/\%TԓKoPZz~Gin.t-N++N܋p;4hAS;7oZiy|˽»: Z T(`>g:Y4mTIyh `Tco${/ R7g!n=_wPd,/{3rjMV ƳڜZmV:>ݟtO ܺ)<WKBɁDCKZa83sl״:s6q{}"5]vN) ߥR|ߔrLVC3= ?5ï狘N/SQhg|!z"ied(._c*8I:3w"[{4å>8Io(k),`N^\n{E)VZ Ϡ*!å [PNY: C|Zj9((bSazrXʻ98U #ߝ"p/E>eBHd ˺?f3uRk + hl*OYW&5}*nZAW %6]lU 慳99ST31IGeyV3z(8Z[Z.?0rHU`ݹt<[+&qrkDĞɈLK]qxεץ{c*0 !sXN &e5įT.[({cSm<[qP=n9XbPA⡃ØO܋!o 򇔕m%/44ŀJ> %A/yJHi)r'{M#>ovpaH9c>?m;!Y]DpO&jp۹po'-{rj<9|%|H\֢P/X>{M݋ 3XD|#ry'x𢧰y yRJ&BiPFdhsH~>3S-pu>D)GcY30ww貿l&d ])iR~cAǴ]kn"Kc\q/TiMޏzru4-Ab9vζ*/aXHrqqҚ|]F6,1D;B;ݒ.x԰b}|4icKx2i[[4f!s##k NfaqlڻJKE{Zc3A{ rܮE RQ1mk=4NY0#)>Xj В){*Gy>@%{s>نK:ޛH#HIQ2a*&`>O^9J!3 X/F`P}6KϻGݝM M,EOrWG-aofz@02i>vۥP8 E)& `iPr`T=Atl5G,/C 캗 z.m<؊9@1#5&P>-n+(&2tM*뭨 TW2ʥ{=.\{]^I˷ !H+Z1\ˉ1*˽mPkcY? j"{i裻彲zZcIe'qE4}#/߿?e<Ŗiy 2Hm$5L؜mOVeRyuvcu9u0_vEE Į9:ɊPe/o{(_|NOVg] Ƴd diBlC?(y|vtǶ]y[e CF!g +%8%qo&(V.J੪gKҽ3 qug+qX&[GhI3+_|^B/Q)ނ^ +6GV2cPFhQhAy.cyM'N hD8Ja@:S3'{gAks~klH!* "#y 'TǘV}v:^׉{*̉=NjSk|$e~ aCSE *Pkt#c=!撢f$+Q6+Uz2C^N tbE]DJY8{S.+q#> ۻ"W iFwǘi۷V/ؗPeqNb3 /2{ZYIɃXiZc@|ThJqJ㗦VԢ(W (Vk** RسC{ň%+SRQґplːeXbOYƷdq}z^aѣE٩ e]kSӋԢz_8ƄFG#=۳ՠkz2Iq}rP/VƑxe,`5MsIsU 2Xl>#aQ +4S{,fn}3t,XeBkz@j/mD!TJʞ "?1J'YA)O{DhNڤ!vnCbt'ݺ򹿋OBA@1ޖu۽ä^&#\`2dK>,fF%#<$Ph`<HOTohI y9c[|*rӓ[Q8!|DV_VHt` ;/M!5ȔYiAZ97FV | ;ύG]~ux6s?CçQc~{ҍSR]8}S2i DjT.鉒sM2X-{9wFn6DW'S}gz=Q7ؙHmy]Ͱc K{jM> $*[2||wf"n+W,&??$|eV.ك](mR!tF{?Ic (|QsZB+Rh^W;ur` py/Ks fRc{x-V$x;3(ouK1vC--ЭvRu^*-D2d՜*tA?1sm@tgCL^7y7#\ ۘ|̶Ϗ"nZ>>X &㢉S 9ViR`L𞧆ႂG"gR)TޑHֽ-at;U'pSth3%TamTm y#Wkwf|cc<]OQSзS<Ń"?qYD@'2 't ŠYeDWd M,~4DIhzjCN".YdYU4y Zϑgz]D^L]ֿdQ;MuL赗rb89Wf(+% //Hu\nd"X+8Cw,( '1]Qz ̃Sb P3*F}Ӕ;+%nw(1عRGH/ Dͬz ?䕲lb6.,!cuԐ'Om+fw3F :%2߅gbXJy$c%9F+pͩV{@{Tux4T{Uibjau̙ş-ʁ@xyyI)s `ۡ w_;yZ{:mݡg&*r#҇d($Wz .k% $D*|}MzZ.L'?-MW@1K_i 5%w Tm[kT0kqPQ+N[B-1[DwWҺ=_K#o;R)^-ee:aݟo,8PeTW)hw̑|D,-Ŕ|'yEGԿde@9HN~Rӧ]VȰGvj-= q{3("';)`C"Xjn˓MιN=Zl招)%M [aqyB^UiwQ/±8x?IՋpQN ^GxңvO_{uaUx[%~^`^%IU-i7a̋LNmUMA?9NI)t}Ir$+* pm KWP5ke1A&`*XH&M|6gnkC&5WA|R-cuj() ;zq"Q q:Cd1F !Ñ%Գ̳Vk)ظʚVLjyRܻ%2B=Btgvhsc_m5bC4{8O=GFlQ"TW3[Ƞ%I0>ϡJpkKcsyh?sVi.V`uWϯWI;)Ύދ>52J,8yp, ՝ A tpWs)Ti'{UN($vLdL\%L=kc ɩV3 vVpj^1MnY_5y ǣߦ1OŲ-` )}"w@z5]3Y-PQł0&Z~I`E!"ԴETU: m?bZ$ҫcnj AwspZS|Cx>Oq~? omOU#=4궤AQOvG n""YEvqK{ϣ"ŎY4*-/\$ nGUQ6`.+9<"S?Bz@InzJCbݸ;J{fqx^`5hj(ۥ½[KѡX{hN};^ E^AkIOd%Rg])VHG/U_ⴭ.W_؍Gݻ0A($PM)gd9]=c`"%$YHNg5o0'2(ΥuҚ 9liIpIć{K b a L-fum"hϹai'2ϠR$,1uS3* x8xH ^Q'`B{VIt-ı<1$˺(_[u]/+%q~I{Z?/x#>Qʜ+oaz!IC~J.ȩ{VVu /GQ(E@xvq;9~ 'o+L-v%☊^7P ėV5jw0&\9R;C,io`L vZiA/LS`^6/pmzⷒRn,!6q✟ilԃewM9U'i8nn+t zT݃)B].鮦oc7ʟ?3§ dfv3q2ڜ),Xt XEʚ|g RF0<{Eu~ʼnY;4@΁g- 7W4i|OP ^X uNÂґwТ)b S#]5:l | j ViOloLCpbȣ6Z  #O~xC(SxLJSqU~ {+<BZF{)/D7-*6TAd)v:Pf}. %Rz*QumJMc$(OglLuS*~|p% X t|ѤZA]ݗ_P*Z_^gURŬˍ B4n-*3mXy3> 1lr'`\T34KӉM'b<- Aŷ]:dH |O]R}zT K)_%du~xphVLֹ|5M K\sߪO ̗]RɾŲLg{"i2l5qɽRɃ蒻}L"㺠HUXԇw@6{5xh 67mQH )1az;B ]|eW=PVtvx tQׂ7(L>GE $sYyIcb\A6 3DHq pOZ$Ƣ kcHm'YPn, fݨ_4l'GO0V 1?D.Bғ+vw?j "k1Ɗ_Q 0TSm[\dz6CB*JJ邏斢M(AҤ!8$Ba&'N.IjH q[,Ǝ~LJ#~ yl\K?N&eòYe,s̊4vNj_U?aNBj#<dT怺 h)ƹd]͊!`4mN_*P ΧuQ\06f@X1bS>"GTNcajhNZ;&vZZdB5-4̦T#n!A[[2L+UA6MxxpEЛ.EogSΘ%7Id)똨+Ԁ"RK/4>5 ^Ҁl>tM赾<먚X6\fuHH:C7|T!wG{}tLh剹So^*m' *T9d^s伭M O XMЫ5AYQ*͙fcՑQ4("wvok@cd 0~$eZopIl[%4w|*a{\wCkݎ NT Lenf뇷HdTC# 2|M=x Ύ}t.8<0#9~tim7%)dXY䃪rzr]6TڮyU =S;IeX3n>քpyYgTvf_":N54[|2 {wIJ_d憏eFOVqTQa[C}N@>C,i@TCH9 [t\vKӦ&ydb];U/j/.pNyx/_ަHů*\7,3E^ǚ'z_%JMJp臗h^]`!h{~ɍQ̆yD:Z \DdN<ل%NHHT{&Lu)ן-2LJ=lxn9O_>l]6R>c Qd@Lh b^Sf/O/}`\2-XbOD+>l gv)-ʏwDvi+mY*}~ Px~>Ta ̔MbߴHTHbߢCӏ/*nk.1Qik&O2(dbIHuafAD``D+# [x݁*' h.8X  LEb""8g?'ܪ?EMN2©ygCڀ[}b D MN6M2kRx1]jm2x.K7tϓElIP  sGֻDgdwY/?H&>{  ֥쎡[4fO؎Ǯ_ #.PI %7~=7D/O#ώg[Cf6xjc_(E$wx3T`oZ%C8?^= n¸h7be5v9[+Zz|QMLC K#i_ S~*Ԃ¯~Y)zUB'q3Z?\p/]텾@HGKGA{3-9?(>н0hfدcDuU!0ӧuMh}RQ?#hٍT0퉼%,~?޷*zg?HeSb7g"r Nk+҈mm"x$0ovy̫`sg Ĕw87ly*̝j7)s Yq)M 9P eJ|a0 yb5ltrM O/ ]`CR+G>llgfsLJ61[?:_}pXiL֛ ʉ0 /;/`v8sRJ{Fg,d %Hm}>PMiLkZ#搏'ڶeR Qo_ߧCx¢ L1j1戳@{͢k˭+ %![=T @_8$r?@!(q2r{$޳Pi{@yRM.]ǿXedÖlv=K}SY~# d!BP|; B ܱ.>|}@[.Ц%q[ &'L be8\Ov71Fk(ww3UQ{Z[R̶ɷ?EydK T ť(B4y$rx4cr(!4>\l%K.|ٗb1WH|4>}4۾w%W5h̊MPn89~*¦?O'zyA7pKsgqOb̧/ w×01F;8 ҳ\-|y@{ d4;B G@֏k^-9 U>;aUo1lAYޢj^}tBJ}oNZ eޓiOB E1rٟet)k>Iw5S'2۷`B^jH:C2Ft!dPJf 81ӄ}ni!> ;S9v!{CdddF%#*oS{8ko3O KrӖ ]ҫogcbvOW"1c|8G7Zu~6EBONtEIeuջPڞʶ[v $S8OeS{-/j4ဴ=;qvC..wFڻD,r)L[v]<6(%y)suup6veHk&2Կ?SX»O #c57[I*Ē(P3e!82QRe}!1翍[r%*- LvO&fbFcF R& Y]0XFRE)T3@˩iHPۍM?\ޓdzixXd&s.ꯗs] c6%D2R1U R]DWC3qG;H4? ﳸઃ*1jwb4Gw|V^A%ERTiـO/`<-L,@hV3L$>W"SXih*NNY]O`j|7!xce>rEmep\)/)㝍Yk^ŚNbj@Pe&'!GaVg 9PtvqUڱ5I T)/`衡f=mK Em~敌 :w-|Ҽcl|n~.K R8d<Ƽ$uTT+K?Sl oi%"(5||CWn埆a%)9FOͤjHjkXEC&dg$:6e uo1#N,O H?+C|8@WUTUE=ca]fu@U׵q:u XHG=L}j:(h%Xor(j]XI 6x؍r3l6C=Ka& $|&S,gyMnSRKuNe۷qEZ(: beJ$T8`(cQdUǢUW=!+& "|K;&ʥLwd6./EQm:QKm! Y#u]: FaKL"5.{Ig_ϗT0mlZX2KFuB$#}(a(_,MԻBQytjʹM(L$ɯ3eM d?Io{Hp0zV6;ovE "7a}R7a?2a*t^=YLESgs9UP_-ä9ˎ55URt<s녨ra\ |"p5- V.;xx> iTex Z(~{Zztp+QkІD)=CV.U* Er^F1@nC\M!ꞢYS*.])0E`/ɪ&gJi % [ THw3]PHOBȮ4㑠^iBwx𵷐\Lm-?= TW)i@]f@E"u௣wDL 6eNvM@ۆ.{ٓ_ѴֽB00 I%/ߐb!]jX!=-U끎fa'XG PF[R+"NJ=E~Όq~+8=/ ϿpSÁ+GM? ]pU&-_JǝtjiHK5 Jݽ3~~vRr 63>]Ix}4ܽ^d-] )>RD&,Ӈ[#*0%w$;`a uO@뢄tQ"j$+f뒝>MӺlB8_Q}9ZMc*c4k$3J̮a[bmpcBڑ/9KoGz2P˅ :Q;VZ]2!XuK,Xha6; 1p,I@]ӴL&'0#BqVrlZuݙ¨D5FT_*)寸. (Fz.qV̪qLa3B~l(ID5`8/.gğ a )8aի?WQw&7qlmThŏRf؇ZN]adl,^ ~.ܣEqŸXMZbꓰh qMGJb'in8X*^a:=c9$H[.=99cSw#Q$_0Q 8&ݎ,j/AvQr:GY/gs+z-\_Lj.'g@w#ЛQpp9yy?v%4L ?@2/")ob K6E=rau/t'ϯgn\V}t^8g;3ItkB(QZ|PcppC3=o;Z-EO}ި&cX8rO2Ixu|nbmՁSnn4̈*ƙ*vXUe/VwE;|Cggܶ$ys>JS< oMʴGm&ਿ!Cj[ܢS н]5 Pib@Ԝ/9*ğYc,G qv[=/Yiͤ!nJ|X2͛v#C2l jgGs&4GfV6e9>Ӟ a(q1Ilf^q؊}Lv=A Ջs&eA 1,W'B_иZ uJ:re-0O4CL06FP|c"M%qib?e[-J) њg@m}l 4s+✤K3t6E"a^A*[*XV3jS&UR'ISLY}L+ Q3Ofk‹[{>GCPGSkeы> E&ѳ \;Hw;&"~]=6HqxlB!\ #ONG9  y1nP$~{6(j%iz)gJؓ) xtfDY@wB2QQhm8X67MraR%} )l.:Y4䪅U(}uVB|xaMŕ*N= is~%׫5D54 vϹ?TApH,`(tGd`GzP,RMbW^_;((* c]e#}fQc>|捵6ZD:>i|S8 yaMqD}zO׌pLUJIQmgAޔ!I*`W!_nVpKYXvXme`^|_zo0rs/X(o}oA ~v#[_Hn47uscO^ZH[Kj=J;`z&;ؽ>x4$a}m{c#ӴbF|zZlSƳwF͍. p Zb vSar7#wwf:7Y9O醦,=w_|HJ?ev.M9[   43'⾳5[,hک:}#˽:Vb7$0wņ|8D!)}G<>Y'9qm{3&#!.xv^{oQz)>{u䆫ϴ#hqNLl+',ɻV ZVhJ"C#"ĺ6_їUz$[K)&džeف1ukLZFl"YӁKލ9 &q@[&Gk u/n*/}ªuUԤ_\#ّ< U:{yi5icxӹDWؐ-KkKe+]<˘[hRsQS?#42,38o#S >٫Oצ `a׾:*4Vh%s/M0<`Nzha[:8/lpTe%2`*GƛAwE!ce.Uxž1V6v[5طX WEK,𪇈yv]f\%m[ncb_Lg%wI`uC O-7]>Lv`Td;hi}% b^mD~ِ{@俻zu3h`Bi:hX*奬$Np >I_kL|)W6xFl0#v^N>NHr`~*$mWQWg[7Hg,iOS>jkf! H)qǜ>$m\&hh2{^iQ^9g \rs _`y "eKEl^QC'ͥ`O[ByƺH&/ie7Ɓ%wemX\Ki,<7?He'yLa+/KGu><-N̄2 \%qk]{ |2r@%reˇnoB/\v<Ɣ$`3Hc ))lōICz5WSE>" w7E~5.0r|u:̓ڍZ ^d6/ {C †p'Rș^Ͽ?3^Clh.&\f$S?gVBIn j^ xI<ѵ @BLOMrn\iZV؃, EHT $1yO 9˪ nv<͹da65ZiV#%y".42}PVPHܡ9Q )̬!{yU2Q4IU]_]7wTrK7{?~ObV+}U%Y" kg:'$p{nؔ9^ y |P̫D1i{jQv44wYDOzv7Ow|0U]y?Skı6/0B}z[ec YwcCy4r) W$1'\YRlƧf*uK eēH\M4 XGrpF-5Š2樫M_4RzUҜ!}aB%~,UK=nrgM8r:C6ҁϔΌ"1$v\ȓGGnH!D̡̊22!ť­u,m[I7[ndY $ Yӱ-^k}n4&6+00îJ/Kqyᱰ3RnxI}!j'zdgkMpa 7o4fm1i3SsB0[33Q{F0!p"s_? %ڙ kԎr AsRčbz,C/9" "C!6}!yGf˩U 8ѠN[8;EGKFb.ss/i>;R*:ӳ _4J8r"' f}lxH馋l*6-U"_] g iWP5M0a8}Jg <Բ!7jWѭAw'w>jRQE:I}mgI+s@K,[u+tޣfLI+=E7;JI7-g#I<өsWc_)O8 :`hYy&{ƹ*yzF NzV}85=4OTT?5+$e{i)hmMؿ(RyӀ/`1zg3KM.$}@kbPC4ߍp="Ĉec[[9P< 4u1IGⷅіÏ|eF<u!GT?1MC!}'[)pU 0M#7F0?`vA Zm?|o/cmnfPmȭ dxކ{i(_?9hn{C"YcN_S(-6g2cL\_e RꢈQul~?(skC6Lj[!_+ WMM2lcD%;59p-6cڦlܛ^{T%,!y~% 2!dN r?gwi9eb_GΗG_Egg%sg$3 ʼnGșjMi˾+u~}*JC*3p96YY/f<~'*jSa &rbrPS~p$Ke:V:͝!'aj/+LP l|^ w4Q `[ z*YID7ȴL^/rTgXU70͞}{2HZ 0s ;yԳB#fI.ty-]ɰ"O$FT/7$>x8-"P4 "춬S8R bvUs q+G{6_&*yrH6@Ck`*CnbJm 2@ ~U[Vmtw;p p6X{㄄'êkd-6~'#˪&Zy<gX#-zc.mxZfeLCԔKpZc{'F&)s+;$wp䉄)_hӺ^ߒ#?(n{a2TԮ@IWƛ-`)R}`(6lzٛ@KUI\*M8:S?L_Q ="%:nkS^Y Wjt_@n$EiDP3rLyRK!I9$^JLդDΈgƍ.>$ :D5!LB)qm?J{_oKr"9*8ػ"d#EzZ:o}[O!+MO O6q^ΙXqV)UpbFs2˴Oӌ{y(-lIkᝧ A=*?£ &Lۼ )*Sc!7UƲv^؞(WJI*w  %Y(*.JѨg ~P=~djǘ_HECYhvZš徺'jNC a NENrLQ`kx\4}-3uCu@[2Ww^A9ols5_Y)_ SvC#G>(l09P c bf1Բ3h}j${#Q,PZe_Ч~ا]ܾF-t`7?X`tU8*436(F8`8yUu IS&Z\De;q6 , dtL~t9);'b~ 7Ulng@$ΛD́]֌*,4.DcAJ?ecydh5Zn+L5NphsnLtHfMy͡~~Yn[PJf& /=[4Q؅o((L`B51a9_@OnNbuP8Eel~bKvZ% 7XdQ:["wkEhHATOO@M-fqa \G00oU k$`5LBLvev㾃[rXtA2 O_5ʿ#Ĭ1Ϧ6IЩwe`̄-=9EILVStZiOjh=(͖|<*b.@|G8lY(p[\wfkeUl?BhCN"¨nQȊ66(6 ߦ^XQٖ%z?w#Wo8M8t{֩dD W0xq4n 2PL(>&n Iu #A9pMON. ЕȃifE PxqSaC^*o o8W:`#CY|H桳gؠR܀BWM]^aphōZ8kn-s-e(wBفSp70 @E,t9t',V2p=r\Y"떤&ŞLd|^$5 5YAb-vw*}Cul$>904B_>* ^0rC@MV9 !aV%YP0?PI E" v݂7ka2WX F#{^,|rniǐK~^!ilϘ$m׬,,ya,/sdtU67V@7t*!k*\>C,KcBu/~dY / \XD.gd=ς_^v5B\E>Edl/x&|`w4 V*I˖va.JʗG? C@p-B0Pˆ$'X:@,A7]FX&Z GqiCe(7F1vѦB`wZwԭ!a?x7㸐~3 J82w,Q36F']:DZ-s+3MlmoV&@MrC͹@tnw^-2KgT`EQ?su]\µ ˺c^/âLA&~TPTU{zyINOa<-P/Pоrz'BM͹ڧh:=X۲o{Ë(N&[שɨF9T)U ?Apf>ǏLU&ʙ +Uˈtj[VYz擟ԚJ?w?ZeLoy {o?+yuuѤR8PɀHr)VY'+ >4͞0=fCH^gv9ӢaYU3eX@ B+Ïp#znΛE< q,ٌO\䗇@8l٘,~iȩLxFC;&xzv6CNĸ (\ЖfS:B 1pWuHgFE_bƋi/yXebpI=ĺ687K{nh5ڣ(Saν,B|& V2_bd'asp}媺 ; 4 ͎)dKDbrﰅ#u Fɾ˂Ntt$n:E:LK,Ƽg&vo0 (u(ɡOMY0q^UݙNk:/G)´ @otvY;ňmg V:M26PR]USd{QaZs\SDѤMf #H\+ce',1.;f6WG@0 ט;Տ794+uo@;oER,Go@CˉDqe<~5]#4\o)u 4G3__$;l*x|Tr8_D4lV~bڌϲ?5l[G5 5@[qʶWy1p]R6'b}p%Y$ [ a"gG`YV!]^5وqbS ,YS~Wv? T7ROIH٫~/GflLBb1- L}F#kkm >.yM5Lp;˼;Sqd_ 1 S]K .R9׬t)Gțb˃3gXwy+Nd6BiFE(R"vפ"rS/ "-p7NN|*wmO2p/a빲">iyKrUo[ӵ.?W >ȘlHOv[u\C'2(o?UhM`/0 TDÃq3 X OVܪ ˫7׭odq-ʆꅖ@ x'k~)cvaYc .o?0B:#RkQGqpo@srHfi~=6*V4F"EN}ˊ1*|X7]9 pNN u.4F02(]9_\l%!qE;yüF_OWa?Z!V( BZLo%hTI~;YLws,z?p]]%Ʃvtߣŵ0=u lk`*lERgxHŅ@fY=q%/ZTuӭc\{JVau/C+ۢCgt:H(Nhуr% @H91c6g{ U[&M(2Wmy?5FAf]P`#D*J4`U㫣6aI\\t%Yoo9ħbvAÓg8?O6&idj\tt:pwʘO5T L8'm~q7A6n&b~2E4KB1Go*{X/^X1Hmwї'|K*h݌wf2`D?FRG<dxv =S6Fu;aq ?5U74h^E`Pg =?FBX7j,{M$NyWNDނ;vs|H7!8_%Av%D"s_|IVnĪ!Œ:5 ?Kt*tSngT O;ǡbs36yQMD_|-!-&4QȰ cZtrhZXJ5ngjX*zSZhdkB ]G],ment4=F >Wh$鞆sId 7z1z1Km i̚] T5&ݗ>'Z]lݣ<ӡKl$2nn;+[ADSv"%œ:Q6xX^$SG`Uv9fz+GΏCP$ZA]ߙxX`Y4I[ї=- uKyL`h5"U#3˵n^ *jsHY6z/*t}Jq J]Jj44\ W.O|6T, ^ I#.5ȫZ$[ؠRNz|-T.f36(a=ME{O`WL ]Kf6 x4t-7sst A AoOJOYk+'YT pHhyejCxs O_4Kpw/:dR2M?ڟ)D$W{3'l BGq-A/`Mm'j/!F/|8)dV_#= KplK@ k67-&^4} q%֙9-04D_c`䣊D #W/WC.^FUd55},BZ>s=0i !ʑΙ h3X0@U 5c6ZQ%M_V"(*1eH+ܶs>UJGZxYip~ָ:2쨃:Lj~eC1Vx't2jFE;E'k}aC+8PSatGF++3e٤k-9GE,YS}q<Q66<*P6|ph>.Ufi P2j^w3  !ЉIś6q...I別=RV>Q-SnXk>xg97pbD/C-nv_`*IF-$gDd )1:Qsȏo_gb[`Ce&KۃT %Ϲxg̚i-nAL6sĒ^E12$@%XMνy6D?UQ`{tS5Ąw~i+)BV rWҽ Ua$Z@߲X$5Y>gՕ7_o63w֗wNbj^ `=MZPȳm?­mtʴ.& v [dJC] q~(lsҢ%4꛳y^㇞m]0?]3зkQ(| 4  =)Z8VQHZyQUl+]=G*b툥YW* qe.'-+7”g@6QS<2ꖏuk8yP_.pJ[xI%wHJ?h"k=T9E j`sk&o~Eb/F$鈴%vX侼J∖"|5jEO(Gfي'uNɛ~\8[ڣ",j8k6mo2ݴ)K#-kHzGA0Z tУqp#کz,Nÿ́TFSE¯E52ȧTo k#,J ,)x̱wh;wd΅2$<)6LH^\qtwĉǞ @7\-\WP RRO_#I1$o[#dCkߧwg_XX l RO,Tў6X)Oe_{PܩYj4;k\kR^T?dưd/MFg&Gf87 D * d`BiH C❰H)(̽(;<֙(oQl|(+χE&cgUIo1rL 턣*X(FyV ff{2>`YAXlҢ8r/[x6'ᛋ12 (`P0@S/b6 Dcja.{pCc✗LT s%\vՂdTy-T Hےv&Eh-gg쟗}紆U` һl)CJ=4ki`+XH!SÎ i1 etxo92gv"_WVp@ie$FKty1o/@}e`iJ|3rE:d"(\ij`!+^cKʅju?}*8G>4o.\8YuI@{FMu $Y;cc'J%;dJhZFqmpqL$U}f' '|O,3N~P3 $vͯ-qߗ4y6ҫb\LM&Hi%dsY=i-2R>t(N(yGm_V,NPJn>]?XySfjKaVO \A]HB)|,IiM60yQ?NMH6=?(i]u퉙 Eޜ~?fIstd!vW?FI%g 4Ijc}vG5"| Hu)cd" ҴJŔ%͒wTݤ<җS S"ikNbYvP ,H=?>'v:\:kA]7^c}~㓸lܫUY?Cbqigfn߀C:l椳͂t1m3yniFqG'1Bs/A:fs>%,{AܺD6PEpR ~"݌ǵ5c1Ɯxq&k#į5[[ wmXR4n9~K=:P%-نOX'e}&p*&U PQiBfT$Od8cj/naT0tO\7Yx2E5yCE?\b6z;l*:0rB~ngHz\{5&qd~#-k0G8Fg.6Yt ΠSŒȪ;֠{ηr)Y PJ"22m3 /X96Zy{NEj%Y7^-t<̱O-̘kJ  <#3eɼ\-ikGkSݟ@ r._).ϱSB-"jq)`J|?1-MniwaABВGMq锵/̗(lQM%l_Ugu?23 wg~d\AH|oy怘] i2Ѳz♋D_ὔS 9m_Cy/C^V;x(Y`$(3:Jٖ2EjIroy!`z!t*v-]j[LlMM2%{!T/]|THgk:Ƅ _wfw(\qUas$,oo?C =K? W{\%1Bd*1+,LLHq,3E uOؑ$CjAy]{aNf{'@ en<SnKӘ0Ҷ~"Q 끪_dO.R9ܷ36ԦQRأuHڀk~S%|Dz{P&JB\=%jߝtr`AzG]d $tEtE ܦd;? sCZ-ߏX Ȝ^ӏY͛J\ZVQFDc()@63ifYh6Og UF'O9 !3 wuB'+&)tC]Qg^G`B\1瑺' %. UL/^^v@SgFYpp'}{}П@_r\_ દ[1cLgtIت#V ȸ3 Z4i,;D&TmCy#<]FuiMuB;đ5mEy9"$-l׻wP nEjOxv *TjRgR1$dFK@[yvyj3y{GQ7k(8lv:$0IZU&A1po:ԕkEڪ踦VSjH:ΑECǵՅϥ$?bJ1$m/]/*O٠!׻Pr*9J Yي5.ݯ)L[?X6U:!Ub+$~O淇G w,h_1cde44 9𜴀31:3݃4Kf[.#{~KCj3F=_^fR| $3R&mW0;@xIIIiAO+ei"џq sej_xe!J@ L]hB+8[bu\Vbv݁V3(kGeXȴ#vXS瘇|/k0 Ȟ|[Ɣibt$s'$nMq}ޞ&#]TU?̖ R̗WԪ)y8xmfʮ೽/by}ENiu 0ª !$UeAnEnh^ QCdm5#3=V`zXPuf}0\>HIɹx~IÂ@qd[O;bU!xo``5C\x053OWȓ21hv3I­LXMm(9xݔ_@X2!pR8FgM׌aC|W~jڪo;eFۗ 9K_0\c >^.`jMUu"#֏@;lߊ`bo1" D5 "$S7OMz}Q)748=ȈDU`PmLGS ([Z]PWETEV/cВG xsRYbN ZqD:3O,O|j :}>[:KEɭ59faQ3YbvIA!u SpiD @DThg㐔K̏o{Shx`]HGYL_]d:JEs1a-IK}LK)ؒkTa$˿@]a^:*mwW}vA4ZN"5Ag 7%&;{ePkhAqk`7a88ibj.Xcw ŀ&^! A}2p.GJI(AzkUitigW-0sNut/>}QN В8{KHsM % ^=~͌h 7B-&%c&Z59_(t7{ c e"1RnoX m)9`eko%gP&CHTߩM6gXaL3]*#_*WVy(7N\Ϯ⎦G"(N8u<{Q cUS|ԋ|U7rvJ[Ϻ7Aj4I vH}m: $H'>3$ Av #NƝ #ɤs6-@b%OVnU#k?E.2I(o4AN?Z׋$Ff-)*h郚Ҳ9|&yH?CKm#*bR`5dlFתcW8VzE}Qt X^ gpZdݕIGm:=/V")V]7eDeS }mkZ3蜹(cųUavW"$}o4E2*7QN&Pm|?ιCF\<)5>3ei⋔) 1 AXiQ_V1(*RK'G:5^n;n5|Ba:DTƵ3 {aXSo?<$Cus.^FC_>kͤ`!kVEL]/F-iT;:\B$K2iSPkAu<˲3Rv/G>?;Ͼ?UFjhui N Ad~3"k,x6)#;0|yͪN"(w/tйd,ax Vq;5q/siP!#hҩżȹii$3pdh,se#KHJU }/Sd@JKBi'i~q&J >?@Nmu s<"ܭ }νQu!KIleTw)M$m"6*,VT5-+0HztOf'#B"4uwU\ChB;~4·5p//x#ˆn Z4qfXUI#G2.Glh]ѷpq=O9.h4ٗQ 6Fm+&GTx8)F^l^_P!Vs̹΁'M`f$kh_]"k/]re{EpZͤDѦ1[}@+x<5C-rOBb noox[ %ь\5  &# k-:O7]w^k=VZ]Q@z6ˈ;M2P+/o9"t %"95,(E 9_#pH& 2.T+_e 8\ujְ՚<W<-=9l]"q< h Y~p:WPϞ&4]@2Ț|N/ڱFs9*.hG-qԨc>M%N0B)h6^Cvy+w [y /sOWb ':CʣiAb!~\xtZZ2"P"='UQ(P :IM iwWm=a'FHZjsW_quDS6jKD/k~[*;d&:#c>^ݧJm9>0_V>ݛU[g%8$4lU.6j!T,Gel}C8mwlse$^{܈㇜z$45g:w`XKL6UةUd5d ]#{=ъ_`lʌޏ,EܶƧds*"ti3' tb#292ZyiE Ө_P;7r" DqHpκBqgbdD>7Ǵپ)ā@esPm5|MT'7]UZ';)Ys\̜"'U>JHitDa!P8LJr9²+QL$g;dF<L2mR6yzO2X j$+WZ7~6?'\P ͕YyؓM~1qC7Y*3 >:G{C!W.ytnLk ` rA9ı5GNf"v!6[ʁL흓PQwHit`9ڳ?˥:ǍS[~+N~S4{FV[U[^?iXADIh q&l2kwy (fZ]\v qTh 3-Ę~x]kpF;sBt+Yqlv*X`Vn}eRLb(ŸCtϬY"=#ٗ-],>0K+QO osd"=ES6k_HGUHFLѺ.F_|,4+>ZHpO:@y=:^{t}\X"W0@]%ك^p<1geѓ(t?rb&;-l8 %lgK>aYGCk_.8eEJB(ńS,bk!3UY{Zy;=>[#׸S:E}$,I#M芔{oM@\_~^ﳈWS85O @$u[y8ɵi }jI&5GJ8M1OnBEXw{S?%<P3 KKrc з%~ ١-.qqH5D旓To/x6z0MsU0V&$.3|{$N7J߆[`OXH5?oӣЮ8G=k}l:oBNAά}!PTݔqbx ]X#)2%1ޟ_U"a]gS~Ñ z\Euz+ސ# ګc7K3|\5nL7fD>2iv!B#A;^#̸ 8>q~y]}2t%[^1ׯ O!6IfH @Nf vng$s0'?;ͦ#q4ZQއ,,ͥOk1 ?cx^R?s 6X #ܙHxqow+Pa}C-M=z/py2ړ=yOGv5?ˌSٓo/Pz[!Q4kZ`5kgA1'LwiE5m %Ox=M2.PBoDY^0~2768RSIRR8]ѯGP k+tDY~S k(Dܽ9,S3i1c0@cڀ+n#`,A4U 8FA?U76Np 8|SᕩFYU_N`%ľ[\q `pBdRElFF;FKc@5}WMQ-.-wx61VWM61hɐw7y&o2RDXKG7f`O{ժRS?׉YC >XLJEYeR,=1 ֪y7VIKg[ÿ~i8J$ M]Z0Gs:樓Fn!`3t2 ҏɁdB*j[թF|兄~n '{0x(xJx?U5 i3T6;XoI4~4&ٷ%1s-C|U= |"L5 &`"` ,_iה}gRIFỼ}A%3<] iTAⅷ6u/z~B"ⱐ#4AmURRju KY^̊V_,k7QeĎ2xPV;g'C.b5O_AdZ8'>.nwm 0v 8`y2bV ,OgŸv>Wyuq /"CT8ΘbwBoG`)TOhpQ I jݖaчf=0B7NӧF[‹=8J~z*(o'K &'JEe;g^Yz: o8Hh J7oUI=!v aUy ժ_Թd|yvqW9pV79{oz%vWԑg߀sV5)?Zx"}'ݞz?@Tr~D`v0rPL|;dI2iF[- #b$Q=_"rBvL,J5QX8{2{΀0SR~zʺ<*_VpXjۛ}N@ }#j,tך.A =js'D O*|wo fdY8oaT ǾTWflQ;~5HOωqhs6j(rs"]3ew!ɓwkV5hʶ]?c}Vb?8R]DyN0O/Y˝] n#;t-0)3h _*Fq BZ)0Zl7&":!}†]s_A82Yg}>g7}bF>OnrBJ A: [ F0Nx6a241ьQckfU5`|z/J=m丂ٹ݀9a358s2"o n ܔ3fu>{ɨ4r%CG2ei#SPVM&::|# V.dْpHkZ}8 6Ŕ5i2%S3~#/$⠂uy遲󊗗t'@ :{ϰ;K%6k$e&XEƎDzwM?GnV}j.QSm-݂LsCHΪ+<^ngz] 񃦵aIG@*kqˣӿp#0,6n#/0}79oq?{ -BʁN IedCH2^L8urޟ.v s(/{ӇƦ;Q~#,ݓs_?I" AUu;a wA7X>s9W?J.B@|4uۿ;"AGc}z=4W.j @7jxAEuR?KlXRmT-|d!2%#244y$GWn8ZGcYNĄm^[dz^V"]ղz8Ѻr'"'Q -|ky}oQd&zg}KiM(FLmWQnwzyom4NP!N{X+WU3̨ Co @B(_rJqjmIU*X/ԷsMQ(D<8vN BB=M-m1?ecImYMiFy{GRE@H2BF7Ps|w*Sjy@e8g~O,!_]l5&Nk$ .eK#> [xNz;nIƒQ2M k@́&kv9-nׂ%A]l9 M}#1/pشgw~ Ona(54检&kOK؈酟̳.&ڽ_ZǡJ9+M,LqI&[uƦfI~;5ntf|S2`ϣ\Ex15-eh˻(.ܺn6[qVcA @8^(rR.ȗ6b,%  snaYg ƻ~ _s rއ 3G7`=iϴ{[Ne]c1C>qbϬ#!~X,^aWΣKb9o&T=~}¬TM(U~N~d\6Hp?ǰA !iY'J)epbHZXw:xmo}W4c#-RҒX`x(m=nW$^q&+ǎ;5`#L8 @ϩ8TSm(sܓt`́H P?zZ-dYkɹ P ƙzsrK7!ϼmK)zp4i}2 =(>;r2syR *-8 >t.‡CQxQ+1; q>&BJwuj!(׊*|6J 45ax1 (qg'?=ӘS\%bؘGL!^(bw}z#,recgdnesLŅ+NedܬOC)KI/#ΰ׃let㤹w{[{/P"M?b7ZS] @&VZF'/-l$53~Մ{>em5``&byd/Ǻ9iLP_W!'}BoofDni_CљvqngZl֍`*z{(ozi:4EV稭7BG a'<Эrיv$2r`RYGrO)݈*ɿڏY פD!].Vpnu+:JWk=}|\\]Kh_2WtB`>\_DЀ3B$EPN`A@*t_ ~ _53tRYfL'hDVD%=Wz. ?fVP֊59a܎$/l5LjM TSLhsRL | /1Ϙ[I^')]PkS]m#4~g@z:w_n˵34f@ͽuO0Q$5Ho_d\3@HA>AEb@}"[S)qFN8C}Wࡓ8PnϥQVN-Mw%oc#caoI3o3,ivjDDC{ QTetov>`Q a~@}'.YW6%`:w܅ 4e?[MdE0YFCS&k|;u $"p2dQ?UxN øzX:p FQH39xdE@vDz5 @k]ϫxntI\.{Ado2%d; Td{JRuՊ'##!(4U)kZo:%!!<0cc' 3=] Ko:WFf7.#?HXzN6{e2 ҡ#tZ+ * 9NsX#0F6%6]Mvߋp;0ة7Dti(gaERQCF/uG 0$HQ7n`k:O ym;Xo~ $\bhw158'Qrt0!ĻRB`|`JDA5a?D̚"ng1ޣ-엛Pܓ[잱2a)X2c#82U/H5pJ66_5 AWa:y 5`!`âτ;14ݥg&wI TSzC-p=u;SUfYqNBiaG4Fc1+s&FK!x3j5m߅QzSΣn_D4LЈUkW -ITxt\mo3|[-8@(7PX r(_x|XZ)H9271Q2hrau/\Fcݶ4a ZƷ=Wex mOITX#@3S9'U@Ur$ZVӂi Fď >ɔ b0;"jyA\xXVy@ձT^ՀUbMZrRKσq{cfTK .h\ CItb^6"h_@VQp 'dG)Њyٛ;+5:٧ 2*2-k3 b1TZ(ze֪86vu{5iȠjul{>7x >b)Ny^\zzۇ8Y`UJi&Kw7 SjNc+A)\d>Ct YF\OvƋKfŤTPXK̊yT,V$8 ZoMϪ[}*@זyW&HA';sR8ǧ{n:{z"owP>cQv g ySwUP=l@F(P PIG%ĂOxC۫0 (攑=/̨mD{Z* m0)*[`> [20T1D5w-ySWӳ-3x-(T\f0ve,2ANx#6A"m,BH띱]Žh7%C1WGQҷ'Ņ,JR t!WQD/ZHkҍ{FJj͐X:ܠ6߆+e*՟<YR&-bUl5űcbh;&"<ϹJ,gSq_?UV;RsTJMqn$ΐW(fo z5+L^+ǖ'{neVֵ+'IPɣtct Ft|-=YSLZp0J ıhV} sw~apMgCrbcHl8";ÒRhM4.ZlG:ǥ 2vyOrSP+#Ņ5.|!|Rc`zSze B%L3YC趱*s#H_rX}+~ Qsk3ptOfm§IGz(7L*ZU)}cxA^m+de[ ppRJJ\#^Eg|[jǙԋOPoVGTt.Ƈ$~CZpsR NFM祴H˃M"Y1Ez B 2Rn};lDbOx@ %MZ@$`|1"(}=!ݩuP*ȝy[GJ\[f\ݲ Hnո]ɼxn.dDq1 )J8}b$~Jp#-Ps?]1r.R|!%UcGU4(V~~nS^Q OO)2GS(HUaʩvw^j4ٴ7dC&dW%BT,l.g8S5 V*٪ ި?u\4w 9R_t&~E?`$'%4l(2cCU" f'CYPBDKZO/Px?Zs ̝lC9mfeL%gcFBrtޠ3?hbطn*y"Ck-'I*2FuqcC#l6C*W6pXBbȸ%@a5u '${t~GZ ͦ&a"IDG" g\$WM$-&^MtJqY52!\p&Uϻv#?O/JUJ޲49AxƏ'`W݄ tgtm 336Y=^'/a2/5,S4o~qqnןnٺ2/o̻gz@w[epNgv%ṑ3汄NrhMGtO_3u=PbE+$^*k!-`GjKGUX'^'[ t,fgt퉪O^ P ͗uF;w@Cn s ]@R4 RwKb+k6d[8AlTWKs<#Te~2BfA"⯅  zsS2AIcRa@ӂڤrYdф[xn֝ϼeM@b~/s?Mϝ0zʟhWDULԭHgt:|)rjU<RQƩ,1>@Ha'26G f8FV VTg do1n!F2C8WNF-/ {tl e%$>%Pp,rۡ~& t\̖+2?DJjcv@Vܾr<ꩢuZpLøB|fîŔPIx1PphGe =n{/ YӕIn4>MCPKcX4a(YFn ÔG KE2_\ꭎO2!ix3@v\)٬ԏb$ ߐkm(9TҨU}|[&>,Rg`ajmnSb_=FY ?XEϡXt{[^Yoo|{ \Bl|xM!ؕev 7mMK X>HZdCNC$>F7Gx#CM9ssqdh5@0YNxO8tpSA_ax0 gD5įcNCcS_5h& j;^.[nC&nMB 2y~/Ĩt߂B#TU?Vmf泱Tu[bA;)LrG*|۰rqۛ\AhVS',;3_D_MͳCEt:w,55jo:Tқ>'Fn eQ-``a_kթS+I{.Q,RB*򩸟TB3oc%3 *h=+1]JZ }]ŭ8cȯhy'ucqgJ7d= E[6maqk2J§-˥++.<(ۭVoڑ h$PGf]?6r_'oK>c;n<]UC<[΀`|)F!jn@}1ېe:&d\tsHe|{5 nR{iOY"?5"|n;gk z -y]4v2MW_R{Fwdm9`FT z1Xr}$U a5>%NS^SK|1_},<­q`S(YYʰgM1k{L7]k=;>W̍-*C|4g 8XAIv k9 Հ}#ݴ/Jbp$*bю ,w6'ia" bZi+J&rl]GM=(pQ]wX;l+pwLu!\YnZw O[g@Ѹ"iUW#$xy!J]Ceż' ;%uZ< O:ܹk:_3p2JfaZjdn*:NxL9U!6Sgܼ;-\5iD|ِB3(ilC}#~Fhk08sȹda;zBj&xQ;tHb"/! nP?HsiB # G;!$ +$42"O"Vuyz'cVsX ^0=Z`D1[?Rp΁}A;x%b Ol)(nēv {#Vdq.aKq3TҢde]'# yFVІRф_*FG20vl'KwAn1 vQ2O#ո,,AAN ~.)t8JuP'QNMpeSA|żc~yPC0a|*N''"AV4;'PSH ( axKJFEY~Ð{Sg%|y#sm#Rv!b 0!#voH 6sVt'K4 C^ hyC7l/N6^#g͊l1E 墼5U`{p6J,6/ggCzה',]f^=\\+ YVZ=%A̾`VyݐXLגc޾D0N$FAo!dcby̷k“cK.=K-E16v+pؾΥXOVVd36؎vN^ڣ~PZ}0*>C-Ͼ]Sь)&5*MdFC8G-aU`*q +ѱO&% |oEj(>P2 J%%d3׫1rCo8#y,7E #רK8]<h'>2>{;RNB&dkfZ&R()Sx\rC͐DF2YI_r *U`F]/Qi#r{)?i}ENb?oEV_%gj!کCr1T Duqj75StIuQl#׳mʻW@iqM.Itɦ1v 9JU ߩ|%fp9߀eyY2"QyQFMFzbeNm&7wgb<~TPrd51O,Ed癦=lQJX 9)1 rDNjuX1<$e!y|DžT޹*0A?8G/X8©9$ >~Y%a<`}#=YNDoxC-{JJ86(=ܕda=R^{_l,Γ Cj'(MvcB!qoTx|D:@խ+ɩ}J7k|lwwA#ХJXb;Z=q u54 w[ fL6J`U/=ѕm`gYFZL]wxG`n)]u4W78'O~bU|r*RMՋ5^EeNJ}<. o 9b|~ ͬMT`*ɿ}vԣbp.XfGa' B 0yh Z\Űy("%]^g$(9xqW:Kq z60^oir۳[p "uLWh|.&e 8$RջGa6!.NK|X'G"'z. hj^vA| 'Rc-$ՂؼMR .蠽f }zS $ *H>9ٱ?$kV¦@1x\o3̀Xq b+0( SAZ3(&0H("¸gc[nUa=ㅦ6t:==鬔нs<V4qt0AOHyc' ;E#Zdv/BWkO=sdOTUfB 5e5/#ɋ oE\?1*xЦ+sH7'.ԟbEM|nsqlU'$&ojYE2CeۢǀUªTN׺WPje T|5@)2~t&QTʜwиx]'!p[;$R@i||=éT9=e8A Q{aYAråŽ~M91L=]ص_z3MfjkbE¿#iwXLZ-HW+؀ML۟ kk%uwœb^W7#O׀~ʯ uȪ 4~Dn@mp(UI]獱j,zg[&H2;mtATj@]:PjL4>aMEcw(=Ƭ*/ YP% fM$ཛྷCjA[ >&Z)LOc?%)Ŧ^Pn"^jH%4w7/_dY1W1b ۲TB@~A #!rJTēo7n.u<1E [KU(G!FɚEa@e=AZ+˛Ճzz.MjeΒpRz} k`H_CcԞiٶW(~`*}e1`ːos  Ɛ+5e"j/9ò!l\5cZ"_R~i v]QbіW@/eƭv86X0a#(tE\5,>@p^<&Z7# σtaY 6ZpH]ĭCgAY*2lkVg^ ?28IBK>W6j$HY c _2hzDAth @p5,Ij#͔1Hv(+ ڿqf*ƍ1Z;%)QKei異hsaΐavx# K&ܬ4ӵު>s<@v'~G3u0`8"b{tZyRjEK2_Vz}:ߌcwT`Yg ?W C"Os-CqzA<·PU;UćZE+JyKD(Ff߯̊s§c Hꏝ8%m'`'vyŠ˶Z_ k48L05Z[g)L!(Zva\E@ _dKĸaW<'fP>rYgXnQ:6 W$"r;MbOzEP~0sE \`gOX=oFtz͋4Y C{o4aU $C%Wwg6Q%be2.^?:=x6 E9f+zK5#:PˡWHō5K 4ݝŬUYy[r?eG ph?/Q"z'KQU9:?_H3R?%M>XXw WyYcc6F4ejD_DEdg9|u`7Zh%LbR (tr7⪖҈G&BBo>+:q-6ʗ_5Њ+=ZBZsQn}=dTT^ B 1vn&& ,6grm^^Z/Ǒ~1E|nHr| ?),{KDBAͿS\YR2~VEcJzj6 n:Lvea'ǨyraG$'xerlZˍ BR;kWp0IA/U37UdXPdol_. l>Z 1vQUY՗Pج|f#!>3'?ɱyĖ/Y FF2;L(He }hQڼ^BU2 ϰ#oghô߄MJ <`m?@T dwYsd)&dD17i㉲k)@ʟ35g=@6kɶlTz"ΡUAό+V3 V2* _ QqpՄ]7˻_VliQ)ȧ$Y*MU8- oXQ.T`s2I_ nOmۨW0Z 5 ͩj05YUCk%?d(iWr.ɋKiʿ|z?W),JЬ[HU`VyZg]Z(!]B;( xڼ};;'Bl$¹N"|al)w$:ggN6:ToQ2M]3 rFݰ&e~Fd'e=qza-Mqӄ\H#ƞ:O8I;-:U."}8wz˩# u={kCWEZU&EY=vRqyAc)Ȯy:IHTIw``>8͇ܜf7}͑0A*fGVfl&kWAΨ7  /;k(:5;z@sRw9a0[AxA̼ ^sxR}cGo/2S@5;g"A\94?4,:lb FJD4Y/饝m~=hd^tD"MQK +X\^D.J@x}49娇Lۊ޹aIaOШbc)-x\]؁914X4RyO5{Hw5nO0#7IUǧÈ2"I r$eu5T|FB [AmWKOŕAodDC S$LKf=DphL8YnF9\дÏv5|.1z?>*kRl.T!,Bn +( !T7(7{j% )t/eOv!IxԒ-27>W! @j-2%4 0bUYy=j5Vdb7^NPuڪC/ $ _[Kb|3H/*Eg H)&lԾ氪K.U6po<Rh gxlzֈ ttijJ7N: )>ʀP߲=[JF:X\̭04<#lШ%2חޢ?~iYގҸ܉={Mt=6[Uqv^|D.!>{YXa/Is^TU e> *EC,:m!h s:H^勯Y*|~,aSG;1mPkY'F>3N4nHfCǃ٣I9ЬME|br 9&]G*VeJbׂĸCRTb*ShV8w+ It4CiI9-;<%xGUm_* r5#˽!C&J;2 F#@`.2D# YI ނ`^>f$K' Z|>Y|,Kke_0V% }F_Jurh2TR-2) qRO3=Z,d<\HeFzĆ]_1层"yjӠIؓ f/* ˿V@Y }ȯ-_e+gSN,/q%\pJtztAS q)wj׃~#_z=k1CD׼ Nb(Uw'[=/rU(L(#F-'N$c”1y=_u x`Bx߮dt5Թ.э~*ً5[U"`iz$9Z/B-p;7o( n9c7:T˅pr:5((QK)?^oM")#Lr"[DˌMV~.`aMuN3-͐6"J_&%5L>#V#^jv:E?w X>1 l0؛ͪ_|f%YT='xqoJXJEYD&ef ClOw>`Au$}&Uߛ(v/1j߽2QU(DFxS0ns>Ѓa&l`Lq䞗v}^*l|7nDz1pqyڿkA-烬]qr;'N=)ge=@'\E R-<4j֗+%ꇓ0V>%8KsqFuER<8"Os#N^AZG,av ^߀A[AGxeFL=٨sހRKqFXǶy޹DB1#u=:!~/d,N9$=A= 3}# !Ԇ0LDh4:e'9!/v%S` cW[ǿ_RU8!]&='QEL4̄IڮG%"ݿ&7zmNi\Wuz1S1,\ڒ8yq*c)?%maMUՔA_37gy0S KzɌ=Y /mn^ PkNn %0-;⬜Z)e#GkF &ׂ $؊nKh&<5m'˕xrB(ЧY)Dάqm~CV=}<;ףO~K3 %@6@֍M0au@7_tXgs =gvl@:! P"H[?ΎKee+pbH/-DFVf9yJ Μn-#ⰻ9w>GOlUY5GE)Z 5 q4~; RevĄEPSM)3^d4\ZPG178R&ó:|eD:G}` 1!|<蟺KAK0$Q%8YJ5JɲQ.}lOTWLO2?ZKY$Ȧ>j!So@ V,Tp$V[zzQFoPT ކ mWǛ(.CcpYC3+* Sen 70Ք[b{)m(컗G*d]ph"GϹff9foY>JKC>$|+k(􉿖#wG9V$7bjs[}1}"LI\'\KnB'g uk4׫ ߘwvwߞL=:1I,4;նJNf|0^'D1VR>ILX "F\.Qf@劦M5WQܕ|y60P3A] t _k\n!*q+ZlVQ2h*f\Ti$~VoJRי$8p /uu.4=g·JͦlvZ+'}}c-<#ݰ\a'+R|jD An͒10K1K>eʦ2WɅ^FnWIeQl:"uU2o(&#.B |̮O"" \Z+j_;@%P{,\ D[CW|АGҎfGX4=FV& -i^l`GF]Fm&o;Mf!m|U {kI)t/ߘ9LW_pXT `\ğu F{eIbe}[_H&z_3k3Pժ9]('ùa3Cx*Ev*f񋍷c&?_9ܗ Ž<: tx֥#?9k#BKI17IJS>6GK .kErntWjcbo]~p=S@Mhms_G?FX_o |>`C+!okg?`\ P淮m?̽B_ jR}^%gLO_}5}LM(]#3#dZfG 8 ٭ SQߙ-0~MCdQc7QwBؐ"IGTɰKZN+{zz#/[Jb{ k?n:Bp2…/ - tw4'.zSa:9!Kn=ssJR5322;)enQ,=:!\ŖZ[5 $\ œ!V#hy+\RэnrΔ?aY~[ }>dႷ/X[1uMoU({˂Y< N`0=-WRGnVF%=hA垂5I "G=j*f:ӱi*t'qE&j,ŤuSuAФɘ/YR}BcxAU0wO!cJq{v'*e\s{=fKk X0=7\[=,ʺ}qxm8B\j>\[V˙ {W 9c0|Xs{+Jm_;h#uu2J}%G{?74CMx0m:9n"@^i؋8*q. سѬQܰ}x:c,I“0ܤrBk,ctʞ={m`&%L TM? EPڬv9 8Uz4sBz*[vdJv=E@ u[ۥ ֔l OWN hOC RAFiLt^v̀ihj{?֝+8o]HVeIP*_>AI d7Vt}^CA4#Xde$ 7C[}Gv/J}bv`GIC膾!FƅHX8Gv f(< gbΘC}79q!U#,QQ@0SenJZ~I,OeMlA푖j4jߌ` ; xfzJ~]7 :Էw X6XgFݨ,/zVNq/14Q`Y EF,.]f%z#|<E)-āq0[b3`bJ9K$ kǀ5r_B|6W%N"n/TJ~즿刋JeeSm[7f<֔LR[ɚeeJUѥjFgLluQX%νou}i0BVP];MnGɡYRIs> J=~4f9̈ST7JV܌@B^5G-ۨ|:>#s/VCy, P|I''``'mgF~p3~+£nZհHd 5Ǝ^53& +QPQdf:G;eUK-~9Qp˜$ f7ne'S$%wQ ĶI; {eQUfm޴p 4Dbkq؉ρVV soG9+#}FWj! Dt&kn`ӕdRgyy2S>fl88 OjA@uWsϪEN!M-<ߎ;\V'gEa]F ں@x~}@H"̅"RYXW>Wů[mL1ZPJ5H: q5HI=A]򕯂2`7gH: DrеPHd'92,>̇دl3 >Idq [?ՋQs@#I}eIٜK /J>/\`v }TyEҕn{j*9(=a&ȺCob1"Oxcn"`xq4brIޙ$t!*zpL gpUstyA*nTq BuA <77Iwa @-#Ǐ!-۶}銍Tzb=z]Y5yhojހfmӢ3 󢣱b6ˤe3 ;b&7߃'J|zN$Ӓ0~D;h?]ФYlXI8Mg;Z@H ~,H Xf:`r.?%`S/iJPA)\Mi_DWhU@d(?'  }J.+ePEȫ2812~/"=KfZZ^ߩY^؀ Vm)];<7;Q]64n s6KD'\U곅Ҕ2 | 1гٶg1(z΁gMXKlsQp0YpZg=9sG `4%zSe"E=A|`d~|Eoֵ O&rrCm:!+"C].|xm$r! 'xc%K}E}y-90$>Q}9):鸓pἉޓF?nklOayu,?E#5^;NiXw\x7n(@vimr9 gypC"yixaV!Q"4QG v(Nmj7c:,$<(b7nIRek9 I *u=A!I# Wv!%=$Z_]J,x,>2=f33!ѫ)DC(ʍ50 ,5e[=HuRTں~X9Bd@#.37Bܤ[R霂]g[s7XsDKLp?2;=J<͑UeXCYZ.vIKׅs(U[1너d.*$^,h;/#5^#E {γGbH?qi/f?$>jcBICHY|S=u F9)?s gCVu7rs^!XVJ{oӋ}pTAvr&H$> :k|oj払-\NH'n|_1\`q8?]v<(0up; |R + [*'ɟb~L`GMB3&ݻFKÓGnYRI>g< Fz^`AH_\crnmᘞm=ǘt]n#=o~K$[Fʗ/`0_DX G}p0^|APn`#l,hzIg<Ԇ[mT883it }sݝ.ORJ0i5Ӣx a[w=mK共+&8R+k?Q񋓹 i;(r]|Xn5:8bb10VeNAR;gMۡÒ"9̤%^UDCyB=U׿IqM̩p.ӿڦr!oȍ_.ThP&#i>phUa#I]'x2v1йQm3bqYE:2bdrWG:3` [r͸z )B\R2G rJ,R"ЬN/'gt*8=sx(f(Gqv.zY,_"uЍ&j]E"T)g`kRJaW8goed `Aƌ$eK)s(S0@/+c@uiFvV k;ʻّbٗ v,A/XV>e@0*yB)-@`$3ʢ|e #H9pa6m.% Du Ejl DU;~]^WfLYlj=lBKվncG^W&enmHu}zB.GB7 TP;R[^봚k(HZS_P9i KQ\ ^sUZ4\sk8zW!8H^5jCYު5>Qwñw3slb.rQ^CBaZ/n1ӱhu21aHmw\,3PV7(au=x@G @*hDw> ޴L&EחKb;MyOamn`$SvH9Bv(4ʧaa2A U$ll~TWwW i|wq I j"{BYp`R=qhf5 +o-8?҂7v¡[׹#6jOwbh[b3VQZ S'H)8.ٮXFe?t|es=Q[ 51h[it,<۲(ݧ8QP ZPHT{ag88ѯ49pgװ[7hvybi15"DžtKthof]c+ٚ&F!}؇n$6p\1A(6#!/V4Mm/?y\e| u#ey #xvn,VMYjH)Ǧq>rǀOf+h5Q4P~ˍ?O}v}Đ|{b6[WE}%hIAU}zk[F(OF2q`(]m -u"$L@VņYtr_tWW2vQ*M4^,t)ؼ9_0 UYjY>R g!\T7 6̔eMP7}xE_d]?Lh]F)֨R$sZVbZz `0wЉöܦ!LU,ݢR&QC)tN5VRa{/ N=PꃇN>\hh9(NLRς&$<:ŴWw)-MH+ZfXc̭@Xl,y?,Nc^6a 9 +QqEvN70hTV0TCo+DάLSx־C-L7dǚ]pԆ5[7"V s| ʓ4Ӌëܖ BJy'{\o]0 ^҉:٨¥1_ .+xJ/\DmQfz=%+-_~ r$oJF9/ݻ`Gٯy2.WX\i1YikzႳÏKvbQT_|Ij{& ƫdPNžq;')!CFW\4[, (;LYTVU˨@LHEUV>'PLqG(D!:Z-Z[טUr,j -57:*‹7ֻBe&+&Z=,v[ՁKӬL1A$f{6ߡ*ja;B̋R{ЂtN`76IB6O;ݰĢeU}Zny0?qbY$rd5ȡm/:nG1+=Z'vK4 g VѺDsk/JE8%UM<dIi-aM6g^qD.؟֢Oum؃ĈŮx$DPa!g;B6)%h(g1m$YIcPxV "«6Xpؘ(!=P&RRMm^T͑âH*wv,.^ o"~ T^+>mU)v3o7LRMsyrM?RF#hCq3 Y@rѱP]m/Ph8&}bʅgC~{iUuo 6OU -9yEi"/,uR ݗ<] פm@,g8Y}$• $,Sy4e|<$ ՚E6g!;4uӤlHF><#o׺Ԭvы I-)-' q,sy ؝/-Q?]? Ӡ-FaxL}+$ՖAT5>N2%Y[jY!m3p̏Pl+1k0e4Sp+ỉ;;5$Bmtl%#u s%ڑ-h ox2`; ^!㢡ph _H_I׀ԐYH%c(G޹)&%!9 b0bazevE%oz:˱uA}*- ъG"n dq 5= ǎ /"4Aze$,j𶿡r'YN/ϕ$| E=a1rO{ZΉJ"QǢ+} Yj^MCK}Lm>~x7ʰO՗E]MwL1UXʖ &M(!#~mt)d86[ oPi%Xߪ0 ca.^b9 [!u[&NĜ&{]#8I/ 7toVL\ŷǹML)S]Bf`)Pк^0`|`$./Z[;ş琒}QG,2q@U+i!I*P͊1q|8\X?{!;c'MHNk'@Z[=({?[=,Vq >Bʬdd_mڂM/n5yA`.fϘ1G?I<$ y}憇Q( )'aBj}iI0x?YUNz aLy)K 3:d~ fV;&,uIXqoLKiv%æȓw+D) IivZz҅aj|$_w[TU *Z8905h"Pr9aڮzV= xfH.::a"dǙ<bX\]>|KKLuG|L950#U2+Z!KNyޚ ־Knj6x td3:?c&t)SJ+-l΋8kx u Zu 1BbaX|$Q)OH/Zi,=X;8s/;hW<"zs Lbh [sʾsU:1o +!ژ:Gͩ,+>[*F1@t[Le U hX&s>fM'!8:ClPO'M_nQ٘|Bk,>O[`;KtA* Gv**C .q~3E&Y#Ɓ/}*~5#ev9ap'Vy~c:}O SAΪ3GpQpI V._g&Q9w/d>eZ?I|s )HtZ-ߣvY$ S }퇇͝DžO PS85 WU_G;.?9İX5C6۟&uauC}NzxsXL8 f"?uݾ ,k5-u&C*N1,'J}r8C zmP=[3z4=IMD;̽x)r>.yQ$} 8CU7C`9|?{w!>t)h/TPJR@~3^)}َ*'|$C'DQ4vnN([>ߜB)TVn PAwXSY_x9J_0 qk,iͱíKu_<` :h&O<J VwcUf$cCcc2$ %( YJcU(by W\/x% |t0Q='lW Ӡj\ Ms>( r;|qΙ!G$Ȉ2Q0e]˙4}rt2f%׷,|NskA@j;Z{Nr%K۵ػP|.\̇ܖ-F '1]>~Lr$2bJ)7I,d7N=>s Wy5+"2&' g/ rK G5_P;ZI7qĥY~Z.h/ >' ]\ h}L=+*3t 9GYz(խY&?=MsxC%/p7B}$53=KWM2&]BزpU>R(l¦'ճR'mHOѠ~0:ve_ȾQ ;.79DqՖ|Y5O&/oCٺM\U#E*Qcr5y+>A6^O6L(LDiX1*O8U[3b`sjnuMK@3?kjмOaj ,qvd'a:>ӷo¡=Cc$Z{ 񳎞e.\q 5Llz_m t8`d W6yoR6$^0lmNo5O-+ ui!hpB8I~.ЍQ٠ rS5sItz$]YۢVL&`"GpksF# ֍8Ft 3l1}ĥ ʯy0XzF}+@uU5=(3]MNqϐi {qW_ft`ԙ-~T x!bQmX׶{=o!PZFOLE-pk+=Sl 11F ΅m< Aj5Baᥠ_T.\ԱYgt?e5`Ƞ {tķrD]4Cyѵj'9c"\ aQ…$b}b aXT9/4ٓs` 8?:{`FV>UdD{;cLu'Of%͙H PۄCC3x"2s)O4t(Hz0޽'?~gIsν:ry*@ic ߵw mo=Mp٠߻a~Zˀroj" .n71'ک#˲5#kf Ri[.pΙL nNu RԲ*U¬[R@o>KPuW߅?r\.bLp|7L+AѴ*6Ն18źUI2PGm"0X4Ӡ _8"Yxw…$y!XP4p+{gmD]Ku+t68jA$> N:ŊE3B7/Ǥj& 8*ɹJWuƒ63rT\f5%G] FI?$F@)94XsWeZ}û}!2N=# ZILw6xCWSS~eaA8[h!X"0ɫk#~-@EH\eAyby ߨ323u=al+`K -Ga*{7~v N Z+@Gz4=k;ut]ɆzK2R]bKN: ӌKMb;JlNW7vR\|(2Ŗ'K-ӑ8fLzC<=e| \I$+'R9]qfMW4t @Х1Ѭ_b3ɉdA\Br}c"8b4 tywŬL Sqb (KM;d. JǛ?hLGt'l]$Żז- !iBM'~z 3e$P6%בX=d.*r9AFļcrhw( {L"T9pӢpE&,,r}2HY3༽G؛q˿VagB/ G@0X ((ɋFUGEFGō[ng~6dcJv}8`>01kk  Rg)ؼ|䭾C¢N'2dEh=x$6ߨN:tY+hFO3/$BX؝G 5VVCh)t[i+ɷ_w.o4p \!Qt_p;_nAP.>AnRf6b}#kuP<U_@CK>ae"[Sad%CHMh$~\؄?Tld0 ·I="w n@ݣ28{Ib O9RYĦWMXVY;UWy F']vTbx%zY[;`|_%5 Duys?+7$F'n.8*Տ"M1KuS# I dK#w*'3Uxh)V79YS쌏_in1}\ -eHG][bIT\?+,r/=w'.ӈ: 4փ(p(+E;{}^]dnP¯٠DmڑS!DYwGN*u{v5͌m0'}y8e^]47˚X]Iyո%„f>/BJ]Q҃`^ȂVA?պֶOYN`rli]PѩC<4PO)CKY+n*U!HuL<# oupPS%7|tkS^}DVЭWvK(s#A#1OH@*㓮GI: ̩`4&΄fid@ :Q1J y&|8jUv$h?S"D_pMkfUEk f`|jK41[L zJ^8pF]7\3SL' 3w6wk=q#l?bF܆0Z 'RJx7#Sd( KF-P/Zcu|}kgf/BV&Z*B1Jޮ8Em%"׺hp#~441eBdvdM(9!KeDP@*#]o'v Dn'vdLxҬ0TSJ<?YAsު)"'J_Wdլ0%k ͒kB:4CcP,v 'yzZe!8]55{ewøR-% ׫S2r'x|@qJ2J:==CZ)T 9z0«$yc;6uqGki'yU9g`MMBGK KLDre#y=骗ZHEF_t~sS~%Hr a^`xMeRYże3C0]H Gv1C1WMΩwZWhؔ:t^θisް mL)>RzBɔHs\ ERPٜCQ%2 Uk]IW}lA/d=¶.{lXtZZT Vҹף:`*dPM-F{;E?@۝TTk9U4`Gm,e틷ZI*mD]=XukZ zhm6Z! Zy5<;|ީZZu]ut?Xp ^ ?Or),{3تF?+e.F1\M2Kp'ǞxJZ:rbOmXo$DJ=AUa@~_MJAt^,p[Uh/J1\ Dִ*n[{[ah =w=ϠBh] ].s5|EEUZ7lO'#a3 H0fq$)';#syFPiw}Ѝ) cvg59yƷ(b_n مy#H9c{GGvaHb k!9@݈/y+ ʀ=uoIrNE󰞟T"VƗm\iا)O<>d (ɲG{H桝W8JTS#Zw];%8@,SLj~ AjtA`/b4ܛQVN!hXEICtvN/zXT:͆J8Ј,|q:wXmF5jE7;<݉Z]y%Qvv8z %^7@{Ni1[ƕr&S%rVDNu'z_xߪ)(!};ܥM .םdsƫXQ ƾD%ԱFPEQY@P0at񁭋- 8x7`qu8jc |ba,fr+ 2 dZp5yAFBY?T_euP4vz 0$x#SQj/c7cMP ; ڸuiQʏ7E͝wIC6O\{6hjLs )#njKok77[/Sq)sܿ- _*p20g_:7cyn0y17d!9$;"L :xm Z:[هG#8_ iezW/Dcgܽ|1ޜx|q9*iSL 4؎ z8se[ %׷jl^AꝹ/T vqBGa!yUxL\jٸݸߤ'цJv ^1R'6İ]C"RNI{׼1`ӹw,^ь4W_b*gKU9Ĺn,I`&ZC5';фjڰoUl8KPR=oשwmsI-IFyt]Aݒ°ʞz@!6Fqft(Mt7YڃڎDnzC :4AߞfT*MN ڤ|ѪƉjϝJ23)/k*l!tս)p;z%d6qc=LBFGϞf5"3{c5"[^xFW2Xj*&|G>+RGX{,u XԦm6afjCTtt+@⽈9&bH9:Wa>^^.G286{tRhrnl\OAJ!L5($5Y?+r~_GY`4 #"ҭָa3*z9k͈ZLޔlU[[3{Au=阒JIIujQ;w=}ATW4Dk?k@0y~[[8wu!=2WN+ փB9ih|gCWMeiX\Ԋ &N=,SolVa 1+HY曈f6l0)KC!$R=RFѽLer,lIdj ?X p*1 wQTN`#Mmpd3/N2|?Yi6)8j0HbzI%2.M"&5Pc7TQJAev1IȮSNwN/o5-aTrX&Zd%y Ur.i sx@&=2vWLf,4y&{ِ|c<!3o:)q:&qz:k|eӢ9aQ9hUGN+>ưڡnmV2!F`CPK\RLZ&{S:#|0 Z_HLZyI>ueV}&cKH#j&zb Wrm+Nlk̕pzsw9bx͗J@(w hlIanFm P 9?{MKzzZD SH&2 /Ʒ dˢ ?TA4oFTK:AMZCJ! Z6O4|6̱0"I/%tZb):(˭NSq\| )g<5*p_2kn?֗Y\"?}Ep` lLJ~~qY/YizR< S )uv} -?GLϧ¡ YRƊkP.T5q8._xg $\X 5KA?IqS3L|2EA==^cD|w.N0)O ~ ݜIDp=XqOLgdZ">5X\,*xm0r0(ظ0ëM4"Lz\xEV#- s:^E( #J8 Rf[gt~LL9eHjhA]E0=e ThRTr6Cg7d<(Ja iD:,^-G&LϴN^dÜXt7z2 }O*.&ҎlYg\ࡏǔ!B P[D枷jq̗XPIPJ}v;ƐG n̚),*6ae65,-8v mJ+4xötT>fTR\2ΞG.p pފI|pYòhň5(+u53Y/m+8=ɡKgѭ}-?rgrNItSS>KU>@_WT Phadbj]RB#c*vqZ܏VRІ`dTcR^BbɒS.((\Cfoz™b;'b:鎬o7)(\%,wXWݚpx6g}eXbH4P WW8: *Snb DJ\R};t1TW`~Fj;x^bxi!sZ (iA;*ro"+buK'Ҧ:Kc1ib s\/5bY%^KŞcרSh\rH`"$|wܜ,4a{OYbsY-7u n5WjҰi $.0fO?~*ŸTcqgAFdѡ[jN%z-NFn4Ϋ\Zq|۶"fb~:UwƫgkcAWVE﫞u~iX^Ir~FMQ fW/h|,ѽb!`gd}-SyBq4sk MLܰ`bOf/_ȽEYP tgdR_X~gH-O%b E93g=Q}3-2b(R%7?%BPtlZ! 0I>a+?$ w_^?7ѠԸ6ozbN>|:4G{CvFߎ vYz`,!_Va2F &*qo?ؾ8 ;K2ݮӵ#*"y+ccJRܢH?,(C)N|j'jڢKر.:_;m'~:ecOL:,7VFE, U8f' ,jO8n49ј=e|"mAAANB+!Ǽ}X \V)n?((@{9?EOW"EsPNBi%Px eH(u4M* h^7s1IX^},滐" ĻA*u3ʂ|4E楅REds=۳  C01K]昸+_pI^)/ur u;mв 2@Qk#uLUS( ԋB}!E6`(3s-c,P4A韱#=G֜;!ӅV>(i$t! y ljZ& 79#|oף [qWmƨo5v46ug5?8N'ˈ!TL_\4:f^o =qB7OJ1 )z"N}m0qݠacSʚJpLvCj*Ō_aWaz) !׉Ο|KM<-e&kǺ8탕@3ö݂mnKEeJsOUHK86 ˺ʹGJ@/Ba$}.`tɶ7ve'7DZBI{FŒQ1AR>ø{?}A9ZWXXkBnΡ1/E7 3rċM1̠g&K!Fʁ٣  #]sF>!0%-tnS *+BAuo'(2h]uNY57_#ܴ {ʊmط@ k 1PbQvq8) mbv}> Nv(up!2T n.#I44{ G-@$O/a֕W0O1#돵(kQ Zb9/"a Ynwʬ*vWG+q {OtFAh&??'^Sl* T rڲYfnqWݦfأ5A`rYtLvz WL̒GNy$ U'DBE'2Jg\ZdŰn߲BHj4/FA' 4c ~L3FkF!/r)x\] -cKԫl {v3҂_ݍ}f7#n#p:ڏبvxb3;n޸(BANM^lwEymK݌,XcYՖNNdh?2RL7<,I쳟H$V1Xd.(r}MSP'__Ԧ =bLLUdDK ?k¬>GXl:f}RQjI+{X\q`t (9-g!>R^iEQ1&P1=Zo(&o.34-ᐍAkH=+B_ x /h?8A \ѬN]rΗc1aϤك(&΂ٛ#׾BAaFYխENfuLKzbNlA}rBs×YQp_D`]nQg@x@VB~*f wQ_Nv \Ȭ9#ǛѴ)i^3O)L)PERk/'uM xԶ@ATuSܳ@]ݔܑbtrX8Je8XJv*ZM, u(A9@S@x^Fi̮V.ަ˦2+cA"&beMTCC3<[gf5nm+xߗz >׏h\=m}ׁKlʰgRO<3_x:'Cv_5)/ *VI|/ĕFvuG?3 AeӬ[""=8ZEb+(7$`?YX7eM\v ĝaF;Fycl+aMGS$v$?@̟&3ޕ% ! .F]2\Q_(LUjZ<!o_x&GV/cB (rW~USKoph_Q0ӯs0 wu,W\.c1 ~Doe%T"kGP C"x.2[x=p] x8yjƭ6cKL啳1Ͷ0v88nYg,Wug#փ }=Oh']=D:@āE䦮>SH$ a <ŴQ?`ك :B4փ\qR|:Bx8"6u}rY͎7}BIRssȐ蛆5D1ijkR!l‘س^ 04WE[mS/^5wr,!{7;7Č2] :\DV=;@0 [Ҡ7hps,ǧs]7r ! 8[J!u9Y1`b}&rh)MS|`i&z1ReLiuά(R:[?ӆOS ׍JTnM5Sh|óI ԓ+a@4fo [TdoElO$!ҲI)[Lm4 OF&Hn՟5r0BV?n}܃yԛe?#h:\1VUjvyk2vA@޲Ch;d6aAGkK[zZʼ$}n;C<ќsLJ<$͘usӮ1@*TГwvd('iNv_ivB61j ^nO*X> \#n@0qecs^s5Yn.5hz SmWL "gRf@EAx\AK+wd<ߵ]\§TH {S !Y G-XSw(u ;jpu?55⺗InծkuvTcKeN`H$ v+8'xMJd u"/ Es{^֛KJMyԵr W)SR].:Bg0-h]n++A/;g\ ܀))}r _޶CtHitt=<#5m qۋY:Ð42 }UXB̛@7F|59xyQ;A 90{!EQ/!eYv?sq{o@A%(s_4EAË/0[|uydH4CI /-֯FEb]XWx% 9J%ot`n=Ra |.y$!"eMT^Q_ _ wj~hw85PSI|^j<)ɀ+RDՉG/ЖARUӠgq4Pc&x,06x/`XMn5ʬ88^[ag;DkݏVt~ >KQ93%6sjL?Jb$Z`V[{(,źxݙ{Fy|p hN$ۀ =;/ $uŮi& 0W3)+)]ݞ=^E7sPDIIP~1jΥyr6b5MFгcW~8-fr1cqwAHpaU8LURkNH4xk@lju"af(9.mR?SsّkcK鬒8.9"r_b~IOLO<.#:+r=wkVݠ&AH9?@~1Ym֮c 0첞 -\P30:I[)m,- k}[WMdI.BV͟zym)4ΓsGl/3L!dֺbi&X"߱m$ݰ?'OґGW8,tԇ *oϞT:bBn U؋: vxS̠9I\K!55JzO xpZ_ mkz)фmv]2\x x]D3*z/ͷG}x(HqyH[x!~䆻e9h! ɿ̵#ůn7AӖJVrJ"#+͡~7͘hz`ڀ`;b+ͧ&_ 4!?}y+lr]:nG@%zS&@Um yh"x! Y%zCd©"8WwQlD }p̞H^ݱ}b .=e@^1rqt{ISmKrfz:)`ؽӹzQC\ӍS>LƄ'!Egk)ջ Gl%EsY vZZZ a5/˟h?c=ްӆ [U d綤\D!ƸEsy&pBup.:%%kN1M͏8C,-\ }5:߻3r56w,(ԉ<Ό"3oɏ5]CS0]ԣ \{I(V\0}mgqLѮ&ΥHB k2_al޹{ypAY Cl*&n @ f:rK׹@3@'5{ ֆL2'K>g2iftJ] Q-_W]lKwR<2t$anGh>awe#piIrUHSw|DQr׊JywCMnZKGUV(쎠E*HeġUv_% 8XmmlBx9r{%"k#zq ~j7e)3XGi8VW,dˑE)ҥaG:VO:ݜ2j^&}RK|p*N;{j8`0kr4+?Y~ݥmrR#p9sx JbӋ1 !qkف+zsS+%Nq*{Ijє>rb7\&;#pۯk=km{C١' C7{JT7&wl뗼Hp梑/SXn3u;&ǘ&%3:JR c\75_nX̴WnTI #A(uAe9- zPHw]z,i. _JgРZ#3(H~7x3Y`C4qWSޙyXDX<[3`,@H )zZ$`]әO$l,O}əzV%u|y1}3R6G*Yxp}ie*Cg#D +H2r}{@h)3bmָỐzyFuh匼&obpxJ2 B 3@3;js dhY';J uH̄j)|&O&l/Ѱ/g?`|"@-`U܃ rRv!vu`|fw+̳1VgĪ bgnV+wU ]Ϋ}C{2Jɫ1iL;xpIxH1H$8Bsͭ9Ċ /2ֹÉeYZ%) aZ9=_ҋa-6䚔x5@3ۏ S}WP:r% c&::6pԟZғٷ< %!c&$wGD%H솯;~ TS ǿdIut6X>{QuA{$SgojA"BG7 K\]nEdCAbbf#ZkdV B&qLwg?Zb$~.Y"tC: 'q!"%뢶Tv6 oTl(8jQH xٕ!$[Iu5;jjݻB̈́&*cMN3{=+*fFHQ~@y,gG zu7dk 9C7?X{񂋰5FaiXI'pkVĊp#Lw& N$c _aR)Mo=jW{K &YBa$A]DZ҄HiVItEޭ|â`āx^ i̧%9$Ovuk4dYDxY%ZlO؛w7pK^ 9ԛ?2em_6k(iSMuq1pP2c i,Nh-"FQi4HML϶lzFG8Ma8JDŽaPUnIC$ N'=G 1YM)@*὚]JFh(ig3&ɼW__O /a=ɝnͤ4ʁb  R>hJFY4r&?\In,o?"kѫ|gU/cCz])Tw8Yێ0MF W G\@=jT9Yc'DSL2s Sү@;?4 ~nVP9l&o6 hj잫D~#vm`A0qHZKDc`HRܗۂ >yvT`ov͸*)fo5NJXp!@98j }hT8T)H4e5~DwlZ՜{?Bvv@gTzg+&qX4瘟Lc%՜.2s[l V318,Zɠ'=-cei(SRۿg/UMњ< HFzթAHY 3+5j.JvIJF{Ui!Ldkm=sW<g뮠'Tk7٣%HgXGy<|GwodԲ< ^`Vm8~RTP)ŊE)^D #e;6er=_epʦĜ,peUۦ2_"ȳ`;]r1rYY%Mb鯾P|S^qS"y}%a]4+q5&9'^h-p0Æm*N KʦQPz1O#R:d\*`c";'i ҝhY}m1OgGJ:bnCqf.b7>"[]8r@C-(}D/8|glB}xyfTģޠQ-t4}(g=bBXHMǏ0LY餄jQ @ UC-wjʓmdj^ug\T &erʬvY5gS٪آ}dxա wQ,d1ڥ:GB@!=f(QOe49CLZ2Wr::w`H;B,M?Ú?w:^mm#;͹v)YީQ8u@HO-Z_f$&hkO膢F(29ͳש͟s:~%2tCb4CL* qaJ8R7BkgZl2ARH ]=]cMӉ)PJ\ٶQhs&q4$.Qpw)ayU 3w;]O"Hڋo{*W`Z^ :bzGiQv E㏓|W(_dD nUbpMIlw鰋O fZF ;RZX~ǐyK5zߘKo X Ճ{(P"4!'E5Oh61T@13M5Ғ Í9I5gpwj>go{Nρl A$]8ٶHV\aow&# @ 1CäGZm^ BY{1g頯l =W%4a vjEFnj,_ϴ[>4,~}j:}_i$[GP~jĠ*Ϸ˒`x`9m(Zn)j*ȑ(%5qLsg7 N~J˗F_`x:I8V:-ac:`: <;UyN^Q6Ըn>JyMrc;~.0e#hFPLl m*..E0B {,%.XSmX q^70oZ$YbTd.V6&np46dRCanAtCN[y 31OByDG?UY>޴1R$wEcQo}0̡%%TBN{ ÝHZo(ʤRJvnG_Qv8s{7ĎaW,  ɯ `=#aZD=Q"j6@ ɖ¢Ζ Ie_[۠K) IGX c+1rykmTO&L=~:1B* IrNLЏ"~0Rk=gb RwoyƷ,K"ZT'! #2z3,S5cc|%|,MW\%3E~ҥg] $sS`"ǥ1-y/!pqSf