tuxpuck-0.8.2/0040755000014500001440000000000007562713365012312 5ustar noorkuserstuxpuck-0.8.2/tuxpuck.c0100644000014500001440000001602607562713365014163 0ustar noorkusers/* tuxpuck.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include #include #include "video.h" #include "audio.h" #include "tuxpuck.h" /* defines */ #ifdef windows #define SETTINGSFILE "tuxpuck.ini" #else #define SETTINGSFILE _settings_file #endif /* externals */ extern time_t time(time_t *); extern void run_intro(void); extern AIPlayer *tux_create(Pad *, Puck *); extern AIPlayer *arcana_create(Pad *, Puck *); /* structs */ typedef struct { Uint8 sound; Uint8 fullscreen; Uint8 mouse_speed; } Settings; /* statics */ static Settings *_settings = NULL; #ifndef windows static char _settings_file[200]; #endif /* functions */ static int _play_match(Uint8 opponent) { int next_opponent; SDL_Event event; Uint8 loop = 1, scorer = 0; Uint32 elapsed_time = 0; char buffer[50]; HumanPlayer *p1 = NULL; AIPlayer *p2 = NULL; Timer *timer = NULL; float alpha = 0.0; Menu *exit_menu; Menu *again_menu; memset(buffer, 0, 50); board_init(); scoreboard_init(); video_save(); p1 = human_create(board_get_pad(1), "Human"); switch (opponent) { case 1: p2 = tux_create(board_get_pad(2), board_get_puck()); break; case 2: p2 = arcana_create(board_get_pad(2), board_get_puck()); break; } exit_menu = menu_create(2); menu_add_field(exit_menu, 0, 1, "Continue"); menu_add_field(exit_menu, 1, 1, "Surrender"); again_menu = menu_create(2); menu_add_field(again_menu, 0, 1, "Play Again"); menu_add_field(again_menu, 1, 1, "Main Menu"); timer = timer_create(); timer_reset(timer); while (loop) { while (SDL_PollEvent(&event)) if (event.type == SDL_MOUSEBUTTONDOWN) { loop = 0; alpha = 1.0; } SDL_Delay(SLEEP); timer_update(timer); timer_reset(timer); elapsed_time = timer_elapsed(timer); alpha += elapsed_time * 0.001; if (alpha > 1.0) { loop = 0; alpha = 1.0; } board_clean_up(); scoreboard_erase(); aiplayer_erase(p2); aiplayer_set_alpha(p2, (Uint8) (alpha * 255)); scoreboard_set_alpha((Uint8) (alpha * 255)); entity_set_alpha((Entity *) board_get_puck(), (Uint8) (alpha * 255)); entity_set_alpha(board_get_pad(1), (Uint8) (alpha * 255.0 / 2.0)); entity_set_alpha(board_get_pad(2), (Uint8) (alpha * 255.0 / 2.0)); aiplayer_blit(p2); board_reblit(); scoreboard_blit(); video_update(); } loop = 1; board_clean_up(); aiplayer_blit(p2); video_save(); board_reblit(); video_update(); SDL_PumpEvents(); SDL_GetRelativeMouseState(NULL, NULL); #ifndef _DEBUG SDL_WM_GrabInput(SDL_GRAB_ON); #endif human_set_speed(p1, _settings->mouse_speed); timer_reset(timer); while (loop) { while (SDL_PollEvent(&event)) switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_ESCAPE: if (menu_get_selected(exit_menu) == 1) loop = 0; timer_reset(timer); break; case SDLK_F1: _settings->sound = !_settings->sound; audio_set_mute(!_settings->sound); break; case SDLK_F5: if (_settings->mouse_speed > 1) _settings->mouse_speed--; human_set_speed(p1, _settings->mouse_speed); scoreboard_set_mousebar(_settings->mouse_speed); break; case SDLK_F6: if (_settings->mouse_speed < 10) _settings->mouse_speed++; human_set_speed(p1, _settings->mouse_speed); scoreboard_set_mousebar(_settings->mouse_speed); break; case SDLK_f: _settings->fullscreen = !_settings->fullscreen; video_toggle_fullscreen(); break; default: break; } break; case SDL_QUIT: loop = 0; break; } SDL_Delay(SLEEP); timer_update(timer); timer_reset(timer); elapsed_time = timer_elapsed(timer); human_update(p1, elapsed_time); aiplayer_update(p2, elapsed_time); scoreboard_update(elapsed_time); if ((scorer = board_update(elapsed_time)) != 0) { scoreboard_add_point(scorer); if (scorer == 1) { human_give_point(p1); p2->set_state(p2, PLAYER_STATE_LOOSE_POINT); } else { p2->points++; p2->set_state(p2, PLAYER_STATE_WIN_POINT); } if (human_get_points(p1) >= 15 || p2->points >= 15) { if (human_get_points(p1) == 15) p2->set_state(p2, PLAYER_STATE_LOOSE_GAME); else p2->set_state(p2, PLAYER_STATE_WIN_GAME); } } board_clean_up(); scoreboard_clean_up(); scoreboard_reblit(); if (p2->reblit(p2, elapsed_time) == 0) loop = 0; board_reblit(); video_update(); } #ifndef _DEBUG SDL_WM_GrabInput(SDL_GRAB_OFF); #endif menu_free(exit_menu); timer_free(timer); human_free(p1); p2->free(p2); board_deinit(); scoreboard_deinit(); if (menu_get_selected(again_menu) == 0) next_opponent = opponent; else next_opponent = -1; menu_free(again_menu); return next_opponent; } static void _read_settings(void) { FILE *file = NULL; char buffer[100], buffer2[100]; Uint32 uint32 = 0; if ((file = fopen(SETTINGSFILE, "r")) == NULL) return; while (fgets(buffer, 100, file) != 0) { if (sscanf(buffer, "%s %d\n", buffer2, &uint32) != 2) { fclose(file); return; } else if (strcmp(buffer2, "SOUND") == 0) _settings->sound = (Uint8) uint32; else if (strcmp(buffer2, "FULLSCREEN") == 0) _settings->fullscreen = (Uint8) uint32; else if (strcmp(buffer2, "MOUSESPEED") == 0) _settings->mouse_speed = (Uint8) uint32; } fclose(file); } static void _save_settings(void) { FILE *file = NULL; if ((file = fopen(SETTINGSFILE, "w")) == NULL) return; fprintf(file, "SOUND %d\n", _settings->sound); fprintf(file, "FULLSCREEN %d\n", _settings->fullscreen); fprintf(file, "MOUSESPEED %d\n", _settings->mouse_speed); fclose(file); } static void _tuxpuck_init(void) { #ifndef windows char *homeDir = NULL; #endif srand(time(NULL)); SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO); audio_init(); video_init(); video_save(); _settings = (Settings *) malloc(sizeof(Settings)); memset(_settings, 0, sizeof(Settings)); _settings->sound = 1; _settings->fullscreen = 0; _settings->mouse_speed = 5; #ifndef windows homeDir = getenv("HOME"); sprintf(_settings_file, "%s/.tuxpuckrc", homeDir); #endif _read_settings(); audio_set_mute(!_settings->sound); if (_settings->fullscreen) video_toggle_fullscreen(); run_intro(); video_save(); } static void _tuxpuck_deinit(void) { audio_deinit(); video_deinit(); SDL_Quit(); _save_settings(); free(_settings); } int main(int argc, char *argv[]) { int next_opponent; Menu *main_menu, *op_menu; _tuxpuck_init(); main_menu = menu_create(2); menu_add_field(main_menu, 0, 1, "Play Match"); menu_add_field(main_menu, 1, 1, "Exit"); op_menu = menu_create(3); menu_add_field(op_menu, 0, 0, "Opponent"); menu_add_field(op_menu, 1, 1, "Tux"); menu_add_field(op_menu, 2, 1, "Arcana"); while (menu_get_selected(main_menu) == 0) { next_opponent = menu_get_selected(op_menu); while (next_opponent != -1) next_opponent = _play_match(next_opponent); } menu_free(op_menu); menu_free(main_menu); _tuxpuck_deinit(); return 0; } tuxpuck-0.8.2/video.c0100644000014500001440000001235707562713365013571 0ustar noorkusers/* video.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include #include #include "video.h" #include "tuxpuck.h" /* defines */ #define MAX_RECTS 500 /* externals */ extern SDL_Surface *loadPNG(Uint8 *, Uint32 *); extern SDL_Surface *loadJPG(Uint8 *, Uint32 *); extern SDL_Surface *zoomSurface(SDL_Surface *, float); /* statics */ static SDL_Surface *_screen = NULL, *_background = NULL; static SDL_Rect *_dirty_rect = NULL; static Uint32 _no_dirty_rects = 0; /* functions */ int video_init(void) { if ((_screen = SDL_SetVideoMode(SCREEN_W, SCREEN_H, 0, SDL_SWSURFACE | SDL_HWSURFACE)) < 0) return -1; SDL_WM_SetCaption("TuxPuck v" _VERSION, "TuxPuck v" _VERSION); SDL_ShowCursor(0); _dirty_rect = (SDL_Rect *) malloc(MAX_RECTS * sizeof(SDL_Rect)); return 0; } void video_deinit(void) { if (_background != NULL) SDL_FreeSurface(_background); free(_dirty_rect); } SDL_Surface *video_create_png_surface(Uint8 * data, Uint32 * memcounter) { return loadPNG(data, memcounter); } SDL_Surface *video_create_jpg_surface(Uint8 * data, Uint32 * memcounter) { return loadJPG(data, memcounter); } SDL_Surface *video_scale_surface(SDL_Surface * surface, float scale) { return zoomSurface(surface, scale); } void video_update(void) { SDL_UpdateRects(_screen, _no_dirty_rects, _dirty_rect); _no_dirty_rects = 0; } void video_erase(SDL_Rect * rect) { SDL_BlitSurface(_background, rect, _screen, rect); _dirty_rect[_no_dirty_rects++] = *rect; } void video_set_alpha(SDL_Surface * surface, Uint8 alpha) { if (alpha == 255) SDL_SetAlpha(surface, 0, 0); else SDL_SetAlpha(surface, SDL_SRCALPHA | SDL_RLEACCEL, alpha); } void video_fill(Uint32 color, Uint8 alpha, SDL_Rect * rect) { SDL_Surface *fill = NULL; SDL_Rect rect2; if (rect == NULL) { rect2.x = rect2.y = 0; rect2.w = SCREEN_W; rect2.h = SCREEN_H; rect = &rect2; } fill = SDL_CreateRGBSurface(SDL_SWSURFACE, rect->w, rect->h, 16, 0, 0, 0, 0); SDL_FillRect(fill, NULL, color); video_set_alpha(fill, alpha); video_blit(fill, NULL, rect); SDL_FreeSurface(fill); } void video_blit(SDL_Surface * surface, SDL_Rect * src, SDL_Rect * dst) { SDL_Rect own_rect; if (!dst) { own_rect.x = own_rect.y = 0; dst = &own_rect; } SDL_BlitSurface(surface, src, _screen, dst); _dirty_rect[_no_dirty_rects++] = *dst; } void video_restore(void) { SDL_BlitSurface(_background, NULL, _screen, NULL); _dirty_rect[0].x = _dirty_rect[0].y = 0; _dirty_rect[0].w = SCREEN_W; _dirty_rect[0].h = SCREEN_H; _no_dirty_rects = 1; } void video_save(void) { if (_background != NULL) SDL_FreeSurface(_background); _background = SDL_ConvertSurface(_screen, _screen->format, SDL_SWSURFACE | SDL_HWSURFACE); } SDL_Surface *video_duplicate(void) { SDL_Surface *screen = NULL; screen = SDL_ConvertSurface(_screen, _screen->format, SDL_SWSURFACE | SDL_HWSURFACE); return screen; } void video_toggle_fullscreen(void) { SDL_WM_ToggleFullScreen(_screen); } Uint32 video_map_rgb(Uint8 r, Uint8 g, Uint8 b) { return SDL_MapRGB(_screen->format, r, g, b); } /* effects */ void video_box_up(SDL_Surface * surface, Uint32 time_limit) { Uint8 loop = 1; Uint32 elapsed_time = 0; SDL_Event event; SDL_Rect rect = { SCREEN_W / 2 + 1, SCREEN_H / 2 + 1, 0, 0 }; float time_ratio; Sint16 temp_x, temp_y; Timer *timer = NULL; timer = timer_create(); timer_reset(timer); while (loop && elapsed_time < time_limit) { while (SDL_PollEvent(&event)) if (event.type == SDL_KEYDOWN || event.type == SDL_MOUSEBUTTONDOWN) loop = 0; timer_update(timer); elapsed_time = timer_elapsed(timer); time_ratio = (float) elapsed_time / time_limit; temp_x = rect.x; temp_y = rect.y; rect.x = SCREEN_W / 2.0 * (1.0 - time_ratio) + 1; rect.w = temp_x - rect.x + 1; rect.y = SCREEN_H / 2.0 * (1.0 - time_ratio) + 1; rect.h = time_ratio * SCREEN_H; video_blit(surface, &rect, &rect); rect.x = SCREEN_W - rect.x; video_blit(surface, &rect, &rect); rect.x = SCREEN_W - rect.x; rect.w = time_ratio * SCREEN_W; rect.h = temp_y - rect.y + 1; video_blit(surface, &rect, &rect); rect.y = SCREEN_H - rect.y; rect.w += temp_x - rect.x; video_blit(surface, &rect, &rect); rect.y = SCREEN_H - rect.y; SDL_Delay(SLEEP); video_update(); } video_blit(surface, NULL, NULL); video_update(); timer_free(timer); } void video_fade(SDL_Surface * to, Uint32 time_limit) { SDL_Event event; Timer *timer = NULL; float alpha = 0.0; Uint32 elapsed_time = 0; Uint8 loop = 1; timer = timer_create(); timer_reset(timer); while (loop) { while (SDL_PollEvent(&event)) if (event.type == SDL_KEYDOWN || event.type == SDL_MOUSEBUTTONDOWN) loop = 0; timer_update(timer); elapsed_time = timer_elapsed(timer); alpha = (float) elapsed_time / time_limit; if (alpha > 1.0) { alpha = 1.0; loop = 0; } video_set_alpha(to, (Uint8) (alpha * 255)); video_restore(); video_blit(to, NULL, NULL); video_update(); SDL_Delay(SLEEP); } timer_free(timer); video_set_alpha(to, 255); video_blit(to, NULL, NULL); video_update(); } tuxpuck-0.8.2/audio.c0100644000014500001440000001213107562713365013552 0ustar noorkusers/* audio.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include #include #include "audio.h" /* defines */ #define BUFFER_SIZE ((Uint32)128) #define BUFFER_LIMIT ((Uint32)1000000000) /* structs */ struct _Sound { Uint32 length; Uint8 *buffer; Uint8 single; }; typedef struct _SoundNode { Uint32 position; Sound *sound; struct _SoundNode *next; } SoundNode; /* statics */ static Uint8 _mute = 0, _initiated = 0; static SDL_AudioSpec _spec; static SoundNode *_sound_node = NULL; /* functions */ static size_t _RWops_ogg_read(void *ptr, size_t size, size_t nmemb, void *source) { return ((size_t) SDL_RWread((SDL_RWops *) source, ptr, size, nmemb)); } static int _RWops_ogg_seek(void *source, ogg_int64_t offset, int whence) { return (SDL_RWseek((SDL_RWops *) source, offset, whence)); } static int _RWops_ogg_close(void *source) { return 0; } static long _RWops_ogg_tell(void *source) { return ((long) SDL_RWtell((SDL_RWops *) source)); } static const ov_callbacks _ogg_callbacks = { _RWops_ogg_read, _RWops_ogg_seek, _RWops_ogg_close, _RWops_ogg_tell }; static void _audio_mix_audio(void *unused, Uint8 * stream, int length) { SoundNode *node = NULL, *prev = NULL, *temp = NULL; int toWrite = 0; if (_mute) return; prev = NULL; node = _sound_node; while (node != NULL) { if (node->position + length > node->sound->length) toWrite = node->sound->length - node->position; else toWrite = length; SDL_MixAudio(stream, &node->sound->buffer[node->position], toWrite, SDL_MIX_MAXVOLUME); node->position += toWrite; if (toWrite < length) { if (prev) prev->next = node->next; else _sound_node = node->next; temp = node->next; free(node); node = temp; } else { prev = node; node = node->next; } } } void audio_init(void) { SDL_AudioSpec fmt; fmt.freq = 11025; fmt.format = AUDIO_S16SYS; fmt.channels = 1; fmt.samples = BUFFER_SIZE; fmt.callback = _audio_mix_audio; fmt.userdata = NULL; if (SDL_OpenAudio(&fmt, &_spec) < 0) _initiated = 0; else { SDL_PauseAudio(0); _initiated = 1; } } void audio_deinit(void) { SoundNode *node = _sound_node, *next = NULL; while (node) { next = node->next; free(node); node = next; } if (_initiated) SDL_CloseAudio(); } void audio_set_mute(Uint8 mute) { _mute = mute; } void audio_play_sound(Sound * sound) { SoundNode *node = NULL; if (!sound || !_initiated || _mute) return; if (sound->single) { node = _sound_node; while (node != NULL) { if (node->sound == sound) return; node = node->next; } } node = (SoundNode *) malloc(sizeof(SoundNode)); node->sound = sound; node->position = 0; node->next = NULL; if (_sound_node != NULL) node->next = _sound_node; _sound_node = node; } Sound *audio_create_sound(Uint8 * data, Uint32 * memcounter) { OggVorbis_File *vf = NULL; vorbis_info *vi = NULL; SDL_RWops *src = NULL; Sound *sound = NULL; int dummy = 0; Uint8 ov_open_success = 0; Uint32 size = 0, buffer_size = 0, bytes_read = 0, counter = 0; memcpy(&size, data, sizeof(Uint32)); if (memcounter) *memcounter += size + sizeof(Uint32); if (!_initiated) goto done; data += sizeof(Uint32); src = SDL_RWFromMem(data, size); vf = (OggVorbis_File *) malloc(sizeof(OggVorbis_File)); if (ov_open_callbacks(src, vf, NULL, 0, _ogg_callbacks) != 0) goto done; ov_open_success = 1; vi = ov_info(vf, -1); if (vi->channels != _spec.channels || vi->rate != _spec.freq) goto done; buffer_size = ov_pcm_total(vf, -1) * _spec.channels * 2; if (buffer_size > BUFFER_LIMIT) goto done; sound = (Sound *) malloc(sizeof(Sound)); sound->length = buffer_size; sound->single = 1; /* ATTENTION!!!!! UGLY HACK * I've added +4096 bytes to be mallocated, but I have no * idea _why_ this prevents TuxPuck from crashing :) */ sound->buffer = (Uint8 *) malloc(buffer_size + 4096); #if SDL_BYTEORDER == SDL_BIG_ENDIAN while ((bytes_read = ov_read(vf, (char *) &sound->buffer[counter], 4096, 1, 2, 1, &dummy)) != 0) { counter += bytes_read; if (counter > buffer_size) goto done; } #else while ((bytes_read = ov_read(vf, (char *) &sound->buffer[counter], 4096, 0, 2, 1, &dummy)) != 0) { counter += bytes_read; if (counter > buffer_size) goto done; } #endif done: if (ov_open_success) ov_clear(vf); if (src) SDL_FreeRW(src); if (vf) free(vf); return sound; } void audio_set_single(Sound * sound, Uint8 single) { sound->single = single; } void audio_free_sound(Sound * sound) { SoundNode *node = NULL, *prev = NULL, *temp = NULL; if (sound) { prev = NULL; node = _sound_node; while (node) { if (node->sound == sound) { if (prev) prev->next = node->next; else _sound_node = node->next; temp = node->next; free(node); node = temp; } else { prev = node; node = node->next; } } SDL_FreeWAV(sound->buffer); free(sound); } } tuxpuck-0.8.2/menu.c0100644000014500001440000001171007562713365013417 0ustar noorkusers/* menu.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include #include "video.h" #include "font.h" #include "tuxpuck.h" /* defines */ #define BORDER_SIZE 5 #define BORDER_COLOR (video_map_rgb(170, 140, 110)) #define BORDER_SPACING 20 #define FIELD_SPACING 15 /* structs */ struct _Menu { int nbr_of_fields; int *selectable; int selected; char **text; }; /* externals */ extern unsigned char monob_fnt[]; /* static variables */ static Font *_font = NULL; /* static functions */ static void _menu_select_previous(Menu * menu) { int selected = menu->selected; do { selected--; if (selected < 0) selected = menu->nbr_of_fields - 1; } while (menu->selectable[selected] == 0); menu->selected = selected; } static void _menu_select_next(Menu * menu) { int selected = menu->selected; do { selected++; if (selected >= menu->nbr_of_fields) selected = 0; } while (menu->selectable[selected] == 0); menu->selected = selected; } static void _menu_blit(Menu * menu, SDL_Rect * erase_rect) { int total_height = 0, total_width = 0, i, ruler_y; SDL_Rect rect; for (i = 0; i < menu->nbr_of_fields; i++) { total_height += font_calc_height(_font, menu->text[i]); if (font_calc_width(_font, menu->text[i]) > total_width) total_width = font_calc_width(_font, menu->text[i]); } total_width += 2 * BORDER_SPACING; total_height += 2 * BORDER_SPACING + (menu->nbr_of_fields - 1) * FIELD_SPACING; rect.w = total_width; rect.h = total_height; rect.x = SCREEN_W / 2 - total_width / 2; rect.y = SCREEN_H / 2 - total_height / 2; if (erase_rect != NULL) { erase_rect->x = rect.x - BORDER_SIZE; erase_rect->y = rect.y - BORDER_SIZE; erase_rect->w = rect.w + 2 * BORDER_SIZE; erase_rect->h = rect.h + 2 * BORDER_SIZE; } video_fill(0, 128, &rect); rect.x -= BORDER_SIZE; rect.y -= BORDER_SIZE; rect.w = BORDER_SIZE; rect.h += 2 * BORDER_SIZE; video_fill(BORDER_COLOR, 255, &rect); rect.x += BORDER_SIZE + total_width; video_fill(BORDER_COLOR, 255, &rect); rect.x -= total_width; rect.w = total_width; rect.h = BORDER_SIZE; video_fill(BORDER_COLOR, 255, &rect); rect.y += total_height + BORDER_SIZE; video_fill(BORDER_COLOR, 255, &rect); ruler_y = SCREEN_H / 2 - total_height / 2 + BORDER_SPACING; font_set_alpha(_font, 255); font_set_color(_font, 255, 255, 255); for (i = 0; i < menu->nbr_of_fields; i++) { ruler_y += font_calc_height(_font, menu->text[i]); font_set_pen(_font, SCREEN_W / 2 - font_calc_width(_font, menu->text[i]) / 2, ruler_y); ruler_y += FIELD_SPACING; if (!menu->selectable[i]) { font_set_color(_font, 20, 155, 55); font_print(_font, menu->text[i], NULL); font_set_color(_font, 255, 255, 255); } else if (menu->selected == i) { font_set_color(_font, 255, 0, 0); font_print(_font, menu->text[i], NULL); font_set_color(_font, 255, 255, 255); } else font_print(_font, menu->text[i], NULL); } } /* functions */ Menu *menu_create(int nbr_of_fields) { Menu *menu; menu = malloc(sizeof(*menu)); menu->selected = -1; menu->nbr_of_fields = nbr_of_fields; menu->text = malloc(nbr_of_fields * sizeof(char *)); memset(menu->text, 0, nbr_of_fields * sizeof(char *)); menu->selectable = malloc(nbr_of_fields * sizeof(int)); memset(menu->selectable, 0, nbr_of_fields * sizeof(int)); if (_font == NULL) _font = font_create(monob_fnt, NULL); return menu; } void menu_add_field(Menu * menu, int position, int selectable, char *text) { menu->text[position] = malloc(strlen(text) + 1); strcpy(menu->text[position], text); menu->selectable[position] = selectable; if (menu->selected == -1 && selectable) menu->selected = position; } int menu_get_selected(Menu * menu) { int loop = 1; SDL_Event event; SDL_Rect rect; SDL_Surface *background; SDL_WM_GrabInput(SDL_GRAB_OFF); background = video_duplicate(); if (menu->selected == -1) _menu_select_next(menu); _menu_blit(menu, &rect); video_update(); while (loop) { while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_ESCAPE: menu->selected = -1; loop = 0; break; case SDLK_RETURN: loop = 0; break; case SDLK_UP: _menu_select_previous(menu); video_blit(background, &rect, &rect); _menu_blit(menu, NULL); video_update(); break; case SDLK_DOWN: _menu_select_next(menu); video_blit(background, &rect, &rect); _menu_blit(menu, NULL); video_update(); default: break; } break; } } SDL_Delay(SLEEP); } SDL_WM_GrabInput(SDL_GRAB_ON); video_blit(background, &rect, &rect); SDL_FreeSurface(background); return menu->selected; } void menu_free(Menu * menu) { int i; for (i = 0; i < menu->nbr_of_fields; i++) if (menu->text[i] != NULL) free(menu->text[i]); free(menu->selectable); free(menu); } tuxpuck-0.8.2/sprite.c0100644000014500001440000001135207562713365013763 0ustar noorkusers/* sprite.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include "video.h" #include "tuxpuck.h" /* structs */ typedef struct _Animation Animation; struct _Animation { Uint8 nbr_of_frames, current_frame; Uint8 *frame; Uint16 *time; Uint32 time_stamp; }; struct _Sprite { Uint8 nbr_of_frames, nbr_of_animations, current_animation; Uint32 x, y; SDL_Rect rect; SDL_Surface **sdl_frame; Animation **animation; }; /* functions */ static Animation *_animation_create(Uint8 * data, Uint32 * memcounter) { Animation *animation = NULL; Uint32 index = 0; Uint16 *time = NULL; Uint8 nbr_of_frames = 0, current_frame = 0, i; Uint8 *frame = NULL; nbr_of_frames = data[index++]; current_frame = 0; time = (Uint16 *) malloc(nbr_of_frames * sizeof(Uint16)); frame = (Uint8 *) malloc(nbr_of_frames * sizeof(Uint8)); for (i = 0; i < nbr_of_frames; i++) { frame[i] = data[index++]; memcpy(&time[i], &data[index], sizeof(Uint16)); index += 2; } if (memcounter) *memcounter += index; animation = malloc(sizeof(Animation)); animation->nbr_of_frames = nbr_of_frames; animation->current_frame = current_frame; animation->frame = frame; animation->time = time; animation->time_stamp = 0; return animation; } static void _animation_free(Animation * animation) { free(animation->time); free(animation->frame); free(animation); } static void _animation_reset(Animation * animation) { animation->time_stamp = 0; animation->current_frame = 0; } static Uint8 _animation_update(Animation * animation, Uint32 time) { animation->time_stamp += time; while (animation->time_stamp > animation->time[animation->current_frame]) { animation->time_stamp -= animation->time[animation->current_frame]; animation->current_frame++; if (animation->current_frame >= animation->nbr_of_frames) { animation->current_frame = 0; return 0; } } return 1; } Sprite *sprite_create(Uint8 * data, Uint32 * memcounter) { SDL_Surface **sdl_frame = NULL; SDL_Rect rect = { 0, 0, 0, 0 }; Uint32 index = 0, size; Uint8 current_animation = 0, nbr_of_frames = 0, nbr_of_animations = 0, i; Animation **animation = NULL; Sprite *sprite = NULL; memcpy(&size, data, sizeof(Uint32)); if (memcounter) *memcounter += size + sizeof(Uint32); data += sizeof(Uint32); nbr_of_frames = data[index++]; sdl_frame = (SDL_Surface **) malloc((nbr_of_frames + 1) * sizeof(SDL_Surface *)); memset(sdl_frame, 0, (nbr_of_frames + 1) * sizeof(SDL_Surface *)); for (i = 1; i < nbr_of_frames + 1; i++) sdl_frame[i] = video_create_png_surface(&data[index], &index); nbr_of_animations = data[index++]; animation = (Animation **) malloc((nbr_of_animations + 1) * sizeof(Animation *)); memset(animation, 0, (nbr_of_animations + 1) * sizeof(Animation *)); for (i = 1; i < nbr_of_animations + 1; i++) animation[i] = _animation_create(&data[index], &index); sprite = malloc(sizeof(Sprite)); sprite->nbr_of_frames = nbr_of_frames; sprite->nbr_of_animations = nbr_of_animations; sprite->current_animation = current_animation; sprite->x = sprite->y = 0; sprite->rect = rect; sprite->sdl_frame = sdl_frame; sprite->animation = animation; return sprite; } void sprite_free(Sprite * sprite) { Uint8 i; for (i = 1; i < sprite->nbr_of_frames + 1; i++) SDL_FreeSurface(sprite->sdl_frame[i]); free(sprite->sdl_frame); for (i = 1; i < sprite->nbr_of_animations + 1; i++) _animation_free(sprite->animation[i]); free(sprite->animation); free(sprite); } void sprite_blit(Sprite * sprite) { Uint8 frame; if (sprite->current_animation == 0) { memset(&sprite->rect, 0, sizeof(SDL_Rect)); return; } frame = sprite->animation[sprite->current_animation]->current_frame; frame = sprite->animation[sprite->current_animation]->frame[frame]; video_erase(&sprite->rect); if (frame) { sprite->rect.x = sprite->x; sprite->rect.y = sprite->y; video_blit(sprite->sdl_frame[frame], NULL, &sprite->rect); } else memset(&sprite->rect, 0, sizeof(SDL_Rect)); } void sprite_erase(Sprite * sprite) { video_erase(&sprite->rect); memset(&sprite->rect, 0, sizeof(SDL_Rect)); } void sprite_set_animation(Sprite * sprite, Uint8 animation) { sprite->current_animation = animation; if (animation != 0) _animation_reset(sprite->animation[sprite->current_animation]); } Uint8 sprite_update(Sprite * sprite, Uint32 time) { Uint8 done; if (sprite->current_animation == 0) return 0; done = _animation_update(sprite->animation[sprite->current_animation], time); if (done == 0) sprite->current_animation = 0; return done; } void sprite_set_position(Sprite * sprite, Uint32 x, Uint32 y) { sprite->x = x; sprite->y = y; } tuxpuck-0.8.2/font.c0100644000014500001440000000762007562713365013426 0ustar noorkusers/* font.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include "video.h" #include "font.h" /* structs */ typedef struct _Glyph Glyph; struct _Glyph { Sint16 x_move, y_move, advance; SDL_Surface *sdl_image; }; struct _Font { Glyph **glyph; Uint16 x, y; }; /* statics */ static Uint8 _alpha = 255; /* functions */ Font *font_create(Uint8 * data, Uint32 * memcounter) { Uint32 index = 0, i, size; Uint8 ch; Sint16 x_size, y_size; SDL_Color palette[256]; Font *font = NULL; memcpy(&size, data, sizeof(Uint32)); if (memcounter) *memcounter += size + sizeof(Uint32); data += sizeof(Uint32); font = (Font *) malloc(sizeof(Font)); for (i = 0; i < 256; i++) palette[i].r = palette[i].g = palette[i].b = i; font->glyph = (Glyph **) malloc(256 * sizeof(Glyph *)); memset(font->glyph, 0, 256 * sizeof(Glyph *)); while (index < size) { ch = data[index++]; memcpy(&x_size, &data[index], 2); index += 2; memcpy(&y_size, &data[index], 2); index += 2; font->glyph[ch] = (Glyph *) malloc(sizeof(Glyph)); memcpy(&font->glyph[ch]->x_move, &data[index], 2); index += 2; memcpy(&font->glyph[ch]->y_move, &data[index], 2); index += 2; memcpy(&font->glyph[ch]->advance, &data[index], 2); index += 2; font->glyph[ch]->sdl_image = SDL_CreateRGBSurfaceFrom(&data[index], x_size, y_size, 8, x_size, 0, 0, 0, 0); SDL_SetPalette(font->glyph[ch]->sdl_image, SDL_LOGPAL, palette, 0, 256); SDL_SetColorKey(font->glyph[ch]->sdl_image, SDL_SRCCOLORKEY, 0); index += x_size * y_size; } font->x = font->y = 0; return font; } void font_free(Font * font) { Uint32 i; for (i = 0; i < 256; i++) if (font->glyph[i]) { SDL_FreeSurface(font->glyph[i]->sdl_image); free(font->glyph[i]); } free(font->glyph); free(font); } void font_set_color(Font * font, Uint8 r, Uint8 g, Uint8 b) { Uint32 i; SDL_Color palette[256]; for (i = 0; i < 256; i++) { palette[i].r = (Uint8) (r * i / 256.0); palette[i].g = (Uint8) (g * i / 256.0); palette[i].b = (Uint8) (b * i / 256.0); } for (i = 0; i < 256; i++) if (font->glyph[i]) SDL_SetPalette(font->glyph[i]->sdl_image, SDL_LOGPAL, palette, 0, 256); } void font_set_alpha(Font * font, Uint8 alpha) { _alpha = alpha; } void font_print(Font * font, char *string, SDL_Rect * fill) { Uint32 ruler = 0, i; SDL_Rect rect, area; for (i = 0; i < strlen(string); i++) if (font->glyph[(Uint8) string[i]]) { rect.x = font->x + font->glyph[(Uint8) string[i]]->x_move + ruler; rect.y = font->y - font->glyph[(Uint8) string[i]]->y_move; rect.w = rect.h = 0; video_set_alpha(font->glyph[(Uint8) string[i]]->sdl_image, _alpha); video_blit(font->glyph[(Uint8) string[i]]->sdl_image, NULL, &rect); if (i == 0) area = rect; else { if (rect.x < area.x) area.x = rect.x; if (rect.y < area.y) area.y = rect.y; if (rect.x + rect.w > area.x + area.w) area.w = rect.x + rect.w - area.x; if (rect.y + rect.h > area.y + area.h) area.h = rect.y + rect.h - area.y + 1; } ruler += font->glyph[(Uint8) string[i]]->advance; } if (fill) *fill = area; } Uint32 font_calc_width(Font * font, char *string) { Uint32 width = 0, i; if (string == NULL) return 0; for (i = 0; i < strlen(string); i++) width += font->glyph[(Uint8) string[i]]->advance; return width; } Uint32 font_calc_height(Font * font, char *string) { Uint32 height = 0, i; Glyph *glyph; if (string == NULL) return 0; for (i = 0; i < strlen(string); i++) { glyph = font->glyph[(Uint8) string[i]]; if (glyph->sdl_image->h > height) height = glyph->sdl_image->h; } return height; } void font_move_pen(Font * font, Uint16 dx, Uint16 dy) { font->x += dx; font->y += dy; } void font_set_pen(Font * font, Uint16 x, Uint16 y) { font->x = x; font->y = y; } tuxpuck-0.8.2/timer.c0100644000014500001440000000135607562713365013600 0ustar noorkusers/* timer.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include "tuxpuck.h" /* structs */ struct _Timer { Uint32 start, end, elapsed_time; }; /* functions */ Timer *timer_create(void) { Timer *timer = NULL; timer = malloc(sizeof(Timer)); timer->start = SDL_GetTicks(); timer->end = timer->start; timer->elapsed_time = 0; return timer; } void timer_free(Timer * timer) { free(timer); } void timer_reset(Timer * timer) { timer->start = SDL_GetTicks(); timer->end = 0; } void timer_update(Timer * timer) { timer->end = SDL_GetTicks(); timer->elapsed_time = timer->end - timer->start; } Uint32 timer_elapsed(Timer * timer) { return timer->elapsed_time; } tuxpuck-0.8.2/board.c0100644000014500001440000001012007562713365013534 0ustar noorkusers/* board.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include "video.h" #include "tuxpuck.h" /* externals */ extern unsigned char board_jpg[]; /* statics */ static SDL_Surface *_sdl_board; static Uint8 _state = 0, _turn = 0; static float _coeff[4]; static Pad *_pad_1, *_pad_2; static Puck *_puck; static SDL_Rect _rect = { 0, 0, 0, 0 }; /* functions */ static Uint8 _get_scorer(void) { float puck_z; if (puck_is_dead(_puck)) return 0; entity_get_position((Entity *) _puck, NULL, &puck_z); if (puck_z > 40) return 1; else if (puck_z < -40) return 2; return 0; } void board_init(void) { _state = BOARD_STATE_NEW_PUCK; _sdl_board = video_create_jpg_surface(board_jpg, NULL); _rect.x = SCREEN_W / 2 - _sdl_board->w / 2; _rect.y = SCREEN_H - _sdl_board->h; _rect.w = _rect.h = 0; _pad_1 = pad_create(1); _pad_2 = pad_create(2); _puck = puck_create(); _turn = 1; glass_init(); _coeff[0] = 80 * (BOARD_BOTTOM * BOARD_TOP) / (BOARD_BOTTOM - BOARD_TOP); _coeff[1] = 40 * (BOARD_BOTTOM + BOARD_TOP) / (BOARD_BOTTOM - BOARD_TOP); _coeff[2] = 80 * (1.0 * BOARD_LEFT / BOARD_RIGHT) / (1.0 - BOARD_LEFT / BOARD_RIGHT); _coeff[3] = 40 * (1.0 + BOARD_LEFT / BOARD_RIGHT) / (1.0 - BOARD_LEFT / BOARD_RIGHT); video_fade(_sdl_board, 1000); } void board_deinit(void) { SDL_FreeSurface(_sdl_board); pad_free(_pad_1); pad_free(_pad_2); puck_free(_puck); glass_deinit(); } Pad *board_get_pad(Uint8 who) { if (who == 1) return _pad_1; else if (who == 2) return _pad_2; else return NULL; } Puck *board_get_puck(void) { return _puck; } void board_blit(void) { video_blit(_sdl_board, NULL, &_rect); } Uint8 board_update(Uint32 time) { Uint8 scorer; float puck_x, puck_z; switch (_state) { case BOARD_STATE_PLAY: if (puck_will_get_hit_by(_puck, _pad_1, time)) puck_get_hit_by(_puck, _pad_1, time); else if (puck_will_get_hit_by(_puck, _pad_2, time)) puck_get_hit_by(_puck, _pad_2, time); puck_move(_puck, time); break; case BOARD_STATE_CRASH_GLASS: if (glass_update(time) == 0) { glass_erase(); _state = BOARD_STATE_NEW_PUCK; if (_turn == 1) _turn = 2; else _turn = 1; } break; case BOARD_STATE_NEW_PUCK: if (_turn == 1) { if (entity_move_towards((Entity *) _puck, 0, -21, 0.05, time) == 0) { _state = BOARD_STATE_PLAY; entity_set_velocity((Entity *) _puck, 0, 0); puck_set_state(_puck, PUCK_STATE_ALIVE); } } else { if (entity_move_towards((Entity *) _puck, 0, 21, 0.05, time) == 0) { _state = BOARD_STATE_PLAY; entity_set_velocity((Entity *) _puck, 0, 0); puck_set_state(_puck, PUCK_STATE_ALIVE); } } break; default: break; } if ((scorer = _get_scorer()) != 0) { _state = BOARD_STATE_CRASH_GLASS; entity_get_position((Entity *) _puck, &puck_x, &puck_z); glass_smash(puck_x, puck_z); puck_set_state(_puck, PUCK_STATE_DEAD); } entity_move(_pad_1, time); entity_move(_pad_2, time); return scorer; } void board_clean_up(void) { entity_erase(_pad_1); entity_erase(_pad_2); entity_erase((Entity *) _puck); if (_state == BOARD_STATE_CRASH_GLASS) glass_erase(); } void board_reblit(void) { float p1, p2, p, g = 0; entity_get_position(_pad_1, NULL, &p1); entity_get_position(_pad_2, NULL, &p2); entity_get_position((Entity *) _puck, NULL, &p); if (_state == BOARD_STATE_CRASH_GLASS) { glass_get_position(NULL, &g); if (g > 0) glass_blit(); } if (p < p1) { entity_blit(_pad_2); entity_blit(_pad_1); entity_blit((Entity *) _puck); } else if (p < p2) { entity_blit(_pad_2); entity_blit((Entity *) _puck); entity_blit(_pad_1); } else { entity_blit((Entity *) _puck); entity_blit(_pad_2); entity_blit(_pad_1); } if (_state == BOARD_STATE_CRASH_GLASS) { if (g < 0) glass_blit(); } } Uint8 board_get_state(void) { return _state; } Uint8 board_get_turn(void) { return _turn; } float board_calc_y(float y) { return (_coeff[0] / (_coeff[1] + y)); } float board_calc_scale(float y) { return _coeff[2] / (_coeff[3] + y); } tuxpuck-0.8.2/entity.c0100644000014500001440000001453107562713365013773 0ustar noorkusers/* entity.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include "video.h" #include "audio.h" #include "tuxpuck.h" /* defines */ #define ABS(x) ((x)<0 ? -(x) : (x)) #define MAX_PUCK_SPEED ((float)0.20) #define THRESHOLD ((float)0.02) #define HIT_FRICTION ((float)0.60) /* externals */ extern unsigned char pad_png[]; extern unsigned char puck_png[]; extern unsigned char nock_ogg[]; /* structs */ typedef struct _MoveArea MoveArea; struct _MoveArea { float x1, x2, z1, z2; }; struct _Entity { Uint8 alpha; SDL_Rect rect; SDL_Surface *sdl_image; MoveArea move_area; float x, z, dx, dz, w, h, y_scale; }; struct _Puck { Entity entity; Uint8 state; Sound *snd_nock; }; /* functions */ static Entity *_entity_create(void) { Entity *e = NULL; MoveArea move_area = { -20, 20, -42, 42 }; e = (Entity *) malloc(sizeof(Entity)); memset(e, 0, sizeof(Entity)); e->move_area = move_area; return e; } static void _entity_free(Entity * e) { free(e); } void entity_move(Entity * e, Uint32 time) { MoveArea *move_area; float *x, *z, *w, *h, *dx, *dz; move_area = &e->move_area; x = &e->x; z = &e->z; w = &e->w; h = &e->h; dx = &e->dx; dz = &e->dz; *x += *dx * time; *z += *dz * time; if (*x < move_area->x1 + *w / 2) { *x = move_area->x1 + *w / 2; *dx = -*dx; } else if (*x > move_area->x2 - *w / 2) { *x = move_area->x2 - *w / 2; *dx = -*dx; } if (*z < move_area->z1 + *h / 2) { *z = move_area->z1 + *h / 2; *dz = -*dz; } else if (*z > move_area->z2 - *h / 2) { *z = move_area->z2 - *h / 2; *dz = -*dz; } } void entity_blit(Entity * e) { SDL_Surface *scaled_surface = NULL; float scale; scale = board_calc_scale(e->z); scaled_surface = video_scale_surface(e->sdl_image, scale); e->rect.x = (Sint16) (SCREEN_W / 2 - scaled_surface->w / 2 + scale * e->x * 12.7); e->rect.y = (Sint16) (board_calc_y(e->z) - scaled_surface->h * e->y_scale); video_set_alpha(scaled_surface, e->alpha); video_blit(scaled_surface, NULL, &e->rect); SDL_FreeSurface(scaled_surface); } void entity_set_alpha(Entity * e, Uint8 alpha) { e->alpha = alpha; } void entity_set_position(Entity * e, float x, float z) { e->x = x; e->z = z; } void entity_get_position(Entity * e, float *x, float *z) { if (x) *x = e->x; if (z) *z = e->z; } void entity_set_velocity(Entity * e, float dx, float dz) { e->dx = dx; e->dz = dz; } void entity_get_velocity(Entity * e, float *dx, float *dz) { if (dx) *dx = e->dx; if (dz) *dz = e->dz; } void entity_erase(Entity * e) { video_erase(&e->rect); } Uint8 entity_move_towards(Entity * e, float x, float z, float speed, Uint32 time) { float dx = 0, dz = 0; if (x > e->x) { dx = speed; if (x < e->x + dx * time) { e->x = x; dx = 0; } } else if (x < e->x) { dx = -speed; if (x > e->x + dx * time) { e->x = x; dx = 0; } } if (z > e->z) { dz = speed; if (z < e->z + dz * time) { e->z = z; dz = 0; } } else if (z < e->z) { dz = -speed; if (z > e->z + dz * time) { e->z = z; dz = 0; } } e->dx = dx; e->dz = dz; entity_move(e, time); if (e->x == x && e->z == z) return 0; return 1; } Pad *pad_create(Uint8 place) { Pad *pad = NULL; pad = _entity_create(); pad->w = PAD_W; pad->h = PAD_H; pad->y_scale = 1.0; pad->sdl_image = video_create_png_surface(pad_png, NULL); SDL_SetColorKey(pad->sdl_image, SDL_SRCCOLORKEY, 2); if (place == 1) { pad->move_area.z1 = -40; pad->move_area.z2 = -20.8; pad->z = -36; } else { pad->move_area.z1 = 20.8; pad->move_area.z2 = 40; pad->z = 36; } pad->alpha = 128; return pad; } void pad_free(Pad * pad) { SDL_FreeSurface(pad->sdl_image); free(pad); } Puck *puck_create(void) { Puck *puck = NULL; Entity *e = NULL; puck = malloc(sizeof(Puck)); e = _entity_create(); e->w = PUCK_W; e->h = PUCK_W; e->y_scale = 0.8; e->sdl_image = video_create_png_surface(puck_png, NULL); memcpy(&puck->entity, e, sizeof(Entity)); _entity_free(e); puck->state = PUCK_STATE_DEAD; puck->snd_nock = audio_create_sound(nock_ogg, NULL); return puck; } void puck_free(Puck * puck) { SDL_FreeSurface(puck->entity.sdl_image); audio_free_sound(puck->snd_nock); free(puck); } void puck_set_state(Puck * puck, Uint8 state) { puck->state = state; } int puck_will_get_hit_by(Puck * puck, Pad * pad, Uint32 time) { float pad_next_x, pad_next_z, puck_next_x, puck_next_z; Entity *e = NULL; e = &puck->entity; pad_next_x = pad->x + pad->dx * time; pad_next_z = pad->z + pad->dz * time; puck_next_x = e->x + e->dx * time; puck_next_z = e->z + e->dz * time; if (pad->move_area.z1 < 0) { if (pad->move_area.z2 < puck_next_z - PUCK_W / 2) return 0; } else if (pad->move_area.z1 > puck_next_z + PUCK_W / 2) return 0; if (ABS(pad_next_x - puck_next_x) > PAD_W / 2 + PUCK_W / 2) return 0; if (pad->z < e->z) { if (pad_next_z + PAD_H / 2 > puck_next_z - PUCK_W / 2) return 1; else return 0; } else { if (pad_next_z - PAD_H / 2 < puck_next_z + PUCK_W / 2) return 1; else return 0; } } void puck_move(Puck * puck, Uint32 time) { Entity *e = NULL; e = &puck->entity; if (e->x + e->dx * time < e->move_area.x1 + e->w / 2 || e->x + e->dx * time > e->move_area.x2 - e->w / 2) audio_play_sound(puck->snd_nock); entity_move(e, time); } int puck_is_dead(Puck * puck) { if (puck->state == PUCK_STATE_DEAD) return 1; else return 0; } void puck_get_hit_by(Puck * puck, Pad * pad, Uint32 time) { float x, z, dx, dz, speed; Entity *e = NULL; e = &puck->entity; x = pad->x; z = pad->z; dx = pad->dx; dz = pad->dz; e->dx += dx * HIT_FRICTION; e->dx *= HIT_FRICTION; if (z < e->z) { if (e->dz < 0) e->dz = -e->dz; e->z = z + dz * time + PUCK_W / 2 + PAD_H / 2 + THRESHOLD; } else { if (e->dz > 0) e->dz = -e->dz; e->z = z + dz * time - PUCK_W / 2 - PAD_H / 2 - THRESHOLD; } e->dz += dz * HIT_FRICTION; e->dz *= HIT_FRICTION; if (e->dx * e->dx + e->dz * e->dz > MAX_PUCK_SPEED * MAX_PUCK_SPEED) { speed = sqrt(e->dx * e->dx + e->dz * e->dz); e->dx = e->dx / speed * MAX_PUCK_SPEED; e->dz = e->dz / speed * MAX_PUCK_SPEED; } audio_play_sound(puck->snd_nock); } tuxpuck-0.8.2/glass.c0100644000014500001440000001110007562713365013555 0ustar noorkusers/* glass.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include "video.h" #include "audio.h" #include "tuxpuck.h" /* defines */ #define GRAVITY ((float)-0.001) /* externals */ extern unsigned char glass_png[]; extern unsigned char piece1_png[]; extern unsigned char piece2_png[]; extern unsigned char piece3_png[]; extern unsigned char piece4_png[]; extern unsigned char piece5_png[]; extern unsigned char crash_ogg[]; /* structs */ typedef struct { float x, y, z, dx, dy; Uint32 id; SDL_Surface *sdl_image; SDL_Rect rect; } Piece; /* statics */ static float _x, _z; static SDL_Surface *_sdl_glass = NULL; static SDL_Rect _rect; static Piece *_piece[5]; static Sound *_snd_crash = NULL; /* functions */ static Piece *_piece_create(Uint32 id) { Piece *piece = NULL; SDL_Surface *image = NULL; switch (id) { case 0: image = video_create_png_surface(piece1_png, NULL); break; case 1: image = video_create_png_surface(piece2_png, NULL); break; case 2: image = video_create_png_surface(piece3_png, NULL); break; case 3: image = video_create_png_surface(piece4_png, NULL); break; case 4: image = video_create_png_surface(piece5_png, NULL); break; default: break; } if (id == 1) SDL_SetColorKey(image, SDL_SRCCOLORKEY, 1); piece = malloc(sizeof(Piece)); memset(piece, 0, sizeof(Piece)); piece->sdl_image = image; piece->id = id; return piece; } static void _piece_free(Piece * piece) { SDL_FreeSurface(piece->sdl_image); free(piece); } static void _piece_erase(Piece * piece) { video_erase(&piece->rect); } static void _piece_blit(Piece * piece) { SDL_Surface *scaled_surface = NULL; float scale, y; scale = board_calc_scale(piece->z); y = board_calc_y(piece->z) - piece->y * scale; scaled_surface = video_scale_surface(piece->sdl_image, scale); piece->rect.x = (Sint16) (SCREEN_W / 2 + scale * piece->x * 12.7); piece->rect.y = (Sint16) (y - scaled_surface->h); video_blit(scaled_surface, NULL, &piece->rect); SDL_FreeSurface(scaled_surface); } static Uint8 _piece_update(Piece * piece, Uint32 time) { piece->dy += GRAVITY * time; piece->x += piece->dx * time; piece->y += piece->dy * time; if (piece->y < -10) return 0; return 1; } static void _piece_reset(Piece * piece) { float x, z, dx; entity_get_velocity((Entity *) board_get_puck(), &dx, NULL); glass_get_position(&x, &z); switch (piece->id) { case 0: piece->x = x - 2.5; piece->y = 0; piece->z = z; piece->dx = -0.01; piece->dy = 0.25; break; case 1: piece->x = x - 1.9; piece->y = 0.2; piece->z = z; piece->dx = -0.008; piece->dy = 0.28; break; case 2: piece->x = x + 0.5; piece->y = 0; piece->z = z; piece->dx = 0.001; piece->dy = 0.3; break; case 3: piece->x = x + 1.0; piece->y = 0.7; piece->z = z; piece->dx = 0.007; piece->dy = 0.27; break; case 4: piece->x = x + 1.1; piece->y = 0.1; piece->z = z; piece->dx = 0.012; piece->dy = 0.26; break; default: break; } piece->dx += dx * 0.1; } void glass_init(void) { Uint8 i; _x = _z = 0; _sdl_glass = video_create_png_surface(glass_png, NULL); for (i = 0; i < 5; i++) _piece[i] = _piece_create(i); memset(&_rect, 0, sizeof(SDL_Rect)); _snd_crash = audio_create_sound(crash_ogg, NULL); } void glass_deinit(void) { Uint8 i = 0; SDL_FreeSurface(_sdl_glass); for (i = 0; i < 5; i++) _piece_free(_piece[i]); audio_free_sound(_snd_crash); } void glass_smash(float x, float z) { Uint8 i; _x = x - 1.2; if (z < 0) _z = -40; else _z = 40; for (i = 0; i < 5; i++) _piece_reset(_piece[i]); audio_play_sound(_snd_crash); } Uint8 glass_update(Uint32 time) { Uint8 done = 1, i; for (i = 0; i < 5; i++) if (_piece_update(_piece[i], time) != 0) done = 0; return (!done); } void glass_get_position(float *x, float *z) { if (x) *x = _x; if (z) *z = _z; } void glass_erase(void) { Uint8 i; video_erase(&_rect); for (i = 0; i < 5; i++) _piece_erase(_piece[i]); } void glass_blit(void) { SDL_Surface *scaled_surface = NULL; float scale, y; Uint8 i; scale = board_calc_scale(_z); y = board_calc_y(_z); scaled_surface = video_scale_surface(_sdl_glass, scale); _rect.x = (Sint16) (SCREEN_W / 2 - scaled_surface->w / 2 + scale * _x * 12.7); _rect.y = (Sint16) (y - scaled_surface->h); video_blit(scaled_surface, NULL, &_rect); SDL_FreeSurface(scaled_surface); for (i = 0; i < 5; i++) _piece_blit(_piece[i]); } tuxpuck-0.8.2/scoreboard.c0100644000014500001440000000641707562713365014606 0ustar noorkusers/* scoreboard.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include "video.h" #include "tuxpuck.h" /* defines */ #define SCOREBOARD_POSITION ((Uint16)460) #define SCOREBOARD_STATE_IDLE 1 #define SCOREBOARD_STATE_ADD_1 2 #define SCOREBOARD_STATE_ADD_2 3 #define LINE_WIDTH ((Uint32)3) #define LINE_HEIGHT ((Uint32)22) #define MOUSEBAR_TIMEOUT ((Uint32)2000) #define MOUSEBAR_FADOUT_SPEED ((float)0.001) /* externals */ extern unsigned char scoreboard_png[]; extern unsigned char mousebar_png[]; /* statics */ static SDL_Surface *_sdl_scoreboard, *_sdl_mousebar; static SDL_Rect _rect, _mousebar_rect; static Uint32 _counter = 0; static Uint8 _score[2], _state, _mouse_speed = 0, _p1_scored, _p2_scored; static float _mousebar_alpha = 0; /* functions */ static void _blit_point(Uint8 who, Uint8 point) { SDL_Rect rect; point -= 1; rect.x = SCOREBOARD_POSITION + 18 + point * 8 + (point / 5 - 1) * 4; rect.y = 27 + who * 26; rect.w = LINE_WIDTH; rect.h = LINE_HEIGHT; video_fill(video_map_rgb(255, 255, 255), 255, &rect); } void scoreboard_init(void) { _score[0] = _score[1] = 0; _state = SCOREBOARD_STATE_IDLE; _sdl_scoreboard = video_create_png_surface(scoreboard_png, NULL); _sdl_mousebar = video_create_png_surface(mousebar_png, NULL); _rect.x = SCOREBOARD_POSITION; _rect.y = 0; _rect.w = _rect.h = 0; _p1_scored = _p2_scored = 0; } void scoreboard_deinit(void) { SDL_FreeSurface(_sdl_scoreboard); SDL_FreeSurface(_sdl_mousebar); } void scoreboard_add_point(Uint8 player) { if (player == 1) { _state = SCOREBOARD_STATE_ADD_1; } else { _state = SCOREBOARD_STATE_ADD_2; } } void scoreboard_blit(void) { video_blit(_sdl_scoreboard, NULL, &_rect); } void scoreboard_erase(void) { video_erase(&_rect); } void scoreboard_clean_up(void) { if (_mousebar_alpha > 0) video_erase(&_mousebar_rect); } void scoreboard_set_alpha(Uint8 alpha) { video_set_alpha(_sdl_scoreboard, alpha); } void scoreboard_reblit(void) { SDL_Rect rect; if (_p1_scored) { _blit_point(0, _score[0]); _p1_scored = 0; } else if (_p2_scored) { _blit_point(1, _score[1]); _p2_scored = 0; } if (_mousebar_alpha > 0) { rect.x = SCOREBOARD_POSITION + 7; rect.y = 96; rect.w = (Uint16) (138.0 * _mouse_speed / 10.0); rect.h = 13; video_fill(video_map_rgb(0, 0, 128), (Uint8) (_mousebar_alpha * 255.0), &rect); _mousebar_rect.x = SCOREBOARD_POSITION; _mousebar_rect.y = 90; video_set_alpha(_sdl_mousebar, (Uint8) (_mousebar_alpha * 255.0)); video_blit(_sdl_mousebar, NULL, &_mousebar_rect); } } void scoreboard_update(Uint32 time) { switch (_state) { case SCOREBOARD_STATE_IDLE: break; case SCOREBOARD_STATE_ADD_1: _score[0]++; _p1_scored = 1; _state = SCOREBOARD_STATE_IDLE; break; case SCOREBOARD_STATE_ADD_2: _score[1]++; _p2_scored = 1; _state = SCOREBOARD_STATE_IDLE; break; default: break; } if (_mousebar_alpha > 0) { _counter += time; if (_counter > MOUSEBAR_TIMEOUT) { _mousebar_alpha -= time * MOUSEBAR_FADOUT_SPEED; if (_mousebar_alpha < 0) { _mousebar_alpha = 0; video_erase(&_mousebar_rect); } } } } void scoreboard_set_mousebar(Uint8 speed) { _mouse_speed = speed; _mousebar_alpha = 1.0; _counter = 0; } tuxpuck-0.8.2/player.c0100644000014500001440000001533707562713365013760 0ustar noorkusers/* player.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include "video.h" #include "tuxpuck.h" /* defines */ #define MIN_MOUSE_SPEED ((float)0.05) #define MAX_MOUSE_SPEED ((float)0.50) /* structs */ struct _HumanPlayer { Uint8 points; char *name; Pad *pad; float speed; }; /* functions */ static float _mod(float a, float b) { return (a - floor(a / b) * b); } /* It is not absolutely exactly (+- 1 bounce difference), * but I think it needn't be. * -- Ernst Moritz Hahn * * This function is temporarly commented since it isnt used (yet), * and thus gives a warning when compiling. * -- Jacob Kroon static float _calc_bounces(float z, float dx, float dz) { float n, x; if(dz==0) return 0; n = (35 - z) / dz; x = n * dx; return fabs(x / 40); } */ static float _calc_puck_x(float x, float z, float dx, float dz, float ax) { float board_w; float raw_x, rx, g, h, n; board_w = 40 - PUCK_W; n = (ax - z) / dz; raw_x = n * dx + x + board_w / 2; rx = _mod(raw_x, board_w); g = raw_x / board_w; h = fabs(_mod(g, 2)); if ((h > 1)) rx = board_w - rx; rx = rx - board_w / 2; return rx; } static void _dumb_really_idle(AIPlayer * player, Uint32 time) { static float counter = M_PI_2; float dx, dz, puck_x, puck_z, pad_x, pad_z; counter += 0.005 * time; entity_get_position(player->pad, &pad_x, &pad_z); entity_get_position((Entity *) player->puck, &puck_x, &puck_z); dx = (sin(counter / 2.0) * 0.03 + (puck_x - pad_x) * 0.005) * player->speed; dz = (sin(counter / 4.0) * 0.01 + (35 - pad_z) * 0.005) * player->speed; entity_set_velocity(player->pad, dx, dz); } static void _smart_really_idle(AIPlayer * player, Uint32 time) { static float counter = M_PI_2; float dx, dz, puck_x, puck_z, puck_dx, puck_dz, pad_x, pad_z, x; counter += 0.005 * time; entity_get_position(player->pad, &pad_x, &pad_z); entity_get_position((Entity *) player->puck, &puck_x, &puck_z); entity_get_velocity((Entity *) player->puck, &puck_dx, &puck_dz); if (puck_dz != 0) { x = _calc_puck_x(puck_x, puck_z, puck_dx, puck_dz, 35); dx = (sin(counter / 2.0) * 0.03 + (puck_x - pad_x) * 0.005) * player->speed; dz = (sin(counter / 4.0) * 0.01 + (40 - pad_z) * 0.005) * player->speed; if (puck_dz > 0) dx = ((x - pad_x) * 0.005) * player->speed; else dx = (0 - pad_x) * 0.005; dz = ((35 - pad_z) * 0.005) * player->speed; entity_set_velocity(player->pad, dx, dz); } } HumanPlayer *human_create(Pad * pad, char *name) { HumanPlayer *human = NULL; human = malloc(sizeof(HumanPlayer)); human->name = name; human->pad = pad; human->points = 0; human->speed = (MAX_MOUSE_SPEED + MIN_MOUSE_SPEED) / 2.0; return human; } void human_give_point(HumanPlayer * human) { human->points++; } Uint8 human_get_points(HumanPlayer * human) { return human->points; } void human_free(HumanPlayer * human) { free(human); } void human_set_speed(HumanPlayer * human, Uint8 speed) { human->speed = MIN_MOUSE_SPEED + (MAX_MOUSE_SPEED - MIN_MOUSE_SPEED) * speed / 10.0; } void human_update(HumanPlayer * human, Uint32 time) { int dx, dy; SDL_GetRelativeMouseState(&dx, &dy); if (time != 0) entity_set_velocity(human->pad, (float) dx / time * human->speed, (float) -dy / time * human->speed); else entity_set_velocity(human->pad, 0, 0); } void aiplayer_blit(AIPlayer * player) { video_blit(player->sdl_image, NULL, &player->rect); } void aiplayer_erase(AIPlayer * player) { video_erase(&player->rect); } void aiplayer_set_alpha(AIPlayer * player, Uint8 alpha) { video_set_alpha(player->sdl_image, alpha); } void aiplayer_update(AIPlayer * player, Uint32 time) { switch (player->state) { case PLAYER_STATE_IDLE: player->strategy.idle(player, time); break; case PLAYER_STATE_SERVE: player->strategy.serve(player, time); break; case PLAYER_STATE_BACKUP: player->strategy.backup(player, time); break; case PLAYER_STATE_AIM: player->strategy.aim(player, time); break; case PLAYER_STATE_HIT: player->strategy.hit(player, time); break; case PLAYER_STATE_WIN_POINT: case PLAYER_STATE_LOOSE_POINT: _dumb_really_idle(player, time); if (player->ready() && board_get_state() == BOARD_STATE_PLAY) { if (board_get_turn() == 2) player->set_state(player, PLAYER_STATE_SERVE); else player->set_state(player, PLAYER_STATE_IDLE); } break; default: _dumb_really_idle(player, time); break; } } void dumb_idle(AIPlayer * player, Uint32 time) { float puck_z; _dumb_really_idle(player, time); entity_get_position((Entity *) player->puck, NULL, &puck_z); if (puck_z > 20) player->set_state(player, PLAYER_STATE_BACKUP); } void dumb_serve(AIPlayer * player, Uint32 time) { player->set_state(player, PLAYER_STATE_BACKUP); } void dumb_backup(AIPlayer * player, Uint32 time) { float pad_x; entity_get_position(player->pad, &pad_x, NULL); if (entity_move_towards (player->pad, pad_x, 38, 0.03 * player->speed, time) == 0) player->set_state(player, PLAYER_STATE_AIM); } void dumb_aim(AIPlayer * player, Uint32 time) { float hit_speed, dx, dz, puck_x, puck_z, pad_x, pad_z; entity_get_position(player->pad, &pad_x, &pad_z); entity_get_position((Entity *) player->puck, &puck_x, &puck_z); dx = (puck_x - pad_x); dz = (puck_z - pad_z); if (dz > -0.4) { player->set_state(player, PLAYER_STATE_BACKUP); return; } hit_speed = sqrt(dx * dx + dz * dz); dx = dx / hit_speed * player->hit_power * 0.1; dz = dz / hit_speed * player->hit_power * 0.1; player->set_state(player, PLAYER_STATE_HIT); entity_set_velocity(player->pad, dx, dz); } void dumb_hit(AIPlayer * player, Uint32 time) { float pad_z; entity_get_position(player->pad, NULL, &pad_z); if (pad_z < 21) player->set_state(player, PLAYER_STATE_IDLE); } void smart_idle(AIPlayer * player, Uint32 time) { float puck_z; _smart_really_idle(player, time); entity_get_position((Entity *) player->puck, NULL, &puck_z); if (puck_z > 20) player->set_state(player, PLAYER_STATE_BACKUP); } void smart_backup(AIPlayer * player, Uint32 time) { float pad_x, puck_x, puck_z, puck_dx, puck_dz, x; entity_get_position(player->pad, &pad_x, NULL); entity_get_position((Entity *) player->puck, &puck_x, &puck_z); entity_get_velocity((Entity *) player->puck, &puck_dx, &puck_dz); if (fabs(puck_dx) > 0.15) { x = _calc_puck_x(puck_x, puck_z, puck_dx, puck_dz, 35); entity_move_towards(player->pad, x, 35, 0.03 * player->speed, time); player->set_state(player, PLAYER_STATE_BACKUP); } else { if (entity_move_towards (player->pad, pad_x, 38, 0.03 * player->speed, time) == 0) { player->set_state(player, PLAYER_STATE_AIM); } } } tuxpuck-0.8.2/zoom.c0100644000014500001440000000646607562713365013453 0ustar noorkusers/* zoom.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ /* Zoom code originally by A. Schiffler, aschiffler@cogeco.ca */ #include #include /* defines */ #define VALUE_LIMIT 0.001 /* zoom code */ static int zoomSurfaceY(SDL_Surface * src, SDL_Surface * dst) { Uint32 x, y, sx, sy, *sax, *say, *csax, *csay, csx, csy; Uint8 *sp, *dp, *csp; int dgap; /* Variable setup */ sx = (Uint32) (65536.0 * (float) src->w / (float) dst->w); sy = (Uint32) (65536.0 * (float) src->h / (float) dst->h); /* Allocate memory for row increments */ if ((sax = (Uint32 *) malloc(dst->w * sizeof(Uint32))) == NULL) { return (-1); } if ((say = (Uint32 *) malloc(dst->h * sizeof(Uint32))) == NULL) { if (sax != NULL) { free(sax); } return (-1); } /* Precalculate row increments */ csx = 0; csax = sax; for (x = 0; x < dst->w; x++) { csx += sx; *csax = (csx >> 16); csx &= 0xffff; csax++; } csy = 0; csay = say; for (y = 0; y < dst->h; y++) { csy += sy; *csay = (csy >> 16); csy &= 0xffff; csay++; } csx = 0; csax = sax; for (x = 0; x < dst->w; x++) { csx += (*csax); csax++; } csy = 0; csay = say; for (y = 0; y < dst->h; y++) { csy += (*csay); csay++; } /* Pointer setup */ sp = csp = (Uint8 *) src->pixels; dp = (Uint8 *) dst->pixels; dgap = dst->pitch - dst->w; /* Draw */ csay = say; for (y = 0; y < dst->h; y++) { csax = sax; sp = csp; for (x = 0; x < dst->w; x++) { /* Draw */ *dp = *sp; /* Advance source pointers */ sp += (*csax); csax++; /* Advance destination pointer */ dp++; } /* Advance source pointer (for row) */ csp += ((*csay) * src->pitch); csay++; /* Advance destination pointers */ dp += dgap; } /* Remove temp arrays */ free(sax); free(say); return (0); } SDL_Surface *zoomSurface(SDL_Surface * src, float zoom) { SDL_Surface *rz_src; SDL_Surface *rz_dst; int dstwidth, dstheight; int i; /* Sanity check */ if (src == NULL) return (NULL); if (src->format->BitsPerPixel != 8) return NULL; rz_src = src; /* Sanity check zoom factors */ if (zoom < VALUE_LIMIT) { zoom = VALUE_LIMIT; } /* Calculate target size and set rect */ dstwidth = (int) ((double) rz_src->w * zoom); dstheight = (int) ((double) rz_src->h * zoom); if (dstwidth < 1) { dstwidth = 1; } if (dstheight < 1) { dstheight = 1; } /* Alloc space to completely contain the zoomed surface */ rz_dst = NULL; /* Target surface is 8bit */ rz_dst = SDL_CreateRGBSurface(SDL_SWSURFACE, dstwidth, dstheight, 8, 0, 0, 0, 0); /* Lock source surface */ SDL_LockSurface(rz_src); /* Check which kind of surface we have */ /* Copy palette and colorkey info */ for (i = 0; i < rz_src->format->palette->ncolors; i++) { rz_dst->format->palette->colors[i] = rz_src->format->palette->colors[i]; } rz_dst->format->palette->ncolors = rz_src->format->palette->ncolors; /* Call the 8bit transformation routine to do the zooming */ zoomSurfaceY(rz_src, rz_dst); SDL_SetColorKey(rz_dst, SDL_SRCCOLORKEY | SDL_RLEACCEL, rz_src->format->colorkey); /* Unlock source surface */ SDL_UnlockSurface(rz_src); /* Return destination surface */ return (rz_dst); } tuxpuck-0.8.2/png.c0100644000014500001440000001432207562713365013241 0ustar noorkusers/* png.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ /* PNG code originally by Philippe Lavoie, lavoie@zeus.genie.uottawa.ca */ #include #include #include #include #include #ifdef macintosh #define MACOS #endif #include /* png code */ static void png_read_data(png_structp ctx, png_bytep area, png_size_t size) { SDL_RWops *src; src = (SDL_RWops *) png_get_io_ptr(ctx); SDL_RWread(src, area, size, 1); } SDL_Surface *loadPNG(Uint8 * data, Uint32 * memcounter) { SDL_Surface *volatile surface; png_structp png_ptr; png_infop info_ptr; png_uint_32 width, height; int bit_depth, color_type, interlace_type; Uint32 Rmask; Uint32 Gmask; Uint32 Bmask; Uint32 Amask; SDL_Palette *palette; png_bytep *volatile row_pointers; int row, i; volatile int ckey = -1; png_color_16 *transv; SDL_RWops *src = NULL; Uint32 size; memcpy(&size, data, sizeof(Uint32)); if (memcounter) *memcounter += size + sizeof(Uint32); data += sizeof(Uint32); src = SDL_RWFromMem(data, size); /* Initialize the data we will clean up when we're done */ png_ptr = NULL; info_ptr = NULL; row_pointers = NULL; surface = NULL; /* Check to make sure we have something to do */ if (!src) { goto done; } /* Create the PNG loading context structure */ png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (png_ptr == NULL) { SDL_SetError("Couldn't allocate memory for PNG file"); goto done; } /* Allocate/initialize the memory for image information. REQUIRED. */ info_ptr = png_create_info_struct(png_ptr); if (info_ptr == NULL) { SDL_SetError("Couldn't create image information for PNG file"); goto done; } /* Set error handling if you are using setjmp/longjmp method (this is * the normal method of doing things with libpng). REQUIRED unless you * set up your own error handlers in png_create_read_struct() earlier. */ if (setjmp(png_ptr->jmpbuf)) { SDL_SetError("Error reading the PNG file."); goto done; } /* Set up the input control */ png_set_read_fn(png_ptr, src, png_read_data); /* Read PNG header info */ png_read_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); /* tell libpng to strip 16 bit/color files down to 8 bits/color */ png_set_strip_16(png_ptr); /* Extract multiple pixels with bit depths of 1, 2, and 4 from a single * byte into separate bytes (useful for paletted and grayscale images). */ png_set_packing(png_ptr); /* scale greyscale values to the range 0..255 */ if (color_type == PNG_COLOR_TYPE_GRAY) png_set_expand(png_ptr); /* For images with a single "transparent colour", set colour key; if more than one index has transparency, or if partially transparent entries exist, use full alpha channel */ if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) { int num_trans; Uint8 *trans; png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &transv); if (color_type == PNG_COLOR_TYPE_PALETTE) { /* Check if all tRNS entries are opaque except one */ int i, t = -1; for (i = 0; i < num_trans; i++) if (trans[i] == 0) { if (t >= 0) break; t = i; } else if (trans[i] != 255) break; if (i == num_trans) { /* exactly one transparent index */ ckey = t; } else { /* more than one transparent index, or translucency */ png_set_expand(png_ptr); } } else ckey = 0; /* actual value will be set later */ } if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) png_set_gray_to_rgb(png_ptr); png_read_update_info(png_ptr, info_ptr); png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); /* Allocate the SDL surface to hold the image */ Rmask = Gmask = Bmask = Amask = 0; if (color_type != PNG_COLOR_TYPE_PALETTE) { if (SDL_BYTEORDER == SDL_LIL_ENDIAN) { Rmask = 0x000000FF; Gmask = 0x0000FF00; Bmask = 0x00FF0000; Amask = (info_ptr->channels == 4) ? 0xFF000000 : 0; } else { int s = (info_ptr->channels == 4) ? 0 : 8; Rmask = 0xFF000000 >> s; Gmask = 0x00FF0000 >> s; Bmask = 0x0000FF00 >> s; Amask = 0x000000FF >> s; } } surface = SDL_AllocSurface(SDL_SWSURFACE, width, height, bit_depth * info_ptr->channels, Rmask, Gmask, Bmask, Amask); if (surface == NULL) { SDL_SetError("Out of memory"); goto done; } if (ckey != -1) { if (color_type != PNG_COLOR_TYPE_PALETTE) /* FIXME: Should these be truncated or shifted down? */ ckey = SDL_MapRGB(surface->format, (Uint8) transv->red, (Uint8) transv->green, (Uint8) transv->blue); SDL_SetColorKey(surface, SDL_SRCCOLORKEY, ckey); } /* Create the array of pointers to image data */ row_pointers = (png_bytep *) malloc(sizeof(png_bytep) * height); if ((row_pointers == NULL)) { SDL_SetError("Out of memory"); SDL_FreeSurface(surface); surface = NULL; goto done; } for (row = 0; row < (int) height; row++) { row_pointers[row] = (png_bytep) (Uint8 *) surface->pixels + row * surface->pitch; } /* Read the entire image in one go */ png_read_image(png_ptr, row_pointers); /* read rest of file, get additional chunks in info_ptr - REQUIRED */ png_read_end(png_ptr, info_ptr); /* Load the palette, if any */ palette = surface->format->palette; if (palette) { if (color_type == PNG_COLOR_TYPE_GRAY) { palette->ncolors = 256; for (i = 0; i < 256; i++) { palette->colors[i].r = i; palette->colors[i].g = i; palette->colors[i].b = i; } } else if (info_ptr->num_palette > 0) { palette->ncolors = info_ptr->num_palette; for (i = 0; i < info_ptr->num_palette; ++i) { palette->colors[i].b = info_ptr->palette[i].blue; palette->colors[i].g = info_ptr->palette[i].green; palette->colors[i].r = info_ptr->palette[i].red; } } } done: /* Clean up and return */ png_destroy_read_struct(&png_ptr, info_ptr ? &info_ptr : (png_infopp) 0, (png_infopp) 0); if (row_pointers) { free(row_pointers); } if (src) SDL_FreeRW(src); return (surface); } tuxpuck-0.8.2/jpg.c0100644000014500001440000001274507562713365013244 0ustar noorkusers/* jpg.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ /* JPG code originally by Sam Lantinga, slouken@libsdl.org */ #include #include #include #include #include #include #define INPUT_BUFFER_SIZE 4096 typedef struct { struct jpeg_source_mgr pub; SDL_RWops *ctx; Uint8 buffer[INPUT_BUFFER_SIZE]; } my_source_mgr; /* * Initialize source --- called by jpeg_read_header * before any data is actually read. */ static void init_source(j_decompress_ptr cinfo) { /* We don't actually need to do anything */ return; } /* * Fill the input buffer --- called whenever buffer is emptied. */ static int fill_input_buffer(j_decompress_ptr cinfo) { my_source_mgr *src = (my_source_mgr *) cinfo->src; int nbytes; nbytes = SDL_RWread(src->ctx, src->buffer, 1, INPUT_BUFFER_SIZE); if (nbytes <= 0) { /* Insert a fake EOI marker */ src->buffer[0] = (Uint8) 0xFF; src->buffer[1] = (Uint8) JPEG_EOI; nbytes = 2; } src->pub.next_input_byte = src->buffer; src->pub.bytes_in_buffer = nbytes; return TRUE; } /* * Skip data --- used to skip over a potentially large amount of * uninteresting data (such as an APPn marker). * * Writers of suspendable-input applications must note that skip_input_data * is not granted the right to give a suspension return. If the skip extends * beyond the data currently in the buffer, the buffer can be marked empty so * that the next read will cause a fill_input_buffer call that can suspend. * Arranging for additional bytes to be discarded before reloading the input * buffer is the application writer's problem. */ static void skip_input_data(j_decompress_ptr cinfo, long num_bytes) { my_source_mgr *src = (my_source_mgr *) cinfo->src; /* Just a dumb implementation for now. Could use fseek() except * it doesn't work on pipes. Not clear that being smart is worth * any trouble anyway --- large skips are infrequent. */ if (num_bytes > 0) { while (num_bytes > (long) src->pub.bytes_in_buffer) { num_bytes -= (long) src->pub.bytes_in_buffer; (void) src->pub.fill_input_buffer(cinfo); /* note we assume that fill_input_buffer will never * return FALSE, so suspension need not be handled. */ } src->pub.next_input_byte += (size_t) num_bytes; src->pub.bytes_in_buffer -= (size_t) num_bytes; } } /* * Terminate source --- called by jpeg_finish_decompress * after all data has been read. */ static void term_source(j_decompress_ptr cinfo) { /* We don't actually need to do anything */ return; } /* * Prepare for input from a stdio stream. * The caller must have already opened the stream, and is responsible * for closing it after finishing decompression. */ static void jpeg_SDL_RW_src(j_decompress_ptr cinfo, SDL_RWops * ctx) { my_source_mgr *src; /* The source object and input buffer are made permanent so that a series * of JPEG images can be read from the same file by calling jpeg_stdio_src * only before the first one. (If we discarded the buffer at the end of * one image, we'd likely lose the start of the next one.) * This makes it unsafe to use this manager and a different source * manager serially with the same JPEG object. Caveat programmer. */ if (cinfo->src == NULL) { /* first time for this JPEG object? */ cinfo->src = (struct jpeg_source_mgr *) (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, sizeof(my_source_mgr)); src = (my_source_mgr *) cinfo->src; } src = (my_source_mgr *) cinfo->src; src->pub.init_source = init_source; src->pub.fill_input_buffer = fill_input_buffer; src->pub.skip_input_data = skip_input_data; src->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */ src->pub.term_source = term_source; src->ctx = ctx; src->pub.bytes_in_buffer = 0; /* forces fill_input_buffer on first read */ src->pub.next_input_byte = NULL; /* until buffer loaded */ } /* Load a JPEG type image */ SDL_Surface *loadJPG(Uint8 * data, Uint32 * memcounter) { struct jpeg_error_mgr errmgr; struct jpeg_decompress_struct cinfo; JSAMPROW rowptr[1]; SDL_Surface *surface; SDL_RWops *src = NULL; Uint32 size; memcpy(&size, data, sizeof(Uint32)); if (memcounter) *memcounter += size + sizeof(Uint32); data += sizeof(Uint32); src = SDL_RWFromMem(data, size); /* Create a decompression structure and load the JPEG header */ cinfo.err = jpeg_std_error(&errmgr); jpeg_create_decompress(&cinfo); jpeg_SDL_RW_src(&cinfo, src); jpeg_read_header(&cinfo, TRUE); /* Set 24-bit RGB output */ cinfo.out_color_space = JCS_RGB; cinfo.quantize_colors = FALSE; jpeg_calc_output_dimensions(&cinfo); /* Allocate an output surface to hold the image */ surface = SDL_AllocSurface(SDL_SWSURFACE, cinfo.output_width, cinfo.output_height, 24, #if SDL_BYTEORDER == SDL_LIL_ENDIAN 0x0000FF, 0x00FF00, 0xFF0000, #else 0xFF0000, 0x00FF00, 0x0000FF, #endif 0); if (surface == NULL) { SDL_SetError("Out of memory"); goto done; } /* Decompress the image */ jpeg_start_decompress(&cinfo); while (cinfo.output_scanline < cinfo.output_height) { rowptr[0] = (JSAMPROW) (Uint8 *) surface->pixels + cinfo.output_scanline * surface->pitch; jpeg_read_scanlines(&cinfo, rowptr, (JDIMENSION) 1); } jpeg_finish_decompress(&cinfo); /* Clean up and return */ done: if (src) SDL_FreeRW(src); jpeg_destroy_decompress(&cinfo); return (surface); } tuxpuck-0.8.2/intro.c0100644000014500001440000000677007562713365013620 0ustar noorkusers/* intro.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include "video.h" #include "font.h" #include "tuxpuck.h" /* defines */ #define FADE_SPEED ((float)100.0) /* externals */ extern unsigned char title_jpg[]; extern unsigned char logo_jpg[]; extern unsigned char monos_fnt[]; /* functions */ void run_intro(void) { Uint8 loop = 1, state = 0; Uint32 elapsed_time = 0; float alpha = 0.0; SDL_Event event; SDL_Surface *sdl_title = NULL, *sdl_logo = NULL; SDL_Rect text_rect, logo_rect; Font *font = NULL; Timer *timer = NULL; char txt_coder[] = "written by Jacob Kroon"; char txt_gfx[] = "graphics by m0ns00n"; char txt_version[] = "v" _VERSION; sdl_title = video_create_jpg_surface(title_jpg, NULL); sdl_logo = video_create_jpg_surface(logo_jpg, NULL); logo_rect.x = 0; logo_rect.y = SCREEN_H / 2 - sdl_logo->h / 2 - 9; logo_rect.w = logo_rect.h = 0; video_box_up(sdl_title, 8000); video_save(); font = font_create(monos_fnt, NULL); font_set_color(font, 170, 140, 110); font_set_pen(font, 70, logo_rect.y + sdl_logo->h); timer = timer_create(); timer_reset(timer); while (loop) { while (SDL_PollEvent(&event)) if (event.type == SDL_MOUSEBUTTONDOWN) loop = 0; timer_update(timer); timer_reset(timer); elapsed_time = timer_elapsed(timer); switch (state) { case 0: alpha += FADE_SPEED * 2.0 * elapsed_time / 1000.0; if (alpha > 255.0) alpha = 255; video_erase(&logo_rect); video_set_alpha(sdl_logo, (Uint8) alpha); video_blit(sdl_logo, NULL, &logo_rect); font_set_alpha(font, alpha); video_erase(&text_rect); font_print(font, txt_version, &text_rect); if (alpha == 255.0) { alpha = 0.0; state = 1; font_set_pen(font, SCREEN_W / 2 - font_calc_width(font, txt_coder) / 2, SCREEN_H - 80); memset(&text_rect, 0, sizeof(SDL_Rect)); } break; case 1: alpha += FADE_SPEED * elapsed_time / 1000.0; if (alpha > 255.0) { state = 2; alpha = 255.0; } font_set_alpha(font, (Uint8) alpha); video_erase(&text_rect); font_print(font, txt_coder, &text_rect); break; case 2: alpha -= FADE_SPEED * elapsed_time / 1000.0; if (alpha < 0.0) { state = 3; alpha = 0.0; } font_set_alpha(font, (Uint8) alpha); video_erase(&text_rect); font_print(font, txt_coder, &text_rect); if (alpha == 0.0) font_set_pen(font, SCREEN_W / 2 - font_calc_width(font, txt_gfx) / 2, SCREEN_H - 80); break; case 3: alpha += FADE_SPEED * elapsed_time / 1000.0; if (alpha > 255.0) { state = 4; alpha = 255.0; } font_set_alpha(font, (Uint8) alpha); video_erase(&text_rect); font_print(font, txt_gfx, &text_rect); break; case 4: alpha -= FADE_SPEED * elapsed_time / 1000.0; if (alpha < 0.0) { state = 5; alpha = 0.0; } font_set_alpha(font, (Uint8) alpha); video_erase(&text_rect); font_print(font, txt_gfx, &text_rect); if (alpha == 0.0) font_set_pen(font, SCREEN_W / 2 - font_calc_width(font, txt_coder) / 2, SCREEN_H - 80); break; case 5: alpha += elapsed_time / 1000.0; if (alpha > 5.0) { state = 1; alpha = 0.0; } break; } video_update(); SDL_Delay(SLEEP); } SDL_FreeSurface(sdl_title); SDL_FreeSurface(sdl_logo); font_free(font); timer_free(timer); } tuxpuck-0.8.2/tux.c0100644000014500001440000000531107562713365013273 0ustar noorkusers/* tux.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include "video.h" #include "audio.h" #include "tuxpuck.h" /* externals */ extern unsigned char tux_png[]; extern unsigned char tux_eyes_spr[]; extern unsigned char tux_boos_ogg[]; extern unsigned char tux_apps_ogg[]; /* statics */ static char _name[] = "Tux"; static Uint8 _is_ready = 1; static Sprite *_spr_eyes = NULL; static Sound *_snd_boos = NULL, *_snd_apps = NULL; /* functions */ static void _tux_free(AIPlayer * player) { SDL_FreeSurface(player->sdl_image); sprite_free(_spr_eyes); audio_free_sound(_snd_apps); audio_free_sound(_snd_boos); free(player); } static void _tux_set_state(AIPlayer * player, Uint8 state) { player->state = state; switch (state) { case PLAYER_STATE_WIN_POINT: audio_play_sound(_snd_apps); sprite_set_animation(_spr_eyes, 1); _is_ready = 0; break; case PLAYER_STATE_LOOSE_POINT: audio_play_sound(_snd_boos); sprite_set_animation(_spr_eyes, 1); _is_ready = 0; break; default: break; } } static Uint8 _tux_reblit(AIPlayer * player, Uint32 time) { switch (player->state) { case PLAYER_STATE_WIN_POINT: case PLAYER_STATE_LOOSE_POINT: sprite_blit(_spr_eyes); if (sprite_update(_spr_eyes, time) == 0) { sprite_erase(_spr_eyes); player->state = PLAYER_STATE_IDLE; _is_ready = 1; } break; case PLAYER_STATE_WIN_GAME: case PLAYER_STATE_LOOSE_GAME: return 0; default: break; } return 1; } static Uint8 _ready(void) { return _is_ready; } AIPlayer *tux_create(Pad * pad, Puck * puck) { AIPlayer *player = NULL; player = malloc(sizeof(AIPlayer)); memset(player, 0, sizeof(AIPlayer)); player->sdl_image = video_create_png_surface(tux_png, NULL); player->rect.x = SCREEN_W / 2 - player->sdl_image->w / 2; player->rect.y = BOARD_TOP - player->sdl_image->h; player->rect.w = player->rect.h = 0; _spr_eyes = sprite_create(tux_eyes_spr, NULL); sprite_set_position(_spr_eyes, 292, 47); _snd_apps = audio_create_sound(tux_apps_ogg, NULL); _snd_boos = audio_create_sound(tux_boos_ogg, NULL); if (_snd_apps) audio_set_single(_snd_apps, 0); if (_snd_boos) audio_set_single(_snd_boos, 0); player->name = _name; player->pad = pad; player->puck = puck; player->speed = 3.0; player->hit_power = 2.5; player->state = PLAYER_STATE_IDLE; player->reblit = _tux_reblit; player->set_state = _tux_set_state; player->ready = _ready; player->free = _tux_free; player->strategy.idle = smart_idle; player->strategy.serve = dumb_serve; player->strategy.backup = dumb_backup; player->strategy.aim = dumb_aim; player->strategy.hit = dumb_hit; return player; } tuxpuck-0.8.2/arcana.c0100644000014500001440000000733607562713365013711 0ustar noorkusers/* arcana.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include "video.h" #include "tuxpuck.h" /* defines */ #define SERVE_STATE_FLOAT_FORWARD 1 #define SERVE_STATE_SWIRL 2 #define SERVE_STATE_RELEASE 3 #define SWIRL_RADIUS ((float)10.0) #define FLOAT_SPEED ((float)0.01) #define COUNTER_ACC ((float)0.01) #define RELEASE_SPEED ((float)0.5) /* externals */ extern unsigned char arcana_png[]; /* statics */ static char _name[] = "Arcana"; static Uint8 _serve_state = 0, _is_ready = 1; /* functions */ static void _arcana_free(AIPlayer * player) { SDL_FreeSurface(player->sdl_image); free(player); } static Uint8 _arcana_reblit(AIPlayer * player, Uint32 time) { switch (player->state) { case PLAYER_STATE_WIN_POINT: case PLAYER_STATE_LOOSE_POINT: _is_ready = 1; break; case PLAYER_STATE_WIN_GAME: case PLAYER_STATE_LOOSE_GAME: return 0; default: break; } return 1; } static Uint8 _ready(void) { return _is_ready; } static void _arcana_serve(AIPlayer * player, Uint32 time) { static float counter, counter_speed, angle_limit; static Uint8 corner = 0; entity_move_towards(player->pad, 0, 35, 0.005, time); switch (_serve_state) { case SERVE_STATE_FLOAT_FORWARD: if (entity_move_towards ((Entity *) player->puck, 0, 10 - SWIRL_RADIUS, FLOAT_SPEED, time) == 0) { _serve_state = SERVE_STATE_SWIRL; counter = -M_PI_2; counter_speed = 0.005; corner = (Uint8) ((float) rand() / RAND_MAX * 2); if (corner == 1) angle_limit = 2 * M_PI * 5 + M_PI + M_PI_2 / 2; else angle_limit = 2 * M_PI * 5 + M_PI; } break; case SERVE_STATE_SWIRL: counter_speed += time * COUNTER_ACC / 1000.0; counter += counter_speed * time; entity_set_position((Entity *) player->puck, SWIRL_RADIUS * cos(counter), 10 + SWIRL_RADIUS * sin(counter)); if (counter > angle_limit) { _serve_state = SERVE_STATE_RELEASE; entity_set_position((Entity *) player->puck, SWIRL_RADIUS * cos(angle_limit), 10 + SWIRL_RADIUS * sin(angle_limit)); } break; case SERVE_STATE_RELEASE: if (corner == 1) entity_set_velocity((Entity *) player->puck, RELEASE_SPEED * 0.477, RELEASE_SPEED * -0.879); else entity_set_velocity((Entity *) player->puck, RELEASE_SPEED * -0.140, RELEASE_SPEED * -0.990); player->set_state(player, PLAYER_STATE_IDLE); break; default: break; } } static void _arcana_set_state(AIPlayer * player, Uint8 state) { player->state = state; switch (state) { case PLAYER_STATE_SERVE: if ((float) rand() / RAND_MAX > 0.50) { _serve_state = SERVE_STATE_FLOAT_FORWARD; player->strategy.serve = _arcana_serve; } else player->strategy.serve = dumb_serve; break; default: break; } } AIPlayer *arcana_create(Pad * pad, Puck * puck) { AIPlayer *player = NULL; player = malloc(sizeof(AIPlayer)); memset(player, 0, sizeof(AIPlayer)); player->sdl_image = video_create_png_surface(arcana_png, NULL); SDL_SetColorKey(player->sdl_image, SDL_SRCCOLORKEY, 177); player->rect.x = SCREEN_W / 2 - player->sdl_image->w / 2; player->rect.y = BOARD_TOP - player->sdl_image->h; player->rect.w = player->rect.h = 0; player->name = _name; player->pad = pad; player->puck = puck; player->speed = 2.5; player->hit_power = 2.5; player->state = PLAYER_STATE_IDLE; player->reblit = _arcana_reblit; player->set_state = _arcana_set_state; player->ready = _ready; player->free = _arcana_free; player->strategy.idle = dumb_idle; player->strategy.serve = dumb_serve; player->strategy.backup = smart_backup; player->strategy.aim = dumb_aim; player->strategy.hit = dumb_hit; return player; } tuxpuck-0.8.2/tuxpuck.h0100644000014500001440000001063607562713365014171 0ustar noorkusers/* tuxpuck.h - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #ifndef _TUXPUCK_H #define _TUXPUCK_H /* includes */ #include /* defines */ #define SLEEP 10 #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #ifndef M_PI_2 #define M_PI_2 1.57079632679489661923 #endif #define PAD_W ((float)9.4) #define PAD_H ((float)0.02) #define PUCK_W ((float)2.8) #define PUCK_STATE_ALIVE 1 #define PUCK_STATE_DEAD 2 #define BOARD_STATE_PLAY 1 #define BOARD_STATE_NEW_PUCK 2 #define BOARD_STATE_CRASH_GLASS 3 #define BOARD_TOP ((float)175) #define BOARD_BOTTOM ((float)465) #define BOARD_LEFT ((float)203) #define BOARD_RIGHT ((float)517) #define PLAYER_STATE_IDLE 1 #define PLAYER_STATE_SERVE 2 #define PLAYER_STATE_AIM 3 #define PLAYER_STATE_HIT 4 #define PLAYER_STATE_BACKUP 5 #define PLAYER_STATE_WIN_POINT 6 #define PLAYER_STATE_LOOSE_POINT 7 #define PLAYER_STATE_WIN_GAME 8 #define PLAYER_STATE_LOOSE_GAME 9 /* structs */ typedef struct _Menu Menu; typedef struct _Entity Entity; typedef struct _Puck Puck; typedef Entity Pad; typedef struct _HumanPlayer HumanPlayer; typedef struct _AIPlayer AIPlayer; typedef struct _Strategy Strategy; typedef struct _Sprite Sprite; typedef struct _Timer Timer; struct _Strategy { void (*idle) (AIPlayer *, Uint32); void (*serve) (AIPlayer *, Uint32); void (*backup) (AIPlayer *, Uint32); void (*aim) (AIPlayer *, Uint32); void (*hit) (AIPlayer *, Uint32); }; struct _AIPlayer { char *name; SDL_Surface *sdl_image; SDL_Rect rect; Pad *pad; Puck *puck; float speed, hit_power; Uint8 state, points; void (*free) (AIPlayer *); Uint8(*reblit) (AIPlayer *, Uint32); void (*set_state) (AIPlayer *, Uint8); Uint8(*ready) (void); Strategy strategy; }; /* functions */ Menu *menu_create(int); void menu_add_field(Menu *, int, int, char *); int menu_get_selected(Menu *); void menu_free(Menu *); void entity_blit(Entity *); void entity_erase(Entity *); void entity_move(Entity *, Uint32); Uint8 entity_move_towards(Entity *, float, float, float, Uint32); void entity_set_position(Entity *, float, float); void entity_get_position(Entity *, float *, float *); void entity_set_velocity(Entity *, float, float); void entity_get_velocity(Entity *, float *, float *); void entity_set_alpha(Entity *, Uint8); Pad *pad_create(Uint8); void pad_free(Pad *); Puck *puck_create(void); void puck_free(Puck *); void puck_move(Puck *, Uint32); int puck_will_get_hit_by(Puck *, Pad *, Uint32); void puck_get_hit_by(Puck *, Pad *, Uint32); int puck_is_dead(Puck *); void puck_set_state(Puck *, Uint8); void board_init(void); void board_deinit(void); void board_blit(void); void board_reblit(void); void board_clean_up(void); Uint8 board_update(Uint32); Pad *board_get_pad(Uint8); Puck *board_get_puck(void); Uint8 board_get_state(void); Uint8 board_get_turn(void); float board_calc_y(float); float board_calc_scale(float); void glass_init(void); void glass_deinit(void); void glass_blit(void); void glass_erase(void); void glass_get_position(float *, float *); Uint8 glass_update(Uint32); void glass_smash(float, float); void scoreboard_init(void); void scoreboard_deinit(void); void scoreboard_blit(void); void scoreboard_erase(void); void scoreboard_reblit(void); void scoreboard_clean_up(void); void scoreboard_set_alpha(Uint8); void scoreboard_update(Uint32); void scoreboard_add_point(Uint8); void scoreboard_set_mousebar(Uint8); HumanPlayer *human_create(Pad *, char *); void human_free(HumanPlayer *); void human_set_speed(HumanPlayer *, Uint8); void human_give_point(HumanPlayer *); Uint8 human_get_points(HumanPlayer *); void human_update(HumanPlayer *, Uint32); void aiplayer_blit(AIPlayer *); void aiplayer_erase(AIPlayer *); void aiplayer_update(AIPlayer *, Uint32); void aiplayer_set_alpha(AIPlayer *, Uint8); void dumb_idle(AIPlayer *, Uint32); void dumb_serve(AIPlayer *, Uint32); void dumb_backup(AIPlayer *, Uint32); void dumb_aim(AIPlayer *, Uint32); void dumb_hit(AIPlayer *, Uint32); void smart_idle(AIPlayer *, Uint32); void smart_backup(AIPlayer *, Uint32); Sprite *sprite_create(Uint8 *, Uint32 *); void sprite_free(Sprite *); void sprite_blit(Sprite *); void sprite_erase(Sprite *); Uint8 sprite_update(Sprite *, Uint32); void sprite_set_position(Sprite *, Uint32, Uint32); void sprite_set_animation(Sprite *, Uint8); Timer *timer_create(void); void timer_free(Timer *); void timer_reset(Timer *); void timer_update(Timer *); Uint32 timer_elapsed(Timer *); #endif /* _TUXPUCK_H */ tuxpuck-0.8.2/video.h0100644000014500001440000000166207562713365013573 0ustar noorkusers/* video.h - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #ifndef _VIDEO_H #define _VIDEO_H /* includes */ #include /* defines */ #define SCREEN_W ((Uint32)640) #define SCREEN_H ((Uint32)480) /* functions */ int video_init(void); void video_deinit(void); SDL_Surface *video_create_png_surface(Uint8 *, Uint32 *); SDL_Surface *video_create_jpg_surface(Uint8 *, Uint32 *); SDL_Surface *video_scale_surface(SDL_Surface *, float); SDL_Surface *video_duplicate(void); void video_blit(SDL_Surface *, SDL_Rect *, SDL_Rect *); void video_set_alpha(SDL_Surface *, Uint8); void video_fill(Uint32, Uint8, SDL_Rect *); void video_erase(SDL_Rect *); void video_save(void); void video_update(void); void video_restore(void); void video_toggle_fullscreen(void); Uint32 video_map_rgb(Uint8, Uint8, Uint8); /* effects */ void video_box_up(SDL_Surface *, Uint32); void video_fade(SDL_Surface *, Uint32); #endif /* _VIDEO_H */ tuxpuck-0.8.2/audio.h0100644000014500001440000000071407562713365013563 0ustar noorkusers/* audio.h - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #ifndef _AUDIO_H #define _AUDIO_H /* includes */ #include /* structs */ typedef struct _Sound Sound; /* functions */ void audio_init(void); void audio_deinit(void); Sound *audio_create_sound(Uint8 *, Uint32 *); void audio_free_sound(Sound *); void audio_play_sound(Sound *); void audio_set_mute(Uint8); void audio_set_single(Sound *, Uint8); #endif /* _AUDIO_H */ tuxpuck-0.8.2/font.h0100644000014500001440000000111607562713365013425 0ustar noorkusers/* font.h - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #ifndef _FONT_H #define _FONT_H /* includes */ #include /* structs */ typedef struct _Font Font; /* functions */ Font *font_create(Uint8 *, Uint32 *); void font_free(Font *); void font_print(Font *, char *, SDL_Rect *); Uint32 font_calc_width(Font *, char *); Uint32 font_calc_height(Font *, char *); void font_move_pen(Font *, Uint16, Uint16); void font_set_pen(Font *, Uint16, Uint16); void font_set_color(Font *, Uint8, Uint8, Uint8); void font_set_alpha(Font *, Uint8); #endif /* _FONT_H */ tuxpuck-0.8.2/readme.txt0100644000014500001440000000162707562713365014313 0ustar noorkusersTuxPuck - www.efd.lth.se/~d00jkr/tuxpuck/ ========================================= Written by Jacob "noork" Kroon Email : d00jkr@efd.lth.se IRC : Try looking for "noork" in #sdl or #tuxpuck at irc.openprojects.net ICQ : 7246560 Graphics by m0ns00n Email : m0ns00n@gmx.net Website : http://m0ns00n.fr.fm - Requirements * SDL 1.2.0, www.libsdl.org * libPNG, www.libpng.org * libJPEG, www.ijg.org * OggVorbis, www.xiph.org * FreeType2, www.freetype.org (Only for compilation) - Compiling Just type "make" or "gmake". FreeBSD users might need to create a symbolic link named "sdl-config" that points to the SDL config script they want to use. - Installation To install the game type "make install" or "gmake install". The binary will be placed in /usr/bin and the manpage in /usr/man/man6. - Usage MOUSE Move the pad F Toggle fullscreen F1 Toggle sound on/off F5/F6 Change mouse speed tuxpuck-0.8.2/todo.txt0100644000014500001440000000021507562713365014013 0ustar noorkusersTodo list (ordered in sinking priority) : ========================================= * Add more sophisticated AI strategies * Add netplay tuxpuck-0.8.2/bugs.txt0100644000014500001440000000002107562713365014001 0ustar noorkusersBUGS ==== None? tuxpuck-0.8.2/thanks.txt0100644000014500001440000000136307562713365014343 0ustar noorkusers"Thank You" goes to the following people: ====================== * m0ns00n Hogne Titlestad, m0ns00n@gmx.net http://m0ns00n.fr.fm Graphics * Ernst Moritz Hahn, ernst.moritz.hahn@gmx.de Coding * Sven Velt, sven@velt.de Manpage * A. Schiffler, aschiffler@cogeco.ca Zooming code taken from SDL_rotozoom, www.libsdl.org * Philippe Lavoie, lavoie@zeus.genie.uottawa.ca Sam Lantinga, slouken@libsdl.org PNG/JPG code taken from SDL_image, www.libsdl.org * Urs Streidl, urs@gigaperls.org Tux image , http://www.gigaperls.org/linux/ * "Uriah" and "Gio" Various sounds * The Free Software Foundation for Truetype fonts. http://savannah.nongnu.org/download/freefont/ * The people behind Blender www.blender3d.com tuxpuck-0.8.2/COPYING0100644000014500001440000004313107562713365013344 0ustar noorkusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. tuxpuck-0.8.2/Makefile0100644000014500001440000000314307562713365013750 0ustar noorkusers# Makefile for TuxPuck , Copyright Jacob Kroon 2001-2002 NAME = tuxpuck VERSION = 0.8.2 CC = gcc CFLAGS += -D_VERSION=\"$(VERSION)\" -g -Wall CSOURCES = tuxpuck.c video.c audio.c menu.c sprite.c font.c timer.c \ board.c entity.c glass.c scoreboard.c player.c zoom.c png.c \ jpg.c intro.c tux.c arcana.c INCLUDES = tuxpuck.h video.h audio.h font.h ############################################################# OBJS=$(CSOURCES:.c=.o) ifdef COMSPEC OBJS += w32icon.o endif %.o : %.c $(CC) $(CFLAGS) `sdl-config --cflags` -c -o $@ $< $(NAME) : $(OBJS) cd data; $(MAKE) $(CC) $(CFLAGS) $(OBJS) data/libdata.a `sdl-config --libs` -lm -lpng \ -ljpeg -lz -lvorbisfile -lvorbis -logg -o $(NAME) w32icon.o : data/icons/tuxpuck.ico echo AppIcon ICON "data/icons/tuxpuck.ico" > temp.rc windres -i temp.rc -o w32icon.o rm temp.rc clean : cd utils; $(MAKE) clean; cd data; $(MAKE) clean; rm -f *~ $(OBJS) $(NAME) indent : cd utils; $(MAKE) indent; indent -br -brs -sob -ce -c50 -npsl -npcs $(CSOURCES) $(INCLUDES) rm -f *~ dist : $(MAKE) clean mkdir $(NAME)-$(VERSION) cp $(CSOURCES) $(INCLUDES) readme.txt todo.txt bugs.txt thanks.txt \ COPYING Makefile $(NAME)-$(VERSION) cp -R man utils data $(NAME)-$(VERSION) tar -cf $(NAME)-$(VERSION).tar $(NAME)-$(VERSION) tar -f $(NAME)-$(VERSION).tar --delete \ `tar -tf $(NAME)-*.tar | grep -w -e ".svn/"` gzip -9 $(NAME)-$(VERSION).tar rm -Rf $(NAME)-$(VERSION) install : $(NAME) install -d $(DESTDIR)/usr/bin install -d $(DESTDIR)/usr/man/man6 install -m755 $(NAME) $(DESTDIR)/usr/bin install -m644 man/$(NAME).6.gz $(DESTDIR)/usr/man/man6 tuxpuck-0.8.2/man/0040755000014500001440000000000007562713365013065 5ustar noorkuserstuxpuck-0.8.2/man/tuxpuck.6.gz0100644000014500001440000000207607562713365015300 0ustar noorkusersrA<tuxpuck.6U]o6}ׯӺɪd]GN ]lX@IWHʮwI9Je آy9Txa@ΒK}?dQؕ9W@Ѡ `5]FRU)*X:L9 ;G1ϴߚ6{IEì8m$q3Ŧl Z o CM0tgod7Tt&Zc^ jkN S7Ʈb#?y:ᤸ1(_0֑.Y+k*QZўmhLɖhLnFq2IVPp)ti,aUO_x;F鍼OA { 2Y691lǷ0AŠ\ϣPo{PɌۂ;*(rHRu!ĆPkIdJqr>Yqv[Z}.ѽ8נrIlѴJO'YW7g`ﵱ} "U?P>MS4'*'nq@+mlz1x3[mz"1XNVmULِq}2 @m7 :eK$h|`x fiE0]$~z )S@7zl/>Civ&lrehIuu4@ع}Wɂ4ǎW;r:Qnu\?+f>L )Ճ"|<>b)C^|U`/Ɨ#=`eJ㑖anO H1үtuxpuck-0.8.2/utils/0040755000014500001440000000000007562713365013452 5ustar noorkuserstuxpuck-0.8.2/utils/data2c.c0100644000014500001440000000224407562713365014753 0ustar noorkusers/* data2c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include #include void errorc(char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } void errorcc(char *msg1, char *msg2) { fprintf(stderr, "%s%s\n", msg1, msg2); exit(1); } int main(int argc, char **argv) { FILE *in = NULL, *out = NULL; char buffer[100]; unsigned char ch; int i = 0; Uint32 size; struct stat theStat; if (argc != 3) errorc("Usage : data2c "); if ((in = fopen(argv[1], "rb")) == NULL) errorcc("Couldn't open file for reading : ", argv[1]); stat(argv[1], &theStat); size = theStat.st_size; sprintf(buffer, "%s.c", argv[2]); if ((out = fopen(buffer, "wb")) == NULL) errorcc("Couldn't open file for writing : ", buffer); fprintf(out, "/* %s */\n", buffer); fprintf(out, "unsigned char %s[] = {\n", argv[2]); for (i = 0; i < 4; i++) fprintf(out, "%d,", ((Uint8 *) & size)[i]); while (fread(&ch, 1, 1, in) != 0) fprintf(out, "%d,", ch); fseek(out, -1, SEEK_CUR); fprintf(out, "};\n"); fclose(in); fclose(out); return 0; } tuxpuck-0.8.2/utils/anim.c0100644000014500001440000000477707562713365014556 0ustar noorkusers/* anim.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include #include #include void errorc(char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } void errorcc(char *msg1, char *msg2) { fprintf(stderr, "%s%s\n", msg1, msg2); exit(1); } void write_file(FILE * out, char *filename) { FILE *in = NULL; struct stat theStat; Uint8 *data; Uint32 size; if ((in = fopen(filename, "rb")) == NULL) errorcc("Couldn't open file, ", filename); stat(filename, &theStat); data = (Uint8 *) malloc(theStat.st_size); size = theStat.st_size; fwrite(&size, sizeof(Uint32), 1, out); fread(data, theStat.st_size, 1, in); fwrite(data, theStat.st_size, 1, out); free(data); fclose(in); } int main(int argc, char **argv) { FILE *in = NULL, *out = NULL; char buffer1[100]; char buffer2[100]; char *ptr; Uint8 nbrOfFrames, nbrOfAnimations; Uint32 uint32; int j = 0, i = 0; if (argc != 3) errorc("Usage : anim "); if ((in = fopen(argv[1], "rb")) == NULL) errorcc("Couldn't open file for reading: ", argv[1]); if ((out = fopen(argv[2], "wb")) == NULL) errorcc("Couldn't open file for writing: ", argv[2]); if (fscanf(in, "NbrOfFrames: %d\n", &uint32) != 1) errorc("Wrong number of frames!"); nbrOfFrames = (Uint8) uint32; fwrite(&nbrOfFrames, 1, 1, out); ptr = strrchr(argv[1], '/'); if (ptr) argv[1][strlen(argv[1]) - strlen(ptr) + 1] = 0; else argv[1][0] = 0; for (i = 0; i < nbrOfFrames; i++) { if (fscanf(in, "%s\n", buffer1) != 1) errorc("Couldnt find image name!"); sprintf(buffer2, "%s%s", argv[1], buffer1); write_file(out, buffer2); } if (fscanf(in, "NbrOfAnimations: %d\n", &uint32) != 1) errorc("Wrong number of animations!"); nbrOfAnimations = (Uint8) uint32; fwrite(&nbrOfAnimations, 1, 1, out); for (i = 0; i < nbrOfAnimations; i++) { Uint32 n; Uint8 n2; if (fscanf(in, "%d\n", &n) != 1) errorc("Couldnt read number of frames in animation!"); n2 = (Uint8) n; fwrite(&n2, 1, 1, out); for (j = 0; j < n2; j++) { Uint32 frame; Uint32 time; Uint8 frame2; Uint16 time2; if (fscanf(in, "%d %d\n", &frame, &time) != 2) errorc("Error reading frames"); frame2 = (Uint8) frame; time2 = (Uint16) time; fwrite(&frame2, 1, 1, out); fwrite(&time2, sizeof(time2), 1, out); } } fclose(in); fclose(out); return 0; } tuxpuck-0.8.2/utils/ttf2font.c0100644000014500001440000000370607562713365015367 0ustar noorkusers/* ttf2font.c - Copyright (C) 2001-2002 Jacob Kroon, see COPYING for details */ #include #include #include #include FT_FREETYPE_H /* defines */ #define START_CHAR ' ' #define END_CHAR 'z' void errorc(char *msg) { fprintf(stderr, "%s\n", msg); exit(1); } void errorcc(char *msg1, char *msg2) { fprintf(stderr, "%s%s\n", msg1, msg2); exit(1); } void write_glyph(FILE * file, FT_GlyphSlot glyph) { short int x, y; short int xsize, ysize; short int xpos, ypos, advance; FT_Bitmap bitmap = glyph->bitmap; xsize = bitmap.width; ysize = bitmap.rows; xpos = glyph->bitmap_left; ypos = glyph->bitmap_top; advance = glyph->advance.x >> 6; fwrite(&xsize, sizeof(xsize), 1, file); fwrite(&ysize, sizeof(ysize), 1, file); fwrite(&xpos, sizeof(xpos), 1, file); fwrite(&ypos, sizeof(ypos), 1, file); fwrite(&advance, sizeof(advance), 1, file); for (y = 0; y < bitmap.rows; y++) for (x = 0; x < bitmap.width; x++) fwrite(&bitmap.buffer[y * bitmap.pitch + x], 1, 1, file); } int main(int argc, char **argv) { FT_Library ftl; FT_Face face; FT_UInt xsize, ysize; unsigned char ch; FILE *out = NULL; if (argc != 5) errorc("Usage: ttf2font "); if (sscanf(argv[3], "%d", &xsize) != 1 || sscanf(argv[4], "%d", &ysize) != 1) errorc("Wrong format of font size"); if (FT_Init_FreeType(&ftl)) errorc("Could't initialize FreeType2 library"); if (FT_New_Face(ftl, argv[1], 0, &face)) errorcc("Couldn't open font ", argv[1]); if (FT_Set_Charmap(face, face->charmaps[0])) errorc("Error setting first charmap"); if (FT_Set_Pixel_Sizes(face, xsize, ysize)) errorc("Error setting font size"); out = fopen(argv[2], "wb"); for (ch = START_CHAR; ch <= END_CHAR; ch++) { if (FT_Load_Char(face, ch, FT_LOAD_RENDER)) errorc("Error rendering glyph"); fwrite(&ch, 1, 1, out); write_glyph(out, face->glyph); } fclose(out); return 0; } tuxpuck-0.8.2/utils/Makefile0100644000014500001440000000110207562713365015101 0ustar noorkusers# Makefile for TuxPuck Utils , Copyright Jacob Kroon 2001-2002 CC = gcc CFLAGS += -g -Wall -Werror ############################################################# all : ttf2font data2c anim ttf2font : ttf2font.c $(CC) $(CFLAGS) ttf2font.c `freetype-config --cflags --libs` -o ttf2font data2c : data2c.c $(CC) $(CFLAGS) data2c.c `sdl-config --cflags --libs` -o data2c anim : anim.c $(CC) $(CFLAGS) anim.c `sdl-config --cflags --libs` -o anim clean : rm -f *~ data2c ttf2font anim indent : indent -br -brs -sob -ce -c50 -npsl -npcs data2c.c ttf2font.c anim.c rm -f *~ tuxpuck-0.8.2/data/0040755000014500001440000000000007562713365013223 5ustar noorkuserstuxpuck-0.8.2/data/tux/0040755000014500001440000000000007562713365014043 5ustar noorkuserstuxpuck-0.8.2/data/tux/tux.png0100644000014500001440000002277507562713365015403 0ustar noorkusersPNG  IHDR'PLTE +%_~ɀDU_Ai`@ l o2*QnIre?oNi}Z5R8 ג>Xp3^%Ʌ2!'*8bCanOg“G0bh>2ASΒ)4ՓWRߪ8#D20^Rݦ!-r~B_ȶ.4cxCU[3n7"~B7Dߟ$Z`rd*zJ2ˆVbJpʦ&~#a}j}N s 5G@GR9*oT%>9nV,25J4 ,AKNytX#}JI 0MY~p7yc3qK Cܘ v(VTZn8<>p".-Wmv* ~׍bjq^s.H2.> 6@z3RaW uZV ؃Z):BΌ~Qjr2D:o?w"IDATxĚLwF9en®M{e܍z:ur;d%[+5;iXۍ"X `r@]bjR#xU9z`>vkON΍7z]zƍ9kr7^0<4ti}n7\s7?=}.Jťx>‰Npjߋ=&5u@͹MThtbݑ7~Hks¹m8izznغx|"ž C;N\˚YSm65jkMtͺT=ɞ! LLj\mzuj:˵8$VMՊhv|snsPEudZ?ssFrm9fMŇoznl}Tq;UY gM gjaΩ3gk`Z:}핻VNˆSu\ru5"j*}KDg۩VgarݚHLnQcbfAgwBJH}F)[jE2"ZBR5DƑy٬zBNt@FHTЫqj8Fdû` ]"j6K>Ht)!% Všvȯi릈l^6 6R/KE"ϋoGK!" 5~ ln7'2#I$DG*BA3BؿGwšv<%iH6 x:Po,~- Ѕ=Q7bȪ38&q] @2H- MH:_z$QYuL⑰%5O1<]{fdCCnlAQ!BTiwA].leDÇBXTD IJHtuoL)RhhUFu/ PQkT*ʩY3"(P%n>n6}EE2*wMZiI!,E({O< ('%dZ 5~R:k ]3 raΚHK8U*9zL$Z({tF %h&Qwv#6CrY>Z Dۂ VfW)g:x<2ieQ+B>&PGEUu.eZ5vR SZ3XUΚXٰGX@F.imDUҎJ%_0Z0^1/WyQϰL_{w(@q#f纮5b 팘kʊP4^y ѸԺnGEمO2]/ۄF϶X P_%5"tj=B4 ^%{u .u)xsȲw]H80P5ԇ2`{PdFGĺ999T7.^YF{&ЩV hB_ vzҭb2Ѯ/Av__%{d#P MqƗ 65"Nnb]HzU"Cs 2sbMΚ{lp@ +ty՛A!>CZ:>> U=]_ԃa8Pe˒Aeo֩96]eA`UD)hO=Dո'^މWF-+{{>C4:щ< G&-N {3X[ˤ2RA,>5ƭq֬؋/͐a^9tҳuŚ5l!:y f}tk2깹3g% zI V_ZU<(ؖx7 p*1=dEl,4aكe9eQg.|' D41HO;-Սýf4nxv6/h'la=D "J5-Dp@ ]:QWsOWΦi9IN5[3jFσ;@tBS7w #`ȨoԘLY]IJx_2OgN <#QTԇTh;CUY?jMW?7Vbg5 X-IY )bc@Mg=RMs&Ze½#- k{ *]b-.2 іhB-e/3(Cщx]b^qCg'c X 5"8ս6?882| >}$&K2Έ4o` m'˰1±x؆ζ=[vc_{K1sawdFtApVy gJKBy:k ,_\¿YoX9@%IC{ sч+|i^ DWKBij#ނ>4>ĒS ŋ1(;Q򥥍뗎@({ez_<}bv PH 45 hi}rJl b[E@jM1* 4| V/R@7n\$5Bԩ#ujZ8>i\e3 PN^$[I"T[& пc^@yB!8xpHphҲP>S jTh߃W y|官6B a=q=0ÔGKP:0p>qk^8/ϔ|¼J@)_# !7k˭t.ܩTGhZ!/+kQffƥ%Jî by%%=KqS7E^_V=JhG bq3qcy@JѼSFf*a\GiHH'JKc<6 RFE4c Ue2h\%6 ] ]R?Q.R 5ϳjv>'ШpeK0bLе8-hR{l8E8y ęp)L``@y2 U|+GFzÙў2SX\QeMBmqTRcQU׷!ἪXaqq#'RV.yvIQ@U[ Qu%%%{omPs e KQէ@BG)C3:I(7yGj;zԭ-8l~oI -G>nj2$'`_P(= 6Pn]]zuW.5jOϕv5}@$TDthJuTJ6mҳ]D@&Zu6 fmD*Ȱ[Q8 H+gxʪ4|S#P`@/J7N@u,܅󱃙&7hA @R&2Tg@B4ǞA(D l÷ݍhԆ2Oҗ1}3I0@iX6(*?>NR=AF[WV cY{T;$0xaD*b }{f"& Pt:v>#/`IlSy#2_}eNd @[1_ΝO+gOz7 &+/oF=>dGbzg}/>HŊ<< }>׷O"A_c/H6R˥;%+Wx<yNOVJvj)zC۸ϰ?AhZdFjJ ' ĵE2de;z`4!"t_@a4586BVa V;9N;vrQp={.5_Mib+E uL[/ (&Mr5LJ5-(B妭IiL;l <Ǭ'0k%5mmu|>, ũ0Q~tXl& ]&lVevL l$$^=mm5?u4D Ыhb ELs(I 4T`=:i`x'+IԀRWb0fD>DBE dd1uv:H:4Lǔ%lo3Bdn.Ϲwʊ̋E01~|A Cns| oA7 uEMb aUZ0˧Ft#aLFb~W.k [䦾K< zY5-T6TĖRS/bȐo'b8THcul E E2koNEG2Oƈd~fpHąltM!(\>;uJSmԶd2ɖ+'x\1e]ւyǹ}XvL(tpnoXMӠzN<,ޱdS޵!Sp:w<9(nP;|߫J΄ { (&E?6>֎J KdiB64jBCPF  Kt)JeҚ#X'A9qȿF L"D(j_'L( \_fwPZ Q8z1C=D}g ;Qd^슍Q,I^XY$m: ĩ[YX+ 0&ѷ_o!?~^Q7Cyj8x:! oP"(Q|4T!=u%FT2 {^H&ua}nEppIEIYQ*F;ZSwzz+6~#,N8Z<)XZY }a6C V?<饵5DJOT*j;2>_no_s)u^(R",jsbbIB+"ӇLƂ~G #F M;EkĐdA?1-V3<0+^bp| OYi ^7VR<_H:ih?٥vr bgFl& TVuH]SeUj?G!Mv(jFUou. 1;[$MPOS~m<Ļz@5rJåx IHukf3hrjKp/;>x'^x;4q?=` ?U:&"k4s2qM?V>iƤguHB&RuSJ-!?C@Twnr@N"\V5Y]03'we9Rx*EE_|:#'CG.ˮ[Mtݰxn6DVjnݮ"'ЕRR/3'7k %4rer޿#xW^T.}`x]jeЅ.{$kiBDs1^X&;m= Fpa_n&;;IJc]< 97x K±f_$NVj%!^Ye˹W6>jDGGXہbϛ"Fě9)}7ՀvqM~ywݓ{kZRʚMVTQ``)<<]Z"ISt}k_/EtB̺-ü+zo[͕B$IHD^i\+x"_Ğ-k$ņOZ;"BX^b~Ahf|./a€TQx R0FU WR"(F"dݿ;beԧuGxpZ xl"PLZF/;}Yz<{l5X{TIA},dx9T={jWbv= %޿Ƙs}n?^5s2qNk-Z'r.Yx0\ʅIENDB`tuxpuck-0.8.2/data/tux/eyes.ac0100644000014500001440000000010507562713365015306 0ustar noorkusersNbrOfFrames: 1 eyes.png NbrOfAnimations: 1 4 0 400 1 200 0 400 1 200 tuxpuck-0.8.2/data/tux/eyes.png0100644000014500001440000000134007562713365015511 0ustar noorkusersPNG  IHDR"x;PLTE %*..29*#>72.>9BDOgGINRJ.ZV2^R^pznb%Xޮjߟ$/HevΒjvvqIDAT8UNPE{gU#F 'uʆY;=E>:jWSDS2#p{h=Q,B˾n WC񄻊l7y3 %lLGqqJ "P\>˃&$e5QAwυa۶u4j"y/{og i-aְG3һ6)``4oȴŹ}a^ R> jNnsAjn4VW2?-|#Zz4]yȋ\ga"2.zϚtmizhBl1Jk:8Dcܜ_p_Bw5LTA 뺑q:YmݹGVgcPbtq!Dm,w4""'q.&%N)_j9Nn`IENDB`tuxpuck-0.8.2/data/tux/boos.ogg0100644000014500001440000003277507562713365015516 0ustar noorkusersOggS#&0;vorbis+OggS#&> 0vorbis Xiphophorus libVorbis I 20011231vorbis"BCV@1:-sΑ0:1sA25s5ZcZkАUeAjD0eAd0f ÐAlPj !J 4dc 2!B!RJ)cQr%jZk Y$((20Eq$M5BCV@8XeYeYeYeYeYeYeYeYTEQEBCV((8$Id! EQqG,KDMTOUU5UUUU4MBCV1АU@Cbsb 4ddQV29[eR2hM92-cXK*9gPJ)% YQfbgQgNjsΩJ9ʘrs :4ksJ BCV B!dB!B!RH!АU qɑɑ$I$K,,4M4O<<=EQ4M4M4MUMUUUUUUՕ]]Yeu]a؅ae 4d@dB!B)RJ)c  Ypqɑɑ$K$,,4Q5=3ESTM4E4M4ET]WuUU]U]U]וm[weu]u]BCV:(")#9$I@h*@@8HX&ygi@h*@h戊(yghyyY(*(z* $tqqqGАU qGr,Gs4ɓ]S~*}=U_D֞*#x7oJJ! YJy HxYᾜ"Xd$`ijk5˄ Xom-Y(,S$ +NAaR P: JgRPH>|A5"Ej%J,|"H5V\Ǒ-*J'(uZUޣe`v^U/>] G~>SUkj }e^F{)o_{T~̘U_)Y07і#5r( ájo9?@>=Yo_K]ɔB#j[]Ft1zbJlkGVmKDn* Q "OW=rxۗ9x\;j:kMq(kSJyvUEΎG\[q\1/ a@@= JZꐨnm]Wnngz$.3<|7iq1e&8D2gy-\?2> 5 Z +/2w^ַ|7=#*S[6x *E/ˌ,d/ng_P՜eKK^\W{ﳾqU|Z4,\}_YԵ7v޷ wBU GԈP=g瑬;IM*V̬R@yNv]|&k$I]`ͻDٲ%$)QW2ioG[_eڼ꟎µ?FyMX)Ut:U_gYTkܞVÝh8ۨL@=2N].*/^QԳb3c)꿷x/snh~G]ut鸡ّ[OߴGQ 5Jj&76R*O:H@9DY|jF}tJN|L"})%q藦X u@턏 Yp1}dUY(ID*4nzYUiDzw=wqe+[BoJ]5l ""ۖDqlb^bqʡҟ9,cE8zuVj-{i?ܣGW':ٹ[;'Lܲo{Ck ? Pk 8W,ʓPʊ}XC4LD90H]*1jU\$6#F/ǎ@7;'qP+}GY AUX22ۺUy6ɥHqrlȴQz_޽q_)sGTkM$o*2ȣ"Rra3ZȅK) 36[KTw1` ~4TNԞ73") |#8 Nu:(Y#[cDׯN֠ li0dYy4`ͲSn,LHMIUKY[nVpCk1+"&؁u%i>WoܞԮWN׉WYUiy<8k(Yy? Wޓ?heY7c>~5szj`drۀa Xƅqg#9߳hȜ*d_FfqWekj!SØ5:00qj@z&M{Av"W،'Wݪf֌rlU}f62rיN-zv`9+\vcW9چY\5 ndVrG=/^]wUXR3N]}aFv4xY{Tq\9UU#S5vi(J3[yt63]ogКjp9  m,eAyt 4փ(a@#,<`@643.Ob]ʴ~qUyH=(|јKW6Z8`^Tϱb؄/ba6zm4Sc)զ"D,$3Ijzm怕{A^ǧ:)8c~l">dY!vZO$"Xà&fۗBVC~T@"6O;.Ɣ.Y%čyxEf)@uQ`n>L)GUYyojݰ8yݚ+*{ʐF.v(K.CŦz6Vm>V4,F1OgK|*b&P^*Yctu2\ FB? Dvd:`ZhЮ1I$!G$@GZhrg2[2w/] hkMϞۑ7~L+hUgnZ<^( d˸ ɪY],+^ftѣUr,D -2sj#jX"jG2MMSOT^̽i{1s?Ľ iĎI W.eZlG1H$qץNun ,pu%R[a{-d8[i2$. LiH @vZ|*E->Zcm BU6u]V9#ܪlY)JC"9L&,KIrW$IΖO\_6![ 5 Wڞl7J7\Sǜ)/~{:fA5ۺXӬ%m'f*iY!e9 u Qc Ԛx-Q7 t sy D$CN]>Bٌ ثh2b̒L0jǾ\yŬ?[i q2d*r2pgۢK&_vu[k$A_>f|8_V8Y4ʼn)KeogiYUqPړM7H<D͊(~Khwd͊v[*?@cbzOqYE֘ȰOAB05dq<-32h@2\/eP3 8Lz*u#!Uu# ZA.W"Mkv9^vڭb$ot #rm\ uqBBU{'^|}x*⾶WWFocXS?ghZQwOwׂm-P@75%˭Xiϋ˩Gn*hamZ@]@0u%@644]M)*qv.(MeTUĎM&ߘTu%:\{v5J,ID%G)</V/g4/;_Wݽ?]+i_λzx5?jjn}uAټwOymGǘ*[ !ss,} BӜ5NM~z{8rnkgݺ6[{.,X S8{jc+Ԫ#:' :OggS@#&]f>t{EzTCJGUwݎrZLˮ(u8߷jD^8bcQν/c&%ITNѮ=oo.Cq][w7Y(|.I[Xդ>GqTۏ>^}s XG)=+\X Z F5-{; ŚsSȺs-\f¾D2(.$'bH_s䛜dP}(WY?wU̻G(źgUDy#Y_Pq ?6ʦW|q\Qe_E}2=ye~@+z^UqAKʫ]i{C hʻ25D% Q1PQSUւ$$*8d> ue^ 䱨Ư Vֵ:l골 |b4L :-% rȦr)ʩ+ci`]yӖ v}j,_ίPY~UqF]~s1m&cuX;MKH/egkiRKgMss 5`tz{DwہCm- @pʹ'B*r =8GW-7όsw&>tY9S},ldU+K8G׃98Gn 㾜s-6^!1Ml=!Kg1 fi̗hތ~'箵 P8:Wgov޺$6 (w$i"$&e>{%8+$@!D+:/'E"+AC aՋ}2C\ 1> X|U㗉L0wYrۮzUD*.7+k#S[ۑS$i#YtZmNKiZF}9[iU\˾m mF,/^"":6l9m]WmlMqIJ)h\%V%}A$ɦv J9DQ$<:jV2\1+PdחgR >teG5WS9LJD*v'ä"z><bq[0+sZ؎]D $]xӻCGc~lk 7=W;9|1y&[jz"kyVZVF { U_smIUP+R%:sJR)pkt'W8~Mڬ; ?*ǍpWMy>X-(*7@o9QT;V>c25íۑ%[Ӵy(Ls5ϭ`ln뇂k/*W2U}./z~x-{cTT9ʖPnc'ś^{^;bJjTcM_cݚ΢[Z*qR- pyA*h\&@b2j{X[Mc1rw{qez4j&dNƁrEeɫfp Yx>ؔ\M ?LXfطۮ>ge+8Wc}UED%I+:l%k}ԯo=.|g]O_UQby5-,FRpzO4wPmnQURlMmYF3ZU84rL :kf6eK#Iέhap`wid ȍل8 >to'*3r^}X9v?zװns'"e!љia:Y.ْ<ƫZb|߶-Zu9֬YcF`qtu-/U钘 eGQU插 '7 ^=fm؞ f[s33 .3Mw3 ~%ÛH|g#hF}p"pp:x **#7ȁJW'L-szvZD]1ZcFIM\yefeF.hRQɖ$ib-X~uo6+VO?ޜ4y_5N{r//;(R?bÖRY\M WbD뵉f֜okVa!8/.8Cf5QuGtV lrNJ5үRz!yI~QΓj@2$T7Z ~G('pt9 $R#>tWGz5$BT`'㱋}sEh+RD a46NJES*%n1CۘwzV6l fYٝO7/^.}_,in{ӭTuG% {*}Fwe{D 061K]l927rHq YÔնoDZε3Pڅ= x"JB\:[r(Z]TxGs)k9|cF&ģW|1dGkc>tM%HkZJX\n\]s_ux]#ᔲszdziqc=[Ȧ%tנs_k:SM)w.64[1fZcƌrxQ1cn=7d-9=;`o9sgLfo15@|qTvk/)cjH (s_u]x~g3X"휿 "49uא鿎\l AAȱ 0:>tM1W$-^Up7Ϊߛ1*y1}Em%IJrϏ^F< ܶm,_g]_}<6|U;j+L[bv]y;+3ug, [-E+e'Nw&qvm`.`e& ,l{kR0x?2?-/8[jV'hD `hHwV#-jY@!GE|>>Vŝ=W7ؒZF% 3޾ 9繏;.ɯ,gV%aL[Ռ뻦~Gi(d6G !:SKϹaNi TL::P$LJXBϓi/Yۚzubg@_2yvKԢi;$mIT-zk5YL:lJ{:~_Uk]"^^G xƨ7U>dܧa-KXg@"V 0%`%K䜂Rz΅%:'PR8SƚH2QMmo>:wMp;6 otT7p|qd7eN9(!0Ng>4#9;DBJr09q9[WJIq mfD nXiu$IrmpK^ ttBD򞇟Y].|= F{^~-$NFXZNl _&aXA8+&aJ-)4f12Ril1T^H u "> ::n0s{NwbŁ˄j`P\v @ 36Ddg@/>y=WpҦj%,svzoZë.κ-]?mpSvKt?4do>/G[5Ϳjy<ɸ/3 ؼo3תj';;62q9^YNzӄasJ$0#C"rOJt% *m2i]KJ}"s@vi (&ḳ`>?ctE~UR@(53v~2e—{OggSZ#& >Ԏ1|/͢jm KgTAQ6VE^gsuϳfR[62nub!)]/{ ni9WWAuaY?؈plcT{ ͍X96,r]h:ùzyYs%㸽ehre|]y^̆U%?'Uw0pC֧,^+6O5C,$‘A04r ȡ޻c#s>iv.!a2aabm b;nQWסvhYhrݰ.[T*Bm~vގ Of{2c怑8♗~ܮ߅W ՗FWuÜ13K_"*j޴qwĻ]7X"$n2ZS @]Qɺ[|e/s42YRu^dNIЀyGLv9L\'"@;B zڝ>9DgR߸3Prۯ!n=mt3}xgW2R)m N$J,Iғ}*M^ XBuHvi5٬uUW#GV:ʼ{x>C7.HEM {XXW:hф;'_iP5sܻaCV^`qGriE.mӏm7ᜏu]9`4r}$A-Gô*( : >)D{RSa!V"VܝۗrOk3l+ IGD'4O"+u$"Ř~~3t2r6G, q\]GTۣ~MVʖb٣nr؎c&y5w &U3 E0)9|\ L7vI8c4C\hv[~qq;Oа. m J!j>o48jm0>)NMSl^Zɲzms"ۃa*KDU)27h$ޞkɒ!jvhXƱ*n_to^H_tVòs|(eX"Rx&g璮cRf߇H>aչ{٤ݙMG> ,?T?ĨZ k 8s_Ǯc3x4'2 UkŚWpuO]γ״2O26c=W sW ,˶ݖ$IzMpq?_E&C!pvW#<ƍUAMoJhqc & ,:jI(DA)c XR[o;c$߅oI>q \w &/Gv0\MY%Л`! Ja#fE+-+skkv{Om^r.9@ƞ 4Dd(uIvԯ C)ھֺvǵފٗO?#'~7|=uNgql|YABn8jy4vDuϭ+Dh;AL y+Qp@{A<^sʻʷ"+]Ucr=]Jf]^d07dYkM.egt HA]Unl@(tX bb@hgG]x`Z(fr(m!R9Ȓ'8/Nq888}8'5zIm@?^z`f^+bPX|^>Cs:,-,p!χPKKK6tuxpuck-0.8.2/data/tux/apps.ogg0100644000014500001440000003274007562713365015507 0ustar noorkusersOggS;Ivorbis+OggSm`eA 0vorbis Xiphophorus libVorbis I 20011231vorbis"BCV@1:-sΑ0:1sA25s5ZcZkАUeAjD0eAd0f ÐAlPj !J 4dc 2!B!RJ)cQr%jZk Y$((20Eq$M5BCV@8XeYeYeYeYeYeYeYeYTEQEBCV((8$Id! EQqG,KDMTOUU5UUUU4MBCV1АU@Cbsb 4ddQV29[eR2hM92-cXK*9gPJ)% YQfbgQgNjsΩJ9ʘrs :4ksJ BCV B!dB!B!RH!АU qɑɑ$I$K,,4M4O<<=EQ4M4M4MUMUUUUUUՕ]]Yeu]a؅ae 4d@dB!B)RJ)c  Ypqɑɑ$K$,,4Q5=3ESTM4E4M4ET]WuUU]U]U]וm[weu]u]BCV:(")#9$I@h*@@8HX&ygi@h*@h戊(yghyyY(*(z* $tqqqGАU qGr,Gs4ɓ c?oN|)!yU|r(ք+ )ow^<=vE`A8`#x.RНkCe?PeI:Hb]pݸe4.q~>ϫjgG5.f'%ޯ~*Xcp@@5|8NOyiSE qF(3LQ8žT?.W wǽ6< N ݽ8.e&mL ·v֫ŚJ$Ij3sRĿ멭My\=Z}_y_޳~vׯ߮>ɺp|b)klzMV03$*<=;UL5Xc\_;Yg\ (⩝_ӗSkŎ'd:V߯JMs}~0TO/D%s;|Z))~53%Gt2.0 α'_]?/-zCz5OÝt̵wVɱ%6nm(JK];8%Q; %it5>93a@@kOUK0K+ Jk[7o/|Y[C€O[CKu hd6mĐ6 ; pJj DD$ } Re۟G^`P $-6Ԕ[/r۶m@@ bpU3_-}W넨ou#yRY7<kyɰ7P-Z]')fS.'4zm /4IɸIK^%K^8^2:;zhc6qc$I?9:L+~9 gj_w;zJ~~<+fd\^Ŝ9/8H_3niI9yd (W'饙%}%f6 - TmgC~<$̭(R@%7?^tx .'rrh0_~;'NuSzzl^u;]EƒE؁y^z/Zk}ݬGOq;_؎=klǨ 廧//>Ͻ_ @m,_Ϧ(MK7S+ (իy/Ҭ (Q"ҩWU]ki Zs!weR u%=귪֛W+>ԇ>If}y'jRp@Ai0ަ>(@Ŀ]2o^wBJHV/.}8iD'Xڋk]Y'k].kw_~?޸MV8Jn4Ew~.~ztTZT[Y ߈y浫t?o:zr€r8<~{ﺴN'0? rs5z]N,}\يqp@@]t6~Wqp:f蹫N4\<a2h]zdP_oWk.]:9c,r€sRw< p ;UwtwÓq pPX c2-JJ}L`Q5$_u͇Οa+5¶xKGۥJl47=VF;ߩ81p@@+mm/ǝ=eK'x`UBV徸_CD0+c6u7@2&,yk*Ο.׮%mz|A|22jndo>yW顂w1"ϥdN0 3EpAxt;.;mFYRuf^kOYt;2fLEː=Mx8/n>Rj]n1gfMk<8cX.sH$I}1[ol{P3[}7e߿ΏNjjq{=)wrDc?CbCj#'@zw.[0kϣ .I Ĉ\^g5' ,]BY\?TӉ?ι 66x9v@9=!>( @/4bh@ ͌w]V{5}||k@s~C^c$8([Wy31pEoq<35/^8Fh85_"I(&ЖʞہI6L%OV~ 6 іP벧dTI/Pcb[_q,.BfsTƏ MkۧOlsro}?e|rɋ; nx)/?O1ܮA8 \߲>k}Zq[^ǁ݁%u/\,*ڍfZJg[6jC/E&e]2nˎ70 Q)}C Ȉ-TW_OثA.pA@jڵQN[v :8g><:X1@8 »kY3885mʯ\S/H=սٵWglێo5>\֐ H[~5εH{QsDG w ӑjgܗEcrGp@\=_T V|֯[4iW߾:sKjhY7O[y,uXbcZGk:T[k5ǭhY wK+ =Q9WqMJ]ݵ׵~ĩ YZy}ʣ*d{vK!ϗd[ €@YۉGW;7*ֻ-_|_G%d|ܦԵYtOhoq%A8 7j2f;Օ^`3=s}BW[€^ПC =+eru|U%&5}&Z A ̩7Z]W3p z9{׮]VU+mpw{OggS`5B103-12 .120.*14111133231-0052115101-.-.4/2631-1-02/452134/0tռcĺ6FyS 4ߏz=ܞ.c#X{Iv<< АJPSBK/Tf/NƲXb'xES1}n7ϻӠsbN"J%I&JF~*wglXpQ3뻩>O3'knbMLӬu˟OH=  m?ONrx'FN9  Jڪ@Xҁ?OREaN)sB E<+%O5nyua㺯yϙ<&N ;Lh:"LNuۃ@@ՍޏW%}>YgcVLW <iZKu`A}bg铥e5ҰdVgq0 PߪQ/%1K\Ƹܪotg0nw\ . FO^fLoxl:U̇.=t|KLjgcsK0=5_E-.)WllHԜhi5=6F{VQ{{^y/Uj}P_r}a}f1re %`56Nj?? LvuŶ%%W{x1@aJ`IYyt8 G/24mؓH'Y,;|| `n]IF,O,*ۺy._MV؞}BUZ;Bݟ8:=:as軵nTX =ĩ>~/PnKav_O_ﯶo\Z5~zp_f>̼b| r~}ykx|Ӭ(R;pF"{Bkက4ݳuPv vP> E~ۗ{q =AdzyDՠ6E3w gN'*cLvpcb2Jm/_4Vhcso?}lEapU l^z0 ~u V,q˿sVȜrwM+&Y+V~f|,,iuɳ<̞>L8$إeʹ}Ah8[M;/ƐYrp+6#qu=^-Kl ~_F2̡-*yB#sI5\\-VKa::V~Oϯ&W SWoܻG3c3(5u31۶$QIMvߋt6/[u|caehҧ꫺0}f Wr\{C =85}or켁 fۿ5qz hǎ[W!Y|$ ht׶ x]%zmRE}Qz:ihoۂW ApR%m?a!=HjyI͟PT 6<\n kɖs$V-_B4 .s_zpzzضကu!Q`4Ar c6ۘLN pЮ%s;g7Ĕk%kxL{ݪ>xA@2wkֿniipݙL:6'2Jkiw}=A@rR~N/5s \zsrwnTʐ޺W\Ye܁a@@g?}ߙ:0/F굺O^"Ұ \kXǶӴCfo6-DhKaUpAkh2{z[+1yob:R+KP fqs/=_|VOkq8Yđ-I$i_\}%]^}t;gYX l>nϗ~͸evw\s5c{jF&!ibQǝ赃% ڝ^{aQC{)Hx>6 А  榺l`uj}.UcIѴ 8:`1,d} Ad/ywVlq^aa@.?H$vzj2c g=@jY8 ]GZernyMёhnė$-ʮ-@Y#-gUmMxLTжf_|G[O .lrĽ?f}2n-Z~E|COׇ.@8 hkyu-&U (w uӿ5je|Ĵ/;^*K`!SGLڶ+w (+ƻoҪVȻՓuFCWya@@seµ{&UEYy w?ì+Fa@{|ϭߑGNm*>մɵ!؞5/%_kqg/oHa IHzݗ5N J-WMh8AxCS7m$ՒNÚӟ)ې-ëMI_#g*(7>ԟ $Syw@PV˷{*0l(U^ 2L09fx~5^xK32k_ VlprLfk^8#[TD$Jc(#V¬ׁͩT1vތ|3˭N?"ܮa/O`~uHs:mS69:`[s{< 9y\b]^;.4"^xKKp~ ssz|{^% 2B-Ugv.aကzjn]]n5nޅ=>zض€ۻ\G#9HNa`i&zv_p瞌=a@kGg- >ӰPwf 9AaCv6k}l-aIf斸ݞaZ%Jmo{QVJU {T+^eoR6)=Pܐa%ÕEpns8PUJ?*.Z{cO&}>=L iV l;=mƕL9LbZnIJIEW$ok@n6g|M2OggSwz(32005444.3410/2312/-2./31-.//041//44%Yzv_ p3*R8?7]7ջ_]ۻ~mzh|X_]uvp@߿UYS^eE@P8A=ѻ=7^È4RKxf繞WWxIsq+HuZkHnF$I.FD9*]~y5Wp/|SVcNjWDllL(g@N.!3q_z.-~`bЄx;<  YXO+8m Nxf`QHm 灵p1 DH݋|oXr9Ъɜ'HC}S߱Ē^_tmk;က5ϒ*YrHy52Zw6\{[1)뇇`zက^hzus .[4[ǿS5VOj;_yO/i^rM'r&ZۼVgGz^$̑$VǕv%Jݕ'TJ:0 51 @aicw{Vn_|^ϑ3m Y\íI]'depƩ;A= 75C#%;[Ks*;\C7=S{Cݞ} =iڙs~#^5Jwo<ZL$]8uwUN*טŨ>0vk'"7t)9md$Y֞lV~qa@K+J˿wu0Bjfy{z}YgLJRيn.PW!WQo:f a Ucw_z`= @ luwo[AfgLQ酻/k\㺘; B9~*\G'kMD?|+~gi%W@8 ~{,5"zU8d!O~\PI ¿NB矏⹾dNwAnk@Pgb_4c'h8F!X0u| :U/b\qGp9Ozf&F*bݗ5XetЀpA@7eo.Vkےl`@^8w.Dc=[kU,]&Q˴p}k|ӥ~k-ժ9}?;j枿Am9b,A@W ?oFn~a9N)ؽ5zFڢY~ȑ%n<gY EnJUgX{7}#!_BJyI=4ݥߚ[f3v/j 9n@8 F/MuW( 0]:''![XlL5~ћ c+:_ם6?yu}< c.I$2e9Ƃn*y]Y˷nՋZ??N}w#vlƼxwb-<=9,WIy!]RƸveoPb@Ʃ~Uj8s>cVve[ 7~GIl4h| :WאA! ^R ރXqnG̱5%lpZa4n5?< =]>>>5g5F>Of狷;?}# mDoD?^u `H;{ 3؟OWI(dK9\ɧL+ҟ:/=_=MXʺb_ aHr^U PyK-R`HrZӡ}hgb  x#̯m{tuxpuck-0.8.2/data/ttfs/0040755000014500001440000000000007562713365014203 5ustar noorkuserstuxpuck-0.8.2/data/ttfs/mono.ttf0100644000014500001440000053011007562713365015667 0ustar noorkusers`GSUBF[OS/2vMVcmapϻ7 cvt !ygaspglyfP$headF$6hhea%0$hmtx[j%T\kern7locaP3NDmaxpf nameZf0kpostcX={4 "Hlatnligainitmedi Tj: 0-OLIM,ILAVAVX1  PxPfEd Zmb ~3TY\akmsu}"(7uz~_   " & 0 7 : < F I K d !!!"!'!+!_!"""""""a"e#%%%%%%%%%& &7&;&l $PV[_emouy!'7tz~    & 0 2 9 < D H K d p !!!"!&!*!S!"""""""`"d#%%%%%%%%%&&0&9&i~{zyxuqpnmjgfC;5 {O}|xa`^[RQPOHGF.# e5tr߲ߌߋ^  ~{utho  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ardeixpkvjsgwl|cnm}byqz!y!n./<2<2/<2<23!%!!!M f!X}~#"/'473632#"'&5476;2{-' +2 H)#)%  .' )!3*$'% )8Z3"/3"/Z!!>TX32+32+#"'&?##"/?#"'&'476;7#"'&'476;7676323767632#3   "     H 2#    !!  !    G  vGH j  ?! j    jS[632#"'&'&#"#"'&=&'#"'&=47632327654/&/4767547632_  %  + .JKAW%*Y"+ +$ 7G ;JD"+ j$  ! * ( )%*C`1S#  !S  =!  )+jO/  P i"2BR2#"'&5476"01327654'&"/4?%6322#"'&5476"327654'&J)8%.F*8%.* &, (j J)8&.E*8%.* '* (i;$.D*8%/D+A&, &. v  v K;$.D*8%/D+A&, &. K&;B%73232+'#"'&547&'476326321&'"'32m5!   = )Ho/` :+3!%)%"/T4RR ! 4 I$1g87)F/"  ! (x4:8lZ3"/Z!gx2#"'&'&5476767"  de   k[ x   'ugUx2"/547674'&5476 k]  "  de  x ' Sn8'&'5'476325476327632"/#"'&547V+ V V ,V4  44t  Y!  Y #GHH *.0'%#"'&=#"'&'476;54763232#^ !  !    "  b_73#"/7ۄ *.I%!"'&'4763!2!  !   wu#"'&5476;25($)% $ (% )S #"'&'476?2  A bY' ' S~&#"'&'54?6323276=4'&#"L4WW4ML4WW4M= F= Fg_Q77P_Q77Pmq*L)7mq*L)S~ 32#!"'&'476;#"/4767^e  "  eW   ~    6~/73632!56767654'&#"1"'&54?632.:0_3#>#  *>^k>,':d6 Xi,W2)  +28H4F:2 5B~?327654'&#"#"'5'47632#"'&547632327674/&'&'47(2 @@# E=Lc91=p?>z0 #U_&941!'6 .":0DB-7`T9/1!  "&2 +# Kn22+"'&'476;5!55;=; "  &n20&2 &SBn6632"#"'&'4763221327654'&/"#"/!2#7,g=/7:t {< $@ 96B " .   sO;TY]=:NU7+C1AO/5 .7 +4 -2j~$7"'&547632#"'&54763232767&/&#"03276<=X9.45c}9'MeU  `C,F J.4. +@H9LX9;fGm a|) S6k?;5w##"'&5476;2#"'&5476;25($)% ($)% $ (% )?$ )$)b_73#"/72#"'&5476ۄ ~9-6,$, /* .*6 "'-632 R    *.#!2#!"'&'476!2#!"'&'476l  "    "      85.%&'4?67632 #"'&/547]R     hV'956?2#"'&=671654'&'"#"'&#"'&5476;2hl?!s:$A"<, 6 72 )#)% O4L/BM16 81"5 !  D$'% )Lhl7A54'&#"3276321#"/&=47632+5"'&5476535G+!3"AI A1?n; /P=Ta5#7/!J0"M0@M, F Od B*9?/5\Z+ -/ 6%!4U8632#"'&'&/&#"32767632#"'&=476323   +6\2"S0BH& 5EsTEXLlED3 T!  G/@@`, $%2XHgBRH  &G&7"'476;2+"'&'476;2?6=4'&+J; sLCFG}! 1koL()-,Mnd2XNp/mJK ,$-H.H53 &GB7!547632!"'&'476;#"'&'4763!#"'&=#3547632#"'&= )"  !   U &  4!    !  2! 'q!   &G?732+"'&'476;#"'&'4763!#"'&=!3547632#"'&=d!  "  !   U       3!  q!  !PUB%"'&'&'4=4?632672#"'&'&'&#"3275#"'&'476;2&fM(O<NNzQ@    TU/5-4_E8d"  ! 6F?g GrSM  N! - /5P@U&,E  &EGN%#32+"'&'476;&'476;2+35#"'&'476;2#32+"'&'476;!  y!  2 e!    e! 0!  y    -   +  SG%32#!"'&'476;#"'&'4763!2#^e B  ee!  .   2   6eG.#"'54763232767561#"'&'4763!2#*A\T E09&w!  !  M/8A"  !`$   ZGH732+"'&'476;#"'&'476;2+7&'4?32#32+&'&'#  "  !  !  #-d! >UD  n=Pl     !+ 2-$ 9 !;G)3547632!"'&'476;#"'&'476;2# ("  99!    \!  !   oH832+"'&'47&'4763332#2+"'&'476;##  ! =3 mn! 0; "  #o[  ..) +2 !PG032+"'&'47#"'&'476;#"'&'476;2###!  ! =!  s#!  =c  . x$  2CU2#"'&'476"327654'&,gR^URptRPUQqQ6,B1@O7-B1UMY}ZV[XZVdG:La>/F9Lc?. G(3732+"'&'476;#"'&'476;2327654'&'c  "  !  s=)21Q9bvR@d   I1CI76 9BoCU5E632327632#"/&#""'&54?&/&547632#"327654'&&." &3,",R>U!,UQqsRRa8T Q5,A2@O7-C1   <1,M[ZVZX}["G9N_?0F9Ld?. kG5@732+"'&'476;#"'&'476;232+&'&/327654'&+#!  "  !  y>%lA= !  O4M"`L\&3!pz   I,=[<8b eN$d-, >UP#"'&/&'&#"#"'"'547672327654'&'&'&'&5476326?2  <D @ n);X:SSI2  ? "P$$QU,C M;QM5  X! ,(  /N^0 'BB! $ (! &J V4'! *.G+32+"'&'476;##"'&=!#"'&=]B    Ak    ]  !  ] NG3#"'&5&'476;2+32765#"'&'476;2T@QQ@T< "  #6!*E&#!  k?11@j1 8!1"  2mG*%#"'&'476;2##"'&/476;2+/  !  c  !  S    bG*#&'476;2+73#"'&'476;2#,[o>- !  0$LhL#5!  ! /)Y! &_^' !\!    2( !" ! IG73547632!5##"'&=! :. dH!  dF!  als32+32#^;      S#"'5&'&547632A    Z }l^s#"'&'476;#"'&'4763;    0?  SE"'5&54?"/+u    d!5dK22}^"/&54?2…  o p *;*7!5#"'&54763254'"#"'&54767232#'5&#"32K[[6#'D-;]3A" RZ,!  t?0F)(R'8#,1,L 0  P& 2 % ;p#3632#"/#"'&'476;#"'&'4763"327654'&?WmDFFDlK@ t  !   F('B$/D)'')p2ACecDA)#  ('4M%('63)(650#"'&'&'&#"3276?632#"/&547632632  )AJ*(B' @BpE=ZDbV: .M!  +(<{   (! @=]{D4!ep#232+5#"'&5476325#"'&'4763"27654'&!  tCCmDFFDnW?!  E(''))'')p #-ADddCA2| ('54)(('47'(!&(%!3276?2"'&'47632%!&'&#"1&h"6X ! #>s)K5TIe}K;k&GU+ X U3S  Q   %\& $#  1% !3P*:532++"'&'476;276=#"'&547632"327654'&t!  H3Dp"  mCBKpE7QAZQOF)9$-F+9$$ ]6& 271P?YoD6d6",D(6"+E( EpD63232+"'&'476;54'5'&#"32+"'&'476;#"'&'4763;Ng0!  p!  ,-$!  p !  p=H(6  (    >o"32#!"'&'476;5#"'&'47637#5^z  "  zN#  v   iiu3o!#"'&'4763!+"'&'476;2765#5"  .G3Er"  oC*wQ 7\6' 2ii!;p77#"'476;#"'&'476;7&5476;2+32+"'47'tA !  tO p!  v!!  vAg2 ? ` 2[>p32#!"'&'476;#"'&'4763^z  "  zN#  p   oC6726322+4'&#"21+4'"2+"'&'475&'4?,)9--;H%9B^5 ^#""; X! <9% #119 *227") 7$$2 -1& ;?67376322+"'4754'1"#"32+"'&'476;5&'4763775 D3;; YB=P60   p  <)04%,W22.D-   0(*.2#"'&5476"327654'&/rL@SIfuLAUJeW.?)6T.>)NAZgE=NAZkD:d: +D'8"+C'3;1C732+"'&'476;#"'&'476;6723232#"'&"327654/&:!  "  !  t>I vG7SC\QF?&(?%1W((&B   -5O=Vg>151 D!8$1#!3e,=5#"'&547632532+32+"'&'4763"327674'&HTwF5SC^P<t!  !  !  \<(+*&??&+A%i8M9PlA5. - F  !:2$ :E!6;16?2#"&#"32#!"'&'476;5#"'&'4763Y24. *#M5!  !  :#"  AC& $;*   IA'&#"#"'#"'&=47632327674'&'&'&547632632#")>?Ef+=O)\! 0!    dN,( /2( +F U73632!5%##"'&=!/N d6 XS  mQgo309"'&=4/&'476?547632\ % %@(015#), !0 %  & 5#+--@)#$ g^n#"'&547632^  ,}  !  go354?&/54/&/47632#"'&14767676 % % @(015#), !0 % & 5#+--@)#$ >'2"/&#"1#"'&5476723276 283J !'5;+-1 #l % <A (" +=#+.}%672##"'&532+"'&547216-' +2 H)% )$r).' !3*=% )$ )SD%#"'&=&'&5476754763272#"'&/&#"327632_ i*J)5 -  AO& 7 (81J cM  QY+4_?" M"  !C *  +6 <"$  ,!&VJ%#36721!"'&'471;6?65'#"'&'476;&547632#"/&#"32:-+( T 0 E!  ,F,;G4"  (0D!  ;9-'N  & $8 3&Z/+ ! # : I@;K'&'476326327672#"/#"'"'&54?&547"327654'&!  01/2 ! "/000!  5+2-   0000"    "001/-3+7CDR7&'476;2+32+32+32+"'&'476;5#"'4;5#"'4;''&5476;2-_( [  Haaa/ B"  .aaaH( \! \ & "# 2 #"  ! g^n$#"'&=47632#"'&=47632^  )  ,  ! *3  !  $V4G?S#"+5432327654/&'&54767&5476;#"'&5'&'"2;6?4'-k\lM &+J, )ijg [*,L  &|[Y~ZWZZYYINBYfF>OAZhF;vS&5D5#"'&54763254#""'1'4763232#'5&#"2?21!"'1&54737!2b75G&/c$:#, 9OAZgE=}"r32#"'&'4 )  r " %}T2#"'&5476"327674'&,S4(C0>P4)A0><"1#<"1T@0@W4&@1@T5'=2%;$1(<"*.p'9#"'&=#"'&'476;54763232#!2#!"'&'476^ "  !    "  Jd  d "    }'3632!567654'&#""/4767632m  #% (8J%!: +8D  !#6%(&}B327654/"#"/47632"#"'&5476323274'&'&'&'4721+(  4#(K#0?)&If 3[(! !  !41 =3"&  4#"/4?632ą   pp o  g;1#"'&5#"'&'476;275#"'&'476;2+5#" !  t*=Y#"  ; _ONP   36 2&1R.G)3:32+"'&'+1##"'476;&'&=476;2#57#67$56]   4 Oz>%QJe66UE,'''  H)3.M4/N5,7 wZ%#"'&5476;25($)% $ (% )!3#"'&'476323274'FJ5/- #5)K;    ~32+"'4;5"/4?N9*++,90~!""!  zS+2#"'&'476"327654'&#"'476;2-T3#@/;S3#?/<1+1*e3 3S@-:J/"=)7M2&N)) &.' &'!;%%'&'4?632#"/47/&'4?2#"/47  O  ٍ        u~'<?32+"'4;5"/4?#"'&547672+"'4;5#5759*++,90   l$%$,O*+O~!""!  L=   ""!7恁u~'Q32+"'4;5"/4?#"'&5476723632!567654'+&#""'&547676329*++,90   m! # % (8J%!~!""!  L=  ! +8D !#6%(&#v};Mbe327654/"#"/47632#"'&54?23274'&'&'&'47%#"'&547672+"'4;5#575V+(  4#(K#0?)&If 3[(!   m$%$,O+,P !  !41 =3"&  4-=   ""!7恁S&8"'&5476?63232754763232+"'&5476k?"s:$A"<, 672 )#)% YO4L/BM16 81"5   $'% )mG03C%#32+"'4763#"'&'476;2+"'&'476;/"/&54?2  A ?!  #    @NO  : 2   6p o mG03G%#32+"'4763#"'&'476;2+"'&'476;/#"/4?632  A ?!  #    @NO    : 2   o p mG03G%#32+"'4763#"'&'476;2+"'&'476;/#"/4?"'  A ?!  #    @NOBq    : 2   a      m03U%#32+"'4763#"'&'476;2+"'&'476;/2#"'&#"##"/4763232?6  A ?!  #    @NO&*!B! ',5 + : 2    $0* !-m03CS%#32+"'4763#"'&'476;2+"'&'476;/2#"'&547632#"'&5476  A ?!  #    @NO'& $ & $ : 2   # $ $# $ $mg03CS%#32+"'4763#"'&'476;2+"'&'476;/2#"'&5476"327654'&  A ?!  #    @NOA@%3!'?%3!') #' %: 2   e5&;%3'<%5#& "(fGKN7#"'&'4763!#"'&=#3672#"/#3547632!"'&5476;5##"'4763755s!   ~/ ) -  ](9_A @d   A5 N ,   {& ::)12!4UX#"'&'476323274/#5&'&'&=476323632#"'&'&'#'&#"32767632QJ2;-#' Q1\ WMlED   +6\2"T/AI& 7 9K9    ]#Dp BRH  T!  G/@@`, $& &GBR7!547632!"'&'476;#"'&'4763!#"'&=#3547632#"'&="/&54?2 )"  !   U &  D  4!    !  2! 'q!  Ep o  &GBV7!547632!"'&'476;#"'&'4763!#"'&=#3547632#"'&=#"/4?632 )"  !   U &      4!    !  2! 'q!   o p  &GBY7!547632!"'&'476;#"'&'4763!#"'&=#3547632#"'&=#"/47371?"' )"  !   U &   q     4!    !  2! 'q!  a       &BRb7!547632!"'&'476;#"'&'4763!#"'&=#3547632#"'&=2#"'&547632#"'&5476 )"  !   U &  \& $ & $ 4!    !  2! 'q!  +# $ $# $ $SG%532#!"'&'476;#"'&'4763!2#"/&54?2^e B  ee!  .     2   Up o SG%932#!"'&'476;#"'&'4763!2##"/4?632^e B  ee!  .       2   o p SG%<32#!"'&'476;#"'&'4763!2##"/47371?"'^e B  ee!  .  q      2    a      S%5E32#!"'&'476;#"'&'4763!2#2#"'&547632#"'&5476^e B  ee!  .  & $ & $  2   ;# $ $# $ $&G$:7#"'&'476;5"'476;2+"'&'4763732?6=4'&+32#J  !; sLCFG} 1doL()-,MnJ B 2XNp/mJK ,$-H.H53 2P0R32+"'&'47#"'&'476;#"'&'476;2###"'&#"#"/476323327576#!  ! =!  s#!  =c&*!B  &-1 ,   . x$  2$0*  .CG/2#"'&'476"327654'&"/&54?2,gR^URptRPUQqQ6,B1@O7-B1  UMY}ZV[XZVdG:La>/F9Lc?.Gp o CG32#"'&'476"327654'&#"/4?632,gR^URptRPUQqQ6,B1@O7-B1;    UMY}ZV[XZVdG:La>/F9Lc?.o p CG62#"'&'476"327654'&'#"/47371?"',gR^URptRPUQqQ6,B1@O7-B1@q     UMY}ZV[XZVdG:La>/F9Lc?.a      CA2#"'&'476"327654'&2#"'&#"##"/4763232?6,gR^URptRPUQqQ6,B1@O7-B1`&*!B! ',5 + UMY}ZV[XZVdG:La>/F9Lc?.. $0* !-C/?2#"'&'476"327654'&2#"'&547632#"'&5476,gR^URptRPUQqQ6,B1@O7-B1& $ & $ UMY}ZV[XZVdG:La>/F9Lc?.-# $ $# $ $dP-%#"'&5476?'&'476327672"/,ggg gggg g gggg gg N~%.77#"'&14?&5476327672#"327654&#"6! 9CURqMH.4=UQqJ%*P6-,,Q6,DIWqZV0: APpZVG9L=)G:L@ NG3C#"'&5&'476;2+32765#"'&'476;2"/&54?2T@QQ@T< "  #6!*E&#!    k?11@j1 8!1"  2Up o  NG3G#"'&5&'476;2+32765#"'&'476;2#"/4?632T@QQ@T< "  #6!*E&#!      k?11@j1 8!1"  2o p  NG3J#"'&5&'476;2+32765#"'&'476;2#"/47371?"'T@QQ@T< "  #6!*E&#!  q     k?11@j1 8!1"  2 a       N3CS#"'&5&'476;2+32765#"'&'476;22#"'&547632#"'&5476T@QQ@T< "  #6!*E&#!  v& $ & $ k?11@j1 8!1"  2;# $ $# $ $CG6J%32+"'&'476;5'"'4?327&'476;2'##"/4?632^A!  !  !A>)Y! &_^' !\!  X      2( !" ! o p  G5?732+"'&'476;#"'&'476;2+32'32?4'&+c  "      cbx4 ##.X=bX8(    (' &45&2 d* * oJ747632#"'&54?2327654'&'&'4729767674'&#"+"'&'4763_F,;[4#qE%1G '   )%I6/ +H*B]!  dzN)A,:/%B|k06!3,8'$,) *>)3 *;*7G!5#"'&54763254'"#"'&54767232#'5&#"32"/&54?2K[[6#'D-;]3A" RZ,!  t?0F)(Rd  '8#,1,L 0  P& 2 % To p *;*7H!5#"'&54763254'"#"'&54767232#'5&#"32#"/4?632K[[6#'D-;]3A" RZ,!  t?0F)(Rq   '8#,1,L 0  P& 2 % p o *;*7K!5#"'&54763254'"#"'&54767232#'5&#"32#"/4?"'K[[6#'D-;]3A" RZ,!  t?0F)(Rq    '8#,1,L 0  P& 2 %  a      *;*7`!5#"'&54763254'"#"'&54767232#'5&#"322#"'&#"#"'='476323327576K[[6#'D-;]3A" RZ,!  t?0F)(R&*"A  ',2, '8#,1,L 0  P& 2 % < %0+!-*;*7GW!5#"'&54763254'"#"'&54767232#'5&#"322#"'&547632#"'&5476K[[6#'D-;]3A" RZ,!  t?0F)(Ry& $ & $ '8#,1,L 0  P& 2 % :# $ $# $ $*;*7GW!5#"'&54763254'"#"'&54767232#'5&#"322#"'&5476"327654'&K[[6#'D-;]3A" RZ,!  t?0F)(R@%3!'?%3!') #' %'8#,1,L 0  P& 2 % 5&;%3'<%5#& "(dAMZ%#2327632#"/#"'#"'&54767676354/""'&5476326325&#"273&'&'"1c*&) 3N2) 3;g..;L<G )I/B24eX; * '"$65K#"'&'476323274#5&'&'47632632#"'&'&'&#"32767632VJ2:. #8L0Y[DbU:    )AK*(B' 57L8    "X ;y|E3 "M!  +(<{   $ !&(8%!3276?2"'&'47632%!&'&#"1"/&54?2&h"6X ! #>s)K5TIe}K;k&GU+ C  X Us)K5TIe}K;k&GU+    X Us)K5TIe}K;k&GU+ q    X Us)K5TIe}K;k&GU+ 1& $ & $ X U.32#!"'&'476;5#"'&'47637"/&54?2^z  "  zN#  #     o p >/32#!"'&'476;5#"'&'47637#"/4?632^z  "  zN#        p o >232#!"'&'476;5#"'&'47637#"/4?"'^z  "  zN#  pq       a      >.>32#!"'&'476;5#"'&'476372#"'&547632#"'&5476^z  "  zN#  & $ & $    # $ $# $ $*.7G#"'&547632&'#"'5'4?/&'476327632"327654'&-EOntMAOF_9: ?J\  2 "AMP/=*5O/>%Gk#'r@GL@WfE=O+2       ) 9#.?&4!)H);:a67376322+"'4754#"32+"'&'476;5&'47637%#"'&#"#"'='4763232?675 D3;; YB=X2%  p  <)Y &*"A! &,1 + 04%,W22.H   0(%0+!.*./2#"'&5476"327654'&"/&54?2/rL@SIfuLAUJeW.?)6T.>)  NAZgE=NAZkD:d: +D'8"+C'Jo p *.02#"'&5476"327654'&#"/4?632/rL@SIfuLAUJeW.?)6T.>)K   NAZgE=NAZkD:d: +D'8"+C'p o *.32#"'&5476"327654'&#"/4?"'/rL@SIfuLAUJeW.?)6T.>)7q    NAZgE=NAZkD:d: +D'8"+C'a      *.H2#"'&5476"327654'&2#"'&#"#"'='476323327576/rL@SIfuLAUJeW.?)6T.>)i&*"A  ',2, NAZgE=NAZkD:d: +D'8"+C'2 %0+!-*./?2#"'&5476"327654'&2#"'&547632#"'&5476/rL@SIfuLAUJeW.?)6T.>)& $ & $ NAZgE=NAZkD:d: +D'8"+C'0# $ $# $ $*.!2!2#!"'&'47621#"'&547621#"'&'476l  "  9,5*9,5*J  ,-( -t, -( -=$-6#"'"/4?&54763276723276547&#"$*4SIfB>8 06RJdH;0 uU.ݾ"T.+AMgE=:2BOgE=1y9!+"j8"+& ;2B2+5#"'&=#/1&5476;32?3675#"'&'4763'"/&54?2; _71F1; " tX2%#"    203%,X H  o p  ;2C2+5#"'&=#/1&5476;32?3675#"'&'47637#"/4?632; _71F1; " tX2%#"  +   203%,X H  p o  ;2F2+5#"'&=#/1&5476;32?3675#"'&'4763'#"/4?"'; _71F1; " tX2%#"  Oq    203%,X H  a       ;2BR2+5#"'&=#/1&5476;32?3675#"'&'4763'2#"'&547632#"'&5476; _71F1; " tX2%#"  & $ & $ 203%,X H  # $ $# $ $3C4E7&'4?32"#7"'4?32#32+"'&'476;#"/4?632/)Z! 7rx>)\! 0!  "  d    N,( /2( +F  p o 3;p.@732+"'&'476;#"'&'476;6?2#"'&"327654/&:!  "  !  t>IvF7SC\QF?&(?%1W((&B  u 5O=Vg>151 D!8$1#3C4DT7&'4?32"#7"'4?32#32+"'&'476;2#"'&547632#"'&5476/)Z! 7rx>)\! 0!  "  d & $ & $ N,( /2( +F  # $ $# $ $m03B%#32+"'4763#"'&'476;2+"'&'476;/32#"'&'4  A ?!  #    @NO( )  : 2    " %*;r*7F!5#"'&54763254'"#"'&54767232#'5&#"3232#"'&'4K[[6#'D-;]3A" RZ,!  t?0F)(R )  '8#,1,L 0  P& 2 %  " %m?03X%#32+"'4763#"'&'476;2+"'&'476;/21013276575?6?2#"'&'476  A ?!  #    @NO; 8D >3>O7(: 2   =52# ?-&8(2 *;*7\!5#"'&54763254'"#"'&54767232#'5&#"3221013276575?6?2#"'&'476K[[6#'D-;]3A" RZ,!  t?0F)(R 8D >3>O7('8#,1,L 0  P& 2 % [52# ?-&8(2 0mGHK2327632#"'&54767#"'&'476;'#32+"'4763#"'&'4763'b" E$  #+)F/ D    A ?!  NOG  '.  78( :: 2 *0D@M%32327632#"'&54767#5#"'&54763254'"#"'&5476725&#"32! 0>$  #+)F/ :K[[6#'D-;]3A" RZ,d?0F)(Rd '/( 78( '8#,1,L 0  P&2 % !4G8L632#"'&'&/&#"32767632#"'&=4763237#"/4?632   +6\2"S0BH& 5EsTEXLlED     3 T!  G/@@`, $%2XHgBRH o p 650A#"'&'&'&#"3276?632#"/&547632632'#"/4?632  )AJ*(B' @BpE=ZDbV: .V   M!  +(<{   (! @=]{D4p o !46&& ~65&F !4&&Y65U&F !438L632#"'&'&/&#"32767632#"'&=476323'7632'&'47632   +6\2"S0BH& 5EsTEXLlEDp    3 T!  G/@@`, $%2XHgBRH a     650E#"'&'&'&#"3276?632#"/&547632632'7632'&'47632  )AJ*(B' @BpE=ZDbV: .p   M!  +(<{   (! @=]{D4t`   &)&97"'476;2+"'&'476;2?6=4'&+?632'&'4?2J; sLCFG}! 1koL()-,MnHp    d2XNp/mJK ,$-H.H53a     !}0?7632#'32+5#"'&5476325#"'&'476;"27654'&L  R!  tCCmDFFDnW?!  tE(''))'')t } #-ADddCA2| ('54)(('47'(&G$:7#"'&'476;5"'476;2+"'&'4763732?6=4'&+32#J  !; sLCFG} 1doL()-,MnJ B 2XNp/mJK ,$-H.H53 2!ep+>32+32+5#"'&5476325#"'&'476;"327674/&'& B!  tDPF1SE`PF!  tO+H!,b$> ) 2 (T:SoG;.y <$/N@!M) &BQ7!547632!"'&'476;#"'&'4763!#"'&=#3547632#"'&=32#"'&'4 )"  !   U &  e )  4!    !  2! 'q!   " %!&r(7%!3276?2"'&'47632%!&'&#"132#"'&'4&h"6X ! #>s)K5TIe}K;k&GU+  )  X Us)K5TIe}K;k&GU+ & $ X U+U=VkD;S@\1<5 &)BV7!547632!"'&'476;#"'&'4763!#"'&=#3547632#"'&=7632'&'47632 )"  !   U &  p    4!    !  2! 'q!  a     !&(=%!3276?2"'&'47632%!&'&#"17632'&'47632&h"6X ! #>s)K5TIe}K;k&GU+ p   X U3>O7(6F?g GrSM  N! - /5P@U&,E  &52# ?-&8(2 !3P*:_532++"'&'476;276=#"'&547632"327654'&21013276575?6?2#"'&'476t!  H3Dp"  mCBKpE7QAZQOF)9$-F+9$ 8D >3>O7($ ]6& 271P?YoD6d6",D(6"+E(P52# ?-&8(2 !P&* Y!3PU&J !PUBS%"'&'&'4=4?632672#"'&'&'&#"3275#"'&'476;2#"/4?632&fM(O<NNzQ@    TU/5-4_E8d"  ! R  R 6F?g GrSM  N! - /5P@U&,E  &~ ~ !3P*:L532++"'&'476;276=#"'&547632"327654'&#"'5'4?632t!  H3Dp"  mCBKpE7QAZQOF)9$-F+9$=R  R $ ]6& 271P?YoD6d6",D(6"+E(/~ ~ E6&+ ~ E_&K EGN%#32+"'&'476;&'476;2+35#"'&'476;2#32+"'&'476;!  y!  2 e!    e! 0!  y    -   +   EpM32+63232+"'&'476;54'5'&#"32+"'&'476;#"'&'476O  !p;Ng0!  p!  ,-$!  p !  p =H(6  (    S&,d>b&S%432#!"'&'476;#"'&'4763!2#32#"'&'4^e B  ee!  .   )   2    " %>r-32#!"'&'476;5#"'&'4763732#"'&'4^z  "  zN#   )      " %S'&, x>& S0G>32327632#"'&54?#"'&'476;#"'&'4763!2#^e H$  #+)F.!  ee!  .    */  78'   >0o7;32327632#"'&54767!"'&'476;5#"'&'47637#5^z  )#$  #+)F/ "  zN#  v '  78(  iiS%532#!"'&'476;#"'&'4763!2#2#"'&5476^e B  ee!  .  & $  2   ;# $ $>32#!"'&'476;5#"'&'4763^z  "  zN#     SG%32#!"'&'476;#"'&'4763!2#^e B  ee!  .   2   u3o!#"'&'4763!+"'&'476;2765#5"  .G3Er"  oC*wQ 7\6' 2ii6e6&- w~u31#"'&'4763!+"'&'476;2765#"/4?"'"  .G3Er"  oCUq    Q 7\6' 2a       ZGHY732+"'&'476;#"'&'476;2+7&'4?32#32+&'&'#"/4?632#  "  !  !  #-d! >UD  n=PTR  R l     !+ 2-$ 9 ~ ~ !;p7H7#"'476;#"'&'476;7&5476;2+32+"'47'#"/4?632tA !  tO p!  v!!  vAgiR  R 2 ? ` 2[~ ~ 4$63#"'476;5#"'&'476;7&5476;2+32+"'47'tA !  tP p!   !  !vAN2 ? n 2M!;G)=3547632!"'&'476;#"'&'476;2##"/4?632 ("  99!    ;    \!  !   o p >H/32#!"'&'476;#"'&'4763%#"/4?632^z  "  zN#     p   p o !;G):3547632!"'&'476;#"'&'476;2##"/4?632 ("  99!    R  R \!  !   ~ ~ >p/32#!"'&'476;#"'&'4763#"/4?632^z  "  zN#  R  R p   ~ ~ !;V)<3547632!"'&'476;#"'&'476;2#7#"'5&54?632 ("  99!    R  R \!  !   0~~ >}.32#!"'&'476;#"'&'4763#"/4?632^z  "  zN#  YR  R p   6} } !;G&/yN >(p&Oy ;G@76323547632!"'476;5#"'&5476?5#"'&'476;2#X  (A 96 h9!    |4  Q["  2g  <  >p7763232#!"'&'476;5#"'&54?5#"'&'4763^#!Uz  "  z" SK#  !p 1   / PG0D32+"'&'47#"'&'476;#"'&'476;2###"/4?632#!  ! =!  s#!  =c      . x$  2o p ;?P67376322+"'4754'1"#"32+"'&'476;5&'47637%#"/4?63275 D3;; YB=P60   p  <)_   04%,W22.D-   0(p o PG0A32+"'&'47#"'&'476;#"'&'476;2###"/4?632#!  ! =!  s#!  =c^R  R   . x$  2~~ ~ ;?P67376322+"'4754'1"#"32+"'&'476;5&'47637#"/4?63275 D3;; YB=P60   p  <)R  R 04%,W22.D-   0(~ ~ P)0D32+"'&'47#"'&'476;#"'&'476;2##7632'&'47632#!  ! =!  s#!  =cp      . x$  2a     ;?T67376322+"'4754'1"#"32+"'&'476;5&'4763?632'&'4763275 D3;; YB=P60   p  <)p   04%,W22.D-   0(`  ;?67376322+"'4754'1"#"32+"'&'476;5&'4763775 D3;; YB=P60   p  <)04%,W22.D-   0(5PGC%32+"'&'47#"'&'476;#"'&'476;2##"/4767232765#!  ! =!  s#!  =C.>h 3  . x$  2_7'1/5G#"/47632327654'1"#"32+"'&'476;5&'4763736737632C.>h 3P60   p  <)^75 D3;_7'1/$D-   0(04%,C.2#"'&'476"327654'&32#"'&'4,gR^URptRPUQqQ6,B1@O7-B1 )  UMY}ZV[XZVdG:La>/F9Lc?. " %*.r.2#"'&5476"327654'&32#"'&'4/rL@SIfuLAUJeW.?)6T.>) )  NAZgE=NAZkD:d: +D'8"+C' " %C'&2 x*.&R CF0A2#"'&'476"327654'&"/4?632"/4?632,gR^URptRPUQqQ6,B1@O7-B1!f  f  f  f  UMY}ZV[XZVdG:La>/F9Lc?. m  nm  n*.4I2#"'&5476"327654'&#"/471?632#"/471?632/rL@SIfuLAUJeW.?)6T.>)f f f  f  NAZgE=NAZkD:d: +D'8"+C'n nn ndG3@%3547632!"'&54763!#"'&=#3632#"'&'5n  PD]LnN . 'wG(74(!  z^PvSD!  A7 N *(P(P: e(8A%#327137632"'#"'&547632632%"327654'&3&'&'"d@1 2IS46NR6.C2@M85PD57H))+* #%W JJM@WsG4PP==p6#,J'6"+N&\&+ kG5@T732+"'&'476;#"'&'476;232+&'&/327654'&+#"/4?632#!  "  !  y>%lA= !  O4M"`L\&3!p    z   I,=[<8b eN$d-, o p 6;1B6?2#"&#"32#!"'&'476;5#"'&'4763%#"/4?632Y24. *#M5!  !  :#"  5   AC& $;*   p o  kG5@Q732+"'&'476;#"'&'476;232+&'&/327654'&+#"/4?632#!  "  !  y>%lA= !  O4M"`L\&3!pR  R z   I,=[<8b eN$d-, ~ ~ 6;1B6?2#"&#"32#!"'&'476;5#"'&'4763#"/4?632Y24. *#M5!  !  :#"  R  R AC& $;*   ~ ~  kG5@T732+"'&'476;#"'&'476;232+&'&/327654'&+?632'&'47632#!  "  !  y>%lA= !  O4M"`L\&3!pkp    z   I,=[<8b eN$d-, a     6;1F6?2#"&#"32#!"'&'476;5#"'&'4763?632'&'47632Y24. *#M5!  !  :#"  p   AC& $;*   `  >GPd#"'&/&'&#"#"'"'547672327654'&'&'&'&5476326?2'#"/4?632  <D @ n);X:SSI2  ? "P$$QU,C M;QM5  A    X! ,(  /N^0 'BB! $ (! &J V4'! o p IAR'&#"#"'#"'&=47632327674'&'&'&547632632#"#"/4?632)>?Ef+=O6&6 ~I&V >Um#"'&'476323274'#5&'"'5476721327654'&'&'&'&5476326?2#"'&/&'&#"LJ5-.#* 581  ?"Q%$OU,C L;QN5    <D C m+;_/ K;   [BB! % (! &J V3(! !X! ,(  /Nc/IZ#"'&'476323274'#5&'#"'&=47632327674'&'&'&547632672#"/&#"LJ5/-#* @* ' -QM"F M6KH8 .  )>?Ei(@V.K;   X  !" ,'  GG'B%!   %LJ(>3Pd#"'&/&'&#"#"'"'547672327654'&'&'&'&5476326?2'7632'&'47632  <D @ n);X:SSI2  ? "P$$QU,C M;QM5  p    X! ,(  /N^0 'BB! $ (! &J V4'! a     IAV'&#"#"'#"'&=47632327674'&'&'&547632632#"7632'&'47632)>?Ef+=O)Y! &_^' !\!  & $ & $  2( !" ! ;# $ $# $ $IG/73547632!5##"'&=!#"/4?632 :. 4    dH!  dF!  ao p U)73632!5%##"'&=!#"/4?632/N 6   d6 XS  mQ p o I+73547632!5##"'&=!2#"'&5476 :. & $ dH!  dF!  a8# $ $U(73632!5%##"'&=!2#"'&5476/N & $ d6 XS  mQ*# $ $I)/73547632!5##"'&=!'7632'&'47632 :. p    dH!  dF!  aa     U-73632!5%##"'&=!'7632'&'47632/N p   d6 XS  mQ`  K;o/%32#!"'&'476;5#"'&'476;547632'&#"+!  !  :/"  !.X,=P9)>3Sd   %\& $#  1;p<"327654'&32+632#"/#"'&'476;#"'&'476CF('B$/D)'')!  c?WmDFFDlK@ t  !  _('4M%('63)( {2ACecDA)#  ;G @327674'&+3254/&+'#"'&'&'476;2#!"'&'476;qT<f(%>d- 1eh8$<iP1D"  V-/ 6% "&:XB*9?/5\Z+ CG;p<"327654'&!2#!632#"/#"'&'476;#"'&'476CF('B$/D)'')!  ?WmDFFDlK@ t  !  _('4M%('63)( {2ACecDA)#  !4U&UG!F6703632'&'&#"#"'&'&/&#"32767632#"'&=4763231:&  +6\2"S0BH& 5EsTEXLlED2I2-e!  G/@@`, $%2XHgBRH 6">67632'&'&#"#"'&'&'&#"3276?632#"/&5476320:&  )AJ*(B' @BpE=ZDbLH2-^!  +(<{   (! @=]{D4&G&G 3732?6=4'&+'32+"'&'4763#"'&'&'476oL()-,MnusLCFG}! 1- 1Wd$-H.H53dXNp/mJK , "&:LCGGX@!ep2"27654'&7!"'&'4763!32+5#"'&547632E(''))'')P!  !  tCCmDFFDnW?_('54)(('47'(  #-ADddCA2*4.\X &G(3G>U[2+"##13276767632#"/#"'&54?&/476326?2#"'&/&'&#"n  ;<%#8"*K+ 3IS>$;. M;QN4    <D U "( $ !BB'J*:N/ HV4'! !X! ,( &G?7#"/4763232765#"'&'4763!#"'&=!3547632#"'&=C.>h 3!   U  _7'1/   3!  q!  9$~?32+#"/476323276=#"'&'476;5476320#"'&#"b9"  9C.>h 39"  !9A/>d )  _7'1/ 7V5(.#  (!N67632'&'&#"#"'&'&'&#"3275#"'&'476;2"'&'&'4=4?632 5:&   TU/5-4_E8d"  ! *fM(O<NNzJ:I 2-N! - /5P@U&,E  & 6F?g GrSMepI275#"/476;#"'&'&=4/&'"32+"'&'476;#"'&'476;632>9)  t#0??0.$'!  p !  t/r# }FH"Q%%%#I s*#   ]i#G!303327632"'&5#"'&'4763^,L.V3&N#  Gf< 0 F2E6 SG;5#"'&'4763!2+32+32#!"'&'476;5#"'&'4763e!  .  ee!  ee B  ee!  N    2  !;~A747632#"'&#"7&5476;2+32+"'47'#"'4763sA/>d ) O p!  v!!  vAgtA dgV5(.#  (? ` 2[2>p45#"'&'476;32+32#!"'&'476;5#"'&'4763N#  e!  ez  "  ze!  N     Cq<#"/&'4?'#"'&'476;27632+"'47'+"'47U Xd a<R S2 !\B@xr: !Z=1- . 3* ,- 2/0 2+oGE!5"'#"'&'"'4;32767"'5'476;2767"'476;2+#,)9--;H%9B^ 5 ^#""; X! <9%#119+m227" _)7$$_2 -1& PG3#"/4763232765#"'&'476;#"'&'476;2##C.>h 3!  s#!  =c_7'1/ x$  23;?67376322+"'474'1"#"32+"'&'476;5&'4763775 D3;; YB=P60   p  <)04%,W}22.D-   0(CU!2#"'&'476&'&#"!3276,gR^URptRPUQ!F*1Q6 [F$(Q6UMY}ZV[XZV\/G*7dU'H Y2"327654'&#"'&'476323254'&76?6,Q6,B1@O7-B1.URptRPUQqPD- 1G:La>/F9Lc?.#Hg}ZV[XZV/ ! &:E*[1"327654'&#"'&5476323254'&76?6.W.?)6T.>)SIfuLAUJfSB- 1^: +D'8"+C'!.6gE=NAZkD:, ! &:DtF3276=4'&#"763232+"'&'476;4#"#"'&'54?632g= F= F@IT   p  ".L4WW4ML4W:EDq*L)7Dq*L)8^!+  fFKk6Q77P6Q7C6767&'#&7''&7&7627632;2+"'&'476;4'1+"tM dC6KD`oF9KEa71,ZJ&  p  )^e] QV!BSgE>QBXhD?88)  G =327654'&'+"'&'&'476;2#32+"'&'476;vR@ - 1Ws=)21Q9bc  "  9B "&:MI1CI76 d  3;~M7327654/&#"'6723232#"'&'32+"'&'476;47632#"'&#"?%1W((&>?&(>I vG7SC\QF:!  "  A/>d ) D!8$1#15O=Vg>15  4V5(.#  (>UG6X@IGVX@IG'5!#"'&=#3547632!5 ᖗ :%a  "FH!  d 5OI%#"'&=#"'&'476;547632321+327632#"/4767232765E={,#!  #  h 3G& X!  X "  \_7'1/.G3"#"'&'4763!#"'&=#32+"'&'476;,  1X mB    A ! &:N!  ]   ~D547632#"'&#"321+327632"'&=#"'&'4763rA/>d )  ) ! &:G F lN,( /2(IG1%3547632!57#"'&'476;7##"'&=!32#2i :j"!  qu w!  !  |d !  za U,%3632!57&'&5476;7##"'&=!#+7/NJ  LU i  66 XSHS  mQf,3G86#"'&'&7676327654'1&+"/547637##"'&=!Y5$r>Iy_@5,n < ~!  u NH1?x6K?G! !  za,3GGp_@6 V>+3632!57#"'&'476;674'#&'"1"'&54?632 ,.*9!  %2(>#  *>^k>,G `6 Xi !)0 )  +28H4F0g^n_gn##"'&547632#"'&547632    ,}  !  }  !  }~38o)GK3547632!"'&'476;#"'&'476;2##"'&'476;+"'&'476;2765#5g "  !    f"  G3Er"  oC*w\!  !    7\6' 2ii3(p!@#"'&'476;+"'&'476;2765#5'32+"'&'476;#"'&'4763f"  G3Er"  oC*wy>  "  >.#  Q 7\6' 2ii   mD&$ *;&D SD&, >& CD&2 *.&R  ND&8 ;&X N&q$ ;&q N&v V ;~&v N & U ;}& N&CV ;~&C!&HGm&q$*;&qmm&$&gq*;&D&qhf&qJ[d:&q!P0&* x!3P&J Z&&. n;_&N p)CU&2*'.&R)C&2&q[*'.:&R&q,3&&p nu36& Z!PE&*v!3P&Jv8G<%27=#"/476;+=##"'&'476;&'476;3=32"1+|W)  t;0G|Gj!  2 VGV! 0dHbP"eW-%dd -dd +PE&1C;&QCmW&v*;&vfE&vVd&v" NS&v =&vmC&$"*;&D"m=&$G 4@*;&DG @ &C&("!&&H" &=&(G 4@!&&HG @CC&,">&"S=&,G 4@>&G @CC&2"*.&R"C=&2G 4@*.&RG @ kC&5"6;&U" k=&5G 4@6;&UG @ NC&8" ;&X" N=&8G 4@ ;&XG @>UPa#"'&/&'&#"#"'"'547672327654'&'&'&'&5476326?2#"/4?632  <D @ n);X:SSI2  ? "P$$QU,C M;QM5  R  R X! ,(  /N^0 'BB! $ (! &J V4'! N~ ~ IAR'&#"#"'#"'&=47632327674'&'&'&547632632#"#"/4?632)>?Ef+=Oh 3dF!  a~H!  _7'1/U5,%#"/476323276=!5%##"'&=!3632C.>h 3 / f_7'1/S  mQ6m&$g*;b&D #&G&(z!&&HzC&q$*.&qC&q.%*.&q.C&2g*.b&RCm&2&gq*.&R&qhC&<q[2C:&\q*;De!e1"327654'&732+5#"'&54763247632E('''4E)'')!  tCCmDFFDnW? _('57&$('47'(2 #-ADddCA2!  !e;~="327654'&47632#"'&#"632#"/#"'&'4763CF('B$/D)'')A/>d ) ?WmDFFDlK@ t  _('4M%('63)(gV5(.#  (72ACecDA)# 65GFk@!5p>"327654'&3327632"'&=#"'&5476325#"'&'4763E('''4E)''),L.V3&CCmDFFDnW?!  _('57&$('47'(< 0 F2E1-ADddCA2| !~="27654'&75476320#"'&#"32+5#"'&547632E(''))'')PA/>d ) !  tCCmDFFDnW_('54)(('47'(2:V5(.#  ( #-ADddCA!&GHG@!&HGIGX@Iu343!#"'&'476;5#"'&'4763!32++"'&'476;2765!  "  . !   G3Er"  oC   \6' 2!3~E"327654'&75476320#"'&#"+"'&'476;276=#"'&547632F)9$-F+9$]A/>d ) H3Dp"  mCBKpE7QAZQ_6",D(6"+E(2:V5(.#  ($]6& 271P?YoD6!3 +;354'&'"3+"'&'476;276=#"'&547632"327654'&d dH3Dp"  mCBKpE7QAZQd ) ;Ng0!  p!  ,-$!  p dgV5(.#  (C=H(6  (    EpK>o8#5#"'&'476;5#"'&'476;32+32#!"'&'476;Pv O!  ON#  O!  Oz  "  zoii+ S  6  i#!303327632"'&=#"'&'4763^,L.V3&N#  < 0 F2E n%32+"'&'476;5#"'&'476;2#^J B  JJ!   Q 2   >pF5#"'&'476;327672"'32#!"'&'476;5&#"1#"'&547672N#   # 28z  "  z !'5;{ . % <W  (" +=i5#p!303327632"'&5#"'&'4763^,L.V3&N#  p< 0 F2E oP\3oC5"'#"'&'5"'4;327675"'5'476;27675"'476;2"9,)9--;H%9B^ 5 ^#""; X! <9%#119+22" )$$2 -F1& 53Q#"/47672327654'&#"21+4'"2+"'&'475&'4?36726323C.>h 35 ^#""; X! <9% ],)9--;H%?_7'1/E") 7$$2 -1& #119 5;?&'47637367376322+"'4754'1"#"#"/476323276_<)^75 D3;; YB=P60 C.>h 3_0(04%,W22.D- _7'1/5H3327632"'&54'1"#"32+"'&'476;5&'4763736737632,L.V3&P60   p  <)^75 D3;< 0 F2E$D-   0(04%,*.86;Uq6;q65>303327632"'&="'&547632327575#"'&'4763!2#,L.V3&Y24. #M5!  )!  Q< 0 F2EOC& ;*  63;16?2#"&#"32#!"'&'476;#"'&'4763Y24. *#M5!  !  :#"  AC& $;*   M5;4%303327632"'&5#"'&'476;6?2#"&#",L.V3&#"  Y24. *#M< 0 F2E_ AC& $;I5O7327632"'&=47632327674'&'&'&547632632#"/&#"#",L.V3& & +RM"E M6KH9 . )>?Ef+=Od ) C.>h 3BV5(.#  (z_7'1/3P~I!#"'&'476;5#"'&'476;5476320#"'&#"32++"'&'476;2765*!  "  A/>d ) !   G3Er"  oC  V5(.#  ( \6' 29$~G]@ OW? 2O5327632"'&5#"'&'476;54763232#/F9Lc?.KK!#"/547635#2+"/547635&'476;2#35"'&5476;2"1+2d!  !  d!  2 V!  !  V! 0!  ! NN ! ! - ! ;; !  + ! !;pN\pB)3547632!"'&'476;5#"'&'476;2# i"  !   Q!  !   !3~H"327674'&75476320#"'&#"32+"'&'476;5#"'&547632<(+*&??&+A%fA/>d ) !  !  :HTwF5SC^P<^!:2$ :E!*CV5(.#  (  8M9PlA5.hV>7#"'476;5671654'&'"#"'&=6?232+"'&'476;SA S 6 72 l?!s:$A"<!  !  2 01"5 !  O4L/BM1  hVGm@}#"/4?"'-q    _a      }7632'&'47632-p   J`  32'&/&737"74?6##F F F F   K  32'&/&737F F   }$21013276575?6?2#"'&'476 8D >3>O7(52# ?-&8(2 h2#"'&5476,& $ # $ $2#"'&5476"327654'&,@%3!'?%3!') #' %5&;%3'<%5#& "(0!3327632#"'&547IbZ %  #+)F;<(  7>+s (2#"'&#"#"'='476323327576&*"A ',2,  %0+!-})#"/471?632#"/471?632#f f f  f  nn nn n}^Cv}#"/4?"'-q    _a      s }"rq7"!r!2!"'&'4l )  r " %} hj+21#"/54?674'&#"#"'476,>%*& #) 50%9! - & #@#}} T1"'1'5471721T    !1"'1'5471721"'1'54?21        }&'4?2"'%&54?2"'5 f  f n n  n n  }$421013276575?6?2#"'&'47672#"'&5476 8D >3>O7(& $ 52# ?-&8(2 ;# $ $}G @3254'&76?6'#- 1I#%H ! &:G 55^G'X@5#;303327632"'&5d,L.V3&< 0 F2Ez0%632#"'&'4  <  K_ok_ 5;303327632"'&5d,L.V3&< 0 F2Eb_T & jmU&$ ywZy&U&( yEU&+ yU&, yCU&2 yCU&< y;U&Q yi#&& jmG$ ;G% 8G MG)"'4763#"'&'476;2%3 BA {?!  ا#  t2  d^ &G(IG=EG+CUG2#"'&'476"327654'&#"'&=##"'&=476323547632,gR^URptRPUQqQ6,B1@O7-B1J  s s  UMY}ZV[XZVdG:La>/F9Lc?.       SG, ZG.mG/732+"'4763#"'&'476;2+"'&'476;  A ?!  #    d 2   ^oH0PG1#5G>T%547632!547632%#"'&=##"'&=4763235476327!#"/=!#"/5 !  ! /  m    m   !  ! dC!  !  C      tC! ! CU2EG8#32+"'&'476;&'4763!2#32+"'&'476;!  y!  2 ! 0!  y    - +   G3IGe*.G7CG<TG NG;hGM#32+"'&'476;5"'&=#"'476;35#"'&'476;2+276=;2#&F:H B  R=9< M) !  f  3M ={`B7+ 2 +E?U{2 +   - 2;G=7&'&5476;23547632#5327654'&+";#5476323U%JAa0{D-C*3 ! 5&[00!% ! 3v%].2mF2E7&'4?32"#7"'4?32#32+"/&5476;/)Z! 7rx>)\! 0 !  {   T,( /2( +f *.~>"327654'&7&'&#"1;2#"'&547&'47632632#"'.W.?)6T.>)^x%N f!rL@SIfuLAM:b*0<. ^: +D'8"+C'! %NAZgE=NAZeC&E_$!B%! IGX@\2p8+"/&5476;654/"'&54?##"'&=!32  p  54\ n(&n&i"1W)6|N  mQ]_"F;3;;4'1"#"32+"'&'476;5&'47637367376322#P60   p  <)^75 D3;; D-   0(04%,W}2So&#"'&'54?6323&'&#"#3276L4WW4ML4WW4M>G=FXPQ77PPQ77Pr)N(o)L(i#4$Cq*+'&'47'+'&'47'#"'&'476;2&22 !\*@xr: !Z*1.d a< X- ,/0 ,+NZ 3  2;C732+"'&'&'476;#"/476;32?3675#"/&'476;2+5#"!  p  )  tX2%#  ; _71)j "H 203XYu  }c+/&547676;767'&'&'&5476?3&'&54767##"/5!'32#"#2  }   \\2189$2 8Q  G ' ,. /DH    ! + nO@?-:& mT     ^ @  *.R.*2."2732+"/&5476347632#"'327654'&#"!    UJfrL@SIfYE?)6T.>)5W. BkD:NAZgE=D'8"+C': qq#/4/&/&#"+"'#"'&'&=4?23276?654'&/&'&'&'&'&'&54767676;2?2   7D;-B51     ,!"   + J6  ;         %F!$  H         *Z'"327654'&3#"'&5476;2#.W.?)6T.>)-SIfuLAUJf!  ^: +D'8"+C'=HgE=NAZkD:! F*303327632"'&=#"/54763!2#N,L.V3&r!  \!  Q< 0 F2E! !  K/#"'&'476;2+#"'&=#"/476;32765!  !  z'2+)  t.,#Q  % c#."673\ >#";27654'&+'54763232+#"'&=#"'&54763 _b d c1+ d !  A%Z'2!  !  ?"X?]QSl SD!d! `7Ku: !  ^3Ew?,3JL32#"'&/2+"'&'476;7'&'&+"/5476;27"'&'476;2#q%!  R!XQ  !  ` !  Z5GR  !  Q  ! |  ߰!! Z}  2n~?33347632276=32++#"'&=#"'&=#"'&'476,t4  ! = t  !L.> ! ]5&!  M! * m5 !  G3H A#53#"'&/#"'&'&'&547673"'&'&547676;2+32?6=?6763232?67654'&'#"'&57676;28  !"#!    m  &       &  n ))+*H<<  >?E+*(*   $'&&1((    )(0)"#( a#b&j Kb&mj*.&R  K&m A&q R r*3274'&#"327654/32#"'&547676#sj3T$"VJE&vM8G;H=g[<4&)p0 ,wW2%Od[M4-FG^#"'&'&'&52"/&5?6?323276767654'&'&'&#"3732##"'&/476767632??[4//      &B N  &M++-,5\A<-hh4'  # # & 1.6=*''"0*)   5,#,*fl6B ;%54+3276#"'&'&'5#"'&54?3;3201"+#"'&5N#E,9. }D*)<(6  ! tB 3D*^"))5W. M.  ! H&2kD:NAZgE=D'8"+C': &7&(C, &&(jYEFFL%56;#'6?6='&'&#"53132?6=!327565131#3;276=&'#&'E H"G {9**{=-@V >* !f  c&" d2/M#2&  !bf   (   87):732+"'&'476;#"'&'4763!#"'&=!#"/4?632d!  #  !!  !   d       3 p o "6U@7327674'&+676323276=4'&#"'&'"327674'&#"#"'&"  ! H(25-"  O?zOG^RvsE5  (Fw4 Z*  !T! !YOrBzLA2&#J#>U6SG,S&,jYS&,jYGJZ2+"'&'&'54?3#"/&=4762112765&'5476;23327676=4/1&+k5  '-$:MNp'.4" 2 ! 0@#* *A'%n +  X* .} $ |Hfv12+"'&'5476;5323+"'&'5476;&'5476;23+75#"'#&'5476;23#1327676=4/1&+k5  '-$!)  !  x"  3 d!    f! +@#* *A'      ,   ( $ ^GR632+"'&'5476;5&'#"323+"'#&'547317#1#"'&=!#"'&51-={*/ f" H E  f! +> &2#( "&  (   fb!  R7GX732+"'&'476;#"'&'476;2+7&'4?32#32+&'&##"/4?632$ #  !!  !"  $,d! >TC !  n*R:2̅   d      !+ 2-'  V=p o C7Qa32+"'&'476;&'476;2+75#"'&'476;2"1+32+"'&'476;"/&54?2!  y!  2 e!    e! 0!  y    F)  - *  +  o p D'1V%+"'&'4?&'47637327&'476;2##21013276575?6?2#"'&'47623 n*D5&\!  ^^$ #Z / 8D >3>O7(d/  )t /&   +D52# ?-&8(2 CGN!'&'6'#/#&'5473#"'#&'5476;2+3#"'#&'5476;2+\ '2)0!  y  !  y!  2 %-;+    *mG$CG)02#!"'&'476;#"'&'4763!#"'&=!32'&+}+"  !   ggV_ '    3IE ;G% 8G)732+"'&'476;#"'&'4763!#"'&=!d!  #  !!  !d       3sWG-3%3#"'&=!#"'&=32765&'4763!2"1+3#h v f2 6! 0d  KK  ':- +, &G(oGd2#7&'4?3232+&'&#2+"'&'47635"#"'&'476;6767'"'476;5"'&'4763\ %v-6! 8sU   XK" "a" "WX  Rs7 !6,v% G !+ 1- .  /: 72 ,! >U`327317131767654'&'&#"#"'&=47632632#"'"'547672327654'&'&+"'&'476*<2L    4No?+- ;X:SSI2  ? "P$$";  U )+  !X! !E.>N$ /N^0 'BB! $ (! CGQ32+"'&'476;&'476;2+75#"'&'476;2"1+32+"'&'476;!  y!  2 e!    e! 0!  y  F)  - *  +  C'Qv32+"'&'476;&'476;2+75#"'&'476;2"1+32+"'&'476;21013276575?6?2#"'&'476!  y!  2 e!    e! 0!  y   8D >3>O7(F)  - *  +  52# ?-&8(2 RGG732+"'&'476;#"'&'476;2+7&'4?32#32+&'&#$ #  !!  !"  $,d! >TC !  n*R:2d      !+ 2-'  V= KG=7&'4763!2#32+"'&'476;#"'&'54763232762 ! 0!  y  mp'L)% X- +  n6 ,  !oH0EG+CU2CG;#32+"'&'476;&'4763!2"1+32+"'&'476;!  y!  2 ! 0!  y    - +   G3!4U&*.G7DG1%+"'&'4?&'47637327&'476;2##23 n*D5&\!  ^^$ #Z /d/  )t /&   +TGDO27674'1'2#32#!"'&'476;5"'&'47635#"'&'4763!2+"223^Ya1w4)!)"'&'4723#"'&'476;2+3#"'&'476;2+3#"'&5n 0  y  ! y  !f +     &2GG%#"'&/5&'476;2+3275#"'&'476;2"932+"'&'476;-={*/ f" H E  f! +"  z  &2#. "&  (   nGJ"#27654'&+"33!27674'"#27654'&+"3#2?654'&#    J+  (J   G    .+   spGM%27654'&+"3#2?654'&+"#27654'&+"33!3276=6J  } @ }  J+  d      .K  _G.:!2+32+"'&'476;##"'&5327654'1&+M Lk5  2Q!)   "f .`Q>`G d* 6Jb6  ]  9@mG!IT2+"'&'4763"'&'476;232+"'&'4763"'&'476;2+327654'&+1 BY! ! Y! E l5 2Q9P! (' # 4U?4 2   d) 6Jb5&     ;@ G(55327674'&+";#";27654'&/532c  "  !  s=)21Q9bvR@d   I1CI76 9 B"6U@%#"'&'476;&'&#"#"'&=476327672#"'&'476323276"  ! H(25-"  O?zOG^RvsE4  (Fw4 Z*  !T! !YOrBzLA2$%J#zV7@7#32+"'&'4763&'476;2+3&?676#"'&"3254': !  b!  2 _!   9J;W}<(F<]m@.|||f   - yJ;|QjVH`EZ˾[G5@%##"'&'476;67&'476;2+32+"'&'476;=#"3`(G,O  ! =AkS9P  !  "  !#pH ?$/^:8 a9;\]2#   ޡ*0*;D3$#3632#"'&5&76763547632"327654'&e# >XlDFFDlB*@4+DF(&B#/E)&&+/2ACecDA`=[F9 !  ('4N$('64((T .?674'&2?6'6'&#"'475"'4;20'x)dwP"8^C>=D6. {$%Q9 2022^ I(#^b'2'#"'475"'43!#"'&59@YB=;CQ P*62.22!  #6+735'2?5"'43!23#"'&=!"'&= ;CJ@1 8 d! 222,~!    !~!&Hll!274'&'5;27674'&'727674'&+"5737674'&+1'1+"'654'&+"3&;274'7O9 NBG!    !E P[ P E!    !GAN0 2=J2n ?2 2? n2J=-IF32?674'&#"#"'&=432632#"'#"'&=47632327674'&+"'453>) / 8Iu9 #+ O3>O7((;@ZA1 9BYB=9BYB=;CXB52# ?-&8(2 {o 262,*62.|o *62.23114$63#"'476;5#"'&'476;7&5476;2+32+"'47'tA !  tP p!   !  !vAN2 ? n 2MG-7472?5"'43!22'#"'475'#"'&52) ;CJ@1 9@YB=r K#;' 222,*62.[)m)%'#2+"'475'56;732+2+"'475#g>B_=;:ASSA99>_A@gd133-/112133.3%035"'6722'#"'475#2'#"'475"'4ԯ;@ZA1 9BYB=9BYB=;CXBQJI262,*62.>>*62.2311*.R.*$'2'#"'475"'43!22'#"'479BYB=;CvA1 9BYB=P*62.222,*62.3;S65F>##"'&=!#"'&=#2'#"'47X  X9@YB=Q  !!  *62.2C\3| ?I#32765&'&'32+32+"'&'476;5#"'&5476;5#"'&'476;"35@@n +"l*vG7SC\,:!  "  ,wF5SC^*!  tA%b@^f 4&dO=Vg>1s  sM9PkB5b : l C[9*%3#"'&=!"'&7635"'547325"'54732^ A19BYB=9BYB=d~!  2,*12.*02.1(0327675"'56722'#"'475#"'&="'4K. 9@Z@1 9@YB= 8;CXBQU' T*62,*62.)`U2311e6!276/56?&'#"3#5765&+"3#5?4'#""3"@ B-G# y @A@ y$H-A! @2' !12, 22# %12* 2e<%56?&'#"3#5765&+"3#5?4'#""3!276=< B-G# y @A@ y$H-A! @ d!12, 22# %12* 2  !~D)!23+"'475#"'&527674'#&#B=Q !%B=X  vAO2.9{m2.  !#a$;32+"'475"'4;22?6'4'#&#%"'6?62+"'4?5%|C>=DXA=DXABoC?  'C23+  !M=W@\\>B !(   d'847632#"'&5#2+"'475'4%"3327654'&N5M2Z0Fv5B7?JA2'B>C(  [AX:f6$p4E; L)89222.331+O\U.jQf4$(17&'&54767322+"'475#+"'&'476;7&3L A<9BXC>JBv  !"| u 1)s2-22209F2  !&&HC6!&U&Hj Gp\!74'5&+"323+"'&'5476;#"'&?35#"'#&'5476;32#6;2+"'&'5476;2765*53!  p 4 3!  t ;Mg0F3E'"  $F(.  X z g=H@]5' 4b,'2'#"'475"'43!#"'&5#"/4?6329@YB=;CQ     P*62.22!  'p o ,,873274#676323276=4/"&#"2327674/&#"#"9B *JA) '  9WH6>BoC?  'C23+  !M=W@\\>B !(   IV>oL>U&ju3oM<H'&'54735'#"'&=47;2?5"'51=43223#'2?6754'&#nB6lr K#/) ;C(@1 k%.RBG0.[)5:' /22+9 Fp^#o=I!"'54735#2'#"'54735"'54#35"'&7;7223##'2?6754'&#=DXA?&(?%1k-8QF:!  !  !  t>I vG7F' %o$ %=!61#1 D!R5   -5O=V^<' " 8)547632!32+"'&'476;#"'&'4763d!  #  !!  !G3      b547672'2'#"'475"'43 9@YB=;C  !*62.22 8G)732+"'&'476;#"'&'4763!#"'&=!d!  #  !!  !d       3O.7#"'&54;5"'43!#"'&='32#2'#"'47' )';CQ 4)49@YB= (P22!  P #M*62. 8G)732+"'&'476;#"'&'4763!#"'&=!d!  #  !!  !d       3b'2'#"'475"'43!#"'&59@YB=;CQ P*62.22!  oGd2#7&'4?3232+&'&#2+"'&'47635"#"'&'476;6767'"'476;5"'&'4763\ %v-6! 8sU   XK" "a" "WX  Rs7 !6,v% G !+ 1- .  /: 72 ,! li!#"'47675+"'&'4767'"'&'476;25'#'&'476;7327&5476;2#6+"'47'#OG9 NBG!    !E P[ P E!    !GAN02=J2n ?2 2? n2J=->U`327317131767654'&'&#"#"'&=47632632#"'"'547672327654'&'&+"'&'476*<2L    4No?+- ;X:SSI2  ? "P$$";  U )+  !X! !E.>N$ /N^0 'BB! $ (! IF32?674'&#"#"'&=432632#"'#"'&=47632327674'&+"'453>) / 8Iu9 #+ OTC !  n*R:2d      !+ 2-'  V=4$63#"'476;5#"'&'476;7&5476;2+32+"'47'tA !  tP p!   !  !vAN2 ? n 2MRGG732+"'&'476;#"'&'476;2+7&'4?32#32+&'&#$ #  !!  !"  $,d! >TC !  n*R:2d      !+ 2-'  V=4$63#"'476;5#"'&'476;7&5476;2+32+"'47'tA !  tP p!   !  !vAN2 ? n 2MRGG732+"'&'476;#"'&'476;2+7&'4?32#32+&'&#$ #  !!  !"  $,d! >TC !  n*R:2d      !+ 2-'  V=4$63#"'476;5#"'&'476;7&5476;2+32+"'47'tA !  tP p!   !  !vAN2 ? n 2MRGG732+"'&'476;#"'&'476;2+7&'4?32#32+&'&#$ #  !!  !"  $,d! >TC !  n*R:2d      !+ 2-'  V=4$63#"'476;5#"'&'476;7&5476;2+32+"'47'tA !  tP p!   !  !vAN2 ? n 2MEG+9035"'6722'#"'475#2'#"'475"'4;@ZA1 9BYB=9BYB=;CXBQJI262,*62.>>*62.2311EG+9035"'6722'#"'475#2'#"'475"'4;@ZA1 9BYB=9BYB=;CXBQJI262,*62.>>*62.2311CG;#32+"'&'476;&'4763!2"1+32+"'&'476;!  y!  2 ! 0!  y    - +  9$'2'#"'475"'43!22'#"'479BYB=;CA1 9BYB=P*62.222,*62.!4U&65F!4U&65F*.G7>##"'&=!#"'&=#2'#"'47X  X9@YB=Q  !!  *62.CG6%32+"'&'476;5'"'4?327&'476;2'#^A!  !  !A>)Y! &_^' !\!    2( !" ! X*%7#"'&'476;2+##"'&'476;2+.k !  !  h!  !  z  Q  CG6%32+"'&'476;5'"'4?327&'476;2'#^A!  !  !A>)Y! &_^' !\!    2( !" ! X*%7#"'&'476;2+##"'&'476;2+.k !  !  h!  !  z  Q   NG;C[sRG>)"'&'4723#"'&'476;2+3#"'&'476;2+3#"'&5n 0  y  ! y  !f +     A*%3#"'&=!"'&7635"'547325"'54732^ }A19BYB=9BYB=d~!  2,*12.*02.&2GG%#"'&/5&'476;2+3275#"'&'476;2"932+"'&'476;-={*/ f" H E  f! +"  z  &2#. "&  (   1(0327675"'56722'#"'475#"'&="'4K. 9@Z@1 9@YB= 8;CXBQU' T*62,*62.)`U2311&2GG%#"'&/5&'476;2+3275#"'&'476;2"932+"'&'476;-={*/ f" H E  f! +"  z  &2#. "&  (   1(0327675"'56722'#"'475#"'&="'4K. 9@Z@1 9@YB= 8;CXBQU' T*62,*62.)`U2311&2GG%#"'&/5&'476;2+3275#"'&'476;2"932+"'&'476;-={*/ f" H E  f! +"  z  &2#. "&  (   1(0327675"'56722'#"'475#"'&="'4K. 9@Z@1 9@YB= 8;CXBQU' T*62,*62.)`U2311!4U&65F!4U&65FSG,o'd2#7&'4?3232+&'&#2+"'&'47635"#"'&'476;6767'"'476;5"'&'4763'21013276575?6?2#"'&'476\ %v-6! 8sU   XK" "a" "WX  Rs7 !6,v% \ 8D >3>O7(G !+ 1- .  /: 72 ,! 52# ?-&8(2 li!#"'47675+"'&'4767'"'&'476;25'#'&'476;7327&5476;2#6+"'47'#21013276575?6?2#"'&'476OG9 NBG!    !E P[ P E!    !GAN0 8D >3>O7(2=J2n ?2 2? n2J=-52# ?-&8(2 RGG732+"'&'476;#"'&'476;2+7&'4?32#32+&'&#$ #  !!  !"  $,d! >TC !  n*R:2d      !+ 2-'  V=4$63#"'476;5#"'&'476;7&5476;2+32+"'47'tA !  tP p!   !  !vAN2 ? n 2MEG+9035"'6722'#"'475#2'#"'475"'4;@ZA1 9BYB=9BYB=;CXBQJI262,*62.>>*62.2311&2GG%#"'&/5&'476;2+3275#"'&'476;2"932+"'&'476;-={*/ f" H E  f! +"  z  &2#. "&  (   1(0327675"'56722'#"'475#"'&="'4K. 9@Z@1 9@YB= 8;CXBQU' T*62,*62.)`U2311m'&$ x*;&D m&$jY*;U&DjfGKN7#"'&'4763!#"'&=#3672#"/#3547632!"'&5476;5##"'4763755s!   ~/ ) -  ](9_A @d   A5 N ,   {& ::)12dAMZ%#2327632#"/#"'#"'&54767676354/""'&5476326325&#"273&'&'"1c*&) 3N2) 3;g..;L<G )I/B24eX; * '"$ &'&( x!&&H "6U@%#"'&'476;&'&#"#"'&=476327672#"'&'476323276"  ! H(25-"  O?zOG^RvsE4  (Fw4 Z*  !T! !YOrBzLA2$%J#,,8%#"'43&'&#"#"'&=47632632"#"'&'47632329B *JA) ' 9WH6>BoC?  'C23+  !M=W@\\>B !(   "6@P`%#"'&'476;&'&#"#"'&=476327672#"'&'4763232762#"'&547632#"'&5476"  ! H(25-"  O?zOG^RvsE4  (Fw4& $ & $ Z*  !T! !YOrBzLA2$%J#$# $ $# $ $,,U8HX%#"'43&'&#"#"'&=47632632"#"'&'47632322#"'&547632#"'&54769B *JA) ' 9WH6>BoC?  'C& $ & $ 23+  !M=W@\\>B !(   # $ $# $ $odt2#7&'4?3232+&'&#2+"'&'47635"#"'&'476;6767'"'476;5"'&'4763'2#"'&547632#"'&5476\ %v-6! 8sU   XK" "a" "WX  Rs7 !6,v% 7& $ & $ G !+ 1- .  /: 72 ,! # $ $# $ $lUiy!#"'47675+"'&'4767'"'&'476;25'#'&'476;7327&5476;2#6+"'47'#2#"'&547632#"'&5476OG9 NBG!    !E P[ P E!    !GAN0& $ & $ 2=J2n ?2 2? n2J=-U# $ $# $ $>`p327317131767654'&'&#"#"'&=47632632#"'"'547672327654'&'&+"'&'4762#"'&547632#"'&5476*<2L    4No?+- ;X:SSI2  ? "P$$";  & $ & $ U )+  !X! !E.>N$ /N^0 'BB! $ (! # $ $# $ $IUFVf32?674'&#"#"'&=432632#"'#"'&=47632327674'&+"'42#"'&547632#"'&547653>) / 8Iu9 #+ O# $ $# $ $>U`327317131767654'&'&#"#"'&=47632632#"'"'547672327654'&'&+"'&'476*<2L    4No?+- ;X:SSI2  ? "P$$";  U )+  !X! !E.>N$ /N^0 'BB! $ (! IF32?674'&#"#"'&=432632#"'#"'&=47632327674'&+"'453>) / 8Iu9 #+ OBoC?  'C& $ & $ 23+  !M=W@\\>B !(   # $ $# $ $D1@%+"'&'4?&'47637327&'476;2##%32#"'&'423 n*D5&\!  ^^$ #Z / )  d/  )t /&   + " %2C-&\qD1AQ%+"'&'4?&'47637327&'476;2##2#"'&547632#"'&547623 n*D5&\!  ^^$ #Z /& $ & $ d/  )t /&   +# $ $# $ $2CU&\jD51F[%+"'&'4?&'47637327&'476;2###"/471?632#"/471?63223 n*D5&\!  ^^$ #Z /f f f  f  d/  )t /&   + n nn n2C&\&2GWg%#"'&/5&'476;2+3275#"'&'476;2"932+"'&'476;2#"'&547632#"'&5476-={*/ f" H E  f! +"  z  & $ & $ &2#. "&  (   # $ $# $ $1(U0@P327675"'56722'#"'475#"'&="'42#"'&547632#"'&5476K. 9@Z@1 9@YB= 8;CXBK& $ & $ QU' T*62,*62.)`U2311# $ $# $ $m!ITdt2+"'&'4763"'&'476;232+"'&'4763"'&'476;2+327654'&+2#"'&547632#"'&54761 BY! ! Y! E l5 2Q9P! (' # 4U?41& $ & $  2   d) 6Jb5&     ;@# $ $# $ $aU$;K[32+"'475"'4;22?6'4'#&#%"'6?62+"'4?2#"'&547632#"'&54765%|C>=DXASo&LHS&v V>~&v ZE&.v!;`&Nv `ZG&.J!`;p&NJ ZG&.qf!;p&Nqf!`;G&/#J>`p&OJ`;&/'#Jq[>`&O'Jqv!;G&/q#f>p&Oqf!;G&/ " >p&O oE&0vo&Pv*o&0gob&P`oH&0J`o&PJP&1g;b&Q`PG&1J`;&QJPG&1qf;&QqfPG&1  ;&Q C&v;W*.&v;C&j.1*.0&j.C&C9*.b&CC&v 9*.b&v E&3v3;&Sv( &3g3;b&S k&5g6;b&U `kG&5J6`;&UJ `k&5'Jq[6`l:&U'Jq kG&5qf6;&Uqf>&6TgIb&VN>RU&6 <IP&V:>&YIX&>&"YIX&# >R&6' <TgIPb&V':N*.&7g &Wxa*`.G&7J PO&W:*.G&7qf xO&WqV*.G&7 O&W  RNG&8j< S;&Xj= ENG&8: F;&X; NG&8  ;&X  N&8&dv4, ;R&X&v, N&,j ;&-jm&9rXo&Y`mG&9J`X&YJbE&:CX&ZCbE&:v X&Zv b&:jgXb&Zjb&:gXb&Z`bG&:J`X&ZJ N&;gCb&[ N&;jgCb&[jC&<g2Cb&\ID&= U&] I`G&=JU`&]JIG&=qfU&]qf Ep&Kqf&WjxaX&Z2C&\K;&A\`mG&$J*P;&D:m&$*;&D'm7&v*;&vm7&C*;&Cm&*;&m&d*;e&`mD&$'J *P;&D': m&v/*;W&vm&C2*;?&Cm&>*;&m&\*;\&`m5&$'J *P;&D': `&G&(J!P&&H: &&(!&&H' &&(r!&o&H &7&v!&&v &7&C!&&C &&!&& &&d!&e& `&D&('J !P&&H': S&,>&'S`G&,J>`o&LJRCU&2<*P.&R:C&2*.&R'C7&v *.&v C7&C*.&CC&*.&C&d*.e&RCD&2'< *P.&R': YI&]v*[&^vYI&]C$*[&^CY&]*[&^ -Y&]*[&^RY&]<*P[&^: RNG&8< S;&X= N&8 ;&X' L&jv &kv C&jC &kC &j &k &j &k R&j< S'&k=CE&<C2C&\C`CG&<JC&\}C&<2C&\'C&<r2Co&\*.I*.I%!"'&'4763!2!  !   uI%!"'&'4763!23!  !   uIt\Z #"/}EZ\eZ3"/7ᄍZb_73#"/7ۄ \Zvb\Z #"/##"/EDEZW\Z3"/7%3"/7 ZW73"/7%3"/7 b\Zz^n'#"'&5#"'&'476;54763232#^ Z!  Z Y!  Q  k w"  w ^n=32+#"'&=#"'&'476;5#"'&'476;54763232#^Y!  !Y Z  ZZ!  Z Y!  Q w  w  w"  w 2#"'&5476+M,;)2I-:(<(3I,;(3I-?u#5#"'&5476;23#"'&5476;23#"'&5476;2m($)% ($)% ($)% $ (% )$ (% )$ (% )Xj.>Naq"'&547%72%2#"'&5476"327654'&2#"'&5476"327654'&%2#"'&5476"327654'&m>"2$=#3$$ # T>"2$=#3$$ # >"2=#3$$ # yv u 3%;#3$=#: $ %3%;#3$=#: $ %:3%;# 3$=#: $ %K_o3#"/7ۄ oSKo3#"/7'3#"/7[ { oK?o3#"/?3#"/7%3#"/7  儍 oK_oG@SKoG2@K?oGR@!V7#"/7632  ڍ    ;%'&'4?632#"/47  ٍ    _~#4F"/'473632#"'&5476;2 "/'47632#"'&5476;2-' +2 H)#)% -' +2 H)#)%  .' )!3*$'% ).' )!3*$'% )fD #"'&54?67632Q  go3%09"'&=4?&/5476323\% %@( 5#), ! 01 & 5#+8$@)#$ .-g`o5#"'&14767676154'01'&'476716154/&/47632` 5#), !01% % @(8 $@)#$ .- & 5#^~'"i~'"d1R.GGx_@}##"'&=47632276=4/"/ 55 // 55 /-.-.9W2""2W9W2""2RCN9CN9s+"'4;5#575u$%$,O*+Os ""!7恁q-632#"'&54?23274/#""'5'532#%E&"&QV!   0V("' -= :#-7$*$   A5  },672#"'&547632"/"2?4'&#"$,;# !;N#1>V5 =( / &  ('5!)6#$?2FO>K 5o@$%)s##"'&=!#"'&547h a  0! <= },<#"'&547&'47632'"132701654'&"32?54'&u:>(R";56 )C&*! (# &% -!$:B89%#0;!1"1]     }/"'&547632#"/476322767&/"1327j$,;# !;L#/>U5 =( %,  $'5!)6#$?/IQ;L 5o; )'$Rd[{d[tdRud[dOdRdZdRdRd &GE5#"'&'4763!#"'&=!32+32+32+"'&'476;5#"'4;5#"'43^!   d!  "  999g|   3|*i  i*!&VM32+32+36721!"'&'471;6?67#"'4;'#"'4;&547632#"/&#"o` WT+( T 0 li ^O F,;G4"  (0g*45-'N  & +*0Z/+ ! # C)O%47632#'#54763236?65'#"'&=&'5/&'"'1+#"/536 ! %,J ! &  3 !  "f ! ]5<! :(%!   E!  E#! -/UQ32+32+32767632#"'&'#"'4;5#"'4;676323632#"/&/&#"ǬS=$  ->gL+ W>P<> ! &0M'g*X #$2]5I*yD1  T! ) L7&V;&'47632#"/&#"36721!"'&'471;6?654/F,;G4"  (0+( T 0 W@Z/+ ! # IO ;9-'N  & $8NdG0>Oc2+##"'&=47632275#"'&'476;32+"/5472#"'&54736"327654/#'#1!  !jc; M !  ~ooN, '* '   G GcB   c O ( (/6-7+ ! $lGA32+"'4;5##"'5!#"'52+"'475&'4;732+"'435#./v-.#%#"%$./?-$.I54J- .?./8$%%$1..zz..1O$%% $$!%%$~;GQ;GGQG@ ZG.mgy~?Ug%327654/"1#"/476321#"'&5476323274/&'&'47;32+"'4;5"/4?#"'&547672+(  4#(K#0?)&If 4[(!9*++,90    !  !4 1 =3"&  4!""!  L=  y~%ew3632!567654'&#""/4?632327654/"1#"/476321#"'&5476323274/&'&'47;#"'&5476726m! #$ (8J%!;+(  4#(K#0?)&If 4[(!   ; +8D  !#6%(&# !  !4 1 =3"&  4/=  ~.DV632#"'&54?23274'01#'""/532#32+"'4;5"/4?#"'&547672%E&"&QV!  4V("' F9*++,90   )= :#-7$*$   A5   U!""!  L=  ~%Tf3632!567654'&#""/4?632632#"'&54?23274'01#'""/532#'#"'&5476726m! #$ (8J%!)%E&"&QV!  4V("' g   ; +8D  !#6%(&#l= :#-7$*$   A5   =  };j|327654/"#"/47632#"'&54?23274'&'&'&'47632#"'&54?23274'01#'""/532#'#"'&547672V+(  4#(K#0?)&If 3[(!%E&"&QV!  4V("' g    !  !41 =3"&  4= :#-7$*$   A5   =  sFX+"'4;5#575632#"'&54?23274'01#'""/532#'#"'&547672$%$,O*+O%E&"&QV!  4V("' g   s ""!7恁d= :#-7$*$   A5   =  [~-CU%672#"'&547632"/"27654'&#"32+"'4;5"/4?#"'&547672$,;# !;N#1>V5 =( / &  (9*++,90   '5!)6#$?2FO>K 5o@$ %)!""!  L=  [q-L[m632#"'&54?23274/#""'5'532#672#"'&547632"/"27654'&#"#"'&547672@%E&"&QV!  4V("' $,;# !;N#1>V5 =( / &  (=   -= :#-7$*$   A5  '5!)6#$?2FO>K 5o@$ %)=  n~'7M_%#"'&547&'47632'"327654'&"327654'&32+"'4;5"/4?#"'&5476723:>(R";56 )C&*! (# &% -!9*++,90   $:B89%#0;!1#1]     !""!  L=  n};Scs327654/"#"/47632#"'&54?23274'&'&'&'47#"'&547&'47632'"327654'&"327654'&#"'&547672V+(  4#(K#0?)&If 3[(!:>(R";56 )C&*! (# &% -!"    !  !41 =3"&  4$:B89%#0;!1#1]     z=  nq-EUew632#"'&54?23274/#""'5'532##"'&547&'47632'"327654'&"327654'&#"'&547672@%E&"&QV!  4V("' ~:>(R";56 )C&*! (# &% -!"   -= :#-7$*$   A5  $:B89%#0;!1#1]     z=  ns+;K]##"'&=!#"'&547#"'&547&'47632'"327654'&"327654'&#"'&547672Ȅ a  :>(R";56 )C&*! (# &% -!"   0! <= n$:B89%#0;!1#1]     z=  3~'32+"'4;5"/4?#"'&5476729*++,90   ~!""!  L=  v:32#"'-632.147  -   C+& *#"'#&'47##"/#"'  ,( 8  .   844vH'&'4?672 #"/47'"'47!2w  -   1435D  +&+'*547276323 &547673632**  248   .  f N!2'&7632#"'&547632&'&#"'&'"327654'5& ^K[4Hk;)O5H*+c B7!G 6jVz=#O7Mo;& M 3!C9D S); #"'&'476?2#"'&'54?6323276=4'&#"  A L4WW4ML4WW4M= F= FbY' ' _Q77P_Q77Pmq*L)7mq*L)IG33%!K[GdAIGGG@-)!!76;2!"'54?&=47!2+"' **5}4 52)); O34}2, #*1}31*.J!2#!"'&'476l  "  J  S 32# #"'47!35b'35Qy+'a7+'3|4 22?'&#"!#"1;2#"'#"'&5476326;2T-.&"T%,.&#$  M;;Mj&N#.N<8X!##^dp8X^!##^d>8X!##p8^^##5^d^d8^##5^d8^##5^d8##5X 733d&>dX 733dXpX 733&>dX 733Xp^ %!533^dd^ %!533^d %!533pd %!533p8X 33#d>d>8X 33#dpp8X 7#33##2d&>d>8X 33##d^>d>&8X %#33>>d8X %##33^d2pXp8X 3##33^2dpX8X 33#pp8^ ##53^d d8^ ##53^d 8 %##533^d>d8 3##533^2d^d8 ##53 d8 7#533##2dp8 33##5d2p8 ##53 8X^!###Xd^d>8X ###5!Xd^^d>28X 35!###^d^2p8X!###Xdp8X^!###X^d>8X %##5!3>2d8X 7#535!##d2p8X!###XpX %!5333Xdd>X %#!5333Xd2>X =333!5ddp2X %!5333XdpX 33!5^>ddX 3#!533p^d2X 33!5#5p^p2dX %!5333Xp8X 7#5333##ddd>d>8X 7#5333##dd>d>8X 7#5333##dddpp8X 7#5333##ddpp8X 7#5333##dd>d>8X 7#5333##dd>d>8X 7#5333##d>d>8X 7#5333###2d>d2p8X %##5#5333^d2p2dp8X 333###5d2p2d>8X 3###53533^2dpd28X 7#5333##dpp8X 33###5dpp8X 7#5333##>d>8X %##5333pdp8X 7#5333##ppX^%#53#53XdddX%#53#53X8r ##r >>8 ## >>X5!!!!XXd,d8 ###ddd 8X 3##!^d^^ddd8X^ 7#!##d–d>&d>8X #!#3d–d^dd8^ #5!##53^d^dv^d8^ %###5!#^ddd>d8 !5!##53#^dȖd^dv^d>X %3!33#^dddX 333!3dd>d^>d&X  7!!33#3^>dȖddd^ 75#533!5ddd^vd 3!533^d>d^d>  %3!573#5^d>d&vd^>d8X 3#3##3^ddddd8X  3##33dd,dd >>d8X  3#3###33dddd d&8^ 3##535#5dd^^ddd8  ##533#dȖdd d8  ###57#533dddd >^ddd^8X !!##5!X^dXd^dd8X^ %####5!dddX>>dd8X !!3####5X^dddddd>^dX  =!3!533Xddd,dd^X 3!53333–ddd^dd>X  =!'33!#533Xdddddd^8X #5333#3###53dd^d^ddd^d8X 7#533##33dd,ddd>>d8X  33!#5333####5^dddddd^dd^d>^d8X^3#"#476ddod4^dJ(,78^^GFX@^ FXXX GFX@:+XV4:GJX@:  ' 7 gVVVV,&4T44T4,^!!,^d,^ #^d ,X^M,8^,N ,!!,, # ,XQ,8,R X%!5!5!!,,,d28 33#d2, XGUX@8 GVX@,X !!X 8X!!XK}8X25!!X28X5!!X8X,!!X, 8X!!X8X&!!X&8X!!X8X !!X 8  !!  8 !!> 8w !!w 8, !!, 8 3# 8 3# 8K 3#KK ,8X !!,, 8& #'+/37;?CGKOSW[_cgkosw%3#'3#'3#%3#'3#'3#3#'3#'3#%3#'3#'3#3#'3#'3#%3#'3#'3#%3#'3#'3#%3#'3#'3#%3#'3#'3#%3#'3#'3#222222222222,222222222222,222222222222,222222222222,222222222222222222222222222222222^222222222222222222222222222222<8X #'+/37;?CGKOSW[_cgkosw{%3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#22d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d2222222222222222222222222222222222222222222222222^222222222222222222222222222222222222222222222222222222222222222222x8X  #'+/37;?CGKOSW[_cgkosw{ #'+/37;?CGKOSW[_cgkosw{%3#'3#'3#'3#'3#%3+3#'3#'3#'3#'3#%3#3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#3#'3#'3#'3#'3#%3#3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#'3#'3#'3#'3#'3#%3#22d22d22d22d2222222d22d22d22d2222d22d22d22d22d222222d22d22d22d2222d22d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222d22d22d22d2222222d22d22d22d222222222222222222222222222222222222222d22222222222222222222222,22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222d22222222222X !!X } 8X 3# KK 2&3!2 2&7!!!DXXDd 2& 753!!!μDXDDd 2& 3!!5%!5!!52dDDD 00X1332& )!3##!3#& 00X133dDDD 2& #'3!%#3#3#37#35#3#3735'35352111111222222X11111 3D1X000130011332& 3!%3'35'#352d~~JJ~ ~J~~2&GuX@2& 3!%'3'7'#35''7'?5#2JJJJJJJ>JJJJ rJJJJJ>JJJ>J353735#53^^NN^2&,3!2,2&,7!5!!HTX|,)!,%#!!j|,THT?,3!22,?,7!7!!|Hw22X|,#5)5 #5%'!oox XX)7%'!7G<..<T 5 T'%nr5 oo %充  %'73/6 y % #5G@#5G@G@G@TGs@TGs@ Gs@ Gs@^ 7%^#5! ,    #5%7' ,  }  !7/2#"'&547672#"'&5476"327654'&.3.6/qNISNjtOHUNkZ7)C2BV7*A3l-6.6TMjrOJUMksNHTC1AY7)C2BT8+HQ 77+z{{Q4!72#"'&5476"327654'&/qNISNjtOHUNkZ7)C2BV7*A3TMjrOJUMksNHTC1AY7)C2BT8+!7 2#"'&54767'674'/qNISNjtOHUN BB=TMjrOJUMksNHg7UX_j(5XR6!72#"'&5476/qNISNjtOHUNTMjrOJUMksNH!72#"'&547627654'&#/qNISNjtOHUNhV7*A3@TMjrOJUMksNHTC2BT8+!7GX@!7#5@!75@!72#"'&5476#5"3276)tPJTMjrOJPN$R6+C2BX7(RLkuOISMkpOLB3BV7*D3!72#"'&547635/qNISNjtOHUNOZ6TMjrOJUMksNHD&/ #,!"'&54763,uNFTKjULjtMF.7GZ@8X !!"327654'&X.8.6, 4.7.4XX#1!"327654'&2#"'&5476XtPJTMjrOJPNjQ7,C2BX6)D3X5RLkuOISMkpOLTA3CV7*D2CV6)2&!&  2&GX@2&X2&G@ #"'&5476"27654'#&.B&6!)B&6"*,% (!7 (B&6!*B&<& *$% 2&%3#!,XDd 2&X2&7!!DdXDd 2&X2& 3!#332vvXv DD#5 %2"'&147'!-  oox   kX#5%'!o  XX#5GX@2& 3!#!+32Dvv vDv2&G@2&X2&GX@!7#2#"'&547635327654'&'/qNISNjtOHUNIP& H(/V7*B )TMjrOJUMksNH܂GmQ'C2BU7 !7G@!7X!7GX@X0%'654?6#"'&54?   ͂  Y  ̂   S1<%54?6#"'&54?3'7#1"'&1!21͂    ̂   4 $!7/2#"/547672#"'&5476"327654'&- !  qNISNjtOHUNkZ7)C2BV7*A3< !  TMjrOJUMksNHTC1AY7)C2BT8+2& 35!%5!%5!2  dddddd2& 53%#55!%5!^ ddddd dddd2& 35!'53%#=!2dddddddddd2& 53%#553%#55!^,dddddddddddd2& 7#553!5!5,  dddddddddd2& 53%#553%#=!^,ddddd dddddddd2& %3+5373+53'!!^ddd dddddd2& 53%#553%#553%#5^,,ddddddddddddddd!76FV2#"/5476#2#"/5476"'47632"/&/"2#"'&5476"327654'&| !   !  4$+@) .7YqNISNjtOHUNkZ7)C2BV7*A3 !   !  2#/! + )TMjrOJUMksNHTC1AY7)C2BT8+!76FV2#"/5476#2#"/547622?672#"'&542#"'&5476"327654'&| !   !   .74$+@)qNISNjtOHUNkZ7)C2BV7*A3 !   !   + )2#/!TMjrOJUMksNHTC1AY7)C2BT8+!7;K"32?54'&#"32?54'&"327654/"#"'&'&'2#"'&5476|" !  "  !  >XSXPXKXXXuXSX*XX*XXSXSXSX6XBXKXBXiXKXSXjXXX*X*X8XhXLXX X!X X X X!XXSX6X X!XXXX XX X>X*X XXX XXIXXSX}XSXX}X*XX6X!X!XKX!X X>XuX!X>XXX*XX!X6XIX X XXXXXUXXXX>XXXSX!XIXXX$XXXvX!X*X*XX}X}X*XXXX X1XXXXzX!XXXXSXXXXXXXX!X X X X XSXSXSXSXXXXXXXXdX X X X X XXX X*X*X*X*X*X*XX6X!X!X!X!X>X>X>X>X*XX*X*X*X*X*X*XX X X X XXXXX*XX*XX*X!X6X!X6X!X6X!X6X X!XX!X X!X X!X X!X X!X X!X!X!X!X!X!X!X!X!XX XX XSX>XSX>XSX>XSX>XSX>XSXuX6XuX X!X4X!X>X!X>X!X>X!X>X X>XXXXXXXXXXX*XX*XX*XXX X6X X6X X6X>XIX>XIX>XIX>XIX*X X*X X*X X X X X X X X X X X X X XXXXXXIXUXIXUXIXUXKXXXXX!X!X6XXXX!X*X X>XX9X!XXiXSX!X>XXXXXXX*XXXXX>XIXIX XX X*X X XXXIXUX,X,X6XXXXXXX*XSX>XX*X X X X X X X X X X X!XX*XX*XXX!X!X XXX*XX*X,XuX!X!XXXXX*XXX XXX*XX*X X!X X!XCX>XSX>XX*XX*X X6X X6X X X X X>XIX*X XX XIXUXX*X X!XX*XX*XX*XX*XXX*X!X!XX6X!X!X!X!XIXIXuX!X!X XX X>XiXnX>XiXXXXXX*X6X6X6X6XMXIX9XX9X X X XXXXUXhXhXhX!XXKX!XBX!XhXhX}X}XXX}XXXXsX}X}XX}XsX}X7X}XXXXX}X}XXX}X}X}XX5XXXXXXXXXXXXXXXXXXXiXX X X X XIXXXSX XXXX#XXX XIX*XXX XXXSXX!XIXXiX X!X XX*XIX\XXSXiX4XX XXuX*X.XXqX*XFX XXXXXaX X*X XXRXGXX*X X XX X"X>XSXSXSXXXXXXXXXX X XX XX>XXXX XXXXX X!X*XXX XX&XXXXX X"XXX*X3XTXbX#X!XXIXXX4XXX3X*X.XX6X>XXXXX1XXXXXTX,XX4X!X!X XbX,XIX>X>XuXXX X4XXXX XTX XX XbX XOX XbXXX>XIXX4XX4XX4XX4XXXXXXX!X6X!X6X*X>XXXXX XXXX&X1X&X1X&X1X!X6X!X6XSXXXX4XXXXXXX&X1XXXXX*XX*XXX X!X"X,X"X,XXX>XIX>XIXXXXXX*XX*XX*X"X,XXXXXXX&X1XXXXX<X1XX<<{<<{<,<<<0{<<<<<02<3$*** !6 ! !! !! ! ! ! ! ! K!!     S>S> ! ! !!>>!>!>**** 6 6 6 6>I>I>I>I>I* * * *  IUIUIU K************ ! ! ! ! ! ! ! !S>S>************ **bWWb^^SS!_1 !7 fS-*S 3d**#*,,, 22222222222##TTy##TT^##!H!!!!!!!!!#.222222222###2222!!!!XS!22222222!!!pp00u wZ{w$79:<w_{}scPd$$$$&$*$2$4$7$8$9$:$<$D$E-$F$G$H$R$T$W$X$Y$Z$\$m$$$$$$$$w${$%$%2%9%:%<%%%%%%%%%%%% &$&+&.&2&&&&&&'$'-'7'9':';'<'''''')X))E)$)-)2)D)H)L)M)R)U)X))))))))))))))))*$*7*9*:*<*******-$---..&.*.2.6.7.D.H.R.X.\........./ /$/&/*/2/6/7/8/9/:/</X/\/////////////w/{111$1&1*121D1H1R1X11111111111111112$27292:2;2<22223`33N3$3-3D3H3R333333333333355&5*525758595:5<5D5H5R5X5\55555555(55555556$67696:6<6W66667~77l777$7&7*7-727679 7:7<7D7F7H7J7L7M7R7U7V7X7Y 7Z 7m77777777777777777888$8P8Q8U8888889n99\9|99$9&9*929697 9D9H9J9L9R9U9X9\9m9999999999999999::::::$:&:*:2:6:7:D:H:J:L:R:U:X:\:m::::::::::::::::;;&;2;4;H;R;X;\;<<<x<j<{<$<&<*<2<6<7<D<H<J<L<R<S<X<Y<m<<<<<<<<<<<<<<<<=Y=\DMDYDZD\DwEZE\FK FNHWHYHZH[H\HwIDIHIIILIMIOIRIVIWIIIIIIIIIIwJDJHJOJJJJJJK\KwL7LMqNNNNDNHNJNRNVNXNNNNNNNNOYO\PS PYPZP\Q7QSQYQZQ\QwR7RWRYRZR[R\RwSWS\TFTX)UUUUUUDUFUGUHUIUJUKULUMUNUOUP$UQ URUSUTUUUVUWUXUYUZU[U\U]UUUUUUUUUUUUUUUUUwVWVwWWW6WDWHWKWRWWWW WWWWwXwYxYYdYYYDYFYJYOYRYVYYYYYYYYYYYZZZZZZDZFZHZJZOZRZVZZZZZZZZZZZZZZ[D[F[H[R[T[\z\\e\\\D\F\H\J\O\R\V\\\\\\\\\\\\\\}$}7}9}:}<}}}}&*24789:<&*24789:<DE-FGHRTWXYZ\mw&*24789:<&*24789:<&*24789:<DE-FGRTWXYZ\mw{&*24789:<DE-FGHRTWXYZ\mw{$79<$79:<79<79<$79:;<$$$PQU$$EPQUYZ\YZ\YZ\YZ\YZ \YZ\YZ\YZ\YZ\WWYZ[\v$v7v9v:v<vvvvww w$fwGtwRqwUkwVjwWwYwZw\wfwfwfwgz$z7z9z:z<zzzz{${7{9{:{<{{{{|$|7|9|:|<|$79:<VVVV06Lx   \ P ^ vv.h |0pl8ZPdNbj(  d !F!`!"8"#^#$r%%&|&'R'(P))**+,,-r-.|//0L01.1n22~23345h6B67789::V:f;R;;<==>>?8?t?@ @A ABCDtE<F FGHIJK~L`MJN>OHOPQFRRST0TUpV0VWvXXYZ[r\F\]^_b`8a@b4c(d(defVg ghnhijJkl$lmLmnovppqpr.rstu^vLwwxyz{|X}}*}@}V}l~D h DZpPJ`vbx,BB 6(jR`&hPn$t2  RPrh~J.Ddz:6:J´vÊPŪVj~~,ɺʆ˒H͐PϘ Ф8rJ`vՖ*h&٤jx2dtH0H^vߌߤߺ2Jbz$:Pf~&< ":Rh*Fbz.F\xt. 8Ph~f|0..B(.bv&(jV2FZR.t"8~0lx<,<t"2BR R   N d      2 |        " : R j      * : J$4zJ`vX  hDTp"bRb x     !j"z####$%V&&&.&D&Z'R()b*Z+f,\-6-F--.^./01$23B4 444455556V767F789:d; ;<=P>>>?j?@P@@BBCPD:DEREFNF^FFFGPG`H.H>HIBIJKKLLMbMNNOOP:PJPZPpPQHRSSTTU2UV:VJW@WXXYYYZ\]$]^_D` `ajbbc^cncdde6eeeeeefXfgvhhhhibijk*klzm>mmmmn noqqrvrvrvrsssst^t^t^t^tttttuvvvwpxy"z{}~^v~@H.$:tv@6j:tx"ZnRnTZ< Jz0B:N8d $<Tl(>Tl,Db~6Ld| $<Tl 8Ph "8Ph(@Xp&>\| 8Ph2Jbz.F^t,BXn ":Ph $<Tl*Bb(@`~ 8Ph4Ld| ":Rj4Jbx4Lbz4Ldz6Fr^( Zú@Ć\Ū@NJNJNJNJX$^^^^^^^pʂʔʦʸ̘tPи"rfՄܖt.FnFV"*D`|8p >\z6Tr*Lr0Tx:^:`<d.X4d@j,T|$V~&VN&T0.p$Hl0Jd~.JXPP  B\  & L d       4 J ` v        6   X   Z p  V|Jdz 4Hp,Bx*@Tj66n<~tF4B$x@.jNPb\l(4* DHX'v.   F$_, N P b \l ( 4 * D H X"H /&;HcH%HC  H  " H;  & H    H3}$H&H;H" H ' q( H  " H / y( H   H / y H   H $ ]$ q$H $T C* * *H -  --H7  " H"H3 } " H   H#Copyleft 2002 Free Software Foundation.FreeMonoBoldPfaEdit 1.0 : Free Monospaced Bold : 11-8-2072Free Monospaced BoldVersion $Revision: 0.27 $ FreeMonoBoldThe use of this font is granted subject to GNU General Public License.http://www.gnu.org/copyleft/gpl.htmlThe quick brown fox jumps over the lazy dog.Copyleft 2002 Free Software Foundation.FreeMonoBoldPfaEdit 1.0 : Free Monospaced Bold : 11-8-2072Free Monospaced BoldVersion $Revision: 0.27 $ FreeMonoBoldThe use of this font is granted subject to GNU General Public License.http://www.gnu.org/copyleft/gpl.htmlThe quick brown fox jumps over the lazy dog.NegretaFree Mono Negretahttp://www.gnu.org/copyleft/gpl.htmltu nFree Mono New tu nhttp://www.gnu.org/copyleft/gpl.htmlfedFree Mono fedhttp://www.gnu.org/copyleft/gpl.htmlFettFree Mono Fetthttp://www.gnu.org/copyleft/gpl.htmlFree Mono http://www.gnu.org/copyleft/gpl.htmlNegritaFree Mono Negritahttp://www.gnu.org/copyleft/gpl.htmlLihavoituFree Mono Lihavoituhttp://www.gnu.org/copyleft/gpl.htmlGrasFree Mono Grashttp://www.gnu.org/copyleft/gpl.htmlFlkvrFree Mono Flkvrhttp://www.gnu.org/copyleft/gpl.htmlGrassettoFree Mono Grassettohttp://www.gnu.org/copyleft/gpl.htmlVetFree Mono Vethttp://www.gnu.org/copyleft/gpl.htmlHalvfetFree Mono Halvfethttp://www.gnu.org/copyleft/gpl.htmlPogrubionyFree Mono Pogrubionyhttp://www.gnu.org/copyleft/gpl.htmlNegritoFree Mono Negritohttp://www.gnu.org/copyleft/gpl.html>;C68@=K9Free Mono >;C68@=K9http://www.gnu.org/copyleft/gpl.htmlTu nFree Mono Tu nhttp://www.gnu.org/copyleft/gpl.htmlFetFree Mono Fethttp://www.gnu.org/copyleft/gpl.htmlKal1nFree Mono Kal1nhttp://www.gnu.org/copyleft/gpl.htmlpolkrepkoDovoljena je uporaba v skladu z licenco GNU General Public License.http://www.gnu.org/copyleft/gpl.html`erif bo za vajo spet kuhal doma e ~gance.#mFree Mono #mhttp://www.gnu.org/copyleft/gpl.htmlLodiaFree Mono Lodiahttp://www.gnu.org/copyleft/gpl.htmlNegritaFree Mono Negritahttp://www.gnu.org/copyleft/gpl.htmlNegritoFree Mono Negritohttp://www.gnu.org/copyleft/gpl.htmlNegritaFree Mono Negritahttp://www.gnu.org/copyleft/gpl.htmlGrasFree Mono Grashttp://www.gnu.org/copyleft/gpl.html2  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ softhyphenAmacronamacronAbreveabreveAogonekaogonek Ccircumflex ccircumflex Cdotaccent cdotaccentDcarondcaronDcroatEmacronemacronEbreveebreve Edotaccent edotaccentEogonekeogonekEcaronecaron Gcircumflex gcircumflex Gdotaccent gdotaccent Gcommaaccent gcommaaccent Hcircumflex hcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJij Jcircumflex jcircumflex Kcommaaccent kcommaaccent kgreenlandicLacutelacute Lcommaaccent lcommaaccentLcaronlcaronLdotldotNacutenacute Ncommaaccent ncommaaccentNcaronncaron napostropheEngengOmacronomacronObreveobreve Ohungarumlaut ohungarumlautRacuteracute Rcommaaccent rcommaaccentRcaronrcaronSacutesacute Scircumflex scircumflexuni0162uni0163TcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring Uhungarumlaut uhungarumlautUogonekuogonek Wcircumflex wcircumflex Ycircumflex ycircumflexZacutezacute Zdotaccent zdotaccentlongsuni0180uni0181uni0182uni0183uni0186uni0187uni0188uni0189uni018Auni018Buni018Cuni018Duni018Euni0190uni0191uni0193uni0195uni0196uni0197uni0199uni019Auni019Buni019Cuni019Duni019Euni019FOhornohornuni01A2uni01A3uni01A4uni01A5uni01A7uni01A8uni01A9uni01ABuni01ACuni01ADuni01AEUhornuhornuni01B3uni01B4uni01B5uni01B6uni01B7uni01B8uni01BBuni01C0uni01C1uni01C3uni01C8uni01C9uni01CDuni01CEuni01CFuni01D0uni01D1uni01D2uni01D3uni01D4uni01D5uni01D6uni01D7uni01D8uni01D9uni01DAuni01DBuni01DCuni01DDuni01DEuni01DFuni01E0uni01E1uni01E2uni01E3Gcarongcaronuni01E8uni01E9uni01EAuni01EBuni01ECuni01EDuni01EEuni01F0uni01F4uni01F5uni01F6uni01F8uni01F9 Aringacute aringacuteAEacuteaeacute Oslashacute oslashacuteuni0200uni0201uni0202uni0203uni0204uni0205uni0206uni0207uni0208uni0209uni020Auni020Buni020Cuni020Duni020Euni020Funi0210uni0211uni0212uni0213uni0214uni0215uni0216uni0217 Scommaaccent scommaaccent Tcommaaccent tcommaaccentuni021Euni021Funi0224uni0225uni0226uni0227uni0228uni0229uni022Auni022Buni022Cuni022Duni022Euni022Funi0230uni0231uni0232uni0233uni0250uni0251uni0252uni0253uni0254uni0256uni0257uni0258uni0259uni025Buni025Cuni025Funi0260uni0261uni0265uni0266uni0267uni0268uni0269uni026Auni026Buni026Duni026Funi0270uni0271uni0272uni0273uni0275uni0279uni027Auni027Buni027Cuni027Duni0282uni0283uni0284uni0285uni0287uni0288uni0289uni028Cuni028Duni028Euni0290uni0294uni0295uni0296uni0297uni0298uni029Cuni029Euni029Funi02A0uni02A1uni02A2uni02D0uni02D1 gravecomb acutecombuni0302 tildecombuni0304uni0305uni0306uni0307uni0308 hookabovecombuni030Auni030Buni030Cuni030Duni030Euni030Funi0310uni0311uni031Buni0321uni0322uni0327uni0328uni0337uni0374uni0375uni037Auni037Etonos dieresistonos Alphatonos anoteleia EpsilontonosEtatonos Iotatonos Omicrontonos Upsilontonos OmegatonosiotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsi IotadieresisUpsilondieresis alphatonos epsilontonosetatonos iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdauni03BCnuxiomicronrhosigma1sigmatauupsilonphichipsiomega iotadieresisupsilondieresis omicrontonos upsilontonos omegatonosuni03D0theta1phi1uni03F1uni0400 afii10023 afii10051 afii10052 afii10053 afii10054 afii10055 afii10056 afii10057 afii10058 afii10059 afii10060 afii10061uni040D afii10062 afii10145 afii10017 afii10018 afii10019 afii10020 afii10021 afii10022 afii10024 afii10025 afii10026 afii10027 afii10028 afii10029 afii10030 afii10031 afii10032 afii10033 afii10034 afii10035 afii10036 afii10037 afii10038 afii10039 afii10040 afii10041 afii10042 afii10043 afii10044 afii10045 afii10046 afii10047 afii10048 afii10049 afii10065 afii10066 afii10067 afii10068 afii10069 afii10070 afii10072 afii10073 afii10074 afii10075 afii10076 afii10077 afii10078 afii10079 afii10080 afii10081 afii10082 afii10083 afii10084 afii10085 afii10086 afii10087 afii10088 afii10089 afii10090 afii10091 afii10092 afii10093 afii10094 afii10095 afii10096 afii10097uni0450 afii10071 afii10099 afii10100 afii10101 afii10102 afii10103 afii10104 afii10105 afii10106 afii10107 afii10108 afii10109uni045D afii10110 afii10193uni048Cuni048Duni048Euni048F afii10050 afii10098uni0492uni0493uni0494uni0495uni0496uni0497uni0498uni0499uni049Auni049Buni049Cuni049Duni049Euni049Funi04A0uni04A1uni04A2uni04A3uni04A4uni04A5uni04A6uni04A7uni04A8uni04A9uni04AAuni04ABuni04ACuni04ADuni04AEuni04AFuni04B0uni04B1uni04B2uni04B3uni04B4uni04B5uni04B6uni04B7uni04B8uni04B9uni04BAuni04BBuni04BCuni04BDuni04BEuni04BFuni04C0uni04C1uni04C2uni04C3uni04C4uni04C5uni04C6uni04C7uni04C8uni04C9uni04CAuni04CBuni04CCuni04CDuni04CEuni04CFuni04D0uni04D1uni04D2uni04D3uni04D4uni04D5uni04D6uni04D7uni04D8 afii10846uni04DAuni04DBuni04DCuni04DDuni04DEuni04DFuni04E0uni04E1uni04E2uni04E3uni04E4uni04E5uni04E6uni04E7uni04E8uni04E9uni04EAuni04EBuni04ECuni04EDuni04EEuni04EFuni04F0uni04F1uni04F2uni04F3uni04F4uni04F5uni04F6uni04F7uni04F8uni04F9 afii57799 afii57801 afii57800 afii57802 afii57793 afii57794 afii57795 afii57798 afii57797 afii57806 afii57796 afii57807 afii57839 afii57645 afii57841 afii57842 afii57804 afii57803 afii57658uni05C4 afii57664 afii57665 afii57666 afii57667 afii57668 afii57669 afii57670 afii57671 afii57672 afii57673 afii57674 afii57675 afii57676 afii57677 afii57678 afii57679 afii57680 afii57681 afii57682 afii57683 afii57684 afii57685 afii57686 afii57687 afii57688 afii57689 afii57690 afii57716 afii57717 afii57718uni05F3uni05F4uni1E00uni1E01uni1E02uni1E03uni1E04uni1E05uni1E06uni1E07uni1E08uni1E09uni1E0Auni1E0Buni1E0Cuni1E0Duni1E0Euni1E0Funi1E10uni1E11uni1E12uni1E13uni1E14uni1E15uni1E16uni1E17uni1E18uni1E19uni1E1Auni1E1Buni1E1Cuni1E1Duni1E1Euni1E1Funi1E20uni1E21uni1E22uni1E23uni1E24uni1E25uni1E26uni1E27uni1E28uni1E29uni1E2Auni1E2Buni1E2Cuni1E2Duni1E2Euni1E2Funi1E30uni1E31uni1E32uni1E33uni1E34uni1E35uni1E36uni1E37uni1E38uni1E39uni1E3Auni1E3Buni1E3Cuni1E3Duni1E3Euni1E3Funi1E40uni1E41uni1E42uni1E43uni1E44uni1E45uni1E46uni1E47uni1E48uni1E49uni1E4Auni1E4Buni1E4Cuni1E4Duni1E4Euni1E4Funi1E50uni1E51uni1E52uni1E53uni1E54uni1E55uni1E56uni1E57uni1E58uni1E59uni1E5Auni1E5Buni1E5Cuni1E5Duni1E5Euni1E5Funi1E60uni1E61uni1E62uni1E63uni1E64uni1E65uni1E66uni1E67uni1E68uni1E69uni1E6Auni1E6Buni1E6Cuni1E6Duni1E6Euni1E6Funi1E70uni1E71uni1E72uni1E73uni1E74uni1E75uni1E76uni1E77uni1E78uni1E79uni1E7Auni1E7Buni1E7Cuni1E7Duni1E7Euni1E7FWgravewgraveWacutewacute Wdieresis wdieresisuni1E86uni1E87uni1E88uni1E89uni1E8Auni1E8Buni1E8Cuni1E8Duni1E8Euni1E8Funi1E90uni1E91uni1E92uni1E93uni1E94uni1E95uni1E96uni1E97uni1E98uni1E99uni1E9Buni1EA0uni1EA1uni1EA2uni1EA3uni1EA4uni1EA5uni1EA6uni1EA7uni1EA8uni1EA9uni1EAAuni1EABuni1EACuni1EADuni1EAEuni1EAFuni1EB0uni1EB1uni1EB2uni1EB3uni1EB4uni1EB5uni1EB6uni1EB7uni1EB8uni1EB9uni1EBAuni1EBBuni1EBCuni1EBDuni1EBEuni1EBFuni1EC0uni1EC1uni1EC2uni1EC3uni1EC4uni1EC5uni1EC6uni1EC7uni1EC8uni1EC9uni1ECAuni1ECBuni1ECCuni1ECDuni1ECEuni1ECFuni1ED0uni1ED1uni1ED2uni1ED3uni1ED4uni1ED5uni1ED6uni1ED7uni1ED8uni1ED9uni1EDAuni1EDBuni1EDCuni1EDDuni1EDEuni1EDFuni1EE0uni1EE1uni1EE2uni1EE3uni1EE4uni1EE5uni1EE6uni1EE7uni1EE8uni1EE9uni1EEAuni1EEBuni1EECuni1EEDuni1EEEuni1EEFuni1EF0uni1EF1Ygraveygraveuni1EF4uni1EF5uni1EF6uni1EF7uni1EF8uni1EF9uni2011 afii00208 quotereverseduni201Fminuteseconduni2034uni2035uni2036uni2037 exclamdbluni2045uni2046uni2048uni2049uni204Buni2064 zerosuperioruni2071uni2072uni2073 foursuperior fivesuperior sixsuperior sevensuperior eightsuperior ninesuperioruni207Auni207Buni207Cparenleftsuperiorparenrightsuperior nsuperior zeroinferior oneinferior twoinferior threeinferior fourinferior fiveinferior sixinferior seveninferior eightinferior nineinferiorlira afii57636Eurouni2112 afii61352uni2126uni2127uni212Auni212Bonethird twothirdsuni2155uni2156uni2157uni2158uni2159uni215A oneeighth threeeighths fiveeighths seveneighthsuni215F arrowleftarrowup arrowright arrowdownemptysetgradientuni2215 proportional orthogonal equivalence revlogicalnotSF100000uni2501SF110000uni2503uni2504uni2505uni2506uni2507uni2508uni2509uni250Auni250BSF010000uni250Duni250Euni250FSF030000uni2511uni2512uni2513SF020000uni2515uni2516uni2517SF040000uni2519uni251Auni251BSF080000uni251Duni251Euni251Funi2520uni2521uni2522uni2523SF090000uni2525uni2526uni2527uni2528uni2529uni252Auni252BSF060000uni252Duni252Euni252Funi2530uni2531uni2532uni2533SF070000uni2535uni2536uni2537uni2538uni2539uni253Auni253BSF050000uni253Duni253Euni253Funi2540uni2541uni2542uni2543uni2544uni2545uni2546uni2547uni2548uni2549uni254Auni254Buni254Cuni254Duni254Euni254FSF430000SF240000SF510000SF520000SF390000SF220000SF210000SF250000SF500000SF490000SF380000SF280000SF270000SF260000SF360000SF370000SF420000SF190000SF200000SF230000SF470000SF480000SF410000SF450000SF460000SF400000SF540000SF530000SF440000uni256Duni256Euni256Funi2570uni2571uni2572uni2573uni2574uni2575uni2576uni2577uni2578uni2579uni257Auni257Buni257Cuni257Duni257Euni257Fupblockuni2581uni2582uni2583dnblockuni2585uni2586uni2587blockuni2589uni258Auni258Blfblockuni258Duni258Euni258Frtblockltshadeshadedkshadeuni2594uni2595 filledboxH22073uni25A3uni25A4uni25A5uni25A6uni25A7uni25A8uni25A9H18543H18551 filledrectuni25ADuni25AEuni25AFuni25B0uni25B1triagupuni25B3uni25B4uni25B5uni25B6uni25B7uni25B8uni25B9triagrttriagdnuni25BDuni25BEuni25BFuni25C0uni25C1uni25C2uni25C3triaglfuni25C5uni25C6uni25C7uni25C9circleuni25CDH18533uni25D0uni25D1uni25D2uni25D3uni25D4uni25D5uni25D6uni25D7 invbullet invcircleuni25E2uni25E3uni25E4uni25E5 openbulletuni25E7uni25E8uni25E9uni25EAuni25EBuni25ECuni25EDuni25EEuni25F0uni25F1uni25F2uni25F3uni25F4uni25F5uni25F6uni25F7uni2607uni2608uni2609uni2630uni2631uni2632uni2633uni2634uni2635uni2636uni2637uni2639 smileface invsmilefaceuni2669 musicalnotemusicalnotedbluni266Cdotlessj commaaccentfftuxpuck-0.8.2/data/jpgs/0040755000014500001440000000000007562713365014166 5ustar noorkuserstuxpuck-0.8.2/data/jpgs/logo.jpg0100644000014500001440000010676207562713365015641 0ustar noorkusersJFIFHH by m0ns00nC      C  "  S !1"AQ aq2 #BR3b$r%S4CDEc&6Tetu E !1A"Qaq2#3BRbSr$4 ?ړ9d5iUeیi"IR%D<_q"rR͔)GT&"|-R);_m9 K d+bܻco,mnQd?3>L\'j[tTL'M2U)WFrn8S̙tl6EhO8MQ.yI4nRIKk4I\u]X:> R[IbOD= ?LkiQlEq B->k6Tr',PafZ '5L¡;{¦PY)P'PmIQ%NZiU_Z oTgKm)%AQ6bEhƱiH2:#01[.A{ ;%&܏P\7kfe6ZTeS'P7ef!$ZnL3ڣJ׬bJD\n cc_05}d o} @f&Z+6;Vr*M*DfJh@sq{s 6qGB<c ezdtYtvazT `2-6,ra} '6UZe"+)tou`Hk* }*JNVt3eȲj$jK([3R"*J\l]+SYlZ;Uґ261 +qJ sd]Ft6 mk}0W=K^/)Jp[7$XDFI_x)<=ZhKt4T乒um6R~, _Zy0SZ܂B i. I(&ͿbZjR*:"]%С S&5@yʥ>@Xm3pVu}P-@>s 2 Jջkm@ d1+RK~tE?1R$4dH ڐ ugyQRL +ߜz2*fSM *fգ&EiR8EԐ,U~k3LVL9 ¢R=CPp>0QYM#kQY`ƕFBZp-'{>0m%jV7=eXZA [4*M{MfHV$snȔȞ) I$Q0E|%^M%g?^2̇HBնj1WiOhyRq2#F8mN6cXϙ7GsZLM"! O%<$?xa-(#)1dǒV=>C Q Cwa7|boar|6-ZA~76Ot4V ʝ~@?x0vq%ICq zIyIJWuj!Ii% ;RVv$O-$~^ux5Uߒ[clR H\HE,^K}ޔ1Bkb.M﻾$ |01)R>V[Cׯ~?WҰ4 $~81늠]?K_ Z^,Sj`m:gZJv5i6QrC7%>Xb{XEbNO?avM`t S Ā +(]=ոx7")Ň,|s(e_h MX2X#V &]rKPAZ0Akq@,TG'1^a, p݉;BaTZrD->Z81TTH!G X+M_!$:CZ uL.x xZХp7ZZ}:^mT3L=ko/cz~襴ϾG?0%]ZlL@l! /6*Yڕ,?0Ap;‹y]7u\z n>2/eoimHMnIXNOZ8d6JYaӺ4wʊ!Ae'k q2rJTI'j?*ZKqL-S)yY\1޶J?pr9Rl"kac[KMin^H) I@GNPc)*#ϥ/Ԕ>{0(mQ8'AR9i0B/ad#pPĩxlMu%BmхvoANKn3~mRFqʉ'IR leQ5嶒JSmfe)BGvlv'ϟj55ʩmd.8I?7RI %KBvuHkCkDI=I!F8>PL MŗeiPnPKXymRzhL $mVai<8@NxR\snMmWKIJKnPV=Rt[LhJX7+ IQ%H}.s@3Ku6}?fW@[K`rXP G\1eIJ(ZԝQ'$p'T>A0T ؟S7ƒ@%#¿foY ,!@¿.}eiYl̏6S8w Xb n e?Ȓ?v =k"˖7 ፤%_o®_ w}Vy?#/*J?Km,D~TX q6赦@0Y"U!n J h;H[n~?LyEӾ&T.? bּ)Vmh$&ӯƕV[qIT7 t;I#8Opuhy$q3C+J_xORv-Bvk/U}'Op/#>9ġIwY<|F㸢t5Ψ2BRyLxi[/h`rPu?d>%VM\Zx>BluyN"/x㯩PE7՛]GH'UeeB2z ʒQ/CmKM A$8-IR%A},EEy'ʊM,M{Nͨr4fxFz+yn? gSh+HI0ZN\pn ƨU. IM&ЊQ'p˹LHJUfͭ~8nVRnzac"dmO -4o:ߊb@oNUf]R['=8`UNܡe,,p8^pAm^ X: ,e{ͅžX\G P郊#ok.®MZ}@ qW.!W>c=wprɷO\nݛ=<* Pǩ½>p1hKl_ibΐ~#0ǁYRJlxb5 ynidGrOX\Dimĥ0ivdO)dySc$z ʼnLj5&W!(A xQ((jCQA?Mr);Zx9|Ebs@A;S4o+XtM{9؏Z/}Iq(}}1TgkoixmPqOi^AcPJ<;o 1/.gb+OZ[ } J soJ'$ P% .!g1Pmm77k㯗G\z{_C@A#*\#Ʀ7e+% GƕM:o<Ғ\~aԩbol+LG쫥«srpfǢo&{iL.-f2ȼ?R<`ⓛ*R8G 27TmDgzaǭ `e֞:5d9A>C O m!\7F_^Df4SeJ-1\t-ß4QyGC#U罣jKD;U2뭶۠0Wl[$;zHOKu $ *PH'۟Ltio@|hU`zeLVZB˩qi+Cks6I1 6lPQJRX 5'Jry22:* I6RA$|ƕqJ31V)jB=>ؔdl)ߌ*گLp I?kTRpUIn8ՕnuȆ^,,3/UoͯOpa 9O-^i+z;][*ޒBl+uk*">ʀ򶇊SqE:ewWԧjJed{Jx _@S{q.V w2uNCYV)_/r^3)d..7?`m=+L34&Էu]EpHHndY"ʬ̚zpb-d_ix$)BT%婊EK DSϕ+kByQdZ]Z*j!'"RGr$}-gE1 92md<z{y3 jT\S-VܤDml_?rZqab TK8MH#Q||ku>|8vd/lǙ)O}Ӫl!VVt670({6S{ZO16N3֫6%mKif_\[Oliu_/YfM*LOwNJ"R҄لFl $$ps]lg SY2J) =]t+w.`#Aɉ/]}*)b *X)H\ v%3klʎTllOU[߰aJ;JzO61h<,Q ȐAVƺj;`S p^&PIcZc>JULl+%e: @mmsž' W6Fv\!K}>JKZ7o,?;G~^yA -Wc)M@8opHEFO~$oQ H2cUa׉1#Ӑ0Auz*9ӧ4i%T\ZEvυmS0J]nX orJDiN8oRLSM>s 6S_6JQ}]J[`ZaqqZ3P(oe~Ve̜F$ %>(f3A;P *]7b5;$+M5S0QU)c~7 4F9I3fuG4^ r*|3Uo{ċ}$xm~-Y.UL)S`,Y$k ['J;Vn3&Or2񚎾Wtˊx@uXZ-չS7:ߋzb{3bᶶdrJ^Mz2Ly5~ W6Tm'_raaͼ~8"Z/ݩ'-@&[RDw(rmRz]Cp#2O!zU\ƒü)؋bk{a aFd n<)ޠNBd)Cؕ^gDhHϛ2r(fj-:V }URBmPs\oē$ԒV8ēRfL%ˮm]KQ6 I:u*J,Kr}Pm}I/"aʩiFe*b[ ^Ҁw_k=>aYe$y ;* ǨJJСnnkϫ{ɫ"Xi ,֬4L4>R4*Ex#l? XΩ[ҍ҄' $]3Qeh#9'b@oҁEs5ڒkpT c9BZ0uy,YV66 [:Ҿ_#*1"X9;uy6<@R$uq|8vXz5q\i02 TTY!j >j^ȹ0!Yi?`TmB0'[(DxwM,-r^D8k`?kp|P}Q?rpD ;ᎅ AJ/ ?_ ɇMWyV6,:X?^#8S/UNP3W(QXPa.⏦Ed<‡ 4:9./V-ɵ%6Q"\ <+5CQ\mA 7ͧ8nBBMT熂L/14ۉ)RMPzcKSMq}8\]S3 .TQFGDVX6x%,rEiGjS\Zm}jd_u2WHh;`'At ["A\n (r9iƋL_6CL ㇓`Ka1&+3H;Ÿ&3tᖔ~RVzU4v. j-~ OU 8$ZqbefspbƗX[%nSl%IqnTW3*I},8{8x 50FNZZ^v Y:z V7$^p .9"Fs`.WFIM@6zfc$j_n<`xաU ymwƅT c ԋՉXv-uXmIZY6 rI&g*Tש52llh=lRy` FskV^mghrcIDzu~î\A6Z_/.N$ߐjQ4;__vn.(JԅƦ{hA9 lb2]gƚ˘ + mu*,}[Bs#lhR ?Z[ZY y Ud+YqGx&*פwe%PBԤm*\1w~OxR7QSH&ܮIW>JtPDJt)3)$)$M`ZUH{\v%֌*Fj,Ea %#XÊmHA$q hP.~H&A}kiriVZ̻|ƄviB_ iˎ3H%ܮQi2e"ÿYUzkzy^\j8{q"rEpP7Uд߈ Ā e*qzppA+ۙ}=,>LCJr&(re`߷Ԁ£ʮe1WqXZEsf$$hJEHPؕ!+'UģRv={ܧ#0r #e~{IB$("@PJ) ).Ci!HiAG%FkUyJ3OFXPFe 6ZgV{c13HAעJ'-, pX|yh O#ےW6_ )'BVl>6a6Ehztłۉu|iIPJU_I yFgHp)u{q5>~n0%܅lZ iޥU8b!_]m)*R/?vű,!H[.v9Jc8n5 :wOkY3dZ<[M)p,*#bx3 $HmslDk̙4HԔFEy$_n+#ÉNۡJq9nՎ9v߹54JH Tү{L56o2LQZ{h{l2TCe(܀q5۳ꃔ'V/LHO_1LVԝXf.ɨLqe c#fau0BҤ)&b1nìS@$ I#&%-mH$Ly:ԷՏkz 4E:AR%y)"Ds\KqS<]TO$Z<cw; Aoh sNı8VFmV 9D>ʕ{N-& ӚQ?ŽZR rąl3|S_5;Ve/&N@}qjQ'}qpYiԟq$2 8)3R3<"?3W+풬Hj Rઑ5v 1mۥz kw}JAkN)bsm*z9yYꔟ.9^Z|֍} i~8՘7˫>/#sK S= ǺEn&t*`myTU5L㤺h\kr8,!ّw&@I$AiMtf|"S!,5}Ē2c{bTu(RdtCRAE CQ؛^¼iTqtRCBR 7 Vl6~78bsP?$@}jpM !c$+۞voi Iy6 B,Q%Oq5)<)Jd7={/u= dy5aՠn hӰO5&kuJ+jzG@lnƽ4׶>Zn#ߐܪ#Ks਑pQ',s'玸Qh^κMJ2G}.ОF+o~PqWyl{+6 ,P<@\gsNGOᷦՖ\Ӯоr!JW~Prru+LbO% x$6(sh{2e -^a!YSx]Uq+I6^t4FR&8ܕ.K%\3Cu#ڊ Iߨߡq7nj q$_3=>d_'u]V4*N?"%0Q<ܶP{ORq簫J,GsATX*njv~1ro3 9o#cU{Zi5PS*RWvJb;}y RBRI qdݕhzN1VL=M$;e] 7𷸍Q9؏v.ʮ2u#/0[Q[dB9M&l%7HmsH)H@q|bp-"Le`ULI}股}(Ss'%D&\!,ܓqUl5$e ^{[]E=v#xBbz=:"cqVE |]ERzO'-n-('jaBֳomGy55U*ˑ.cTxO8Z#Z~jB^'m>Z"{t'w+1m?wcKcW]=Crz1 yzU.Gh*Kx}~@#d˓MJ7|;W=_ +U,{XPnqWLt/R|[ ȧޝ]ַߊ> u}bLՙkӝ*'yn@,bw.ӉUx\BILԟWjҧ`eVvӪU&| D{ik%JR|v+ժ6 A:rSgUO^V}IbR͸L9H+dɬ(yv(y~\$)ũ7: -IsmB6|U;'Tը{ZːdeεRqHBf$#iI)r>9Z*^F伯UDF&(l#ⷳlH # p$A#0㖘+JЂL| ք'.wP+,C;lJV<ߞoʀ.w㨔'ÒBKh$H7Su)p՟. %' Q%D!)$ؕGQ:u&$2IʙXYY<8-xSdH-)1"Kl>b .<ڸ[j(6cd_DIKM%w^N%hI.:mIJ돣)[|!Uq?v4<O <~8zsIvc/znݢnN+|?.Ⱦ`>vŘKe0J(POi # {JBJ ߱\r$۲ׯv.>8T{|rƄAa0Vwq&K+}qkqO#U"-8O0R&QA&7$7,;O-@SܶJHO ϓ*Z#mez yޗJ9Y~t9S_6Oq[-XnKIK#UtU 0[;mO+cO aT?iw'ڭ((tq>ɰR|"Bfu_~LkRTp^:]w]9NoߖNo#_hѹH̙s'?ܲ|.zŰ&-8lN/a.AoscddGj:éqOIݣ% >østl*"dI&ީ>q3뤨mYUݶj,u|8媹-f-A Wxqr6Ϛx'q`_ULE9+>_w݊ D/qkڛ:;0Aqʴ*`0JHZq< _0S$JGnLk'ނAƳ m\{uj2*HH!16e;ng $3P<05(#{sWjݞHS;R@pD<66LMAIl\L`{@ ($z>ջM($’]?N/H")-R^ZH|Ӝ#FTO[7121>5)AN*y&`{4f38Q6j,5u;*CKhm Vs`9RJ֐s4M$eZkETJNӲu&(QMe6s\r-gfUQUM4ٲl,R';TiuQo-*vbߚȧ3-D.%6St?/X;fʞ^f-ZM>!{mVUǒN9Ӈn 1$-݊䟎B]kiǴJӽ[@"=9WЪ,8V9xOqrer}Ë{43' :Ԫ|.W=mR*o-(j -2T۬nSjp<:d(h!ښpwFޗ|ڢ2*Z G[&==N1n6I6!4/TKvJgڮcK!e:URq&Jۊ^ѣǕ/ǥ0Rp)!0!W$O3FkOmʴaɑ>C%<[ (03*EøOSϖ-]FM7P̲-dT9=|NOS06+)S{-<7N7 VGRݒ?ɀ\s@\ėZ=ٗhV)67  )NO-s,j#ݠ9ϣG 57#4ʓdۜtr~Xe*ӋoH&\:ԼtnOw4}@f}:OYB=Cr}Kr; iA"BAݟsOMժç\Y8?i#k~载*ЭUrRS("ĶW )z̩)L_M^0gPJU鯈|o[B'x1>W*F5㨭uۦD_nROE1dN۹WL1״%0UkjZmJ O6{\ޜv*9 $#j8XEÍ H=:o=?]V*VERRENunZT'kyIl MTf_vH:q#)bZjTȌ/{?}hunr+<#*g ~%@̀[ n5n&'cD{g<֪{Z9uZ$۴u[{.,Rzؤ&zT=;1f1>PRV6@@@:EPKjs+Ft2wd){XzLiy!2\u=0(APEwqnx kX, m7tX+4Sd'j?-I7\mֿ#1~RrNIM0Jh0c&q\-D%)IQ q6jy IԒN&r~ʳܖaadI<q8gkhQvԝiظvvmv8ϒRdRb,(M)r Y+} Gvߛ6k!ʣ\HBNn#lU^*ƮGqJ t`7r%A A*]f ~b޸H)$:8liy51wybz @ZS-i]jl: ~ߙ$~=YYה9_.>!H]+>(D0ʊO|E[ZGdvە- Gi@"iI3 g(wΏ0OjhلUf%l ZϋpG)MEKmp1oV(#8HnAR״vhݣg[LFv ǟ<1 @*m`w3N&J&7-kl`"=E8 gr- ΩT:<}FI9cz'ɭByYRQ[Ge ioZ'~j%2(Zd:)чsh--6~ gWJoʪ2S]gޜԵys&;FHcr411cŭS+[ {ƑS@zYozwA sN =6d_TMW{8_bNz0чk_kfؒ5Ev &t&Ul*ⰵbm xBVW2*x7-i mn|vUM"`q›XG&)n5Rml-3yI#ʓo]1SL{=hU+Ou=4챔^Y% !CYŨjQmKM[*g)!١Ԥ8-p#uÀPd§3>)[R#s[v0_ⷩڎ֨鐇$)j}KjvJP Nm5aJđj [,ORdʖgX4OnՋiJG}*#2A>D㭟dwTBd>P]c{]Ө8oq\5:+ |Dy.ډ'eU@Vľ<*?(0Ӎ%"qDQǜScv_*]I35SdIhJ \ڠR@ SߦOz<\"3i֜IJZM ڔ@$D7eZLEk )H %9eTjRRz|x]H*fNb#&HZ$nJA.Bj ԕ N1mK-l@l%(H#iR:roAr.Hů"Sq+ShP׿'4.陃)UYx̴-88^н4+j˕Xf].%JRe%k۔BN(EG:A-0J43#RXjBUU:hM8BӑyښȊI_si ]\:݇&9%٨iE֫!2y@ ֔]E)kc8=Pw`-ιWIZT.3rk-2{(U:+E˦MReޡ$؅:/G  I&F;$dnNsW\tə(CFjy37Egs`Q ؋b<=)ejٟ6Y@v#W=ì6$- Ԉ 81Ԋ~ Ƥj::]SOd£5(%St놺U&8# aE. :cyɃ"媎h\^Pr:}m@)7'|17>6*fK ϥ* PVH];8~9TM%:fNi $ Q ar|oZbIlu9a(M-$Q ON ȧ!6isxp5oFpeE.yuܻCq(LJ;^Nпtboel  m"ldG폘]0eK-pwUFەԌ9s-:I '=pN\i(9MJVbyN4nfݻ)JxƌɧSkXr, GD")6*awSPIT FlUIm[\2 $0gjҫҧ5U2p[<|xvOפ֐La2tcjP~fT*!n٫d\l}yb^5t^rj[jLPhӗv؞ yDqi}f6AԪylWgfhl{ ]1v>#\獢6^ic0a=݌gsPvϑ؊ #M<'Ϋ'/`:7mV"PEV;0d=9ӑӱkM6#[bm~h10mQ&4$v o/qU.yHy{&G-Lf(fSiDT,;"how?g 2[HSb4V㬍~1Q\N2<\uF9qZy5*:#(I諹 B|avf|EBgQ(p5%A-R;  H.6StVbd4PRyuw4Q:Lc-jfIѷb\oU7:wd*?.FC%Ct@72TL֨ns$k.C$៬9YYXil(Dƀ 1 |ګ2ѝ/8f=#FRT&d'vR,Gŕq~"C/$zqf1`;'aGj諐kޡUeH>wڑCr[="@W'K1Y$LҀ]zԤu)b9B6#iSSiBie6sq`_7z3$A~'"ө|4ơu7>"VPZ?3WdK^X[ml!%S Gt4b:[,87+S:#-Ig6CByJZG&Û_V{ \l5٧b7xq\t%q-YEyQ̒㩸>;GHIŲvlr.^Zm$"ME:ꀱ^xPOv)ٻU]3˕ ^~:H݄9!I>3%2MI6䄭(>`s.v6'} VE+2cD7TUxruP@$>ϙUjRA$>XEKȨiD@7V{tyͩUJj HO?uҚ-q)S2+iˬI SYVnKjRWSAY!+r4Ñ㊇5S8ߤJ*gPGz Vu'0j} L]-en&*k@7 J$vzZ;Wj?P5!r*NlGjQAGlOKMꌭSDH1&v2cx\L۸zP4Y`17;?Y;uT#H6e騙5,2ɉ$c`/uX|EkNS^`AG+0jO)]itP٢-pTmΆq y1m#QnԕL6j ikSDGҦ>RGu#{ -Xp@6"iN'$+, * H2R@0A͡e|BglY˦=cך#ө g/b7USߖẢ:f+#X.K;u^B(Qml&k]hŽS+@/EO%շrLX58i*>;qLm;؏~GDBܩju&o3\\KV˻aի6iclB8\ᯃRPYu,N-JEHJ}gsk 'o=vϴb8۔}0fTTw@fA2}aַH .uJ${q|Y.p;q"<e%-1@wjڄHH㓊̃'Z,}b3eL{QqRc1)ui$\2V׾oscb*ƹ509#6HuJe+-RrIHmj.+cI iJAPN^ϝ(g T̃MTQ@j+J!H  1e wn1#vYi 5cLdשT\jYvͱTemf_p b:F_iT𛄦ب9G` իj H69t*DBknm7Uo^kM%*C:#uô4VMHXTe; !Qcj}r@)a\KlQ zud̒%UO8yem7Wn|}O:}c[lZQ1x^98ۄ*pj&EG0L)|xؗ@A2ir]K\@4~OB?{9'ifFZ x).U: Bi׳ u*mHd֪pF6ϗ#ƻ+ŠoTuOQ=tO0X]{芘͡EXr)uMLd!*!mQIymJ=VIJMTkN[ْ!{fxn/Ф_IIaJ\Ւ_Na JP:p8Ʊ^]-84P=c~j¾q < sE_нEelT)*  )*J IG-KeO5Q!nNJ#ĠZ>&߆"wVrFvs2%^_EɩEQ[36) ?m)Q)  0.D}uʱNqGc8"KEF<볼q+H h8͜O8EHq 褩@ H: ]fKH"NѾV E>HS[)~ X$Rz &I[#Ns˵rK9KR. Fy S.6"BaH=^v+j#=6Awi.HҖUѴ&1kU2p1p~^}ZˣrЊx&I Vw{-HOÅ %J6 os ޛR.t1y(B Zg,L3.`&120'vi'!(I蓈;תg~e(*jU56:"o ٔ_88j;]vĕ?/.B?HTSs?o o<JܡMCٲ͂Azq\!;Fo1dgQ'DQ̀ d5 ݺ9Y9XjZvkUʮ|g[QZ*k+Id0ke5 AFiWg{dہc0u6Vd~U{~*~-wp^ʹPm\BzᎪԪ rj$*u Y>dN5C~IR9hRp<\?f YrYW&K}dXv$ _`ԑb:- 2Iqe7i[jO1C9vC/`~}+ΑD #),ȧ~: WI ۡ6x9!Sl8N&"OHJDUfn̙kzC{͡n8d;U =+Ns%ؙG2}ĉou*Jеny M3 Ky! \yc ҫk|6~Y@Ts0†ew~=zbİҶRtOmlOeĐf쏢{&nAi‡N:ХV5՘$B #q4ˊo*PO'-5oUpIKa7TSz*P'ˬyHW 3l֩cd܏/*m&Znt_jD斑▸I_@IذN^q3vc, fK2UY̱6w-Tn\ Xxs \Gl&[Ty:a 61ʉu ؃\?z_''Qy/NARRTeo)Ugxl5t HyeOujDjc(dl/EkPrl,@ b{g;>VYSʔVuQ^.6SE< )MqպܯC*;m#kKZS.6*#:W-57sfb-7WneB,gn'lH&)߳p%*IQi Ů{+q9k;wO4v]QF!uz. !t%ߧT[to"e+poauh( }"hX;N S">+ܬ$x Z[bOk.gP LGm}I*4J%lsshk@ħ< /\RBfuLi#iLu'j\ɦs>i^xV9S7% ~CLF[o1ASomܺ|>77aCepu++-G!P#^ 6QhiD sڜ6*rozcSl+M3іt ӵY(6ӃXZ h8"2[c/E`TtH/n!=l֊yO҂/ 8 h\)F;"RKn\IAW]v(#{uB1o8̥Ftt.ZJlIw% Se&pny%DoLT%.>aTC+oEpdd#qd U=~fx%+(>${,W ieMoy?v,sTsn]ag )¯aqAC |.!B5n I^$0=s-9cGPȵACmL]Am_(c#W7.QU3f_!ڛH.KPEYQJw!CHF-= |55itLPL$u$_.O@/#_iIdS5IQ1 QhR&e͒ &ïp/~f⋈ ̄| Oq5 @_ b&4Kف+QOMOaj+LG@no-E6މ PM)ɱoN1L5ޅ!P$1]m>$"8ܭ "ku %C#*94rMwr'8kn.oĐ@@A!J?<'ֈEgI9*$0e H=Ão2G)Xa[J!o%RҐ LTx+PssXӲ@^6+@Z>NNvr2+#4NG:#T+rTuْJ[jmո&RuRHfE&bǗ> v&di2+졜͙-(‹ߡǶ܌I0>e*:$w?mX 0򭽳};c:۝6Ѓ!ԛM:Y f-}{bnHJPS)&>&|$x\glv4,*= 1,[i덀ܐ7n*2˧R2an:\[lTqE֕ օ=mهsPF#P8rJM:j3:B3<aAVxmmjW=8oXSr&ev25֐AT9a IRGCltyٷB4GtM+*26-İOkuHP+YVs#9 :9KMeFBj% z1K*[n\Wnw4DEUq+'vB')jҕ.A$ƞ4+Snʙf:t܊QMkHIڗoU8~ݥ:bDĎJvl5H퇗6VzfRVPUDcJv,Rp ۟뉺ݱ[ l-O~>T*ԅ[}}l~UE&s+mE6obM$[/ׯwVRJrI' Hä'@),#ŸOHu n `#neWkaղ_Rջ *\ 5Nz,y!(B+ yV_?s y ξZdy}ph?gIzvJ?v !e鴥Al#za2HLv6+`+Ezj_%3%\~8Wf:.< <$܃޽afLG\P}׽=VK̕Fw*]nɄG{βDeݟ~OI]O(fxLyRst!kBʉl~g:=NHB±W1%m_8 s3'G]_?-RD a[Db6B|Wŏ=n%w:ffݢ<ϡ))D[ᇺew.VOa_]ҟq|k G'~'N:͍;ׯω r]SOGDGx _DoLQT3Gd6BIok"FhOW -H !SngsЪ$Qza1/$yc u#XK1UVk)Sf,~Q8&TyhZ߅ jwaV2XSgnRBKV#_qq)J?M<[pm @3Z+XʐW $^JȕVv;6PFR-u9[zʌ%@i \:RbB zq#cs}0ַ) x%A? 2XQ۱[϶TUe3Z މw IN/$V#!Ԥxx徔Z =9\H@(GLGAJI^폙ڞLj Rkn4n [Oۯ5Zͱu?5h^c먳a#ݚ|$&a ϖ3nRrlvc5. d:QJ}`$H*m+3*e'![r,8  \xQ9:f 4)P _Tݺ)7Q*'f<ɭ(Z͘#F?: )Kre[I)Xgh:@'xz4:yu=mm8M=< lmNIuBDy26ٻ01d_~m҇#ẼUTy6Uv֒5!P &,#ȹ&eEݙKhb0SR]# ~;䟕e)kq(Mj_=zpF6r$whr,zE4 +𲐑Ը{y 4@iBlʇ"MeԕJK$V?9)Ӝ+kvyV'JEo;ؤ;ƎUѸS˂;T%e | eA+fGԥHIR c>\zbgii 5 %S5o Ow*Zk#*' {Ȇu in%('ƣ>pt2Bse )d9ʲwMRpalۭ@>x&L^xĕAHҬ&P"*'*3)=.w>&.xu&|66GgjqԷ ,VkHARlMm9` ˍ$Tԭ \re16Xu.҅q"R\NZOwHseKnjy<1J$e ~ Zxf)4=$+*"s[Z$BJKn&djMSk5>E5E-Cӂ8EɔEӉ1.VČAZePgpU ""h$9 S`BHGH1;l/,ԕ.K@waD$0Ŝd"xfTR.!'om>QƖgGvE K녮_UY=6 -G JUEagrb❛o9:b*%)2WO$sixP!<|~-LR?lhrKu<VEigQkrH)]IS-"8P_@0vpHһ8.NH C[A5ͩSLKrn} \ Gr<#y-ߧX >r T{n+; aH_v sƝ RI@*t+*CBZ{tq+(RSB {`@w 2VEQ#0fSKL]A-:;L$; }sbJۿ[,9|+QUp>N0IJmxz_VU!jSHm|I>Dz^tF`k/CCQgkME̙j[jZ \ \p,~ bHv7IU(#/U#{*bPeFGb4kCYf&z{0Rv甗|Ÿkŋd頍zy.+ LTv5@:EWf95 `m+vA~ s$9 2%c'J#/j˃-h@Kh!īIBʼnK}iA1O<| [sL:o+ BEG(ut/+~s+T'n:kPKk%*jPCLJ.'%.'PMWDl\2V3:[˹^>թwq\G{ II $bKNj4LAK 4JcRnBЄ~q#j^_- .bk- lGvJBM @Z2K}_:ͼF%3O3YE;>C Σq!w+ldjTlM1OyVMO~,hL JSϋ.y}d:{)UN$,8`:S~1bpx.{gwUgX*y©|iu |xٷ٢Z^ڇ60U1mP _?ݗν*TB"߯ G%c0eZEIN$T?ޕ;I )aǕ4K FgiҌʝ,ɂ*-!RVlɹIf R)UgV6s}i-! ąOi̴$Y@}"O~ 򖤐nzS=pG'=iXKn$>a?!b:XR\kӎՅn?/usILzWXË]H)J'2ELV7(/|ѩp8J6$ xʏEZrEn1O*Sd \B5)!W7** l]7F Jќ mGuyw Y;@昫Sy I)RIIS@4gmJ}KuԪu= $kSvJ녇kZ'vGr-@Ty-|k15>%FƑQw) p SkWp@ &*6Nm 7rĜ2D6`U$[8{mlL.V% W|*V_+U"9+)#+vT*5rJ-r yݸǪpd]x܀H i7&܄=:`3d`ԶO[cAy!FIBnN]hJnv'BW;![hǀk51q"((֜NZH*n"^ScNH@9ѕa̧($M"1+eeDxTpM:UY.+glI*>##M6#Iޠ(ɷƹq{=@70c6PJ~B0Z p>ց3;+U3j.WS׸Ӑ>EzWE~311Ѹr:c⎲l՜ 6Ǐ&lou뎈; g;0* R!eA\'؎9쪫+GCP'Ge:/BzˊSoO#SRʔmco-K!44χqi1fuXoj.*)~ Pޢ̼6 ĥ~Yu:{6K*&LP![OƈL-lFX4$EF )f5JyPĦǔ%fR)'ޞL5ZLe/ŦY;M45z4EK B}q|IdGr5?f<)UA-CJ҄woR-n,Vne}XsTye=P)1[*QQ*ڂZ%EK/ yaQASa,nF%@"1+ 8MJJbHC;.JmO$zw*Yꛞcw3\!9 [HH6ۋ[ˮZ`bSNlpWR^|`[^r¼H0^p ygj42Jv"n:|4!ēL. 4y<r=?0jnZ5K8K; wU͓jzBTG_ńmRT % _P$Xz Wyv =qKwIbEY#冷WB)ȴrSmpbauUAG{`yvwjU$qݏ W 8G(lXq0#)Ȝ.Cx<ڒ@;SS-Xr8|1_e++vJ" Di`1̭JH Fó ݠ!I]SSR\5=+Ej+I; OK.p[Jdyۜ,%RTucwxɶ#;&cp%$;`9 0praIU6tZ%$gpQ&Pi% ’c^F =m}\$T|]/;tI0#{'a[7ٶ=A4蹟ⴶ!Iw(72#$7p6tp%_r]\9S36p,q׎h.҂v`ӵ٧+)xT66ee%Gm\XĂ]L&\i%h-Y^+Q b, E=߼uBnh2Yi:WCni'~RqW۟Alf3'J!4wUz׹izsc' hU;ʯ`I_£jvUH}ͦၴTw'S*|13szܞ Zְ84B?f7Wc13Gs`]\G)H8_CKK$i"c1@kCBhN: eDu>s/nĂ+Rqc0m\rs8?'TWfˍN͙+m"jԱ%\[ ֡Fuk=Jԫsc1_]$UީHLAn8Tَn;Ulf3 ѩ֟,@ҋdTʕIXf4=kBSc0j"Zr0<UU10W8ښf(zkK)fq鍩YXc1(5ꌊ؀cjNeTj:R|;B,5۬ʬ.G@}>>#GskmnQ>#PӴ3Rr;G!*6o,')`|Uk%Q fZ'ҭfҼUդl+qg OLlAS +&נY$Pqk6O8Pm I+)/y:[&DHjSi G\spE!όf3 6pA5K֠v}9$7܏1g#ONCڝʮ-I_a<Ҫd8-\YH+›>uc1Q"<*̳m*TAOi{/!Mf3 ak=&>C05Ӥy<`FMHSm$pMJ]=UG(3. ͱcU]ӌ@$;,|;xf(N1uE&V&$A90ҐR G7C5K'qc13P?QVr'7Ӓ W$}/bսgEZ: /t >".EŽ}xNrt9.ͩS$撷Yx\p|*=G d:8=o3 I+'Vt`y?), ǯߌ`m9߬=L(I)ͥDr,؍=E,ת ooQy'Xf%#6n,m!6?:wTnKJZT!dO`Inbݤf:,ˍ%BധeӹJOP~\is1BJuRW`<`% bVˉtHgO(M0R/~uԐW'/H W<*P`3>Y[٤ӥ0a;KdeH|~f xyT؏*a<ҥg/qaRE3EFfQ5tuxpuck-0.8.2/data/jpgs/title.jpg0100644000014500001440000030431307562713365016012 0ustar noorkusersJFIFHH by m0ns00nC      C  "  O !1AQa"q2#BR $3brCS%4Dc&5Es ?!1AQa"q2#3B$RC4b ?zoHQ=ʤE/N&LjPKc"a|lYő]Ŷ4;@qϗѣ.l=9*_F, 8ٯgDS]K ?D>B$'2IqP~b{ǪrEu $=- t Sf?Ɣn|'~W'g񨺈%K=<LJ؀fJȊRu :[.Mw ZMCEi%( ]Gn"VĜ~)ǘmU{ĈOQ r'— UYS-0C[]/_PQ݀:,Pg_qKDNU ;6POs-K[1 &Z+#e*aǘ:oWP~л7ͳLs fX㟈m _@d9>e5Hpx^|r#?lMA"](A 0oOG{qrx.Y.X`̲nZ+sky84eqi=ν=t_;<X_w_fZE$ԓQ(ѣIbMdGbkOuȩi+bd0}sUa`|:xٽ{F))VJy~BY^ߏu{ iF\'\4{+x2a Ą \kn9LQr I/p %1n#T约w#$c~w%oel0uhu}])(}àhk2|ht_U<I[tUUT2QF&"l@6~b0B{ P| \$E=2,1r|F#-A_P%X^G Aidb!3ɕg$E ~&qþ]GPP /b0ْ;7B0i_Rg%M p$l6l>]pmP %`v*/uTHpzugT6" C|?em#Z3's>4Ԃ-ZXB+~c ÐU]-,n놩mI"Jx3˸  &c^hvi#2ml;G!q8,sZE?fݒQhd:<ԩV&kc}G.vƜ@[E<)ad ؗĐFt'>d)eÌG%V[OغFIѮ{T~3wf4sdmllíIxN.MSjzPJS]$[*Rhn.m#*fsͰ{ۧwƊ??Do$Qs}?Uڊwm5W#q?o<=J3,~F286( ,d8M =2'#S1GWF5sc ) ϙ|zUfQS%Xjkv3k@2pT>6!̗>ߘ֕:٬kw[#}S;d,5k1aǚg1"Y\j paB͂Œ[tKav4~ӍZԗyfM:9/ G뇊MmMW=:>G!\6%ۭ~O8Vv;\n6 2ZïN5v!v{C9_~2c Dnc]M15 _ǏnZulz؛ c<-s&.T. dTO>i??[vp;Tv;ݔI` `9PԚRgңԱpRRmQTOIV nHKݓ5m@DuZ1::6@u w%T/[E ROjnyt^nXln̔ǒoOvRO8Y^u/S*!'YGaʒgb /lYx4()=Z2,+f1è<0 OsޱopahwN'C[R#u"܋Y*3wVT^Ww]|n?1Ij*Հ\M5d69b?tN Lj<#:!h8G|O"xP$xEGqrOOT֬mgUPpk:^@ ͰQL4\'sS-rLdy'^QqSthTKQ3ŁCRQVR0<7n4-LT0h7c~xr̾ x܏~ U=]MfK!R`'fis:x@u?\J,*>0ɓdPCUý]\u=S7r5(=ҽLj㧩ܒ~\b2z[ȂUiMAHą凊{!3浲D[V#kb_*h+Ys@tcv̲j 3$sD+IUӶ[(.,O(@I/LN)d=T醊liolʗaZ,ԲA. %4xNh*bqkB}~_AJ"W1>~K 9;$pp R0=:a8Or[ g^m+ Hl~?F< WGLl1#+ 6*zҬV㥱_d Ú윶^n S\!)׷-#=vi0$ῦs}6Ly:GN@ v\*)T#q,@c{N>u:`(ן[8z؏Ssz*=|AZV>VAFU<[4p/}<0>ԫ+x\qb̈-?4}Hh%U SSJD[=4EMLŖ;eϚ :R!oQ \*Z7C$?<3c%s&91Gǝ(_-ɨi5Th =]AC]I,*2rHg5u?;tMuLUܑMۭS>쪩}+עԴղ,BX[uz`GP!^2M.j|"W8sFpl~^5:OlRaɼS»wX"B3Jydri~(drn'FAr*[beߺQ RrmcxLeJ Ȟ[,w䝓Q{uUNJR_u EKv_][=DЗ>@ )>֊) @a| %4u|xg9<GAms#M{g{gt4b`#5g1e7X: Wiz?>G*dJ4;$\H^关3GT~yhji-zW$ XN;u]UWOJh̗4IU*ZkcM:l/~)j+#&Ѯ56˲ ;=M\[aڗv=&m4-NeŰ_7`vM.ѥiD6K"vFd|װ4(o(I{%A̪If*-ln ,j{iãe`n>7j6~3yG2tsauhk'yԩ;n t8Ppg;*mMv$ھ1S>_TRV,t߾D( RE˜pa=ruZAi `t:"Yr@962jb4e*B a5ښe=r3sr9?_b>P~LpS # GCO4:(w>Zh+,j*z (j6lѓ5iuYfN#pmfNڇPUMf3K̥sՏ &qv77qa U訳Oe z[El4wAw }cuFMCI):vUQ s{`**G)9>=qUΚ9ݜ-1(xp6]Q9/'ou~oWd:4*6$/$RHU$|tGoױxyf*C;;xbYƠ0̲lڔ< GH|r94iHvZ1wkj+$y#]S+KCF@yGU]T|-f)*fU$ݽOkkGHAgK<0tH **}E4z }Mߧ$iڢ-Ul-je$Y E{c^"+MٿFawkyͻFa&YWmxP`eqiV\6}A*e3X1TЉpRpDlelHw];G[u' /}7Q?ƎڍqlN3Prq@? e~XU<-B@Q6hSYJգqmB_af=l?k} Lwap?8EժPY@8zD2km^qnx)xPg Veh7Mp_Je~:xMޖu3h19cP\InXߦSJc$G\۟J&6$|q峅 <$zmbmqJߧ̡@;Kxlbe7TWGb.G]MS, t,Ǚs55,CBn,P>`5W1-oykb8boĒ[p oNU/P8 s\RI kM.j^hʼ UJnղ*{$X#q- SY2IR0m I\jݢjW0soःa(&aESV{ 2L^UIKUT V~ %mZڶ2m5tksivlj,:᠍cE%:n[1Ys6p1Q gu߳*iGmҖ_}TIf-z jI_SNvXc}%NʦZsSQa@t\p9977Q_E_Ic= [ZAfR.mKA -Nm*n/E",[؃Mk.߶HiQjY=Ҭn=Ee5zVe!b͈8LI3:Be܆nRM7u6>!/E¹IkQi'̩c% F=Ex^e[T=t`W1 1 XylO1!ݕVjEPE <,DuJ˛ek<?[nVcj:"OWWV4J}۪φM#e&@W{w)y*}=0W+v!*n-u< *'R 8ڮ96 m-fR̢M \ x/xd-;]f3R,Vt\dzұ:#w|O4YTyDkX ,\u` '_>̨9 I]m^A`*=Qp 򭤚D,ke>x{I)k{YNa~zu#vdfzhZ,%mͰO2n׵EI$5T` bd,9*N^{L@qTJ[Bk]>F]ꜭ)4FfhǑr^k6=v2e3Az 8sl'El0NWvDvZ>C]3"|ƈTs:3Ydm p:ىt~dz[iʟڴMSf4E g;c#3(C3'6ÑqijRWɳlIBCQ4E]Kn\ yY1nIؕpcٽ>mIbQf:RTcZzÏMɹe=Fo<ɠE!m7 lC$ڋoaFHF#7|f[>0=탟I)R+R,c'ҍWԛ?A[⛵=kMHe/- aqzp4}6#intz=-qXeZֲRe5U##aM6  >W3z#GVV5|sQ%ؖ\a#3!WHGMkq#SO| PP`:b} hsF:YmiЛ$]nJuiV[,iH"I,*4FD2= Z;y5m,ͪ]lsTJÂC_ד(TS# ZӉ wt] j|BN[U33Y\)rh r~_\#+06$J *ittS:?NN~TRUuf٦fr@׀|1l4LC}K4J_>NN -{MϚ%ji+ 2 (+aAQ=+N*TG]ȫy߂v[\Q9 9Jac*#^qۻ YtrQUu+-BIUdg9hjR0V>7b,O#2 ʤyCqCx%&0܀sk|NUD XNEMS٣՚y/OwQo̷?|*ͨ5=*evq#0ijf:&uE0Z\X[F)ɵq{Bd"E02坢UG(\j~8 >FLd&y{Ƃ ÑaV[ZIV96!~$J)RR^CO([ۍNE/ӊD%`-Gnv A+FkV$u7;O_:FU'a&cyBY!d.|7(\lne'6qƶ^ xͿ5u&^؜IV#\OnOe;=Q~xBYGS{­w7oS֎ J[w1mTLK"·&:zpdLG'|b#-A`X328M`_=];.$f,Ò?uz]wO7<R7&|p؆=O#d NR!hCV7yܤd兲,)"$e+>1y3?ya=N u$ʯ`,m$/늤kabwΟ kW'OoTeGl%a^h_aM=\R$oL.X$cH䑮C$?&(դ±ˆm?1r}4+h7Ψ[u |M;Բ‰8m=6]4KVt@ri؛dP~C7lIg!!.u$9L `?\cw,b-)kFON>gtL B~_%iM?(ͧNIC Qk{ɑb@P#VgRvhM㍅~i:#5+ r?scةe6kn_= 0G >c P jiO< Ɵ0̈e*돥J?{|\qͰQL=q,LZO::%IukYl?1rvPRR7u ~Z #dnkH=| rmP_XyHq \pW'OɳTk\zblv+,u^Nva+LeEb#b#dO6':ᶮza3[xd5g(]D~w87/)IoK Ro̖=<$׸uMrU. *pfcb-|4QgseOK:ar{Yn}|ƺeM-d~[.6&M8GD! Ԗ5ePx@yeEsAE3ToYchR.P(  DFe٫ܼW5@#JЎp)me>7*i"6blwZq2_#)f{iwOrpH8\*%&]7r,lyb\?6efR,r>S()~V>ߺ@ZnYh䠇/-<\-ϡUOC6㥰YFᬗ0&j:]=O$xZjZ c&QӮ+N UǦl&'ǚ6r2OMUI09ܜ8L%z*MGvAi]UsSLnI# עʳE_@Vśq'[ aN&99Z$0N%Ok:cKOAAQr P||'=]Iޣ72ARv۬j2(*RezSNDQO,r[X|u_ּZYgS?&J Z18M{PKTwq:.^ ţi\Pэ  P@&ǂq?UDe[UO<V1i /bro>zhF#K]g,$h_rXgOcS,QM,|>`s[ z\D@לq__;s5\OpøŽ@b7=-hSM;hak-N٦̧jCmT\(&wGIEOI_-$=.y' #8DcuKF*dYl* k$i%r;rp~ֲ YUY*klBT3-9=$a&<)rVSbC+ ,XO < \IiN`h^4.pTu+,{HnR=W'ٽMDt,l>Ɋ^pA>|lrxd$t+v-?ҷOsjo$%4YfWi`Sy=q%1q+MeuK_Iw ҼB9>wܮ `&E\0wndaY[XsjLڥ /"߄ Xt|;<Ϣ9r$X\>!ez}"ړ(L5I|<-n'FxX78sLcg*jjrr pG,ޚ}RJV&dauCb q~mz)0}fV5Wv]ok qpG-YW-0ImqY,r aHgql .cUP$3 qXmB@\{m eP3I!V6NUI˜SIA$a w ~ R ''3yVO5_fYEG&* 6=r|x) /E 8R~azK] 3zMU,RfY"LJVpEʱGV+Z#41|O֚wTCEA%M3xY b %H讃h7Zj'Sy G8)dlQ6$@=qc4CC,q}0EWQM Vn҂c~+{sZ63e'rs+ ;$>Xُq kQ ,q/!@i-iF38Ole;˚IV=O8E$tEQ0d`hw>w>5_TiIyy۸O넰ԖcZ4KaҎzta>Žnލ FbL9TdfjShW?Lv j ua`+CہJ(͉{6Di5Qf~·89q/dWu(%bЕ|ґ /"k}1.e}m\7@x}GUTo\-t@;[C`Z|cW2"nO&iIǮ3.G}αӄsK#Tj첝QČs`X>=ګ\8O}#7&!|[ц3 +'\]OϘӐ֎(!;+-R>#H2m !Κk,fVb؇v6",xGL0ħab&&1"eBn0GԴyFzh֮ɱM6|Ojg=W7 Օ5GxbFnX[ U5t]-yyS<5``vj0QwS4|JRv@9+WC#WƎE<[([oDD.E#;2q ?uCp䎣X.H1am =F%b4P軀|<;P:mFɷ<DRΥNb6MYGy?[L V\o>2J Mb>дQVzWfa h*R9M t`2UMpCEwvc/bxS4:ʈS 8U#r]j,T;)u5dw]rO>8&Қ\!Ye$Fu#$x['܂+E\c烱 x!BZ 9q4ޯ R\>,L4}5NK=T;)v'[$K[%T70:-:QSTӒ@ynP,q~U'H V]ze9,pD'όG9CPXG[ zzi+1O1]O],&+0{@ >?[[ { RWCVLwd%{ͤ ʼ(FG#{x\V(5u}xhr8.*(Қz~#wN[vHMTֆQi 6ܫSJO*ħHs! ]#>56berY[|2s{~7+J嚘Cp?lN ڭzv pہV=i";n8 j6T]siƍ3Qkm0c"n@Mˀ21ZEԱ,bFB9SkEM$C/lVMIi-Ea7[/1KslZjɑDqPXue3{%1w(%X܌I3&S)oc79Ζ) 7`-$`b-8-vK{7鈩sNvInG"}i`s*eTmXGfj7JjV1!4Yׯ:8 @~뵹.WEUd}YE*H-"c 1m=+͢;$h?jnu"WUU]d`xϼɘJ6x q_}:$_Z{O6mĜ{Ym|k NٞT 搬Z{}G"˵E^SJI4HClq{?-qc&hmn&4o>fQHA5*k*F:0fd11k_pUWIYHa5'}1v?"q '3ijleU[ʨe^U*c>-]ATXrAŷ9}"!cidoJ#ӐV'>G܉9Qܫ.WQ,2:rG |3ds67H zq*]1MڶR E9XO^o8[ڻ=iVUIkjII Fb/o,?FJDqHm¸6DfXq o!aN6<&+8UBSG9MDbmp]ƨ]Ry'(:v?Q:2˳cOu%KOĻf hI*5kG{:16R.mRxTm[#718~WFt>&¾5[h>C* uvxvMZg۬n\M#큢`O ._5M(+UR%fJ*i'A#b$anMta)1Cgjr6dJԡ+n|< }{DI憦DWI{# o/!|35; Ï }+4!216vÉ5TR}YQ+Oכ?nCJըROkodŔЛ>;CͦD1ZL]!&fw$R`TbmJIz_ ^B nxaLc8hpan܏һm ^7獔wee+:ܕ:mIA[^ yF ȝܫu¨F Sn/|!E21P r1F1˵9 c|A_X;lhpIPG@&GN(#%tǩDH W@MXC8C<ry/y{_炆xn:cKIOĀX|>Xud53F}M<5"&o끚REڞ*.FC\Q G.Ԡ;X)f\j!UG> `<8ϜMd+/NxǏ @8Nc1 ?£ż|0+R)ML+J/^FoBm;PH"Vkx@ӚT͡.)1HЅ],zߋ:aT:%=(AG)ݥM Oܙti &$ְj xB6u%umQM#fJH7I wWjDWܶNz؟/=aV%qu+>k,3S1aY .Q; t)k#|:Ya$ WxЏMڭ2D 1;i֙Yy"USkMK~OrhB" IH6|gTK&_UOV^D,AYS[î P*ElQ) x9%"Ýӧ兲U'@Fo+˧JxԘr^۾be3x$Rt8ywG=+HB`(%|x>X=!myȧCZ>+(caS+p YO7?\UG-l"IrʔUDdD:`z.ߤL/a*|-}ή X[582:,Q*8>JP[jA QMukq gNQ=a)ߒH<|i55e@-}Sʏ*Σ-Z!ә(Un|2=#P7y< E%LŨU`E8{*u^.T L0S+Ub@9=rB@O}! 2&UV5 a\"XP;\7:=WOZRݔk9l*JY1 >=J2F5)8u`wFXB]F;IȄHTصFgՆlZJT-[KGBufffKr. B։#lusQ5{ʱ,*DŽ^ xvKN ᜰ k RryڍdiҠ( -ІF:/R eA%< JA+$]9|1, tN#ZَMPJ%?nFS55_6=ȋ,eHCqbg͙Un{XIz#aAP[[W0WanӟZGeJd=q롁UP<6m4dZO\5Vft 4=j&w{;nmqqet|wT$v"=1\;33#LQB,Q(K+WIHf#{)*#45LsD\FH fV㋩<[42¦%?ifK{ySg[ DkO wA<'w[%^Uv,D~zs{qH.[1Aa klLfJ#$V ~4gOTG"IF%UD71%؍X~ 1(3L4)(.xzbEDt9 x sC_$PjQE=nJ3P+3 2VRF$ U$'O=|p Hњfcnł8I3qSsfTT,oS urFjX*awѹ6x<>0I(T=C=K9@"P@_FᤗP/ii&Z`[00G]RצKNNuy݅x\#!rtF>VDTrOC\>je"8z:K-,}dT jM_q^]) ɒڜM\ڢ+*euÔQs4I*[v)x^` 9R؉orzec{ !%Af=nAH Ymܓe,+e!&\ z :ӹ0TǼ9@޽/H_YШÜjqN嫕0[u"1x%ͤQ_M(!x}1kT#RcӒp.) ]KW(,!Q>hwje z x1I~"gPpBR{T? #8KIU]E Zzf$6 †*77C B[[{}%%%Pqݬl]$q(_ǁq7?T0x'2&.yYqZ(&H6'WX -Euw,N2t^{mrԀ>0H[o\xעԒQup4+Z# LY:nQ$ JX^7(9 V! . E˞J )WT"K?3|UQ V UuUNt  rWeT&HȔu!c *jd z0'-R9d0+bv̘ܻ=(i!.>%R]"u8-FUd,YG>63h55Tr&lpӢsWOIhBU*) q;_RN%9ɕg9h8?^=f9~dj4F:|ƾ pߏY29\@$~ 8II49,G|LV䍪]>S;ՋWOQ4ʲ}-œM/6Kl w$3XMB c`ǯ\~}e:e<ɫrʚ|i<]µSʒL #*mO4U0qhskx t8>{3vMrd̞4ȨZ0Ta7^rI> l%bggz7-텭>~e9'Q#Fjb\WH s MY.YbiDJl[.#E*<< eviUUZj+3U[H>  l>2o쇘SQK>Y 5'sUEnjl&_bO/%M%m;Xsg*,X&[;(ڲnLYm y(5iÑҽ>)%Yn伖m j-eftsUڒ2 v݀hЏ}n=ݫ&ʒܩh2x:\}H/^mZeZpFKa{trj٣w[z-.iP(I &rhtKvѦ+*2gQ~Bo:3.wSM1i#;EڪG6$q=ƺ˜ IP1mN4FS,ܭGWMsMD$Bpdtk7ԱlW3LͼMs*yf5Ak?3 ݾسF&w%ZPjm2;9iLP;xse`#qswp*(Oi[b~W6Sj=<3jv'mu!AP+c[81muKݗ5h[%ank@q\$=D0 \~aEBU:-=e$z,ukALQ ՜R@C{N$8ekl9\;9E0hw7;7oKM4' a ྣ+ )nz=n? ×6sXV6FXrz\<je$~<?;F[Fih+aOTPk؛Q42Op 98d7|q T.V։ae=,@Wbq[e R[jjl%䩑K7Pmo6Jv )Ϡ'KqyS>gP4Բ-?Q8O'<**Q8lES<4w/>lŁfk.4-V^jAԇ #}0Bl96S9YLw\Tc!'6=p=䏷>Rlh&qSEUM*m{pju1VPM x`=N6En[%h 4rJǴ ɶ~/ʒؑxQ(z !~B86clI>f'ZZԗku\t>\mR ަN2I?ƴu'm+cㅱp.-)>x6A1-$쪈I`*Gh Ddo[tch)I)o@e[4R'qȣU;LIZWOwʬƔҐM$n XibNn^oyZ%d 4ĕW r(P`wxhiC-"_[ncR7xOevjGczvs q|#h߁sF,e7O|iesA=HJ G7c`M[/UIثC=<9Ȓo -?XZߖ$PNaBxu%0<XQtq_,m35675T} < CU)6Te`;< IK bsJ*xDT2 =<S }Oxp<{sljrKzΡ_Rn3JT03JX:܌n kyo|Gu\ޝceͯ`AVOS.`G4rb'eSy[ z*{AUvYP"^oӛܓ,(Ӵ4qF[[cNѲ;v^u&DCml~lڏ6S`n1{JV.8}ox"ay<9搭g4eH[ƾ ,z$q,q0Vu}.yӫKlؾ1CJԹer,F?Q]j,+ z|,ycpi%DdߞG'3i8ƞTH-`D_8&.l-c(\R(! U:~LXt8. ek"0zqQ"%.P)`.8]P#$*UKM' ^7[ܪzB^:}܏/'ѝG$#"VIS-im,byZHEOxx>֢LKd9dWA*"SǴ0 x>:Ɖ;@ҹSn#*XIk# T;tq֗ l۷c]QjweD4H[qk-r"XŶa$]q m]&:x_`4,dV<ᵣ+g.#*5Sy) pWވr~C1(fԋ,,&s ,TwnW0 qjxGA9x*ٮB_P?jB;( |dE8àJ蛹h% (_m7q"Zb稄C~ڴLD|۩Qa':Z<[17b%?Ccc}٥ldY%#ͩay%1?amHV27VzV'i Ʃ5~e"][]#}xY @,|Bo'0eW!VdÉufi&|}_5s6UgnmUVZ`$f5=7OX(^nm=DEG<[,d?=%8Tb cSq3 ̦%K3oq%L zN9{>SdmIkṘz 7i'PV=f%-yʿ.IX1#^l63e<4Qځf'\c ۗy.!& /o1c  dgf>OҫYlP}c5K&i]GzqcYluylnwm޾hV_/oiei  gqمWp#^ [+ wd7mXYϮ6K<{7ƥnO Ε]#OJmlG`loɾhۻ N0yADqpi^hpU\|/VaSI8[-ǜvԗJkM@zJ| cT(LyT}jpW㞽o7?"7,BT1晄!܄7noT'Bȿ0 aT1#xOġkL*3*T*󏅷<|bsZdY7h k 4E4E+8P.8Q,a^˂9 1ZOՉL%k :pĀx'\W|*)碋s>W|=foQu/;U)ԟL 5[O8icV "p>_N U6<%֔Z+b山d" p&~=ufk߹9B|-}َ$lUkSK]% m*w|i',2[:Zj<8kB&xq<|v_.q34JFm'ej&qإkPs3nPVZ/Ǵ^976d73ݫ%n)k:&pn j[d.lleno\EMiԹu<4P,CFJ^XC0 A!yfFla. *t*R<,C,Z?<}0 15pc})jznRWB%ou;lj-́ͻLw;I|>_M:SyE-)=3nscM>*rzNq/D>٥<6e$@| cX*Gz,C7z`C;J "4]k7ĵ[42NvZW2/IUWlaMo+k;`FJs$dbŷSQYI3QPMzbz|;J<[0$-w95=2m ?.0<ޞc1y}, U r9ƚp$"(aYtDW=}:_CE=Dd,Kc/qult4꣓8JidGA=1lW6QGQ]- 2`[FT7[s}lmA~^> Hʣu2]kn7cl@+xOp5U?ܱTk_aؐmU{޴m,Sc JyJH?!N^Y.7,@X6F||X8!㌵a ֟яVm߻Pr~C]Sy.~ajYIX*9cbp=Roz5vyM9[!*m 'Gڟ4MAPid*̬$M[teTRv hiğ#=@ü,, )Ӟ0dt6椞L>umMJOrZ\ez2@e~BQIrX8yRTH JoM"JTK)łP!;@Q/w=A{-`;~˴ynpL0PDFے8>_ۖC.8?L%y Haɽ0m@J{vEO|ᕔ <<i8iꥃZž:qYnF 8O-L´Xۭ#Õ_O,T9X1K/b8 KM4$Fcss-9MKv0H$l(׌cSԼgmƨ(Jh%6?|hR w y%%F,~ rģ`7A0Px_=%,F#x匴]Leq am%Nw0qT"DLE7kcA n( ^&v0ݤBH~H]GS41+Fާ탼= C e=LB ^"ݏ=p8Vhhk )f tf\/.~TLTSg0@*dCn~E~Mbh`1'unڷ[vXWQWUWRS?ze+.߆H/*Qؾy{ *> +,a@hϮ)K:0нtKAR @ WUvʆlF* 'Kunsdt[`6UG?0|Y jHc2JlE1(دڳ!2BSWTp@~\@Ổn[q qA9%fl/˪V9*$єbCcPJ>M=W߸*<@WWWV{;R<4wwKa؃scĒ:V*y\HZ^=)\UdHAQ"32Tp[ÛxLڥdii$ݍ|G4kGu+[ETuR"{AOj (`¤$^'AIP;Xpl,dA`5>.s A OqX DU+`*#IR'p n4ǹI 91-[ӾSTVZMC8$HTK6̳8Ui&؂y_=NvTh'kH,Eor(<r~ЩwX5PB2h,}t /SR1kH{^Cj 5Hb`O$%\q-%u,5Ė ,*)Z.MRDؖ.7>Fc1RN}0~r5tT8赍{/PU2u $@2 S 6]+ ^3pmk3MYQ0u啃}0ftbZYXc.LGԲ>!tPP%藞h&PIV'},IFbE2?s,9'qi:,+qrIČoݼ,[#߄~ u)EsF(4d i"^$[ۧ>q s7'q/EUJK@C!弫LA‘% IHd(HQm: Qӛ\7S$y6< yFE1xu# {w xlb6XܷGv(=j nMb^(#GEɊ%g&7ާi JR!`CoN| s]A3aPSO!Xa B%pM*IQ}q]TԴ1A)"sGU,2DY/ssoR/r.Zd:oc5=?{+K{9u'\ Dsi$jI۽Tt jK!2:#e,EI<*q߀ tⱰw':$ x%o" ‰?Cw?'ib]8Č9VSAdG""$q3pRԑ OXXigO<0Q]p9G Nih TA`ֻ|>6}5` ŏbx5H{p#>>~ Sث&/a%s`8uSx[HT>!MU)@ [~ʕϣ5twY9ey<jN7rdw? soLV+$Cu<{0EOӼ*ОELۙEg5dvQ_넯 in*xӠoV>]"i'Y5́$^8Ё!:Ei%2*QՁ 8Up]>٪gbV+[Tqՙco Bn$$CAK6]4 NFXt~Ff0;CkG I[#՞K,9Q1^ hMcPSI1e y`+r5/ , c |8!k:Q(JDX7"$.sJ 22_y(eM5}>9 m2bO^twVKn\s~}>)Ȉb/ꦕ-UQ{rzcj#p**̚Q)mXhk)I{O<`= u4v=0#9E57)+kZ$b? XY%DҤ0VR+VC Zįb(CWbep#4gUVTUwf[?]ֵqzJա̤x~DDTeH,MAQoǞzR6ic, }|>O5š˚9C4TѨ#\(2\E| ɶTmA Ycx7xpCUѽLSo1HITox1bLt !BTG"FZ/O$i}ckp@rЏ7z16oMO^fc \9\\+-.Eyf\6dU&QI$PX8TO9.Q6}Vp]CAB*z$+Gڈzb(YEu„lM{y>z/ÁJRuI7gGdi$Y\&IMk_[nY-(y*[ɸ (‹O_4R"Me?i1RY5?7{͵KTQYzCK,hRː32|G+qxTOODUV,K$ϴ7&++umfU UT DQ8\8<ߌ/ 4 >_3Zih/C,h f n_>5>]؆{?-K3ª7 "RO|[hi]_;jE2TEU4 {e2"5TaB=}{FieTnnzyCƲ$DH=*rEE>Hdg͡"(!Js~}q%CEVwSLZԒ 6BRp< j`cѹ$fC|&;H/,V$qtO^e_d4b0M,/o`GnV,ܴ5?<6#-@T m<_/+V GhN14QJjO)RpOG¶ݾܟ,G Ƈ o釼$軍㟾K;ʢE#ұ)5訪lǖ ]7a{FiYeckdG%p YItYu23G[^ =8Ò~ 1Sg'Xxh+#+K ;q8 G#b9$ ɫiZ $-Gj{nO׌ tBn$!8-rfd ST [RnoHMNM`{>\Mll_A%*8 <}L6JU,t#?cG2}1UeYن(|YoCG͕$3gr nDQ[l$ekeӑ?|ds|dHQzPX.|4(z-oì24Y"zjx12#L4;X( $ XPFR)c(,,6yF c8BĈWl Yi#=Oh7 *NByP~؏*J/2lS+Gev8֔$r;n$'5_ ?(R%Bz*Vf!QvQE)y#r8ccKLiRsg7dQb:ցD4O 4<O6 #ȿ&R) HXbIVhMjp[.UtVIEFTJVO~C|Lq '`/ȿRGׅ(fP8e?YC$fXn zi!k)2z򔌅DJoN*6T/s&ZZ!؏܀|?jdW𫎂HE<ϖjB kO`6K5<20GkZ2V ~䴵YX.JhiyUV˪i*XE$yt6 #&cr86ssHI!qzU(l :dsf+Sr)1R<X97?EM)A!vf"| {Zvj 5_2ܣ(I$yfH;Đ29U;AVsYwˏX a&Th>ѳӻyQm͓)/_R X,@ێ1,9#m TSwlH@X 6_E~YEI%9.*ȬêH ~˲SUO:i`*ֱPO>|s|41h)SvS]Ӻ~ݭ[AAkUU;yԑ{\DԽNz3I75L溞|\U;Yi7,|`nx` D9D?9 *5iA;˝e֝$PHSwRp~ ){X{,!~^bf|(ҿԾ9-5 9싱H Q겜oSQNJwRky@ti=D^@k:Mj{^1Gs|ay"4[+9XIjx2vڻ7$=E(I Ty3\9XQ#gMׯ0q/bZKe,WÃq< |2s٥?ϗ xH19Do=>]ZXcPIb8!d[ mF"AU5Ke-8W'/$K탒A :o>`I*\pO8JVG1w-Y=rHf)&ޠ5<Cu-i'0g0ʡF-yƢrce/RPH{L3PT8$1xEBɪc*Ϛ;)7 *by~ 9 ӯ=DYͿ?EQY.y02I6DEca!jgߞ񹭄CJ+_fثYU< ;3<2~r>c(WxڪВpGm2 J2a pf_Vf  _b(U9o ,Ξ6m(' rpyty*ebwC(O,gF~yH e:9J~ąKS#2 ء4TڠMHt~*ѽqE1F}H8]SKfSy&. 78 TTJ6P|I>8h 초<'%CC Je|Xc]|`S/| ~ЂckOjY_{d ,-Ob~uR-m~mlurf7ck@s/T=d,lvO rڦ`RʬG [z(>OV1ol hEpIU5KfPoyZ>|[iw{níeu*.Iæ20HvbM HFHb{Mch%.K7ru+vb C3PA-kzbDBUl<7ɺ3v!41hX *N3Jmc $xocg  #RDB,E XycKwQKXb@Pi̅cӨf6vU;EW셺kt花VY|(y 2qTĜ<|lgMÂ5»NiaW 2ʲ<>A+d$k3@b.ЋI> 6@o6CVOӰ1uRʶ ldXv_#R ~lPAq$ߧ %z6n)[Ի.Ă /QRЄ$jxkaW}Q ,.y JZ#FBAm~uǩi'f+sn8x5X.b?d'oP<C["Sρ<ejb:)UD>,%6 T!Lڢ#2ąjrb'p2D}qFPlӌوBrv"!ܒ=A<^ᗛ1JGT%eMyF Avb~bس3T$B (X\p)Q[αV;f5N&<7/zxJw[בsPP5mS`fB{1йvc-`6b:sgkG{Nֿڕ`|'2gH#o}0 3 %H)Qf^nC$[ 9qJ)y y8t:YhޢHq'p_A+#>`K8AJ"Hp-%U?c媘ĆMsnx䯑>s cXAKC1;?y!P|.veC{IX@bG="AqD>y#;B968r}Z,HV5)Ң~b*ژ xSoh0Gp*V3V7ƭ-?I1ed {/ı8x" #X\Xsr)AnEm8U.8*ÏR={N 79Ie:Kq\b1N8@cq]`+}>M$h'͍‰F'/XPKRӒ.#O9c[UHPMu+yY"g;ڃܟa{D5\xѧ-]1?u'N!aQ:DMۥo9u\@V(I{o`Zx^s#h7mG?P?{bǹ&ES5yJui㹷ڀ?Æg58A$¥9 =?r~r ?B8td*Z ,*(;yV/a.rn:|u;YVRs;wy{ 2|bժ$`z▦W2c>Qd*+1?ʊkXo|8]t#mrVIE ob[&tQƔuTA%j۹xFf;tTs;ߺ,#+,׳ĤDZ[|FxaRO4y"_ۗmU I,TJT[ _i(#% [hXf~M"6-`vWI©id#a~pSt/$ 7w+QkLm& #6=?7[:g7#xaHor:[4I$6 q J兏cWjxj}4[F<ꠝ7G_y^eV_1 ى\RU,rI$~N 64wv”eN6G1^N6XKƶ\BH8"ǡ=1*P.1N,,S(!\g`C/Ź \4EJusq査2Ө1 f!ޣن<-s~\4YGǍ'wM,Ry{"ċᇚi 7ݔ0$LB{rꚇ#ؐ2y[%Ȧ)2`03)T۞G "7=MD!h郜22I^؏zhTfN[N\N^!o?+<5Kez=ɪa 0ň:zbd)2͌^7<|IC b]{ɤ8 ?<K"4̕Z> ģ ' Rzi+Z?)WugZk=^$rG +XڳKH vu?mY.c_i:oI;)?v.E2LR!Vtj "厍.8s-9(s aGSCDgw#͕v9[_w2L'jC!W6,X<{r[WTʪIt5{sm;gu]y1fg }7\F4f%Xxr~=O'tadfF TZ`(P<>0"|H9zlmW) ~^J)Tj@&L)1! .wHn~8FadVd!EěLPv;mf#-K-M (mb8W+~XbCXx>1ܓP<%3Hv:iOiSbѐG6HOqVrΊOϐm<4}{b컗T6S1)BK7_\TPZ4G1@en'&PTO6Ƣ$¿6f"8հMa|J#}Qp'u v('B؏3@xi_BO輎4%GaVa ȰzMqIu{+=:n:y#vs[1AQOODA<'w zl1y; fA=ne{786q3618*G#X‘,[57l>zsj+rXJ7=J ᕃ!ELj^hbYhP0"?77e1@:,m5;W&w1XUH|a$*JÛ|b0T@v[\Dw4bþWvfMfԴ4 *+16 IaFK*d ,yBYl(I[P;GP8qÿ=1)i{Lt]A=8"i Jv\% np;U;[{6NC%1{>YRTT^U!Iȶ!=sn|!{@EQ:_DRXIXAjI)) 9ޤ#o;V9xSNVS/w;"}1%SY?q$B5HWfKyG_Bm/54<Cf,MyIYf%-I28"|\Re-$uX:Rz OxD0$Zo.Ҵ}JWNi^8>$x-Ƕ~weTtYY[4 X=OLsUvk A4tM,5<< xup~Qigz$l-,vRx*9ގ&8?āUQ|&K <9TFij, OP=.1L6Qgm ٶzVd\~OR:hXE/åU5yf(݂Ƃ=8|?>qn2Rٽ<}$p r`/^{5CۮT5k]ЩA\O Vݾv-Uu=f =\Hۯw(0z~gj={4k k&t%2}RH$rt𿕱̮I=z294ywZ/ThHm$qfߴ;J ~_N}e5)P,UYA+ H1R)Z+o(*s.ײjXӆiE,ǏI@󉋰?hJ#Vg!U6%ZUn~D1[L"0RzZY22Ы0Ň|qf(h3 ]ݐ rOصݴiHrmC&\=,zw&e t'>}+>eɜZsyX"p {5V[}>Q2(Y7xx՘I5O-~|<1n3-EE1Pv H!#~x[9PΔ]a +LB]Kr!иeF7(ui{|pKi~ z[4+>s+n8/p,$fz)⋿bEOs*V%+ P߈݉+;f AWYH''[mk]Ip#Ɉ,Fڗ_[I6=ޟK#A~ӱ#p(rS *AC㉃'*-zyz B9dljShFtۻClX⫪XVU&7(Ɩv;IXЏ05u2ڶ͍XhArE$1JK:pm*§O9b >LIN"F's+4;Myv1_lTsP x}Owp^K$}n냹BĠUya bsIsj|b9(zHo,YycfFn?\aS#3 ?lxлHU2>y?n#Y{HvWE=Dqo_[Fmp6z8c~)>x%Lt˹?y*\O?sN^H/oxfi tQkL|7y<8i^ވ'RmªeG~ [lvRO:D#Kk4d`;QRj<&J*5x)Ȼ7Li&ų -K=[b2=|HFJf$]I'ŻIpۉNU`Ť^Xp[ð= u[u՛RS#oz##Jw~tǽJ m|(htH3iThi |14- SKfZ%{YQ$ӳ.vf,VP-A9xx&ik+-X\xLz2ܢ7c \ueNmn()*wHm&Ck s'orOL(ࣥZڹ$T#;`MǺ-lHz !J%ibwP?DOc]]o٤[Vdݑin3KdR"3X3XJCX{,H(2h$" %[=\X\Xjt23 Qv5yiF/A2,Ҏk2wnm$=G?og'Z;:R{ҵR w-[;0;164GI@t50BT%tL+& Yd+`.1\;#W@vh4L)R9.5H;[`iFD+!QYfuu )EuMOW sʲ)Е?CDu]n>{eMW13nkk{Ufp,u,S@AAeTpwSl,y`Ƽ9L45u(Ǒ?|y$Ȳۛ$0q넳qpkK!xYq4RXJeym^i(E]T *,7sӟSkO$ZnԵ>lՙT6ٕyUSi.z@.c~I4} j\3d1~ϐ{q9I7^ڇE1OE>oMUASK] L,˾6eЛ4y.8`D8U>D5>w|}!]8Q *mseRӻ dC HtwVRA< 곚])QKujEXIe$AvT\(I;򇰟I9ٍawG&kO1vѓ4ž%X9N57kzn=?dڞ ,/23w$n|os|+ӵjP=@BUunO[y|FZ䬩׷g_]4w[CRL%%>@rS}j*gյ2@EsE%d"ӫ:[jM;;(zwTyib9ƧSkP{VSƍa3[+sZʪC$9b|@p%/|4.CZmĄ_p)Č3*)<*Ovb0Epn-Jcf{)wOfMTJY"~vEϗUC<lLR[۞&#UBH2|A6Y)O?oaPz~>Cy ): h{ `m|浹dw0ێAsjJ:i&$0]=m,$n]x''.f4q; 4qϸ432c >,u_Dŋ"LH<EL I[ھd+k蒸 -H[|ğ拟tv7_c{ܟ+(]uGv{_ Ҧ誤Fda <]9Lj^1Ȍ~Q㊞.mt\}O0Uͨ#4c}sM5LC0$g{i5>VP`^Q<O3JZSiu3:d'31Ov厇v?ؾOOW*8  4FL3f9X^,obyӝԮL7~ʁO D ?B$m].T|%CMdTsj<.)'v*P]{=ٗylY~>@g#(%l.TG=Du}r:PRI >[*%2FVaVYNSHx&>[f`)TnDQ|O۲gƫ4z,ZYRic%~_ yZ8-({bQQPR$<.zzv2 (Bz,id "qJ8pSjMDt )z1,e. 6< qΪإD*y r,~<©Vݱ4AdRnz3TBM§ѴPZ39R6ީ0UJM@wK26{&Y3 dwï? Ƒa/'eC+](@?`jYIk b?DܷϨL<;V0xi-V 8a-Qe@NWISMȖ ㏖BމVL-x ,&!#DY؞^cE D |SS ;:2 oaT.ҟ.|KɃo)H"Ҏ1F=>Px<}=vfpx 2 o =mћK[}-" 4\ /~ܻ~ɱTsZ#ۦ'.zwv3| UѬp@QӊoRU)aQ] $3f Z@&meT:چN zX(dJr֪<^OM~5UFjmP66?.*diu'o1g۷Tk_S>w?7B|A<WPQQo)af:,'`h&6DE$Dw|ܨ#GIydyUT "UXLO)P$,H@-koʰ[ vvϨ\9r LWucY۸Ka=}ggJm!e^A4UGylqN_n]YzETZxTId./6Tׇ4Q#$`YyጴJhuj}c,ݩGU*oi{'9M9|Y_g bûW4N=.(ĔoݹFE"}+ث2/VҬ%(bgYM.. hIN9khTj|S2NeM}phlo\R)~KvY{ ٦I-+ڹe̪aԺf*$CW 19c{W_٦VϸNJ,E!E u<}-2Zj$hxZє؇akx\yX:]w.Y.qUPL]e . {_/s>ы*r tZjZ^jyvf,H~۾S~ ]&P|կQ9O'AgY^킷[flyd|m4K$4TNdI.0qb/e_VS}]yS0XrZv@^m%Zյ=c,Ys "zלu[2ӳj\:ڕ/gfM@OtK{=$m (3_d]?Se'7sYiJOxы8 rOyizfRZ%$6D$e7aZ*8չem;-1^ m ~!"AE:>⢆oswǦ)wLCK{CB҅uFϳ3IdD9o?LLU'׵*vzoej=`mRleL&;_4;Q$u@Is?=tүfc:"ܢ>KUZkX) @ϐ48_CU-]EM-LraBoGM~U-49ڬor|,sr{%ڊJQV;uNʼnEmٯ/cj{;3G\pIXN/FvV#QnҐ8hnǎ.SgnVHn5ֳ2-aW/׵L؏WsEEtƚB_v+rIےwwÛ[=WWsX~=شsEfD N%Y{9s831W:Z#h1ȣ,'*E$eII&줭ЃʛRgs MUMecdjHQamKf1Q֢ϻJ\皚*\7UCfOyل}Ǽ @鈇}eDU3Sʗ6a-ؐ,._̏1l,2:>o:6F,IX̳=݉ EڈBY6=lz@>@) qn}~X] 7̪(SۖT xUVYƴ?߰Q"ƺP;~._6ʽړaC #Ϡ7fM*Y%۹ a: Y;<񍼨Y&Y3T UD["3UVAp5t 8( iL:1IG[ũ{e+MYJk,ߒF,fOrmґ<\My\C#G yUOSEmT98QY-~UK_Eo|X+GGU7TmM7 /ދM58*^GUSQFt1oVGi$N"ӎTmST)fI|=|,1l\j-AA/c:%NǪ:\8YٽL'h7 P W_S劬 Xf K*[',P7Oŗ(쎮H3 +  SKv?ixQ1p7rXGM f"{[#aͽ? t/aϮI)=b^E췱a]bԍiJ_} *$rRܟ偹0Ŧ>"?[)Z?yu5 j}y2Vkٞ˘$%ey=r/l0,%gE1֣.Tc=~li1zv|MjS(y yr3 U9vqKNfjeuP~vi>FՎRc#*Zܗ? қ {FqeȦ0Iʼn,J'!|nHØ[nr>g>p{c*`~W hy}ހX|i;KN "iے6ȦZ߯LHaR&.%4v>3xď6] \^z@?|H}N*Ej,LU?yz>@]A(g ,%& /rmL/C$dnyS]*S|)1Di?|pHN?(yK 59J ;EH`6!ГljEB/<{a{ȫ[}ᘴ 8MY(l<ʊIfDheFS.6HakU[H~MyآThZJ 1kP$j^x9;ݢhy&#VOGK-_$OypJkt`@,~r{H}{3{& '^F_.Zdǽ@k(slex-l71tp>+󗭲] OK1R$`<ͭ' 5 ɶ/?oZy6cK#ͺ諻XEQg%V5PV8.)\*~4q@6 B0嶴} oTT q矦 3֙ILFM2DP,W_.i9D'A d}`ԕ t^wg1ItD-f4K5<9&ʫJ|gkD뼷Q`[Y3:*rI43њZi@㛹WQ J"]k쓴K3>kt :/)%Fa }z\x7D3,%2RF2s ]YS+ -Cݞw؞ob=o=(2IciigQY-|7_qiZקOhf[T6A:YB7ӃOv5۝rRC+eM ˑ&gC \\ďI{5yI]&_R+,Y*H>$_ SfR-2U_qX!_bk=WYI;TƗ/ԡ"ZAk bM+06LYu/b]K9fr :7rE DH\g۳,uD|Bb"c^?vڦ,nZMgZbfS-T51Lj[d}6u-:զbwE;&&̞rd&]u%--cZ.i#~ߦG8E;H%Mݝʵm1@G/":fcz2}?^jL1_-uy&uUf6&ks *n1ՎH,za9*qn\ Iw/KgtAt9l Nq\{# {>Ԛ<ΗTk|0h =L5.@Gtr5 Uiq%ݒOǮ[W$ `7,&@4VdڗM6]4T^*2%؋y$z&+u:=(JXq nrG^&Jx^_*Qv Hbvk%@ ^ =2bve UPO/1͵yZV?ri(s3B#xo"K8 "ݯABfoSƻkôP K]n? ;α$hoG@Óg4IDC|CGU XG*-bq^Bl%xa( k|m%diF G"6>9Z_%p"ϴ F9+Ւ/ iCPX~oGZ=+b٨ڱBG/nOUyVeIB;2m F+hݥS^yKEs$xϨ yp ;OW]?fb vj=,(dF ݑ qo\i}):~J2-RzܛG,ZN)ʳ ^ꪟ4X2c b&琶Ӊ]O+. R }.h몪yPd]uA.~8{\5ꈟ,r*bɫUIb+@ n|z to?0˵EKE5F\kj)c`My7b|GhYkJr*Z6 np-MJta.yzY֗"SSgcFh/i'm5YA2U4E WB<yguMMkE5RDXBb,G:Q3|uRԠ[ѵCah76^z$ϬhFziβ$RUfJ=4 { [-_>lYL<>khYZ2JX}bpWL<?\%qXWŧJ : ,?\j]Ďxfca劸[Z,-PiB,:W< laAgƯf f_4]&/`'֙U}=c-NaV#'qXEpqV4 =`Ub3p MejsU癅[TV4Xsӛ}1%Z䙭hQ>mU7T++q`9zw")c~y~8YV5Fa#n8kI*V&`ZǨʫ{ynUy$>zc/"iQz0lF#s|Cи_~kVa%\ŀƺxyryaQkĈIeܡQ:/%>}TRet 'bcm/xw- 3o1 2GB&SoC<D䈐@Eм-8G #q44$]lɪK1X~7b?l$*#E1ÓIb?@GĞ1q^oc6muW'O1WG;&QY7BGq{~yl+:f4kulȋ؏C6;H%o 6бx%rK#:,c%}55kh#r> eZNvj9Xeه7,I=}[owr 4^KO$Y.Y$2$G *yc4|IZ&ΒURFV`q3F^UTpJ`87i"Ucݸ8cTft:4nd"~xS9;ObM%o cǰ 8*Sً̡1$\.RI,> ɵIhg&X^Q+PGe$SԌ@'0EJxqcoϖ1HZ:%la bZE[+ o$|hg.T Y$ŭ`H,|M0 , ~+N비+eIs%6ȤG#%QH筹ƪIUcfDU쮓,;CǹQE#S:=4s%ra*㺘2ca"ُq%*PlEO?K~h|Tjs⨋ݓoq\-ҋ8[W$5wfTriFdU\_Li= sQy~O㨄#YPKop6ir1EnW}+{d ,j"BOqBZUC+hzi$j0}A#X4TҰDYxbriuHBoYR4y2_Ƞ]bigMtWpJqFt# 1.dT^yUm]|*vCii2#8٤H2X̠Σ_3cT<2{2ⲵј^Yg1jKJP-4vߙeڞw,nY1<~Ee%buRW|2Ф6rM@۰MDe1?kQ}`E%*޶Һf0)1bpIU XNSnkA1-J@WڢBAkd#>1 v:ʦ-_[!; |Ã1RT/*`X~I -#GT)+Qiu$"ӟ|S*%vܖEjJj|EUnįEG ܬh#`b~9r[Y5X2B[/=vi=eb$Ёckq{\B`$W2\I?NyZ@jX5g6rx?$DK>lMUKNHa'Æ[:s..MJ91pרM~1a;2DYSy~:#k4IZ@8k!Gk \au= |sI\w]ǖV9UR͖3(!0iPIăvp=l<9|b>)sͳ THnE/4SSO9.nzN,ԓcg\į%0qovbBfRI#`Rݵ4Ԭ=ʘ2S.qC9gURN4, 5=:v/(fVR1MkXU⧥걀TZS8\ҫ%yvT,;D2@1-i5>UϙdنR O ^XaJ<>>I4XvFΕz IZynX~]_WNIFJ$B3?qp@Kae}GgzJWd:Z*:\_銕#L2hihXnáixrdn, 翪:V %`$,sid[uѢV!E KsC.]RJc6l<UO%+\B@xp35Х2טq9(<oePGễ~)Sң݇R_T0U=5Ty@ q~b[)"x2<2O?MƝIe3kM@!+Nϗ;z2Fܤ1%qyK7Zg`H*>-ؘry.. u_ 6ore*i$r oi^bc('u)MI!>81nG46E[,԰,I-Xԕi"x1\|*jpBԓžyz; e09YP3 @g 5 ,c']MCK%N4S6į4UM 3'U7o'h }{@d&JAH~;B &pxEQMɬ;ٻҿ0rH-:Ϛ6א#^GA5Yf$0j9]g9IQ$QBZ֔XZ2u7?O|ZI0X{!8%_XCq^hs]ho6 tJM7^~+}pWpx~G Y&$PNoq 8B8+GPO8s "%Rm돿ir?<0I37UQƭ> %$HZ,mZn]Oxi @{K-'h5$c6}#b-$ɔyױ,6HE7DI[ | ޲*0nmMI2%kV޿mdfqFk3n7#1Kj*Gq /xv3HKD!(>}YqV  2i .GA{ l*ij1?xмf=@SOX[[EM7O?dN r?/Bu))H;%|,"8 ݹ9t9 Abe:&;oh}L: }1юճŚT$)!8玹:lg3R R5C\x ut y3_"n1%fg7Pqjy!*v[NqM$𙐞?\uw"ȴ`yAMeIɻh~\sZ}Pw|uA[3 :iJzr &dh eBZX͓{?pQ<1z6=qMn {ᇳoueH$2\ Jxd&Fa3XsR@<=N2@ W^k&O$;[-/w wߏtY=T T$O=EM^i%Ph *zzt?#o=AmcKwDo 黏By_DO=m/{^9~[ X:tui4y]s:m+d!?CwTXwJ66=q>W߲&}1nHZpJ3%^V XHm|D;Hyvɗ5Op{,zYlAc!A뷥hSjh;RH< bY<:HPjf,8Qx{F{_"Z9ݷN1:7$aq. z+5fMr0*&F֓l4=QHA#s8b庵) <7um\8RtgrF@-<5ϵ1`us((RA8sL`{ -ҠIZ$Cc⫏&-R4i1rR ʞ͛I/:KMRc[\xTY["9P ߀=q2ǣ&|K30[^)l A =iP];AQ2f@c ۧ- LTty."$l$qsO*ӧ4E.LN͘N=5r[Fn-Xݑ:(Poz|"<2[ cC,*/H_gue\Ԫ"q `AԞNƑZgֆO9KЎm?۳ogзhfS bÖ ɲGĀ-b[-+_G)ͫ;*j*FcD cm&=I_ut͓PrVbnU^N85$BY-#mƫ#Е5;L סQq׷]i4Tʣٜ[mӦ%}tDfϚfur:6JxeIz$#ap@/-ȡ ?:ċVT*kp%A,$IfX)qV fS=TD(Eԃnp:mY>n1s\PZ.}v}؞UfwahZҟJfHAyc\o OJ2b9VZJ*D3*FHX }^}ve:^9(+aQ$2 AMi3I9l_R*ECѽ%km[؝+YS+%78M+g%Em2^'5p{NV$pn{zW6Rx(2OP)-X֙utNSS!_WG*s=1UKU `5޷;;I鏩`m)o!8Idmd6fk/ӌiDڐPvOh-M%u(ڵcqciL|8u)MHY%VǨ0n۸Z8j)=1$1"F,?e6eMS32_Sb WM52HÃf#{)#j$--b@>幺A27:|^Mmr>UBoV6'8Z#֒K$rޞXÂq~çK9$;aD/ Aoez.v#wġھ}~x;/*WH[fttڏ(4 hɰFzpTOvu 0Yv;LDOa at7g.]!Sւ(((uq-CoOonJwo=v좳OWiiDQ1DnxzcNm%^j{]?.7rU)cl JL $B!5Ɨ1pA>C S!%"4$}1t^,5ya@"5!H()pI%H %*[$1pMl)TsaW&R#取]no7n(8NօdkSkya5\~=QrEL!U͘g%e 8=۠JӸTڊIvTm ,ʟ2HnQ9 >%8 릋7G  &p*]c׎q4!sl`$drG'\8D\^J<9Z1v;kyOZu_͟h=[N=H#Ѥ9ufs9|=>W(l K5<1WXx̠j$b, 6e$?UV:e4E5p cqǃ8z}8 P#@:Գ ~F t.\6siڎjW xsɼʅQG,TXb8K;HB đZod,'boG$a#/LL`lJܑo?<2ɐ;T2r>ɲ+hMf1Jb-0V&9g̵]=nkWC] %WgqT%HS2,9ŧ:s_ktOdnMjl&g?ޥ潯{ItQ!غGTPwQF%*R~pme6'6IjLlek3${8Ti}E@!!s]K4&ӫo-mpX^: ,y]啢 ǀ̒bWHjbvGYQ[RAY\jX7e*^o:|5%oc"Aۛ:iicjhTqEyŲ_U=ѲZA'v 0{LJ̢dhnal nc]MۥPEǨűerOLgVnUk)1ƪg,7DHe P:= #F)wWQQ9F]Ǽ[.~X=ιHrWs.UD]E&LEdtIcbሇ1e_", }״V DMO@}t C=KoMGKbY†I< 63+FQΚNҥNo " 3{ GNaW J? X`l{KuOLŔ#lFSʆ2!+dVw㢹 *v[ve&5, R]_~!љFCI9jZ>8'y RW.Y&tږӋ-ni飦TTX0%m8Hb{H?$wLgSsi00jddo-;˗Z7[ͬGbn:sLZ͵>aM J)MZb@`D QĬ#w~[XRvFGGhV}da `GǯLWܟ[aPj8$Vk\H!drTѥ{O3LHCMD~ G F%F/I{Ifͦzy4Dڦ \O6$_IT3(=#ҕGZM_Ikij*#!Y75ʛg(̎*bD`ըW\[N03K#zO&{%G|ByQ=L"42M2@6ʬI$s~O8t/?ZNAXGGGjmIX5077N^Q WiڥwֱH[bcxK˟'2?`ܢs b {fuFWj~w'⒃L<4a 1F5s=YQp|ڗCR?̂*ՖAAFw£7 nvz3Z{A&}E L@$Lǥ/:ȳi&twYre>7z|_lY5Kn}QG~ҹUÀ|ͼ3SU5:}8CO[+n#`׵! Kڬ]jC%~[ [䍏ї=z6IUJq2vTم~dO^EU$#w>ws|™+4o؝1sɏցl,Bi: ss$L19sq[.Z ']=,%$OEjWٶn7pyt`Qywյ|[p?+av|RdtAs釽AEveUQVԴ*r*A釴i2/MQ d0x;qf(B# L͎p0Œji(hT7v-b{%vsv&m-=}IfZJPHc >6{;ynu8VY,}lTΆ6DˀH6~ ʣ3Hj1&!HWC^bx fY`\gilf{Cjʒr:hER(MN'uO33]aZj|TQW]G-|[2b@[YۖM*iZ̨irRSjEFdg'P ;13/ &IS2wǙ8`uF Ww Ssift 1tDmTYVչeW69x3,*)*Erqw.YiGn:zZ2\߱)d"4{Qi#PUPaeZzkY쓳jRvMl$$#@c)2%8m4 ҺdLghiߌFP,k ccc ϼV8LƞLnp J!bV\֣n.^e2< Xccvmw6ѫxLjǧEvu4?l>py4& ÕeGy3Dx矉0{q%2w`} \oI7t{ ?+*e-D·UdT} 3zVk2172ʡ~<{a{yAY\Hr)VM"*s5FbĽk*JR6˯!HtO:{¯B<7|<2u$:Պ JJfKKtL WjVY bWec6L 晅<[^/{]4dxJSt~qkVi|0XPz> Coa f u"'iX(.nJH +zsڇ!l9 nn,,IGz?j9&}ب*jX9+l yP 8:.DQXH?Y4=' 7x%@+ԚRj#*ZJ\:Fno$%y7[m5Y1t \4qɲc$ ,<ЮwքC4GsQw0X*g2 U#)$PM u YQ5ڋOgn#6ge>J|PdEDVZȱ\[ܞpEy49Z.rȉ'765n7*{5,@n+pٰ_g݂"#r~]5 }Tg6ҙJQm$F~a#OfIEWXz%_uJmUpKKա$\ngͿX:Iu_tC݂OEc/F+uo1Okl*0du- #&NyoS.L.B{eg 4ߎUn~Si%6>*d|~L~O:sG,]o&a p"t1=cEn=U)܂Ol3[;=w*W%E>*)]֓4S66Sk;3ydTY6AY*%WnU@3]OkCNůQ^\cEEEд(&\uv_$qU̴}5`.oKJZ|iHf?\3ϕwOÚF^ O_\@Q>PS^#R͈F-}鞥U[+L͎!ƙjR?W1 >m5cz*γyeNXNC ৹ZGűHU 0 ۂ@:8JU>[ogu$:#+kxq ߞaTmNj:jIV_6G^`$]aB}ULMTN#N^!(q>$oVTRS(݋/oRE|چc_kًSU[IGSUPS<.7a#]o n37yj4JRE4rg>C+nѲrX {Sy*]w('>j SmP)QqRh@t%u.׵fUE{n;&u>+9t~r7e4hMOI&gR Ő^1)a\~Y 5@CEr2;hE@eb׎ߞ85S pP$?:{P*ޮy50Xc' [XTs.sť%j+ xT~XU.F4m;C˷R>Ђ1Iy`R5`m"#~ [73䰽*{$\u[:᧫v39,dU q\"^4I`P>"6ca%@#"i*Ytȋ8[@ؤ O'GSEwo.5M=0E<|9je5k3)jW_xc'A'/&{_0s>MG[3S1Vǃة4Nk+頒 yw}߆=ٌߝ\ u(Ug`}Mk<:e~wGhulY-ZlκI4T>)$,UOٶu<ڞW"zW`/ 4OE-V_KCg0̽)#TPy;YQ[Չ"ڝ s (dZdrЊŶ^SH.1^LǴ=ؾJaiɢA;~ aQeG) R +̓ŭueGvhriíEo+zZʺ5"1n^n~-5G C0*8e7#l&0#!'%_o.a++G*[k5儍 =j$ﱿ]N4~Ϟf6A!( l(3}%X"ܷ“VGU v[oʓ8.Se m#ML-!bD( %qُtG;߉mH-YA=ĵ+=^Vo>BFccaer$UAmxrY6e3NfP /dZ_1G1tvRռCO1*٢o5?Q x]cCV183؋Ǐq$ǕP1HJLfd+Lsb':XܣmAҹkSYR3%4=*_OmsXUYT#w }C2\#](2,@ !uMx-UW ̓(Kyszcì.;:]ڊj*>| sJ{ې8?_:)btv-\qj˝ rM͏䢍} d;>8zݳ̦'42+CokX0֍SBHYb,< s.%,18WE:yր? 阾юK8n*PYI BG; Fb[X:~Bqbh))i$'6n[rmv-;U]5_ij\ަW*c&ŭ׏ Tr^ɸ1i0.wMUi̾INc /lVN(ETpH&o?B.ܪvN w.Y5skFa:rv Xpk&Sݘ??TAcw]zLMH§,c&@HuN_Sk`60DN"6N UscQ&8J$opO'a5(5<(<-2džʂGm-#![E1c;66U(mԨ\-:)a~6{Í9FFv@_\1EIE1vm_a %\%a|lQ|tݓ%%Tr/u=mBh`f,@1Mc'.Exl`k}~ےճ)!sSǨiMd8X܇r{ Cۍ=U=؊3W#Plm`$Bd2:3JjFo<]5]UEG ۉ"*xfSb,|qJtpm1p&p2=6ASLIѬ"Iew0bXu_fYSvFhr&8ӾeW!bT鸎oT=G2,lGЧ|h('Z3_ Z'p*OgTfe;e6<8%0X{8\ 3fHk Y UZ^O;.Zd7a2 Wevh 'yf7͡V́lb5a{0la-M@N_7ZT78"70p|>Rݎjݔ(u ÔjYJc67 \鶔نfNJہӵMinqnA܌9SQkC= 6UgCqeJayr}L.20 =9uM/]͉׀>t6LIGôDo4thY-~M8k:Kk#J{ct"!K8=[/|pj3Mq5MiKD7y_>8{<ܞ8S42' M|PZƭlB)"6$*& h%v>x`O*MXrp 6ohjm0J4F%lBfSD-uޥ~x($ˣj,.cD,ßaz&Pdy!H%U:`3)ҝe,Q{dJaQ#_~p$$1n] E>@;c.q]M7 EmZXgC—a|0DUeqgZDRoV%A>j/NU_g9X N$`ƪoqsG%9Va˲FsKp98GsY sE| ?Z>#6Ì\w f&*sL:d5BԢn9T?=kJ\ZZhZPPO!?6&8JgwMPYOC˲:0? M(&ҫpcqkxnzw!jzQxtnw.dkhJ5@&)R_ Q}IVI ]lvQʰdE},9q#%mZ 2 1dS%O֪t< 8ع #!PHidNq#QY!ԥu{p}᛹Xb 稜I*'2$>Ceͭr ؟U Թ-&J|"5zd l qQK| H9.IjC[|{/w*[u\Hzq4qM2j*PX&vBz܅*ȋu+J㸋pG|Q<-@B }}}ٷ匣mEPf:(ʨdK[1z'#hL觭KHCQSE2zƊB.Ă?qO! T$Q|;INߺ&'#+($[gsOp\\g2?/W8Zn\珤TxH?$'Ed}S[SI#w5_116'@ l>*XQY, _ډD`.zR\سl5*Rseu3GBۏ8O_@x0C;,,Py>x>zVenyP 4*&[ DrG)arPhysSڎ' >|(ica2=E~9TxFeKAg5A$E]I C'vT93s}L3̂al6i0!W͏*ZAksJȹŚjoHb>}p}K$=Awmpq!ʲ4dPPmpI呋%Fٞz&3Hб==Q0Fa`%\: G?[wcvw6`i*umઊ ㄳd 'cs9'~%}+]5N@Ԩ.MRXOL)0tٵ=drXJG2KXnʽvPj:l..PR, &? cGoL 6&ox`4yX~I24CHkwH>jq.ǿن[IvȢReTQ5 l-/fT6ʫ3ʍ2Z4ɸmn~<\ۯ9F6pǍvy$#m->rXhsJ!Yn`UTC|*j<2ǩ.h"OMM.&N}4tgTD~mtSXQab 1 vٮ4u_e&`&) nNYC;EHUPIŮ N|X?CC>:ju,j42%v=Q>&RqCN0\]l,#.qws""joig%E5T F!$&I6oY(Q~}qLpP)R[c ^0]7Gp?TLp{+_AAh"+}Y2[QPxôAX) ("*@&iJcE-L,\s6 c2wm'w˸E\.-+dVe*7d*zaki'z)R6˃nnčE>GUE2+X]]v1da>JO4Р(W$QWjjrƓ\3q B]=N3@/V jN)(o0H%=1.a"DHo;[j)Y?8?tv[wOhxZA~7Zְ遍]GnoŹO9ԗxΥ yŸh*}(rRN"CXy_U첊i4mo;V4 @z:SwmoN?.A3nk 3kiȡxѣ&\9VGT`p>wWwS{UfyDdr˺*a:(_Ib<1Z}[Tp$nTena͜ZS>RZ74;1*a7ԴTgqakOW(ES㎍Q6.q#kkRmZkj硬y4Fl?[m#n< ={Ng*&2Kަ gzf,8(WhXez-qєSowt|C5h:;VwL G?S>NhȘ Z1{Ϫ,U5+/]m-l¤$Y܃Ÿ%ĪorM zgqOIۦ;6x1WS\J/LMEh>O[aji': ?|4PK>=x*mk[ rPn #h$e4$1 r=G+=T,XyfKy17#ÌF+ؽw@t1;nHROO/YglS$ ȬG  2f3Y3 ֜Tƭ,A~"3DNx0-_TZĎk_ţ$qo %KwDv98+sA2`_==0/-z;T=w "%JY"AycR0e ۟, '<2lakcjc `7O'J('RREPZ1&:6yp{ħpIuKjDL'SI[ *NIf 5Ȍ)r{Bb&>?"POS rymn8e>gNtTOgO$ :g[t<z*$crčZ$~x>}ۻSob]*101] 繻KJYy[1la! M0 e1l5WT6ƹrwH$baq>pj2:I YE}Ґ'3KmFy=O3*WU"z),QtTM'Bl|VЉ"};,.Fޑ0nX8o*{F YX8ܤTIW)8J6ǟolu@ȑw$Pݷ~x&`g0js:jʉ$r|'i, fؐI79AG~gV6vlho2L$WBKK_Jb6b;[_o놚*aNJyD u$}BC,$X6s 4t9aLсZ1a&l/{[bfn(͋+4U:!JB\HSƦѸ0VJZLS&]R#Zw1zZ"!"HR#c5nS 7u=@F^ރI](cI'o ڶ~%v9P?L45!}'B;5L8ǐdKKd; y (!G]/s:~b*/;RrG6ٜt =c{&S !&O'n %6,a ; V=?jeIKG#|qy6>#Kk=SiSQk[U3{~ZHeEO\큘$^eTy]f^e]5tbJʤq-<@ztk17=VvW>(rHZLSf1O 4PC؀ 5}b=#Eu;~SA>I2u̲ EXfŸ|1_{FOZRz7yKn~[,C~JUNr VP$ub_њLM?Ig3`m.c3mA^37; B9-94jLMsWjO +e,nTفOh iAMWAg&_0 1Gz̮VH n,W{Uve2dBCg%u 6VV` ni I,~-Ϯ3bkS7?ZIΒic%Vpo©gY |^8o4JX\w ]Fs9AG/+x MG׸XJcaq[64֌IQ~XI}4#9wV'ԌrUˆFV@Z|0$1Vv$m j)new~cF,i̥wyD%a%.8eNӊH*#oV5q NP ZuY6G"PVb7Xޡpq_lNJ-" 5%Dٝs| WV,$g-X;c]k 7xFb'2RI6ȝmᇶy!ML#1|E| :"lodsnXVqχ uDƶ@F40K]5j82n1M# 󍊜i ]cO } n7n$!mq|IT9#Ul:xb4[<͉SvYDJF@&e+U4ŁoHagbbZmYM`w:>m` eN"m_F3o`+6d<5!sR/+դqk;6ݣs TC1T"$H-{q~/{Zsxt4y C,Bpַ s.44ɒE(WQfaiۀUI<yݚm?GYfgIsS /7U=[ὭrzSYs{/=_P88rG'ߕasj"kU2M>p/겯3)frO&,qrs ,ڽkֲAReV6yu {E4}@*% =::Dzp1g3O9?X1I)|PQIR'[~zbgڲx9lapl8Q#:Lׁk~55kOSSLcq4-&sO+Q,gI4g4JnҲӛv@sQyFg#fߖ55$n&ֺci|i@쬌o1)I@6#-|m*k܄ aД6~X0&2 jhw0 k* Cߜu_B{zJjY5uoņF%A$"EhG`=f_IiN 1pTI# [TE[jM<5:ٍЁazh8 n_M2/#IJ<>][pqF1W,}aO8V q/M8o)cCXTō=ޅ<E .姖HIJ.z=j_$z:SM\)ZL}HR03=ve=GSI2FԐofX?kO}vQy*sA6֏$Ȫ>8E,6늿<өb>c=;{UQd >6?L))`k&EΖ䧬Ei,ʏqWvW\aB.H=G"WfZOZ$KSK&ۆ$8`GPG=0ߓjijej+՝*<|u65fsK]13AI2lȊP.l:q>.d'{GyuLSIӛDz`=;ON&G,Ǻ ia1AX aRE!K oPg- Iɷ Xw4.v[#_ )fpޣ fS[FdCE< O]Ҏ#G Z}QjJj_ U2Fob.8c:7VfW3!Y[0娚#4ė'ܟIs dSWox@kl|J$ mLH[$ɚ\-4SV`x(@KP@ ңHupŭqH6ԦL05[7{Iu*jem K1q#^R1'!ˊ5Y6ܛ(Pf ύ5q%ٔ4p=7$~L3P;WS4MYG!=q5 nspo+<špmǶYd<~_>l_Lj"-pf)0Jh%b!PL cQ(`խ/U)I ,sÏPd` '9,$ʣL/̐$ᓏ+.=Fј ͉6Ȭe:ry : Q= #W*~ІhR:VYLd+9@yU*: x΢&0 ޽-Nu?LBѿ`k*AӺs7Z,My&[Dbu,=jh=4 NxZԏ9k=9v5 }>@%-cԱ[rI8{CvS{!|VÜV4 /Z:8e1Iٿ{g|uZ"ӼARG(jaU@M-8le{QdWb46A䙀CܛtQŒjL*->o}2Vc)pO^'ه@uvaܖ cUfQ8X'7 D"`>qwVQ<%cMl\ jLxmSԻ7 gJi`qR?Ɔ`[ǮRj)ngonqf'q-#*?B98m%nG8ݶ2:M "[卉fK.O1Jjf,F:"sYOkƆS.~GEH}1gtF5t(28a>D 쮑dy?(eZ!n &f_͑{C}"9Kd>-ߧri<=v&ȳͳ |CgBO,HcBNetcHG XlmV>v*׳zԭHAY[ŕϲ 3#llbA&I3!MiZ~}|pl .3 (BZ#AG=$g ԭ5p؛iQx3 xvX5cslRL ud#P,mtnG? ނjl(ؿQR;4G%n9/؏~;lGiVֳU*5j\ݦ#xɬ;EI('ʡy*vma?ӪdիwmJ}qg5og$ݞz: tF;6}?%L P@9ϺI[ 6e Y$('J*:JXSy$ 4rnPqcΊ2CΞuQCO4'H.&Co|w/O'% /=Uo!G$:!n|oUh\K._L9o o\h&tsE~kaesXH6>Adʠpf%*01> YePeم*̎9(>afH4Jnw4m=9ݣJ-ٽlp_9IǕM$M#97mk| BCo6Ps)n䑉p$qYbNGR!l+657ǜ[X{V8Xc}Rr Hܣ9Q 1o10:ScVDG\$joރuL2ǞOt,bt'a! A¸j֚437z$HJu1+m7xx-<'FT0X )7tHs{t[SԩR⧮7 hsmȦv}v81tqbx  8?[G%oN*MC8j1 S,ixj㻓:EP WhYT,2Rn|Y[-TJS)`mP;a#%okZh-OQ!A ~n?kH34($Ԁޗ8Fg qu𕼑v%nM$)IsQZR@Id>2S%d28 W0V!E-T 祀ǃJ]uY.;|R7zT;(O,8MT*3a%D2/`NP|^ "K'kvPT]/m!~ii qPVW嬯QY)7h61!KrtDZrUE8?UOkn+1#1Sė,:)~s,53n/G6+?XG:~"m[Q&j-UHb03KS(#Xd1xx#:К"hssbzVwx9Rlҳ-iĖ3zu#t.,8-t`0 :*$̲潘۬<ሧSsbNiG v$Z@NT:QM!Njbz-Iߪ%U~RX!J;qX!66CZ ZUii˲J-'a?}C&|C6Cő?l׸㵬ybؘ5~Tg-ѰzDtᾞ?/_XtCXYTzvǛ$-81cm%xbN,c F[4/j]Ic揎G"Am< ZP*-6 a- ^kgjqD$ tpJ,n:X #y '=6j ~2ˆ%.@_k=ʥha$PMZ+haK-8nM,z`V4 15)#x0%6#BS]BkI$jPZ`L}Мb"D\0Ǐ=Hq&do#Fymz,exѭFG$e`V=bkA;p:_mBJÒ_tQn 9l{{#Dywvs9.dL[Թj;$5&GN1Ɖsjuh"ְ@1neS9[eQ!ݘ䑹* c˂lHc$z)?>G `^f 4ʳ)6Rc r}1 HD' "4].&&Iz?L:ENe3:x]`-ZZ#sS1OG -,RwJ>~6X4:;Z8S V8(]8f?aU̾*oj}0X? t#SV/TݶW?۴4L c "ָc۵X\\}<, VZ-rZ`Y'sn -X@ysU!j}6/D8/.~\u‰s)#=ME.H2:Vd0M"SSIڦ>T~rvpOVL勎_jK+\;iؘH:|VD7UGSV# iBDt :6-ua ZUa968a Dk2H wTv|JOf9\--}?eZLQ$ϊI1 Q`؟x3ӝjL$x;%( sNI@LD+5ɱ?7)2+;!P~|H姆(PYtņ MN&܂>gC d}Bk,:2ʴU%U7L<_ˮ <[EU*黡T}FD&9nA.01[\R`^,TuL-Bܥپ~ⷞ#5?H_irN=})'n\6U96!#mĮ3k^/&/t|V[}Z*d{[V ,#u <>?n:ɐ.qSRyZ׾Gcُu67+n7_&A9N!crO Z@ *0'3u tyj/zc-SE.oi֡ēĽӞL gT`p'suRcG~8$gCw `MDM":7ec|dn.>n@SRAm Y@!92A7#cpT<=(8F 6ƂY>5KE/j77L#iBWmƷ6/P^H7XR DQ kE}}o>]1;75Iز<bpmEߺ)6lWoDl,:=\-3) '8sI.M74% j%~S,#P'B٥ RGF+,]6䦍?/z[ T/,kUqcȽo•%Zf@6g[ YEOL*EzĆ6nvso੤=y,:]Di66Xϭ덈%HYQʒEus-oaBv7Yd(%̏3uBw ' fO[5-2Ҹkxw=ېu)uJY9]X-o(B4Y_oǯpns/vk0>MJRsu{cW? GEͦ3$?vZ~m%7} |K4Q k|صOYndCDŀ*4׃?.V7 >TjKۨK.}yniu1MnBdRC.SqZxFyӻh35;\ċKe2x3L3*jDRarJɦǐ:H&tuxpuck-0.8.2/data/jpgs/board.jpg0100644000014500001440000023150707562713365015764 0ustar noorkusersJFIFHH m0ns00nC      C  " X!1A"Qaq2 #BR3br$%4C ST5Dcds&t H  !1AQ"aq2#BRrb$34Sc ?ѡ^Ogso3J.&>puOJ؇ ?R9-K%SW/6V7)ZB|H{sG Ζ_:tRVPBcGƞuX槙>Ҳ\7:)]b.%]+ -kdCv;{Zb1E#\.ReXe 95Y" \ RrRfE+.PV*WZ+N(BWvCHJL+7(eJJ%UB \x"{Kh5+s3 NKū)}~֧8+$˚e ܬm%?֣16l%%hy-pPTc#p6+MH:j&]beA!m*6 qM , MBM=g :;lu(zZ:_jM=ywC=~LDíBS$& һC(%J Gd$Z"-~4 =]GTa8KeIP<@s 9=R~iiKn90U2Kv@!iQJp->ýt$\ jJ5QeUYɉLVI%DpDW>..:hQP N+3Q'˚:1};KqZMaG*& ԀHJԠkH^x#Ψ/ejs& 8\%A+):u]r@%x|RS;Zlā}msp#Xk7{t;/)}(}aj}T0׶ԛ2m7%K'7h;øfsgp'S7cIɎxPqn~u Fe?e]eP%E&O8¨#k85%mhf<*Q~XLK"YqR@k{wk 2*?X_c*i2l]Ҕ+?Fdߙ~XT+XJ؛[3| wf@O8 fX]d\yBMՁo6RM ʓ*0O3e _Zru(,[K˛磣O2SRS,~PΏ ) ܅|=LN]̾昢2s$(IsS#dr3E:3b"K$-/HeLRU?$J. E~YA?8}VJe (UBJ0-W+V!I<#,!jUwU{ǵD4Qq8kXe]n'Nq%[*V[F\ē8l9qX֧F, U7+1QpξwW1lrl-ŸɆSuɅw$8Aɕ_acƀik$i%edsLpԒ|Nb$%P")?TX(Vk*qBLL1O.`Ghܙ?2`p$Es$S sˑħ*'I∰5 Eӎ1sߊ qDH]6TL}qD00;8*bE=x=TX\ϙւ.yăeFSւ񵂕fyCJ-`mxC=`o bLƼDq `UcTKnp`a LVzUcOZd%666Y2w\,N1ln>gJc~p;T6eyUL.\iy[bcVKbRiS̕ ASnw#C&8ezm)O$qBZp}2-]gvJ9fQJJl)o^z[ߤELjn&b)4zClj2/* uN %:-LM2bu6@5#&' Aӫ H'6u vzNj2k[GRir}I#A:Ek3#2E^SO6ƙҷF:Ņ]$>ޯXs:eUdSHM1gU[[Jq~Ȩ0X&;uFUaR}H4;P0Z YX_!Y7ZKNaD';2,H!O>QɁ®8(|OȱCbp6R*@$Z}TuٛZTl{`h)j%IA!\9U*/ywQv0wh)?*@__TT4/b.+ oE}ԌʥW}a'f/ 6m{"0qG R2RGTeH,M&#_p\>r?|0* DRM Y>$"*0'X5Yf+SXIKR,SD5PN-8_v[_m"Z.hAlQw|qO߻ x;)]+&9{MЁ8Z$s0Lr$tX=9sI!IAsV!P]Qc$b07uJh_|% 1`zb%GAK2l\;ohY&Ȗ : "D*NG!; lH"αN2n8w  J<͸o0t*;P 'M:$Cy7  -TjIslyP`<ԭUX#+]He>S }w$e哹:yͣj̚߿qL콆J#]*hHi9M>lVFSxX(UFRDŻ9GtJzgnZcr<:9oo~'pF(ԭq=#մL*> b4G/.є ](X@%I73e<;QU(XzpX}[x{%n_p@|}&b^qz\zbf pF>uNCq-YeNd.lJ5&?4o:.>#5jc3W3ІtA 1[ICW؇ nmF Ҏ#D׺<ѲXbnNm6+q]FjQ-9i+;IXʠB. F⥨T^hk 6y!n/"JQ6JZhLXMs,ZQ #Cs=nTܫ+S 7Mߡc5tCeof)RCEQoQq0>z#\NոM7LAK{2#PmL5F5B5ٕXIqз;Bʶ!T5ԯն-J7L!_h?HL[ OS1PdSi)]<,5 qM'k=w L{Kt:eќ$,Gњj씳3O,dzH %SS`?QhM,%[xTeتL6WJ¶[HB[ Њ{̦TTw+)RKel|,zJXHsaאMQNcc{7F,( 2= b/b݃Nl+w6?p \rB yzvaMeQvid}Zh=Z3Pin/j6>QR$SJJژXWlG(q(Fu_uaQg2 1[-Ig3(g$@\\mУx?RCYe(̜mB>uܺPɱ* QKvViJ*!g"Yo'0h屇ґpWaA%4-.[u]'. dc4j2YJkHDbTyIGc{$7_+F4Mv/EV*N&/6y.$r:毄4}yF 5 l}W\y~E!'9 {Z  l2RtIPUm"'bֵ,uK¿-y^bt)6Uh!71 .r7 %e s +=!&BBBB I0 I@IBd @QB h,*]+"A.039$A !S8]Mu8U lT/7`BXN-~hLwPuX ƙf6&*o\+R4B479i?#sd$0C ƔG$qv_H3AIoi\g66% wmu{4IQS+̨va7020G<= |0@޿d} #3}ꔽ 2К+r@HA"HQNCf)kO\U+Yu]D))Q̕AI$9.4"=AQt9:(Z۲T תTW0=w?9^&b Yͥ7ZwVUWpq`SaғQ24g.w\ ^.UizBJjaR)akn]MU2O  KUɵ#r.zE.ĤqN&* ̰"kM19 ^ld8\X}uY"mӉu jY0UxZYyO4wq#q(M=ѣeSJ,%*E^`;}1UeZG Fl[)KIʾ8l!ҠRwH׉+n+Vг=?Xݺ&ĩjaCm* ͔R{3q頧۟ќ:ꮢW55tdO&쭚{)%Y^k"؞h^*8*܋H#v+5R/+M@KmspT/ox0wFRˠHN0UnUN\-ǙG^.K,́\nK!4fc0@NP1?)XxeCQҤ4r|AеG9KN)lw7^*DN 76(SYmQ8J[zC49I%\{|=Iv*a@zFp067l(%k *NgJs{Ee),Im+"O>9ő4 XH;>: 4W$Եw˝7{8E{A dy I W @^X P: @ @ @ @ @ @Sx6P#"$Z q1&{F9=ȱVP H[Hp" RDMAr61ܧIk@ @ !s!J(@K@x{壤1&7AH{ byP/JIU'̋}8rjh稴!"+ď$Y ߓ-u{,%,$,Wb]g1²ZU##X;pøUցWG{)|" xdK,zSnc)%7J5B 6s~Q77˯6QٹmjӞdF0:Rl\ﺝ!`}_At2-R%ҥJ& k3zc\Udiz3HXKySa7rJ+LJɩOB^S(=5$Z41J bT&0BZOU@q+w&tq"IL wW#Fkih;e6%#b{-gGZ>HXZC8Mr3<9igp,I6n*IӘR*%jXryt@iE @ 7U:W]\]>M*5S9CN3A(7W[JTԏYʺ1e$fkt4B& \Z\RNVnض9&ƥX LK[16$Nֶ↎)\m} ]hh:ls0- R)nQ e}6J2[17ꛓXoO⇕ߙq6mnRsd9deC5;L1HrUZjs`J [%#E%C{' aoeNMN6X%e("륣CBX XV57&.nPfZZa)V71*_mX^NN${: W>Q`yO1oѲ]0%*-JTn`S.t(q~"2%e0īH`,E1V_Y pGGNu^kN>!Xz@V&rFIİ"kO:tmGŽ<;5;;PFO]J@U3U3N~EۘB5?z/'n*VBiʉ2I$T@[|0;v%u=25&mwȦT¾p t ٱmJFGDS2P"m̄NeΥ/J&ƩXS^3z"su!u)sQs{Ҥ,$۔|CI*SKl,20g{)0D!uFQܮy'_NxcuKaJ= &Xfa d8Y\D-hĺtaI b1lu搵$v> =2vjĬCE)\aO!MJRY!G{Z3cb*/Ѯru!ﹸj&eW$kqEI@ڛmr|t LCOXi׃l$FX=#VpP+3I4*5tV %FָDyǛfZ2sSμRG-7;P\=4^:Gm6zfAM#k\max?eLVjԧ晙|/n ~_SPqWI93eYWJ++@NIJ Ca].F[0_Z?H28@6]7*^lW7̲0nT;ʉyyf̜AUԹdDe+d_hyr-NP1@!*̄0olK|DL/-0N`%W|QUо;5Ѝ~f Ѱ[KQY:L2r[s)GFI1?O/($_ytZ³TSr2mՓu-HRT u'ss*`&:4i4:hWj]@ DQKmE_" /1Su0/5r@N-J2[Ae~C(gHxȔښ̳ڰΧbY(ga6*.-7*OHK(3Ld積jed!bmn%(M Xu&~-Zg4w؟D 8o.bVb.46Ǟ@: hs Ǖ媜rT8dYTmX Il8ydZ Vlwhc۰fRL?xURToA}\WZZ8+Y20n]W6m{"vl$:3xe2"MʹUwT-|76Y(7Pۑ5(Kg0/7êGV>0cPgAgX*ΐuy$s*(4F&3"J @ $ @ $ @ $ @ $ @ $ @ $ @ $ @ $ 84cXI!(#BD ,ڮ"lH Bq`u $+'B!Q%*6uf8#xD!$$$Aw<H$P)KAAW`@rdfm7в9ŭ$'AB !*&QȴV%)Ko qK,y,E-Iw kw;jDqF5PA]N;LYPPEL& kO?G/52V'q<#baw&]@|ۥWoCVm5ZE!Gx5sHfiH܂~ ]J̄De+ŴUXVBwܫL(5&7oHT% i^]zbS6B"@Ϣw?~qUUtᎳITҼW*N]anZ??d##?unF/m;չ&~+- nR~P̦["54PNuts;Yv>z!yp@X6"ez9lbePu >!_Z@5#{twQ7V "lRO+Ҷ dgpv;a!Ew'5!MWf~$2|,mrmgr!%>O0KeSQV 1պ{%.A }WtZ AJ D$I$$$$$$$$ɹ݂DP(@Bh!4Q,hLvJ@'FE]T4S)";Z (hR-N$$$1)BH :B4Ǫ+ i,aaxR#TR =.ɣ;]J=:)9uM; WUp򿔫M"GuN\ EĪ PtX*Bu (:'Sq ]J ŢC #0a^B~]J{`]OOPsRl"_ٵWBg5EIҽ4O-""r$楚#ie&)0 aYZgS#E4kZ3b ]7ŗaqH8hu-u:߳.T"\D]w-Δq.S(4Rd%ReD3F]5L(. ƀ"<􎅍6ΑK@?Dr!'AJ[`qٞ1aЁC GbQp=|au>ق*~O3ZҢFD{S"jNӵOߚ~PC8zmt#$}bY9)nH7Dnn NN"eȗa[$#FUs23tF h& 5F˻.%V[AW9$.tch;L)z .be=%%OCn_[Xtﴜ%,rS _"ChQ;D;V#Sx7&f [1C04yeU4׿E`J8Y9R;5__lk,edf<W+bl˨cؙa hB$@B?SfQ %A;y9K9IJvY\^EED n]({S"EFsꉜCܨqZ-Y T\ ־cjYtpٱq.认GB/K";>+na$;.–Suvp\gJAQQIcIeL86HH]=b #L>:D M'"gS3, }) V㦝!4AZ6k86[pG`1qKnO5 s c6.<ˉRI ؀byǫz_Mǝ `(+|T I(RBf](;EJKKRL'75Xls]ISkFi8ژ 9v+|#BJ #/<2H&\G3qE̻6/K0D+CR,0~#K_TĂ49]}a'WyÇE|'~:叏>_,* pχ8Z;0$e kAHA`}ߜs&DdB?w@:? QBATTX9 0cC Cj ;:%,€̷x@pH/R҅ac..4(*zqZ/(>~;̦TgVL|Ӥinf[uٶR|#-3Le=UYLc4ҷ6/Y[a?8pR')V<[[SL<J{i;6ʊ]YR ?8Z*mef /;7LdU!*a|{mvWY%HȗoPy!ϫlL+9SC^dqA՝ r[wrӱ"i3΢on`ʙM*I *4m# "1^QBUε]I8ٙj{,RRS. S*=M:ڌkYjIu@Rryx;T]p3/έ2M(iD kǥ?z,_9ZUIRนW R]Kne9sh/08SӼ6#ܮ:$X5h׳Qax> V'푺[p斸31RV]/.^i oaHu5),ZVһL&>N%D/V SΞb \sD:RNw8I%iAlQ{^ {~ʹT.ro}7ΐ5M=N#f : Y|"܎Z^f:fsFaly' }Z%/bBYXHpX`VjbSxt:H%d-F>T|>W<j]T|%J^o%ʕ$PAc R;SmEGa幺?ec [qYd2w8DdZ5yΫmIIqS8`$>$熉Ǩ.wDhW?YN3\n4.ڭ˘RPdj9Al3Ԫ'NtOdnn[D$*O)EcE37P>QEb>HV%qcu)v <|aқX=ҩI,V&sX.MwC7R-Ϭ޹d6Tr:ڋ82.wWA?[fe kF8,ЏX՝NYb׹?bV~2,ߺ-5n*h%-H~\^vVAHkA\AۙY!VRok}&,T3 . |-~PF>C}gUB̠( aIɾ^<Ѵ!Qhi0O+F}[}aVJ'_(Ʒ #sRBn-#^ӇF49:79JBa[3 ~>V-%UP袍l<99[E5 d徠k]{#7Q#>I~)R4.dvmAewX\NX_6Z95x6iq,|y&: yt㗞]ģ9C_m $$$$$$$c $ULAuUhp|AxI$R( }`^$Z}c6שGue(bMFxa8iQStN.JPKvljF~%Fgo/{\\;<^(Ԗr!P6VWIi\d)hBP2IX뮿;sxH`5NjLoJJq2էwLZeEF0X3\w\a YaΦݘym;|S2X(;DG !||av쐴ب]tl #tHp( etIp6dÀ鵣 E$ @I[ Z|U[4 * :wnIe#dOXS @DCV-FF5uQ&;lyD1>l ¦V@We[)>kҳ%f%6&k?J0F3gRJ VeqB>Uc jӍ\RK m{gzwO uIFSg"NSIIC044UrY kǑ"\fqhX_ u_vudf괺LŃ_"kY>0My&Eb 9m-HvkFnYK?σv pxvqHܺ> Ų Se%4Xf4K0k#0f;/ǟ^Λ=V;dʳӷш1ZԖ7-lESZmb/03ڲkz_S!ui{.T)%<@E+]:TrJPHѥ]Ksu7yXR@Kq\ D_F(n\y(q4\4$(ˆ:dA7WKXVYPiåSp՗[}RJkMН1([!nw"Ia%Km~*G .$7#'SFmq0ÕiWrl5eH'B4Q2\[Ӈ$U0i=D+^ڦ.ԫ G&$)Wx,d)M-uo(m]  sl;/ũ@{o5cŋZwNcvbO6S*). c0RE+uR^E*z.OU@EEQ`Ҳ HH-,lvU,zGd$LZs0^Ő;ipO$&_"s7+C-}d7VIC2"q^na@(Y6-M2)9VjBI05Rܕ:_[rTTuJo,MOV zPMcViS\G&[IE+8IBAҟt"f&=guć&}N>( js.*R;2i, :8K4T+U$ׂ-TRɕX Ejvg^(9I7+V(.SS!|j۠SiG Pd`:U/m%:!go4;UuQjkG-Ak-$R*iX,GrQ"M.i55*@8.51􅝼y( 0T>\oν>P0EifMW!4qMQp"MYSE*%U_B9Q"L`ʓqH~?u5=?HY>SF@_-oz^dr߄^7?HY6SE$F^Qq!VeV].e?(xPR5: GYN Nu",?}c8^"Ispwx,\k ek͋M/1-c֟VrK0KLP|oč0e%r/qىWtd%mJkم/jJ IjӧYhpG8߈21 Ӂ/mFǚȏ};ݯ>mwԋs8TiA72Z~%'|Af1и'[1Xߝɻa sJ`rCǙ md0#dS^D``\Zw!Óz8_bqvod'l"Wh/ч5L\aHDoassF*Y]:-}3_YW٧Ps(kur/rvkM=C+ =0;4(pok }Ký..veK*(;z9LL2 T[.q"_kO8JbE_Ct,/u,yK}^LDhYKN*{xGуsUʙ !spZ$2(PyZp0|PۣzA[jmrmVa JRqG S7I}1.JnVyw|f7hX`3E."&a#8t@4"tqLe82F#(:5N[wIyeELH'(ꅂf%ʴJ?(]VbI-mb:G*D[/G#Qz; VyIyǛj\f[hu*P טl}.}`0_Z >TZ^rYU/* m֐-{(b~J?Ղ_kG̵qgHk \"77iq:ᖚ0 $҄7&6(Rf0 e6ٰ]JeuTê?(w+ٕp\asC*ԐʖT|JEXӿ\6K$sȿ-6p{dNuIRGyR8 @(Uԥ[$E@!Į*`9Ғ.[NDj.>ZP .QիE5;7 &zWțw%~Jk9oE/Uf;"^ԠOn6{~( w'Xl4K~ȺNms85j68/M>}KH07gto8|է*$nX,W?/3l<R KkMZQgy^w# N~pGmꂼ~1,:aʐ΍ ]$;CT\H)hJ Hv:M<*FQխ{-FE4&F&ZXOzeqImr;j7hԶq{ۺGUr` yP5 vB̡r5uOy{w|!FUsd׿SGk .:%">wfԝo3 7&eEx Ju4&R'[ i RM̱gT.LdUHѝ$CTEINQ{?Sf*iRe rEo'zDl-i*Wӭ߄Kt%'Y魡4#EmynO61~OV*>IU_CwI5Wpܟz;apC`(HN}GuY݋%q7yfRR;[0 dpQ8aeeZZNC+VZ [rXd~RL/,@~$Vdz#KߠS4c%UfP-a庥(pweM"UV;A)K _@ Ff.:"bRߤ<}O{%5 ZVr#_aZ H$vm1HY-eĤ Tvm}n@+ d &uiA1 $X-˕eOXep̠RAŃ$ߗa|,4b;:g*%(O BXKR[UƶM-ˡ[MCГ!<@ИJ@.As(`"V1ӑi)N*RYHNVI+t9(ﱉU,Q^UҔŮ?PͶĬAUIwQMA-{oK.}t$} B 4IJAMu;[, J)S2|&A~ɸ9!q.UbI,*h]zA 2XZG30A% "nQ&Yj[ v:mQ&S0% +]ΰ${pFŔyԤL܆^y9Onh$j2]88nHA@qt稴DȺ$lQRƝR{ÜUrF.# A v)4ڝXpڊB'T<"S2z7.s6>i>zn%YUv;+xк'=EElͥ346giܤ mQaut ϚG1?B-ԥ)6ּh{*mWJHڈ50d9J9OQd:yj.Vw׌pbŏ0cѽkz:Х-*|b>Gd%A$uB_Kw)QGOWW[<P{X|us6~Ew-;l.*JG' -C4ˍ(%ZucS l *b^A&|X6* )&(G 3Tex?:;Q1IS]q%srzvG>1QIH6isiE>s,$,TiHi cqzXI[gLUNeJCwFts,͉7?9-A4{ ꕎp.L,n2|#'Tq_s jn&%KQR6 cl \}s_QLs?B ],ZyLJ7du͈5@1doZBpD'8IP@EƒF{HRxF)̭^> ԦΤfH$) ?ôZ& cFԡE)!?*~mAL4Iil}Bcٰ6]l &FQi-;:p?h- jl\X/.VN{eBImA}_y,ng SRI: >](TaJeLE-9QJjeQ[R%*YRYFS ;$dj;e]c -54{ ^\WVni{%y^Bܭ]+C*͎@INV!>S9l8mIJ x ۃe=: odK<sp2) ΃ob.>,d׻Cl o7 `x%uڅ5b=j+TY\uf)!!/ IWWze4`ET#Zse-V+Pl"FuyT (z]e {B1.myx:tve/^a|k 'IVs.Ǖq#cmF l/݊Ћ-`؏X \.,WjXTh:yC1su-;w]iIx~F q IW]aAi*srbir(]š9,)Wa˫D YQXe'DŤ'R6mIOIYI\A5^ I= ,.ͨ"sv f%W{/RRn(j]Fmܪ#vRURU3)]\q]i[3L͆̕m#(<3mUHQ@f* Tê@#ЃcϿcqHV48}Xrrl! q@[1ʑ/pj%qcI:rX8Z۸kEÁqZ0Rzɺkf=Pp:촉̥lԲPH`5>ޛzSJ*+hn!ګӪOfK (K =MaN('%CKo:T;za:ffjIIi $~~}%k`lG,Ҽ摄Iq ~Zos/GT鎗&FfX~DTJ,!*gqJZΑqE>a痑VpmXߤ/.KʽM8e%4d6N*Q'1oi+9|;g\He5sgdppm,iluM,;KQ7N%~jIVo״8'ȧ2;mTHH j~?Q.[  ÙܮҒ iHΫwwEwdbݠ\=z3uONO^IKRɠ%E7W=j3J= LbJ.)C710*= Ws&3IZ-bn_SܝOI  6)@׿XO.cPmlYNb.bE\RcUʛ A˿ HqH<}LNTn̹ (χӽB  |>Qf촰茲aONQ-ӥĤBm]K>~>-;|`%AD]JGpLBj6,5],;(ÂIa ꅬ>XU)M%զ\Qĵ`;,JUf5֓bx<FV(č.>lRA*x_KXchMtZQfXm!H=Tk8 O<ýrX`stk#T k6=pX C`)@_mD/P0S(mJ.9mÉ[S*M|e"|Dm~F0Tj=VM1"e 3R ]!/&8㮨'/Gzqn%Kve~pޙI«mnA"O}?cs[s|˧F\rmwYf75$b e+/WUIvXI|ڟQRFTUrm{GA)Snm[SHIѾz5Gha{8u_bWq/aV 䐄cXRB57Š`7HI/om[ ~!onRtn`tw=*]Pq+TX.^֭,/`3_"&[LTmÁAQ9Ea7'b2 r/~_b{),ҒRH$ [_ScNF(tr 0NY ̢˩U/@onQ31Vq6Yl^P=[;/T:R@Q`i9EO-YIi+KkFC@spX$ۼ=ΩlMq/U,"{VWG!ȸacս$2% [W6lH,5C75Ad!`[`N%Ǐ!| ϺɰUl*Kl4ǔ%=՚zYҵP[Ch%@7HK @BEF&e MISjo;(q[%D% ۼ):RZZ/ĎYE/*tj|D'S7*Ԍ]RX vG1fKJ˔~iZ$ ֏Uhr} *{GGM٭/;y뛨ÅhyΩPŸc{ 3wg Ř*@߿OCx%Fl)2Bu^[3Qь,r&A$Jsdo7[s[%uztœqTl/mNnqShJ%u8Jtt;G̥FZbfNnI.\(uL);Lٟ[w" &Gc Yø-%ouUWVM@K4%RTۀMǞqF b ^[9(yvaTWP(,w[~2(eY T't>c|:ZL00jGVrM/{(w+ UЬX{]teX8Rj\y#YVS7$d"TߒEbeWdigR!)c#Mok5:XZ,v+"BAJ>.MҊ,RFCe EёQyi16V wʭ4F7ZƐ^9R7rkES0M (Xö;)]7ZI5P)BdS}iQb 7J5ċU*$0Ua8+Z`Lw3\jp㪚+ (⍊Rw`E]@:MJ$4P!*o}f+I_20o0&KGxۦxeOb,O4-Fy+N}Q.$mc>+LeQ#p/}̕hTd*hikog4)noOiŸi=4dn%{[h&Zo3,@v,̥{?5u,9 y80fh'DDQ>x4Lj5(vQ\e:nA>9LMӸ W -+f IIG1,Gs%$X'u5[xtYP-IJe/orOa&ua%Cz:Oܝy 2΂fq\/ŲN m碏L7dmM p2l]ĵ7\Y7h% q/V %)J2:6>V$Ua=Ss1LG=\z0}~pD[:w *~8c_ fW|Wc!]l 36NAH;Y) %@o쟎Xm (65%cq!I` u~q|o,BrQFT8v&h<<˟jHѴ*?㝩]%-84Kj+PI)xڄR 6! ڽFe_tit5N.%TKmeET}8xrʷ$2{Mo-O}$b=0i/L'ߚbVUbBT.:f=70켩mRrX$WG((R.)hJ@iIMℎ1g8UpʧU(YR87'O'3Q(gC$ XsBRsZU /SbW_m2-RBiݬRW@%8[e Ĥ^>M3I)pԋ(ga ZC!'W/4T圔f]i‚R`9"AX,:wQaDS -KN'>mNmw#`EHL>% ec}a8ȜKמojŀZPu SUx¡U{Yӕ,֋k-nOlTl"FRr]IH)@m~'3d6w*ٶSe1R2$]Q$dnAoJd gTʅJ80ϲOK"Uy))Jg#q,Vw4m24I.:XK)'e\>;)m *]Jm,yE29謊XXI.y !.8Rm}@Q774 ^k.R :KԐrYDhtrۘˡAeJy9Gh hA cl>@:|;38Jʔ?iZ> >i0LKO/=3ׇi[z),zT!7KT, [t,|w&ïcygBY9\gmwr#HLپEh9z4A=j 0WUGY>{+0 BP"Vq.uǏͫ>m\a=R+mYȀVEW^ٌ~w,-G2葯Оޕ}%.2Dy1I [hsNpS7;BMXشR!6S`;Z-\jbEr%xXuB.XBXR17L PCFIn %&:\<#b7\Z/tqIxb6T. YwB|a'VD -읎\5ԪHQNk?XVB e*u [n-| ~qy06M޿Jbį^ VS aafdm`j:|.Vos-MJs/9 +.{'TCW!E.ZL*\UQUUhWAAA;):XA,~)Ɨ&uem~@ăHʧ4êN8- jǀۯ>Ne>"349MmajZ} 1?7.Z8N)?HnԆļg+ $ ,-u!Q(8,dh5יPrcNW>0+l?~ko!у}R.Yκ7w'/~0^)?Q+sLx U`2L7J:zWeǟW'!MPʒ&kٷ^]-چGWw~D~|9GI7L8QOicҟyI --J-몝U=kc //]echabux֧0Yd0@̟ؓQiSj$2Y #s _ MEո{YGNPԦEa##- @~$yJ(||ξmo+̝v祺*EYe [IO?#/a9[RU$_.q}KsEjEZk,-N.NwHP{;394t{t$O#Bk a[+ٔv?u[kw%8ad-UYEQ ;"ܓ}ȍp\ᒷN>>1(#T,sV G'&Yy+:yQQ+bJR͓soOI}4$1V˳Dj {#Z/ 7*&èXYM6C'*&mj+ z0X\/8Je6Y|Ye*X1J/)\ Q7h$Un*nVu(M5,]Ĕ쒭<jp\A:FيALixGSiJtRRJ]̢6sKkcӧ;Y.eO5UeBV,U V{7zd%]}6Ci=Ԟ#2(NRۉk*Ԣ,{ՠ:ijM$B\yY#*u Sbf/`٦V2˕!ki6 CHbyo4|9+K 4")u eW\ m~ީætl9 >%+GJ_GU`txyKX}3 n{OI0- 2M+{t4LYrXZ'oBsj^0”J\P fV)?k8[ZAq}l8ڔ@{Xڔv (;r;x-]WSupӾ ʸxj6Jdb:M( =8 1E_Ty!{s[:((w{(U;xDxs8qZs׺Nw )s2UmĘU&`LohS/~&Ԃ,AW ަM؂61Y3 <l6+:Tѷ>1Q6;C|As: M;dxqck*vCKYC61`oMȄFXX'iⓃ:[-^y~8QB xJAKD**$*Л/hݒL6CED[E6p tl!f HP4(&Mu:| ^HINË|%JROx`0W6FU,FQ%->hSO %?j*l UMϵ x}H%ąL5} )6rb`i~"OҭjEEMyLgT%[%@ҳ?M,hJ4m$L0u6 l>JNC,+ "1]**֐I)Xi dgpRA@T}LҒ]-*j?LJ̌_aPZrlbx[-U`9۞c0crnX.l7io8J(y:į ")5I}L[(chIp$!We})Q3+7@qݱy_O+|c#{b,k &cu=|{W٪UxMeA|`52mdAotx͹Q3]<|![n(>\}cmΕۻ_6IM)Ix8{\c%Ih?;Ӊ8$%{72RE9]t_e.F1:{kYl=p#îUŇTiaR{39mII=;'̘uTM+ȚLp *9"MSdU%eӝiIGOC4)'RBZ8jX.v_qAEb6P꼯 /=k+KKSڮBlծ6ߕ"PL^qFrM4އ{aoq㎸MnTOpRR 6W:һ Ǜ8gu׬A<$ ;OϢY-+Q0k [oBrJpJW_CDJ&\kKsm!dZ\TwzEpo}9[0:8ؚ\)>PHM\Xqs,.Aeknizߤкe2T2Ԥ(hUxj֗GF^rCD\o_HY.]3Vf!ќ-Nx2N).؊eoM6t^@.4UyYUֱ;R)J.޻ӜX*cU- %%uJm32FCoXfailZ:n1<ѰJ7UꆇFre=TP0Ke`p[oW~,EU*ieBT R;=gAIJӪ.em|(X_V>g09Fqk頊ٍbna ouXBcRyXZʔ2IgnvbF9%^SiBEZfmk˔_eұHc"l9% -&[MA**j^P؋I?*8ip 5&y/6aX"U%19ix-Y>BZm֑3ZoB@YO&wCP$D :Cqe_}}Q\LE@Jt~qKU:lSklYA૘cֱL8K6'E$huOfuYB^qI TE.Pn(7"#.s~i2ӮK\c>Y\;1Ju֧mQSn(6BO;$r nH MDúC~n]!$$jque(,BZ!yR{N4zMIDy$D徍 3~Ɠ%,YbRt)3ʉе$%[`w饲qh ;mv#\כrT7 ^]b/==>5Ft3yJ)Wh[ #P UqټEe DiʣpRn%e 1zLK: [SM\ !*EJ$ t`*l]BZCM .+^EńPM eb4J܄gqyH’jAN6i.!8LeͬUWm<.;g䪊[iA>"ny憎Vu"6^Uu>mQd9V-}r{7mm`^RAu%U&$k Dyqb09✤v7NSoӵju- َ䍻}T;fg+( PvrSRK mnۉm_"Z=G0BL\8x hpV0zʜ pSj{C~|D3iIrYBbёDC$9߸pKOvxo.IpR,A#:OH:b2*ϭ>4 M΢?#^Ď(A@!$խ"ue"k0R-+6NDW-$YqG[v݇p?D~ BcR^iyP- [8Jx&(=` 3Jt()Q: o "d^Bj$ߟ # GJID Oq1'cJ%‰JHb֔T'd| ,Sm7>⏐:%&r 3:LREʵKz"uԄEK!OM>nlH׋mA 0vĴZH s'ː富aI2qܶ!N-1dR<{9<4- oI**6'ǂ$}7plA$=6-*Ncy5̪e!fml>$SL<²f\Ju,LyJnkta,53q4.M!S_as$"0oR/~eT[k=x%}.JȱP/anf=ЗCP<1*JJTňk Ж_K![vc.8G5^LM $xD).g>'Jݛ^ XKPhK4&s7.YU̯3+&901ChDې$1ؠ5.] j $#*I:[#nW16ǂc8EP\Vjn;aiF[v K|M"(hP2\v{b~أa%ԅ=0I6}ϥ5䆨ݞ%V*3Ve$B/ !\AQ][̶VT=w#>[RȮ=0݂$PȓuQT$+p-'U|׺ )#D >w+?E=ĺ Te((܌jS)V7*YfUj&dm\R/m[[Q th)u}+)ϙ;oݯ2>r39.[[mS ߞ&,W|dqf[KA !VXZ%'~1!E/x(J%SrJŽ߲ SI[oRTVw|o MxjR2&C9[([o63oYeĮWmʦBAvH []b^INb>Dii9QO(4m3Y@ 嶦5g+$nhxTJʢq.lT »&^Ss9}/Be8ݱ4*}iS5i!GhJnG!-")ty(ǘQBakzET<u|9IU\fb^b*B8](G#~S/ar-F~N"D[P@y+#쬢}M&[W!)!Tfk[kh-ꞎνw1:!eŤ+\$|-cjPJrYUply,̝t;'4mp~/82)p3b8 C؏u\y@tDIIѵY*mJ +}^bʫLO'7,RPH.c<;)a(S*RXooC ;RKC4rw:'R<9j<=?eTTbh51,nʠMȕ') KMŁNR T]55vZq%s1MƄvHkPҵKZ#%ȿecו@NM˭0e$#24 67B-Bo 2\XDo-f.Sn:/q*:w?L.Mȳ)Pq4Tq!r,P}bCT)0JYT:b,9:ymjRџ'09*[! W_ Bdt6OOֽmU͊0#&uYHu)'-ܓ 껲">I,P}"&N@J*B PI?Tԕ/pY(6*}1iDS'fn!N904jy] fTƨհ@pMhuF D8Tmi#_? L2Jm7ZhonWpbb4a9VҀd.t Xt:jDܻ22MMEvyf6 'ĕ g RCBj]l(&ςÈI{2)reja+k9{Zj#h:*sq %O‡t{ KOPqQr{h);j0-B[ fim~Ɖ}7)#[vRI3KROI4m ,͆ 6{+o,Ŕ9xIm*UKkJH`Qv_![[xljf(c??O NTٶ=`Yl {(w)KHxXpZUʗP*wsPQ(iJEF\YHӥ.!ԛoϜO's+428@\G] ky=I4x?T&\Z$^w KFeEF9lj# 懷b)2efЎ/fg*B֦MU%'3j>f,܎C\˼F'Y&APTL8f"y3$PC!-se~t9Fȸwnihul2zxBuه&[:򊊖DLz+?BJ+󀲆С.e 澶G|`= q.\*&4 TAxACJ a7 WmFkwW! #1w3k;#t,!UPKSr$,md'_Ot_LDFTq$Twv('yBVXwQ/}9v+O SHRLyLu'5FHUbb]sKyF~5QK qYRzč)itkZudzdAՕn/#9 mh$NC?SCkjTq)a#f:ct "Pʸq븡Z.̲nPui!?P\y*)rf]&\6+XꊝR"Z$\)v+E`ju%MSH 9m6PN۳=K@XP'a1&V% ؒF+ShDYanꔲi閛m)RBRa5ېcTnQrL.-xK/?CSN֓u[{ 0t:]Ҝa ʐ߬)8PV BRORW)ZGoKK䖗Υ {&g]e0Y.(ܮZ)7fWI,<7Ε>_RւTRRNNpD-'k28TpDeayӔ[@lV)xl(AN.+)Vr\FNC/l#4\۹*Eƕ7^jeŕo#mV.Qxah mEI6!Yr`[0A#C)m @fHٗvejТ J(l,*Y2eԦF.lU3J!C*$kMG55 ,y΃[bG 4zYjfR[6ߴU&*2+iVW)kq8Pw996EfcH>[J ?,䊨 Bq#Qᔗ 4ZRU˜o\Mt&b$ V(K!͢YܥZfPWvÏ!a pd]=ָ^&]{Cο4(ћr*': uG1-IM%mZM>t2R}B~0=O0J]e˨)'Ece&KACl>R.ГEsd.lU٣8~ZzMJ-i6y Pwj"1"&J%)T@0 Ĕ*eFpxaWU\} az&\i j VʢO1qxР&6}PUҽ8 K=.Qgi5 xi%7$O,lʷZXHqC:BxᐤZܢ&4e,&TZzCL/\õiZedIX c4esrE?Eʀ.9_U+rIUfd=K*]jIA)*ԎzX~Aj)StI6>( ԾCI-"0al%Q1,rt*6eL| -@1+,ui%H{ǜV1lߕʔ#R2}YW|<[{? 4vXAJԔ"hݸ¥niꛙFbe°/17Q2e Зvj Lq  j=QkHZHp!:lAkۆIЩLcFC)\tڰG@3a-bvYHU:m }VVw %"-)+ ҫo Fc V-$AP)+iw I"αu8cX^MwѺ2v!eR<.5:P:[xg|C*6Vqcǁj5I)EThO/shE g7ԋ([P -@2lDv%O;-puIRrf{$re!{ rjh=oPuogTE+~+ˌnqQ7h3dSeIZJJt D](ˈR\VW6jIϵa6X^i[G`8u#಩g4dy^UZ -N=@>pZS#){Ѝq>t3 ցAq (-G j*oܸĜ ,ة  T!))'$m슌,RE(GDLY7?!n/xs_OW+h14 W}fSx|#paf)nC?|CST Uhb!|0k2A f0hWTrO.屮"]H=o1Eo6VDLNG' Χ,фTE\òQj!fӯ/";4[rrbA& j̸v 6Q;&"uR%-ùd(Ӛd%,,z69FEeAmԡ}ws$_c sk_P]|w;vdۺ,UuDS׹Q&e(wf^0WFL_yV*P̳J=I= {Z\N`գRf+/[Z[r7JnqҐTe(U=|',ښh<[4t,Sz+/:ɦR"Q*ԅ_RjfujqFlEY 㯤=ǘN\H xTy[**Gx;rOQZs[5ꉉTJPʨeuAPS{ŖNiɡ;YSωTU~v (A­q²)}+u/7m ys}44:װak4Tlȹ)o#:5 /mhjSHZk H 7nn#'̛.mb5>IKT, T絢Ih( I)f}O[^|[:F`7RfE!mP/X1eDoXq:,JwbFgXGkL 9+y I^a 6\} $ eM˚ht;b7zd7el&Yl[+Qӹ6 Ǚ'1ؘ~sOH][DSfq*qeY;13CDgR@H O2A`DܬW y디x tԭ9^Ô~tӔ*2M.NL)exiU"Iu)duIG ie}+ivCI#&oHMӅ֢ Jkch ;˵VN[]fE۲GN[m` 6&ߍ"%&lnk\&֐ 6@t4̄H7ZC-vvI*%[l{WֵL7؅n78⬥A ]'ZpOҤOe ˱e|u֟58g.Z0~(zb50STw0Y:,鳓Hu(w J4ǣn[ 9ʭ_j_QߚC͵tZ^/53Zl^%su2D:EN>qL8KC9*R,nmahݯB:JJJR &xe,ק^J8lM@,NѱeMe+Z? ~QzTe{CJGUvW+ؘ1L3i)Q=*OXig X3R§1- R.nlv$bZT=OS Wv\Roa{+5hwUnsR҅M TI .'ZKH^;(bv lHe99 -M%\m~mn׬QumIfC*I=+.z];B2jI I:ch͘3!JYBTaq]J8bu)8 xP ZA[XÊYH҄FtT(,98nϟR]Y {_ W- \7&aSu"JU&H!s^ګoV͂=F{ m_/'d^>V4>e꿲9f5$,Eon~p҂`\CFuDה:#BNQdaA^sݙw(%"#sOָ45?.bIQ&X:tz.}sfp 0 nCFXx(Th.'HxyNVkhV\4m{ѭ΃Ĩi,yh:vwF`^!S0źecwVZq.ե$ZiɀΦka̿]\pOTNI[ )G^v] BBJRZ:HGc;pe}ق;@#Q ; i%FsO=3:J\} !YXFVE-2A\OFݯ!"Cm$V+)! ! eԝot~tZpU6E҄\m9p\ϰY~l;֋_Ӥ)Nn 6'Eo} 62 iT8>\-VmY Ce(p%7{EWqn\gHފ\OH/-[564V0 *d#}aˤO;,BK}BaJH"ffwHquJ;VI5H'D'$/皶νPOMTAS)nX<]}^RieIlq QWs Kzjۻ[ȶP,"7sO470{f$_O %w!U$ǘx6[!R̼׍+E+,9xJEja9xIYD>[0\Jk=u8ŏ[U,'J[ʦnk_y`0cDv21@!GPzt&M.vܺTwQGvX)֙8KstX_Hwf9WK酖s6˪QRk-Iʆ IsR 5s[H-m胘{#b1TS xU~ 1M@YV[ g[vtD*0bA|v6tfR{o Y( Q':aOkqKrqԸʛ<4%ZBYe>͉1CIE )9{q`U]Z [̓w*˚˜ H^VTK8|Sxejl(|"BGHTI2i"IL1J-QpU*&e Rق@ {dzaٙdʍq$աh'&6 {2ܱk%RFT,q7;d!+iҤt+9;khpa'fKf^M"7!\& ʮb',}gm ˛eŜuEOBfJFs-_sU*J’[,V/)3?F W^qVh 'ᄫ31en S PImj>"[hmw;b2%mE xC\YE/#.Զ$}+3LVEŕwS>GjSb\ Ѹ iع#~\#YmH^!6(yF?aetZߞj?׳8T2 Rl djaHq:+^ʩza2VA>tE>k,2v4B W(wC_ѿjYш1'T,eg("ƟtT›g<}%@NK޸}qfJе*h"\%#QTĪ€Rt X9k-_ ?Rj[z/-l@b(95P'o-RJ) ZT{ $hcMr:֋IN& ~Xn@5;07APh~#T ;SJf*[ZI<"n;1'X;$b,G\o #hsqEZ-=WvS>2 ~7NQSYqYV);+:R$ۿ݆=P"SEk<)庁}`z#zesrLР26;ǧ]hQQH؃d5宑FigPڧPq~GaUzTe?QS{r19#:J^|5%TR[h2͈" sчm0l̃3s6%,\v/QqbW"1Sa -HpZWR|0UkèI-&^r1pLZT5,uX%lTSQ6{6h=T,J"'Wdt+Bbwه I*HfG<ܐ4]-}~q;,SnzD R<@\QS{l0Ón:qY̝LZlf\Fi92zJF>K@>C1Gq[U~&mIbbieGcԊRh)JVRVm3^iQMAYPVJ}yrF'}2Gu" I& Z`9ث ) N(sexc5%YQPH %7uDZ9NW}TR[[2kp}0Q, &Ž?LO ]^I$>]zy3U%y  bˍ!?ZGaadFge}떔KJ6P mrm bi! $ O1@.ke7R)*sxp;j$r0\\⮰m֛AiDl-yF;5]q,۰k[8dKVWTV"YCSҭ<ӗyCh:;8%!jh$/f_?8<Hq*AJ{Yu?S~֝nqyw3-KZ26½"nad<' T:̬pn_Vsi۶ ƗIBZunUN&Hk{Ue򕝆[)xQH&-3kk&_;Xw! #9'Q:8ܣ$e+о-҆[h') INZ'C(J0':X|TVYqn e7mCWeJķ >4%$׿.St*j+|0A*:4V JCr$o3kz~])okak6X2rV\JPL+?\e)sX5SKBE(SE»#Vr|3b@bz"JCK5] ̔]W5cPJ N]I!:R5MmJak#Xasn{mޕޙyV: ~eì-!)HKdes#iTVhJ#_{}<#D {*@Q^ "|";Fŷ<0 4lkZ ˲Bu1}b^VJ@!d%e'kF*o0Ț"U +$XzFVd[). STs:#Z{ѫbAB9Ru]:XllEھJ @D&F°Nnk50ʒ'B,vD"a<%'2[Hc}4*fC~B.<ꀙ4J3ޫ=Ԏ&pt>$Kq{)Q*Z˕b|a|VC%͂Mb_v[㬫ܸaw!RY2m.JN鷥Ǥ](?0-٨\?30FFЧZП)`j]%Ǽj'5nfۭl I晷8k̔6/K$uH>JrH46efDw$0suB-<+ZIjo%ds⩹'vt"1+J;gbY!7nvӵRÙr>'CEߘƬR\]e6K!wMkOQC 'k wI_ѧRMK-Ӄ3N&WS!46'k|+R~Fɦ$@}EiLξ;6CDUIB*MP%*)Ўncڭf&5}D$uñ26>!(9GP¹s yC4)Dr9UH$>B/1Ux@)]a-z@Ѥu*!]OOi#}YtL0U ip{d$yr#)06=J+TWrL]$XS HcҪU_RN&b֣}=c+ձ0ò إĐD5u36FkЬsx5ؐ@>fT7EOi3$m%ǚ X$n9Ņ  vʦ>Iy *Wj~0={3CmUsG)/+>P`s,:0YX $Jʄ%"R$ y '&8Le%CָrUp>p x6,M61V&`eHY^I:[RԔ&qd dUt J+ |9%ɭNIm<XO!bu|z3-*Yy@XwTΩs ];efyh HȌfrf%XJ&72ݷ~EbWAs!'MòGpbxm)I Ԭ|2|B#e^,N( rUĴdzDSENtBo5,58/ ZҴ:b@CV굺PGC#h.z#)9,r-3e_ie?$vZo' oea$+5#$ I7p_ lu>̚W)Hm\p~2KLͨ7,|0&p~\Ҋ{-AJv/T 䫖q,n-;Uio;pFPorOZz5ʳ2V^EKNɷ!x!) 6Pi`)L͸u?(\SahU1Ky,\{1KUot,Qe@V95(j;*CkZ2uL[q䰗b]3)RG%*ѓ$W-#DT!q5*>Ful?Ux4,J%gǼ^ 4'nmr@|Tpgz I.G B}y7mq"owYv^lB:tDV VW/&JAPlWĞ"~UHj܅jG#euQ~EUJ[qY&I@)'Q#JWZ}(26}n4 :}geH_x9kV%3S3)2 (ijĻN(8^q;&Ӏq9%>1nIԷJh.2w۲c9H!fސP]M)E 7HԀ q,xJYQEYGu3tu4SJn)խ=#`CAY]M3B,8JQsƥ^D'PRYowF ͥKR.-ScF*JyTESRu˲\AKZ18uv[cݤ\2n\+0u /|fM 92km@PCuJC1+2ہ@ZJm^l<"NP,m_c7)b66 g?\;]LEV8 'P/Łkmޓoܮr uژ ʕ !ìcb$֥6GHԸ:Ute615љD,J c^7YҀ /8y59g\q*VD/q r6lp]_gwTZV{ h{a֛ϐko| hw(ug]z6MJ8_ vsT: Ì\ aٗxmv$KZ29*iJ6;?ԩ/'9(:m-(do]?W=QI>hޡ8 mN:! nBEʇ^̰CRrO1wh.pJ[k2 =kQW,`ʳ\"ޱ<5MYA7R 8mN47/߬A`zȅ)\-T?x~- $f+"dQr@a~€V[Gvt4c\mLN)(FV,/lT̕~ZxJEvˁ!'w.آTĸihaI $3(uzE]A̙xdBNUe dBj9YNIpQn- }!̄(ZfJZOh +"tX(YC5,Z(j#B \ l;n>Hz [ȓ-)$8D!D>`f>ij#ea{[ Duӥҫ͗0Ni@ԃ>yXJ&iJf˪G43iIөifFNY9NNBܱ*Cc{X[LėA =!q?˲܎'CHO;Gn=m0V3sڤs8 QSZy ,(4uCF`f+nu-U}!LHlsk@Ӹq綫Nf{.nKKZ-A9ֽH$ Y\=!R8!ԍBk._jY&]0͗[*ty]sy㔇-&sd7_U},}tc\[_D伫SU4U.,F,E7;o |_eiՃ[w\}^_qzM6=&^͗3A8,: Wc _.Nh0ZL䲲R9]e8ҁ7%/t}d|:S:u"˜Y +>݀qRys Y%xp ĥKN=/cZ4܃a\h8 Vue\ {Aoa !hTr(^?Y2LziU/JI|JN qr@VbtMb jj*M4FB},>>[TIxkgؔfFIN-*rHJ@Q$RN.ÓӍTϨ%)ND=`Y)mMׂDmJ-S$t׸P<9sxt҆+awѥ@'eCu8E#fDR@kQ (:t\7,Ix:*]/yǖbug bk@JNMD)\E#CO+%W!&^'hJ10R' BET(ͫ35뎼 J.c~BAc(HN('SG?Sȥ ܎p˕$\_CZhp qBrcv/+@OPS7@XyjX6Fb9Ka-%s6 %ZJT)f5ARԫ"V"Tj.7ĕT-+fhS~4VxF.PAZK6f /lxܐ~TnU(B,wƂpH emdl'Up4rE ![KZ\$(R4/xe DC_ī j޻:rNqm2YҵmbE_fJ)*IRrBJ*4< (@y)-FeS'J8em<Vɓ9V0PJ3*S4^ACNf5ot*$\k4zEdRoKhMӜew\f""Pl\iT4f Y%*$$[v˜USqM>ˋ'91cᆪsJuIvOAǪ,U$m;1G^ISg PTPu*Ln)%& h%eܒZ7Res-ta(5Uf³I`\qfuC%_[I!h*QKM'.;*#L%%{1bUKk>;hXJy.$B%RFn>B! Y_&: R9I#9(9䌫bIJ1+˖sږ۩VUo“WL]%v~qv~+8*T-#q+N~|V29caRR#SR;"5O'ڙPGүVš*eIN_ 32f)Y$6b6]k,W)f:wrEaW"n lAa鿤g*(paL qJaWincin&U}];*?kw+I43NSվ#'ܘЦڒo43T咕 ]x~ Z:3z jMm0w0>0y y\iV(EV9C݊妀7*k2.NK*CuT=RH Dp xQg)^4J|X6*Vw#ʱ1Xr;xт\u#2ŒG/({!CT.C!4(4A-}D]o?GgVu녁p dEJd'ɴ¬lklu"><ãiU4{;Wic7S.3Sbp˜m! e$p+0 [A5&*9ﶴ1xn-m~G`:buq[`ꉜ3@v})lF.\j9VFҸjƝd;;bXXn6x-=}4FwEJpQD]1yza32%UԦߗ-L܃fZH:"U+ бd3 ZChؚi2MhdG[Z8O(z7MtuNxtbvsk]euTf[7"hq].:¬yyAԜ@-^BRe,$7B(O0c9V?XmӉ )HV` zǰz}#5:ߘKRiᖁ zxE͋UK% -)VaN=* B٣7^tڧ å6,7-1ȣMtS"nVq&^`, t]VLTu{|4p25Մ;7(RuzN Z:Fy#U-[]>洞IwIq EYPiLP$=sb:,2 ?/[T\eF`٠^u<9~0.;}CWT9R%ee.:PJTSp9fRNi%'*b.F.VHrذ<{ [AǧQ[,nJLk TO!0ԉכp-SRPrMR^u,L:쨕9BsG?^KH$bm'z ܝ:N,$5XM,D!W e pXaF P&Ĉ"0AZAv{xFY]?F#KNKK jsU34QI{ @7OV\jU [hjE؞j?7N ˾j8N[J8HnwkulD⧦ ,=`Y>k{p!FaSS#UInUnND &~mSGS3&bR",x GZ@fLۧ;-DZ i$#U}ܞ`:R⾮S &8pN:zC2Ўҵfj}חbZci~Bb[)6@Drl[։TRG٠|Za1?Wn^ +ĢYs4s Hm]|s' E^8rerkjDh*2K@h#~Gٺs,M̺)6>ꉹė UF`6GL # :aYٕi\ĻI7Fk|چ!mH -da.hLRqi` *kk5LT6y .Tj3m(<8KQ;o{Eַ uԑbtc< 8 7rrvW2(6yKw졼6v[r7P5sD)$?V0,K}3}7?q{lejzy&ޙNp(Ja)LldGMmDDQH. _4ifIV+\NMO9fEm*6"XKNUU>īuO!kRMq43fTkk ~Pu(Tg a{)6>q&)*J;IZ&kd-^;]Gt_<M`x[82>k]n6*BKlCI)*iWU BIK3:ZV\j,}r~1]œL M7e8j &bEз2'"-SK,Qpd'I|6*Jh[=)C*6/8o+.n۠iCCYqJg+S|2 q YM$}ORW~DS])at w ( sHv^.#0U%JNXpݥ!jR]B{&3~\US]$$d%[@..]$w(jH=.%. Eh&ab!F]ŵb/Fulh-ZSnKb ĜO.c񉟭fޗRʯ%Gr?(-I5uZq4r4t*yCUCuk>f-0IإZ|ȉyb&0qJiHl^ܵ1Rdԓ=Nu27&X D 9q\ݖ$тUm9"M^߾ + XZlDu*EwseW]:&򡷂K&60@JXMpEu]ԅ=wm (U"q)#K)w"ڦEFU Z4K:2Pʵ j.?#_Sʄ@5r3-Mj>0u%ji JZB`ۭLP|%'El}" #ϩ*vؑꤳfe Y _ 列\+9W)57UgAcN7ngϛ0'^#d&- l $)>dM {6RIůǐl ԥ}rmnvDjnǙw{Uif2EN.f6ȫDe:,vZp͝]-qEܙ`$F8 (0pxʹL@ =wD$,y#VbXC75O:NY2J[srS*ģ$2+q ьF.,C.Kɚ{X@R!YZym/<Tst|kzt]ڧ*Wp{AS8hlqXc J0Rf*ىM=<`J,~pW?(^[@Q4'nqY+)}]cZdS94aBn@O!xYBHPb$j*0vP`_@TBA"D]9ڳqjZα+:LagUSn42?VZ(^!/$*A4 PB\ULRgW[&ٍ@>50 d ^y.7SU{7Gr8}$m|#Tϔ[}`iqDEyV#B}A.=7.$KIR$m|Ϫ?R,KӄqKCO;,IeP\yaWJ-))Ue`3,[BlePnYmP31cˊ7xsXE봣a2bU-Лp7 sTh\O ๊l˰xe@BI7*dK0,5kVvywJ1x' k569Pt߾mqkst{.&zJwHjԗGi.S6µBRȗ!me 4:reb7H,>/mU;k띵|ٮ\zlJ{>%虧ttgR>b`s#%hK-?FejM5S `:ēг".:KZPP4*xuw1b(qZY@GiY@ Z]QQgmfy{[-@M E<-KQ%j:a2r+vaa#Kۼ0F TRHq'K&(6j%JxL ~0)0OGG,878-7f1`NSᅸ Sq"%.f]ejPqfuW?)lR >TIZfƖ* Tj%G[Hhcf#|vKpؗSGQJn5c!]-xC&̢d G}LGHP\ 79!p\&gd"Zt-xhCq "dž=e,pFT[l@y v #M[ ʶ1|炍ԃS]oo -D*ccs{D~f- P0M vb*fǔR0cC|DŽ]mhu),7/bM-=ux5V |P4%W o3IKB?uJyk̤"eҼ?(jh.IܪPJSyAT !>=K i\@må^m*S/8TΧS\Ԫu0XrTe\eZflګ&5uiu6?T[[ Q SW]X,U2 B)d[1RЈ#!]%>ԺJ֫4uTܓ$r4e q7K,"[)Ey$ x!Cle]$! 9dX 26BlʇZ뢉0˭ʵcxJl}H)Zٰ8K@aH9>KQAE}Ģ9Ik?D0t,f4:tJRӮ;D2il\,Nxs0UԂE<*RUv =~uF2 -H[:s3IZ'=L8"G3ýC8,+UM$TU B$ҥfFKu01Z%tls_H*F]*aQ%e2,*`m삂;;M*b!Ź|CZ̐eNs&CRtĖRD,nU#P»"a d&C62u(6p(y^9R/lm5?jn-q ԭ!;IWf2R3_ś [LPL~m%)Ys"':8w<]7u3愖괛8j9TҔۉKE  zbÆe%ՒZCy鯫&ԂT(+þbh0mmKC\ؖTNa]̗pM1lyƑ12HNWx Q'´MU(dme$b6&*sʷ-2=je霩37>#_ BR+)I$?CtɅRV8(Sb;'62RRyO-2Ѻx?KC~Qa7CXNB'pa\%Ei#u"-X Cܥb~P&3(d{ŒVAӴ0a򦞗Pqa hn:TA9NP ߾YVSK9UiT%`7I2;":z73>bAUHpQtwKh)sGmO#],S&#Cizq$qY $P־9x0?T³`NPU(TCD?:sFQ.\ΗAA,bļ,@?QQu:iWQ! 3 ̕'b7JYަ$喩;-+^#}xxā OEK5p+^JirϭRdi;8waR71!Q>YSniJ I}bYY9^d9&(VZ78Y1VMmҺB5LR)n4` 2 J\9}p~Qu`G\8o:e-c:ufԖKˎi,iBz+ΌgUf#n2ʩ6w$3)L˭6,)mΥQ/:KЄћ1|<^R?=+]^#>vHWp?v4a8;K<-UmJ5|E5..'38 J;xwb(&fe$~c=3-?EMqiT&ZqʝSĘg*L +U-d<=!fbil 奵;h.?=~-;xLV/>LJ&eFàaIiiV뙴fSu4K"Yq*:,] tQ3\V 7qbj龩qcK q)u?zc؍Gq^3_OT.Qx Znrti۳r$Bf[`X+8u%[XPIȭh[)2/Bՙh oN1;jc J>}iUPH@l[rH^ǥtRrjR}D}]H :KQ־O˕Gu=scJoFV簭9V2JlQ)Ne'# )UW*XE(FH7څAu)ռIY>A WYJaJ/&]O3QFZ Kʶ}7=1t nY3h't(3BBҤH5ɠ*w]V D Q952Ԡչt)~==[kaE~<+u]UGhHH)*jt|eK;َr/"[))"+3iSJ=vsXw 2jTvHЕ&_: ;Yz k-wl x;&^/nOH3 mn]?ļ+n8B9>p45F2\R)tLL`~Λ MNɳ}{=)2}SH3] !#p^{-K`67U^g=4\q6AkUIH4@Z 8m~kx "PSL'FHǐ}BuH,rbUGmׂ*$\l9_(nb`-D\$i>!3Kq4R54b[Y6TfZ6,Oʼn%d!YQVB\T\R˅dCM(!>KOͨ(4Hؓoߔ $[P k~pբ[16LݻJQS SZO 8&,pvP׶"qV֔Xmt;DuJQ|@#"&b++Bs/"K 2v"T}'3KREx0#y;Rnm]p `"7ũźڊU"3ԥ&YtW5,^RJʸ OQ }+*ZPyZ9RRfSAyyL-EMC 9zZX]S"•Iإvs]l岦eY0ċ0)ƕcmAh!g <:&ˉ2KJ~c l*Q Ua:0b-4B>cxJRb M#P􃬍tx┃b.v)q=ڮ;FV|pT/c{'$Ҳ}(a**A0I~*[松٘P eWy&u7*%+mIs1^en\`¼#0[{!E;uA)47s/+RlukX8D-`\x~BvTr/scS⸸V^k PQ>qSvO%zGg$ݦν,r:`ASGFD.g 3xk_KTJ\u()VWbRɎ%Z^=8>sB0et wC)4˫)rPO1΍htLRLC\OTJ4IL0i|ʾ|mA@ŗt;'ٙyM]>պ%Lo :ylmck ^wҾbW.̼Qjj ;m=KSi̥$&iccDWcT/ie^j)Ԡ_o3,WK6&Wmo_</T*Jq+ \oMjOWeZv]fu-łn i!WJ|V:׋ L)xY^\Gae0/ď/짐cPkSaS`XZ;#y\Uɶam-S,>CUatDF,+*וğ}RV-r3a?O+70X7a T~l˫I7<26spMli'p^2lI9Wnb 㻺6Ά0h4VvYjF~X\;VBnE|!-HB5f/4R\+<iIȣuY"D~BVU( |!8BfASAS^e+ j*,H~+TbtNU[rIZQkf^y4. ߐt\)ĀN )m#2J%ՋTdFH&Kf_6R& QhJq)Z-iE>q#]X:!"]XdΔOe0aFl?\>ˮْn52]ZT ;Xe'UƉzHK>&N;\u"-52&A0  –EU!V̴ <Ud\*uFVm2Y՘yq$i/$fRM[NP!\&2<J2(#pAfjX#:<-'e8"L@%x&!vHR@ FKZ H,c:X-FiO)v]I#`vdŠlNϲΰPn ڼn\{?V.%6M%d{C--&'4RANr=?faտ YNCt!XS$ܥZ|b.֩!GmrmG;J1į;;h"ޟ&NbBNJj'azb`yYNiWc)&Ew H$v [9pQ&è(XVB.UI5UK8PT\8w7FL!6 B\.n>0y!U= ([-~aECekJДg0+T.(Iߟ(M):}!K mSI`!|ޤ8+e;nt}KBp!9uBkƅPc!;paB62)D`n1E0R]l<^S͈LaMPXTxJ^km66ide!BFGU))8Չ [} fӮ!l+e^CHKͦrY*yɑXiyI-};PC\.iLi?'n"E S:f$lM? ×#Ipj7լ3*Aa EWcdFfo% ]6WjIԂ}3!C:!JlZme, F:! % ҫ(x̸f}[H:CR(VUwsStZ+@%T]b[aènR\(Paeg[hc%R-tEnɜ+vmtD"१6#2x:?!.WX=FH7΀|."FS'r5NҢZP6o؅ިp~G|34uPsʺTR.5a˔0;<|\0ᨩJ9.NӲ:G"q)VOk(WmAstZ< 8,<ÚTS2Ay)ZG_q_&re+mwujۣ2tB\T <"mfLN]ZlM6I/٦AAWyI0JBiה.JW>`uoQ sljTp$<ʝc('3}<7M߆hO'"jw(W1AdF/6Iʉ4*.on2:sp&u)xvfhd.kr:ntb.Xmi"7Ɔ2qR3`m7 #2=`g8j8Ct*([n!h;A?cZ 5wҏADK-% ͡=N釣dO NʂsIxu4)zS[qXɻ̶HZRXF g @N!$!$\$k`A>`/H5,B!ătz{b< ,.7*J ) e_~/IU78iM.6₎:Yɹ`Nq#lU:Eoh:׹6OMNU% TgH­*V-JXhDK% [BbQTI+ V @}mSS/A3l=;{TNO,B/.a*˝}ʢ] *PBUK{į*9vľ76TOӃ󄓌qDUjW;20}H1qYj U/󎷌 i@Uj`^K6v:!6wsOQj}gQ?+ J TfK# V9h-q걅XzT?äclXF=!G% O4cJomSV[2߾ 7G:Z9'w4ҰZį_®* O?i_Üsd>QG10}oSH$Rj-LN)NU*/2~f( O! "MOjnƧQ#-+a_\֤R9{JMDG%=rCQ^8t7!a'p&" T9`q枻*i@*6'Q+aAyO{BXjBN<ԳXƮ U* .=v?858MZN,qf Lsdo%7Y#z9N9p*<~1vnw4iYBjK`\P߾iE6{g 9colKG{į*JeF_|IJJ5'+jlTR 21c9{T/88 rRYmYq*S#iO:˜jE=Ի~0r ph1椗e jD .UuU(ef8^HLjP1{&]P> 6>лvgU\~Tmawb=m|"A鋍8TпW ϟF2.uRtQSRϟ&GQ i;ij(3ܿ wok÷ׯGeyy)US5 3*.*~uK@T_Q)vC4DqzwmtG%"-!:TgpU ۓod۾zq9%f'^p뮺`TaNzWI(7:x}]!:D?P"FC8BZ BItuxpuck-0.8.2/data/arcana/0040755000014500001440000000000007562713365014450 5ustar noorkuserstuxpuck-0.8.2/data/arcana/arcana.png0100644000014500001440000002426007562713365016404 0ustar noorkusersPNG  IHDR(>PLTE A4\|~;e "x^MĔRO]=B k4U6|J*.w^, !OF#i?&:++>a]bBn`h% BUn?n,חj$4LB<4SrE&(]H;ٕsVe3']v . ,-+0jRLSH0'4Ldvp:3:iˇ }6/c2H@hoisOOTglR'BMDBD(F3S~\kWib ȴ܊ 6_",e|~s_ʠ 83b'O?f߳9Gs'-ל EVeš s_|7 /~Ժu?mΟe:|7p;JpܫM\6 WPVaWCB޼^d/<>m,P V{7r5qD63j -MZĸҭ+moS,d6xN{K$ӧWvUNy!3͌ >k3.MG~7æLqtkyʾy? \d:iKB44UNҊ~?a2!OgK[}ʅ;yޙ#TNٺh \"d˦ق6WoI+.[&%3KmDCzLD*泫WvZ񴢒9yNl6}&Y1 ߬N?UWWmմ뻶u;ݭaJe۔s&Y:f ߭n.GV?usp⭒)+++]|Q7O`=dsw߬~m8Tݥmێ@$5r[e⭡I |wU i9l4T [^fOlo.yrZo㴅wl9%D"ᅹU:M qLu tͿm\ >2Q2GGߑ/r2+ +&M|矟f_zTdi}YiǪ1wpqr8Ns`4Do׮;|`My7Z;g|>rߤ^:u-[AfѮS*q%2oX .|c^Ǥɖs%&:ϋ8{+hg46[Yo)(.lɩ?i2ۓ:r]gz hug"Hd9Cb8G7w*r:;lr׾ҷ3+7.?g oD살!?-xɒm*; ζ˗OwvҷΞ]͕Y#f~bÓ6j~2_>y o}UWwni]cBc4IX(L[¿8iOΡV W{KGD sn8kͭ0lm,yN 8xP؝1tՓr|ը?X@@mXz<}t4PWQxXtnJJ/Tg)*'E} 7Xg3q+/vvi4Bya %}hɐ{^hmM @Br ]Ћs_zunCOu[qdڶ(wrp<\&*͕!a$0V`5V,8#a=xMQKo~puu~8cs~b –oaf+,ga OˇFF@fg9qhWhb.u6'ZI|9Yk3,hK*xŅQ{;K>WIF*te|b3 3;P[[+KMkb5E>}㥏lpTh0)aG|ˣJ; e.2 ٜ-؀92Rd1傈R)*ASڧW{]Fb8$9tTY8ORJ/Ed2ҿ_ڃ4_ \-ڽ L[L |izAF>Yg^nK3s}2'DmɘdGB+K"?qA}LND:M+~}U"N-]v: 2f8&Zi{!I. 7@ IG~cX/pvqw/8ز U% 2XH Q:(Yd1i!sD7!46>vy--yySg OQt&߃q3I {Ņ7ZA;_012k F&%X%_ !.0z)m:m7\D"Jͮ`Ar- Y0\F/ǟqlK@usآT*hd ̮ xI''jTȠVz=WX__;!62C؉F\dy= _G޽{s_G$$AaY!l! @vڼ,*!v+W.>M4[\\ʐ_(YBݟ^_;: +1<< Obh2hRLV $\MR0-[l?{@wJFBfVJaB,ԜJ)߁k;XxY;z% .\Q+Riڧl޵&d=2kp d!P]ШHKú[Kux^4XM[s7ui0f[O*x Y lE\+ vNOY͇$bhVVF8'u־n]O,:Eb2AՕUtiۥKFɠ~OT,\wh4o[uέUK:uJL &ND Aپm۶ga0ɬ_! 0OOϯsr4~Wy1MF:E,nd9oF 1+G#L!}y~=mM(/i1; [MKiQSc&c ;Qvf{Juw¢֔$ !;?<=w-;eSYFUtoՐdbX}!0eew$mew!nPF2iׂmYĉ_pѢUEG[d{P!KPnɇW]O{%%Ԙ`Tݩw 4EJ{Եxvd7>Zxؑ_;(;)n-FU1AO&Ȃnvuۮ] fwtj}kax$t8.cbOoa;vnE=T2kR0f(˘!-{wYKꅵױk q'i7?-,+zzZo9AYL̯-d))m ( 'v6\{C0\C-.8dӀ<vrҰeujTi_+"ef YKOƑc}V;{vgwSFFhOpq =IÝ&+sD5[cg*[7b~ =8Sp2 ]tdgGn8Qfw/@-Mpi wv8dq"1l{K;Q4M>,KA,dAyX%ۃ^ #.!  J|ڱc=Iad;FU7v`̀eF ʬjYa0c80`,CM 86:p"?^v Zl쯒ze0LNp,VI#%&$ &@QET {G8&B8]A,[v|ʌzX;8`n8xs4S/5 ^1]55a5 BYɞ%KH,bٱ47_Xr\Tz(FMMMM~~\%fbte7b U\\ddȂ H9C`SFUwIVQ;Oɭ5 d0ڭ11nUbYlIRiFa2xG.?A8rJJՙ>RLZc߲iN;Y-cȠg.s\o8@I 6Q%Fm, /dflAsטwmc1z4h1 2dKgzaȈ u@(S,F **Qǟ\9† 1Ǭ4Y=P#28: Oz;x"Lx&3!ۙrhԈFӨ-^]Y:Ye8±d'j\|&mt2d,AvJ6M*V\:nDו\.31Ee\>AVdqCW Aڗb(/cIH :(xTP&C>Y R¨I\FChC`è|Owh(^4OyXvC secR2"za}ԤHz!1q7 lKak-&|m~;njj:SvdCØ)r S!b!4a94eas) e~EKa 4N}m}c2W/ٷK0dL/Jo1%㰔?&2?Yo!dIB<[ /JAeS;LiHE_g<.V/|LV`IIB2ܢ5يTsSI2io».Ȅ*xLxZ+"6̪9CXg=OWh,'T1E]GY[Y8Ҳ> (f )lvɾo,V{z/n,p+ (.\rh59>̱ɲX.X2/dXBfAM >ɵx81[XbޗxfZdUl{q?zeTJU< }Df=[_fBf<&4NT"|C̎(d2fjSPgY֒.^ӣ"*TJ2agZ/3/w{()=Y/g 샋onYG#|?7c3 L_6P+ҢHk !CFlL6SVHdpL54>;{~x$_7of[1UD֙1pYSU}8^ TG>$?S2< '0y녲81!{N>nX`;l>(TGz,FNi^Me&P7Mmt2)Y. z+BwW-M2ɋrتóCQ1 "qnSY:XiTвvSFXI聁hZ=!0WeMRdef_N>UWgP Ha6Ʌ*5Ox4 }H61+ ߚƃ̂Ҳ`|KNذ,> eJ֟9j|6Z2A6ez0z&0cD 'ƴ( }*阙zkcKh$hɑ1zYE23`Bi oL:NXg?Zwj<2fyt~iZje/{QxlghxQ|gd=UUO-3??՘ٜ̾m2} =GepCB?u! JTiܑ#i]V3֎UY A`5 ăv"VpF_AUX8ZJfjiK F16Wߐ6g1 .|ыH2Ie5oߐIch#giԑC2 'YU:&#Ġ݂a:_|Lx̾8}ȑ(NVѻ&rOa8@ڣ2}4rI:oEIŐk`U -#R)8xaɨc^,b 2CY ^M,^_fc9vM+m`P:vLdMNq0 ^ Uj[. ݶV@(Se$hY0y:VcؘyF=%IϤet2퉌`H!}=#/hEqN?C:2pR0bCM[A?V۵+U)Go 2mw`CBVhqC 6ѕ%BlZ/1HBCM(+.*wruu&P*Tl".ܟHƎT.aѨy*Ksjk$>iZZX9#.18Kym|n[!2Wz.>ovX6ѵoDv*;KB5-cjsVVSt2m$2i.b@Pv.k BY&:T8X>A;KWun#*JH#6|jQfXOaϗMdw*/I:}sbj?yS~^P=+ޥf*p998*K~bD7.x9@`29Y+U 2ejHzZ53-6jޭq$.K&2(6Z`UD2rRNO l~.bP]dfˆ.qD<7:7LxpQPg*dղGF\m*X6nf>+KVbg{$:lx*K|iZlyHltRNS@fIDATx͗_H"[ǥe^P""h,,HA1E|Y!-٢ydd1#^zؙ'2RR(AD=3ju}~9 _GPju@QKT D^+L)ad*.#3LZ*T.UG)X}ťaGbٰ`0g3i@MdlFf E Xk6n, _qS Y f@Q2M4T+$ZEdXЪ5*EKw  1^fQj[;\h%2Fj_H v'i1Bi]B2]"VMWsJ*+ӽO%8s!q;N4]CO' &[wM1_ YwE&LȽ=XgG4KYa(bٲ*d#+.1/[ݖSʒ4cLǩ.ud:L|3339 O|1+-@^1Vv1آ;θ@!c i:6$r\Ա-XVVc'԰gO`6AY"oq:sz 4{`kkkp07䁞$Jio;c! #\|U+\1p4Z#.c37nA|40!ӕՀf˳b>~dۯ7𜰟 gR>sѡB2:EޞWRoq:o H/9E;($@D svmU:S2239Qow/ %LyS'r6;F.WWW`Vպ恑l>bcso;eHeZ32%9\+;֗|=JXi04_IENDB`tuxpuck-0.8.2/data/pngs/puck.png0100644000014500001440000000360407562713365015642 0ustar noorkusersPNG  IHDR%'_PLTE6ETڽj$V `M$NnFjF&C^tĀްsf\F1BVbzRpO澒jvVB0jR:__[~dJvP9JX̭tndʢuZ ^J5LJFFjUVRɓ\Xvo[CqX^aڦl8հӭKB9>JSʁW1`mB޺bP6^wn)sj[NVZ>RaєV^p|ҘJ^kd*sעhÐTPH`jlQADBb6ofU^ָOfwYjs^N>n8V)暌ѝeCVhȇwcl|z9FJJЬ_细pZRFzZ:R ÝuzKbtXo|v>f:`|ʢh}bUF~XflΨ̂6ANXl+vZBҾjf$]2FEAĝⲂt0LNHRpbfbsvwM'IV\ۨpeEȉJTVVҶonR6FRYUxֺh~:RbᒤO^hEZkdF,fvu,߽a`ZPf`V\%]-Άl`OnFf~Fش׆jLLNOR"ĝvvtb*NZ_޲ל_?N^wiXqȨ?FIxfPZyv`JʎOMjwS2Vj}ʚbjEZYU:N]fZNSG8PbmHVbJZhoK*SZ]fpv޾vvvZ˂^:~rLRU^ٷʘ͢uJRbrFNSCR_Fbz̰V"vĆR&~jRMFpR0bCM[A?V۵+U)Go 2mw`CBVhqC 6ѕ%BlZ/1HBCM(+.*wruu&P*Tl".ܟHƎT.aѨy*Ksjk$>iZZX9#.18Kym|n[!2Wz.>ovX6ѵoDv*;KB5-cjsVVSt2m$2i.b@Pv.k BY&:T8X>A;KWun#*JH#6|jQfXOaϗMdw*/I:}sbj?yS~^P=+ޥf*p998*K~bD7.x9@`29Y+U 2ejHzZ53-6jޭq$.K&2(6Z`UD2rRNO l~.bP]dfˆ.qD<7:7LxpQPg*dղGF\m*X6nf>+KVbg{$:lx*K|iZlyHltRNS@fbKGDH pHYs  ~tIME "SIDATx TfvdzR,(gˆҁȣAgqv!\"J\F2!MI wt/#(y{a~a' oe{̤({/ݽmtݻ56F}hwk,L?"*unHr6 -QˆEm?x,SM3ƖF!a@t!ݻM#6S9n&?4ݻ|{aP( O@ugJhrnor/:e_͟mܵԊغXH&̅oeK>5 i4CssKKABmm.fc_%$AЀ/gv9L1  (+\Iӓ:59eatJJJqqTֆҗzx`gϊDi$ۜ(1̦9'xnb*#/r+…$ Qk+G2Es3D]]e.y0Q/t„a"r)Z ĝ(?tAd2UX5+L L~TjӦtT |>mi m6(DI]챒D|MZ"YH1ꄰa_i*"ɒiA*>fJ((T / 47RKJJ*DMd0_Z8'nd8q#^5|~O۶>J嫸7PkFF^曗g̸\i(S Νbży+P;I:vn2{tH()P__ߢEKp=z"ƍ/-3, oIuں°O(--);8 *0ShѢI* '/wZ *3%{oyHH)]i,*gTW}z^B_pHedlZY92h}E@.x#=nqPSر[۩F~zU}tQYCÎ?[RJX ,ʳD~?`N)S>XP~DudPS, z˿zFA"N3XY`Ԏۄ9E\H'[o# =`*v^vMcu¢:wmz$FV}}vhs<l4Ecphι ldl>n'[YW_\%H6c6Ĭ`5Gx.`Wv΅AB'(z&~/vÆoh׿eU qVv=uD#؎p٬XL`#X\|/#r2f#NU 2ì0_5`]\QѰQe`'&r4bZ2bzq9EpOM ⾰Ѯu6X5< H֊Oz4 ݣr"`K:rd˖sQai}6c6ƕ͚5eOz֡C!~\^fNl&8t:4zS{VahԭI {t5Gv|aeGQ|\"x l$"Y0K>&Gle=r(==Dߏ9E׈WPSuUAs7ʵYާ"F6[DF:[*_C6AJ_n "tTܚk[c7<y\j&ݐȀ+H@D[g50\?|C0D|]͊9rp^Ǹ]A"?SpG/@ "=Jm8߃:è˖*} szl>G8Eޠ{W*t7ȥTD _ɨo2Q^R"0%oOr(.[n6rB7Eg^t%xPn_}ݳI"8]Lo&cϟVZۍxKcc} iP+>7XC5aJ{.*7ߨ~+ Q6)G ρEA@[_8I\"K˲zzJR+bdK!i…OC{=MJOPsK :F\SRR` li2hsO8yftm^\䃓P~ACnSg.TйN蔧}Owz#9h?|~asHJ1W_E_WsE'|DnQ**d9*8\Z2IENDB`tuxpuck-0.8.2/data/pngs/pad.png0100644000014500001440000000014407562713365015440 0ustar noorkusersPNG  IHDRx2iPLTEeMHLIDATxc` G?F!'fiןIENDB`tuxpuck-0.8.2/data/pngs/piece1.png0100644000014500001440000000030007562713365016034 0ustar noorkusersPNG  IHDR-؟O PLTEPbrIDAT(}034/>&*x `{ũ~'a> edk@Ի@0jԳpK] @k2MFs-mlO{ wIENDB`tuxpuck-0.8.2/data/pngs/piece2.png0100644000014500001440000000031707562713365016045 0ustar noorkusersPNG  IHDR%Bn6 PLTEPIDATxEν 03D#KgNT)P{*hʼYQwWc+%w~a|2tBZ>Z2FO8-1JKD#?gIě1iiީ'eP)Jfr )Ǔ/8)# HGIENDB`tuxpuck-0.8.2/data/pngs/piece3.png0100644000014500001440000000024407562713365016045 0ustar noorkusersPNG  IHDR PLTEPbVIDAT B10DRPD6 Pԧ͸ywb&a6&lRafh'*8g0 mkIENDB`tuxpuck-0.8.2/data/pngs/piece4.png0100644000014500001440000000030607562713365016045 0ustar noorkusersPNG  IHDR 0d PLTEPbxIDAT( 0{$[  `FH"W.(2Ƌ(ž 7 ^+yTTPY8}~0a#&ʗH4DbCIb$tbNI LH(YvPHp hAж" IENDB`tuxpuck-0.8.2/data/pngs/glass.png0100644000014500001440000000217307562713365016011 0ustar noorkusersPNG  IHDR PLTEPb-IDATh޽0 pY# 5oCSEimiRf`;R CpԵ}88ذ8,tα-%v(9C &uI༴D4G][ړ7pgUyP%,퉑 ,f 4xZ D=>j-da=S)vjaW}v{L_5冚8$, !_L|90FK&vCCr[p>,CΑ*+<|K*n+x>-ϳcv!ON{yAi?2p.)9`w&=+DC[aH z42GPr;/aTe8-V Sic^tx*gxDrWJc-O?Tz(nD2,DnSm99\*S((rcǓ-V[=80awL9E \pKIENDB`tuxpuck-0.8.2/data/pngs/piece5.png0100644000014500001440000000024507562713365016050 0ustar noorkusersPNG  IHDR(Tqt5 PLTEPbWIDAT=ʱ EM('`*KNi!$_Y{GwuYa–/`V Al,ک^YF eIENDB`tuxpuck-0.8.2/data/icons/0040755000014500001440000000000007562713365014336 5ustar noorkuserstuxpuck-0.8.2/data/icons/tuxpuck.ico0100644000014500001440000000627607562713365016545 0ustar noorkusers  ( @ -]:f2]1WEeLjJ`vO`l[__a^X]ZS]ZS_ZNZVNYRFXNAIF?SJ>TE68lujQBmEjEeO`lV`fUYZRVUZVN\VI\VIbVHhZJh^Oh^OwfOk^JSJ>8nuʢu`JuEjEeNZfPZ`VVTURLYRFXNAXNA_RCbVHk^JwfO}jV|oX|oXmbPXNAFހ^JuEjJd~PZ`RVUURLSNFXNAXNASJ>^N?bVBkZEtbK}jVqXvszek^J>vހ^RzLjJ`vRVUURLSNFXNASJ>SJ>XJ9XJ9aR>hVCt^CjMvXwskZE"V\ɝuQOpJ`vNZfURLSNFXNAXJ9XJ9XJ9XJ9XJ9]N:bR:t^CnN|`~Ȳͺ¢Įk^J+lVѝjQOpJ`vPZ`URLXNAXNA^N?XJ9XJ9XJ9]N:aR>kZEjMvX|`Įͺ˶Ȳ~pRF~9z_םv^OpPfxUYZYRF_RCXNA^N?^N?^N?^N?hVCkZEzbFpR`pĮҾҾĮwvXe\_ׂ޷vfOpUfo[__\VIYRF_RC_RC_RC_RCbVBkZEtbKjMvX|`pȲҾͺ}pe_׈vfZv[js[__\VIbVHbVHbVBbVHbVHbVHk^JwfO|oX|`i~ĮȲȲȲȲhh׆vfcwdntV`fa^Xh^Oh^Oh^Oh^OmbPrbRwfO|oXw^h~ѿѿӴͺĮs_ׂzvvr~dntlj`vpf|p^sjY|oX|p^vfzezeqsѿĮȲs_pېߢ߄zcwbfba^Xlj`lfXsjYsjY|p^vfs¶ѿѿͽpVpۈޭ^PvRj~O`lV`f]ZS]ZS]ZS]ZS]ZSh^Oa^Xlj`vfqȼʻͽ˶_Vpۭs8nBmEeJ`vO`lPZ`RVUVVTZVNZVNZVNZVN_ZNh^OmbPlfX|p^|l°˶Vs冻J0t+l*b-]1W6Rn6Pb>N^HNLFJLFJLJJFJJFSNFSNFYRFYRFbVHh^OrbR}jV|`iȵѿͽVss6,u)n+l%\)V2Sw*Ko5J^5J^XNAbVBkZEtbKqXyZ|``oOʆ9z,u)n$j$f V R'Mw*Ko,Fd,Fd8GS9BK9BK9BKBDAIF?IF?IF?SJ>XNA_RCkZEtbKqXvXyZ`o_0t)n$ja Z R$M'Mw&Fj,Fd0BVSJ>^N?bVBkZEtbKqXvXyZ`̮ӴJ0t$j_ Z"V&R$M'Mw6Pb5J^8GSHPTHNLSNFSNFXNA_RChVCt^CzbFjMxUxU`ʢ9z$f*d%\-])V1W6Rn:Rj6PbFRZHPTZVN\VIhVCkZEt^CzbFjFnNyZvӴӴF+l*d*b-]2]:ZzBZvC[oPZ`UYZ]ZSh^OtbKtbKfFjMnN`ͺ–s\QJuEjEePfxUfoV`fbfblfX|oXw^ho}}愰f^ntvvtvvvpfssiituxpuck-0.8.2/data/sounds/0040755000014500001440000000000007562713365014536 5ustar noorkuserstuxpuck-0.8.2/data/sounds/nock.ogg0100644000014500001440000000672707562713365016177 0ustar noorkusersOggSRbvorbis+OggSRbv0@ 0vorbis Xiphophorus libVorbis I 20011231vorbis"BCV@1:-sΑ0:1sA25s5ZcZkАUeAjD0eAd0f ÐAlPj !J 4dc 2!B!RJ)cQr%jZk Y$((20Eq$M5BCV@8XeYeYeYeYeYeYeYeYTEQEBCV((8$Id! EQqG,KDMTOUU5UUUU4MBCV1АU@Cbsb 4ddQV29[eR2hM92-cXK*9gPJ)% YQfbgQgNjsΩJ9ʘrs :4ksJ BCV B!dB!B!RH!АU qɑɑ$I$K,,4M4O<<=EQ4M4M4MUMUUUUUUՕ]]Yeu]a؅ae 4d@dB!B)RJ)c  Ypqɑɑ$K$,,4Q5=3ESTM4E4M4ET]WuUU]U]U]וm[weu]u]BCV:(")#9$I@h*@@8HX&ygi@h*@h戊(yghyyY(*(z* $tqqqGАU qGr,Gs4ɓfg1GNDGSnp?*~׊dx P8g?tuxpuck-0.8.2/data/sounds/crash.ogg0100644000014500001440000001215007562713365016330 0ustar noorkusersOggSM=vorbis+OggSM<}/ 0vorbis Xiphophorus libVorbis I 20011231vorbis"BCV@1:-sΑ0:1sA25s5ZcZkАUeAjD0eAd0f ÐAlPj !J 4dc 2!B!RJ)cQr%jZk Y$((20Eq$M5BCV@8XeYeYeYeYeYeYeYeYTEQEBCV((8$Id! EQqG,KDMTOUU5UUUU4MBCV1АU@Cbsb 4ddQV29[eR2hM92-cXK*9gPJ)% YQfbgQgNjsΩJ9ʘrs :4ksJ BCV B!dB!B!RH!АU qɑɑ$I$K,,4M4O<<=EQ4M4M4MUMUUUUUUՕ]]Yeu]a؅ae 4d@dB!B)RJ)c  Ypqɑɑ$K$,,4Q5=3ESTM4E4M4ET]WuUU]U]U]וm[weu]u]BCV:(")#9$I@h*@@8HX&ygi@h*@h戊(yghyyY(*(z* $tqqqGАU qGr,Gs4ɓT=-JtӃ >05Tl@SU,| KfJ `H܌t@ս( ul>US*6cDxx{?lkbb̺#09,kn1ϻ=rE $f]W%yby _壶q ;rw;D|P~&)+*itP6qBYzACONks yf^}ZgfbqTk|p}%WX x+dtP#Bn}kRwq jmRyh?[BoV^UNWX:ۢ-KV1rŏ1*z+w< ,}+ekckE= `w@_K) 3l[n ~3Ɩꩪ:yvۮW3jYoۖg>̶&GڑDB'_u,cq*=[vǿ˵.}b}ψ_޹]z&ߖh;j Pzl –КuΑ CVE;?JyLr 3wͅBz)^nBͻ8K<ۆTrudm=1$ 5ۙ~Ut9Cp SuoI~ݻ=q,x*.w~Y?N|_<9/;qх؊Hs' T"6 GVmRa kp#ŚfH=nw=O~֝Zz\ØYz9f1E @ km-"; =\1|/ef^]ʵk1<^:pGQ(;|deꮻkv3{eY3VH!B1; nWsdYl_9}=¬iq*^5l\bfޭ8VތޔWbldz, Bд߹ҫ8hKU鰜2zZ:n9ֈm}ݮWey\wi̹bnz[=̩X-YfN a۝ @En6yp3 k*@vLy}[s-vvƜ+!螷 -8Ŷmؖ! Р3uց$EKK[ =>6OyhV{ϯz~A/{clY*(x*A1/X'2`2lR xRYl:%l[Gc%̳]zerc)5׋$u8"[v28~ KޢD.8<]#s'cqLkErJMq{DKu_^y=ONdxu/^I(wf.ڰttmNGĩ#hS»{zHNtw:q1, [ /x1%M(]tuxpuck-0.8.2/data/Makefile0100644000014500001440000000342707562713365014666 0ustar noorkusers# Makefile for TuxPuck , Copyright Jacob Kroon 2001-2002 CC = gcc SOURCES = pad_png.c puck_png.c tux_png.c glass_png.c scoreboard_png.c \ arcana_png.c mousebar_png.c title_jpg.c board_jpg.c \ logo_jpg.c crash_ogg.c nock_ogg.c tux_apps_ogg.c \ tux_boos_ogg.c tux_eyes_spr.c monos_fnt.c monob_fnt.c ############################################################# OBJS=$(SOURCES:.c=.o) %.o : %.c $(CC) $(CFLAGS) -c -o $@ $< libdata.a : $(OBJS) ar r libdata.a $(OBJS) ranlib libdata.a $(SOURCES): cd ../utils/; $(MAKE) ../utils/ttf2font ttfs/mono.ttf monos.fnt 30 30 ../utils/data2c monos.fnt monos_fnt ../utils/ttf2font ttfs/mono.ttf monob.fnt 45 45 ../utils/data2c monob.fnt monob_fnt rm *.fnt ../utils/data2c jpgs/title.jpg title_jpg ../utils/data2c jpgs/board.jpg board_jpg ../utils/data2c jpgs/logo.jpg logo_jpg ../utils/data2c pngs/pad.png pad_png ../utils/data2c pngs/puck.png puck_png ../utils/data2c pngs/scoreboard.png scoreboard_png ../utils/data2c pngs/mousebar.png mousebar_png ../utils/data2c pngs/glass.png glass_png ../utils/data2c pngs/piece1.png piece1_png ../utils/data2c pngs/piece2.png piece2_png ../utils/data2c pngs/piece3.png piece3_png ../utils/data2c pngs/piece4.png piece4_png ../utils/data2c pngs/piece5.png piece5_png mv glass_png.c temp; cat temp piece?_png.c > glass_png.c rm piece?_png.c temp ../utils/data2c sounds/crash.ogg crash_ogg ../utils/data2c sounds/nock.ogg nock_ogg # Tux ../utils/anim tux/eyes.ac tux_eyes.spr ../utils/data2c tux_eyes.spr tux_eyes_spr rm tux_eyes.spr ../utils/data2c tux/tux.png tux_png ../utils/data2c tux/apps.ogg tux_apps_ogg ../utils/data2c tux/boos.ogg tux_boos_ogg # Arcana ../utils/data2c arcana/arcana.png arcana_png clean : rm -f *~ $(SOURCES) $(OBJS) libdata.a rm -rf pngs/.xvpics jpgs/.xvpics