gaviotatb-0.4.orig/0000755000175000017500000000000011536321052013342 5ustar varunvarungaviotatb-0.4.orig/gtb-probe.h0000755000175000017500000001712411536321052015404 0ustar varunvarun/* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #if !defined(H_GTBPROBE) #define H_GTBPROBE #ifdef __cplusplus extern "C" { #endif /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ #include #define tb_MAXPATHLEN 1024 /*----------------------------------*\ | CONSTANTS \*----------------------------------*/ enum TB_mask_values { tb_RESMASK = 3, tb_INFOMASK = 7, tb_PLYSHIFT = 3 }; enum TB_return_values { tb_DRAW = 0, tb_WMATE = 1, tb_BMATE = 2, tb_FORBID = 3, tb_UNKNOWN = 7 }; enum TB_pieces { tb_NOPIECE, tb_PAWN, tb_KNIGHT, tb_BISHOP, tb_ROOK, tb_QUEEN, tb_KING }; enum TB_sides { tb_WHITE_TO_MOVE, tb_BLACK_TO_MOVE }; enum TB_squares { tb_A1, tb_B1, tb_C1, tb_D1, tb_E1, tb_F1, tb_G1, tb_H1, tb_A2, tb_B2, tb_C2, tb_D2, tb_E2, tb_F2, tb_G2, tb_H2, tb_A3, tb_B3, tb_C3, tb_D3, tb_E3, tb_F3, tb_G3, tb_H3, tb_A4, tb_B4, tb_C4, tb_D4, tb_E4, tb_F4, tb_G4, tb_H4, tb_A5, tb_B5, tb_C5, tb_D5, tb_E5, tb_F5, tb_G5, tb_H5, tb_A6, tb_B6, tb_C6, tb_D6, tb_E6, tb_F6, tb_G6, tb_H6, tb_A7, tb_B7, tb_C7, tb_D7, tb_E7, tb_F7, tb_G7, tb_H7, tb_A8, tb_B8, tb_C8, tb_D8, tb_E8, tb_F8, tb_G8, tb_H8, tb_NOSQUARE }; enum TB_castling { tb_NOCASTLE = 0, tb_WOO = 8, tb_WOOO = 4, tb_BOO = 2, tb_BOOO = 1 }; enum TB_compression_scheme { tb_UNCOMPRESSED, tb_CP1, tb_CP2, tb_CP3, tb_CP4 }; /*----------------------------------*\ | FUNCTIONS \*----------------------------------*/ extern char * tb_init (int verbosity, int compression_scheme, const char **paths); extern char * tb_restart(int verbosity, int compression_scheme, const char **paths); extern void tb_done (void); extern int /*bool*/ tb_probe_hard (unsigned stm, unsigned epsq, unsigned castles, const unsigned *inp_wSQ, const unsigned *inp_bSQ, const unsigned char *inp_wPC, const unsigned char *inp_bPC, /*@out@*/ unsigned *tbinfo, /*@out@*/ unsigned *plies); extern int /*bool*/ tb_probe_soft (unsigned stm, unsigned epsq, unsigned castles, const unsigned *inp_wSQ, const unsigned *inp_bSQ, const unsigned char *inp_wPC, const unsigned char *inp_bPC, /*@out@*/ unsigned *tbinfo, /*@out@*/ unsigned *plies); extern int /*bool*/ tb_probe_WDL_hard (unsigned stm, unsigned epsq, unsigned castles, const unsigned *inp_wSQ, const unsigned *inp_bSQ, const unsigned char *inp_wPC, const unsigned char *inp_bPC, /*@out@*/ unsigned *tbinfo); extern int /*bool*/ tb_probe_WDL_soft (unsigned stm, unsigned epsq, unsigned castles, const unsigned *inp_wSQ, const unsigned *inp_bSQ, const unsigned char *inp_wPC, const unsigned char *inp_bPC, /*@out@*/ unsigned *tbinfo); extern int /*bool*/ tb_is_initialized (void); /* | tb_availability() returns 0 if no TBs available | Otherwise, the following bits are turned 'on' if... | ---------------------------------- | bit: meaning | ---------------------------------- | 0: at least one 3-pc TB is present | 1: 3-pc TBs are complete | 2: at least one 4-pc TB is present | 3: 4-pc TBs are complete | 4: at least one 5-pc TB is present | 5: 5-pc TBs are complete | 6: at least one 6-pc TB is present | 7: 6-pc TBs are complete | Example: if 63 is returned, it means all 3-4-5-pc TBs are present | Bits 6 and 7 will be always off, of course, until 6-piece TBs | are supported. */ extern unsigned int tb_availability(void); /* | tb_indexmemory ()returns | how much memory has been allocated for indexes */ extern size_t tb_indexmemory (void); /*----------------------------------*\ | cache \*----------------------------------*/ extern int /*bool*/ tbcache_init (size_t cache_mem, int wdl_fraction); extern int /*bool*/ tbcache_restart (size_t cache_mem, int wdl_fraction); extern void tbcache_done (void); extern int /*bool*/ tbcache_is_on (void); extern void tbcache_flush (void); /*----------------------------------*\ | STATS \*----------------------------------*/ /* | For maximum portability, some stats are provided | in two 32 bits integers rather than a single 64 bit number. | For intance, prob_hard_hits[0] contains the less significant 32 bits | (0 to 31), and prob_hard_hits[1] the most significant ones (32 to 63). | The 64-bit number can be recreated like this: | uint64_t x; | x = (uint64_t)probe_hard_hits[0]|((uint64_t)probe_hard_hits[1]<<32); | The user has the responsibility to combine the numbers and use the | proper 64 bit integers. */ struct TB_STATS { long unsigned int wdl_easy_hits [2]; /* hits that were found in own wdl cache */ long unsigned int wdl_hard_prob [2]; /* hard probes to the wdl cache: if fail, they will go to HD */ long unsigned int wdl_soft_prob [2]; /* soft probes to the wdl cache: if fail, they won't go to HD */ size_t wdl_cachesize ; /* size allocated for wdl cache */ double wdl_occupancy ; /* % of slots filled in wdl cache */ long unsigned int dtm_easy_hits [2]; /* hits that were found in own dtm cache */ long unsigned int dtm_hard_prob [2]; /* hard probes to the dtm cache: if fail, they will go to HD */ long unsigned int dtm_soft_prob [2]; /* soft probes to the dtm cache: if fail, they won't go to HD */ size_t dtm_cachesize ; /* size allocated for dtm cache */ double dtm_occupancy ; /* % of slots filled in dtm cache */ long unsigned int total_hits [2]; /* succesful probes */ long unsigned int memory_hits [2]; /* succesful probes to memory */ long unsigned int drive_hits [2]; /* succesful probes to the Hard drive */ long unsigned int drive_miss [2]; /* failing probes to the Hard drive */ long unsigned int bytes_read [2]; /* bytes read from Hard drive */ long unsigned int files_opened ; /* number of files newly opened */ double memory_efficiency ; /* % hits from memory over total hits */ }; extern void tbstats_reset (void); extern void tbstats_get (struct TB_STATS *stats); /*----------------------------------*\ | PATH MANAGEMENT \*----------------------------------*/ extern const char ** tbpaths_init (void); extern const char ** tbpaths_add (const char **ps, const char *newpath); extern const char ** tbpaths_done (const char **ps); extern const char * tbpaths_getmain (void); /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ #ifdef __cplusplus } #endif #endif gaviotatb-0.4.orig/progname.h0000644000175000017500000000003711536321052015323 0ustar varunvarun#define PROGRAM_NAME "tbprobe" gaviotatb-0.4.orig/sources.txt0000644000175000017500000000230311536321052015564 0ustar varunvaruntbprobe.c gtb-probe.c gtb-dec.c gtb-att.c ;----------------------------------- sysport/sysport.c ;----------------------------------- compression/wrap.c ;----------------------------------- compression/huffman/hzip.c ;----------------------------------- compression/lzma/LzmaEnc.c compression/lzma/LzmaDec.c compression/lzma/Alloc.c compression/lzma/LzFind.c compression/lzma/Lzma86Enc.c compression/lzma/Lzma86Dec.c compression/lzma/Bra86.c ;----------------------------------- compression/zlib/zcompress.c compression/zlib/uncompr.c compression/zlib/inflate.c compression/zlib/deflate.c compression/zlib/adler32.c compression/zlib/crc32.c compression/zlib/infback.c compression/zlib/inffast.c compression/zlib/inftrees.c compression/zlib/trees.c compression/zlib/zutil.c ;----------------------------------- compression/liblzf/lzf_c.c compression/liblzf/lzf_d.c ;----------------------------------- ;compression/bzip2-1.0.5/bzlib.c ;compression/bzip2-1.0.5/crctable.c ;compression/bzip2-1.0.5/randtable.c ;compression/bzip2-1.0.5/decompress.c ;compression/bzip2-1.0.5/compress.c ;compression/bzip2-1.0.5/huffman.c ;compression/bzip2-1.0.5/blocksort.c ;----------------------------------- gaviotatb-0.4.orig/tbprobe.c0000644000175000017500000003142211536321052015145 0ustar varunvarun/* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include #include "gtb-probe.h" /* local prototypes */ static void dtm_print (unsigned stm, int tb_available, unsigned info, unsigned pliestomate); static void wdl_print (unsigned stm, int tb_available, unsigned info); /* | paths to TBs, generally provided by the user | Two styles are accepted: One path at a time, or | multiple paths separated by ';' | The example in this file uses both styles simultaneoulsy */ const char *path1 = "gtb/gtb4"; const char *path2 = "gtb/gtb3;gtb/gtb2"; const char *path3 = "gtb/gtb1"; int main (int argc, char *argv[]) { /*--------------------------------------*\ | Probing info to be provided \*--------------------------------------*/ unsigned int stm; /* side to move */ unsigned int epsquare; /* target square for an en passant capture */ unsigned int castling; /* castling availability, 0 => no castles */ unsigned int ws[17]; /* list of squares for white */ unsigned int bs[17]; /* list of squares for black */ unsigned char wp[17]; /* what white pieces are on those squares */ unsigned char bp[17]; /* what black pieces are on those squares */ /*--------------------------------------*\ | Probing info to be requested \*--------------------------------------*/ char *initinfo; /* NULL if verbosity=0, initialization info if verbosity=1*/ int tb_available; /* 0 => FALSE, 1 => TRUE */ unsigned info = tb_UNKNOWN; /* default, no tbvalue */ unsigned pliestomate; /*--------------------------------------*\ | Initialization info to be provided \*--------------------------------------*/ int verbosity = 1; /* initialization 0 = non-verbose, 1 = verbose */ int scheme = tb_CP4; /* compression scheme to be used */ const char ** paths; /* paths where files will be searched */ size_t cache_size = 32*1024*1024; /* 32 MiB in this example */ /* wdl_fraction: fraction, over 128, that will be dedicated to wdl information. In other words, 96 means 3/4 of the cache will be dedicated to win-draw-loss info, and 1/4 dedicated to distance to mate information. */ int wdl_fraction = 96; /*----------------------------------*\ | Return version of this demo \*----------------------------------*/ #include "version.h" #include "progname.h" if (argc > 1 && 0==strcmp(argv[1],"-v")) { printf ("%s %s\n",PROGRAM_NAME,VERSION); return 0; } /*--------------------------------------*\ | Initialization: | Include something like this at | the beginning of the program. \*--------------------------------------*/ /* the number of paths that can be added is only limited by memory */ paths = tbpaths_init(); if (NULL == paths) printf ("Error here... %d\n",__LINE__); paths = tbpaths_add (paths, path1); if (NULL == paths) printf ("Error here... %d\n",__LINE__); paths = tbpaths_add (paths, path2); if (NULL == paths) printf ("Error here... %d\n",__LINE__); paths = tbpaths_add (paths, path3); if (NULL == paths) printf ("Error here... %d\n",__LINE__); /* init probing code, indexes, paths, etc. */ initinfo = tb_init (verbosity, scheme, paths); /* init cache */ tbcache_init(cache_size, wdl_fraction); tbstats_reset(); /* information to be output for the user, or to be saved in logs etc.*/ if (initinfo != NULL) printf ("%s",initinfo); /*--------------------------------------*\ | | ASSIGNING POSITIONAL VALUES for | one probing example | \*--------------------------------------*/ #if 1 /* needs 3-pc installed */ /* FEN: 8/8/8/4k3/8/8/8/KR6 w - - 0 1 */ stm = tb_WHITE_TO_MOVE;/* 0 = white to move, 1 = black to move */ epsquare = tb_NOSQUARE; /* no ep available */ castling = tb_NOCASTLE; /* no castling available, otherwise combine all the castling possibilities with '|', for instance white could castle both sides, black can't: castling = tb_WOO | tb_WOOO; both could castle on the king side: castling = tb_WOO | tb_WOO; etc. */ ws[0] = tb_A1; ws[1] = tb_B1; ws[2] = tb_NOSQUARE; /* it marks the end of list */ wp[0] = tb_KING; wp[1] = tb_ROOK; wp[2] = tb_NOPIECE; /* it marks the end of list */ bs[0] = tb_E5; bs[1] = tb_NOSQUARE; /* it marks the end of list */ bp[0] = tb_KING; bp[1] = tb_NOPIECE; /* it marks the end of list */ #else /* needs 4-pc installed */ /* FEN: 8/8/6p1/4K3/7b/8/8/2k5 w - - 0 76 */ stm = tb_WHITE_TO_MOVE;/* 0 = white to move, 1 = black to move */ epsquare = tb_NOSQUARE; /* no ep available */ castling = tb_NOCASTLE; /* no castling available, otherwise combine all the castling possibilities with '|', for instance white could castle both sides, black can't: castling = tb_WOO | tb_WOOO; both could castle on the king side: castling = tb_WOO | tb_WOO; etc. */ ws[0] = tb_E5; ws[1] = tb_NOSQUARE; /* it marks the end of list */ wp[0] = tb_KING; wp[1] = tb_NOPIECE; /* it marks the end of list */ bs[0] = tb_H4; bs[1] = tb_G6; bs[2] = tb_C1; bs[3] = tb_NOSQUARE; /* it marks the end of list */ bp[0] = tb_BISHOP; bp[1] = tb_PAWN; bp[2] = tb_KING; bp[3] = tb_NOPIECE; /* it marks the end of list */ #endif /*--------------------------------------*\ | | PROBING TBs #1 (HARD) | \*--------------------------------------*/ /* probing hard will go to the cache first, if the info is not found there, it will finally go to the Hard Drive to find it */ tb_available = tb_probe_hard (stm, epsquare, castling, ws, bs, wp, bp, &info, &pliestomate); /* print info */ dtm_print (stm, tb_available, info, pliestomate); /*--------------------------------------*\ | | ASSIGNING POSITIONAL VALUES for | another example | \*--------------------------------------*/ /* only the rook position is different, the rest is the same */ ws[1] = tb_B6; /*--------------------------------------*\ | | PROBING TBs #2 (SOFT) | \*--------------------------------------*/ /* probing soft goes to cache, if info not found there, it returns FALSE It will **NEVER** go to the Hard Drive If info is found, it is because the previous probe #1 filled up the cache with the info needed for probe #2 */ tb_available = tb_probe_soft (stm, epsquare, castling, ws, bs, wp, bp, &info, &pliestomate); /* print info */ dtm_print (stm, tb_available, info, pliestomate); /*--------------------------------------*\ | | PROBING TBs #3 (SOFT) | An example of what happens | after tbcache_flush() | which may be used to clear it | for epd tests, etc. | \*--------------------------------------*/ /* cache is flushed, so probing soft with the same position as #2 will surely return FALSE */ tbcache_flush(); /* same as #2 */ tb_available = tb_probe_soft (stm, epsquare, castling, ws, bs, wp, bp, &info, &pliestomate); /* print info */ dtm_print (stm, tb_available, info, pliestomate); /*--------------------------------------*\ | | PROBING TBs #4 | (HARD, only win, draw, lose) | \*--------------------------------------*/ /* Probing with the WDL versions of the probing functions will return only the info needed to know whether a position is a win, draw, or a loss. The Gaviota tablebase library will try to return this info with the best performance possible. If the only info needed for a position is WDL, this function should be used rather than the regular tb_probe_hard() function. This function would be the "equivalent" of one that probes a bitbase. */ tb_available = tb_probe_WDL_hard (stm, epsquare, castling, ws, bs, wp, bp, &info); /* print info */ wdl_print (stm, tb_available, info); /*--------------------------------------*\ | | RESTART? | What if the user changes | the conditions during run? | \*--------------------------------------*/ /* | NEW INFO BY THE USER, example \*---------------------------------------------*/ scheme = tb_CP2; /* compression scheme changes */ path1 = "gtb/gtb2"; path2 = "gtb/gtb1"; cache_size = 16*1024*1024; /* 16 MiB is the new cache size */ wdl_fraction = 104; /* more cache for wdl info than before */ /* | RESTART PROCESS \*---------------------------------------------*/ /* cleanup old paths */ paths = tbpaths_done(paths); /* init new paths */ paths = tbpaths_init(); paths = tbpaths_add (paths, path1); paths = tbpaths_add (paths, path2); /* restart */ initinfo = tb_restart (verbosity, scheme, paths); tbcache_restart(cache_size, wdl_fraction); /* information to be output for the user, or to be saved in logs etc.*/ if (initinfo != NULL) printf ("%s",initinfo); /* | Just to show, It is possible to know what TBs are installed. | But, I can only find out after tb_init or tb_restart \*----------------------------------------------------------------------------------------*/ { unsigned av = tb_availability(); if (0 != (av& 1)) printf ("Some 3-pc TBs available\n"); else printf ("No 3-pc TBs available\n"); if (0 != (av& 2)) printf ("3-pc TBs complete\n"); if (0 != (av& 4)) printf ("Some 4-pc TBs available\n"); else printf ("No 4-pc TBs available\n"); if (0 != (av& 8)) printf ("4-pc TBs complete\n"); if (0 != (av&16)) printf ("Some 5-pc TBs available\n"); else printf ("No 5-pc TBs available\n"); if (0 != (av&32)) printf ("5-pc TBs complete\n"); printf ("\n"); } /* | Now that TBs have been restarted, we probe once again (HARD) \*----------------------------------------------------------------------------------------*/ tb_available = tb_probe_hard (stm, epsquare, castling, ws, bs, wp, bp, &info, &pliestomate); /* print info */ dtm_print (stm, tb_available, info, pliestomate); /*--------------------------------------*\ | | Clean up at the end of the program | \*--------------------------------------*/ tbcache_done(); tb_done(); paths = tbpaths_done(paths); /*--------------------------------------*\ | | Return | \*--------------------------------------*/ if (tb_available) return EXIT_SUCCESS; else return EXIT_FAILURE; } /*----------------------------------------------------------------------*\ | These are local functions that just print the results after probing \*----------------------------------------------------------------------*/ static void dtm_print (unsigned stm, int tb_available, unsigned info, unsigned pliestomate) { if (tb_available) { if (info == tb_DRAW) printf ("Draw\n"); else if (info == tb_WMATE && stm == tb_WHITE_TO_MOVE) printf ("White mates, plies=%u\n", pliestomate); else if (info == tb_BMATE && stm == tb_BLACK_TO_MOVE) printf ("Black mates, plies=%u\n", pliestomate); else if (info == tb_WMATE && stm == tb_BLACK_TO_MOVE) printf ("Black is mated, plies=%u\n", pliestomate); else if (info == tb_BMATE && stm == tb_WHITE_TO_MOVE) printf ("White is mated, plies=%u\n", pliestomate); else { printf ("FATAL ERROR, This should never be reached\n"); exit(EXIT_FAILURE); } printf ("\n"); } else { printf ("Tablebase info not available\n\n"); } } static void wdl_print (unsigned stm, int tb_available, unsigned info) { if (tb_available) { if (info == tb_DRAW) printf ("Draw\n"); else if (info == tb_WMATE && stm == tb_WHITE_TO_MOVE) printf ("White mates\n"); else if (info == tb_BMATE && stm == tb_BLACK_TO_MOVE) printf ("Black mates\n"); else if (info == tb_WMATE && stm == tb_BLACK_TO_MOVE) printf ("Black is mated\n"); else if (info == tb_BMATE && stm == tb_WHITE_TO_MOVE) printf ("White is mated\n"); else { printf ("FATAL ERROR, This should never be reached\n"); exit(EXIT_FAILURE); } printf ("\n"); } else { printf ("Tablebase info not available\n\n"); } } gaviotatb-0.4.orig/gtb-dec.c0000644000175000017500000000637411536321052015025 0ustar varunvarun/* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*--------------------------------------------------------------------------*\ | | Compressing wrapper functions | *---------------------------------------------------------------------------*/ #define MAXBLOCK (1 << 16) #include #include "gtb-dec.h" #include "hzip.h" #include "wrap.h" typedef int bool_t; #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0; #endif /*static unsigned char intermediate_block[MAXBLOCK] ;*/ static int DECODE_SCHEME = CP4; static int CP_SCHEME = CP4; static int f_decode (size_t z, unsigned char *bz, size_t n, unsigned char *bp); extern void set_decoding_scheme(int x) { DECODE_SCHEME = x; CP_SCHEME = x; } extern int decoding_scheme(void) { return DECODE_SCHEME; } extern int decode (size_t z, unsigned char *bz, size_t n, unsigned char *bp) { return f_decode (z, bz, n, bp); } /*======================== WRAPPERS ========================*/ static int f_decode (size_t z, unsigned char *bz, size_t n, unsigned char *bp) { /* bp buffer provided | bz buffer "zipped", compressed | n len of buffer provided | z len of buffer zipped \*---------------------------------------------------------------*/ /* unsigned char *ib = intermediate_block; unsigned int m; return huff_decode (bz, z, ib, &m, MAXBLOCK) && rle_decode (ib, m, bp, &n, MAXBLOCK); */ if (CP_SCHEME == CP1) { /* HUFFMAN */ return huff_decode (bz, z, bp, &n, MAXBLOCK); } else if (CP_SCHEME == CP2) { /* LZF */ return lzf_decode (bz, z, bp, &n, MAXBLOCK); } else if (CP_SCHEME == CP3) { /* ZLIB */ return zlib_decode (bz, z, bp, &n, MAXBLOCK); } else if (CP_SCHEME == CP4) { /* LZMA86 */ return lzma_decode (bz, z, bp, &n, n); /* maximum needs to be the exact number that it will produce */ } else if (CP_SCHEME == CP7) { /* RLE */ return rle_decode (bz, z, bp, &n, MAXBLOCK); #if defined (LIBBZIP2) } else if (CP_SCHEME == CP8) { /* BZIP2 */ return bzip2_decode (bz, z, bp, &n, MAXBLOCK); #endif } else if (CP_SCHEME == CP9) { return justcopy_decode (bz, z, bp, &n, MAXBLOCK); } else { return FALSE; } } gaviotatb-0.4.orig/compression/0000755000175000017500000000000012152773637015722 5ustar varunvarungaviotatb-0.4.orig/compression/liblzf/0000755000175000017500000000000011536321052017165 5ustar varunvarungaviotatb-0.4.orig/compression/liblzf/lzf_c.c0000644000175000017500000002307011536321052020430 0ustar varunvarun/* * Copyright (c) 2000-2008 Marc Alexander Lehmann * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License ("GPL") version 2 or any later version, * in which case the provisions of the GPL are applicable instead of * the above. If you wish to allow the use of your version of this file * only under the terms of the GPL and not to allow others to use your * version of this file under the BSD license, indicate your decision * by deleting the provisions above and replace them with the notice * and other provisions required by the GPL. If you do not delete the * provisions above, a recipient may use your version of this file under * either the BSD or the GPL. */ /*MAB: added this include to silence compiler */ #include "lzf.h" #include "lzfP.h" #define HSIZE (1 << (HLOG)) /* * don't play with this unless you benchmark! * decompression is not dependent on the hash function * the hashing function might seem strange, just believe me * it works ;) */ #ifndef FRST # define FRST(p) (((p[0]) << 8) | p[1]) # define NEXT(v,p) (((v) << 8) | p[2]) # if ULTRA_FAST # define IDX(h) ((( h >> (3*8 - HLOG)) - h ) & (HSIZE - 1)) # elif VERY_FAST # define IDX(h) ((( h >> (3*8 - HLOG)) - h*5) & (HSIZE - 1)) # else # define IDX(h) ((((h ^ (h << 5)) >> (3*8 - HLOG)) - h*5) & (HSIZE - 1)) # endif #endif /* * IDX works because it is very similar to a multiplicative hash, e.g. * ((h * 57321 >> (3*8 - HLOG)) & (HSIZE - 1)) * the latter is also quite fast on newer CPUs, and compresses similarly. * * the next one is also quite good, albeit slow ;) * (int)(cos(h & 0xffffff) * 1e6) */ #if 0 /* original lzv-like hash function, much worse and thus slower */ # define FRST(p) (p[0] << 5) ^ p[1] # define NEXT(v,p) ((v) << 5) ^ p[2] # define IDX(h) ((h) & (HSIZE - 1)) #endif #define MAX_LIT (1 << 5) #define MAX_OFF (1 << 13) #define MAX_REF ((1 << 8) + (1 << 3)) #if __GNUC__ >= 3 # define expect(expr,value) __builtin_expect ((expr),(value)) # define inline inline #else # define expect(expr,value) (expr) # define inline static #endif #define expect_false(expr) expect ((expr) != 0, 0) #define expect_true(expr) expect ((expr) != 0, 1) /* * compressed format * * 000LLLLL ; literal * LLLooooo oooooooo ; backref L * 111ooooo LLLLLLLL oooooooo ; backref L+7 * */ unsigned int lzf_compress (const void *const in_data, unsigned int in_len, void *out_data, unsigned int out_len #if LZF_STATE_ARG , LZF_STATE htab #endif ) { #if !LZF_STATE_ARG LZF_STATE htab; #endif const u8 **hslot; const u8 *ip = (const u8 *)in_data; u8 *op = (u8 *)out_data; const u8 *in_end = ip + in_len; u8 *out_end = op + out_len; const u8 *ref; /* off requires a type wide enough to hold a general pointer difference. * ISO C doesn't have that (size_t might not be enough and ptrdiff_t only * works for differences within a single object). We also assume that no * no bit pattern traps. Since the only platform that is both non-POSIX * and fails to support both assumptions is windows 64 bit, we make a * special workaround for it. */ #if defined (WIN32) && defined (_M_X64) unsigned _int64 off; /* workaround for missing POSIX compliance */ #else unsigned long off; #endif unsigned int hval; int lit; if (!in_len || !out_len) return 0; #if INIT_HTAB memset (htab, 0, sizeof (htab)); # if 0 for (hslot = htab; hslot < htab + HSIZE; hslot++) *hslot++ = ip; # endif #endif lit = 0; op++; /* start run */ hval = (unsigned)(FRST (ip)); /*MAB silence warning with cast*/ while (ip < in_end - 2) { hval = NEXT (hval, ip); hslot = htab + IDX (hval); ref = *hslot; *hslot = ip; if ( /*MAB: Remove 1, it was a constant, to silence compiler */ #if INIT_HTAB ref < ip /* the next test will actually take care of this, but this is faster */ && #endif (off = (unsigned long)(ip - ref - 1)) < MAX_OFF /*MAB silence warning with cast */ && ip + 4 < in_end && ref > (u8 *)in_data #if STRICT_ALIGN && ref[0] == ip[0] && ref[1] == ip[1] && ref[2] == ip[2] #else && *(u16 *)ref == *(u16 *)ip && ref[2] == ip[2] #endif ) { /* match found at *ref++ */ unsigned int len = 2; unsigned int maxlen = (unsigned)(in_end - ip - (int)len); /* MAB silence warning with casting */ maxlen = maxlen > MAX_REF ? MAX_REF : maxlen; if (expect_false (op + 3 + 1 >= out_end)) /* first a faster conservative test */ if (op - !lit + 3 + 1 >= out_end) /* second the exact but rare test */ return 0; op [- lit - 1] = (u8) (lit - 1); /* stop run */ /*MAB: Casting to u8 to silence compiler */ op -= !lit; /* undo run if length is zero */ for (;;) { if (expect_true (maxlen > 16)) { len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; len++; if (ref [len] != ip [len]) break; } do len++; while (len < maxlen && ref[len] == ip[len]); break; } len -= 2; /* len is now #octets - 1 */ ip++; if (len < 7) { *op++ = (u8) ((off >> 8) + (len << 5)); /*MAB: Casting to u8 to silence compiler */ } else { *op++ = (u8) ((off >> 8) + ( 7 << 5)); /*MAB: Casting to u8 to silence compiler */ *op++ = (u8) (len - 7); /*MAB: Casting to u8 to silence compiler */ } *op++ = (u8) off; /*MAB: Casting to u8 to silence compiler */ lit = 0; op++; /* start run */ ip += len + 1; if (expect_false (ip >= in_end - 2)) break; #if ULTRA_FAST || VERY_FAST --ip; # if VERY_FAST && !ULTRA_FAST --ip; # endif hval = (unsigned)(FRST (ip)); /*MAB silence warning with cast*/ hval = NEXT (hval, ip); htab[IDX (hval)] = ip; ip++; # if VERY_FAST && !ULTRA_FAST hval = NEXT (hval, ip); htab[IDX (hval)] = ip; ip++; # endif #else ip -= len + 1; do { hval = NEXT (hval, ip); htab[IDX (hval)] = ip; ip++; } while (len--); #endif } else { /* one more literal byte we must copy */ if (expect_false (op >= out_end)) return 0; lit++; *op++ = *ip++; if (expect_false (lit == MAX_LIT)) { op [- lit - 1] = (u8) (lit - 1); /* stop run */ /*MAB: Casting to u8 to silence compiler */ lit = 0; op++; /* start run */ } } } if (op + 3 > out_end) /* at most 3 bytes can be missing here */ return 0; while (ip < in_end) { lit++; *op++ = *ip++; if (expect_false (lit == MAX_LIT)) { op [- lit - 1] = (u8) (lit - 1); /* stop run */ /*MAB: Casting to u8 to silence compiler */ lit = 0; op++; /* start run */ } } op [- lit - 1] = (u8) (lit - 1); /* end run */ /*MAB: Casting to u8 to silence compiler */ op -= !lit; /* undo run if length is zero */ return (unsigned)(op - (u8 *)out_data); /*MAB: Casting to unsigned to silence compiler */ } gaviotatb-0.4.orig/compression/liblzf/LICENSE0000644000175000017500000000263511536321052020200 0ustar varunvarunCopyright (c) 2000-2007 Marc Alexander Lehmann Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Alternatively, the following files carry an additional notice that explicitly allows relicensing under the GPLv2: lzf.c lzf.h lzfP.h lzf_c.c lzf_d.c gaviotatb-0.4.orig/compression/liblzf/lzfP.h0000644000175000017500000001204011536321052020246 0ustar varunvarun/* * Copyright (c) 2000-2007 Marc Alexander Lehmann * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License ("GPL") version 2 or any later version, * in which case the provisions of the GPL are applicable instead of * the above. If you wish to allow the use of your version of this file * only under the terms of the GPL and not to allow others to use your * version of this file under the BSD license, indicate your decision * by deleting the provisions above and replace them with the notice * and other provisions required by the GPL. If you do not delete the * provisions above, a recipient may use your version of this file under * either the BSD or the GPL. */ #ifndef LZFP_h #define LZFP_h #define STANDALONE 1 /* at the moment, this is ok. */ #ifndef STANDALONE # include "lzf.h" #endif /* * Size of hashtable is (1 << HLOG) * sizeof (char *) * decompression is independent of the hash table size * the difference between 15 and 14 is very small * for small blocks (and 14 is usually a bit faster). * For a low-memory/faster configuration, use HLOG == 13; * For best compression, use 15 or 16 (or more, up to 23). */ #ifndef HLOG # define HLOG 16 #endif /* * Sacrifice very little compression quality in favour of compression speed. * This gives almost the same compression as the default code, and is * (very roughly) 15% faster. This is the preferred mode of operation. */ #ifndef VERY_FAST # define VERY_FAST 1 #endif /* * Sacrifice some more compression quality in favour of compression speed. * (roughly 1-2% worse compression for large blocks and * 9-10% for small, redundant, blocks and >>20% better speed in both cases) * In short: when in need for speed, enable this for binary data, * possibly disable this for text data. */ #ifndef ULTRA_FAST # define ULTRA_FAST 0 #endif /* * Unconditionally aligning does not cost very much, so do it if unsure */ #ifndef STRICT_ALIGN # define STRICT_ALIGN !(defined(__i386) || defined (__amd64)) #endif /* * You may choose to pre-set the hash table (might be faster on some * modern cpus and large (>>64k) blocks, and also makes compression * deterministic/repeatable when the configuration otherwise is the same). */ #ifndef INIT_HTAB # define INIT_HTAB 0 #endif /* * Avoid assigning values to errno variable? for some embedding purposes * (linux kernel for example), this is neccessary. NOTE: this breaks * the documentation in lzf.h. */ #ifndef AVOID_ERRNO # define AVOID_ERRNO 0 #endif /* * Wether to pass the LZF_STATE variable as argument, or allocate it * on the stack. For small-stack environments, define this to 1. * NOTE: this breaks the prototype in lzf.h. */ #ifndef LZF_STATE_ARG # define LZF_STATE_ARG 0 #endif /* * Wether to add extra checks for input validity in lzf_decompress * and return EINVAL if the input stream has been corrupted. This * only shields against overflowing the input buffer and will not * detect most corrupted streams. * This check is not normally noticable on modern hardware * (<1% slowdown), but might slow down older cpus considerably. */ #ifndef CHECK_INPUT # define CHECK_INPUT 1 #endif /*****************************************************************************/ /* nothing should be changed below */ typedef unsigned char u8; typedef const u8 *LZF_STATE[1 << (HLOG)]; #if !STRICT_ALIGN /* for unaligned accesses we need a 16 bit datatype. */ # include # if USHRT_MAX == 65535 typedef unsigned short u16; # elif UINT_MAX == 65535 typedef unsigned int u16; # else # undef STRICT_ALIGN # define STRICT_ALIGN 1 # endif #endif #if ULTRA_FAST # if defined(VERY_FAST) # undef VERY_FAST # endif #endif #if INIT_HTAB # ifdef __cplusplus # include # else # include # endif #endif #endif gaviotatb-0.4.orig/compression/liblzf/lzf_d.c0000644000175000017500000001110211536321052020422 0ustar varunvarun/* * Copyright (c) 2000-2007 Marc Alexander Lehmann * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License ("GPL") version 2 or any later version, * in which case the provisions of the GPL are applicable instead of * the above. If you wish to allow the use of your version of this file * only under the terms of the GPL and not to allow others to use your * version of this file under the BSD license, indicate your decision * by deleting the provisions above and replace them with the notice * and other provisions required by the GPL. If you do not delete the * provisions above, a recipient may use your version of this file under * either the BSD or the GPL. */ /*MAB: added this include to silence compiler */ #include "lzf.h" #include "lzfP.h" #if AVOID_ERRNO # define SET_ERRNO(n) #else # include # define SET_ERRNO(n) errno = (n) #endif /*MAB: __i386 and __amd64 surrounded by defined() to silence intel compiler */ /*MAB: added __STRICT_ANSI__ flag so it could be checked with -ansi -pedantic */ #if (defined(__i386) || defined(__amd64)) && __GNUC__ >= 3 && !defined(__STRICT_ANSI__) # define lzf_movsb(dst, src, len) \ asm ("rep movsb" \ : "=D" (dst), "=S" (src), "=c" (len) \ : "0" (dst), "1" (src), "2" (len)); #endif unsigned int lzf_decompress (const void *const in_data, unsigned int in_len, void *out_data, unsigned int out_len) { u8 const *ip = (const u8 *)in_data; u8 *op = (u8 *)out_data; u8 const *const in_end = ip + in_len; u8 *const out_end = op + out_len; do { unsigned int ctrl = *ip++; if (ctrl < (1 << 5)) /* literal run */ { ctrl++; if (op + ctrl > out_end) { SET_ERRNO (E2BIG); return 0; } #if CHECK_INPUT if (ip + ctrl > in_end) { SET_ERRNO (EINVAL); return 0; } #endif #ifdef lzf_movsb lzf_movsb (op, ip, ctrl); #else do *op++ = *ip++; while (--ctrl); #endif } else /* back reference */ { unsigned int len = ctrl >> 5; u8 *ref = op - ((ctrl & 0x1f) << 8) - 1; #if CHECK_INPUT if (ip >= in_end) { SET_ERRNO (EINVAL); return 0; } #endif if (len == 7) { len += *ip++; #if CHECK_INPUT if (ip >= in_end) { SET_ERRNO (EINVAL); return 0; } #endif } ref -= *ip++; if (op + len + 2 > out_end) { SET_ERRNO (E2BIG); return 0; } if (ref < (u8 *)out_data) { SET_ERRNO (EINVAL); return 0; } #ifdef lzf_movsb len += 2; lzf_movsb (op, ref, len); #else *op++ = *ref++; *op++ = *ref++; do *op++ = *ref++; while (--len); #endif } } while (ip < in_end); #if 0 return op - (u8 *)out_data; #else return (unsigned int)(op - (u8 *)out_data); /*MAB: cast to silence warning */ #endif } gaviotatb-0.4.orig/compression/liblzf/lzf.h0000644000175000017500000001047511536321052020140 0ustar varunvarun/* * Copyright (c) 2000-2008 Marc Alexander Lehmann * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- * ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * Alternatively, the contents of this file may be used under the terms of * the GNU General Public License ("GPL") version 2 or any later version, * in which case the provisions of the GPL are applicable instead of * the above. If you wish to allow the use of your version of this file * only under the terms of the GPL and not to allow others to use your * version of this file under the BSD license, indicate your decision * by deleting the provisions above and replace them with the notice * and other provisions required by the GPL. If you do not delete the * provisions above, a recipient may use your version of this file under * either the BSD or the GPL. */ #ifndef LZF_H #define LZF_H /*********************************************************************** ** ** lzf -- an extremely fast/free compression/decompression-method ** http://liblzf.plan9.de/ ** ** This algorithm is believed to be patent-free. ** ***********************************************************************/ #define LZF_VERSION 0x0105 /* 1.5, API version */ /* * Compress in_len bytes stored at the memory block starting at * in_data and write the result to out_data, up to a maximum length * of out_len bytes. * * If the output buffer is not large enough or any error occurs return 0, * otherwise return the number of bytes used, which might be considerably * more than in_len (but less than 104% of the original size), so it * makes sense to always use out_len == in_len - 1), to ensure _some_ * compression, and store the data uncompressed otherwise (with a flag, of * course. * * lzf_compress might use different algorithms on different systems and * even different runs, thus might result in different compressed strings * depending on the phase of the moon or similar factors. However, all * these strings are architecture-independent and will result in the * original data when decompressed using lzf_decompress. * * The buffers must not be overlapping. * * If the option LZF_STATE_ARG is enabled, an extra argument must be * supplied which is not reflected in this header file. Refer to lzfP.h * and lzf_c.c. * */ unsigned int lzf_compress (const void *const in_data, unsigned int in_len, void *out_data, unsigned int out_len); /* * Decompress data compressed with some version of the lzf_compress * function and stored at location in_data and length in_len. The result * will be stored at out_data up to a maximum of out_len characters. * * If the output buffer is not large enough to hold the decompressed * data, a 0 is returned and errno is set to E2BIG. Otherwise the number * of decompressed bytes (i.e. the original length of the data) is * returned. * * If an error in the compressed data is detected, a zero is returned and * errno is set to EINVAL. * * This function is very fast, about as fast as a copying loop. */ unsigned int lzf_decompress (const void *const in_data, unsigned int in_len, void *out_data, unsigned int out_len); #endif gaviotatb-0.4.orig/compression/lzma/0000755000175000017500000000000011536321052016646 5ustar varunvarungaviotatb-0.4.orig/compression/lzma/Alloc.c0000755000175000017500000000537311536321052020057 0ustar varunvarun/* Alloc.c -- Memory allocation functions 2008-09-24 Igor Pavlov Public domain */ #ifdef _WIN32 #include #endif #include #include "Alloc.h" /* #define _SZ_ALLOC_DEBUG */ /* use _SZ_ALLOC_DEBUG to debug alloc/free operations */ #ifdef _SZ_ALLOC_DEBUG #include int g_allocCount = 0; int g_allocCountMid = 0; int g_allocCountBig = 0; #endif void *MyAlloc(size_t size) { if (size == 0) return 0; #ifdef _SZ_ALLOC_DEBUG { void *p = malloc(size); fprintf(stderr, "\nAlloc %10d bytes, count = %10d, addr = %8X", size, g_allocCount++, (unsigned)p); return p; } #else return malloc(size); #endif } void MyFree(void *address) { #ifdef _SZ_ALLOC_DEBUG if (address != 0) fprintf(stderr, "\nFree; count = %10d, addr = %8X", --g_allocCount, (unsigned)address); #endif free(address); } #ifdef _WIN32 void *MidAlloc(size_t size) { if (size == 0) return 0; #ifdef _SZ_ALLOC_DEBUG fprintf(stderr, "\nAlloc_Mid %10d bytes; count = %10d", size, g_allocCountMid++); #endif return VirtualAlloc(0, size, MEM_COMMIT, PAGE_READWRITE); } void MidFree(void *address) { #ifdef _SZ_ALLOC_DEBUG if (address != 0) fprintf(stderr, "\nFree_Mid; count = %10d", --g_allocCountMid); #endif if (address == 0) return; VirtualFree(address, 0, MEM_RELEASE); } #ifndef MEM_LARGE_PAGES #undef _7ZIP_LARGE_PAGES #endif #ifdef _7ZIP_LARGE_PAGES SIZE_T g_LargePageSize = 0; typedef SIZE_T (WINAPI *GetLargePageMinimumP)(); #endif void SetLargePageSize() { #ifdef _7ZIP_LARGE_PAGES SIZE_T size = 0; GetLargePageMinimumP largePageMinimum = (GetLargePageMinimumP) GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "GetLargePageMinimum"); if (largePageMinimum == 0) return; size = largePageMinimum(); if (size == 0 || (size & (size - 1)) != 0) return; g_LargePageSize = size; #endif } void *BigAlloc(size_t size) { if (size == 0) return 0; #ifdef _SZ_ALLOC_DEBUG fprintf(stderr, "\nAlloc_Big %10d bytes; count = %10d", size, g_allocCountBig++); #endif #ifdef _7ZIP_LARGE_PAGES if (g_LargePageSize != 0 && g_LargePageSize <= (1 << 30) && size >= (1 << 18)) { void *res = VirtualAlloc(0, (size + g_LargePageSize - 1) & (~(g_LargePageSize - 1)), MEM_COMMIT | MEM_LARGE_PAGES, PAGE_READWRITE); if (res != 0) return res; } #endif return VirtualAlloc(0, size, MEM_COMMIT, PAGE_READWRITE); } void BigFree(void *address) { #ifdef _SZ_ALLOC_DEBUG if (address != 0) fprintf(stderr, "\nFree_Big; count = %10d", --g_allocCountBig); #endif if (address == 0) return; VirtualFree(address, 0, MEM_RELEASE); } #endif gaviotatb-0.4.orig/compression/lzma/LzFindMt.h0000755000175000017500000000464111536321052020516 0ustar varunvarun/* LzFindMt.h -- multithreaded Match finder for LZ algorithms 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZFINDMT_H #define __LZFINDMT_H #include "Threads.h" #include "LzFind.h" #define kMtHashBlockSize (1 << 13) #define kMtHashNumBlocks (1 << 3) #define kMtHashNumBlocksMask (kMtHashNumBlocks - 1) #define kMtBtBlockSize (1 << 14) #define kMtBtNumBlocks (1 << 6) #define kMtBtNumBlocksMask (kMtBtNumBlocks - 1) typedef struct _CMtSync { Bool wasCreated; Bool needStart; Bool exit; Bool stopWriting; CThread thread; CAutoResetEvent canStart; CAutoResetEvent wasStarted; CAutoResetEvent wasStopped; CSemaphore freeSemaphore; CSemaphore filledSemaphore; Bool csWasInitialized; Bool csWasEntered; CCriticalSection cs; UInt32 numProcessedBlocks; } CMtSync; typedef UInt32 * (*Mf_Mix_Matches)(void *p, UInt32 matchMinPos, UInt32 *distances); /* kMtCacheLineDummy must be >= size_of_CPU_cache_line */ #define kMtCacheLineDummy 128 typedef void (*Mf_GetHeads)(const Byte *buffer, UInt32 pos, UInt32 *hash, UInt32 hashMask, UInt32 *heads, UInt32 numHeads, const UInt32 *crc); typedef struct _CMatchFinderMt { /* LZ */ const Byte *pointerToCurPos; UInt32 *btBuf; UInt32 btBufPos; UInt32 btBufPosLimit; UInt32 lzPos; UInt32 btNumAvailBytes; UInt32 *hash; UInt32 fixedHashSize; UInt32 historySize; const UInt32 *crc; Mf_Mix_Matches MixMatchesFunc; /* LZ + BT */ CMtSync btSync; Byte btDummy[kMtCacheLineDummy]; /* BT */ UInt32 *hashBuf; UInt32 hashBufPos; UInt32 hashBufPosLimit; UInt32 hashNumAvail; CLzRef *son; UInt32 matchMaxLen; UInt32 numHashBytes; UInt32 pos; Byte *buffer; UInt32 cyclicBufferPos; UInt32 cyclicBufferSize; /* it must be historySize + 1 */ UInt32 cutValue; /* BT + Hash */ CMtSync hashSync; /* Byte hashDummy[kMtCacheLineDummy]; */ /* Hash */ Mf_GetHeads GetHeadsFunc; CMatchFinder *MatchFinder; } CMatchFinderMt; void MatchFinderMt_Construct(CMatchFinderMt *p); void MatchFinderMt_Destruct(CMatchFinderMt *p, ISzAlloc *alloc); SRes MatchFinderMt_Create(CMatchFinderMt *p, UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAlloc *alloc); void MatchFinderMt_CreateVTable(CMatchFinderMt *p, IMatchFinder *vTable); void MatchFinderMt_ReleaseStream(CMatchFinderMt *p); #endif gaviotatb-0.4.orig/compression/lzma/Lzma86Dec.c0000755000175000017500000000305411536321052020514 0ustar varunvarun/* Lzma86Dec.c -- LZMA + x86 (BCJ) Filter Decoder 2008-04-07 Igor Pavlov Public domain */ #include "Lzma86Dec.h" #include "Alloc.h" #include "Bra.h" #include "LzmaDec.h" #define LZMA86_SIZE_OFFSET (1 + LZMA_PROPS_SIZE) #define LZMA86_HEADER_SIZE (LZMA86_SIZE_OFFSET + 8) static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } static void SzFree(void *p, void *address) { p = p; MyFree(address); } static ISzAlloc g_Alloc = { SzAlloc, SzFree }; SRes Lzma86_GetUnpackSize(const Byte *src, SizeT srcLen, UInt64 *unpackSize) { unsigned i; if (srcLen < LZMA86_HEADER_SIZE) return SZ_ERROR_INPUT_EOF; *unpackSize = 0; for (i = 0; i < sizeof(UInt64); i++) *unpackSize += ((UInt64)src[LZMA86_SIZE_OFFSET + i]) << (8 * i); return SZ_OK; } SRes Lzma86_Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen) { SRes res; int useFilter; SizeT inSizePure; ELzmaStatus status; if (*srcLen < LZMA86_HEADER_SIZE) return SZ_ERROR_INPUT_EOF; useFilter = src[0]; if (useFilter > 1) { *destLen = 0; return SZ_ERROR_UNSUPPORTED; } inSizePure = *srcLen - LZMA86_HEADER_SIZE; res = LzmaDecode(dest, destLen, src + LZMA86_HEADER_SIZE, &inSizePure, src + 1, LZMA_PROPS_SIZE, LZMA_FINISH_ANY, &status, &g_Alloc); *srcLen = inSizePure + LZMA86_HEADER_SIZE; if (res != SZ_OK) return res; if (useFilter == 1) { UInt32 x86State; x86_Convert_Init(x86State); x86_Convert(dest, *destLen, 0, &x86State, 0); } return SZ_OK; } gaviotatb-0.4.orig/compression/lzma/Bra86.c0000755000175000017500000000435511536321052017706 0ustar varunvarun/* Bra86.c -- Converter for x86 code (BCJ) 2008-10-04 : Igor Pavlov : Public domain */ #include "Bra.h" #define Test86MSByte(b) ((b) == 0 || (b) == 0xFF) const Byte kMaskToAllowedStatus[8] = {1, 1, 1, 0, 1, 0, 0, 0}; const Byte kMaskToBitNumber[8] = {0, 1, 2, 2, 3, 3, 3, 3}; SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int encoding) { SizeT bufferPos = 0, prevPosT; UInt32 prevMask = *state & 0x7; if (size < 5) return 0; ip += 5; prevPosT = (SizeT)0 - 1; for (;;) { Byte *p = data + bufferPos; Byte *limit = data + size - 4; for (; p < limit; p++) if ((*p & 0xFE) == 0xE8) break; bufferPos = (SizeT)(p - data); if (p >= limit) break; prevPosT = bufferPos - prevPosT; if (prevPosT > 3) prevMask = 0; else { prevMask = (prevMask << ((int)prevPosT - 1)) & 0x7; if (prevMask != 0) { Byte b = p[4 - kMaskToBitNumber[prevMask]]; if (!kMaskToAllowedStatus[prevMask] || Test86MSByte(b)) { prevPosT = bufferPos; prevMask = ((prevMask << 1) & 0x7) | 1; bufferPos++; continue; } } } prevPosT = bufferPos; if (Test86MSByte(p[4])) { UInt32 src = ((UInt32)p[4] << 24) | ((UInt32)p[3] << 16) | ((UInt32)p[2] << 8) | ((UInt32)p[1]); UInt32 dest; for (;;) { Byte b; int index; if (encoding) dest = (ip + (UInt32)bufferPos) + src; else dest = src - (ip + (UInt32)bufferPos); if (prevMask == 0) break; index = kMaskToBitNumber[prevMask] * 8; b = (Byte)(dest >> (24 - index)); if (!Test86MSByte(b)) break; src = dest ^ (((UInt32)1 << (32 - index)) - (UInt32)1); } p[4] = (Byte)(~(((dest >> 24) & 1) - 1)); p[3] = (Byte)(dest >> 16); p[2] = (Byte)(dest >> 8); p[1] = (Byte)dest; bufferPos += 5; } else { prevMask = ((prevMask << 1) & 0x7) | 1; bufferPos++; } } prevPosT = bufferPos - prevPosT; *state = ((prevPosT > 3) ? 0 : ((prevMask << ((int)prevPosT - 1)) & 0x7)); return bufferPos; } gaviotatb-0.4.orig/compression/lzma/Lzma86Enc.c0000755000175000017500000000573611536321052020537 0ustar varunvarun/* Lzma86Enc.c -- LZMA + x86 (BCJ) Filter Encoder 2008-08-05 Igor Pavlov Public domain */ #include #include "Lzma86Enc.h" #include "Alloc.h" #include "Bra.h" #include "LzmaEnc.h" #define SZE_OUT_OVERFLOW SZE_DATA_ERROR static void *SzAlloc(void *p, size_t size) { p = p; return MyAlloc(size); } static void SzFree(void *p, void *address) { p = p; MyFree(address); } static ISzAlloc g_Alloc = { SzAlloc, SzFree }; #define LZMA86_SIZE_OFFSET (1 + LZMA_PROPS_SIZE) #define LZMA86_HEADER_SIZE (LZMA86_SIZE_OFFSET + 8) int Lzma86_Encode(Byte *dest, size_t *destLen, const Byte *src, size_t srcLen, int level, UInt32 dictSize, int filterMode) { size_t outSize2 = *destLen; Byte *filteredStream; Bool useFilter; int mainResult = SZ_ERROR_OUTPUT_EOF; CLzmaEncProps props; LzmaEncProps_Init(&props); props.level = level; props.dictSize = dictSize; *destLen = 0; if (outSize2 < LZMA86_HEADER_SIZE) return SZ_ERROR_OUTPUT_EOF; { int i; UInt64 t = srcLen; for (i = 0; i < 8; i++, t >>= 8) dest[LZMA86_SIZE_OFFSET + i] = (Byte)t; } filteredStream = 0; useFilter = (filterMode != SZ_FILTER_NO); if (useFilter) { if (srcLen != 0) { filteredStream = (Byte *)MyAlloc(srcLen); if (filteredStream == 0) return SZ_ERROR_MEM; memcpy(filteredStream, src, srcLen); } { UInt32 x86State; x86_Convert_Init(x86State); x86_Convert(filteredStream, srcLen, 0, &x86State, 1); } } { size_t minSize = 0; Bool bestIsFiltered = False; /* passes for SZ_FILTER_AUTO: 0 - BCJ + LZMA 1 - LZMA 2 - BCJ + LZMA agaian, if pass 0 (BCJ + LZMA) is better. */ int numPasses = (filterMode == SZ_FILTER_AUTO) ? 3 : 1; int i; for (i = 0; i < numPasses; i++) { size_t outSizeProcessed = outSize2 - LZMA86_HEADER_SIZE; size_t outPropsSize = 5; SRes curRes; Bool curModeIsFiltered = (numPasses > 1 && i == numPasses - 1); if (curModeIsFiltered && !bestIsFiltered) break; if (useFilter && i == 0) curModeIsFiltered = True; curRes = LzmaEncode(dest + LZMA86_HEADER_SIZE, &outSizeProcessed, curModeIsFiltered ? filteredStream : src, srcLen, &props, dest + 1, &outPropsSize, 0, NULL, &g_Alloc, &g_Alloc); if (curRes != SZ_ERROR_OUTPUT_EOF) { if (curRes != SZ_OK) { mainResult = curRes; break; } if (outSizeProcessed <= minSize || mainResult != SZ_OK) { minSize = outSizeProcessed; bestIsFiltered = curModeIsFiltered; mainResult = SZ_OK; } } } dest[0] = (unsigned char) (bestIsFiltered ? 1 : 0); /*MAB: Cast to silence compiler */ *destLen = LZMA86_HEADER_SIZE + minSize; } if (useFilter) MyFree(filteredStream); return mainResult; } gaviotatb-0.4.orig/compression/lzma/LzFind.h0000755000175000017500000000637711536321052020225 0ustar varunvarun/* LzFind.h -- Match finder for LZ algorithms 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZFIND_H #define __LZFIND_H #include "Types.h" typedef UInt32 CLzRef; typedef struct _CMatchFinder { Byte *buffer; UInt32 pos; UInt32 posLimit; UInt32 streamPos; UInt32 lenLimit; UInt32 cyclicBufferPos; UInt32 cyclicBufferSize; /* it must be = (historySize + 1) */ UInt32 matchMaxLen; CLzRef *hash; CLzRef *son; UInt32 hashMask; UInt32 cutValue; Byte *bufferBase; ISeqInStream *stream; int streamEndWasReached; UInt32 blockSize; UInt32 keepSizeBefore; UInt32 keepSizeAfter; UInt32 numHashBytes; int directInput; int btMode; /* int skipModeBits; */ int bigHash; UInt32 historySize; UInt32 fixedHashSize; UInt32 hashSizeSum; UInt32 numSons; SRes result; UInt32 crc[256]; } CMatchFinder; #define Inline_MatchFinder_GetPointerToCurrentPos(p) ((p)->buffer) #define Inline_MatchFinder_GetIndexByte(p, index) ((p)->buffer[(Int32)(index)]) #define Inline_MatchFinder_GetNumAvailableBytes(p) ((p)->streamPos - (p)->pos) int MatchFinder_NeedMove(CMatchFinder *p); Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p); void MatchFinder_MoveBlock(CMatchFinder *p); void MatchFinder_ReadIfRequired(CMatchFinder *p); void MatchFinder_Construct(CMatchFinder *p); /* Conditions: historySize <= 3 GB keepAddBufferBefore + matchMaxLen + keepAddBufferAfter < 511MB */ int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAlloc *alloc); void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc); void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, UInt32 numItems); void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue); UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *buffer, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 _cutValue, UInt32 *distances, UInt32 maxLen); /* Conditions: Mf_GetNumAvailableBytes_Func must be called before each Mf_GetMatchLen_Func. Mf_GetPointerToCurrentPos_Func's result must be used only before any other function */ typedef void (*Mf_Init_Func)(void *object); typedef Byte (*Mf_GetIndexByte_Func)(void *object, Int32 index); typedef UInt32 (*Mf_GetNumAvailableBytes_Func)(void *object); typedef const Byte * (*Mf_GetPointerToCurrentPos_Func)(void *object); typedef UInt32 (*Mf_GetMatches_Func)(void *object, UInt32 *distances); typedef void (*Mf_Skip_Func)(void *object, UInt32); typedef struct _IMatchFinder { Mf_Init_Func Init; Mf_GetIndexByte_Func GetIndexByte; Mf_GetNumAvailableBytes_Func GetNumAvailableBytes; Mf_GetPointerToCurrentPos_Func GetPointerToCurrentPos; Mf_GetMatches_Func GetMatches; Mf_Skip_Func Skip; } IMatchFinder; void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder *vTable); void MatchFinder_Init(CMatchFinder *p); UInt32 Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); UInt32 Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances); void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num); void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num); #endif gaviotatb-0.4.orig/compression/lzma/Alloc.h0000755000175000017500000000110511536321052020051 0ustar varunvarun/* Alloc.h -- Memory allocation functions 2008-03-13 Igor Pavlov Public domain */ #ifndef __COMMON_ALLOC_H #define __COMMON_ALLOC_H #include void *MyAlloc(size_t size); void MyFree(void *address); #ifdef _WIN32 void SetLargePageSize(); void *MidAlloc(size_t size); void MidFree(void *address); void *BigAlloc(size_t size); void BigFree(void *address); #else #define MidAlloc(size) MyAlloc(size) #define MidFree(address) MyFree(address) #define BigAlloc(size) MyAlloc(size) #define BigFree(address) MyFree(address) #endif #endif gaviotatb-0.4.orig/compression/lzma/Lzma86Enc.h0000755000175000017500000000433211536321052020533 0ustar varunvarun/* Lzma86Enc.h -- LZMA + x86 (BCJ) Filter Encoder 2008-08-05 Igor Pavlov Public domain */ #ifndef __LZMA86ENC_H #define __LZMA86ENC_H #include "Types.h" /* It's an example for LZMA + x86 Filter use. You can use .lzma86 extension, if you write that stream to file. .lzma86 header adds one additional byte to standard .lzma header. .lzma86 header (14 bytes): Offset Size Description 0 1 = 0 - no filter, = 1 - x86 filter 1 1 lc, lp and pb in encoded form 2 4 dictSize (little endian) 6 8 uncompressed size (little endian) Lzma86_Encode ------------- level - compression level: 0 <= level <= 9, the default value for "level" is 5. dictSize - The dictionary size in bytes. The maximum value is 128 MB = (1 << 27) bytes for 32-bit version 1 GB = (1 << 30) bytes for 64-bit version The default value is 16 MB = (1 << 24) bytes, for level = 5. It's recommended to use the dictionary that is larger than 4 KB and that can be calculated as (1 << N) or (3 << N) sizes. For better compression ratio dictSize must be >= inSize. filterMode: SZ_FILTER_NO - no Filter SZ_FILTER_YES - x86 Filter SZ_FILTER_AUTO - it tries both alternatives to select best. Encoder will use 2 or 3 passes: 2 passes when FILTER_NO provides better compression. 3 passes when FILTER_YES provides better compression. Lzma86Encode allocates Data with MyAlloc functions. RAM Requirements for compressing: RamSize = dictionarySize * 11.5 + 6MB + FilterBlockSize filterMode FilterBlockSize SZ_FILTER_NO 0 SZ_FILTER_YES inSize SZ_FILTER_AUTO inSize Return code: SZ_OK - OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_PARAM - Incorrect paramater SZ_ERROR_OUTPUT_EOF - output buffer overflow SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) */ enum ESzFilterMode { SZ_FILTER_NO, SZ_FILTER_YES, SZ_FILTER_AUTO }; SRes Lzma86_Encode(Byte *dest, size_t *destLen, const Byte *src, size_t srcLen, int level, UInt32 dictSize, int filterMode); #endif gaviotatb-0.4.orig/compression/lzma/LzFind.c0000755000175000017500000005005711536321052020212 0ustar varunvarun/* LzFind.c -- Match finder for LZ algorithms 2008-10-04 : Igor Pavlov : Public domain */ #include #include "LzFind.h" #include "LzHash.h" #define kEmptyHashValue 0 #define kMaxValForNormalize ((UInt32)0xFFFFFFFF) #define kNormalizeStepMin (1u << 10) /* it must be power of 2 */ /*MAB 1u */ #define kNormalizeMask (~(kNormalizeStepMin - 1)) #define kMaxHistorySize ((UInt32)3 << 30) #define kStartMaxLen 3 static void LzInWindow_Free(CMatchFinder *p, ISzAlloc *alloc) { if (!p->directInput) { alloc->Free(alloc, p->bufferBase); p->bufferBase = 0; } } /* keepSizeBefore + keepSizeAfter + keepSizeReserv must be < 4G) */ static int LzInWindow_Create(CMatchFinder *p, UInt32 keepSizeReserv, ISzAlloc *alloc) { UInt32 blockSize = p->keepSizeBefore + p->keepSizeAfter + keepSizeReserv; if (p->directInput) { p->blockSize = blockSize; return 1; } if (p->bufferBase == 0 || p->blockSize != blockSize) { LzInWindow_Free(p, alloc); p->blockSize = blockSize; p->bufferBase = (Byte *)alloc->Alloc(alloc, (size_t)blockSize); } return (p->bufferBase != 0); } Byte *MatchFinder_GetPointerToCurrentPos(CMatchFinder *p) { return p->buffer; } /*MAB: static added, index replaced by idx to avoid shadowing a global variable */ static Byte MatchFinder_GetIndexByte(CMatchFinder *p, Int32 idx) { return p->buffer[idx]; } /*MAB: static added */ static UInt32 MatchFinder_GetNumAvailableBytes(CMatchFinder *p) { return p->streamPos - p->pos; } void MatchFinder_ReduceOffsets(CMatchFinder *p, UInt32 subValue) { p->posLimit -= subValue; p->pos -= subValue; p->streamPos -= subValue; } static void MatchFinder_ReadBlock(CMatchFinder *p) { if (p->streamEndWasReached || p->result != SZ_OK) return; for (;;) { Byte *dest = p->buffer + (p->streamPos - p->pos); size_t size = (size_t)(p->bufferBase + p->blockSize - dest); if (size == 0) return; p->result = p->stream->Read(p->stream, dest, &size); if (p->result != SZ_OK) return; if (size == 0) { p->streamEndWasReached = 1; return; } p->streamPos += (UInt32)size; if (p->streamPos - p->pos > p->keepSizeAfter) return; } } void MatchFinder_MoveBlock(CMatchFinder *p) { memmove(p->bufferBase, p->buffer - p->keepSizeBefore, (size_t)(p->streamPos - p->pos + p->keepSizeBefore)); p->buffer = p->bufferBase + p->keepSizeBefore; } int MatchFinder_NeedMove(CMatchFinder *p) { /* if (p->streamEndWasReached) return 0; */ return ((size_t)(p->bufferBase + p->blockSize - p->buffer) <= p->keepSizeAfter); } void MatchFinder_ReadIfRequired(CMatchFinder *p) { if (p->streamEndWasReached) return; if (p->keepSizeAfter >= p->streamPos - p->pos) MatchFinder_ReadBlock(p); } static void MatchFinder_CheckAndMoveAndRead(CMatchFinder *p) { if (MatchFinder_NeedMove(p)) MatchFinder_MoveBlock(p); MatchFinder_ReadBlock(p); } static void MatchFinder_SetDefaultSettings(CMatchFinder *p) { p->cutValue = 32; p->btMode = 1; p->numHashBytes = 4; /* p->skipModeBits = 0; */ p->directInput = 0; p->bigHash = 0; } #define kCrcPoly 0xEDB88320 void MatchFinder_Construct(CMatchFinder *p) { UInt32 i; p->bufferBase = 0; p->directInput = 0; p->hash = 0; MatchFinder_SetDefaultSettings(p); for (i = 0; i < 256; i++) { UInt32 r = i; int j; for (j = 0; j < 8; j++) r = (r >> 1) ^ (kCrcPoly & ~((r & 1) - 1)); p->crc[i] = r; } } static void MatchFinder_FreeThisClassMemory(CMatchFinder *p, ISzAlloc *alloc) { alloc->Free(alloc, p->hash); p->hash = 0; } void MatchFinder_Free(CMatchFinder *p, ISzAlloc *alloc) { MatchFinder_FreeThisClassMemory(p, alloc); LzInWindow_Free(p, alloc); } static CLzRef* AllocRefs(UInt32 num, ISzAlloc *alloc) { size_t sizeInBytes = (size_t)num * sizeof(CLzRef); if (sizeInBytes / sizeof(CLzRef) != num) return 0; return (CLzRef *)alloc->Alloc(alloc, sizeInBytes); } int MatchFinder_Create(CMatchFinder *p, UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter, ISzAlloc *alloc) { UInt32 sizeReserv; if (historySize > kMaxHistorySize) { MatchFinder_Free(p, alloc); return 0; } sizeReserv = historySize >> 1; if (historySize > ((UInt32)2 << 30)) sizeReserv = historySize >> 2; sizeReserv += (keepAddBufferBefore + matchMaxLen + keepAddBufferAfter) / 2 + (1 << 19); p->keepSizeBefore = historySize + keepAddBufferBefore + 1; p->keepSizeAfter = matchMaxLen + keepAddBufferAfter; /* we need one additional byte, since we use MoveBlock after pos++ and before dictionary using */ if (LzInWindow_Create(p, sizeReserv, alloc)) { UInt32 newCyclicBufferSize = (historySize /* >> p->skipModeBits */) + 1; UInt32 hs; p->matchMaxLen = matchMaxLen; { p->fixedHashSize = 0; if (p->numHashBytes == 2) hs = (1 << 16) - 1; else { hs = historySize - 1; hs |= (hs >> 1); hs |= (hs >> 2); hs |= (hs >> 4); hs |= (hs >> 8); hs >>= 1; /* hs >>= p->skipModeBits; */ hs |= 0xFFFF; /* don't change it! It's required for Deflate */ if (hs > (1 << 24)) { if (p->numHashBytes == 3) hs = (1 << 24) - 1; else hs >>= 1; } } p->hashMask = hs; hs++; if (p->numHashBytes > 2) p->fixedHashSize += kHash2Size; if (p->numHashBytes > 3) p->fixedHashSize += kHash3Size; if (p->numHashBytes > 4) p->fixedHashSize += kHash4Size; hs += p->fixedHashSize; } { UInt32 prevSize = p->hashSizeSum + p->numSons; UInt32 newSize; p->historySize = historySize; p->hashSizeSum = hs; p->cyclicBufferSize = newCyclicBufferSize; p->numSons = (p->btMode ? newCyclicBufferSize * 2 : newCyclicBufferSize); newSize = p->hashSizeSum + p->numSons; if (p->hash != 0 && prevSize == newSize) return 1; MatchFinder_FreeThisClassMemory(p, alloc); p->hash = AllocRefs(newSize, alloc); if (p->hash != 0) { p->son = p->hash + p->hashSizeSum; return 1; } } } MatchFinder_Free(p, alloc); return 0; } static void MatchFinder_SetLimits(CMatchFinder *p) { UInt32 limit = kMaxValForNormalize - p->pos; UInt32 limit2 = p->cyclicBufferSize - p->cyclicBufferPos; if (limit2 < limit) limit = limit2; limit2 = p->streamPos - p->pos; if (limit2 <= p->keepSizeAfter) { if (limit2 > 0) limit2 = 1; } else limit2 -= p->keepSizeAfter; if (limit2 < limit) limit = limit2; { UInt32 lenLimit = p->streamPos - p->pos; if (lenLimit > p->matchMaxLen) lenLimit = p->matchMaxLen; p->lenLimit = lenLimit; } p->posLimit = p->pos + limit; } void MatchFinder_Init(CMatchFinder *p) { UInt32 i; for (i = 0; i < p->hashSizeSum; i++) p->hash[i] = kEmptyHashValue; p->cyclicBufferPos = 0; p->buffer = p->bufferBase; p->pos = p->streamPos = p->cyclicBufferSize; p->result = SZ_OK; p->streamEndWasReached = 0; MatchFinder_ReadBlock(p); MatchFinder_SetLimits(p); } static UInt32 MatchFinder_GetSubValue(CMatchFinder *p) { return (p->pos - p->historySize - 1) & kNormalizeMask; } void MatchFinder_Normalize3(UInt32 subValue, CLzRef *items, UInt32 numItems) { UInt32 i; for (i = 0; i < numItems; i++) { UInt32 value = items[i]; if (value <= subValue) value = kEmptyHashValue; else value -= subValue; items[i] = value; } } static void MatchFinder_Normalize(CMatchFinder *p) { UInt32 subValue = MatchFinder_GetSubValue(p); MatchFinder_Normalize3(subValue, p->hash, p->hashSizeSum + p->numSons); MatchFinder_ReduceOffsets(p, subValue); } static void MatchFinder_CheckLimits(CMatchFinder *p) { if (p->pos == kMaxValForNormalize) MatchFinder_Normalize(p); if (!p->streamEndWasReached && p->keepSizeAfter == p->streamPos - p->pos) MatchFinder_CheckAndMoveAndRead(p); if (p->cyclicBufferPos == p->cyclicBufferSize) p->cyclicBufferPos = 0; MatchFinder_SetLimits(p); } static UInt32 * Hc_GetMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, UInt32 *distances, UInt32 maxLen) { son[_cyclicBufferPos] = curMatch; for (;;) { UInt32 delta = pos - curMatch; if (cutValue-- == 0 || delta >= _cyclicBufferSize) return distances; { const Byte *pb = cur - delta; curMatch = son[_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)]; if (pb[maxLen] == cur[maxLen] && *pb == *cur) { UInt32 len = 0; while (++len != lenLimit) if (pb[len] != cur[len]) break; if (maxLen < len) { *distances++ = maxLen = len; *distances++ = delta - 1; if (len == lenLimit) return distances; } } } } } UInt32 * GetMatchesSpec1(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue, UInt32 *distances, UInt32 maxLen) { CLzRef *ptr0 = son + (_cyclicBufferPos << 1) + 1; CLzRef *ptr1 = son + (_cyclicBufferPos << 1); UInt32 len0 = 0, len1 = 0; for (;;) { UInt32 delta = pos - curMatch; if (cutValue-- == 0 || delta >= _cyclicBufferSize) { *ptr0 = *ptr1 = kEmptyHashValue; return distances; } { CLzRef *pair = son + ((_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)) << 1); const Byte *pb = cur - delta; UInt32 len = (len0 < len1 ? len0 : len1); if (pb[len] == cur[len]) { if (++len != lenLimit && pb[len] == cur[len]) while (++len != lenLimit) if (pb[len] != cur[len]) break; if (maxLen < len) { *distances++ = maxLen = len; *distances++ = delta - 1; if (len == lenLimit) { *ptr1 = pair[0]; *ptr0 = pair[1]; return distances; } } } if (pb[len] < cur[len]) { *ptr1 = curMatch; ptr1 = pair + 1; curMatch = *ptr1; len1 = len; } else { *ptr0 = curMatch; ptr0 = pair; curMatch = *ptr0; len0 = len; } } } } static void SkipMatchesSpec(UInt32 lenLimit, UInt32 curMatch, UInt32 pos, const Byte *cur, CLzRef *son, UInt32 _cyclicBufferPos, UInt32 _cyclicBufferSize, UInt32 cutValue) { CLzRef *ptr0 = son + (_cyclicBufferPos << 1) + 1; CLzRef *ptr1 = son + (_cyclicBufferPos << 1); UInt32 len0 = 0, len1 = 0; for (;;) { UInt32 delta = pos - curMatch; if (cutValue-- == 0 || delta >= _cyclicBufferSize) { *ptr0 = *ptr1 = kEmptyHashValue; return; } { CLzRef *pair = son + ((_cyclicBufferPos - delta + ((delta > _cyclicBufferPos) ? _cyclicBufferSize : 0)) << 1); const Byte *pb = cur - delta; UInt32 len = (len0 < len1 ? len0 : len1); if (pb[len] == cur[len]) { while (++len != lenLimit) if (pb[len] != cur[len]) break; { if (len == lenLimit) { *ptr1 = pair[0]; *ptr0 = pair[1]; return; } } } if (pb[len] < cur[len]) { *ptr1 = curMatch; ptr1 = pair + 1; curMatch = *ptr1; len1 = len; } else { *ptr0 = curMatch; ptr0 = pair; curMatch = *ptr0; len0 = len; } } } } #define MOVE_POS \ ++p->cyclicBufferPos; \ p->buffer++; \ if (++p->pos == p->posLimit) MatchFinder_CheckLimits(p); #define MOVE_POS_RET MOVE_POS return offset; static void MatchFinder_MovePos(CMatchFinder *p) { MOVE_POS; } #define GET_MATCHES_HEADER2(minLen, ret_op) \ UInt32 lenLimit; UInt32 hashValue; const Byte *cur; UInt32 curMatch; \ lenLimit = p->lenLimit; { if (lenLimit < minLen) { MatchFinder_MovePos(p); ret_op; }} \ cur = p->buffer; #define GET_MATCHES_HEADER(minLen) GET_MATCHES_HEADER2(minLen, return 0) #define SKIP_HEADER(minLen) GET_MATCHES_HEADER2(minLen, continue) #define MF_PARAMS(p) p->pos, p->buffer, p->son, p->cyclicBufferPos, p->cyclicBufferSize, p->cutValue #define GET_MATCHES_FOOTER(offset, maxLen) \ offset = (UInt32)(GetMatchesSpec1(lenLimit, curMatch, MF_PARAMS(p), \ distances + offset, maxLen) - distances); MOVE_POS_RET; #define SKIP_FOOTER \ SkipMatchesSpec(lenLimit, curMatch, MF_PARAMS(p)); MOVE_POS; static UInt32 Bt2_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 offset; GET_MATCHES_HEADER(2) HASH2_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; offset = 0; GET_MATCHES_FOOTER(offset, 1) } UInt32 Bt3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 offset; GET_MATCHES_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; offset = 0; GET_MATCHES_FOOTER(offset, 2) } static UInt32 Bt3_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 hash2Value, delta2, maxLen, offset; GET_MATCHES_HEADER(3) HASH3_CALC; delta2 = p->pos - p->hash[hash2Value]; curMatch = p->hash[kFix3HashSize + hashValue]; p->hash[hash2Value] = p->hash[kFix3HashSize + hashValue] = p->pos; maxLen = 2; offset = 0; if (delta2 < p->cyclicBufferSize && *(cur - delta2) == *cur) { for (; maxLen != lenLimit; maxLen++) if (cur[(ptrdiff_t)maxLen - (ptrdiff_t)delta2] != cur[maxLen]) /*MAB second casts (ptrdiff_t)*/ break; distances[0] = maxLen; distances[1] = delta2 - 1; offset = 2; if (maxLen == lenLimit) { SkipMatchesSpec(lenLimit, curMatch, MF_PARAMS(p)); MOVE_POS_RET; } } GET_MATCHES_FOOTER(offset, maxLen) } static UInt32 Bt4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 hash2Value, hash3Value, delta2, delta3, maxLen, offset; GET_MATCHES_HEADER(4) HASH4_CALC; delta2 = p->pos - p->hash[ hash2Value]; delta3 = p->pos - p->hash[kFix3HashSize + hash3Value]; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->hash[kFix4HashSize + hashValue] = p->pos; maxLen = 1; offset = 0; if (delta2 < p->cyclicBufferSize && *(cur - delta2) == *cur) { distances[0] = maxLen = 2; distances[1] = delta2 - 1; offset = 2; } if (delta2 != delta3 && delta3 < p->cyclicBufferSize && *(cur - delta3) == *cur) { maxLen = 3; distances[offset + 1] = delta3 - 1; offset += 2; delta2 = delta3; } if (offset != 0) { for (; maxLen != lenLimit; maxLen++) if (cur[(ptrdiff_t)maxLen - (ptrdiff_t)delta2] != cur[maxLen]) /*MAB casts second (ptrdiff_t)*/ break; distances[offset - 2] = maxLen; if (maxLen == lenLimit) { SkipMatchesSpec(lenLimit, curMatch, MF_PARAMS(p)); MOVE_POS_RET; } } if (maxLen < 3) maxLen = 3; GET_MATCHES_FOOTER(offset, maxLen) } static UInt32 Hc4_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 hash2Value, hash3Value, delta2, delta3, maxLen, offset; GET_MATCHES_HEADER(4) HASH4_CALC; delta2 = p->pos - p->hash[ hash2Value]; delta3 = p->pos - p->hash[kFix3HashSize + hash3Value]; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->hash[kFix4HashSize + hashValue] = p->pos; maxLen = 1; offset = 0; if (delta2 < p->cyclicBufferSize && *(cur - delta2) == *cur) { distances[0] = maxLen = 2; distances[1] = delta2 - 1; offset = 2; } if (delta2 != delta3 && delta3 < p->cyclicBufferSize && *(cur - delta3) == *cur) { maxLen = 3; distances[offset + 1] = delta3 - 1; offset += 2; delta2 = delta3; } if (offset != 0) { for (; maxLen != lenLimit; maxLen++) if (cur[(ptrdiff_t)maxLen - (ptrdiff_t)delta2] != cur[maxLen]) /*MAB casts second (ptrdiff_t) */ break; distances[offset - 2] = maxLen; if (maxLen == lenLimit) { p->son[p->cyclicBufferPos] = curMatch; MOVE_POS_RET; } } if (maxLen < 3) maxLen = 3; offset = (UInt32)(Hc_GetMatchesSpec(lenLimit, curMatch, MF_PARAMS(p), distances + offset, maxLen) - (distances)); MOVE_POS_RET } UInt32 Hc3Zip_MatchFinder_GetMatches(CMatchFinder *p, UInt32 *distances) { UInt32 offset; GET_MATCHES_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; offset = (UInt32)(Hc_GetMatchesSpec(lenLimit, curMatch, MF_PARAMS(p), distances, 2) - (distances)); MOVE_POS_RET } static void Bt2_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { SKIP_HEADER(2) HASH2_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } void Bt3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { SKIP_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } static void Bt3_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { UInt32 hash2Value; SKIP_HEADER(3) HASH3_CALC; curMatch = p->hash[kFix3HashSize + hashValue]; p->hash[hash2Value] = p->hash[kFix3HashSize + hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } static void Bt4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { UInt32 hash2Value, hash3Value; SKIP_HEADER(4) HASH4_CALC; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->pos; p->hash[kFix4HashSize + hashValue] = p->pos; SKIP_FOOTER } while (--num != 0); } static void Hc4_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { UInt32 hash2Value, hash3Value; SKIP_HEADER(4) HASH4_CALC; curMatch = p->hash[kFix4HashSize + hashValue]; p->hash[ hash2Value] = p->hash[kFix3HashSize + hash3Value] = p->hash[kFix4HashSize + hashValue] = p->pos; p->son[p->cyclicBufferPos] = curMatch; MOVE_POS } while (--num != 0); } void Hc3Zip_MatchFinder_Skip(CMatchFinder *p, UInt32 num) { do { SKIP_HEADER(3) HASH_ZIP_CALC; curMatch = p->hash[hashValue]; p->hash[hashValue] = p->pos; p->son[p->cyclicBufferPos] = curMatch; MOVE_POS } while (--num != 0); } void MatchFinder_CreateVTable(CMatchFinder *p, IMatchFinder *vTable) { vTable->Init = (Mf_Init_Func)MatchFinder_Init; vTable->GetIndexByte = (Mf_GetIndexByte_Func)MatchFinder_GetIndexByte; vTable->GetNumAvailableBytes = (Mf_GetNumAvailableBytes_Func)MatchFinder_GetNumAvailableBytes; vTable->GetPointerToCurrentPos = (Mf_GetPointerToCurrentPos_Func)MatchFinder_GetPointerToCurrentPos; if (!p->btMode) { vTable->GetMatches = (Mf_GetMatches_Func)Hc4_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Hc4_MatchFinder_Skip; } else if (p->numHashBytes == 2) { vTable->GetMatches = (Mf_GetMatches_Func)Bt2_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Bt2_MatchFinder_Skip; } else if (p->numHashBytes == 3) { vTable->GetMatches = (Mf_GetMatches_Func)Bt3_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Bt3_MatchFinder_Skip; } else { vTable->GetMatches = (Mf_GetMatches_Func)Bt4_MatchFinder_GetMatches; vTable->Skip = (Mf_Skip_Func)Bt4_MatchFinder_Skip; } } gaviotatb-0.4.orig/compression/lzma/LzmaEnc.c0000755000175000017500000020515711536321052020360 0ustar varunvarun/* LzmaEnc.c -- LZMA Encoder 2009-02-02 : Igor Pavlov : Public domain */ #include /* #define SHOW_STAT */ /* #define SHOW_STAT2 */ #if defined(SHOW_STAT) || defined(SHOW_STAT2) #include #endif #include "LzmaEnc.h" #include "LzFind.h" #ifdef COMPRESS_MF_MT #include "LzFindMt.h" #endif #ifdef SHOW_STAT static int ttt = 0; #endif #define kBlockSizeMax ((1 << LZMA_NUM_BLOCK_SIZE_BITS) - 1) #define kBlockSize (9 << 10) #define kUnpackBlockSize (1 << 18) #define kMatchArraySize (1 << 21) #define kMatchRecordMaxSize ((LZMA_MATCH_LEN_MAX * 2 + 3) * LZMA_MATCH_LEN_MAX) #define kNumMaxDirectBits (31) #define kNumTopBits 24 #define kTopValue ((UInt32)1 << kNumTopBits) #define kNumBitModelTotalBits 11 #define kBitModelTotal (1 << kNumBitModelTotalBits) #define kNumMoveBits 5 #define kProbInitValue (kBitModelTotal >> 1) #define kNumMoveReducingBits 4 #define kNumBitPriceShiftBits 4 #define kBitPrice (1 << kNumBitPriceShiftBits) void LzmaEncProps_Init(CLzmaEncProps *p) { p->level = 5; p->dictSize = p->mc = 0; p->lc = p->lp = p->pb = p->algo = p->fb = p->btMode = p->numHashBytes = p->numThreads = -1; p->writeEndMark = 0; } void LzmaEncProps_Normalize(CLzmaEncProps *p) { int level = p->level; if (level < 0) level = 5; p->level = level; if (p->dictSize == 0) p->dictSize = (UInt32) ((level <= 5 ? (1 << (level * 2 + 14)) : (level == 6 ? (1 << 25) : (1 << 26)))); /*MAB casts UInt32 */ if (p->lc < 0) p->lc = 3; if (p->lp < 0) p->lp = 0; if (p->pb < 0) p->pb = 2; if (p->algo < 0) p->algo = (level < 5 ? 0 : 1); if (p->fb < 0) p->fb = (level < 7 ? 32 : 64); if (p->btMode < 0) p->btMode = (p->algo == 0 ? 0 : 1); if (p->numHashBytes < 0) p->numHashBytes = 4; if (p->mc == 0) p->mc = (UInt32) ((16 + (p->fb >> 1)) >> (p->btMode ? 0 : 1)); /*MAB casts UInt32 */ if (p->numThreads < 0) p->numThreads = #ifdef COMPRESS_MF_MT ((p->btMode && p->algo) ? 2 : 1); #else 1; #endif } UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2) { CLzmaEncProps props = *props2; LzmaEncProps_Normalize(&props); return props.dictSize; } /* #define LZMA_LOG_BSR */ /* Define it for Intel's CPU */ #ifdef LZMA_LOG_BSR #define kDicLogSizeMaxCompress 30 /*MAB: i changed to i__ to avoid possible hiding of a variable */ #define BSR2_RET(pos, res) { unsigned long i__; _BitScanReverse(&i__, (pos)); res = (i__ + i__) + ((pos >> (i__ - 1)) & 1); } UInt32 GetPosSlot1(UInt32 pos) { UInt32 res; BSR2_RET(pos, res); return res; } #define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } #define GetPosSlot(pos, res) { if (pos < 2) res = pos; else BSR2_RET(pos, res); } #else #define kNumLogBits (9 + (int)sizeof(size_t) / 2) #define kDicLogSizeMaxCompress ((kNumLogBits - 1) * 2 + 7) /*MAB: static added */ static void LzmaEnc_FastPosInit(Byte *g_FastPos) { int c = 2, slotFast; g_FastPos[0] = 0; g_FastPos[1] = 1; for (slotFast = 2; slotFast < kNumLogBits * 2; slotFast++) { UInt32 k = (UInt32) ((1 << ((slotFast >> 1) - 1))); /*MAB casts */ UInt32 j; for (j = 0; j < k; j++, c++) g_FastPos[c] = (Byte)slotFast; } } /*MAB: i changed to i__ to avoid hiding a variable */ #define BSR2_RET(pos, res) { UInt32 i__ = 6 + ((kNumLogBits - 1) & \ (0 - (((((UInt32)1 << (kNumLogBits + 6)) - 1) - pos) >> 31))); \ res = p->g_FastPos[pos >> i__] + (i__ * 2); } /* #define BSR2_RET(pos, res) { res = (pos < (1 << (kNumLogBits + 6))) ? \ p->g_FastPos[pos >> 6] + 12 : \ p->g_FastPos[pos >> (6 + kNumLogBits - 1)] + (6 + (kNumLogBits - 1)) * 2; } */ #define GetPosSlot1(pos) p->g_FastPos[pos] #define GetPosSlot2(pos, res) { BSR2_RET(pos, res); } #define GetPosSlot(pos, res) { if (pos < kNumFullDistances) res = p->g_FastPos[pos]; else BSR2_RET(pos, res); } #endif #define LZMA_NUM_REPS 4 typedef unsigned CState; typedef struct _COptimal { UInt32 price; CState state; int prev1IsChar; int prev2; UInt32 posPrev2; UInt32 backPrev2; UInt32 posPrev; UInt32 backPrev; UInt32 backs[LZMA_NUM_REPS]; } COptimal; #define kNumOpts (1 << 12) #define kNumLenToPosStates 4 #define kNumPosSlotBits 6 #define kDicLogSizeMin 0 #define kDicLogSizeMax 32 #define kDistTableSizeMax (kDicLogSizeMax * 2) #define kNumAlignBits 4 #define kAlignTableSize (1 << kNumAlignBits) #define kAlignMask (kAlignTableSize - 1) #define kStartPosModelIndex 4 #define kEndPosModelIndex 14 #define kNumPosModels (kEndPosModelIndex - kStartPosModelIndex) #define kNumFullDistances (1 << (kEndPosModelIndex / 2)) #ifdef _LZMA_PROB32 #define CLzmaProb UInt32 #else #define CLzmaProb UInt16 #endif #define LZMA_PB_MAX 4 #define LZMA_LC_MAX 8 #define LZMA_LP_MAX 4 #define LZMA_NUM_PB_STATES_MAX (1 << LZMA_PB_MAX) #define kLenNumLowBits 3 #define kLenNumLowSymbols (1 << kLenNumLowBits) #define kLenNumMidBits 3 #define kLenNumMidSymbols (1 << kLenNumMidBits) #define kLenNumHighBits 8 #define kLenNumHighSymbols (1 << kLenNumHighBits) #define kLenNumSymbolsTotal (kLenNumLowSymbols + kLenNumMidSymbols + kLenNumHighSymbols) #define LZMA_MATCH_LEN_MIN 2 #define LZMA_MATCH_LEN_MAX (LZMA_MATCH_LEN_MIN + kLenNumSymbolsTotal - 1) #define kNumStates 12 typedef struct CLenEnc { CLzmaProb choice; CLzmaProb choice2; CLzmaProb low[LZMA_NUM_PB_STATES_MAX << kLenNumLowBits]; CLzmaProb mid[LZMA_NUM_PB_STATES_MAX << kLenNumMidBits]; CLzmaProb high[kLenNumHighSymbols]; } CLenEnc; typedef struct CLenPriceEnc { CLenEnc p; UInt32 prices[LZMA_NUM_PB_STATES_MAX][kLenNumSymbolsTotal]; UInt32 tableSize; UInt32 counters[LZMA_NUM_PB_STATES_MAX]; } CLenPriceEnc; typedef struct _CRangeEnc { UInt32 range; Byte cache; UInt64 low; UInt64 cacheSize; Byte *buf; Byte *bufLim; Byte *bufBase; ISeqOutStream *outStream; UInt64 processed; SRes res; } CRangeEnc; typedef struct _CSeqInStreamBuf { ISeqInStream funcTable; const Byte *data; SizeT rem; } CSeqInStreamBuf; static SRes MyRead(void *pp, void *data, size_t *size) { size_t curSize = *size; CSeqInStreamBuf *p = (CSeqInStreamBuf *)pp; if (p->rem < curSize) curSize = p->rem; memcpy(data, p->data, curSize); p->rem -= curSize; p->data += curSize; *size = curSize; return SZ_OK; } typedef struct CSaveState { CLzmaProb *litProbs; CLzmaProb isMatch[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb isRep[kNumStates]; CLzmaProb isRepG0[kNumStates]; CLzmaProb isRepG1[kNumStates]; CLzmaProb isRepG2[kNumStates]; CLzmaProb isRep0Long[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb posSlotEncoder[kNumLenToPosStates][1 << kNumPosSlotBits]; CLzmaProb posEncoders[kNumFullDistances - kEndPosModelIndex]; CLzmaProb posAlignEncoder[1 << kNumAlignBits]; CLenPriceEnc lenEnc; CLenPriceEnc repLenEnc; UInt32 reps[LZMA_NUM_REPS]; UInt32 state; } CSaveState; typedef struct _CLzmaEnc { IMatchFinder matchFinder; void *matchFinderObj; #ifdef COMPRESS_MF_MT Bool mtMode; CMatchFinderMt matchFinderMt; #endif CMatchFinder matchFinderBase; #ifdef COMPRESS_MF_MT Byte pad[128]; #endif UInt32 optimumEndIndex; UInt32 optimumCurrentIndex; UInt32 longestMatchLength; UInt32 numPairs; UInt32 numAvail; COptimal opt[kNumOpts]; #ifndef LZMA_LOG_BSR Byte g_FastPos[1 << kNumLogBits]; #endif UInt32 ProbPrices[kBitModelTotal >> kNumMoveReducingBits]; UInt32 matches[LZMA_MATCH_LEN_MAX * 2 + 2 + 1]; UInt32 numFastBytes; UInt32 additionalOffset; UInt32 reps[LZMA_NUM_REPS]; UInt32 state; UInt32 posSlotPrices[kNumLenToPosStates][kDistTableSizeMax]; UInt32 distancesPrices[kNumLenToPosStates][kNumFullDistances]; UInt32 alignPrices[kAlignTableSize]; UInt32 alignPriceCount; UInt32 distTableSize; unsigned lc, lp, pb; unsigned lpMask, pbMask; CLzmaProb *litProbs; CLzmaProb isMatch[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb isRep[kNumStates]; CLzmaProb isRepG0[kNumStates]; CLzmaProb isRepG1[kNumStates]; CLzmaProb isRepG2[kNumStates]; CLzmaProb isRep0Long[kNumStates][LZMA_NUM_PB_STATES_MAX]; CLzmaProb posSlotEncoder[kNumLenToPosStates][1 << kNumPosSlotBits]; CLzmaProb posEncoders[kNumFullDistances - kEndPosModelIndex]; CLzmaProb posAlignEncoder[1 << kNumAlignBits]; CLenPriceEnc lenEnc; CLenPriceEnc repLenEnc; unsigned lclp; Bool fastMode; CRangeEnc rc; Bool writeEndMark; UInt64 nowPos64; UInt32 matchPriceCount; Bool finished; Bool multiThread; SRes result; UInt32 dictSize; UInt32 matchFinderCycles; ISeqInStream *inStream; CSeqInStreamBuf seqBufInStream; CSaveState saveState; } CLzmaEnc; #if defined(USE_UNUSED_CODE) /*MAB: static added */ static void LzmaEnc_SaveState(CLzmaEncHandle pp) { CLzmaEnc *p = (CLzmaEnc *)pp; CSaveState *dest = &p->saveState; int i; dest->lenEnc = p->lenEnc; dest->repLenEnc = p->repLenEnc; dest->state = p->state; for (i = 0; i < kNumStates; i++) { memcpy(dest->isMatch[i], p->isMatch[i], sizeof(p->isMatch[i])); memcpy(dest->isRep0Long[i], p->isRep0Long[i], sizeof(p->isRep0Long[i])); } for (i = 0; i < kNumLenToPosStates; i++) memcpy(dest->posSlotEncoder[i], p->posSlotEncoder[i], sizeof(p->posSlotEncoder[i])); memcpy(dest->isRep, p->isRep, sizeof(p->isRep)); memcpy(dest->isRepG0, p->isRepG0, sizeof(p->isRepG0)); memcpy(dest->isRepG1, p->isRepG1, sizeof(p->isRepG1)); memcpy(dest->isRepG2, p->isRepG2, sizeof(p->isRepG2)); memcpy(dest->posEncoders, p->posEncoders, sizeof(p->posEncoders)); memcpy(dest->posAlignEncoder, p->posAlignEncoder, sizeof(p->posAlignEncoder)); memcpy(dest->reps, p->reps, sizeof(p->reps)); memcpy(dest->litProbs, p->litProbs, (0x300 << p->lclp) * sizeof(CLzmaProb)); } /*MAB: static added */ static void LzmaEnc_RestoreState(CLzmaEncHandle pp) { CLzmaEnc *dest = (CLzmaEnc *)pp; const CSaveState *p = &dest->saveState; int i; dest->lenEnc = p->lenEnc; dest->repLenEnc = p->repLenEnc; dest->state = p->state; for (i = 0; i < kNumStates; i++) { memcpy(dest->isMatch[i], p->isMatch[i], sizeof(p->isMatch[i])); memcpy(dest->isRep0Long[i], p->isRep0Long[i], sizeof(p->isRep0Long[i])); } for (i = 0; i < kNumLenToPosStates; i++) memcpy(dest->posSlotEncoder[i], p->posSlotEncoder[i], sizeof(p->posSlotEncoder[i])); memcpy(dest->isRep, p->isRep, sizeof(p->isRep)); memcpy(dest->isRepG0, p->isRepG0, sizeof(p->isRepG0)); memcpy(dest->isRepG1, p->isRepG1, sizeof(p->isRepG1)); memcpy(dest->isRepG2, p->isRepG2, sizeof(p->isRepG2)); memcpy(dest->posEncoders, p->posEncoders, sizeof(p->posEncoders)); memcpy(dest->posAlignEncoder, p->posAlignEncoder, sizeof(p->posAlignEncoder)); memcpy(dest->reps, p->reps, sizeof(p->reps)); memcpy(dest->litProbs, p->litProbs, (0x300 << dest->lclp) * sizeof(CLzmaProb)); } #endif SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) { CLzmaEnc *p = (CLzmaEnc *)pp; CLzmaEncProps props = *props2; LzmaEncProps_Normalize(&props); if (props.lc > LZMA_LC_MAX || props.lp > LZMA_LP_MAX || props.pb > LZMA_PB_MAX || props.dictSize > (1u << kDicLogSizeMaxCompress) || props.dictSize > (1u << 30)) /*MAB: 1u to silence warnings */ return SZ_ERROR_PARAM; p->dictSize = props.dictSize; p->matchFinderCycles = props.mc; { unsigned fb = (unsigned) props.fb; /*MAB casts */ if (fb < 5) fb = 5; if (fb > LZMA_MATCH_LEN_MAX) fb = LZMA_MATCH_LEN_MAX; p->numFastBytes = fb; } p->lc = (unsigned) props.lc; p->lp = (unsigned) props.lp; p->pb = (unsigned) props.pb; p->fastMode = (props.algo == 0); p->matchFinderBase.btMode = props.btMode; { UInt32 numHashBytes = 4; if (props.btMode) { if (props.numHashBytes < 2) numHashBytes = 2; else if (props.numHashBytes < 4) numHashBytes = (UInt32) props.numHashBytes; /*MAB casts */ } p->matchFinderBase.numHashBytes = numHashBytes; } p->matchFinderBase.cutValue = props.mc; p->writeEndMark = (Bool) props.writeEndMark; /*MAB casts */ #ifdef COMPRESS_MF_MT /* if (newMultiThread != _multiThread) { ReleaseMatchFinder(); _multiThread = newMultiThread; } */ p->multiThread = (props.numThreads > 1); #endif return SZ_OK; } static const int kLiteralNextStates[kNumStates] = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5}; static const int kMatchNextStates[kNumStates] = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10}; static const int kRepNextStates[kNumStates] = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11}; static const int kShortRepNextStates[kNumStates]= {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11}; #define IsCharState(s) ((s) < 7) #define GetLenToPosState(len) (((len) < kNumLenToPosStates + 1) ? (len) - 2 : kNumLenToPosStates - 1) #define kInfinityPrice (1 << 30) static void RangeEnc_Construct(CRangeEnc *p) { p->outStream = 0; p->bufBase = 0; } #define RangeEnc_GetProcessed(p) ((p)->processed + (UInt64) ((p)->buf - (p)->bufBase) + (p)->cacheSize) /*MAB casts */ #define RC_BUF_SIZE (1 << 16) static int RangeEnc_Alloc(CRangeEnc *p, ISzAlloc *alloc) { if (p->bufBase == 0) { p->bufBase = (Byte *)alloc->Alloc(alloc, RC_BUF_SIZE); if (p->bufBase == 0) return 0; p->bufLim = p->bufBase + RC_BUF_SIZE; } return 1; } static void RangeEnc_Free(CRangeEnc *p, ISzAlloc *alloc) { alloc->Free(alloc, p->bufBase); p->bufBase = 0; } static void RangeEnc_Init(CRangeEnc *p) { /* Stream.Init(); */ p->low = 0; p->range = 0xFFFFFFFF; p->cacheSize = 1; p->cache = 0; p->buf = p->bufBase; p->processed = 0; p->res = SZ_OK; } static void RangeEnc_FlushStream(CRangeEnc *p) { size_t num; if (p->res != SZ_OK) return; num = (size_t)(p->buf - p->bufBase); /*MAB casts */ if (num != p->outStream->Write(p->outStream, p->bufBase, num)) p->res = SZ_ERROR_WRITE; p->processed += num; p->buf = p->bufBase; } static void MY_FAST_CALL RangeEnc_ShiftLow(CRangeEnc *p) { if ((UInt32)p->low < (UInt32)0xFF000000 || (int)(p->low >> 32) != 0) { Byte temp = p->cache; do { Byte *buf = p->buf; *buf++ = (Byte)(temp + (Byte)(p->low >> 32)); p->buf = buf; if (buf == p->bufLim) RangeEnc_FlushStream(p); temp = 0xFF; } while (--p->cacheSize != 0); p->cache = (Byte)((UInt32)p->low >> 24); } p->cacheSize++; p->low = (UInt32)p->low << 8; } static void RangeEnc_FlushData(CRangeEnc *p) { int i; for (i = 0; i < 5; i++) RangeEnc_ShiftLow(p); } static void RangeEnc_EncodeDirectBits(CRangeEnc *p, UInt32 value, int numBits) { do { p->range >>= 1; p->low += p->range & (0 - ((value >> --numBits) & 1)); if (p->range < kTopValue) { p->range <<= 8; RangeEnc_ShiftLow(p); } } while (numBits != 0); } static void RangeEnc_EncodeBit(CRangeEnc *p, CLzmaProb *prob, UInt32 symbol) { UInt32 ttt = *prob; UInt32 newBound = (p->range >> kNumBitModelTotalBits) * ttt; if (symbol == 0) { p->range = newBound; ttt += (kBitModelTotal - ttt) >> kNumMoveBits; } else { p->low += newBound; p->range -= newBound; ttt -= ttt >> kNumMoveBits; } *prob = (CLzmaProb)ttt; if (p->range < kTopValue) { p->range <<= 8; RangeEnc_ShiftLow(p); } } static void LitEnc_Encode(CRangeEnc *p, CLzmaProb *probs, UInt32 symbol) { symbol |= 0x100; do { RangeEnc_EncodeBit(p, probs + (symbol >> 8), (symbol >> 7) & 1); symbol <<= 1; } while (symbol < 0x10000); } static void LitEnc_EncodeMatched(CRangeEnc *p, CLzmaProb *probs, UInt32 symbol, UInt32 matchByte) { UInt32 offs = 0x100; symbol |= 0x100; do { matchByte <<= 1; RangeEnc_EncodeBit(p, probs + (offs + (matchByte & offs) + (symbol >> 8)), (symbol >> 7) & 1); symbol <<= 1; offs &= ~(matchByte ^ symbol); } while (symbol < 0x10000); } /*MAB: static added */ static void LzmaEnc_InitPriceTables(UInt32 *ProbPrices) { UInt32 i; for (i = (1 << kNumMoveReducingBits) / 2; i < kBitModelTotal; i += (1 << kNumMoveReducingBits)) { const int kCyclesBits = kNumBitPriceShiftBits; UInt32 w = i; UInt32 bitCount = 0; int j; for (j = 0; j < kCyclesBits; j++) { w = w * w; bitCount <<= 1; while (w >= ((UInt32)1 << 16)) { w >>= 1; bitCount++; } } ProbPrices[i >> kNumMoveReducingBits] = (/*MAB: cast to silence*/(UInt32)(kNumBitModelTotalBits << kCyclesBits) - /*MAB: cast to silence*/(UInt32)15 - bitCount); } } #define GET_PRICE(prob, symbol) \ p->ProbPrices[((prob) ^ (((-(int)(symbol))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; #define GET_PRICEa(prob, symbol) \ ProbPrices[((prob) ^ ((-((int)(symbol))) & (kBitModelTotal - 1))) >> kNumMoveReducingBits]; #define GET_PRICE_0(prob) p->ProbPrices[(prob) >> kNumMoveReducingBits] #define GET_PRICE_1(prob) p->ProbPrices[((prob) ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits] #define GET_PRICE_0a(prob) ProbPrices[(prob) >> kNumMoveReducingBits] #define GET_PRICE_1a(prob) ProbPrices[((prob) ^ (kBitModelTotal - 1)) >> kNumMoveReducingBits] static UInt32 LitEnc_GetPrice(const CLzmaProb *probs, UInt32 symbol, UInt32 *ProbPrices) { UInt32 price = 0; symbol |= 0x100; do { price += GET_PRICEa(probs[symbol >> 8], (symbol >> 7) & 1); symbol <<= 1; } while (symbol < 0x10000); return price; } static UInt32 LitEnc_GetPriceMatched(const CLzmaProb *probs, UInt32 symbol, UInt32 matchByte, UInt32 *ProbPrices) { UInt32 price = 0; UInt32 offs = 0x100; symbol |= 0x100; do { matchByte <<= 1; price += GET_PRICEa(probs[offs + (matchByte & offs) + (symbol >> 8)], (symbol >> 7) & 1); symbol <<= 1; offs &= ~(matchByte ^ symbol); } while (symbol < 0x10000); return price; } static void RcTree_Encode(CRangeEnc *rc, CLzmaProb *probs, int numBitLevels, UInt32 symbol) { UInt32 m = 1; int i; for (i = numBitLevels; i != 0;) { UInt32 bit; i--; bit = (symbol >> i) & 1; RangeEnc_EncodeBit(rc, probs + m, bit); m = (m << 1) | bit; } } static void RcTree_ReverseEncode(CRangeEnc *rc, CLzmaProb *probs, int numBitLevels, UInt32 symbol) { UInt32 m = 1; int i; for (i = 0; i < numBitLevels; i++) { UInt32 bit = symbol & 1; RangeEnc_EncodeBit(rc, probs + m, bit); m = (m << 1) | bit; symbol >>= 1; } } static UInt32 RcTree_GetPrice(const CLzmaProb *probs, int numBitLevels, UInt32 symbol, UInt32 *ProbPrices) { UInt32 price = 0; symbol |= (1u << numBitLevels); /*MAB 1u */ while (symbol != 1) { price += GET_PRICEa(probs[symbol >> 1], symbol & 1); symbol >>= 1; } return price; } static UInt32 RcTree_ReverseGetPrice(const CLzmaProb *probs, int numBitLevels, UInt32 symbol, UInt32 *ProbPrices) { UInt32 price = 0; UInt32 m = 1; int i; for (i = numBitLevels; i != 0; i--) { UInt32 bit = symbol & 1; symbol >>= 1; price += GET_PRICEa(probs[m], bit); m = (m << 1) | bit; } return price; } static void LenEnc_Init(CLenEnc *p) { unsigned i; p->choice = p->choice2 = kProbInitValue; for (i = 0; i < (LZMA_NUM_PB_STATES_MAX << kLenNumLowBits); i++) p->low[i] = kProbInitValue; for (i = 0; i < (LZMA_NUM_PB_STATES_MAX << kLenNumMidBits); i++) p->mid[i] = kProbInitValue; for (i = 0; i < kLenNumHighSymbols; i++) p->high[i] = kProbInitValue; } static void LenEnc_Encode(CLenEnc *p, CRangeEnc *rc, UInt32 symbol, UInt32 posState) { if (symbol < kLenNumLowSymbols) { RangeEnc_EncodeBit(rc, &p->choice, 0); RcTree_Encode(rc, p->low + (posState << kLenNumLowBits), kLenNumLowBits, symbol); } else { RangeEnc_EncodeBit(rc, &p->choice, 1); if (symbol < kLenNumLowSymbols + kLenNumMidSymbols) { RangeEnc_EncodeBit(rc, &p->choice2, 0); RcTree_Encode(rc, p->mid + (posState << kLenNumMidBits), kLenNumMidBits, symbol - kLenNumLowSymbols); } else { RangeEnc_EncodeBit(rc, &p->choice2, 1); RcTree_Encode(rc, p->high, kLenNumHighBits, symbol - kLenNumLowSymbols - kLenNumMidSymbols); } } } static void LenEnc_SetPrices(CLenEnc *p, UInt32 posState, UInt32 numSymbols, UInt32 *prices, UInt32 *ProbPrices) { UInt32 a0 = GET_PRICE_0a(p->choice); UInt32 a1 = GET_PRICE_1a(p->choice); UInt32 b0 = a1 + GET_PRICE_0a(p->choice2); UInt32 b1 = a1 + GET_PRICE_1a(p->choice2); UInt32 i = 0; for (i = 0; i < kLenNumLowSymbols; i++) { if (i >= numSymbols) return; prices[i] = a0 + RcTree_GetPrice(p->low + (posState << kLenNumLowBits), kLenNumLowBits, i, ProbPrices); } for (; i < kLenNumLowSymbols + kLenNumMidSymbols; i++) { if (i >= numSymbols) return; prices[i] = b0 + RcTree_GetPrice(p->mid + (posState << kLenNumMidBits), kLenNumMidBits, i - kLenNumLowSymbols, ProbPrices); } for (; i < numSymbols; i++) prices[i] = b1 + RcTree_GetPrice(p->high, kLenNumHighBits, i - kLenNumLowSymbols - kLenNumMidSymbols, ProbPrices); } static void MY_FAST_CALL LenPriceEnc_UpdateTable(CLenPriceEnc *p, UInt32 posState, UInt32 *ProbPrices) { LenEnc_SetPrices(&p->p, posState, p->tableSize, p->prices[posState], ProbPrices); p->counters[posState] = p->tableSize; } static void LenPriceEnc_UpdateTables(CLenPriceEnc *p, UInt32 numPosStates, UInt32 *ProbPrices) { UInt32 posState; for (posState = 0; posState < numPosStates; posState++) LenPriceEnc_UpdateTable(p, posState, ProbPrices); } static void LenEnc_Encode2(CLenPriceEnc *p, CRangeEnc *rc, UInt32 symbol, UInt32 posState, Bool updatePrice, UInt32 *ProbPrices) { LenEnc_Encode(&p->p, rc, symbol, posState); if (updatePrice) if (--p->counters[posState] == 0) LenPriceEnc_UpdateTable(p, posState, ProbPrices); } static void MovePos(CLzmaEnc *p, UInt32 num) { #ifdef SHOW_STAT ttt += num; printf("\n MovePos %d", num); #endif if (num != 0) { p->additionalOffset += num; p->matchFinder.Skip(p->matchFinderObj, num); } } static UInt32 ReadMatchDistances(CLzmaEnc *p, UInt32 *numDistancePairsRes) { UInt32 lenRes = 0, numPairs; p->numAvail = p->matchFinder.GetNumAvailableBytes(p->matchFinderObj); numPairs = p->matchFinder.GetMatches(p->matchFinderObj, p->matches); #ifdef SHOW_STAT printf("\n i = %d numPairs = %d ", ttt, numPairs / 2); ttt++; { UInt32 i; for (i = 0; i < numPairs; i += 2) printf("%2d %6d | ", p->matches[i], p->matches[i + 1]); } #endif if (numPairs > 0) { lenRes = p->matches[numPairs - 2]; if (lenRes == p->numFastBytes) { const Byte *pby = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; UInt32 distance = p->matches[numPairs - 1] + 1; UInt32 numAvail = p->numAvail; if (numAvail > LZMA_MATCH_LEN_MAX) numAvail = LZMA_MATCH_LEN_MAX; { const Byte *pby2 = pby - distance; for (; lenRes < numAvail && pby[lenRes] == pby2[lenRes]; lenRes++); } } } p->additionalOffset++; *numDistancePairsRes = numPairs; return lenRes; } #define MakeAsChar(p) (p)->backPrev = (UInt32)(-1); (p)->prev1IsChar = False; #define MakeAsShortRep(p) (p)->backPrev = 0; (p)->prev1IsChar = False; #define IsShortRep(p) ((p)->backPrev == 0) static UInt32 GetRepLen1Price(CLzmaEnc *p, UInt32 state, UInt32 posState) { return GET_PRICE_0(p->isRepG0[state]) + GET_PRICE_0(p->isRep0Long[state][posState]); } static UInt32 GetPureRepPrice(CLzmaEnc *p, UInt32 repIndex, UInt32 state, UInt32 posState) { UInt32 price; if (repIndex == 0) { price = GET_PRICE_0(p->isRepG0[state]); price += GET_PRICE_1(p->isRep0Long[state][posState]); } else { price = GET_PRICE_1(p->isRepG0[state]); if (repIndex == 1) price += GET_PRICE_0(p->isRepG1[state]); else { price += GET_PRICE_1(p->isRepG1[state]); price += GET_PRICE(p->isRepG2[state], repIndex - 2); } } return price; } static UInt32 GetRepPrice(CLzmaEnc *p, UInt32 repIndex, UInt32 len, UInt32 state, UInt32 posState) { return p->repLenEnc.prices[posState][len - LZMA_MATCH_LEN_MIN] + GetPureRepPrice(p, repIndex, state, posState); } static UInt32 Backward(CLzmaEnc *p, UInt32 *backRes, UInt32 cur) { UInt32 posMem = p->opt[cur].posPrev; UInt32 backMem = p->opt[cur].backPrev; p->optimumEndIndex = cur; do { if (p->opt[cur].prev1IsChar) { MakeAsChar(&p->opt[posMem]) p->opt[posMem].posPrev = posMem - 1; if (p->opt[cur].prev2) { p->opt[posMem - 1].prev1IsChar = False; p->opt[posMem - 1].posPrev = p->opt[cur].posPrev2; p->opt[posMem - 1].backPrev = p->opt[cur].backPrev2; } } { UInt32 posPrev = posMem; UInt32 backCur = backMem; backMem = p->opt[posPrev].backPrev; posMem = p->opt[posPrev].posPrev; p->opt[posPrev].backPrev = backCur; p->opt[posPrev].posPrev = cur; cur = posPrev; } } while (cur != 0); *backRes = p->opt[0].backPrev; p->optimumCurrentIndex = p->opt[0].posPrev; return p->optimumCurrentIndex; } #define LIT_PROBS(pos, prevByte) (p->litProbs + ((((pos) & p->lpMask) << p->lc) + (UInt32) ((prevByte) >> (8 - p->lc))) * 0x300) /*MAB cast UInt32 */ static UInt32 GetOptimum(CLzmaEnc *p, UInt32 position, UInt32 *backRes) { UInt32 numAvail, mainLen, repMaxIndex, i, lenEnd, len, cur; /*MAB: Changed numPairs_, posState_ avoid hiding a variable later */ UInt32 numPairs_, posState_; /*MAB: Changed matchPrice_, repMatchPrice_ avoid hiding a variable later */ UInt32 matchPrice_, repMatchPrice_, normalMatchPrice; UInt32 reps[LZMA_NUM_REPS], repLens[LZMA_NUM_REPS]; UInt32 *matches; /*MAB: Changed from data to avoid hiding a variable later */ const Byte *data_; /*MAB: Changed from matchByte to avoid hiding a variable later */ Byte curByte_, matchByte_; if (p->optimumEndIndex != p->optimumCurrentIndex) { const COptimal *opt = &p->opt[p->optimumCurrentIndex]; UInt32 lenRes = opt->posPrev - p->optimumCurrentIndex; *backRes = opt->backPrev; p->optimumCurrentIndex = opt->posPrev; return lenRes; } p->optimumCurrentIndex = p->optimumEndIndex = 0; if (p->additionalOffset == 0) mainLen = ReadMatchDistances(p, &numPairs_); else { mainLen = p->longestMatchLength; numPairs_ = p->numPairs; } numAvail = p->numAvail; if (numAvail < 2) { *backRes = (UInt32)(-1); return 1; } if (numAvail > LZMA_MATCH_LEN_MAX) numAvail = LZMA_MATCH_LEN_MAX; data_ = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; repMaxIndex = 0; for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 lenTest; const Byte *data2; reps[i] = p->reps[i]; data2 = data_ - (reps[i] + 1); if (data_[0] != data2[0] || data_[1] != data2[1]) { repLens[i] = 0; continue; } for (lenTest = 2; lenTest < numAvail && data_[lenTest] == data2[lenTest]; lenTest++); repLens[i] = lenTest; if (lenTest > repLens[repMaxIndex]) repMaxIndex = i; } if (repLens[repMaxIndex] >= p->numFastBytes) { UInt32 lenRes; *backRes = repMaxIndex; lenRes = repLens[repMaxIndex]; MovePos(p, lenRes - 1); return lenRes; } matches = p->matches; if (mainLen >= p->numFastBytes) { *backRes = matches[numPairs_ - 1] + LZMA_NUM_REPS; MovePos(p, mainLen - 1); return mainLen; } curByte_ = *data_; matchByte_ = *(data_ - (reps[0] + 1)); if (mainLen < 2 && curByte_ != matchByte_ && repLens[repMaxIndex] < 2) { *backRes = (UInt32)-1; return 1; } p->opt[0].state = (CState)p->state; posState_ = (position & p->pbMask); { const CLzmaProb *probs = LIT_PROBS(position, *(data_ - 1)); p->opt[1].price = GET_PRICE_0(p->isMatch[p->state][posState_]) + (!IsCharState(p->state) ? LitEnc_GetPriceMatched(probs, curByte_, matchByte_, p->ProbPrices) : LitEnc_GetPrice(probs, curByte_, p->ProbPrices)); } MakeAsChar(&p->opt[1]); matchPrice_ = GET_PRICE_1(p->isMatch[p->state][posState_]); repMatchPrice_ = matchPrice_ + GET_PRICE_1(p->isRep[p->state]); if (matchByte_ == curByte_) { UInt32 shortRepPrice = repMatchPrice_ + GetRepLen1Price(p, p->state, posState_); if (shortRepPrice < p->opt[1].price) { p->opt[1].price = shortRepPrice; MakeAsShortRep(&p->opt[1]); } } lenEnd = ((mainLen >= repLens[repMaxIndex]) ? mainLen : repLens[repMaxIndex]); if (lenEnd < 2) { *backRes = p->opt[1].backPrev; return 1; } p->opt[1].posPrev = 0; for (i = 0; i < LZMA_NUM_REPS; i++) p->opt[0].backs[i] = reps[i]; len = lenEnd; do p->opt[len--].price = kInfinityPrice; while (len >= 2); for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 repLen = repLens[i]; UInt32 price; if (repLen < 2) continue; price = repMatchPrice_ + GetPureRepPrice(p, i, p->state, posState_); do { UInt32 curAndLenPrice = price + p->repLenEnc.prices[posState_][repLen - 2]; COptimal *opt = &p->opt[repLen]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = 0; opt->backPrev = i; opt->prev1IsChar = False; } } while (--repLen >= 2); } normalMatchPrice = matchPrice_ + GET_PRICE_0(p->isRep[p->state]); len = ((repLens[0] >= 2) ? repLens[0] + 1 : 2); if (len <= mainLen) { UInt32 offs = 0; while (len > matches[offs]) offs += 2; for (; ; len++) { COptimal *opt; UInt32 distance = matches[offs + 1]; UInt32 curAndLenPrice = normalMatchPrice + p->lenEnc.prices[posState_][len - LZMA_MATCH_LEN_MIN]; UInt32 lenToPosState = GetLenToPosState(len); if (distance < kNumFullDistances) curAndLenPrice += p->distancesPrices[lenToPosState][distance]; else { UInt32 slot; GetPosSlot2(distance, slot); curAndLenPrice += p->alignPrices[distance & kAlignMask] + p->posSlotPrices[lenToPosState][slot]; } opt = &p->opt[len]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = 0; opt->backPrev = distance + LZMA_NUM_REPS; opt->prev1IsChar = False; } if (len == matches[offs]) { offs += 2; if (offs == numPairs_) break; } } } cur = 0; #ifdef SHOW_STAT2 if (position >= 0) { unsigned i__; printf("\n pos = %4X", position); for (i__ = cur; i__ <= lenEnd; i__++) printf("\nprice[%4X] = %d", position - cur + i__, p->opt[i__].price); } #endif for (;;) { UInt32 numAvailFull, newLen, numPairs, posPrev, state, posState, startLen; UInt32 curPrice, curAnd1Price, matchPrice, repMatchPrice; Bool nextIsChar; Byte curByte, matchByte; const Byte *data; COptimal *curOpt; COptimal *nextOpt; cur++; if (cur == lenEnd) return Backward(p, backRes, cur); newLen = ReadMatchDistances(p, &numPairs); if (newLen >= p->numFastBytes) { p->numPairs = numPairs; p->longestMatchLength = newLen; return Backward(p, backRes, cur); } position++; curOpt = &p->opt[cur]; posPrev = curOpt->posPrev; if (curOpt->prev1IsChar) { posPrev--; if (curOpt->prev2) { state = p->opt[curOpt->posPrev2].state; if (curOpt->backPrev2 < LZMA_NUM_REPS) state = (UInt32) kRepNextStates[state]; /*MAB casts */ else state = (UInt32) kMatchNextStates[state]; /*MAB casts */ } else state = p->opt[posPrev].state; state = (UInt32) kLiteralNextStates[state]; /*MAB casts */ } else state = p->opt[posPrev].state; if (posPrev == cur - 1) { if (IsShortRep(curOpt)) state = (UInt32) kShortRepNextStates[state]; /*MAB casts */ else state = (UInt32) kLiteralNextStates[state]; /*MAB casts */ } else { UInt32 pos; const COptimal *prevOpt; if (curOpt->prev1IsChar && curOpt->prev2) { posPrev = curOpt->posPrev2; pos = curOpt->backPrev2; state = (UInt32) kRepNextStates[state]; /*MAB casts */ } else { pos = curOpt->backPrev; if (pos < LZMA_NUM_REPS) state = (UInt32) kRepNextStates[state]; /*MAB casts */ else state = (UInt32) kMatchNextStates[state]; /*MAB casts */ } prevOpt = &p->opt[posPrev]; if (pos < LZMA_NUM_REPS) { /*MAB: i changed to i__ to avoid hiding a variable */ UInt32 i__; reps[0] = prevOpt->backs[pos]; for (i__ = 1; i__ <= pos; i__++) reps[i__] = prevOpt->backs[i__ - 1]; for (; i__ < LZMA_NUM_REPS; i__++) reps[i__] = prevOpt->backs[i__]; } else { /*MAB: i changed to i__ to avoid hiding a variable */ UInt32 i__; reps[0] = (pos - LZMA_NUM_REPS); for (i__ = 1; i__ < LZMA_NUM_REPS; i__++) reps[i__] = prevOpt->backs[i__ - 1]; } } curOpt->state = (CState)state; curOpt->backs[0] = reps[0]; curOpt->backs[1] = reps[1]; curOpt->backs[2] = reps[2]; curOpt->backs[3] = reps[3]; curPrice = curOpt->price; nextIsChar = False; data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; curByte = *data; matchByte = *(data - (reps[0] + 1)); posState = (position & p->pbMask); curAnd1Price = curPrice + GET_PRICE_0(p->isMatch[state][posState]); { const CLzmaProb *probs = LIT_PROBS(position, *(data - 1)); curAnd1Price += (!IsCharState(state) ? LitEnc_GetPriceMatched(probs, curByte, matchByte, p->ProbPrices) : LitEnc_GetPrice(probs, curByte, p->ProbPrices)); } nextOpt = &p->opt[cur + 1]; if (curAnd1Price < nextOpt->price) { nextOpt->price = curAnd1Price; nextOpt->posPrev = cur; MakeAsChar(nextOpt); nextIsChar = True; } matchPrice = curPrice + GET_PRICE_1(p->isMatch[state][posState]); repMatchPrice = matchPrice + GET_PRICE_1(p->isRep[state]); if (matchByte == curByte && !(nextOpt->posPrev < cur && nextOpt->backPrev == 0)) { UInt32 shortRepPrice = repMatchPrice + GetRepLen1Price(p, state, posState); if (shortRepPrice <= nextOpt->price) { nextOpt->price = shortRepPrice; nextOpt->posPrev = cur; MakeAsShortRep(nextOpt); nextIsChar = True; } } numAvailFull = p->numAvail; { UInt32 temp = kNumOpts - 1 - cur; if (temp < numAvailFull) numAvailFull = temp; } if (numAvailFull < 2) continue; numAvail = (numAvailFull <= p->numFastBytes ? numAvailFull : p->numFastBytes); if (!nextIsChar && matchByte != curByte) /* speed optimization */ { /* try Literal + rep0 */ UInt32 temp; UInt32 lenTest2; const Byte *data2 = data - (reps[0] + 1); UInt32 limit = p->numFastBytes + 1; if (limit > numAvailFull) limit = numAvailFull; for (temp = 1; temp < limit && data[temp] == data2[temp]; temp++); lenTest2 = temp - 1; if (lenTest2 >= 2) { UInt32 state2 = (UInt32) kLiteralNextStates[state]; /*MAB casts */ UInt32 posStateNext = (position + 1) & p->pbMask; UInt32 nextRepMatchPrice = curAnd1Price + GET_PRICE_1(p->isMatch[state2][posStateNext]) + GET_PRICE_1(p->isRep[state2]); /* for (; lenTest2 >= 2; lenTest2--) */ { UInt32 curAndLenPrice; COptimal *opt; UInt32 offset = cur + 1 + lenTest2; while (lenEnd < offset) p->opt[++lenEnd].price = kInfinityPrice; curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext); opt = &p->opt[offset]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur + 1; opt->backPrev = 0; opt->prev1IsChar = True; opt->prev2 = False; } } } } startLen = 2; /* speed optimization */ { UInt32 repIndex; for (repIndex = 0; repIndex < LZMA_NUM_REPS; repIndex++) { UInt32 lenTest; UInt32 lenTestTemp; UInt32 price; const Byte *data2 = data - (reps[repIndex] + 1); if (data[0] != data2[0] || data[1] != data2[1]) continue; for (lenTest = 2; lenTest < numAvail && data[lenTest] == data2[lenTest]; lenTest++); while (lenEnd < cur + lenTest) p->opt[++lenEnd].price = kInfinityPrice; lenTestTemp = lenTest; price = repMatchPrice + GetPureRepPrice(p, repIndex, state, posState); do { UInt32 curAndLenPrice = price + p->repLenEnc.prices[posState][lenTest - 2]; COptimal *opt = &p->opt[cur + lenTest]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur; opt->backPrev = repIndex; opt->prev1IsChar = False; } } while (--lenTest >= 2); lenTest = lenTestTemp; if (repIndex == 0) startLen = lenTest + 1; /* if (_maxMode) */ { UInt32 lenTest2 = lenTest + 1; UInt32 limit = lenTest2 + p->numFastBytes; UInt32 nextRepMatchPrice; if (limit > numAvailFull) limit = numAvailFull; for (; lenTest2 < limit && data[lenTest2] == data2[lenTest2]; lenTest2++); lenTest2 -= lenTest + 1; if (lenTest2 >= 2) { UInt32 state2 = (UInt32) kRepNextStates[state]; /*MAB casts */ UInt32 posStateNext = (position + lenTest) & p->pbMask; UInt32 curAndLenCharPrice = price + p->repLenEnc.prices[posState][lenTest - 2] + GET_PRICE_0(p->isMatch[state2][posStateNext]) + LitEnc_GetPriceMatched(LIT_PROBS(position + lenTest, data[lenTest - 1]), data[lenTest], data2[lenTest], p->ProbPrices); state2 = (UInt32) kLiteralNextStates[state2]; /*MAB casts */ posStateNext = (position + lenTest + 1) & p->pbMask; nextRepMatchPrice = curAndLenCharPrice + GET_PRICE_1(p->isMatch[state2][posStateNext]) + GET_PRICE_1(p->isRep[state2]); /* for (; lenTest2 >= 2; lenTest2--) */ { UInt32 curAndLenPrice; COptimal *opt; UInt32 offset = cur + lenTest + 1 + lenTest2; while (lenEnd < offset) p->opt[++lenEnd].price = kInfinityPrice; curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext); opt = &p->opt[offset]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur + lenTest + 1; opt->backPrev = 0; opt->prev1IsChar = True; opt->prev2 = True; opt->posPrev2 = cur; opt->backPrev2 = repIndex; } } } } } } /* for (UInt32 lenTest = 2; lenTest <= newLen; lenTest++) */ if (newLen > numAvail) { newLen = numAvail; for (numPairs = 0; newLen > matches[numPairs]; numPairs += 2); matches[numPairs] = newLen; numPairs += 2; } if (newLen >= startLen) { /*MAB: normalMatchPrice changed to normalMatchPrice__ not to hide a variable later */ UInt32 normalMatchPrice__ = matchPrice + GET_PRICE_0(p->isRep[state]); UInt32 offs, curBack, posSlot; UInt32 lenTest; while (lenEnd < cur + newLen) p->opt[++lenEnd].price = kInfinityPrice; offs = 0; while (startLen > matches[offs]) offs += 2; curBack = matches[offs + 1]; GetPosSlot2(curBack, posSlot); for (lenTest = /*2*/ startLen; ; lenTest++) { /*MAB: curAndLenPrice changed to curAndLenPrice__ not to hide a variable later */ UInt32 curAndLenPrice__ = normalMatchPrice__ + p->lenEnc.prices[posState][lenTest - LZMA_MATCH_LEN_MIN]; UInt32 lenToPosState = GetLenToPosState(lenTest); /*MAB: opt changed to opt__ not to hide a variable later */ COptimal *opt__; if (curBack < kNumFullDistances) curAndLenPrice__ += p->distancesPrices[lenToPosState][curBack]; else curAndLenPrice__ += p->posSlotPrices[lenToPosState][posSlot] + p->alignPrices[curBack & kAlignMask]; opt__ = &p->opt[cur + lenTest]; if (curAndLenPrice__ < opt__->price) { opt__->price = curAndLenPrice__; opt__->posPrev = cur; opt__->backPrev = curBack + LZMA_NUM_REPS; opt__->prev1IsChar = False; } if (/*_maxMode && */lenTest == matches[offs]) { /* Try Match + Literal + Rep0 */ const Byte *data2 = data - (curBack + 1); UInt32 lenTest2 = lenTest + 1; UInt32 limit = lenTest2 + p->numFastBytes; UInt32 nextRepMatchPrice; if (limit > numAvailFull) limit = numAvailFull; for (; lenTest2 < limit && data[lenTest2] == data2[lenTest2]; lenTest2++); lenTest2 -= lenTest + 1; if (lenTest2 >= 2) { UInt32 state2 = (UInt32) kMatchNextStates[state]; /*MAB casts */ UInt32 posStateNext = (position + lenTest) & p->pbMask; UInt32 curAndLenCharPrice = curAndLenPrice__ + GET_PRICE_0(p->isMatch[state2][posStateNext]) + LitEnc_GetPriceMatched(LIT_PROBS(position + lenTest, data[lenTest - 1]), data[lenTest], data2[lenTest], p->ProbPrices); state2 = (UInt32) kLiteralNextStates[state2]; /*MAB casts */ posStateNext = (posStateNext + 1) & p->pbMask; nextRepMatchPrice = curAndLenCharPrice + GET_PRICE_1(p->isMatch[state2][posStateNext]) + GET_PRICE_1(p->isRep[state2]); /* for (; lenTest2 >= 2; lenTest2--) */ { UInt32 offset = cur + lenTest + 1 + lenTest2; UInt32 curAndLenPrice; COptimal *opt; while (lenEnd < offset) p->opt[++lenEnd].price = kInfinityPrice; curAndLenPrice = nextRepMatchPrice + GetRepPrice(p, 0, lenTest2, state2, posStateNext); opt = &p->opt[offset]; if (curAndLenPrice < opt->price) { opt->price = curAndLenPrice; opt->posPrev = cur + lenTest + 1; opt->backPrev = 0; opt->prev1IsChar = True; opt->prev2 = True; opt->posPrev2 = cur; opt->backPrev2 = curBack + LZMA_NUM_REPS; } } } offs += 2; if (offs == numPairs) break; curBack = matches[offs + 1]; if (curBack >= kNumFullDistances) GetPosSlot2(curBack, posSlot); } } } } } #define ChangePair(smallDist, bigDist) (((bigDist) >> 7) > (smallDist)) static UInt32 GetOptimumFast(CLzmaEnc *p, UInt32 *backRes) { UInt32 numAvail, mainLen, mainDist, numPairs, repIndex, repLen, i; const Byte *data; const UInt32 *matches; if (p->additionalOffset == 0) mainLen = ReadMatchDistances(p, &numPairs); else { mainLen = p->longestMatchLength; numPairs = p->numPairs; } numAvail = p->numAvail; *backRes = (UInt32)-1; if (numAvail < 2) return 1; if (numAvail > LZMA_MATCH_LEN_MAX) numAvail = LZMA_MATCH_LEN_MAX; data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; repLen = repIndex = 0; for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 len; const Byte *data2 = data - (p->reps[i] + 1); if (data[0] != data2[0] || data[1] != data2[1]) continue; for (len = 2; len < numAvail && data[len] == data2[len]; len++); if (len >= p->numFastBytes) { *backRes = i; MovePos(p, len - 1); return len; } if (len > repLen) { repIndex = i; repLen = len; } } matches = p->matches; if (mainLen >= p->numFastBytes) { *backRes = matches[numPairs - 1] + LZMA_NUM_REPS; MovePos(p, mainLen - 1); return mainLen; } mainDist = 0; /* for GCC */ if (mainLen >= 2) { mainDist = matches[numPairs - 1]; while (numPairs > 2 && mainLen == matches[numPairs - 4] + 1) { if (!ChangePair(matches[numPairs - 3], mainDist)) break; numPairs -= 2; mainLen = matches[numPairs - 2]; mainDist = matches[numPairs - 1]; } if (mainLen == 2 && mainDist >= 0x80) mainLen = 1; } if (repLen >= 2 && ( (repLen + 1 >= mainLen) || (repLen + 2 >= mainLen && mainDist >= (1 << 9)) || (repLen + 3 >= mainLen && mainDist >= (1 << 15)))) { *backRes = repIndex; MovePos(p, repLen - 1); return repLen; } if (mainLen < 2 || numAvail <= 2) return 1; p->longestMatchLength = ReadMatchDistances(p, &p->numPairs); if (p->longestMatchLength >= 2) { UInt32 newDistance = matches[p->numPairs - 1]; if ((p->longestMatchLength >= mainLen && newDistance < mainDist) || (p->longestMatchLength == mainLen + 1 && !ChangePair(mainDist, newDistance)) || (p->longestMatchLength > mainLen + 1) || (p->longestMatchLength + 1 >= mainLen && mainLen >= 3 && ChangePair(newDistance, mainDist))) return 1; } data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - 1; for (i = 0; i < LZMA_NUM_REPS; i++) { UInt32 len, limit; const Byte *data2 = data - (p->reps[i] + 1); if (data[0] != data2[0] || data[1] != data2[1]) continue; limit = mainLen - 1; for (len = 2; len < limit && data[len] == data2[len]; len++); if (len >= limit) return 1; } *backRes = mainDist + LZMA_NUM_REPS; MovePos(p, mainLen - 2); return mainLen; } static void WriteEndMarker(CLzmaEnc *p, UInt32 posState) { UInt32 len; RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][posState], 1); RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 0); p->state = (UInt32) kMatchNextStates[p->state]; /*MAB casts */ len = LZMA_MATCH_LEN_MIN; LenEnc_Encode2(&p->lenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices); RcTree_Encode(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], kNumPosSlotBits, (1 << kNumPosSlotBits) - 1); RangeEnc_EncodeDirectBits(&p->rc, (((UInt32)1 << 30) - 1) >> kNumAlignBits, 30 - kNumAlignBits); RcTree_ReverseEncode(&p->rc, p->posAlignEncoder, kNumAlignBits, kAlignMask); } static SRes CheckErrors(CLzmaEnc *p) { if (p->result != SZ_OK) return p->result; if (p->rc.res != SZ_OK) p->result = SZ_ERROR_WRITE; if (p->matchFinderBase.result != SZ_OK) p->result = SZ_ERROR_READ; if (p->result != SZ_OK) p->finished = True; return p->result; } static SRes Flush(CLzmaEnc *p, UInt32 nowPos) { /* ReleaseMFStream(); */ p->finished = True; if (p->writeEndMark) WriteEndMarker(p, nowPos & p->pbMask); RangeEnc_FlushData(&p->rc); RangeEnc_FlushStream(&p->rc); return CheckErrors(p); } static void FillAlignPrices(CLzmaEnc *p) { UInt32 i; for (i = 0; i < kAlignTableSize; i++) p->alignPrices[i] = RcTree_ReverseGetPrice(p->posAlignEncoder, kNumAlignBits, i, p->ProbPrices); p->alignPriceCount = 0; } static void FillDistancesPrices(CLzmaEnc *p) { UInt32 tempPrices[kNumFullDistances]; /*MAB: i changed to j to avoid warnings later of hiding i */ UInt32 j, lenToPosState; for (j = kStartPosModelIndex; j < kNumFullDistances; j++) { UInt32 posSlot = GetPosSlot1(j); UInt32 footerBits = ((posSlot >> 1) - 1); UInt32 base = ((2 | (posSlot & 1)) << footerBits); tempPrices[j] = RcTree_ReverseGetPrice(p->posEncoders + base - posSlot - 1, (int)footerBits, j - base, p->ProbPrices); /*MAB casts */ } for (lenToPosState = 0; lenToPosState < kNumLenToPosStates; lenToPosState++) { UInt32 posSlot; const CLzmaProb *encoder = p->posSlotEncoder[lenToPosState]; UInt32 *posSlotPrices = p->posSlotPrices[lenToPosState]; for (posSlot = 0; posSlot < p->distTableSize; posSlot++) posSlotPrices[posSlot] = RcTree_GetPrice(encoder, kNumPosSlotBits, posSlot, p->ProbPrices); for (posSlot = kEndPosModelIndex; posSlot < p->distTableSize; posSlot++) posSlotPrices[posSlot] += ((((posSlot >> 1) - 1) - kNumAlignBits) << kNumBitPriceShiftBits); { UInt32 *distancesPrices = p->distancesPrices[lenToPosState]; /*MAB: i changed to i__ to avoid hiding a variable */ UInt32 i__; for (i__ = 0; i__ < kStartPosModelIndex; i__++) distancesPrices[i__] = posSlotPrices[i__]; for (; i__ < kNumFullDistances; i__++) distancesPrices[i__] = posSlotPrices[GetPosSlot1(i__)] + tempPrices[i__]; } } p->matchPriceCount = 0; } /*MAB: static added */ static void LzmaEnc_Construct(CLzmaEnc *p) { RangeEnc_Construct(&p->rc); MatchFinder_Construct(&p->matchFinderBase); #ifdef COMPRESS_MF_MT MatchFinderMt_Construct(&p->matchFinderMt); p->matchFinderMt.MatchFinder = &p->matchFinderBase; #endif { CLzmaEncProps props; LzmaEncProps_Init(&props); LzmaEnc_SetProps(p, &props); } #ifndef LZMA_LOG_BSR LzmaEnc_FastPosInit(p->g_FastPos); #endif LzmaEnc_InitPriceTables(p->ProbPrices); p->litProbs = 0; p->saveState.litProbs = 0; } CLzmaEncHandle LzmaEnc_Create(ISzAlloc *alloc) { void *p; p = alloc->Alloc(alloc, sizeof(CLzmaEnc)); if (p != 0) LzmaEnc_Construct((CLzmaEnc *)p); return p; } /*MAB: static added */ static void LzmaEnc_FreeLits(CLzmaEnc *p, ISzAlloc *alloc) { alloc->Free(alloc, p->litProbs); alloc->Free(alloc, p->saveState.litProbs); p->litProbs = 0; p->saveState.litProbs = 0; } /*MAB: static added */ static void LzmaEnc_Destruct(CLzmaEnc *p, ISzAlloc *alloc, ISzAlloc *allocBig) { #ifdef COMPRESS_MF_MT MatchFinderMt_Destruct(&p->matchFinderMt, allocBig); #endif MatchFinder_Free(&p->matchFinderBase, allocBig); LzmaEnc_FreeLits(p, alloc); RangeEnc_Free(&p->rc, alloc); } void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAlloc *alloc, ISzAlloc *allocBig) { LzmaEnc_Destruct((CLzmaEnc *)p, alloc, allocBig); alloc->Free(alloc, p); } static SRes LzmaEnc_CodeOneBlock(CLzmaEnc *p, Bool useLimits, UInt32 maxPackSize, UInt32 maxUnpackSize) { UInt32 nowPos32, startPos32; if (p->inStream != 0) { p->matchFinderBase.stream = p->inStream; p->matchFinder.Init(p->matchFinderObj); p->inStream = 0; } if (p->finished) return p->result; RINOK(CheckErrors(p)); nowPos32 = (UInt32)p->nowPos64; startPos32 = nowPos32; if (p->nowPos64 == 0) { UInt32 numPairs; Byte curByte; if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0) return Flush(p, nowPos32); ReadMatchDistances(p, &numPairs); RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][0], 0); p->state = (UInt32) kLiteralNextStates[p->state]; /*MAB casts */ curByte = p->matchFinder.GetIndexByte(p->matchFinderObj, (Int32)(0 - p->additionalOffset)); /*MAB casts */ LitEnc_Encode(&p->rc, p->litProbs, curByte); p->additionalOffset--; nowPos32++; } if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) != 0) for (;;) { UInt32 pos, len, posState; if (p->fastMode) len = GetOptimumFast(p, &pos); else len = GetOptimum(p, nowPos32, &pos); #ifdef SHOW_STAT2 printf("\n pos = %4X, len = %d pos = %d", nowPos32, len, pos); #endif posState = nowPos32 & p->pbMask; if (len == 1 && pos == (UInt32)-1) { Byte curByte; CLzmaProb *probs; const Byte *data; RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][posState], 0); data = p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; curByte = *data; probs = LIT_PROBS(nowPos32, *(data - 1)); if (IsCharState(p->state)) LitEnc_Encode(&p->rc, probs, curByte); else LitEnc_EncodeMatched(&p->rc, probs, curByte, *(data - p->reps[0] - 1)); p->state = (UInt32) kLiteralNextStates[p->state]; /*MAB casts */ } else { RangeEnc_EncodeBit(&p->rc, &p->isMatch[p->state][posState], 1); if (pos < LZMA_NUM_REPS) { RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 1); if (pos == 0) { RangeEnc_EncodeBit(&p->rc, &p->isRepG0[p->state], 0); RangeEnc_EncodeBit(&p->rc, &p->isRep0Long[p->state][posState], ((len == 1) ? 0 : 1)); } else { UInt32 distance = p->reps[pos]; RangeEnc_EncodeBit(&p->rc, &p->isRepG0[p->state], 1); if (pos == 1) RangeEnc_EncodeBit(&p->rc, &p->isRepG1[p->state], 0); else { RangeEnc_EncodeBit(&p->rc, &p->isRepG1[p->state], 1); RangeEnc_EncodeBit(&p->rc, &p->isRepG2[p->state], pos - 2); if (pos == 3) p->reps[3] = p->reps[2]; p->reps[2] = p->reps[1]; } p->reps[1] = p->reps[0]; p->reps[0] = distance; } if (len == 1) p->state = (UInt32) kShortRepNextStates[p->state]; /*MAB casts */ else { LenEnc_Encode2(&p->repLenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices); p->state = (UInt32) kRepNextStates[p->state]; /*MAB casts */ } } else { UInt32 posSlot; RangeEnc_EncodeBit(&p->rc, &p->isRep[p->state], 0); p->state = (UInt32) kMatchNextStates[p->state]; /*MAB casts */ LenEnc_Encode2(&p->lenEnc, &p->rc, len - LZMA_MATCH_LEN_MIN, posState, !p->fastMode, p->ProbPrices); pos -= LZMA_NUM_REPS; GetPosSlot(pos, posSlot); RcTree_Encode(&p->rc, p->posSlotEncoder[GetLenToPosState(len)], kNumPosSlotBits, posSlot); if (posSlot >= kStartPosModelIndex) { UInt32 footerBits = ((posSlot >> 1) - 1); UInt32 base = ((2 | (posSlot & 1)) << footerBits); UInt32 posReduced = pos - base; if (posSlot < kEndPosModelIndex) RcTree_ReverseEncode(&p->rc, p->posEncoders + base - posSlot - 1, (int)footerBits, posReduced); /*MAB casts */ else { RangeEnc_EncodeDirectBits(&p->rc, posReduced >> kNumAlignBits, (int)footerBits - kNumAlignBits); /*MAB casts */ RcTree_ReverseEncode(&p->rc, p->posAlignEncoder, kNumAlignBits, posReduced & kAlignMask); p->alignPriceCount++; } } p->reps[3] = p->reps[2]; p->reps[2] = p->reps[1]; p->reps[1] = p->reps[0]; p->reps[0] = pos; p->matchPriceCount++; } } p->additionalOffset -= len; nowPos32 += len; if (p->additionalOffset == 0) { UInt32 processed; if (!p->fastMode) { if (p->matchPriceCount >= (1 << 7)) FillDistancesPrices(p); if (p->alignPriceCount >= kAlignTableSize) FillAlignPrices(p); } if (p->matchFinder.GetNumAvailableBytes(p->matchFinderObj) == 0) break; processed = nowPos32 - startPos32; if (useLimits) { if (processed + kNumOpts + 300 >= maxUnpackSize || RangeEnc_GetProcessed(&p->rc) + kNumOpts * 2 >= maxPackSize) break; } else if (processed >= (1 << 15)) { p->nowPos64 += nowPos32 - startPos32; return CheckErrors(p); } } } p->nowPos64 += nowPos32 - startPos32; return Flush(p, nowPos32); } #define kBigHashDicLimit ((UInt32)1 << 24) static SRes LzmaEnc_Alloc(CLzmaEnc *p, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { UInt32 beforeSize = kNumOpts; #ifdef COMPRESS_MF_MT Bool btMode; /*MAB: this line wrap inside the compilation ifdef, btMode not used without it */ #endif if (!RangeEnc_Alloc(&p->rc, alloc)) return SZ_ERROR_MEM; #ifdef COMPRESS_MF_MT btMode = (p->matchFinderBase.btMode != 0); /*MAB: this line moved inside the compilation ifdef, btMode not used without it */ p->mtMode = (p->multiThread && !p->fastMode && btMode); #endif { unsigned lclp = p->lc + p->lp; if (p->litProbs == 0 || p->saveState.litProbs == 0 || p->lclp != lclp) { LzmaEnc_FreeLits(p, alloc); p->litProbs = (CLzmaProb *)alloc->Alloc(alloc, (0x300u << lclp) * sizeof(CLzmaProb)); /*MAB 0x300 vs 0x300u*/ p->saveState.litProbs = (CLzmaProb *)alloc->Alloc(alloc, (0x300u << lclp) * sizeof(CLzmaProb)); /*MAB 0x300 vs 0x300u*/ if (p->litProbs == 0 || p->saveState.litProbs == 0) { LzmaEnc_FreeLits(p, alloc); return SZ_ERROR_MEM; } p->lclp = lclp; } } p->matchFinderBase.bigHash = (p->dictSize > kBigHashDicLimit); if (beforeSize + p->dictSize < keepWindowSize) beforeSize = keepWindowSize - p->dictSize; #ifdef COMPRESS_MF_MT if (p->mtMode) { RINOK(MatchFinderMt_Create(&p->matchFinderMt, p->dictSize, beforeSize, p->numFastBytes, LZMA_MATCH_LEN_MAX, allocBig)); p->matchFinderObj = &p->matchFinderMt; MatchFinderMt_CreateVTable(&p->matchFinderMt, &p->matchFinder); } else #endif { if (!MatchFinder_Create(&p->matchFinderBase, p->dictSize, beforeSize, p->numFastBytes, LZMA_MATCH_LEN_MAX, allocBig)) return SZ_ERROR_MEM; p->matchFinderObj = &p->matchFinderBase; MatchFinder_CreateVTable(&p->matchFinderBase, &p->matchFinder); } return SZ_OK; } /*MAB: static added */ static void LzmaEnc_Init(CLzmaEnc *p) { UInt32 i; p->state = 0; for (i = 0 ; i < LZMA_NUM_REPS; i++) p->reps[i] = 0; RangeEnc_Init(&p->rc); for (i = 0; i < kNumStates; i++) { UInt32 j; for (j = 0; j < LZMA_NUM_PB_STATES_MAX; j++) { p->isMatch[i][j] = kProbInitValue; p->isRep0Long[i][j] = kProbInitValue; } p->isRep[i] = kProbInitValue; p->isRepG0[i] = kProbInitValue; p->isRepG1[i] = kProbInitValue; p->isRepG2[i] = kProbInitValue; } { UInt32 num = (UInt32) (0x300 << (p->lp + p->lc)); /*MAB casts */ for (i = 0; i < num; i++) p->litProbs[i] = kProbInitValue; } { for (i = 0; i < kNumLenToPosStates; i++) { CLzmaProb *probs = p->posSlotEncoder[i]; UInt32 j; for (j = 0; j < (1 << kNumPosSlotBits); j++) probs[j] = kProbInitValue; } } { for (i = 0; i < kNumFullDistances - kEndPosModelIndex; i++) p->posEncoders[i] = kProbInitValue; } LenEnc_Init(&p->lenEnc.p); LenEnc_Init(&p->repLenEnc.p); for (i = 0; i < (1 << kNumAlignBits); i++) p->posAlignEncoder[i] = kProbInitValue; p->optimumEndIndex = 0; p->optimumCurrentIndex = 0; p->additionalOffset = 0; p->pbMask = (1u << p->pb) - 1u; /*MAB 1u */ p->lpMask = (1u << p->lp) - 1u; /*MAB 1u */ } /*MAB: static added */ static void LzmaEnc_InitPrices(CLzmaEnc *p) { if (!p->fastMode) { FillDistancesPrices(p); FillAlignPrices(p); } p->lenEnc.tableSize = p->repLenEnc.tableSize = p->numFastBytes + 1 - LZMA_MATCH_LEN_MIN; LenPriceEnc_UpdateTables(&p->lenEnc, 1u << p->pb, p->ProbPrices); /*MAB 1u */ LenPriceEnc_UpdateTables(&p->repLenEnc, 1u << p->pb, p->ProbPrices); /*MAB 1u */ } static SRes LzmaEnc_AllocAndInit(CLzmaEnc *p, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { UInt32 i; for (i = 0; i < (UInt32)kDicLogSizeMaxCompress; i++) if (p->dictSize <= ((UInt32)1 << i)) break; p->distTableSize = i * 2; p->finished = False; p->result = SZ_OK; RINOK(LzmaEnc_Alloc(p, keepWindowSize, alloc, allocBig)); LzmaEnc_Init(p); LzmaEnc_InitPrices(p); p->nowPos64 = 0; return SZ_OK; } static SRes LzmaEnc_Prepare(CLzmaEncHandle pp, ISeqInStream *inStream, ISeqOutStream *outStream, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; p->inStream = inStream; p->rc.outStream = outStream; return LzmaEnc_AllocAndInit(p, 0, alloc, allocBig); } #if defined(USE_UNUSED_CODE) /*MAB: static added */ static SRes LzmaEnc_PrepareForLzma2(CLzmaEncHandle pp, ISeqInStream *inStream, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; p->inStream = inStream; return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); } #endif static void LzmaEnc_SetInputBuf(CLzmaEnc *p, const Byte *src, SizeT srcLen) { p->seqBufInStream.funcTable.Read = MyRead; p->seqBufInStream.data = src; p->seqBufInStream.rem = srcLen; } #if defined(USE_UNUSED_CODE) /*MAB: static added */ static SRes LzmaEnc_MemPrepare(CLzmaEncHandle pp, const Byte *src, SizeT srcLen, UInt32 keepWindowSize, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; LzmaEnc_SetInputBuf(p, src, srcLen); p->inStream = &p->seqBufInStream.funcTable; return LzmaEnc_AllocAndInit(p, keepWindowSize, alloc, allocBig); } #endif /*MAB: static added */ static void LzmaEnc_Finish(CLzmaEncHandle pp) { #ifdef COMPRESS_MF_MT CLzmaEnc *p = (CLzmaEnc *)pp; if (p->mtMode) MatchFinderMt_ReleaseStream(&p->matchFinderMt); #else pp = pp; #endif } typedef struct _CSeqOutStreamBuf { ISeqOutStream funcTable; Byte *data; SizeT rem; Bool overflow; } CSeqOutStreamBuf; static size_t MyWrite(void *pp, const void *data, size_t size) { CSeqOutStreamBuf *p = (CSeqOutStreamBuf *)pp; if (p->rem < size) { size = p->rem; p->overflow = True; } memcpy(p->data, data, size); p->rem -= size; p->data += size; return size; } #if defined(USE_UNUSED_CODE) /*MAB: static added */ static UInt32 LzmaEnc_GetNumAvailableBytes(CLzmaEncHandle pp) { const CLzmaEnc *p = (CLzmaEnc *)pp; return p->matchFinder.GetNumAvailableBytes(p->matchFinderObj); } /*MAB: static added */ static const Byte *LzmaEnc_GetCurBuf(CLzmaEncHandle pp) { const CLzmaEnc *p = (CLzmaEnc *)pp; return p->matchFinder.GetPointerToCurrentPos(p->matchFinderObj) - p->additionalOffset; } /*MAB: static added */ static SRes LzmaEnc_CodeOneMemBlock(CLzmaEncHandle pp, Bool reInit, Byte *dest, size_t *destLen, UInt32 desiredPackSize, UInt32 *unpackSize) { CLzmaEnc *p = (CLzmaEnc *)pp; UInt64 nowPos64; SRes res; CSeqOutStreamBuf outStream; outStream.funcTable.Write = MyWrite; outStream.data = dest; outStream.rem = *destLen; outStream.overflow = False; p->writeEndMark = False; p->finished = False; p->result = SZ_OK; if (reInit) LzmaEnc_Init(p); LzmaEnc_InitPrices(p); nowPos64 = p->nowPos64; RangeEnc_Init(&p->rc); p->rc.outStream = &outStream.funcTable; res = LzmaEnc_CodeOneBlock(p, True, desiredPackSize, *unpackSize); *unpackSize = (UInt32)(p->nowPos64 - nowPos64); *destLen -= outStream.rem; if (outStream.overflow) return SZ_ERROR_OUTPUT_EOF; return res; } #endif SRes LzmaEnc_Encode(CLzmaEncHandle pp, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)pp; SRes res = SZ_OK; #ifdef COMPRESS_MF_MT Byte allocaDummy[0x300]; int i = 0; for (i = 0; i < 16; i++) allocaDummy[i] = (Byte)i; #endif RINOK(LzmaEnc_Prepare(pp, inStream, outStream, alloc, allocBig)); for (;;) { res = LzmaEnc_CodeOneBlock(p, False, 0, 0); if (res != SZ_OK || p->finished != 0) break; if (progress != 0) { res = progress->Progress(progress, p->nowPos64, (UInt64) RangeEnc_GetProcessed(&p->rc)); /*MAB casts */ if (res != SZ_OK) { res = SZ_ERROR_PROGRESS; break; } } } LzmaEnc_Finish(pp); return res; } SRes LzmaEnc_WriteProperties(CLzmaEncHandle pp, Byte *props, SizeT *size) { CLzmaEnc *p = (CLzmaEnc *)pp; int i; UInt32 dictSize = p->dictSize; if (*size < LZMA_PROPS_SIZE) return SZ_ERROR_PARAM; *size = LZMA_PROPS_SIZE; props[0] = (Byte)((p->pb * 5 + p->lp) * 9 + p->lc); for (i = 11; i <= 30; i++) { if (dictSize <= ((UInt32)2 << i)) { dictSize = (UInt32)(2 << i); /*MAB casts */ break; } if (dictSize <= ((UInt32)3 << i)) { dictSize = (UInt32)(3 << i); /*MAB casts */ break; } } for (i = 0; i < 4; i++) props[1 + i] = (Byte)(dictSize >> (8 * i)); return SZ_OK; } SRes LzmaEnc_MemEncode(CLzmaEncHandle pp, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig) { SRes res; CLzmaEnc *p = (CLzmaEnc *)pp; CSeqOutStreamBuf outStream; LzmaEnc_SetInputBuf(p, src, srcLen); outStream.funcTable.Write = MyWrite; outStream.data = dest; outStream.rem = *destLen; outStream.overflow = False; p->writeEndMark = writeEndMark; res = LzmaEnc_Encode(pp, &outStream.funcTable, &p->seqBufInStream.funcTable, progress, alloc, allocBig); *destLen -= outStream.rem; if (outStream.overflow) return SZ_ERROR_OUTPUT_EOF; return res; } SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig) { CLzmaEnc *p = (CLzmaEnc *)LzmaEnc_Create(alloc); SRes res; if (p == 0) return SZ_ERROR_MEM; res = LzmaEnc_SetProps(p, props); if (res == SZ_OK) { res = LzmaEnc_WriteProperties(p, propsEncoded, propsSize); if (res == SZ_OK) res = LzmaEnc_MemEncode(p, dest, destLen, src, srcLen, writeEndMark, progress, alloc, allocBig); } LzmaEnc_Destroy(p, alloc, allocBig); return res; } gaviotatb-0.4.orig/compression/lzma/LzmaDec.c0000755000175000017500000007013611536321052020343 0ustar varunvarun/* LzmaDec.c -- LZMA Decoder 2008-11-06 : Igor Pavlov : Public domain */ #include "LzmaDec.h" #include #define kNumTopBits 24 #define kTopValue ((UInt32)1 << kNumTopBits) #define kNumBitModelTotalBits 11 #define kBitModelTotal (1 << kNumBitModelTotalBits) #define kNumMoveBits 5 #define RC_INIT_SIZE 5 #define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } #define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) #define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); #define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); #define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ { UPDATE_0(p); i = (i + i); A0; } else \ { UPDATE_1(p); i = (i + i) + 1; A1; } #define GET_BIT(p, i) GET_BIT2(p, i, ; , ;) #define TREE_GET_BIT(probs, i) { GET_BIT((probs + i), i); } #define TREE_DECODE(probs, limit, i) \ { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } /* #define _LZMA_SIZE_OPT */ #ifdef _LZMA_SIZE_OPT #define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) #else #define TREE_6_DECODE(probs, i) \ { i = 1; \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ TREE_GET_BIT(probs, i); \ i -= 0x40; } #endif #define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); } #define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * ttt; if (code < bound) #define UPDATE_0_CHECK range = bound; #define UPDATE_1_CHECK range -= bound; code -= bound; #define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ { UPDATE_0_CHECK; i = (i + i); A0; } else \ { UPDATE_1_CHECK; i = (i + i) + 1; A1; } #define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) #define TREE_DECODE_CHECK(probs, limit, i) \ { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } #define kNumPosBitsMax 4 #define kNumPosStatesMax (1 << kNumPosBitsMax) #define kLenNumLowBits 3 #define kLenNumLowSymbols (1 << kLenNumLowBits) #define kLenNumMidBits 3 #define kLenNumMidSymbols (1 << kLenNumMidBits) #define kLenNumHighBits 8 #define kLenNumHighSymbols (1 << kLenNumHighBits) #define LenChoice 0 #define LenChoice2 (LenChoice + 1) #define LenLow (LenChoice2 + 1) #define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) #define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) #define kNumLenProbs (LenHigh + kLenNumHighSymbols) #define kNumStates 12 #define kNumLitStates 7 #define kStartPosModelIndex 4 #define kEndPosModelIndex 14 #define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) #define kNumPosSlotBits 6 #define kNumLenToPosStates 4 #define kNumAlignBits 4 #define kAlignTableSize (1 << kNumAlignBits) #define kMatchMinLen 2 #define kMatchSpecLenStart (kMatchMinLen + kLenNumLowSymbols + kLenNumMidSymbols + kLenNumHighSymbols) #define IsMatch 0 #define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) #define IsRepG0 (IsRep + kNumStates) #define IsRepG1 (IsRepG0 + kNumStates) #define IsRepG2 (IsRepG1 + kNumStates) #define IsRep0Long (IsRepG2 + kNumStates) #define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) #define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) #define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) #define LenCoder (Align + kAlignTableSize) #define RepLenCoder (LenCoder + kNumLenProbs) #define Literal (RepLenCoder + kNumLenProbs) #define LZMA_BASE_SIZE 1846 #define LZMA_LIT_SIZE 768 /*MAB casts next... */ #define LzmaProps_GetNumProbs(p) ((UInt32)LZMA_BASE_SIZE + ((unsigned)LZMA_LIT_SIZE << ((p)->lc + (p)->lp))) #if Literal != LZMA_BASE_SIZE StopCompilingDueBUG #endif static const Byte kLiteralNextStates[kNumStates * 2] = { 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5, 7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10 }; #define LZMA_DIC_MIN (1 << 12) /* First LZMA-symbol is always decoded. And it decodes new LZMA-symbols while (buf < bufLimit), but "buf" is without last normalization Out: Result: SZ_OK - OK SZ_ERROR_DATA - Error p->remainLen: < kMatchSpecLenStart : normal remain = kMatchSpecLenStart : finished = kMatchSpecLenStart + 1 : Flush marker = kMatchSpecLenStart + 2 : State Init Marker */ static int MY_FAST_CALL LzmaDec_DecodeReal(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { CLzmaProb *probs = p->probs; unsigned state = p->state; UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; unsigned lpMask = ((unsigned)1 << (p->prop.lp)) - 1; unsigned lc = p->prop.lc; Byte *dic = p->dic; SizeT dicBufSize = p->dicBufSize; SizeT dicPos = p->dicPos; UInt32 processedPos = p->processedPos; UInt32 checkDicSize = p->checkDicSize; unsigned len = 0; const Byte *buf = p->buf; UInt32 range = p->range; UInt32 code = p->code; do { CLzmaProb *prob; UInt32 bound; unsigned ttt; unsigned posState = processedPos & pbMask; prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; IF_BIT_0(prob) { unsigned symbol; UPDATE_0(prob); prob = probs + Literal; if (checkDicSize != 0 || processedPos != 0) prob += (LZMA_LIT_SIZE * (((processedPos & lpMask) << lc) + (UInt32) ( /*MAB casts */ (dic[(dicPos == 0 ? dicBufSize : dicPos) - 1] >> (8 - lc)))) ) ; if (state < kNumLitStates) { symbol = 1; do { GET_BIT(prob + symbol, symbol) } while (symbol < 0x100); } else { unsigned matchByte = p->dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; unsigned offs = 0x100; symbol = 1; do { unsigned bit; CLzmaProb *probLit; matchByte <<= 1; bit = (matchByte & offs); probLit = prob + offs + bit + symbol; GET_BIT2(probLit, symbol, offs &= ~bit, offs &= bit) } while (symbol < 0x100); } dic[dicPos++] = (Byte)symbol; processedPos++; state = kLiteralNextStates[state]; /* if (state < 4) state = 0; else if (state < 10) state -= 3; else state -= 6; */ continue; } else { UPDATE_1(prob); prob = probs + IsRep + state; IF_BIT_0(prob) { UPDATE_0(prob); state += kNumStates; prob = probs + LenCoder; } else { UPDATE_1(prob); if (checkDicSize == 0 && processedPos == 0) return SZ_ERROR_DATA; prob = probs + IsRepG0 + state; IF_BIT_0(prob) { UPDATE_0(prob); prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; IF_BIT_0(prob) { UPDATE_0(prob); dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; dicPos++; processedPos++; state = state < kNumLitStates ? 9 : 11; continue; } UPDATE_1(prob); } else { UInt32 distance; UPDATE_1(prob); prob = probs + IsRepG1 + state; IF_BIT_0(prob) { UPDATE_0(prob); distance = rep1; } else { UPDATE_1(prob); prob = probs + IsRepG2 + state; IF_BIT_0(prob) { UPDATE_0(prob); distance = rep2; } else { UPDATE_1(prob); distance = rep3; rep3 = rep2; } rep2 = rep1; } rep1 = rep0; rep0 = distance; } state = state < kNumLitStates ? 8 : 11; prob = probs + RepLenCoder; } { /*MAB: limit changed to limit__ because it was hiding a variable limit */ unsigned limit__, offset; CLzmaProb *probLen = prob + LenChoice; IF_BIT_0(probLen) { UPDATE_0(probLen); probLen = prob + LenLow + (posState << kLenNumLowBits); offset = 0; limit__ = (1 << kLenNumLowBits); } else { UPDATE_1(probLen); probLen = prob + LenChoice2; IF_BIT_0(probLen) { UPDATE_0(probLen); probLen = prob + LenMid + (posState << kLenNumMidBits); offset = kLenNumLowSymbols; limit__ = (1 << kLenNumMidBits); } else { UPDATE_1(probLen); probLen = prob + LenHigh; offset = kLenNumLowSymbols + kLenNumMidSymbols; limit__ = (1 << kLenNumHighBits); } } TREE_DECODE(probLen, limit__, len); len += offset; } if (state >= kNumStates) { UInt32 distance; prob = probs + PosSlot + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); TREE_6_DECODE(prob, distance); if (distance >= kStartPosModelIndex) { unsigned posSlot = (unsigned)distance; int numDirectBits = (int)(((distance >> 1) - 1)); distance = (2 | (distance & 1)); if (posSlot < kEndPosModelIndex) { distance <<= numDirectBits; prob = probs + SpecPos + distance - posSlot - 1; { UInt32 mask = 1; unsigned i = 1; do { GET_BIT2(prob + i, i, ; , distance |= mask); mask <<= 1; } while (--numDirectBits != 0); } } else { numDirectBits -= kNumAlignBits; do { NORMALIZE range >>= 1; { UInt32 t; code -= range; t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ distance = (distance << 1) + (t + 1); code += range & t; } /* distance <<= 1; if (code >= range) { code -= range; distance |= 1; } */ } while (--numDirectBits != 0); prob = probs + Align; distance <<= kNumAlignBits; { unsigned i = 1; GET_BIT2(prob + i, i, ; , distance |= 1); GET_BIT2(prob + i, i, ; , distance |= 2); GET_BIT2(prob + i, i, ; , distance |= 4); GET_BIT2(prob + i, i, ; , distance |= 8); } if (distance == (UInt32)0xFFFFFFFF) { len += kMatchSpecLenStart; state -= kNumStates; break; } } } rep3 = rep2; rep2 = rep1; rep1 = rep0; rep0 = distance + 1; if (checkDicSize == 0) { if (distance >= processedPos) return SZ_ERROR_DATA; } else if (distance >= checkDicSize) return SZ_ERROR_DATA; state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; /* state = kLiteralNextStates[state]; */ } len += kMatchMinLen; if (limit == dicPos) return SZ_ERROR_DATA; { SizeT rem = limit - dicPos; unsigned curLen = ((rem < len) ? (unsigned)rem : len); SizeT pos = (dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0); processedPos += curLen; len -= curLen; if (pos + curLen <= dicBufSize) { Byte *dest = dic + dicPos; ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; const Byte *lim = dest + curLen; dicPos += curLen; do *(dest) = (Byte)*(dest + src); while (++dest != lim); } else { do { dic[dicPos++] = dic[pos]; if (++pos == dicBufSize) pos = 0; } while (--curLen != 0); } } } } while (dicPos < limit && buf < bufLimit); NORMALIZE; p->buf = buf; p->range = range; p->code = code; p->remainLen = len; p->dicPos = dicPos; p->processedPos = processedPos; p->reps[0] = rep0; p->reps[1] = rep1; p->reps[2] = rep2; p->reps[3] = rep3; p->state = state; return SZ_OK; } static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) { if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) { Byte *dic = p->dic; SizeT dicPos = p->dicPos; SizeT dicBufSize = p->dicBufSize; unsigned len = p->remainLen; UInt32 rep0 = p->reps[0]; if (limit - dicPos < len) len = (unsigned)(limit - dicPos); if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) p->checkDicSize = p->prop.dicSize; p->processedPos += len; p->remainLen -= len; while (len-- != 0) { dic[dicPos] = dic[(dicPos - rep0) + ((dicPos < rep0) ? dicBufSize : 0)]; dicPos++; } p->dicPos = dicPos; } } static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) { do { SizeT limit2 = limit; if (p->checkDicSize == 0) { UInt32 rem = p->prop.dicSize - p->processedPos; if (limit - p->dicPos > rem) limit2 = p->dicPos + rem; } RINOK(LzmaDec_DecodeReal(p, limit2, bufLimit)); if (p->processedPos >= p->prop.dicSize) p->checkDicSize = p->prop.dicSize; LzmaDec_WriteRem(p, limit); } while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); if (p->remainLen > kMatchSpecLenStart) { p->remainLen = kMatchSpecLenStart; } return 0; } typedef enum ELzmaDummy { DUMMY_ERROR, /* unexpected end of input stream */ DUMMY_LIT, DUMMY_MATCH, DUMMY_REP } ELzmaDummy; static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) { UInt32 range = p->range; UInt32 code = p->code; const Byte *bufLimit = buf + inSize; CLzmaProb *probs = p->probs; unsigned state = p->state; ELzmaDummy res; { CLzmaProb *prob; UInt32 bound; unsigned ttt; unsigned posState = (p->processedPos) & ((1u << p->prop.pb) - 1u); /*MAB 1u */ prob = probs + IsMatch + (state << kNumPosBitsMax) + posState; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ prob = probs + Literal; if (p->checkDicSize != 0 || p->processedPos != 0) prob += (LZMA_LIT_SIZE * ( (unsigned) /*MAB casts */ (((p->processedPos) & ((1u << (p->prop.lp)) - 1u)) << p->prop.lc) + (unsigned) /*MAB casts */ (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); if (state < kNumLitStates) { unsigned symbol = 1; do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); } else { unsigned matchByte = p->dic[p->dicPos - p->reps[0] + ((p->dicPos < p->reps[0]) ? p->dicBufSize : 0)]; unsigned offs = 0x100; unsigned symbol = 1; do { unsigned bit; CLzmaProb *probLit; matchByte <<= 1; bit = (matchByte & offs); probLit = prob + offs + bit + symbol; GET_BIT2_CHECK(probLit, symbol, offs &= ~bit, offs &= bit) } while (symbol < 0x100); } res = DUMMY_LIT; } else { unsigned len; UPDATE_1_CHECK; prob = probs + IsRep + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; state = 0; prob = probs + LenCoder; res = DUMMY_MATCH; } else { UPDATE_1_CHECK; res = DUMMY_REP; prob = probs + IsRepG0 + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; prob = probs + IsRep0Long + (state << kNumPosBitsMax) + posState; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; NORMALIZE_CHECK; return DUMMY_REP; } else { UPDATE_1_CHECK; } } else { UPDATE_1_CHECK; prob = probs + IsRepG1 + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; } else { UPDATE_1_CHECK; prob = probs + IsRepG2 + state; IF_BIT_0_CHECK(prob) { UPDATE_0_CHECK; } else { UPDATE_1_CHECK; } } } state = kNumStates; prob = probs + RepLenCoder; } { unsigned limit, offset; CLzmaProb *probLen = prob + LenChoice; IF_BIT_0_CHECK(probLen) { UPDATE_0_CHECK; probLen = prob + LenLow + (posState << kLenNumLowBits); offset = 0; limit = 1 << kLenNumLowBits; } else { UPDATE_1_CHECK; probLen = prob + LenChoice2; IF_BIT_0_CHECK(probLen) { UPDATE_0_CHECK; probLen = prob + LenMid + (posState << kLenNumMidBits); offset = kLenNumLowSymbols; limit = 1 << kLenNumMidBits; } else { UPDATE_1_CHECK; probLen = prob + LenHigh; offset = kLenNumLowSymbols + kLenNumMidSymbols; limit = 1 << kLenNumHighBits; } } TREE_DECODE_CHECK(probLen, limit, len); len += offset; } if (state < 4) { unsigned posSlot; prob = probs + PosSlot + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); if (posSlot >= kStartPosModelIndex) { int numDirectBits = (int)((posSlot >> 1) - 1); /*MAB casts */ /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ if (posSlot < kEndPosModelIndex) { prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits) - posSlot - 1; } else { numDirectBits -= kNumAlignBits; do { NORMALIZE_CHECK range >>= 1; code -= range & (((code - range) >> 31) - 1); /* if (code >= range) code -= range; */ } while (--numDirectBits != 0); prob = probs + Align; numDirectBits = kNumAlignBits; } { unsigned i = 1; do { GET_BIT_CHECK(prob + i, i); } while (--numDirectBits != 0); } } } } } NORMALIZE_CHECK; return res; } static void LzmaDec_InitRc(CLzmaDec *p, const Byte *data) { p->code = ((UInt32)data[1] << 24) | ((UInt32)data[2] << 16) | ((UInt32)data[3] << 8) | ((UInt32)data[4]); p->range = 0xFFFFFFFF; p->needFlush = 0; } /*MAB: static added because it is not used externally */ static void LzmaDec_InitDicAndState(CLzmaDec *p, Bool initDic, Bool initState) { p->needFlush = 1; p->remainLen = 0; p->tempBufSize = 0; if (initDic) { p->processedPos = 0; p->checkDicSize = 0; p->needInitState = 1; } if (initState) p->needInitState = 1; } void LzmaDec_Init(CLzmaDec *p) { p->dicPos = 0; LzmaDec_InitDicAndState(p, True, True); } static void LzmaDec_InitStateReal(CLzmaDec *p) { UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (p->prop.lc + p->prop.lp)); UInt32 i; CLzmaProb *probs = p->probs; for (i = 0; i < numProbs; i++) probs[i] = kBitModelTotal >> 1; p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; p->state = 0; p->needInitState = 0; } SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) { SizeT inSize = *srcLen; (*srcLen) = 0; LzmaDec_WriteRem(p, dicLimit); *status = LZMA_STATUS_NOT_SPECIFIED; while (p->remainLen != kMatchSpecLenStart) { int checkEndMarkNow; if (p->needFlush != 0) { for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) p->tempBuf[p->tempBufSize++] = *src++; if (p->tempBufSize < RC_INIT_SIZE) { *status = LZMA_STATUS_NEEDS_MORE_INPUT; return SZ_OK; } if (p->tempBuf[0] != 0) return SZ_ERROR_DATA; LzmaDec_InitRc(p, p->tempBuf); p->tempBufSize = 0; } checkEndMarkNow = 0; if (p->dicPos >= dicLimit) { if (p->remainLen == 0 && p->code == 0) { *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; return SZ_OK; } if (finishMode == LZMA_FINISH_ANY) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_OK; } if (p->remainLen != 0) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_ERROR_DATA; } checkEndMarkNow = 1; } if (p->needInitState) LzmaDec_InitStateReal(p); if (p->tempBufSize == 0) { SizeT processed; const Byte *bufLimit; if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) { int dummyRes = LzmaDec_TryDummy(p, src, inSize); if (dummyRes == DUMMY_ERROR) { memcpy(p->tempBuf, src, inSize); p->tempBufSize = (unsigned)inSize; (*srcLen) += inSize; *status = LZMA_STATUS_NEEDS_MORE_INPUT; return SZ_OK; } if (checkEndMarkNow && dummyRes != DUMMY_MATCH) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_ERROR_DATA; } bufLimit = src; } else bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; p->buf = src; if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) return SZ_ERROR_DATA; processed = (SizeT)(p->buf - src); (*srcLen) += processed; src += processed; inSize -= processed; } else { unsigned rem = p->tempBufSize, lookAhead = 0; while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) p->tempBuf[rem++] = src[lookAhead++]; p->tempBufSize = rem; if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) { int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, rem); if (dummyRes == DUMMY_ERROR) { (*srcLen) += lookAhead; *status = LZMA_STATUS_NEEDS_MORE_INPUT; return SZ_OK; } if (checkEndMarkNow && dummyRes != DUMMY_MATCH) { *status = LZMA_STATUS_NOT_FINISHED; return SZ_ERROR_DATA; } } p->buf = p->tempBuf; if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) return SZ_ERROR_DATA; lookAhead -= (rem - (unsigned)(p->buf - p->tempBuf)); (*srcLen) += lookAhead; src += lookAhead; inSize -= lookAhead; p->tempBufSize = 0; } } if (p->code == 0) *status = LZMA_STATUS_FINISHED_WITH_MARK; return (p->code == 0) ? SZ_OK : SZ_ERROR_DATA; } SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) { SizeT outSize = *destLen; SizeT inSize = *srcLen; *srcLen = *destLen = 0; for (;;) { SizeT inSizeCur = inSize, outSizeCur, dicPos; ELzmaFinishMode curFinishMode; SRes res; if (p->dicPos == p->dicBufSize) p->dicPos = 0; dicPos = p->dicPos; if (outSize > p->dicBufSize - dicPos) { outSizeCur = p->dicBufSize; curFinishMode = LZMA_FINISH_ANY; } else { outSizeCur = dicPos + outSize; curFinishMode = finishMode; } res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); src += inSizeCur; inSize -= inSizeCur; *srcLen += inSizeCur; outSizeCur = p->dicPos - dicPos; memcpy(dest, p->dic + dicPos, outSizeCur); dest += outSizeCur; outSize -= outSizeCur; *destLen += outSizeCur; if (res != 0) return res; if (outSizeCur == 0 || outSize == 0) return SZ_OK; } } void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc) { alloc->Free(alloc, p->probs); p->probs = 0; } static void LzmaDec_FreeDict(CLzmaDec *p, ISzAlloc *alloc) { alloc->Free(alloc, p->dic); p->dic = 0; } void LzmaDec_Free(CLzmaDec *p, ISzAlloc *alloc) { LzmaDec_FreeProbs(p, alloc); LzmaDec_FreeDict(p, alloc); } SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) { UInt32 dicSize; Byte d; if (size < LZMA_PROPS_SIZE) return SZ_ERROR_UNSUPPORTED; else dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); if (dicSize < LZMA_DIC_MIN) dicSize = LZMA_DIC_MIN; p->dicSize = dicSize; d = data[0]; if (d >= (9 * 5 * 5)) return SZ_ERROR_UNSUPPORTED; p->lc = d % 9; d /= 9; p->pb = d / 5; p->lp = d % 5; return SZ_OK; } static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAlloc *alloc) { UInt32 numProbs = (UInt32) (LzmaProps_GetNumProbs(propNew)); /*MAB casts */ if (p->probs == 0 || numProbs != p->numProbs) { LzmaDec_FreeProbs(p, alloc); p->probs = (CLzmaProb *)alloc->Alloc(alloc, numProbs * sizeof(CLzmaProb)); p->numProbs = numProbs; if (p->probs == 0) return SZ_ERROR_MEM; } return SZ_OK; } SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) { CLzmaProps propNew; RINOK(LzmaProps_Decode(&propNew, props, propsSize)); RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); p->prop = propNew; return SZ_OK; } SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc) { CLzmaProps propNew; SizeT dicBufSize; RINOK(LzmaProps_Decode(&propNew, props, propsSize)); RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); dicBufSize = propNew.dicSize; if (p->dic == 0 || dicBufSize != p->dicBufSize) { LzmaDec_FreeDict(p, alloc); p->dic = (Byte *)alloc->Alloc(alloc, dicBufSize); if (p->dic == 0) { LzmaDec_FreeProbs(p, alloc); return SZ_ERROR_MEM; } } p->dicBufSize = dicBufSize; p->prop = propNew; return SZ_OK; } SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAlloc *alloc) { CLzmaDec p; SRes res; SizeT inSize = *srcLen; SizeT outSize = *destLen; *srcLen = *destLen = 0; if (inSize < RC_INIT_SIZE) return SZ_ERROR_INPUT_EOF; LzmaDec_Construct(&p); res = LzmaDec_AllocateProbs(&p, propData, propSize, alloc); if (res != 0) return res; p.dic = dest; p.dicBufSize = outSize; LzmaDec_Init(&p); *srcLen = inSize; res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) res = SZ_ERROR_INPUT_EOF; (*destLen) = p.dicPos; LzmaDec_FreeProbs(&p, alloc); return res; } gaviotatb-0.4.orig/compression/lzma/LzmaEnc.h0000755000175000017500000000553211536321052020360 0ustar varunvarun/* LzmaEnc.h -- LZMA Encoder 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZMAENC_H #define __LZMAENC_H #include "Types.h" #define LZMA_PROPS_SIZE 5 typedef struct _CLzmaEncProps { int level; /* 0 <= level <= 9 */ UInt32 dictSize; /* (1 << 12) <= dictSize <= (1 << 27) for 32-bit version (1 << 12) <= dictSize <= (1 << 30) for 64-bit version default = (1 << 24) */ int lc; /* 0 <= lc <= 8, default = 3 */ int lp; /* 0 <= lp <= 4, default = 0 */ int pb; /* 0 <= pb <= 4, default = 2 */ int algo; /* 0 - fast, 1 - normal, default = 1 */ int fb; /* 5 <= fb <= 273, default = 32 */ int btMode; /* 0 - hashChain Mode, 1 - binTree mode - normal, default = 1 */ int numHashBytes; /* 2, 3 or 4, default = 4 */ UInt32 mc; /* 1 <= mc <= (1 << 30), default = 32 */ unsigned writeEndMark; /* 0 - do not write EOPM, 1 - write EOPM, default = 0 */ int numThreads; /* 1 or 2, default = 2 */ } CLzmaEncProps; void LzmaEncProps_Init(CLzmaEncProps *p); void LzmaEncProps_Normalize(CLzmaEncProps *p); UInt32 LzmaEncProps_GetDictSize(const CLzmaEncProps *props2); /* ---------- CLzmaEncHandle Interface ---------- */ /* LzmaEnc_* functions can return the following exit codes: Returns: SZ_OK - OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_PARAM - Incorrect paramater in props SZ_ERROR_WRITE - Write callback error. SZ_ERROR_PROGRESS - some break from progress callback SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) */ typedef void * CLzmaEncHandle; CLzmaEncHandle LzmaEnc_Create(ISzAlloc *alloc); void LzmaEnc_Destroy(CLzmaEncHandle p, ISzAlloc *alloc, ISzAlloc *allocBig); SRes LzmaEnc_SetProps(CLzmaEncHandle p, const CLzmaEncProps *props); SRes LzmaEnc_WriteProperties(CLzmaEncHandle p, Byte *properties, SizeT *size); SRes LzmaEnc_Encode(CLzmaEncHandle p, ISeqOutStream *outStream, ISeqInStream *inStream, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); SRes LzmaEnc_MemEncode(CLzmaEncHandle p, Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); /* ---------- One Call Interface ---------- */ /* LzmaEncode Return code: SZ_OK - OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_PARAM - Incorrect paramater SZ_ERROR_OUTPUT_EOF - output buffer overflow SZ_ERROR_THREAD - errors in multithreading functions (only for Mt version) */ SRes LzmaEncode(Byte *dest, SizeT *destLen, const Byte *src, SizeT srcLen, const CLzmaEncProps *props, Byte *propsEncoded, SizeT *propsSize, int writeEndMark, ICompressProgress *progress, ISzAlloc *alloc, ISzAlloc *allocBig); #endif gaviotatb-0.4.orig/compression/lzma/Bra.h0000755000175000017500000000354211536321052017532 0ustar varunvarun/* Bra.h -- Branch converters for executables 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __BRA_H #define __BRA_H #include "Types.h" /* These functions convert relative addresses to absolute addresses in CALL instructions to increase the compression ratio. In: data - data buffer size - size of data ip - current virtual Instruction Pinter (IP) value state - state variable for x86 converter encoding - 0 (for decoding), 1 (for encoding) Out: state - state variable for x86 converter Returns: The number of processed bytes. If you call these functions with multiple calls, you must start next call with first byte after block of processed bytes. Type Endian Alignment LookAhead x86 little 1 4 ARMT little 2 2 ARM little 4 0 PPC big 4 0 SPARC big 4 0 IA64 little 16 0 size must be >= Alignment + LookAhead, if it's not last block. If (size < Alignment + LookAhead), converter returns 0. Example: UInt32 ip = 0; for () { ; size must be >= Alignment + LookAhead, if it's not last block SizeT processed = Convert(data, size, ip, 1); data += processed; size -= processed; ip += processed; } */ #define x86_Convert_Init(state) { state = 0; } SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int encoding); SizeT ARM_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); SizeT ARMT_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); SizeT PPC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); SizeT SPARC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding); #endif gaviotatb-0.4.orig/compression/lzma/Lzma86Dec.h0000755000175000017500000000202511536321052020516 0ustar varunvarun/* Lzma86Dec.h -- LZMA + x86 (BCJ) Filter Decoder 2008-08-05 Igor Pavlov Public domain */ #ifndef __LZMA86DEC_H #define __LZMA86DEC_H #include "Types.h" /* Lzma86_GetUnpackSize: In: src - input data srcLen - input data size Out: unpackSize - size of uncompressed stream Return code: SZ_OK - OK SZ_ERROR_INPUT_EOF - Error in headers */ SRes Lzma86_GetUnpackSize(const Byte *src, SizeT srcLen, UInt64 *unpackSize); /* Lzma86_Decode: In: dest - output data destLen - output data size src - input data srcLen - input data size Out: destLen - processed output size srcLen - processed input size Return code: SZ_OK - OK SZ_ERROR_DATA - Data error SZ_ERROR_MEM - Memory allocation error SZ_ERROR_UNSUPPORTED - unsupported file SZ_ERROR_INPUT_EOF - it needs more bytes in input buffer */ SRes Lzma86_Decode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen); #endif gaviotatb-0.4.orig/compression/lzma/Types.h0000755000175000017500000001160511536321052020131 0ustar varunvarun/* Types.h -- Basic types 2008-11-23 : Igor Pavlov : Public domain */ #ifndef __7Z_TYPES_H #define __7Z_TYPES_H #include #ifdef _WIN32 #include #endif #define SZ_OK 0 #define SZ_ERROR_DATA 1 #define SZ_ERROR_MEM 2 #define SZ_ERROR_CRC 3 #define SZ_ERROR_UNSUPPORTED 4 #define SZ_ERROR_PARAM 5 #define SZ_ERROR_INPUT_EOF 6 #define SZ_ERROR_OUTPUT_EOF 7 #define SZ_ERROR_READ 8 #define SZ_ERROR_WRITE 9 #define SZ_ERROR_PROGRESS 10 #define SZ_ERROR_FAIL 11 #define SZ_ERROR_THREAD 12 #define SZ_ERROR_ARCHIVE 16 #define SZ_ERROR_NO_ARCHIVE 17 typedef int SRes; #ifdef _WIN32 typedef DWORD WRes; #else typedef int WRes; #endif #ifndef RINOK #define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } #endif typedef unsigned char Byte; typedef short Int16; typedef unsigned short UInt16; #ifdef _LZMA_UINT32_IS_ULONG typedef long Int32; typedef unsigned long UInt32; #else typedef int Int32; typedef unsigned int UInt32; #endif #ifdef _SZ_NO_INT_64 /* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. NOTES: Some code will work incorrectly in that case! */ typedef long Int64; typedef unsigned long UInt64; #else #if defined(_MSC_VER) || defined(__BORLANDC__) typedef __int64 Int64; typedef unsigned __int64 UInt64; #else typedef long long int Int64; typedef unsigned long long int UInt64; #endif #endif #ifdef _LZMA_NO_SYSTEM_SIZE_T typedef UInt32 SizeT; #else typedef size_t SizeT; #endif typedef int Bool; #define True 1 #define False 0 #ifdef _MSC_VER #if _MSC_VER >= 1300 #define MY_NO_INLINE __declspec(noinline) #else #define MY_NO_INLINE #endif #define MY_CDECL __cdecl #define MY_STD_CALL __stdcall #define MY_FAST_CALL MY_NO_INLINE __fastcall #else #define MY_CDECL #define MY_STD_CALL #define MY_FAST_CALL #endif /* The following interfaces use first parameter as pointer to structure */ typedef struct ISeqInStream { SRes (*Read)(void *p, void *buf, size_t *size); /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. (output(*size) < input(*size)) is allowed */ } ISeqInStream; /* it can return SZ_ERROR_INPUT_EOF */ SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size); SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType); SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf); typedef struct ISeqOutStream { size_t (*Write)(void *p, const void *buf, size_t size); /* Returns: result - the number of actually written bytes. (result < size) means error */ } ISeqOutStream; typedef enum ESzSeek { SZ_SEEK_SET = 0, SZ_SEEK_CUR = 1, SZ_SEEK_END = 2 } ESzSeek; typedef struct ISeekInStream { SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); } ISeekInStream; typedef struct ILookInStream { SRes (*Look)(void *p, void **buf, size_t *size); /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. (output(*size) > input(*size)) is not allowed (output(*size) < input(*size)) is allowed */ SRes (*Skip)(void *p, size_t offset); /* offset must be <= output(*size) of Look */ SRes (*Read)(void *p, void *buf, size_t *size); /* reads directly (without buffer). It's same as ISeqInStream::Read */ SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); } ILookInStream; SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size); SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset); /* reads via ILookInStream::Read */ SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType); SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size); #define LookToRead_BUF_SIZE (1 << 14) typedef struct CLookToRead { ILookInStream s; ISeekInStream *realStream; size_t pos; size_t size; Byte buf[LookToRead_BUF_SIZE]; } CLookToRead; void LookToRead_CreateVTable(CLookToRead *p, int lookahead); void LookToRead_Init(CLookToRead *p); typedef struct CSecToLook { ISeqInStream s; ILookInStream *realStream; } CSecToLook; void SecToLook_CreateVTable(CSecToLook *p); typedef struct CSecToRead { ISeqInStream s; ILookInStream *realStream; } CSecToRead; void SecToRead_CreateVTable(CSecToRead *p); typedef struct ICompressProgress { SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize); /* Returns: result. (result != SZ_OK) means break. Value (UInt64)(Int64)-1 for size means unknown value. */ } ICompressProgress; typedef struct ISzAlloc { void *(*Alloc)(void *p, size_t size); void (*Free)(void *p, void *address); /* address can be 0 */ } ISzAlloc; #define IAlloc_Alloc(p, size) (p)->Alloc((p), size) #define IAlloc_Free(p, a) (p)->Free((p), a) #endif gaviotatb-0.4.orig/compression/lzma/LzHash.h0000755000175000017500000000374011536321052020217 0ustar varunvarun/* LzHash.h -- HASH functions for LZ algorithms 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZHASH_H #define __LZHASH_H #define kHash2Size (1 << 10) #define kHash3Size (1 << 16) #define kHash4Size (1 << 20) #define kFix3HashSize (kHash2Size) #define kFix4HashSize (kHash2Size + kHash3Size) #define kFix5HashSize (kHash2Size + kHash3Size + kHash4Size) #define HASH2_CALC hashValue = cur[0] | ((UInt32)cur[1] << 8); #define HASH3_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hashValue = (temp ^ ((UInt32)cur[2] << 8)) & p->hashMask; } #define HASH4_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); \ hashValue = (temp ^ ((UInt32)cur[2] << 8) ^ (p->crc[cur[3]] << 5)) & p->hashMask; } #define HASH5_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); \ hash4Value = (temp ^ ((UInt32)cur[2] << 8) ^ (p->crc[cur[3]] << 5)); \ hashValue = (hash4Value ^ (p->crc[cur[4]] << 3)) & p->hashMask; \ hash4Value &= (kHash4Size - 1); } /* #define HASH_ZIP_CALC hashValue = ((cur[0] | ((UInt32)cur[1] << 8)) ^ p->crc[cur[2]]) & 0xFFFF; */ #define HASH_ZIP_CALC hashValue = ((cur[2] | ((UInt32)cur[0] << 8)) ^ p->crc[cur[1]]) & 0xFFFF; #define MT_HASH2_CALC \ hash2Value = (p->crc[cur[0]] ^ cur[1]) & (kHash2Size - 1); #define MT_HASH3_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); } #define MT_HASH4_CALC { \ UInt32 temp = p->crc[cur[0]] ^ cur[1]; \ hash2Value = temp & (kHash2Size - 1); \ hash3Value = (temp ^ ((UInt32)cur[2] << 8)) & (kHash3Size - 1); \ hash4Value = (temp ^ ((UInt32)cur[2] << 8) ^ (p->crc[cur[3]] << 5)) & (kHash4Size - 1); } #endif gaviotatb-0.4.orig/compression/lzma/LzmaDec.h0000755000175000017500000001561611536321052020352 0ustar varunvarun/* LzmaDec.h -- LZMA Decoder 2008-10-04 : Igor Pavlov : Public domain */ #ifndef __LZMADEC_H #define __LZMADEC_H #include "Types.h" /* #define _LZMA_PROB32 */ /* _LZMA_PROB32 can increase the speed on some CPUs, but memory usage for CLzmaDec::probs will be doubled in that case */ #ifdef _LZMA_PROB32 #define CLzmaProb UInt32 #else #define CLzmaProb UInt16 #endif /* ---------- LZMA Properties ---------- */ #define LZMA_PROPS_SIZE 5 typedef struct _CLzmaProps { unsigned lc, lp, pb; UInt32 dicSize; } CLzmaProps; /* LzmaProps_Decode - decodes properties Returns: SZ_OK SZ_ERROR_UNSUPPORTED - Unsupported properties */ SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size); /* ---------- LZMA Decoder state ---------- */ /* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case. Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */ #define LZMA_REQUIRED_INPUT_MAX 20 typedef struct CLzmaDec { CLzmaProps prop; CLzmaProb *probs; Byte *dic; const Byte *buf; UInt32 range, code; SizeT dicPos; SizeT dicBufSize; UInt32 processedPos; UInt32 checkDicSize; unsigned state; UInt32 reps[4]; unsigned remainLen; int needFlush; int needInitState; UInt32 numProbs; unsigned tempBufSize; Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; } CLzmaDec; #define LzmaDec_Construct(p) { (p)->dic = 0; (p)->probs = 0; } void LzmaDec_Init(CLzmaDec *p); /* There are two types of LZMA streams: 0) Stream with end mark. That end mark adds about 6 bytes to compressed size. 1) Stream without end mark. You must know exact uncompressed size to decompress such stream. */ typedef enum ELzmaFinishMode { LZMA_FINISH_ANY, /* finish at any point */ LZMA_FINISH_END /* block must be finished at the end */ } ELzmaFinishMode; /* ELzmaFinishMode has meaning only if the decoding reaches output limit !!! You must use LZMA_FINISH_END, when you know that current output buffer covers last bytes of block. In other cases you must use LZMA_FINISH_ANY. If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK, and output value of destLen will be less than output buffer size limit. You can check status result also. You can use multiple checks to test data integrity after full decompression: 1) Check Result and "status" variable. 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. You must use correct finish mode in that case. */ typedef enum ELzmaStatus { LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */ LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */ LZMA_STATUS_NOT_FINISHED, /* stream was not finished */ LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */ LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */ } ELzmaStatus; /* ELzmaStatus is used only as output value for function call */ /* ---------- Interfaces ---------- */ /* There are 3 levels of interfaces: 1) Dictionary Interface 2) Buffer Interface 3) One Call Interface You can select any of these interfaces, but don't mix functions from different groups for same object. */ /* There are two variants to allocate state for Dictionary Interface: 1) LzmaDec_Allocate / LzmaDec_Free 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs You can use variant 2, if you set dictionary buffer manually. For Buffer Interface you must always use variant 1. LzmaDec_Allocate* can return: SZ_OK SZ_ERROR_MEM - Memory allocation error SZ_ERROR_UNSUPPORTED - Unsupported properties */ SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc); void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc); SRes LzmaDec_Allocate(CLzmaDec *state, const Byte *prop, unsigned propsSize, ISzAlloc *alloc); void LzmaDec_Free(CLzmaDec *state, ISzAlloc *alloc); /* ---------- Dictionary Interface ---------- */ /* You can use it, if you want to eliminate the overhead for data copying from dictionary to some other external buffer. You must work with CLzmaDec variables directly in this interface. STEPS: LzmaDec_Constr() LzmaDec_Allocate() for (each new stream) { LzmaDec_Init() while (it needs more decompression) { LzmaDec_DecodeToDic() use data from CLzmaDec::dic and update CLzmaDec::dicPos } } LzmaDec_Free() */ /* LzmaDec_DecodeToDic The decoding to internal dictionary buffer (CLzmaDec::dic). You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!! finishMode: It has meaning only if the decoding reaches output limit (dicLimit). LZMA_FINISH_ANY - Decode just dicLimit bytes. LZMA_FINISH_END - Stream must be finished after dicLimit. Returns: SZ_OK status: LZMA_STATUS_FINISHED_WITH_MARK LZMA_STATUS_NOT_FINISHED LZMA_STATUS_NEEDS_MORE_INPUT LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK SZ_ERROR_DATA - Data error */ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); /* ---------- Buffer Interface ---------- */ /* It's zlib-like interface. See LzmaDec_DecodeToDic description for information about STEPS and return results, but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need to work with CLzmaDec variables manually. finishMode: It has meaning only if the decoding reaches output limit (*destLen). LZMA_FINISH_ANY - Decode just destLen bytes. LZMA_FINISH_END - Stream must be finished after (*destLen). */ SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status); /* ---------- One Call Interface ---------- */ /* LzmaDecode finishMode: It has meaning only if the decoding reaches output limit (*destLen). LZMA_FINISH_ANY - Decode just destLen bytes. LZMA_FINISH_END - Stream must be finished after (*destLen). Returns: SZ_OK status: LZMA_STATUS_FINISHED_WITH_MARK LZMA_STATUS_NOT_FINISHED LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK SZ_ERROR_DATA - Data error SZ_ERROR_MEM - Memory allocation error SZ_ERROR_UNSUPPORTED - Unsupported properties SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). */ SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAlloc *alloc); #endif gaviotatb-0.4.orig/compression/wrap.h0000644000175000017500000000553411536321052017034 0ustar varunvarun/* wrap.h */ /* X11 License: Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #if !defined(H_WRAP) #define H_WRAP /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ #include extern int zlib_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int zlib_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int lzf_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int lzf_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int lzma_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int lzma_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); #if defined (LIBBZIP2) extern int bzip2_encode(const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int bzip2_decode(const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); #endif extern int rle_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int rle_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int justcopy_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int justcopy_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ #endif gaviotatb-0.4.orig/compression/wrap.c0000644000175000017500000002000311536321052017013 0ustar varunvarun/* wrap.c */ /* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "wrap.h" #define LZMA86 #define ZLIB #define HUFFMAN #define LIBLZF /*#define LIBBZIP2*/ #if defined(LZMA86) #include "Lzma86Enc.h" #include "Lzma86Dec.h" #endif #if defined(ZLIB) #include "zlib.h" #endif #if defined(HUFFMAN) #include "hzip.h" #endif #if defined(LIBLZF) #include "lzf.h" #endif #if defined(LIBBZIP2) #include "bzlib.h" #endif #if !defined(NDEBUG) #define NDEBUG #endif #ifdef DEBUG #undef NDEBUG #endif #include "assert.h" /* external, so the compiler can be silenced */ size_t TB_DUMMY_unused; /***********************************************************************************************************/ extern int zlib_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { enum COMPRESSION_LEVELS {ZLIB_MAXIMUM_COMPRESSION = 9}; int outcome; unsigned long zz = (unsigned long)out_max; outcome = compress2 (out_start, &zz, in_start, in_len, ZLIB_MAXIMUM_COMPRESSION); *pout_len = (size_t) zz; return outcome == Z_OK; } extern int zlib_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { int outcome; unsigned long nn = (unsigned long) out_max /* *pout_len */; outcome = uncompress (out_start, &nn, in_start, (unsigned long)in_len); *pout_len = (size_t)nn; return outcome == Z_OK; } /***********************************************************************************************************/ extern int lzf_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { size_t x = lzf_compress (in_start, (unsigned)in_len, out_start, (unsigned)(in_len-1) /* ensures best compression */); TB_DUMMY_unused = out_max; if (x != 0) *pout_len = (size_t) x; return x != 0; } extern int lzf_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { *pout_len = (size_t)lzf_decompress (in_start, (unsigned)in_len, out_start, (unsigned)out_max); return *pout_len != 0; } /***********************************************************************************************************/ extern int lzma_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { int level = 5; /* 5 => default compression level */ unsigned int memory = 4096; /* dictionary size */ int filter = SZ_FILTER_NO; /* => 0, use LZMA, do not try to optimize with x86 filter */ size_t zz = out_max; /* maximum memory allowed, receives back the actual size */ int x = Lzma86_Encode(out_start, &zz, in_start, in_len, level, memory, filter); *pout_len = zz; return x == 0; } extern int lzma_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { size_t nn = out_max; int x = Lzma86_Decode(out_start, &nn, in_start, &in_len); *pout_len = nn; return x == SZ_OK; } /***********************************************************************************************************/ #if defined (LIBBZIP2) extern int bzip2_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { int blockSize100k = 9; int verbosity = 0; int workFactor = 30; size_t destlen = out_max; int x = BZ2_bzBuffToBuffCompress( (char*)out_start, &destlen, (char*)in_start, in_len, blockSize100k, verbosity, workFactor); *pout_len = destlen; return x == BZ_OK; } extern int bzip2_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { int small = 1; int verbosity = 0; size_t destlen = n; int x = BZ2_bzBuffToBuffDecompress( (char*)out_start, &destlen, (char*)in_start, in_len, small, verbosity); *pout_len = destlen; return x == BZ_OK; } #endif /***********************************************************************************************************/ extern int justcopy_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { size_t i; const unsigned char *in = in_start; unsigned char *out = out_start; if (in_len > out_max) return 0; for (i = 0; i < in_len; i++) { *out++ = *in++; } *pout_len = in_len; return 1; } extern int justcopy_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { size_t i; const unsigned char *in = in_start; unsigned char *out = out_start; if (in_len > out_max) return 0; for (i = 0; i < in_len; i++) { *out++ = *in++; } *pout_len = in_len; return 1; } /***********************************************************************************************************/ #define RLE_ESC 253 #define RLE_TER 254 #define RLE_MAX 252 #define TRUE 1 #define FALSE 0 extern int rle_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { const unsigned char *p; const unsigned char *in = in_start; const unsigned char *in_end = in + in_len; unsigned char *out = out_start; int ok = TRUE; int ch; ptrdiff_t out_len; while (in < in_end) { if (*in == RLE_ESC) { *out++ = RLE_ESC; *out++ = RLE_ESC; in++; } else { ch = *in; if ( (in_end-in) >= 3 /* enough space for a run */ && ch == in[1] && ch == in[2] && ch == in[3] /* enough length */) { p = in; while (p < in_end && *p == ch && (p-in) < RLE_MAX) { p++; } *out++ = RLE_ESC; assert (RLE_MAX < 256); *out++ = (unsigned char)(p - in); *out++ = (unsigned char)ch; in = p; } else { *out++ = *in++; } } } if (ok) { /* *out++ = RLE_ESC; *out++ = RLE_TER; */ out_len = out - out_start; *pout_len = (size_t)out_len; ok = (size_t)out_len <= out_max; } return ok; } extern int rle_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { const unsigned char *in = in_start; const unsigned char *in_end = in + in_len; unsigned char *out = out_start; unsigned char *out_end = out + *pout_len; int ok = TRUE; int ch; int n; ptrdiff_t out_len; while (in < in_end) { if (in >= in_end) { ok = FALSE; break;} if (out >= out_end) { ok = FALSE; break;} if (*in == RLE_ESC) { ++in; if (in >= in_end) { ok = FALSE; break;} if (*in == RLE_ESC) { *out++ = *in++; } /*else if (*in == RLE_TER) {ok = TRUE;break;} */ else { /* rle */ n = *in++; if (in >= in_end) { ok = FALSE; break;} ch = *in++; while (n-->0) { if (out >= out_end) { ok = FALSE; break;} *out++ = (unsigned char)ch; } } } else { *out++ = *in++; } } out_len = out - out_start; if (ok) *pout_len = (size_t)out_len; ok = ok && (out_max >= (size_t)out_len); return ok; } gaviotatb-0.4.orig/compression/huffman/0000755000175000017500000000000011536321052017327 5ustar varunvarungaviotatb-0.4.orig/compression/huffman/hzip.h0000644000175000017500000000341311536321052020453 0ustar varunvarun/* hzip.h */ /* | Routines designed to be used as a pilot experiment for compression | of tablebases. Not really optimized, but they are supposed to work | --Miguel A. Ballicora */ /* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #if !defined(H_HZIP) #define H_HZIP /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ #include extern int huff_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); extern int huff_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max); /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ #endif gaviotatb-0.4.orig/compression/huffman/hzip.c0000644000175000017500000004407611536321052020460 0ustar varunvarun/* hzip.c */ /* | Routines designed to be used as a pilot experiment for compression | of tablebases. Not really optimized, but they are supposed to work | --Miguel A. Ballicora */ /* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "hzip.h" /*-------------------------------------------------------------------*\ | | Huffman coding compression | \*-------------------------------------------------------------------*/ #include #include #include #include #define MAXDIVERSITY (256) #define MAXHEAP (MAXDIVERSITY+1) #define MAXSTREAM (1<<18) #define MAXHUFF (2*MAXDIVERSITY) typedef int bool_t; #define TRUE 1 #define FALSE 0; /* huffman tree */ struct huff { int freq; int value; int pleft; int pright; bool_t isleaf; }; static int huff_end; static struct huff hufftree[MAXHUFF]; /* heap */ struct element { int freq; int huffidx; }; static int heap_end; static struct element heap[MAXHEAP]; unsigned char streambuffer[MAXSTREAM]; /* stream */ struct STREAM { unsigned long pbit; unsigned char *x; }; typedef struct STREAM stream_t; /* read only */ struct RO_STREAM { unsigned long pbit; const unsigned char *x; }; typedef struct RO_STREAM ro_stream_t; /* | | VARIABLES | \*---------------------------*/ static int freq[MAXDIVERSITY]; static unsigned code_table[MAXDIVERSITY]; static unsigned size_table[MAXDIVERSITY]; static stream_t Stream = {0, NULL}; static ro_stream_t RO_Stream = {0, NULL}; static const unsigned int VALUEBITS = 8u; /*==== PROTOTYPES======================================*/ /* heap */ static void freq_init (const unsigned char *in, size_t max); static void heap_init (void); static void heap_append (struct element e); static void heap_sift_up (int x); static void heap_adjust_down (int top, int last); /* hufftree */ static int hufftree_from_freq (void); static int hufftree_from_heap (void); static void hufftree_to_codes (int start, int n, unsigned code); static void hufftree_reset (void); static int hufftree_frombits (ro_stream_t *stream, bool_t *pok); static void hufftree_tobits (int thisnode, stream_t *stream); static unsigned int hufftree_readstream (int root, ro_stream_t *s); /* stream */ /* read only */ static void ro_stream_rewind (ro_stream_t *s); static void ro_stream_init (ro_stream_t *s, const unsigned char *buffer); static void ro_stream_done (ro_stream_t *s); /* read and write */ static void stream_clear (stream_t *s); static void stream_init (stream_t *s, unsigned char *buffer); static void stream_done (stream_t *s); static size_t stream_len (stream_t *s); static void stream_rewind (stream_t *s); static unsigned int stream_nextbit (ro_stream_t *s); static unsigned int stream_nextbit_n (ro_stream_t *s, unsigned int width); static void stream_writebit (stream_t *s, unsigned z); static void stream_write_n (unsigned code, unsigned width, stream_t *s); static bool_t decode_from_stream (ro_stream_t *stream, size_t n, unsigned char *out); static void encode_to_stream (const unsigned char *in, size_t inlen, stream_t *stream); /*static unsigned int stream_next8 (stream_t *s);*/ /*static void stream_write8 (stream_t *s, unsigned z);*/ /* supporting functions */ /* static void heap_plot (void); static int fill_block(unsigned char *out); static char *binstream(unsigned int x, int n); static void stream_print(stream_t *s, int n); static void stream_printnext (stream_t *s, int n); static void stream_dump (stream_t *s, int ori, int n); static void freq_report (void); */ /*=== ENCODE/DECODE=================================================*/ size_t TB_hzip_unused; static int huffman_decode (size_t z, const unsigned char *bz, size_t n, unsigned char *bp) /* bz:buffer huffman zipped to bp:buffer decoded */ { bool_t ok; TB_hzip_unused = z; /* to silence compiler */ ro_stream_init (&RO_Stream, bz); ok = decode_from_stream (&RO_Stream, n, bp); ro_stream_done (&RO_Stream); return ok; } static int huffman_encode (size_t n, const unsigned char *bp, size_t *z, unsigned char *bz) /* bz:buffer huffman zipped to bp:buffer decoded */ { size_t i, zz; stream_init (&Stream, streambuffer); encode_to_stream (bp, n, &Stream); zz = stream_len (&Stream); for (i = 0; i < zz; i++) { bz[i] = Stream.x[i]; } *z = zz; stream_done (&Stream); return TRUE; } extern int huff_decode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { size_t n = (size_t)in_start[0] | ((size_t)in_start[1] << 8) | ((size_t)in_start[2] << 16) | ((size_t)in_start[3] << 24); TB_hzip_unused = out_max; *pout_len = n; return huffman_decode (in_len-4, in_start+4, n, out_start); } extern int huff_encode (const unsigned char *in_start, size_t in_len, unsigned char *out_start, size_t *pout_len, size_t out_max) { bool_t ok; size_t hlen = 0; TB_hzip_unused = out_max; out_start[0] = (unsigned char) ((in_len ) & 0xffu); out_start[1] = (unsigned char) ((in_len >> 8) & 0xffu); out_start[2] = (unsigned char) ((in_len >> 16) & 0xffu); out_start[3] = (unsigned char) ((in_len >> 24) & 0xffu); ok = huffman_encode (in_len, in_start, &hlen, out_start+4); *pout_len = hlen + 4; return ok; } static bool_t decode_from_stream (ro_stream_t *s, size_t n, unsigned char *out) { int root; bool_t ok = TRUE; /* default */ hufftree_reset (); ro_stream_rewind (s); root = hufftree_frombits (s, &ok); if (ok) { while (n-->0) { *out++ = (unsigned char) hufftree_readstream (root, s); /* cast to silence compiler */ } } return ok; } static void encode_to_stream (const unsigned char *in, size_t inlen, stream_t *stream) { size_t i; unsigned x, c, s; int root; stream_clear (&Stream); stream_rewind(&Stream); /* pass to collect frequencies */ freq_init (in, inlen); /* frequency --> heap --> hufftrees */ root = hufftree_from_freq(); /* hufftree --> codes */ hufftree_to_codes (root, 0, 0); /* hufftrees --> stored in bits (stream) */ hufftree_tobits (root, stream) ; /* input + codes --> stored in bits (stream) */ for (i = 0; i < inlen; i++) { x = in[i]; c = code_table[x]; s = size_table[x]; stream_write_n (c, s, stream); } return; } /*=== STREAM =================================================*/ /* static char buffer[256]; */ /* static char * binstream(unsigned int x, int n) { char *s = buffer; int i; for (i = 0; i < n; i++) { if (0!=(x&(1<pbit = 0; return;} static void ro_stream_init (ro_stream_t *s, const unsigned char *buffer) { s->x = buffer; s->pbit = 0; return; } static void ro_stream_done (ro_stream_t *s) { s->x = NULL; s->pbit = 0; return; } /* READ AND WRITE */ static void stream_rewind (stream_t *s) {s->pbit = 0; return;} static void stream_init (stream_t *s, unsigned char *buffer) { s->x = buffer; s->pbit = 0; return; } static void stream_done (stream_t *s) { s->x = NULL; s->pbit = 0; return; } static void stream_clear (stream_t *s) { int i; for (i = 0; i < MAXSTREAM; i++) { s->x[i] = 0; } s->pbit = 0; return; } static size_t stream_len (stream_t *s) { return 1 + s->pbit/8; } static unsigned int stream_nextbit (ro_stream_t *s) { unsigned long y, byte, bit; y = s->pbit++; byte = y / 8; bit = y & 7; return 1u & (((unsigned)s->x[byte]) >> bit); } static unsigned int stream_nextbit_n (ro_stream_t *s, unsigned int width) { unsigned i; unsigned x; unsigned r = 0; for (i = 0; i < width; i++) { x = stream_nextbit (s); r |= (x << i); } return r; } /* static unsigned int stream_next8 (stream_t *s) { unsigned a,b,y,byte,bit; y = s->pbit; s->pbit += 8; byte = y / 8; bit = y & 7; a = 0xff & s->x[byte]; b = 0xff & s->x[byte+1]; return 0xff & ((a >> bit) | (b << (8-bit))); } */ #if 1 static void stream_writebit (stream_t *s, unsigned z) { unsigned long y,byte,bit; y = s->pbit++; byte = y / 8; bit = y & 7; /* s->x[byte] &= ~(1u << bit);*/ s->x[byte] = (unsigned char) (s->x[byte] | ((z&1u) << bit)); /* cast to silence compiler */ return; } #else static void stream_writebit (stream_t *s, unsigned z) { /* This function will write the next bit, 0 or 1 depending on z, and will clear | the following bits (when bit == 0) or some future bytes | Do not use for writing after random access | It is only useful when this function is use for sequential writing on a | empty buffer. */ unsigned long y, byte, bit; unsigned char *p; y = s->pbit++; byte = y / 8; bit = y & 7; p = &(s->x[byte]); /* hack to clear the byte only when bit == 0, otherwise, it clears future bytes | This will avoid clearing the whole buffer beforehand or doing | *p &= (unsigned char)(~(1u << bit)); */ p[bit] = 0; *p |= (unsigned char)(z&1u) << bit); return; } #endif /* static void stream_write8 (stream_t *s, unsigned z) { unsigned a,b,c,y,byte,bit; y = s->pbit; s->pbit += 8; byte = y / 8; bit = y & 7; a = 0xff & s->x[byte]; b = 0xff & s->x[byte+1]; c = a | (b << 8); c &= ~(0xff << bit); c |= z << bit; s->x[byte] = c & 0xff; s->x[byte+1] = 0xff & (c >> 8); return; } */ static void stream_write_n (unsigned code, unsigned width, stream_t *s) { unsigned i; for (i = 0; i < width; i++) { stream_writebit (s, 1u & (code >> i)); } return; } /* static void stream_printnext (stream_t *s, int n) { int i; unsigned int x; unsigned long int oldpos = s->pbit; printf("\n"); for (i = 0; i < n; i++) { if ((i & 7) == 0) printf ("\n"); x = stream_next8 (s); printf ("%s ", binstream(x,8) ); } printf("\n"); s->pbit = oldpos; return; } */ /* static void stream_dump (stream_t *s, int ori, int n) { int i; unsigned int x; unsigned long int oldpos = s->pbit; s->pbit = ori; printf("\n"); for (i = 0; i < n; i++) { if ((i & 7) == 0) printf ("\n"); x = stream_next8 (s); printf ("%s ", binstream(x,8) ); } printf("\n"); s->pbit = oldpos; return; } */ /*=== HUFFTREE=================================================*/ #define LEFTCODE 0u #define RIGHTCODE 1u #define BITLEAF 1 #define BITNODE 0 static void hufftree_reset (void) { struct huff h; int i; for (i = 0; i < 2*MAXDIVERSITY; i++) { h.isleaf = FALSE; h.value = 0; h.freq = 0; h.pleft = 0; h.pright = 0; hufftree[i] = h; } huff_end = 0; } static int hufftree_from_heap (void) { int top, newidx /*, left, right, lesser */ ; struct huff h; for (;;) { if (heap_end == 2) { /* at least top element */ /* done */ break; } /* work at the top */ top = 1; /* left = 2*top; right = left + 1; lesser = left; if (right < heap_end && (heap[right].freq < heap[left].freq)) lesser = right; */ /* new huff node */ newidx = huff_end++; h.isleaf = FALSE; h.value = -1; h.freq = heap[top].freq; /* will be incremented later when in 'combine' */ h.pleft = heap[top].huffidx; h.pright = -1; /* will be attached the next element */ #ifdef TRACE printf ("\n\nBefore Eliminate Top\n"); heap_plot(); #endif /* eliminate top */ heap[top] = heap[--heap_end]; /* next 'lesser' element at 'top' */ heap_adjust_down (1, heap_end-1); #ifdef TRACE printf ("\n\nEliminate Top\n"); heap_plot (); #endif /* combine */ h.pright = heap[1].huffidx; h.freq += heap[1].freq; /* combine frequencies */ hufftree[newidx] = h; heap[1].freq = h.freq; heap[1].huffidx = newidx; /* adjust the combined elements */ heap_adjust_down (1, heap_end-1); #ifdef TRACE printf ("\n\nAfter Combine\n"); heap_plot (); #endif } return heap[1].huffidx; } static void hufftree_to_codes (int start, int n, unsigned code) { int x, m; unsigned c; int value; #ifdef TRACK if (n == 0) printf ("\nHufftree to codes\n"); #endif assert (n >= 0); x = hufftree[start].pleft; c = code | (LEFTCODE << n); m = n + 1; /* LEFT */ if (hufftree[x].isleaf) { value = hufftree[x].value; code_table[value] = c; size_table[value] = (unsigned)m; #ifdef TRACK printf ("value=%c:%d, code=%d \"%s\", size=%d\n", value,value, c, binstream(c,m), m); #endif } else { hufftree_to_codes(x, m, c); } /* RIGHT */ x = hufftree[start].pright; c = code | (RIGHTCODE << n); m = n + 1; if (hufftree[x].isleaf) { value = hufftree[x].value; code_table[value] = c; size_table[value] = (unsigned)m; #ifdef TRACK printf ("value=%c:%d, code=%d \"%s\", size=%d\n", value,value, c, binstream(c,m), m); #endif } else { hufftree_to_codes(x, m, c); } return; } static int hufftree_frombits (ro_stream_t *stream, bool_t *pok) { unsigned bit; unsigned value; int thisnode; struct huff h; if (!*pok) return 0; bit = stream_nextbit(stream); if (bit == BITLEAF) { /* leaf */ value = stream_nextbit_n (stream, VALUEBITS); thisnode = huff_end++; h.isleaf = TRUE; h.value = (int)value; h.freq = 0; h.pleft = 0; h.pright = 0; if (thisnode >= MAXHUFF) { *pok = FALSE; return 0; } hufftree[thisnode] = h; #ifdef TRACK printf ("Huff leaf, %d=%c\n", value, value); #endif return thisnode; } else { /* node */ thisnode = huff_end++; if (thisnode >= MAXHUFF) { *pok = FALSE; return 0; } h.isleaf = FALSE; h.value = -1; h.freq = 0; h.pleft = hufftree_frombits (stream, pok); h.pright = hufftree_frombits (stream, pok); hufftree[thisnode] = h; return thisnode; } } static void hufftree_tobits (int thisnode, stream_t *stream) { if (hufftree[thisnode].isleaf) { #ifdef TRACK {int c = hufftree[thisnode].value; printf ("[leaf=1][%c:%d=%s]", c, c, binstream(c,8));} #endif assert (0 <= hufftree[thisnode].value); stream_writebit (stream, BITLEAF); stream_write_n ((unsigned)hufftree[thisnode].value, VALUEBITS, stream); } else { stream_writebit (stream, BITNODE); #ifdef TRACK printf ("[node=0]"); #endif hufftree_tobits (hufftree[thisnode].pleft, stream); hufftree_tobits (hufftree[thisnode].pright, stream); } return; } static unsigned int hufftree_readstream (int root, ro_stream_t *s) { unsigned bit; int next; bit = stream_nextbit(s); if (bit == RIGHTCODE) { /* right */ next = hufftree[root].pright; } else { /*ASSERT (bit == LEFTCODE */ /* left */ next = hufftree[root].pleft; } if (hufftree[next].isleaf) { assert (0 <= hufftree[next].value); return (unsigned)hufftree[next].value; } else { return hufftree_readstream (next, s); } } /*==== HEAP ==========================================*/ static void heap_init (void) { heap_end = 1; return; } static void heap_append (struct element e) { /*ASSERT (heap_end < MAXHEAP);*/ heap[heap_end++] = e; return; } static void heap_sift_up (int x) { struct element t; int p; int c = x; while (c > 1) { p = c / 2; if (heap[c].freq < heap[p].freq) { t = heap[c]; heap[c] = heap[p]; heap[p] = t; } else { break; } c = p; } return; } static void heap_adjust_down (int top, int last) { struct element t; int p; int c; int left, right; if (last == top) { /* at least top element */ /* done */ return; } /* starts at the top */ p = top; while (p <= last) { left = 2*p; right = left + 1; if (left > last) break; if (right <= last && (heap[right].freq < heap[left].freq)) c = right; else c = left; if (c > last) break; if (heap[c].freq < heap[p].freq) { t = heap[c]; heap[c] = heap[p]; heap[p] = t; } else { break; } p = c; } return; } /* static void heap_plot (void) { unsigned int line, limit, j; int n = heap_end; printf("===========================\n"); line = 1; j = 1; while (j < n) { limit = 1 << line; while (j < limit && j < n) { printf("%3d:%c ",heap[j].freq, hufftree[heap[j].huffidx].value); j++; } while (j < limit) { printf("%3s ","--"); j++; } line++; printf("\n"); } printf("===========================\n"); return; } */ /* static void freq_report (void) { int i; printf ("\nFREQUENCIES\n"); for (i = 0; i < MAXDIVERSITY; i++) { if (freq[i] > 0) { printf ("%c: %2d: %d: %d\n", i, i, freq[i], code_table[i]); } } printf ("\n"); return; } */ static void freq_init (const unsigned char *in, size_t max) { size_t i; /* clean up frequencies */ for (i = 0; i < MAXDIVERSITY; i++) { freq [i] = 0; code_table[i] = 0; size_table[i] = 0; } /* build frequencies */ for (i = 0; i < max; i++) { freq [in[i]]++; } #ifdef TRACK freq_report(); #endif return; } static int hufftree_from_freq (void) { int i; struct huff h; struct element e; int root; hufftree_reset (); /* build huff tree elements */ huff_end = 0; for (i = 0; i < MAXDIVERSITY; i++) { if (freq[i] > 0) { h.isleaf = TRUE; h.value = i; h.freq = freq[i]; h.pleft = 0; h.pright = 0; hufftree[huff_end++] = h; } } /* build heap */ heap_init(); for (i = 0; i < huff_end; i++) { e.freq = hufftree[i].freq; e.huffidx = i; heap_append(e); heap_sift_up(heap_end-1); } #ifdef TRACE heap_plot (); #endif root = hufftree_from_heap(); /*hufftree_to_codes (root, 0, 0);*/ return root; } gaviotatb-0.4.orig/gtb/0000755000175000017500000000000011536321052014116 5ustar varunvarungaviotatb-0.4.orig/gtb/gtb2/0000755000175000017500000000000011536321052014754 5ustar varunvarungaviotatb-0.4.orig/gtb/gtb2/kqk.gtb.cp20000644000175000017500000006331511536321052016733 0ustar varunvarun@€3€3<<õ2ˆNÍf@  @  €@@@` € 6     @   ` `@@` ` `  @ € `@@` € 6`    @@ `@@` € 6€   € `@@` € 6à  @@ `@@` €à= !NÁY €@@@` €€ aRá,` !»!·![@!_` `@@` €Á@! 1!Y!V!Xá% ! ;!Y!F!<á-!†avA_`Ag@@@` €á!M !Y"—!G  àà - /"Ò"×"ó  ` `@@` à !} 7!D!FA_@@`ao ` €á !AAFá. 7a á-!Y!V!Wá(á?!!! @` `ààá?@! `!-  @` € #à"¿ a? b¿G@@  @ €ä? B¿ !;@? ä%?Á?BŸAH V €`@   àà ÿ Î`ç@ ïà àà ÿ @ç ` ö€ @ à= ¨   ó@ ÷`     € ` àe?àÿ`ç ÿ ^@ @ € àà¿@—A· ` ààà¿ —`¿À·À àà¿€¯ ¶€· `Ç àà p@‡ € àà w 4àà$? G@H#¹    @  €@@@` €@7"º"—€F  @  `%``@ @€@7 !Ï E!ÖãÀ  `@@@` €Á?@È !\!Z&~@ €@@ õ€ a/ à ,@7! € à@  €à>F7F  &H`@@` €% @ 6À !@Á! `á?``+? " àBu@A@@à "• !@!€ à@@@€à? !!á+?'½'¿GÀ'»'Æ@Gp  @ `@@@à = ?  +@  à@  ;@à> $  W@g b @À@@ @€è?€!ÄAÆÁçà 7À -ÿ!É!Ç``á ÿ@C!Ê @€ `Aô@ Eæ  À| !ÁAÆ `@ `@  `%@ 7À@ aÿ  "`@@@` ã ?!M&à("!F  !`  ` @ @   'à =à?@3@* ` `     à?€b@Gà 6` 6 à ?  3 € $` ãÿ@!÷!ù  `%U```  àý‚5 aáÿAÒàAô@!ÿ ` 7À`áÙ!Î!Ä@àÀ@@ À< !Ù!ßÃÿ€ @@@` á ÿ@þ 'Ø@Ù ¿ Ê@Î`@ @` ½€à¿ =á ?€3@`4@àà =à ? * `@@ @€ à =à ?` ( @&æ`!n à? #@( õ@)' 8@?@ à #!AÈ '€ àH¢@À à=á ÿ @AÛ@@`cß !æà  !Ù!ß Aä @@@@` á ÿ ½ "¢@¡"‡ › ` €ž@ @€à =à?@`"@À``@`à¾à?@2   "ÿ  7À }à 1`}!. >à#? =`@@ @à$? ,  cÿ ~ À¼   Ù!Å!Ç`€ `@@ !÷!ß` 7À  !Ù!ß Aä @À)m` á ÿ }BY F G b `@@  f @ à =à? !@€ `@@ @à à>à?`@à3@@ !# wÀ ½à¿ @@?`ÁÀ< =à?á? 9@  ~  7À =à? 5`? @À<  !Ù!ßAဠà@@@ã ÿ =  +X@$ @À@@ €?@À =à!? à2?àˆÀ }à$`@À< =à$? Äà5?@@ wÀ }à% =à6?à>FÈHè$Ø&Ü@  $¡ "› f÷@Fú  @6 8 À`@  €@@@` `¤ÿM/ F@!  z`a %.`@ @@ Âÿ-oà?#\ ? 3@ ! @  @   #} á@?#~ r!S!Eˆ@* !&`# @  và*—,* († Ÿ+KaQl@*² 2F` €À<*ïhÁ =    `@@@€Àà?@&@@6 @ÌA'!§!; á? Á?K- 6 ý@! `ÿ!GA6@!6!? !6`  6`@ˆ 6 ! -`á?v–!?á?@ÿ, Ý A @ k÷!? a?  €`| N7®O.¥N]  n¸ @L.z @ €@v`à?` 5  `  <@ ;@`< @`@ ¡ w  # À@@ @€  @ˆ  -! Ý ` `@` `  > 6!à !È !*!"v!2!–` #H  @  6`-- -@2!Á!à a¿!çAö@áÿ`Aÿâ? t u@iaÿC' á!ÿ@£? à !ß@!÷@Õ   @Aÿ`@v`@ÿ!>!5`? . @6!? @ 7@` €`< à? "@- 3 ?@ @ . Àà?€H`;@?  . € z` .  Á!‡ ' Û`@å`@@@`  6`@?  ) !‡@ @ #ÿ€#ÿ@!Û€ áÿ€!ÜA÷!í`!íãÿ@áÿÃÿBCö¥?ãÿ@ÈA×"? ± ˜ @€ @ F@à¿!N à? W@ 0@@€7 9à ? "`)@`@@`@@7 A#  AÈ ~à ? 3 ` €w ` €à?` )@w ! @G@€=€?  !¿!B "!G!$@%í` !÷`B €@H >@?!í#ß @#áAö@ !÷ %ö@G?""€@? v eç ?B%öáÿ@ˆ ~ • G |@L-"  @  `€€} ;@ à? (@5 „` € 6`à?    &`@@ !5€€`< à?@@  @@ß :`à? `#\@€`< à? =@€>@ :`@?  !A!ÿ !‚  §@ @ !÷ @@ @? 6 %ÿ !í -@  @ I7`,n @H ~B= C,Ç @,á À % W  € > ¶     ? !à ,7  € 6`à ? 7  `G`< à"? C@à1€@A\  à"R@ @ >à%?!F    @   ŸA@  !* +`@ aÿ  áÿ >`= 6î€ @ ~ v  @`MÞ`@À@@ "@ 6`à(? G`< à*?`€ :`à"?!7@ŽÀ`< à+?@ :`à,? @`< à-?à>%»@ &&£F²#Ê F©     €E@@Bw@ + à?@4`@! ' N '0    @ 5 k@ Of  '  )  * / `   5@KO  à? 6 " @  .`‡€@ D  @  "É 4@ * @ `@ #Tà? 6*J!` l ³ @"@UGÐ  @ Í%À@ 5`H ?*P@HÇ+h (Ö   ` € 5`* é,­ 3A‘@ Q  3 7  `  4``? / @ `Â!& €« (z     `< ž  #  6@ä¡? a?  @ `  5` ñ`ÿ D! — ? S-2 û     O `“@  ,y@A2+‹Aˆ  -£  C   @¡?  5`nI.@@F.¥àn( .o  €@@@.` "@ `  5  @ K@ :@  5`` @ ?@È ?@ *@     €à`  !€ü!,§   @     l`` ">!r ?!Â! E "!Aÿ NÀ@NÀ` `< ` g % `. d @?!,  Ü ö '#Ž` @     5` !2 5!ƒAd !² !k€A !‹€  5`áÿ`?!ö @ @!ö 2!÷ã ÿ`I!œ % @   4  3  @`F`   +à? 4€?  €@@ @?  a !> ]`1 $ 7 ? a@& ñ@ @@ )  > :`!¸`  `@ à Ä@   5`à?€KÀC€wÀ`< `?  % Á µ  b ` s `@!‡à?!c ûÇA¶@ 7`@ z``I ~@#öFÜ@ * @ %÷``ç? «`?  ­ @3 "1 D   @€*À`   à?!i`U /@@`yé  5` ®@ ê`  `` ``7 I` 5`à?@C@+$@ `< à? €`w ?` :`à? @`7`? ˆ`< `?  #!+|  !! ` @!÷€  :`b >à?*^@*r€ 2 € @ `< b`? 2€ < ,²  ,ì@@ `y©  5``I ~ @  `@ `@`7à0? q@wà1?À+}@  à ¿ ? Û !)  >à$?AY`?à-?aJ- E z``¿   _¼  ¢ m `  @7@ !ÿ  ` > 2@  `@ `@ 7 !€ à'? Eà5? y`‡ à(/ à7?!#à5 @ ¾à.¿!ª à#ÿ! ·@ÿ `='5E}À'E (Ç @ *†(a(Ô (i   b}À $`/"“&¦DÙ   $©` @ Fa⇠$î%% -@'B¬ d[@&{  @ q[ À <¿# @'!% ` ` @ ! !Ëà aZ !@'"(``` "¿">`7!!# @  á? @À@@  !!@€á?  `€ `@@  ! æ``@á?AMA@@!&=`6! æ€@ =á(?a á(?A@ ;`!"o @  €@@@``6! "ª‚  `€ `@@  !a7À!!â À`á?@@Mâ'á?!ˆ @!N"j"oBm€@â @x  àÿ`€à 3 `À -µ #×@7`@À@@  !á? !/ `AN@` ``  â@ -*§c¿ ã¿á?! A=á? å$fà` ߀$¯` ·$¯` J§  ¯@ð À@ ß @  " @í` /`× $ àÿ `ÿ Ê /@@` @ "àÿ@'B6`B@`7 â? d &à`¿ ¯@ @ j   ( -@@  6 d à ( !¿   # @ $  @` GÆà¿@Á@¶  /# @ @`  h   / j *   ( @@€@ H à  !1   * @`   ‡ @ !!! À@ €?)% *!! € @ ` @"BG`@‚6$Ç@"@@BP`@ @!    @@ `=`@`@À@@ B 4Aé `à ?!Ë i  ( "¶  @AÁ @`@H!i,h " '  `"` @@8!‘`;@€  7   @A@@@  F1G@¶`@1f@ÿ 0O aH @)  `@ /@@   @@    7  ` @@8!E@ö @î@     @! A?`.€ ?>@ö@$÷  @= )    &  ` @@8A 6`€     @ %!3   ?%í@vàFP ¿ Á?$÷ '” )2$ Ü`—ö!à?A?  @@  2 &  ` @@8A 5``  =@ @  3 . !Ká? 4! ã  @`!+á$?@H E@  @!6!3   G¦`@!1´ Á' @ j÷FE &1  `’(î@F`@  ? @ +j K   `  ( `@  2 !´ ``  ;@ 5 F@v`à`6` j@à@`    `    ` `&@@/   `/ `€ ?   @@@.€  5@` 4  @ /  ` ` @@8 6`€   à@ %@@  @¸ ˜@`@`Ö@ÿ ×  z ¯ % ²@ €  / " @`!/ )!>  !/ @  ×@  @ @` +@! @ -@(@`@A„@  / @ 4 2@`? `( @@@?`   `@  2  € @!à  ` 5!Av``a% A@@@ (` / `8A Aˆ A¿@1 3 @ @` @  !Ù €  7  ` áÿ e@v`@ ¾ m A  !ò @ €@@ 5 @`@à ? à5?à``s` u@ `@à   @  ` @``@à?  @@   Ao!@`@?    a§` !ž  @` `@`@?   à?`3`#»`Aø!þ@`@H` =@ '  #ô  @@@/à¿`@Ö@ = ? ã @    € à%? /`? x@@` `@à )@7@Ì@ /€``à¿@0@ @6 à ?@,`   @à? #`(  @B@?!~!’!ˆ! @O (`"@@ !­ @à  @ 7 ! ` ? ]  !g # `!  @` `?@`@ >  ?  `€   5 @`@à? ' 5 5 @`@à? B` 5@ `@à?`7 ` `@à?  5 @`@à?@% @ @/ @`@à?!  !@à@  Aø! `< @?     `€ `@@ 6F°(M $¹ ( (ÂF`(l%À&T& %È !&bfÆ @  1@ à?@2  N  < G   d  @  }@ )  9 @7 `@/"« `O@à?CC r‰@ )@@   8 ËÀ`O ? %B  /@?@!V  #V@  †@/@` (€`m@ t€a? È Ç A? À / @6@   = ! G @    @ @/`u P€O `  3 r@; as  `@@x@Œ€(×@F Ð ' à@ ! 9  ù  Ë  /  `  @`  '$‹`7@ j·@   ? À@ )— 8@ € + @;` ‹ 7 Î@/@`@> í@ Ä G+Ë@(  ò ¡? `ï! 5` " `-@  3 r@;As C 7  `¹@Œ `O": e @9 @ ÿ`  ¹!@ 8  ` 8 B}`  'á?An  : Ä@Ï``?@á? | z  Aï€` +@? @ Á+H +3 *k0+;   !  !? @`À@ ?à "@@ @`!^ (``` !m@  "  @@4 B  @t@µ`  ]`! j s@o€   !É 6@Ì  â  × ? í ä ü l -@!@  €@@ .  ?`ÿ@Ó`< € `@ Î   - û @@Ý@Í@ø€€@? þàÿ 5`á × 6  Ð ` €@    & û @ h  6 @ @? Fà&ÿ ¯€ @]` ï ö@÷ &  @@ý@ø ÉÀ`@ˆ Nàÿ Ë ¨*% I6 @¿ @¿@ ` ƒ`  h  .  €@?@/ €@@!`@@ 5 @Ñ @à?` ã  @ Î  @ö@ ÿ õ ýÀø! €@?`Nâÿ .$×`_ 6 þ@`A `` à@ €¿@™ à? @)@(€ »  á  7  € @è@ÿ @  `'Z` @ýÀø Ï €@? WÇ@ €`@ ` .@a ·@  €@? ` H!k   @)  (Ô(o @o @? @?€6   "  {  @@ 7 $€@O N %  ' `@€ 5`! 6 @`@?  0@@  €@@ ' G @à  @@'>G1 / @    `8  €@ˆ N 2 @ @À@.!~A A0‚F`"#D"‘ B  "@!’ @!"o  "tcÆ`#y@?#¡@!@ O‡45o‡   + €`5`` ? @ 4 G @?@0{@   `?€` .@D `@"`Pp@ { @@( ?  5`e€ @ -  `@ `@@ 6€`à? à` @`AE !]  B6`à ? !p /€ "Â"i 6"° ` @ ` $"È"C 3¶@3:„  ! @/`E` 8A ˆ€@@@¨@U ˆ@ Ee  HÙ &Ÿ@G¶ !  ! Ó &™&¸  A˜ !ˆ@/  `À? 2 !  /  ' @   €– >! `O Ÿ -    å ¶ € A? !`ùá>@.@ %` $È!?`  H á?  /`E``á?@ß!‡°!?@F@ ø@ ` Ä É `1 Jj!]!  `ï  5 %à?    ˆ@á?!€÷G uA 9 ïá?á@ .@ ` á%? 6 ÏBW` €!i K  Ãß@!ô"N `Èb_A!  / tp@&¨@@@@ ?"N aO 4`= 1@ B ' &` ¢?@– .  `? /`½@ "' &w  O' "Q Ö /á?@@  óâ€?`` . „$ä =`¹ |  ¡  "û @…`@ *  ` ? %`? a@   `9 ! @!€ 8  ` @!- @  0 O@ 0 @@!€@(   +@ @ @+@@s@ . 0 G` / ¦ ` "@ € €`@ `@@@Î / ä à? í`ü! ' /À@    8AØ à?"Ž 7 , ?ÁÿH· =!ø€?!á  .@ €@ "ö '÷ H ! R@@H e a ` @   )eü &!  R  "Ë` 8@ ` l@ q   `@@ ? ' !@ `   =  `@(  `@à ? 1@ `   <  {  ? à? N  .@ `   6 5`&`9 ~   @9€`@.@ -`!l €@&@ @@AN !¡ À?À_ ,a¿@ &€@@=@€?I` n  à`?  -)· @ !áÿ @F `€O )þ "9  €@@@v` 6  `à? B '  9   @@ 6  ` +@  '@<@)     0  ` €/ `` `   ö`7@?  @  @/à `@9`Kø <    @@@ € 1@ ` ?@ó @@@@@ ` /  ` 1` e` €€ @ @+©  !Ø à ?  '@-!ÿ@   a,@9  >@+@  + @ 23r   @@ ?  @ ` +@  '@< B@ À?    `?@/â¿ +@ ` .   À  ; i @`? @?@``  -@à ? à6? „@Eà@n  q@ `àa`9€? @ /aE` 1@ ` * @ö`!•`  @ A“@` 1`À ?  /!% @ .BË!€b¥ 5 @@` DŒ dI@"$÷ 5 "BÝ ! `@€9€` &Ì€?F' bà?  @@ /€``à? ` `&``@ 6€``à?!( •`=G`?``e‡ EÇF§ € "`& ? 2 ?@ • @ ` 1 # % < `!>@ & ?@<  !¡  5`à?@`/ ,D‡!„À? = "@ K AØ€@b    6 4!û" %þ@ñ@c@Õ@' /Fö `I4 `ÿ@ F¿`& 9(«? & )i `` @ ` "`/ï‡ 2_R ?  `9€` . ?@`@"`@h`f@Ù Ü B ( ¾@/  ` O  7@M @@"`,!Ç    I  ? Q  ? @   ' @ !sAX   !c!˜€`? O -    !þ   ` ` E!˜  &@ ` $á¿!@c ¿@ß ¿!R@0 `!1@  ý@¼ /  ' `  @ — /@j `O ~à¿ @ - `³ ˜ š ¸@  € 8@  @&@/ @ c!U !Q t .`"@ ¾à¿!z ' /  "À@ — 8@n€ '  à¿ '@ &  ³ • #  Π @ `  /!‚` @Œ †a "€/ ``@ ß@@,`/ @@ `+Ÿ`. €`?  %  ‚D{@ 2 @’@Á$8 @ ` 8`@ # $` '@ &  @ `/@`` ` €` ` @‚@ V@9@ ``–  @ z`(&- @ `@GÞ@@`ÀÏ 8@  '!@@@    `oà @ €à/ X   B =  W /g€ÀÀ@ /  @ €€? (@ !€`  %@  `! `` @ `€ ` `  < `  @`  @ ` @ ? H€  @` `      ?@ €` `` @$  ?@/ H   `      @@!!!! ? .  O! @`@`@!` @!!HAg!‡ ! Ag`!€ `@@` !!G!v!‡ á  a‡ à ?` ? @   U€à!A5a!‡á!‡!A `!@¡!? # !w€á Aw`!‡@¡! ¿@/á(bÝbÿ!O  !ƒ`à!?"µ!v`.!A‡"ï!k@à ?` ?@- Aa‡áwÀá@"Æ!ao`bï€ €!T¡#?AFÁ Fá/""Þ"Ö!›€âÿ #âÿ!?`¶¡?`!?$'€à ?` ?!=? d7DW€] €Vàá ? !7"Ž`A-` `@‚¿á?"¡`-!â%¿Á?!!'$^ !-€@ `á?@©Å?b? €÷ %'   @!`  ÿ ¢ v%?@B? €@ÿ!C· @ /B?@â ?Àÿ `ÿ#¯@ »#·@@ ã¿ ˆ Þ €€ÿA ô  àÿ 3 À¿ ¿à¯`‚€¯   S` @¿@ ?`ï‚ÿ @¯@`¿  ­  @€à¿à ¿!! > ¶   È%ÿ@@@À Ï@^ o`! g 2!`o@ !!O` 8Dÿ@ ? ¶ 3à@€o @;@@ @` @?%!%%À?! ? '@-!% § `/@ %@@% >ÇÿDÿ$þ ä÷ #{#Ï%  ` @#ÀBŸ B~"™      à ?"„"6€?`!â¿€   € @ 7!€"ÿ @!}à €!{   €  ?! ! 7@ @'ë  @@@ @!?!F?AG  `á? ` à `õ  AG!aa U€)7a? ` ` @ ?`ê ?% A`á?A @@`@ ¡?!c?B¶@á?C7@ +@BÇ`"Ç@ a ? 9C`A!`$``@ @ @ 7 ÌI8B€Bn a*!4 ë !g! ! @*. ?@©P'þ(Gô@   @Z  €   /  ‰I‘ @€@1@à@ ? ž!Ç (@°`¼@!ï   `   ?@Ìaÿ` ùb@@ íAç!ï€ ` @ ?AÆÿ )è? !º!ë  @@@ @ ?aª!¿  #F¶`@á%ÿ ;AÕ…ï ¡ï  @@@ @ !ã&¶H?!"ø@Ù#V @Ï€  ø   @aÿ`(`? !0 … !‹€`  € B? /!‡@ €ƒÎ    @  D @¿ Fà  @(¾ ®à ? &!Ç"@@@/ aÿB  À ` @ ?aª ? !@`ƒÿ„!  @`@ áÿ#Þ CÎ '   cö`B8 aÏ  /€#!æÃÿ'pÁï  @@@ @ ?h‘ ? þ@¿ÀÄ@ H@    •` `¿ (b? ?"?@? € …` @ @ @ á`#   @*…  + @`:@@à?!Æ@4 @  `@`? à @* $ B@`! €€ ¿A C¿ \ 4 !a.@`" @`G` ?AÆ@? *`2aç€ ` !Æ  `€ ?aÏ!¿ !€#!æÁÿ@@ @  @@@ @ ?` ? ½ Ü@± @ @` Â`àà?* >`)€ ` @€àà? =@9Ae *  àà!? àAP à? vàoà@@/n!ÿ!†A¿ ý ÿ`½@ >  f  @K?@``A¿  áÿ@A @ @@aÆ@!»€ aÏ ?@2@$AÞáÿ`€ `/`  ?`4 ? ¹+?ày` àà à? ƒ€1€à @ ‡`à(?à@€Aà)?‰#Àà"? 2Jí €~`? á? ý€ù€  @à@@@? à  !‡Á =`/ `&€@  ,¿` 7!ÿ ì 8   @ @`% @@ ?`  y,¿ 7@2 t` à`À@à/?À@à0? @à1?€@à2?`@à?!6á 7à!Dà?!±@ à@?.Gîa½@ ~ .c`€ `@@ %0(b&ï")‘$·DDÆià$Å  !&‘@(‡ @ $ÿ''`'‡ÿ'È," J @   àE@I'JÀ"†‡?€ @h€    C@C‘ ?`! ˜ #@ ¤` € @@@€,öC  a=%  AIAV€ @@@(!?/B@@-9)HP ¦!? ÷ a!?€@    !? &a?AG =`'!?€AG@ ` ` @ ?@a?n = á?@ )@à @@ÿ ò¡?*o Á á ? /  `€ @?A@þ ],¸A!  á? ¿(u+o.€-¼!@Ú Û+è ¡ ñ@ € a?`!?@ ?NÀ7ñ ? Aˆ!†@nÀ!%îÀ EN¸@Z@@? ØNP Fà@T@à@? ¨ 8€`!0€Œù@u@àl€ σ? -: !÷€ ²! !áÿ "¿@0 ߎ  Aê!F   @ !Ó ÿAÆ!~cÿ" `Ã? aÏ!‰` ` ?áÿ$!ð#O@ áÿ @@A¿ Z!õ#>!¸ @ñ+õ`ñ °@ý U @      ê3`?`  @ !  *@)Ÿ@@ é  w ? )A?AÀ % @9ÆAÛ@!‡` @ € N€@ à?€!@CØ à @‡@? w@c@ Ð @€   €  @ÿ ܃ÿ @ !E *° !Â`@@ @ !¯ AÏA? !  @CÎ  @+@  €@ ?AÏA¿ 0ÁÿÃÿˆé@ `@@@eÿ%Þ@?@þ ¡ Ä@³@  i@!õ@ @i kÀ '!Ç€? %A@€®À ?@$?" / @@ ?#^€?A5€7@@$P @`` € ÿ@à? 5€%@@$AÆ €  à ?@à?@@*@×@B€`€À@?! @?`q " Õ! @!D  @`!8€A¿!\`? + \  @  !Æ  `€ @?AÏA " XAÕ!Û!q Aÿ @  `@` ¿@5G@¿ B@…@G @`7p!û8µ  € à? A€?-{ O 1   €€?" !ÿ€ ~€)  š  N 3À7À`¿à ? `7 ` 9!… `@ < @Bÿ à `7À@9.> @@@ F@ Kà¿ `  h€`a…à ? a¿ ø`;  6€  Àà@!»€J€AØA¿ 2@‘@î @? 2!€@ E `!é@$"€ ë @ `à?@ ¾ ? >@!  @!`À?"‰€à? =à?àGÀ7!…@€W‚¿ à =à?@Âàà#?`@!€@¿à€ 8 €@@ !}a? a¿!>`¿ &€  &`  @@,¸`  %@ÿ øáÿ  &€ ÌÆ@@`%`?;!ÿ >; 8 2,ž  %€,¯    % @€?!Œà? /@ ?`@= ?!@ `à?€G - O € `Âà.? 7!%`@à-`?€à!¿ v  €@à? )@€@à?@A!…%á@/@   à <9d)'Àeÿ%  FÂCu@ Te @c½ # €%» @ 6NÀ C'S @`? *@$ ` G  - A ?@= 'P'v DL!   +` @  $¸%* ~ ¿  • /FÊ@ r@ ½@ @’`€@?.@? c@@@7€0€ !"„'@` `? †n*> qIú  Ó`O A @  | O @ ?€@ A?,‚ * !Ž@2@O@¼` .¸ DM€ fA? J¿n =+ 5@à › / @š   ?(@ÿ,6 /   Ê  A ê`@ ¡ `a(@? Ë)æ`'@¢` ï€ %Dõá ? Zb>," ÷@x+S@| D @D @t@ú@ `!¿ /*:nÀ(&îÀ 5€W _ m ?.À,{nÀ ÂîÀIÇNB!‰.JATŽÀ  N€n¿=NÀ/޵]e@À€ €@@? Ù ®À !…@ "Í!Å !Š  ` ` @ í ?!ÿ®À*ÈJ°@ª ' ¨`Aÿ!@A÷ ` a?!  w!ÿ"p â#Ô!"Š  (!² , @` €áÿ!Waÿ)¬ 'A¨`Áÿ"" @ Ã?aÿ!fB™ ·!Æáÿ ¶ N €ÿ`?!>@?!– @!" Î ‡@O@¼` #— œ   à ?!"B>@? *!s@$`@  )  Ü = `D  ¬ ? !÷@?N¿` E F@ E@€À€ NÀ c`?"Ä@t  ># @ J`À ` €  Ç`?@# S / ›!ÿCL€$ ¬ AÖ  Ê ¿!ÿ#>`? ' !Þ!JCÎA2!n @ ¡× `á ÿ!^`'(é '`Áÿã ÿ Ya¿! ™!a  @Ií@ B@® "²€ @€ÿ€? ´ Ù@8 -@*. ó Œ 8 7 1 @  `? 3 ÿà? `? ,¸@ 3@ 0`@@!-A? ? A…  @$P À€à@à? 5 * Æ à@ €À@¿ –``q b œ@   ! @` Æ`  !"‡`?! !#!% €!:4V 0` ! €@?åÿ!ô / @7 ! `@@ %å ÿk@ !@@, ³ 9@c .$*  @H@   . ?`´ ?   ³ "  @4@@€@?$ Aÿ€? Å  `  !D @àA? à? >@8  ` (€@@ D€ €?à >€8€  1 @ 8    @? à 2@ !€`!…à ÿ!`?`y| >€8 €à@AF`a!Æ`?@3ÿ-­€> @!£ üÿ  k !` `:  "à "`@@À?aÿ ¿ 2@…  `    @` `€ÿ‚?`? > ?à m€@Â@H : ¡?à? `DAD`< aà#?@@€}  ?àÿ ¾à ¿ ,@ \¾    á?à=  .@  `!D`@`?%`?`y |  6@@ àLÀ@@@`Ž@,¿Aÿ ? `9L®@9@ @`@@ .`Îà? >@8 € 7 ( @/ @ @  `¿à?€ - @8 @@ à?À†` 5 @8 €-¼ àà?  >à? àà  ` ?á!>€9€ &@ 3 =    ®€á (` +  à #tIê'%ü$û$8E(ü &É&Æ  `( ` „u#PE"¸`… @``0… $߀€ o%Xà? `(@]``' `f @a g   7%=#‘"E # O % # `` `À€ /A+ ?@! @"`!…@@Àà"ý/s *…90 ô(„!9 ,!? € -[`9! @ :î ï!!!Aˆ  P JF @` `À€ /@â&á  G  ávà /@éBÅ ð!G€á ?à /a ¿@"O@Gá? 7!0@A=  zxA?AA!7€à ?`ê € AG!Z @@à@ 7 ï@ ?@A)ðH á!?Â@Ï!W­ L `@@ @à@ 7á?@? Èì `@@ à ?`é ¿€!N óAJ!Q õ ` Aà ?A @ÿ ñ`ÿ !. !aG /€à Ü€$7 ï@ @@Ï@) " ( @Àà@? ïÁ?@?`€.$ S`à@(=á ?ÿH,¡4Àà ?`¡ ¿$ÿ  ÿ ø@ ¾.Ê  @à /@@¿ `¿ 2! ÿ  . `@ à ΀ ?@È@? Â? î@.@`%a€ð "€àÿ ö@!àÿ P`@ia s Ї € @ @†@@4‡@`¿ [!?@@?` @`  @,d#`7   à¿%`O@@6 ¸ & @` Çà@/@` @9 o` à@F€ / u w$¿ à 4   @ @/'x  @?GZ`?  0 /` à "a"a€b‚:âAbˆ Ža— (` Þ   >!– "d CÐ#³#ä  ! À à ° @   TÃÐ@}à0 ` " à@@ ?b ? £&ˆ O@à<` à a@A ? xÇ ÿAIÁÆ!Oà 97 °@o!?/9 ¢@ÿ@|'a $Š@È .›BÓ@-$%â @> &#îGÀ` @ =À ! ` à n@ v!?!‚ Ž  `& @ƒ`@ à ?CA?!ˆ`? ¥€  à @ ¡?"Èa?BNá"?!^ /! ^? À&7 ¬á?!/B¯a? 6 §á?@ `@ @`@ ¿@ ?AG”, …á?€Ï0­aå€  à @ á?`? !ˆ@$ â @¯ +@¿â2µ'A Àâ` )  W@b/`è ÿ6ü —>8'È 2š G@+2Û1Ÿ W 2'@  ) –ötÿ  2'þ à'Ï`  @@Òv`? (H  (!Ð €àAà     @ €  ` `  ?@ ?  `+  T`À@@@ /@ ?@ O@@(@ À !  !!! ?  `@? ! !@$@Àà@/`Z ?  Ç! Ø ¯ @ l@ €È _ €/ `?@²@ÿ!> a! ?  €? 9  o h!G ? à?!y    Œ  @5@` `à?!§@/@!Æ +`> B@  w  @ a¿  ¡¸ $!à ? !·a?`?  6 8@@ õ !`@   ?  aÿ¡ O@= @  @!pà!Ì€!Ë ?  á ÿ!à@"áÿ% `%` Z@?  Ç@ÿ`z @@ !! L€   · / @¿@€?`@?@@ @  & à`? ¿ à ?a ` C@@€à? ` ` 9!Æ  ;` A`à? @ ¿ `À ,Æ " @€ /@ @¿ Á¿`  $€`AÆÀ!@`@?!›@? À?à7 ÀAÆ )@€ áÿaÏ ƒÿ  . @`!Æ %Áÿ @ ÿ % @r .€x ’@ DPàQ€ / > ? ! €?ab  7  .     `à? @/ €? 2@ 5AD@ @ o !Ga € @/@€à?! @ < ` / à¿ €7À@. 4 8 @@ €? Ç@€@ÿ €?`&   @ @ @ ?@@? ÀO`   à€@`@?%   áÿ `à?% )@`@ ? % ? 0 G  : *  ` %@H "b@€ ? à? `   5à?!`€o@%à?€G ) & G€O A… @¯ $@ÿ€€¿ ` ` )  6à?! `/ $à"? , 7 !Dà#? 6€  !D@ `ÿ `A `` *  @6`@  @ ï@ A? `?`3  Àà)À âÀ$n P¤ùG ‹Eh N#ˆ`"Øbé  '`&EÀ ! ?@8%?G@$Gf ) '÷`@@+@ >hæ )€ O'6'¾ € -   ` @ /#‘%¸"  Ž€(n€ @à€$• ? ãgÀ . @¡ˆÁŽà!\@ ZB@  Ç!?€¹A@v@‰@6@Ž = #```° )') .@@!8  ` G? @” @0!+ HÀ  l!?&áA?&¿!{ @@}@ -à !7`ï !?'¤á? @@ à? Õ ?!Gá? 7``ú bB à¡?c€ b@`þ A ²@{@Áá? ¿a?b @9á ? Ga?  (@a?! l!?  !?"‰á? † @5@à`@ça?!£B¿!G!ˆ@, ! má7 :`á? ‹ 7``ú á7Àá?B>"B á"?@‹!¿bH!P"w !F úâ"¾  ŒA; þB/"f`ÿ‚r @@ -J * @1  /@!& ¯-d  "ò€-€ >@ >@€À€ €!ì ? e "= @|+ø @@m@à {€  î ÿ æ ? Ï@ - — /!… A -@€€!f€!p ?A§Áÿ@  @ #"AÇ &   `cü !¾á ÿ &aÿDØ #@!r`àá ÿ z Au"Ê"ã!¯ D '  @h ¿  G`ÿAþ!A "@?"a @( @O@+ €?  ? '€?€@ ?#o"H  >`‡ a9 ``/ G`?a?€?@> 9m¿ `@`@  ¯  `¿`? 7@  ƒ à`? @? £A¿ :à?!Æ  $ `  A `¿!Ð"G` @`   @!/€ !µ`@áÿ@7@(aº(«á÷&w€!Í`o  ¿ `!N@    1 (%  @ `? `? + €º @9`j³ F 'Aù@  `o  ! à ? # %@à@/` ?A? à @ @>@?`@`o`à?àE )€   @ ï@@? Ö` h` à&@2AÆ@@a a¿AK !`? @? @ €AÆ@) €@`? @?!Ïa  @  !ÿ€@ B IÔ@ !÷iðj `O ;  ;`B   ! jr@ 8``/  `? ÇÀ?`é    `"H` `@/`g@? ·@ @€   .€ @` @`/`!à?€ ( / @ @@  ¯@à ?à@)@ c ` ? @ @O ¿` @@/ @c    A¿ -  2@   à!DÀKÀ €?!£€? G `  !í!Æ`,z ` o€  @ 2 * À `+ú@,9`â? (!`?à@F @*@ ` @@`o , Gà?  )   @`À? @? îà Åà )   ~ /  à'?C €?à ¿à 6 rA€? @ à¿ !@  @à @A¿  mÀ`? 2`   @à!Ä€-¿dˆ#¬!¶@± F#ý@&ÆFƉG~ 3Ç%   ¥  ? `? , ?)&„)¦@8+@ 8à?%– @€à?)x % ( ' @*"à@ @EU ö`à? Î(† *à?! Â@? ö ‡Æ( ? w@ E    #@@5 @!D ?C6` Mà?@. 4@à @)`a§CÏ ?  ‚†@ 9@?`'`   ``ÁÇ‚  ?@`@!`@@ /@ À ]   n!@ÿ!4+k K+*‡àÿaÁ @ :€ /a‰ @@¿`0` @0@  @`À—€ÿ#Ó ?@ª@? 5!ˆ`& À@3@5€ É€  ÓoF Üàÿ@ þ "   @¢I¶ © +÷`ÿ@þ,|#@À`&@)`€—  @b?!H@¿ (@@À Ó Á É @? øA?Fa@? *à ÿ@5 2  Ã`ÇÀÿ„FRÜ@O  &  À@ ÷ ) %% ñ@ ÷€¯@ÿ@©-VI0-@ À@, / @ É ¤  ? €ÿ á`O! & @À º ) ` ? `ÿ  ÿ @Ab`à, @Î Á` ΡÿÀÿÁÿ(, %À@@ÿ`Aÿ ˜@š  `¿ !¾ ¿MÆ`"à`¿ ˜ 7 ¿@ "¿ `ÿ  8 M Æ @`"@ € ˜`@?àÿ@O #@%  @@1à Î@7 `àÿ (@á@àÿ R@`€@ ¿@@  @†à ` !· / [@?@à?@ `†@  )  à¿  & A®@ Ç@à¿ `aÿ@ ¿@À @à€F`@A@O ¿  # @?`@^  @Ba@é? @ ?E@ÀO àG`G a-V@0`Z € â C &r-w N-Ñ 0!º 7JÍ   ± fÈ#ÁCŸ@?†¦#¬@ -ù`  AÔ @ ? @!õ`?1Ç ‡¸#Ê @"@‡@ ? @ G  à?#; -PÉ    @ À. 5À@u À?#€Cˆ #A   à?`@b   EÐ` 6`5 7 @`) @? @¡!F ?!#@C¡`õ    ``aß%ok‡ !Ç ?!£@?`6í!ç  À@E@…&¸!¿@ ? Ya º ø % O 8áÿ!Ú  @!°  MD€€?&» 1@ l@/ ‰À`@@!?D§#øcå3 !z `!v`&  @€@P L?!GA? `ÿ@2á?€.@ , 2 ! c@@@ ÿ `? " µ @@-€!>! @ E@!w!?!a? ÿ º @ ÷  A @8bÿÀ9 @  o!!?  ºá?3É % ' N@o@@1  *þ î '@AGA?!> J@ =  4 / @P` ¿!‡!?á? Í  3 A` ÿ@Ü@?" ‡ Ï@á ?a7€7 / E a?  G ! þá? @ï@6@· ( 6   /` ?+Ö$Âá? 6 /#  & €@?  ·(v!?(€H?(w€á?  ; @à@ †@ÿ e G O"Êâ  & ' Ä @Õ /A@? `? Å @@'@@!7` 8 E"O ?€ã!ò @"7 $ Ah@/AG @È  w o@!@?` ? 92t @@ñ G   @ #ß  7 ï`XÇ` ?!²" @ , ‡@ O`/!Q  !a  n@¯%7 ? 0* 7 U?@  @`@ €@? !7 ÿ @M  !Ð  &À` @ˆ@Ä`¿@ ? ¤ ?@F 7!D     €@!F€ ¿aO@?!c ?@G@í! @, !‹`7 €!”A¿áÿ 'ÿDØ #ÀAÿ`!ÿ k c?@ Aÿ `   @°@@ !þ : 5?  @@™ 7€¯A¿@@Ï á@! F`@  ' ``7 ` à?@ò@ ? `?A` à #@€/ @BÁÏ!œ@ ¯¨ 2 @@ !  `/ A à? @@A… @ @à`¿ ÏA¿ @O    @` )`@A@?€ƒ¿à?`@, )@A?€@!ŒAAÿA¿ Ç`O    9 "@A½` FO@€/ aÿ G`¿aï : õ?!× €/ e@¿ ò€@@  ` ` ` # . `o  @A `  .€ @` @ €?@/"§ 7à?€€)@2!… ;  ``? 7 oà?&Ý@ 2  @ @? @?@` @@@.``@` À ? G¿@?   @à@@ AÚ!›`?€0@!«à? @A Aî@)ï `@@@` ¿@@€!€  Kú@S¹@ ` / `? €?`  )€ ` @@  À/à?€€) < €!@ áà ? 7@9 @@ à,?`)«  ?…? à¿ > * @ ? @¿ @?  ÿ @@/ @à @à / Gaÿ`?  àí¿ Cä@&`ÀGB :bG# %¿  "Ï   @à  €‹ @‡ ¸€?¦bA0€`!† V  +@`÷ `? #BÇ`?%R #0`€!†€?   77À?Eà? =` ` ?#Ï@¯@`wà ?@*'ð 5`<@@ 4 2#Ï`ð > GA? à / €¿ ¼@  >@2á Ç AÇ $@¿`1`@`7 ` ?@@ A× ¿ b`? ,@¦€,    H DR`$€#ÿ ? a)" }A kG %÷@Ë €!Ç`, ``? ô -À >/‡  GÞ ," @ D '` @? @?`O‡@ @ `@9 7" `5 €?`!ÿ `E@ B   @q  µ $R@þ@ Å"¿ «I‡€?`/ @6@@@* @@@@ ï@`? @¿ -  @   A‰!Ç 7a¿ á¿ /@ `À/#Ÿà n!I `,‡€¿(æ   € W@ ]  ?O  ÿ  ¿`.@ à/`· ¸ @ @?!`?"u@? @1à@' )@ NaX ”`ŸA¯ !­-G Á@¿ €¿!» @ @‘€ e@¿@IÇA@   @ y 3`€@· @—@? G@ÿ*t`Ï ˆå`@'`/ç † ‘ ]`  / "7Œ6 @Ç  % @   i`@ S w ¯  ?`· ?`Ç 9@ @à¿ , ‡`@—@?  G@¿A@"W@'@ @'@  W@X `Šw ™ ·€ O  &!`@#ý` i Q@@ `o@wà?€@" !`(À ‰ ` à ¿`O@@5C @'@  @ ÀVÀo  ¢à!À@A@O  à ?`  ! (%o  @  €À? c¿%‡`?  @@E§@%gaviotatb-0.4.orig/gtb/gtb2/kpk.gtb.cp20000644000175000017500000021672411536321052016736 0ustar varunvarun@\\ùV6+MXc#{•œ­mÄÆØ´îõÔ!@@! % `    %     8@À@?@ ?``? `? `? `?  8   `?@Pà? $   ?    @8 @À? €7 F€8 ! ? ? : 8 2 @/@† r = @ à ? 7@8 @à? + À6 K€à` yà (   ` @@@à ? y`  ?!š!^a}` `¡ ÿ aqáÿ ‰aø!@ !÷à`A %a@ º yà N! ?  hà ¡`?@ÁÿÀ  H€? =`8 `?!*aÿ ¿ = @0 Â@‰ ÿ ?à €€® : q ‚ !"P ? àà? i@qÁÿ @0@@ 1@àà?@@@@@8 ` Ý@Þ ` ``ÿ "Àÿ`" áÿ€ €7àà? á ÿ ‰Aß%!Hà@ ¿@!¿€ @‚ qàº`  %$O€^!!P B€€?!¿ !B 0 b@P Ò€¡I ?` ?@ ?  !Ä B!ÄaÎ @@ `?@@? `? À? : ÁÿÀ @Ò ? +@À@ @? @  @0à A΀½ ' @ ?`À  ý `0 à  @   ? à?![á ÿ¡„$  @? `?  ¡ÿ¤q@1!ö€  ‘` ÿ 0 € ÿaÈ  € @`º % 'à`'!O & €@?@ ? …!€ãÿD@C`%Y !?a ÿ , ? !ô#ÿ  aÿÀ W`` Á!ªA°!  : a÷ `C º aÿ !2`P = >@@* ?@"Df?à 0FO@Â`> 8à? Ó!ÿ cD!Ç€ @ à  ‚?@@7€?  !r!ÖÀ¡|!… &<€!ð ÿ!¤ @@?"@ןEï!§AîA÷à@ AAß QáÿƒØ!( H y`!¯` ' @@ `_@@!@!ÿ€ ?! Ѐ G` ¨ 8 ¢` !ÿb/!ÿ€ /`  E@ @@@` H  D b& ÿ !ð @@ %@`> !DB# r!Î ,@H"M 4"'  aç@7 à Î »AÆ`Ì @Ä !? ] ? Q£÷ /à 8 àÿ@ .à?ˆ/À#×ãÍ@¡Œ ÿ‚? F· @2aæ :@%à@9@!< %@A€ ¿a× ì H ybF@` € q`@@À@?@ ' >`@  à 0¢@?!ÎAÿ à!¦@8 à 0 !¹!!Ä€ ?Aÿ /"þ@€ àh `H E@HA¿ Aÿ .à ?  €@q @ Aÿ  ÿ¡ÿ '`!;AÈ à 0@ @@aÿ@!N  à' G à   `? @8 G @@?!ÿAVà4`¯ à À d %``  €` i'@@ ` `@ÈAÍaAÆ!“Ag@&À@ ` `@(G 8 ñ øb@!ÂC§@&à? j 0,¦@HC@hü€?  f€à ƒ@ @cÿ  ?@g· ¡§à?@$@@áÿ   ` à#³#Íà 0áÿLàCüà @`  oà ` ` %b@# @@ÂA à@ @&@ ` à?@òa÷A¿!“`T @.@ ` à?*?@*!2 8@!‚¥'`@.@ ó@€  Aÿ@ "?@‚E?!<"À' à? v@À@ ñ`@?@@(?` `'  à ` ? @@ ?  yC¿@H 4 €&à <  @?@G€? a"eø!)Æ )%%iö €:   Áÿn@BäÛ P'ÏAf ?` ?`À ?` ?` @!ÆKÿ > C‰ `?@`%à? @8%È @ËGZ`?GP 4à?ÀG&w`(‡`*@8*>aŽ$!ç!'Àà?((@@ Eà ÊdP@?bX  ¿` à"—`y@?AÏ@'à?@ àà?@­@yAv`!“ I@ `#À ?` ÿ€# _aÿ@!… %% Áÿ  Bá¿ ó@º GA¾` F+× /@à @áÿâ ?€à ?` ¿`aÿ!¶`!vaÎ"`7!Z` Àà?-ú º'È`8,Ma"O 3 ?"€` à?¡ÿ 7A¾@/ P‚à?@@à?J`@8â!@@@)Dœ 8`  ?` ÿ`Aÿ@@A½`!» `@/@à ?`À?JØ i!Ç@A@ÿÀ#O Q!ÿ h A¿aÙ ?` P@ ó à N!Q !@? `?@@?@ ICáÿB@CÖ`c  @ ¿@EÇ $7 -úáÿâ  @‹¨E÷%€  L0@`‰×" Ê!ÿ "!… @à ?%‡€?Aÿ tD?@0 Aç 8À‚? /@@ ? à?€ á ÿ@HAœ 8a¤@ ?` @Pj· N A½@Aï@FÅ @@#ý…ä /à?Áÿ2ø!!×A¶!è@ àA† a¿ &áÿ!0aÿ  @q"—à O@P ›# @?aÉ ¿`!{ !§€ÆB"ÝÂØ'·á¿@?@@!%%È q!TdAE`AaI÷ ?   !ß   @áÿâ .'·mÀ*@? y@ 7@ÄM×Aç Àâ `?@ ?`€– } Û  aL @AM€6† LÅ !Í ? AD 8 A\À@@@à áÿ Á E!–'÷`€!èA¶ àáÿ%×A–!®%i€  ²‚'  @` ¿`/†7"7 #Ÿ/÷!ï2`¡÷b ` &Aÿ`0@? !³!€ Æ ?  È@ C b À  1!? @à ? uAˆ b @ G@Ê '`a =+Ç!ã"u n!ˆ @ « ` @ÀÆ/÷"?"m ? ¬£÷ /A÷`!ƒ€!5 @@` W@@? .@?  -$ 7à  Á`à ?@'‚$w!ž _!í€Aø Ç á ÿ#Þ`/ H`ý yaÝ$a  W  ' 0@ @Š` .áÿî ‰` ˜€!w`ãÿ@@ G­ E¿!ð! `' ?`- ? @À ûB@aÿ! @?!y!ý!Ç· €/à  0!² r!¾A¿` Oÿà Û`?!€`e÷ 0À-÷l@ ?0@!ÿ@¬ waçà@@@O @?DÒ "Õ`þ 7A\ÀA•e÷AŽ!ÍAu@@‰ ? '`? $ @? / 1ƒîÀ!ÿBàAD  ‘÷ A`8 à4@× ˆß  ì?Ê?â@ð@t À$5€€•à ¿ àd *áÿCco  àA¿@àa4VwAÿc  @¯ >à?@@à # 0D@»2n@` ` à@@ b‰ `A÷ 6‰ç Açà@ ? % ? ‰¡æ"µ!Üà%€í÷ ÿ¡ÿ") A` &"e€à)))@! 7) 5@? §"w @Žvà€"`P""è@'¢ ¹ ‰!ÿà? ñƒ§¡ÿ!f!!&4@T à@€ ? ;@!? 8e? & ;@Aw hà @?A× ?@»D?CÆi·@à?€ ð $ ?€üÁÿ ]à wà  ? G º%¿`@ @ bEÏ O$ 3  bX A %E€ AÇ!†BI" Åÿ ?`€U À!@ 1ÈLÀÏ!Æ8Ø@%0C( €? `• à?k¶!Ç)Ñ`H @= `4  > ?aÀ@ )@8f†@5à?@@G€ÿ!p`ÿ  ‚ 8 `@`'À7À `@à?  ‚gd A` FN! R  @' @ ?GÀ@)@q@@ !Ïað T@0!çà@?@€¿ /g‡ yÿ  AW  À G`E@ ?g×!ƒýÿâ!  W    êbÀ/¿ q%Ç‚%ÏAL'v€7!œà? : @Aÿ@8jF (V`pÂ@I  @ÿ à '@YG@8 a ? $à? `y `@ `@  @½!-   ÿ` ÿ `yà /` ¡} 6 € ?Aÿ Ø@q !!Ï`€!ç !  @? J@ !(Á#+`º`ñ!< @€`?   ¿ €?=×  #z E× F­ÿâ 7`V8ª  ?€@?!|/»!Ã- q!ÿaÎaÿ  O ?`à ?@@? @1.;@„ 0-‡àAÎBO % 'à€? %€?  =ÿBHÄ a *6,Ä / @®B? 3 ]€? $üa…aD `8 à / € ` ?![ ›VG VtA} à`'   ?Aÿ 0/? W ^ !÷ !÷G¯@!ÿ!@@ÿ aÿ !‘½A`áAÿ@€ !T`+h  g@ A /ÿ#ª -L!#D cT i¯!@ ?@? !l`¿!|!ò @!H qaÖ / @ ç@!µÏÀ&o'€ a÷@B¡ÿ@-B@!T`)!³ .@ÿ@M€? Õ Š > ý €@0 a B@ Û Ì@/ ÿ@?Aÿ@?@-ÎA… A”va4@ y@à jAÿ 'Aÿ 8(žA÷X‡ y@`0  `a… @!aÿ (¡ÿ È . A^ !!,¨ á ÿ@‰áÿ ° É`A½ F âeé y!÷ ` @A¿@ @? !´@?!X`!D  A}@Pd!ÿCÞ@@? $'AT /à  ` y !¨à *@? $o.‚ ` 5@¡çá÷@Hb H !¿ 6&n ?49€l !Aá÷ 8"¢ ?b'"$8! 8a… !` !…@ 8@à ?!î.Ö!ÿ ?![ 7!×à@ @a} ``HCÿ  ÿ_ÿ  @ ) L`€ãÿ@‰€€RA¿€'` 7`@ !   /`@@ @ˆ?σÿ@/ ` Àm/@Au@‚ò!aê@ Ð` àa¶APB!Ì!x`M€!Ç"­`6@? @` à 0 `H!ÿ@?!¹AÿOÿ '@và?@@ gaÿ Aÿ @Aÿ/ÿ =`?  `M à 0 €Aÿ@ FŸÿ@.aï ‰eà!t@@@?!TAÿ"¦!¥`à !ÿcÍ%ÿ 1 F@D”à 7 À`? 7` `ë  €à3 B  d` Bu@€ÁIa¾ !¸ Aÿ !ÿ  €/  @€ ?!ÿ@² A|¡ÿ!ÎE· €/  @€ ?B@0gÿ@8Aÿ ÿ`€/  @À` = 0áÿ!ÆŒ  - ࢠ/Aÿ ÃAÿ`AÔ àÍ÷2@`aÇ Àrn@ q` ` Àà?"€¤ ?áÿ@S  6à`(  ºp8`û#S`8   @€N Y`@! Á‡Â(? $À/  @à? @?@€BaÆ 'w€/  @À€ ‡   ?£ÿ Faÿ)·À/à?à 9€?á ÿà? =€E!ÿF™Áÿ Š TBZ…øB¨ )!7aøÀ!Ïn.R @@D€  @    ?@ Eà À @?@@? C‡ kiï eH @ €ã 6@?`!@  H!Çeßà?ÀGÀ€à ?$ º1ÇC $  ,@~à€à ? ( 8w‡ L ?  À€`?AÀà¿@@@@H@ à ? S,!Ï @‰  Ta<à`{@ /!¿ #‰a?"à @»‰ø@Â@(!@B @[À ?``? /€²à ?A %!Èà?W× +@!Jb Ž%haAˆ  ¡``  aÿ!ýÅ×! H >A™ `? ?'Ò O ¿ `?  : 0'Ï`8)ç  ‘g¯ @€  à?@ 0/÷`ÉçÀ?@ ¥`&`?zÁ G -` jÛ â $a ` A /€!q`?![!«÷ S¡ÿ€ /a´ 9`'  €?!¹`?.ü _@1áÿ! Y@[à ?` ? 7¨Â! à !_  ÛÏ, ?@ ?/: ‡ ï+×€CÖ@·!˜ - 7`?À?!Ø @/+DCþÿ)ß@8 aÎ %Ê A© @+ã ?@:/áÿ ! +ÿ@ >à`?@ÿà?@ Ä !}áÿÀDW $`&@ . ÿ ? -@¿a× hB‰ êâ .`' @ €?!i`?!Š!ÿ&G!ß !ï€Jº  €'!ÿ / ?`€?1= q ƒ b *!÷…ÿ û @"* ! -÷A? #6aÿà?îº!¡"³ /@? `? Ð ? !· @A¾@ÂÀ@?@`? `?!Wa¹"d"' ¢! ADÀ W€ç€g ÿ€`?@6"< >` !A÷@ à" @-@? @?  T ?aï Ã`¤"À`À@?ÿ@  ?!  6 "ã-× @0 à  õÿ@€?!Šáÿoÿ!ï÷áÿ  h`' ?@Ò!÷@@ :Eï`!< à a? \Á 8 Ó @€G Ò q@à  ]  ?%Aè ? –@AI A AÆ áÿÂ`? `? ´à Ý@  ÃÿaÆ ¤!j!¿ d>!A @@ 5@ ,€ Â` `'`aÿ"'!ÿ!#÷ .`/ à@0 @Æ&_ "o N ?ƒ÷@o!#•€ € @ áD`@? Í @?!Š!ÿ÷ jb )c¬ #£ÿà¡ÿ*· ??ÿç ý I@à!< @€K÷Aÿ¯À /  @ÿà¢àÂ@p ?aÿ€/@`?   ?B oÿ /÷ ? è!ÿ ¿A­@@à–6@ 0 !¯ ÂCa !Æáÿ@:à@ 0 8`D'@Â@ !ÿ@w`>à~À`†@@@ "/@=÷Aÿÿ -@à  0 †Aÿ` !š!ç´ "a¬àcË +âÿ@ ??ÿ`2$+`*AZ à ÷ -áÿ ‚cÿà!?@‚@‰  — aÿ€?@G@ `oà€âd bA– à4 w`à ¡ ¡ÿ"69"@Cÿ e·àÇ 0$@¡ÿ €õ`ü åà ? !¶áÿ à7àO ?Gÿ H!Á#?@N@-×!­ßÀ­ï ÿ 7÷!—  ³ƒÿ zaÿ€/ ƒ`?@`&@“@.BO`@?@ 7Áÿgÿ /` ? €`Y  b · áÿ à @˜@à4W@€&G!$¥ào@, à¡ÿÀ#d"aÿ'· 3@à 9à ¸ÿ@FA¿i·à`V@A@#@?gÿ@ºCÿ mat!màA„AË BG!¿ û!Á!ÿ%`%)@!€)! @ ) ))  !@ `G!`  + =%€? _`/%%€?   8!!€@ I 2@ÀÀ ?` ?€  @ ? Á%@`àGÀà? : 8 7 À?à‡Àà?`@ ?`@ @@àà? ia<`0  4`àà?`!<` @!tA^~!g  ¡o!?`!?`à9€* A)! A€?áÿÀÂÁ€ÀÈ ? Ÿ wá¿ 0!B ! !AL & @  ! ?! ?! ¿ %!B@a… GbH =à ?` ?€  : y€8   àà? q@²  / 8@?@ àà?` 8À Ó!, !  "`ï`¿` ¿`  À/àá~ ?!7`?  ?b¸ 9!Ý!çà#X  b/aÿ -!Ç`?%% `¹ àºÀ ?` ?` à? !º 0 F!A àAW@ ?@@¿  `"7!ÂB @@ OA• €?!£ /  =   0€D "I  7 2 ` ?` ?€ ` @ 0 \A €~ o ?` ?€  `7@8 à  @€?! ?  ?!J!Í  ¡„à%@? %@?  `à8%¤* A!åà áÿà!€ yâ  ? !÷`ÿÁ¿!#¿A9!Ç  !ÄAÎ à ? 7à?@7!² à OàAÖ  ? a!¯ ÿ``ÂD LAÆ @  €? 7à?  D?@€ $O`` à? Ò £E ì€ûà  !@ @¿`!R!}¡ÿÀ!…  à ? !÷áÿ@@…ç%ö)ÀÆàF/ã ÿ À V%!    q à   v!Ç`¿ Ða!AY Š á @ à ` ? -!ÇA¿ @7@à Au@@H  @  ? A? @ @à  0à!? @?"&  ï@?   ½  º@³à ?@ ?!½ ? -¡÷€/à q `@?@@? '@ !b!}¤(Í @ ¡„  ?` ? %@ÿAÿC-à4!´ N ` xà \ à ¿!Ç ¾@ ?@ü  à @ @ú`A…  ?!n` .à@8 `8Aÿ !í! !· <  >àv @@ 0@?@9@?@¡ÿ&7@ à?`@ ?@c¿ P !ÿ …÷ ?!" à 0 ?` 'Ì  O! 4 à7ç÷ `0`@?@ ?aÿ£öëçàÀ-` 9À Gà €@ à`‚> ` @  à Á@@áÿ !ô!~ ,     à ø @"7 B@aÎ!ÿ 'à?@9 7`H"`ƒ ? @à ?@Ã@?A¾cÿ ‰ @4 à7 @`?@@  Aÿ @ à'aœ à 0  7A¿@ @@`'àáÿ`5¨6 ‚`   à ¨   ² !sA} @.€à7À ö F€@@!þ#7 @&€à/à ð €? ‹ÿà ?ÀGà ? @w@y aÿ)w Tà /àà?A¶ aÿ ;@€Eà ?@ ÷!·  ?A¾Á¿à#? -`?aÿ Ë W! I«î i   O÷ 8 ' € Oÿ` @!Å`Š ó!X à 6a@@?@ >`  @C FB  àà?gßEÇ`H¦~à!?" 8Iï`@¨¾à!? ±@8i· H‰  àà¿ >`8`, @`  àà?` y!’!¼ ï½á¾`?@A@!~`ÀqÀ9ÀÂÀ@ 7áÿ@{ ² Àà €ÂÀÀÀ@?`/ @ ~`M÷!ƒâà 6"ð g  C?` @8%Ç‚)ö@çŽà 6`/à?.> ²'Ç¢ 1 " àà? 7B@ @. 8@?@à$?@@AAL àâ€@@¿@ þ` $"Ä¡µ y!¢!íÀ±Å @¿@@?@ >`%A@ 1áÿÀ¬áÿ `ñ W!u@ @N O€! !ï! áÿ@/ AzáÿAÎ@A•@ ?`@?@@¿@ ¾@ -³/ q +©!}B€À@?@ @?@ >`.@)Æ`0D@8$O`"O à?@ iÇ qÀ(W`` ¦`?@@@ ~,Àˆ @!"à  0@@@?@ >` -!d!¢á ÿ¡Å*@?@`?@ @GÁÿDø A!÷`à ?h ?1 Eÿ- y%²@¤ùàÂ@? .Aÿ&[  ?!Ca/ÿ  @ âL  Aÿ`/ )@0@?@!¹%ý#ÿ!ºMØ@@ ⢠aï€?kÿ ? 7Où"!ÿ!Ç D "â  /@? g`? 1`  /@Ç  @` aÿ N7!ï`?@@? €? `/@@!!$!…@à 6!¯@!ï`?"?€/ @@.!Ï  ?à€?¡ÿ  ~`IA@@!Ö#ï`áÿ+ÿáÿ)-aÏ%p@>àຠ``/ ˆaÿ!aÏK !  O`Á÷CÖ` P@@? ´!! ³ ø!·@à @cÎ@AÎ @?!Æa¿ !€!%Aï€0 @  ) @@1 F!2 B? 2U ¿@7A> „¼ 7 5 7ÀÏ 0` aÿ  ?1îKÿ2.÷ /!"A„€ H !,á< 6l@@!%@B?Œ A -à  ? `? @@/ >  å¬) è9À¤A †b%aÎ@¢à4 €@@ˆ` à ] ä !! þ@   à 0@ @ ÿ @aÿ!¿¤uà?ÀGà 0!/ 8`(/A>&6ax@/! à ` A#@?@y@?@Oÿ!ÿ …÷ ? &à q 6áÿ` ÆÿÀ?"A!ª%ïíÿ€?@@HH' >Aÿ£îéçà¡ö ÿ! nà 3@% 7b0à!wàDÀ A… GAÆ!J7 w  'à 7 @ÿ 8##•…?  @à! 0 ?BaÎï!ÿ ?@@@@R@ÿàw @`?A< =` >n@!^A`£Åà 6á ÿ Ñ >@à€i!÷€ Ê@—À6àÆ?"@,@ >À@à€va 5î7 €à?(¸ v ñAu!ÿa} à?a?#`? 8!~ ƒo X @àà?@8@?@@4 à7 @à?A >pH@ à' @à v@¿Gãÿ ¡ÇÀI×ÿ‚Pà ­`@  @ @ @@@ !•$€ @‚à`?  = À @ §ç%X ‰  ?!˜€Àà?'ÑA†& &F€?äà?h '÷` @ 3 5ÄWà? qF¢fG  7à!? ò†ã k!„€à"?@@y@@@ø!F!›!?@A@@ ÀqÁÿÀ @àa €? @ @²@  M@G€ˆÀ! @`? `?@@ Iß!B*Ø ‰ AÎ 1ˆ€!—``? `?@@ ÿ%Ç‚IÆ`H‰€ à? 1 0;ÿaÆK`@B`à? ºAÿ @'@H à ?@@@@@@ €!AÙÀ`ÿ!é`ÿ@@  $"ƒ¡t!Å  À€@à?0¸ à1@9!Ö!×€Î`? `@@ 7  é û @?à@?@`? `?@@ ßÿB íâ AP `?@B¿@@ /)‚iÇ+™!u@ !“Ëÿ!×``? `?@@ @1 CN 8@!L"P 7   #@à?@ÿÿ@® 8z  ¾ ?@`¿@ < Ê"¬p7@0 à `/%@à? !B!ÿ¬/a½@¡„à*¿ 8"/€?@@ ?,€ '/¿€`1!Þáÿ@I !ïOø- ` ?1 /- Ÿ#‡¤ù ó à AøGð'‡1 /BJ!½ ¾!CÀ @ íÿÀ`? @?,œ  ? 7/÷+Ì`Oþ @ àAÖ `? `?!Ö€? 0 =Aÿ@ L@0 aÿ  BøKp ? ?ÿ-Ç Z!…  › Àaÿ `?$m`?-¿À? .Aÿ!†@€@0 àA!¯*¶ @@ y!Yáÿ 1¥v¡„à`?A÷@? 1@>B%g 'ã§C¯!îá÷@I  ˆjAÿIÀ-))AÏ! v x!b@ ð@ yâF†aÿAÇ%@?@7 8@à æ H !@PA÷I€`!0@ 8`7!¦à cÆ@@@ `‘ `? -@?(< !úà   yà`?"`?"'`?á÷‚` ™ ½! ª @ÀAÿ aÿ"'DÀ%@ 9 O@à Ÿ 0 `a¿ a¿0@!½!¿oÿ ? ß@À'ÿ`¡„  < p @   = ?@¯  9€`!îR`@A  !¿ @A aÿ . /€  ` à 7 à-E $;Ï@ à4 w !  à  ^ aÎ@ Ö!ÝaŸ@6€?à  0 @É@!?B >4»ƒïà7 7  0¡ÿAÿ aÿ ßÿ`&@@.@à 0a¿@`@ ¿ÿ@0!b à@/ B@@@@$? 8êç@!Þ0à r @ÿ aÿ@'@à ?@&@` @¶À6à t@ 0 a @AÇT€@ÀHà‚"ø G@f!ÿà ?@€ 8ÿ$^%I#Χ6 X@£à¡ÿf¿ Aÿ  à7À - !u` @  t@€&à ,á ÿ ?!^@àÎ î@&A÷` !† @àà?)`6 7 s  Ü!€à>à`?`8 Zò`€ àÁ!¿ $  7@yf à ?#¸ > ?Au"!"­& `Çà  Aÿ@@ F 7 @!¿ à7àO -+  ?@8 > !Kà'à ,à?!} =(O @¬iÀ)!`ÀÁ¡ ¯ 3@ ~`@!• 8@  |@?  À!a` / ?@@?@@*? 8%%%W€H 7àà?cÇ > @  2à@à 0 y&„ @2à@à?@ @@ €= ? Àà?@@ àà"?` Â` H€$®@ H@`¡‚@@@á÷ @  ¡‡à ?"ö @@@/ຠ 5 €àà?UÇ!tB ®ò¡Aà`?  }HÀ  L? q%ÇËçc× O 7à€? `? @)p`8'Ç‚'×!L`@ à?@ 0  @?@  =à? #a4 à  ? @#/#?@€¿  ¡ç q!j!ïà @ ?ÿ@@??¨ @@  ÀJù@*0 @@@@/¿0@@!@à'a` / ?@@?@@;ß #z Oÿ âAÖ@8à?)‚!ýOà ÿ Gè OCÙ@ o @@@@++ù+†@D @`  à@>à?` ïÿ @BO@€<@ ‚@@¢%E 8@óà .!ï`¿ÿ@@£e)ÇA£á ÿ¡Å A!ï ?@@ÿ@@!ÿ©+ @á÷ 9à!/oÀ1 ?-ø1 ? "?`M@àÂ.° ? n@@@?!ÿc1A‡  A÷ b ào@-ðk@`@? 'a²#ÿà !õ€ /` G€ / ?  ¿@'@ O ô÷Áÿ ` AàA¿A÷   A¿( ?`àà Â)À!ïAÿ  P@ £^ ˆ  À¡¶àCÞH•@ 2’@€/ Æ`? à p ?à É@7Y0/8.Aç`$ à 0`€A B@?- 7`?¡÷`& à 0@U@!V "`? 7€?ƒ÷ 8aD!  ï ÿ!ï!x@ -"'AÀ ?!¢A´ N 8 à¡Å@aÿ @F0@    9á÷à 1`Áÿ ‚ %%¡ÿ$‰`à /` +¯`P)&=à7 Á`&À   AÆ t@/F'@? > } à4 pà _ "`º"%`É6t “&7 @¬@à ` @1 A:J' ÿH/ >% ¡ÿ€'à 0áÿ ÿÿÿ B!à !2!ü   `@  / àâ  6!÷ zaÿ "à 7ÀGà ?Aÿ@7 ? &@  ` à ?à 0@DBÊ7 @à 4 F# 7Do`$@,=à<à i @ @ˆ" ¥·à@xB ÿD!ÿ ƒ¿ ? ¤à£ÿî@AÀ @ 5à7@@_ - áÿ Ž0!š  àÍÿ(¯!ÿmï!ÿ@ÿ /à ?"%v  ²áÿ 8àÀ!" «" @AÿB!Œ„ïàÀ` @?  ? |'@UàAÿ!F" ?b@Fà Ç%v@ ÿ@ºÿ&FàAÿ @áÿ!S!U @àA¿ ?@F "@-` à@ ` à)@À@ à 6@/) ?) € @'%€8%à@à@?@@?` à 8! ) ‰àà? 8! ?@ Nàà?@8@?@ àà?à8 ‰ àà? 8!K Àá!À1àÁÀ@ Oá ÿàÂ@?  á¿ 0% !  &%¢àà?!@8! @8 G`@ À@?@ B?` à 9 y   à`à?@ 8@?@ à@à?@8`ð Hà!@?@@¿` à  7à €/á%¡èáÿà ?!þá ÿ V)ààºà ? &à!!%% 0 àA `ÿ `ÿ `ÿ à!Ã@@ aÎ!Õ 9 "V  .!A?` à 8 E`8 >à@? `? `? à€ S@q ``? `?` à @`7@@ à@ àÿ!Z@dAu  à@? áűÀá÷äQ1!þáÿ! À q Sà1 à  Ö%Aª à @ à `¡¿á÷!F€?!ÿ@@A‹@@  @ @? a  @9@ = @  0`K`!? ! ? v@? `'@@7@` 0@N` ?@@à? Ò@à @@@@?@@ `·à!Z Àâ @?A@? ç? !à4Âà c@ T@à"cà Ç%!( à CÎ @ú`AD á÷!VA‡! ?@áˆà 8 ø`@@ 6`7  !û # à @@@0A¿ A¿€ ". `@, ¿  ¢ € 0 €@A `?$u`?@ ,@ 7à 0@?@@?` @'  h·@¢à€?@@?` @% @Åþà!¶` Aà >`á÷ÁÿÀ @nà ? Æà ?÷à ?á 8à ø`@@Fa…!§ ?!ý·à!0@8 ?@`7 `"Á¿à ?@0@?@`w @‚! ÁEá6Á>`?A< € ` #ö 3@À/à@( €?@ à)%aÄàeý áÿÀ Càý âÀ¸à ­@A4à!O!T@@ à ð €?@@a}!o`à?`@!`@  @?@ãà À?@0@?@ `Á¿à 6à?AD àÀ8!¢ à @0@ ¿ €?à 4à¡öGÿ  à xà . ?  !< `€º @àà?€A<@/@`@@ à`ö ?`@au@À@ @à 6€7 @'  Â!O à7À 6€7  ?`@ @ã '`7 ` AD b@à@(@à? @ >`ÀAÀÀ·À@7 ( G 2  à @!"g à@6BÀ`?  àGec†€@ÃÆàà?%a`@ a@ àà?&? 8@?`@à(?@» @ ?@@à(?` @ààà¿!’ Á½Àà`? a !}àÀ1à Xà?àºÀÀ` `  }à 0ACÂAL à`? `?  =àJ('ϯÿÁÎàà? 9 gÇ  F`  à?@ 8h @?@ €à?!!áD€? `ÿ  ýà!¢ á½À /#¶ `?  à!¡èÀ1à ?AA@a@  =à`ø àÂ@6A@â@  >àas%ÂAÎ `P @¿AA `?  >à®@8!ÌaÎ À vKè+‡   àKè)ÆKÇ Âl  ( @6@7à? ’ ´ïÿjW@H`?"f`?  Mà! !d?â `?$e`  =à!’ %!  á½ ?!÷`?  =à"O"€ 7 A€ 1  à99J ?=5  =à!ÿ ¸))€Àà Â9(–Aÿ=P@?@@@Ax!A/ÿ  O¾ àAD,d`¿1  7@ 1!¤a¹!Æ -ÈAuà@?@ ¿`/ 6-  @aðà=€E 0`` 6` "  - 1  ’!ÕÍÇ€@0 @@6@`? ( >à & ¡ÿ)%F 0 `@?@@`#® àÊ¡„à ? `? `  =à"€!Õáÿâ 11aÿ5ÿ91@959` à4¡E¸`¢#0‚AD @'%%9 ½Aÿ #6!²   à 0 `8  ÿ``?$-AA ? € ? [  0@``0!?`` H!=-"' =) @- /€F€7 `?`@ ?@@aÿ @@7!ÿ $Ç«ÿáÇ!Ž@  0@?@8`@@"'@$O‚/!  à€6áÿ @ '@ !¤@-à#}` z b-)5-BCÊà@7@ Cî``51)@!&à 8@ `= 5!5!­®à /@8!?`9 )A9!¥Á·à!`8`0@!5 b=)¡¿ O`à  ?@0@?@@?@a¿A!ïÿà ?@0 =` à"À`v !Š à @6Œ0 :!Å à"g 5@àö 9€ à zà¡î ?áÿ aÿà… @/` AÏ )9 Aµ à°@ ÿ`8aÿ@1A  @@ àA6@`? 8!=@C? !?à@?@@ ?@0@?@@?@á¿à 6à?@0 à!Š á ÷   ?  }  ?à $à 6` ?€!Ï@à9€à?`8!4ààà?`*Cÿ@BA3@ àà?`È=AD >!X!…É?à 6`7 ÿ`}Àà?@@à?@y@G@Åvà@và?@8 `à8 à ?!… =`ÀAÀà d@(@G  `à @A†ÁŽà€? `? `àI®!†Ïÿàà?gà'p ãÏà? z Â@?`Âà+?@@ `@à(?` ààà¿€Á½Àå΀? a `àÀ1àÃX ?á ÿÀÊÀ€? ` `àËïÂAL à€? `? `à+™!}+¯à8 à=@'"¶@/à?( 0L~ )€àà?@ 8j j @`à?à0 8a7À"ž€? `¿ `à #  7à@'@ÿ à? @@9"6Bà@?== @?@@à!x =@?àºÀ%o ?!ï`? @à?ÿAsíïAÎ ëÿ€?!G`? @à/º+Ä@ q!ÌaÎ À€?)¯`? @à@9)Ç † @nE  > @?-ø€?@` ` %@Ïÿ ºAÆÂ ?*7@@` `bo Ž7@8 àA@'à?!z@ ¡„à€?áÿ!Å!ýá ÿ! 5Mè@9-ø Œà!¼ o €€ yâ5+êaÿ95  à!¿!x@  ø  @ à`€-ð9!?90-¿9@@ !þ >_¹@ G@@ Â`Á/ð@?/°Mÿ$þ OÀ@ÂD  : $O `?$` ?@w ?€  ' a÷À 0Áÿa8 `?-ø€? 1ß÷¡ÿ  `@ `a¿ @ ½ "`à!r!¼   ¡„  < 1 @B`"`á¶@8!ý.  A @ˆb@AMù15@-51`ιÁÿÀ 7 U` ,` ? \`? -0W!¿ à4€!Ä!…à V `y@ Og5 õ µ%-% …À7ÀÁÏ` 0Q— "K@``?/÷5%"Íb/ F@!µ €@0Áÿ1! !?"?@9)‚7 ‚üà 0!»  ` `¯ÿ=ÏÿÃÿAÆ`!Æ@@/@2 @@`Áÿ q@& !§áÿÀ r @‹€  5kÆ#‰ < à ? `` B-ûOÿ à "@Tj">à@86ú€!à q@"  !¢À1!1!ö@ á  `±(ÿ"O!Ð@!)"$/ #@à? .`0¡ÿ!A÷ @@9)f7à - !u` @À=ÿÿ7à , 1 7@@` `õ¶@!Í!YàöA÷!w` @ÿ /àaöA÷` àà v@$ 8à AÏ@ à÷à`&b? !j  f à'`à p@ ?!4L!Ð@8!ÿ D`à 7`% .!f)%¡ÿ%A÷ 8ÀÏÿà? -!©  @8 à`eà , 0  = @à!Êà 6@ `+ 9@àà 8`#à?`F ?€º àà?@8 L¸b @à€?AÆ p 8!/¤Ïà?@¿!F '!< @!!Q!Æà?!)AÿA‡¡ÿÀà?!«!°  ¿`@ y@@@ü —`à $ ( à? 8  H Ë@ÀI)0`À˜@$  €@ @àÀ@À%0`ÂÐ ,@? `? `à…Ž#O @à(?@8@?CŽ`À`†@gà 8 7 `  < ­à?@, 8 >` À < à?@@ à` < à?€áÅ€À=à?À1àÁ‡à û`­  m@G€à? 0@@M¾@¡ÎA`  b? `àeÇ'ŽÀ¡Îà ? 1 /ÿ` `Êà$?@@@?@@?A à ` à  íB à ÿ!r ¡tàà?àA`/À€@@à £@à - 6= @¿@@àOÿ@ÂM¾@OÂ=O€ ?@  @à/¹  B€+À`! ?o‡ ? @à 0 .=`8 à€@à?€@ q lŽ €?0(€¿@` `"n@n?á D` 'à?!ô Ìâ  g@?!7@ÿ@` `"§ >  Hà A 8-°@F/€Lþ*¸àËÀ ó Èà-÷1(ï`?  àc8 à / à @?‹G9@ àa¹ @ 6  0 À'¸ @)!-O€@7O€à : @=@` 0ÀOÿ@@)`?1  à j ΀@@ `€?.@5  >à?5¬!¡>Ž7áD'!8 `?€¿0x€G5¡¶ÁÿÅ÷ ±` úA¸ @a!ï @À$¯`(áÿ P 9  Áÿ ‚Pÿ 1@Ç  À°¸à / ` Ã-@J@%1 €2F%1-5 1!'@à 7@AÎ ?eÖ (ž`? 0A  à4€w!û@là W/÷A` Ag0-1* NÁaç@7  à 0 ?@ ÿ"X ?>75 -ƒ÷á6áN 0 ï`8"†@? A¾"‡@9-@_ Á÷àA÷ ? 9ÿ@`¡ÿ=,Ç€àA¶Aç zaÿ  ~áÿ¤À$G€à 7 ³m,!ÿ€@ Aý °à/à ? ¡f f@A~  à6BÖ  Ö@7 @0­€  < !³à 1 @@ `@p7$Ì¡¿@@à `€*ÿ +Š @@€5ïÿà 7`T¿! 0áÿ`!‡9- Æ @M@à !ï!±A÷ F`@@@=@` —`à4pá ÿ!Îbà/àM'Aè ² € @à/à ?ÀBAø@ 6ú7à "! ` v@ ?áÿ  N à„ÈAö 0€ƒÞ!Çà iå `8ÿ F d@@ @à !ç!i@`?!4!wà@5à 7  ÁÿCï ? 8÷àî0%W@À nAÿ`'ˆ' MàÀ'à ? FpÀ  º@€ ¡à ? $a? Aÿ@7@Ay à€?!m`? G ôààà?#0 @"aÿà& È °!} 8%`"Þà!€!q@ ¿  !‘!à@@@à !ï 6 €?  Áÿ1` À @@@à -@  à@6`/@  à @8@?à @6 `?@@à  )à @à!?à @à"?à @à#?à @à?!Z Á|À A/ a?@@à À1àÀ/@à 7@@á}à a¯@ â à %€0))€à@@6`7@  à `8)@ @@ @6 `?@@à  à8 à"?à @à? Ú ìâ `? `¿@@à € ?àà ?!Û@áÿ== `@@à €À@yãÆ =5 `?@@à !%!@ ! 0 áL 5 `?@@à !!!%€ 0)% M@ €à?@; A 0@ €!?``? @~à  j@D! @y`@8 ?@@àà 8` @?@@`  à !Rà¡„ `? `?  =à  )à4À€À L m`Aþ@91  }à ¡A!‡  A} a !?"™@@à ¡ÿÀ!BH!¯ ø`@@@>á ¿`!! B 0 Ea} 7 H =à?à @ `@! ?@‚à? Òà @ 6`8@?@@ à ÿ!Zà  ? `?@@ )@à#Òà !u` AÀ55 =àÀ€ÀÀ ` Aþ@b >@ `Áà¡ 7áÿ@A%ìbd @ázà ø!u!· `@@ 5àà!0`8!?€`!! "'   ’ à½À¾@?`8 ?€ H€7)%à <à 6`0@?@8 à 1 `!Zà `0!u`?@@à@!Òà ¡þáÿ à = áÿàý !¶@àb@?@ Êà @ä @û à   à ð`@?@@a< €!× 1!ü à ?`@!?`@ à€?DOà < @?@@ ?`8 à`&½A áÇ 6aŸ@?@8 à -)% ;à `0 `?!} =à áÿÞGÿ á÷ I à Bà @\ þ €àà f` ¿ €@àá7À ð` ?`a< àã? .`?@ `àà?`7 ` @@ àà¿€7à?@8 à!Š@ÃÇà`( `?@@A½@à@<à (` ?€  `Ààà?€rÀàà?A@3Àà ?`¨ ¿€ @+a< Àà 6`0@?@8 À`º ã? \à ?@8@?@Á¯àà?@8 `à8 ` à áÿÀAÀÀ`7Y @  5à  @#%#o À@6Y @  à à8à@@6@7à?à8à@à!?à8à@`?#¸`   à @ 8cÇ @`à#?à8à@à?¯Á½À!¯¢€¿ `à À1à ?UUE @ @>à À²à@6UE @ €?à K,'.'0à@6UE @ €?à  !à8  6 /@?@ à  @gÇ   à"?@8hà@`?(`   à !ý!$¢8à€? `7à !ê á½À?F ÿ   à  @ 1  àA Q@ <à  Áຠ`A99 `?`¿ ?à az/Ç û !0à9+à ?AA7à +ŠM³ 8 À@G+è€?‰¯à `€C 0` ` v`  8 @à  ± !kÇ 0À@?@@`¿á ÷  Á=-‰Ç @ `@v@@€- /à !²@ á½`?@@`á ÷  áÿâ =qÿ ==9AÿM`MI€À à4¡@í÷A} aL"\AS5 MR @"` ¸! @!@@ `8  ÿ H%% /=`MQ="` €¯ÿ"  0-ß`8P ­¯1`QU5`NHaï à 0@?@90G  @ - )`UY€@!í@Àä 6`@`@`¡ÿY  @< à€6€8@: `à7` Á÷à!uoï z99/ð"`I9`9 @ {à 7` $€5/øE 6 @?@!;à 8@  H))= 1 EI O))@?@!¯à `8  ÿ`=@0mEM%M%%A=A=1-ƒ· â†!6 8"Ž@ H!,ÀQ ? EA-!¯ÿà ?`0 ?` /@o÷U-ø IE)íÿáÇ 6`0 =` àÁÿMà/!b@à@6€0@: ?à `ä?à æ€â!¶ - `@tà !­@ ?!í€@-@@@?@!;à aý  )A 9 $Aÿ)@à&x` ÿ`@aÿ A Aÿ àA6@`? 8!.à!ÿ%ã· Î @`?"h@?`8 àbIE%áÿ!Ÿ =`8 à M-!!Š@ã¾I Çÿ ?àÆ7à v` €X €à@ìà ?` ?á ÿ!Laÿàà?`"Cÿ@ÀB@àà?`ˆaÿ ,aÿ@ÀHà 6`7 ¿`a< 8àÁïà@6@@`?  !}ï!ÿ`? 7à?@@ à!Š@áÿ"` ?à@<à @@@@ 4( A!·@C¿àà?A÷@?€àà?D@3Ààà ?`Çaÿ 4Àà@?@0@ÿ@ À º``à`? 8`?   €@8 `àà?@8 `à,? @  ‰ AÀÀ  I@‡  `à  @bûÀÀ ?BÇ@? @à à8à@à ?à8à@à!?à8à@à"?@8dà@€? ÿ €à`À8À à?¯Á½ÀÁ¿¡¿ €àÀ1à@EEA€?@@à À²àE!ö ?€ÿ@@à í ÷Gw ?GG@?g? ?à'¡€0àà!?`8IÿàH@?-ð€@` `à@ 8kÿ @`à#?@0!òáDA ?@€à€ ?àà!?", áÿ Ë.=aÿA@ à %bù@yà >=`¿ 7`·à -p!-@ @ +p€Iç,b)÷`?)·`?à/º B@ 8@ 9@@95%@?.9%@?à @=þNFà@`?0@à? ² ´ AÆÂ o ¸ Ê`?€·à  `7@@ `a¿ @@F 8¢wà !zà¡„  < . @â 7 @ +!ü Àâ-÷-b@A!‡Aÿ/ÿ91A=€ < 9+‚ B   yâ@@@-9€/M÷@7à à4¡ýÀ/±!}%%@É,(%5 (i%9=(À9@ "€/À`aÿ`  0!+W  H=!? H%= ?)@=A 7@? !­!ÿ°  0!5Ax €?,@1`AE5`0@ <`€GÀ 0!»  ` €‚EI€ !rà @/@2 @@€¡÷LJá ÿâ©ï+À)ê !.51=5@95!Þ À€à ?"Uÿ ?@ .5-1!4 -151 5-ÀøÀ"Ža@0`Ø HL@ €`G15 6@1-@!¯à `8 @? H%1D1 59 O K3à>%`p @K€@99@-!95!- "à ?ÿ /`´À ¡ÿ¢?"!lÀA ? 15-ƒ÷à - !u` @ÀE¢59Ávà , 1 7@@` `Áÿ1J Å@àáÿ@ 9Âkÿ!ÿ@áÿ!À [a…`  -` ?  @àú ` )@%  8 `@0@@-A¿Rà…JCK€  D"b%1%5ð@!ÿoÿÿ))1aÿ !Ø!Ö$_$Ã!ð aà �w! cï 2‡€aÿ=¢?à % )  ?@8 à5A"çà , 0#ï = @àáÿGø @Aoáÿ#Î !€à v` ?@ º@l@ ààà?`d @`nààà?`"Cÿ` @  à à?@Èÿ !Ø`dPà? &!}0w ÿ@¡÷À)Aÿ Hà !° `?!Ç@ 0@à bà $ ( 7à? 8  à!Sà #$  @?@ R 9@@ àà? d8  ?àz`à?@@ ààà?±÷`@!9à>à?A¿`ñ²H ! Â@à ` 0a? `? @8¡ÿ Gà % /-¯A@€€ @` à =à? 8  @ AÀÀ@ I # @` `à @!EÃUà % 6@'à?Im`5ÀH  ;à?ÃÇàà(?Æ à)? 8 à*?à@à? a?à€.¡Càá? à?à9À`8/À ! @@à Á¶à - 6@/à?K®!í÷Á EO@ ?@  @à Ëïà8 @à?)² º@? 8 à"?`@ 7à@`?)ꀿ@` `à 6à8@ ‘à?!ê Áµà g v!1 @ `àÂoà9 N $!_x$¶ ` à @®@ ²@àp)6 ?@ à -p 5/ / àG®0?à? !‚-» @ K¯ -é9O€@w"É`à >À 0  @ 9 91`?Nò@7à  j@@ 0 >` ?à? ò@ŒG 0@ @A°@A@¿ x @à!ª@¡Æá½ . 6@! 9 `à@<ààA 6-ª ’0=5`< CÑ@ ` ­à /` M¯ ? H`. "R`@.A!.à 7@ ˆ@?-@@0@ I n`ÀÀ à4!ñ@@ @ OOÿ'9ß`Á. w+.@wÀ€@« R?@` 0€?0J H5@ 6 ÿ0@5°@a,$þ @€ 0Jg@8=€? !0)B`0@` ¡»¡ÿÀA÷ ? @ÿ@€€EI€á ÿÀAö@® z!ÿ@ , `@ /!5À¿à 7MèAD+À€1(XP@1/ü1#b11A4à ? -{ç@@H9n3@u  @à; ˆ-ÝG† 7À -Ï`)p0@`0@à?c· à! 0@  H, .î+øJÈ, à?@p G ÿ@@)-3:=*-1?@? ¢à Áÿ*¯@? !oÀA @A@ƒ€áÿ-U'!±A÷ ?`@@@E B@5m“à ,Ai ráÿ aÿdáÿN¹!^A=Aÿ`!î`@)%Z!>-‡àf‰bH  B aUBô)-2 à =` #½@ Á!e€ ` 7 J ò :d‡  @@@!R¶$)ñ¿ '`à ^P@  ÿ 8.€ +Ò`-0@à?!ß!i á ÿ @ !ÿÅþ@Î` Ö`¡ÿ   0ïà5¨?à ,Aß@ãÿ!Îaÿ`!ÿà 9  ?!ß@#¿Auáÿ Âaÿà ?` ?@@0 ÂÀauà "``?  8 `!4  1Ø` "à ` ?`Cÿ` 8àà à H!î!}#ÿÿ p‘"`@@à!ß!i Aÿ!Çãÿ H `@4 à7 @!÷@6-ÿD2@áÿ Gà - 6¡ÿ` %÷!Æà!ÿà>@@ )@!?` /ù º@` a‘à `?  =b@@Bm @= 5Aÿà= 7 6à ?@@ aÿ àà?@!h ‰A×àà?E¿@  8  Ù @ à î ¿=ß  -aÿÀ 8Áÿ!B@FJ@à!ï 6A÷`?¥ïÀÂ5`À@55` `à 8àÀ/`à7`& 1 81@ `611€? `à 1à@à)?à@à*?à@à+?à@à'?a¼!}  À?!_`H `àà9 > €EEE /à ?á¾@Ê ?!¯`? `à-à@  @ /à?@@-@ 8  E--€? `à 0   v`à"?à@ ?`@à?!2`ô `@?@@€?!`à€ ? `? @à? 1à4 t` DÀA99`AAAà· ¤ 11)!?` @@ 9   @ `à) .  0  ø`@à?  0 A< !?€` `à  r €@0 ?@8  ` `à à @ 6`8@?@H  à 7  ¢?à ? 8`?@`áo`à#òà!}99  A==À 4@ ààz  `  >€== wà ¡@AÀ` 7AÆ!?$‘ == @à %%½À øA¾!¿ @@= @à €À=%%!0`8!?€À@à?à ?`8 ?€ @H  W`à âà 6`0@?@8 à!ï  àalàÀ0`? @  À¡‡à!âà¦Aÿ `b A` < ààz`ý !¾ @$ €D > ?àá Û@ ²â&%`9$ > ?àáy€ ð`@?áÿ A9@@?àà ?`@!? 0 `8à @%% `@« àÆ@?@ ?@@`¯@H à `@ ;à 6 €?@0 à @`áÿ!_`9 ?à `á ÿöGÿ ÷ aÿ @  HT !Úà S@!µ@ û@@`, ``? àü "f `ÿ @!D àd@ à ö`S@ÿ@@û@@à 8 ? Èá `7 H@ `@à  @ã¿ @`?  `@ à )!à@v Â!? @@ @à êà< €(à? 8  àá ÿ!   "å A÷À ` aÂà ?` ?€  Â`àà ?B@?€   €@àà ?`x € @#@û@àà 6`0@?@8 À`@ àà`? 8`?@`  @8 ààà?@8 à!‚à€ !·` `À ?àà< @6 `? `? à A ààà?€rÀàà? º`@Àà@?B¨@ÿ(€`·à€@Àà@?@á@?`@ $@ `@ `à`? (`?@` `€@8@@àà?@8 `à,? @   AÀ ·]]YQ ‡   $à @bÂÀ@6 7"Ç`?bï@ Fà à8 @@6@/à ?À8  ? w@?@ à  y€à*?€8 @H`?    à`@8@ €?€¿  @àÿÁ½à?a¿ a¿ àà9ÀII E@?YUMI@7à ²@¹@º `IEE=@¿@7@·àKð'.'¸€@HE+ðA g7àà8 @@?L0à!? 8 !@@`? à@ 0@` ?@@€?€¿à!2a4 `@?@@€á÷ @áÿà?A¿@àÀáÿ1¾-ï AEEAA 7UQ!Ð5UQ€ÀQ @ 'à4éA E!B`=+à PH-U#< g- à ~`ë¿ 0 aÿ9-+Ç +è ? ? UY€€ >@? 1à 0+ç`8 @?,0 .3@Y]€`U@  ±@l 0@?@9aÿ b¿ q`]a€ÀYY¡ÿÀ 0 `@`@€ïae€À]]¡ÿÀ€6€8@: €!·@e ÀaÀ8à!u!õ@ bQ`QM"=5MI M€ÀºÀ 7 =€?N' @F5M@/9 ? `?9+‰à 0@ 'Ç-Q  >-MQ 9-€ €?áÿ€@€!¾¿51)Q! ‘)MU 7!÷M Ð9)M!ÿ@ °E)%!6 0)0  H!+ 5@YEbQU Aþ@@«à ?@0Áÿ@7` ]0À "‰€Y Á7À@?@0 ` àa¢Y]‚!ÿà@6€0@: ?àÂ? ?aâ? #4!wA·1·9 !¾`M`MI€A=  )àÐ Á1í€@&@ Y1E@?  ?m«àaý  >-A  d-M ,-EI ‡5 @ !³à&x` ÿ!})ÿ0fM@ EAÿ"IIAE@ jàA6@`? ‹!$à1AÏQU91AÿEI @+à@?@@ ?`8 @@7@`UY9`IM9á ÿ,/ =`0 à ÁÿM¨?à@6 €? q  àÁÿQáÿ ?!ý!ÿ#5 #ÿ!¶@A¶@9!¾559B àz`@?@ ?!®  0@&à V1€E!Àà ?` ?`Cÿ@= @@-E@$5Aÿ@à ? `?`Hcÿ aÿ E P"‡E`(à 6`7 `a< 8à1-CýI âà@6!¾@ÿ` !}* @GàIM5ïÿ`6 @`  `0 à !ÿ!Cà€?)×€¥ï ?àQà;@@6@@?@ 4!g U Aw@  êà@?@@?@@?!ðáÿ! à>à ? 1U 0 1D ààà p@U û@8EÀI€à@?@¸@¿@ À`0 `!ÿ`à`? 8`?   €@0 àà€?ÿ¡ÿÀ @ à!Cà ?a¿ A¿@  ?àà< `? `¿  ,àˆY%w +¥AÀàà?GÎ@?aÿàà?Y 8@4„à à? û@@bà >à? è ýà`@ `à`!8a?   à@8 `à€?á¿¡Ç @ `à,? @  H AÀ UUQ%. @@à @bÂÀ#gà$?à8 @à(?À8 à)? 8 @?%€ÿ@` `à  7à@à+?à@A   €àÿÁ½à?@F`Hàà9ÀI-÷ =QMIE@?à / Àà =à!?Ièg‚ H@Eß >=Q Q €@àà8 @A`@=`?/·`7àà8 @`?(ë@à7@@ 7 y€I 6@@`?.y`'à!:á ?9︡Å`y G@?Ha9D AEI@/à?`6%¿ÿ 5@±"HA ÿ ‰1"ñ@ ?! o ý@Ç `ÿ€´.…  7Ax @¡ÿ$A…5@QAb!÷ ?"  4à - !u` @ÀU=@!÷àatà , 7@@` `Y` ‰BÅ á ÿ*€kà 1A!Fa6@%U9 ·!E Mÿ@àz !, ²#=@7`F ?€9!ÿ AÙ`Àü 2` 9l@@@\` -  ? @ ?a¿à ` BˆD‘aÏ Q` P€.@? î`,à 'p@IÀ!Æ)"¸ 11=#Ø`C0x …Jÿ®¿Áÿ&?!xN@áÿ)Aÿ@@@IE0ÿB?5ð ÿ %!— !@0 àMI9 $á  , ,7 = @àÁÿ"?!x@ÀJ€#.@C6!v!ÿ€E€!ÿ Aÿ!?!Yà v` ?@ ºL6@ao 5 7 n!Ä !2`@+@@?`T ?€ 0 à @@3à ` ?`Cÿ dH n@Ñ P 9-  à@ø@Aÿ@Hÿ aÿ =€P!ý!;-£÷àáÿAÇAï qà¡ÿ à -!°1@Æ@  @ à E"Èà $ (ÁÿÀ ?àá ÿ #,e @@ E  A¡ÿ%`á ÿ`? “`? @@#vA¾"õ`=  à à ? o@@ à àà ? #n0@Eß `‰ àà?gp @ÿ =!D !ÿ`à`? ø`ÿ AÿÀ@0@@Cÿ b÷à  /á¿ `€ 0` àà;@ `"  à ?à!Rà   `? ` !ø AII€x'àà?ICø 7ýà à?@8`7 @ àà?Q÷@5CÆ!0@ àà?I+à@@ˆà?97`à¡ÿ5KH Hà/ça €à 8` à»@ `  à  ? ÀAÀ@OÀ  @@à @!EãM - 6@/à?C× >à@UO@ ?@  @à%è#E&7 Hà)?€@Àà*?`@ ?``?'`€¿@` `à >`@ >`@à'? 5  ?  g v!1 @ `àà9 > "Cá$ö /x`<à!} 5@7àO¿EpÀ 7jhàMu!a g® >à ?à8a… ?C×-WMO€@w"É`à 2 ±  ,U  ?)h`7à 7à@€?€à7ÀW >à@D_!”`¿' €'à!z ¡| !° 6 ?  ,´€à 4`àA 6,Ú ‚0ED¦ }EACÑ@ `L¾"&®ÿàÂ!=aD ?/' ..¦A;w€À€/ < ÂGž >n8 =-¶€7¯Àà€@§à4-ò`, G+ï`y=5`(ã w ï!³@ÇÀ€ ¿à 0 ?5=Œ€?.º@7P@@`€á?` 8“9@!? @ï 7 0@``@EAa¼àáÿB€€UY€ÀM¢?àA¶)éHÜa¿  ÿ&íC? ``@}Ðÿà ²'ØmïNIAÎ((!U -8+>!€ ý==á=€ €,(91@€!~`H &.xB} ïÀ€5bEŒ@ÁD‰`8 6à"yà ?aüà'C @ L`€ ‡p@ F@ùàÀ5j`) 6!}10¨@.v@  ``ÿá9€ ç`8A¡ÿr8 H`0@`!÷A‰Aá¹€"&!±A÷ F`@@@U!…@"Ë@ €5à ,áÿ! &Ià¡ÿA ¿ð ¿,Á!ÿaD>€ îAT V=1`ý-ý! Á7àHÓ1bH!Œ@8!Æà!I`oÀ9à? xŒ)‘M¿b `8 >à-¸ 7 à?À! $@!t" / Nl` 5à  *àL`P@ †!u"®@9Œ@ >B`ÿ9+F ¡àaÿ.xá ÿ P¡ÿ*A!(àÿ1á ÿÂÁÿm’à $!¨0_ ¿á ÿ!Æb!Çá ÿLù!"áÿa} V`B !ý@'à 8 ‘$Ip@BBäB$a–16+7#š à>  À ?@ ? ]  0A&à +p@1ñÿ`!Ñ``% @ bn@P@ à.ð€Aÿ!Ç1¡ÿ®@).@@P ~!ÿ …à>áÿ"aï àa Ààáÿ!é @@à á ÿ@,,¯ÿ4¯ aï!¾àÿà~@@ )!Y P@`@0@ ÂÁÿp@ aÿ 1à`?  =!H!' w@e 0`­ P@Gl á? `?@@? `?@f 8`n@ * !rà ?B†@?2 @o® D "  ààHð2Q¡ÿ p@ —gc ·à!/!?1f@!Ð € q`@Aÿ à9€ . 6A÷@¿@€€â #ˆà -@6`†  ` Iâ%ÿà< - 6N¯`?@@‚/ ²p@@P@€µà $@? `? `A 3r 80@a¾ }à8  $à?@@ >`@ àà?¬òÐ@àà?9Kà@yˆà=à?¡wx7 9áÿ H!rà@  a?àÿÀÂ5`  `à 8Àà'?1 81 `€? `à`9@@A à)?€8 ;`à*?`8 ?`à+?@8@?@à'?a¼á}À?!‡`à yà7 ¸`º `EEE!G`à- } 6@ú` à$?@@-  @?E `à 0  @!€` `à@@0 ?` ?`@`6à7  -- úàü H@?@@  !`à€ 8` 7`9 `à7` "<`£Æ AA99€AA¢Gà`v à >` >àg l à )!7@ 7AB!?9 AA `à) .)!`@@?@HAà?@  !?€`@ `à { < @8 ?@@ àà¿À@?@@@?@@ ààÿ!z`á ÿ Gá w  áÿ=!ü !}!ý@=@` ,@ à`| € â‰@Q` > oà ¡@€ÿ ²a @5 == @à %%A½! @7!¶!·à=@ à €%%@3@!`8 -àà?  @ ?`8 -àâ G â``ô @?@8 à â !r`Á`? @  à `à!ê`§þ'¿  9 `b `@>B À`| à !<` $ €D€7àÁàÿ! º` @&%`9$€?àAs@á1@! @à9@@¿àÀ@+@!?5` @à  @"'@  ª@cÿ@ ? ž`§ À@G@`!Çà *``ì @?âç @ à â!Z`!$``?áß ?à '`áÿ !ý÷ aÿ @ à`t à @[@ Â@@`, ``_  ò`àÿ€ ` º`àd@Ÿ`!€`$ ?`@ `@@û@à 8  Èá  €@@ `@à  @ã ¿Áÿ@@ `@ à )!` ¶`a¿Å'!Ÿ `8 à 1áÿ ? y  àá ÿ! , `Á÷À â`´ à¿ `w à!D à À€ / _ @÷À$-  @àÀà?`x ¿à€@àÀà?@8 à`@ àÀà? @  à@8 àÀÀ ÿ `à @`à!Š`À€? `à ?à`< À@? `? à A àÀà!?€)ÀÀ€ o á àw ´€ 8ÀÀà?B¨ .H¿ à€@ÀÀà?@h à`@ `Àà? @  à @8 `ÀÀ @ÿà7à @ `à,? @  H Aàa]YQ@Ÿà]@ ' @bÂà€?B¿@?à@> ?à8€H ?@ œà =€?à8 @ à(?@9@€@? — ~à }  3@@ C@`? ?àa` ÿ@`8  €?€àee©¿!½aÇà?A¿@ài 1‚AàIIEE 7]YUMI5]Y€ÀY @ ` /à4Ló'n'À€ E+ð]!} g- à v` ``1 `8@BÓ€?`?]a€€ 6`7 ` q@€`?=g¯ w ae€`!õ]]  `@ 0    ?@@7 `?ei€ÀaaI-aþ !õa÷áÿ H ,@‚im€À!÷ `á½aÇ@8@:à?!·@m Ài i€> áÿE! UEEOÿYUQBUQ U€Q @ ½` yÀ >99  >99U`/= ?= ?= >@?-‘AA 0 @ >-U  >-UY@'- ?- ?- >`K«` /Kà ÿ+ç-)U`9 ] §)UYUY€Y` >@?`:`@A @7 !+ 9@a ' Y] !õ]@ ‡U!!À½%¡ÿ@?@8aÿ @`e¢]!ï Gáÿ ‰ÿ@A> 0 =`8 &ài¢aá÷  P]¡ÿ á ÿ Gáÿeá÷  a 8 `? !vA`1¾bQ`UQM!Ï=5MI M€@º@-æ@ =€GN'@O F5M`?9 ? `?9kk`aý  -P!}+ Q  >-MQU 9-€ €?áÿaÅA!…)!÷ 51)Q`5)M!ÿ 7!÷M Ð9)M!ÿ@ % ?%! )Mß@A÷ 5@!ÿ9Aÿ ‰"W@  ª€`µ !¿ 0aç @7@`]a„WUY=cÿY !2€Aÿ =`0 6à ÁÿY]áÿàà? q  à¢7 ?aâ?!¯#5@%D#Ç !õ`M`MI  A=  )à ` û,Å€@&@PE@?0 ?m«`á?`B >-A 8 d-M ,-EI ‡5 @ ¡¿!ø  ¿ ¡ÿ aÿ0fMY @ EAÿ"IIAE@ i€Àv ! 0à1ÿ91AÿEI €< +@ ?-•`7`@ @âUY9aÿIM9á ÿ ð 6`8 à ÁÿM¨?@ Ü@@+€? y  àÁÿQá ÿ!ý*‡ …@#ÿ!¶@A¶@9!¾559B @s`à` ?!®  0@&à W1€E!ÀÀá?` ?`Cÿ@= @@-E@$5Aÿ@à`% à?`@aÿ M!@E P"‡E Fà@ à?@@ `8À%ý 1F‡EI â€àÿ-µ`ÿ €@0 @@G`'ü!ÿ5ïÿà?áÿ @ `0 à !ÿ!C€!@ ¿ (9A¿@  ?àQ@2€à?@ ,à(!o@Aw@  ¹€à ÿ@ F á ÿ! à>à? 1H 1D àà`  ÿ `w `Bˆf E!`I€à@ @?@8 ¶à`0 `%þ`àà? @  à@0 `!þa@à  ` 8 @à 0@à!C€   ?a¿ à ?à€<   `?  $à Y%w@E&àà ?GÎ .ÿàà?EÆ@4„à` !ÿà¿Y û@*b /à  à? è!à`@ `àà? €  à @8 `à  ` 8 @à  @@@à,? 8  H AÀ!>+òM Kúà"ÿ QG–b ?`à'?à8 @Y Y à | ?À8 @?,r`7à < @? 8@ Âà*?@9@``? à | ` @ C ½ ?aw à,Æ@MÿAÅAÈà?àFÌÀA€@A-'E @ IEYMÀ À+6+Bà 7 À`º `.@EEQ ?.6`?à@à?à4'±@ €F$š=QUA} wÀÀ@@@ à8@? MI!$¢`?/ÿ@7UY€€@@@  8@9@`€?= ï ? Y]€`!õUU  @!2a4  A}@ €Aw!¦a€ÀYYEAü €? 8 `@=C× +àaeà ]Q î@ rb 9+ñA!F.õ UAAA+6 í `õAA!â ?¡ u@ ?@@ ?=I® AAI#@/I-¸€M` < ?  x`@@8 >9`- IM€ =`7à?+â  @ @7Li=B™.IMQ!…@7 `à 2  7 @= ÿ&š1#@ ?!`7!€Q@ ¼ À¿)<aÿ)¡ÿ-I!]@@@Y  QU !õU@@à?@"C 0!½  @À]¢UY‚!÷!û#ý¢?`A> 7@ 8@>àa @Yá÷@ ‘MÊ@1d?ÿ+Ú!F@õ`!†#`ý==-5E   ý `z`@  H ` @&=A «@K·`@ @ù@5=3t @8 †5R@L`` PAE`?9@= 79@>@¿öïÀ@?!I-r( 9"ÉHq ?M@/@=`@ G : <% F!ü G€!Æ)Aaÿ51# @?! / ý@Ç `ÿ[ê RÅ@u)Áÿ)Aï 8Â5@!ÿ9Aÿ É ?"  < @?,gA¿ 8!œ`@ à08 D‡=!ýAÿá`? @ % àÁÿ‡×@áÿJ€(ö!F)àAEA&!†Q%U9 ·  Mÿ@!ò ÿ@? > ?#< @&`  7A€5 ò`B@A E  @À -`@$@À?!½ !´ @ -W @ ?dH,f"_`P€.@ î * `6"?€?Š $aÿ$—n8 "ù- G  ?@³A÷Á¿Cÿ Á÷ÀÂ1ÿ0ÿB?5ðÿáÿ U!œA¾ÇàMI9!ý$á ÿ5¬7 ?àÁÿ"?!«@!p@!gÿ 4Jþ!v!ÿ€E€!ÿ Aÿ ÿ!YÀ!@ ?@@€ A…TN@ao Ê5 7 vAÃÁ?!ÿ ? -@?`T `@0 à @ 2 av A@ ˆ dH n@Ñ P 9-  À@% ' ?a ÿ d =DP$_!ÿ15-!÷À  áÿ@@C÷ qà%ý ¡ÿ à€?a¿2ç <@€ 0@ à!ýAÿa"€¡v ¿A9 -à ?àá ÿ =p , Fà A¡ÿaÿcÖ €{@à  =b ` Â"õ`=  à€ }à ?@g @ à àà? #n0@D  / À€ }à  °ÿ =!D !ÿ`à  =! `à¢àCÿ @"÷Àà?ï÷À 0 `!ýYO À=à?à ?à!R € ½ c `à  AII$ x'àà?ID 7ýàà?@8`7 @ à€ ½à¿5Q÷ 5CÆ!5  `à?II!< *ˆà?=¡Gà¢5A!_ Hàï÷À 8 ` ² € ý€à ? ÀA `@ p (.à$Æ@UM!E"} Sg`?M.@?à€Q@8 6`@ à(?%7#E&7 HUO€ ·<7€à€ ?€@ z H ?.ú`7à€@?`@€?€à7@@€`?@@@?@`¿' €'à€¸ ? 4ç  a @à$>@`9  ?@ ?*™@;(&I]@¯  ``v À / 5`7`  ?EEP¸@';w€ >`->NBÀMv!a ¯¿EA-¶ /!‹ oà@@@`à4 r ?  Nù$š !9 _  ` @@@MI 7À@ 7-AH @ 7 ñ@' ÿ-¨@€@@@€?@9@@I€?@ï 7 0@``ay €!z a{! 7!ý  €€]a€À,:Aü <` A ?@ =!¿  m/Aÿ d @@ L¾"&ï¿ 7@Ã@p@ p@E"MúM>€@õ €/ 4 ÂGž!~n8/=E°@-¾ `oÀ€>€?+¶)DÁ@À`8 >À 7€ =à ?-ò` B @+ï`€=5 9  !i ÷à? 7À /@?!}5=!: @?!`?.@€P@ »@á? aÿ8—@7 !À0@`.@Eƒy @EA!²À þA÷ ? 8ïÀ]¢"‰ V P¡ÿM¢?` ? !·IHÜ &IAÇ€ÿ!Ï@`@}Ðÿ`áÿ+Ú@G AM((!`ý ->-@@ ý==Á< !}-· 8 ?1@@ %`H &.xA½ O¾`@@?ÿB9P@`Á Ç`8 6à ¹à ?aü€@bG É€8 ‡p@ ?ð @ ²À`¿ ?!u""ù 10è@.vC Ñ ý@‡ `ÿa9€ u w¡ÿr0 @àQU=r@IE Vaïÿ¿á ÿÂÁÿ# #ûá ÿ Fáÿ!†aÿà¡ÿA ¿ð¿€¿ !ÿ! 8,ž`!¦@P@1`ý-ý! Á< a? .- @hØ !õ€J8!I€ B  0`-±p@`¿ …  @ @@ >à-¸ 7 à? ` 7pAB o Nl` 5à  7À€?Aÿ ,p!u) .@./p@ >!ù*ù ÿ9+F ¡à@¶ÿ á÷ Hà%€IE*A!(àBö¡ÿ@@Á÷àÁÿm’À`? aÿ@=#ïá÷!Π@áÿ@?!n¸  º!ÿ€N@ B !ý  êÀ@ö  …/ ,õ @0 @8$ žAD 1‚@ 0  ¿ ?@ ? ]  0A&à Gp@1ñÿ¿` ``FÊ p@ on@0@ ? rÀ`¿ ¨a¿1+I/¾-$!}*Ž@)& @P ~!ÿ …À< `?cÿ aï @` @à!@ÿ Aà TA÷ !8ÿ!é @@à#ýá ÿ + ¡ÿA‚ !Æ¡ÿÀBA!‰à`!Y &!€5€@a÷Áÿp@ Âaÿ 1Àà?  =b ` 0b­ P@Gm %á? Aö-€@@À@f 8`n@ -  2ÀAv!ö@ÿ@@àp@ d  / À`àÁÿ p@"Gc à`Ï9`1N à¨àAÿ @à>€?ÿÁ÷àâ!ýKý#ˆÀ` # ¶à !¾â!ÿÀ< à? G`à ²p@@P@ ·À`Ë  `à@80@ -! òþ   /`¿ `à ¦$H (@@ à`à?¬òÐ@àà?9@1¸Xà=à ?á‡áÿ ß Ê!wÀ`  àä%`%)@!€)! @ ) )) à!@ `G!`  + =%€?%%€/ g`?à 8!!€@ I 2@ÀÀ ?` ?`À @ ? Á%@`àGÀÀ/à? : 8 7 À?à‡Àà?`@ ?`@ @@àà? ia<`0  4`àà?`!<` @!tA^~!g  `?` ÿ` O`à9€* A)! A€/ `7à º@  @O€Á€ÀÈ ?   À 0!B @G H  ,@  ! /! ?àB@a… G`@ =à ?` ?`À : y€8   àÀ/à? rAÿ @. 8@?@ àà?` 8À ë!$ !  `?` ` O`  À/àá~ / )`7À!!b¸ 9!Õ!ßà#X áï€?á¿ `¹ àºÀ ?`€¯ à? !º 0 F!A à!—` ?` ?`À!Âb H O@‘A`-€/!«`?à 0€D 8  @à` ?` ?`À` @ 8â€~ào ?à `7`²@ H@à @ o ! ?à!R!Æ  ¡„à%@? %@? À! @ !åá ÿ Q áÿ   yâ  ¿  €Çá¿A9#ÿC ÄCÖ à ? ! À!²@à OàAÖ  / a `@8@à<¡ÿ$ *#Î"€`/ 0 `` ;   € 8` `@`/ 0à? Ò     0 à ? # €¡¾ÁÿÀ!…  à / áÿ O"€!Ü& æ)ÀÆàF/ €Gáσß! À y€‚à€¿á¿ÁAá Á 8 &à  ?!GáÏ€?ሀ Au@@H @@  ?A“A? 4@  %`à qà!? "U 7"&  b' `'@€½  0`@ /@ ? Ô  5¥= 7à 8 ` /`  @`!j!}ƒ…(Í @ ¡„  ?`  %@Aÿ¡ï 0!Ü àáÿ€ ` >`¥ß%§`Àà q à ·!Ï@¾ ¥à @ áÿ  ?An@ >à`0ÿ AÆ!î! Âmà~ @@ ?@8 M`¡ÿ&7 @@'@à  @@?@c¿  O!ÿ …÷ 7!" à 0 /` 'Ä@A@ 4 à7ç÷ `/`@?À wE-à4 Là € €*à`ÈÁ    àA} @?!Æ!ÿ !ô!o @.€à7Àa¶ aÿ -`aÿ @&€à/à!o q@?@DO@ƒ . @à /@»D¿A¾cÿ P @4 à7 @`?@@ áÿ @ à'#Â#Íà    0   ãÃÝà 0@%@9à¨6 ‚@@  à € `Ê!sAe ,@.€à 7  ® `?`@A}!þ#7 @6€à?`¶&¿`@! à ?ÀGà ?  ·`8 `É6  \à / #`?!u aÿ 3@€=à /@@áÿ @à#? -AÅ G@‰å×@Fíï ÏàX / 8 ! à @!Å`I Ý!X à >a@?@ `  @C FB  à .`/à?§ßp@ F€à!?" GÇA ÈÆà!? ±@8i¿ H"@à%?@8@5!–€à"?` @!’!¼ ï½á¾a?@A?` @ÀqÀ9À­öà .@/áÿ@{ ² Àࠀ‡à >`/@ àM÷!ƒÂ@@ à >Fð%÷  ! @8%Ç€@!Íà .`/à?.= ²K¯ 2`@à!? º@8 7@º@?@à  >`@!aL àâ · ` ÿ` @ $"Ä¡µ y!¢!íÀ±Å  .` ?` @*` 1áÿÀ¬áÿ `ñ`ó ` O€!` n ¯   ` .!¿AzáÿAÎ ä ?` >`/@?@ ` nâ À .j1@?@ `+Ã)Æ.~@0D@kÏà@ .`/à?` iÇ 0À"‡` ¾ 7 ` ÿ`  ˆ @!à  0 .E°`?à -!d!¢á ÿ¡Å* >Aï€?@ @GÁÿM¿ A!÷`à .ã ÿ¤ñÀà > w  ÿ `!"ïÿÂJ  &áï@?A4 N`a¹+I!Æ Ë P@` ‰à .`/ ?Kÿ 1ú$9 !¯-÷ !ï`?"?€/ @ 5!Ö! !Å@à > ?¡ÿ@ @IA@@!ö#ï`áÿ@A åÿ'x@>à û à÷ ‰ áÿ­!» þ ÀÁ÷ÂI®  A7!Ç !Q  `    ` €©®a¿ a¿ $;@$ [! €~@a¾ d‰@?@-÷ B' ` ! €> 7`FÀ y` `/ @?!4p >"?®? 7!A„€! á< AT`?"'  ÿ¢/ A -à ¡„  .!ï  @/ `æ!!Ü à¤A Âb)%aÆ%ß  à ó à  z €à @ ôAD!p þ à€@a} )@? @Aÿ!ûÃwà† 0a/  w!A!Æa¿&6 Ú!_ဠ0ao b Oÿ …÷ 'à 0 .áÿÀ"vÿÀ?!†!š%ïíÿ€?` IH' NAÿ£îéçàâ‚(  n`šà4 Bà€e  e ì/J7!·¨]!  àau A|@8`!ÿ 3@ >à!. 8 !A@@€ï$ÿ`8 ?@B@ÿàw @@o÷ ?!Î !ÿ !ºá ïáÿ€?á ÿ Ñ >@à û@.@@—À6à-@ @@ ²à ? @à @ó 5âà?!. …! €áÿB>  à ?@@ ?@AÁÿƒo ? @à >À?`@ @@4 à7 @à?Áÿ!¾ÿ  @à n@gãÿ @¡ÇÀIÕÿåà > 8@ À` @@@ !•$€ @‚à - ¸@ ?` ÇçI®@G ?!Ø€À -`/à?Éç¾ `6%Ï` @ =à ?h (` @@,à"? qB’z½! wà!`ó 8`§Àà"?@@y@@@‚!F!›!î¢× ÿ`!`  y  . À @à - 7@@?@ @²@  E@G€ˆÀ! @ -`o`?  `Iß!Bâi8 !—` -"ð@ ` 9‘A¾'Ë '×÷)@ @à?( 8Û÷"‚HB`à? ºA¾ @'@H à ?@@@@@@ €!#AÙÀ í!/@ ÿ`  $"ƒ¡t!Å  À€@ -`/à?0¸ à1@9!Ö!׀Π=aï`?  O1¿ é û @?à@?@ -`/`?  `ßÿB íâ AP -aï`?à-ÿ!ûK‘ yAÿAÎ!“ûÿ @ ='0@!?`  0+…N @ ALâ  #@ -`/à?@ÿÿ@® @ "N@@7 ` ` <€p7@8 à À/`à? !J!ÿ¬/a½@¡„àj¿!o@ ?` ?.¨ '%%*`@9!ÞáÿÀ -¡÷ ?  G 7€Â! ð @?áÿÀ -`/`? / `cy à 0 íÿÀ -`/à?`7AþAÿ_º-@0 àAÖ  =`/`?!õ `@ ;àDb b   -`/à?mÿBA b   » ÂÀb¾ m¯-ø€?­¿ ‡s= 8`$€ 0 à - 7O÷ ` 7!ráÿ 1¥v¡„à -!ÁÿA @²¡ÿç@!Þá÷@I   / `` a! v x‚Š â`/`? / =`A`@ ?`@ èA¾ )w @@`ÿ @ 1`?!¦@7 À G 0@@@  7À/¸A‡ `0"€?€  0`` - O÷ ?"/ ` ,@.  ”@Í À 0`@ -@@.7 ?"' ` ,!ÿ÷æ¶A– 8 ` - :@ 0@ ÿn ?d@  'ÿ`A½@@7 `@?!`!?@Ÿ@ ï¿!ÞR`@A  aö  =Aþ 7€  ` à / à"†A¿0@ à @@#AÆ@¦'&·#@ à`@ ) ADAÖaþ€?  Dà 8 !8€ " oÿà7 7  0@.@9"7l@oÿ ÿÿ &@à  @ - :@ ` Ÿÿ@8!b à@7 ` ?` $? 8ë'@!æ0à@A  ÿ aÿ@'@à 7@&@`* @¶@Úà4`L ÷à¢#¡ n f"à7À!À`8ÿ!×`#¿ }à!m`@ @c P à#?@0  @  |@€Fà -!°@7 ?` #aì àÎ ïá ÿà7Àà? c@ ²`«@@@ À.à@8 &p@€0à`l ¥$¯€yÂà ? ÿ >  ? º  %o ¼àÀ >`@ 6@8a @à? ]@_ =!€@!¿ 8 `Àà -à?!D &G HŽ )ÐÑÀÁ¡`°"  ;` Ï@ H E@?  À!a` 7 ` ?` *? 8#M¥ž!W€?àà?cÇ > @  2à@à 0 &‚ @2à@à?@ @@ €= ? Àà?@@ àà"?` Â` H€§ÿ H`@!mAo a  á÷ @  ¡‡à -@/ `?  @/ຠ 5 Çà -@/ à?UÇ!tB ®ç硇à ="°@ ?` åÇcÏ GÀ ?à - /@@?@ +H`0'Çâ!L@HÁà -@/ à?@ 0  *`  ¼à? #a4 à  ? @ƒ?``À!b!T¡t!} à @ ½@? `?  !?¿ 0AÇÀ À¬Qf°!ï  ?` /¿0@@!@à'a` 7 ` ?` )Ï #z I× Âîà?ºM aÎBGç OCÙ@€` ` +x )+ޝÿ-÷`8 à@>à?` ïÿ ‰BO@€<@ m@o `  ¢%E 8a,à .ï``?À!ª!ÿ¾ 8 à áï!÷ ?` ,h©+ 8á÷ Ià?` ?%w =`¬¹ÀàºÀ€/` ?` c1 ÀÀ 0 b à€?` ?` a²-€à`@ `   -`/€?@,Að ,`  0`à & - /@ ` M÷ aïÀ 8`àl/`/ ?  +@"@!€ 8 à - ¿  ` ÿ!ÿƒ¥ I ¡½à -!o¡ÿ"7  ô÷"Q 8@   Aà .÷ áÿ ?`àà  ?#ï`?#· @£^ ˆ  À¡¶àCÞ ¯ 7À À/ Æ + à ` i4À?!p =OÀ`0 >`? à 8`€ w!Æ¡ÿ` ¢µ`& à 0`N aï !÷ ¿&o =@a< 8`     0 € -@@  ?"' @!¢A´µ 8 à¡Å@ - :@ ?"' !? Ÿ / à 1`A}A÷  ?%% @"7`àà .`p@@ à7ÀA¾@`B Èoÿ@7 P@ ø@ -à    p@A… d!§?¹$¼¤uà @ `º"r‰6t0!Æ¡¿@ à@@N !ß@(/AÀ …÷à7à 0@.@9 !` ßÿƒ¼à!; - :@!ˆ`  aÞ :  Àâ!u ` ` à/À7Àà ? 0 _ !¿@‘@ °€wà ?à 0 >b ,b!6@à4 Jà!á g `r"@dXÆõàAub $€ Ó Õáà!m@9 ! ‰ @ =à!? 0`?€ Ž8.Y  àÍÿ„¯Mï € {€7à ?" .  ºáÿ 8àÀ!â ?!b!‹¤½àÀ`à @ .cT V à!ÿ`  @ ¢à< Aÿ&ö !t@º!À à ?!· ! 6@8 > Q  à .@? !¹ ú -` à @  ` `)@À@+ à &@') ?à `%€8%à@à &@@?@ à @! à .`/à?@@! ?@ ‡à >à?@8@?@ à >à?à8`Êà >à? 8!s Àá!À1àÁÀ ~A§á ÿà >à¿ 0% !  ÈÂà >à?!@8!!!%BH Gà€ >@ Aÿ@ à€8  à` .`/à?@ 8@?@ à@ >à?@8`ð Hà! >@ÿ`à `   7àá?%¡èáÿÀ fáÿ ^)ààºÀ >`'A? .à `!  0 àA `ç `ÿ à >`!þ@@ bÁÖ  &@'!@ >à ` 8 E`8 >à & `? à `€ [@²Â`Ô Ò`' `?@ 6à @`7@0 à .@/àÿ!R@d!e„à >ag@ áw `űÀÁ÷àáÿ! À ó Sà`g F` à Ö%Cº à @ à @? á÷ F`!¹`@A‹@@ Â@@ @?  à`: = @  q`K` . ! ?@@G `'@@7@` 0@N` .@@à? Ò@à @@@ >@@ à÷ @¡÷Àâ  &!o€? á Áöåï¤á ÿ I ä V`?¢à q à`/ 6à Î%!(   @à @@A<@ ` >`7 A‡! ?@áˆà 0 a} @H  6`7  !ú  à @@@@A¿ "M  6". `@,  ¶ Ì  8`g @?` $u`?@ ,@à 8 .áÿÀ ' `!b@Àà€?@@H@ 6 ᇠà4á÷à \ mà  † ÆàA4@% G`ÀÀ?á 8àau aÿ   !¿ à &`y!8 b7À"Á¿à &@0@?@`w @‚!@á6à 6AD ` à%!@< À/à .!ï ?  à)%#Òà111@ @9à  Cà `'àÀ¸à@­@ 7`@A<@@at@ à`î aÿ a} .`@@ @à ?!/@?@q` ‰a× l7à >À?@0` 8 `Á¿à &à?A àÀ8A›A  à .!·`¿ €?à ,à 6ÿ @(@Aà pà€- 7`5  r €º @à v ?€@A< ``@ @à ?`8 ?`au 0`@@ @à 6`7à?@aW€Â@< à /à?`8 @ã &à?A< b zà &à ? @ `ÀAÀÀÇÀ &@(!o @@@  @AEBš à @&BÀ`?  àGec†€HÆà -€/@  à%™`@  à -€/à?&?`@ 5 à)?@» 8 ?@@@Gà }à` @àà =à?!‚ Á½Àà =a§`ÿ  àÀ1à Xà/A?à@ àºÀÀ@&a·@?  à 0ACÂAL à -h)`?  à)™E†ÁÆÀà -€/@  à : @gÇ @G@   -€/à?@ 8h  ` € =à?!á4 @ à"^ =A/€@@à!‚ á½À 7@@@¿@@à! =@À1à@.Aç€? @à`ø àºÀ@. ¯áÿa2%ÂAÎ `P €¯@@¿@@à®@8!ÌaÎ À@.+è!`?@@àKè)ÆKÇ ²l   @.`/@  à Š ´ïÿjW@H -@¯€?@@à! !d?á4 8 `@.)è€ÿ@@à!Š ÁÆá½ ?Aï@I@@À"G"€ ? A€ 1  àˆ@?5 @>à€¸))Àຠ`1 @?` àA/ÿ  O¾ àG$1 `?@ à!a¹!Æ -È àge @?á¿ ?aðà=€E @`` 5€! . à1  ’ ÍÇ€@0 @mç@`?-ð =à &@¡>  0!2` -`@`?#® àÊAÆ@À ?  - / @  à"€!Õáÿâ Œ A5¡÷1 `Ñ÷ààÂ1Aï -@ }` `Á¡þà 0 aD !ÿ @@ ½  |!²   à 0 a<@ `@?$- "¼ S u´… ( @ `0 '€!A@@ -"' ` ' ÁÇ`7 €@0 &@8aÿ `7-ø `!¤ áÇ!Ž@  0 %`8 €@"'@$GÂ7#Æ@à 7@@@ @@ '@@¤@-à!u`àŽ)!¾@ ¢à4 à ]@ AÎ@AD@!CÎA§àa4 !@7`@@!= >þà '`8!?€`‚)¡¿áwà /`8 ?@â@!¯ÿà/AÅà@&@8@?`@ ‰@)¡ÿ£Ä-ç  à %"¨ /@1@@à"g -@àáÿ@-à zà "`p@ ! ²à à @@+B@AA¶@ à î`@/@8a< ` @ à ?`@!?`@ àà?@@ ?`8 @a× Há¿à .à?@0 à!e Ag@à  -!ï @9!Å à@5à@-@ ?@@A @ à ?d0 ?` óàà ?`" ? €y@A3`à ?`8 ?€@8!(`!ÿà:` >`8@?@@ `€à,?`@ @à+`8 ``¤à %€·@1 '  ? ÀAÀà - @€@ à @A†Ãžà , @@?@@àI®!†Ïÿà@-€/à ?¦ '7`‰ãÏ < @à?DQ €@@à < @à?@@ `@à(?``º Àà | @à €Á½ÀåÎ < @@?@@àÀ1àÃX@- / `? @àÀ²àÀ@-à¿ËïÂAL à < @@@@à«ï'Ç `5À€@-€/à ?( 0+ïà8 €;@ < @à ?@ 0j  ‡` € < @à?@8 `a7 H`"Ï < @@?@@à # À/àà'à? @@9"6AÏà@mï@à@+Bbù@?€²à@% ¯ @?@@àßÿâA•! ·@@@?@@à/º+Ä@ y!ÌaÎ À@-)h @?@@à@9)Ç,@ @nE  > @-€/à ?`Ïÿ ²AΠ?M·@?@@à . Ž7@8 à@-€/@ à7  D÷`á…` !…  À?áÿ"!ýá ÿ`A-ð`` àí÷ @ ·*€?@ à!¿!x@  ø  0 àG$Oð`?/ø =à!þ >_¹@ G@@  7(q` 7@ à!ü ÂD  : 0$  - O· ?0    ? ' a÷.` 0Áÿmï@  7­·À1þî =@€ 0@ @ , :@@ á÷  ¡ÿ *!j@ ¡|  $ @@ B@àÁ¾@8!ý.  A @Cå@!†-ñ1 >àιÀHÀ / U` =` 7 \`?À ð!=@  Å`   @ h •a @"H G  -  7 !à à @ `y@!@­ 7) `?P à?€€ 03—!8!Î  `@?/÷ 4ýB/ °F Ž @`@0 &@9 l@  -¯ÿ @, €ôà @ - :@ `@âG!b@ ç`!¾` @7@@ ?`@Áÿ q`.`0!§!aà@9  ‹€ `AÇ !™ < à 7 àB) 4†@âà4 Áà ^`!`!«À0@"6`  @à!ï@0  "H€ F!F$|g÷ à7 @@&@9 aÿ  ¤)f7à %`0  @ Àÿÿ¡à $ @7 ?`@@@õ¶@!Íaš à & !÷áÿ `@8à ?`&àà s`] ` 8àAÎ`€à÷€à @ ¢Š7  #@à ÿ  ?LA< 8!È "€à? >@@ aÿ  àÿà?c¯!p 8 à€~à - @@: ?à!\à ,aç 3`@A@0Àà ?N€  7à`´ àà?@@ L¸ à?ÀGà €?!! û@y¤Ïà 7€`? ¸ !? > O`@ÿà? = @ ? @ `@ @à & @@?@ `€¦ Ÿ€à % @@2@@ ? a ÀIÜÀ˜ $@@`@@ àÀ@Àã +@@@?@@à…Ž#O @à(?@8@?D`À Ô @l @à ¤à  < ;@@à ?@, º >` À < @< @à?@@ à` < ;@@à ?€áÅ€À=à?À1àÁ‡@| @à  û`­  m@G€à? 0@@Éï¡ÎA` {@@@@@àËçÀâ@, @à ? 1 j  `Êà! 1@8j`@ µ à ¿`@0@à »@@à ¿!r ¡tàà?àA@| @@@@à £@àºÀ@, @@?@@à/ÿ`ÂM¾@OÂ@, @à ?/¹  qB€+È`%¦`@@?@@à 0 .=`8 à€@@, @à ?€@ q `Õ @7@@à ?@ë õŒ 0 à@< à?!ô Ìâ  ;@á?ͯ HàA1Aï K` 1)5 @ËÀà Â1 ` 1%NG@c8 à @ àF` '!&pÀ ` 1/ï!± @ 6 €@À'· @`/à ? : @=@` 0À@w0@` o@ à s ΀ 0`Î@ ?@@@7 ?@@ 5¬T¿@  8@ @@?@@ @? Ï` 5¡¶ÅïÀâ`- @@ A‡@À$¯!ô  HààA1 @?á÷Áÿ ÀŽð ÀàÂ(--@Iø%1Aøà¡@#¯€à /@AÎ(Ú‚@Aà /aü À €@@É @à þ`` /!û 3à 8/÷`@@!D"  ?1`11aç@7  à 0`/  €7-1>7 G11ƒ÷á6¤  0@î@9 !` â Ÿ Á÷à!s`` `@Áÿ.Ø€à€1áÿÀAÆ@à°À¸à ² ïm®!¿`` Ð(½ èà/àO 7 ¡f@B@&‚@ à4!´à š _àp7!D¡¿` à !ç@@  `@#&@ÿÏÿà 7`D¿ 8 áÿ€ - ! á÷à $ At ?€ `@ —€àFxAç 1 ?` àà7ÀQ0!÷ ? A€ÀAÿà'À/àâ— ? .àBa"à *@`$?  @à ¡gà @!‘ÀƒÞ!Çà!ïiåÿ@!}"!™ $@ `à !÷ `!  à`6à 7  @e` m ? 8  àA@à , 1@ ;1'Ž àà7à -%o- €!ÿo¾` Êaÿà ? $A?@BÀAy à€? `7b ààà?68 º"aÿà@°@  Ç€@A" àAx @ ?` â` '`à  -@@`?@ @ 1` À@  @@ à-@  -à %`'à?@8@?à  = `?  à  !à @ -`/à?à @ =à?à @ =à ?à @ =à?qÁ|Àá!À1à }á¿á}À =à¿% 0) À@ =à?)@8)@ @@  =@ @ à  à8  -`/à?à @ =à? ñàóÀû@ =àÿ€£à =à?"+@áÿ`A `H  Mà €À@yãÆ à!%!@ ! 0 áL A· EaG à !!!%€ 0)) M` /€à?@; A 0@ € m``?  à  j@D! @y`@8 -@@àà 8`  >`@`  à !zà¡„  -! ?  à ÁÿÀâ5!÷@áÿÀˆ q T`55€à w U`¡A!‡  A} aÿ A b -à ÿ¡ÿÀ!BHa¯ 8   =á ¿`!! B 8!! -    à?à@8 -@@! ?@`â G âà @ -`8` â !bà €6áÿÀáw  @)à5à€ qâ"\``o uàÁÁÀ@óA G`@à ÿázàa4 áÿ H  }á‡à %`0 µ`€b"'  @£@… @à `8 ?` @€7)%à@4à .`0@?@8 à 0 `!Zà !g ?  àÀãþà@9@à M` Bà `à@v`Ÿ '¿à `Ü 7áÿ b  À!à Àaÿ "a<àaC à Af ?A}``‰  bà?@@ ?@0@7à€&½!à .a @?@8 à -)%à < -  ?!} à áÿ…ý!÷ 6 áÿ@Q áÿ l`í â  à v` `A@àà ?`8 ?`a< ,àã?€?@ `Âàãà?`@ àà#`8 à!‚@Ǿà %A `ÿ!¨  ?à@<à `5 @p @`@A àà .@? à rÀàà?`@ € 8Àà .`/@¿@  €@Àà -`/à ?€@€ã? \à ?`@ @Á¯à à?@8 `à8  à?!} `ÀAÀÀ  `) `à  @"å"ç À`.#€? `à à8à@`.@/`à`àà8à@`&@'à?à8à@ < à?@8cÇà@ < à?à8à@ < à?¯Á½Àá§`?à`àÀ1à`&@'à?áÿÀ < `? `à K,'f'(à`.'@€? `à à8 H`.@/`à`à yh   `&@'à?@8hGà@ < Gà?!ýá4 @ ` < !/` `à !ê á½À?%÷`? `à  @ 1  àEE" @@à  Áຠ` ? ¯`? @à az/Ç û áDDãEE@ 8@@à +ŠM³ @ Àe)à`?@` `à`€Cà@ &`à? ± !kÇ 0À@?@@ Ç B` Ï`à!*@‰Ç @@ @`& €?- 7à !²@ á½@À?á ÷@@ÁÿÀàA===0 AAA9" à  ­à ²` ==  AA0 >à ¡@í8 0 aL Ö!? 5 @à ¸! @!@@ @û` 5@ à €¯ÿ"  0m߀! H¯à5í¿a÷ ` 0`/`!É  @¬wàa,ꇂ 0 $`8@?@@  á ÿ ;@àÀ/ `9 `à ?B= à!4 @9 @=@ Fà ªà4!3à U@A Þbb -B @!¯à @óáÿ !`1@@?€11ƒ· ↠& @ !A@@€` 8À!¯ÿà ?`8 ?€ Hb!ÿàA¼ á¿¡§ 0@?`@@`   +@à   ?@` `Àä?à!4`b "`95€@|à ,  ²Ô 7  €? ¸à @@"A 9 9 $”)@à æ` ò`@@û@Hà=` à `@!`8 àA2½ â@á   ?`8 .àbE%áÿ!Ÿ@?@8 à -!!e@Am@à  `9 ?àÆ7à ,` ?` A `   @üà ?AÞ@á ÿ!Lbà ?`  D--= B à ?`8 ?€ @àà >`8@?@@ `yàà '  ` @@ àÂ7à & à?@8 à!‚@á÷@  ? `1 ` ?à +à $að@?@ ` AD !¾à .`/@?@( `!`8Àà .à?@# € 8@D@à . /€ `@û@8Àà -€/@? I  ``@ `à  à ?`8 `à  à ?@8 `à,? @   AÀÀ @ `* `à @b»ÀÀ`-"À ? `àà8à@`-`/`à`àà8à@`%`'à?à8à@ ;@ à?@8cÇà@@< à?à8à@ ;@ à?¯Á½Àá#¿ , à@| ` `àÀ²à`-à¿í÷E× g/ ` `àà0À8 `-`/à? 0à ;@ à?@@Ë÷ ` 7` à?@@"áD`=á?€ ?à ;@!‡` `ài§ áÿ`AAA!ï@?@@à %bù@yà ÂAA o`? @à -p!-8 @ kï (÷ AA¡?@@à /º B@ 0@  wNy@ 8@@à @=þNF 0@ € -  @?@` `à ª ´ AÆÂ` @ ¿B` `à `7@@ ``% @ @ à/@ à!zà¡„  # @` ¡à ÁÿÀâMø@‚==9" à À€À / S` >5@@?€à !A)à @ )@x.o)Iï0ˆ€ïà ¡ýÀßÿ@É$Ú%=!(²a(à"> aÿ`  0!! ð %€?0@ < à  ª!ÿ°  0m߀Œ@ <@à0Ðà 8@,@@  @`à?áÿÀÀ/@ ?``‡àÁ÷à@9$ !=)± Mñ ;àÁ÷à 7 =:!< @@7` Gà à4!¯à ` `2f9! ‘  0` à   0@   / 1! @?€11ÿ D¡Æà %@0 aÿâ@1`@ 7à  :!4 ?€ ``€ !Àà   ?`@@` áÿ@ !¿!÷ø  €A áÿÀ˜ ?`Ÿ  -`, 51`àø  ``/€8À ÀH@ à?à 0` 5 #v%5%5) à@ÿ@ÿ$A<à$_!<9!ø@#à `@ 6!uƒÿ "à=-‚?à  @!p 8 à &Ï!à @ @: ?àáÿ aß 3`@A!oàà |@ ?@!?`@ @ àà ?`] ?` @ ~à à ?` ? àyÂ`à ?`8 ?@A@@àà? = @ ?` @ @aß à &@ @?@ 0 àà º@ %@ `2 @ ?à!Sà $A€  ?` @A àà -`(à ?AÏ@?àz` =à ? x€8Àà =à ? ûA4`@!(à>à? ñ  ``@ €à , @!?  @`@8@ @à>`' à ?@8 ` *à @ `* `  ? ÀAÀÀ À`@à @!Ec– àà/à?Im`5ÀH à?ÃÇàà(?Æ à)? 8 à*?à@à&?€.¡Càá!?à9ÀáÁ¶àà?ËïB! á à ?@@i >Àà? : 8gÇ  > à"?`@ 7à@à? 6à8@ ‰à?!ê Áµàà?Âoà9 N €AAA G@K@@à@®@ ²@à /à?-p 5-ÿ @ÀUßà? !‚-» @ %%AB™àà @  @ è à¿ j@@ 0 >`@?@@ a?à ú@Š @@ @  9`@`Dà!ª@¡Æá½ :@;@à@<ààA5+-@?=5€@à  ­à ²` @> ? /Àà?!.à /@ ˆn8 Âà?A± à 0 FÑ @-=°@=`€à !ñ@ >`@ 8/ÿ`@:o°@€?à  j@R?@` @GA !€?9 ?àa,$þ @€ 0g€  7!`` ` 9¡»¡ÿÀ!3`` `à 3à €1A¿@?` !`à@´à ²(maDið@911`@àA4à 0 >1@H €@ 7aà &à4 {c· à! WÀ'Öp@"PNø1 5Áÿà7 C@ ?Au@   7  7à?á ;@`ç 0 !`   x @5 §@áÿ>7`!{   @Àà +à `"a÷ ;` à‚à¿gA-¯ ²Aÿ@À`°@-‡à`—Aÿ@B@Að@ô1-5  à ` @  €"F  ` kz?Áà @V@  0àDÒS÷P>5Ñ¿@'@àa@   ?@@à#½à?ß`!  .à=`È ß`à @@!pAt@à7à  cç ?á÷€Aàà>€@!_ Há ÿ Ò€à ~` ?@@0 ÂÀAtà "` 7 _A ?á ÿ P Ÿà;à ?` ? D àà w ` è``@@@@ "` `àaï 8  ?` ² à`5à7 @@½À@? At@à%Qà @%Aç  ?` á÷€A6à -!€@ ?` e¯@CÆ`@¬à -b`? ! `!!×aÿà=à/à?@@ àà m`oà?!< @!h A×à =à? À  , P@@€ Fà A8 @!(!* @` @à€dÌ à@+ `?à!C`5` `  `   à  8À $  @  à1 81@  ,  @  à )à@ ,  @  à à@ ,  @  à@à@ ,  @  à`à@ ,  @  àa¼!}  À? 5@  àà9 > €A  5@  ààºÀÊ /à!¿-à@ à$?@@-@ 8 `@ …   à €8  ,`à"?à@ ?`@à?Á4À >`@€!`à€ ? `.@ à7  Â?AÇ  @8AA€á÷  #¿  ±` AA9` àg à )!?` 8@@º99` @ `à) 7  0 `û @Hà7`V  >À @)) ` |`  à j €@0 ,@8 €  ào àà @ `8` à/ àatà€6à8Àá w $ @1à5àz  M9!þ@==" `g  à ¡@AÀ` ²A¾A "‘€àï D à%%¾À@ó!Æ!¿€`á¿€À=%% \`8 t`À  à à $`8 ?` àà ? êà $`0@?@8 àà÷ áÿÁ_ ?   ÀÀà#òà @1@@99€  à rà `  7 wàá@Ó@ 7b º"c€$ } ?àá `áÿ A9@ àà `@ ­ 0`à b' %%@« àÆ ` ?@8`@@ à `@ ;à  €?@0 à    áÿ!w @8  ࡇ Aãàõ!ï  aÿ à `áü@S@ [@ û@@`, @4 >`àü  `ÿ   0 à$@'@à `8@¿@@û@@à 8 &@@á  8@?@ `@à  ã¿ 8`?  `@ à )!à  !' @ `8 à 1åÿ /à? y  àá ÿaÖáÿ `@9 à rà .` p`àâ`Àà /`S ?`@ € 0àà .`/@?@  €@àà -`/`? @  ``@ àà  à ?`8 àà  à ?@8 à!’à  !§ @  À ?àà<  -€? à `@A àà &€  ` `!<Àà:` &€  ` € @@(Àà &`(@?@0 à€@Àà -  ?   à`@ `à  à?`8 `à  à?@8 `à,? @   AÀ  ]!_ @` `à  @bÂÀ`&]#§ @` `à à8 @`&@'à?À8  < gà ? 8  <@ ? €à@ º`€. /` €à`à@€. /€ à7 #@§¿Á½à?¡¿ €àà9‚I@AYYI€?@@ààºÀÊ@?€¿@@àIè'n'0€B’   8@@àà8 @bÓ ?@` `à   y€ &  '@à /  à@ 0@` @@ ?` àÁ4À +`@€áç @àÁµÀ@$@@ ?¿àÀàAE@ UU  ;à€ÀâÂEE==BÒ@?`¯ ?àéAáD==9!? EE7àë¿ 0 @û,q)@? ‰  àà 0@?@9 !A @€?à!ö@l 0`/  ¿ €à!:à 8`.@@ @€a? àÁ¿€ ? 8`?@€aÇ ààQ¾‘ÿ A= Q@ ;à  ¢à4A<à MO÷A.w!G@‰  2Xàá¿`@ó!¾!¿ 55€A@ A"@à °E)Ïÿ%!? @ G`P ?.8  àà» @8 ·``/ H` àáü€ #`0@?@8 àá ÿà # 7`9 `Àâ? 9@B= 9!ß!ý`M`M€M`àÀ ó$ 0` I€€!2à 0 >-A ,e-M 2O- € @ !³à ` ò!} @0fàQ,a  à| -µ !A!¶@à€7U€!Nà ?@@ ?`8 @`o@H &Ïâ ãà   ?@0 à Hß`)?à` @`? @  à €ä?iÿ  ‹¦!ÿ1þ¢€9`9Aý à~@W` ?!íaÿ`& ûà@E@>!jà –` ? A…--= DE A=$œ/Çà ?`8 ?€ @à EAà< `8@?@@  qà1@IEï`?AÇ @À`7 `MIïÿ!Ÿ ¿ `7@0 à Qá ¿@A¿@#§@ ?àëà `@@ ` A8@% A@!âà . õ  Aÿ T6áÿ!aÿà .à?@ € 0@Dàà . /€ `@û@8àà -€/@? I  ``@ àà  `?¡¿ @8 àà @à ?@8 àAƒà @a¿ à` ?àà;@  5 @i@@à@A#x EE#¿à@.`/à? ?aÿà =à? º&55„à =à?@@ 6Àà = @¿@` `` àà`& (€? €à@@@@à@ à?@8 `à,? @   AÀ @'^`" `à @bÂÀ`-`/à?à8 @ ;@ oà?À8 @< à"? 8  ;@à#?à@@<€`¿à >à@à0à àÿÁ½à)?à9ÀI lIIE @ @à¡¶á .@/ à7  IEIç'viï 'w @à#?à@ w/¾@_àà@ ” @ Ÿ@?@` `à ?à@% @ 'à?!:á< @  à = £„ €1@  àÈ@áÿ-øGf/6AA`>àÊÀ ² ` =à!?ÏÿMï!JiçLqBXà+â  =J(*ªE!(²€¿à 2À 0 ?!8Fš`? ‰ < à ² )ï ÿ!@@ <@à <à 0@,@8  @à!ràÀ/@ ?`àÁÿÀ@9+ÚAE õ@ ¼ @Eà à|` ² =p @? G `?à  à4︡Å@Á$Ê-99 *aA! ‰  "à`6%¿ÿ ' 0))`7 H /  ? ?à¼âÅÍç aÿ" H @9@ à€?à `0  @ Àà atà€"@7 ?`@@à Á÷à &I_@r-à!E  À!` `àz ÆG!} @>à=`6@? U9àÿ@5A@@H@€@]€ H  8 @ @a¿à ;` b‰ ba R`0®"‰=,.@@0àA¨@)€ Ä GAD€#Ì G '}®¿Áÿ¡¿`áÿ"  @ %O+߀ ?à€@!x 0`à1DÀ âà  @: ?àHß`M¡®áÿ@Aÿ 3`@A@àa@7à @` ?@@º@& #`5@9Rh Àù@+@ @?`T ? `@ ?€8 @H  ¯€¹@3à ` ? #…-„ .RÑ`"z  à ø`@!ÿ`!ç 0à @ÿ1=-ñ ÿ y 6  @ à@æ èA`óà @ @?@ @ à 9ˆ?à  €2€ ?à=EAO€  —@ ?` @Aâ!?A¡à -!@ ?` @ÂF, f4  à -`/`? ]  g 0 à à -à?  `= û@qd à -`/` @  7 @8À!ÿ`à , @ ÿ  @`@0@ àb÷à@ `?à 8`àà;@``€*à ?à!Rà  @@?@@à`A2@ à@-€/à? "8 ’Hà < @ '`@@@  8@?@@ à@%`'à?@@ j¡!0à@ < @à @y' à?/¿`?@` `` 8Àà@@à @` à ¿@€"à  ? ÀAÀ Àà@à @!EãMà  àC× >à@à0à?k4%@À@à)?Ku@?€‰à*?`@ ?`@à+?@@ >`@à'? 5  ? à'?à9 > €AIH`@K@@àáÿ  /à!?Mu!a -@Pà#?à8AD I ÑP@ „ Gà· @ ? 8   @à$?à@ ?@@ `à >à@@? @`Dà!² á½ :@;@à <`àAE/~@?E0Ç@à ½`!4À&e]p@@= ?àË9ÂN >m~ và7 T EA-²K® p gß.¨@ÁP@€Àà ?` : 0@?@0p ?à 7à@@,_!}5€?à?a4À 0`¯€!  ` àa¼à ±`` `àà: €1=-n@?AÇ@>!`à ÀºÀ ²'ßm®!=AAL@6! à á<  €,( !‹@ˆ G  >à  à4aüà'O O)ß` b‰ aà  ¶àGA @)!) 1 @=@ àÁ7À`ç 8@6 À` `À¡¶à` 8@  `à à8À`%Av@?A!†@à‚A`¦@À·à )_ Âi§@!6à`¸  %`á8à!‚-˜ 8 `@!uà/¾`@>.AÀ6-± 4GÇ5-€`@   'àp@  @ À?ÀA@  8 Ubb .` 7#àP@?@@à ?@W @  ?ä- 6@@>!6€* ²àX>ß .@0  à$` §à @@!x!ƒ`àæÿà?cn ;á÷€Aà€§á ÿ S!5 áÿa} Vàb@'à ? Ñ p@B@Æ ! 5  #œ à  a  P@ @0N&àp@aëà wa¿ AÇ@!Æ)00  b9@H@P@ à!÷ ` ð !ï 8À)  ~ &1=à?Wÿ€`@aï HàP@à À@? !C`à¢à  áÿ á÷€Aàà<@ - —@Ý s` á÷  ^ !ÿ@2à -!@ (` @8ð@Gl á?  -!6@ ?!ÿ   @`nàá¾!î@` ?` p@@Fr fê à€o` ?  âb' ‰ ·à¡p1!ç@?ãç  áÿ à9€ %À`?àA|@à$Ùà@ @†@?@@à€9áÿà< @, @@?@@à ² A€0@€µà @@@(@@à€8"v H0@à8 @, @à ? û$˜ -  à ;@@à?@@ ?Ià @@< @à ?AÇ`8 `à ;À@?à 6  û @!rà Àà ?€!`9`@9€9 @à€@ `/`à7 #@95 85  5@ 5 @à5 @€@à*?€@ l@à+?`@ ?@@à,?@@ >`@€à÷ #@5a¼!}@ `@  á_ @ࡾ III` à/ @à ± À` >IÀÊàŸ@, à@0 >aÿ ? ‰à/ @à11 0111`ûII1A… `à `@ -` ; à7 /@ > 3 @ @ ?` @à úa@,@8`  àç @à€€6à8Àà / @à jà4€@EE==@OE @àg@ à!>` ²==aK@@` /á?À@óBaÿ@?@Pà?-  k @-- 3`€@@à ` 8 € ` @àÀ@$@0@?@ àà?!z` #  ?   Àá w @¤? =@„AAÀAA€AAA@,à `|à @>€  @7 oà àÿ€ /&P!  ?` 7à )á¿` aÿ @û @€@@à  )@@ l 8@?àà 7  à?€  ?`8 à ` à€õ ï` ÿ@ @à @àÁz@ ¦ ?àá÷ @áÿ%Ò`@x@@A"à  ' àà€ @= Â$   @7€wà ú` U` %` ºD[` ?` 7@'@?à!r` A~a   @À==€` àÀ `8 ` `@à@G@à)`¬ @@º`?  @@à  ` 9€ @ ?  à À !b` @!`  ?àÀáÿA¸!÷  $ÿà  `0`|  !ï àCÎ %à 7``€ý`ÿ%ý? a a÷ `Ä` @À fL `8   y $` 0à À `/`? y  ``@ à@G@à? /€?¡¿ @8 à á¿¡§ @ à  À @A@à@ @8  àáÿ!!ï  a÷ `@9â .!É€ &`Œ@?@ à@Â@ @àÀ .,   D? € 8`  &àÀ &`p@?@h à€8àÀ -  ?   à`@ àÀ @€  @à@8@àÀ@ à?@8 à!‚` @a¿ à @  ?à`<  %!ç @ à `A@' ( à -` ` à  û` à;@ -€ @X à  8` @7À -"( W (¿ à 8` À< -  ?   à `8 `À @€  @à @8@@À@ à?@8 `à,? @   A@aa]U@@@à @b à,?@8@@@Šà+`y @`Ë ¿@` `à : º@?@ '@ÿà/  à ?`@ @@ ? 'à >`@ +`@€à!ÿ 7`   àáÿM@I A]]YQM@?àa<  =I,/à$?KðGƒ@@ >A  à'q`@@É+ï`?à$?€@ m 8@?@€ÿà ?`@ ,@8(§`a? à!:a< +`8@?@H àá ÿà'?BA1}!€EE AYU!Ð „à!4à4!>€ EAA+Ø PH  àë¿ 0 >@ =`€¿!…`Çà à?@9+ï!@@€ 73  à €¼b?@8   Háÿ .`0@?@8 àà!º`€" 7`9 `Àà`<@1´EEB EBUUÀ"AU€!Q@Q @ º @D@? @.`0 @'=Q€#T 7= >`!:à 0 >9FX >`@/ €!…à?á¿` òDÒ!O`!  / 6Y€@U@ `4 `@!? 0 `8@?@I@?]€ `YYIà¿ +Í !y @`à!7 a€(™  P]á?  ?@8 à e àaa¡| ?*o`9 ?ài @Àe!"` #5 1, = A!¾@QQ€M`M!·@QQM` z` ?€@? û =b@ O /==MI@7 M€!2` ?€Œ& GA}55Q 0.5Fh"5 w 95€‡95!º` ?Á¿€@@@GàEBQU Aþ@`t ` €`8 ` `¿UY€Y  :`  @?@ ºàb7Y]€]] Ù€ @ ÷@ @ @@à]a  áÿ + à ?à"‰€aaü @ Aÿ€ !¶#¿U!® U Aý=9 AÆ!¡€ .m¿@@Ô  ?d@F ?àA=@Eï€ .!5   àb1D@.&˜K¾1&«E$ )€ >o@?@@   0 "à 6AýI À -€/ @  ``@ `× bGIMàþ`ï!¶`ÿ  € 0`àa_MQà@ @À?à 8`à"Ê!` €€)à ?àà? I`?@@à@A!o YY€%Þ  ú`@. þ€¿@@!à@@@ºA  âà?ÀG@ 8DWY  5B à e ' @"ˆ@€ 8`  5ÀÀ % @?@` ```8 àÀ @ ? €à@8@àÀ@``à 8`à!B``@€!à ?à`<  `? `à `Ah'&¼B `.@/à? `?$H ;@ <  `` `à 8@?] @7À`&@'à?@@ `À< < `?A à  y`  8  <@ ? €à @8@@À@``à 8`! à,? 8  @ A`YY)^@@@à @b  .@/ à7 $ Yïÿà,?@y wDš Wà& @ Œ @*d`?@` `à ?`@% @ '@à/ @à >`@@@@  à!ÿ@7@@à%?áÿ.MÏ+é®÷à ó À` =à)?KïGƒEÏ >IBPà#l0 @N± @,§ ï·A-'? ?€EA $’`?ï1ÿ+×l@ _ï*ÿ ?`Âà!z ò`@@ @à‚?‚A-øA†"@AI!à |`!4 =E0?``Gà? /à4kü N±!¾=`-×Q!/ÿEQ ¿/ÿà :`A¸( =I@  7  7.q  à "?@,o`0*'aÿkß @a? à@<@ #`0  @ Ààa| €"@7 ?`@@à!ú€ &- A¿"@  I @ÿ@ &`#ª"&mê  <'Ñ ² @?!…€!} 7MA… aAA"" 0* @ÿ9=  N(!Æn0 >AD@/I  /Qˆ@ < ?à  :K`8*Yb ^ID¡ 'I @à  Øà?))@˜@JE!3E!°` o  7 6Q/@(àÿ@» aÿ,. aÿaÏ 8AV@ N Uâ! ;`  @!x 8 à 0ÂàQ”?   @: ?à0ÂàëÿKÐ 3 AE@Oÿ!oà@ÿ@ýïÿ xbKK!½AÆ+ï` %`@V=-µ !½ !·m… xn?I@OïBH Nx`B˜@/#á  @ A³@@€@v Žb‰ PADi N }@w `9@3@Aÿ@@ 7`!° y55 ïà"O &" ?a`»@  @ ?` â@ž@d!÷à@;@ @ @?@ @ à !÷  áÿ €2€ ?à"‰€áÿ*î!† ?` @AIà a? !ù` -"}@ ?` !Û@ÂE!å %•`!µ  @ *5QD - / ?` &FX à@H    A;@ -!5@ ` cÏ -d /b‰``à? `? 8  11!ï ºà91`ÿ5 0  , @   @`@@@ a' !g ,‡ >` `?à 0`à4‡!=`  €*à ?àM!` @@?@@à`AI€Âáÿ!ø€?@@à`º ­ I@µ #¿`º`@-€/@Àà º$!È @°à  < @à?@@@ 8 oj¡ 3d À@% ' @“ç `@‚ ?`À=À?á¿ Oà @`àÀ + @à 8`àà$? 8  àAK@ @ `" `à€9Gç"<M$ `-`/ ``à` ?@@? 7`  `` `à 8 ?MH 7À`%`'à?@@ ?`À=à?"`à  `  9€`-``à 8` €=à&? 8  @ A€YH`@@@à @b‚  /à)?@8@@@Hà,? @Y@Ëà+ @ è Âà*¿ 8@?@@ a?à >`@  9`@`Dà = `7 `à$? º``9#Ñ  ?UKî à ² ? 6) p@ < à}'§ 7 >m~P€ < ௾ÏÿEU°@ˆàà : y@?@E ?!.º€?à ?`@EŠ0 ?à$?@@$OAŒ’@€` ‡àa|¡½@@@ à <``9!À  ?` M&î@à ½` ²(ÏaDp@@*ž€?àm´ Kß >ð@"ˆ!…<-@~à &à4Kû) ,N G  M°@  à :`NÙ @9‚Á@?@ ?:*  à ú`a( 8 !â`ÿ àa¼ " !3   @Àà :€`"I!@?A¿@M!Ç€‚‡M"å@ME€Mî¿jÁ?ø º+ðaÆ  -0/<€@ M>#®ï¿55-, ?!ƒNx"/§ /&AE!€ u@€/ 3 }55=1)Þ5 @  8 EB!@/0>€w @@€A) 'B9) G€8 bÊ °@  € Øà?aü 9@Ù $ x,oA} ?` ? 60@`(Àÿ r` . b! ó à$` €MI ò` @@!xA|@àçÏÀQ`< €I@Å ?á ÿ€Iá÷ áÿ@@-à !ÿo¶ cL Nà`ÿ @ÿ á?Á!ƒ H@()¦)á !ÆaÎO¸ð@AùN?08 ?`@?1`@ >à"ÙP@~x OÞÀ x`a !†1!Ï 0 >`º.7b‰à  2` / ` ð$!Ð @1R0 9 28 &`ù j` .@D ?1a_ 8à !÷`  ý` À@? !C`à"‰€áÿ€á÷€Aà€ áÿ€€=A… s` kç ïà Ð@`ü@ -"¾5  0` ’"OF $=Ò/ý!‹ #ø À `?9@ .'&Ù!¾àBP@  5a¼ w ` ` !ÏcÏ ‡d b‰`9=5  @ø@  ?1b@!ï À5 .$€>Р>áÿ£ß  @aïà0@ ü` À@à!C`àâ?@¶@+Þà€9áÿÀ`| +@ þ`?@@à º I€Â0@ :` @@@(@@à€8‚ð @¾!o @?@@à$ = o Aø€á@, @à?@@a×!÷1'à !ïd!¸ @$ @à?à"@@Ä1¨/‚¾ À@?àá ÿ ‰ :`à0à ?€!`à! ``€ #à  9)ž@M2Á€@  `à ²@E >M#€@  à€@dPP@€=à"?€@$€ Hà>à!€@0!á}à$?@AM!Ðà@ Ààÿ@ 8 >`}á!€A|@9`@9@ à €@  6à!7 +@9 85 @@5@ à" 8@?@à$7` g@z `H@` `à ; @ ?@à/`à'@¼ @  à`àA¾À8€F á_€à 9à7 ÀaI @Ê@qà¯`à } >@7@@` !à€à 8111aÿII1` `à1`@ 3` 5 à7` / ; ?@8 à ` à ü $@@ à  @à ?A=@% @  Àà7`5B=@@1EE==€EE@ E @à |`!@>€EE@@7à·` !¼ ?==!  ?` !á7`  < aÿ @û @€ `%à-` + 8-- +à@@à t11@?@8`o @à ` à  = `8 à  $ @à a~d@8  àAg`!o`àAAþ9A===  AA €AA@@  à  | %:` û@>€AA@@7 oà  ü #r` º&P€ ?` 7 ÷à a¾!  @û!Æ€AA€@@à  ,--) d` `@àà 7@@ = @?@ `@ à ` à`ö ÿ@ ÷@ @à @àav!`¡g ?àÀà!ü   ` @ABà `à | Áÿ`=@CÎÀ @7  à ü áÿ  ºF` ?` 7  à!| @ AW  @` == À ` ` $ 9  À 0`à@G@à)À¯@?D¿@  8`à `  ü `?âß 8 à  4 @ !d €(á×@ ?àà'!ü áÿ #$ÿà  `9 J`A@ @à  =à 7`  ü @?  Ï€ ` ºEÖ`Ä` €  @?@@ `  €@` 0à ` < A?$v @à`@ à@G@@ 4 @?Á÷ @/@`@8@ à  · `?å០8 à `' < € à7à ?à@/!ž @? !ÏàA÷ `@A@à .  | @? A÷à @ @ à€-  7" àD? € @`  &à`U€?@ à€8à  < @@  à `@ à < €?AO`@'@à@8@à < à?@8 à!„ €ëç   ?à < `?  à`A '@  /  à!? )@/#D@` ` à 8@?@ 6 /  `?"  =#Fà @`  7à? K  à`8 $  D ` @à@8@$€ < à#?@8   < €àw `w@8  A eea]U à# @"½"¿à,?@8 >cÏ à% y ?à,?€@l@€ÿà$` ?@Ha? à#a<@?@@ à'½`9à)?áÿM II Aa]YQM „à]@ '!uà4Mø'>'@O¾,_ @W à@~€ 0 >@+ï,§  — >à = ?@0@?@@?@ ?àa``@º `8'Ï`€àee@á ÿ  ;àii $á ÿà?m <`A}A!<YIIOÿ]YU"]!…@A@Y à#z` ²@>0? 0 `'Y€!à7 F`!º`- 0 >=Y  >=] @/ €#T 6`7 ` +µ+§ /+ç!`=` / a€! O@à  =@?@8 `8@?@`e€ aaIIaþ  `¿ ?@0 àAß!¦â÷Àa?@?@@ à m àa÷ `a¿`? @  àq @ÀÀP@À?1vB@BUUÀ!ÏAUY€!uQ@Q @ TI–@¿'}@?a¾"O 0 @'=UQ`7=UU€ >` ?Á? A}99FX >` g= Y€"Ÿ  >À?!½!·°@û&Ò)g`&ï  / gY] Aþ@ ‡@à@ = 7à?@0 `@?@I@']a€!÷=!üa ‰@ · @0àA' 8e€e ]]@!=a? @ ²@àeCï a÷ aa  = 7€1€? 8  à"‰€Àe !% ç!¿Aw %ECÇ"`QQ€M`M!w@QQM A@ÿ }`  @?   b@D /==MI@7 M€ /!5!7ÁÿàOA}55Q 0.5Fh"5 w 95€‡Açá¿!ÍA¿ 8 ‡àE95!ýQU !ý!ÿ`? }à`  @À@G@¿UY=5!þ!ÿ` = 'Aq.€ 'à@@ à@ïB‰€]` ¥ _@?-    @ à "‰  áÿ€Wà ?à%€@!ý!÷kU  `!¶#¿!Ð`UU€Aõ=9 AÆ@' ½`¿A®`¿!®€#Ç@ @N@`A=@E`g!=!7áÿ` € @ X1D .16˜K¾1&lE$@' = /à?@   0@à/èAýI €% à? @  ``@ `× 9aÿIMa§ í !'@ @à 0`àA7&Q@ = 7@?Á÷à 8`àQJg!!G€!Áÿà ?àj§ = ?@@à `A 'ÖY!w $  . ½ ¿@@À!à@@`º  aÿ`à?ÀG@ 0@H 5B @o  @ÿ@@À"ˆ@€ @` `À@- '@?  à `0 à = `?á÷ @/@`@8@ à =à?à 8` à!E!g€à ?à =À? `à€A@&¼" . = ` `à€º`@>@/  à? º )99J 6à)?`@@7 Hà?A '@à  8` @G L €¿Ï_à@8 #À =à?à @`(€ =à&? 8  @ >a—-DO&^à! @"½gïà,?H( >5AÏà+`y@?@Ë,b ½ à!#`Â`?,² < à! ?`@ ?@ ?eW@à@?A E @à%BHA½ < 8@à%@1!þaÿ¯ÿ ýn×à'? oÿ!}a….?P?A…à$?à4p8'¿N± AY Ñ Y ¿à ¼ QM'Ø 011M@$’ 7  ?/ÿ  à  < `?@0@?@KÏ@÷'á @à,Æ@Má ÿ @4à]]`?"@ 4 .@@Ààa‚?ÿ.'VNå€QMIE@ÿ@@I@ ô õà!ú` ² =E0?!…  `'#€aIE,>+Âà)Â`?@8 >Nx EEK÷`' @/ @`@@@ +ê``8*‘b-×QD™ )!U/÷@!… @àMè@@rx(š/Ð` o  / 6Y€! G@à"?*%1-"?@0@@i‡ @@÷!¦€ YYEAü À? 7!x 0 #à k¦à]Q Áÿ(?@? @  àmçàK÷@áÿFÀ!}!†@åAÇàA@€ýEA#ê!ç-ê E ~ €`?dG F G!…€!mAA-¶€a}AA!â ?A ÿ!'m, 8!Æn0 A4!… .8€$¥  < àa¿@¿ F1= û!Æ9b IN8 'I NÀ nÐ < À?))@?Bÿ99à 7 gQU A@@ ?!¸@waÿ ~BN@@@C^@ÿUY€!÷!û#ýâ? /!p A  A} à0  ÁÿQ„? , Šg ` à "‰€ÁÿU@ !v¡ÿ@!ç!@A5Žà@ÿ@ þ ýAo ~ €IU-© ?!½ 7!Ï`G!<€ /==-µE  !} @o-†1A/î5@OïBH N€`b N7`@ ApA·@€€"O!}95b‰ PAD‘ N }@w `9À?@@?Aç  @55 à"O!ý ù ?aî€Cÿ Æ¿  8` @–@d$‡=!ýAÿT°@. 'A²5 @  8@ à!÷  áÿA>@  ?à%€áÿ`"À`A @Iàa? @Ø!¶aÿ @`  …@7 Â-è %•`!µ  @@(161A¿ @ 7À ‡ 8@F` `@    A0 >!@á @@û 05d /b™``à? h@. /@à @11‚À91`ÿ5"¹ . 6áÿ  @`@@@ `ß 9!ý$à  " ÷à 0`àIã  Á÷à ?àMAè! @?@@à €A€Âáÿ€?@@à €º`I µ@#¿‚0 à?à‡`@!È  ®à n > @¿@@à  8 h /d  8 @à ?a^ ` @=ä&· `8à?Åà @0 à@ E @à @`!à 8à!? 8  à!ø!UAg`@@à 9`MM$ - > à?€' MMDà&? º@@Bˆ$H`x @F@ €à 8 MH 7@(    @à@@9%€ `8à ?"`à  8` @xà?à 8`( @¨ … €à ? ` ? oÀ  à!`@"¿ à,?@8 >%þà.? @]°@ˆàà! z y@?` ?à! ¹@8 @à,?@9@?` @à@P@  `à$`1a ?+[  UKî à&½ UM¦ ? +š@P8 <à)F@Q< Iž)QIM¶@?h  _à€@à4 z ? h EEU°@  à€Qg¹ @M* @?@ ?,2  à €`?@0@?@`ï H` à!}@á ÿ!Cà]€?C a¿@8AÇ€‚‡M(þ@MI€Î `M?¿ Dp@@?&€-ò/<€@ `öà- ;@Kß!ƒNx"EE"ˆp@M!@/%o€-¾NBÀ$ºp@gÏ >ÀMB gM0>@w `À7ÀKë) €8 h A ?B‰@'  ï@@÷À7À\iL0.È ±9I é  ?` ' 0@`! G@àÁ?Áÿ@ç@@à$ ` €!yaÁÿaÅ!x!ƒ`àíïÀÖ `9 ? Aÿ!† M!¿ à@ý@AÎ@€MEÀ¿ [èm÷P(!àd!×@ü-@EM>!çAÁ?` ?`@!†@AÎ@H/&AE/¾€Aý €A08'e,?!>xŽ(N ED‘@/0>`7°@€>EA)) ?)/ÿ(YBÇ>‘ 8 ‡` °@  €P@ ;@à¿`?"GEÿ5  ?A ? g0@Eƒ @ ¿£?aÿ!Eaß 0à #õ`áÿMI!7a¿ !pÊwA|@à"‰€ÁÿQ`9!ý aÿ@HA߀9à € "{ áÿIo¶ cà`ÿ @ÿC­Áÿ )U#ÌA (!ÏA`HBAÎ /0!{  !}==-¸ /!ÿA¿€ 91`@ à"ÙP@~x 7ÞÀ wc¿`ÿ … dÏ="O#Î90h ! P  ``À?ÁÿR8@GR0 01 9 =r@IE Va=`ïA÷&?` >@` @à D!}!áÿâD•@áÿ@ _’§ !… à ²Àáÿ!7C¿A} À”à.8 Ò`Ð@Àÿ Mž°øà€0.( 80@`!}/ý  08 .  6@"À. 8@@@" `@` B Á¿`!ÿB~AÀÀ Ð @ ‡d b‰@<0@ D 7A®"o ¿@  d– ` @Â5¢&¯B? ° ?áÿ!q @` @à!ýP@!w ÿ`!XÁ÷à!`àâ?¡ÿ¶§à 9 â`yà þà    Â0@à?@Í@à €@aÆð @aE@`AM@Àà`@ o Aø€€9!· 4à ?@@@ 81'à !ïd 8@€à ?à y¡ÿ1(/@C7@Õ@@?à @â`9à? @  à"· ¥` àà9@'M2Á à$?`8 G (oà%¿ `8 r P@à(? @¦9€ à y ?M*!}à)€@#ï@Hà,?@8 >`á'€@Á@gaviotatb-0.4.orig/gtb/gtb2/kbk.gtb.cp20000644000175000017500000003020611536321052016705 0ustar varunvarun@€3€3<< h#›*†0` à' 6  € à%@-@€@` @à`$@@`à%€-  €à% -  à%à-À Ààà-   àà-€ € àà$` `@àà$@ @`àà$  €àà$àà ?ÀÀàà $  àà $€€ àà ``@àà@@`àà`<àà$à ÀÀà à ` à àÀ0 €à à €+€-` `@à à @)@à à à $à ÀÀàà  `à   àà  `à€ € àà `ààà-à#À Ààà `à    à `à$à%-àZÀ àà `à@  @`@à@$@'à3? <  €à$€-@=à$6à,  !Gàà$À- ?À7ÀàÀ$ ? ` àÀ-`=€9€ àÀ$`?  `@àÀ$€? €`@ `àÀ ? @€ €àÀÀ?à@  àÀà?áÇ  àÀà? à# -à?   àÀà? ` àÀ$à4@ @€ àÀà?  `@àÀà? €`@ `à Àà? @€ €à Àà?à @ àÀ à ?áÇ  à Àà ? à $à ?   à Àà ? ` à Àà+@     € à Àà?  `@à Àà? €`@ `àÀ à? @€ €àÀ à?à  Ià?áÇ % àÀ à? à à? $ % àÀ à? ` àÀà"@  à€ € àÀ à? `@àÀ à? !€`@ €  à? "@€    à?à # `à?áÇ .À  à? %à à? - .À  à? `    à@  à €€@  à ? ) ``  à!? *€€@ à"? +@  @à#?à, `à$?áÇ  à%? .À  à'? 6@8`à'? € à  à à àà€0€  @  à``@ @  à@ @ à,? 5@@à-?AÇ C@ @ @`ààà8`-@@`àà $  @``@àà@$ à4?`= D@€`@ `à à€#`@@`àà $ ?@ À`@ `à à  ? @`` €à à  =@ @`àà $ :@ @`àà $€? €`@ `à à À?  €àà $À?` àà $@8 @‚€ €à à à? à# -à?   à à à? ` à à $ 4@   € à à à?  `@à à à? €`@ `àà à? @€ €àà à?À@ #àà à ?áÇ  àà à ? à $à ?   àà à ? ` àà  +@ @`   € àà à?  `@àà à? €`@ à à? @€ à à?À@ ,à à?áÇ %à à? à à? $ %à à? ` à  "@ @`à€ €à à? `à à? !€à@ à? "@à @à?À#àà"?áÇàà#?À,àà%? -à àÿà%àà&?À/à @à@)à à!? *à  à"? +à  à#? ,à  à$? -à  à%? .À  à&? /  à'? 0€ à(? 1`à`@@`à@€€ `@@`à```@`@@`à€@ @ à,?cÏà @€€ àà wà@)   € àà  Aà@ @€ àà   @`   € àà @ à4?`= D@`@À €à €%Y`@   € àà   ?@  @À €à   ? @@ € àà   =@   € àà   :@   € àà  €? €`@ `àà  À? € €àà  À?` @€ àà  @8  ‚ €àà  à? @à -@à?   àà   3@ @@ àà   4@@   € àà  à?``@àà  à? @ àà  €1 ` €€ à à?À@ #à  à ?¡@ #à  à ? à $à ?  à à ? ` à   +@     €à  à?  `à à? €à@ à? @à @à?Ààà?áÇà à?À#à à? $à  àÿàà à?À&à @à@ à  à? !à  à? "à  à? #à  à? $à  à? %à à? &à à? 'à à? (à à ? )à à!? *à  à"? +à  à#? ,à  à$? -à  à%? .À  à&? /  à'? 0€ à(? 1`à`@   € àà€€ `@   € àà``@`@   € àà%× @€  @  à@/``@ @  à`/@ @ `€ à€/ * @€` à / à@  àà8à@  àà/ $  @`àà/@- à@  àà/`$@ `@àà/€-à `àà? + €Àà / ! à@` àà-`€9€ à`/@ $€` `@à€/  $ @ @`à /à$à@ àà/ -à    à à/ àà  à à/ $à@ @€ à à/ à@ €  à à/ à@  àà à/ $à@   d€Ààà/ à@  àà à? 9 €àà[à@  à àà/ $à@  àÀ À@  à àà   àà@  à  à àà À$   à ààà@@E@`à  B@€ `@@`à @ `@`@@`à   ` `@€`@ `à  @  @€ €`@ `à  ` à@@`à   à@  à     @``@à  @   ``@ `à   `@  @  à  €"L`@@`à  à B€ @`à  à@ €`@ `à   à `  à  à@àÃ`@`à   à`@@`à  à`@€`@à  à`@`@à  à` @‚€ €à`à`@@à /@` @ @@Àà   à`@  @ à   à`@   € à   à`@À``@`à   à`@@``@à   à`@@`€ à   à`@@  @ à  à`@@@áÇàà  &à`@@`àà  /@` @ @`à€à`@ /@` @ @` @ à   à`@@`   € à   à`@@`@@€@` ` /@` @ @``@@`à   à`@@`€  €à   à`@@`  @  à  @ @`ÀáÇà@  à`@@`à à /@` @ @`àÀ À@   à`@@`à    à @ @`à€ €@ /@` @ @`à` `` /@` @ @`à@ @€ /@` @ @`à    /@` @ @`à #`à  $ @ @`àáÇ `à`@@`à  à`@@`à à  à`@@`à Àà   @ @`à   /@` @ @`à € /@` @ @`à` /@` @ @`à@ /@` @ @`à  /@` @ @`à!Ç@`à`@   € àà`A`à`@   € àà /€€ `@   € àà@/``@`@   € àà`/@@ `@`@À €à€/  @€ `@À €àà/  @   € àà /à @)   € àà /@ @@`   € àà /@` à @€ àà /@ @  @ €   à /@@"L`@   € àà /@` @  @À €à /€à@ `@À €à`-@ `` @ €àà€*  €ÀÀ€ àà€/   @ @`à à /@` @€   € àà /@` @   € àà`&@    ‚ €àà /@` @  à /@` @ €@  `ààÀ# ` @ @@ àà $€ à`@   € àà /@` @ €€ €àà /@` @ € €àà€!   @ à€ à /@` @   @`ààà  @   `@àà /@` @   €à  /@` @   à€€à /@` @    @àà @)     €à /@` @   @@€à /@` @   `@@à /@` @   à€à /@` @   €  àà  @   € Àà /@` @   € àà /@` @   € à € /@` @   €  àà $ @   €  à /@` @   € @@à /@` @   € ``à /@` @   € €€  /@` @   €   ` /@` @   € ÀÀ  /@` @   € à   à`@   € àà  /@` @   € àà  /@` @   € à    /@` @   € à@€  /@` @   € à``  /@` @   € à€@ /@` @   € à cÏ` 6@` @ @`à @@` /@` @ @`à @&` @` @ @`à  @  `à`@@`à @@ `@` @ @`à @€ `à`@@`à @`*`@@  @ @`à @ @- @à`@@`à @@ ` @` @@@`à @@ @ `@`@@`à @@   ` `@€`@ `à@ @ @  @€ €`@ `à@ @ `à @@`à @@ `@`   ``@ `à@ @ `@`   €@ `à@ @ `@ @  @  à @@ `@` @ À`@ `à@ @ `@`@ ``@ `à@ @ `@```  à @@ `@`€à@ à@@ `@` @ @à@@ `@` @ `d@@ `à@ @ `@` @   @ à@ @ `@` @   € à@ @ `@` @ @`àà@@ `@` @ @``m@à`  /@` @ @` @ `Q` à @@`à `` /@` @ @`àÀ ``  /@` @ @`à à@€:€ à` `  p@` @   € à   `@` @   € à @  @` @   € à@ @‚  `à`@   € à` `  /@` @   € à` `€ /@` @   € à` `*`@  @   € à` @- @à`@   € à` @ Ã@ à`@   € à` ` /` ` @@   € à` ` @/ `à   € à` ` `/@ @ `@`@À €@@ @ @  @€ `@À €@@ @ àà@ €   @ @ `à @   € à` `  /@ @@`   € à` `  /@` à @€ à` `  /@ @  @ €    @ @ `@@"L`@   € à` `  /@` @  @À €@@ @ `@`@ @@À €@@ @ `@``` @ €à` ` €* ` @@ÀÃ@ À €@@ @ `@` @ @`à `` /@` @€   € à` `  /@` @   € à` ` `&@` @`  ‚ €à` `  /@` @  à @@ `@` @ €@  `à` ` À# ` @ @@ à` ` $  à`@   € à` `  /@` @ €€ €à` `  /@` @ € €à` ` €! ` @`@ à€  @ @ `@` @   @`à` ` à` @`@   `@à` `  /@` @   €à@@ `@` @   à€€@@ @ `@` @    @À@ @ `@` @     €@@ @ `@` @   @@€`@@ `@` @   `@@€@ @ `@` @   à€@@ @ `@` @   €   @ @ `@` @   € À   @ à`@   € à` `  /@` @   € à€@@ `@` @   €   @@ `@` @   €  @@@ `@` @   € @@€`  /@` @   € `à `  @`@   € €@À @ à`@   €    ` @ à`@   € À¡Ç  ` @ à`@   € ÿ@@@ `@` @   € @  ` @ à`@   € ?@ €@@ @à`@   € @?  ` @ à`@   € `?`@@ `@` @   € €?@@@ `@` @   € À?€$`€ ` @`@   €    ` @ à`@   € x@ @ @`@` @   € @5 @& €`à`@   € à?   /@` @   €  ? @@ `@` @   €  ?  €  /@` @   € à?   @à`@   € à? /` ` @@   € à*@@ @ `@`@   € à?` @à,?@à8`H@   € à@ $  @`   € à?@(à4? ?@n @À ` `@@ @à@ `@À à? 6 @@À à? )€@à€  ` @ à`@ m@  ` @  ` @ à`@ @@ à@@ `@` @   €@€  ` @ à`@    và  ` @ à`@   €à3 = à1@<@à/`;`à-€:€à+ 9 à)à8à à#à5à à!à4à àà3à àà2à àà1ààà 0à àà -à àà ,à àà +à à à *à à à)àà à(ààà$àÀà#à€à"à@à!àà àDààà$ààà%ààà&àà à ,à àà -à àà.ààà5à à$à6àà-`à3 = à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?à6à.?à7à/?À8à0? 9à1?€:à2?`;à3?@<à4?N€à5à7A  à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?à6à.?à7à/?À8à0? 9à1?€:à2?`;à3?Nà5@ = Bà4à7A  à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?à6à.?à7à/?À8à0? 9à1?€:à2?`;€?€à,`:`à.@;@à0 < à2ï7à9A ¿ à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà 1à àà -à àà ,à àà +à à à *à à à)ààà$àÀà#à€à"à@à!à#à?à$à?à%à? à ,à àà -à àà6à à'€9€à,`:`à.@;@à0 < à2çÿÀá1B€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/àà ÀÀàà àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à5à à"à5à à'€9€à,`:`à.@;@à0 < à2 à5à7A  à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?í¿ à&Fà.ààà/ààà0ààà1à àà2à àà3à à à4à à&€9€à,`:`à.@;@à0 < à4ïý@á-Ià5à à!à4à àà3à àà 2à àà -à àà ,à àà +à à à*ààà$àÀà#à€à"à#à?à$à?Àõ?Àà$@à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?@€9€à,`:`à.@;@à0 < à2ç7þà9A ¿ à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?í ¿ÀàGà%ààà&ààà'ààà(àà à )à à à *à àà +à àà -à àà.ààà/ààà0ààà1à àà2à àà3à à%€9€à,`:`à.@;@à3î7É  à1@<@à/à;à à#à5à à!à4à àà 3à àà -à àà ,à àà+ààà$àÀà#gaviotatb-0.4.orig/gtb/gtb2/krk.gtb.cp20000644000175000017500000006064211536321052016734 0ustar varunvarun@€3€3<<¼N,sH¢a @€ €à  6 ? @€€à@@@ G` `à` , ``à€ ?@2! à àÀÀ!!!!!%àÀ¡)á w¦a`!rAy` áwž@A; á- @@áaO  àÀ #Aµ€!GaWàÀ`' Na¡%‡àÀ ! !¡9á @àÀ!s@   @4 àÀ!>!~a@ â%ÿ !Bøbÿ@!OaQàÀ!<`?Bÿ! "ÿàÀ@'a·B÷ bÿáwÀÀ ý`ÿ   !F  àÀá?! a?A!G àÀ 'a /A7aG¡GàÀ ý 6a? ÷a?  @%àÀ ' 0 7a?¡ÁG) àá? õ!6 `†€Î ÿ  @@@àÀÀÿ †`@ï ` @`à À ¿ .@ÿ`"G`  a a àÀ ?  ÷%`9 % À!` ÿààÿ œ €?!€? D ` ` àÀ  > _€?! ?`o @Ç@@¿ À #@à?€§ààÇà¿à/@@@@g@ààÀ $ n`o@@@à`/@À>à'---)) 7à)@ @@` 8#º@€à"8 à >c»"`dü 7 à&@ à  = A¸  !Ø`£È&@`à <@(À'bˆ!` %à@<@"#9@7‚?))bGà@;@!?dï%@à@;@A?ABá?!!=à @;@ @;a?$Ëa? a7à@;@?#uáA#DA?à@;@?"Øa?!¡7%à@;@ @@çp'”@ @;@ )Mà à@;@ 7A¶!·aÆ  9@à@;@A¼ 6 7â%@;@è0!Óá ç!š à @;@ ` Aÿ!Ëaÿ!Naÿ à@;@ 3 8`'!ï¡ÿ #?à@;@¡ÿ@/#7!÷!¡ÿà@;@Áÿ¡‡!‘!M à@;@ '!¯ 4à @à@;@à ?â@>à W @;@!¿¡ÿ -@/â@;@ ?!ÝaßaÇAÏ¢`@@à@;@!²@Aÿ!…aÿAÆA÷  à@;@@? 1 'J@AÇ 5B% %a×à @;@áÿ)aÿ$ -à@;@"·&(èø‰! ø à@;@Æ_à'!< @à@;@à?A€ àŽÀ G!= 6   @!Ÿ@à@{@ !½A¿!°A‡`!FÚ€!€`à@;@ ?!@!à?@&!·  @`%à @;@@#@áÿ)° G %à@;@ 7 ' ! /@Aï@ b b à@;@ ç ð$)!? ,¸  !†àà€€? Aà'@W 5 à€=à?@' ~à&è`ÀÀ :`ÀÀÀ‡  7J’ à``< !? ÿ@?-­@    !b` à :` ?¡€/% @Á` `!¢À`< @ ~aß@) +@-¡Ï€ -à :`  ?aß À- @` -À`< ß %@—+˜+ÃÀDW@À$) %   :`Àà?  <@€`< à!?!@Ÿ@G@ :`@ÿ@!w à¿àW   Kz@``< À?!w%) à7À @@`@' :`À?!§+Ý`_ n@'%`OÀ`!Ó`-à ?L= `L-à@_b áÿ@À?1 G5à  1`¼ “ O`¯ p ¿  jb 1`Ïà ñ @€à'?-à8?a€}à! §`× M¡ :`  ìà ÿ€ç  @'@  @à?  ?!¯ V-) ß@`'  @@à!›`| À?!—@)1 g à7À 3@  6 à?1`5à@@  ÀG  =#ÕÃè)"ý*Cà :("@€G¨@&³@à = $øà/ 'ˆ`%`à <@ "'€ D¨ ,Ùe 'uà@<@ ï`7$+@!#h -à@;`Vá ) =!@@Fà`; ! *‚/ç @(õà :` @BAoaA?AA7à`< ,€1Õ$ø <.9A?"!à :`¡?#-A7 ùa?) !?à`< :!6'¤? ‹ ý à :` ? @è,¸€à`< 6v.¾îÀ ®Àà :` ,p@@Q €†à`< K8@7!ïAÉAÿ û à :` b/!-à #?V¿ÿà`< `7 aÿ# !÷!#L@%à :`ÿ!ø / 5f  á(ÿ"Qc?!á'ÿ!<.¿ 7AG-ØŽ8îÀ`¼ !@6A€?  <.H @à :`à? E !Ù@6   à`< ?ÁÿlˆA÷!Æá#ÿ ,!¿A÷ -Ë #Ï#Mà z`Aó 6`'`!ÿ@C 5)à`< @+!þÁÿ#÷UPB- @J°à  :`B§CÿAù %»,H %W` à `< ¿ ÷ &à'  `àÀ :` ( ?@Aà/  ?#N€à`< À? / 3MK€7 !@%[`à :` ?á&ï`.*X`@ !à`< à ?`.@7 Z€!ˆ`à :` €)ð`(àà `"à`< `# )C÷)àAÿ@A÷)¬`-à :`@— @?H"B €!à ``< b m o€?BG@à*°à 9` :`à? W t 7!à`< à?à/€7 @à@`? ` :`à?)+pà' r`/@ @7 à`< à?N^@G*  / +Ë`J¦@` :`à?*c`?` ›`-à`< à?`W`'@g*h 1  @-À :`à§"7+.LY‹xàA  €`< ^`wà? 0à5?+Ø E@` z` à ñ`ß G@`< à?!¿@ `g /€  @`@ :` 'À  À? /`1 @A¢@1à ?,´ ?ÀG!¿`à k`1à !ß /  G,ˆà  î ¯ &.Ñ W,¦) ;A  ¿à 0È``ü à'?!†à5?5à8? èà*¿áa© ú`à ÿ!; ç¡'à7` ?Aâ`< à?.@ /5 ?@'€Àà.v à ?à75 Gà =%œ'0F°1•dà-9,8@àÇ€@? @%0G; à z 'ø) G£ *‚ à <@M3 /¦ˆ&q ~ % à@<@ D m ï@/M@'mà@;` ï .'Ú?) w <à`; ý BMé-H@G6Zà :`!*.ÀN,° G` Gà`< 0 C`2a ù,€AÉà :` 0 7Aûa?%Ša?5à`< © @D!?%Ia?à :`@ÿ >"0  à`< @?mÁ,¸€à :`î.À`< x z@ ` @à :`!ó Cÿƒ‰ !`+Íà`< @CNj!Ç :!Ú!ÿà :`Ao@nÿ ;a÷!aÿ-à`< `?`ÿ"á,ÿ {aÿâ z`Aÿ-õ@"NŽxîÀ`< 8 ?@A!¯ Np€? :`à? >`?޹`< áÿA‡Aï- !‹ à :` @aï@?ÿÂ) à `< €/¡ÿ`#÷BC &G@à  :`!ú@!þ(ˆ#÷JˆAÿFØ@) à `< Qp = §­@ {  U Àà :`A? ¾À? `7 `› Àà`< à?ààFV@à :`à? @'à Èàà`< à ?.@`7!€%à  :` ú@#¿'7;Š ¦G¿ $B`)à`< @çá ÿ (À ;  `à :``?!®8õAÿ+Ü+ `&O B@Bà`<  ? Ÿ*Û >@ 'à)*`)rà :`à ?!`?Àl¸ OÀ€`< à?€/  Ûà :`à? Ø@?à—`< à ?9& 7 `?À@ :`à?*° /C‡à?- z€!¾`Wúÿ! ‚7À?#ÿ`G!ïà #` @€`| @O@wL’- 8@,Ž  Gà+`Y@ :`à?$gà/@@'à+¶`K< '`< à ?&±@7ÀO :`à!?à×Mnà*?!2 7@@‡`| à Á€áWA¡`0 :`à?,`oà#`îà? _ /€,°`à »`î!  —,ð,à!ÞlÀà `¼ à'?)€_ :`à(? 9 ž €à)?à7nÀà,. ¿! Á€½à ¿Á‡ÀÀ7à"J à ÿà7€ $“!hï FLÃ7½8)$U  ' à *¸)| + =`?` ?` ?à'%'` >)3Hý'(ú@ 7@  ' à!%$ Ä  'd`'%… e  @/àBí$÷ =%â% @'@# `àÀ€*u î :˜ø€ . à ' à  çww >(D7à' ( à*S à ¯'tÁ?'€ O@ W¡Áà )Á?AJ 7a!Á7à ¡⇠7`8 Wá? ï`Ð ý`!7aA €à çà? Oa‚á#?'{Àÿ‚ S W"EBG!\ à ç ï%< ‚+*á?f-`'Gàá?#Øa?àÀ'¢wà §` ~@ÿ` ÃbA *š à*›cp :`à?aB 7€ "`À çAá?!6+¶  [A7 a? à çIã€A?@( W -[>!7*uà$È  7 8 a?)%cC¿-!/ÀAW@€*` > !û@kr    `  '5 žáÿ  ¿` @ @  à §+R   ¿+ƒ @Ç-À ÷ ©u '€à`×%Ï >@?!/ á@ß(ã --5`÷à1I @ :` jY?@·@f € ·  @@ @O fà?  +@~  à )ûà Ÿ1 à¿ 7 8@ß@$  !· @' Ç-@@Ç@1'Å11&è`¼ `7 '(Ê o@ `'@  @ H15 é o W@? 5  `à@ €19 ? à? 9€W @7@  @-  r€? @ éá?Aø@ b@% X/` H` %À)Cè ú` &&#| 1Æ) @' àB`/£âÿ 7 %  ?@"2F gà Bh =à?@ @7"³ 4`"Å` 'à *†5!®`»@ 7`/" ! !0 @@'à5%@;@ ?A=%-+a' !åà@ïH™@;€ù€$ð!!/¡à! Õ `@ù€7á?@AGà ?ç!K .á'?"H€ ÿá?Z‡!0à5-A€= d¬ P)@% -ìàEè@° 9`A7A †'&( Î à A?BW`< 'a‚á?@À'à¡?à¿ I Ž'Ao…!#?"Oà !5 Þá?$âwA1 '$ˆà $H@ º`  U!U? ‹ ü à  ) ¬à?%ø F¹èø©'ˆ"¥!m a< •Mà — ›   @@ @àÀà%%!   ! € !@ à%)% à?! ?  @2  `' à --!))) ~ $ 7À'%% )@ `'à)55-)-- :` o)!@0 /  - 1 1à -5- `< 2 7   ! à  g@äà¿%%%%%à/à 7 `W /!d õ @? !<`À'  à ïa/ >à?`G ? `@àÀ`!O%AÀ :`  {`@ !‘ çà`?) Å  ! ÿ €"AÆ` 'à!?-!>á?%@8 @AÇ) 3@ '1à!¿5 á¿@+aþ / ,@!ü !ÿ 5à !"à? *@> ‚!Až!€ `À`/ i þ ¨@÷à7À'! à7Àà? ¿@þ!’à/!D ?aî@`à? / 3àG !P@!â`€)1%# à¿ `  3  ! !J%AQ@@ïÀ-1!2à?Aå@7  !¿@`'!à  !}  "O!ç#ö o - 7  ` ` 2À9!ÿ  > T@?`g!ü Aÿ  '1 ‚  `15 2111 :`! `?! 5@Ù€ÿ   ` ?à v€?  `€ hà€à!?1À?bæà+? ã1 ò G@àaÀ·!:@ ! 7@ @? Kà¿   bW@A '!¯@'@-!ò` 71A— a|  - ×a‡ À7A¯€ @K@%¾!ÿ5" :`€?@Z`d-5@7  '1@'@  4`5     7 s`'` O@æ à à? ¯ ? H 'à5!† à1?A· à0 € ý1à'? 7 Û 7 !Dà ?@/ 4 A€!…@? á!~a  @ /à =9@¡¾ < @?9€  3` à@!…59"o :`%X"Ø$DH - à!&€ /`< @?  "" !!€à à'¡ :`'r)@'w&1(D  à%% ð *`< @7@?%‚¥È@@à '1)à>@3@ #€ ¿ à"éI€á ?"ða? à%1!a'À!8@&{‡@AGà ))!4`@ Ba`a? 'à  Á&°á€O ' pa" @@'@àA!ÿâ !@  ' X@!_` 'à1&5A,À ÷‚!5 ALà-¡?à>(¨ û&c ÿ °--àA 'À? ú!A!7+þ G` ÏàáÿAg`2a !?! !"à  ä !9 '%% / Àà!%è"l @÷B/"|   !à c&è   é `…!?@· Ï  à"­ >A{ ! "‹@à!¯ % :`À!D  @ à A— në¿@A·AÇ ` @à @é ¬ ­€ 2`?,ÁbI`!àAºA×€=@?"O -CR U ÿÀ'à$5$ :` 8`Oÿ ; !ü `'à!Ù%ðà? 9!ÿ 9 ` $¤ (à @#là¿ ¹@ ·ÿ"á÷ 'BßL°`¼ !C  !œ !Ó  à @?)  :`   !€7à! àà? F ‚@  à!)A3àÿ "@Wð))# @` `À(ˆ `¼ !9 ?  @€_@""'#Æ à(äÿ@/,  '!Ä@!¾#Ë`'%*à)haç  9 + h > Aÿ $`(à +  %¸ w!U @ °  O!@ à@? & >@ ƒàÿ / aà5? L@à  «à @+ € ? (` àà? 7@_`'CY /à!_#\àào ;  _ € `" Lke  X@e "W!—@Ç`' K!ÿ*à‰àà? 1@ 7$ (Jx) @ sb@B@@W à? ³@? Ààà à ?@ì ^à?&é€wÀGà'?À7!T à+? ° 7€G+Y à ÿ!· @@'!OÀ#‘  A—à ?@W $ À'à@ !¿+– ”€ 8 Wà? F Ÿ À'@ / `+Ò=    P"" `W@!ß@ "à 4 @  À? + "`` 'à+÷ # `?à¿ ð ¿À?@®`'@*@/à!†`à/?ÀOà1? à ‚à)? { 7 !i`?9àÿ û@¡?àÿ 3 /àA-Àà ?ÀWà@'@à Ã@C ‚ €B ~ G ` `à  a² §P €= ?‚£ # ' À ## "þ!ò@ € :` $ô$æ ?@à WÀ&Î$óDï€/`< '†))ô %, À!^ à'~&Ð&o &¶èG(Æ >Àà ?@'à@7 @)#&@ z`à? `/ gÀ@—1 «3_5‡à¿('À ¯ ?` oà!?! ”" áÀç!7A~1À /€€71O1 ç@K0`¼  ¡@ à,–@Î%%!§ *àÿNF)â @À'à€§&Ç × ýá¿àÿ%f@€à ò @ßDÞ5 ÏB¯ ¹€àÀï@`÷`€71 ßp' `=Kí+î ¾@ÿ -Ïà@§a¨@§ ç`? ò@/ >àÿ'Î !øà §"çÀÿ" €(£   å`÷ ' `/à@Ç `ÿ@€>à ÿ  )`/à ±Jn@—l¦ :`+n! ßÀàA³ C``< @ÿ@@0   ÿà/àß ×$ —@ :`€ÿ*B W íCç€'À/ @Ï Ø`ÿ@`<  O5jáÿ% à " ‹ #Ä/-Á ´   …  Lç@  à >@ ¦ :` ¿;Û  @@  ) €€`7 Æ`ÿ `< @`?@ÿ% €'@g 'À€Ï úbß%e   ÿ` î  à/aIØ [@ _@ > Â@ ·  @ € ` e‡ `‡@ :`@@8 @@ B{@@€ ±  @Ÿ `< 5`¾  %F_  À/à&c €à? ž ! @  @ F`@@ æ ÿ@§@ à_ @ 4`59 79'P=@=GP€   @— `' @@/ 'Œ@( ß== €=AÿA,55  -`à D!Æ ? À@ :``?"n |`Àà€7!‡ è!šB `< !ü! Bj È Àà€FÀ >W€ :`$ #  àG€ ¬  ? `< "û/×O?€àH@(B#' !/ :`À?!ü!ÀàÀ'à" -G È`< `ÿ @'C%À@@'À!˜@" A¿"á  !@À!.AŸà C¸ "M@G  !#,¡ Aw@à@!à`')!@ç >`? C €ÿ)(€@à€Hˆ550¯@Eõ  ú@  Ç` 'à #a!ÿ"i( !á? .  `@@@/@€A? Ô á!BŒ  B¿`"¤ !`'à#A?    >@û 7BÿÀà 3 "5€/ÀÀ!(@"` àA!'EÀ z 'ÿ!?@B‡†H ' &à á çA? Ÿ  <@1 / !! @@@@/@€ ø@¿!?" @<@ !@ A?Bw!à`7Ax!? " à?#R?à#$ à [.s g  À¿"4G!4 !€à !a'ä  ' :`!)5?!.!‡@à'À/  xA7@É``< a?$‚AR % '€ *`'À û!AA? $  0 ' Ó @%@€'À/€ #@   > 3;Þ@@ €¡?à [!?`!_   ±@@…!7 M B à!)¸!  >B» cË@bO àA'6k!h€ :` EÃ`j cà  y@k €`<  W`` Àà@·@@é@ :` (`? ‚I@  à!!k@!g `< Fÿ‚AG(  `' €!!Ü Aÿ   0!ÿ %  !Ã!ß  à @ '€ > 3/Ý!Ï € c?à@'ÿ@ 4 @ç @aÿ"á÷ à ?"% >@;€ÿ ‚7" à€? aà?!yáà7- À@k à?€_ € _ à`@Ù@ ÿBå º`A¿"@"€_AÇ€ € A  @? L  `_@@€`*` `a·@‰gá¿!² $@ $` À@@ `1!÷I¿áÿ@  W@@- 'Iï@ â€G ¾ ¿ Ï'(À' Š`Ç `  @G : àÿAO  'À [  à?   9à?À7!´ à+? X@€`·   ~@ &`b@ @ `!  A Ágà? @`   '`@ áŸ(AŸ  9¡ÿ=¡ßáÇ!Ï@s@ @@ ?==9 > $O O    1  O  @ O@( ?  :` ¨ C€·‚_ /  Q€)­`  `à ? Å )@ à`c`7à-? Oà0 € à+? 5@" à+á?@ÿ¡/ /A €ï@@ -¸aŸ Aža| @W N!¢C× `' " @@¿@ À`â #@  ? ¡ O€€ •!ß  1 `/  ‚`@¿`µ @@ ``7!Fb à`< $@ C"G R 5 G@?  à/B"@€ / :`#ã# !G 7 ?` ? " / '@  `à`< à? W@¡`_@˜` T€ y£‡ '@   ! `@ ¡a_ €=!? .!*ß  @7 ? @!ûA_= @'á¿/= @  € BA ¡ K à`¿A'  à !o9*r¡_ ñ €O º`g@? @ ` *`/!ßA|@@H²``< %B%Ë ÀÀ " C !G   ,€` `''‡ à'@,@@' €ß@ !Q` >à?À`' § à@  !"Gà  À $`€ /!J@7!Ë!—à? )@  1` 'à`ß àà ×(y º` z@  `!7à! ? ò  !× *`< @7 .5§ @À 7 š`Ÿ  " 9€    @ @@  ¿!ßI$ € WM€=ŒL$` $ àÀ‡ »àŸ€? @ Ì ¾à¿  @` ‚`‡ ’@ ¦`¯àÀ @@@ ¿  @  g'ç@  {` ‹ÿ@"Ì @@` ˆ`‡à¿ 3 ¿ * ¨€'À/ À‡   Ÿ ½ `¤   BW€ "@ €×ÀG  _€g >@ |`" €à O` o`T Qïéß à7À‡ ’`— "ÿ  @@´ @`@, 1  ¿` G@@ @ > #BÏ @  ‡  D ` Cg  ``§G  /ÀeW%L à à? Nà @§9 @ @       à% ` `  % @)à  ?À?€6  ?  ?  !à )!!!!  !!!@%! !! 7 @ ' ) @À 1)%%% = o! /%  1%-`à@/@€ 51)))@x W %1-1@)5-`)5)À %€}A€ á€àAp!?@   ‡À à`ø ?A‡á`à! Àa!2A!‡A@A!á $ à-¡%áá¡1!já%!|  @"Ñ@  à!a A? 6 "ÿa‡!w€àá`/ACPÂÿá%!?! !b!@ao à¡-bÿ!@âÿ--wà á!~A¢ÿ-¢ÿ1¢ÿ b÷1¢ÿ1@ÿ@Á?@… d €àcw`? ý ÿ .A7bÏ @ "·`ÀB¿!!?Ay ?!? "Ò "ÏA7 a? àa? ó@?@X " < '  „7)-)a?à ?1¿¡? d?-?1!7D?@A? d?1!? f  ½%o Ú %%€%? … `à- –ÿ >@`8%%`.- Ñ) @ à ÿ-@ ` ä! ¾" -%"3 ÆB? b?à`ÿ1@ÿ% º ? :€ÿ-1‚? æ`ÿ119`ÿ@@ÿ! ¿`À?- t >) z@n ¯€``Çà ¿Aj!€`?  @~-5% „à1 Ï    ¿5 à? @? !@1A¿ A¿@' Ç €¿@ ¿1555€?@&W m@w 6 @@ `'@w F  59 5@¿@ o@W \ 5 9 @9 @9   _   ? ? t!z@7 91 79 `?@ ? @1  r€?Çÿ$ý$ÿægbN'ýç ÷#W (7!ÀC§(~ dÿ#õ&_!! !Î- C@ à@?!"àÀ?#º"E#‡C¿ "-BÉ)"Mà  ?1#@?cÀAC 6 7C¿!! @ '@!z ` ?9!9'ÿ`x 7 /@9!Ç9!ÿ @' !Z ÀÇ¿ f7  ÁGÀç·À i AG#Å!% f•AG€à ? ÍG¿!$ï '`á?@!à  ?!G¿!?G¿ . /á?ÁG€ ?A"a? 7@ia_!&!'á?5  "Ú À ?ai& 6!)  -@A1 $Là ?@ fz'ô@à ?@, "û   ‰Ç€à ?!7!‡ø!ïb €à@?Ap!?ið&è†÷bÍ& !Ï!Ž à  ?eð@? †"' (è?!c7à ?Aÿ%€Ç!ƒ Ž(?aÿ%Ç!{"$´Aïà  ?9 "¡ÿb7 /(? !Æ!ç$Œ  B %à ?!@ @{!-- #1aÿ!!D à  ? ¬@?#T#¿) 'F?ˆOà ?!5"}@? )…  !#Ø€à ? › ‡ ?$÷!@c A“ à @?!/a¿ ~à?C¿@@@ !à  ?c¨ `­à0"V @a à ?&’a?…¯ @paÿ)ÿ !£`'à ?!ÿFÿ#ÿ å 7!ÿ@' )!Æ!÷ &«aÿ@Aÿà ?!ÿ`?E»!ûÿ  -!¡?à @? tAÿ#‡Aÿ '!ÿà/!Æ – à `? ó ¿ ?!?@? %à/` à  ?a/à?ÿ!¯ /â ?'µ`?)¡ç`U€'@@&@à`?!' `? L‰¿©Æ#½.¤ @ à ?'Y à? A HL !Ù )x  'Hšà ?Aá)?!‡ aÿ`7 )%µ!÷!ð)7!ÿ 'E!ûà ?(‰`?@Û!-1!@> " ­% ÀÀ@? f`¿@ 7 ¾à7À')€GÀÀà?He ù!cà/!DB&@àà?))  G" !nÛ Bž € ?ccÁ? ¹ @€‡ 1  ç@@ïÀ ?A›à?!¯ 7  &!µa‰*€1"(õ à ?!}aA>!Aß@!ö 'µ À%Ö` 2  ?!áà ? A !÷@-15=aÿ" Ráÿ ›Jÿc!`§ 1"  ©€ÿ)ý "‰€À  / ‡À?àß 'à ?5!Æ < €à(?5 ?bæà?€g .`7+x  ²  à AvA"Š`¿ ' @  # 7@@ ? K Gàÿ@ 5+2``F #  '@!…€  ?  à?@@§ H @/@*ý  l`  7!ÿLNÀ? @œ   @"59!ÿ@ 9!ÿ  CÿL@? å-,ålà l¨ KaÆ à   +à ?,ð  H 'à9!Æ à1?9Eà+? ß# ·à ¿à7 Û!8 !Dà ?ᯠc@ÿÀ7  @A/@!…@? á` #A«@ ' ¯`7 À@?=@à?=5` €/=@@ Zà= @"oI%*!D¼" ä  1=95@ 5à"T@%@n+€)=+?©®G® î ?1'` ?i@ ‚JÆ%³–afóE¿Dðà B@5)'J@ n)?'€ 'eÈ# -5% 0Cà A@-J@I@ ü ý€' Al A`9à 90A)€- € v ?¡?@p @@à&Àn ÿÖ? II  ! àA?/¡! ?.À €A>,·!* `` —à A?&i¡? $á? ÄÁà A?.€5?N`. ÿá?$ (àD€9 d)‰a?'¤ % '-1, E-5.à@¿@˜!"@?)% û%³% °$wà"N¿ ?1| ¶¿à ? 4"þ. ®,ú@à!ÿcw:@-5]î%AÿC´aÿ !ò!…C? !L hð&Çà A?!ÿ-"¾+¾"7AÿŽ!Æ!?Aÿ‚¿à Aÿ#Áÿ1¿ )¬!± 8D&c?D„$Êà @#(1!þA¿))!@8 @ÿ1¡ÿàH@s@ÿ >.% ¶'¤-TL  @à !J)@?85$?%! û!‹`àÁ¿€?AMø`!…` à @ ndÿ >6?$… @4%` à`? ÝA¿ > ?‹8J¿+´aÿ5Š!à A!§aÿ@í 1¢'AÿNA!È! àAÿ&Úa¿V€A‹â'*ñÿ&Â!ÿ 'à@&î`?!#!ÿ-aÿ w@(é7º (à aÿ i@ÿ >Aê-ƒ î"@L-).S`à !ÿ@é@?@ÿ )"  !A .  à @?+êà?@ + à/*ñ€à @¿à?`& ?à!Æ@Àà`? à¿*ð ¼@? !",w`` `€A@à?A@#`!‡ IkAÿ!Éàaÿ $O€Aÿ 1  @' !÷ b,zNà@Aç`?!À 3,w ?55*Ë`@!Aÿ+s`) à@?$EÀ?@*X ?"R„¼-&û ,¸@ à!ÿ ,'‡ ¿ ? #&;`úà'1E`àà?`À/  ?C`` ? «à  ` ‡`€*H%` àAà? `? G@&a†AO  'Q€€`?á?@ @gAo  ` ``` @?l%A?$»@8@@!ø \ "Aÿ@=*€5!ÆAÿ)à ÿ@ @?"v0‹ — / %@(*w%- C@&= @€ ``? à? }` àY¹@GÀà?-À@¿À'À-{ à@¿ àà?5®#O à?*úà#~  !`@à ?@@ÿ+2@&AO 'àn€i à¿@ Ze­à7 $ @ %•€€? À?  !å K6 ,!ÿ@  -:`9` Q@"².9à@W¬¨ J3@à @€!`"à? Y C@` 'à €?3HÀ? ;@`? €7à !Æ@à0?-¼à-?@› :,y@à!à7 ;`?!…€?-ãàÿ@ #`ÿÀ7@3à5= =à ?=    ` à$N @$*KÿGÀ"$}(—!† Ž  à"T@)9$@'¬+ÿ-ÀG{&ÿFû>Þ G)) s àN@NNÿ)>‹?&‡ A!4"2<#?G}E/à i@9.§@  € % ‚ † ~9à.K(€ 7`µ à ô #CŠàg@!Na? =@#Ä?"Í!Â@!öà )/î *{ Qàa? „a?Î „ Ä É È` Îà a? é¡?gc 5@¤@ìA7"Å€$‘`à$8A?1` ©î ç!=% ) à…€)ÿ@@ .a?@…Ž)-!?` 'àª€Ì ?/ïA/ ‹  à®À"º:¿ >…1†î¾ !LÀ ošÿ=Ǽÿ ÍC C à Aÿ.@#!¾ (!… aô *ŽKà¡ÿ1Bÿ ? ñ!@a… û!E!²@ÿà f€!œÿ"O"7 ŽH¨!À"º"ô'DÐ$×à J@!ßA¾Aÿ < 6*ñ w B ¡ÿ#?bàiÀ'Š`?!/ Ñ@îKs!ÿ@Aÿ  '`àaÿ !@? ÿ)D  Â-È H-¸ày!h`?a?!>  !…`A‰@à ` ,à? ' @,lw 9 à)C? ¥Aÿ n¿! !ÿ$àÌ€Áÿ )a@!( [,¸Ab@!y@àÿ+ìB? « 8$' @/+sÿ !ÿ#÷à "¿AÿHÀ å@a@r@ 7 @ÿ"Eaÿà`¿2Ø`¿ÿ ·`¿)@L@ÂnÐ!ó! àA? Ù ?@ÿ/ $H É,¸$M@à a$_À? 2!|  @?!¹îcà? @?îC?à¿0h »@9  ¿!!Æ`` ` @?!¿@ÿ&0`7D!ˆ  @!ºa<àa¿!§€?(? 0 ( #í !÷ !ÆÿHüBà!ÿ=5:­"¿ ë`3 @ 4)ß X (BLw9) '$E"à„? ?B!r 9€ D$®"51*Ô-{€BT@à`ÿ¨ÿ ?¡`` C G  7@ à ¿ À`3 :  €"Ê€G`—@@Ÿ ‡à?à> 7ET` à†ÿà `? ®€a@ ! ` €á?``7@g &  €%•` Àj?á * ^ W*Ó@#Aÿ 1*o!»¢LdB aÿ!ã)!ÿ"í W$%@  )55){`- 'K´@ `€?$# ?€ ç ?-  @‡à @à@ 'à? ô`¿ : à? @à€?#Á€¿ 8@ Bc n /à@@@ @W ã!ÿà"? 8î à? q@@ @.@ 'à# àA¿#WÀ¿@< ¢î`?á¿ j _ Ô Ií ,ƒ!ÿ` !Æ +] ÿA;Í@w @2;> @,h @àÀ@? à? Y@@À ` @@ @€à?`!W`@À?À` @€à)?€7@@ à2?aDà+? 5@"Ê à ¿ %_€@+ ` à @Aá¿ =@?Ž _!÷€ `à/õ&\G…Du ;‡@*¯)Ó, #@$OÀ#} à /5Hæ …BÄC…)…*Ç(Å >`?"Ü?   ?` @?%™à? 5-‡'&Î!À751`7ÀG @?#‘HE$¨`I²&‡%€ &é "×$£` 7à ?!`5 ¿@!~G'% ¡ An 59A`A!K€=ü`%4-,s90 !>;;Œ‹!! 7• -à M¼! 5a ¡?( !Ao†5ó)&# ×à /AA?&  !?@9!? - /a! 7 3S/— À / ç0þ!¿Hg `8 ú`9! !!G   , ` /!"…E "Oá?!7 @@ O@ /}à8f"6,~ i†9M†!ù)`u H ,g¾  Pà1 E4þ'A.(Î U†%6!CN‰%(H`à@X 'à °=,— ?',Ç Dà? 6¬'!Ò!àAÀ(F@ œ‡#>%7 +BG / ¥*ç@·  àa@)JIA ðD@ 6#÷!D ø !A!\@=A`€O  @@â=@ Ú!@ úb A@ #  µ@à [ /"o3<!#g!?!='·gEf?fAç ?  o ÿ7)A?Fx$ÿDÆ#Š#(`Ï" "}àA?"J! ?#` ¾á? .!!G ø 9@ ´  ` þF@ŠF#çá?A@A? "-€ 9 @O@@? !Ã`@@a? <@@"b ² .à`o!?&a(!?¦xçA?(Óa?@A?Ç&B!?aAÏ`!OàA?!æ!d€¡?"Р' ¡?Ae@Ó@-  `ÿ ÞB!?9@Ï `%p á?¡7 Aa? "†A?!$ Ð@¡%*D¾ #9`  Là@¿*Ù (y‚ÿ- ~ C1% à@¯"l))@"¸+w4ʵ?"¾@àBoFïÈ@%: !'þ @` à !!)) -- %!%@!! ))! @à -@?1 ?)511 ?@? 1%% - U  !-@' à5 /51559 ?@`? <`'))151@;1599 5@` `9 ?9 = ?= ) -@=`)199=  ===9 9 5@   /   9@Ï ¤- ^) 5 @` 1  à@¿ ,55 ?1 0@ ¾@ê ¶155%  %  à@o ®-a? @?A= !%  Â!†@à @/Ab) )!1A?@, !  H1@@Pà @ f`!š-À? %@3 )  ˆ J - `€1!? !Ç@?ÿ%!ú "`? -- @  àA?!!Ç!ÿ @Ï@¼!b'!ä 6ÿ€àA¿!É¡ÿ¡¿ =`$  !•9ÿ!½!² € @?@@ *ÿ ¢ j) %@!@"!¡ÿà@¿@,@ÿÁÿ!AÊ! ½ 5!) 51!@ à¡?Aÿ ëaÿ!r@*à'1à à?!ÁÀ7#L€à ?`!@‚ ?!Ê!à !M  - Ÿ ` `@ÿ@7@ÿ!pà? à7 +  b `€@?!!Ç@?55€@Zaø 6 ' !ˆ  AÕ`   ¿!½ÿ @? ™- /!œ #÷`  !Æ€ `@?5@ AçÁ - "@?)@ ?)1 '  )b  +  ¿  ?"9 ƒ  ' Š$Ë € ``ÿ@@? &À? + C ‡À'à!Æ €` `? 1 !6à?"‰  `\à"?@S@"`€ o@wà  f`b€' @E@`A?!#a¿AgÀ¿! Í  @  @AÆ9a~`?!weÿ `":`,@?=A9A—!¿ ` `@`"= ¿ =`?AA=@? 71 5`2==-=A =A-5  - ="`€ X! ``?€_@c ' @/  €  €?@à? ¶ ?`ÿ€'à€`¿ à(?"‰ à*?`” Gà?a? ÿ ¿ `*€§  `v "‰  ¿@?!]a?à?=áÿ@_ A¿@ G%Ö ?AŸA ÿAžA¿@? + =!ÿ  A"   @@`@ N`@ ¬F€$ÿ"Ó a!‡@)@@< à9@@@ ¶  €95!! &ÿ@ƒ@ 0 B 9 |   €  >#1! ½€?E4'o„c@ˆ@.  à c@=!A99%§À ? €E@8 A ¿@ @@  ¯!5`ÿ=9h ¿`¼C¿ % 9bû €GàaÀ !@ÿ9-E€!?$ƒ œ  b j © oà@! #0 -=#&t%!@ %Â&?F " ‡1E| `@/ 8@)!ð%b))#9*oA!?(ƒJ†'&î !Ð1@&àf€@H ?!G ! 7 y €  Á ‚ @¯@ @ Ø`6 ¾*x @?%œ@ÿ)% W `.!+ õAF9!¿à `@?!$H #Sb!· <@ dA2 ' à `¿ + £%@ á?€G | @@/ `¯5A$P?!GA?!†!?!Ì@"Ž@!Oà`B(@¿ „?A¹Á?€m «` àb¿`Û`ÿ¢)f£ £ €ô#ü % !4  @ !ÿ@? A?¢jr h ò !7 !­À `@@? j !?+ô+I )1#{ ó 1#Ì 15% `@ @)8 ÿ"'i@*ôBÀ  Â% G Š)  () àa/"©  :!!   à@®@¯!Ç,a¿"ø@A!@@))# `à c¯ ”-@ÿ Î@@~ 2 @!î  ¸A×@/ ¡ÿ$—  ` = /"[)ðGÿ !k"% @`  ‚ÿ aÿ-¿c? ]!» Ž&!Aÿ@¡¼a¹ `@ ÿ áÿ < 6fbÿ aÿ ‹`@!÷ ? (@ÿ `¿ ò@¾  H«Aÿ`!ÿ`!÷`@!÷ o@  D?-)$D û-­÷à  (A¿ `?!z !@+·@ ) @à` @ à?À@#L AŽ@%  € ·€¿@ÿ Æ`ÿ!ü Cû  4!Æ ` à!7C?!È@ÿ¡? ? !@ AÿK·!n @à!·! aÿã¿ $cm Aå'è € `  ?@`?=9! ÏAÿ@€@;"H!ÿ@(  @@`¿ `¿ !‡`? º ƒ`¿&c '£p ` @a?@A? ±b¿!s@?Q@@ "@G  €  o@@? À? D  ‡€?& @àa à? & B @`+·€`  @7€A¿&À  ?`€@;‚àa?! Á?)@Ï`²+„ ) `! !D  @`!·! a¿!ÿ€?Š3 %A» ;  B  @€@?@@?(—$Ç@€? @ 75)z =aÿ)d`@Aÿâ?@ÿ €%"~` D@'@@BH@À ÷@¿ +"ÿ À?`Ü€ã€ÿ €!… @``? à ?`:` Àg €à)?1a… à b ÿ` À @ @"‰@  !w!!A À?A¡?%ˆ` @AÆ@ `? 8ª"Ç!¿ w  " _+4@à *ð   /Kø`?-¿`?@7`@ B@  @ OM¿`à@¿"'À?`\€c†?@/  €x `@ F  ÿ € ¿`"àK`/ €!D 7à'?€7@@ à2?m~à+? 5@"‰ À¿a ÿ"F @ +!’@ !B  ` !D!·!¿!€? , @? ,@. !£ í¿aÆ  F ?a†AAA@F!ÅL®@w A @ à $`k@ˆ j ? T †"†@@' ˆ@7 ==&F`- !†   "@dÆ#G  ç `G ?@ À! %| #Î ? F†'F,®  Ç 7 ‡ à?€5@ ® ? €?*ÅH†% ? !à? WAÇ /`Îà? z ``‡ @7 ` @b!a @¿(L3;@7AûA9a~€? : w@= !¾!¿A!Æ#† ¡?!@"^  !Š` ` Ù.!" nCQ'D—9-KN OD€'À/ A AG!w"v/F ÿx‡!>O`? ¯€'À/à!7 ? @@ÿA‡@ÿ þ(" S€Ç B ' [ @@O  @ ? oF ñb?¢ $ "!?   @!G@IÆ+´% o`*-Y· ÿ/*J` *•@)à!@e¶ %~(†'çO@;(C(‹(G Å  / À!C@!7 ?AU@?# àÿ -@ë % ÷ @` Ú``ÿ@Õ ? áÿ@æ@€@÷   "ç.©@@o ¦'~)&  ¿!x·+… ö+OjÎ+Ù€/À šH¦`ÿ@Ø@ÿ@C?.Æ ) 7 ¬€'@€` È@ ÷ ÿ `ÿ @. àÿ /   €ÿ Ø`ÿ"l@O)q `!!ï@ ÿ  ÿ „ Ÿ /  ™‡ €ð òa È€à Ê@ ÷ ÿ `ÿ ?M†@‹ÿ ÒA @@` Á   /  "? `? % @Æáÿ ÷   €ÿ å ?@@Ï@! @ì%æ@ò áÿ B)«  @¿ ` ¾@ ·`-¨·@@ @B  ?@¿@@@à&A&Ì @j"× ``  ™ ?@œ`¿ @ 6` @@%AÏ K`  `  ? (  ÿ @? > #Dâ @'  E°@EW  @?   ?%‡@?@%+`D?  G ‡ ;ES #%wå€O _@@=    O  %÷U? à@!H@À1+{€ 8 À `AÙ ‡ @  x& \@À@?   0 @ à&ý!@!  ? cÐAÿ  @ë@    À  @`? `@? EP ?'`à? # àE´@ 5@ ?¯G `à? @7 ¾ @ ?#È#@`à ? + @3!†  /AG@ `?.Í  @'!>@à@@@) ?@#!? $@?hë b'Á  € Y A / ` a#"@ b3¢ @/@` Â Ü @@  ,`¿a?àÿ@+@@àB€ @> "ïAG#À 9q3= !|"‡!î @à@ @ v ¿G@ôG` B@z $ à   `?"ŒA?!ka?$ÿ  4@!A3 @ @ € ?A ?Âÿ ?   €@  •€@Ü ãA 7"ÿ!ù&ÁA?#C ÿ €.à 3 `$è!®@!?gÿ >T&.çÿ ƒcï O †#?'ÿFC w c @€     ÿ @?'ÿ ¿A?@þ  ó@@€à;@7?!¿ @ 'h@€n@`1AÄ @  @  · ¿5 ¿  À&ú !@   `@@×!9F&a?Aï · »(?!?è?€@ ] ‡&À£ÿ-*!$@g  ' $Ú` z  €!7 ÿ a?(?a?è? ø"Z 1A@`@ 7 ?@  E¥"N + - A7 `à7 "! @o `¿ ! Ï!:Pî @+D@gx "@@'²Ï  J  ÿ2;BÀ  Â-! !X1! @€€ !`bo "·7"· ?@ õ? 4 e/ ` [!¿*+%À G•? @à *@ ž ¿  `?@@<   ö Â@@@`!  aÿ Aÿa€O !è!…  `/ @à!·A¿  ‡ '!«!­G¦ + !Ú` O `F÷ 7@?@áÿ r@ $Ø@'@`€7` Ÿ  · / `? œ@¿ ï 1@_%›aï `@ËC\@€@?@  A?F¿ 2L@$S@ à!! !N@?@â? ?!z @ 5€À  N B  /€"@ €? @õ ? Ž@!h / · `¿ ‡ ?` _`!Æ €`A@á?@?Á? ?!P¡_@'ba÷ B€?¡‹¡¿   ‡ Ï Z  @ Bfà n` @   7ç¿`? e &·`'ÃB€/ 3"7 ]aß@o@€ 9 O   ƒ  (LB®ø€ @$ @/` ¿"S@?€ã!@È / !Æ €``3 à? €?a` À%Ÿ`€à)?Pg@à?%=à# @-    â!G  A€ ? (`Ï@3! à'@‚ @ , (wá¿1€?k¿€¡À€/J0 w!Æ +‰Ü@? H¿ €`  5   €/" àâ ? £  Â@ g  @ D‘` € ` @ÿ@ó  ? €@@ @D‘` ` /€!?à?`7À  AÀ à?`.à À!à À?!à@&  `@%T@ `a a àÿ @.!’€àaºA“+·!ÿ`A¿ $ @7  `@` @G Ã`@@ @G@ G @ @ `+  L @@H ` ÿ ?@ ?  à?  @3€a '  €/`7`?‚c'@   @aR à @  o  à?JG@  @< @@Â@€à)?@Â@; ` à ?%"€  ' | @@Â! a  G`¿b@'!o à ;`-¿` #   Ga¿a #  €  € `!c !† ’  À / w` I @@ €@;dØ$“__@@¯%ÿe‡ðÈ 4 6@À@7 ( @%  !¬ @? »Ï`*`, à'@  I% 1@5@  §‡@@@€à K  Ÿ@ ‚>À?€ÿ@ ¾ ¿ / @7@   aÇ!@ A?  ?Aÿ`#€'à@ @!” "IA¿@ A¿ "  ?¡¯@ ,@@7 &O€€ ¿!I L‡!?H‡*Ç ¤  À'À`£ ¦ @ ·!A!? G P@@o  €'   ` Š@ /a@?@@à@D``7(≖)Æ  (ö@)ÇK7@¿kG ¯`@Ò€` Z`‡ L`¥ · ¯ @¿"à¿ @@€ J@ @@‘à¿ @¿!`¿"@@ @-  Eà¿ÀŸ  Ÿ ·Œ6!@Ç`€" `` ‚@@ˆ``¿  · ¿ `ÏA  q  / €@@‘@@    ·a¿  #Ý@    7 L@JS @b@/  ¿@Ç ‡! @"W @@`@G `€ ? ] 7`¿``G“ Ç   o@#w @—  @? ¤à¿ @"W@@- À7Aœ@!` ?   …À`7   /€‡ C@`ƒ_@ #k`@@ `` @ @€eW@EO€€? ‡ ? F`@"À`  ==gaviotatb-0.4.orig/gtb/gtb2/knk.gtb.cp20000644000175000017500000002434011536321052016723 0ustar varunvarun@€3€3<<ë Âõ"à(€  à . @àà@5@À  à `;à  à!`:`€ Ààà5à à# 5    àà.€ €à à.  `à!à. `à"@2€@  à#à.`  Äà!`5`  ¡Fà 5   à& 5    à à+  @@àà*  ``àà)  €€àà(    à àà$   @à àà#   `à àà"   €à à à!    à à à    àà àà   àà  à   àà `à   àà  à   à à à   à à à   ààà   àà$à ààà%àÀ ààDíÀ1`àà 5 @`à+? 4@`à,? 5  `à!€.@@ `à!à.` à3?@@à3?   à#à. @= à#à.@ Ã@à"à.` à8? à$à.` à8 à7à$@à,` `=` àà+` `? à à*` €? àà)`  ? àà(` À? àà'` à? àà&` à? àà%` à? àà$` à? àà#` à? àà"` à? àà!` à? àà ` à? àà` à? àà` à ? àà` à ? àà` à ? àà` à ? àà` à ? àà` à? àà` à? à à` à? à à` à? à à` à? à à` à? à à` à? àà` à? àà` à? àà` à? àà` à? !àà` à? "àà ` à? #àà ` à? $àà ` à? %àà ` à? &Àà à? ' à€ à? (€À  à ? )`  ` à!? *@€@` à"? + ``` à#? ,€€@ `à +  ` à%?K,`6`` Àà €0@;@ `à! .€@@ à#@.€4@ `à!`.l4€ à$€.@@ `à!€.@@ `à!€.@ Ä@ à"€.@`:`à#@9€ @= à#€.@`à6? D@Fà"€.@@ €`à!€.@@ `à!€.@@ à&€`5`` ? à"€,@@   à €+@@ @@à€*@@  à€)@@ ` àà.` À? à€'@@ ` Àà€&@@ `@àà€%@@ ``à à€$@@ `€à à€#@@ ` à à€"@@ `Àà à €!@@ `àà à € @@ `ààà€@@ `ààà€@@ `ààà€@@ `àà à€@@ `àà à€@@ `àà  €@@ `àà `€@@ `àà  €@@ `à à @@ `à à€@@ `à à €@@ `à à €@@ `à à €@@ `àà €@@ `àà €@@ `àà€@@ `àà€@@ `àà€@@ `àà € @@ `àà!€ @@ `àà"€ @@ `àà#€ @@ `àà$€ @@ `àà%€@@ `àÀ&€@@ `à '€@@ `à€(à` à"? + ``` à#? ,€€@ `àJë€/@@ `àÀ.@4@ `à!€0@4@ `à! .€@@ à#@.€4@ `à!`.AH  à$€.@@ `à!€.@@ `à!€.@ Ä@ à"€.@`:`à#@9€ @= à#€.@`à6? D@Fà"€.@@ €`à!€.@@ `à!€.@@ à&€`5`` ? à"€,@@   à €+@@ @@à€*@@  à€)@@ ` àà.` À? à€'@@ ` Àà€&@@ `@àà€%@@ ``à à€$@@ `€à à€#@@ ` à à€"@@ `Àà à €!@@ `àà à € @@ `ààà€@@ `ààà€@@ `ààà€@@ `àà à€@@ `àà à€@@ `àà  €@@ `àà `€@@ `àà  €@@ `à à @@ `à à€@@ `à à €@@ `à à €@@ `à à €@@ `àà €@@ `àà €@@ `àà€@@ `àà€@@ `àà€@@ `àà € @@ `àà!€ @@ `àà"€ @@ `àà#€ @@ `àà$€ @@ `àà%€@@ `àÀ&€@@ `à '€@@ `à€(à` à"? + ``` à#? ,€À@@ `àŠîà.` à#? @0À` €à /€  @`à@(à.@ `à€(à0`àà`/@€€à+? 4@`à,? 5  `à€(à` à.?@à8?@@à4 @`à - €@ @= à€(€@@ Ã@à€(€@` ?`à€'€@` ? à€&€@` `=` à€%€@` `? à€$€@` €? à€#€@`  ?``à€€@` à? à€€@` à? à€€@` à? à€€@` à?€`à€€@` à ? à €€@` à ? à €€@` à? `"À€ €@` à? à€ €@` à?Àc¤`0à`à@à9@6€ @ à@$`„` €@ `à@$€*@ €` €à@+ € ` @ à@$€@À Àà@+@@@À @ à@$@`  ` @ à@$@€€4`€ à@+@ aÊ`à-? 6€ @ à@$@à`à3?@@à3?   à@$@à @= à@$@à@ Ã@à@$@à`à8? à@$@à`à à``à@#@à` ? à@"@à``=` à@!@à``? à@ @à`€? à@@à` ? à@@à`À? à@@à`à? à@@à`à? à@@à`à? à@@à`à? à@@à`à? à@@à`à? à @@à`à? à @@à`à? à @@à`à? à @@à`à ? à @@à`à ? à@@à`à ? à@@à`à ? à@@à`à ? à@@à`à? à@@à`à? à@ @à`à? à@ @à`à? à@ @à`à? à@ @à`à? À@ @à`à?  @@à`à? €@@à`à? `@@à`à? @@@à`à? ! @@à`à? "à€ €@ `à ! `à@ `à€$€(à` €àhä`0à`à@ &€à@ `à@$@à`à#? 0@@@ `à@$€*@ €` €à@+ € ` @ à@$€@À Àà@+@@@À @ à@$@`  ` @ à@$@€€4`€ à@+@ aÊ`à-? 6€ @ à@$@à`à3?@@à3?   à@$@à @= à@$@à@ Ã@à@$@à`à8? à@$@à`à8 Uà@#@à` ? à@"@à``=` à@!@à``? à@ @à`€? à@@à` ? à@@à`À? à@@à`à? à@@à`à? à@@à`à? à@@à`à? à@@à`à? à@@à`à? à @@à`à? à @@à`à? à @@à`à? à @@à`à ? à @@à`à ? à@@à`à ? à@@à`à ? à@@à`à ? à@@à`à? à@@à`à? à@ @à`à? à@ @à`à? à@ @à`à? à@ @à`à? À@ @à`à?  @@à`à? €@@à`à? `@@à`à? @@@à`à? ! @@à`à? "à€ €@ `à ! `à@ `àI$`&@@à` à @+@à` à@ @@à`à?  @@à` à @'À€ €@ `à@ ! `à@ `à`` @à` €à€àà €` €à @+@à` à @+`„` €@ `à @$€ @ €` €à @+ € ` @ à @$@@@À @ à @$@`  ` @ à @$@€€`€ à @+@ aŠ` à @+@à` à @+@à „€à @$@à``à @;@à @ à @$@à` `à @@@à`@`à @"@à``` à `@€à@ @@à € €à@ ``à à @@à` €`à @@à`  `à @@à` à`€ @@à` à`` @@à` à"[@ @@à` à`A @@à`à?À@+@à`à? @@à`à?  @@à` à @'À€ €@ `à@ ! `à@ `à`` @à` €à€àà €` €à @+@à` à @+@à` à @+`Ä` €@ `à @$€ @ €` €à @+ € ` @ à @$€@À Àà @+@@@À @ à @$@`  ` @ à @$@€€`€ à @+@ aÊ` à @+@à` à @+@à` à @+@à Ä€à @$@à``à @;@à @ à @$@à@ Ã@à @$@à` à @+@à`¥ßàà? à @$@à` `à @@@à`@`à @"@à``` à `@€à@ @@à € €à@  àà€#à`   à  @@à` @à  @@à`  `à @@à` @`à @@à` ``à @@à` €`à @@à`  `à @@à` À`à @@à` à`à @@à` à`à @@à` à`à @@à` à`À @@à` à`  @@à` à`€ @@à` à`` @@à` à`@ @@à` à`  @@à` à `@`@@à` à ` `@@à` à à@ @à`à? @@``à` à æš '@3@à` à`@ @@à` à`  @@à` à `@`@@à` à ` `@@à` à à@ @à`à? @@``à` à !  `à@ `à" `@@à` à @+@à` à©§@+@à`à?  @@à` à @'À€ €@ `à@ ! `à@ `à`` @à` €à @+@à` à @+a` €@ `à @$€ @ €` €à @+@@@À @ à @$@`  ` @ à @$@€€`€ à @+@à` à @+@àa à @;@à``à @;@à` `à @@@à`@`à @"@à``` à `@€à@ ``à à @@à` €`à @@à` àà3 = à1@<@à/`;`à-€:€à+ 9 à)à8à à#à5à à!à4à àà3à àà2à àà1ààà 0à àà -à àà ,à àà +à à à *à à à)àà à(ààà$àÀà#à€à"à@à!àà àDààà$ààà%ààà&àà à ,à àà -à àà.ààà5à à$à6àà-`à3 = à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?à6à.?à7à/?À8à0? 9à1?€:à2?`;à3?@<à4?N€à5à7A  à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?à6à.?à7à/?À8à0? 9à1?€:à2?`;à3?Nà5@ = Bà4à7A  à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?à6à.?à7à/?À8à0? 9à1?€:à2?`;€?€à,`:`à.@;@à0 < à2ï7à9A ¿ à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà 1à àà -à àà ,à àà +à à à *à à à)ààà$àÀà#à€à"à@à!à#à?à$à?à%à? à ,à àà -à àà6à à'€9€à,`:`à.@;@à0 < à2çÿÀá1B€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/àà ÀÀàà àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à5à à"à5à à'€9€à,`:`à.@;@à0 < à2 à5à7A  à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?à +à#?à ,à$?à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?í¿ à&Fà.ààà/ààà0ààà1à àà2à àà3à à à4à à&€9€à,`:`à.@;@à0 < à4ïý@á-Ià5à à!à4à àà3à àà 2à àà -à àà ,à àà +à à à*ààà$àÀà#à€à"à#à?à$à?Àõ?Àà$@à -à%?à .à&?à/à'?à0à(?à1à)?à2à*?à3à+?à4à,?à5à-?@€9€à,`:`à.@;@à0 < à2ç7þà9A ¿ à1@<@à/`;`à-€:€à+à9à à#à5à à!à4à àà3à àà2à àà1ààà0ààà/ààà .à àà -à àà ,à àà +à à à *à à à)àà à(ààà'ààà&ààà%ààà$àÀà#à€à"à@à!àà à@àà à?à!à?à"à?à#à?à$à?à%à?à&à?à'à?à(à ?à)à!?à *à"?í ¿ÀàGà%ààà&ààà'ààà(àà à )à à à *à àà +à àà -à àà.ààà/ààà0ààà1à àà2à àà3à à%€9€à,`:`à.@;@à3î7É  à1@<@à/à;à à#à5à à!à4à àà 3à àà -à àà ,à àà+ààà$àÀà#gaviotatb-0.4.orig/gtb/gtb1/0000755000175000017500000000000011536321052014753 5ustar varunvarungaviotatb-0.4.orig/gtb/gtb1/knk.gtb.cp10000644000175000017500000001647411536321052016732 0ustar varunvarun@€3€3<<D¼Ä<@Ðßïÿÿÿÿÿ·ßïÿÿÿÿÿwßïÿÿÿÿÿ÷Þïÿÿÿÿÿ÷Ýïÿÿÿÿÿ÷Ûïÿÿÿÿÿ÷ßïÿÿÿÿÿ÷Ÿïÿÿÿÿÿ÷_ïÿÿÿÿÿ÷ßîÿÿÿÿÿ÷ßíÿÿÿÿÿ÷ßëÿÿÿÿÿ÷ßÏÿÿÿÿÿ÷߯ÿÿÿÿÿ÷ßoÿÿÿÿÿ÷ßïþÿÿÿÿ÷ßïýÿÿÿÿ÷ßïûÿÿÿÿ÷ßï¿ÿÿÿÿ÷ßïÿÿÿÿ÷ßïÿþÿÿÿ÷ßïÿýÿÿÿ÷ßïÿûÿÿÿ÷ßïÿÿÿÿ÷ßïÿÿþÿÿ÷ßïÿÿýÿÿ÷ßïÿÿûÿÿ÷ßïÿÿÿþÿ÷ßïÿÿÿýÿ÷ßïÿÿÿûÿ÷ßïÿÿÿÿý÷ßïÿÿÿÿû÷ßïÿÿÿÿÿ«¿×ÿÿÿÿÿo¿×ÿÿÿÿÿï¾×ÿÿÿÿÿï½×ÿÿÿÿÿï»×ÿÿÿÿÿï¿×ÿÿÿÿÿï?×ÿÿÿÿÿï¿Öÿÿÿÿÿï¿Õÿÿÿÿÿï¿Óÿÿÿÿÿï¿×ÿÿÿÿÿï¿Çÿÿÿÿÿï¿×ÿÿÿÿÿï¿—ÿÿÿÿÿï¿Wÿÿÿÿÿï¿×þÿÿÿÿï¿×ýÿÿÿÿï¿×ûÿÿÿÿï¿×÷ÿÿÿÿï¿×ïÿÿÿÿï¿×ßÿÿÿÿï¿×¿ÿÿÿÿï¿×ÿÿÿÿï¿×ÿþÿÿÿï¿×ÿýÿÿÿï¿×ÿûÿÿÿï¿×ÿ÷ÿÿÿï¿×ÿïÿÿÿï¿×ÿßÿÿÿï¿×ÿ¿ÿÿÿï¿×ÿÿÿÿï¿×ÿÿþÿÿï¿×ÿÿýÿÿï¿×ÿÿûÿÿï¿×ÿÿ÷ÿÿï¿×ÿÿïÿÿï¿×ÿÿßÿÿï¿×ÿÿ¿ÿÿï¿×ÿÿÿÿï¿×ÿÿÿþÿï¿×ÿÿÿýÿï¿×ÿÿÿûÿï¿×ÿÿÿ÷ÿï¿×ÿÿÿïÿï¿×ÿÿÿßÿï¿×ÿÿÿ¿ÿï¿×ÿÿÿÿï¿×ÿÿÿÿþï¿×ÿÿÿÿýï¿×ÿÿÿÿûï¿×ÿÿÿÿ÷ï¿×ÿÿÿÿïï¿×ÿÿÿÿßï¿×ÿÿÿÿ¿ï¿×ÿÿÿÿï¿×ÿÿÿÿÿî¿×ÿÿÿÿÿí¿×ÿÿÿÿÿÓw¯ÿÿÿÿÿ_w¯ÿÿÿÿÿßv¯ÿÿÿÿÿßu¯ÿÿÿÿÿßs¯ÿÿÿÿÿßw¯ÿÿÿÿÿßw¯ÿÿÿÿÿßw®ÿÿÿÿÿßw­ÿÿÿÿÿßw«ÿÿÿÿÿßw§ÿÿÿÿÿßw¯ÿÿÿÿÿßwÿÿÿÿÿßw¯ÿÿÿÿÿßw/ÿÿÿÿÿßw¯þÿÿÿÿßw¯ýÿÿÿÿßw¯ûÿÿÿÿßw¯÷ÿÿÿÿßw¯ïÿÿÿÿßw¯ßÿÿÿÿßw¯¿ÿÿÿÿßw¯ÿÿÿÿßw¯ÿþÿÿÿßw¯ÿýÿÿÿßw¯ÿûÿÿÿßw¯ÿ÷ÿÿÿßw¯ÿïÿÿÿßw¯ÿßÿÿÿßw¯ÿ¿ÿÿÿßw¯ÿÿÿÿßw¯ÿÿþÿÿßw¯ÿÿýÿÿßw¯ÿÿûÿÿßw¯ÿÿ÷ÿÿßw¯ÿÿïÿÿßw¯ÿÿßÿÿßw¯ÿÿ¿ÿÿßw¯ÿÿÿÿßw¯ÿÿÿþÿßw¯ÿÿÿýÿßw¯ÿÿÿûÿßw¯ÿÿÿ÷ÿßw¯ÿÿÿïÿßw¯ÿÿÿßÿßw¯ÿÿÿ¿ÿßw¯ÿÿÿÿßw¯ÿÿÿÿþßw¯ÿÿÿÿýßw¯ÿÿÿÿûßw¯ÿÿÿÿ÷ßw¯ÿÿÿÿïßw¯ÿÿÿÿßßw¯ÿÿÿÿ¿ßw¯ÿÿÿÿßw¯ÿÿÿÿÿÞw¯ÿÿÿÿÿÝw¯ÿÿÿÿÿ³ï^ÿÿÿÿÿ¯ï^ÿÿÿÿÿ¿î^ÿÿÿÿÿ¿í^ÿÿÿÿÿ¿ë^ÿÿÿÿÿ¿ç^ÿÿÿÿÿ¿ï^ÿÿÿÿÿ¿ï^ÿÿÿÿÿ¿ï\ÿÿÿÿÿ¿ïZÿÿÿÿÿ¿ïVÿÿÿÿÿ¿ïNÿÿÿÿÿ¿ï^ÿÿÿÿÿ¿ïÿÿÿÿÿ¿ï^ÿÿÿÿÿ¿ï^þÿÿÿÿ¿ï^ýÿÿÿÿ¿ï^ûÿÿÿÿ¿ï^÷ÿÿÿÿ¿ï^ïÿÿÿÿ¿ï^ßÿÿÿÿ¿ï^¿ÿÿÿÿ¿ï^ÿÿÿÿ¿ï^ÿþÿÿÿ¿ï^ÿýÿÿÿ¿ï^ÿûÿÿÿ¿ï^ÿ÷ÿÿÿ¿ï^ÿïÿÿÿ¿ï^ÿßÿÿÿ¿ï^ÿ¿ÿÿÿ¿ï^ÿÿÿÿ¿ï^ÿÿþÿÿ¿ï^ÿÿýÿÿ¿ï^ÿÿûÿÿ¿ï^ÿÿ÷ÿÿ¿ï^ÿÿïÿÿ¿ï^ÿÿßÿÿ¿ï^ÿÿ¿ÿÿ¿ï^ÿÿÿÿ¿ï^ÿÿÿþÿ¿ï^ÿÿÿýÿ¿ï^ÿÿÿûÿ¿ï^ÿÿÿ÷ÿ¿ï^ÿÿÿïÿ¿ï^ÿÿÿßÿ¿ï^ÿÿÿ¿ÿ¿ï^ÿÿÿÿ¿ï^ÿÿÿÿþ¿ï^ÿÿÿÿý¿ï^ÿÿÿÿû¿ï^ÿÿÿÿ÷¿ï^ÿÿÿÿï¿ï^ÿÿÿÿß¿ï^ÿÿÿÿ¿¿ï^ÿÿÿÿ¿ï^ÿÿÿÿÿ¾ï^ÿÿÿÿÿ½ï^ÿÿÿÿÿ»ï¿×ÿÿÿÿ?ï¿×ÿÿÿÿ¿î¿×ÿÿÿÿ¿í¿×ÿÿÿÿ¿ë¿×ÿÿÿÿ¿¯¿×ÿÿÿÿ¿o¿×ÿÿÿÿ¿ï¾×ÿÿÿÿ¿ï½×ÿÿÿÿ¿ï»×ÿÿÿÿ¿ï¿×ÿÿÿÿ¿ï?×ÿÿÿÿ¿ï¿Öÿÿÿÿ¿ï¿Õÿÿÿÿ¿ï¿Óÿÿÿÿ¿ï¿—ÿÿÿÿ¿ï¿Wÿÿÿÿ¿ï¿×þÿÿÿ¿ï¿×ýÿÿÿ¿ï¿×ûÿÿÿ¿ï¿×ÿÿÿ¿ï¿×ÿþÿÿ¿ï¿×ÿýÿÿ¿ï¿×ÿûÿÿ¿ï¿×ÿÿþÿ¿ï¿×ÿÿýÿ¿ï¿×ÿÿûÿ¿ï¿×ÿÿÿý¿ï¿×ÿÿÿû¿ï¿×ÿÿÿÿsßw¯ÿÿÿÿwßw¯ÿÿÿÿwÞw¯ÿÿÿÿwÝw¯ÿÿÿÿwÛw¯ÿÿÿÿw×w¯ÿÿÿÿw_w¯ÿÿÿÿwßv¯ÿÿÿÿwßu¯ÿÿÿÿwßs¯ÿÿÿÿwßw¯ÿÿÿÿwßw¯ÿÿÿÿwßw®ÿÿÿÿwßw­ÿÿÿÿwßw«ÿÿÿÿwßw§ÿÿÿÿwßw¯ÿÿÿÿwßwÿÿÿÿwßw¯ÿÿÿÿ€3pßw/ÿÿÿÿwßw¯þÿÿÿwßw¯ýÿÿÿwßw¯ûÿÿÿwßw¯÷ÿÿÿwßw¯ïÿÿÿwßw¯ßÿÿÿwßw¯¿ÿÿÿwßw¯ÿÿÿwßw¯ÿþÿÿwßw¯ÿýÿÿwßw¯ÿûÿÿwßw¯ÿ÷ÿÿwßw¯ÿïÿÿwßw¯ÿßÿÿwßw¯ÿ¿ÿÿwßw¯ÿÿÿwßw¯ÿÿþÿwßw¯ÿÿýÿwßw¯ÿÿûÿwßw¯ÿÿ÷ÿwßw¯ÿÿïÿwßw¯ÿÿßÿwßw¯ÿÿ¿ÿwßw¯ÿÿÿwßw¯ÿÿÿþwßw¯ÿÿÿýwßw¯ÿÿÿûwßw¯ÿÿÿ÷wßw¯ÿÿÿïwßw¯ÿÿÿßwßw¯ÿÿÿ¿wßw¯ÿÿÿwßw¯ÿÿÿÿvßw¯ÿÿÿÿußw¯ÿÿÿÿã¾ï^ÿÿÿÿï¾ï^ÿÿÿÿï¾ï^ÿÿÿÿï¼ï^ÿÿÿÿïºï^ÿÿÿÿï¶ï^ÿÿÿÿï®ï^ÿÿÿÿï¾î^ÿÿÿÿï¾í^ÿÿÿÿï¾ë^ÿÿÿÿï¾ç^ÿÿÿÿï¾ï^ÿÿÿÿï¾ï^ÿÿÿÿï¾ï\ÿÿÿÿï¾ïZÿÿÿÿï¾ïVÿÿÿÿï¾ïNÿÿÿÿï¾ï^ÿÿÿÿï¾ïÿÿÿÿï¾ï^ÿÿÿÿï¾ï^þÿÿÿï¾ï^ýÿÿÿï¾ï^ûÿÿÿï¾ï^÷ÿÿÿï¾ï^ïÿÿÿï¾ï^ßÿÿÿï¾ï^¿ÿÿÿï¾ï^ÿÿÿï¾ï^ÿþÿÿï¾ï^ÿýÿÿï¾ï^ÿûÿÿï¾ï^ÿ÷ÿÿï¾ï^ÿïÿÿï¾ï^ÿßÿÿï¾ï^ÿ¿ÿÿï¾ï^ÿÿÿï¾ï^ÿÿþÿï¾ï^ÿÿýÿï¾ï^ÿÿûÿï¾ï^ÿÿ÷ÿï¾ï^ÿÿïÿï¾ï^ÿÿßÿï¾ï^ÿÿ¿ÿï¾ï^ÿÿÿï¾ï^ÿÿÿþï¾ï^ÿÿÿýï¾ï^ÿÿÿûï¾ï^ÿÿÿ÷ï¾ï^ÿÿÿïï¾ï^ÿÿÿßï¾ï^ÿÿÿ¿ï¾ï^ÿÿÿï¾ï^ÿÿÿÿî¾ï^ÿÿÿÿí¾ï^ÿÿÿÿ£wßw¯ÿÿÿ¯wßw¯ÿÿÿwßw¯ÿÿÿ¯wßw¯ÿÿÿ/wßw¯ÿÿÿ¯vßw¯ÿÿÿ¯ußw¯ÿÿÿ¯sßw¯ÿÿÿ¯wßw¯ÿÿÿ¯wÞw¯ÿÿÿ¯wÝw¯ÿÿÿ¯wÛw¯ÿÿÿ¯w_w¯ÿÿÿ¯wßv¯ÿÿÿ¯wßu¯ÿÿÿ¯wßs¯ÿÿÿ¯wßw¯ÿÿÿ¯wßw®ÿÿÿ¯wßw­ÿÿÿ¯wßw«ÿÿÿ¯wßw/ÿÿÿ¯wßw¯þÿÿ¯wßw¯ýÿÿ¯wßw¯ûÿÿ¯wßw¯ÿþÿ¯wßw¯ÿýÿ¯wßw¯ÿûÿ¯wßw¯ÿÿý¯wßw¯ÿÿû¯wßw¯ÿÿÿSï¾ï^ÿÿÿOï¾ï^ÿÿÿ_ï¾ï^ÿÿÿï¾ï^ÿÿÿ_ï¾ï^ÿÿÿ_î¾ï^ÿÿÿ_í¾ï^ÿÿÿ_ë¾ï^ÿÿÿ_ç¾ï^ÿÿÿ_ï¾ï^ÿÿÿ_ï¾ï^ÿÿÿ_ï¼ï^ÿÿÿ_ïºï^ÿÿÿ_ï¶ï^ÿÿÿ_ï®ï^ÿÿÿ_ï¾î^ÿÿÿ_ï¾í^ÿÿÿ_ï¾ë^ÿÿÿ_ï¾ç^ÿÿÿ_ï¾ï^ÿÿÿ_ï¾ï^ÿÿÿ_ï¾ï\ÿÿÿ_ï¾ïZÿÿÿ_ï¾ïVÿÿÿ_ï¾ïNÿÿÿ_ï¾ï^ÿÿÿ_ï¾ïÿÿÿ_ï¾ï^ÿÿÿ_ï¾ï^þÿÿ_ï¾ï^ýÿÿ_ï¾ï^ûÿÿ_ï¾ï^÷ÿÿ_ï¾ï^ïÿÿ_ï¾ï^ßÿÿ_ï¾ï^¿ÿÿ_ï¾ï^ÿÿ_ï¾ï^ÿþÿ_ï¾ï^ÿýÿ_ï¾ï^ÿûÿ_ï¾ï^ÿ÷ÿ_ï¾ï^ÿïÿ_ï¾ï^ÿßÿ_ï¾ï^ÿ¿ÿ_ï¾ï^ÿÿ_ï¾ï^ÿÿþ_ï¾ï^ÿÿý_ï¾ï^ÿÿû_ï¾ï^ÿÿ÷_ï¾ï^ÿÿï_ï¾ï^ÿÿß_ï¾ï^ÿÿ¿_ï¾ï^ÿÿ_ï¾ï^ÿÿÿ^ï¾ï^ÿÿÿ]ï¾ï^ÿÿÿó_ï¾ï^ÿÿï_ï¾ï^ÿÿß_ï¾ï^ÿÿ¿_ï¾ï^ÿÿ_ï¾ï^ÿÿÿ^ï¾ï^ÿÿÿ]ï¾ï^ÿÿÿ[ï¾ï^ÿÿÿOï¾ï^ÿÿÿ_ï¾ï^ÿÿÿï¾ï^ÿÿÿ_ï¾ï^ÿÿÿ_î¾ï^ÿÿÿ_í¾ï^ÿÿÿ_ë¾ï^ÿÿÿ_ï¾ï^ÿÿÿ_ï¼ï^ÿÿÿ_ïºï^ÿÿÿ_ï¾î^ÿÿÿ_ï¾í^ÿÿÿ_ï¾ë^ÿÿÿ_ï¾ï^ÿÿÿ_ï¾ï\ÿÿÿ_ï¾ïZÿÿÿ_ï¾ï^þÿÿ_ï¾ï^ýÿÿ_ï¾ï^ûÿÿ_ï¾ï^ÿýÿ_ï¾ï^ÿûÿ_ï¾ï^ÿÿ@Ðÿÿÿÿÿÿÿ·ÿÿÿÿÿÿÿwÿÿÿÿÿÿÿ÷þÿÿÿÿÿÿ÷ýÿÿÿÿÿÿ÷ûÿÿÿÿÿÿ÷ßÿÿÿÿÿÿ÷¿ÿÿÿÿÿÿ÷ÿÿÿÿÿÿ÷ÿþÿÿÿÿÿ÷ÿýÿÿÿÿÿ÷ÿûÿÿÿÿÿ÷ÿßÿÿÿÿÿ÷ÿ¿ÿÿÿÿÿ÷ÿÿÿÿÿÿ÷ÿÿþÿÿÿÿ÷ÿÿýÿÿÿÿ÷ÿÿûÿÿÿÿ÷ÿÿ¿ÿÿÿÿ÷ÿÿÿÿÿÿ÷ÿÿÿþÿÿÿ÷ÿÿÿýÿÿÿ÷ÿÿÿûÿÿÿ÷ÿÿÿÿÿÿ÷ÿÿÿÿþÿÿ÷ÿÿÿÿýÿÿ÷ÿÿÿÿûÿÿ÷ÿÿÿÿÿþÿ÷ÿÿÿÿÿýÿ÷ÿÿÿÿÿûÿ÷ÿÿÿÿÿÿý÷ÿÿÿÿÿÿû÷ÿÿÿÿÿÿÿ«ÿÿÿÿÿÿÿoÿÿÿÿÿÿÿïþÿÿÿÿÿÿïýÿÿÿÿÿÿïûÿÿÿÿÿÿï¿ÿÿÿÿÿÿïÿÿÿÿÿÿïÿþÿÿÿÿÿïÿýÿÿÿÿÿïÿûÿÿÿÿÿïÿ÷ÿÿÿÿÿïÿïÿÿÿÿÿïÿßÿÿÿÿÿïÿ¿ÿÿÿÿÿïÿÿÿÿÿÿïÿÿþÿÿÿÿïÿÿýÿÿÿÿïÿÿûÿÿÿÿïÿÿ÷ÿÿÿÿïÿÿïÿÿÿÿïÿÿßÿÿÿÿïÿÿ¿ÿÿÿÿïÿÿÿÿÿÿïÿÿÿþÿÿÿïÿÿÿýÿÿÿïÿÿÿûÿÿÿïÿÿÿ÷ÿÿÿïÿÿÿïÿÿÿïÿÿÿßÿÿÿïÿÿÿ¿ÿÿÿïÿÿÿÿÿÿïÿÿÿÿþÿÿïÿÿÿÿýÿÿïÿÿÿÿûÿÿïÿÿÿÿ÷ÿÿïÿÿÿÿïÿÿïÿÿÿÿßÿÿïÿÿÿÿ¿ÿÿïÿÿÿÿÿÿïÿÿÿÿÿþÿïÿÿÿÿÿýÿïÿÿÿÿÿûÿïÿÿÿÿÿ÷ÿïÿÿÿÿÿïÿïÿÿÿÿÿßÿïÿÿÿÿÿ¿ÿïÿÿÿÿÿÿïÿÿÿÿÿÿþïÿÿÿÿÿÿýïÿÿÿÿÿÿûïÿÿÿÿÿÿ÷ïÿÿÿÿÿÿïïÿÿÿÿÿÿßïÿÿÿÿÿÿ¿ïÿÿÿÿÿÿïÿÿÿÿÿÿÿîÿÿÿÿÿÿÿíÿÿÿÿÿÿÿÓÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿßþÿÿÿÿÿÿßýÿÿÿÿÿÿßûÿÿÿÿÿÿß÷ÿÿÿÿÿÿßÿÿÿÿÿÿßÿþÿÿÿÿÿßÿýÿÿÿÿÿßÿûÿÿÿÿÿßÿ÷ÿÿÿÿÿßÿïÿÿÿÿÿßÿßÿÿÿÿÿßÿ¿ÿÿÿÿÿßÿÿÿÿÿÿßÿÿþÿÿÿÿßÿÿýÿÿÿÿßÿÿûÿÿÿÿßÿÿ÷ÿÿÿÿßÿÿïÿÿÿÿßÿÿßÿÿÿÿßÿÿ¿ÿÿÿÿßÿÿÿÿÿÿßÿÿÿþÿÿÿßÿÿÿýÿÿÿßÿÿÿûÿÿÿßÿÿÿ÷ÿÿÿßÿÿÿïÿÿÿßÿÿÿßÿÿÿßÿÿÿ¿ÿÿÿßÿÿÿÿÿÿßÿÿÿÿþÿÿßÿÿÿÿýÿÿßÿÿÿÿûÿÿßÿÿÿÿ÷ÿÿßÿÿÿÿïÿÿßÿÿÿÿßÿÿßÿÿÿÿ¿ÿÿßÿÿÿÿÿÿßÿÿÿÿÿþÿßÿÿÿÿÿýÿßÿÿÿÿÿûÿßÿÿÿÿÿ÷ÿßÿÿÿÿÿïÿßÿÿÿÿÿßÿßÿÿÿÿÿ¿ÿßÿÿÿÿÿÿßÿÿÿÿÿÿþßÿÿÿÿÿÿýßÿÿÿÿÿÿûßÿÿÿÿÿÿ÷ßÿÿÿÿÿÿïßÿÿÿÿÿÿßßÿÿÿÿÿÿ¿ßÿÿÿÿÿÿßÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿ³ÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿÷ÿÿÿÿÿÿ¿ïÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿ÷ÿÿÿÿÿ¿ÿïÿÿÿÿÿ¿ÿßÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿ÷ÿÿÿÿ¿ÿÿïÿÿÿÿ¿ÿÿßÿÿÿÿ¿ÿÿ¿ÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿþÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿ÷ÿÿÿ¿ÿÿÿïÿÿÿ¿ÿÿÿßÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿþÿÿ¿ÿÿÿÿýÿÿ¿ÿÿÿÿûÿÿ¿ÿÿÿÿ÷ÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿûÿ¿ÿÿÿÿÿ÷ÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿû¿ÿÿÿÿÿÿ÷¿ÿÿÿÿÿÿï¿ÿÿÿÿÿÿß¿ÿÿÿÿÿÿ¿¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ïÿÿÿÿÿÿïÿÿÿÿÿÿÿîÿÿÿÿÿÿÿíÿÿÿÿÿÿÿëÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿoÿÿÿÿÿÿÿïþÿÿÿÿÿÿïýÿÿÿÿÿÿïûÿÿÿÿÿÿï¿ÿÿÿÿÿÿïÿÿÿÿÿÿïÿþÿÿÿÿÿïÿýÿÿÿÿÿïÿûÿÿÿÿÿïÿ¿ÿÿÿÿÿïÿÿÿÿÿÿïÿÿþÿÿÿÿïÿÿýÿÿÿÿïÿÿûÿÿÿÿïÿÿÿÿÿÿïÿÿÿþÿÿÿïÿÿÿýÿÿÿïÿÿÿûÿÿÿïÿÿÿÿþÿÿïÿÿÿÿýÿÿïÿÿÿÿûÿÿïÿÿÿÿÿýÿïÿÿÿÿÿûÿïÿÿÿÿÿÿóßÿÿÿÿÿÿßÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿ×ÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿßþÿÿÿÿÿÿßýÿÿÿÿÿÿßûÿÿÿÿÿÿß÷ÿÿÿÿÿÿßÿÿÿÿÿÿßÿþÿÿÿÿÿßÿýÿÿÿÿÿßÿûÿÿÿÿÿßÿ÷ÿÿÿÿÿßÿïÿÿÿÿÿßÿßÿÿÿÿÿßÿ¿ÿÿÿÿ€3øßÿÿÿÿÿÿßÿÿþÿÿÿÿßÿÿýÿÿÿÿßÿÿûÿÿÿÿßÿÿ÷ÿÿÿÿßÿÿïÿÿÿÿßÿÿßÿÿÿÿßÿÿ¿ÿÿÿÿßÿÿÿÿÿÿßÿÿÿþÿÿÿßÿÿÿýÿÿÿßÿÿÿûÿÿÿßÿÿÿ÷ÿÿÿßÿÿÿïÿÿÿßÿÿÿßÿÿÿßÿÿÿ¿ÿÿÿßÿÿÿÿÿÿßÿÿÿÿþÿÿßÿÿÿÿýÿÿßÿÿÿÿûÿÿßÿÿÿÿ÷ÿÿßÿÿÿÿïÿÿßÿÿÿÿßÿÿßÿÿÿÿ¿ÿÿßÿÿÿÿÿÿßÿÿÿÿÿþÿßÿÿÿÿÿýÿßÿÿÿÿÿûÿßÿÿÿÿÿ÷ÿßÿÿÿÿÿïÿßÿÿÿÿÿßÿßÿÿÿÿÿ¿ÿßÿÿÿÿÿÿßÿÿÿÿÿÿþßÿÿÿÿÿÿýßÿÿÿÿÿÿó¿ÿÿÿÿÿÿï¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ÿÿÿÿÿÿÿ·ÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿÷ÿÿÿÿÿÿ¿ïÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿ÷ÿÿÿÿÿ¿ÿïÿÿÿÿÿ¿ÿßÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿ÷ÿÿÿÿ¿ÿÿïÿÿÿÿ¿ÿÿßÿÿÿÿ¿ÿÿ¿ÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿþÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿ÷ÿÿÿ¿ÿÿÿïÿÿÿ¿ÿÿÿßÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿþÿÿ¿ÿÿÿÿýÿÿ¿ÿÿÿÿûÿÿ¿ÿÿÿÿ÷ÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿûÿ¿ÿÿÿÿÿ÷ÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿóÿßÿÿÿÿÿïÿßÿÿÿÿÿßÿßÿÿÿÿÿ¿ÿßÿÿÿÿÿÿßÿÿÿÿÿÿþßÿÿÿÿÿÿýßÿÿÿÿÿÿûßÿÿÿÿÿÿßÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿßþÿÿÿÿÿÿßýÿÿÿÿÿÿßûÿÿÿÿÿÿßÿÿÿÿÿÿßÿþÿÿÿÿÿßÿýÿÿÿÿÿßÿûÿÿÿÿÿßÿÿÿÿÿÿßÿÿþÿÿÿÿßÿÿýÿÿÿÿßÿÿûÿÿÿÿßÿÿÿþÿÿÿßÿÿÿýÿÿÿßÿÿÿûÿÿÿßÿÿÿÿýÿÿßÿÿÿÿûÿÿßÿÿÿÿÿóÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿû¿ÿÿÿÿÿÿ÷¿ÿÿÿÿÿÿï¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ÿÿÿÿÿÿÿ·ÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿÷ÿÿÿÿÿÿ¿ïÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿ÷ÿÿÿÿÿ¿ÿïÿÿÿÿÿ¿ÿßÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿ÷ÿÿÿÿ¿ÿÿïÿÿÿÿ¿ÿÿßÿÿÿÿ¿ÿÿ¿ÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿþÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿ÷ÿÿÿ¿ÿÿÿïÿÿÿ¿ÿÿÿßÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿþÿÿ¿ÿÿÿÿýÿÿ¿ÿÿÿÿûÿÿ¿ÿÿÿÿ÷ÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿóÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿûÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿû¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿÿgaviotatb-0.4.orig/gtb/gtb1/kbk.gtb.cp10000644000175000017500000001647411536321052016716 0ustar varunvarun@€3€3<<D¼Ä<@Ðïß¿ÿþý³ïß¿ÿþýsïß¿ÿþýóîß¿ÿþýóíß¿ÿþýóëß¿ÿþýóÏß¿ÿþýó¯ß¿ÿþýóoß¿ÿþýóïÞ¿ÿþýóïÝ¿ÿþýóïÛ¿ÿþýóïßÿÿÿÿÿ÷ÿþýóï_¿ÿþýóïß¾ÿþýóïß½ÿþýóïß»ÿþýóïß¿ÿÿÿÿ÷ïß?ÿþýóïß¿~ÿþýóïß¿}ÿþýóïß¿{ÿþýóïß¿ÿÿÿ÷ïß¿þþýóïß¿ýþýóïß¿ûþýóïß¿ÿþÿ÷ïß¿ÿüýóïß¿ÿúýóïß¿ÿþý÷ïß¿ÿþùóïß¿ÿþý«×¿ÿþýûo׿ÿþýûïÖ¿ÿþýûïÕ¿ÿþýûïÓ¿ÿþýûï—¿ÿþýûïW¿ÿþýûï×¾ÿþýûï×½ÿþýûï×»ÿþýûï×·ÿþýûïׯÿþýûïןÿþýûï׿ÿÿÿÿÿï×?ÿþýûï׿~ÿþýûï׿}ÿþýûï׿{ÿþýûï׿wÿþýûï׿oÿþýûï׿_ÿþýûï׿?ÿþýûï׿ÿÿÿÿï׿þþýûï׿ýþýûï׿ûþýûï׿÷þýûï׿ïþýûï׿ßþýûï׿¿þýûï׿þýûï׿ÿþÿÿï׿ÿüýûï׿ÿúýûï׿ÿöýûï׿ÿîýûï׿ÿÞýûï׿ÿ¾ýûï׿ÿ~ýûï׿ÿþüûï׿ÿþýÿï׿ÿþùûï׿ÿþõûï׿ÿþíûï׿ÿþÝûï׿ÿþ½ûï׿ÿþ}ûï׿ÿþýúï׿ÿþýùï׿ÿþýûï׿ÿþýóï׿ÿþýëï׿ÿþýÛï׿ÿþý»ï׿ÿþý{ï׿ÿþýûî׿ÿþýûí׿ÿþýûÓ¯wÿþýûÿ_¯wÿþýûÿß®wÿþýûÿß­wÿþýûÿß«wÿþýûÿß§wÿþýûÿß/wÿþýûÿ߯vÿþýûÿ߯uÿþýûÿ߯sÿþýûÿ߯wÿþýûÿ߯gÿþýûÿ߯Wÿþýûÿ߯7ÿþýûÿ߯wÿÿÿÿÿ߯wþþýûÿ߯wýþýûÿ߯wûþýûÿ߯w÷þýûÿ߯wïþýûÿ߯wßþýûÿ߯w¿þýûÿ߯wþýûÿ߯wÿþÿÿÿ߯wÿüýûÿ߯wÿúýûÿ߯wÿöýûÿ߯wÿîýûÿ߯wÿÞýûÿ߯wÿ¾ýûÿ߯wÿ~ýûÿ߯wÿþüûÿ߯wÿþýÿÿ߯wÿþùûÿ߯wÿþõûÿ߯wÿþíûÿ߯wÿþÝûÿ߯wÿþ½ûÿ߯wÿþ}ûÿ߯wÿþýúÿ߯wÿþýùÿ߯wÿþýûÿ߯wÿþýóÿ߯wÿþýëÿ߯wÿþýÛÿ߯wÿþý»ÿ߯wÿþý{ÿ߯wÿþýûþ߯wÿþýûý߯wÿþýûû߯wÿþýû÷߯wÿþýûï߯wÿþýûß߯wÿþýû¿ß¯wÿþýû߯wÿþýûÿÞ¯wÿþýûÿݯwÿþýûÿ³_ïöýûÿÿ¯_ïöýûÿÿ¿^ïöýûÿÿ¿]ïöýûÿÿ¿[ïöýûÿÿ¿Wïöýûÿÿ¿Oïöýûÿÿ¿_îöýûÿÿ¿_íöýûÿÿ¿_ëöýûÿÿ¿_çöýûÿÿ¿_ïþýûÿÿ¿_Ïöýûÿÿ¿_¯öýûÿÿ¿_oöýûÿÿ¿_ïöÿÿÿÿ¿_ïôýûÿÿ¿_ïòýûÿÿ¿_ïöýûÿÿ¿_ïæýûÿÿ¿_ïÖýûÿÿ¿_ï¶ýûÿÿ¿_ïvýûÿÿ¿_ïöüûÿÿ¿_ïöýÿÿÿ¿_ïöùûÿÿ¿_ïöõûÿÿ¿_ïöíûÿÿ¿_ïöÝûÿÿ¿_ïö½ûÿÿ¿_ïö}ûÿÿ¿_ïöýúÿÿ¿_ïöýùÿÿ¿_ïöýûÿÿ¿_ïöýóÿÿ¿_ïöýëÿÿ¿_ïöýÛÿÿ¿_ïöý»ÿÿ¿_ïöý{ÿÿ¿_ïöýûþÿ¿_ïöýûýÿ¿_ïöýûûÿ¿_ïöýû÷ÿ¿_ïöýûïÿ¿_ïöýûßÿ¿_ïöýû¿ÿ¿_ïöýûÿ¿_ïöýûÿþ¿_ïöýûÿý¿_ïöýûÿû¿_ïöýûÿ÷¿_ïöýûÿï¿_ïöýûÿß¿_ïöýûÿ¿¿_ïöýûÿ¿_ïöýûÿÿ¾_ïöýûÿÿ½_ïöýûÿÿ“ï׿ÿþýSï׿ÿþýÓî׿ÿþýÓí׿ÿþýÓë׿ÿþýӯ׿ÿþýÓo׿ÿþýÓïÖ¿ÿþýÓïÕ¿ÿþýÓïÓ¿ÿþýÓï—¿ÿþýÓïW¿ÿþýÓï×¾ÿþýÓï×½ÿþýÓï×»ÿþýÓï׿ÿÿÿÿ×ï×?ÿþýÓï׿~ÿþýÓï׿}ÿþýÓï׿{ÿþýÓï׿ÿÿÿ×ï׿þþýÓï׿ýþýÓï׿ûþýÓï׿ÿþÿ×ï׿ÿüýÓï׿ÿúýÓï׿ÿþý×ï׿ÿþùÓï׿ÿþý£ß¯wÿþýû/߯wÿþýû¯Þ¯wÿþýû¯Ý¯wÿþýû¯Û¯wÿþýû¯×¯wÿþýû¯_¯wÿþýû¯ß®wÿþýû¯ß­wÿþýû¯ß«wÿþýû¯ß§wÿþýû¯ß/wÿþýû¯ß¯vÿþýû¯ß¯uÿþýû¯ß¯sÿþýû¯ß¯wÿþýû¯ß¯gÿþýû¯ß¯Wÿþýû¯ß¯7ÿþýû€3¨ß¯wÿÿÿÿ¯ß¯wþþýû¯ß¯wýþýû¯ß¯wûþýû¯ß¯w÷þýû¯ß¯wïþýû¯ß¯wßþýû¯ß¯w¿þýû¯ß¯wþýû¯ß¯wÿþÿÿ¯ß¯wÿüýû¯ß¯wÿúýû¯ß¯wÿöýû¯ß¯wÿîýû¯ß¯wÿÞýû¯ß¯wÿ¾ýû¯ß¯wÿ~ýû¯ß¯wÿþüû¯ß¯wÿþýÿ¯ß¯wÿþùû¯ß¯wÿþõû¯ß¯wÿþíû¯ß¯wÿþÝû¯ß¯wÿþ½û¯ß¯wÿþ}û¯ß¯wÿþýú¯ß¯wÿþýù¯ß¯wÿþýû¯ß¯wÿþýó¯ß¯wÿþýë¯ß¯wÿþýۯ߯wÿþý»¯ß¯wÿþý{¯ß¯wÿþýû®ß¯wÿþýû­ß¯wÿþýûS¿_ïöýûÿO¿_ïöýûÿ_¾_ïöýûÿ_½_ïöýûÿ_»_ïöýûÿ_·_ïöýûÿ_¯_ïöýûÿ_¿^ïöýûÿ_¿]ïöýûÿ_¿[ïöýûÿ_¿Wïöýûÿ_¿Oïöýûÿ_¿_îöýûÿ_¿_íöýûÿ_¿_ëöýûÿ_¿_çöýûÿ_¿_ïþýûÿ_¿_Ïöýûÿ_¿_¯öýûÿ_¿_oöýûÿ_¿_ïöÿÿÿ_¿_ïôýûÿ_¿_ïòýûÿ_¿_ïöýûÿ_¿_ïæýûÿ_¿_ïÖýûÿ_¿_ï¶ýûÿ_¿_ïvýûÿ_¿_ïöüûÿ_¿_ïöýÿÿ_¿_ïöùûÿ_¿_ïöõûÿ_¿_ïöíûÿ_¿_ïöÝûÿ_¿_ïö½ûÿ_¿_ïö}ûÿ_¿_ïöýúÿ_¿_ïöýùÿ_¿_ïöýûÿ_¿_ïöýóÿ_¿_ïöýëÿ_¿_ïöýÛÿ_¿_ïöý»ÿ_¿_ïöý{ÿ_¿_ïöýûþ_¿_ïöýûý_¿_ïöýûû_¿_ïöýû÷_¿_ïöýûï_¿_ïöýûß_¿_ïöýû¿_¿_ïöýû_¿_ïöýûÿ^¿_ïöýûÿ]¿_ïöýûÿs¯ß¯wÿþýc¯ß¯wÿþýS¯ß¯wÿþý3¯ß¯wÿþýs¯ß¯wÿþýs®ß¯wÿþýs­ß¯wÿþýs«ß¯wÿþýs/߯wÿþýs¯Þ¯wÿþýs¯Ý¯wÿþýs¯Û¯wÿþýs¯_¯wÿþýs¯ß®wÿþýs¯ß­wÿþýs¯ß«wÿþýs¯ß/wÿþýs¯ß¯vÿþýs¯ß¯uÿþýs¯ß¯sÿþýs¯ß¯wÿÿÿw¯ß¯wþþýs¯ß¯wýþýs¯ß¯wûþýs¯ß¯wÿþÿw¯ß¯wÿüýs¯ß¯wÿúýs¯ß¯wÿþýw¯ß¯wÿþùs¯ß¯wÿþýã^¿_ïöýûï^¿_ïöýûÏ^¿_ïöýû¯^¿_ïöýûo^¿_ïöýûï^¿_ïöýûï\¿_ïöýûïZ¿_ïöýûïV¿_ïöýûïN¿_ïöýûï^¾_ïöýûï^½_ïöýûï^»_ïöýûï^·_ïöýûï^¯_ïöýûï^¿^ïöýûï^¿]ïöýûï^¿[ïöýûï^¿Wïöýûï^¿Oïöýûï^¿_îöýûï^¿_íöýûï^¿_ëöýûï^¿_çöýûï^¿_ïþýûï^¿_Ïöýûï^¿_¯öýûï^¿_oöýûï^¿_ïöÿÿï^¿_ïôýûï^¿_ïòýûï^¿_ïöýûï^¿_ïæýûï^¿_ïÖýûï^¿_ï¶ýûï^¿_ïvýûï^¿_ïöüûï^¿_ïöýÿï^¿_ïöùûï^¿_ïöõûï^¿_ïöíûï^¿_ïöÝûï^¿_ïö½ûï^¿_ïö}ûï^¿_ïöýúï^¿_ïöýùï^¿_ïöýûï^¿_ïöýóï^¿_ïöýëï^¿_ïöýÛï^¿_ïöý»ï^¿_ïöý{ï^¿_ïöýûî^¿_ïöýûí^¿_ïöýûóí^¿_ïöýãí^¿_ïöýÓí^¿_ïöý³í^¿_ïöýsí^¿_ïöýóì^¿_ïöýóí^¿_ïöýóé^¿_ïöýûí^¿_ïöýóÍ^¿_ïöýó­^¿_ïöýóm^¿_ïöýóï^¿_ïöýóí\¿_ïöýóíZ¿_ïöýóí^¾_ïöýóí^½_ïöýóí^»_ïöýóí^¿^ïöýóí^¿]ïöýóí^¿[ïöýóí^¿_îöýóí^¿_íöýóí^¿_ëöýóí^¿_ïöÿ÷í^¿_ïôýóí^¿_ïòýóí^¿_ïöý÷í^¿_ïöùóí^¿_ïöý@Ðÿÿÿÿÿÿÿ·ÿÿÿÿÿÿÿwÿÿÿÿÿÿÿ÷þÿÿÿÿÿÿ÷ýÿÿÿÿÿÿ÷ûÿÿÿÿÿÿ÷ßÿÿÿÿÿÿ÷¿ÿÿÿÿÿÿ÷ÿÿÿÿÿÿ÷ÿþÿÿÿÿÿ÷ÿýÿÿÿÿÿ÷ÿûÿÿÿÿÿ÷ÿßÿÿÿÿÿ÷ÿ¿ÿÿÿÿÿ÷ÿÿÿÿÿÿ÷ÿÿþÿÿÿÿ÷ÿÿýÿÿÿÿ÷ÿÿûÿÿÿÿ÷ÿÿ¿ÿÿÿÿ÷ÿÿÿÿÿÿ÷ÿÿÿþÿÿÿ÷ÿÿÿýÿÿÿ÷ÿÿÿûÿÿÿ÷ÿÿÿÿÿÿ÷ÿÿÿÿþÿÿ÷ÿÿÿÿýÿÿ÷ÿÿÿÿûÿÿ÷ÿÿÿÿÿþÿ÷ÿÿÿÿÿýÿ÷ÿÿÿÿÿûÿ÷ÿÿÿÿÿÿý÷ÿÿÿÿÿÿû÷ÿÿÿÿÿÿÿ«ÿÿÿÿÿÿÿoÿÿÿÿÿÿÿïþÿÿÿÿÿÿïýÿÿÿÿÿÿïûÿÿÿÿÿÿï¿ÿÿÿÿÿÿïÿÿÿÿÿÿïÿþÿÿÿÿÿïÿýÿÿÿÿÿïÿûÿÿÿÿÿïÿ÷ÿÿÿÿÿïÿïÿÿÿÿÿïÿßÿÿÿÿÿïÿ¿ÿÿÿÿÿïÿÿÿÿÿÿïÿÿþÿÿÿÿïÿÿýÿÿÿÿïÿÿûÿÿÿÿïÿÿ÷ÿÿÿÿïÿÿïÿÿÿÿïÿÿßÿÿÿÿïÿÿ¿ÿÿÿÿïÿÿÿÿÿÿïÿÿÿþÿÿÿïÿÿÿýÿÿÿïÿÿÿûÿÿÿïÿÿÿ÷ÿÿÿïÿÿÿïÿÿÿïÿÿÿßÿÿÿïÿÿÿ¿ÿÿÿïÿÿÿÿÿÿïÿÿÿÿþÿÿïÿÿÿÿýÿÿïÿÿÿÿûÿÿïÿÿÿÿ÷ÿÿïÿÿÿÿïÿÿïÿÿÿÿßÿÿïÿÿÿÿ¿ÿÿïÿÿÿÿÿÿïÿÿÿÿÿþÿïÿÿÿÿÿýÿïÿÿÿÿÿûÿïÿÿÿÿÿ÷ÿïÿÿÿÿÿïÿïÿÿÿÿÿßÿïÿÿÿÿÿ¿ÿïÿÿÿÿÿÿïÿÿÿÿÿÿþïÿÿÿÿÿÿýïÿÿÿÿÿÿûïÿÿÿÿÿÿ÷ïÿÿÿÿÿÿïïÿÿÿÿÿÿßïÿÿÿÿÿÿ¿ïÿÿÿÿÿÿïÿÿÿÿÿÿÿîÿÿÿÿÿÿÿíÿÿÿÿÿÿÿÓÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿßþÿÿÿÿÿÿßýÿÿÿÿÿÿßûÿÿÿÿÿÿß÷ÿÿÿÿÿÿßÿÿÿÿÿÿßÿþÿÿÿÿÿßÿýÿÿÿÿÿßÿûÿÿÿÿÿßÿ÷ÿÿÿÿÿßÿïÿÿÿÿÿßÿßÿÿÿÿÿßÿ¿ÿÿÿÿÿßÿÿÿÿÿÿßÿÿþÿÿÿÿßÿÿýÿÿÿÿßÿÿûÿÿÿÿßÿÿ÷ÿÿÿÿßÿÿïÿÿÿÿßÿÿßÿÿÿÿßÿÿ¿ÿÿÿÿßÿÿÿÿÿÿßÿÿÿþÿÿÿßÿÿÿýÿÿÿßÿÿÿûÿÿÿßÿÿÿ÷ÿÿÿßÿÿÿïÿÿÿßÿÿÿßÿÿÿßÿÿÿ¿ÿÿÿßÿÿÿÿÿÿßÿÿÿÿþÿÿßÿÿÿÿýÿÿßÿÿÿÿûÿÿßÿÿÿÿ÷ÿÿßÿÿÿÿïÿÿßÿÿÿÿßÿÿßÿÿÿÿ¿ÿÿßÿÿÿÿÿÿßÿÿÿÿÿþÿßÿÿÿÿÿýÿßÿÿÿÿÿûÿßÿÿÿÿÿ÷ÿßÿÿÿÿÿïÿßÿÿÿÿÿßÿßÿÿÿÿÿ¿ÿßÿÿÿÿÿÿßÿÿÿÿÿÿþßÿÿÿÿÿÿýßÿÿÿÿÿÿûßÿÿÿÿÿÿ÷ßÿÿÿÿÿÿïßÿÿÿÿÿÿßßÿÿÿÿÿÿ¿ßÿÿÿÿÿÿßÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿ³ÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿÷ÿÿÿÿÿÿ¿ïÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿ÷ÿÿÿÿÿ¿ÿïÿÿÿÿÿ¿ÿßÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿ÷ÿÿÿÿ¿ÿÿïÿÿÿÿ¿ÿÿßÿÿÿÿ¿ÿÿ¿ÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿþÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿ÷ÿÿÿ¿ÿÿÿïÿÿÿ¿ÿÿÿßÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿþÿÿ¿ÿÿÿÿýÿÿ¿ÿÿÿÿûÿÿ¿ÿÿÿÿ÷ÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿûÿ¿ÿÿÿÿÿ÷ÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿû¿ÿÿÿÿÿÿ÷¿ÿÿÿÿÿÿï¿ÿÿÿÿÿÿß¿ÿÿÿÿÿÿ¿¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ïÿÿÿÿÿÿïÿÿÿÿÿÿÿîÿÿÿÿÿÿÿíÿÿÿÿÿÿÿëÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿoÿÿÿÿÿÿÿïþÿÿÿÿÿÿïýÿÿÿÿÿÿïûÿÿÿÿÿÿï¿ÿÿÿÿÿÿïÿÿÿÿÿÿïÿþÿÿÿÿÿïÿýÿÿÿÿÿïÿûÿÿÿÿÿïÿ¿ÿÿÿÿÿïÿÿÿÿÿÿïÿÿþÿÿÿÿïÿÿýÿÿÿÿïÿÿûÿÿÿÿïÿÿÿÿÿÿïÿÿÿþÿÿÿïÿÿÿýÿÿÿïÿÿÿûÿÿÿïÿÿÿÿþÿÿïÿÿÿÿýÿÿïÿÿÿÿûÿÿïÿÿÿÿÿýÿïÿÿÿÿÿûÿïÿÿÿÿÿÿóßÿÿÿÿÿÿßÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿ×ÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿßþÿÿÿÿÿÿßýÿÿÿÿÿÿßûÿÿÿÿÿÿß÷ÿÿÿÿÿÿßÿÿÿÿÿÿßÿþÿÿÿÿÿßÿýÿÿÿÿÿßÿûÿÿÿÿÿßÿ÷ÿÿÿÿÿßÿïÿÿÿÿÿßÿßÿÿÿÿÿßÿ¿ÿÿÿÿ€3øßÿÿÿÿÿÿßÿÿþÿÿÿÿßÿÿýÿÿÿÿßÿÿûÿÿÿÿßÿÿ÷ÿÿÿÿßÿÿïÿÿÿÿßÿÿßÿÿÿÿßÿÿ¿ÿÿÿÿßÿÿÿÿÿÿßÿÿÿþÿÿÿßÿÿÿýÿÿÿßÿÿÿûÿÿÿßÿÿÿ÷ÿÿÿßÿÿÿïÿÿÿßÿÿÿßÿÿÿßÿÿÿ¿ÿÿÿßÿÿÿÿÿÿßÿÿÿÿþÿÿßÿÿÿÿýÿÿßÿÿÿÿûÿÿßÿÿÿÿ÷ÿÿßÿÿÿÿïÿÿßÿÿÿÿßÿÿßÿÿÿÿ¿ÿÿßÿÿÿÿÿÿßÿÿÿÿÿþÿßÿÿÿÿÿýÿßÿÿÿÿÿûÿßÿÿÿÿÿ÷ÿßÿÿÿÿÿïÿßÿÿÿÿÿßÿßÿÿÿÿÿ¿ÿßÿÿÿÿÿÿßÿÿÿÿÿÿþßÿÿÿÿÿÿýßÿÿÿÿÿÿó¿ÿÿÿÿÿÿï¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ÿÿÿÿÿÿÿ·ÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿÷ÿÿÿÿÿÿ¿ïÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿ÷ÿÿÿÿÿ¿ÿïÿÿÿÿÿ¿ÿßÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿ÷ÿÿÿÿ¿ÿÿïÿÿÿÿ¿ÿÿßÿÿÿÿ¿ÿÿ¿ÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿþÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿ÷ÿÿÿ¿ÿÿÿïÿÿÿ¿ÿÿÿßÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿþÿÿ¿ÿÿÿÿýÿÿ¿ÿÿÿÿûÿÿ¿ÿÿÿÿ÷ÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿûÿ¿ÿÿÿÿÿ÷ÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿóÿßÿÿÿÿÿïÿßÿÿÿÿÿßÿßÿÿÿÿÿ¿ÿßÿÿÿÿÿÿßÿÿÿÿÿÿþßÿÿÿÿÿÿýßÿÿÿÿÿÿûßÿÿÿÿÿÿßÿÿÿÿÿÿÿÞÿÿÿÿÿÿÿÝÿÿÿÿÿÿÿÛÿÿÿÿÿÿÿ_ÿÿÿÿÿÿÿßþÿÿÿÿÿÿßýÿÿÿÿÿÿßûÿÿÿÿÿÿßÿÿÿÿÿÿßÿþÿÿÿÿÿßÿýÿÿÿÿÿßÿûÿÿÿÿÿßÿÿÿÿÿÿßÿÿþÿÿÿÿßÿÿýÿÿÿÿßÿÿûÿÿÿÿßÿÿÿþÿÿÿßÿÿÿýÿÿÿßÿÿÿûÿÿÿßÿÿÿÿýÿÿßÿÿÿÿûÿÿßÿÿÿÿÿóÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿû¿ÿÿÿÿÿÿ÷¿ÿÿÿÿÿÿï¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ÿÿÿÿÿÿÿ·ÿÿÿÿÿÿÿ¯ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿÷ÿÿÿÿÿÿ¿ïÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿ÷ÿÿÿÿÿ¿ÿïÿÿÿÿÿ¿ÿßÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿ÷ÿÿÿÿ¿ÿÿïÿÿÿÿ¿ÿÿßÿÿÿÿ¿ÿÿ¿ÿÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿþÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿ÷ÿÿÿ¿ÿÿÿïÿÿÿ¿ÿÿÿßÿÿÿ¿ÿÿÿ¿ÿÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿþÿÿ¿ÿÿÿÿýÿÿ¿ÿÿÿÿûÿÿ¿ÿÿÿÿ÷ÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿóÿÿ¿ÿÿÿÿïÿÿ¿ÿÿÿÿßÿÿ¿ÿÿÿÿ¿ÿÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿþÿ¿ÿÿÿÿÿýÿ¿ÿÿÿÿÿûÿ¿ÿÿÿÿÿïÿ¿ÿÿÿÿÿßÿ¿ÿÿÿÿÿ¿ÿ¿ÿÿÿÿÿÿ¿ÿÿÿÿÿÿþ¿ÿÿÿÿÿÿý¿ÿÿÿÿÿÿû¿ÿÿÿÿÿÿÿ¾ÿÿÿÿÿÿÿ½ÿÿÿÿÿÿÿ»ÿÿÿÿÿÿÿ¿þÿÿÿÿÿÿ¿ýÿÿÿÿÿÿ¿ûÿÿÿÿÿÿ¿ÿþÿÿÿÿÿ¿ÿýÿÿÿÿÿ¿ÿûÿÿÿÿÿ¿ÿÿþÿÿÿÿ¿ÿÿýÿÿÿÿ¿ÿÿûÿÿÿÿ¿ÿÿÿýÿÿÿ¿ÿÿÿûÿÿÿ¿ÿÿÿÿgaviotatb-0.4.orig/gtb/gtb1/kpk.gtb.cp10000644000175000017500000021274711536321052016735 0ustar varunvarun@\\RÇ/ÉF^ñwÉ’ò©á¿4Õ}êµÿç@ ÙKf L°`†þà€23•ÌÌÔÌÌLÉÌÌüÈÌÌÏÌÌü¯êUWPÐÌ$3ÌÆ3˜ø¿mã¿mW@UPø€q˜Œÿ»û¿í ´UUüÀqÜÝÿóÜöDÚUDUüÀqlÛÿ“mû?*Ð.( àŽ ªÿUý¯@» €€8€ªö°?m33A33ÌÌLð#3ÁñÌÿà€_23«™™©ff¦’™É™™ŒCfò_µÿUý/@€€‰ÿÛvâÿ¶ÿ«VUUýÐq@œÿGÄ4þïnôÛªªªªªªª:®ªñžw÷Ì[ÿïVU«ªªªú¡ªãªÚ¶ÿ'Ûöÿ´êÿUU«ªªªú¡ªãªªÚÿªþWõ?€ZTÔ@TU÷°?ý@@@?uP§±üðKfæ/™™­df¶ð!ã09Uû_Õÿü`W¶ø!€ã:99ݶ;ýß¶ÿ«îÕ]UݪꇪWÛNÎót#b:ÿß݈ÿÝÝýßvWm»UÛ~¨mÇÕ¶±Óyžw÷ÿ<ïîÿˆÝþo·mÛnÛ¶ýhÛv¼m»ÝîN§Ó¶ý?mÛÿSÕÿ«j»ª¶ýPÛWÛªv§“ªþWõ¿ªÿUµUÕöCµWÛªº1 `úÀ-´€í8ÐvŽ ~ÈL~H’_2“mø(ã`žCµÓ( ÿøÀv«êGU¯ªóm»Ó9Ú¶óÕ‰ÿUã¿jDUûѪoÛvžcÞˆ˜FÌ»»ÿw7â»ÿÛØ¶»ÛÝÝñÝÝ݈؈yÞ݈ywÿGìöĶÿw·mwã£ÝÝßÝÝØ¶ynÛÆ<·íÿ¹mÿOÛöÿ¶mwã£ÝÝßÝÝPí㪳ªÿUý¯êUÝøP»1®Ý U7f3€ýຨÝqµÝmØš™°%3“ŸÌL~ÈLþðQÆW€ØUm¬€Æ Àþ ð_ÕUu|UÝ¶ÝØmÛÆ®j÷¿Ú‰ÿÕNüß¶Ѷ¶mìîînì¶»Û¶»»ÿÛÝýßî<ÿïîǼ»»ãónDìîînìn»»mwc·ÿw·ý?Ï»û?â#""æñˆˆéܶݶín´m»¡úUÿOUÿÏÝyßݘNªÚ U»¡j7Tý¯êUÿ¨y\ÓIUÛ°]Ú€~ø?P7ÆÕɶ´d&´dfÒ’™É™É_þ0¾´Um+ ­´ð_€ÿªþWu|UmUÛVÕ¶ªÚªjÿ«Nü¯úÿm;>±mÛ¶m·­Ú¶UÛ¶jÛþ·ø¿»ÿww|âĈ¶j·ª¶Uµ­ªmëÿ¶íÿˆø?Ïãçéܪv«j[U[UmUÿ¯êÿéG÷ÿäøîNœNªj«ª­¶ØðÐÿêÿqíü8€ó¼ÿcíÿˆhÕÝP p|øqcwÿOWý¡êî¨.8>ü8€Û¶ÿWíÿtwÔ~Àªúп™©ÝffªÍÌLlffâøÈLüxfâ¿ ð€ßÌÌœ%33C23s2“ñÀÇø¿ªÿUýè,ÌÀ,Œ>Àäÿ¶üß¶Óÿª³ª:«ª³ª:>Tý¸ªÓéÿˆ˜Nÿïî¼ÿ»;«¶UÕYUª~\ÕyžÿÏÓyÞÿóíÿˆYµÝPUgUu|¨úqUcwÿOFÛÿ“¡þPm7TÕPULJªWu·íÿmÛÿ øÚ]uÔñêÇA­ÚþÚ¿™©3µ™‰ÚÌD‰úqPçÝø ÀoffþfffÔÌÌœ«™ÉøàãL§±ªÿUý¯ê¦U€¹ 0>Tý¸ª“Óéܶ“ÿÛvò¿êô¿ê´UuZUªý¸ÚN§“ÓˆˆéôÿnL§ÿwwÞÿm§mÛvnÛ¶ã£mûñ¶Ýyžçél»oÛÝÝÝNnÛþ_Àÿ øí. Ýñv?®v«¶;-ÐþÍLý›$þÍLl `w| Ý«Ýywæ-¿™¿dfþ’™Ùjf2>ø¸ó«:ÇøÀÿü ÑŒª~¼ªÓy޶ÎѶþWü_ëô¿êdlÛv|´m?Þ¶;爈˜Îst7¦ñw§ÓÿíN÷»Óݶ»ã£ÝÝïîî<Ï1Ç<ÏóîóÞnÄnÛçmÛyUÿ/àÿEü¿@1>l#>Þ6¢j»svçúп€þ´;>ÐîÇÕÝh -ÑBfþ’™ùKfæ¯™Éøàyb[ÕØ [ÿ ð_‘ÿU}|UçØ¶í¼km稪ÓÿZ'ÿ«NþoÛñ±mûø¶Ý9vw7æÝv7æhÛݹÿÛNÿïîtúwÇGìF<sìînÌ»ínÌ¡íÆÜþïÎõÄÜþóÇçˆém»Ѷ»j»êÿõÿd¨ÿçñÑçùãótrÛ¶«¶ ´‹øÿ¯êÿñÑnÌow:YU»´[@»ô/ ýÇÚøxÛ˜Ü*ÀjfÂj’™¡™™ùKf毙É UÕV[Ü ÀþàU_Õ¨jUµQU«ªÓÿª“ÿÛvþß¶ß¶UmCUªj¨ª³ÿÕéôwçÿ߈Ç'FDDÛ¶ UÛPµ UÛÐÿݹý?Ïããÿ<|âÄy:GUÛ´ DÛ´êÿ õÿt|ôÿäÇ#&N'WÕvmÐvmðÿþÝÿß݉«j[@ÛÐ63Á6Iø›™úôÿxÛyb€Jf&•ÌÌ ÉÌÌÌÌü53ó_þ ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿à „0 Óÿª“ÿÕþÛ]UuÐ@C tîuþÿxüˆT]4Ð@CÿÛññ?æÿŸÎ ¨.ºè  €®úÇGÿO?¾ÿ'@]tÐ@]Àÿã£ýÿñöÔf&h3´™ ÚÌmfê?>ÐÿãmÉÌL$33‘ÌÌÌ%333ÈÌÌ 53ó¯ÿ 333ÉÌÌL233“ÌÌÌ$333™0aBfæÿ ÿ @ÉÌ„’™ Kf&™™0W¦ÿÕþÛ-P23¡dfÂ’™ Af¢QUÿ_÷ãÿî(™™P23aÉÌ„€ÌÔPUÇÇÿÆÇÿÇ\ ™™ ÍÌLhffÂff¦. :>úþøþŸhffB33š™™ÐÌÌÔªãÃþÿxû¿™™ ÍÌLhffB33š™™ÐÌTèÿqõÿUõW€ÖÌLZ23S333mff¦ã#3³ÏLþ·mÿWµÀ,8>úq€éÿv7þ«ÝUµ-€*Xp|ôãsüßÝÝÿí¶j»-`«hÐñØîîÿyºÛÿ»­j·ì*Zt|öã€m÷ÿ´mÿG«ÚPÀ®  ãЪ»ÿÕö¿v°«¨èøôã€@ÛÐþØ…Ì´…$AÈLñÈÇUýà73“–ÌÌlÉÌÌ–ÌÌìø 3ûq€ÿÛ¶ÿ«úÀ]Ø€v|ô〓ÿww§ÿÛ6þ«ÝUÕ]UmUuLJj?®:Ïÿ#bŽÿ±û¿»ªí®ª¶ªºãCµWˆÿótwÿǼÛÿmÕÝVU[UíøPíÇUÛÎÿ'Ûöÿd«ÿ£UÝmUµUÕŽÕ~\UÝý¯¶ÿUý¯ª» ¨Š¨ŽT?® ´ý¶?þ¸ € €Êø@åãªÓIUýà€_ÈÌ]!É]!3w|ÄǦ“»mû¿ªÿüà®î*âŽÀø¸êt:ÝÝÝéÿ¶þ×6þ«îVÕªºãCÛø¸¶óâãÓ¹mÛynUÿ ø_ÄÿFTÕy|¨ÆÇU§sìîî±mÿÛvþ¯:ÿ¯5bUÇGÛÆÇÛvž#""æˆØˆøßˆÿÛˆøßnÄnw7ÆGw7>¾»1Ï»;Gļ»ÿ#v÷Änÿïîv»;>ºññ݈¶ó<·Ýç¹mÿÏ­þŸ¶öÿ¶êFt|t#úñÝu7æYm7fUÿ«ú_Õÿª6ÂñÑðã»@Û¶€úàˆ?í2>Úoª«ð ™ù IþJfîø˜ŸˆhÛ6¶UÝhÿ‹ø_ÀÿªÎãCuú¼jì¶íÆnÛv·mÛý_uú¿ÖùÕy|´íô~ÛîîîîînwwwÛvw÷»ÿÛø¿»óøØÝÞGDìîîFìnw#v»ÝÝþßÝÝÿó¼»ÿ#v|DÄ÷1Oç¶»Ѷ»mu7Zû[ý?mÛÿsÇÇÎóÜÏótRm7Bm¡j7Tý¯êUÿ;>ºóìÇwžNm»@Û.íâ€? þŒvg>ÞÆd«ª­´Ð ™ù IþJfþ`â󭪶ªÚ*à®"þð¿ªÿQøqÕVm[UmUÕUU÷¿êôÕÉÿm;y¿m[µÝVµmUÛVµÝýo7âÿîÎý¿»ÓGD´j»­µm«¶m­m[ÿ·»û?bûÿó÷çéܪí¶Ö¶­Ú¶µ¶mõ´íÿiÇÇÿÉ~|âÄ餪íªj«ª­ª¶ªþWõ¿ã£ÿýxÌ'Ú. Z´hðÀŸñÑýùønLTPPP 3[ ÉÈÌÿüy€þ+ðUÿ_õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ_UUUUµUÕÝÿêÿwwúÿ¡ªª€ªˆª€ÚªÚ]ÿw·ÿ?ÏqÿOgUUTETÔVÕmõÿv|üŸöãÿ'UUPQPUÕªúßñÑÿ~|ÿ €€€€ÀŸñÑþ|¼ý!33233!33S333ÛÌÌÌÈÌÿüã™dffBff¦fff¶™™I«ÿWõÿUÉÌL 33ÌÌ23ÈÌLÌú?ýO[ÈL’ 3€[UÝý¯ÿßÈL’ 3€[@Ýþw?þÏ3d&I™€` ¨ÿ·ÿ?…Ì I2€$ÈLPÕñÑÿ~|ÿCf$™ @’d&€Êø°?oÿUý+À¶´Í̤mffª™™iÇGfêÇ3ó¿ªÿUÝVÀmÜ;>ý80ýß¶óÿ¶ÝVµÛv[DUíøõãàtþ¿ÿÛn«¶Ûªí¶ªªÚñ!êÇÁÝýsÛÿ»mÕn[µÛVUU@;>Dý8¸mÿOVý¿ªÚUÕ®ªª* ŽQ?ªîÕþWÕ®ªvUUUu|ˆúq`÷hm´P„ñ!ÂÇÁVõþ`wØ€vØŽ ý8ð_ÕÿªþWuwÜÀvØŽ ý80ùwwòÛÎÿÕî®j·Uµ]U·ãCm?®Nçÿ1ÇÿÝýßîî¶ín«¶íZÛíø°m?Þ6"þÏsÄþŸçmÿo´mÛm«vÛZÛíø°m?ÞvÛþŸlÛÿÓ¶ýmÛ6ڪݶֶ¶íÇÛªÎÿU÷¿jÿ«¶]UíªÖVLJ­~¼-ÀîÐþúÔ.€¶µ…ña o;9UýC€ø€Ý`wØÀîÇÕÉ餪ÿUý¯êU#BÕÝUuc|¨»W§ÓéîîNÿ·íôÛÎÿµ#TÝ]µnŒíîÇÛNçyº1ÏÿwwžÿïnìÿîÆFÛîî¶ínŒíî~¼ÝˆØé<Ïûžw÷ÄîþߨÝÝÝÝÝm»»ãc»»owÛNN§Ó¶ý?mÛÿÓ¶ý?·íînÛ¶Ýv|l·ýx»ªó<9©ÿU÷¿jÿ«nwUÛ®ŽíêÇÛØ)@ûèPíÔ.Œ»ðñvçi¨:ï ðW€ø @ì0Çø">®ÎÓPuŽYÕÿªþWõ¿ªsUçjÄÇÛÎÓh»;Çܶÿ·íôÛNÿ·mÄܶc|´øøîÎsÄFÄ»»ÿw7âw#þo7"¶Ýc|ìnÄÇw7"6æyŽØˆywÿGìîÿˆÝý±»;>6"âã±mcž§m;Ç<·íÿ¹mÿOÛöÿܶ±íøØˆöã¡óÔÉÉçÛÆFÛ6vÛ¶Ѷÿm;ýß¶óÿ¶§ã£íääó»»»»»»»íîî¶ínìÿîîþowžÿïÆ<ˆ˜NÏ#bwwwcw»»±ÛînìöÿÆnÿGìîÿˆØñ1GœO§Óm»»Ñ¶»m»»Ñ¶ÿ£mÿO¶íÿy;>æyÞ=ŸNNªîn¨v7Tí†jÿ«ú_µÿíøØyÖO''v7Ú€vôÐ@Ý>¾““Û°]¶`»üà_þñLœøqu[U·«ê¶ªî®ªÿUý¯êÿ£Nœø|ÛmÕv»ªÝVµ»«jüWþW;ùŸ¶““ßÝVmÛªm[µíVµÝþ·ø¿»óü?"¦ÓóˆØ¶mÛ¶mÛ¶mÛ¶m·íÿÝmÿÏs„ÿç9âãÓé´Õ¶­Ú¶UÛ¶jÛ­ú«þŸnýÿÉÝ󉓓ªm«Ú¶ªm«ÚvUû_uÿÛññ_?>qâDmÔ¨PÐ@ýáã19±€*mh À¶ü À?>€ÿãj-UÚЀmøèÿ£þÏ·­´ h[@Ûº- ñ_íôÿ¶üÿÝýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¯ªZUµªjUÕ¶jwÛÿ»»ñ?æˆÿŸNUUUUUUUUUµ«ú?Zÿr÷üŸPPPPЮ@ÿÛññ_?þ@@@@@@ýáãû ™™)ff¦™™jff¶ÍÌÌmÉLþñüW…Ì13AÈLP3Úf&l èÿ£þo+   ÐÐmUÿÛvòÿw@@@pýO;÷¿»€mUÝVm·ý¿ñÿóT@@@PUUUÛÖÿßöãÿ@@[ÿõãÿÉL€ÌL€ÌL€ÌLÀÌLÕÌLíÊøèß@`…¶`Á˜ fì`Š% Ùªj˶ýlÛ¾mÛζmO²mk²mK²moûÿo«êUÕmÛ•m»&Ù.M¶K’íÛ~òÛêUõªªªjRUšª’TÀm$ß¶ÈWÕ_UUUMªJSU’ª"¹ €×6òUý¯ªªª&U¥©*IU‘ä6ðj«ªWUUUMªJSU’ªúÿo{Õ¶ªêUUUU“ªÒT•¤ªªúVU›m»nÛvÙ¶]“l—&Û%ÉvmUµeÛÞlÛþmÛ~¶mO²mk²mK²moûÿo«j[UU½ªšT•¦ª$UÇ6’„¶ý?·Uÿ«ú«ê“ª®©ê’ªmˆHn#Éoûÿÿÿÿÿÿ?éÿ¯éÿ/éÿˆÛD~âÿmÿÿÿÿÿÿÿ¤ÿ¿¦ÿ¿¤ÿ?InƒçÿmøÿÛþÿÿÿÿÿ?éÿ¯éÿ/éÿÿÿßöÿßVÕ¶ªú«êŸTýšª_RõWõ­ª¶ªÚªªWUŸTuMU—TýàUµeÛÞ²moÙ¶ùlÛ“lÛšª’T<ôÿÿ¶ª¶Uµ­*¾ª&U¥©*IUÁÃ#Iî¶ÿÇmÿÛþŸÿÿÒÿ_Óÿ_Ò‚ DD`·‘Dn;Éÿ?9é?©é?)é?‰ˆˆ!â6¹$¹$I’œD’ÔD’”D’$I"<^9'^ˆWâ5î!sÛ¢ÿ·-üß¶ü¿mñœøøsâ7â7â·h4B!„ÿ™™ù?33ÿgf<'>>“sâ3ˆÏ >3„Bœ8qBæÿh43ÿgfæÿÌxdr™ ™™™÷mûgÛþ‡mûŸñXrKXÀrÛ¶ݶýß¶ýß¶ý‡KÎa KXªª©ª¿ªþªúÃÇ98pপNÛ¶¿mÛß¶íÿˆˆˆ–óȈ 2¢ˆŒhsS5§ªÿUý¯êÿˆˆ˜r¡‘ ±ECfff4ä¶-úÛ¢ÿ·­ÿ#ºEžGƶH ²[$ۢљ!D£!33£Ñÿ™ÂÿÌlÿ73òœXf$@3#bB!D£ÑBÑh43ÿ‡™ÿChÿ?Cä9± ‘Í Ë™™âl[fˆ³mÿöý–ó?DžÃB$@"b Û¶…è¶m Û¶ÿÛ¶ÿpøÏ9,` KU·TU§ª¿ªþpàç80§ªNÛ¶Ó¶íoÛöÛöç±XƒˆX¬mD,"k3U5§ª9Uý¯êÿ¶úÿ±˜"b1mc±Xlûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™™BÈÌÌÌÌÌÌÌÌÿ™©ÿ3Óÿ7Ó°™ëbBÈÌÌBfffÈÌÌÌ™ÿ3èÿ‡àù‚`£ÑE,B£ÑÌÌ̶-3öm¶í(çˆÿ1€†81 ÒgÛ¶å¶mËmÛ–Û¶ÿpøÏ9ÿ`€øU5UÕ©ªSÕüœÃ¶©ªÓ¶í´m;mÛþoÛþ¼mÚ¶ˆµm7UÝTuSÕMUÿ«úÿªÿ[µÆ¬Û¶mÛ¶mÛ¶m›ªÛü_ÿ«óëæªnÛ¶mÛ¶mÛ¶mÛ¶mû¿mÿ¿eæÿ-3c !l۶ܶm¹mÛrÛ¶¥þÿÒó?Óò?3]Ä¢Ñè¶mËmÛ–Û¶-·m[–ó?cçÿ3üÆ€Hã÷mÛ¶mÛ¶mÛ¶mÛ68üçœÿü >㨪SU§ªNUø9‡~0¨ªªm[µm«¶måmÛŸ·íOÛöµmUUUUUUUUõªþ¿êUÿ«ªªªªªªªªªoUÿWõ«û¯ªªNUª:UuzÕùÿºíÿ¶þoSU§ªNUª:=ê<ÿåÿ–îUuªêTÕ©ª+]ìüÿbÀÿÅ€ÿAUª:Uuªêà€ãœÿü࿪ªªªªªª*PÎá€þ¶mÛ¶mÛ¶mÛ¶mÛrÚ–ó¶ýiÛþ´mÛ¶mÛ¶mÛ¶mÛ¶mËiÛž·íÿ¶íUÛ¶mÛ¶mÛ¶mÛ¶mËiÛž·mÿ·­ÿ«¶m[Û¶­mÛÖ¶mk9mõ\ÕþW3ÿokÛ¶¶m[Û¶­mÛÖrÚÚsÔ–ÿšòkÛ¶¶m[Û¶­mÛÖrhƒÆ€ÿÆ€ÿkÛ¶¶m[Û¶­mÛV8P9‡ Àþ·m[Û¶­mÛÖ¶m+¨œC€þ_Uÿ¶m³mÛ®mÛ çP @ÿ«ú_ÕTU§ª„s0ÿo[þWMUuª*p@83ÿoËýß–Û¶mSUà€pfîÿ–Ûÿ-·mÛ¦ªÀáܶÿ¹mÿ·mÛ¶©*p@8·mÿ·mÿ·mÛ6Uç  ªþªú«ê¦ª ÎA@À_UUýU5UUà€pþß¶ýWõ¿ª©ª„s0Îÿm ÿ·-ÿo[nÛ6àÀà Xÿ33„ÿ™™û¿-·mp`p,3ÿ‡hfþÏÌíÿ–Û¶ 808‡–™ù?š™ù?sÛÿå¶m ÎaÀ€mÛþoÛþoÛþoÛ¶ç0`ÀTõWÕ_UUÝ€ƒs0`ѩꯪ¿ªþª œøxáœx ^ˆ7n¶mÛÿmÛÿmÛÿmpâãçÄâñ‹{ÈÌÌŒóÛ¢ÿ·-üß¶øxN|üâ9'~ñÄ/€øÅ‰B!„ð?3„ð?3CþÏÌøxN||ÆsN|ÆŸñÄg!„†þ‡BøBù?3>žŸñœŸñÄg<ñ™™™÷¸gfþ“™ù?dfþÏøxd<çññÛ¶EãlÛþoÛþoÛþÇÇs ã9‡Œ€Œ€TÕUýUõWÕ?,žsX<,–SÕTUUýUõçÄbÂyd̀Ș‘1£Û¶-ºmÛþoÛþoÛþ?‹-Æydl1€ÈØb‘±E3333š™™™Ñÿ™™Ñÿ™™þÅbYÎ#cY€ÈX 2–Ñh!„†™!ýŸ™ÑèÿÌ´ÿcf#Ï#cÙH 2–"cB!D£!„B4Bø†þ‡Ðö¿¡‘çÄB#b¡‘±™™fffF£™™ÿ£™™ÿ£mÿ?4òœˆÐH€Xh$@Dض-£Û¶eضýß¶ýo9ÿyÙH€X6 "UuAU7UýUõÁáq‹Àb9UMU5UÕ_UN,æ‹‹‹b1öm Û¶-lÛ¶ÿÛ¶ÿo»ÿ¼],íbhD»™™™!333Cfff†ÿ™™Ñÿmsÿßf m¶m¬Íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ™™!„ÌÌ !dff™ù?õúÿ EµÆl4333„ÌÌÌ233CÈÌüÔÿzþG5‹£FØ8Û¶-lÛ¶°mÛ¶íËùßžÿob¡"TuSÕMU7UýcpøcœóÇ`1â—ªjªª©ª¦ªúsb1ÿóẌŌE±˜¹mÛrÛ¶å¶mËmÛöÿ­ûÏëþÓº¸mD«ËmÛ–Û¶-·m[nÛ¶ü¯.ü¿.ú_]ÜkLݶmËmÛ–Û¶-§nKýï6ÿw›ÿë¦V3333333333333333sÛÿÌíÿ3·ýa[l±8q¶mËܶ-sÛ¶ÌmÛ2§ÿŸóüÏ)ÿæÆ=îÛ¶enÛ–¹m[æ¶m™-ç{þ¿þ·@dãVU7UÝTuSÕ-‡?Æ9 €?@|NUª:Uuªj‰ÅüÏc1 ób1§ªNUª:U5å­þçÕÿ´ú¿U§ªNUª:U5õªùÿjþWþß¶mÛ¶mÛ¶mÛ6ÕmS_·ù¿Ûü_7ÿknÛ¶mÛ¶mÛ¶mÛ¶mû¶mÿ¿åöËÌÿ!lÛ¶mÛ¶mÛ¶mÛ¶M϶yþoÊÿÜôTU7UÝTuSÕ­å°µçÿ[à üWÕMU7UÝTu‹ÁÅ8çðÇømÛ¶¶m[Û¶­mÛ¶pb±Ây,ÖˆÅú±XmÛ¶¶m[Û¶­mÛÖrÚŽó¶ÿiÛÿTUUUUUUUUUŽ:ÏÕü_5ÿo›ªªªªªªªªrT=WçuþWUUUUUUUU•£ê¹šóÿ–™ÿ7UUUUUUUUå¨zŽNù¿Mþ§ªªªªªªªjËAÛs°þ·Àÿ¶mµm[mÛVÛ¶Õ0Æ9àð@l1eŒ0dŽAkØc‘I¬Úa3FmZrà·mû·mÛ¶mûU¶{e»*ÛUÙ®ÊöþÛ¶mÛ¶_e»W¶«²]•íªló€ÿ¯zTTTÀþ¯zTTTÿø¯zTTTüà?¯zTTTð€ÿ¯zTTTضýÛ¶ýÛ¶m¿Êv¯lWe»*ÛUÙþmÛþmÛþmÛ~•í^Ù®ÊvU¶«²ý€ÿüàU@¯€ª€ª€ª€ýþðàU@¯€ª€ª€ªé¿$é¿$鿤WIꕤª$U%©*I’þK’þK’þK¯’Ô+IUIªJRU’$é¿$é¿$é¿^%©W’ª’T•¤ª$ð€ÿüÐ+ * * *~øàÐ+ * * *Û¶ýÛ¶ýÛ¶ý·,¶{e»*ÛUٮʶ€ÿüàÿ2½ªªª†-IÒð_’ô_’þ–Ô+IUIªJRU’†aØ{ï½÷í-ý—ôþKꕤª$U%©*I{ï=ì½÷Þÿ÷Þ{ÿßûõï^í½«Ú{Wµ÷®jï-IÚ{¤ÿ[’þïWÿÕ+IUIªJRU’$I’$Iÿ%Iÿ_õ¿W’ª’T•¤ª$Àÿ«ø{TTTüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ð€ÿ3ÀÿÑ@U@U@UÀÞ’$í-IÒþ/Iÿ/Iý·¤ª$U%©*IëÃÞ{ïu‡aï½÷0üß{¿ÿ{ïþï]ÕÞ»ª½wU{ï½÷ÞðîÞ{ïaöÞÿ‡áõïÞÿ½«Ú{Wµ÷®jï½÷Þ{ï½÷Þ{ï½÷Þÿ÷«ÿC¯ÿ»ª½wU{ïªöÞ’$I’$I’¤ÿ¯úß«ÿUIªJRU’à¯ø«ªªlÛ¶mÛ¶mÛ¶Û¶ÿlÛól»j¶]5Û à?ÿ 𨚪Ø[’¤½%IÚ’$éÿ%©ÿ’Ô$UÍ’ªfI{ï½÷Þ{ï½÷Þ{ï½÷ÞïÿÞ»ÿß{×ÿ½wÕ¼÷®š÷Þ{ï½÷Þ{ï½÷Þ{ï½÷Þ¯ÿ{÷þï]ý†ª†a¨jXw]I’ö–$ioI’´_ýß½þïªÿCUÚCUÚƒ$I’$I’$IÒ«þ÷êUÿ«’T•$€Wñ÷Š¿*þª€ªÛ¶mÛ¶mÛ¶íÛ¶í?ÛöŸmû϶]Ù¶øÀþ 2€$I’$I’$IÒ“$©ÿ’ÔIê¿$U–$I’$I’$I’¤—$©ÿ—Tÿ%Õí]å½·$I’$I’$IÒ+Iêý—ªÿRõïªöÞ’$I’$I’$I¯’Ô뿪þ«êÿ®JÃàU@¯þWõ¿ªÿU¡ ð* WüUñWÅ_`Û¶mÛ¶mÛ¶ýlÛîÙ¶ÿlÛ¶í?Û6À€ÿøÀžèЀþôÀ €^õ¨ÿ@ýGxÐ+ úÕ¨þK¯zTý§ê?Uÿð* W@Uÿ«ú_ÕÛ¶mÛÆ¶mó*›^ÙTå¿*ÿUù·mÛ¶mÛ¶mÛ~Ù¶{¶íʶýgÛþ³mÛ¶mÛ¶mÛ¶m¿lÛ=ÛveÛþoÛþoÛ¶mÛ¶mÛ¶mÛ~Ù¶{¶íʶÝÛî¿mÛ¶mÛ¶mÛ¶m¿²í^¶]eÛõßvý·mÛ¶mÛ¶mÛ¶ý*Û½²]•íê¿]ýÛ¶mÛ¶mÛ¶íWÙî•íªlWýwÕlÛ¶mÛ¶mÛ¶_e»W¶«²]ÕÿªþÛ¶mÛ¶mÛ¶m¿Êv¯lWe»*ÿUùÿmÛþmÛ¶mÛîÕzö{­gWµž]ÕzvUëÙÿø@¯Öƒ÷ZªZªZªZøÀ€^­ïµTµTµTµÀþ½ZÞk=¨j=¨j=¨j=þðz¼WPUPUPUð_ÿèUð^AUAUAUÿøЫགª‚ª‚ªÛ¶Û¶Û¶í^e¿WvUÙUeW•ýÛ¶ýÛ¶ýÛ¶Ý[g•ýÞ:+»j•]µÎÊ®Zgeÿà?ÿ譳ΠÞ[gU묠jT­³‚ý_’ô_’ô_’z묳’Þ[g%U­³’ªÖYIUë¬$é¿$é¿$鿤^­¤÷ZIU­¤ªVRU+IÒÿ½%ý—$ý—zµ’Þk%Uµ’ªZIU­$Iú¿%é¿$é¿z•ô^IU%U•TUÿøÀÿ^ïTTTضýÛ¶ýÛ¶ý÷*ó^™ª2UeªÊ`Û¶Û¶Û¶ÿiš&û}}§É®Öwšìj}§É®Öwšl þð€ÿÓ8ÂûúNTë;MP­ï4Aµ¾Óë³·$iø/Iú/Iú?ÎÒ{Ó$UM“T5MRÕ4IÃ0 {ï½÷ÿ½÷Þÿ÷Þúÿyï÷¦iïªiÚ»jšö®š¦½÷Þ{ð÷þ¿÷ÞûÿÞ½ÿ{¿×´wUÓÞUM{W5í-IÒ0HÒÿA’þï^ÿõ^IU%U•TU°øÀÿ^ý¯PU¡ªBU…lÛ¶lÛþmÛþ{Õÿ^™ª2UeªÊ`Û¶±mÛ¿mÛÿ²,¶ÿ/Ëh×ú—e´×¿¶þeíZÿ²Œöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–$I[’$íÿ’¤ÿ–ôÿ³¥õײXZÿÚú—e–Ö_Ë2Këî½÷Þ{Ø{ï½÷°ÿï½õÿ{ï÷ß{¯¿Z¼÷ú[ÿú.óÞ믖yï½÷Þ{Xwï½÷†½÷ÿaèý†÷ÿ{¨Ê{¨ÖwyUÍ{$Iƒ$I$éÿÐëÿðÞÿ]UÚU묧]UÚÀÀÿ^ý¯ÿU…ªZUþ^õ¿WU¡ªBU…°mÛØ¶mlÛö?ϳíÿã8Ûÿ2޳ÝÚ8޳=.ã8Î6ÀþÿÇy†Uã8Ï0.ã8Ï I’$I’$I’¤ÿ’ôÿ -ÿ´Zki\ÆÑH{ï½÷Þ{ï½÷Þ{ï½÷Þúÿ½÷û¿÷^úÏÞ«Öì=-Ób†A’$mI’´%IÒîý×~ÿ¿wõïj}cïj51¬+I’¶$IÚ’$i÷ú¿ßû¿«þU뤡jm¥ @½úÿ^ÿ«ú_Õz¨ªõ#@€õªÿ½ú«ê¯*TUȶmÛ¶mÛ¶mÛ·mû¿mûŸçÙö?γíqžçÙ67ÿg€ÿ³ ÿgÆyžm$I’$I’$IÒ%IúIšþKÒøß’Æe”%I’$I’$I’$ñ$I¦¥ÿ’¦þKš–i‘$I’$I’$I’¤^’ôþ_ªþKÕ©ZMì  ^Þû¯ªÿªú¿«ÖV{P¯Bïõ¿ªÿUý¯jý ¶mÛ¶mÛ¦W™÷ꯪ¿ªþª²lÛ¶mÛ¶mÛ¶{¶íwÛö¿Ø¶Û¶Û¶z¼ÏÿgþÏ6üŸmèðÀò`ù ÿ=ÞXúLý¦å?Рཀê?Tÿ¡úz¼WPõŸªÿTý@¯‚÷ ªú_ÕÿªþÛ¶mlÛ6¶m›^eÞ+SUUýUõÛ¶mÛ¶mÛ¶m÷²í÷l»mûŸfÛþçÙ¶mÛ¶mÛ¶mÛ¶{Ùö{¶]¶ý¶íÿ³mÛ¶mÛ¶mÛ¶m÷²í÷l»m{úoÛÓÛ¶mÛ¶mÛ¶mÛîeÛïÙv•mOý·=õß¶mÛ¶mÛ¶mÛv¯l¿—íªlWÿíê¿mÛ¶mÛ¶mÛ¶Ý«ì÷Ê®*»ê¿«þÛ¶mÛ¶mÛ¶m»WÙï•]UvUÿ«úoÛ¶mÛ¶mÛ¶Ý«ì÷Ê®*»ªþªúÛ¶Û¶mÛ¶ëÕš{¯5WÕš«jÍUµæÿü ^­Ñ{­QUkTÕUµÿøP¯Öè½Ö¨ª5ªjªZþð¨Wkô^kTÕUµFU­üà?Ô«5z¯5ªjªZ£ªÖø/€ÿÔ«è½¢ª¢ª¢ª€ÿü¨WÑ{EUEUEU…mÛ¿mÛ¿mÛv½Ê½W®ª\U¹ªòoÛöoÛöoÛv½Õjrï­&Wµš\ÕjrU«ÉÿøÀV½Õj¢÷VU­&ªZMTµšþK’þK’þKÒª·ZMê½Õ¤ªV“ªZMªj5Iú/Iú/Iú/iÕ[­&õÞjRU«IU­&Uµš$é¿¶¤ÿ’¤ÿÒªW“z¯IU5©ª&UÕ$Iú?HÒIÒ­z5©÷šTU“ªjRUM’$ýà?ÿëUô^QUQUQU?üð׫轢ª¢ª¢ªlÛþmÛþmÛþ¿,ËâÞ§eqÕ´,®š–ÅUÓ²x þð€ÿ˲,ô>- UÓ²P5- UÓ²0ì-IþKÒþ/Iãÿe5½OË¢©š–ES5-‹¦jZ Ã0ì½÷Þÿ÷Þ{ÿß{ãÿqÞÓ{˲§ªeÙSÕ²ì©jYöÞ{úëî½ÿï½÷þ¿÷8þÿ¼§÷–eOU˲§ªeÙSÕ²lIÒ^w}$éÿ Iÿ÷Ôû¯é½MU-šªZ4UµH’$ ’¤ÿ’¤ÿõúß{¥ªJU•ª*À½ú{¯¨ª¨ª¨ªÛ¶Á¶íß¶íÿã8Žþû2Ž®–e=--Ë8ºZÆq´þðGóÿã82Ö2Ž#ã2.ã82Ö2Ž#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿë{ï½÷ºÃÞ{ï= ÿ÷ÞökÏÿ?{K£÷¸ŒË8Î{\jç= Ã0 ë®»÷ÞÃ0 {ïÿÃ`ÿÿÞËûï½,Õè½,-Ó8ïq©ÆyK’ö$I{’ô˜{ÿ‡åý¿–ª¬¥šV³–ªfI’¤-I’$Iú_¯ÿ½÷¿ªRU«5UU€¿^ý½×_UQUkTU€mÛ`Û6ضý´í¿Ïóì¿qœg·4óìqÇqž-@€€ÿ¶ÍÿÏóÌÿqžgÜ8ÏóŒgÏó<³%IÒ–$IØ’$þðüžg<7ÏóŒg3Ï3{ï½÷Þ{ï½÷Þ{ï½÷ÞðïÍÿÃöøßlÏc3lÏÆfï½÷Þ{ï½÷Þ{ï½÷Þ{ãÿß›÷ïqì?Ã8·Ã8ŽØ¬+IÚ{K’öÞ’$iϽÿ{yÿ?,Õÿa©¦ÆÊ3ƒ$I’$I’$IR½þ÷ÞÿªþWµJUÍ£êÕß{ýUõWÕU5¶mƒmÛ`Û6}´í¿ÛößhÛ³móhÛ @€8ÿðß6üŸm`¶m$I’$I$IpðßÿmÃÛ€±$I’$I’$I’tI’þ_’ô_’æÿ–¶÷,K’$I’$I’$IøIï¿ä±ÿ’çþïmŒÚ[’$I’$I’$iî%iyÿ¯¥ú¿—êÿ+/¬+I’$I’$I’T¯¤Þû_ÕÿªþW5O ^EïõWÕ_UU€mÛ`Û6ضížm÷nÛ£mÿͶý¶mz¼üþðz¼à¿møoþÛ€ïŒÿøHÿ%Ðà=ÀcÿÁsÿÁÿKs/`y/Xªÿ,ÕÕÔ+è½¢ªÿUý¯ê?@½ŠÞ+ªê¯ª¿ª~Û¶mÛ¶mÛ¶ízÙî=ÛU‹í¿Å¶ÿlÛ¶mÛ¶mÛ¶mÛõ²Ý{¶]Ͷÿ/¶ýß¶mÛ¶mÛ¶mÛ¶]/Û½gÛÕlÛÿmÛÿmÛ¶mÛ¶mÛ¶m»^¶{϶«Ù¶—ÿ€ý°mÛ¶mÛ¶mÛ®—íÞ³½TÙöÒ°û¶mÛ¶mÛ¶mÛõÊî½ì¥*{©þ3Vÿ±mÛ¶mÛ¶mÛ®W¹÷ÊU•«ú_ÕÛ¶mÛ¶mÛ¶íz•{¯\U¹ªþªúÛ¶Û¶mÛ¶«Wkõ^kUÕZUµVU­ýà?Õ«µz¯µªj­ªZ«ªÖöþT¯Öê½Öªªµªj­ªZ“þK’þKP½Z«÷Z«ªÖªªµªjMÒIÒI@õj­Þk­ªZ«ªÖªª5Iú/Iú/Õ«µz¯µªj­ªZ«ªÖ$Iÿ%IÿT¯ª÷ªªªªªª ~øªWÕ{UUUUUUõÀ?Toµšê½ÕTU«©ªVSU­¦ÿüà?Õ[­¦zo5UÕjªªÕTU«iø/Iû¿$é¿$­V½ÕjZõÞjZUµšVU­¦UU«iþï½¥ÿ’¤ÿ’V«Þj5­zo5­ªZM«ªVÓªªÕ´÷þ¿·¤ÿ’¤ÿÒjÕ[­¦Uï­¦UU«iUÕjZUµšöÞûÿ–¤ÿ’¤ÿZ­z5­z¯iUUÓªª¦UUM’¤ÿ’¤ÿ’¤ÿ«U¯¦Uï5­ªjZUÕ´ªª ~øà_Õ«V½W«ªjUU­ª*?üð÷¦i©÷iZªš¦¥ªiZªš¦E’$é¿$é¿$éÿ—eYÆÞ§e«¦e«¦e«¦eö–$ ÿ%iø/IãÿeY–±÷iYƪiYƪiYƪiY†aöÞ{þï½÷þ¿÷ÇÿË8ŽÓû´,ãTMË2NÕ´,ãTMË2 Ã0 Ã0 Ãÿaöþ¿÷8ŽÿGÓ{Ë2NUË2NUË2NU˲÷Þ{ïõÙ{ïÿÃÞ{ÿßã8þ¿Çé½e§ªe§ªe§ªe‘$IëJ’þK’þOSïÿ4½×2MU-ÓTÕ2MU-€à€ª×?õ^MUÕTUMUÀoœçÿ}Y檖e^MÕ²ÌU-Ë,I’$I’ô_’ôÿó<Ïÿû2Îsµ,ã Þ{ŸtKP$Hª5u-ÕªkIÞ{ï½÷Þ{ï½÷‘aï}Ä€¯èÚTª±•5ªkSIÝÝÝÝÝÝÝݵï¶Øâlñ¶ø‹JÖVUe¥$I’$I’âùãÎ îÿàþîÿnáþ_ÕI’$I’$y®LýLekø [Ã_ØþÂÖµ­ªÊÚº»»»»»»»»3×RÏÔ°5pe$À#IƘZêîîîîîîîîž“t3I°IÔu@u"¥®ë¤»»»»;Iw'sºFÝ %¤$€’D‘ï½÷Þ{ï½÷ÞûîÙ{ßÍxï»-à}«’V€¤¥ºë¤»»»»»»»;šÓ1wÇØŽ©|Œ±@"S›$ÝÝÝÝÝÝÝݵï¶óm‹°ÅØâ¬­ªÊ*I’$I’$ÅóÇùÝÿÁýÜÿÁý¿ª“$I’$I~ÞÔÏlëÿ [Ã_ØþÂÖPU•µu’$I’$Iž—2³TÿWpe$`c$À˜ZJ’$I’$ÉóIfN¢¿NTuÀÔ‰’¤»»»;I’î<ß™»£¿V@J(I%ÝÝÝÝÝÝÝÝý|wÏÜÝúëîVt· ÐÝÝ@wwwwwwwwwžïÎÌÝ©þÕ1Õ@ǘŽL t’$I’$Iýü±3[ü[ü€-~ÀÚªª€$I’$I’âùwg~÷ÿwÿ÷pÿI’$I’¤Ÿ¿~æëÿ¿þÿ¢†¿°5üÖÖ’$I’$I?¿žyýÿªÿ7. #`k¥$I’$I’Ÿ?Ï|þÿÔÿ›(ê:l­$I’$I’üüyæóÿ§þßDê$’$I’$I’üüyæóÿ§þßD*€$²@’$I’$Iòóç™ÏÿŸú“º(k’$I’$Iòó癯ÿÿºøÿÚ?`íH’$I’$ýü?óÿÿ»ÿ¿û?¸ÿ@ØÂ¢9ö ²fŒ`—aØ6mÙ’YSØ4ɨU~I’~I’z•TURUIU%U•TUÒIÒIR¯’ªJª*©ª¤ª’ªJòÛþÛîUvUÙUeW•]UvUÙöÛ÷۽ʮ*»ªìª²«Ê®*Ûöûö»WÙUeW•]UvUÙUeÛößö÷*»ªìª²«Ê®*»ªlÛöÿÛöÿ^eW•]UvUÙUeW•-IÒIÒß«¤ª’ªJª*©ª¤ª’þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛ¶ÿÛ¶ÿB쪲«Ê®*»ªìª²ñß¶ÿß¶ûOˆ]UvUÙUeW•]U6ðÀñ@ÿO€ªª ¨* ª€ªüüzÿªª ¨* ª€ªà?à?zýGUUTPU@U¶íÿ·íÿ½ú_UvUÙUeW•]U¶mÛÿmÛ¯ú«Ê®*»ªìª²«Ê–$Iú%IúãœRýqιªŠ«ª¸ªŠ«ª¸lÛ¶ÿÛ¶ÿsJíÿœs»ªìª²«Ê®*{€ÿ€þSýç¨* ª€ªª ˜sNóø ÿPÿ9PU@UUT0çœsÎù9ÿÏÙû?gõÎªš³ªæ¬ª9«jNæ<€ÿ³×TýGUUTPUÀà¯þWõ¿ª€ªª ¨*À¶mû¶í¿WýUõW•]UvUÙUeK’$I’ôSJ%ý1&é1ÆTcªŠ1UŘlÛ¶oÛ¶ÿÛ¶ÿ3Éþϳ«bvUÌ®ŠÙôú/ýg ¨ŠU1 * >çœs~øœsÎÙÿÏ9ëÿœ³þ³9«bsVÅæ¬ŠÍ9çœsþ9çœÃ‡÷þÏYýŸ³ú?gUlΪ؜U±9çœsÎ9?çœsÎ^ÿgÕÿYõVÕœU5gUÍ pЫÿUý¯êUUT`Û¶}Û¶Ý«þªú«ê¯*»ªìª²%I’.I’º$I’¤?J©ôG)•ª(•ª(•lÛ¶oÛ¶»mÛÿeÛÿ©mÿ§”ÚU”ÚU”Útúý·þS TQ TQ Ì9çœs~Î9çœÝsÎ9ëÿœ³þÏ9ë?³ŠÒ9«(sÎ9çœósÎ9çìiÎ9«ÿsVÿç¬þÏY>¼*:|8˜½(€ªÿ¨ú?«þϪ¬*L€€^1 ªÿUý¯êUUضmß¶m÷*»ªþªú«ê¯*»ªlI’¤K’¤.IR%Iú£’ôG%éO’TI’lÛ¶oÛ¶»mÛeÛöÛöÉöÉv%Ù8èT€þ@ÿ ÿPIº UPÿÔõ_@•„ pÐT úTÿê?P•æ8èETPõUÿQõU…iÛ¶}Û¶Ý+fW•]ÕÿªþWõ¿ª Û¶íÛ¶í^eW•]UUýUõW•-I’tI’Ô“$U’¤ŠJÒ•¤?IÒŸ$ɶmû¶m»gÛ®lÛ•mû¿mû¿mû¿mÛ¶mû¶m»'Û®dÛµíþÛvÿm»ÿ¶mÛ¶}Û¶Ý˶«l»Ê¶ë¿íúo»þÛ¶mÛ¾mÛî•íªlWe»úoWÿíê¿mÛ¶}۶ݫ쪲«Ê®úïªÿ®úoÛ¶íÛ¶í^eW•]UvUÿ«ú_ÕI’¤K’¤^%U•TURUýUõWÕ/I’tI’ÔK’ª$©J’ª$éO’ô'I’$Iº$Iê%IU’T%IU’ô_’ô_’$I’tI’ÔK’ª$©J’ª$©ÿ’ÔI’$Iº$IêE%U1IULR“Tÿ%ÕI’$I—$I½’T•¤ª$U%©ú/Uÿ%I’¤K’¤^%U•TURUIUÿUõ_’$I—$I½Jª*©ª¤ª’ªú_ÕI’¤K’¤^%U•TURUIUõWÕÿK’ôK’ô>47UCƒqS547UCƒqS547 ƒÁ`Üôß¶ýß¶ý>47WCƒqs547WCƒqs547ƒÁ`Üìÿ¶íÿ¶ýÞ`Ü\57W ÆÍUƒqsÕ`Ü< ƒq³ýß¶ÿßö{ƒqsÕ`Ü\57W ÆÍUƒqó`0 ÆÍ¶ÿÛ¾ÿÛï5n®jÜ\Õ¸¹ªqsUãæÁ`0Œ›mû¿}û¿ß«ÍUµ¹ª6WÕæªÚ<44444´Ù¶ýß·ýÿ½ÊU•«*WU®ª\Õ°ÃZ’¤_—¤ÿ½JU•ª*UUªªTUÃÔ/IÒ/IÒÿu%D5÷eÕ`Œû²ª㾬ÇqÜ—Uã8Žû²êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿ cÔ¸/+ã`Ü—ƒ÷eÅ8Žã¾¬ÇqÜ—Àøï?cTû²bÐ`h_V ª}Y1Žã¸/+Æq÷e€ÿŽÿÀû†ª–Õаˊª–ƒÁ`0XV ƒÁ`YÿÿñÞTÕŠªa‡¹¢ªVT ­ZaÛþïÛþÿ^ÿ«*W5Ìa¸ªrUÃ몆Ö’$ýº$ýïÕ_U©ª†¡ªJU5LUÕ0%I’ôK’ôŸÆôï„p®Æ}[ ѾíÛJˆö}ßVB´mÛ¶"Û¶íÿ¶íÿ„1JÿÎ)ÝÛ·•¶oû¶Âö}ßVBضmÛJ›ü€ÿg”bÿÏ)Å>¶­„`ßöm%û¾o+!ضm[ ÁœsÎ9çüÿ9çûO1÷þS:÷­„Ì}ÜÇ•¹ã¸2·mÛVBæœsÎ9çüü?çûÿ9«ÿtVC2«q@È ƒ!sß÷}'d€á8ð¾÷UÿQ5l+ªC+ª††V ã Û¶mßöÿ÷ú_Õÿª†™«ÖU ;¬« ,I’¤KÒÿ^ýUõWÕ0TUꪆ©ª’$I’.IÒÎ%ýœsÆôoœ3¦}[çL˺Ι–e!œ3Ù¶mãÔ¶ý_’ôŸS*ýçŒI˶Ω–u!œS-ËB8§Àø˜ÿ©„í?“°l;áœbYÂ9Ų,„sŠ9çœsÎù9çœóýŸsîý—çÖi.ã>rNç¶-çt.Û¶qNçœsÎ9‡ÏÏ9çþþ¯þÏYý׬Æ¡s0l;¡sß÷}'tà¼÷UÿgÕT †ªö‘ahhhhlÛ¶}Û¶ßëUÿ«ú_Õа®j¸ªÁÀ¶mÛ¾mÛïÕ_UUýU5¬«jલ$I’.IÒ;¥’~Æ£ú9gŒê_cTËÊcTœqÆ(•mÛ¶oÛö»mû?³íÿŒRù?£”š¬œ1JÍgŒRà¼ðß6øÙXþSd]“ÁgLÆœsÎ9çüœsÎù>çœsïÿœsë¿=—ñ¿=ɶl\žëÊ —'À; úTÿê¿ç`0Øvê¹ï;Y©'À{PõUÿgÕTí#ÅÐÐÐкPضmû¶m¿—ìªþWõ¿ªÿUWµl¶mÛömÛ~¯¨«ê¯ª¿ªþª¸ª6K’$é’$½K’*IÒ¿QJ¥Ÿ1J¥Ÿ2J%Ê£T²mÛömÛ~—mWÔ¶ÿS*ù?¥’ÿSI¦ŒRIÀxT€í?°ÿ2@þKgœIÀ;  ¶þXú€lÿ•ÀxT úTÿÁ`ðߨ÷¬2lÛ¶}Û¶ß³íª²«þ»ê?ªþchhhh]4mÛ¶}Û¶ßKvUåªþWõ¿ªÿU-›%I’tI’Þ+ªªJUõWÕ_UUm’$IÒ%IzO’ª$©J’þIÒÏ™$ý’$Ù¶mû¶m¿gÛU¶]E%ÿ§Tò*Éÿ©$Û¶mû¶m¿gÛU¶]eÛûÛæÿm›ÿ·mÛ¶mß¶í÷l»Ê¶«¨í½ÿ¶Iÿm“õ¿mÛ¶mß¶í÷²]•íªlWÿí꿽ïûÛ¶mÛ·mû½²«Ê®*»ê¿«þ{hhhè¿mÛ¶}Û¶ß«\U¹ªrUÿ«ú_ÕI’$]’¤÷*UUªªTUUýUõK’$é’$½—¤ª$U%©*IÿȘ¤Ÿ0*I’$I—$é½$U%©*IUIúÏ$é?•$I’$]’¤÷’T•¤ª$U%iü/Iä¿$I’$é’$½—¤ª$U%©*Icÿ%‘þK’$IÒ%Iz/IU1©*&UŤê¿Tý—$I’tI’Þ+©ª¤ª’ªJªú¯ªÿ’$IÒ%Iz¯RU¥ªJU•ªú_ÕI’$]’¤÷*UUªªTU©ªþªúI’þK’z÷m©÷m©÷m©÷m©÷mÙ÷}ß÷mùoÛþoÛî}Ü·¥jÜ·¥jÜ·¥jÜ·¥jÜ·eß÷}ß·ÅÿmÛÿm{|÷m«qß–±÷m«qß–±÷mÙ÷}ß÷m±ÿÛ¶ÿÛßÛ·e¬Ú·e¬Ú·e¬Ú·e¬Ú·eß÷}ß·ÅöÛþ{|oß–±jß–±jß–±jß–±jß–}ß÷}ßÛþoûþïñ½¶e¬j[ƪ¶e¬j[ƪ¶eß÷}߷Ŷýß¾ý¿÷j©ª–ªj©ª–ªjÇqÇq‘$é—.éェªªªªªªªªªƒ_’¤ÿ’¤¿¯„jß–•Œ{û¶¬¤Ú·e%Û¶mÛ²’mÛ¶mYÉÛöÛöÿBÈVû¶¬dÛ·}[V²Õ¾-+Ù¶mÛ–•lÛ¶mËJþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿøÿƶ½¶e%Û¾íÛ²’m¯mYɶmÛ¶¬dÛ¶m[Và?ü?°¾ÿŒm{µ¬dÛÛÇe%Û^-+Ù¶mÛ–•lÛ¶mËJà?€ã?Ö÷ÿl«j%[5V²Uµ’mß÷}_ɶïû¾¯Ä¶ýß¾ý¿÷þWU¤ªÁ©ªHUãHÆqÇq$¶mÿömÿ½×_UUUCÃVUUÕ`PUƒ%IÒIÒß9çüÎy{ËJ8ß–mY çÛ¶-+áœBá¶mû¿mûÿ9gì?áœóµmY çë².+á|]–e%œB!œè¿m³ÿœ1ÊþsÎ麴¬„óuY—•p¾.˲Î !„ÎçœsÎ9çü?çdÿÏ(eä?§t]¶VÂùº¬ËJ8_—eY ç„BçsÎ9çœsþÿœìý§&¤ÿ”®K{„óuÙ–p¾.Û¶Î !„ΘÃãÿ\ßÿc­þÓµã|­¶óuß÷}ç|]×u%œþ÷ÞÿªþW5ˆTµ¤ªq$ã8Žã²Û¶mû¶ÿÞ믪¿ª†ªªqPUƒAUm‹%I’uIÒßcìpÎØ眱mÙçŒq gŒqBgŒÙ¶mÛ·mÿ?cÒÆcÿ9cŒñe%œ1Ægœ1Æ9çœ1 vú/Iô?£Tô?cLœ¬„3F9ãŒ3F9çœ3F‡Ï9çœsøüœsNý?JÿS‰òÿLâd]8c”3Î8c”sÎ9ctÎ9çðáÃçüœÃ‡×û?''ý—9ï¿ÄɶlŒQN8áŒQNáŒQæ`Îõýÿ\«ÿX«ÿZ«mçtÝ÷}%œr²®+á8 ÷þWõ¿ªÿUí#«jYÙ8Žã¸¬Ì¶mÛ¾m»÷ú«ê¯ª¿ªÆAUmKUm‹%I’uI’ß™¤?Â(¥œ1Jÿ0F)'œ1F)eŒ1F©mÛ¶}Û¶ß%é?¥”ÒÿŒQJÿ3J)¥Œ3J)¥¢”RJ¬ ônÛúOmë?¥TúO)¥”QF)¥T”RJéœsÎ9真sÎé÷9ç´ÿÛ¦ì¿l±ÿÔ¦Œ3Je*J©ä9çœsÎ9?çœSïsÎ)Òÿ9ï¿ÍÈößfŒÎdÊ(£’˜8`}€µúµú?×ê¿×}ßWBÍ !\ÔÀ½g ªÿUý¯êUËJÇqGB©mÛ¶}Ûvï%WÕ_UUýUµ-Uµ2K’$ë’$½3IULÒg’þ“ôsÆ$QÆ•dÛ¶mß¶íwÛveÛÿ¹$ÿ§TòQÉ¥T2€}€ßeÛ•lû¿$ù¿$ù¿$Y–$àPø¢ÿeHÿ%HTp€Þ@Uï?ÀHÿÆø€2Ê,Là€õÖª€µúµúuß÷ÿæ„.8 ÷lTU¨êUÿ«ú?Žã8*Û¶mû¶íÞK®ªªª¿ªþªú«je–$IÖ%I½'©*IUIú#LÒc’~ƨ$Û¶mû¶íÞ³]•íªlÿ'ÔöFmÿ·mÛ¶mÛ·m÷žíªlW%Éÿ%Éÿ%Éÿ%ɶmÛ¾m»÷lWe»*Û"ÿm‹ý·mÿ·mÛ¶mß¶Ý{¶«²]µé¿ÍXÿmÊèÛ¶mÛ¾m»÷²«Ê®*{­þ{­þ›BþömÛ¾m»÷ÊU•«*Wõ¿ªÿã8ŽãÛ¶mû¶íÞ«ªªªªªê¯ª¿ª~I’$é’¤ÞKª*©ª¤ª’þÖ•IœK’$I’.I꽤ª’ªJª*éÿJ©ôŸSI’$IÒ%I½—TURUIU%é?•¤ÿ’$I’$]’Ô{IU%U•TU’Öÿ’ÄÿÛ–$I’.I꽤ª’ªJª*i]û/qÞ[’$Iº$©÷’ªŠ©ª˜ªŠi­þ‹Wÿ-I’$]’Ô{¥ªJU•ª*Uõ¿ªÿ’$IÒ%I½WUUUUUUUÕ_Uÿ/IÒ¯KR½ûVÕ¸oUûVÕ¸oUû¶ïû¾ïûöß¶ýÿ¶½÷>îÛ^5îÛ^5îÛ^5îÛ^5îÛ¾ïû¾ï›ÿÛ¶ÿÛöÞû¸o{Õ¸o{Õ¸o{Õ¸o{Õ¸oû¾ïû¾oÀöÛûø>îÛ>Vã¾íc5îÛ>Vã¾íc5îÛ¾ïû¾ï€ÿ€íÿö>¾·oûXµoûXµoûXµoûXµoû¾ïû¾oð¶ÿßûøÞ¾ícÕ¾ícÕ¾ícÕ¾ícÕ¾íû¾ïû¾þÛ¾ÿïã{mûXÕ¶UmûXÕ¶Umû¾ïû¾o¶mÿ¶oÿ{ïÕ^UíUÕ^UíUÕ>Žã8ŽãoÛöïÛöÿ¾®¤ªmYcµ-kUÛ²îû¾ïÛ²îû¾ïÛ²þ·mÿ¿mÿï+!Kµo˺Œ{û¶¬Kµo˺lÛ¶m˺lÛ¶mË:ÿþÿBø²Õ¾-ë²íÛ¾-ë²Õ¾-ë²mÛ¶-ë²mÛ¶-ëÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ?€ÿ€ÿçÿÏù²íµ-ë²íÛ¾-ë²íµ-ë²mÛ¶-ë²mÛ¶-+ü€ÿ_ß¾l{µ¬Ë¶·Ëºl{µ¬Ë¶mÛ¶¬Ë¶mÛ¶¬€ÿŽÿëúþÙªZ—­ë²Uµ.Û¾ïû¾.Û¾ïû¾Ú¶ýÛ¾ý/½÷/UÕRÕ`h©ª–ªÆqÇqÇѶmû÷mû_ ù«•Æj%dߪ•}ß÷}%„¬ëº®„ü?üïœóÿÂ9ioY 'Û²-+ádÛ¶e%œB!|Næ`ÿÏ9cÿ 猬mËJ8Y—uY 'ë²,+á„BássÎ)ý·ÍØÎcÿ9cd]ZVÂɺ¬ËJ8Y—eY '„B>|øðáÇŸsþŸ“±ÿgbŒügŒ¬ËÖJ8Y—uY 'ë²,+á„BásÎ9çœsÎÿŸŒ½ÿb„ôŸ‘uip².Û²NÖeÛ6 !„ÂÿÉúþŸ¬Õ²Vcœ¬Õ¶s²îû¾ïœ¬ëº®„Û¶mÛ¾ý/½÷/UýKUƒ–ªöq©j—qÇqYmÛ¶mß¶ÿ÷•Ñ¿Z9ÿ«•ó}«VÎɺïûÊ9YוpÎþwJéÿçìœsƶe#œ3Æ 'œ1Æ !œ±9çœsÎ9ççœÓÿO©éÆ¥ÿ9c”òe%œ1Êgœ1Ê9眱99çØû¿mJÿ3J)ýÏ(¥œ¬„3F9ãŒ3F9çœ36|øðáÇ>|øð>|¸ôÿ¥ô?5¥ü?¥”“uáŒQÎ8ãŒQÎ9çŒÍ9çœsÎ9?çœÒû?'ý7ã¼ÿ”q²-cŒN8cŒB8ct}ÿÏ×ê?_«ÿ|­¶ñuß÷•0Îɺ®„Ù¶mÛ¾m/½÷/UýKUÿRÕ>.U-ë2Žã8.«mÛ¶íÛ¶ý¾2úW+§µrúW+§dÝ÷}å”rBçÀx§Òÿ•þÇÓÿ0&Ê gŒ‰RÆcšsÎ9çœs~Î9ç|—Œÿ’¤ÿŒQé?£T¢Œ3J%*J)ÕœsÎ9'  €ýÀþ/@úO%é?•$F¥’D©¨æœsÎ9真sNû}Îiû? ÊþËû/‰2Î(•¨(•4çœsÎ9çüœsZïsN‹ôRÆûÊÈö_”1N8¥Œ2It}À×ê?_«ÿ|­þóuß÷•ˆsB—lÛ¶mß¶—Þ³—ªþ¥ª©ê_ªZÖeÇq$Ô¶mÛömÛ~_­jåô¯VNÿjåôß÷}å”rBçÀ~§ª¨ô?Τÿ&ýçŒIcŒJÀ»m ²ÿܶþSjû¿¨-™Rj¾ØïìJ€ý_²ý_²ý_¶-KöœsÎ9çœósÎ ¼Ï9jÎ ðÿsBô¿ ù¿ ‰B6€€õÀªÌxÿaFú?Íÿo‹QfÀ€®ïøZøZýçkõŸ¯û¾ÿçœÂeÛ¶mÛ·í¥÷쥪Zªú—ªþ¥ªÇq µmÛ¶}Û®÷­*N«ŠÓ¿Z9ý«•ÓŸÂ9µmÛ¶}ÛvïI®J¢UIÿ#LúcÒƨdÛ¶mû¶íÞ³]•íªlÿ'ÔöFíùß¶lßÜ{€«\•lÿ—lÿ—mÿ— à€ÞP€ªˆü öðppï® pU‚é?ÌXÿa1ú¶mÛ¶oÛ´÷2¯*óª2_«ÿ|­þsNùoÛ¶mû¶½ô^-UÕRU-UýKUÿ2Žã8þ’$I’.Iõ^´ª¢U­ªè_­œþçT’$IÒ%©ÞKU•ª*UUúߺ2ýsɶmÛöm»ÞËU•«*WUÖÿ•Rû?§²mÛ¶íÛv½—«*WU®ª,ý§¶ýß¶mÛ¶íÛv½—«*WU®ª,­ÿm‹ÿ·mÛ¶mß¶ë½\U¹ªrUeº®ý·9ï¿mÛ¶mß¶ë½\UѪŠVU”¯ÕΫÿ’$I’.Iõ^UUUUUU-UýKU?@ Y”,زaÄŠ;ZUmM’`’$$I“$ɶ$I·$ɶ$I[ÚªŠªJ’DM’è¶$Ú-‰nK¢g[ø§­ª*ªªªê6U»©ºMÕ{Ûþ?¶õUUUUu›ªÝTݦêÿ·=O´í?ªªªªê6U»©ºMÕÿÿ¶'jÛWUQUUUݦj7U·© @[TÛªª¨ªªªnSµ›ªÛTU•VUÛ$‰’$‰&I¢Û’h·$º-‰¶ªÚš$i“$$I0I’mI’nI’mI’¶´Uµ­ª ª¨ªÛTí¦ê6Ujûÿl @[PT•mªtSe›*çÙöÞûßöÿ¡-° €nlàÞÛö<ÚÞ ´€mt`ÿÿmÚ^€¶l Û -mUm«ª ª°M…n*lSAUZUmUµUUQUÙ¦J7U¶©p¢ª­I’Ö$Ik’ä1I²-IÒMÕmª ­ªmUm«ê£ªÛTí¦ê6Uïÿÿh pÛܶl Û8÷Þ{ϳíÿ½·íÿ_Úòÿüoþ»ÿÛ€ÿ{ï½ÇãñÞÛö<ïÛÿÿoûÿÿÿÿ¿íÿÿ»ýÿÿ¶ÿÿÿÿÿ{xøÿßö íhûð¿ øïüoþàЀ¶´~Àwøm¯*ªj«ª­ª¶ªêoSýnª¿M寪z5IÒš$iM’´&I¶%Iº©ºMÕóUå|Um«j[UÛªºMÕnlàxþÿÿÏàØàl p¶Ø@7¶pžç½÷Þó<ï½÷žgÛÿ?϶ÿÞ¶ÿ¿íÿÿ»ýÿßmÿ÷Þ{ï½çyÞ{ï=Ïóþ·=Ïÿo{ïÿ·½wÛÿßÛíÿïÝöïýÿÿ?ÿÿÿçñÿ¿íñÿ¿íýÿo{·ýÿ½ÝþÿÞmÿ÷^¸'Ü€¶´ í6€Û ànþªÊŸªò§ª¶ªÚªj»Mõ»©þ6’$¾I’¼I’´I’´I’´K’tSu›ªU¹¨êEUÛªÚVÕ¶ªv`÷þÿÿß ÷Àm pÛ¬-@·ÿÿßöÿÿ÷þÿß{ÿÿÿïýÿÿÿûmÿÿÞ¶ÿ¿µýÿn÷ÿï¶{ï½÷þÿß{ÿÿÿÞûÿÿ÷þÛ{ÿ¿í½ÛÚžg·{žç¹í<Ïóüÿÿ¿÷ÿÿÿ/ÿ íh{·ÑöØ îyÜö÷žGø à/mh» ÚvþÜü©*ÿªú¯ª¾ª¶ªÚnSÛnªw›À}“$¾I’¼I’¼I’´I’´&IZUÝTõQ•GUU}Tµ­ªmUm À<ðÀß`mÚ`ûÿÿÿàÿøþ€ÿo ¿µ…ïÚÞ{·Ý{ïxà€ÚòÛÚþwk{žÛÎóx<<ðÀ´ým´½Ýh{¸íï=p¼ªòªÊ«*¯jÛmÚ¶›´ÝRU^UyUUUm·©m7µÝ&p¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛªªªªªªªª¢ª¶Uµ­ªmQUUUUU][Õ¶XÛÿPPUPUPUPÕ­­Úµ¶¶÷^PPUPUPUPÕmmµ[ÛÿmmÏSUEUEUEUEUe›méFÛã¶o{¨ª¢ª¢ª¢ª¢ª²MÛv“¶Û ­ªŠªJ’DI’(Ie[bÛ-±Ý&´I’$I’$I’$I’$I’$Ù–$í–$í–$š$Q“$Ñ$I4IM’DM’´Uµ-š$Q“$Ñ$I4IM’d3IÒ¶ªkûÿ¯I5IM’D“$Ñ$I¶%Iº¶ÊÖöÿ5I¢&IÔ$‰š$Q“$nSµ[[ÝÖö^M’¨I5I¢&IÔ$‰ÛTíF[¶}Û3I’˜$IL’$&I“$‰Û’h7i» Ú&I“$‰I’Ä$Ib’$q[í–ØnÚÖ$I›$ &I¢I’˜$I¶-IÖ-I¶-IÚÐVUTUUUUÕmS]7ÕmS=l ðmPTUUU·MuÝT·MõÞ¶ÿ÷i ª ªªªºmªë¦ºmªÿßö<ÿiËEUPUUUÝ6ÕuSÝ6U€¶'@Û«ª ªªªºmªë¦ºmª´Uµ­ª‚ªªªê¶©®›ê¶©ªJ›$¡M’’$‰I’ÄmKâº%qےتj›$I›$ &I‚I’l[’¬[’l›j[ÚªÒVUTUTÕmS]7ÕmS=Ðöÿÿ°-m¶ `ݶ àð°í½÷Þ¶ÿÚò°më°mÇ{Ûÿßö<¶ÿÛ°nÛðÿßö@Û ílÀºlÀÿÿ·Uµ­ªmUT¶MaݶMAÕo“$´IÛ$‰$¶-ºEض÷UµM’¤M’¤M’äI’dÛ’dÝ’dÛTOh @[UÛªú ê¶©®›ê¶ÿÿÿ°-Àa[€o ðÀ¶¬À¶ž÷Þ{xØöÞ{oÛÿÿoûÿÿÿÿÿÛöÿ¿nÿÿÛöÿ<Ïóx<Ïÿ¶çùÿmïýÿ¶ÿÿÿÿÿÛöÿ¿nÿÿÛöÿÿÿÿçá!@ÛC€¶ íÀÿ¶ÁÿºÁÿ¶ñÿÿÿÿ÷PÕ¶ª¶Uµ­ªðÛ&üº ¿m«ú“$´IÛ$‰m’D~Û"¿nÊo›ð÷Uõ¢IÒš$iM’´&I¶-IÖ-I¶Mõ¼ªz^Um«j[UÛªºmªë¦ºmÇóÿÿÿx>Ƕ‡mζÛ°nÿÿÛöÿ<žÿïyžÿÞóØöÿïmûÿ÷¶ýÿmûÿ_·ÿ¿ÛöïñÞ{Ïóxþÿ=ÏóÿÛžçÿ·½÷ÿÛÞ»mï]·¿÷nÛß{þÿÿ=ÜóÐöÐö´=·¿wÝø{nÛÿ=ÿÿÿï ÷Tµ­ªmUm»mòçºùnÿ§ªÿWU¸ªÒªJ«*í¶ ¿nÂo›ðÿªú¯Iò˜$iM’´&IÚ-IÖ-I¶Mõ>ªÞGÕû¨ÚVÕ¶ª¶êº©nÀ½ü}¸g[€Ã¶k °nÿÿÛöÿïÿÿ½÷ÿÿÿþÿÿÿÿ·ýÿÿ¶ÿ¿µ½÷®Û½÷nÛ½÷¼÷ÿÿÞ ðàÿÚþ?ßö[Ûó\·{žç¶Ýó<ÿÿÿïàÿðÚ^€¶ç¶µ=®÷xܶ¿Ç#ÿWÕÿ«*Um«jÛm³íºÁ=·íÿžªÂ« ¯*¼ª´ªÒn›´ë&ü¶ I!IH’’$i“$iM’´K’Ì©ú¨ê£ªª>ªÚVÕ¶ª¶UõÜðÀ<ðmŽmÖöÿÇýÿ?´¶¶ÀÚöÿn;ï½'ðÀ<ЖßÖö]ÛãqÛŽÇãQUxUáU…W^µío[Û»nm·íχªÂ« ¯*¼ªðª¶Ý6Û®›m·íï=HUxUõ“$J’DI’Øn[l×-´Û&1IL’“$Á$I0I’6I’–$I‹ªmÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶ªªªªªªªª¨ª´U=l p -ª ª ª ª ªÊÖVYÛ[Û{OUUUUU•mme][ØÖöøàƒNÒöàƒ“´=ø`Õ$I4IM’D“$Ñ$I4I¿­êa[“$Ñ$I4IM’D“$q[YÛ[[À$I4IM’D“$Ñ$Iܶ$¬k ÛÚþ'I“$‰I’Ä$Ib’$qÛ’°nmÙ¶¶Ç$Ib’$1I’˜$IL’$n[ÖͶÛFÛ$Ib’$1I’˜$IL’$n[×-´Û&m‹ªm’$o’$$I’$ɶ-ÉÖ-ɶ-I[Úªúª*ª*ªê¶Mݺ©Û6õl pÛ¼ª‚ªŠªºmS·nê¶M½·íÿ?mùUyTUTÕm›ºuS·mêýo{ïC[þUåQUQU·mêÖMݶ©ÿÿmÏÚ>ªò¨ª¨ªÛ6uë¦nÛT€o‹j[TåQUQU·mêÖMݶ©ªÐªjk’„7I¢&ItÛݺE·mj‹ªm’$m’$o’$o’$Û¶$[·$Û¶$mh«j[U¯ªúªê¶Mݺ©Û6õ°íÿÿÙමÀÛ6`ëlÛ€ól{ïyoÛÿ{i €¶mÀÖ Ø¶÷Þ¶çyÿÛÞûO[îlÛ€­°mþÿÛx íù@ÛûÀÛ6`ëlÛ€o @[Ú¢* *lÛ„­›°mTÿ[UmUµUUPUض [7aÛ&U[Um5IZM’‹&ɶ-ÉÖ-ɶM=p€¶ª¶Uµ­ªUݶ©[7uÛ¦Þÿÿ?l üÙමÛ6`ëlÛàÇãyï=ϳíÿ½·íÿßoûÿ÷ÿÿÿ·mÿ¿uûÿmÛÿß{ïñx<Þ{Û÷¿íyÞÿ¶ÿ÷ÿÿÿ·mÿ¿uûÿmÛÿÿÿŸÇÃÃÿÿ¶‡´=>Ðö€ÿmÿ[7þ·mÿðЀ¶´€ÿmÿ[7þ·mü«þÿUÕVU[UmU•ß¶ÉoÝä·müAÕ#ªÚj’´š$­&ɶ-ÉÖ-ɶM=þp|Tm«j[UÛªºmS·nÀ¶ 8Ïûÿÿçyÿÿÿl p¶8ÛlÛ€­°mûÿó<ï½÷<Ïóþÿ=϶ÿžmÿÿ¼mÿÛöÿ[·¿wÛö÷Þ{ïyžç½÷žçyÞ{Ûžçýo{ïýo{ï¶íïݺý½Û¶¿çÿÿ½Çãÿÿßãñ¶ÇÚÞÚžÛ6îݺqÏmÛßàÿžpOÚЀ¶Û6þܺñç¶íï©úÿW¸ªÚªj«ªí¶M~ëæÿ¶íÿ/¨zQÕ‹&I«IÒj’´Û’lÝ’lÛÔûÀýWõ>ª¶Uµ­ªm7uëlÛ€{ÿÿÿïÿÿÿßÿ¸mn[€µ°u¶mÿïÿß{ïÿÿÿ½ÿÿÿ¿íÿßÛöÿ·¶ÿ¿u»÷nÛî½÷þÿ½çýÿÿ{ïÿÿß{ÿÛÞ{ÿÛÞ»­íynÝÎóܶçùÿÿ÷žÿ÷>÷>Ðö>Ðön[ÛãÖíÛ¶{<üÿ à/mh»mk»uã·mªÿÿªú¯ª¼ª¶ªÚnÛl·np·mÿ÷AÕGUM’G“¤Õ$i·$i»$Ù6ÕT}PõAÕ¶ª¶Uµí6'@[€Ûà°-ÀÆÿÿÀ?üÀ?üÓþ¿-ü¯í½÷÷»÷Þàÿøþ€ÿ‡¶ÿ¿µýÿµíyþ¶ãñx|þ€ÿàÿø ío[ÛsëÚnÛ<ðÀÐvÛÖvëÖvÛöǃTTTTTµÝ¶ÙnÝl·mOTUTUÔ$AMÔ$i·$i»$i7UTUTUTUTUTÕ¶ª¶Eµ-mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶¨ ¨ ¨ ¨ ¨ O[àÞ¶Ày¶½÷¢* * * * *üÖ~mûÿ[ÛãUUUUUaÛÚ²umï¶µ=DU@U@U@U@UضµÝºµÝ¶µUUQUQUQUQUÙ¶ÙnÝl·mßš$IL’$&I“$ I’ä·%IÛ%I»©š$IL’$&I“$ I’ä“$I[TÛ$IL’$&I“$‰I’Ä$I¢mý¶‰š$Q“$j’DM’(ªê«ªO[àÞ¶€I5I¢&IÔ$‰¢ªþ6Õ_ÛÂomÿM’¨I5I¢&ITUuÛ¦n][¶­í5I¢&IÔ$‰š$Q“$ºm‹nÝÚnÛÚš$Q“$j’DM’¨IݶE·n¶Û6ÚU[TýO’ä?IH’„m[ÂÖ-aÛ–´ ­ªÿªú¯ª ªlÛ”­›²mÓcÛÿÿo ð¯*ÿªªÊ¶MÙº)Û6=϶ÿÿßþ€ÿ@U¶mÊÖMÙ¶éÿ·½÷Ÿ¶ü?ÿ€ªlÛ”­›²mS€¶ í¨Ê¶MÙº)Û6 -m€TeÛ¦lÝ”m›ªú­ª´ªÂ« ¨ªºmS·nê¶M[TmQµUÕUýWÕß¶éoÝô·mÚ€¶´Uõ_UÿUõ·mú[7ým›hûÿl pÛüÀ?ü¶ ~ë¿mƒól{ï½·íÿßÛöÿÿøþ·müoÝøß¶ñç½mÇÿo{ïÿ·ýÿàÿøß¶ñ¿uãÛÆÿÿ·=üÿo{þÿ·ýþ€ÿmÿ[7þ·m<mh @[à€gÛÆ³uãÙ¶ñª~«*­ª´ªÂ« ï¶wëÆ»mãOTmQµUÕVUïUÕ»mÓ»uÓ»mÓÃЀ¶´à^¸Û6¸[7¸Û68<¼ÿÿØöÿÿØø³-À½p·mp·np·mp<ï½÷mï½÷¶ý¿÷¶ýÿ{ÿÿÿï¶íÿnÝþï¶íÿ¼÷Þãñxïm{ž÷Þ¶÷Þ{ÛÞ{ïýÿÿ»mû¿[·ÿ»mûÿÿÿÃÃÃÿÿ¶‡ÿÿmÿÿmïÿÿÿÿoÛþëöÿÛ¶ÎãÚЀ¶ü?Û¶¶nÿlÛþUý?U¥U•VUZUáݶñnÝx·mü½¨zU[UmUµUÕ»mÓ»uÓsÛ¦ç ç mh @[Îmœ[78·mpžÿÿÿçùÿÿ¶ýÿ?¶ýÿ?ÛþÿŸÛ¶ÿsëönÛþÏó¼÷Þ{žç½÷ÞólûϳíÿŸgÛÿ?·mÿçÖíï¹m»÷¼÷Þó<ï½÷žçyïm{ž÷Þ¶çyïm{Ï»m»çݺÝónÛîùÿÿçyüÿÿó<þÿ·=þÿ·=þÿ·=ÛvÏߺÝó·m÷àÞ#´ -mÙ¶ýÉÖíO¶m÷Tõÿª WUZUiU¥uÛÆ»uûwÛö÷^TýGÕUmUµUÕvÛôܺé¹mÓ{à^¸ÚЀ¶ÛàpëÇmÜûÿÿïÿÿÿ½ÿÿÿgÛÿÿ³íÿÿ±íöܺý·mÿ÷þÿß{ÿÿÿïýÿÿ¿÷Ûþÿ½mÿÿ®íþ[·{Û¶ó¼÷ÿï½÷ÿÿÞ{ÿÿï½÷¿í½÷¿í½wk{žwëvžwÛvžÿÿïýÿÿ{ïÿÿß{ÿÿÛÞÿÿ¶çok{ü­ÛñøÛ¶ã€¿þÀ_ÚЖmkËÖíÙ¶Ý£ªÿ¯*¼ªðªÒªJë¶­uëÆuÛö÷_UÿUõ_UÿUµUÕvÛ´]7=hÛ¦ÿðÿðmh» m;á ƒ¶ ÿðÿð·-ÀÙVá°í„æüþ€ÿ€ø§-ü[øól{ï=çyþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÿ‡¶÷>k{<žŒGþ€ÿàÿø€¶[Û kÛÃgÛøþ€ÿàÿh˶µeëÚ²m;è UUUUUiݶµnÝZ·mTTTõ_UÿUµÝ6m×MÛmSPUPUPÕUýWÕ¶›Ú¶SÚn¨ ¨ ¨Ê¿ªü«Ê·U9Û¶ýÿoÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶ø§-ÿÿmï½÷¶=OØÚ>¬mÏgk{@U@U@U@U@UÀmkëÖµeÛÚª ¨ ¨ ¨ ¨ ¸mkݺµnÛZM’D“$Ñ$I4IH’ä·mI»nI»mªI5I¢&IÔ$‰$ñ[bÛNi» ªªªªªªªª ªÿªòmζÿÿªªªªªªªª¨ª¨ªØV…¶úªªªªªªªªªªÿðO[þÿÛÞ«ªªªªªªªªª ÛXÛþ³µ½ªªªªªªªªªªnÛÀ­k˶µM’¨I5I¢&IÔ$‰šmdëÖºmk@L f°Â6L1fÇ-,ÙÚ¶ÝÚ¶mÛ¶mÛ¶UmÛ©m«Ú¶ªm» €m´m[Ú¶-ªm™ÚÕ¶¨¶åÛ€³ @`*€*€*lƒ„m€*ÀTUU`[&°¨LPPØ–ÛP˜     À6¶¨LPP€­mÛ­mÛÒ¶mQmËÔ¶¨¶Eµ-[Û¶[Û¶[Û¶´m[Õ¶Ú¶ªm«Ú¶ÛØÀ6T¦¨¨„lûÿÜðmªSTT2·eæ¿íÿ¿íÿÿÿ¿êÿOýÕÿWýÿü·ÅøÛÿÛÿÿÿ¯úÿSÿ_õÿUÿÿÿ·ÅÿßöÿßöÿÿÕÿŸúÿªÿ¯úÿÿÿml`pUàS«Wl°¨LPP8mÛnmÛnmÛnmÛª¶íÔ¶Um[U€À6¶° U€©ªª¡ÇüÿÇmÿ·ýÿ·ý¿êÿOýÕÿWýÿ ˆ13cŒÛ23sÛŸÿ¶?UÿçÔÿ©ú?UÿgŒ1Æ1s[ffnËÌÌm™ª™™S33U33U33333cèÿ¿-þÿ¶üÿm©ú?§þOÕÿ©ú?ÿÿüÿoûÿoûÿoSýÿ©ÿ¯úÿªÿ$l°À¦ 0@@Ú¶…¶m·¶m·¶m7mÛ©m«Ú¶ªyÈÀ6¶°M€©ªªÿdþÿƒÌÿ°íÿƒmÿï¶ÿŸúÿªÿ¯úÿAcŒ1AŒ™™A°-3cÜ–™º-3§ffªffªfÆcŒ1AÌ̃ 3·Å˜™ÛbT·eœš™Q53£jfŒ™™™dfff™¹-ffn‹ªÛâÔÌŒª™U3cüÿÿñÿÿÇÿÿ¶ÿÿ6Õo›úÿªÿ¯ú?à $l°©Â6@@€¶mKÛ¶¥mÛnmÛnÚ¶›¶­jÛªüpàÀ6¶°MUÕÿ™ÿÿøÿÿãÿÿÛþßmÿ¿mÿ¯úÿª™™1333ÆÌÌÌÌÌÌÌÌÜ–™º-3ç¶ÌTÍÌTÍŒ1fffƘ™™3333f涌궧ÛbTA¨Æ 2333þÿŸùÿæÿoKÕmq궨úŒê3ÿÿ?ÿÿþÿÿüÿoSý¶©ß¦ú?Uÿ'°©Â66UU€mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶ØÀ6¶ þÿÿÿÿÿÿÿÿÿÿÿÿÿÝöÿÛöÿnûõÿŸÿÿ?ÿÿþÿÿüÿÿºíÿÜö§nûS5ÆÿÿÿÿÿÿÿÿÿÿÿÿÕmÿt[¦º-S5‚àÿÿÿÿÿÿÿÿÿÿÿ_uÛ§nKÕmQõ1†8pàªl›Ê6U¶©ò   ÛTØTaSÞ¶mÛ¶mÛ¶mÛ¶mÛp8ܶ›¶í¦m»iÛl`Û8pàÀ€mp€ÛþÿÀ€Tæ6@·ÁuÛÿP˜nuÛ¯nËP˜º ÕmWÝ  0•mªlSe@۶ж-´m ª-Lm7ÕvSm·¶mÛ¶mÛ¶mÛ¶m[5ܶSÛvÓ¶Ý´miÛ¶´m[Ú¶-mÛVÛ¶mÛnkÛn€¶mKÛ¶¥mÛÒ¶mÕ¶í´më¶¶umÛ–¶mKÛ¶¥mÛª¶íÔ¶Õmmu@Û¶¥mÛÒ¶miÛ¶ªm;µmÕm nÚ¶-mÛ–¶mKÛ¶UmÛ©m«º ÕmoÛ¶mÛ¶mÛ¶mÛ¶UmÛ©m«ÚmªlkÛ¶mÛ¶mÛ¶mÛ¶UmÛ©m«Únªí¶µm»µmKÛ¶mÛ¶Uµ­SÛªÚVÕ¶ÛØ€ª€SUUÜöÿl *àT@U@Uàßö¶ÁTœ ¨ ¨ ä¿í¶qU§ªªÿ¿-l;€ª€SUU¶° @UÀ©€ª€ª@Û¶[Û¶[Û¶mÛ¶­ªmÚVÕ¶ª¶ÝÚ¶ÝÚ¶ÝÚ¶¥mÛªÚÖ©mUm«jÛml`ªNTTBßöÿ¹íÿ¿íÿÿÿÿUýïÔÿªþWõŒÛ2óßöç¿íÿÿÿ¿ªÿú_ÕÿªþÏÌmAð[æÿmÿÿÿ¿ªÿú_ÕÿªþÿÿmÁÿoËÿßöÿÿUÿ;õ¿ªÿUýÀ6¶° ¸ªp§ÂU…« oÛvkÛvkÛvkÛ–«ZîÔrUËU-϶m»µm»µm»µm«j[§¶Uµ­ªmƒÿÿ¿ €ml@UÀ©€ª€ª@è!ùÿ}ÛÿÇmÿÿmÿ¯ê§þWõ¿ªÿC=ˆ1Æã¶ÌÌÜ–™™Û2SÕÌtjfªš™ªffÌÌ ‚ÌÜcfnËÌÌm™ªf¦S3SÕÌT53ÿÿ1ýÿ·Åÿßÿ[ªú§SÿTõOUÿ€Œl`ÛTåw*¿ªüªò·mûlÛvkÛvkÛvSµÜ©åª–« ?´mOÛ¶[Û¶[Û¶›†Û: ÕV5T[ÕPm#€ml`›aÀiP ªa Èÿÿƒüÿ?ØöÿÁ¶ÿw[ø¿ÓðÕðÕpfAffÆ ÈÌÌŒq[fƸ-3u[f:53UÍLÕpfŒ™™1233Afn‹13·Å¨n‹Ñ©£ª£j8cüÿ?ÿÿÇàÿ·Åÿߨn‹N}FUŸQÕgüÿÿØÀ6U·9•§ª3ãÿÿÿÿÿÿÿÿÿÿÿ¿ºíwnûÕm™ª„„„À?üð«n»Óm©º-ªšAèðÀ?üªnsê6U·©JŒmÛB۶ж-¨ÚÍ©ÝTí¦jŸ´m[Ú¶-mÛ–¶mKÛ¶ÝÚ¶ÝÚ¶ÝÚ¶hÛm8¶…ÃÀ¶pØlø6·ý?€ €Ûè6@·ýPpnu¨Û~U§ÛPÝvÕm@UÀ©ÛTݦ궶m¡m[hÛÚ¶U Ní¦j7U»µmÛ¶mÛ¶mÛ¶mÛªm[gÛv³m»µmÛ¶mÛ¶mÛ¶mÛ¶m«†ÃmápÛmápÛmápÛ¶mÛ¶mÛ¶mÛ¶m[µmëlÛº­mÝжmÛ¶mÛ¶mÛ¶m«Ú¶NÛV·µè¶ÿmÛ¶mÛ¶mÛ¶mÛ¶ª¶uj[u[«nûÛ¶mÛ¶mÛ¶mÛ¶mUmëÔ¶ªÛªºímÛ¶mÛ¶mÛ¶mÛ¶ª¶uj[U·©º­mÛ¶mÛ¶mÛ¶mÛVÕ¶Nm«j7U»mmÛnmÛ¶mÛ¶mÛªj«S[UmUµÝÀ6Tt*¨*¨*ÄmÿÏ6U ª ª ÿ¶?a@UA§‚ª‚ªÂÿm?°¨*èTPUPUøÿm °íª :TTØÀ6U ª ª °µm»µm[Ú¶-ªZtjQÕ¢ªekÛvkÛvkÛ–¶m«ª­NmUµUÕvÛØ€ª‚NUU…`ÛÿÇmÿÿmÿÿÿÿ¯ª¿NýUõWÕ?Æm™ñßöÿßöÿÿÿ_Uú«ê¯ªfn‹1ÿmÿÿmÿÿÿ¿ªþ:õWÕ_Uÿÿßüÿ¶øÿÛþÿÿ¯ª¿NýUõWÕÿÿ¿íÿ¿ €mÀU•ëT®ª\U9l°À\U¹NåªÊU•ØhÛn´m7Ú¶ªÚêÔVU[UmcÀ6¶° U ª ª ¡ÇüÿÛþ?nûÿÜöÿªúëÔ_UUýƒ ˆ1Æã¶ÌÌÜ–™™Û2SU3uj¦ªfªjfŒ1Ƙ¹-2s[ffnËTÕLš©ª™ªš™™™AHèÿ¿-äÿ·Åÿß–ªúÔ©OU}ªêóÿÿüÿ·ýÿ·ýÿ·©êS§>Uõ©ªO `€ 6Uå:•«*WU~àжÝhÛn´m75T«ÓP­ª¡ZUCµyÈÀ6¶°MàÓP j(P5ÔÄÌÌÌ æÿ?ØöÿÁ¶ÿw›á_§á_Õð¯jø‚˜™1AÌÌÌ Ø–™1nËLÝÎÔi8SÕp¦ªáŒ1ƃ ˆ1ÆAfn‹13·Å¨n˨S3ªjFUÃ333cÈÿ?cÈÿo‹ÿ¿-PÝu꣪>ª~üÿÿñÿÿÇÿÿ¶ÿÿ6U·éÔ§ª>Uõ Àà°À¦ª›NåªÊU•<phÛÚ¶mÛMÛv›ápVÃá6¬†Ãm&ä ÛØÖ¶CÕpª†ÃÌÌÌ̘ùÿ™ÿÿ¸íÿÙÖþßÖþ¨áðµá?fffŒ133333333·e&lËLÜÖLTšyµ1fffŒ1333ffffÌÌmÑm1â¶ÅˆJƒàj™™™1þÿÿøÿÿãÿo‹ªÛ¢ÎmQÕÆUCþÿþÿÿüÿÿùÿߦê6nSÕGU}8pØTuÓ©›ªrUýÚ¶‡¶í¡m»iÛn³m7mÛªmûÀ?ü° €mlk‘òoÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶ýÿÿÿÿÿÿÿÿÿÿÿÿÛþÿÛþÌÜög¦iŒñÿÿçÿÿÏÿÿŸÿÿ?ÑmOܶLt[fª‚àÿÿçÿÿÏÿÿŸÿÿ?U·¥Îm©º-P•ÐCÿÿÿÿÿÿÿÿÿÿÿÿWu›N·©ºMU38pàÀUuÓ©›ªnªJÚ¶@ÛhÛ¢¶í6ÛvÓ¶Ý´m¶° €mжÚ¶À¶ØÖ·µ8pàÀaüßö?Æmÿ€8nG·ý©Û2€\U¸ÎmWÝvÕm8pàÀU•ët›ªÛTÝ ª S7UÝTukÛ¶mÛ¶mÛ¶mÛ¶Um[m»iÛnÚ¶mÛ¶mÛ¶mÛ¶mÛ¶U۶ζÝfÛn mÛ¶mÛ¶mÛ¶mÛ¶jÛÖÙ¶ÝÖ¶lk¡mÛÒ¶miÛ¶´m[ª¶'n2·ýoÛ¶´m[Ú¶-mÛ–ª¶Ô)PÝ©Ûþ¶mKÛ¶¥mÛÒ¶mQÕ¢SAuªÛÞ¶miÛ¶´m[Ú¶-ªZtjQu›ªÛÚ¶-mÛ–¶mKÛ¶EU‹N-ªº©ê¶ÀÖ¶m¶mÛ·m[UµêÔªªUU» €m$p@UEŠªŠªJnûÿÜÀUu*ª*ª*™Ûþç·ýÏÿÿÿ€ªŠ:UU•ü·ýùoûóÿÿÿ ª¢NEUEUåÿ·åÿoûÿÿÿª*êTTUTUþÿÛþÿÛþÿÿPUQ§¢ª¢ªl𨪨SQUQUÙ`€ PUQ§¢ª¢ª²íÿ¿ €m$ ª¢NEUEU%dÛÿÇmÿŸÛþ?ÿÿ¿ªzuêUÕ«ªq[fƸ-3óÛþçÿÿWU¯N½ªzUõ™¹-ÆÌÜ–™ÿ¶?ÿÿ¿ªzuêUÕ«ªÏÌÜdfnËü¿íùÿÿUÕ«S¯ª^UýÿÛÿÛÿÛÿÿ¿ªzuêUÕ«ª€ 6ØàWU¯N½ªzUõÁ`€ 6PUQ§¢ª¢ªšÿÿ¿íÿ¿íÿ¿íÿ¯ª^zUõªêC™™™!Ûþ?ØöÿqÛÿ«ªW§^U½ªúcŒ1Æm™1Æm™s[fªª©NMU5UÕŒ1ƃ Ƹ-Æã¶cÌm™ªjªSSUMU5333C=3s[Hf涘™¹-UÕT§¦ªšªjþÿ„üÿ·ýÿ·ýÿ·©ª©NMU5UÕ€GØ`€MU½:õªêUÕç € 6ØTèÓ0ª&”ªa‚ÿÿüÿÿmÿÿmÿÿmjøê4|U ?¬jøAfff™™™lËÌ ¶efv›†³: gU gU gÄcŒAcfÆ Ø–™A°-3ë6ÃY†³ª†³ª†3Æc ‚cŒ1bŒÛ‚ Ƹ-Æê¶p¬Nñª†cU ÇÌÌÌ ÈÌÌ ‚ÌÌmAfæ¶ ê¶X«ª±ª†Šÿÿgüÿ?ãÿÛÿ[U·U§fU5«j¨€~Ø`SÕMzUõªjæ €6ØTÃlNÄR5L(UÃÄÿÿÿÿüÿÿÛþÿÛ´ý¶Ù>VÛ‡Ãjû˜™™™1333cfffÆm™™Á¶¶Ùm¶Ùªm¶j›1333ÆÌÌÌ3333æ¶Ì„mm¶6AmÔ6ÆÌÌŒ1fffŒ133cÌÌm1Ûb·…#¨  †ÃAfffŒ™™™1fffƘ™¹-‚n‹à¶ 6j8òÿÿãÿÿÏÿÿŸÿÿmUÝVÛªj8VÕp€~ø`SÕMnªêUÕ'@ lªa6§a6Õ0aUÃäÿÿÏÿÿŸÿÿ?ÿÿÿ6-ß6Ë·iyh«ÂóÿÿçÿÿÏÿÿŸÿÿ?·Û€Û€‡.ß¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mËÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌü¿-óÿ¶ÌÿÛbüï ùÿ?óÿÿÌÿÿ3ÿÿÏ<º-Û–G·Å_%ôÐÿÿÏüÿ?óÿÿÌÿÿ3«º­:·Uu[Umhà€~øUuS§›ªnªj8pà@ªfsfS ³©†9pàÀ€D-l›…mZئÀ€$Ûr@°íÿÿÿÿÿÿÿÿÿÿ€´=lkÛÚö6ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoûóßögæ¶ÿÿÿÿÿÿÿÿÿÿÿÿúÿ¸m?º-ÝÀ?üðWÕ¿:·Uu[U·À?üð«ªW§›ªnªºÑ¶miÛ¶´m[Ú¶­ª†«NÃÝTÃÝTÃ¥mÛÒ¶miÛ¶´m[TÛ^gÛmÚv› Ç ä6Üöÿ à`ÛPpy·ý™¹íU§ptÛÝ–UUªS©ê¶ªnkÛÚ¶…¶m¡m[PUQ§¢ª›ªn@lÌX´c9ƒ Y³d ch“$i“$I’$ù?Iÿ“üŸäÿ$ÿ'i @Û$I’$ÉÿIúŸäÿ$ÿ'ù? mh ð?ÐàààÚÐøè?ð?ð?ð?´ -üôøøøh @[þúüüüЀ¶ÿýþþþ’$i“$i“$IþOÒÿ$ÿ'ù?ÉÿIÚ$IÚ$IÚ$IþOÒÿ$ÿ'ù?ÉÿIÚЀ¶üôøøøжn @[€ÿþÿÿÿv[Ûv[Ûv[ÛÿÛî¿íÿmÿoûÛ¶ÛÚ¶ÛÚ¶ÛÚÿÛî¿íÿmÿoûÛ¶ÝÖ¶ÝÖ¶ÝÖÿÛî¿íÿmÿoûÛ´ -mÿúüüü@ -´ÿýþþþH’$m’$m’$ퟤÿIþOò’ÿ“h @[Ú>Ðààà@RÛ¶¥¶¶í¶¶}Ûm÷ßöÿ¶ÿ·ý¿mI’TUUµ­­v[ÛßÖvÿmÿoûÛÿÛVU•TUUÛªªj[Õ¿­jÿUõUý_UÿWUÛ¶ªdÛmÕ¶Ûê[÷ßöÿ¶ÿ·ý¿mÛ¶mÛv[ÛvÛÿÛößöÿ¶ÿ·ý¿mh ýŸ¶ÿÀÿÀÿÀÿI’„$IÒ&IÒ¾œ¤ý“üŸäÿ$ÿ'1` -mehûÀÿÀÿÀÿ€ªmÛª¶mk[Û¾­m·í¶ÿ·ý¿íÿm J’ªª J’ªªJR[Uý¶ªÚÛªêÿªú¿ªþ¯ªªª*I‚ªª*I’ª¶•¤¿­j¿­êÿªú¿ªþ¯ªªªªªªªªªªªmõ¿­Ô¿­þ¯ªÿ«êÿªjÛ¶mÛ¶mÛnûÛþ·ýßöÿ¶ÿ· íÿ´ý§ýøøhÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶5Ѐ¶ ÐöÿÿUÛ¶Õ¶m«mÛ¾­m·­mßvÛÿÛþß¶ªªªªªªªªªªªê·UÕÞVU¿­ªþ¯ªÿ«ªªªªªªªªªªªªêßVµßVõo+IÿK’ô¿$(hÛ¶ªmÛVÛ¶­ÿmµ[ýo+ýo•þ·J¶mÛ¶mÛ¶mÛÿ·íÛÿÛþoûÛÿÓöŸöÚÿÿ$I’$I’$I’$I’ö“¤ý$i?Iþ“ -mh;À?€mÛ¶mÛ¶mÛö۶ݶ¶}[Û¾­mÿÛ¶mÛ¶mÛ¶mÛöoÛîmm[ÛßÖÖÿUÕ¶mÛ¶mÛ¶mûß¶ûmí¿­ý·Uý_UmÛ¶mÛ¶mÛ¶ÿ·Ý¿­ÿÛú¿­þoIøèÛÿÛþßö¬ÿý§ýŸöÚÿ$I’$I’$I’—“$ý“¤ý$i?IÚO€€mh @[~úÜà¶·øèðmo |[0Àÿ@ÿ¿-ümáoküôøoË[þÛà ÿÀÿmÿoûÛ$IB’$!I’ðBÿþOûÚÿÓ&I’$I’$I’üI’þIòŸ$í'IûI’$I’$I’$Iò'IúI’?IÒ6IÒ6I’$I’$I’$Iò'Iú'É’Ü6In›$I’$I’$I’$ÿIÒÿ$ÿ'ù¶I¾m’$I’$I’$I’ÿ“ô?ÉÿIþ¶Éß’$I’$I’$IþOÒÿ$ÿ'ùo›ÿ¶$I’$I’$I’üŸ¤ÿIþOòÛÿÛ&I’$I’$I’üŸ¤ÿIþOòÚÿÓ¶I’´I’$I’ürÿ“ÿOþ?ùÿ¤-mø¸ÿðÿðÿðÿ@[Úü?Üøøø€¶´þî?ü?ü?ü?mh ÿ÷þþþÚ -ÿ÷þþþh @[€ÿ‡ûÿÿÿI’´I’´I’$ÿŸÜÿäÿ“ÿOþ?i“$i“$i“$ùÿäþ'ÿŸüòÿI[ÚЀÿ‡ûÿÿÿÚÖ¶ÝÖ¶ÝÖ¶ÿß¾ÿöÿÛÿoÿ¿m·µm·µm·µýÿöý·ÿßþûÿmÛmUm·µm·µÿß¾ÿöÿÛÿoÿ¿mÛmÕ¶ÛÚ¶Ûúÿíûoÿ¿ýÿöÿÛ´ -mÿî?ü?ü?ü?$IÒ&IÒ&IÒþ¸ÿáÿÃÿ‡ÿ$I’6I’6I’ö Lî/0ù_`ò¿Àä‰ mh @Û „û „ÿÂÿá @Õ¶-µµm·µíÛ hß_ ý¿@ûöÿmI’$UUÕ¶ªªÚVU¿íª÷_õÿUÿ_õÿUUUU’$Um«ªªmUÿ¶ª÷_õÿUÿ_õÿUmÛ–$Ûn+Ùv[ýoëûoÿ¿ýÿöÿۀЀ¶ÿ·½ÿøÿñÿãÿÇI’ÄI’´I’´ÿßÞÿðÿáÿÃÿ’$ I’¤M’¤ …rÒ.‹’±(ù‹’±(h @[¡0ÐV,–á_,ÿX†± jÛ¶Õ¶mk[ÛvÛľí²ý¿lÿ/Ûÿ˶ ªªªJªªª*i[Uý¶ªzÛʪÿ˪ÿ˪ÿ˪ªªª’ ªªª$©j[IúÛJÒ½­Jÿ¯Òÿ«ô¿¬’mÛ–lÛ¶dÛm¥ÿ¶Òý¶úÿÖÿ·þ¿0`Úþßöþmÿÿ?þ 0´ÿßÞÿöÿñÿãÿÇ$I’$ I’¤•eYNZ‘H$JÚ…"Qò E¢äŠDIÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶­mÛ¶mÛ¶mÛ¶ÛÚ¶¶û¶‰ýOìÿÄVUUUUUUUUUUUý¶ªzÛªê·ê?QýO$ɶm«mÛVÛ¶­[ë½­êßVõÿ¨þIжm«mÛVÛ¶­ÿmõ~[ýo+ý¿¥ÿ·0àÿÛÞ¿íÿmÿÿ? ðÿ·÷¿ýÿöÿñÿã$I’$I’$I’$I’6I’V–å$­H–“ˆd‘,'€$@[YÚÊr ­,D²H–¶mÛ¶mÛ¶mÛ¶mÛnkÛâ¶¶-j+²-‹,²mÛ¶mÛ¶mÛ¶ýÛ¶o[ÛßÖö·µý mÛ¶mÛ¶mÛ¶mûß¶ïmí¿­ý·µÿŨ øðý¶þoëÿ¶ú¿@•üÿøþmÿoûÛÿGJ’$$I’$ ÿîûÿíÿ·ÿ'I’$I’$I’üI’{’¤=IÒ&IÒ&IðËî² ´•å@[Y´•åÀÀ€ÛÛ¸-À?À}€o |[àÛÿ÷þ¶ð·…¿-ü?ÜøoË[þÛàÿáþÃÿmÿoûÛ$IB’$!I’ðÿáþ‡ÿoÿ¿ýÿ6I’$I’$I’ä?Iî'É’´ËIÒÊr’$I’$I’$I’ü'É}9É¿œ¤­,'i+ËI’$I’$I’$Iþ“ä~’ü'Ém“DÜ6I’$I’$I’$Iþ“äþIþOòm“|Û$I’$I’$I’$ÿ'¹ÿÉÿ'Ûäo›$I’$I’$I’ürÿ“ÿOþÛæ¿m’$I’$I’$Iþ?¹ÿÉÿ'ÿ·ý¿m’$I’$I’$Éÿ'÷?ùÿäÿÛÿoÛ$IÚ$I’$Iþÿ|ÿóÿçÿÏÿŸ¶´àÿçûÏÿÏÿÏÿmh ðÿóýçÿçÿçÿÚÐøÿùþóÿóÿóÿ´ -üÿ|ÿùÿùÿùÿhk€¶üÿ|ÿùÿùÿùÿ -mþ¾ÿüÿüÿüÿ$IÒ&IÒ&I’üÿùþçÿÏÿŸÿ?m’$m’$m’$ÿ¾ÿùÿóÿçÿO[ÚЀÿŸï?ÿ?ÿ?ÿ?R[Ûv[Ûv[Ûþÿýý÷ÿïÿßÿ¿í¶¶í¶¶í¶¶ÿÿýÿûÿ÷ÿoÛmmÛmmÛmíÿßßÿÿþÿýÿÛ¶ÛJ¶ÝÖ¶ÝÖÿ¿¿ÿþÿýÿûÿ·m»-mhûÿóýçÿçÿçÿZh ýÿùþóÿóÿóÿI’´I’´I’´¿Xœï/Îÿ‹óÿâü¿8jh @[Ú¾XÌ÷óÿbþ_Ìÿ‹‘TmÛR[ÛÖ¶¶}ÛÅb±ÿ_ìÿûÿÅ–$IRUUm«ªªmUõÛŠÅúýÅúÿbý±þ¿XUU%IPPUÛªªj[Õ¿íúý×ÿ_ÿýÿÕ¶­‚l»­dÛmõ¿­¿ÿþÿýÿûÿ·mÛ–lÛmmÛmÿoûý÷ÿïÿßÿ¿ €öÿÛï?ÿ?ÿ?ÿ?$ $IÒ&IÒ¾H$JÛ…BQþŠò¿P”ÿ…¢0Ѐ¶"‘H¦íB¡ˆÿ…"þŠø_(BRÛ¶%µm[jkÛi+ŶB¡ìÿ…²ÿÊþ_([PRUU”TUU%©­ª&mÞvYÿ_Öÿ—õÿe•$I’$AAUUI’$Um+Iù¶ªÂÛVÖÿ—õÿeýYmÛª’m[U²í¶Ò[é{[ÿÿþÿýÿ²mÛ¶mÛ¶mÛmÿoûý¶ÿ¿ÿÿÿ€öÿÛïßþÿüÿüÿ@’$$ $IÒ~’´]–å´/’åü‹d9ÿ"YŽÚ& meY–i»H–ùÉ2ÿ"Y¦mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛVUUUUUUUUUUUÚª*´Ý6QÑ?QÑ¢ªªªªªªªªªªªª|[Un[UÑ·$ú'’è?´m«ªmÛVÛ¶­ÿmõ{[é¿­ôÿ‘þ?’mÛ¶mÛ¶mÛöÿm¿ßöÿ¶ÿ¿ÿüûýÛÿoÿþ IH’’$áO’¶'IûIÒ~’ˆþ$1`À€€¶´Mmå#'`Û¶mÛ¶ 6h›m“@Û$@’Û¶mÛ¶mÛ¶mÛ¶m»­m»­mËme[e•-Û¶mÛ¶mÛ¶mÛü¶ÍmkçÛÚù¶ªùEVµmÛ¶mÛ¶mÛþßö÷¶þo«ÿmõ!‚¶mÛ¶mÛ¶mÛÿo¿íÿmÿoûÿbøÿùþíÿ·ÿßþÿ@’$$ $IòŸ$ß“¤ý$i?IÚO~îmh @[øàžm“@Û$Ð6 üܸ-m»­mþîù¶o ù¶6ÀÿÃ÷‡ÿ¶ü·õ[üÿ|ÿù¿íÿmÿo ðÿóýçÿÛÿoÿ¿M’$I’$I’$ù?É÷“üŸ¤ý$i?I’$I’$I’$IþOòý$ÿ'i{’´M’$I’$I’$I’üŸäûIþO’¶I’¶I’$I’$I’$Iò’ï'ù?In $m$I’$I’$I’ÿ“|ÿäÿ“|[È·…$I’$I’$I’ÿO¾ÿùÿóß–ÿ¶$I’$I’$I’üÿùþçÿÏÿmÿo›$I’$I’$IòÿçûŸÿ?ÿßþÛ&IÒ&I’$Iòÿÿ÷ÿÿÿÿÿÿ¿-møÿÿûÿÿÿÿÿÿ¯mh ðÿÿ÷ÿÿÿÿÿÿßnkÛnkÛÀÿÿßÿÿÿÿÿÿÛmmÛmmÿÿÿÿÿÿÿÿÿm»­m»­ üÿÿýÿÿÿÿÿÿ·m·µm·5ðÿÿ÷ÿÿÿÿÿÿZhþÿÿþÿÿÿÿÿÿ·Ð@ ÿÿÿÿÿÿÿÿÿÛЀ¶üÿÿýÿÿÿÿÿÿ—ÚÚ¶¶µm·µíÿÿ¿ÿÿÿÿÿÿÿ’ÔVUí¶¶í¶¶ÿÿÿþÿÿÿÿÿÿ«j[UÛmmÛmíÿÿ¿ÿÿÿÿÿÿÿªªmÕ¶ÛÚ¶Ûúÿÿïÿÿÿÿÿÿ¿m»­m»­m»íÿÿßÿÿÿÿÿÿh €öÿÿïÿÿÿÿÿÿ¿€ZhÿÅâ¿¿øÿÿÿâÿ_lÛ¶ÝÖ¶ÝÖ¶Ýö‹ÿþâÿ_üÿ‹ÿ±¤jÛ–ÚÚ¶ÔÖ¶Åm_,þû‹ÿñÿ/þÿÅ’$Iªª’ÔVUUÛªªø¶‹Åñÿ/þÿÅÿ¿X’$I’$I’¤¶’$©¶U[±øï/þÿÅÿ¿øÿ«ªªªUÕ¶’ªj[ÿmÿûÿÿÿÿÿÿoÛ¶mÛmmÛmÅÿmÿþÿÿÿÿÿÿ€Úÿoÿþÿÿÿÿÿÿ´ÐþËr{_(ÿ¿Pþ¡üÿBÙ¶mÛ¶m»­m»í˲ܶ …òÿ åÿÊÿ/”UUUUUUUUµ­ª*meY–o»P(ÿ¿Pþ¡üÿBYP’TUUP’TUUPj«ªI[YF(l+ÊÂÿ…²ð¡,ü_(K’$I’$(I’$I’ $Im%)I[ o»,üYøÿ²ðÿeUUUTUUUAUÕ¶‚É·•„ÂÛV$ü‘ðÿEÂÿÙ¶mµmÛjÛn›ÿ¶Âïm…ÿ¿ðÿþ¿0`hÿ¿ýûíÿÿÿÿÿ?@û/Ëí}YnÿeùÿeùÿeÙ¶mÛ¶mÛ¶m»í'iÛ“´}Q"ÿ‹ù_”¨ªªªªªªªªªªªjÛ$qÛ$IÛEIþEIþEIÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶­ªªªJªªª*©ªªª´U hk#º­,#úŒè_–UUUURUUUIUUU%ø¶ܶ¢o+#úŒè_–mÛ¶mÛ¶mÛ¶óß6ßÛæ¿mþ_ÎÿË€þÿöï·ÿßþÿÿÿð¿,·÷e¹ý—åö_–…ÿ˲mÛ¶mÛ¶mÛ¶ý'´í m?¡í'Dô'ضmÛ¶mÛ¶mÛÀm´-@ÚÊ@‘Û¶mÛ¶ml†¶‰¡m´M’UUUUUUUUUUUUÛVUµÝVÕv[U[n+«-[¶,Ù¶mµmÛjÛ¶~[á¶Uø¶ ßVá!Ù¶mµmÛjÛ¶5ÿ[ó½mþÛæ¿mþ0`Àÿ¿ÿ~ûÿíÿ·ÿ¿àÿeùïËrû/Ëí¿,·ÿ² ÀßÚ~BÛOhû ðph; m´-€mÛ¶mÛ6¶á†{bh›m m‚mÛ¶mÛ¶mÛ¶ýÛ¶ï¶íÛÚ¶ÛÚ¶ÛÚ¶mÛ¶mÛ¶mÛðoÃ}¾­áÛ¾­ 8ÿï|ç¿mþÛæ¿-`À€ÿÿÿþÿûÿíÿ·I’$I’$I’$ÿ/Ë_–ÿ_–ÛYnÿe9I’$I’$I’$ÿ'?ùÿ¤í'iûIøø>ð?Ðö€¶M€ÿïÿ´ -ÀÿÀ÷ÿn †¶6ÿßþø¶À·5@þŸ|ÿóÿç¿mþÛ&I’$ I’„ÿÿ¿ÿÿÿÿßþ @À‹ö`»µj–MKMã€-k¶ÿÿÿíÿÿøøþàøßöÿÿÛþÿøøþàøï¶¶í¶¶Úhh¶ÝÖ¶ÝÖhZ Z Ú¶ÛÚ¶ÛZ hhhÛv[Ûv[v Z Z mÛnkÛnÚhhöÿÿûÿÿ߀ÿàøþÿíÿÿûÿÿßààøþà[Ûv[ÛvÚhhö¶µm·µ­m´-Ð-Ðíݶ»»Ûvwls7pÜwÀpwwÛîînÛ¶Ý ÜwÀpÜÝÝm»»»mÛnà¸î€;à®m»­m» lhhhÛ¶ÝÚ¶Ý€m Z Z ýÿÿÿßþÿÿ7Òôƒàøþÿ¶mÛmmÛmiÚmhhhóÝÝÝݶ»;ÛB¸Û6î€;à¸îrÎùîòݶ»cÛÝÍ6wÀpÜw9çœsÎ9çm9c[Îc[Î@Î@Î@Î@Îwww9ßÝm˰í†mÜwÀpwwwwwwwÛÀ¶Á6à¸¶mÛ¶m7`Ø€hh·mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛÚ¶mÛ¶m·…Ðv[» -Ð-Ðæ»»»ËwwwgÛÝݶýßÙÆpÜwÉ“çœsÎÉ“çœsÎlË9϶œ3Ûä ä ä äœsÎ9'OžsÎ9'OŽm9m9c[Î@Î@Î@Î9çœsÎ9çœsΰ-Û2lË@Î@Î@Îwwwwwwww`Û`ØÜwÀ]Û¶mÛ¶-° lÀ´@ ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!üoÿ üƒðß¶mÛ¶mÛ¶m»í¿í¶Ún#´ ´ ´ùîîîîîî»Û¶»;ÛÚ;Û„;î@¸Ë9çœsÎ9çœsFÎ9çÙ–sf[Ιm!gr!çœsÎ9çœsÎ9gÈ9ç±-glËÛr’'’'¿»»»|wwwînØv°-ö \.ßÝÝÝÝÝÝÝwƒm`ØÜwmÛ¶mÛ¶@;°°-Ðþÿÿÿÿÿÿÿóÿÿ?üÿoüÿoüÿoüÿÃÿÛ¶mÛ¶-mÛNÛ¶ÛÚ¶ÛþÛnómáÛÞÝÝÝÝÝÝÝáîîÆÝÝÙvwgÛÝmwðwwwwwwwwwwwÃÝÛîŽmwǶ¿ùîîîîîîîÜÝàî°íÛî°íÈùîîîîîîƒmÛ¶p¹mÛ¶mÛhZ° lÛ€^Û¶mÛ¶-дÀlÀ´ÿÿÿÿÿÿÿÿøÿÿáÿþÿ7þÿ7þÿ7þÿÛ¶mÛ¶mѶm[´m·µm·µm·µmÛ¶mÛ¶mñm;´-´­mmk[ÛÚÖ¶mÛ¶m۶жƒ¶ -ÛÚ²­-ÛÚ¶mÛ¶mÛ‚¶-Ðb[‹m-¶µmÛ¶mÛ¶@;Ð-l+l+lkÛ¶mÛ¶-д@ ¶m`Ûÿÿÿÿÿÿÿ?ð?ðü°Ûÿÿÿÿÿÿÿ?üÿÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðÿ?üÿÃÿ?üÿoóÿ¿íÿÿÿÿÿÿÿÿÿÿáÿøÿ‡ÿøÿ·íÿß¶ÿÿÿÿÿÿÿÿÿðÿƒÿÿþŸmÿ϶ÿÿÿÿÿÿÿÿÿþþàÛþ±íÿÿÿÿÿÿÿÿøøþØö°íÿÿÿÿÿÿÿÿÿàøÛÀ¶ÿÿÿÿÿÿÿààøþ ضÿÿÿíÿÿHòIHò@’’<ä·µm·µm$5HR I$’HÒnkÛnk[ I ’HR I$’´ÝÖ¶ÝÖHRƒ$’HR I$m»­m»­Ô@P@Ûv[Ûv[5P@Ð¶í¶¶í6@ P@ôÿÿûÿÿßoàxÀ~ûÿÿßþÿÿ7’N:ñ†¤’N™di‡'YÇáÛ¶mÛ¶mÛ¶m·ÅqÛmqB·Åq•Ç!qBïîîîîîîîîîîîn[ÛK·ý÷’m‹¿—L2ñ÷’!þ^Î9çœsÎ9çœ3rÎ9Û¶œ3ÛÚ̶6#)¾|óÝÝÝÝÝÝÝÜÝ™mwØv‡mÍTÍ@óÝÝÝÝÝÝݸ;cÛÁ¶ Û$í×¶mÛ¶m ´†m`Ø$)¤mÛ¶mÛ¶€lÀl€úÿÿÿÿÿÿÿÿÿ7ÿÿ¿ !üoqÂÿâþCÇ!ü·mÛ¶mÛâÛÖ„Ðv[ÿÝ·…ð߇þ{wwwwwww‡»»3wwgÛÝ]¼íÿ.Úö—ÆiüwwwwwwwwwwÆÝÛîŽmwǶ»C”ÞÝÝÝÝÝÝÝݸ;ÃÝaÛ¶Ýa[Q¯mÛ¶mÛh ZØVØv°í@²DnÛ¶mÛ¶Ô@Á6° l’ÒÿÿÿÿÿÿÿÀx`6`üÿÿÿÿÿÿÿ?üÿÿÿðÿ¿Iÿÿ·4ýÿßþÿÿÛ¶mÛ¶m¡mз…ðßm!üw[ÿmÛ¶mÛ¶…¶5ÚÚÖ¶¶M·µmº­mÛ¶mÛ¶m¡m mA[¶µe[[¶µmÛ¶mÛ¶m Z Å¶ÛZlkÛ¶mÛ¶mÖ@…m…m…mmÛ¶mÛ¶Ô@ÛÀ6°íÿÿÿÿÿÿÿððÀlÀöÿÿÿÿÿÿÿþßðÿàÿÁÿoÄÿ¿EQøÿÿÿÿÿÿÿÿðÿ†ÿÿþ›øÿ·…ðÿÿÿÿÿÿÿÿÿàÿ ÿþü¿mñÿGÛþÿÿÿÿÿÿÿÿÿÁÿþü?ø¶ý?Ûþÿÿÿÿÿÿÿÿø7øþlûǶÿÿÿÿÿÿÿÿÀxÀ¶=lûÿÿÿÿÿÿÿÀxÀlÛþÿÿÿÿÿÿÿoàx`¶íÿÿûÿÿ$c l[Ûv[ÛŒA2@2@2@2@²nkÛnk[@2ÉÉÉÉÉÚmmÛmmÉ$$$$$k»­m»­$c ¬m·µm·€€¶í¶¶í6þÿÿ·ÿÿÿ €€íÿÿûÿÿßHD ‰HD@"ˆ¶µm·µm·‘HD ‰HD@"ˆnÛÝÝm»»³M"1$" ‰HD@"ºÛvwwÛîŽm‰DĈ€D$" ‰èî¶ÝÝݶ;l1ˆ D€èînÛÝÝm;Ø1ˆ D€¨m»­m» lc mÛ­mÛ Øèÿÿÿoÿÿÿiš¦ÛDQš‚(MA”¦ JS¥éµmÛmmÛmiš¦é6Q”¦ JS¥)ˆÒDišóÝÝ]ÞvwoKÓ8޶EQš‚(MA”¦ JS¥iÎ9çœsÎÛrÎq¼-ŽCd›4ÒHS M4Í9çœsÎ9oË9f[‘mKS M4ÒHÓ»»»œüîn[†mÇlK) ¤€ôîîîîîî¶mŒmmÛ¶mÛnÀưôÿÿÿûÿÿÿqÇÛ¤io¤iCšÆ1¤iCšÆqÛ¶mÛ¶í¶8ŽãßÇqo“Æq iÇÆq iÇÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÉsÎ9çœ<çœsÎÿÛþ/„m!|j[ qRˆãB‡œsÎÉ“'Ï9çœçœsÎùîÿï®ýû»k·ýßÿ¶þ[ÿ/áÿÂçœsÎ9çœsÎ9·mÎ9·Ýv÷q¼íÿãx[øc±ðb„Ï9çœsÎ9çœsî#çÜ·m9ŽÙvq̶c¤>ŽÁßÝÝÝÝÝÝÝp—2ÛRؖ¶DR@Û¶mÛ¶- ° жmÛ¶m Ä# ¤aƒ4l†Òpwwwwwwwwþ ÿÛˆÿ·ÿo#þáÿîîîîîîîîmïLÛÛ¦ío ¡í¶퇆Ú»»»»»¶w×¢w­ù¿vÛÛmÿm·ý·ýþsÎ9çœsÎ9çœïs¾39ç;Ûr¾¶µº­½Â…öîîîîîîî®w}ã®1Û®1Ûrc¶µÆ½»»»»»»» À¥ —¶¶¥°-Ÿ¶mÛ¶mÛ`lÀl€Ð¶mÛ¶m Ä# @6HÃiØ mÛ¶mÛ¶ÿÿÀÿ6âÿmÄÿÛÿmÛ¶mÛ¶mmAÛmâ¶Ûâ¸ÍÛÚöîîî®mÛ»‚»2þ ¾í¶ÿ¶ÛþÛnûïÝÝÝÝÝÝÝÝ»cܸ»Ø¶»‹ãmww·íîîîîîîîî®à® Wà³í³íúl»¶mÛ¶mÛ4eRؖ¶¶µmÛ¶mÛ`lÀlÿÿÿÿÿÿÿÿ€€! l† Òðÿÿÿÿÿÿÿx xÀoCúÛHÿÛ¶mÛ¶mÅP@ým„v[š~Û¶mÛ¶mÅP@}Û„¶ÛÚ¶mÛ¶mÛŠ¡€úl mšnkÛ¶mÛ¶mÅP@M±­MÙÖ¶mÛ¶m[ Rؖ¶ÿÿÿÿÿÿÿ € Ø@À¢=c0jÕ À²iS†íšµÉ¤-˜³f»»»ÛÀ 8Àp€ܶ»»Û7à8Àp¿íÿß6ü€<àxÀÿoû¶ñð€<àÿÿÛþ±ÍxÀð€üÿÿ¶‡m?àxÀðÿÿ¿ lð€<àø»»» Øà8Àn»»»Ûèºî6p€à¸mÿÿ¿­ëºî·Áð€<àÛÿ¿m]×ý¶áxÀð™Û2“m]—³$  H@fæ¶LlËÛ$  H@23s[¶¶%  H@òÿÿ·mƒm€<àøÿÿÿ Ø6Àð€ü¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛÿÿÿÿ¶büm!„ðÛàxÀ>333Ó¶3·-„¶! H@2333“m™9ÛBH¶‘€$ Ù÷}ß÷}m}?¶õ=¶é= ô€>333{ؖö„m H@™™™™`Û`ØH@ÿÿÿÿÀ6°àxÀßÝÝÝ]Œ1Æ»Zï6j­uƒZZZZÿÿÿÿÿÿÿÿ·Õz÷Ûj­õ·¡>P¨ÔÏÌÌÌ$33sÛî2m«µ¦mÔj5š ö}ß÷}¾ïû~¶õ}϶Z{¶©=P{ ö@íû¾ïû¾oú¾ïǶ¾Ç¶¾Ç¶ÚµjÔ¾ïû¾ïûô}?lëa[Ûz@è}fff&9ضm€$ ÿÿÿÿ?°°ð€¿»»»ãîîn¸»Ûˆ1ÞFŒñ6Äx Æ1Þÿÿÿ?ÿÿÿswÿ¿-ÆÿßcŒ¿Äø ÆÏÌÌÌDffŽÌÌ´íÿÓ¶cÚ&Æ1&ˆ1û¾ïû¾ï¡ïû~èû¾g[ß÷l‹±g[Œ=ˆ±1ö}ß÷}ß÷ ïûAß÷ØÖ÷ØÖ÷Ø{ ö@l0333ÈÈ„m Û¶% ™™™™ È ¶m` ùÿÿÿølÀl€üÝÝÝîîn¸»ƒxwñî6âÝmÄ»ƒ»»ÿÿÿüÿÿøÿüÿÿ¶»ûßvwÿÛÜýÃÝfff&bfæ™ ™™¶efÚv—iÛ]&ÜeffffÂgæ 3Af²-3Ùv—l»Kp—™™™™ 32LlËĶLl».3333Ì HØ–°-a[òÿÿÿðð`ضþÿÿÿððÀlÀø»»»;¸»îî ÞĻۈw·ïnãîîÿÿÿþÿ‡ÿøÿ‡ÿÿmþÿ·ýÿÿ¶ÿÿÿÿÿÿ‡ûÿáþâÿCüÛâÿÛöÿoÛÿÿÿÿÿ?øÿÁÿƒÿÿ϶ÿgÛÿ³íÿÿÿÿÿÿàøÇ¶lûǶÿÿÿÿÀxÀ¶=l{Øöÿÿÿÿ€ð€<ضmwwww€p€°°ÝÝÝݻܸ;pwàî6ÜÝÆÝÝÝÝݸ»ÁÝ»wînw·íîîîîîîÀÝ îܸ;pw¶¹;Ûîîîîîî@¼Ô;Pï@½õŽmõŽmwwwwwÜ ÜwÀp‡mwØvwwww¸8À¶l»»»»;À 8Àp`Øvwww¸8ÀØ€m»»»Ûhذ±44l,AÃÆ4l,AÃÆ4l,AÃÆrÛÿÿoÓ°acihØX‚†%hØX‚†%hØX‚†åoûÿ·­aÃÆÒа± Kа± Kа± ËÿmÿÏ6¥Ac 4–@c 4–@c 4–ÿ¿íÛKƒÆh,Æh,Æh,ÿÿ·=l+ ”€PJ@ (ÿÿØfÀÝÝÝllwww[Û¶mÛm›E Í¢…ÆfÑBc³h¡±Y´ÐØ,Úmÿÿ¿­m»®nkll-46‹›E Í¢…ÆfÑBc³hs[fæoëºZmÓ,ZÐ,ZÐ,ZÐ,ZÐ,ZÐ,ÚÌm™É¶Z«mk-h-h-h-h-hmfnËĶZͶ¢Š(Z h¢Š63s[¶4¶µ€ÐZ@ hÿÿØfØpww·›Ápwww·u]×Õºu]×…°i–mסY¶]‡fÙvšeÛuh–m×mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶efffæ¶ZcÌm!Äh[Ùv”m×AÙv”m×AÙv]ß÷}ß÷=ÛbLÛcd[Ûu í:Ðvh»´]×÷}ß÷}m}o¶Åˆm]tÐu@×]—™™™ ÛÒØ–°­´€ÐÚÿÿÿ°Í° l¸»»»6ƒ Øîîîî.„ÂÝBµneB­[Yv!ÔRYv!TÊ¢ ¡EQt!Ôÿÿÿÿÿ»»»m!ÄxÛB¨õ¶]Q¡èBˆ(ºbQEBÌÌÌÌÌÌÌÌÌm1Þ•Ûj½+·u!ÄR© !–èBˆEQ]±ïû¾ïû}ß÷½m»{¶ÝÛBˆh !‚bY–eBìû¾ïû¾‡¾ï{³­ï±íÛººtšÍ.ffff‚Ì4¶%lKØVACPAccýÿÿÿþ ÛÀ6° h aÃÿÿÿÀlÀl€hÀÝÝÝbŒw¦ÖZã&ÔZãVµÖ¸µE­5¶EQÔZcQ´¡Öÿÿÿÿñÿÿ¦ÖÿßVkŒ·­Öã¶PkŒm׆ZclÛ6Ôcfff&23Óüÿ¿mwÿŶÿÛmµÞE[ÔzßEQë}ß÷}ß÷=ô}ß}ß÷lû¶ý?ÛÂ=Š2Ü—eY–á>333d¦!3±-Ûþ±->”ÍøÐlÆÏÌÌÌ2 2a[¶„m4#hlŒÿÿÿÿ€7ð`ض † ÿÿÿÿ 6`6@C@û»»;¸»3îî Æx›²Æx[YÖo«µÆxµÖZc¼ÿÿÿ¸ÿ7âÿCŒwÛbŒwÛbŒwÛbŒw5Öï.33323ÌLÈÌ´íî³Üvw¶Õ»ìºê]ffffÂe¦!3Af²-3Ù–™l»Ì²,Cw™™™™™ 3 2LlËĶl»‡®½ÿÿÿÿþ <àaÛö‡mÚâþÿÿÿoضm@QÞÝÝÝlÀl€òîîîÜáîÀݻۨw·5›õî¶êÝýÿÿÿƒÿ7ü?ˆw ÞmSãݶãݶïîÿÿÿü¿áÿÁÿƒÿ·­þsÛÿØöÿÿÿÿÿþßðÿ þƒøÏ¶øÏ¶ÿgÛÿÿÿÿÿÿÿÀ?ðmÿØömÿÿÿÿÿ€7ð€Ûö!°-†Žm5t(Ôк®ëºP3333Èì˜m-lka[ J- m÷ÿÿÿxŒ Ø€ Ðÿÿÿÿ@W1º°A6hÃmhAZІÌÌÌÌ„/™o¡Ömtµn£«5tèj ]×…Zkß÷}ß÷}ßãî2ÍÝÝ65ÆÛVkŒq[¨1Æj¨1ÆB¨1fþfþá2ÿÌ]Þm‹ñî¶ÅxW·Õ¯ÆkŒWk­5ƾïû¾ïûô}ÿo2óªmwWë¶»Xöc 5Ôc !Ôû¾ïû¾ï¯Bß_5ú¾¶eíØvµc[­ºPk ]×…š™™™€ì²…m-lka[ Ú®m÷ÿÿÿ€°° @ñÿÿÿt£ @6hÃmØ  ´!333óA<Œx@½mtõ¶ÑÕÛFWïj¡ÖËÌÌÌLðŸŒÿÿ·MˆÿÛBˆÛbŒcŒñóÿÿ3|>ãòÁÝÿ¶»ûßvwÛîîïïî¾ïû¾ïû>Aß'£ïôýÛþ/„mÿã¶øwñâÇÏÌÌÌ<ðy Y¬Û²vlûÚ±ík !ÔÿÌÌÌÌdÇ ´°­…m-lkA¸ÿÿÿ € Ø€ Ðýÿÿÿ*†€°A6hÃmøÿÿÿ†à¶¡»mtõ¶QëýÿÿÿÃð·ø¿­ëâÿ¶ZãÿÿÿCpg›xÿÛîîÛÝgfffCǶ˜×uÛ2¯Öm™™™™™€Ä€\‡mW;¶e­lËÿÿÿ ZØÖ¶¶ýÿÿÿ`lÀlwwwwl Ý  wwwwlƒº¶­ÿÿÿÿ؆zÛÚ6Æÿÿÿ ØF½Ûãÿÿÿÿ`€mêµí¶ÿÿÿÿ `[m[¶ýÿÿÿ?`[ Ûîîîî06`@Lcܶ)ˆíÚcÑ sÖ8€Q[ÌÚĤUc¶ªªª  (@ PÛªªj (@ P¶uwoЀ4  h¶u÷l£ h@Ѐ¦·umЀ4  hº·õ°­ h@Ѐ¦»· ¶Ѐ4 MUÕ6° P€ µmÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶­»»·=Ïóô6h@Ѐ´mÝÝÛölû€ø€ø€OwolÛ h@Ðtwo°Ѐ4 «ªªª6RŠq#¥”6 º»»»·¥coK)¥Þ h@ÐüÿÿÿÛãÿ¶¥”¾mø€ø€øüÿÿÿ³íÿ϶”>Ûø€ø€øœçyžçØvžØvžØæœ€pNþÿÿŸÃ¶Û>lû€ø€øüÿÿÿƒm`Øø€ø€Oww÷ÀlÀh@Ð䪪šc¬Úȹj#çœ7ÈÈÈÈ™îîîéîîÞ–sUoË9çÞ†Ü@n 7›ÿÿÿþÿÿÛªþ·-çüm#   Îó<ÏsÎó<Ï“mçy²-ç“mò äÈ'OÎó<Ï€‡ó9Ïó<ÏÁyž°í„m'l;'àœüÿÿÿÿƒm`Øø€øtwwh`6`4 MUUÕTUUAUÕFŒ±6bŒµ!Æ1ˆ±èîîžîînªª»·ÅØÝÛbŒ±·cƒÄØüÿÿÿóÿÿÿóÿÿÿÛÖÝß¶ã·MŒÄøAŒŸó<Ïóœîóÿÿÿÿ þø€Û>lû°í>ÝÝݹ h° lÛMww÷€4  Ø€ ÐTUU UUPU±ª VÕF¬ªXUUUtwwÝÝÐÝ ÝÝÐݽMw÷¶îîÞÖÝÝtwwÕÝPÝ ±»!v·m±»mëî¶­»›îîîAwƒîÝ º›mÝͶîf[wÓÝÝ=Ð tÝ@7¶uc[7¶uÓÝÝ=  h@ö†m Ûšîîî h@lÛÀ6ªªª (`6`£ªªjPU ª@UªUµ¡ª6ªª¨ªªT¨*PU ª@Um£ª¶UUUUUƒªUª T¨*ÛT•mUUTUU bÈU W\rÛrÛªŠªªª*  ¨ª€*l«Â¶*ªªª (@Á¶‚mEUUÕ€ (° l£ªªj@ P€°ÛVUUµ †/Ãá Áð…À`øB`0|!0¾Ûº»{[``0|!0¾ _ †/Ãá ÁðímÝݶ †/†/†/†/†/†/†/ÛºÛ¶ÃÃÃÃÃÃÃۺͶðÂ_ |ðÂ_ô¶6¶½€ð^À x/º·¶ ª6ƒ `«ªªÚîû¾Ÿg ¯ãF0¼ŽÁð:nÃë¸ ¯ãÃ0 ¯ãÞ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mûÛþÿÿo{žœm ¯ã†ð:n¯ã†ð:n¯ãÃ0 ¯ãfÛÿß¶åœÙv7¸Ž\Ç ®ã×q‡a†×qcÛÿf[ÎØvÜÀqÇ 7pÜÁ`0 7þ¶olû°íÜ€pnx£{›aØ€ªÚ 6`´ªªªj{žçÉy»®çIi ¯÷~žPx½÷ó^ïý<×u]ïý<×u]ïý<ÝÝÝÝÛž'ç¸íyRŠÛ®÷~—뽟×{?Ïu]×{?Ïu]×{?Ïÿÿÿÿÿ¹-ç¯m)Ån{ïç …ÞûyB¼÷ó\×u½÷ó\×u½÷óà<Ïó´m1~¶ÅÙv?‚îç÷ó„a†÷ó„a†÷óà<Ïó4ÛÎÛbĶç@Ï<ƒÏ ƒÁàóàÿÿ¿±íöÛnÀ ¸A`à otw·aض€ªª2Ø€ ØP@@QUU&¥TµI)å¼½oJ9oïû¤”ßë}Ÿ”òu½Ç“R>ŽãxRʈÝÝ&VUmK)ÆÚ–RεíxRŠïñOJñ}ßãI)Çq<)Eüÿÿ7ÿÿÿm‹±êÝ–sÕ»íI)¾×{=)Å÷º®'¥xÇñ¤qžçyšó<Ï“mUͶªb[JW˜R Ã0 SŠïû¾oJçyž§9Ïó<±í<±­ Ûžað‰ >1 ¯ë‰øÿÿoøÿöÛ>lË ˜A``a˜ÑÝÝÝ`ض€€`ÝÝm  Ø€ ˆªª21Æ*äœsܤ”sÜŽ#å·ûH9Çû8Žœs<Ž;åœ#º»Ûtw7rîîm9ÇXÛrŽ1nK9Çx?wÊ9Æû¾SÎ1âÿÿ¿ùÿÿîî¶­ªûØc÷½-çê㸜«ïã8r®ÆyžçiÎó϶”âñn»Ÿt¼^÷“Ž÷“Žã8ŽûIÇqÇý¤çyžÙ¶Åø°-ƃmO:pyÒžt¼ïû¾O:Þ÷}ß'}üÿÏÛlû°-¶B Àu¥ëº®ëºÒÇÿÿ3¶m`„!†în† Ø€ ‚…ªª29ç¼ñ¤”7ž”òÆ“R>ð¤”ß÷}Ÿ”òó<Ï“rntw·É9×69ç¼-¥œó¶ûI9÷q?)çã8î'åœRJ)圑ÿÿÙäªÊÛrŽ1nË9çgÛ“r~îç~RÎÏ}ßOÊ9¥”RÊùÄyžg™ÿÿ¶ÅX)m˹ž{[Êù¹ûH9?÷q)ç”RJ)ççpÀeÎó<¶U=l«zØ–óƒãÍùyß÷}s~žçyRÎÿÿó6ÿÿ¶}ØV°-÷JàºÒu]×u?éãÿÿþÛÀ6° ¸B ãntw3h`6`„€ à-TU•ɹªðä7žœãÆ“sÜxrŽÏû¾OÎñyž”sŽîî6UUcÜ&ç·åœcÜ–rŽ1§œrŒ1§”rŒ±Pÿÿ2ÕÝ…»k[Œ1Ö¶cÌÛrŒ1ÇsŒ1çœsŒñÄyžg›ó<ÏFww¶­ªsÞcç´-ÆÊ)§cå”RޱNœçy–9Ïó|pžçù°­ûa[÷ö\Ïû¾OÊ•Óó<)×ÇÿÿßæÿÿÁÿ¶}ØÖ°-‚û‰×u]×ýÄÿÿgèôÛÀ6° 8nà¸ÝÝ PÀlÀxo¡ªªLÎU W\µ!Wm<¹jãÉU9¥”sU£»»Mw7ènPUÛˆUÛRŠUÛbŒUcŒ±ªÑÿÿ6UÝ ºAUÙ¦ªz[UUm«ªª®ªªúøÿÿoþÿüÿÁÿŸmUÒ¶ªŠq[¬ªX±bÕÇÿÿ—ùÿààlûÿaÛÿÛêç”Rîúÿÿ›ÿÿ|À‡m¶5l«ëº®+U}üÿ?C7ضmÀÝÝ Ø€ Øw¡ªŠ¡ ¨ª€ª ª6ž\µ‘sU£»›¡èºîmèÞö<±{[α»ÑÝÍÐ tU@•mTõ¶ªªÞVUÕèîfèºn ›mºŸg[wç¼­»ÝÝ Ý@7ˆm±¶ug¶u7º»4  hØÖ°­a[7º»ÛÀ6°­ÑÝͰ°ªª (@m 6î;W¡ªŠA P€Ô6¨m÷cªª (@Ù†ªm1Vªª (@±ºïmUU¨ªbP€ …mêf[U¡ªŠA2 2 ö ÛªPUÅØ¶ªª6`ÛPU› à / ¼€ð / ¼¶ÑÝÛ& / ¼€ð / ¼€ðêmÝݶ à / ¼€ð / ¼º·uwn Ã+á‚ð Ax… ¼B^!¯îÞÖ†¶¹Bà +®¸Bà «›m†¶í +®¸Bà +®nl C³-„€B@èFoÀ†îÞÌ}ß¼ðÀ{ï¼Çu]×u½Ç6º{ÛÜ÷³ë=Àõàzp½¸Þã}ß÷}ßãoûÿÿ´íyžçÝæz®÷xáz®÷xáz÷}ß÷}mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶mÛ¶ÿÿ¶ÿSJÛRz/ÛÞã½à=Þ Þã½à=Þ Þã}ß÷}ßã¶ýû¶m齨v¼8Þ ïŽ÷Çû¾ïû¾ÇÿØvßfÛ Û^À x/཮뺮«½alÀ»ÑÝ›¹ïgƒûÙà~Bp?Àý\à~®ëº®ë~þÇÿÛ¤”¶ñŽã8îç>Žã8îç<Ï3àóŽã8îç>Žã8îçØöÜ.Ï}€ç>Þ÷}ßç>Þ÷}ßçüÿïÛl»aÛ Ûnº7¸®ûº®ëº®nt7ÆlÀB@Øîî6÷7¸ÓwÚàN/¸Óît_×u]wúÿÿÿMŒqOJÛxRÚÆ“Ò{àIé}ß÷}RJÏóOœçYeÎóLÛ:=l‹éa[NŽ7§ç}ß÷ÍéyžçIùüÿïÛüÿoØvö¶Ýà½np]÷u]×u?Ýèn lÀl€ Žntw·¹ïÜàNÜiƒ;mp§Üé¾®ëºîô?þÿÿ›ë<±¶ñä¼'çm<9§ç}ß'çôß÷ûý~Ÿïûý~¿ï½ï÷ûý¾÷¾ßï÷ûÞû~¿ßï{ïûý~¿ï½ï÷ûýªª>ßÿÿÿÿôÿÿÿ¾÷Þ{Ï÷Þ{ïùÞ{ï=ß{ï½ç{ï½§ª:8 ÿÿÿÏÁÿÿÿçðÿÿÿ?‡ÿÿÿÿ9üÿÿÿÏáÿÿÿÿÿÿ¿ªêt˜sÎ9Ó9gÛsÎ9ÛžsÎÙöœsζçœs¶=çœSUµížsNÚ}ÞÑ뻻Ⱦ»‹ì»»È¾»‹ì»;UÕóºï.’w$ïr¼ËAð.Á»ïrªª”¼»ƒ× ¬2X7d°nÈ`ݪêùþywíûÿÿÿõýÿÿÿ¿ïÿÿÿÿ}ÿÿÿÿïûÿÿÿßÿÿÿ¯ª:}ÿÿÿÿóýÿÿÿÏ÷ÿÿÿ¿ÿýÿÿÿïÿÿÿÿûßÿÿÿÿþ÷ÿÿÿ«ªNßÿÿÿÿ|ÿÿÿÿÓÿÿÿÿùþÿÿÿçûÿÿÿŸïÿÿÿ¾ÿÿÿ_Uu: ÿÿÿÏþÿÿÿŸƒÿÿÿÏáÿÿÿÿÿÿÿsøÿÿÿŸÃÿÿÿ¯ª:æœs¶ÝsÎÙv;çl»{ÎÙv÷œ³íî9gÛÝsNUÕózÎ9ißݽ;ï"ïry—»È»ÜEÞåNUõ¼¾»‹áÝdî<ˆÜá r‡ƒÈ"w8UUJÞÝA„IÖ × “Z7LjÝ0©uäTUiÏyd;»»»ÝÝ­³»»ÛÙÝÝíìîîvvw·ªêÙsÎ9ÛÙÝÝíìîîvvww÷ìîîîÙÝÝݳ»»UUÏžsÎÙÎîîngww·vww;»»»ÝÝÝÎîîVU=oÎ9çÙwwwvßÝçÝÝy}ww^ßÝ×wwªªçÍ9ç¤Ç»»È»»‹<ï.òrw‘—»‹¼Üªêy=çœñxw™»;Èœw9ÜAæp™Ãªêywwû;ÈÜÝ­È·"w¸¹Ã­ÈNU5&wwI’u“$ë&‰ë&I­›$µn’”ªj$ïÈØ—$´$iIjIÒ>’¤}$©ªÉ»;ÚG’´$iIÆ>’$ûH’ì#IUÕHÞÝž$¡}$IûH2zIû’$ö%‰ªj$ïîb_’Ð>’Œ¼$‰4I"/I"/ITUcxwIyI™$‰<“D^’D^’¨ªÆäî2I“$H’@$& ˆ‰ªjLîîV$IÖ$IJ$IJ$1%’TJ$©¨ªÆäînÝ$I¹I’²’$e%‰e%I••$¥ª™$€D&I(I’‘Ie’$2I¢ª™$€D&I(I’‘IÈ$IÂ$‰ªjd’™$¡$IF&I ȈªjL’™$‰L’À@`˜ˆªjL’d Hd’&² dM²& DU5&IRb dH‰] %vEJ좪“$)kH‰] åî)± ¤Ä.L‰]TTUc’$eí­] ŸÖ.OkÈhíŽÖ.0ªª®Ø²bww×`w€hªª+v¬ØÝÝ5ØÝ…À`eªª+v¬ØÝÝ5ØÝ…À`¥¨ªUU]± dÅîî®Áî.$°»»+¬ªUU]± dÅîî®Áî. `vwWìîî Xµªªëî)·ªjËlUí ìî–[UµåVUm¹UÖªª®» d´ªªv[U[nUÕŽVUÕ–UUµeU•«ªºî.ѱªj?«ªöÓªªÚO«ªjG«ªjG«ªJUUR’$é" é" é" é" é" é"‰ªsÎ9sÎÙíœsÎ;çœsÞ9çœóÎ9çœwÎ9ç¼sÎ9§ªÞÝ9çœóλ»;zwwïîîâÝÝ]¼»»‹ww§ªÞ×wÇÈ»;ÂÜÝâîŽww„¸»#Äݪ*)ïî&)&)+LRV˜¤¬0IYa¢ªêI’\ú’déc’¥I–>&Yú˜décUÕ9ÃÐÏ9çœýœÝÝýœÝÝýœÝÝýœÝÝýœÝݪªÝÎéœw^ßÝÑë»»x}w¯ïîâõÝ]¼¾;UÕ;¯ÛfäI˜»„w !îBÜ%„¸KTUIyw"dR"䦬›²BnÊ ¹)+䪪ÞÙIh|IÒíëîîöuwwûº»»}ÝÝݾînUÕ;ßÐw§ï½÷Þó½÷Þ{¾÷Þ{Ï÷Þ{ïùÞ{ï=ß{頻~ÿï÷ûý>ß÷ûý~ßÿ¾ßï÷ûþ÷ý~¿ß÷¿ï÷ûý¾ÿ}¿ßï÷ýïûý~UU‡ç0 ÃðžÃ0¼ç{ï½÷|ï½÷žï½÷Þó½÷Þ{¾÷ÞSUí†aèg;çìgww÷³»»ûÙÝÝýìîî~vw·ªj·³»ûÎk»^_÷Åëë¾x}ݯ¯ûâõu«ªÞyÝÝŒEÕ®ª*ÖÝ]ÔhUíÖ(ªv«DÕn•¨Ú­U»õ©U»ªªXwwQ£Uµ[£¨Ú­U»U¢j·F«j·FËÚUU껋­ªÝݪÝ*Qµ[£Uµ[£Uµ[£UbÝÝEŽU»õéVíÖhUíÖ§cÕn}:VíÖ§c•«ªŠuw5:VíÖ§Uµ[ŸŽU»õégÕn}úYµ[Ÿ~V­ªªwgH&I’µ’$k%IÖJ’¬•$Y+É©ªwçÝÝÝ™w'BÞyw"ä݉w'BªjwwÛÝMÒîn2vw“±»›ŒÝÝdìî&cw·ªÊ;ÚÝMR’$aH’kH’kH’kH’kHªª’”G&kH&å’LÊ%™”K2)—dR.IUUï$I"Ére’åÊ$Ë•I–+“,W&QUmÛ»»ä|$ó‘ÎG8Ià|$ó‘TUín§sÞ=ûîîžMòîÙ$ïžMòîÙ$ïžMRUõîì¶IÊ#ɘKȘKȘKȘKȘKTUIÊ;“5$’rÉMÊ%7)—ܤ\r“rÉUU%O’”@–+,WY®²\ d¹ˆªjwKò(}$IúH’ô‘$é#IÒG’¤¤ªjwûfw·¾÷Þ{Ï÷Þ{ïùÞ{ï=ß{ï½ç{ï½÷|ï=UÕï÷÷ÿ~¿ßïó}¿ßï÷ýïûý~¿ïßï÷û}ÿû~¿ßïûß÷ûý~ßÿ¾ß¯ªêœÏ9ç|ïéœó½ç{ï½÷|ï½÷žï½÷Þó½÷Þ{¾÷žªjß9çœwÏóîîy¼»{^îîž—»»çåîîy¹SU½;ûîÊó˜˜Ë11—cb.ÇÄ\މ¹œª*IywÉƤ\f“²˜MÊb6)‹Ù¤,fUUIJ’$¹Èr%åJ Ë•@–+¨ªv·$Œ$¥$II’>’$}$IúHªªv·svw·oÎùÿúþÿÿÿß÷ÿÿÿÿ¾ÿÿÿÿ÷ýÿÿÿ¿ïÿUÕîvÎ9»ŸoÎùÿÏ÷ÿÿÿ¿ÿýÿÿÿïÿÿÿÿûßÿÿÿÿþ÷ÿ¿ªjw;çœÝÏ9çüÿ§ÿÿÿÿóÿÿÿÿŸÿÿÿÿÿüÿÿÿÿçÿÿ¿ªjß9çœwOÞÝÝ“ÞÝ=“»»grw÷LîîžÉªêÝywÇDÞss{LÌí11·ÇÄÜžª*swÉš$I¹‰IYI%e%•”•TRVRªª$%Ib] DI b%ÅJ ‹•@+¨ªöQ’Ç@’d"IÒH’L$I&’$IRUµï¼»c Éc"Éc”ä1‘ä1‘ä1‘䩪öwwL$yL$yL$yLBò˜„ä1 ÉSUí;ïî˜ò˜ò˜(yL yL yL yªª}çÝCA!‰‰‰OUõî¼»K`ÂK"ÂK"â%ÙK"²—DdOU•‰¹»dM’¤Ü$Éh%&£•T2ZI%£•”ª*C2X@P@°€X`±Àb UU&†¼dd d ¸Hv ì ªªL yÉ H¢’ÀI`€¨ª21ä%+€$0@ UU&†¼dH$I`€$0@TU™ò’@ , „H$¢ªÊÄ—”’À’À’À‚I`¡’ÀBEU5‰ /)$)H2Z@’ÑLF ¨d´€RUM €ìŽÖ»£»Àn¹ ì–»€[îµå. ªš@Ù-kÝrØ-wÝrXË]`«ÜTU »e-°[î»å.°[ ì–»€ªjd·¬vË]`·ÜvË]`wtØ­ÝTU »e-°[î»å.°[ ì–»€ªjd·¬vËZ`·¬vGkÝÑØ­PUM €ì–µÀnY 쎎 쎎 쎎+vGÇ¡ªš@Ù­vGkÝOÇv?Øýt\¸ûé¸UUw×]`kt¬ª­O«ª¶>­ªÚú´ªjëÓª*ëÓª*UÕÝuØ«jëÓªª­O«ª¶>­ªÚú´ªjý´ªJUuwݶFǪÚú´ªjëÓªª­O«ª¶>­ªÚÒª*UÕÝuØ«jëÓªª­O«ª¶>­ªÚú´ªjëÓª*UÕÝuØ«jëÓªª­O«ª¶>­ªÚú´ªjëS«JUuwݶFǪÚú´ªjëÓªª­O«ª¶>ý¬ª­OG«TUw×]`kt¬ª­OǪÚút¬ª­O?«jëÓϪÚúô³,UÕÝuØ«jëÓ±ª¶>ý¬ª­O?«jëÓϪÚúô³JçœSUu:‡a†¶çœsÆÌ9ç„™sÎ 3çœfÎ9'ÌÙݪªç†aÚîîî˜îî†éîn˜îî†éînRRU•òîîâ‘$aH’$I’$I²,$FU5†G"IR.’¤\$IYH’²$£cPUIRVÀèX0:ŒVÀh´³‡aT‡a‡a†a:‡a†é†aÚ9 Ã0´s†ahç0 ÃﺻUíîsÃ0 mww÷yÝÝ}^wwÓëînzÝÝ Á ©ªäywwG†G†G†G†G²,$U51<’I’r‘$å"IÊE’”‹$ @©ªB IÊ* FÇ€Ñ*­€s^w·ªêt: Ã0sÎ9§sÎ9çtÎ9çœÎ9çœÓ9çœ3Þuw«ªžsp†¶»»û¼îî>¯»»éuw7½îî† “¨ªRÞy$ C&!“ÀI`È$e!ÙUUáQB$IÊE²[.’Ýr‘ì–‹dwt,¥ª $–Uvt,5:€­P£U*ÞÝÝ©ªžóîîγ»û¼¾»;¯ïîÎë»»óúî’wwªªtÞÝÝymwŸwwwçÝݽ»»£wwwLUUÊ#Éx¤$ “†IÃ$a’”…PU!“@$1å"X”‹`Q.‚E¹£cUªªH€² XGǪFǪF«€ªÑ* jM’DU5Þ%I¼$ILL“$‰I’Ä$IÖ vWU5†I™$Y¸»&ØÝ5Áî® v·¬ÅB0 MÊ]¬[îbwË]ìn¹‹Ý U¥ª («°µ£c¡ÊѱPõ9Z…ªÏÑ*T£»»»ªªëIÖ`wwÅîî®ÙuwÍîî®ÙÝÝѪ­]UÕuƒÝ][»£[[»£[[n¹µU[nmÕŽŽãV•ªêº‹Ý-«¶ªFÇڪǭr´Æ­ú­q«ÆOkÇ*UÕ²jww´¶ÆªÑ­q¬Ýq«Ê­*«ÜªªútüÇqTUÇ­ÝÑq¬q?ÇqÇOÇqÇñÓÇqt´ÆqÇÇÏÏÏÏQUutDZêÓñsüü?ÇÏÏÏñÓñóóósü´>???ÇÑÇqÔǪ]UÕ…ŒŽU»øp¬ÚŧcÕ.>«v1:Ví²\»[UµÛîî&ew7×íîf¹ÝÝ,·»›åvw§\š¨ª’vww(I2ë2IÊe’”Ë$)—IPVbTUC’X“$(7IPV’ ¬$AYI²Ÿ~ªX7I¶¬ÝÝý´vw÷ÓÏÝÝýôsww?ýÜÝý„cÕ®ª*V@Á±j·`Uí¬ªÝ‚Uµ[°ªvI;Ý­jwwÛÝÝwvw7iww“vw7iww“vwwÖ$¤ª’¤ÝÝJ’̚̚̚̚DYÉFUMbHk’å& ÊJ”•$(+IöÓÏÝUU±n’lY»»ûiíîî§ãîî~:îîî§ãîîçZU»ªªÂÝÝ×Yµ[ëDíÖ:Q»µNÔn­µËx!©ªzgÛÝwÞÝé‘$é‘$é‘$é‘dÖ0‰ª*i·Ý¡$ɬa’¬a’¬a’¬a”•쪪&†”X“(7ÙEYÉ.ÊJvQV²»Ÿ~ÖŠu“¸eíîî§U»ã~:Öî¸ŸŽµ;î§cíŽU²jWUuWîîZΪ]ÒI’¤“$I'I’N’Üu»ªª€“VçœsÎéœsÎ9sÎ9§sÎ9çtÎ9çÑî¾SUí¶»»ÎîîîžÝÝÝ=»»»{vww÷ìî&%Iªª’6I’J’¤M’¤M’¤M’¤M’€30VŒØ3cÇ”˜³d‹5c2Ūª‹bŒ1`±cÀbÀbÀbÀb€¤  ªŠA€€Å8)$€¤²Hªª’¤™•@2kdÖɬ’œ+[UÕ¤ YKRΖ=çËžóeÏù²ïÄm«ªJŠI’‘$Å"bŒ1Æ"bŒ1Æ"bŒ1Æ"bŒ1+ÆIªªfŠ€3c1Æ+"Æc,"Æc,"Æc,"ÆgŠ1¨ªâcŒ‹ˆ1Æ‹ˆ1ÆcDŒ1Æ#bŒ1ÆcŒ“UUœ"`Œ1`0ÆcÅcŒEÀcŒEÀcŒEÀ㬙 ªŠS cÀÆÀ&`° 5“™ªª™bÈÌL!33i¦™I3™™4“™I3™ÉÚ$©ªšiBf’f’deR²6y²6y²6yvîlUU“H¶–,;{ÖΟ]çÏ®óg× }«ªÊ $IŠI@ ˆÄbV`IUURÈ$Äb€T °Kªª&…ÌL1€ S 0+°¤ªjRÈÌÌ23Ä™š™™)ÎÌÌgfòfKªª&ÍÌÌL!3“H’5-Éš,Éš,ÙË–TUMÊÌLÒ$ÉV¶d/+ÙÊ–leKö¾mUU³6™ÙšlÛÛ¶ímk{Û¾½m߆{[UUÖ&ÉÖ²mgß¶áßÚù·ëüÛ}²ÿUUyÙ“­Ð¶¤@’¤@’R IR ÉOö¯ª*+[²Ø–H’Hò $I $ùÉþUUeeK¶Û’I’IþI’’üdÿªª²²%[mI$I$åß_àßOö¯ª*+[²5Ù–H²•lÛJÿ¶’m?û¿ªª­mÉÞlÛV¶íoÿ÷·õýmÿ>üÿªª¶¶%Ù¿¿ýßÏÿïïûûÿ]¸íUUmmÛþ¾7ÿ½ ¿½›ßîæ·oa·]Uõ·ÿ»ÙmoeÛ¶²m[Ù¶V¶íÂn»ªêoÿ÷³ÛßʶmeÛ¶²m§lÛ…ÝvUÕßþïg·¿•mÛʶmeÛn²mvÛUUû¿ŸÝþV¶m+Û¶•m»é·/ì¶«ªþö?»ý­lÛV¶íf¿}³n_ØmWUýíÿ~vû[Ù¶›ýöÍnûfï¾ðÛ®ªúûÿÝüöÿöÿ7¿í›ßöÍo~HcÛUUÿ¿ cÛ~ÛnÛnÛ~›rFIUUÌ,kK–3J–3J–3J–3J‚sÌTUj™ 0ÇL€9fÌ1`Ž™·b¬ªŠ1Ť‰1¸ÅÜbŒn1Æ·ãÌû4UURcœ™fffÞgfæ}ffÞgfæ}f²óLUU3ÓÌLö’™ì<3Ùyf²óÌdç™ùÞ•TUÉ̶¶d{W²½+ÙÞ•lïJæÁ23UU $33Á23,33Á23,3R”«*Æ(ŠŠQQŒ1@ŠbŒRc ¢c€Åg^&SUM€Åg¦™™™•™™y™™™—™™y™™ì󪪙if&{É$;Ï$;Ç$;Ç$;Çäy×VUÕÉ̲¶íy³íy³íy³íy³m–™ªª)@‚(3[ef ¢ÌlA”™-ˆ2 ÅÌTUÅ‹Š1g&g&g&gfæe’ªª)ŠÅ™ifffe’™—If^&™y™$;O^U5“2Sö’,;Ož'ÏΓgçÉ·÷mUUI°Ì´µmß›mß›mß›mß›mIš$UU3ÁÌLJQ’™)š™™)š™™)š™™)š™™) ™ªª ™Š¢(Š¢¨(Š¢(ŠŠ¢(Š¢¨(Š¢(ŠŠ¢(Š¢  (ªªŠ¢  (Š¢XEQÅ€¢(Š¢PEQŠ¢(Šb@QÀ¨ª`1`Œ0ÆbŒ1ÆXŒ1Æ‹1Æc1Æ8“Bfªª€2± @&˜™‰ffb™™X`&y™¤ª*@Š33™fšde’äe’äe’äe’ì[UÕLÊ$ÙKVvž=;ÇžcÏαoïߪª’´$Ûú·öæÛ÷æÛ÷æÛ÷æ[òfIUÕÌ43“¤(I𢙙™¢™™™¢™™™¢™™Y2UU3S€ÌÌEDDD ³2UUR€L, X0 € (dVB¦ª*@ ‰À X,€¬$©ª @!2± $–’$–$I,I’X’$'IªªfRÈL’&I²’’¼äI^ò$/y¶smUUÉÚ$Û˶í|k;×®k×εëçߪª’µ%ûû·ýÌ·þæÛÿæÛÿæÛöò­ªj²²™mͶ$M’•&I’&I’&Iö²¥ªj’’™$M’$M’¬&I’&I’&Iö²¥ªj’’™$M’$M’lM’$™$I2I²·-UU“”Ì$)I’”$ÙjK¶²%[Ù’½m©ªš¤d&II’­mÉÞZ²·-ÙÛ–üìKUU’’$[Ù’¿}Éß^ò·?ùÛŸ}¸·ªªd-É~òm?ÿ¶÷ÚϽëçÞuá·ªª¶µmûû½ÝäÖþò¯¿üû_þíÃÿUUek[ö—ûË¿ýåßzù·¿üÛÏÿUUek[¶—oûË¿ýåß^ù·¿üÛÏÿUUek[¶—oûË¿ýåßþòoÿòo?ÿWU•­mÙ^¾í/ÿö—ûëßþòï?ÿWU•­mÙß¾ýoÿþ÷ÿ{ßÿþï*[ÛòŸýûßÿýïÿþ÷·ÿýß/Ü~UUþþå?ûÿ›ßÿ…ÛÿÍí~sû6¤Û¦ªÚÏýÝÂmÛÂoÛæ·móÛÜü¶-Ü6UÕ~îï7·}›ß¶ÍoÛæ·Íùm[¸íªªýýßonÿ6¿}›ß¾ÍoßôÛ·pÛUUûû¿ßÜþm~û6¿}›ß¾ÍoßÂmWUíïÿ~sû·ùíÛüöm~û6ݾ…Û®ªÚßÿýæöoóÛ·ùíÛÜömÞ} »ªêÿ÷›Û¿Íoßæ¶osÛ·¹ù iÄ®ªúßÿÝž…‹} #ö-ŒØ·0b:¿mCºmSUýÜþnnÛ6¿m›ß¶ÍnÛ´ÿ¿°û¯ªúÛÿÝìþovÿûÿ­oÛ‡ýßÖ·­ªjkIò³ÿûÙÿýíÿþö;%ÉÞ’¤ª*P¢(Švž$;O’½'ÉÞ“$çÍLÎ73UU!MEQÎ739ßÌä}3“÷ÍLÎ×L†ofªªBš(Š¢œof2|3“óÍLÎ73;ʆ;IUÕ¤ÌÌìüI6üIvþ$;’ÿß#ÿWUí=I~îÿ4þÿáþÿáÿn¢(ÜŠ¢¨ª*ŠŠ¢(ŠBš(Š¢p‹¢( ·(Š¢p‹¢(š·™™9›fªªBŠQE3ÍÌ̼ÍÌÌÛÌ̼ÍÌì=yvž”ªªI™™ÙK’ìÃm߯vUUò¾åÆö ilßÂØ¾…ÛþëÚþáÚªª&k[þsmÿpmÿpmÿ¹¶Ù¹–Ù¹–ªªÌ433;×2;×2;×2;×’œ’%çȪª&)€œ#KΑ%çÈ’sdû0,û0^ªª&) Ÿ{Ù‡ñ²ãeÆË>ŒÙi¬UUMÖ@nm4Ööa¬íÃXû…±ú!E®WUmkÛ~a¬ÿÆúi¬ÿÆú=ü>Æ>UU’þå?·ïcßƾ?Ü>nþ% ÷RU•¤$Iν$ý$ý$ç^&ç '€ª*¬€ä$ç 9í\ß6\­ªj²´µmÛpmÛ¹¶í\Û/Ü¿iüªª¶÷m¿ðÿ¿pÿ¿pÿ¿pÿ·ùý[¸ýªª$ýËm~ÿ6¿›ß¿Íïïé^vô/«ª’”$[ú—-ýË–þeKÿ2Yá™É ÏTÕL0 I!3“23Y!3“2³½ïÛÎ÷UU›¬mmÛv¾m{ß¶½oûͽûÂx§ªÚÖ¶ý¿ÿ½ÿ½ÿæÞïóÛöpÛTU-ýË}~Û>»mŸÝ¶Ïnû+ßþõoUU+mË¿ÂÛ¿ÂÛ¿ÂÛ¿Â[²f[²æ[UÕÌÌ$i’$k¶%k¶%k¶íïû÷óýUU“ÒìkÛöóýûûþý}ÿoî߯?UÕö¾õ ÿï ÷ï›û÷ÍýÛæ·má¶©ªþuoÝü¶mvÛ6»m›Ýö_þÿo÷«ª¶µmï…ÿm…¶m…¶m…¶$’m…¶ªª$’­€ ¬ÉÌdMfªªf¦ÌÌdf&I`f’f&I`&YI’¬$©ªJÒ$IRI’•$ÉJ’d%ɶ²m{ÙVU•¤I²­´m+Û¶•mÛʶÿýÿþ¿ª*y³m_[ûÏÿÿïÿÿ÷ÿ¿¹o_ßTUûûþ_øÏ/Ü·oîÛ7÷m›ß¶…‹MUõ¿Û¿ÍÅæf·m³Û¶Ùmÿåÿv¿ªj[Ûö¿ðÿVhÛVhÛVhÛV¶mgߪª¶5Û¶Ú¶ mÛ mÛ mÛʶíí[UU²&ɶBÛ¶BÛ¶…¶m mÛÚ¶íí[UU²&ɶ²m[}ÛV¶m+Ûö·oûù·ªªä%ɶ¶m_kÛÖ¶mkÛþ÷ÿÿùÿªªíeÛÿöÿ?ÿßÿÿïÿoá¶-ÂØ¦ªúÏý_„ß¶·¹ÍmÛæ¶-ÂǶ@ºØTUÿ¹ý‹p±-ÂÆf„m›Ý¶ÍnÛÂǦªÚίÝf·ý·ÿçíÿÿöÿ?»ÿ›ß®ªÚÞ¿ýoÿÿ·ÿíÿÿöÿ?»ÿ›ß¯ªÚÞ¿ýoÿÿ·ÿÿÛÿÿÛÿÿìþo~¿ªj{ÿö¿ýÿßþÿ¯ÿÿÛÿßüþo~¿ªjÿö¿ýÿßÿÿïýÿûÿÛÜöE¸ØUUÿûÿÛüömnû67¿Ím_„‹m4bSUýçþ/>¶E¸ØábnsÛ"ÂEDÒ@"CUu #¶ˆ0HDFDøˆ0ÂGÄ"\ÄH#bªªßÜöm>¶Eøm[øms~Û"\l‹0"¦ªúÍíßæ·móÛ¶ùm›~Û"\l‹0"¦ªúÍíßæ·móÛ¶ùmÛü¶E¸ØaDLUõ›Û¿ÍoÛæ·móÛ¶é¶E¸ØaDLUõ›Û¿ÍoÛæ·msÛ¶y·E¸ØH‘SUýæöoá·m3"¶ÍŶÍÍi #‰‰ŒPU]„{ÒED ‘2""Œˆˆ#B#\Di #‰4ÈPU]„DHdD $2"ˆˆ>"HŒX„ŒPUÝÂØ¶@ȈE¸ˆX„ˆMÛ6Û6›ªj7·}Fl‹p±mó±mó±oó±oóÛUUûûÿ‹0b_„‹}›ß¾Mcßæbßæ·«ªö÷ÿaľû6¿} ÃmFĶpÛTUÿ¹ÿ‹0"¶±mnÛF¸Ò@FD ˆPU]„{R$2""ŒˆØÂØF„H$Ò@"‰DŠD"CUuFlH$R$H$Ò@"‰DHdlóÛføˆX„‹UÕnû"\D,ÂEÄ"|Dü÷ÿ7ýÿm~›ªj?¿}›ß¶ÍoûïÿwÛ·wóÛûûÿªªomÛn~{7¿½¿ÿÿÏýû§ÿþùªªý=Éîß?÷ïŸÿ·Ím߿ܷpÛUUû{’[¸íÛÜömnû6·m››[„‹MUµŸ#¹Û6·m›Û¶[D¸˜H#6UÕmn[Ò@náb‹[²¿?ÙÏKªª’”$ûy’ý=Éþžäÿÿ»ßÿ…ŸWUí'I~óÿ¿ùÿÿýÿmnÛ"Ü""ÂX¨ªº…±-"\D,Â-b›ÛÖV¶m+Ûö—oUµ%iIö—mÛʶmeÛÿþÿwÿÿ›ÿ¯ª¶Ÿ$ùÍÿÿïÿÿ÷ÿ·¹m‹p[D„±…ªê6·-"Ü‹p[lsÛÚÚ¶ýmÛþ¶­ªj[iÛß¾mkÛ¶µmÿûÿßýÿoþ¿ªj?YûÍÿÿïÿÿ÷ÿ·¹m‹p‹ˆcªª[›á±·ˆmnÛÿÿ¿ÿÿÏÿWUýoÿÿ÷þÿýÿÿþÿÿÿ›ÿÿ…û¯ªú‡ÝÿÍÏÿ÷ÿÿûÿÛܶE¸ED„ªª‹0ná"Ü"¶¹mßÜþE¸ØaĦªº…ß¶Û77ÿÍíá""i #TU#FDD ]DD„‹p.bH$Ò@"‰DHd ‘H‘Hd¨ªF EF‰4È@"‘aD@X2FìY °`Â5ŒÙ‚;2GO­ªªªîîîî*UUUUUU©BUUUU•JUUUUU:UUUUUéTUUUU¥SUUUUõBK)å® ‚ HU ‚ C1¤”RBBJ)%'¤”RrBJ)%'¤”RêÅÔcŒ]AA˜CJ)¥rŒ1Æ€Äc NŒ1ÆàaŒ1cŒ1ôòNßíŽ1Æw7çœ7ïîŽwwÇÉ»»ãñîîx¼»;½! ±;ÇcàpwwA A AAz’z÷nÎ;’€4!I×!IÓ!I3!I#!I­ªªªªê®VUUU•ªªªªªªTYYYYYYY©²²²²²²²Reeeeeee¥ÊÊÊÊÊÊÊJ•••••••õÊ!‚°+hAAA©‚ ‚THAa(¤ ‚0RA )‚ èsŒ1vA1æRJ)‡cŒ1¦œcŒ1¦œcŒ1NÎ1Æ'çc ½¼ÃÝîRßÝÍ9眸yóî8qwwœ¸»;NÜÝ'îîNo»sŒ¡ÃÝÝ%%%%èuHf÷nΩIÒ„$]‡$M‡$Í„$„$õªªªªê®ªP( UÕ …B¡P UUUUU(TUUUU¡PUUUU…BUUUU UUUU¯œcŒ±+ …B!U©A¤BJ)¥” )¥”R*¤”RJ©RJ)¥BJ)¥Ô;çcì RJ)çRK)‡cŒ1¦œcŒ1¦œcŒ1NÎ1Æ'çc ½¼°;†”RÞÝœzNܼ»;NÜàÄNÜàĽ!ÐîÎ1æœ8Ü>‚€ Ú Ú Ú Z½ÉìÞÍ9'IÐiB²®C2¦C2fB2FB2zçœsÎ]AP(Š)Œ9çœS˜zŒ1¦bŽ9眊9æœs*æ˜sΩ˜cÎ9õÞÍ9ç® ¥”òæ˜sÎ9åzŒ1åœsÎ9åœsÎyrÎ9ç<9çœsêåÀîRJywóî7ïô'8qÀ‰Nè ArwŽ9çp€  Ë Ë Ë K½™ìÞÍ9'IdšÕ®C&¦C&fB&FB&zØRJ)1çä  H Ð[°íîRJ à€w€N€ºíض`ÛN€mõ¦l»;çœs<$HZV7hÙ6hÙ6hÙV¯Ã$»Àœs’$H¦ ›ºm:LÞL˜¼‘0±Þ¶mw9ç, ’,À¶ídÛ¶“­n;Ù¶ídÛVoÒ$»ÀœsÛeÓMÓM£4M4Mª×n’]`Î9Û–mÓ¤I\§IL»‰6ã&oÄM¬7¶“]‚¤m4NŒÆNŒÚN‚&Ñ š$Ñë·í]\»I\;¶¿¶m?mÛ~ƶµÛ¶^ÿÿ{·- ×¶“¯ßÿþÚÿï§ÿÿýÌÿ¿Ø¶^ -¥”»R¡P(R!A„¡RJ)!!¥”’RJ)9!¥”’RJ)Woõcw¥”RÎ!ÇcÜc c c c cŒÕÛÓÀîJ)¥¼»9眸yww,zö0ì`ذzhìîsN¸»c HZHHHX½ßVïîÍ9'Ë@’´­ßi[¿¿mýù¶õçÛvµ‚ » -‚ (AA*¤ ‚ RA )‚ …A†B ‚ «wbŒ±»R1æcŒ1æcŒ1îæcŒ»9ÆãnŽ1Ƹ›cŒ1V/€»Ý•RßÝÍ9眸yww,€»cÜ àîXw·z»;ÇЀ»;–€¤€¤€¤€¤€Õûm½»7çÔ, IÒ¶~§mývÛúã¶õÇm»z“´sîpšÊm[WY&mª,™6U–L›*K¦M•%Ó®^¥J•*U:§²*Œ9§VVUUUUUYUUUUUeUUUUU•UUUUUUVUUUUUYUUU]½ªªªê* UUUe…VUUU• UUUUY¡PUUU• UUUUY¡PUUU• UUUuõÎ1ÆØU‚ R!µ ‚TH)¥”R!¥”RJ…”RJ)RJ)¥TH)¥”«wâîvW ‚ Ì)‡cÌ9æœsÞÍyww7çÝÝÝœwwwsÞÝ­^€Ý•cŒqwsê9qóîîXà°À`À`õhwwŽ1Üéc €LZ M M M ]½ŸÖ»{sÞ±,$mëwÒÚo§µ?NkœÖ«÷’vw€kåµ­Ž “öNwww‚¼»»äÝÝ ïîV¯<¶»+cNRG²ZRJ)¥ ¥”RJAJ)¥”‚”RJ))¥”«wŒ1çî ‚ cÈ1Æó´cŒ1†cŒ1†cŒ1†cŒ1†cŒÕ{ww»+‚ Üyww7õÝÝÝwwwsÜÝÝÍqww7ÇÝÝê=Ø])‚p7æÝnž¾;Ü<ÀÍÜ<ÀÍ€ÕKØÝ1Ƈ›˜8}ÇÀÀÀ°zƒ¶»{cŒ€%@ͤEÛ¤AÛ¤AÛ¤AÛÕûi²»7ïŽe6IÚj¿“Æ~;ýqûã4^½—$»;\+¯m[9ÚVŸwwwrÜÝÝÉqww'ÇÝÝê½c»»sŒ9I9Žäww§å¸»»“ãîîNŽ»»;9îîVï€ÝcŒq”ãî'ÇÝÝwww7îîînÜÝÝݸ»[½8»;Çã8æÝnŽ»»»©ïîîæ¸»»›ãîînŽ»»ÕKØÝc p `õ’mw÷ƃÄ$y ɤn[m[m[mWoØvwoŒ1H$[’m“–ÕMÖMÖMÖ]½ï$»{ww,‹¶IÒ¦~ljöÛNÞ;yìäW/âdwàšCÛ¶óÚ˜ó˜À<X½hÚݽ»»v‚lyÌêyÌ`¬^4íîÞÝ{ I`ó€Ô¬^4íîÞÝ{ Ir‚$; O“$yG’äI®^&íîÞÝ] ’$y ÉhÛÔi°i°iWo“vwïî®mI²Û6a“6F£ÛMÚMÚÕë$ÙÝ»»k¶MÊ&±›$±›D'n'ngõ¾“ìîÝÝ5 Û&I“ø'±h;ÑþØÉûc'¿zÛ»K£q’’¤hÛöжº‡¶mm»z;»K— I›š¤hÛöжև¶mm»z;»K— I›š¤hÛöж¶FÛ¶EÛ®ÞÆÎî’À%hÒ&‡&imÛmkC׎ ÔÎêmìì. \Â&mrl’hÛ„m’„Õv¶IVolgwIà’&ic0I6IìÆvì&Ú±›ØY½¶Ý%K’¤µÓرÛñ×¶c×¶Ž]ÛÎêý{wIàl;Il;¶ÿm¿ý¢ýoÿÇÿÖÿñ¿õæÿ½»mK›±æÿ I’ I’ I¢ƒ&ÉêÍÿ{wÛ–6c;~æßNÐ$IÐ$IÐ$y&ÉêÍÿ{wÛ–6c;~æßNÐ$IÐ$IÐ$ù×M’Õ›ÿ÷î¶-mÆvüÌ¿ I’ I’°IòOí¯Þü¿w·mi3¶ãgþíM’„M’Æÿþgô¿Woþ߻۶´Ûñ7ÿvÂ&Éãÿ7ÿïÿÆú½zýÿÞݶ¥mÛοýoÛmÿÇÿïÿúÿý_ÿk¯^ñÿ½»mKÛ¶-þ¿_´ÿß/úÿß/æÿß/æÿ_kQ¯˜vÎ]Ü]I¶d'mÄ·˜6ÿÓæßbÚø-¦åêê1ÆØAæcŒ1îÆ1ŠŽ1ƒŽ1ƒŽ1ƒŽ1Wo40vwŒ1înλx¼;Ö Æ Æ Æ €¬^SsîîcÄÝKdâšdâ˜dâ˜d☤W¯[}»{óŽmI2qÚÖÿq[ÿ¿ÛúÿÝÖÿï¶½ŸVÏÝ»;–lÉ$NÚÄù´‰óiçÓ&ΧÅê‰1ÆØôc9ÆcÎ1ÆãnŽ1Ƹ›cŒ1îæcŒ»9ƃ«½»+õÝÝœ7çpww,»c ÜKàîXw—Õ[–swÇЈ»;– É$-ÉÄ)ÉÄ)ÉÄ)I¯Þo}»{sj¶%ÉÄi[ÿÇmýïoë[ÿûÛþêý$w»wwšlÛº‘IâZ2‰kÉ$®%“¸–L’Õ›’cŒ½»I eh¡€ä) TéêUªT©”R ‚”RJ-‚ ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªzX½w'ÇJA„9•‡cÌ©<çœóNyÞÝÝ)Ï»»;åyww§<ïîÐÕ[rŒÝ1Ƹ»9õpwÐÑDG=Iôp$™ÕKgÞîŽ1â ÉdˤeÂ8eÂ8eÂ8e’_½®ïvwÞ±mI8M“ÿØuþm×ù·]çßv¬ÞOæÜ]àZ6muÒ8ql~âøù‰ãç'ŽŸŸ´«×휻;ç$y$Y]ζ-;Ó¶ìtÛ²ÓmËN·äê-)ÇîÎ9Ü@jÌ#ÉbIóH²˜G’Å<X½ȱ»c ‡è»»»ÃÝÝÝáîîîpwww¸»#W/9vwŒîNÀÝîpw€»võ’cwÇæ Ð${@Iö€’ì%ÙJ6«·í¼Ýcä‘l V·IÛ¶qÚ¶qÚ¶qÚ6¿zÜíîݱMÙ&NÿØqþýŽóïwœ¿ãüêýdbwk›¤MR;ѱùÉÇÏO>~~òñó“fõ~;owçœ$Á’mym«ÛK[·ç¶nÏmÝžÛvõ¦·»s’@I’<­î¡mÛCÛ¶‡¶m-»zCÎÛÝ9H€ HúÀ€€Y½!çíîœ$@€4€fõ¦·»s²I ɬn[°m[°m[°m›Õëönwo²ɶdÛ&mu§u§u§uó«×ÉÝîÞ]›¤mb7IþcGçßï|þýÎçßï|~õŠÎaw4IÒÆ®ß‰ß|GÛOÑyûùÎÛÏw’ÕûÎÝîצM›¤LÒ8´íÐníÐníÐn³zÞí.plÛ–m˶M¤6 6 6«×éÝîǶmÙ¶lÛ¶lÛD3i“2i“2i½zÞí.plÛ–mÙ¶mÙ¶M¨“6a“6a“Æ«×éÝîǶmÙ–m›¤I»Ñiâ&iâ&i¼zÜí.pMÒ´IØ$±'±ëÄNìÄNìD\½ïÜí.pM’´ñ»vò¿QôÛ:ÿ~ûóï·ß¿zÅ7¹»b;vlÇoûßý·ý_ñ­ýß¿ÿûoÿêmrw 4I’ÆNߎíÚŽíÚ¶¶k;¶kÛ¿zß&w—@“$iâÔNìÔvl×¶­]Û±]ÛþÕû¹»š$I·Nb·vb·vlëÚ±Úñ¯ÞwÈÝ%Ð$Iš¸u»µ»µ»ÚNìÆŽõ¾Cî.$IÒØÛÛ±Û±vlÇv,®^Ñ!w—@’$©ýÛ±¿m;¶mëØ¶í¼¸zÅ7¹»bÛNìwlÿ¿ýïEÿÛÿïëÿ÷¿ÿÅÕ«äŸÝݶöûmÿ‹ÿâÿ¿øÿÿEÑâÿ¿(Zü×/Šÿ_\½â?»»mí÷Ûöÿÿ¿ÿßþÿÿÿÿÿ¿ÿÿõ¿ÿÿÅÕ+þ³»ÛÖ¶mÇÿÿÿþûÿÿßþÿÿÿÿ¿¶ÿÿÅÕ+þ³»ÛÖ¶mÇÿÿÿþûÿÿßþÿÿ·ÿÿÿµÿÿÅÕ+þ³»ÛÖ¶mÇÿÿÿþûÿÿßþÿÿ·ÿÿÿ­ÿÿÅÕ+þ³»ÛÖ¶mÇÿÿÿþûÿÿßþÿÿ÷ÿÿÿÛúÿÅÕ+þ³»ÛÖöûÿÿÿ÷ÿÛÿÿÿþÿÿÿÿÿ¿ÿõ¿’Õ«äŸÝݶ¶ßï¼(Š/þ¿(úÅÿÅÅÿÅÅÿÅÅ×»Õm»ºiÛÝAÐëœsæë¶Í×m×m×m»»Ö$W¯CrwÇc€Ç9çÌ×!™¯C2®C2®CrwM®^‡äîÎ9çÁ»»|’ëÌ×!™¯Crwíê®ÞwÛÝÅÝ]Û’d>v[‹¶Ûúk·õ×n»»o[¯^Ѷw·Çmûï·íWbѶ_ô۶żmï²RJ¹šZJ)w…B¡PHAJ)¥<ᤔRrPJ)e'¥”RvRJ)åîÆw·z£ïnwÇcÜsÎ9ÁãÝÍÜÝÕÌÝ]ÍÜÝínHrõ†šÜÝ9æœ îî®%I2fH²nH²nHrwݺ«×­îîâî®mI2NÛÖ·­¿nÛ¸nÛÝý·õþÛzw qܶÿ~Û~Ñÿ¶_´ß¶?~Û»;Çcõ¸1ÆØôc aH)¥ÂcŒ1„1Æc cŒ1ÆÆcŒÝïnõïnw‡¾»»qsÎ ÞÝÝwwwàÝÝxww·»-ÉÕÛ’ÜÝ95 âîîZ’$–$[–$[–$w7­»zݺ»‹;ݶ%É8m[Ò¶vÓ¶qÓ¶»û¶õ¾íßÝÐqܶÿ~Û~ÑoÛÿ¶mûcÛÞÝ»»[½ww·;ÆÝÝÝÐwwwwwwwwwwwwwwwwww» ’\½(ÉÝwwÀ<}wä$ÉI’’$$¹»%ÉÕ[’ÜÝy@àô]K’dÂ’dË’dË’äW¯[{wqÚ–ÔŒÓ6ñ'­m7­7­½»ÿö¯Þûw·@Çmõ¿ß¶_ô¿ýÿöÛïßþÝeÛ®^6íîîŽÞÝÜúîîÆÍ9'xwwÞÝÝwwwàÝÝ]w·&³zkòvwjÄ@[’d’’d›’d›’¤w×q~õ:v÷N§MI2N“ÄÿqÛq’Øq’ßÝ·_\½¢ýÜÝ’:¶“ä_|Û~Qü·ý/úmûßoûw×ÿÿ«÷ÿ¿ÝMIÔ¶ß?ýÿïŸùÿ÷Ïüÿûgþß»['^½vBbI2ºB’ÚàÄŽ'v8±#À ww‚«WÊ1È €ÔrÎ9çœrÎ9çœrÎ9çœrÎ9çœrÎ9±»¸»[½wws11ç¼yzÎ9oîînîînîînîî€30hJ¶ÀŒC–cŽ=k$"¢PSQ%•ªªªªR©UUETªˆˆˆJQ©"""*UDD!‰¶MM¼­’TªªŠˆªªEQDl Ú± m Ú>Éûš÷¯’T"¢ˆQ£o±í—ïÿ¿ïß¿ï?’ýšûC’‚"þ[×ú_[ýUïïõþ"ù*jV I‹Èoì¿.ÅW•¢«JÑU¥èê$åÿ©é~$‰ˆh[Ѷ¯¯¨þ·­¨Ú¶­¨Ú¶­¨Ú’("¦&ÚF’ªŠ("JUDl­¨ªªªªª¢ªªªªªŠªªªªª*ªªª"ID¤& ¢JRUU•‚ˆ(Ö(ˆ("(ˆ("(ˆ("(ˆBRDÄÔ‹¨$UUUEDEÔ""6ŠEDŒ"""F“Û§¦ØVIª¨ª"¢¢ˆØѶmÛ¶ElÛ±}’ÿ5ÿIªˆ(rAÛ¾ÅÖ~ùÿÿûÿÿûÿ#ÙkÔÜKHEüÿþkýé¶zUïõz¯H¾Šš­„¤-ò믔­t)]UJW•ÒÕIÊÿSÓýHRŒh[iÛÿ•øÿÚJ´m[‰¶m+ѶIŠmSÓ·‘¤¢m%Ú¶­DÛ¶V¢mÛJ´m[‰¶MRl›š¾$EE¬¢ˆØV¢mÛmÛ6Ú¶m´m’¶mjú¶A[±bÛ¶èÛ¶ElÛ±}’¾}jþ¶A´b۶ض[ÛömÛömÛ'ùÿQóÿ…¤ˆˆ}‹íÿöÿ—ýÿþÿÿþÿHV𫄤EäUÿÛzÕV¥«WU¯ŠäWQ³•IÚöKêoÃVmè•ÞЫ ]EòUÔüÊ$mËŸ¼¿BWÿÑÿÓGÿÿþ’ï?5_7IÛâ_~û?úÿôÿ_£ÿÿGÿ?É÷Ÿšï7IÛâ_~û?úÿôÿÿÚÿÿÛÿOòý§æûMÒ¶ø—ßþþÿ_üÿ¿èÿÿÅÿOòý§æûMÒ¶ü÷oÿÿÿïÿÿïëÿ¿ÿ?’U£f+“´-¯þ¿ò«êUÕKW¹*’­FÍ­Nò·¼êƒ¾j«UÛ[ºzÕH¶mÔÀN²ßmßj› ¶ äÛ&ߦ7ù¶H¶5·u’ý®^½’¯ÚäUM^¥“W‘l5·u’ÿ]½þJ^Uòª’W¥åU$[EÍmäW¯¿’W•¼ªäU¥_E²UÔÜÖIþwõú+yUɫꯪë*’­FÍmäWÕ_ɫꯪWU¿®H¶5aë$ÿ»ªþš_UßVõVÕK7’ƒ ¨ °äoÛVÔ¶4ضµmÛÚ¦õH®jB ’Ä÷úݶ­lP 6¨ *=r½&t¥’$ªêÿw­­lÐkÛzm­;rú÷¨·_©$©¨¨(¶Å‚®ê÷Öö»µýn­ÿ‘œî£&”ª’TUUìû"okõÁõ¶­ÞÚê#¹é5a¡DUõß~Û¶°Áú`ƒõÁ«H®ô¨ %BRmÿ÷_oõ¯­þµÕ¿Z¹ÈlëiÎVU%‰ª*"(±s·íÕl{•mWÙx²1ê4¢RI*(**ª¨*UUUQŒFD|ñ9DÄçÑ'YvÔœ¶ª’TUUÄ‚"â?g»ÕlWÍö«ì"¹×¨¹k’¨¢ÿßv­÷·­ýmk­öÉú¢æºF’"òÛ¿]ýëU_¯úzÕë>ÉÛΚÙÖJUUDP,bÛ¿mû϶ýß¶ýßF!yD<µQ©$5¢ŠªUUEDDD[Q,ˆˆ(DDŸ¤oGMgU%©j‹XPDüß¶]¿mÿ¿mÿ¿íG²ú¨¹B!‰¨ýß¶ßzõ­ª·W½^ÕIVš+’"¢íÿï_õòª—«^®~’¿jv#"‰ˆÖ‚¶å·Õß¿¯vÿ¾úû÷Õß6I‹ØÔ´ˆªªJªªŠ¨UDTÛ¨`Û¨`Û¨`U%©TUj*((¨ªªT*UUUU­T*•J¥R©T*•J¥R©T*•J¥R©T*•J¥R©T*•ˆ$…šˆ¨TRUªJ¥ª**µR©DTTUDDDEQQED!i[NÍÛªJ*UUEDUÕˆ"‚("b Ú± m ÚöIúwÔôHREÛ(ÚþÅþ]¾ÿ¾ÿ¾ÿ"ÙkÔÜC!‰"þ[×z¯­zÕëU¯W$«¢æJ„¤E~¿ÿºþU•WU®ª\ý$ûjö#’DÛèÛ×·úÿÿÕþÿWÿÿ¿úß&iÛ¦æmIŠªŠª"bkQmÛÕ¶mQmÛÕ¶I‹ˆPÓ"*’DU±FA‹ˆˆ EDDÐ"b’SÓ"*’DUAÔÅ""F£ˆˆMÒ¶OMÛˆ$QDTÛ"Ú¶-bÛ¶ˆmÛ"¶’ÿ5ÿ#’DDûFÛÿÅ×ùÿÿûÿÿûÿ‹dÕ¨¹!)"þ»ÿZ/ÝVUõªêUErÕ¨¹%&i‘ÿÕ_½-]y«ÊU•«Ÿdÿ£f¿I‹ØßþoüýcÿÿãÿÿÇÿ6Éß>5»QHŠ mÁÛ¶¶mmümÛxÛ¶ñ¶Mò¶OÍÛ($EPÄ‚±-hÛ¾FÛ¶¶mmû$oûÔ¼BRÅF±ˆmÛ¶Eß¶-¶m[lÛ'yÛQ3…¤ÚG±m[lÛ·­mÛ¶mÛ¶íŸäÿGÍ~4I Ú·Øþoÿù×ÿïÿÿïÿo$«FÍ•˜¤E^õ¿­WmUºzUõªFr«Q–œä/¯êo{°Úò–ÞòV•«"¹*jn‰IÚò÷÷WwõÊUº\½rõHÖ5ëb’¶øÿÿ·ÿÿ¿ÿÿúþÿÿþÿHö?jÖÅ$mñÿßþoÿÿoÿÿ¯ýÿ¿ýÿ‘ìÔ¬‹IÚâÿ¿ýßþÿßþÿßúÿûÿ#Ùÿ¨Y·IÚâÿ¿ýßþÿßÿÿß×ÿÿ#¹jÔ\Ù$myõþʯªWU/]õªFr+ &,ŸäíWõ7è[mµÕö6]½j# °5ö“üß¶mmk°m°lÛ¾Moû¶Fr«QÖOòÿ«êÕ¿jÛ«Z¯Òõª‘ÜjÔÜúIþ~U½ú«ê¯ª^•þ«Fr«Qsë'ùûUõꯪ¿ªþªÒ¯É­FÍ­ŸäïWÕ«¿ªþªú«êºj$·5·~’¿_U¯þªú«êUÕ¯«‘Ü ¨ ë'Ù]U½öWÕ·U½UõÒ HÂ@MØ~’ÝmÛjƒµm ¶mmÛ¶¶i½}Û$À6jNòÿû¶ àØÀ6ø¶¥ç¶5à`5ÛIÞvÛ·Õàƒ­ÍÛÖ&m+ýV5i5[™¤m©^½í[µ¹UåV•nsëQ³JH""¾Þÿ¶oÕæV•«ªëUä[EÍ*$)ªª¾êÛ·js«ÊUµOW$·5«¤¨ªúªÿmm«íÛª}Uí›n$Û¨¹mBÒˆØÖÖ7`Ûöm«}Õ¶¶i jÀLÒ¶Û¶  `ÐöçþNZÿÚÿS’TPPPðï‹ÈËýý¹¿?ÿ¯rõH¦{Ô¬®’TUUõï‹HÍÕ+W¯\½rU$K7j¶’ˆˆÏv[­ªWU®j«ÕHnéQs[&yÛmUmР¶ÕjÛ[‰Q¬ªªbUUM-ZUU%©¨¨¨¨ˆªªªªªŠUQUU£¨ªªŠQTUUýû·Mò·OÍk[%‰ªªŠEDü|Ûþ}Ûþ}Ûÿýÿ‘|Ô|úBñï¶]ýÿ_þÿÿþÿªª‘\Û¨¹¦MÒ¶ÛZµ­¶µ½¶êUˆ*"" IS£ED%•ZDUQUUQQDQEDDDm‹m›¤oŸš¾$Um‹-"þŶm‹mÛÛþïÿäÿGÍÿ’ˆÚ·íêÿÿßÿÿßÿ_U5’«š«™ämÝVÕ¶ªµ½Zõ*±EDÄ$EDLM±-¤Š"""¨EDÄ"""b±ˆˆØÛ>IÛ>5m[H¢ˆØѶñmÛb۶Ŷÿüÿ‘üÿ¨ùÿBmÿÝÖ®þÿÿýÿÿýÿUU#¹¶Qsm&yÿm­ô¶jk{mÕ«þËÿŸäÿŸšÿ/$EDþ‹ÿÿ—ëÿ¿üÿùÿ¿ÿ$ÿ?jöß$Åö¿»¿úÓÿïÿÿïÿo«j$×6jnÛIö¿­µm«¦Û^[õª¶Wd«Qs«“üÿÚ_µ½UõÒU¯¾­¶ä¶šƒí$û?€¶mƒÚ¶ímºímÀ0 jÀFrël€ `жíÛ´Þ¶m’0 &<’¿ƒmÛ€l0€ Ò[Û6 aÛ¨ ÛOòwÛ¶µ ¶mk[ÛÚÖôZµ[š+›¤ˆ¼ªÞ¶mµ­­j_Õt«Z_5jVªÁ÷Þß¶mµÕVUU-½*ÖªQ³B$‰(ソmÛj«­ªªZÓÕÈm5jVb’|U½mÛj«­ZUÛÚtIØÔÜ&&y‘¶mµÁ¶mÛ¶mmkÛ¶i’ &À|’oÛ¶`0ØÀjµ¥G¶5a³IÞok[X°m«mÛj[Õ«ôÈmmšÛIZðUU[mk«mm}[õêE¦«¨«T$©T*_wíUÕ«ªW¯^µ‘œn£æ–IyUÿ¶ÚÚV[Ûj«­VÉM¨9˜OÒvÛZm°lÛÚ¶­¶UUm$·ô¨¹í'y»Z«mµm«¶ª^½îú‹¬_§¹.‚¤ÿûý¯þ÷êÝ¿Û'ÛQ_Û*’JUUÅ‚""~¾mÿ¾mÿ¾íW¯?’õ¢fú"$Eäïþ_õþWïýýUUÉm5›öIZÜÖªmµ­­ÚªWU½Z$·5·i“ü_Õj«o[õ­ªWÿÿÿE²^׬§…´È»¿~×ëwýÿý߶ضOÒ¶OíÛˆ¤ªm± EĿضm±mÛbÛÿÿÿ䫨ù“Ýßý¿ú_/ÿõßÿ_Uµ‘\Û¨YóIÚº­ªmÕÖöjÕ«ª^m$·6jnûIþ×µV[}ÛVߪzõÿîÿIÖ‹š•mòvú~ýÿ¥þÿò¿ºT¶¶m’¿mjþ¤ˆØZ”¶í[ùÛ¶•¶m[i[Ä"!i©‰ª*"¨Šˆˆh´ˆˆZDD-"¶ˆEÄ$-bSÓ6"QDP[D,"±-¶í“´íSÓ¶‰"b[DÛþÅ·m‹mÛÛþóÿ?’ÿ‹š•MÒöë¾®úÿÿ÷ÿW~UUµ‘ܶQ³Í'é¿­•ÞVmm¯­zUÕWÉ­šÛ~’ý[k›^}ÛVߪzUÝU‘¬5W6ÉÛ•¿Jw©ªKõÿòÿÿåÿO²ÿ§f¿É‹ü·üÿõåÿÿËÿÿ—ÿö-·}’¿mjþ!iÛbÛþµØ¶m±mÛbÛ¿ø¶Oò¶OÍÛb’±m±m[ômÛb۶ŶÿûÿÉþGÍ~›¤íÿâÿÿ}ýÿ÷ÿÿ÷ÿWU$«¢æÊ&i»vWÕŸ®ò«ÿþÿ¶ª6’Û6jn{$ÿ·µ¶mÕtÛk«^µ­¶m$aP¶G²ÛÛ` 6½Õ¶¶¾Uë«"¹Õ¨¹õ“ì¯Þª–·ÒåªÊÕë¯?’õGÍuŸäïÿvÿ+ÿÿõýÿÿýÿõ÷?’õGÍ~ŸäíÿöÿÿöÿÿÚÿÿÛÿ_ÿ#YÔì÷IÞþoÿÿoÿÿoýÿ¿ýÿõ÷?’õGÍý>ÉÛöÿÿ®þß×ÿÿÛ[5’«FÍÕ#Ù]ëUÛ[U/]õªmµm@¶5öHö`Û¶Ál[mºím `À€$ ¨ äÖ`° `€,ÐÛÚÖ¶¶m$aP¶G²Þ¶VÛlÛÖ¶ôÖ¶¶Új$·5·ÉzÛ¶ªjÕ¶¶š^[mµÕHn5jn=’õ¶µªªj«­6ÝV[m5’[š[d½­­ªªÚj«-½ÕV[äÖFÍ­G²Þ¶­jUµµ­¶¦×¶¶5 Û€š°Éz[[mжmkÛ¶µé`I€P`äjØ`4€mk›ÖÛÚ6€5a Hn Ø` Ò[Û6Ø`ÛHÂÖ¨¹j$·ƒmÛ¶­mmkzmµ­­FrÕ¨¹z$ûÛ¶­¶µU[«6ÝV[m5’U£æê‘ìnÛ¶Új«V«¶ôV[m5’U£æê‘ìnÛ¶Új«V«¶¦W[Ûj$«FÍÕ#Yß¶mµµ­Z[mkÓm°Á6 ¹­QsU$WÀ¶mÛ¶­mmk›€Ø€š°m$·`0ØÀª^¥W«6r«¨¹z$«¶µU«­ªªW®žÎ«W\ýÔìï$ÿ¿­Õ«W¯\õ÷þ~ýþþ»ÿ§æ9ÉßUõW½Þ÷¿^ýu]ÿùÿÿ©ùß&iÿUõ×_ÿÿÿÿ{ýoOW‘U?5ÿ?’ݵ¶ª^õ÷þW¯ÚVÓm$·ŠšÕ#Ù¿­mm«­mµÕV[l›l@ÍmäþlÛ¶¶m«mÿýÿÿýÿ¼þjÿ“DÄ×ßÿßÿÿßÿÿêõꯊdº¢fõ“ü_«UիꯪWmkÛ6’M7j¶5’Õ¶¶m[µU¯²-¶í[|Û'}Û¦m‹Iÿ¶mÿb۶Ŷ«¿zý¯"ùzÔ¼î'ù¿ú«×ÿúïÿ¯^µ­mÛH¶5j–n${ÛZÛ¶j«^e[lÛ¿mÛ'i[Lm±IѶû¶m±mÛbÛÿýÿ¯ÿU$«ŸšÿÉëªÿõò_Õ_U¯ÚÖÖ6’mšU#Yz[kÛVµêUþýÛ/¿ÿ‘ì·©iû'ýÿåë߿ۿ»ú«ªWErõSó‘¬j=]õW/¿^{Õ¶¶m#¹­Q³j$Û¶µ¦·U[õªmok[mm$·5û‹dµ­¶¶½éªWm«mØ`X£æj@rÛ¶Á¶Õ¦Ûj 6€À`$¶Qsk@6 6€mk›gaviotatb-0.4.orig/gtb/gtb1/kqk.gtb.cp10000644000175000017500000005037611536321052016734 0ustar varunvarun@€3€3<<œ¨&È?þP@˜`Cì0c+FøY–eÙgY–eÙÙY–eÙYv–eÙY–eÙY–egÙY–eÙÙY–eYö"¢7ÆDL˜ˆh"LD&šˆÓDD„ÿ·ý¶mïmÛÃÛö°·=loÛÞöýÿ·_Ûî½m»{Ûîö¶»íínÛ»Û¶ÿÿù´IÎI’›“ä&'¹INn’œ›$ùÿÿ•$ZK’Ž–¤#-éHZ:’´Ž$éÿÿŸeY–fgY–egÙY–egYv–egY–egY–eggY–eÙÿÿ߉˜0ÑD˜ˆ&"L4¦‰ˆÿÿ¿1€½m{xÛö¶‡ííaÛ{ضÿÿÿÚÛ÷¶íîm»ÛÛî¶·»mïnÛþÿÿi{ÏI¢›“ä&'¹INn’œ›$ùÿÿ•$¯%IGKÒ‘–t$-IZG’ôÿÿ³,˲ììDD4KDD4KDD4KDD4KDD4KDDôÿÿ "¢ñDÀ„‰ˆ&ÂD4a¢‰ˆ0MDDøÿÿ Ø{ÛÃÛö°·=loÛÞöýÿÿ×¶}oowoÛÝÞv·½Ým{wÛöÿÿOÛöœäÜœ$79ÉMrr“äÜ$Éÿÿ¯$ÉZ’>Z’Ž´¤#iéHÒ:’¤ÿÿDD4L&&&&þÿ߀½m{øm{ÛÃöö°í=lÛÿÿmÛ÷¶íî½ÝímwÛÛݶw·mÿÿÿ´mÏI’›“s““Ü$'7IÎM’üÿÿJ’¬%IGKúHK:’–Ž$­#Iúÿÿ ØÛ¶‡·íao{ض=lÛ¶mÿÿmÛ÷¶íîm»ÛowÛÛݶw·mÿÿÿ´mÏI’›“ä&çÜ$'7IÎM’üÿÿJ’¬%IGKÒ‘–>’–Ž$­#IúÿÿkÛ¾·mwoÛÝÞv·½ÝmÛî¶mÿÿ?mÛs’äæ$¹ÉIn’ÏM’s“$ÿÿ¿’$kIÒÑ’t¤%Ië#IëH’þÿÿ´mÏI’›“ä&'¹INn’œ›$Éÿÿ+I²–$-IGZÒ‘´t$é$éÿÿW’d-I:Z’Ž´¤#iéHÒ:’¤ÿà` 0€``À€ÿmÿ`ïmÛÛÛö6¶½mooÛÞÛ¶ýÿíï¶õ½m{{ÛÞö¶·íímÛ{Û6ÿ¿þ¶MΉ”““ä$'9‰NN"•Dúÿÿ“HYKR––¤%-iIZšKÒšKÿÿÿ'"Âh`4€ ˜àÿÿǼ·mooÛÛØö¶½½m{oÛöÿÿooûÞ&¾½mo{ÛÛææ¶É¹m“ÿÿ¿íÍ9Irr’œä$'ÉÉI’s’$ÿÿ’œµ$eiIZÒ’–¤¥¹$­¹$ñÿÿŸeY–}vb‰Ø‰X¢‰e'–&–؉&–ˆ&–ˆØÿÿŸeY–eggY–%–egY–eY–eY–eYv–e‰eYv–ˆeY–ýÿÿY–eYö'"¢‰&"šˆ&¢‰ˆ&šˆˆ¦‰ˆˆþÿ""Âhhhhhþÿ€÷Ûöö¶½moÛÛÛ¶÷¶mÿÿÿ¶mß{ëÛÛö¶·½mno›žÛ¶ýÿÿÛ¶9''''ÉINr’œœ$9'Iòÿÿ'I²–t––¤%-iIZZ’´æ’Äÿÿ""ò˜@x¢ 4&0&€ÿÿŸˆˆ<&hÂ""Ð"a""0@þÿ""ò˜@ Ç¢ 4&&š@À4üÿÿDDä1Ðx4€ ˜àÿÿxoÛÞÞ¶·aÛÛ¶ímÛö¶mÿÿÿ¶mßÛÖ·ßö¶·½mno›ÞÛ¶ýÿÿÛ¶9'INÎÉINr’œœ$9'Iòÿÿ'I²–¤,-­%-iIZZ’´æ’Äÿÿ@÷¶ëím¿ímoÛÛÛvï¶ÝþÿÿïmÛÛÛö¶·mÛÞ¶m{Û¶íÿÿà½m{{Û~{ÛÛöö¶í½mÛÿÿ?À{Ûöö¶½÷¶·íí]ÛûÖ¶ÿÿ€÷¶íím{ûmo×Û×µ÷umÿÿÿ¶íÞÛÖ··ímo{Û´½mÚÞ¶íÿÿß¶Í9Irr’œä““ää$ÑYI”ÿÿ?I’µ$eiIZÒZKÒÒ’¤5—$þÿÿÛ¶soÛÜÞ¶·½ý¶½½m{oÛæÿÿ·mçÞ¶½½mo{ÛÛö¶mÛÛ¶mÿÿÛvîmÛÛÛö¶·ý¶··mÏmÛþÿÿ¶íÜÛ¶··ímo{oooÚÞ“¶ýÿÿmÛ¹·mooÛÛÞööÞÞ¦½§iûÿÿÛ¶soÛÞÞ¶·½ím¿½mzO›öÿÿoÛæœ$99INr’“ää$Q²’(ÿÿ’DkIÊÒ’´¤%-I¯%Ik.IüÿÿoÛêœ$:9INr’“ä|’ä¬$Éÿÿß¶Õ9Irr’œä$'ÉÉI’%Iþÿÿ¶­ÎI’““ä$'9IN>IÎJ’üÿÿm[“$''ÉINr’œœ“œ¥$ùÿÿÛ¶:'INN’“œä$9999+Jòÿÿ·muNœ$'9ÉIrr’sV¢äÿÿoÛêœ$:9INr’“ää$ù¬$ÊÿÿŸ$ÑZ’´´$-iIKÒÒ’¤5—$þÿÿ'IøZ’øÒ’´¤%-IKK’~.Iúÿÿ“$|-I|iIZÒ’–¤¥%Ik.Iúÿÿ“$|-I|iIZÒ’–¤¥%Ië%Iÿÿ’„¯%‰/-IKZÒ’´´$iÍ—¤ÿÿ?IÂ×’Ä—–¤%-iIZZ’´æZÒÿÿŸ$ákIâKKÒ’–´$--IZsiéÿÿO’ðµ$ñ¥%iIKZ’––$­¹¤õÿÿ'IøZ’øÒ’´¤%-IKK’Ö\’þÿ÷oØwoÛÞÞn·{ë]{{·®»[ûÛþm{ïmÛÛÛö¶·½mooÛ¶·íþâß¶÷>‰}{kïôØ×éö©Sû¤Îÿÿ¶½ÏIÜ“g'Ç9NvN9+±þÿý·í]KjNNš+­æTüfžrÞÌ•òÿÿ°÷€íÉödlc2<<¶=öÿ?ýØ{Û¦ímÓ¶·iÛÞ´mÛ´mûÿŸ~oï½mûöÖÞíµ¯ÓíS§öiÿüöÝ÷¶öɉ»“ã'»'–Ü“XÿÿþÛ~ÏIš““æJ«9•næ©x3WÊÿÿé'"ÚÓÛM0M„‰0<<l{"Øÿÿìϲ,û³KÄNìIJ4±ìD4±ÄN4±D,ÑÄÑÿ?û³,ËÎÎβ,K,Ëβ,˲,;˲,±,;˱,˲DIJ,ûÿÏþ,˲³?Xš¥‰XšXšXšˆ¥YšˆXbi""öÿŸ~"¢io›hÛ6ÑdÛD›lm“M´mòÿ?ý0ö·ðö6<Ú o¤ÃÇháS£ÿÿøm{ß{ì“w'Ç=NvOœ¸'qþÿý·í='7''Í•Vs*ÝÌSñf®”ÿÿã'{ xO(&`àá °Ý °ÿÿé'"ÚcxÂh `000Àÿ?ýDDc 4a À €@ðÿO?Ñ=@4@À  ÿÿôÀØÛí·AÃÞ  {Ð6lжáÿúm{ïÛÚÛ·ön[{;­}ìÖ>µûÿß¶÷½­}òqwrÜãd÷ÄŠ{çÿßÛÞs’æäÜ\i5§ÒÍ<oæJùÿ¿À¾{ÛíööÞö¶¯íík»îµÝÿüp÷¶Ûím¿í]oÛÛ×vÝk»ÿÿø`ïmÛÛÛö¶·mÛÞvmÛnmûÿ?ì½m{{Û~{ÛÛöîµmûÚöÿ?~Ø{Ûöö¶½÷¶¯íí[Ûî­íÿü¶½ïmíÛ[w÷ë^§»§nÝÓºÿÿþm{Ÿ“Ø''ÎNŽsÅ9±â¬Äùÿ÷ß¶w-©99i®ôÍ©t3OÅ›¹RþÿßßvϽmr{›ÞöÞÛöö¶m{Ûöÿß¿mŸ{Ûäö6½íí·íémÛö¶íÿ¿Û¾÷¶íím{ÛÛÞ¶7mÛ¶iÛþÿû·í{oÛÞÞ¶·½í·½½mÛܶýÿ÷oÛ÷Þ¶½½mo{Û{{{Ò¶=iûÿïß¶ï½m{{ÛÞö¶·÷ö´m{šöÿßÛÞs’ö䤹ÉiNóÍJ•f%Íÿ¿ÿ$9kIÉÒRt¤­HGsE<šKáÿÿùÛv“H''ÊINr’|V’$+Iþÿû·í9'‰NN’“œä$9¯$IV’üÿ÷oÛsNœ$'9ÉIr²’$’’äÿ¿Ûžs’èä$9ÉIN’“O’d%Éÿÿ¶=ç$ÑÉIr’“œ$'ë$ÉR’ÿÿþm{ÎI¢““ä$'9INVN’%ÿÿýÛöœ“D''ÉINr’œ¬ä$+Iþÿû'ÉYKŠ––¢#­hE:š+:šKáÿÿù“d­%‰/-IKZÒ’´´$i-IúÿÏŸ$k-I|iIZÒ’–¤¥%IzIÒÿþ$YkIâKKÒ’–´$--I’–$ýÿçO’µ–$¾´$-iIKÒÒ’$é%éÿ?’¬µ$ñ¥%iIKZ’–æ’$Í—ôÿŸ?IÖZ’øÒ’´¤%-IKsI’æZúÿÏŸ$k-I|iIZÒ’–¤¥¹$IsiýÿçO’µ–$¾´$-iIKÒÒ\’¤¹¤ÿÿíßpïÞ½ÝÞ­·{ÝíÖívÛf»íÿoÿ†{÷ööön»Ý[ïÚµwk»»õÿ·ðß¶ûÞnoïÚ·ÝõnÛúºm}ëþÿ…ÛÞ÷vûöÖÞíµ¯ÛÚ§níÓúÿßþm{Ÿ“Ý“Sg'×¹Nêœ:uVêÿÿýì½·o·wêm{Û¶»íºÙvÿÿñO€÷Øž¼mOÆ6&Æ'ð'Ãÿÿ {ooÚÞ0m{˜†m˜6l˜¶áÿÐïí½··o¯íÝl{;±}ìØ>µÿÿßÞûÞnŸœº;¹îuR÷Ôª{Rÿÿ?ï1¼½1RløÀ6Ü Û͆ûÿOô‘÷4ÁöD“Ma&‚ ž†=üÿϲ?˲ô³;±;KËÎM,±D4±DD4±Dÿÿ,û³,ËÎÎβ³Ä²ì,˲,˲³,KIJ,Ë˲,KD,Ëþÿ³ìϲ,ÍþD³4KËÒÄÒÄÒD,KK,MDôÿOôM{{¢mD“m ²A´AÑ6èÿôÀØßáímx4ÞH £†Oÿã·í}ïÛ'§îN®{Ô=uêžÔÿÿöOpïÞÞÞÞ©·}ìm×î¶ífÛýÿ~¼ÇÀ{Âh1˜žÃÿÿýD„=Æ&Ð&L ˜üÿýD„1M€@ øÿ'ú‰cz M 4@høÿý0öö ýh´4Ðtt üÿƒ~ÛÞ÷v{ûÚÞMmo§¶]Û§öÿ¿ñÛö¾·Û'_w'×½NêžZuOêÿûÜ»wo·÷õu{ݺ½nÛ\·ÿÿö¸woßnïîm_ûÚ¶}mÛ¹¶ÿÿ@ïÞ¾ÞÞíÛÞõ¶]ûÚ¶{mÿÿ?ï½½½½mo{Û¶mÛ­m»­íÿàཷ···í··½mÛ½¶í^ÛÿÿÀoÛûÞnß^»ûnw»µ{íÚ=µÿÿß¶÷½Ý¾½uw¿îµZ÷Ô­»ZÿÿÛ¿mïs²}rêìä:×QS«ÎJýÿßþ¶sîíÉíMzÚoO›6§M£Óæÿ¿ýmçÜÛ“Û›ô¶çž¶iOÛV§íÿ¿ýÛî½····ímo¿mÛž¶mNÛÿû·Ý{ooooÛÛÞö¶m“´m“´ýÿ·Û½÷ööö¶½ím¿mÛÓ¶Íiûÿoÿ¶{ïííím{ÛÛÞÛ¶§m›“öÿßþÛöž“Û“Óæ&·¹=mV›6+íÿý·í='·K«Í•ns«Û¬–·™«ýÿOþ¶ZçdéäH9ÉJV’“•$á+Éÿû·Í9''''ÉINr’ä¬$ _IþÿÛ¿mÎ9999INr’“$y%IøJòÿßþmsÎÉÉÉIr’“œ$IV’DR’ÿÿöo›sNNNN’“œä$IòI­$ÿÿíß6眜œœ$'9ÉI’d$Z<ùÿoÿ¶9çäää$9ÉIN’$óœDó$ÿÿíŸ$g-,­DG:щ”hžœh®äÿ?ù“h­¥¥¥%iIKZ’$Í%-f.éÿ?ù“h­¥¥¥%iIKZ’$Í%i>—ôÿŸüI´ÖÒÒÒ’´¤%-I’æ’¤ç’þÿ“?‰ÖZZZZ’–´¤%IÒ\’Äç’þÿ“?‰ÖZZZZ’–´¤%IÒ\’Ä_Òÿò'ÑZKKKKÒ’–´$IšK’ø|éÿ?ù“h­¥¥¥%iIKZ’$Í%I|®õÿŸüI´ÖÒÒÒ’´¤%-I’f$I|Fú°ÿÿÆ€acÃÃÞ€‡7 ÿ{·ÿÿ?lû¶õö¶½ëÛ^×··®ÿÓ“ÿÿ¿IÒ{Ûöæ$¹ÍInš““4ÿŠÖÿÿŸDê9Ir´$hIKÑÒ’¢‰óÿÿqι֒¤Åçœk‰Ï¹–Äçšs‰ÿÃþà` 0€``À¿mûÛ?l{Ûöö¶½ímoÛÛÛ¶ÿÛ$ÿŸüM’ÞÛ¶7'émNzÛœž´ùW$ýÿú“H='IŽ–¤-i)ZZRô/qÎÿÿqι֒¤Åçœk‰Ï¹–Äçšs‰ÿþÿÿcÀÀ0€ þmÛÿÿ?¶½m{{ÛÞö¶·íímÛÿm’ÿÿ¿9é½m{s’Þæ¤·ÍéI›EÒÿÿŸdõœ$9Z’N´¤¥hiIÑ¿Ä9ÿÿÿÅ9_kIÒâsεÄç\Kâs͹ÄÿaÛÿÿ¿m{Ûö¶m{Û¶½mÛÞ¶íß¶ýÿÿÛv±ß­··ímo{ÛÞÞ¶ýß&ùÿÿ›$½÷¤7'émNzÛœž´ùW$ýÿÿI¢ž“•£%éDKZŠ––ýKœóÿÿ_œs®µ¤µøœs-ñ9×’ø\s.ñ·íÿÿï¶õÞm{½ÛÞºno뺷­û§Iþÿÿ&IïmÛ›Or›“Ü4+'iþIÿÿ’¨ç$ÉÑZ:Ñ’–¢¥%Eÿçüÿÿçœk-IZ|Îןs-‰Ï5çÿO"ýÿÿM’Ü“$'GÊIŽt¢(:‘¢_’ôÿÿ'‰r–$-IGziIZZ’ôÏÅ9ÿÿÿÅ9çZK’ŸsΗø|¾¸øœÏ9ÿçÿÿ$IgIâK‹s-iq¾Äµøçâ?çœóÿÿ_œs®5çœóÅçœóÅùœóÅ9>çœóÎp†ùÿÿÅ9ç|Í9ç̜φÏ9Ÿ3Ìœ3|ÎÌ9Ãðÿ›öÿ¿ÛÞqÛöö6½ímoÛ›Û´ýoûÿß¿mǽm{{ÛÞö¶·íímÛü=ùÿïß¶ãÞ¶½9iozÚÓäô¤‰þhýÿç—¤{N’.-)GZÊŠ´²I¿Äÿÿ×/Iw-IZZ’çsi‰ó¥¹Ä9þýÿï¶c  ¸-FqÑÑâv´E´ý¿-þ¶cÀím1Ú[\´·hû·Éÿ'ýÛvÜÛ¶··íMO{›œž6Ñ_Iÿ¿úKÒ½·m—–Ô+-uUZ]ª¤_âüÿ_¿$ݵ$iiIZœÏ¥%Ηæçø]ôÿÿ¶Ç@;°[ c£ÃÅíp ÿhûÿÿ¶c ¸½-F{‹‹öâmÿ6ùÿïßÛqoÛÞÞ¶7=ímr{ÚD%ýÿ÷—Ö½·m—–Ô+-uUZ]ª¤_âüÿ_¿¤ïZ’´´$-ÎçÒçKs‰sÿ­ûÿßßm÷Øv»}[ïúº»õínkÿ€ýÿï°lØØØ€7¼í {{Ã6~øÿÇ{ 0À`6à·íÿü¶=~×ðð6¼á oÃÃÛ†€3°c…l`É„!#Îÿüÿ»:þÿÿÿÿÇùÿÿãÏÿÿñþÿ-Àãÿëêùÿ÷ïÿß÷õß«¯ÿíðÛÛæ½·›mï7ÛÛoö¶ß†-¶Í›Íf³m–ÈfKl²%Å÷ ð8ÿ¯ŽoÕyß¾óõ_ç[­ómçœxœsÞqœ?‡óÎÿqþ8ç?ïßùópÎy€Ç9çÇùsŽóÎÿùóÇ9çÏŸ÷çÏŸÿƒsÎ<Î9ï8Οsxçÿ8œsœ?ïóçÿàÿàñÿïxÿÿÇóÿÇÿû?úÿþøÿÿÇ·xü¯í¿VÛj¿mµíZmÛ¡ÛŠmóªm߯VÝlµnV[·aK†mófÛf3›%²Ù›lIѶÅ«^ÛÖW«¾ÕVÛjµm‹¶(þ[õÚ¶¾Úò­¶ÚV«m[´-@ñߪ׶õÕ¶¾Õ¶m«mÛ¶h[€â¿U¯më«miµÕ¶:mÛ¢mŠÿV½¶­VÛªj«mµÚ¶C·m«jÛj³m6¶Ù6›mÛ°mŶ©Ú¶Úl›m¶Ù¶l¶mÁ’ Û¢fÛ&‘d–É™dÉÐmCÛ™Ú¶él›nfºÍ¦Û6tÀÐv¦¶m:Û¦›n“é¶ Ý0´©m›Î¶éf›n³¤Û6tÀÐv¦¶m:Û¦›ml³é¶ Ý0´©m›Î¶Ùf›Ù,¶mC· mgjÛf³m¶Ùf3‹-Y$ö™I²Y$‰$’HB"I$¹†m1“$“HI܉$‘H’Il‰˜$‰E’X"‰$!’$A’["&Ib‘$–H"I„$I$Á–ˆI’X$‰%’H‰$I$Á–ˆI’X$‰%’H I$ @°%b’$Ib‰$’D"’Il‰˜$‰E’H"‰$‘H$A’["&In‰äŽ$’H‰$rã¾ï H÷}ß·ûvß÷í¾o÷}»ïûvßîû¾ytÐâ¿ï]ýkýëö¾o_ßþw¾káûÿøÿ÷®þµþ}ûþ_ÿý÷ÿë¿íC ðÿWïß¿Öþß·ú¯ßö_ûmñÐGÛwõþýÛìû~³¾þ¶¾õ·¢Тm½jõmÖVk­ÉZ[óöZœï{Wÿþýûíý¿ýûþÿÏ·ß+þ¯üãúuuu½úw½úþÕõ¯þú®ÿ×ë¿ëÿÿãÚí_ñÿWWW׫ëÕ¿¿þÕõëÿê¯ßÿ«ÿë·ø`Ðö]½ÿþýÿûÍ÷ýoíÛÿVüÐGÛ÷Þ¿›}ßoÖ·ßÖ·ýþñ}óÿÞÕ¿ÿ~{ÿoÿþÿÿç¿ÿWœ¿<\Ϲººº^ý»^ÿ«ë¹ú뻞¿^ÿ]Ïÿ\¿ç ÿWWW׫ëÕ¿¿ž«ë¿?Wýÿsõý>þð¯ïêýû÷ïÿßoþßÿÖûߊßúh½÷þýÛìû~³¾ý¶¾í÷öZœ/ïêß¿¿½ÿ·ßÿÿùöÿàÿüãü×quÎÿ;Ç·Çù£çÿs¾ÎÿŸƒëõœƒëõ\«su®Î¹çz\Ïq®çœsœë9×+®×+ÀõŠëõzuuu½ºžëõêz½^¯×ëÕõz=çz½^¯çœëõz½âœ¸^qÎ9®8ïz\s®Ç¹çzœs=çzœs®ÿ8_€?øÿãêhãÿÿüqÚþÚþÑ?mñ?€?hû®žú÷ïÿßo¾ïkßþ·â7€>Ú¾÷ž›}ßoÖ·ßÖ·ýúè Åß;þµþu{ß·¯oÿ;ßµïüãü¿wüSçýöο}ïë|ÛÇÿüãü¿ãø÷œ÷çóÇÿ;ÿþ?ÿÿøƒóÿŽãßçýùóçÿóçÿÏŸ?þÿðÿÿŽ£ïïÏçÿãÿÿüñþ‹¶ÐöÕú£´=Új¶k¶mÑ ¶uT«¯µ¶º­­v[kíVthѶ^µú6Úêf­u[kë6thñíÌëlZ•Z'uëfÝ6thñß™×Ú´:ÕÎ:íÖM»mh Ðâ¿3¯µju¥nÚm›v[Ñ Å«^«ÕêZí´[»µ[Ûµh Ðâ¿UÕjµº–N;m×N»®ØТmÕlZ›­S³Îº­³u+¶´h[5›Öfët¬³.ël]†-+¶MÍfµÙ6Kl³%ÙdK‚mºEÌ&±Y2ÛØlËÛ’aÀ†n3³Il–Ì61ۖŶdذ¢ÛÌl6›-³Mƶ-±-¶¬è63›ÍfËl“ͶmÛ¶lذ¢ÛÌl6›-³M6¶m³-¶¬è63›ÍfËd“MlÛ$K‚$+¶ÍLb“H2I$“H2I’ ÀŠ$3‘Ø$’DI$‘D’Ü7r Á–Ûm÷-‘ûŽävç–Ü·û–Ü÷$H°%b¹%r'’Û[rßqKr'H`KÄ$‰Ü‰ä–Ü’ûNHr'H`KÄ$‰Ü‰ä–Ü’ÜÉ-I$H°%b‰DîDrKnIîä&I‚$ ¶DD"‘ÈHnÉíNîäI‚$ ¶DD"‘ÈHnÉíNîävGîà¾o€I"n÷-qßî;·Ü·;·;÷}çvß¡ªmѶÅùVm[_m«­¶ÚŽï98ààœsÇ9çß9Î÷8ç8çó‡ãøžƒóçÎ9Çqœsþã|sŽsÞ9x´çà{ààü¿ã8çü;ÇóÇŸwþU[‹®8øÿWGÛÖWÛj«­¶¥ÊZtÀÁÿ¿ªnV×j§ucjVl@Ѷj¶u6[§›uÖˆD$Ŷ©H’H$‰$’HróŽÿ?ðÿçœã8þÿ¼ÿçÞŸªºÕüÿ;ªm«Õ¶Új«m©êVtP´­ª¶­ÍÖêf­u#"I@±m*’$I"‰$’„ã8ÿçÿÁÿœsŽã8çœãßÿ9ο?ÇŸªÚm tÿÿŽjÛjµ­¶Új[ªºÝXѶªÚ¶6[«›µÖˆ$A’Û¦"I"‘$’H"Ixï¿ÿàÀÿ;Þÿÿû÷ÿï¿úïÿKUÛ¢íÞ¿£Ú¶Zm«­¶Ú–ªnE·­©jÛÚl­nÖZ"’IPl£"I"‘$’H"I¨×¶ø¶¶õªm«mÛjÛ¶Ú¶ªÚíðh[¯´­VÛjk­¶efÛ°-E·©™m6Ûf‹m¶…ˆ$A’[¢"‘H$‰$’H¦º ÝPt›ªmͶٶ-¶mb² YPl›šm›…,¶Èb[ˆH$¹†%1‘$‘ˆDI$ 1I‚$’DD’D"I$‘D’Ä-’;Hî`HI¹ÝwnÉMnInnqß÷û¾o€ ÷}»Å}ß÷í¾Ý÷}»ïÛ}ßîû¾Qµ­è Ðâ|«^kÓêVm­Ó®õªmñ}€œÿª÷Õêûíõk_ýöñ¾}ü?À?Îÿ{ï_ëßoïÿíßÿÿ«×öÑ>@‹ÿ¾÷þµþu}ßׯo¿Š¶E[€?h[õZ­VÛj«­¶­ª¶E[€?h[U­V«mµÕVÛN•­èðm«ªÕÚ¬­nÖZ·™šKZ´­šM'‘ušXgMªjSthq¾UG«ÕêVm­Õ¶s¼oáü8çœ÷ŽóZœíøóvÞŸÿWGûZ€spÎ9Žj×êŸ:­?õ§ªnE àÚÖQ­Öfmu³ÖºMU³¢ТmUµZ‰´ÕÄZkRU[‹®-ηêhµZݪ­µÚö8ŽïΟÎÁ9ç8Žs´ÎqÚ㜣çóçÇéœhÏÁ9ç8Žsœ£ÕsŽÓúsüi§ª[Ñ °?h[GµZ›µÕÍZë6UÍŠ&-ÚVU«•H[M¬µ&Uµµè  8ߪ£Õju«¶ÒjÛ÷Þ·ÿœÿ÷Ž­¿¾ÿ×ÿÿï½ï?¾øí;Þ¿­þ¿ïü¿ÿnªºÝþ ZGµZ›µÕÅZk2UÍŠ&-ZUÕj%ÒVk­IUm+º´ø/õZ›V·jkv­zÝŠ¶-þ;õÚmZݪ­µÚö½÷ßâ¿}üÿãõõýk¿þë[ÿí{ï¿ÿüãÿß{}ßþë·ýmû߯zm‹vÿh[V«Õ¶Új«m«ªkÑ àmëÕ¦µmmu[[í6UÝŠ.ÿh[¯Lk³¶ºXk]¦ªYÑ EÛª*­DÚjnk­¹gf˰ `C»™Ú$6Kf›l¶mæm¶lh;SÓÙ6ÝlÓmS¯ÝÐ`CÛ©j•V»ig›v›zí†v-ÚVU«ÕjÛµÓuíVõÚ ÝZ´­ªVË´«n¶ê¶©Ù6lh±­j6«±­¶ÙjÛffÙ° Å¶©ÙlÙfI¶Ù’˜Y2,7ÀŠmS³Ù$l³û–Mvß3³%XaÛÄ$‹H,‘Ä’ÌÌ–` @†m“Él±E[23[‚-¶ML&³IÆKlÉÌl¶lØ63›Í&[l±d[23[†-¶ÍÌ&³IKlÉÌ,–lØ63›D"ID$‘$‘$H°!IL$‰$‘D’DDî¹o€ Ib"‘¸ow¹oI$÷}»ÍûFrÜ7’ÜnqljûÎ-¹¹oÉ}ßb’ûFr$H·¸ãŽÄ}ç–Üâ–ÜwÄ$w°Ü ’DDâŽDîDrËMrß“$X ID$îHäN$·Ü‘ÜwÄ$ –$H‰;¹É-wÈ}GL’ @‚$‘¸#‘;qç–;â¾#"¹ƒÜ7@‚$‘¸ã¾å¾ã¾o÷÷í¾Åí¾ï÷}$¸ïû·ûvÇ}»ï;îûâ¾ã¾o›ÌL’aÀ†v3µIt–Ì6Ìf3³eذộ·It–Ì6Æf3³mذộ·Ùt–Í66›Í̶aÀ†ïfÞfÓY6ÛX˜ÌLÚa@‹vU¯µê,u,F&&Û  Å¶™Úl6Éf‹L"&ɠŶ™I,Éb ‹ŒˆÉ!÷ °aÛL$÷íÎb÷-­ÖªªkÑ Å·U¯Õju«¶¬þíñº>¾ðÿïýkýûíý?ݾöêµ}´ÐâÛ÷Þ¿Ö¿®ïûl6«am± vU¯Õju­¶tÚ­¦¶Ûúh[U›Öfítc“IÌH†%}l›šÍ&‘m–°È$b"Cî`ö™H,îÛÅ¾U½­À?þÿ½j}m֝ߨl63ˆ @Û¦f³Éd›e,2‰˜Ürذm&‹Üî,–›¯¾V½®nÀöÿ¯Z_õë;6›Í̲a`}l›šÍf“m¶±É,fvgX°aÛÌl6‰{›%t:«š­Å6€>lU³étÖN;:ÍÌÒb@³©Ùt:Yg‹L"&É`Ãf&‹D²XÂf³™Ù6lذmf6›mÛfÛl6™™dÃ6€ IfBlÉf ‰D""w‚$’ÄDH$î$’I$&’ Û$‰‰D&‘d’D"·;âvß îûHpßwÄí¾%r“DrsßîÛ}‹Û}ßÁ}ß÷û¾o·Û}»o÷í¾ïÛ}ß@À€KL80bCl`Å `!„èîîD!€ ‚  j!€ j!D j B j7qÙÝUUU]UUU¨ªªªPUYˆÅ*±ŠUD, ÷ˆ¹uwUÙ$I²Èmc‘$ÉâÈm5ŽÛjã8ÜÿðßÝÜ6ööÿã¶mã¾ÿçöýç¾ïçÿý¸õb»{ÛþþýþÿÿîU÷«:½êÔ+îÄw÷}k’xUõÆ$^câ£1>Ñ Alƒ " AÀAlAÁAAl@Áq³XUÝ«ªª«ªª UUUªªª*TUUU¨ªªªPUUn’$»»0I6I’,’$Y$I²H’d‘$É"I÷·ÿÝM⟽ýÿ¸mÛ¸ïÿ¸ýÿ¹íÿùo?n½ÚÝÛ°ïÿ×ïÿÿï^u¿W§÷:õwb’îþüÖ$ñªêI¼ÆÄGc|¢ n!„P ‚ ‚B!!„B B!„@„B!„B!ܬbUw#„ª.\U,TUUU¨ªªªPUUU¡ªªªBUUU¸I’ìb“˜$‹$II’,’$Y$I²H’Äýíw“$ÙÛñ?nÛ6îû?nÿ?nû~þÛ‡[¯v÷¶íýÿØïÿÿï^u¿W§÷:õwb’îþÿ¿5 öªêI¼ÆÄ«1>Ñ7‹$»!„»H’…ˆI’ˆ$I"’$‰H’$"I7I’Ý]UUl’äX$æÆ"I’E’$‹$II’¸¿ýïn’${ûÿqþÇ}ÿÇíÿÇmßÇûpëÕîÞ¶½ÿÿ~ÿýîU÷{uz¯Sïq'&éîÿÿ[“īн1‰×˜x5Æ'šà&·­»«ªŠMn‹ä¶Õˆ·­¶[mã¸Ú6÷¿ÿÝM’\oÿ?nÛ6îÃÿ¹ýÿ¹ïóü¿·^íîmÛûÿï÷ÿÿw/Öý^^uê=îÄ$Ýýÿk’xUõÆ{‰Wc|¢ îÿ×î&I¾·ÿ?·ÿ?ÿ]ÏÿøÊß{ùëÅ­ªÝ½m{ÿÿý~Uw¯ºë±NUªÇ˜¤»ÿÿ¶&‰WUoL’k Î1yÜ“îÞ¶Ù¿ªûU3½‰So2ØLƒ;I’îþÿÛš$^“$7&ÉMLr“ˆó$Ip'0v÷ÿ?­I’k’À'Â<‰ð ŒO nL\Ev!„ª«ªªªPUUU¡*Td!«HÄ*V±X¬ÆM¼­»I’#¹m$·m7n·mÛ¶mÛ¶mûÃw“ä¶íÿÇmÛ¶ýÿ¿íÿ¿}ÿ¿ÿû·ÛÝÛÿÿWÝþÿÿ¯ªÿU½^õêµqÇw÷ÿ«š$^UÕ˜D5IÔ˜DM³XUÝÄUU]UUU…ªªª U¡ª*TUUU¨ªªªPUUUã&·uwámErÛX$I²¸q[‘·â¸qÅ[ãÞþw7‰ÿmûÿqÛ¶mßÿmûÿmßÿïßþÆíÕîÞ†ÝÕíÿÿ諸_ÕéU§^wLÒÝÿU“Ä«ª“¨&‰“h¢Iã¸D!ÌFE’ UÕV·‹EÖÀâÈ ,nlÜ€ ‚`ãA"‚" ˆˆ@!D5n„B € ‚`ƒ!„ˆB!D!„@!„A„BD!„Pã®bUw!„ê*\U,TUUU¨ UU¡ªªªBUUU…ªªª7¹­»«ªªHâmU$I²¸q[‘·â¸qÅ[ãÞþw7IrÛŽÿqÛ¶mßÿmûÿmßÿíßþÆíÕîÞ¶í¿b·ÿÿ¿«ê~U§WzmÜ1IwÿÿU“`¯ªjL¢š$jL¢‰&»6®»ªª±ŠÛ0«ŠäV$·±8r\q#·â66îª"»!„YUE®*YÅ*V±X,’Å"‹,ÉÆ]UUÝB¨ªªªªˆ«ªªXUUŪªªª*VUU‘UU»H²»BUI²Š˜I’$I’$I’$I’$7¹­»«ªŠ$·­ŠÄÛHnÛFrÛFŽÛFnÜ÷ö¿»I’Ûöÿã6üoûþoÛÿoûþÿö7n¯v÷¶mÿU·ÿÇ~WÕýªN¯:õÚ¸c’îþÿ«&‰W«1‰j’¨1‰&š4nî{wW¹‘ܶ“ÜÏûÇíÜÎíßÏíã&ÉuwUUm$Ém$9“#7’#Éqã¶qãÖ¸IrÝ]UU#Ir$IŽ$æÈãH’Û8ŽÛ¸5n’\wWUÕH’I’#I&ÑGmÜ¿˜Ý]Åÿ«íßÏm^·MÝöéܯÓýºáÞ/fw£úÏæ¶mEnßjÛuµM÷Úçfíßo?ênâlnYÛ¶­¶m[íÿ·úþõí÷[­ênb·šêÆÿ6½º]ÕÏ«~zõÛ„ÕÝv¼ê>¯êTÕ™}L¢&Ú¸wÉîFEü¯¸móºmê¶Oçvn×5nîUÕ ¢:»¸+Öö­6NWÛt¯mnÖö¯qBh¡ ³Q‘$ÁB5n`Uq+°X[ ,nµÅ@ãAA¡ÆP!„@„ˆ@"„B!!„ˆB!„4îml!„ 5ñ6T I² ܸ­@nÜ 7®ÀÛØ¸÷#°»ªjÕÞŠ5nÛjÛ¶Õþ}«ïßVß~׸ÕBÝMr¬)v«ÿ6½º]ÕÍ«nzõÛ„ÕÝÛ¯â}^Õ©ª31º˜DM´qÿ’Ý]Åÿãv¼¿¶yÝ6uÛ§s¿N÷ë÷~²»ªÿ+nÇ\‘Û7n»ŽÛtç>w¹ÿkܵUu7BµUÜYEnIþ'9þ¹;¹›$BÝ"I’ G’E’Åb±H’$Y$É"«qoC¨»«ŠUÜ6Vo#¹mÉm9n¹qÛ÷~„º›äXÜv²FüoܶmÜÿoüþü÷ûÆ­Vu7ÉSÝêv›^Ý®êçU?½úÆmÂêîmŽWÝçëTÕ™}L¢&Ú¸¯dwùÿÜÿÿܯû¯~ÿõî×뮾qï'»»ªþÜÿÜÅÿö©ßý÷ßßýþ{ÙÝUõäöïäöáoÛþo¿ÿ·ÿÿ·kÜÛªº»ª¶‘Üv’ܶámÛ¶mܶmÛ¶mÛ÷¶ªî®ªÜ¶ã¾mÃÛ¶mÛ¶}Û¶mÛöÆý[ÕÝ$7nÿ7îÿ·ýøÿ÷ÿÿ÷ÿþûÿûÆ­²º›äÇ«~üÿÿÓcý¯êïU½jã6au÷6?UÿyU§Šõ&F“è£IlÜ7[w“S¿]Õýªþ'ª&ª𨏝[w“üÿíWÝÕÿû«Q¯ª^ÕÆýKv7ÉÿÛ~ÕýWýÅ¿ªzUõªoÜÿÉî&ùoÛÿÿûÿÿÿ¯Ç¿z½zõÞ¿qÿ’ÝMòß¶ÿÿþÿÿÿ_|U¯×{õ¾q«dw“ü·ÿÿUUUŪªªªª[Cv÷¶WýUUU«ªFU56î$dwÿ÷S¿ªúÄ$jI¢‰IÒ¸MþîÞ–Ä_“D5IT“Ä$8‰I’Ä$Iã6Ùº{›ú_UMÕ$Ñ$8Ñ$I4‰[ݺ{›þ¿ªªªª£1â¨I5Ú¸Õ­»·éÿ«ªªªªQQ¬&ªmÜêÖÝÛôÿUUUUըƨX“¨mÜš­»·éÿ«ªªªªÑ£›D“$iÜI¶îÞ¦¿ªªIT“$1I’˜'1I’4înÝý_¯IT“$š$I’$0I’à$Iw ü»û5B“@a’@!„Bˆ!„Â4î$wÿOT“$1I“$& „0B a``Ò¸“üÝý?QM’Ä$I’$& „0B˜à&;ÉßÝÿÕ$‰&I’$0I „ L L’Æäïîÿ‰j’D“$I’@˜$ÂÀ&0&IãNòw÷ÿD5Ib’$I’@˜$Ba Lp’4îþÝý?QM’˜$I`a’@! „00â@ظ!„wÿO4I’B! „B!„B!„B!„âîáýkLî[w£ª*¢*nInÛFr;Ç‘ÛÆìîc}ãþý»›ÛFrÛ¶sûÿoÿÿïÿÿïÿßÝ?öû÷v÷öܶÿß½ûÿÿþ÷^ßÝ*¶q«ÚÝWýþ_ÿ«ªWU¯ªªjw' nÜI’îVͯšD“$‰I’$I’$I`ºY,²1q‘ì.TU…PIªªª*T,’D,ID‹Ý=nkÜÃÛº›ÛÆ"Éä¶mã¶mã¶mÛ¶­»ÿûÆýã¿»·ýä¶ýßþÿÿþÿÿÿÿÿÿÿÝ}5[Åv÷U¿ÿ×ÿªú«ê¯ªWÕîN’4î$ÁÝ­š_5‰&I“$I’$I’$Ý]UU‹¬ªîÂUE„ªªÈBUUU…ªªª UUUªªªênr[ã&·u7ñ6In$·m#·m#·mã¶mÝýÿoÜÿÿîÞð%·íÿöÿÿ÷ÿÿÿÿÿÿÿïî«6nÕt÷çûý¯ª¿ªþªzUíî$IãN’t·*þU“h’$1I’$I’$IÒÝE’»H²»Š$« G’Å"I²X$9‹$ÉbwÛ7·¿»¹m,o#¹mÛ¸mÛ¸}ß¶íëîÿãþ»{ÛNnÃÿ·ÿÿ¿ÿÿÿÿÿÿÿw_µq«ÚÝWýþû_UUýUõª±»“$;IÒݪùUƒ£I’Ä$I’$I’$Iwoÿ7÷¿»¹m#÷ÿÛŽÿÿûÿÿûÿÿûÿw÷ÿÛ¸ÿkwoÛÇíÿ¿ýøÿ÷ÿÿÿÿþÿÿw·ª[5Ý}Õï¿ú_ÅêUÕkTUcw'Iw’¤»Uó«&Ñ$Á‰I’$I’$I’î¾jãþ5ݽÿÿwUUõŠU¯ª¹ªÝ­1Û˜t÷Uÿ_Õ_U½Ç\cŒjìî$IãNØÝªñj’h’$1Ip’$I’$Iw›$Û$éî«êM’Ä$Ib’$1 Nb’¤»ظaw«F5I“$‰00 L˜î„6î@aw›$‰B!„Â@!„0B! „büî_=îß¿»¹ý·ÿ?÷_ÝÿëÿÿÞÿþÝÇú7þýÙÝ$9’ûÿŸûÿÿÿÿÿÿÿÿÿî>öoÜ÷®»ÿÜöÿÿ½ÿÿÿþ÷^ow+ÖÆ­úîþõûÿÿ¿ªzUUUUUÓÝIpw’¼»“Ä«&¹I’Ä$I’$I’$0_÷¯ø¸yÿw“û?Dîß¹ýzþ»žÿçåÿ¯›ÜÆÆÄÛØM’$"I’$·ãÆã¶mÛ¶íÝýû7îãÝýÿã¶ýçþÿÿþÿÿÿÿÿÿÿv··bßÝ¿žÿÿÿWÕ_U¯ª^UÓÝI’Æ¿»“Ä«&¹I’Ä$I’$I’$É»ûÓ7ïñº‹Û?Dîß¹ýzþ»žÿçåÿ³»¹Émì&ÞFD’$InÉÉmÛ¸mÛ»ûÿ߸ÿŸÝ}|ÇmûÏýÿÿýÿÿÿÿÿÿÿínU·šw÷sþÿÿ_UU½ªzUMw'Iw’¼»“`¯šä&I“$I’$I’$ïî_߸yÿw“;þŠÜ¿sûõûwýþ/wÿ¿îÞö7n´mc71«¸m+rû_çWÛø½¶Ý]UD!„HVU‘…«ŠU¬bY,«Èb‘$‹EVw“$jÜ$É.’d1I²H’d‘$ÉâH’E’$€3X¦LØ0âÀŠ!v0ƒÜF2ŸGÇü“I’$“D’¤ÌL’$333“Ì$33É|>33óùÛþÿ£ûoû&™™þ'ùÿÿóÿÿÿÿþÿÿk[U£«ú¶ÿüÚÿªú«êUÖ«ÔmªŽNõÛT{•Ô§ª¦ªªªªê·ýÕèþþm$ófæŸþÌÿ+þÿ:ÿÿþm̯ёÿyI2ÿL2ó£'™ÿŠüùuþÏýüÿ߯ÌüÑ‘Ìçm$É|&IfffJ2ŸùL2óÏgæ3ÿÌüó6fæŽd>o#Iff’dfffÊ|fþ™þÏÌÿæó·ñÿŽÿx333ÉÿæÓÿÿÿÿÿÿÿÿÿÿßö¿î/ÞöÿÌÌÿæŸÖÿWýÿ«ÿÿ«mU®òÛþwþ_ý¯hõªªÒªJݦêèT¿MµW©O•jªª*TUѶ^ŽîÕ·1ÿÿ¯â¿¨r•ÆUWµ_Ž«ocæWüÿÿ/¿ªøUÅ¯ÚÆÿÿ}3¿âÿ¯óÿwÊñ_ÿÕ6þßèøïÛ˜ùÿùÿÿóÿ÷Ó¿ÿõ׫¿¾ÿ7:~}3ÿ?ÿÿÿÿÿiýõWÕ_µ­ªÑ½ü¶ÿÿÿªÿ¯ªŠVUUVUÛ2é·ýïÿ«ú«ªRjVjV©ÛTж©öJµTÕT©ª€ª ¸­ÊÑ=mÛ_æ«Ò—ªÏ¤ZªZªÛªÝ˶ýe½*}™öJ©•©•º­ÊѽlÛ_Õ«Ê—e¯4ZYZi۪ݫ¶ýU½ªzUöJ“–¦•¶­ÊѽlÛ_Õ«ªWe•šÑ4­´m•ŽîiÛþª^••¥¦ª&U5U·©::Õ¶UU©jªªªª*UUÕmB8:´MµJUSU„ P¡ `[BŒ.…Û*¤ …€)‘HlKÅèR¸­RMU‘BÀ€H)RÀm©] ·Uª©ª©¦"M·¥:ºT·Uª©ª©¦"¨nKut©n«TSUSL!„ HÜ–êèRÝV©¦ª¦ ¨B!  p›*F§€Û*ÕTU… @ lŒܦª €”¶­Òѽþmüÿ?ÉÿW}¿Ú{Z¯¢¼ýÕéøýÛHþ&Iæ^|~Õ®þ¿zÿû·Óþ¾Çä¶ÿÌ$óÿÿÿëýÿûÿWェmÑúèªó¶êLþÿÿWU¯ª^U½ªÜ¦ÔF§ÆÛªŸ«ª›ª©ª©ª©Ð¶½¨£{ýÛ˜ÿÿ$ÿ½Èÿ¦ÿŸö?­ÿuÞþ¢§#ßÿ$ù?’$ÿ|’ùUüsuþ_ÿø¿Ÿ=ý™Ü˜™I’™™™ÉÿÿÏÿÿÿÿÿÿÿÿ¾­ê£‹Æ¼­:“ÿÿŸ¬WUýUõW•ÛTÒx[õ“UÕMÕ«ªWU¯ªm{éè^ôÛHþÿ“ü÷"ÿ›þÚÿ´þ×·«Ó‘/Ê‘äÿLH’üóIæW‘?W'ÿ×#ÿøÛþŸý&nLI2333yþÿ“ÿÿŸüÿÿäÿ¿o«úè*&·E;“ÿÿŸ¬WUýUõW•ÛTo+ú“UÕMÕ«ªWU¯ªm{éè^ÿ6æÓÿ$ÿ½Èÿ¦ÿŸö?­ÿõm5:~ÿ7’äè™H2ÿ|’ùUüsvþ¯ÿÎÛ˜¹Ž™™ÉIþ)I$’ÌÌL$Iþ"3ùÎDfî|"ó™ÜF’$!áè I’$I’$™$R"É$I’D’$I"I$‰$‘$I’$I’$’$I’D’ämÌgÂÑñOG23“D"I™™$‰ÌÌÌLdfff"óùÌDf>ó·ý?îÉ™Ï$‘™þÌäùÿÏÿÿŸÿ÷Ÿÿ¿¾­ê£«˜·Ugò?í'ëÕ_Ueý•æ6ÕF§ÆÛªŸ¬¢uSõªêUÕ«jÛ^:º×¿ÿÿ'ù§/þoúÿÁþ믾íÏF÷÷o#ùÿO2?ú3ÿUÿŸýÿíý¯oû_£ãÿßF’üÿ$3=ó_Åÿ«óÿúùÿ¿íü>:þ™·‘$ÿ'™™¦ÌÿùçÿüŸÿÿ?ÿÿ·ýÿG÷Ǽ™™™ÿÿçÓÿÿÿÿÿÿÿÿÿÿÿ¶¿t/æmÌgfþÿŸZÿ_õÿ¯þÿ¯ÚVõÑ•çmÕ™ÿêçŠV¯ª^Z½ÒܦÚèÔx[õs¥uSªWU¯B½*l[ GWÖ6~Uÿ«ú‹ªUUYiÛ*]õoã¿êÿ«þ'ÕWj¯´^Õ¶¿Ýë߯ÕÿWýÑ^U½ªzÕ·ý¯Ñ½ÎÛøÿÿÿÿÿÿÑÿU½^õêßöW£{·ñÿŸÿÿÿÿÿý´Wõú«j[U£+ÏÛþÿÿ«þªêE«^U¾ªÜfÖèÒó¶êÿ«ú«ªRjVjV©nSmtо­ì/µ®ª¦J5ÔTnSÑ¥ºíOµJµ©0ÐTݦêèÒÚö§öJµT5Uª©ª©¶­ÒÑ•µí¯êUY™jªRSUSk[e£+kÛ_Õ«ª*«Ò”¦ª¥Ö¶ÊFWÖ¶¿ªªª*­R5ªª¥Ö¶ÒF—Ö¶¿ªª¬,5U5©ª©ê6UG§Ö¶ªJUSUUUU©ªªb›BG'PÛÊ*UMUU*@…*lF' ÛRP@ @nSÑ)l[ªªªP¡€Ðm*¶¥ªªªªB„ªt›ª£Sm[ª¦ªª*T@H ÛTjÛR5UUU¡ *@)ݦÂÑ)l[ª¦ªª*T@P) Ûpt¶-US*P(€m€Ñ°mªª€@Jó•}+utϾ™_gþ«ø¯”ßÓ^ý´WõVåè^ñ6"É\'ò_ü+å÷´WôU½W5ºW¼H2ù¯Gò«â÷¬WÑÊÖ«Ý«o#™_Lä¿ɯŠß³^ýyZ¶½üG÷oãÿÿ™ÿþóÿ×ÿžï½§Eµmi.‹·ñÿþ¿ªþªz¥U•ªRݦêèTyÛÿ÷WU•š¦ª¦ ÛÑA m¥–ªšªP@¨^¯úvZÿ(¿Ÿ¸$IòL2ÿýgþÿŸÿ¿ÿÿ_UÕ¶h5º*ÞÆüŸùÿÿþWõWU¯ÒTu›R)oûÿøUÕ«ªRÍJT@· ©£ƒ@ÛJ-U5UU@¨~>ó™7æóy”¤ü7’$I’‰$333“ÌÌÌÌ|þùÌ|~½zmëõÑocþÏüÿÿùÿÿÿUï¥UÖ¶ÌFgTÞöÿñ«ªWUeš•)T@· áè´m¥–ª–ªªªŸ™™ÏÛ˜%ù?¹‘ô?“$333“ÌÌÌÌ|æó™ùÌõ¿ÿÛþ÷ÑýÅÛ˜Ö™ÿÿ?ÿÿÿÿÕûÿª*k[f£+åm?-~UõªªJ«RUt›ŽN¶•ÔRÕRUUª üçóÿmü÷ÑñÞ˜ÿŸ™éþÿÿÿÿÿïÿÿ×ßû¶^Ý+ÞöÿgþiýÕë¯^ÿ+«¬m™®ôÛ^õW´zUU¥Y™ªºMG§@ÛJ-Uj©ª*UªWµ­ªÑ½ú¶ªzUUѪªªªÊ*m[j£Ký¶ªz©UJÍJÕJUÐmB8:Ú–j©PS¥ªPU@MÕmªŽ.µm©ZªªªªJUU*·€£@ÛT5  B¨PØÜ€(M3á6]úo㿊_ª¯ pK Lifi›©£+ÿm$sÿiq¥zK-ÓhYY³jtÕ¿$¹:ùW+«WV•Í̪ªÑUÿ6f®3ù×;¿ª¿²ª,£e­²]uÞÆgæWß«þʪ2-ªµ¥Õè,æmÌÜù¯ª¿ª^iU™jTݦÚèÔó¶ÿ«ªJMSUSÛ àèÎÛªºªšªP@¨L3©ÛT`té¿ÿ*~©r[eú|%ýVjtÏ‘äê$ÿUügúzÚ«ª^µV­"‰Û˜ùÌÿÿ÷¿ª¿ªzU¦©n“j£KÏÛþw®ª^U•jV*  Å6HutçmU±ªšªª T–™p›I1ºò߯¿T¹‚ð–°Ì^\Ù·ž4:®ÿ‘äêDæWñŸ%×˸ª×ßÛþ:žIܘ™™‰ÿÿŸÿÿÿ_õþWYe¹Í¬ÑE=oûß¹ªzUU¦Y™Bê6 çmU±ªšªªª€e%ÜVêèJúmüWñË”+¨¯Ôªz½²m½ŠŽ+ú$¹:Éü*þÓz]ëUýÿÿ¶ýGÿ"Éi1“ÿÿŸÿÿÿÿêýUUÕ¶²F—ž·Ö¹ªzUU¥U©š u„N=o+Z¬ª¦ª¦š*,oê6SG÷ü·ñO+~©¾z ZfïïÙ¶^îÿÿùÑÎüWýOûûíÕëì¯mÿktäÿÿcæ¢gæWñÿêÜ_?÷ÿÌäù}ÿÌ£#™ÿ“ÌÌ?SfþùçŸù?ÿÿþÿ3ÿÿ¿íÿytÿ™ÇÿÏçÓÿ?ÿÿþÿ?þÿ¿þÞÛöúGW1oÿÿóOëÿ«^õú_YeµÍì£KÏ۪έ^UUjVªªBÝa£SÏÛÒbUª©ªª€ª Ó«p›©£KkÛŸÚŸT­` ©V¯t[U£{Õ¶ÿjIõ•Ú+­—U¯j[U£ãªmÿ«þ*Ú«ªWU¯úÿÿµíU£ã÷oûÿ÷¿WôUÕ«ªWÿù}Û«îõoûÿþ÷W§UõªêUÕ«j[Y£«þmU½ªªhUUeUe¥Ö6µF§þÛªz©UJÍJÕJUU¨Û ttjߦÚU¨©RUTU@xئ£Ku[ÀRH¥€©€¦ª^Õmiî¥Û*ÕRÕT©¦ª¦Z½ÒmeîUÛª²2ÕT¥¦ª¦V½²mÏÝ«¶UUUZeMÕJ­zU۪ݫ¶UUUZeZTÕJ­ª´mi®ªmUV––š–TµTµTu›j£Sk›ª©ª©ª©TMU¡Ðmttj›ª)U*@…*¶ £KÛTP@€ ªÛ:ºT·© €@ €TUu›ª£Ku›ªª ¨ €*5UݦêèRݦªªª…@TSÕmªŽ.Õmªª*  P¤ÔTá6…Ž.Õmªª*  (ÔTÀm::U·©B…(À6ptt@”lŒN ¶½ød€¥@ ± €ŽNXÛþ«=UÍTMÔ„ Sè6¡ŽN­mÿµ?ÕÊTMÒ„j©ºMÕÑ©}ÛíO«ªÔR…Qµ„ºMÕÑ©}ÛKã§UUi©Â¤4ˆmBÚ·UÚŸš•ª©  ÛÅè }[¥•ª¦ª¦ (¶F oSa P ¨–JµTÛR]ZÛ˜_Å/U.UŸ¥–µ,se.û·‘üê䫊+«WY¥-­ªªÑU}óëL¾zçWõWY¥U4«UU£«þmÿë̯:¿Wý•–j–TmSËÑYÌÛþ×ÿªzUõJMUM¥ê6UG§öm•½T-U-U@*@u€¾MÕ€*@UUUUmѪÑ*&·ý/þ«êUÕ«´R³Rk›ÔÚ·UõR«T³R…* *ݦÔF'ìÛTMUUU ú_¯¿ú·ªóèi1¹ýÿÏõþ^¯¿—•YUZÛÒ>ºh}[U¯´*5+UUUØ6µF§´oSõªª @U÷ÿõþWÿ¶ÿÌ£ÿÿo§õÿUïUÿ_Y©U©µ-GWõmÑê•V¥f¥j* )Û¦ÖèÔ¾M©¦ª¦4¨¿ªþÊÛÿtUmUõ¢U¯*_UVj•jmSûèªÚ¦V)5+U+U¨ª°mjN­mBMU€PÔTµTm›Z£Su›ªªªªTUU¡PݦÖèTÝ@„ P@ݦêèÛ(gaviotatb-0.4.orig/gtb/gtb3/0000755000175000017500000000000011536321052014755 5ustar varunvarungaviotatb-0.4.orig/gtb/gtb3/kpk.gtb.cp30000644000175000017500000010433211536321052016727 0ustar varunvarun@\\¦,'!26>K#V÷_¼h>r?}ÚˆxÚ¥[»Öì(¯t//8è`ÞÿR•@`÷×ýŸí™Y5½·ËJ€nÞ÷ré±ïÕ°4x·£Vƒ†o ~¾÷ ¸íü݈z8\æªÛIŠÐø ßðÕˆÒŽ¬hh|»Òr@ã·x(±”’ .dü†àõëôË_ɯڈ)5JÜüÒ5<ÇG¾€x;~úþø7þ4x†ÿ~»3¨ïÿ¶á¥zí9þ•ãßn Å\E=UH­íuü õþö.ñìúÀ͸êçú;&¿`†à:T¾Åû·?=’É–O·á…êó±oÀ [Õô‡äT¤Ú…È—oüEÿS0¥þÈ¿ ‘c'Ë âýëxLºUâu›E7þ™Ÿõïv ¡_¥~ÀãLúó®Â¡€_ɯà7ý޳è´=ƒð•€I„ã'6~íü#¥³¨þ‰ú«œR §^¸à<ã«FÐùZÎäúw;ÈÍìúp"÷ ¸íüãöO9ϳëO¬Ñl=™î_üþöÇå<îë@ÀêæL~ÏÁÉdzþŽ"ŽÐ_ùX'õÏe00¯^o·‡¦ŸP¡þ4¥ltf}ñ–+ì@¨ŸÐþoãxûüw;ÈŽC¥ãý¡Cã'Ó?gÕúw;€ffeߊYǦ'Ùy¹ý—ÈÍ‹þÆÂí)KÖûë©äÛU%ÛþÑQ i±˜Ïú§DÓßv |#dÕ_ÈWôwœõ¯ÃÚûÛ²âö§ïU9?mC(Âu~ïH{Xõw»1Ó–Ì›ætÓ¿¿ÊV¨?0sd‰â×ãü÷õ ïû–9ÿ²ŸO! –BqþwL ë¾™ÔíýÄïtãã1€®û´.´ûë‘6ÝtÚªãºN(ÐÅçXR¿vVJ¦æ¼çù7|°è¯÷Wp>üÇá?¬ë€ò/3Ó¿­Ây-M¨¿Èý÷Y_Â`F¶RñzõYâÖ—FßE}…\V¼e=ØiÛþ’pEîÇÒ×…}6þKõçye¾}@óÄÝ;ÕßìAõ%Õ¿>òã[D;PýÕ_0ý_Ô/žO!¯ˆ˜LCÕ?½^×ÓùŽý‡›þà7ýuXÿé¸9¨×³ç׃ìþÔÉß»"Ú_øz0ôïnÞo|\ è¿ñW>ôoaÊ?±é§r¦Îÿào/½Ï%ªþj³NŸùúïŸý¼èÿ\õßÅ}>®å÷ÎpwG~è>v¬ü ú·%íäßôÿ‘_ÁWÿDÓ¿ÙÁÿzß> \àšýؾ¡¿í·á¾xMžú†…Dýµ?£}C¾gYõÿÄ›p\¦¬úë`øº®§d¬ûïÌ€?_Ž÷S&ÂÚ†ýœŠd\¾fÜh7;Àƒ:žœß‰+aæ㟧ÉÑ7ìïtËÂïH~%¿ùŸ¦cs_±¾g[RÊÏü Çà,ƒL‡ †øå¿¸ƒÈÅ­mðË>½êݽo±X½íG ÞÐú¸ãVcG¼Ÿêl y¡Ûø¯úûV•¨ÿŠŸô_ì &N˜7€;hÓ_=±óÙí q;þÆOæ¶õ?2ó9ÚAàç|ó7=@pý‰êÇMv>ó;ˆ M=C“xQÿˆªä§ò¬¿cÚBª_¥~ó/—O!‹ý=A‰¸¾ÿq‡Žv`º:Ò5:e?ÙÀœçqæ¡ÿbíïé &ñ¸}co·kqARñÛ¿ðëR¦þŒûÈëH~q~67þ<©ÿIýËdà×ÈÇqOúw¬°Äm›!ߟirÞõ¿lvCwn”|×?yàÿ y GýS‚þ „žºZã?Éx„ € €“ ÿ]w³‡fÝý7»›~ÊG$Ö. RÐÏ?‘P*gqD`·1߀«âíËNúÏv€¸Ý¸ >HÍd3dCÔžì@³¸¿ñ‘•(°BFÁÉ'Óпv;Ð(öC¾ +bæ‰å"õ}àWý°ÚþJWÊðAUaÒÿ½3þÇÍHðñÈ#î³ F]ÿ¼»Ý`~¶¸¿é-)s¾Qêíúcªä#‡^73Ô‚ºŸÁÌïß²é—wò7>¦+t×­“=èý•ÖÆ/©Õñv¹#§{ܾÌ~tÓiö“ç½.#äAgÅ:¯Õý>³Ÿû9Æ›ÅõñnÔßíç(\— 5Š—íû}˜ôoÓzšÿ÷ȵү¹åÄ1êOM(»cu?ð\ôO=ý;Ÿ±î·‰;Öƒf;üÅvÿ—÷&^žv Œû7Ã]éLýþÌ~d+õß%ÎÄ}@»%šþ!óƒl ±þ¼^=ïÀó%€L‹fƾý¯£ùò: ÓüŽÃÿ'Rÿ÷¨õùýOÇâß^Žyñ£„<€—Xw˜LL$ýÍo,X1LsÌ+Â¥èoóÏâÿOüÒ¨ÿ¹#€©Ü¿»þÆ»þ>»ßׂïBô¸/W×_&ý¯%Oðÿûï?Æ‹ÿ‘oѱðL7v,ÄLtÿñ\ôÿ‰ù:CýCè;ßÒÑgÈH©óh¯XX=u;¡þ‰úŸßøB¾ ~ôÿ“7#ùWO Ô½§á˜–Óõ<æGý_ˆLÈ•‡ æÈHÉÀ @ºi…uŸÐî°ÖoüDÏóüLûzºg”¡½’º±¾×ÿOÏ÷÷|.øåß|ùQçÉäg¦Ë­ N>x„€|wñä¨ó~àc±gÐíuŸªÛ†‰&LgÕžÎ"Ÿx]õgÜ×õ¿á†ÿºJ,]{fÍÑí¡ÌúÙznPìvÐë¿îg”9¬‰õØúÓ¶]{I¾ñYÿ?{ývÀº€ÛCÈÐ/|º$Çè€ß‡ó¿óïúOõ¾ÒÒõ¸ÐAGSõŠ*„þ‹ü‹|¯@ý§8Ðê÷Í„ ƒ\¿ìó÷(ú;¨Žöä×ì÷?Ïõ§ßïvP½nLGú‰€¯õßdñ¿ÙzæÙõw{™x:ÀÊ84þŸëÿ)õú¯WnÁ/ à‹• QÿϱþO;ÐúÔ¸.‘϶ 3D>Õ}Gÿ@ÁÐ|›bmøžõë‘ü‹ü“‰-­@?élúgx†Q=“PI©×ºªçùCèõûšhÿ]`)³”¾ô%æ2Ò Æú Ãÿœ,ú£Þ'9ÔÿKà øBvÂ#ÄúìÐ3­Ó#›þvyå[ø t¤R¬ÿÃßWý±Fšg!_ȇþVÿ·¸îÏú»U%¿’ÝK"fv Eýk·þúÌ—'èØdî4%?ëoëCÐ?1à”ç  7ýý\ÿSùõÿ>O¹ œÔ?ñ·ëîà8øÿsýêQ‘5€·õ¦ZÀ»@À‡•Lõÿµ/h³€¶Ý4¾ÕÍšb€i•¡{X’%0ÔN48ï=m ùký¿2`ú7>t—ÐëÿuY`H $蟸?ź½áƒþÏ¿¨ÿm¯·ÖGý•z¾ïŸ±üß/SËhmëù` y€ƒú/ö Äæô§¬çŽŽÀ—¥}À‡F]¤vÔ Úý{ýÿo>ýî  ±Âèߨ}WýõùQÿé‚á¥.ì€ „ ëÇëCÅ¿ú_WÔ§þòƒßêþžÊêýÿÔPcAð“ø»û}4$ÎQÿÿ…¯~$HAÖÿáû:P¨ÿ‰Bô~|ãO}¤‹þÅŨßTvÀÂÅòSåØã>ÇUÿm$B"àÿòNUÿ©@ýzÿ¸0q`ï.LVßËö«ý­v`~Ænûç¯|æiy`#QJŸø×ÜÓùÔ¿Pÿó3nCèöpÓÿ7~ôÿkÐß[T=¯ãý€ÞBN}à‚@eùÖÿÏF0ï÷ð¾Ñ‚ÈÀžK^÷€7¬±/ǨQÁ<'¿JÄą…ïq«o¥÷ƒMøß㾩ï[Œ3|æÇ=NF¿ïÏ|ÄØ˜”îÿ×êÙ“5‹¢çƒÏ |{fw93ýÿÂkömËÔRX¨Ÿ0€ÿäªzƒÛÁ'¾ÇÿÇì÷ë~ëv0m‘…´0€>§ø¿2Á¾!b¬ÀJw€±žgúyÒãÿØWX¤r3¿¬ýÿ=·xåËÂ÷çÉDf;[ÅÀ¯ ŸõçoÆ}nbþÅ€ýû7ý=3ßí #ô+¬ _Z×óèˆaýœÿÿ;Ðz`ä‹ó{~²ÿ?±ÿß1{?PÉÐEߨîXôÿwý§ø¯ä »ÎÌ/6†÷þÿØî7‡¹€OýQMÇ{ÝW;(âÙ,=|ê_ I>ŸõïëAö`úêßBŒo*®»Lú{_H¦þ)Cÿ̾󿄮ZAÅyÐß+ØÉ:'¬ö.qXí!ûßg° àM¹ÿ¯ýÿþ:ã>c?Cÿòÿw,v£Â pFQÐöâÙ>öÿ'ÄÈo€oúsr(6ž¦inhñ!ø¦¶ø?èoñÿƒþ¾>èçqH \ ú¼¤þ¾ÿ¯ýÞŽ®ÿq@ÿÌP• ×>ß?ÙA:¡ã¿wŒ‰÷ñ™PÈëá ý_Ê<=Cüïóêÿgçý†~¡k_úÿ§Ï˜yÀ‚¡ñ›½4¾.^LȆ¸Ï÷‡dû‡u›(ó~|2÷ÿ¯ù@ñ ¤ÙIÿÆçÚœ©oŽó½.ú[–ú'辿™÷{ÿ=ô/ÝïWý_ àKpÊtÂzÿô ƒ:$¯ô~Ú´ßûþß×D¯ûôûÍþJØÞ,ÿ/ýÿ^/èúËŸ‡wçõï@4óÔñ?-ÏûôÕA| [XÿÇ÷…ûaú¿ ÿ=kѱLû@¨@›þ/ôÿ?oÅú¬¿þÖõãx CÃÞ0:&{Xõ÷ âïüñ 2QÐ_XÙôï=çN†ê}Ûn¶ö ÿtÈò¡æ é¿õïÀ¬Rió_å<ëO‡xÌ›%ê¯ñÿò±Á3ò³æUÿñhý ý‹gyõûnÆwþ›ñžÇ…­úÂbõ@ÓV~O$ü®LVýáÿöÀ¤.ßD{êëJߎ{ÿþt|ú’ÂÒ8—öƒê úש߯„¾ÿ±®Ù‚€ÄôoûöþbÌ'îðÿÐÿÿ×±ÚxB×?~ìpÇJ-‰¾ÿýÿ0š¤xÚ­[±’ì( ¤ÊµìÿÿÜ!©…ØÙwNúæÞ4kÓ2¨%fÛ_Û–Nº¢ÀN|<7cÍÄçmÛ"]yœ(Ã%áçÿ ?%ágÄgÇ„ 䔟Ú+ó3_ŸÏÄù‰ ú*?S3ѹHS°)?~Ãçb’&·?åëäEaû–/ßÞŠŠ˜nȇéÿ0ÿ[§?F8#FÐxXÕ¿ÄAldvÿ?"_°(È*@ü~?Z ï=«@E½£öÊ|ÆÌÄçL%ù¬½‡Ë|è!ú8`Æ5¡ŸÄûññüÏñü:K•Š Þ¯ãxþbt±×¿Å€¨ôoô;lÞº¢¾3ýÃÓ†sà; ç/ǵž.Gq¼È™Çó¤ ©•6|_øñ™É2¯Þk ”Æ0f¾ >óåCã ¶q€ÛŸÿ}ùwôqÛ@?‚ _Ô n¬‰ƒ€ù˜ÿý•˜|ë_p¢¿£ƒÐ³8¨ôoâß:™BBþŒgvNõ'ÉXWÅA~ù{¬ŸÇ圽‘ý@ä¤uEPø™×ñåîiý¸1½âŒýñy7‹<¿Güx<¿oôÿ#ý%eƒXçu¸q¬¿—%(óçô1žë/^!/ú—éÖ Ø¿Â÷¾E¼ÿüTÁÌ÷˜ˆ?âߺWús\?‡‰Ë|ª» Äëî»u€ø„–ž?xgéþsÀA÷à‡ØëO ú;ž¿þÐy‡b cý™Ï2AzKþé Ð_×ùqýñ¤º@ÆæóýeùÕmx†²°þ¼þJ¾ úwt8¢?ÇÄéŸ÷>ýùý¥}Bôßý¶é1nÐOôO¬¿ýóR—F÷ú3ŸõO]žß£^Ûv5ëÀ¶™´r•üoU†cì3ž7ä…¦ŠQ‘O„$¼ãGâ`/Ù`!1²Øñ|?‘柀þüþS|Ãèÿô ±Éÿ+äý[ôdýuu¿6óпvévcÜJ~Ñ®Ë|“°ÿȪÿ:ßþÆù¯ Ðñ§Xå/<€èïÝø¼¬C÷òú¬ü[£ÿøþß×Ï0˜À ÐÀÎüL€n@ ÄQù>ÄȾOùÖKÞß¾å«ÿ‡qôßòñìN÷ùôþÜ÷½óÕÿ‰x½{¿õ‡~ ú%è—ºÊÁ#Gú×ï1nýYz¹ÿïñ#ºË FDïãqÈ:.q%xå[&Z[ê@ØïWùÈï÷.¾â‡Y²\íB2‡ÿ7åßC§©!À?Á?Á'ôa¬¿"üÁTÿÃ}.aè=Ò_ô“Zõ?&þ2á86~ÿ¿:åmF|¼a-§qÖ }_ðo|ÎúÝ¡¾¿÷ÿšÏ¹áÃÿ›X>š&ñý´`IØÿ3"í÷cýKè?…¯ú{ìÄ3ÿodþ/ô¿xýEÉúWßwAÿú_xÿÔÿÇÚÿÿ'>ô?1ÿôc×–e žUëû+ýNöáÌ§Òøÿ¬ cwï­ÿc>Eñ3ƒùÅõÁÇiAéâÀ±þùl%~<ª·ÿŸM¢èëØÿQü8Õqâ›z`…³ø©cSï{ÄÁÕèš‹õôØq{”|¿3Ào|ÍïÔ÷iCl™¯yÖùoùÚÿ×Bqü’_ö¸º(ú_·îGèËP¢øçÍïõïã@qUEß6"¦÷@>×÷»ØÀ@ÈýÎãÐÿEh•¯ýÄA©…E¾úè¯q°Ìoj56eiðøðï¯ ÝÁ¸ïWÕ&ü=Æù£ú¡þT¿Á“Î|Ÿö§ú£ÿõüáãü¶îÔ‰scÿ¯~ÀÀxö?úÿ„âÿp Ä¿ñ¥ë{÷ÿ¡¿mãü~¼ùbÜKÿÂÇrÔ7Lûÿ1@ÿý ßBÇú+ŸŒßxeú/÷ÿáÛ_úÿZ`Iaoî×'ýÿ„ñOåôÿYÇ}ÝYÿŸùOø¶¿ºrû‚â‰ø|ñÿÎZØx;ÒŸëü¬øñæCÿ×þ?ôwÐßIüH½@õêÿqÐê_Å×·¯ê@ÊÆ@úSwæ¼dÿ„ooþ_¶#âsÞ•ù]ÿ¿9Э<€dEˆ—ò´ïçýï â§›ç ·îŠâ<œc¾£:qæÝQÇ!ÔS ­þ?œïñßϾŸ âÿ)Lñž»YÿßÀ@D?kõ bÛÿa¬¿ò£‡þNë³ußu ¡þ4 ýQßÕ}®©÷†8ƒ·5“¨èÿŸúÁ]x"òB=¶©¬ÁÜýÿÇ@[u„êƒ&ÚÒÿÿ| ˆÐßb ÖÿÐþøTxêüß ÿºçþIùÞ §øþ{ý·Mô‹¶Ñ¿éÿ®NøxBö¾¡?¯;G=êQ@Ð|a™Êy9Ibí*úGèïa UþPÿAÿZ?êÿîÿÕÿ3Ö™*¿ÕÕ¿žÂ×8HøÖ~ŇlÚ*“8ðµÿ_àŸ88‡‚èÂkû_£ùïÙüâñÖ¿Õúÿ…¯ú7þë6*Š¥ a" àÃÿ÷;Ql0Á€$d«2}¬O´†î\΄¯yèàûDÁ„÷yb{`x‘?>ïÛÔ£_ù£ó¾«| ê¶ÞÃãg Öë¯+J¯# DB™BáoÃþï*oÏÿßu ~#‡„RSÎÿ»®ß÷؈'ʹºÿïÝ}î{_|ŸÖîŽÓÿíÜwAða€ pëÿˆƒÀOà'ð7Ö_ÑÃQxè硟‡~Ç?>BéëA?ß$ Ôÿ¿ý¥ðÂ×óÿÖÖþ¿ª¨€÷0ð%výù_ tŠ_n¾òÿƒóߟ Òì´ûÇI¤(?‚ÁýÑ7Žâ`¦¿ïû¶cÉÏŸ Ÿÿ%—×Ý_9 ç?œûΈw—@wIà@Ü)VqPf}Ÿ?s`|þPhù^øô="Ùêü%¸‹øü™ø ‹‡èÏÿÛ².p¿~ þ/ü¾×>0ÎŒ&Q .Êýg~«ÿ¼ÿßê (°ê´‚Àú;è¿_|€(•÷³ÃÑO(›8.1ð;ÈsìÿÝ«x ¬D tûIüÙùÿúý&1 6I çì@Öÿ/€ü}â_„Ä/þß°úý‡“DŽæsߘø{wúazþ¿1WŽþŸÝõGˆoýÿ÷ßCÿý±OwØëÏ$ãôÿ`¼Ÿú'ü„!ãÏÏÉÙÏÄ8ß¿Œªê€ôý„}7¨|ÿcýàýÒí}"éÿÓ‹kÔÿkºPaý4ø™„ø>é Rؤ}ßÊOý9k§ùÿùæ{ìõçϬÿ¬bðŒƒVvç¼âðä‹_ýå$JU¹x`ïôw¡þm¯³´OWíßi½Ñu€3UݵޯÛlU~€u{éJ(WI(ÈOöEûôOµþ÷ùÀwþP­îÍßêÿ8¹ØïqXõ3žz¾(Há¡ÿëù;ž6ƒ ëÁ]÷\8?’¤Q‰â>azçëEúã—œUAQ³ã…ßÁä?lðKV06÷yñ•s4’ÿöú/Úÿt">;ýÿ!9C=xÚ­[­Öä*ìs¢®¸bDDˆ@ FDDÌû¿Ôºš¿@Hv/+jg÷+’¡:¡«›oYl ° ¤H5.˲‡!ZBðwðw¢ Mš 0ð#R ê}0ÁŒÏ·®5¾‚ù~œ \ƒ·ü½]Ä·ü}iU|¼þ-SpÿCýÛ¯0»ÿÕŒq`š f|­£|ZL”Gà üˆT£Ž(U« f|”Lð„oÆ‹hðý ¾¿!ªQôïã“积Âý£~¦ '×ÿ(—@aÑT³ˆ³õÛ6¥¼†J)ÄAÓ«Š 4ø|MT£ŠÃÏ’©ÆÀ?"ÕÈC}š8Ђ³ë#”éÇÙ÷‡Ìzó÷ž÷a»Ó_ãô8ÜèúQ?ÍKß]pÞéCèmcù$bìë§T¡¿(ïAO (ðøJø€­Ä@ ëpįôïÄAÔ?À ~ðšÐ£8`ý™ßÓùË!˜pÆí鯠{FS½²þÀBÿøäáTº­þÀVÿš/Ó@ ýUÐÑ&› ü¼Áfbð—òùý#†û×j„­þü±Ð_7º_²‡Fæ:Èë8Š÷@…x ØV÷GûB¹ýÝ‹þ9n.ãBÔßÝs„'z}â D”¼üÛ~œúG^Š¥>õÓs]ƨô‡œ^›Ÿ䟭þ)Œéïúú Lâ`øÅÓý3Às>%þã.¦ù†d‚9_öÏ8I< ¦ß¿ØÃ$ñÀ¸¾á_ô/råzÏÈùÛŽüŸy%Nõg™Ãþß׿5¶õ—8ZléžóñÞÁ42œ¾ð$oá H&˜óÛü·ˆƒ?âWq0_ÿNþ]èÿGüBÿ‘ï“A˜`Á„Pðƺî·㘟D‹GPËc(u€—|I–p¯ùbFþ~}Îû±¯ù3ÿ?ã÷³ö7úÝûÿ·ú·_avÿŸÂÿwì{Ü7‰÷ñˆ„HpS•ÿ×í3>çyqµw0ãã–·Æ÷=æßnŽðýó€¸~ë–ðÞ½ƒoÁ·à¨'þßÓ~?èÿƒî%n“FäCÿt/ñ³r®üøÿÈÇúý°n%~>0€ªkߣï#ö @PEÏØú¾<ÁŒÏfekýª@ ý5tOˆô]â€õGü숛Y%£‡îýNNOøýS(5óüþyÆ´ý}ÜEÿ&Ø€ëêç99`ߥ_¸µ}¿3Ð&âû~âî‡ÔM`ßàÿ~—ü·ãÿÕþEÿ%«p¯?øýçþ1ù~JÏÿm¿ø†ïG¾½þ‰ï¼×öý ?þåäEã‚1æŸlíâRzÂoýS˜à©ÿïú¯‹þ/ù…þˤÿO˜€0Áø Ný?˜``‰§ ªýÿk¾ø¾¡ÿŸð±Ã ûÿø¦èÿ¿æOýÿþMÿúoÁË8õÿ/õ¿øÿÉýoß—ö_(‚"$>‚œçû|}ÐÿŸñ‘ço(\ýÿ„ßøuñÿøå­_ü? Ö¼Œ“þÿ”Ÿû4;ô¯1ðÏúŸÐ½@¥ïKgäCÿºøAã¯Éÿ™õ;±nnÛ½ÿg>çñt·©>S¨µœ( ã/È]ßUüÿÚúæðáÛ ,}c¯ÿOþ¬ÿÿT©\ãÀû¾/ë|Y÷5f¸éÿ}ª¿3ŸuÏêwXBÕïÿÇð†ï|ýèbÿ{ž¨íÿsæê}  ‡xnÿo‚­ÿg‡«ø |%|ØÏ•]Ÿjõß, ë>ÐIß?õUWNßÇú§:Òõ}@0ýu«ÿ5–TI ÎÏ}£üºˆâ\oÎp*$|>l䇋8?ØžýUýUŸQÿÇû4ßPðïk\,ÔüKÿŸïÜû,Ô˜ï}ÿ×ø(ÎU'TTYÑß±PŽ kÀcçx¹ëÿWúKÞGðÿ§øÿ]÷Û—­þÂßóþ3Ð?ÇAÖ¿ìûyýëþÿ°±Tþ Ù·÷~Áÿ}7&1( Ôˆ»yT>h 8Ði—ûÿÃc|çQÚ- I»€Üÿò¡¿†þÚqÚ¾±þŸÏ´þÐÓ_ð¼ôÿ/Ø×?ÅAé?ÅÏ×H}ýž=5ð…þ·~¡Ã·¶)$…hΉ޴ñ—tLxIé>òÆyûß €`P@0¬ ƒ÷Ã=ߢoý ôTÏôÃþÝñÿÓúA•·ú?pñðÍtÑŸ^zýû¾‘ü¿·ßwðc„/ÈWÆ{À<åG¯G8p^ùÿ[~8€áà »à”ßõoWÿÿŽ_èŸ3&è¦þK˜€0Áø ¶Ïs»¿ƒëgÔõùï÷|L þO×;È~Ý8~Ëõ}ßðûÖõ¿Ÿ÷çºæŒ?rŽú1¿o]Ÿò×ïÓiÿc>ò–Œm¿¯ƒ?ùÿÔ0ªãà?Ç”qš\HxÂù>óïÿçüm2qúÐ-ã¿æþ+€ëŸ¸nÆ2îµñ}' 'ø'x‚Þ¹—þ?Õ”øÀ×à%̧ÇUÌï3ÂÿOø<>è¿6ç¿™O>—]ïu´ˆ3~Õ7î¨xBð±n“oÛ‡ï{ë¸`‚ñN( ð6ŽƒÐAöùxǼ„[{€±àÎ|Σ€‘—°9ÿ¯Äÿ ÆýÞíÚàà ý‹8Èñ€TEY.(ËÆ=!îz+±xlh‘ƒÿmø_ñ‹u¹<ûÁ|Òà¿þ×þ¿ƒpÐßAw'¬Fÿk°þ Xwî`ìÿC­H'6Æ…B@ûµKÃ]a!-ÁD:d$_¤)¡üðÿÖ2Jý‡·4…:@Xg¿Ömp°[óë"¿_¹ÿ¾÷m_ÿÇ®ƒåSý-®¼ùø±±6íÿ×úÇÏ…þg[@ìÄA­Ì ý§çïá×YÆðùŸ ~8è03Ð8ªàß6|þ„åÏþÿJçÿD_H © ÈÆ$÷#Ÿ \Ší=Ö üKl]{ç>*dý5 døL\  þÌïê/xØfçúú žzf€Ã/LôôœòcGY€ø}ýœÏ^êˆOØš>Q¯~Œr_õg÷¤€T$Iùaþ½Ñû|npsp`l3ý¸ƒ°£ÿÒæû#ýÉôõ—*ïØ@ZÖŸýŸGèžð©7( ,(D|Tÿ¡\€þ¶<7þ/€|Ðüiªæk³W…ÄW|Šq-'HúÆw þÞê?;ÿýwìÿ{«ÿKikxÚ¥[¡–¬:Ì9|Å#ˆˆˆˆˆ±bÅWÜÿÿ‘—ÒLf—wΫa/ª® 3M‘— ¨ËäÊRÐM@×Çiš-S3À(?T„ja~Aæº>c€q~€øÝ>á÷å_Õ;Eׯ?Âô¿âàñ/Bð¾`”ÏDOË™_ù„®Þà~w€Q~ÿä•å“ú Z7'ó£¡ÿäÖu@o”pÁ5 ì^äÎÍI¤SÎß<Ï‹,D\–SÁw|bÎÇ'#óËyûò1—!pÌ‹"ÑèFêçXªsÀúŒÔO§DðÎÿôËE S ˜ãÓõý¬ô÷¬_©È‡ïÿ‚þŠó,2N"ßB0=èÒ 8‹þe”SÁ'~³TúÏ=ÖO§.úcõ½þÕå¢?øæóã¾T÷Å”pÝרêßy¤Åº˜WáMÿê¨þŠß;U¸XÜô?ë Uhóoús]ðy›_¯æèõðUÿ¥ÖŸëu[ôÆÒÕ¿SÁXúúßëÀÔ?Þô¿ ÜýOýoû·Ÿ uÀhAש/ß?ú‡eÂÝÕ¡œ«QôÖõ‡ó/|!âv|sý6ý?Ü…_ž^ÆåsíZýƒ_žõ×ço«ÿY¦þ"/=ÿëÀÞ¿ ›Ì:OË$åAÇBƒOõ¯|'õ&„+>_?áÚ¿0ñŠï®¿kÿCÄ?â÷êr…Ñ¿ôoÂàUhëï.úëõÞêÿ9ºà§|ýÎîÍh[¹(D÷f€ÿÃD­ƒðy­ƒŸð;úƯôŸ ÿϼ4ÎÄÈÛwкž…Ou<1Êöw´nÃ|c€q~‡ Ph‡f‹ úv€Oø½#å[þß¡&€C´hùÿBûûw>!mÝCë¾.|9~BÙþŽKß¾{á³s„²ý-ÿÏ_|‡í{»¶´|À¯}ß1€C ΡakÑz8þNåGðqÿï íÿ·²°þËÆ]Ô'`ç+l9óñ—íøx»øZ¨¹#cNrþ¶MÎWç#¸Ø÷Eöe;é×zxõ}çÚ÷óùÃö=Dz¡þÿÈ´ïÒ¿\]ý'ý°ý!Ÿïë¯ü÷úßë`åü‡rœ5“Þߌß_ß—õßæ‡aòWÿïáûYÆòáÛQUöŸ°^ð¥Xé¯>°4úe{·2~ÿYÖÿ¿œþ_ô§€¿ÿüMXO‡»`åû‰öûÅðñ}ëŸ?Ö/úk?Ûê¯Ï{Õýߩ㎫Ñ5ÒªŸ`4嬳ߧË0'®F÷•ó*hö¯g)gÅT ÿî2#ñ mwæ@´ÕÊÆÑûýËeZ'>­[þý¢Á•»­eÙÝ·£Ôa[·5†ynËO¾oþKåûþ¸À¸oa~=ðä@ÓÍÿÿ-Æðk÷s_¿à»ú+ªþß–þàßô¿×A|œýºÖCf,ÿg´ \ls@®ÅÌô'ý¯9Ð̸/ýýS h¼7Å¢ÿS~à L®þŸ±è¿,ç¿ ôïúÿ¯}yÖß ßôÿßa¶üßõùßê¯MýßïTÿµÛ'Xò«o/ü®þŠ|Æ7Eÿ&@¨øüa…ïß×ç47˜ð¡ïÿíüA}{Ý¿}âÿ»ýßþ¿ßÿÝëàAýÕ?gô…IïOþÛæO©ÆOù¾óöÆÿwøŒNÚöÆÿ«ož0Pßÿ¿áþ«òÿ?âøÿgÿwêoúæ}Ñ8#/w4ý¿ðø¨¿;šþ”oùÿa¾áÿÇù}ÿ Øávxà¶húÿA¾éÿQàC¯;šþ¿Ðö}>!ûÝ;Zþ~?`ûΆÿ߃¿}GËÿó™póÿ;Ÿ6ð¶ï`ãûŽ>áûžÿÿ¤~:óÿã|Ëÿ“\Yÿ޶ƒ‹íÿ‰ÀØþ†sãÿ—ªÏ+-~éû˜_ú6Þþ†–ÿÏ™ÇBüâÚ¾‡˜þ}µ0zÏ—nÿõ_ëÿ7ô}Ìwr¼=¼øÇª€œö} × ­ù§}ß þ÷:(¾¯X,¬Û‚Û*Hëôïš`tæÿéŸùý‚ò!dÙž|ßZ¯ÿ6?xA}Eÿçâ—$Â’×Ò@dBvžXOýÌЙ«ùI6ŠoD€°®Ü®ø®`ýþGõÈœ ¬0+úmÂmOXO¾ñ¾«ÿáÿ¡ûþeèÖÁUÿƒß<¿îúŸu0eM’Ȫ$ÃÝêaN™×-ŠÆ‚õ-|øÿ¢cçbŠŒ­q1¿]_$‰'&§üÀ|ca"¡KdãX0ezï`!~9÷ÿê{a ¹[Á{¡#óÿ-?â}± AÒ»ù‹?úÉGî£3—£üU„Uõžÿwê» àùµò›ùÿGÿ6âÿý߈ÿì`€Á¿¡íÿÇø‹éÿÇø7ÿ÷1¿àsþu€ð/\ù|séû¿qþÝ9Vüb  ´ƒanÑœÿä·¾ïðÿ0ð;ø;¶oQûý›ÿä«ß»ùÿqþÒ›ÿßìvþ­Œò-ÿ¿Cð¶¿¡·š8_Y?Fž0¿¡·Á@Faø[lýÿ\ûÿ>ü¿ÖÁÅÿ“ÃD€´8Ÿ û¾ùðÿ ÄŒ Ãð·»ðö<ëzËÇé{µ'oC€°!@Ø´ØÎû*n0ôÇwûs¬ô/V-Ⱥ&ÙÛšøÊ­ÖŸ~Â@FMøe ùÖ)I€ ëdÀ{/Ï÷‘¿K $"ð”q¯ë¿Í ý«Bøn|’¡xM Îý#@@üP#ÅŸæ$ $ RB€ tç©p` WˆÁŠA×­ùÿ«þ¼^é¾YúW B¥?!¿0‘x€‚9É×y˜¾ŸÐﱘ8@ Æ‚„)B uû|éï½¶( pg’uæ‰ð6ïïÅÕI*ŒìçÄy–’` 'nQe„b ƒ”OdÇ|ø¢9 |Èthß ˜TõÐ_Ç(Bùò DË~÷õWÜQ)‡'ÑÑ_q}£?9×$ùéϘôw_n­ÏþÝó¼Óù;A‘‘¿h ±ÿû€6/rè øDEÀ|¤ìѾâè¿HB»I>˜ï è_0#0äòŸÉ ,]ýåþÀ³þÎ÷õWLÛ;ýùùßÑŸ‘ßày0ÐäÏ]_ä‹!| h(vò£ º»I~Cûïé|zDß ñÚ‘t[~~TïŸßóÃõ/ú{$æû#¢A |WÿÓ3Yú‡ëóÿ^¶$ôgìë? &„Çúà $€ÁÓŽÑÿ¹| ¾æ?ï(“/‚>`†ù«>m×ú',&>ÀÀ¡Õßzÿú»~ÿwêÿ?x:ЙxÚ¥[±²¬*¤ÊoÙÀÀ€€€À€€ÀÀÀÀ`ƒœàýÿ/Ö¥AéQéÖÇÛÑÐæœ€æ|È·‰hi ßZá'4÷h«žóËþÀ/:ø ÿÚÁS~¥Þð\¿ºc|¤} ‰ÿýñOµþÜÁ>u0Ñ&8ê`š„ŸÐÜãTuhŒøED#ü–¯êOð¤~,ø6ëÿ=øÇͶ%¼ áóøã4“H}ú‰æŸ:ø<cÚRó±ÐüáK>¶DHÿãÙG3y룼 ®ú3~Q?Óe ý³œŸêÇ^T(ôÏüO÷sK³ï½Üæ9cú‹›+hms]pž1ž‚Yÿñ2ôsÀyÆù*øz‰x!ÛÈúrÐKÁ’ýz)úŸuÐå_Šè?sb¿~.% éSÍü«ú÷ë Ñÿ¨“‘ "#±®ØŒÖúŒt_Þ‰csþ‚æRt—7Üœ÷•ùg,ôÏèeÞý5ý„ßèÖ½2Vå;á¶_\ÿmLªú<jý•:ÐõÏÏÏZÿ¶ýEvzþúW(ÿnÛñÍÐܸqFYü‘²õù{èoš:(î ÄŸÚ- Ÿ;0ùypE'ó—:Pç?óŒ#ëSëw*×—:(ô¿×:uëÀN_ñoê ÕßúS•kúgTƇþ@m‘}A…ïÀwà{ÙBÚùƒoÀ ¡FuþÀ7à™Pãwó/H„Ÿðµ:Pô»Yÿ·u ñ¡¿þÖú?ç—~ñ)?Ÿ³ét0 `‰?ƒW¢M§L›Ìx2Ñt:øÆ±#ßwþùÏú·uPû¿ÄûùyoŽ„Ôêëë| ¾E».Ö7„Çüª>oð ÚÝaÝÁøE2ïà´»Áºƒ@6p7€6î€? w[ÿ¿¤-ÿ½¯ µ»Eå¾¾Ä8[ð-Úu±²ïiÁOÇŸþŸ“wXû6´øe²î¾A»;¬;Èë>™´»AUÿá þ¦ÿÁÿ¨ÿéû2Æ$ßì8† !µÛ·$¨Û7Á¼¿¥ð_óƒqœšeN ûA‚„iOIgÂøÇ>ÆŸ*û>Z ĦþN³cÂý-(ûàµÿÏë~†dx–R;ª×AÞßiKˆ£eÿÕÿ\ç‰Þ?¿¥þï÷25öýªÿ±ÎƒÞ¿ÿ•úÿüØÚ½›Ê@–zÿWéÿÛ>(¶‘çs\£ÙÖT³[à*¨øÿü|⢻ÕP{¾ß·Køk”è› Óºj??ßø? ßdzïì¸ÉCr\ÍnRû¤ûº®IÂd„þ¯OYÖßD®‡mO(úûfý_é?^×û?f–ûÎ{†þs³~WõÏø Ýß?‡þ*¿Ñ?c®ðͯm ç?”ÛxÇò1®Œë"ûaN˜ZÚN@üŒÔLÐÛ¸0Ï‚o[ýψìa aZ%H˜â²Rê41?a«¿)r MVÙIÁHú§ºX– 5ý¦œ#6¾ÏŠþÞ’þqñ:ß_óÿÐß3.«×õ§\VÓ?cÖÝ:úçõCÏ÷ýëZþÃ÷›|oÈXnÊý,ûÊø’û˜Kî#¯y$Û(½8«Ì|´†ûÁÌu0M‘/ç‰õ×|îhƒï_¦:ŒZ~pÑÿÆÿÛ‰õwV×ÏB¿Ö÷þYÝx«¾Ï÷ê`UõSÖ½:؜ƇþÙwÍR;0Ì×õ‚vüÐ?ûïYÓ?ã7|Âk¤Pá|v¸í˜qÑ;(ô»ñÿIµƒR¿çþÿvýÿ…ÿ¿_ÿöÿÙ÷(„«ÿ•uÁïâìÿü™? ~þ‘ÿÆ9ÇŽÿÿÈǤŎÿ/ø3ø%Þúÿì»tôÔÿåßþ¬¿ùìÿÉ7íÛjØ@%äVkÿ·?ä×þÿ1¿êà9¿ì`ß.|ƒv7Xûÿ¿ð ÿ'ºoЮÿ3YÚüÇýÖú2€1[—(GÙGýýÿ÷üÚÿé`ÞÀßЮ‡µÿAâ´»ÃÚÿ3xÄ/:X 0ß Ý ªúËòô‹©‹õû“×}_êoÿOfÁ É`9ËRÅ2æ}9᤼ÿ'Ã8 £í—dÜ+þ¿ç¥ÿç‘ÓÚrF€°¬4Ë—ñ±ŸÇ¯ý¿yò)¨½Þºo®ç/¯ÿÿ±îže>ïdyŸc¶Ì?½o¡ÿéÿEïý]ê¿¢~.î»Ô¨jàýSî§ûô?ë€ ßL=A’sNwœH˜\02*þŸ>prñlrfÿK¸Læ|êÉQâ‰äa=: ‘Ç÷à{ðý«2ðÃ8ð0³e_S꟞ð•þ#ЊþÞrý¸6ÿ0Týß·x¹ ´óo²oPõ?|ôOõSéO ÈY`@äzˆ3ü!ûÿŽÃ‹Ìü=_p¥ÿsž‡“ùÏçmñ-À5@p—@±Añô)@r?àIoù~ãºC€à ˆþ #p–I«|?pÕŸþ€î5B×ÑßNx~O·þ?¶ù[©ÿ¹ÊÓ±Õßdß„€‡)ôÏß…éú›ì›aÀü7­Ê|ÎoÞÿ«|MÿŒ_Žïâå~póBÍÎë_0é¯ûÿìû ,ðÿ×ë?ëOõðA¿þ¿Ãï¬ÿ¿ðÿÙ·Â@þ•ŸëfYù=Ásþ°ä÷þü#8èùÿOüDHOùË‚õž ÷||'yÁ¼Oçðÿàÿ¿òwþ_ ´60Ê=lÞÿ?ä7þ~G»ï}³ÿÌ—ÿÿœ?åë˜ý?€ÀŽnóº?ÏÁS~íÿvøíºx2AWx40ðX.tQñÿ¬à¯h×ÃQ÷ÿ_óuÿŠaEPÐÃÖÿv®+€F¿‡µÿþðˆí`A€°"@Xô°Voø6@jA`è -HBįØåÜ0°Sûú~ü@„ˆÀ "@8öa çtyÏs æˆÀ ÂÀûàÿk~ðÂvúœÀœÆ_q¾y|ìÇ_ÂÜ,@øFx ûà×þ?"@ˆ0AD€pîËü×î»ÔŸðª÷þ.÷×¥õï¤?/nX?~R,éi· òøŒ_åõ=Å.Âoíý=½'ö2ýÜPµÏ<²üãå9Ð8ÏN€ðª6‡ÁK€ú rD¡ñ¼ÖËB!ÙN êó¯çÏ#@Ð?`Á YZ?]ÿŒû¡{O^@žú{è ô÷€´ù° ë;3å;‡ÁÊ'øü^8/Mï$pý­èïøûp1ŽÓT,g¼zv”!¸6?AždÄ—XŽŸv>‹ÁÃ@z1ä›9@à Cñ¯RÕ?ã]ÈRÕßX]ÿŒYÿè{úóó_Ñ?cWr.d¬ÍUýÏïÒ|²TßÀs ÕA8r äžÖÝ–Or˜w$€`ý éßþò ÿ2…4µMþÃã3&>c¯Ôœø½ ¿X•¡ýý‚u‚…þ0£•Œ¨Ÿ•ß?ú§?TýùÑÈúÛ{ýó}¾WQÉØ·ˆþ&Hδhu úë˜sD<„‹þù0ëoÿ ŒXp^ó#Ú¾”!Ï¿Šþø°H `&pþI „sµb­Ë¿Ÿ—õŸ L¤¿æÿ=ô ðÂÀªú+þ¹}ØÖAë™ý¸”uZ ¾ÿð­þw@€0 @ÐëÏXðü|‹?4ÕÊçß]~‘¦æ?Ÿø°<.tòŸ{¾—ÁÚ Üóù_€§þ=ÿ¯½:øUúZùxÚ¥[¡–­ºÌZ|Ë@ ˆ-¶qÅûûÒÝÕ„{Ïá¾5õ8CH5ÐU0]gy逦3iIh>ÃDÅoùc"Žié€ÂOh>Ã;è€ßó…ØÿÀgbü ?ùßòm1ûÊÿJ¿]ŽIŒ1~~üÃIÚÁ|ÚÁ~‰ßÅ„¼<ã€tÀ4‚Ÿó™Øiþ?ä7õ'ü¦~²Ùý?ç[[^ÿ‰‚s‚! N®ñ|]¢ †ð<~?ìsHSÈú9`Ïó×§%mÞúò>ãÓÒ¥ÿué‡èŸÐ옖k”£Od9‡>×ÿ“:Ð¥Ã$úïuðP?|ÿkéÿ\»þ^õwI}®ïÓÿãÍXŽ_ÔA¢ zñØççý-Ð{œo~ õ'4zèÕ@Y~~:`Cÿ£.ù\?_¯ÀëúÉÏ¿¡ÿMÔóßÖÿºvý­>ÿ÷û€"„"±r<¿×:Eº/ïÀ³þç: »<ßœœwŽçùM£œÌ»Ë°¡ŸþM¸T'@vŸëÇ÷/Sܪ:vlê¯õýA´õW}ŸëàJn …Åï¯ôÏ{#­›¡4¤l}þòOzsÌë ¸/¨îŸÂÁ7ƒ>j´òû´ƒÖü[åAíj4T)-ýTÕ©~dÏ…¾©Ÿ¯®ÓË:ô®ƒ³þ¥¾Tå-ýãCÿ}â˜/ß‚§è´/laëüÁ«þ ÂæüW¡øƒ ?›Aö~ÃoÕAC¿›~ÿ\->tob­ÿ÷üÒ/~Ë×s6Õr¾Ãö¾‰B4ÕŠùÃöÈDSíà³ù$b%ßWü¿ë®ƒ®òÿ©ýy¿¶…¶»Å- O×µðGlw‰àŸnÔÀb»[ÜùU€ð=¿ ¸Ævw˜ñ‹Aplwƒo^–S€ €Á…‹¿¿»ÿ—ØùÐù ÿ³'ý»nšb´4Kë<Ù×&¨ë[Zrü×ð¶Mm<ûÀ˜þWšå´ÿãïëwÇ‚Hö7Â{½Á7m~ 0¿óò|N¿§zýäuÖ=Ã:@è Èü ï÷¿©X¿§AôŸ†¦þûó:ÿ÷¿“î÷úï|èü¿“îŠgÿßÅ4ÿ ×ÉÿoëBõ°.ÀUpI aÃÿ'ºs„$¬†·÷à{ð=ø¾Ï•1чU‚„aÝ m7€?€?€? ¼ôùý*†!áˤíúu[7ÁüÜð:HÃ@r™´]õ¯„¬;퇖„8úèßçú+þB÷×»Ô?ÉP4µþŠÿA÷÷o©ÿë5–ZEÕÿ·Òÿ}z€qìÂBà:X×eNzz;OÀYP›7fÏ÷ ¾±#º™ïÀwà;[7𚑉>,$ ó²ÒöøøCmà`ßE;ö‹<$û9韶OºÏ áœô'ÔüèÿSú> ý韎ÄA×ŸŽ¿Ô¿Ïëàõ–ûʺyèlꯨúo¯]ÿ&ÿ²ß߀oÞãIÓ!ÿ¡ØÇqμ>O1xúggãïù"m&èÆ81olÌß^TVA‚„a– aˆÓL©ÓÀü„ ýWÔÁ"]vÒ_0’þ©.¦)D«ñÛ¾oýÝHúÇÉ5ùf¼öÿÐß±þÓìÚúÛß§úÏË…þîÁ÷½ö>¤¡åÿä?,7僌ÎËzcü·ñ]X^óìH¶QöbÇ›ùg\p?ð\ÃùrXÿVñy |ÿ ŒØaªÃ˜Ó[ü–ÿOúS ¬¿›ú©ïlø¾½.DÛßê¯Ïû«:˜›ú±e/Ÿ÷Wu°Ø¿íÛV/|Þ/Ü¿bKÅOø„+ŒPáGãn;*Ní¡C€ðäÿ“þÍ¡C€ðäÿIÿV€pÛÿßøÿRÿ«~ÿÚÿüÿÛuÞ Dïü™ß¡~:gÿÀßpÎñ"@xäcÒâE€Pð}›þ¿œÿïýÿgúûoú›ÿ¿¿¿ïRË?ócæ¹ÿIXûÿoùµÿßÀß°ÝîüjÄ7Øî~ ü_Ì7Øîs~ p†^—¸É2î­Ó÷ÿêý>Xèavþ‚ ù¢(g9ÅmÔuòM96r]ú .º=7Âkþ¿åU€ ,+Ír6¾®Wãׄ¶7Â[7ðM›_„Eü>wj×yu?°©ÿáÿ£ÈôŽÅú¶EèÕ}«40¥ÎïßZwSÈ\zñŸü0+u©m\#/! gÿÏŽAü“‘í§dÜç’EƒD/†Ñyù€ÀM³¹å÷y~z>ŠæÅ|ÌïˆÏ¾ŒQ„4þj˜—f@pYNÇßÿ@ÿúÂÍÐ<¤ú[²î iÉÎ_¤BÅt_·Rÿõ“¥þŠoè¾½JýÓýúöПœé/:äì½O®)’¤ üf¿þ®yÎË~Hδ=Í:!ÿ—0ðný®¿ï¼Ö‡ƒqt²#"óø|÷Sx‹(ò)A:ŽÄŸ[|¼öÿa™Ð"@Ò Œé à# d‰'çïpþN¿ÿÑ«þ=ô×:°ÐßM|Õ‡Ägý]m@šú+®›Gé¡ÿiþÛú+n»îWúSŠï>"vÒ_ò¼…s=Q?ý‚Õu®ÕÀjç˜ÏÆr/Zþ¹Ÿ?/úK€`ñávtìл‚_¿Áèɉq­—ÊøÉZÞëXó-øÒ ¦ûA~ß³qLHW€gÿJýïXê/ÏÆR­‡Qôw#×Íò\ÿñáýÿ<9¹ûŸçßÀ@>ø>èŸê§ÒßB}_Æúk=Àÿ²ÿ¿0pù‹_ºþméÿ,¡Åüïúòâ?l(žÐÊ‘OBûßHÒpxÒ%tƒk| ÿ/ú'Œ@/;$ýÇìû–þ´ƒª† ÆQô·úx_`.ëúÛ{ýu¹ªƒ³þÀÙ·©þú]X[ÿÉ?S?à4l¼ÿ¿å·ôWüp|‹N•ï7_ 4ùޮܼ`Ò¿ µÿ߯ éOõÐæ?ûÖ¿ Ü÷ÿ7þ?×ÿö{a3M߉6 ø3¿›ô½€ûjÿÿ)Ò·üiB?€çÂ=ߟPû€:hóÿàÿKþÃÒ|ÿ/ßUÀÀõ+\a`󾔜ù«nw…à×þÿ[¾º/ÝÁŠaEPp‰;_v G°"Xaô/ñฎy þ²aE€°"(¸D¿Ýÿ‰\Q+”¾DÈnÿ^s<>AŸ¦ˆ6azm‚ºŽØbÇZÿÂŒÀ`F€°¯Ã8+öÕûñï1Ì‹n/þX/ùÿž”Bâ`gÇøº^Ž_½º‚ááQ€p¬Ÿùy€0Á@Ì fǺеþ3 D½Þåz²Ðÿx?úñ"¡ÙùÊ'”Ø"FØ¡ú~¿C€Ð!@ˆ"„ˆ!Â@ï_Ðgïy²ÁG>ÂÀç|î× ŽS0"@¸âÿ`ÑÁK€`=Ìçázü2@ð X/OBD€ (¿h@霡ă""@ˆ0‚ÎÙ€Ôú+¾ {ªÄBÿyªÑŸšÒ›s FÑ?ÈøŒ_„¡õ' â÷8@脾2`|#I¶¾ŸwÄBmàUªŸ=Ç ¼~Ž¥£‚Óqp€ ü¹9~yü‚—aôÒ($Û)B}þõü9è ËêƒH|­_[EÕŸîËmýÙÀúŸú; @òü"3`Òß™”ïH8@°,Û÷7øä‹²IØi ²0ðV€OÎÍŠþfïÒ? #£Ç«gKÂiü‚\ ä%@°ll9~Z=ñ Œ ¤“|sš"§ã°gê` ›ú3²þ6¨lêOØÒ_QõîJyÚ„F<è?Šþ^üv:Hý(Í'ËÚ¬þ»ñ_TaÏ8ê»Gþ{’ƒ.‚„Ô-kØê/8a¢}Œµ~<>#ÿyN/IB+~oÀ_¬r€`óñåøG#„úÃ@ö£dDÏüBÿ´ƒ¦þüˆdýÇ{ýõyߨƒ ý¹ÿ7Ðß„Ïu ú· °µjÜÝáûT³çÃî\¿Ÿ=úÍ#?‚þÌ'ÄüËø ýñaQ3€)?aäA‚ê²c­ôo¯úÒ¿ôÿrþB€ïß±®mý¯^ÖúŸß`‹þºŸ±¨ƒPXøœé_;„vý]÷Œhz®ÿG¾Íþ"­@=óaylû ”'¾“a5@¸çŸæÿпý‚yê:ø?þ¯xÚ½[±’í¨¤Ê5Á 8˜àýÿï=#ucÁæÌ­Z'½ìu36--q¶íkÛŽßre…ß¬ð‹æ¯sNpÖö¶år(ýdíîPþù@½ÿü;@¶ƒt’vpvDþÑ_çýúœ@¶c<‰é䥃‚J_åŸÔ“B.C°‘Ÿ¿áKùÐ&?ås𲊰}Ë×»·ª"†òaøÆ3ú£‡ßŒ«ú×8Èý‹ÌžÿGåK¾ïˆÔnp¿¶C  £¨Pâ ³£þ:ï×îlG  ”cžt0ãCÿó¤ƒ?·;ˆ×ëã}3Þÿj[ý{¼>Çñøå²Õ¿Ç„hôïôÛ}>:‘äLÿ}eÓc ¦—ñóÞÇrI¤9DT QIï?µ²-díDâ Ò…r÷ëÿ²-WÜ÷Iàñç_ÿ=î6rH¸?ƒµUÝÆú×8Hï„ñG;§ˆâ1ÖŸ8Ó?à €Ç,ý{ý‚¡:œ‚Á™þá”Lõm¤Šˆ£_”vÄÕv‚õ@å,óŠ¢òÏ ’¯O|‹'‰3>ôâïñþñ;ýâ`¤¿ . ó<‘ëÀ…cý#f ÛÓ8¸Ï¿ø„8D38 ýþ”¯nøIâóUÅ“¡?Äoùô—¸(ü3LÂÙ.ìŸÅçÍ< z•¸÷Á—ç?³'x­þ›üGù÷ý©;¾>â‘Æú _d‚þzßô¿ÇA ÿÑÎï™ó¼ÅA@¼i~A«8ùrž¡n0vpê¯ûêŸßC‡Ú¢ÿ¹n,ðe€þòý–uBõÿì¼Ëô7è§ú×|àƼÃl£­þÚÆôúO×ñrñAFqÐìprÎvÇÓ£qkâAÕ_䣃 äë|í`Cp>÷Ëx—¿ ýåû/qð ÿ¦ÿÝ/änÿß ¬ßª¿ êϯ{áÂ`Ûz¬ï°ŽÃ"ç~XåŸKþÆx(ú¯ó¹~©Ñäz`øSlö/ÒCý/ ôÆfO±ñoþàwúß|Ÿ¿K~@Ý]‡±ÿøW§ºÑ޹Ͽbdß§|¬ï1éb™¾å§ºß“â·|¼{à:ü?÷}ï|ú?Ϻ÷N èWÛ&sp‹ƒÆÿßôo¿c<ú=ôòü|ÇûÝóXÿìtÞ¢½ï:3°\§U¾¢÷5¤Ëõ2ûû‰ƒ¯øi¶Yîý¿Ü€hëfËè_ó@ˆÜÿ ~ÛŽi¬?þ`ªÿžS\ Gú«~j¨¿Ò«þ»x7Ö¾—õZvŒ‚mdWlèÀ÷½óÕöíôýOþß nÀÒn¦Iý¾Ü€hcÛÇú×8HÐ;!~*ŸúG¬Äþ¨ÀŒG|ðÿCýgþ¿ûÿª§Ÿt Öý|—â¨zßwù¿N¿è`À½ú~í%Pÿ¡ÿ/ö(üXÛúôôqÀ2¡˜8ª·òO øûôÕÿÏQõ:}_¿”Ðü_b Ç.Øà,~ZçØæûîq0Ö?bŵ8z…‘þp`e×®b¯¿õÿ×ÛÏÜï~„~EùʇoOœ”±¤œºý¾C@øÿo}ÿÀÿËý²ï/úGï5~à©_Õhõ/ˆã‡óíþÊoõ¿V“÷Ï3ÿüÿá†~Áÿë|áÒWþßßç¼»ÜÿãÕø=ð7ýþ˺¾õÿN „êWÖçñW„ÿ—tj vÑ/|ö¾ÕŸí3ì~ºûÎaû?½_°|¿×|àí>o†Wd"í?ÉpcÁùàÓù…ã}ßÖùÿoü{é ;$þàÿ…ý#Úßøÿ»þ›©÷=ûÿþüª äïXÿ·´ÁÿÊÕàùÈ iƒÉÄÁ*v§×ÿ;~éÀèŸÒþ›|ÿ/É_øÔÿKÿù¿Fÿë;îó¾4¹ñÿNpjÛîû' HùûNóp@m[ï3ø_÷û¬÷õéèw>÷y4Ž_òYÿOÜïɯk\›ý‚¯ƒe«ø9÷óePþïÅ·úÛ8HÇwúc_ˆ˜>ÿùlØÄ¼Ã†ÑÁ²ú ÿÈ­òûºoÙ j(-òéÿ¡?ã`™ßå¾ZìÒÒ¸ÿ¿ië¶qV÷íó#þ'ç“už‚ô…CýKþo:ÛçÅü¢?êÿ˜ÏïqÇ/뮕[Sÿgý¯ñïN}Y)ÿ£þ"üϼñµê{Õÿ¡¿O]" ÷gðóÅ× /õÿ ÓU¢o˜Öÿu¿ï7 ò=ô÷y¬?q¦¿Çú¹ï»ëß}¿:Âçõÿ»þ ¨ÜKOõÿF?õ.Õòh°›bãÿ•×ñƒº?¯I¬‚½þ15þï4~ʇsðý­ÿ¨ÿ½ô¯üVÿLÿ?®ÿ7ú7ñýÛúýHéa „þ+ç“ÿéo{Ä71ªÿô~\¯ÿ;$œcXÓG¶þ?ÐußM*ÿ§ÿ—<N3ä ýcõÿò÷Õ?:øÿ¦ õéñã¡¿çľþŸÓXò3âWò7ߎ<ÐMÔ{ºüO³ÎuùÞ”ò@¢ß᎜Wí{ƒêÿ2Ò§œ §ˆ¦8J.‰ü¯Ç˜ª´i~þŸÿ/ñCÿïö«þÿˆV¶“Öÿßm°ÑŸí2ï öëêû{´úó I^4°¶îß„ö?]vŸ4CÄAŽ$ž]æó HÚö~•_ý¿ê_ýÿ7ü›þƒúÿSþà®ÿ»ÿ§ÿKn¬ÿ2¿æzý¿L?±@¾•ß³ñ!6–ùœï@à|ðZþøŸÆÿÇÅã½kõÿ Ÿúwþó6„"Ö|06€¶oþß®D¹ À¤¶}“¦×³;Ñ–ßøÜçÕù½Ÿ€¯~ê}ß×üq½/·yéWþè¼ï*Ÿõß>ߟÓíg fõçŒbuL/ðSåoÃúï*ÿcÎÿ×<]Èiø°a›ó¸­÷Ý≠]ý¿­û®ñ«ïc(]¿DXá¿û®ÈûÁg{¬ÿ-ÒÁûÁg{cý‰Ž"B¯ýØÞ?ùñêy^è» h©ß_þ¿‰ƒ+ðÂçùïûs W<Àpà Ïv°çÿÙQ= <åëÃ7þpþû) ÅNÿyÄE¼|¶ñ‘…YÝ÷Mî€.ß6vVÿPç_ÔkÃs~¯Ð¯¶QA­ØÄAÛÔ ï_Ûãóÿ÷<@χ—Äaþ¿‹ƒ†1èû_m<¼o±Ñß×y÷ƒÏ6>Ô£AÔçÐ?dðWëÿ½þ ú§ºæ/ßRzÊ ˆîþ·sû1?þ„a‡þžß³1îõF/œˆç÷üÇçÿ£õÿQ6MäGèºüAÿðÿ €~ÿ| šß½êï½êÏú|=ÿßwÆ üâ[ýÿÀ†ß¤þ·uÚ ÕÈã§îŸž x§?Nœüùá”g~lò€åÅvð?Ÿ’@˜ùî¹ÿç~Áû“^Ïo<^Í K¾@}ßùfçëùÇ4€î u¿»LàŸÏg…Ó¿Î??köÑêÏvúÌ2÷8èõg{Ï_ÈA ³'¶>ußî\Äù·üÁâuùƒÔì¸ê­\j¡HÚþ,Úÿ|Ðïùÿ¦?³{óÂ7ý_ª~Oýõ3ž<_”RýB§ÿëù>žj­,Ôóÿ‹çG*òÆ‚¯|^fB©q°Ê¿~ñ†æƒU>Öïlõ_´ÿÇ/ø¿Fÿÿh {xÚµ[»º¦(ìï3š`ƒóþ¯¶BWsi¹yf× jØù •j¡«a¶íŠ×Ô=Wü{ )͇ܶK´„ø?µ]ê@]áw± )Ä­ït0碵èÈý‚;(Çà+ßëAüÊ÷›Vqyü5SÐÿRý ³ç?‚{. ¢SÌøÖFù¬sè(!_áwñÿI!qf|Œët°ÂwýAtxO‡÷OmAÑ¿óñs¾­¿àHÿ¨Ÿk‡°àìþ»±q ͨAœßyóÈoŒá8ˆñ ²>ˆßYðS[ÐÄëéEIaø]lI!_fWq`g÷G×  gï™m/æó¾÷nŒõ·xÛƒîý£~–‡ !Þ]€#ý¡`ˆ{ž,ŸÄc[?c ým@Ö=ö‘¸¾¡ ùžá¶%¢ q]~¥#â{nü‡ÆûCwÁwðx3¿©¿^0®Žþ[[‰@ DçÇq õ7Ðý5Z5ˆŽ ‘/­¿´•þ5_ºþú› ŸÄ=ar Êïù©ñ2@ùþE‰‡gÖ9ñº¶‰Zÿ<ØZÑ]_Zÿ<¤yá//­ûBȺàV®—þ9—‘@ØHÖƒ¼.„/z6e¤Gþs;€þ)¢~Æì“áãuúCÆŒÎê÷üSëŸâÀ]³ë¾ïÖ< è¯^Ìâ§Èò# tÅØçsˆÄ˜âb/ëW$JÏHè€z†óšùƒÏü2~ůâ`aüßùW¡ÿ¯ø…þ=ßWò)Ž7jX׿¿W Õhå3”:ÀG¾$Kx‚Ï|1 #ÿ?¾?çýƒÏüÿ?â·³ö/úÍýÿý[þôü{áÿö=Γ×} Õ(y¾ø½–ÿñ9Ï‹ëxì¨åÿG|<ò©|ß2¸8bý§€j»wüî¿lí5÷ÿ#ýÏI cªÿÁ™Ú>ðÿ£ñÛw@Ó´ï1ß ?Á€¥¶±èµï«ýÿˆÏfåÔþß”ù?…|sRHßM×4q¢ýñÞ²J"c˽ôgûÆ= üÿ ý {‰j¾ï†þ7t/ñD¢ž°áÿoèC÷„Q;ö_âÄ$´ÿoéw‹ï3U/ ÿÿ`ä³ÿ¼“gN¥ÿ™òý Qbwñ¹›¦þY Ý’&îZþ?$ ½ø±Jÿw°xzøî70¶uý§QºoÆ ºßÀØ6=ÿ¦çÐëîÏͳÿ·ÿó¿LÔﺒ´¨BÊ-ë@á÷¶ìû.Ãþ? žvêÿ‰ Äɺ›C£¦ê8@­ž?)n\/jý‹ù( hßóûAÿȇ<þïê³KåbÛ²±Ž3÷ßL Ü,µÃ×—ê6sÿO[íûâðÇ1ÿìÿ¡åÿÉžû ÿ¥ŠcVü_0 <ÿËz øÄÙÄ¿øI~Ðó­ò—±€PÏú§üÿ‚öòûÂÿ{‰ƒUÿM[íû$.Vø’ÿ4ü¿ùÂé¿eÆúƒÿÒÉ?Âw“äÃýâVýùÖ‘­Â¯÷×þÕÿÒVùÿ¤ÿ _忱ÑÿüØÁÿÿÊ¿_úäúo ûÿHè ·Saîÿ)~o@ªÐÔþÿ3_|ßÐÿù þÌwÅþÿgþ’ÿŸñ'ûÿa€~E›qÉÿпéÿÏv|_åŸ)®Û@ªy¾íÿø)ßìÿøÊÿ›¦ÿŸðË;7ý?yðË6ãdÿÊÏû4ú×8ÓߨùþÿHÙÿ×q`Kÿ?¿ó\ðÿ}*ŒÔ'3¨5ýÿ€Ï»¾‡øÿ£éÿÉïŠ6cå;ûÿ#þÊþÿŠþRxÇ}B€ˆ*\ÙÿFŸùÐ=ᣜÛiúûÿÁð „€`޹玚ûÿ7ô»¡[FÙþ?{ûÿÐß@w#|ØÏ6ðèúÖ|àí–öÿy½èÿÚÆÒú ÿ¥¿Õú¿ã óŠ Ü„NPœë bÊü§sãþ¿xW(ò‚ëâ±èÁ‹€Ä7Ýýï³Ñ„§€ç&R¨ù¯ýúˆ€ÿøþÈÏU§–ŽåùbÁº_ðÿâf²ÿŸôÏóAŠ#µÿÿŠƒZÿr>( Ðoýsdý˶$æ}çÚ¢/¤ç¿‹³·ÿ·~POªé|Ø3XÊûÿÝc0 ?›E›—÷ÿ»|Jûþ[éÿ¹ä÷}åüÀKÿ¯ýÿæù·þ)LÓ²—Hmýÿ«ý?/ 0Jà´ýÒ1‚´?(ñ`Låÿû(ç,¹€à<•I¬]>oPú~íÿ'úaýnøÿ¥úAÊ¿´þëûÇDmý¿øGÕöý—D|f‰ƒiù çœCÄH0¸>EÜx¿£nkÿßå×þËûÎþÿ"í·ÿÿÆ/ôÏ™¬ªÿ: tP´¥‚P}϶q~&¼8øe›uþû3X'(×"_må÷ö}¿ðÛÎsßÎûs]rÆï9G»Ìo[×UþÑñ}¶òÏäÀ/Û8BWçû:fü×¾¯Šƒ~4Ž)ㄌ«üžïs‹ü±ÿŸóÏI3ýþqãW˜ÝGÆ}(ßg*ÿßç?νôÿ©`*ÿOü²\9=nbd,ýŸÏ×¾CÿCÿžò±ë}ŒýŸ_íwýÿ ~]ý½·{¸¡ÿ Ýoÿ”øìÇA4ºàã¾·»§>@ÏXϺÝö‚¿`¼Õù#þ_ðâB—_è_ÄAŽ^ïo¾/!žú,±˜Nl€Oà þµüòÿņAÔ|àÏÚþ?¯÷-ý­Öÿ¬3ï fÝÛ ¥ÿ“Nlœø¹ûŽùTÂÒpWXÄALK˜o‘&Ôç÷s?…ÿ~—‘y@åÿ3ʺÀKZ@Žœ\8q’álßÞ¤ÿFð·üüC ÛËÿWúK»ˆ¿¥ýÿ¤5´ ˆ8¨õ—6¾_?;Ïú{èïSûÏžhÆG^׃€'p¶uÙÉUŸ Œuƒg£uî£B ` ¥mø$‹øÿ>¿©ŠƒëÏÒù—þy]™`J_ú Nùž÷Ÿ¡¿‡þŒ Æ=Å£øà9©ý”Ýp9‹ ˆ ­[¿jŸ€ùaÊ’éâqEâO¢œ3ý.¤‰Mý7ï÷ô—õÿíÿWί‡€X¿±sœÑ¯Ð X.Ñ~匜¯Î/òs`¹Õä[œ@’Bâ_NÏ$ÖúïG €ÇúïµþKç?^ù{Öÿ_)exÚ­[½Ö­* ÌZ>Å)vaaAAaaaaa±ßÿ•®À ü$!îïrŠYžÏAe¢d{šÖØ&`nZø 8M“mj:°ò}Ñ/Zü{øo è…ì|¾ƒ|¶ƒ7|®+¿VïÁ®ßÃúWh½ÿ×t`å»@t¡ÕÿŽ€$ :xÁg;°òÙÁ»ðUüø7šù+¯ìÁ ¿B8>‚áúó’Æpn‘B†ñ›çyI-—Gÿ„#~`ÎwRìà:ç-ñ˜ÅxÏW¸õ%#¥Lñs·b ˜â‡‰ƒ4¾àôïã€h+â`¤?ÛVÄøþCÿ ý1“öüèŸqž“ŒïÒ/óúôÎIÿy.ôÏñ ó›Vè?OèH&*ýóñPÿ'jýŸïA‹Ó›p¾Ê ”8¸uw5–ú—ßîýåZ¯?2¿Ó?ÇÑœñó©£÷y ȶ”ú‡Ò}/7:¡±ú3q ¿çõïã`´Àà¯ÿê›òýÅï†øü÷«P}nd>ŸÍø%>ÕóPÿŠþ'¨ÂÅÄÏóWÎ LüköÒõÃüÙêçn1ñ;ýŸ8tO_ÿ4ÿkq _ú“jÜÜÙ=r^Ø öüà#Þ¡Ag¿x 5º7üHl🋃fú¾ó³Gþ†cð ”õ§JâÀÀ¯qÉI¾´zýüÌ4èà¾ß.oIDt øŸHÌqð?vãà>£ÿ;~¡ÿ¤ù ã $¥÷™À„¾Tý¿…¯ù_ñÿ6¾Ïïqçÿ|Ñÿøªÿ7é§øÿô¯ü¿áþÞ¾§ù“Â|$UÿoâG»¶°þ߯/}_íÿ |Õÿÿ¬æ¯àãûÏ æÿ¿_èÿ…Þ æ{„ï÷ÿÅý2ø)çÿ¿_ŒßãÅà|*ûžòý+A#x"kß×ûÿÕ‹ìÿçÖÿ›ô¿^Vÿ€Iœß#äs¼þ™?Ö¿ƒã8¶ØÓyîIo•|ÿ8Öˆç¹%½9ìŒS!ºâl/?Y¿¦¸ z1Ö'Bíÿ/Lr†Þ5n·«0û¼ˆS‘ï“ë°)Ÿ8Vÿç{ÐéÏò}«¿ÂÈP¾Ù¢þûÕb{Ò½Â?פ†¿¥úpŠƒá®áxäÿ£þùxMº{àºÎ³ãËxÿÝý—Ê÷­çÂOºOŒÿ¿Œ_F^?ïXý™8Pùþ=ìÿ‹xˆ¸GÜ·„²[sÝ'ׯóL|Ùÿ·qp÷ ÷p|în7øšXÿþ~ ê”øœÿO?ý²¨ãpRüÿwÑõ§Äý?ùYõ÷üßêçnä¿.~žQØïû°®ÿ§øK|Vÿ;^påÖš×{+tcÿŽBëûmþ¿Éߘ8xÅéÿá—›ý¾æõŸãi¸þÏò­D>-¯\šø…îâ`ä¿ÿTÖt¾à¿Ìþ_òofÿO"¥ üÿ¿èþÈï¾ï¯ùMïùu?ð«^òyÿgç÷Îñ-_õÿC~ëûÿ?æ#ßüÿ8þà÷ÿoá/òúÿú—ùÿÏúÛùN­ œ'ø'NïÐÉ¿0ñ[ÿ?ë=&>üŽƒlãO,|´èûftp¢€0âÃ.üÕç|çó™ëïܧ¼óùÎôÖ}{ÿgâ „mK+ˆÇF0Ü-ª?aØ?D>»y>ø/GðÛýÿŸÒÿ_þò@áÀù-BûOÉÿ#A8P@8`Ø[Ä]J¼$ sâO;Îï]?.œO îÃõ«þu!ë1ã±oT\WÎ÷¦œ÷Ѿ®‘X hÀ‘™¸"ß ç¯àeüŸês‹i*ËxMë±€pT2þÀm“ùIÿd<.L„Ž/_±P4U FøŒÃõÿJÿ>ôÌ^ÿŒÇ@ÿ8ƒ¦úϤQ@Ðü»/×ysž_ë€~ó›êOç`]SHÈ¿|òRø¡¬³ÔûÆBÀðOÜ?âSaþ â¡Âëíù+ö±úßqp¬ºþ±N4)þÿÔýc|ÏYý3ªñÆ9:ý3ú—„¥‰Yÿ¸ìíP@`ôOhÙABÕ/’ºTGÞ¼¿/Œ_:Né}…âþ¼ßαú?žIÒ¿É?^úÿB"^ÿ‘'ðb¿ð] Aý/¦ökaÛâr¿Æ/ùÖ ”È¿8¢Öj~¹á»Ú"ò×¼¾+VÓþ)ÿôÿ?ÑÕ\xÚ¥[­–æ*ìsx–"""â#V¬Xqßÿ5.ÐEÂO7™˜ZfS$¡:¤«á3Æ¥Ã)¡ ¤4 f\åÛ@´ñòßCH/h›Öùu?àWü„_v°Ê¯ÕËüý¤–ôaþþ÷VÿÔÁ?v°Çƒ‘R¡•þ?¶Ç¸7Pê`‰_u@è`–/êoò?&ãÇ‚o³þó|çzýÏó‰ƒ×÷·áóôO¼]Û÷jã­{Ÿšffü¶pÚVé»CÌðq¶ñà…ÏÓ‘ož1Jýs<¼ÅÏ^ŒA¥ÿ=¼Ä}T¨õæ Í/kÛ;ò1‡{ƒ¬FÈ—ôwŽÛ£çÿúbñ2B¶Íy,týjö×— ÿ0Ú£¿Aÿ»=ŽŸçõÄA;þ²þz8刌ŒÞc>ðxï ´Ê‘ä«ã!œë¸uÏ¿ ÷|gùôHÏ] 0þü2—úgô÷%ý˜ßé_ÄAŠ“„Møîùµ.ßÿ>öEýó÷«Õ_ˆYÿüýlõïã ÕUçï%þ¿¿>ôïs£äpŸ…çgýTÄAF‡qr{äYÕó÷ B‡ñsÊøƒOû“¨¿¿MþQæT¶±~h«q`÷)þ zý©ÒŸ^â@¸>ô§ºÝç‰â¼°°ÄœåP‘–(=æS„ÙÔ(ŽŸóÏì*œÆìJ\áKq è7Èßû8ø’þZ¬ó •~q•ŸŸ™”ð¸éëÝ~‰¤t0៑”füW$*òÍùçëßÇýÿa|4Æö}Æß-øO[AÙÿ/ðEÿ¿Â—ü?OO[AÙÿ¯ñ{ÿ?Ï—ý?A?rw[AÉÿÿû÷a~D£äÿß‚oqžŠ}Oß÷ÀßÁßqžŠ²ÿŸpÞeÿ¿Äý?Æçé¨ùÿßéó_õïýÿØÓß¿ãI#Ü{ÿ]Ç1ò-ÎSñΠŠA<Ïùþuñ8 °±ïÈóý–¦¶ëÚpžŠšÿ§d p鈻ÿjý?™2Ï{Ñ¿0M•þå|0Ô¿tm¥þÅ|ð¢ÿÓÃyrý'â{ü1œ+âoë]ß¿%]Šƒp?i¼ÎÓwØû7ÄÚ¸}:Öëôæ@FèÿE¦ô}à“ïPÊÿ ý·:ßÑßyž‘ò}åû!øÿZ߀GÔÿ‡OqÀøð›‰¾Óÿü˜€ÞßHb$Æ];xBÙO6Žûwì "}#%ÔüÒ?ǃµÒŸà0X?g7Í?²þ­ïcÞ_Ÿ¬êË÷¿‹ƒ/úÇ|ߌ|_•¿üœ?h¾O×?Ï d(Ï(w<0ú„þà¶æß(òrý‡—y*Œ½DÔü?™Úÿ˜.ày„ÉÇéþŸÌÀÿóyשÔ²~ºÿ·é¼ÏeÇúõ¾¯öÿߟm¬½øÿ?VÎÿÛüOÕ‘é|ß™¿e¾ ùoârŸÍeB-F|ÉÿŸ Žø¿ñÿ¥~?ñÿRþ6ïÿ•üÚÿkùÿœÿ'è/ùçÈ<'úÿÖùü¤ÿ2ŸÒwÀ¹ëÅÿ«üIÿOæ7þì¿Þýÿ‹û±þ4éÿÃG–;ø~Ú2Êþž/ûÿ¾èÿWø¢ÿ_áKþŸÀ=ÿ?ÍWüÿ4_\ÿÿ|.æG¤!Šëÿ |Éÿ/ñ%ÿ¿Ä—ü?O8OGÅÿOóUÿ¿?Âúÿ4_\ÿ?O¶ßçÉw©ã.­ÿ/ðïô"Ï‹ŽãJö}†_ûÿã`§q¥AÄylýÿBâ›w>î¾÷ÿl p©¨­ÿ Äœþýú?Á@Ìêo‹ Bt~úÏdLlËw( 8¤é†—×%ŒV·Ö¿ðµþ[™÷‡ÙÿÎëµõcQÿ;>/úÇþÍÈ÷=ùK£?AÿÈ?ª|¿FϾN4p,Ò\íû\òÿ®öÿ{ÊBÞ0àÐA…¸ã}²€(Î ÷üàÿ{ºƒ~„¾¿ÅøüöÐ÷o Êú?ëäNEŸö±ÿ÷—¢“ÿ©qpHúÃ')¾ïA¯øøíʧù¤® jëÿß¡-éŸqòúóÁ`BÅ/ü;ø7ÿ‹ÿßÇïo—¬wq0§¿ªÿ…î÷ûÆ yâÈ?«|“ I‹|Þ¦o xå§ô.|×Q@ZçS‘X½þ†‹ÿ×øcÿöîÿ_üß«ÿŸ6ŠÿŸæ+þšŸÝWãÿøÜAãÿWø{~kÿ?ÏßEÿ?9~¢ÿ[ÑOêáó?'*Êûÿçù[ãÿ?( Ìò[ÿÿAaž_wðAa_uðy^Ï%ý3~ž÷ûú¯òÛ®‹W/Ô)tÜûåûT@0(à<eÿž4ÉÏÖ­òÿÁ˜^( \8OÃ/·ÿGáBªb»ààÁ]( ¼ñ[ÿ•¤ÜtÿÏb­~{8<ëuœ©4% ¶k©€€x8pz‡«Œão$< -þº~Ð?iº' ^) tþŽ`cO0b¶ãç¡ÿY…$Ýÿ—úÏ×,Uú{èã…¸ /® r~g€q˜n$. pž°ß¿±¯+~X÷ÜÈ„”¨ÄèLJ•ƒ”¸Ýå| üåYiʘ œéü¢~`iFr( 8 „Ž‚EóÁžç…„QÿðUõ¿ãàzÑ?ù 3ð}Ÿqý ½^¢þ½¦?|“½õï1E€WVð-ÿâ#a$õ . „¶¯hùû. p"a, ìÕ/*L–·«ÿ¤ë3šŒñ»À„p o±€Ðÿ~Á¢€`Q@€a̸ÝÒ¥‚•õ'ÖŸ‘ô8p§îÿÊï¿þMÿüžkq Ïì“:ßׯ¶`¢€°!á,ëG±eóïbøúhKúcc‘º Ü>PHJó@•òÔúW×'´©ƒ'’ÿÇ€[è_Ï÷BÌé¿êÿ ú÷õêVÝÿ²î÷sÁ €0ž¿„ýjù‡d\@°Ë|. Œë?C~* X{žƒúÎ?³lçpÿ‡êZýuÿ?. düÌ5“ÅxÚ­[¡¶¬0ìsøš+F ˆˆqÅ+öÿ`ÓÝÕ„·¿Å hçÅíÄ'|i½Ï|²ý~UÿMÆÆúJýÛùÝ?nÃv]ã¨BsôØøÔÇQú’èq)Mýß›þ¬I=5ÖÁ›vÞçÓÑ™|ïqøOMÿ–:ØÏ¿¢ÿ^×õ#ã_Mÿû:p¶¼é8ཡ÷Ú‚÷úõ#ÅÏ€éŠñc=#ãq¿þÞî¥8"i=D>êÀãzø³ë'Ø©|ÒÉC¯#bû!4ëoxË×}å ‘*xQ?½•CUÿ‹:Èõ·çW©ÿy˜üq(×çé_Ìà‚H1þ¡ã~‚ûñ¡?³µâhÔq¿?€·arýª?tlÁ¸0j0*oôÿ¡}LÃqLPxÖô£O©¿!x´áOU?ê³ûÿj<Èù>õÔXuýi Æ:Øõ§L¹:«ƒ ¾—úS¾/Œ ‰QùCªÿýÉúÃêÀÐÆAá÷Yÿ à“õgò\ w̰ï§ú³ù"øTð7ýóûôª®õž×ÁÐÄ¿¨ƒDªéU…þý)ÝO&Ùûd;Á”ïÀwØSä»8$˜]?ø”ìï˜ø„óþŸöýŸ°c[ÿÓæJ|¯ÕAªß½ÿ:ÖAƇþ”ì—Øu;ºdkçw†î ŸtqT4@(T®`¿Šü8–|Ÿöý ‘ŠÚú_‘‰…|øïõ?ÖAêÿþþ~WâO© “ûù?õ¯ø™ÿŸðyæþÿ?õÿà>¿ÇÒÿ‘Ì[éÿŸòwýgÞ&îÄßï2ËÕ5`¢dOž;ñ ö½×!ú î|Þ‚™ÿ÷ÊïñSÿÏ|F|N÷XúRÏé«úïÏ÷—ú?ås ß°ßc UX£ ÜKWø¯ùÁ6’Þz r3éqè ÷ù»¢4 ª‚~.°ôÿª?ó5PÒ^:Çtþ—èoûmúÛó¿Ô¿¡òñ¿Ô¿ï8µ \Œ\ëjËÁ¯¤{}a\âÆ¸Ï€¬ŽD>Eïù{#-¤HŠà}¹Iï;·"H`äïÅã“"QÊÿþ´Áޤy÷KŠÄ¸ò–óÕ7v©ß³çü$¼_R$à÷;¥(ô7Ô¼ä›}9ÿ¬ê¿ÕÁ õþþÊùc]ÿ­þ[à’ú‘ü'ò9·##(.‹â,8/º¿,³|^ú?á[¤uÀ8² üÇ<ÍŠ³béÿ©³vDÆaA0k= ñ¸ £ž‡*úíþ¿œï® ZÖˆª¿júÁ?&Ï›hn±~¿ßq(ýu—þ_ëçû;Bÿ±®ßïûý;ÑŸòçÿiü–þºÄÿiŽ+Ћ®Þ+–þù›o“<±kèGfï|÷ûGÿë _õvîƒNßûø¬ ¾ðï.×ïèÿ· ïYý©È6ýOý¿ÕÔM³ª÷ï½ïÓñz^܉þå$í¤–µ˜ÿS}þwZk鿨;÷}^ðûU Üÿ®ôßÔ%¾{L|§°eÜñ³ÿºGübÂNü~ü5@¸óÿÔý›ÿ¯éÿÀÿÓåüýÞÿ_óïü?Aÿ ÿ+L™'ć—?úç{~~—Ò›ùrí‘ÿ[óÿ-|}œúB€€Çt e:óÿÔ°~záÿ©É¿½ÖÿX©ÿ´UøÂŸÞcêÿßð³õÿ7üÔÿ¿âgëÿà?óï™ÿÁÏüßCðùÅúÿ$°Âß6`±þÿ˜oþ? .¨G|4´èSø ùwi Àÿ ÿ½ÿ÷¤â½ÿ‡hÕ¯\ÿ'ˆçþŸm‘ô"ÁÿÇ«›‚^å9fëÿqJ ªÂ=ÿ_ó›ÿ³Se§áõ ÆEýXÔçŸâÆG€0!@XÔ÷é÷èËõè?b? ›O±\ÿÏôo¨ƒrý?×ÿÿç“‘õþøx ºîo8E\H‘€r³‡tý_ú¿‡ÿ÷ªBäÍ4ƒ/(EÂÁ¨Ðn”×ÃÈíL¢BDšô¸8¾ñM¿H•µt!Æ™¥T`l~šÕyNñø¤(šó~<ücÀ31àé:a\àã.¤Èï=Øõ§ú“`—ú=—ÕÁZè?Oáàkúouð-Ô[æÃü³ªÿV¿EÙü?èºHDîEé&Á)AéF¹úÝÿ¶L¼L/*Ð&£ùÿˆÑµƒ ƒtðNøñ‡ÜÞŒò/¢úÏ-¿ ß€ÁÃ8JÆ}кÀñŽï’û_ð¦çS†Þ¡þ"_zÀUõ;úÿ!óÿó´a¹þç÷Íúÿþü9ø‡ìùîûªþú§ëeªû½Þ½GÿFÝî¿°ÞFËwÿgï Ù®ßïv>^Øp[8DÞxðïl? d<Ãòð:âd|—ëÇ8Áÿçèz¹þá¸þŸéw\ÿÏý(Ž¿Ý¿­þ¯õ¿­ƒùàT}ß”×ÁA‚~ÿ¬ïÿ`ž8Z>Xñß¿ð}ã±Zoþ_f¨ò´:ñÿLQ°ñÀŸùêþÍÿ_Íß+uðˆëÿ ú_½ï«ã<{÷œßßͳÿøxpžòõ}@7Ï5ÿßÂ×çÀ|æÿ d9¶Põÿ-þíÊÿ7Uÿ 8°‰Æ-fþÿßüÿÂc>ø"@xÎ×¾^ð¥ï.Ë#n÷Ýu}ÎÏüß3¾ ÚßÌ_Ln1Ó_ý¿­üÒÿÓS~îÿÊaÅçw¸ùi D¾«ì7hþ?è„üî¿·ÀÀ$Ŧ©®ÿÓüÀZ`ý¨ÊÓ„SL–m%@è t0M=E{ÚÂŒaÆ÷Îðÿ‘üH~àëêýŒaFPp†{þ Ã±VpÇ| fghý7Aÿ) ‚¤£ÿOõoÏ´~GôÐC­·þu30[A 2»–õ !@@l"ö‰ Ôæß†8óý#„€! @ <;~6QÃ0ö<óa „gülü ü‘ü@„1¨a „€Áø[þ€!h€0`<Œc@€ Øõ[ï…Äoôßê`-ôŸ§ãü³¦ÿV‡!çO^ùGý ç3ýÅÏŒò‚5c‡¡Cp` Ÿô |§ox“ý ððÁ1@`åÙ?Ný›±™}‚D€à Øö^ªŸ¬rÁÉ©G»ˆ¡<~¦? J€àUÿÞÃ0ú4H’+ýIõXÕ«ŒGý‹ùÇi,wúÛ}~V¡Ðß|•?nëeÐý€ äšð¡‚í#@°˜Y.4 @z z½‡_ 8C ¶÷GzüD¿ï» .Kň:>  ûûLJè1á7ý ‡ 5@NôÏïóÓ:îZÿÛ:(ëúsê³:(øÐÿÌ÷Myð <Õñ«ò;¥ë!Í[Òß nÇ·¡¨‡á˜¿Qõw‡jÇÞÉ—ÇŸ¾½x{ü‰²q Ç|¡oÓï¼Zùþ¿õ ‚ÙôÎWÜ!@xvþ[[€ð˜ŸÃs~ oøò˜ç³ü§Á¿%ú?íÿRÿÿø‚ÝxÚ¥[-›¤<ÌóðkVŒ@DDDDD "bÄŠ'ÞÿoÞ¤»’LøÈ'jw ê ]3 †¶aPi3Jõá0 à_ñU$ê¸ <€Æß; ð_Ó ôŸH'Ÿð¾\¼ôñ³ÙW;¿G¿Ý4ô›â¦q&ÏÏ?Ó?ñUwDÂ8ޤÿ4˜ÄÿÿG`À@P¡‡O@ÿQeøŒßп«0{…þÏùÆŸï­eô#xìwŠ[<ƒDgô¾£FÚÒXçŸ1æýÇ‘õOüÇuð¢õ½Tê…ý.ÿjéÿ¬äüúup]?´þµôRŽõWÎZËuàœ s<‚s¼{ åø{$:£s¨‡ãµP®ŸQÑ …1òQ×ÛBÑò1:Ǩôj!Ñ~ÒY2¿U·|Ò_1Ÿˆ-¼¨Ö_£ê®ƒ\ѵ§ðùÒMëA*ˆã|ß(°ÔŸØ\q5òºö×àeXéŸÕA¤F>×ABæe(ó¯5ôÓu`m†ÄËðÐÏ@?sZà© ý,ô>[rý«ú~T-ý{ê ­?]†ÔAýjýUܨ2_gúG±Gž·yY/ÖBâcÎ×ੳûB$Èäóo„§ ÌúAðUÉßõ¯>§×uëçÚëôyèkýŸÔèèžëU¥þü“:Aj®uŽ9ß`A›cúôuŽùõcÿ62áóùÃþm$Â'>™Fñ%>ç·ëàÐï¾ßoÕAƇÞW8 ²þ½üAÐ|ÃW¼€… ¾Å~î ÓíXóö»F"Ø3ÿŒ‰x`?ÿ{ý?ë`8üÿïï{[Ò_{0û<Å×ÙçYáï}ˆÏqº”¯øø“ÀßUÒ%(6ø»êA^‡b]ïÙX½¡X×o‡þ!nÓD*¬s Ù¹À-mÿ5<qɾG?‘Tàã¨+”ãï÷÷ ýŽýÔ|Ü×6 ü;öSçø¦~§K€þrÇ~êCSÿÇuðçO[ÿÇuð÷ðÿ)¾I~o]§)ùÿm]b=lŠQ׸å˜ùÿD·„Þ'dÞªÀWMþˆíE³oíŠ aK&>¾bTªÅ‡m{)èó-«@ÿÿVŒ*!éžáÁ/ú|Ëȼ_>ðýž&ÖŸ~‡_iöy¬óŸ¦î‡þ´~]õy[ºgú§ûáeŸ÷_…3¾÷ž*)bªƒeŒzºeeŒ³>'œã–íY:‹$2ÉÇè\´Ÿ]æ…qaßfó·û¾”C,o]VÆu­ø¢ßáÿ£±8îï|F©þ¶ˆ¤;ŸGºÀ?¯¹ÏO–Ö7cÔÝ&õã™äç¿ûŽFp^òþuÐqÛ\¡¿ô›§uðû§Ôÿý.ù·ýþŸ 3ý)ÿQûXªÂyf „!Î{úÿy>av|ñ}ÎIÄu0­‰nÃã‡þûx$£ž$®;'äóH:èwÔAÝï{££úó‘õ'~}|ñŸ™ß“~Ÿs‹eµšõ·ºÐ_ÃÿéÓ:°|ÿÙ,ô·¥~ú™›:ØÞ'ú[èjoêà¡èÿéÿ‘û°ŽËÂèHWç³ã›ßf¹ßÚMl:ÎÙü«Ã÷ëqáóè¹}ãÍÆ;öñüSÿ¿çã˜ÔŸ8GøäŸú©CúOÁèbþÅoÞû>îÃÃlÚú4i'u0/åú¿ëÿ1ÀI”üG¾o]¡Oóoš×/(~ u ê:¸ãçˆa…_ð»ÿ¿:~Ž |® õ·Ëÿ·Ößÿ_ðïšõVäúßÐÀŒïñ˜7b¼y±¯îä‚õÓÅÏ»íþ¿“áèZ|w…´eýA>ÿ_øÿýšuÐÏ/üÿñ9"ö¥˜ùÿ¯øâÿ“ž_ñ1ÀF“¿w ,ľâÓˆnÿ¯ (ˆnó¿*‡/ýÿ¡?ü¼*ö¹WHýÓBþ?þ?± ]üË $ÇšèJ*Ìa¥Ù=G9¾4 ÿ¿ÂçŸaƧ„§þå-4õ\Û¦ ”ú?®ƒ·Q‡þòÜŸýºÊɯŠQùª,žÿÇ–þß³ ‘·¨|ÂäÛrŒ-ñ £Ã@3©÷S³bäã×ü6"ÆŽ”*0ùÃ…ü¿Ò¢•jña„ þfßGÇ]£JHºˆòý‹>? ËT½7±®ú lê¿×ÁûC÷Rêg®ú¼ßZ÷Zÿt‘çýéXâ¬ùª½£{Ô+o`û}Œ³ËÒ~Ѷ1ÎŒž6 씋×ï?ž†Ë cg""FãÈ ¾ègÐÀ[Tñ|¦ÀÎsŠÇŸÉЖüŸ9á¾^bäQ·‘twûõçú'¬üž)ê`YKýÃTêûüÝJýçPêëÿ·Jÿ¥ÔŸ¢Éñ{@œç•˜®Ÿ®ÞY]@ ^’o´\"ãáÿ£kóIÞ$½q‚ç®d@ã0†_ Ð0 Vê"!ý‹ÈþÓŠþúÉù8GªÀ8 ó\8¾ÁñM^?Ð?«­KŒõDõï"Ÿf`7 Ð¿ðŸYèÂÿ‡ÉB[ê¯á;õM9t¥ÿƒç}eÿQë_?/ã×w§ iþœ) °®ý—)|_\•ÿg,©Ëüxý þÐõó>½hJˆ7×jßôÿqoZè°é Òôo盜ßðÿSf¤ë×G€Pèþü÷ÿ¼úLJþþ²'ú?õÿÁìyÏðÐ÷uë_žÿ'âµNî­äƒ‡oó?}ŸÔÁŽ×{5õi}pe€ÐæÛ)@õÀUB¹þ>÷ÿ¿ÛÿwñuPêÿä}áC8€çüA0Î=|• uñQH!”Âs>¯H¡ *¾»ÂÌ'Ôünÿÿ¿òÿûÄhÀÑ&~se0ŒB@€ Á ÌŸèòi’¶*@Š3_èϫȃç}ª^FŠ'ñ†Ý}\wÁCÏǾx‚ß§&©ƒˆM¼‡–ùã7vãH/’$9=Á#@ð0ð#M‚Ö¶ ¬G€à xÂÿù‰üŸèÿa,ëÙ0z‚G€ |9éÑ -Ðy‚\¡?ùˆ†þ{,k©˜JýoýÿZé?×úkÕÖ_0\ëφh²ÜçÑûD%zBöÄž|ñ%Œú™›aD€ )@ ¤÷ºˆÁ @ØEý1ÒõX–N=!×C}üZƒÁÁ0 Ð:,fÀ6õWwukùRÿÛ:˜ÏôÇ*ãÕMøJ|~ÑÿÚýy¾ÿ#õ°£EýÐ>¸«D€ _0“\H#@Ð##‚A£•|ãß@0‚ hÑŽŸ¿–³£Mã@1"Ub"[ÏBËùËú ]†Yè9@Ðmý«­:@€p¢ÿSÿ_×;ûžŸ|°®ƒŠÿÄ÷u^๬ßò{¢çwQïG}ø¾ê)ûüŸðs¤ï…ê¢Î´. ñŸ¿XF¼©:V×ëûê:èâ·ü¿Ùßóøâ ‚àûùY„‘î7]ç B7¿ t??ô7|ÅV© zø¹þ½ó_«ø?s¶ôêgaviotatb-0.4.orig/gtb/gtb3/krk.gtb.cp30000644000175000017500000003205011536321052016726 0ustar varunvarun@€3€3<<e « '(4xÚ¥›;³ë* …çŽ&EŠ)\¸     p‘âüÿ?v‘´ÄËø‘lÏœóm?–m–lƒ€Ñ“ý?ó?]n“ôô|÷çyèrI^Þï7ÿã%ŸGùºIYÖ•V¬¯‹,´¬²\'ȧXyy§Ûغ÷Þ9ï)ܤ-päÿIƒ@?ûo1x½^¿ùŸ—EƒØú¿ÀçSÚÂþg•úîœ2ûã.ØûO꿃¿.\²ú§~À¹¯ý3ß-?øÿ‚ÿô£ÿâû*æÃÿìü_ÔGê¿óN|=cç?ÇM|¥¯ý=_(¿’ÿd_¯ç)÷þ-ð‡mX˜Ë«KñÏž_ñÑÁ¯NüsNŸ_Ç>:f8fëŸ+þ9øc>Ɔ6þRþ·€Þ(Çku½ãX~‡rpùŒæƒ›°¹”ß¡üJü¯ {6z-w@ùChH`=îß©~ñª_p‹ÞL·.'îß®ï¡w¡!¡²êÝÉý•£Þs/…nFªëWú9©¬7zÝŸRŠqÂÈKÃ*·vÆü œÒÞÝÇ[C`‘ ¥r= ^}Èóâ õ=ÈÅ)-zk=^ÄPNY˜?lNo±|þH¿wÒïÚ]–×—Ôò#ÿŽXõËÂZñ¿äì×°ìÓ ©6 $¾øÀÌ/ûtÂÞ¿•àŸ‡?áŠõúç[îçnÅÛ׿y]ÚS…{lôˆ ß]ÿ… íñåsPª¿Ò ÐöÃOñkü¹1Ìñ_ç3vñ×íŽ[ãˆÿŠ8rˆÿªñ÷¤ñõáŠcüÄÀç«¿Ïsëi~¾MüÿåùÍs0Æßâ(u6¸œ°â/yŒã I<9L‡lõú\xÄÑy}Bf8ä4þ¹ $ñõx¼OG¬ú|ûù»S>Ö¾ë×÷ûíþí½88~™óZO7¯¿Z½f ªþ¡©éjþŽõ9nïçj$ÐO8ÆßW½/q$0ìIm½‹ÿºF‰3aGÓg·ø{Ä¿!idÕk½ã³¼ƒŸc4ô´]9¬×í­žŸûùqÞÖ]ÏQtý\ÑÉvÛo¼ÒKœä@I |³>è=ô«Žó¶Nçúo^‚^Í[<„†ÊQKüTŸ°®$0îõÇSK“±ñ÷) ãRn$ÎÖ©úáÿoéÍïÕ“çý|f[~øÞé}Õy§úì{ˆÞ޳íãDŸ¸¯çª ¢³íBÓLŸb|Œ;} 0ê7ð3Û ÜLqþˆEÊ+‰Š%J¾#þ¦OÖkfõ­^â!ûÝÓïtØøÞâŸ7—/Jæ]ÝÞöúï*ïßòuÚãm{êHý&û?…©ãÖ³I¿Kƒô¡Ü£åŸÖ­­¦\¯÷X:êöµ6 ôƒ|ÆÚ{¤ºCÅ3†3¶å—ÓZ*¦3Öþ+õ/:zÈw$ÓÝ`í~“&ìkyÀÇ8,ùÇ¢‰KiØÔ䔵û´WNü“Ì[©^}:æày$ ꟋêÓ1›ë/ò¹÷ê_¾—z§lô×ò}kúÿžôìØç-–üó¡0|Fð«ësÃ÷¥ñ×¼ãvïÛø/Òõ@ÒߨñÏôçìã¿hüù[Àñç®@Žó ûøKFÉq§_ãïú>þ/Ž?ogï&°ÿ/ø¯ú› ìDÿ‚ÞØç'ñ_ñþk—Üýøk¿:î8¼‰ã¹øcÿœvèñvíZæhÒŽºüU;bWâï8þAŸƒ”™ŽX®ï¥}ÏñççÀÛ#]Œ@6÷¯(Ã~I\nëåýéõ–Я딣žýgû= =æý÷zžLÝ ¼ Oô¾À°g?Ñè#…JãŽcû! þAãÏä8˜F½6`Y¿jƃ|¤a½lß_ŸõÎ×çI¨_7ÞÖ[÷ôõø¢§ö<Æ>ækœù©¿ 'z/znxâ8Û²ÊPy©OÒÎ L…½ž?¹¡ nœ.ÉX‡OÊõ‚´dÇ?Hãú—ú’¸üª·Ä…s¼ßôÚRçÓ‹#}ÎcÛ3 <ÐÇNoº Û™nS}‚ÎŽO{¸íõ9®Ýõ>XïI`É?CÔã“$&9_Ú8¿‹œ$MIÆõš?þAÿù³ž~Ò×ý©}<ÒÒT¿áþbwü§loHgúQ÷™°þ— «ö˜Eô\³KW›B„±°,ãŸh@IÅ,ô·XÆ?WWôMJ*Ð36ÃßÒ€’(§ T¼ÁÆ@Òê_Ìçw7ØŒ_‰ìèCê±{¬íÏÜ€•üóÓC8Wlã/ù§5$¹A°Ê¯SöþqìÅ¿â›é „y Ò?(þÜ`[~.Oqx w‡­þŒþ›¶ä¯?&°µÿA;ä”à7×_ÐÃqÕ7ñ‘LÌ.þ+¦F­Ò Ïñ½äÿUãÏIޝ—8§vz¼·Ò/ükü󵘲ómüßÒzdïŽÀöz>Ãú{ ìLÿ†þN;‹¿ÃûïðxL¾ßÎkžÆ×žƒxÈš?xéðkGN¢×ç ñ@Éwño°߀x°–ßiü=(D é[YØú§å8iXï¹×û£ãýŒ3½‡ÎHÃzË3}0öã¯#.2¶Æõ3H`Üñ"þyÙ8Φ‘Þaf„4À8pÐËõeüIFŒ{ëôFÖ×úÂÐò=}y}c²uê·‡©>•ýqÐ'É…™©°ŒIŒ[}‚~ƒ^H`2V=ê}áô)n’fÉÈMC“­ïô ú4Õsâ"L?ê#õ÷óµ¾”+þ¦çöÞõ{V_Û='”# ÜÂYü”è:XÇ?9+–¸è˜C’ñG}¤?êýQÿù³ž~Ô@IAOô#?;Ò-ýç˜ÜDí<¾·vÿl~_þªÃ1Wêæ!=æÃza8¤v¯6ó¸lx³Ë"ºcGr7ªô޶óXìø öLÙ­n³~äy?oØß0uäa'›‡ÜÎ[6«Ÿsò0nÉ£¹ÿ}ðÏæÝ@™Yòxçê<ª>øSªÑ—ÏÈ¥=áKúÕ¿?8hž?jçq_±óÏ}é_Û Yôðüim?%ü‹ýóGƒR[LyàÁ¿²¿2u´éMùW›÷gå>›ÿÊŸ¬üE¿èóh½Jý´#ûçÿÊð£:Ì#šRük^@_üµù^‘Û áˆêKücCÙŸH¶¿2u´Ör½þºöÃ,^GfpÜHžoÆÌíý·ó¼¢ÔÌ2ŸF'Ô ”Z¾Ñ‹Ÿø¡…fé‘›ÚÚÚˆqG)WÊPþ˜l?)wå¦ÝÔ±Gã­ÕÞÏ÷ñRÃc%Ÿ'¦A/û#_ž[[©RÊ‘"æõD™‡³m±­GKùø ÈÇqÉü€[®U·m«zÑé}åª0I7ð¦”ãt>‰kÉOÞQÚAzñuã3çý²T&9|Snÿ²>/ž¯#çÍÛY÷Q~”I=Ñ?í.å·_Æ 9`ø Ä~Ç}ÐóqpÏ̆ ÓœÒMDÝ8¢ÖÛèà/ê”!izIm‚q4¯û£/Çí™›¡Ÿæñ“~tÙ®ã0ÜL5~fü„Þ?·ãçÛS@?üå—^Mýkþ­kññ”šn×úwâŸ÷'Tšú÷7ÿ¶þm3~¢úÐ4€ô½ŽôŸ2à ùCßï:oÃ* ›pDí®ž?êýsøÎÿbÿüü“aäývÜHö/íý£Ö?Þ/ 'Ì×½¿‘œ|þ’ú—ïåòN™|»Ð<¿×¹æº×Zñƒ«ñýÏÛÏx–_X6þÛ/Ïæmÿ]€Á°xÚ¥Z±¶ì& ,ô)Rl±… ûÿ¿$@`¼ïåÞÍI&Æ6’ #qS¢÷Õ„ßûM¯wÿ]oêÿJÿ¦Liá_¯H†¼{ÿ…qg,T®œ³ó•çý‰RïÏÒïãvÌ•jÉ¥8¿óò%½_nÛûKïçŽ|ÂRé]ÊäwÊ;ëþÑÿ¾éŸ·þÎØŸ#“ïŸýûN)qôßÇ¿ßÑ~Â7»oãßG;=ðÿŸ€ÿž°Û1¥•߹ʿpŸ‹Ìßé: òsŸÅœÿûJò#ƒ,—€ùŽâ§”û%!fíW?fñ©ãvÿUÞý/4õ‘þîìÞèþ–ѼzLÿºàƒnû>€×†:¾Ì÷ïÿwÉ‹ïãý?e³ÛŸ¼}-øÄwû>áú;bfJeå§È—ùdóCÒ/ªcX¸›lågðÌ}Åúu…ö¼ÎñûKê×þÙëýû©”䉭û¿,þÓxRÿ Oü/غ¿ â Àÿ¹v 3¾¼'+ÿÚ˜?¶6øñù>¿+øýA¿ã³·óOù}Ž\ô>‚ÏüùÅœ'–Îj9´Yìøê#ók*¯îc'X(mñËÏlï5xÕÆõ6Û5k×îÿZw¾>O—*¼ªãXÆI»#k¿^äÎ÷çõ~½îï¿#Ÿø¬|~äWú%¿þšoøŸ|±‹®[àð#¯»Øü²ðö—áð5³µë†ýßµ#¿Ùu¿¿ÅÉ‚rD ´õÇÕ»¯?²èbýOxQ߀Âþ§[…þd’õ×úŸ±OPT×Ð_&ÀTü(öþ/˜RŸp:ŸŸ”Ÿl×MÖÿŒ²Artrž.Øyô?"‹Oö+°úŸ0ñ¥vJ›ýºeô>‚å ê|³Ûïý~½^$ÿ‘û¸¿¡Ø¡ |ºÛ¯Ø†¦ãÏâÁ~vÊwCÎb‡¹QŠñ×­dô#ØoÐ!×$2_ê‡ï(ó}¾ÆŸJÒ ôUGœöËküÑf?™Ñ쓃ýT@ÙÏœô?a€˜ú öÀFÀ؈ž0C¨Ìç_濾ͽ²F ½ ˆñZ¿ÿôÖË~Àî/iàçíW7¢õ¿¯o(~ˆù—ûM…?ùÂc|Í¿’ E ø3Šëvÿ›°Lªå!à³»¡~Aÿ©ÿ³ F#âçÂwCõÔïýUTžŠÊPÁ×ýÌð÷³~GÑÿø~³ù¿GÇü_4a‰üëò¸0ϼ äOh nZÖï öáû^'üÆGš@¼¨6^òo‰ã'íSÖo2¹c]øOþ]ÙýÉü-yÛ†¢„êòýš€/–X¨RR7Ú¸zC®›ÿ±ï°Å…ô‹ŸE¨ß7ÔçpÌ%ælÿŠëƒÈÞ!½  É϶oÞÆÑ/ùÅÛyAK„Ž| 3”).‰×LÀ¾òƒ ·”šg[?M°rüþrLüTÀ9JPwÿé´ªúÅý‹q""ë@rAÿ‡@n,B¹÷K[ò2 HÈl¾eôoHûõzæ#®î÷¡_ò–Ÿò)´ù‰o~+àŠìH±-~¹óÙÕ7f[yÌ¿õ»u>„¿ “¶È}`—ðôÃÿ’?˜Ð¯ú‰ƒ#v;òíþú€#¿÷F>O¾ÏKßÏù¤‘€þŒ_ͧò‡]üó¯g~½¡tõîÀ÷ûFlw¤á ƒáG¶Ç{\=¹±€`a&yl¨-u ;EÏGµˆaË’Žóv¬C >3òaŽõ  °Œ/ûp_FEß™Ìu™lõ²ˆRÇÖòªl“QÇu#|¿>7”ë²k·?ðÛv ÕQûg/Ë@¾×­?g­¿aQÿ!îaÀÁþ>?ûûý¶Ü(*HÌ¢ƒe{Zt´ÉgŸ‡ôŸ°§!EÕZ÷*Ö9ÿ·öÏ4ºœÐÞÓӺϟ±>ø‘my«¼.ƒ÷ùcù“y+bYT¹-ù,Г8‘÷˜¿¶ž0e¤Ù–î§‘íó÷48¯hq;Ó2_Æó/1ÎQ׫ðký6Ƽ#†s†+/yŒ_þÌ^¯FZý/7Ș.£®½ æÏ˜?¯þ'ÌßêÐ:ŽWÜü¿ÏŸ6ÿ×1dvZÎæüìøE>r[aì\ebþ(Ë9Ê¥ºWæAZϨ¯²RxŒùÇ:úšÆÙüóhó¨˜Ýæ¯ýº,{ÿt¹'÷ßÖߔ׺'†bü”‰¥à=â9€Ÿ„~K5½ ÜdÄ|IO!WÔ]ûÐê¦sœ"Åv}ÚÿŠ??Ü—?­óZßH?‚Ÿ6ø~ß&¼ÞßÐ/m~¢fúA|‚ŽüNtœúwTo…Ü•ßíVðÑ?ÛÆUõS[òÈ”§ýíz2CgÇñ|_ø¶þe–׃hÍòB¥ù³]BMBM·–ÇkœÉ.rˆ?KSÕ°b™ëa~³ 憒ºfK§—:’Ô{lý»Xÿ uã-ÀXG’ ˜Ö:ØpTbZâOõƒoTãxÁ¸Á´¨̾„ø«3Në‚õ!–ùi]æ¶Q­ˆ:Šmˆ•ïëGOO.$H6Þˆ~0ííÿø;Ô+¯#ª°É8y­ÃfÓlÉzýs¯ƒÆú…þ§À°zåηóÃ,ùî´qÿ³ø0á2…/¯ˆ Þüõ“LJø¿’ù¿Ö9Þ…Að‹þç‘¿ëõ?ú¿žýÏæIÏNþŸö°?Ôˆü´Œ£?ðyá› žq°l8ÿÀäïþµúu²{šG|÷#•›}ò¿ÇÓ(8h?Ýü?„é¬à?Îr‡«TCAÄyÜ\nüjüÚl\‘~à}=°ûÌ÷—¸ý:ã¤Ø,0Ÿ9//°p¬Cá\gŽs¤/|þ þÀòS>Åö¨On|¾ó‡ß(úõ°v¬£=ÔÏhç©ÿZ;ùÿÿN?vqÐ è›ð?Ÿ6õ¿Ö×´¿ë~íçþO¿Ÿ\4DB€ç·„:!žË±ë…»ð^w>?×_­~ú ~ý5Ÿ~ȉE~×ßGþ¬_[Þeë1â Ó>柎âžá¿fuÒ†oŒ³÷t´ü-ö¶8ðñ¸îqâ÷‘üÍâ@âÃâ¡Å÷Àâh||ÚL =~ĘOÄ™Ï8o1Ž×ñ¼à½žíüñ-up´ëøÍ2Xøÿ®£æ:Ü샲ïeÄA³º}Æw¦Æ=øñüçvu?~àŸÆÁ=ãz'8Ï3–ï¹­û€ÏûNQ\¯–ó>œ£ðüC¯ÿ0Ïí=žïû¥÷oã`_+×:¢Òâ¸Æ-ë*=œ‡H¶YÛáübàø=>—ó$ᇸÝ÷ßÚ|–o|]Çç:-þãšü¼ÛÎMEyìy´^ÏpêHçlz‹ðþV‡­Co®úc-i<Ö>ãtÄO¤“žšçñ–¼ïWý\yy¿¹oïÓOñý+Þ¿¶»ý­ßÇÅ÷Ÿ…ĉQǪþwø¤ÿÎïoö×cï¿yÿaÿ}ý¥6 y«ýoùĦCýB‡üƒ×÷öºÆä· ¯èïÞ_ÿpÝr”íýë]§®ßO[öy†~rÞÔ?QÍçûz<öцwÀ:¾¯§ûúÛl_¿­»¾nÿà‹ xÚ¥[»vä*ÔÎ8p0 øÿêvWzÏØÞ«}”5£¢Aà0…¿~ :þüåñçCøN÷†žv Ã'Žçß'püýãg´?~¤é?…q;"í9>GÆÚõÄùˆaHóæyxý<Ï“qžf?Œ'LÄùˆa()Ƈaby³®ö±%ætÄrÀ0Ô’R ÃàÏ|Ÿ‹žj®ÄÔQŸGbÞÃÀŸVý<¾Ã0Ñ-ŒÓÇÄ^`P¹]¿Y_»^ºõsó ]¿ý¦U?× úê¥×B?«ˆóÑî£ô…~ú¥œ^!õ+'ýìè—õ+Ò¯H¿"ýŠé‡0ù󳿵ªáƒ'ÁúO{ b¼Á0d{ Æü¨úÍäg«Q vc¾¢Õ?‹Ã*5GTÂþf´û>db¾ ê_¼þ1®õOª.l?VMÔ¿”†ú;F`µçÇÑùÙ õ{d=fžÀp:çó{QåÀ÷/,>V|®Ñþ_1”,¹£==ð³ê—y_~`ÂuVâèÏïhÏ_j­äk\)~ê=Xõ8q—[ô~Xù;¨oåU•[ýÎÍiŽ©£Zƒ—Œo‡ñýÁø^Žñš}¾oüF,@ñÃúøÿD¿¹7?ÿ Çÿ¡÷ÇÇã±ã}¹GçÏÁÛ?ù—ñßøx­5Ý¡ñ ǾÀ/°óÔÿY4„…Xhü†fd/0ÚoN¹8¶Ú±Ë‡ÐÇïŽß¿¿­|dF^ß/¦žMoq@âã·éw¿¥y…Ô/S¿=Í7úQúUéÞèW¥Û½|¿ÒF€Ñ‹é÷ºæÇÓ?/†é ÿÓôø‹¡'<”ý %ÂÇó¸‡òƒïÐãÇñÿ£ÇûWùâ?3~ÈŸ§'Ç=ƒÌJ×;ôø3žkþŽñÇûòÿ<(füƒâï#”Ç?³Ë¼AYãv“‘?ìâïß{ü‰å€ÆŸýã#þ9?gôëåñŸçÏ'ë{ÆZ¡Îÿôø§dŸûø>%ô{4>Ôd`ÆþþÍAÜøýùgÆ|ë÷z|‚p|‡ÎŠßžïñ B¾”÷hü$>û…õkAï¹â}‡ˆ?Æßa^ãï= ŒV¼oñ÷ño _@üsVüã_ÿ¢¸oÈøƒ?íão8¢ÌOéuÐ?õöëñ·Ï-þëuá|ê‡ö?'~×ë‚p¾ÅÝû'þ¿ñ'íÀã—ȧþIá‹‚¨ü/*¡?!ø»øÙ͘¿)ËžN$D‰Ó=þG>ó7O&ãÌüÏ‚ånàŒÿÊø©¿Ij/ì½=þÕ󦯴Äã¾Gׯ B4ç2G%xhÖŽ™§Ç®ËŸÙ |OlQëÓu)üŒïYsø?…¾â§4é>³øsàçœcèèñ+‡ç}‹õ(V…BÌ;ôüéÈGäwÐ< ÷Hx"ü<ò\8x¿‹_F\÷„<´2O%†R˜®xŽÿÆWþÌø—º þá&þÞøø±˜0;{V1©=°]„<ÎÅ/+­ßŒ û̯áòkÐyþ!¿—Å©}tGP®üÔù‰|òüsFÂMe-ý|Ùød™Ž©èú¿Šrábˆ,¿ùT]½õÆ£ñs· BÆßíDçÓ}”¢‹Ý‚ ïo nwà ôøúAs908öŒJ]Ò ƒðŸF§¾ä·ð?ù-ü#?‰Ÿ‚ ðsþÊ£p†á–¿ÆKüÎËâe\ó~=òqÆÊÄý7ðvœ¿Üò—ŠÏw ýçRöÂb7`þ?xœ5ötÖŽ—Vý{ V¢u ðŸ}ú·þÓ;àb쨪'Ö>ƒ’ПWØþÄ dyÒ$¾ËÝ?y? 'O,wˆxš£*©ÿ.¥û&%ˆxƒ­0;`+—úégÐÞ  `œ™÷ è🠠© +_ÒçѺ|ƒèí„ú…tÕ¯@èqƒ•´R?÷Ÿ/õƒ?cCk½íLý‚²#‹î³pæ™Þ :+Ñôʧ˜wËñ1!ïñ ¬ñ?> ½æ¯xL40ãgŸ¿~È>ds¾A$0ž ÷ù›_úO¿¿´}ˆþÓߟy^}¦&ôîPñψ?ÚMZýç¶×;ÔûÓãÏYAKÖÿ¢ø³3»Á¢hVc䯥(þEñ~žx™#ùæ?âÕ ù9±->'&t÷ˆ €®ü×81ß<Í|ßcߦÔÊÌ,ß¡™˜8;5–~a|ƒà{¶»ò™0{þêÆ>33ÞwˆøgÆêñ‡€ÿ4ûû|F¾ÿŒ_\ãß¿÷|Óã_*ß÷+2ÚÇ?#þVµÔ1UÄûÿÂçgüÓÈü;œÈH£þ{„§~š?÷1„ßÓý ã-:?ïøþ#ýÆzݽqæ+_~%þÈæSüÒj€âê?³ü§òà–+_þ3ËâmT<ë«úï¨øgN÷ó{ø&ÿé–£´3öøƒÿÂ|k!32ÙÚæ„T`=!žãO™+ ^ô¬Æ‹1ݼ׬ŠQ®ó|ª~¼®„ßòã‘_‚Îó5»=N¿÷9n@ŠnP€õÊï¡S±4$0XU¬úŒþ^?½ð=á…¨CábÊö¯Ê€‚ÉWÇ_<.ˆ¿ã²¸e;¨Š¿#àa`R¤áAÁsW­Ål÷ðs7EAX;Ò@••¿ÕߟÑWnç¯øX1*W¾ûÏÿůòŸö~¼ç§?w »ó~Qý“â&¹û¶Ÿ‘Ýð+{éÓj·”òŸò0 uŸ>Æ„#ýg“ÿ\ä?›ü'›ùæf``,Ÿô…øCäÚMƧcèç/øÞîXF»åÛ öüºñ{}›Ö?WÿÉýÖ¦öÙ[þæ7ðøêçOAŸ™òT„õŠJ@±˜ï[™,ëŸÌíçÇŒ8¼Å?2°XQã’üçOý빂öûúçCþó!ÿùß¼G& þþíæovþÓwxžý ÿ2ÍœÀaüƒNLEøOß«âñ¾" ãÏù›Õz @þ‘9¡v‡åÿÌm+î?ÿ¢xûŒà rŸógýÃ,ÿ™&eySÖ+"þÙWÍÀǬü§9õwˆú9vý|š|ÇOü§ èÆý§þŒñWù;ÿ™`Gè7ï±ÿ$s7.òŸY~óŒŒ?çÌ[åm~Âí#óOĻݢâ{ü5þñoŠ÷ñüMÏÏøÇ¤AŒþS†Öb=ׄXù#Œ[ÞV ®+.GL\ALã˜ègºÈ·þïß ~ÿÿ­ÿ,ççÏñ7þ|ׂHãÙfùÏ,¿yÆsü»c]WÎÿ x·+zSËÌøk²þ“{'Ъ*o|ÄoøÛ}¸™€Ïµa}É?ÚÕþ³|ÃÿΊ¿é‡7ÿYä?Ë ÿY–“þkü¶ð!þ'øÏªvP[G$À‹g‚n`b”áÙ<çÖ\DkÙ®ó¤=ƒK$¿®ü¼ù/Ë1x£\7´ÏeÀ.üBXè·ëk¸ã—~–Ì{ÿxñŸ¿äïýg¹áïügþ‰ÿ¤¸òì?—kü®þ³½öŸÎÿj-ÑÀ`££½à¯ÿW‰ËC?gù¾¼f/=Y1/|ÕóÊ?Ý'Ôäw ÿ“ÿ…ß«\ùì˜oøWí_çø‰OÿÙä?›|烑Ga¤}¹ï#³ü4{þëy™gëíú˜Åcƒ~ßæö±óa;Ö#:ßzæ=ŸûG}#¸¯Ï‰W—Ó}ÚÆ·7’û€øØÀ}|\ßÔú—løì¿x‚zÐùrQ6@Q¿‘úi?s)ßøŸø tý2÷Qù2ðU?¥›Û¾ÙKüû(€ýR¿E[1–ªØ¥õ}kCàz¹–Çñ“û¿ Gs]ø„þ¼Iûè’ô Ú'ý˜ì¿@MÛÀ…äÞþ‚'±'ýJÒ¾¦#ºþ›~Uú…|£׋*ß³R×÷­m£ !õ wúÕ¾ŸEú©½Îë>™¿G¥íÝÿ¼= ë{ý¡OäþϾìúóŠßõІµˆýŸ?Ô¯/£Vè¹çëoUÙlã® êç,ñÔþ¤Òc×/œÚß:«öç×÷eˆÔ÷ÑÅ]½=O‡+³ÿR –3RÞPûNèb´-öõÃ,3¶ýSç´õ¯ª¿ö¡)ÿçïp‘õ¯ªUýk¯¿¦q½þ¹×ŸC¿÷o¬¿†!.>U]_ú6íƒÔþî¿ëi(~q»ªµ­Kˆþ[ϯ}tˆôºÿ®j3æŠBÕ¾¯ñüÛ4v#ßÇ›‚_kšº¬YƒÆ?±^þ™–ÒÐóW,ì®×¾¡uü¦|îãÁªT·©ü>‡]ù‹µ˜þZŒGVé]¶Ä±ö˪ðµp8öxÝ4`Óò…a¼Å>Üz¹( ûª',ŽÅÇ_Nø~’Ò×Áñ‚y?Ì}&eÅzB¯€ùÙÀ¬i¤ùÀ÷TÙ+äS íˆ@K#h#×ÁØo–Ìqza ðÜ^ìr@h©ÓPó\Gá&4ØWL£Ûøûµ—/œó~-Øû¸¼J‘úÉ:1€hC^Þ)‰Æ_Lƒûä]ÿ= Ž¿SŸO}ˆ¦qãn¼4Œ»GÄ °Nă~}ü`{\ø qÝX ”úA&0a¯_•~UíHíé0 4u ž bOÒOö’/J_G¹"Êã>5ýrüEZµ£R¿>þ&އið®KÇÊHÓ Uú…rÕ¯ÉFs?pžôkоýôÛ Ä]¿Ã:œ7(NÀÒžÖ6içáTn gÕ4ºï–L‘ñ ùSspŸ‘±¸E ¸Ø¿úþçïöï(áS1 qò} þ둉Рü7FTkxÚ¥Z;’ã: tO1 0`€ÝÿRh4ø³ìÝçª]Œ-B"Ñ$Ñ ê|<gûäGzäfÇãù:ìóz¥öÿy¾ŽŸ{›Í¿´Oó?¥”æÿxÁï<ŽÔ®çŒÿZ‹líÚ_‹•Ö^Šˆ6³ð·ûÚõ3EŠùQ-v½}` ­¶öÚLmþµÙ³}Ïæ–%©Öv¹yת֮}ĬК?~mþfl<­s¹9ŸæØnðÄõf˵þg{Vó/Íád<[—Ÿèw’ç®”çQðY,âgñ±øµïæoÑk?½Ä-=ÿÜZŒ×€3ÿ ü‡Çÿ•PIö;€¸±þþüòþí§ÃÚX³„å´ëíþ춘?pL°ð?‡? N/¾ìø ñßî æ‡ãŸ!þ“uü•ø¿Ž?€7˜“ã¯Ä_‰¿®øWúÃ_NN˜—ýÞæÁ‹¸/öÿëú Ýyv=•×éã^-ãgñoc-ç[»’þÊ¿E âímY,Æ;üsø7(vÃÝñJrŸù ðþí—îW<#õÛÿ>¹ð±tÐÀðO÷ø+ñŸ×/¶¡:ì†?`ä,kϯÿˆ‡M%à_ëi¿›-6hÛç,ºÎþmJhö ÆÛÙ|²krß1~õùcs2ü۵̡¯í%}ñ—_ø·™Èøý¥›æïüø‡ßÀ-Ýã§sü)mR·ìÿì/Ý_ÜßǽÙô?ýÛLü7 ›Þâ¿øëæ/;ޏÁäÝú׎õ5,ZÇ<0ü ŸËü› ÿŠ…ýˆ [u«ÖÚmJ¸A»nÐ:ëâô$yàÅCV«fí¶ÅÔËüåõ²„~œßÅ&oAðïŒ[KM¥ &ëð£M)qÿçó‰Äi‰q(è/:4¬rÕÔ‚ãý?˜À±ŠíƒxN»îý>‚‹ñ·`üUÐGq¢U„ÀÜo×ý>Ã@싌_öøqë!^"|Þd±ÞíjÙ©¶ Ô’ÎñÂóAObZ¤ kOk혖œÄöFÚÖÆ7-~?-~ƒ€Æ¶›œÅx´ûÜX$ »@*=~ü ÑÚãø|,aOpÃø;IŒßIþ üÅóHødq?PƒÏokÊ8÷Þ⩃)ìÍZ¾pmaJÇ=~~¥•aÑ_±x<Ú†âñ{¶8ZüNÄ/;Ý7þî|r±(ã—Ê?&±?u¶‘„ Üãw¦ðõÁJE_ûØý&qÿL‘ü ‚àWw(auXaÂ@ká4&m¾$—)Ö‹ƒrãPZÖ ”ÅÙÆßH¯M`ðïtüfÿGý”w{P0ýü4ÿŸŸ/`éõ‹ÏyNî~mâÛž¯„ëOêµ{›s$\0àw§ßòýFüÅñodÞ‰#PȘÔoe×o?)ˆýÆíRuž–øë„?ø{ê7Ç_‰'þJ¯ì¿ï_'ö¿Fz—CieØ…@[üàïëú-SïÝÚèoΜ?çc¬_×Y‰´xßXο\Þüs×oå‹~ë„×ü[#Χ_ë·À‡¿¥& Â÷I¿m>Ö¯M®ß”úíjÏ?A#Ný?óMÀ¿~Æ_ÿÀÃ9°o’®ßL’H˰ˆŸPÙþA„z‡Ìz+Ù}ü{ü.`ÂøÇ~ è ðº‰ÍÄ[ý&ü‰÷~+‹.‹üñ@þýßõ[¡~[? þ¶~<þç¯õ[Ýðü~«ßœ¿ldý!ç„¿è"üí" jì1 ß„ú­“ùÂÌß™¿8~•ðŸ4OY'~º+`|ð/³¹Õoï_ÒÿòÅÿV¿Õyý#bü¢ÐöY¿­ø‘Æ|ø]J!ÿ Ó¡ßÌÿ 棎OÞß®¹~«Ôo°ûüó¹÷Y¨ß*;¬ÔoC@Ö!@;Ÿ˜ýWýÃ'ùGYôÛ¿û»~ûÿE¿møq?-c¨U¾ê·Ëð3yæ°ûýV¿ë7ÀhøcPÇ_£Áî×/©h0ÙŠ ¡p’@Gº?u$h¿O…Zøð ?ƒ¡º®×÷:RîuÖÌ_cûq›Üße®C»LÁ2º÷]†I¾œ†Ó>úÁ¿ýN^YÇøà¯„8VÒ*û>t8ëÕë°M–U׿&>§åWÃ?pÄ4h |_5hIÌ\óZ' yf;ukž`±=ªÉèF§À3½X¸£wËU>¶ñÔã/Q}˶¿ZÒ˜ÔëX?#¯>ó~Š?ç2JQG)cþ±™W‰·#äË–¦M¯ZØúÛd\‚±*Âóyò° ]ÌnÏÅ’Š/4¦eÔñO´sY,^“³Ó˜0 Z‘s?Õºg©ó4Âù£Mˆü5æ 'Ë"L©Æ9Ï1@‹MÆàÜâä¸yœíÃv~3Õ±£ŽÞdl! Ë®cÞùÓ2þ­Ží2vÿÿǯ¿VâŸþ¾ÉøøµßtY?‡éç8¨Ã¯ç7™¢a³}« çRÁÿÁãïÆ¯ŸÇï×QøÿÝø;þ¿Dù*qÏyÃ_P§–ž¶e;G˜ëÖä-Yd¶Þ/]i¬ôs-©R4ÄÄ­ïý¯µvYþ÷"bÚûOþñüA„Ô'Èȱ N¢|“Á99êÈÙ2,~QrùÉzý˜ù_<ÿ[ùÿô:àó?(rì2IŸ—qú‹2lèëyü¾þ-ÿ#~ù.ÿë²òêV+²R¡ô%ƳN˜9~´$ú/ÐÁšrÔ‘Šïÿ¨av;ÄýTGa8Íd$ 8HæúÏI§øyÐÀŸðeÍŸs¡ú³ñ‡úÆzü8ÿê2ÿ ñê¿ú¿¢LÀœÐøüMÐ’žpÃr<™'9g0'¢x‘Àx˃õÓ P/ÖÏ^ à‹uh§2^7:ð"̨¿ÚQÀ÷ú)ý—:>ðó×gzýt¢NÓçÿëºß‚€Œøùý|&ÝùÓTW¹[?5êòâO©û’Cmógòï,iŒÔyÿÌÁ>ûëB·»Oú¥ÿFׇOºñ¯û_»çi áµÆO·ç£þS÷úgúmãï½ 0I®M¿Eý4ê«ø¬óÀ0›çÁªßtÕo¾OpôòöyTw —êÊío×Á~ëÄðG½YGwú‰·IÿÓɱãzçÏÔ9k‡´Çïb!6â§+Žõ.„Ðo„ïšÏCzaà‹~ëú+Æãë@—þÏq_ôë(„&œ¯ãDï÷ø>: |i]…YGm‰6ø$ 99êÓDÔÄK§ÄžCpÖ/f÷gÏ0D—¢Bÿ˜^ù:I’¦}x¦=춬ûpê<*xÜ”G;^ïú±*Orü¯®ã}=p¿Ñ;Ÿ°çy~ñB8x ÏDßù‡Œ)&’FÿãøÚ…É8^ÿʧþïó¯óÿ¡ÿîã¯{ÿc?Jkÿ‡þ ýûêౡƒx°nŸdªÈx?m¡ºŽþ^[• ,‚^„çƒoñ¯{ÿ9íµ¦=þ5xL_G,\’ÇÅó§u'^pÛùÓ´ÿzþôB<÷cžÎüI—úiÿ÷˜"ët¾¹î¿±oÿ¡9:Êgaviotatb-0.4.orig/gtb/gtb3/kqk.gtb.cp30000644000175000017500000002770211536321052016735 0ustar varunvarun@€3€3<<ž $Â/xÚ¥[»²ë œŒ†‚‚B…‹óÿ?y´Â€qpîM„}¬+@ZAˆè#/ˆ}pý±uïv³=UÕê+ÔQ)Êe¬ŸÑî+è]2)•µ ¯”’~ˆLV h…*µ R *å©hÙ‹¹¾åš©þ“%+T©‘RP)O%{ ¯\ÿ3çœk)Ë‹Ø Ujì&å)¶ÇöW‘ëBõŸ¼([¡J-ˆ”‚Jy*ÛcÝKð +øDÃ{Ó¯¶«zKø« ìïkø“â/÷ ö²ˆ?­ã߯¿"CŸðL¶W ÀŸVñÀŸVñOÀŸVñgàO«ã?úÿ†Ÿá¬Pe¼•'øùø¥Uü|üÒ*~¾~Ð*~>~é9~ÇþÆÏ™¼ë¿Zí¿Zí¿úÞÿ›öì×ÉGíwûÑjûÝ~tÝþ'õðË?ÖïøÑ±þŸô‡öcbBúŽ˜ÀÝ»ÝlOÅÝÿë.HÀ©:¦´_Ð&¤Ýÿ›E÷ÀÝ»Ýla‚ãWôKƒµöÍfoøxܯр¦g¸e*°{+€T¹õ€PDTØà|y¤yý3Å5ü`ò ”s:ÃOG¥£¸º (íÔ ~íf{*øÉýeü<Ž¥P}³|j¡~hAÞuÀöW•ásh æ1×g.+„0`-" pü´w»<“ùû?‘½ý#ìO«ö÷”tÚß$ÃþƒÀ„‚‘×ìï ]Û¿\Ù_ñKG ¬‚‚|d!⦮?*ã•~pý`e•ÒEÿ¶{}ê¨? þpS?ìK¿Îÿx5ÿ“Ûÿ(Oíϰ?]ÛŸoí簾Uûûü§ì¯ýgë?{ÿÉÇþ0þ5€ÉOðk˜¾êÓIý§óïª~šôÙî2?Ôo(œØôí‹&ûsoÿÃüŸäWû»íi²óŸßìï¶§ö×ög´?Oí§{ÿпŒ˜ÇÂc}ê?Y?¿ÕbÇN”óúí+²éÛýÒêç¶/zdÿyþ—|eÿrïÿéÆþZi „óú©­?e^ýoþ«äU}z[?z)«í'Ô_nôË]ÿ í/‹úJ¤îí_~÷ÿª¿Aû¢O¦_VõËk}z[?½m?½í?½ÅÞâße?%¢áËà…é' h»×§ø?8ÒÞ݀ѷ@Môk?¨Ü‘pYo–ÆÔ…³DJÁûÞéëIls¥>‘¤ô-z³$@©ôý‡cSˆ~Êâ.¹æŠj•[æmYjaàŸžŒš,«±¨"”@D‘šV (U6]D ¿¨° è^~½¾¡ÛðoøIá ?Þñ“h™`}uQŠ/)ކ?Á5•¢òˆyú¿üÊ¿àû IC{ÅG žÖ·á€_èðû€@ÒD`? °a"°á M`qÄ5˜<Ñ×¶ìDHÓ8Û;øMi‰ØÏ¡ÿÁì`_¹™‚ßþ÷0؉¡$–ˆ˜j™Ø_®cµ•9Eý{‘Gû[`K6ßnìù•÷ñÓͤÙ~³ÜçÐ5i‡f°Y3Õ„ŒµÙ_§›<?H•!näÑ3Þ4gÀú{úÑôA7!ýúNŸZ* h#¢gö«Ý‹ÁòœXE®¥ R *źýü÷õÓæoJmþã:Û¼N¶rË"paŸÿt5ÿ¿Ù?ïéûgö·æîÔïPêÈ1ü+?e“}û¿IßÉïþç^ÿ;µDyùãþH`‰vkÇ}Ç õßwjyÒŸìgë¿fòÉú›õ¢Ú]ïgýìýï?Ó™ÿ,Ùü§Êraÿ3ÿIßìÏV¿;¤HÁµœ¼´Á¹ýúN`ó7}þB`³3×ü«þ@`9ÿ^?löŽükûí+Ð#°—ó—wûIí-ö«f+YeæÁþ}:ƒ€fì€d}ë¶Hµ{ÙT–¼u¬~ T&Ôˆ_¦¿±ëç¯ö¾×_ʪ>½­ß)tYm?í|­ÿtÚþÁþåÖþtfO_=$0ÿûUæ?ë—×ú´¨¿A£—ú=ÿ\Òïøçš~é7Ï”€²9pÛj6®i4)eR]@Užë·ÿ<XDêjôË‘z‰mÄ=YŒíoR¬™_dx›ÿ4ýÎÓ)c¼Ø ØØÿÝ,ˬo½6§ q|ˆ-\ð.d |4 GÜb1Œâ7Æ?a%Ø4Ø b»Ç%Ø+2jÄj¬ÝŸô;ëøYÌ”@I\¢}1É{ü“@`{ü ?~ ü4**;ü"°&ÔB®Dš™cB»Y¥¶)îø€4Ø›@`lÝ7?@Xÿ@`AX?Á‰+ä¬ï–Žv$®ÇúÀ¸êg"°a"°sÿÀlƒÉúa2Å0Ø¿#°4XÅZ lM °“ýýbÿ<Û?aþÌëÇ4ó'æOÜç²LXeØA`güœl˜¬ï6B{ÐЮ?X\7{¦¯,v¯ß«W#´§öQ•uQž«ÓÑžg½f¡õ"yÒŸÖÏÆy8ƒû˜ÌÆÁÎæšæ?=ÿ8Asð?dë½`†ÿaøîö?'ý¶þòNÞFâ§ëy×Ýu}÷_#Ý¿‡OõûõóŒÀ6âj¾è‘> ßÁ×õŸø?/d>ت¶›ÉìðU$°ÄÕl¹õŸéÌøÏ2ûOÍ ™³&qʺC'RbØnÿóNû•J¼r#`…þ–œw;•';°Üôóúx‚?æü«>½­Ÿ&ý<é DÄ?  Ø‘Öë;”NŸOô5ï„„雬77ÖDw€´€€h)ì(áÙ àFÿÊt‚gß¹\ÔovU$°+úm§qµ~̲­éo8L¸Íõw&,Ôm)ÐÓë­ã¿ÆÏJÐÅj#.åo 0¿ê }{¥_è¥þöZŸÞÖOoÛOKúÐÿkçoç€Æs¸z0â08¶!”óšÎAiÜkixî¼0“äÄ͵%;¸Lã9Æ]Ï2³döÜ*Òoš[™ÏÑî¡ÛAäì(xnF ¢_¶a³^n[wŽ ­×Zл }-Ûñ jãê9f?7ÓŸcvül#ÛÔo뀭âgø1ðÃ9¼léSǯòˆßö?Ƙ–ðs*¿ŒÆ-ã‡ñGoñ£ŸÆßÉ9¼¾ÿéþüæÙ9NVš†ùû?†×~øi®öÍø£ø¥ùÖ-ÿ©Jòß~$ÆAlûŒ‘ÿÊ—ý÷ñC‡õ«Œë×Uÿ}üÐÛùG7ýŸ‡€_¦pwÌ£@D¹x4QèüR±fóAèäUm˃õc³ö‹ÏܬGòÐfÏ 8~Y’»4,ú-ùýRM¿`Û.ê·?´ú­N›ž´íjÛßö÷7ëoÐÿÓ¦þý™®Œ £áBD…™)þ•öe;µÃVÿµ¯f%—(9€Ì"‰Ç9KÃsÜÉ?ö#Lâ'­:ŽEÔê«êŒW;gÿ¯­~;iت‘•êv=€ªµ&^^ |ûiµªŸ´ƒVV;°Ž·Ž-ý÷a‰ß:ÚNí€[)Öw+Ûe”âõKáoçÅþ›ù _`¿öõ“âF±’Ë;|I<ï%Î?ÂÓÒ~‰öËhŸ'ÿsž‚ÛJøÑçùÜüæxÌ ·ŸèÅÿ†3ûدØGÙêGé@™ü/èáþo_±j^ªˆ¿õ¿†ÿéÉÿÞ«©}LPô¿±{[0Æ`ð×OñB?â{ûÒø%ž–öõãö;„6ýßù¯×6óËxþÜãDážð×Ùÿ;|ÿjM¼9¾¹ñìÿjè𿹽Vø¿9½}|"´‹j—×þ+úoSF/Ѿ`"¡:Îü¯Q½þŸí·©ûG<ý±ÿý‹‡iøï þê? ¼y Õ¯uóüÚs›Wõó7œ `û=.þ|MÿwŒ“ßÛ¯¹žÔÀ×Þ¾Žö­¿á+ýˆ¯?ãé×öé;|½ôŸ>À¨wìðíkŽ?Ú¿®þ‡ƒüƒŸüŽ‹°D{ü“X|¼ÑË~€X0b_ˆ[b<Œ@ôø×è‚wá´ÈC$' ‰?ñ `Aì¯ %Ž÷8ê×+7ÓX?àŒwº$A œxÙºÊvl뫟–ñ#lVyà}I7gZgÚ—í€ÑÞj¿2Ù/>n?¡óᳺQäåã}É<þW»@þßoa¿bWÚ—_ì~±— ¯´ŸX5·_Çãür¼ÙÜï!^ÚüP'D'ûuk´ÂýØFîs!ìǺ±?ßÚ_Óþí T·ß  öã°†aõ_3œ^¥œìWÜ"%ìWÂ~…A_ƒÿ–¼p±ŸÝÑyŸßƒ½tC.ö#Jº·‡ýøÑ~ô•ý6ó>œA€ËòüØ—Ñu£Â®@ %Øxq!àú¨ÙïÕñyî…Y3>¥U±¯ý¥•¥Dùzyýî¿<ö/~ÿìÀ@^ ôFyÁûÝ11ÈÛí—8AY^1^Yýg1h*DßŃÀ`ì&ŠœžZŸ’ŸzçyX¿Ë'ë7oÖïxþÐð…·åg8ë§Ž/À³{ö åó&à_ÎøBCîAtp‡çÄ‹ãiiøÓ{ëýÕë¿ùÙ¯” ÿ^j”) .þ“Ä â4‡¢Ä]Ìø£oâ>âOàSŠÊêPu…z«Žk…:÷Ò<'^ï‚Xï¿(JÕÕ~WnÂøa\ |ýoÚøšøª+^'© KGCÀ×ðuí H¨?@»ø!èG¿Wö/x+¾R мœðùI<ôWä \Ç~‰Oá¬úW|*·oñasª]Xk'ðWÿA€Ñ$ÀÁÛ—ó=rÝÆÀ¯0…€3SÉÿC@4zöˆÃD»ê‚ÀÊãÔ~=  á8ðíÆ®;ë[|]ð5ñÐ_ÄÛé±µß7xzƒ¯7ø#Û§ßðG ÏÍúmpá$h5ðÿá~ó‹”Y©]«Dþö”“9æ)o–‚°[–<8H!ëê4°Ý1r¨F-†"Lÿ€G¼t<Ë Ÿa¼ã™ƒ†r&•#O†ñë§ïÆoxêxÝà=ðŠžÃò°”aa“Ǜ–û #ŒPŸ&§<À"Ó±[\¿cŸ‚V´Øßùh(ìF‘Bç˜?1~ÚØ¯Äüšò ûuCû<(ðÿJcrüçÇèÃñWŠ<ÿ ”ü}¥ÄøKŒ¿Ìã???¢÷¿þqüõëñC&ÊyªÏ‡ÜǘdK¤aXÎã_ç?ýyüáÒçñ×wã§·ãÏ<=hï²5ÑèiË`-£á¯u®ãé2~íã× D™wÇßi­yà¤qoÇ_kŒŸnǯ°§}×öe^:}ê$†|GÀðU·ó¯ï#ùöç­)éß¹ÿkÚ³Ÿ‹ÿèÒÿÌsnòà=yï§!HºÅgõÐDwÈ“îò¨ž(}ΣR7ðFG•IǤŽÒœ@Ðc‚îu8ðœRÐu¸mת?Ä!¿‰txä‘"{É£å´Ë#Eç<‚äF6òBÓʹÑÑgw^@ä´íðò€×àg½Ã÷<—^tؤûÍóÀêyàÜè£ÿ—Y‡êº€(è`b¼æÑ|#Û)G*¢¨‚ühð$8@Nëÿc·S¨ˆå±,‡åy,]pÚØ¯¼±Ÿã+ð•vöK¼ÙïœG—ûÖ~Ap°‹ê:~#‘Ê+T‚€Á„ýÊÈ£_ð¸…Ü$ÄÙ~zÉ£i¿úÙÞØ¯J¾^ÀÛõCé”ÌõcÙÇéë‹D?„<Ú´ƒw'$óà¢7ö‹ùG7ö›öažíGŸÚo»~Az^¿ýï·y, ¼^ð‹ýy´7åóý¼-D±ååÕX°Æ'¸Û‡X¦­3P&fa™ ÔüËD€èýúóo‹—žÓktõÝãI÷þ×úáóC«ÿôÿ‘yž}L2>\ó`Úi‘m?ªîññ"€@(n^dócµÿÀçü /hˆÏÌŸÞàwëÇx÷H]ë"ý<ãõO˜òýE$Yâ&ª¸ÏcÆÍ™zž,óp'ÿ-yЈ¿pBíyÐÀÃÿÜãѶ¥U܇Çð]Û¯ýEŒ‘GÒ °ù"€FžnàõïŸt@nðz‡WTÓ~;ÿô’ÇŒ¼¯ãui_ïÚÏx‹êxáÊíðdÞOO×}aéqâ‚Ï-™§çxÆÇ iUçýœ_ðžCÈñ#‚è%Žèб|ìºýðZ¡ßÏÝ5tûåR<µ_s]Lû×]Èý”xšc <þþ´>qŸ †·ÙÔrå1rÙO½ìG3¤Ëið4Ýî§ó½÷y“ó:\nuxšÒMÑó)÷Óý~jßU ÿÈy?”×Z‰‡'â0]â€ðc?ûŸ¾õŸ§F˜b| ûÓ‰‡†ý±Ÿý7}}~‚‡Ðsÿ5û™¿9ÿè©ÿ5û_{ÿ»Žˆ÷94Ñ»þKö_îú?å¡7ý×ìÿð_¼0ªÇÛ8ÿÝØ×îŽÎû‘±uÚyЇOø‘X=è•{"õ?3º>xÚ¥[½šã t>})\¸  PAA‘÷ÅCšà¿l’óÝ.¶×Â0I²<ä¹¶cy,~<¿\ÏåiÇã¹úÇ'íÚOZé'²$Ù¶”šèæ‹mË”¶5mÉNVûÝþûuÚdÉIRΔo%í4·ÃJ^g¿³åv⥟ȢšEµÉãù%gm‡?ã7²úví'~ÝN’=¤*K)Z¤4y{ºUd·{.äÏ´¿·#«%^?‘¥ÖR«4yȵúj;ð?c÷k;)Zý¤•vRÅmÇÒôÐŽõá°ÏøãäñÄÉã‰/ŸŽ¿Á¹µ÷Ë=þ÷¥oÃ_üdàÿIÙðwÀ ÿÔôp‡¿]+õ}¨ ÿBü¥¼Å_ ü•øWà¯ò5þï €oŠ_¯¸ýgiø›ÚûýºáozH¿àïÀ`ü¯¨]Ê=þ~ŸãßNöø·;€ñWü•øË=þå€?zø¥köÂahv"½+¯ðk‡Û ³+?á8ÇKüò[ü”ø9Ž¿àãW>ÀÏ5=÷¿ÛÍ {)(}0xi†“×n?§þç«ù+´ŸÚíg¡ýü£ÿ1~äÐÿòiÿcüÈ}ÿa/¢ýº ;£agÌž$·¥$o‡zi-[ðš«öÃÞwýµÇíŽö—sûËý©h¿T¿nw´Òq _ñþ²ô÷zY¯ö(ðªv]ž^Z…Kõãêýï÷£¡ê£Iüý6Q›ü«¾^!_—.çåËpng{_vý²+_M\Âÿ'š¿³[ßøÿÅŒ_N\Žß4 Æb\ïÅ&°ôñ Îã—Ã@ã„a&u“k èþŸCÖá ª£Ä‰rü*~šüäÿñÈNÿ…ó7î÷kü4üè¿“Ìî{ß½ÿXhÜÛ4Oç¸ ñRÂÉ–€(ï7ùÿ¾Â/ëtÂ/wü†ÿÎGü2¸‰Ÿˆ_÷ßßã·<̘­ \%-+ºþtˆr~šUlý~ÚxK[»F$ùtLÞTÍý·8Àœ»ýÆÿÕ²g(×(×ö<ã‡gDdû0áySòïMžñÆëí?|ª8€äóiûEÿ;»øáFÿùRÿxÈÜÖúWêY¾Ð¿3Lßɵ%‹>#H Øqýoä/ˆ?ù ´h­üܯñ{cIù)þ‹ÓÙE§b¾“¨¿]ü³QqV¬áûã¨ÿСÉlGã$%šÓ7úŸãŸ¯æè?æ?âŸô?⟿õï úïb'¬4—ïýd?£ß ;~9 ôFЪŭá€ß^>u7ÆB(ŸÓ¨šö#ù¦Æóûwòsü7ûÏh¦t÷ ,fgêþÓ†+ý‡Û”p˜½,áú¿öŸò—ÿ¼ÓÌy£Søÿy¤Î –ÑÝqOwò­‚Ïä‰B>Ê«ü§<´0P}/?µ¿rz{1y¥þº|-âž¡0¡Ò†MûøYC,ô=aLgê”Ç'ú¯¡ø6*õAàú×yü7Àm.{ Æû÷òú^>*¨¿Ê÷ êò*?¶¿ëA¦˜|y/_N¥P¾õÁôOþÑåûsó„ …U¸w”®?§'ý‡âCÿxþÅRx³Nï p‚SYç ~• ~–g¿Ë£‚ÿ÷ îäëYþ|Èò¯:§ Lÿ¯×Ä?Ç„¯þ#§•eÿé7E²À’=‚jY³[‹Ç( ðÂ!˜G²»%Gèj.ª…'F`‡ÿlŽ8mäOñO7ÀͰn=ºäŸe柳UÇ”Bùavñóÿä”äNÓ.ßÅÏPLøÏìø5 í¨á—–øádƒ]ei×iÙÇEvü3 ü>â™Ìúïüs{Ï?‡{”aÀ€Ÿø:Ï%~ù-~ø5Ûš¿Ä¨1€g‹Þ[°¶€Y´n_ üR!žŽ_vüœÀ®$°ù@`ÓÀfØöA;®Ó:õs½=N@¶í¹<öë×O²•?ÊÄô9Ö1¾ÔÿÜFþ¹ÝòÏ7ú·ðüS?äŸý+õ/÷ú/'ý;»5ûc=SI}þ$ΟÄù“8çØ6“Àª¤m›ˆˆ*€1‚3Ø•2MPcü'}AœÖÀ7.ÿ%ÿ ý¯a@§}»Oøçnþ“´¸Ú¶[þ™çõ»ký—Ýúûó_ó_þÒ?ðfvH@m($î€ü—N”þGi?B~‡8x¢ýH°ØÉÜX›^ÄÈ›“™°¦É‘¥ €;ù™þ‚jJ²Ù•¶_€Íù¡g¨KúÃðÈ'ùÆIÿi¬7¼ãŸ'ýýçüó¤ÿkÿ)wúg®±€MnõdV‡‘XmÓ¤hÅîþkàïä5ä‹óO—QR2ôhÁHêòù €‰ßÕ ‰wò€‹Æ»‰á oå;]Èóç¡¿Y~·ð®ƒžÈÛ  ®¿÷ü³\òÏ`óQÿòÏÊö+߸¶¿Åf9M þ‰,ü½Ëç.¯ÓH=ËÇÊh½“׃|¯'äd®·–¯åwZøF¾ÿ¬±€ðF¾ Ö äŸ3œåwš›ùD/e\CþuÒÿ‰îhL矯;hJùlô„üåëUq׫hÄå…òÅöåG_ñòU^¸ý§|ÝÉ×G~”·_/™ñÿA¾Øå£í®¯N`ßÊïøç^ÞZ`ø‘œå»nƒÞ"œÈ@pûÝ-Xʹ;›oÙëwÃì³×CXM$° ëVÔ¢‚ȡօƒÀfö·9Ô„|…m& %Ÿøg+€mF&:`Tn/Kaþ9‹H¹C‰7 ’è€ Ÿ×x®;Rå¼RÆSJ (€’D€Óû_FÿÊe†t$°…VI`óÀ* ˜I-µ×­Á?):~£l÷?6ð…Û@`Þuü°øœò ~ ”‚À69„«Gü2Wu.ðkU'òwñwowøeâç%ÐVÿ °À/?{ìJ›6l&Í$°ØHmãŽê¬õÉë.íj\§Еv[‘O°nOò˜'ùç“üóIþÉû èJÛÙd«55ôŸCÿ9‡þ3õOkóûŸÛµþ3õš/õŸ©¹×¦þónþ¤iþ8}|§ÿÝüYh@@õ†À* HqbóG ,w@l>A`ƒ‰( ¬’À*¬fì`¦•4he¶XðORÖØÓ·H`Mß$ ÜþõF|Ä?Ùÿuè/a÷ЧTgº„ùŸ8ÿ1¿÷ó?‘«ê߯ÁWó?æ¿|4ÿþ'uÿƒ”'îÉj&sÈ às¼?ôßðS%qUè§Rf&y”Šz¸•ò™òž<Nörï‚‚@n$]SÚÓydb‹é2h'ß~Á?ó™rlÖÚšþàŸ³ÿ,“ÿLTïä?uæŸÌ'ëûjý_ûOaØIÿ À+3¨ §¬û%cºîÃéà#+ôBùÁ¥LªžûÉþÌüõ(o©\ì(‘@ùœKäd*±¾­¾süíÞÃ? æB¯A£ êo’ÿŠ‚ÀÔ”ÆþWü³ €M\€ þë´oZcjÏ?c ãGI@º8L/÷ÌgìÀù>Ç_ð׺£PcGGF„ÜÇ_áøÙó×ràoL¼–:¨U©åsù¨DöÃøky« ¯ä„þ>‘¯”÷íËŽô7ËÏü³üÅ?!ÿʹA°—û‹¾°ƒ¦$01RŒœrr™ 4Îh¤ï¤¡ýCþØb2§^ wáŒÀ:•úK¾^Ë[ÞË—ù p‚¦ý,O }/_¯ä£Á?©¿[yRÞ+ù—ut–ÿ†¶A'ˆÂ=šò<8_‡_#ÚG@Š<¤¾lo•°ÂeúŽ&¤z"õÑ*£ôVK—ïy´9Í õ%–#K_ ä2h{Þgä”G2­ß–i9çXö¼m¤13õ5z­ÓBíí6vý ÂJÏcvÎtË•[%#ß1çÊ0tELjýmŒÈcûŸ‡<æ‹&¬¾ã'aÅU{&Ö) è?¼*ð“{ünÒAˆ_,£Èwø9ÞÌCEBãÂýõ÷õþûD-̃#~r…ß©œñÓX†~bñÀWøÅø«¸–ú#~1þäü¸Æ~ò÷¿° ÏïXF´w ·…ß°ÿÌ?yH]nï/K¼›Ýñ,‡E¡ûãó`‡ ¶×ú:nJ3?…4ȼ,täïvöSôÒÿbHÀÊ<"=~ÿR®‚b ¸žÈÅuø±ßÝû_³@`‡m{ÃÜ!XV¤ó"Á\ýK®Œ/¸,ðY"ö.¾ã[GŠB¬Dêôžþ/K,cøfýŒ_žÐ¿øÅ>– üÒéû¡Ë0¦î'|‡÷=œu?É‹/ß~Š_¢ÁLÌãJáøqi$ü¯J-_â×÷qPÖñ‹ñ'_á§€çñ'êËŸ3~äöÈ<© hsl¶l `ÿ"±ÉeT_ŽM¶¾ãk\Šeôž÷y[éðÊEþÎÖ?}ùsaþ¿„]æüËï^ó|ý24h½xÚ¥Z±–ä8ì÷ˆ6pà@ îÿðÉjÏÜž÷nÜ=ã²%@P”|>Ÿ»”Z>ô§z¯ã(÷ußTJ‘ÏvÜúŸþ¨ãŸãÃÀW9~üä‚ïz-w©vøYŽ<®g9^N¸×[þL¬×èü,?šŸ[×79^Nßñwj•›~^{ž=_Ç{Tá|°A°MdÜ¿øõãÅËeþ·Þ@-P™ª~ø[l|a7ˆâÇ‚W?_Üð¤ß îg¦×1Ù×/øøB¥àÚbÕ/z6ÿø¯Àîo¿ˆêËáþ2ûMÿ§‡ 7r…#áuv÷oþoq¿ן䎷c8Ó?üàÿÿÓêÿôùãZÁWÄü…¨ŸyÜ àÑXlÜb? |Iñ‚ûÌ`=Ãþ û?ñodñ†ñø¸¾áÓ‚^ÜhæÔÿ±¤ê‚ç>V,²¬Èä¿:ýW³¿ÃoÄɇ8 ~øFðâ¢ð¿ã\ܨ8]ÍGÿ«?ÃÿúaYÿd^wÿ¿ù\…|0.¯xhÅ-ªü’æí¼à9á9ã9FD:‚ÿ„Ÿoxv¼±a Øx“ýù‰÷q8¾‘Vü÷ç> OO|Ûí·àîJ y[¿13²6Í‚ïãßÀÓôÿßÇ¡K¿w²0~¡ñ7~-ùGæ3þ¸B=¬ßš~ïd¿¾=ðóÁg|#œÄ7Œ£Ù}ßiÁ7÷ß㇠þ߀^øOøæøü°Awÿwõ?Í_Óuï°žýo®/Œëõ›ø¿Ïû¹¿ÛŽüÑÀ(è–¿î ZÐ3Kño¾À© à«&P£@£³&ìâ¹°Ì”hÉX®7šó!%·%@ãY3“‚2Íú©ÿ »x¬Ÿ1®Kû·éÿL'9håÃÿËú!>û¿ù¹}ñ¿¯ú;ÿÏüMùÛýßÍÿ݇ÿ·µ^û·Š~Àw³Ü¸æø©ˆkˆàoq„„rIu$å¯ÙJ}@VJàoë¡´Ó‹qZ‰ýÚ€›ýái¿êµÃü ÏŽ¯ÿÚ¿ñâÿ6ëOÁueëß*¸ëOþ/hôÔu´ú½»ÿ;£@ ,oȘs AÎ o“CèÛƒÀòŒŸÜ»¨ÛI‰<ÏÖ‚gý á+^ÀcÎñƒrø9•*͉A¬«ãkÝž?ñe+t•æBLmÜÒ€›ÿÖnŽ–¶¶$ò·Ú] `øÿ·ýÛêÿŽ|Ò×ÌÿkÿÆ “l øÞ­•sÀ`àò…ŒÈê- ˆz5ðrW85,-Çß¡šÌ‰¼Û¿ñ7|n—C¹ÿ|Ãç#uDLO¼Ù?Íyð[ÿ¶5pœ¸_õo]ñÝð²8áÿßöoŠG ^µ†Ä˜¿Ÿ£aPê/gòï9~"Ÿ´M+Bó‘ïChFß¾á³ä„XëÑ2~m€†K³1¼¶_ÿßè}ü_ñÞWéb2|ïðßß—þ­¯gê{×xoàR»ç d‰¨IÞ0=Euˆ¤£åò«AUпY2ô´\9ë Z†„¾?\eÒå'žÉñ5ë0__\·üdE&è|V¼ëÐ?ã›”g1›ÊoVÆ¡ãÖP`3aSRÜ*ZHY²aƒ4ÎO^Và³këy C/#¼äÓ6]ÀV“†-C×q –¾³¯y ×YF¦|HYüe´ú®ÖG3ìõкh“h£}¢xë(~´9Ò Ùü9Í¿ìUßÅ û€õè:µæßöùWÛ(ÆÚ„Æß¢_6ý»\iÿ¦Ä®o#¸Ì®ƒküÐaþ5«®^D]Ùt\zŸ?ûüÙºèxMÄ­}þœÒ‘Ï|ÀNTõñÊü•<ù“‹0ù—ØFÁz8îcBöØé”Ï¿¦"™æÏáâÓücùÌùìówÿÓ×ùレԠh#jqÛpå)|„´¤‰ ûŸç>Îcÿ&ȺðcþÕÚ2\MÏùOZô6Ÿ7}›?'¾çχ݉Ÿ˜†—-Р¶àƒKNþÚÚ/ü~ëûþCŸÀ# Íe”ßùÓ¤ÁFg´ ÷YF9žwæO(¬© çûͺûM?U_¶‡ç>¨`E¾ÈíjC6‹í í#œGûF¬î† 7ë=2°Žúis#Ñûpè]êÈw×¹ý¤ÕOGТ¤>PóC¹!À–º(ˆÁ¿M:¬ DP´Éâ½þ2ê¯%ÐèãU-ø^ÑXÐÞGEÇ¡ã¾Ôß&ñ Ÿ<Îû¸­ÿzÔ_är)\?ú¿œü_AàÈ +Süÿ%gIÀæ7 LµÎ ð‡úÍa?ExÚï¥~+ÁUûQ{د¼Öo‹b_?à =ÅÿÙ~ÿެXJ€E§`݈֊û]S¿Ô€-–Ô°íÀÚ>) bG±ôÂ×úùÑèÝ~{ý׿Þì—ëÃêÇÆQäÚíÇn¿©ãd1¥9b³Ÿ ñž?²ýŒxשÿ¸Q £‰ýDs¾?÷ü! ت£há-?ð>Ø/tzÚoQ?Ô~¦°~fþ­3þhËßò(‰¿Þ"þ¬ŸûÙ‹@ªŸrÖOM~gÓOaüz3^r &û„~ZVý¯!6‚r›~ú~Jx'é§ÅõÓòÔO=A,:¸Ü/A¸~ºñ@.+‚]“~ÔO¿ñ'Æú©«ŽÆý4ég 8ù_«æéý—xBóik‘Ž:˜ÉŸ ûâº|#‚¢ _D¨ÀÓOŸ\™ø™±¿é§éE²ÊiÇ ,^öF}Åû†;a­IÇpÛà}ÝHÍëø7þÙ²¾{74à õó·ü3ûßu¸ù"Ô“./Àtó?訪“wÓOû7ýÔ•ù$ Ô?ë§Kü´%~~¥Ÿ¦ü]OøEÿ4˜ìÇ߈ïxè§¹ˆð& $|›¯ë€~A?Ý»m$üißÒë%mêˆvVmÁ¿óÿÙ¸ŽÊx±åWú©RÒq³®ð¡ä…~š_äÙ^$yd¬<^×O:ô;Þ‡Cøå_à!À¦ç£ÿé¿Á»L?õådö-^Œ™òóS¥ô=5€)~ìß$VpAÏ«rEe»7»’1‡Œo=šҋT"$¸“²_”¢h¤—ýÅóÜÕYðÒAö´¶ýˆºâs u„@0rsÄÛ{ŸÏ @°âØ·ñWσJàAeŸ~´¢ú‚ß7Dx®»ùuÕÓ½øëgé}¨X¾Œ”¾¡ÅÛ~Xð¯èCâ…È0$SC;ÜýtëÃñâkêÃCÑê˜ì›_‡Žƒ8ç><ᵑ·>|ëãñ¢Ñ±o³Ÿ³´Š2ÜRºù£îòò!~üõËöÌûž"/ïy¼¾æñþ´ c³õÁþ>Ù|m˜wýzá“V7(xyH ãžøÄÜOÂûd½-ã?ôo¾M¼¸:íµ>TÆ<}×Ùµ:=˜‹uïs-ãO}ÓÆŸçøWFsüõ¬¿rz?/Å[)ò¾båÿS‡þßÒ¸|ü%ÅðÿÓø{Žßí¿²®îìM쿾˜³¼OâñôºÿÏk\øóþóÆ_û«ýq¿(“ôèÿcb~Û¿×á¯úipþÀŸ»Ë Þ×ïÌÇçýËèNgaviotatb-0.4.orig/gtb/gtb3/knk.gtb.cp30000644000175000017500000000313611536321052016725 0ustar varunvarun@€3€3<<`8^xÚíÚ»NADÑ•Îÿÿ3¶±µÛb ÆDÍÌô£ú–ŒÍöýñôëèÇkàùøŸëñ?®Å?ÜâZüï4œŒßâÕóÕû«ïWó§ç_­ŸZµÔþSû×@ÿ«ó£ÎŸ:¿êü›ÐUTýRõψ~ªú«ê·ýW÷‡¡ýãAï. °*àêPˆ©$€"Ä÷s3póù@DD@DqV?Ö_íµÿÔþUû_uþÔùUç_ÕUTýRõOŒ?"@~TOUÿÅøÝ‡íîu©ûOŒßpÀŸ×‹û_å•?T~QùGå'•¿T~SùOåG•?U~UùWåg ˜jàT¨HÕ€þ‹xõ|õþêûÝž·×_=_½¿ú~5jþÕú©õWûGí?µÕþWçG?u~ÕùWõCÕU¿TýSõSŒß³…ûú­ê¿º?Ôý£î/uÿ©ûSÝ¿êþV÷¿Ê*¨ü¢òÊO*©ü¦òŸÊ*ªüªò/ —]vØe`—]vØe`—]vØe`—]ö¬}ú£Ç_¿¿¿öº.TQŒ¿úÌÞUòZÚnèâܯñêùêýÕ÷ÈŸšµ~jýÕþ1Ñjÿªý¯Î‘ùSçW3ú¡ê!ý" èH¼z¾zõýò§æ_­ŸZ·ôÏt¼z¾zõýnÏ¿?9ÿ :AÃxÚí˜ÑŽ! EIÎÿÿónb\eÚrÙ0’ú`Œ™sZîPJ¡”ê›ÇÿŒ? ø‚È;Ƽ-`ð¦€Å[&oØüXÀÁ<üHÀÅ||_ÀÉw¼|OÀÍwü|[ À7"|K Äw$ý|{M¾ÔßÊjˆol«ÿ¹¯ƒüÇÁŠòדæ/¥%Î×µm‚¯Šë ÿ^ݧøëóaþÕß&ù¿ggùg‡Ÿæ«&?ÃÿÞqDr u|Ôù£®ŸñC?jþPóÏWî¿+:>êüQ×Ïöø³=ÿiÓ¦L˜0 `À4€74€ .CæÙ<þË2L:Ôõ³3~’®ÆG?+Ö?Ôø£æ-ùŸ±±ÃñQçÏŠõ£Æ5þ¨ùcIþQ÷êþcÍþEÝÿ,:? ÀlàÙÀwÇÿ¤ y¸Ï"/ ö{ô?ÛóŸ°á X_üQó‡šÔýC^`[/`cçõü¢žÔúZø~ZQë7jýGí¨ýµ‘y<#%}xúðƒ|ð)>ôxйË=ú ýz{ÁxÚíÙA Â0Dѹÿ]‰ EÒüPCü®Ä6ƒ´6™›†¼а€†4, aýðnnü\@Ãа€†tà“kã¯4, a hX@§T8~$ a è ×ߤ/gþLzçÊg‹÷Óé¬?¹ðŽ ¯bE°lRš{Ÿh Èž¤p<^ÙðÒjZQ èqüñ·È¹`žÀž)ñT׊ 8í ¸°àÆ„+´n R@ÑC,Ll/Œ¿”ò3VÀ X+`¬€°VÀ X+`ì?1¬€°VÀ X+`¬€°VÀ Øq{ýùÿÀ*ZEŸ¤hºF¡*ì,EìÒbŸ£p rwwÛà¿Ù¥²xÚí™Û à Dæÿÿ¹7B¥=–Ê2>6ž!D÷2[éXV»ú_¾-‹ XLÀb°˜€Å,&`1‹ XLÀb°˜€ü¿ þBøˆðÁ—G Sœ'p¢Â™§j\+p±ÂÕ²ß>ÈwûGùæbœ¿"ü…™áeC7jŽ?Éyþ…þÉþ#þN3ž+˜|øà[¸"&cqa2ÀÙ§CœqAÀ)0000000pG˜c¨áé Ž Ž«nCviƒ?×ßôQ)àHÛiÖ”ÿ4™£¯l@2GO6&9zå6sôÌÑWDIæèZ1GÏ9æÿøð:>¼Š®âC«øÀ*>f—>úØs°ÂÕgaviotatb-0.4.orig/gtb/gtb3/kbk.gtb.cp30000644000175000017500000000371711536321052016716 0ustar varunvarun@€3€3<<4x©ÏxÚ½›Ûrà ™Ùÿÿç^Ól(:K›—&îl$‰‹lB£}¾¾ÿTßðøó_Ÿß|Còïß½Kù,‘ý%$Ÿ$òõ’¯'rñ¿­×â+cûXÿ±ñcõã€þ„ú—±´õ?'ô#ÔoGÈ=ûXÿ9?aü !Šö9ã?ÍaÏ@¤}1!@ò_ßaDò:ºn:>Úô|²xრÀ+_ß |y0òÕB¸bH>Û€n@nícýÇÆÕ«?6Øüc뇰~*…´¶õ?V?¬þØüaó­ÂúÙ(¤MûXÿ±ñcõÃêÍ6ÿØú!¬Ÿy!UícýÇÆÕ«?6ØücëGóXûXÿ±ñcõÃêÍ6ÿ6ý„äû6â»6ãû><›€‘ü£5üSÊtAòÝóˆpÓ<Ö>ÖŽÅ4°ìöKûXÿ±ñcõÃêÍ6ÿ?ÅúÙé;öìcýÇÆÕ«?6Øüslþm!µõ?V?¬þØüaóÏ߯߻}Gjë?6~¬~Xý±ùÃæ[?öÈllì×/¶þ±ã;þ°ã;þ¡¸œµŸ1?i`KüM[㯠l‘¿4°U~l`ËüÐÀF|×Àfü³ ùŸRÞo °ö±þs þB{ÛÀJûœñ_ðXûXÿ±ñcõã˜þ-ä±ö±þcãÇê‡Õ›?lþùÿñûkßQ´õ?V?¬þØüaó­{´aë[ÿØñƒØñ‹ÿØù;ÿ`ç/ìü‡?±ó/vþÆÎÿŒ[ÅúspÔsàñ¡]Ä‹çÀãñãoé9f†GÙ†OÎ1¿îð|ý3×Q„ä‹¿ᮋv|é÷/ê6ØŒ/4skë?6~NèG¨ßŽ{ö±þs$~ÂøBísÆBÿ¯HûØ  Mð ¯îƒOðß|Còñ9®ÉñÉ9®Éòõs\“Üð¥s\“Üñ…s\Æïâ6¸°õë×ÿ‘OxÚÅÙÛr£P DQªÖÿÿóÔL%;1Úgb¿øÚHên 7›íßcòùîã“óÇÞv÷Õ³§ø‡¯®ã?>œãoo†ø{"ø[CüíCüMÇ!þÔH/áÕøjþjý**ÿª~ªþª ý󽑮ÆWóWëWùSùWõSõWý“ñj|5µ~•?•U?U† Ķð/âïfÂÿd]¸†ÿjÈ‹ø£ #üã&ø£!Gøƒ!gø{5øÝSü§ þà¨þÑT×ß5¾š¿õÿ| x~ã[“À«ñÕüÕúUþ,ãâÕøjþjý**ÿª~ªþ~¿¿ÛÛ§ñÕüÕúUþTþUýTýUÿÔˆ›ê_Õÿjÿ¨ý§ö¯ÚÿÄëÐ}GßñûŠ1¾‘ñj|5+êWùSùWõ³BÕ?ªÿTÿZáµÔþSû×Òþº}¿€Wã«ù[;ÿ.Öò?ÔÅøÏïmˆ·òü™ö€ŒWã«ù{ký¯Àˆ¯æ¯Öo*ÿª~ªþª,ðŸê_Õÿjÿ¨ýgAÿªý¯ÎuþX4¿æ'05¾š¿eó{¾€Åøþïù'ÜG9¾š¿Z¿ÊŸeüoC¼_Í_­_åOå_ÕOÕßï÷ïw÷ѧñÕüÕúUþTþUýTý‰ÇÙçúØG"þ0Ú‡>ñû‚0÷.Ù—¤qý*Þ0ÇîõSõ·Ä?ªÿTÿZâµÔþ³¤ÕþW燵óçëˆÓ똋ñ-žŸÛ¿ìüùôòSxÚíÙA Â0Dѹÿ]‰ EÒüPCü®Ä6ƒ´6™›†¼а€†4, aýðnnü\@Ãа€†tà“kã¯4, a hX@§T8~$ a è ×ߤ/gþLzçÊg‹÷Óé¬?¹ðŽ ¯bE°lRš{Ÿh Èž¤p<^ÙðÒjZQ èqüñ·È¹`žÀž)ñT׊ 8í ¸°àÆ„+´n R@ÑC,Ll/Œ¿”ò3VÀ X+`¬€°VÀ X+`ì?1¬€°VÀ X+`¬€°VÀ Øq{ýùÿÀ*ZEŸ¤hºF¡*ì,EìÒbŸ£p rwwÛà¿Ù¥²xÚí™Û à Dæÿÿ¹7B¥=–Ê2>6ž!D÷2[éXV»ú_¾-‹ XLÀb°˜€Å,&`1‹ XLÀb°˜€ü¿ þBøˆðÁ—G Sœ'p¢Â™§j\+p±ÂÕ²ß>ÈwûGùæbœ¿"ü…™áeC7jŽ?Éyþ…þÉþ#þN3ž+˜|øà[¸"&cqa2ÀÙ§CœqAÀ)0000000pG˜c¨áé Ž Ž«nCviƒ?×ßôQ)àHÛiÖ”ÿ4™£¯l@2GO6&9zå6sôÌÑWDIæèZ1GÏ9æÿøð:>¼Š®âC«øÀ*>f—>úØs°ÂÕgaviotatb-0.4.orig/gtb/gtb4/0000755000175000017500000000000011536321052014756 5ustar varunvarungaviotatb-0.4.orig/gtb/gtb4/knk.gtb.cp40000644000175000017500000000333211536321052016725 0ustar varunvarun@€3€3<<$ Ú]@€!QçÈÚõäMÿñ0(VkŠj(³¨'YçÉ6}|Ê5y+k 溠Kn÷=%Oˆe¹ö±ÉúÂlò fø{Ðx¾ùÌý­^¤ú3>{F¡- ð â)ঞc2ñ_©(B„²yB¼S©gÊʨž›{ ¼Òu:&Ù|I:d˜d 4ä¡Ûអ‚'-T"Mlg‡\týÿÝALý!ÝíˆRò9‰P?’¯q².MúFq¤Nþ¹‹à _ö††=}Ôúž7o¤m™å¡á!±eça ÷‘ÄpË,®\(VÆpëÜ—IìÀh\é2éø_GåÚƒs ­iäÛ¡²&(HüÖkIqÏiߢòõƒ³ ¸$º6•6 `<çþ‘ã«\R ñ"–ú!‰ÜÖE„NÿÀ;Âð¢‚â”íõ|æ]U^7úï µå±tè턵(MFÁú@ 4L¶õ_Š4Cv÷l‚Höü± İo¥w~ á®!f‚횦] ä2Pyñ ô^nÀgþbØox|rí¶²¹ k(£ƒS´±4¥rziÿçZˤàUâä{i**yŒŽ³¢±`Š®™‡s±uM$æ\ëº!§¿ ù  È]T]€3€8¾rhä”URuj‚™Ø‚cU›äb}*[)H¾`ïè©Gºg˜ákêÚaïØÖ!=Ç©¯ páá,œT·ØÁì;”yY# úðØQЮ 'h~|2Ï|úO÷”ü· Ý‘›DR©9T“¥Œhç;ål&sÜl¨)é-!ùE|çä¨äÉbr]Ñ4íc/í’Av˜ºÎÔNLîµä«¶@ÍŽj{J°á Òx£(UR=ñzlå:ôŸ[jã(•’~X[^vãÎÑiðw¡ÊÖymš·FÅÂÔ’aàí"¡MÏ7ô”ðU˜ín9¢jßÒÌ휣áî°„‘§§WÆTïÍôw©Q}ñ÷Ç-ýEH¦³p‚K²èSÿòS8ï°Ñmó~ãsÎjŠüo‹V€{´¬(äZ'@¾% ]@€!R!Þi'ÌB8ã±Itk#†ggþ…G>Êob-Iòñ²) ý„ïh”s-IX¤?m…ö¨ùd«žƒ4³ALiX&Ë2:®I8Býì/X²°}ÝWÉà ‚ÇhÄJûºnkLÁa‰êyíø0˜°|Uí —Å0/å΋W™…åØsq=ºŸ–0A[W„_]éæ·I+l<¹ÀFâ3>Æ3hÛS×a=Ä·éÄÈHð¥ÀF%ŸMŽë8ôšðñ¿¸>uf3ɤdWD6ëœ×pHKßZË›2ÿ¡†äà¡ÃˆÃ]b@½ïZÿž]—-H]¬Ú;+֞Ĝ£Wï¦çW‘õôâãˆ7 É(Qk˜ø0ñØQc;ÕÈ‹,´~ ±òVÙW phºyˆ¶÷œ¥LöÛW.;Öƒ ÿ'æü‚$jCæï<6 MÍv²Z’Ìð±Ëà¿á+tÌ}Û@€ éø¸Ý¡2š¹ŸFÒ®¼Ô]€3k7µô¶:†)´-½¦«„ód>OûðIÛÒ˜ŒöLŸÃ]_¸ówùÂHs)Kˆ¨9ÁŠÝ(ìŠàï˜:>U§¥#Qï†ýÜ)~çÅžÇJí´ŽaÝ8’~}ðZC¼‰ÝÙЕƵD¥N8X©ÅË¥²övÌ.§>+σBS`‚w`éçöjëÇ^Í^;ÙË%»|•^.Æ 0,a¶×k®§­\Ès;®?ºÔQ@q,(ýÝA/¿3Z#ýñ‚[&g¡Û©`ì6žÿ*Eø¯+å ÄÝ™ÁñJ53L9Ò½뢋F>gíkvÇDÿ—Yš ˆŠÎ¬ÛÍÐŽö¢ÃœÄ¢Ñáu7ÐçÀ29˜ý–îš×v4)´æ û©Qî,xn…ν5ÉwwÇ&£²¼H®¤–Ö“­ƒã~ÆL>=Eékáñ½1ºzçšØ5¼¬Ë޽C'¬õTâ–xÁ;(†-¿Ü‡É"t6ÍÝsZi6ó‘¹Ë1yÇ”IË£#VŸºš9€¸¯ŽïRcô“+Ó—LI™[å•( ÜÏoJ8–ïºxù˜îÊc`>]gaviotatb-0.4.orig/gtb/gtb4/kpk.gtb.cp40000644000175000017500000006545311536321052016743 0ustar varunvarun@\\« #«&w/¶9JB JçPjXza+k]@àPIð²Þ#’j½ÀI:a›ÈuB¥Ô‹:̲%¿ë(öt`sB˜´Aû„…{ÉL©²»élîeyá6…´›‰>|XÒ~§CÒšOOúÃ-´~·úfÑ÷·±UUH”,0\_©R0œ¢ì#@|‡¶ðßĤ!êÙö¹´ÞŽÝºð©clü~y)‰ä–£ ¬¤þЂzR}p&(¨ àW¿’ÛCÓܹd)ÚS3¾Þ¾*+(_à .š,zá߈”Óø™ Z´â‹ÿàV(¸B«—ËNTé§÷†}$KÛyJ`¦<äÐÞ q·Ä£ü¶ævDtö.“d9–é’‚Sæà%µ=<×S|ë‚4û>!CDß<AàÆÁ™Ò>*š^æ7žA&füöÖ€þÞâê Áÿ0Üê›Tm\Ê]èJtMʬæÂb †SœSDÕꄆG1‡×÷*ÝzéÊHãÍ“ùØ̧ìi³·gö!oë–«`P #·«´äˆ'ÎÅÑ7í©v…‹zFo ö«’36rÆå.„'t%Û`ûóhf@B¨>0äPÆë’³ù-ê˜h‘!*\#6ZýÆvh&}ÑñøØ£\ÑÒ“î™ùÿpå­}_•POc4°  oǯPQ(=îÈ0Sb@?°xªŽ‚K ¢îmBÍýÔaU3Cï&š¶è QE”= ú¥„s®¹'ˆ|Ž’yp™ï-÷éõ¯ä†»‰ä9*2Õ—öe ’¹IŒ²CÏÞ3#V*l’ªñGnðª ÔP\ʾŠUáºdNcõ)á¿9eÀ`¨#u²›áréí°÷³-¿œ©AÛAÍüÂŽîÏ(&ÃÂÒŠ2Â;4A?fÎDÅHçQôóø Náê&ÖÌ1©ðOÁãÙ ê×Ñ%šáœ\8ûl.N”¨ fÎŒ…µÙ:­]dwƒ˜à6óÑse [È0øŽ¿oôÃ[g ÿ!aŸìäÞw(áku’C 1uek~pÆî-¦üÙ  +«Óµk&þâôl½wþDlæyàîL «”Md'J²Â—Ô:Ø=—QÄ^Öê”y†¶ò iqV9Bçnÿ4ñ'-ÂýŽLV=4Š*Bq…ó4®òº‰ÍLTPï犆¾Û_†‡ä™nºÌænW¯yß„YbœpíÛ_«1ªm“jÝU‚$Õ¡í¸Âe€ÃMD=É’c €ù¾%Ÿý0öÝ€x8dOEö_ ’äk®’‡¢·G7Ák°÷žˆ¦x‹~ÇINòjIÿãÄ6BxpŒ ƒøìž]ÿ.Ád\³ƒÍs ÷GdôÃs²Œq®n´Ú |}݆Gm…íÜ‘é¥7kF“‰'`ÑÇ"— Žðs¬¥]@à“Nbž" :æiæyÁ†|!5œRÙ´€«-dÄ•c7ˆJŒ0Ȇ%ÕVU7 ¸q1T”|I¥ùAMAjl„·ìƒ>°Þ¤KñØÚÁ‹ˆõ™š”ó"ô'B·‘WÈÍRç~‹nv8­ü4Ùv™ø×à…»Ÿoüá‹2ös·»¤»ˆÆú€ÊA1rkÐ ©”™0˜µœ­ë4ôH|Ç•*~~ŠíîœhÕáÎ…/œf@rAò{c«ñ=Psy†w¢¹.9‚ æÜsÜò‡lÑ[æšÏNÄ…ŸE±ÆsÆK¡Ú§3+`˜wÒƒ‡Ò>àÖöKÌâ¢× KªÃùz—ø(íÓj1èhýÀr‚Ðʦ A Á>~‹Ç¦QbÅWce[Äh èC¨)k˜kCsôí<8bÇ6=óxH"äa„ÔÑ4ÁHAá.Œ~Q«ñ0En°‹W9RÀ}‡u÷% õú!d­«ÜW–ÐõÔÈZ M(åŸðwñSlG~·(áÔO…Œ7@CG|ÃmÙ3kÉ.<Œ!†#PW+…óLZDMäóž×3®4=¸$â`¢ØCÄYÏT5._g˜*ø–sÇÜÒ««dÛd ‡ÆNç¶ÅUáÒZ:Zñ÷ÿÆ-8¢QÁãUAŽ­PÊbXSk8þÛp¤úsW5)öoê1nÑp¡ Sy4ùÜÒ(^°±‘­!_]Ùde¢q ûà|oÊ1Abhõ\îÂln´ º”äNªnwÁ=€¬;ß“Ôýfæ¶ýÏmYYÒ{ý82æ*tù¡Öë=Zºɗ‚Cú|¹ÍŽšÓ‘šÓˆ$Ó_›-†ëM14ô¥²m*5®R±–Ã&ŠÂEµ2¡ïtÞ žÊwßã¤Ýoi\´Y×—³ÈÑ4¼P—{Ny¿¸"Ïaü¯ geÜ•Âë„¶çì»?v›ÒÔ_SDÆ‹¶^¼QÛåˆÁ¨/o¤Xâ&ü®æ+ ªŠT-GgJG<á/a{o‡´ ¿*è~áÔé6S‘Àc54aѾ}àèEÚ¯Dâ_Þ][Ã@6e+)• ¿IåM²yŠˆ#™Ñâ ˜ üj&Ë£r¨}>éfoÂÉýuÀìvk^µ¡ÖñTQâ (çÛŒ¸¬hžäryš­^[F~Þ¼¿uàé‹–Dß¼-UÞw¤uÉÉl|dÑ´ò*Ÿ½Ggž(!aÖÐæåS·ðòö°ƒTWöù@CÈ/ÉXú¤á”QŠžüø¼¨™þŠ¿5Ø8–$P«Ñ¯ùP1¾êÝ‹ÞúÛ—`~‚à]M¯`h…›AMÊ>7d=yyÙÞ$ÇÚµýv1À…QK­ÅjÖÑûýuöÜxä896ƒÚ&­RI>R·ÕKqŸ“1%—¿#R›.è×R/hßFÔÊGÜŠ_‰ËjÖ’wmG²wL.ûÔ¥jS:ètK?súÈ5ÃóZÏäé¶ÁñèÉ‹] Íß/³*óËýÞל—“Jãô=¡6£iGD)4ŽB6TîbiŀƘê ývóç õ¾ÿÜÃýÝÉý¦¿‘có[—Æ»û¬ë"6!ü`탯Mï\¦Bµ?>×4Oxöj‚έw6´Á€ÏÎ$ŒŠO™¥X÷–HnÎÆ'r²ð(èŠM+Ì6¾!ŸD*vly‰'æ¯ÖB±)ky‚\¢òx}÷Ô5K4½DÓ ­à`sàâ L7µpÎ7ÉsÚ¶8lû<„ET¹¢'Ac𔿔É'IÄÿ÷Ý^ª˜·÷0¶Zp8p®/_;Àô„wË‹—FýÆmˆìFȽv[;šô»…ÏíÞåãÊ‘U‰šŠ[颟Sšûï݃Z I¹ƒY7k„u ÖfR]—±m¹_]@à³Na}eC¯³ë-È?,±fs«ØíêÆüØat®Ù2<’qϦœ"é|£3UçƒQ gw­þy)ïáRÁ7†¾a²LÅÁïfò@p|ìF¯¬P£ÙaG»¾”îf£}~£$óóß#½9¢ nÀœ {ßÇÙ´IÞßá¬g‡p/Çé+Ë}&¼kǶŸq–Ñ/RŠ”£2ï ˆnHrû©b›‡À²€Û³h6êK?—©³a¿¡¬ö4ŸýˆÑÕ”%?Ã×Í\(_$Èná+½h=½4ÈØ'6‹ÁÒ'â'>,dÞêÝ@„§Y«§üÐjr¯è='ŸíÕÎj®8W‘ûy­“k*è?ÝR9ãØWLݳè³%ÎþVD5.©Þ̛˼q™WÖ(ÛðW }LëZió¿»ø›ð5J,¤·%(ÝxœeyC~¨áPe•iìÓfN蕈ӎX ²ÏºÞRŒm;˜íè^jér™µåmß&d@'¸ÖrËzî@}N¡rPøZr/ï9õ„ú牢[N}ÕâêlòãÇ‹.|3VÚMoÛ[ûeÕ’& òè´ƒÖ3ýêó¼Á:Û{GJdø¯¼"ÌáìÝ“þAÀ#„D‘9¢, z7Á‰‰`ùO¢ù£TÉTÊ”¶W6ó­gØ¡VˆÎ±8Éô™ÓJz㢤øàBÖwç0**É&Öî\ѳ$úá>†úà9—7ÿHtÀ°•à¯ñ3+}ó6ûåsQäJÞ]¿²Ž%MlBèðîóŒ™ežoè/iã1ÈD[(•Ô /2–’(IÀÅÊmȳ_( O%×Hî&^"¹‰â)Ù—*j2ãÿ§Wä SÃ9ï4ÁiŠÃ­ç‘öé{z XRfÖfÄ!ÙVÏ"ãØ6‹FöyjR¥MWôµ‹¼¤ŸáØá&g÷õ}nM^z~á^e/¿ÇÁø7­:äv^¿¢ Ž¥-™.ö•,¥²8ñ¶†ænM§bj¿ŽÌéü;™øäs@ë\úrÞùMñÆîgf¿¨jÎ q"ò¾Ü ³õëÈÜ,ëÓ$"Gõoÿ«KOÀkÊ·YñÅoî¶QjJÿß¡9 ¶©{"ZŸlcfÖ]ή£Ûû6t(åD•ž¢þš3ˆW²=¬º! 8]ÜA)aYsTÐ •vv¢$7<Àµ¿îYEÿ'6@dUƒçÒMïÿÆeaø“ò˶?!u X×ÜqLÏ$§¬S¤¸‘+ÐK4˜+ÖâÖ¬CeA,9í'ŠèljA¾D+]‘å•4 ±µŽf&%zÉð,½Dⵚë ú8ïÄÉÊ7 3©;ðO>|À}n•D(ø ¼ÕoÁ•}¦˜zOà@Ãâ0‰#’ïLüœ NÈÛè$ÃÒ(®¢&ø˜”a»Ÿs¥ ­2 cò[©µPíï¸ È`ÊLfxÑÙ“¹Ôí œ.§¥…úLg{¾Û¢<ï«Äg\÷ž˜Úƒ{¸Ó‰#ØB\wØuëóéâ½Jp f@]Ö£60Ђà}Ü Óé\j÷J’‚øe…"ÉóážÙ<æ ΧœQTñ Sº(÷iI h¡àkˆP[`æ<>)À•úܬÝ1Uù=úÅ2×~Q©¨P@ÄSÕ¦Ï`-¾f&¥Ÿ~å!L)>Ää#mÄϹÀæD°¯ˆ ]Þ³j T}¾K›ð/ ‚ˆlá‘VJjô3é•Wù*%øq~F]´ eu%-%8{^ W2áƒ6Kþ·§®Ž^qq´PHl ÜJåw*HÒZ¸l>¸ßZ™¦¥\GhnõÛÚ ÒÍf²ã׃ªÙÞ$„ËûÔÒ‰SHDàSäg~=Õ(+caœ­]z.ãWÆd Iì‡ ø]6Ý|£3 åßÛ1‘3›`"jË/z·kC–Öƒg0ZäÝ«Xg˜Ð4>N„L ¥ˆQ–ÜÊ)RÐrxmò ô•f"(€ ÇeÄΠT$¼ÕR¸ýég`±§q×BÓâ±ÊÌó7xß.†Ôþ4>N׫žÅ†·Òæü*ÈŸ|îxü:´ ü8©sZ½$¿w™÷gö ÷Ùß©kñA–ˆM/‡pÖq›À˜stX¹õ‰AT}Î'ê,·30±¿@ ¸Ù‘Oq$9úˆp†Šº þ áðMÆ0^×ßN,íÿçH­&ØR\oÂÊ.@ÇØƒ ÜX7ü*êz|x˜éy5Åw5uíÍ(3ë¢c»ìé{ðÖ<>ûu§úôÈòé%þüw†Äâ8··¢54Áÿd¸úÓì”¶Ö…±‚²ÒÍðhNútꎣB˜HIl.MÊlk$Àî{Ùá—O¢š­³‘=J@žd‰sÂãl?(³ªC%*•ßz{«3h„«ÀwOB0—íÅEìúÚ›óëJõßvfDÊÄ8ámÒ‡:Ûß­ÒÝo…Cú¹Õ:axîCÉBõ÷¼u¤šl6^ ½-YÌ'÷È„ÜÑ#Q%¢š¼ç£;d¿>›–L»yrŒŸó„^O&²ö›²B(Dƒ}ë):r1MrªÍ°Á–o½”ÿ<ÄQ‚“Qe÷"/é3Á˜"¼EˆP¢á÷&Vp3ÙÓ¶ûÚlr’¦¯µ Žõ‰Ôð%*qhâN¡ßTg5”VRú ²´Ûµ,]{µÌS¼’êVi¼ç¤68ì§/»±˜ ÔÕg*ãôè$G¾2V5S¾æ ©šMÏ`!º¼ÇEM%‹@c “·ƒt{Ìñ´ó¯^G^\‡Å u‘àÊ9*¸öJ ‰\Qg›è\¹râ]@àÃNa|Æ1‡ân¼ ®s8÷ïL)½¤eJMú&ñ=r»Š/4xê+us㟾gï*†çßbô¶á7©7žwHé£Ã×Ðc—MâíG%Û•F×+IŽkôôÄÚ˜ëalû;Xð {íQWP¬»¯ ÛUUJø¬P$Œh(ÒÛwÂcùQæü#è– ñåþ…‚jux…† kÎ)2¢LÂßò ™t7Ió•yÜY €­Ž3–ä‚ñtíâé+Ït&2 [ cŽVѺU~D\†?ϘyIФPÃãÁÃZ›`ï Æ ×Æ!›‹c:vÛ”F\n´·mP¾Qëá|LF‚'Ð9gEʼnç[,,[­W‘-áœÈX„Ô5@Y´Œ›´æ+À¹e¯r÷ ¹¹î¥)5RR ‘•éîÊjä³ú<à Û=ŸZ¥ü¶'‘ ”nÑe©Âfü€ù„¾°;ùÔõ¡øÿe:‚·ébZý,ÖI;G‚Èy´¦ÆVEG”B| G¹­U'šÇıóŒDTUõWWäüm¦í)³BìPÎJ¢¨+ù)|èNÓ>Ê40 5%¯ï#a ¸ ¦¯•1î0Çì><N\hx~o8µµMYJVÌ«*ÑN Â騮p>ÞmÝÎþª"î«’Fo¥S%KïèL’³õžé^á‘d7lÎE#¢ß~pH‡¬T‰½‚‚Û\(¾ŠJÅýqβ¾þ£0ön¤„uÛAEv©º‰÷uóŠÒ„̦Ú>Ãä4úÐõÚíìeÚþšœ¾å‘lGçs„f*´ÊR÷‡cï‡:÷#üñº¹-N†Y®ÔS.tΉŸEÈ{š·‡ìüM ÞÎ2ÿalM$‡¥âqÞr¤Ÿ¶z˜S¨ ÈV,TÁ-äÑ”9O @ö¯)þoöí<4¡aúï Ù=3_´è}óXyø ²eÄÈkWò¤U¶æ"õ:VÌ=ýϾ›Š<²¤Mîó´á'»#Ϙ‘JÁsµ£°+$ò´}7ÀE³4YWàˆì,Åš`cŒõjQÓC]\oޏùÅÕAiõX.:dÍܘ%õ[éü²†]꘶Íî`F‘¤-!8dr2H¿4 ›„tB !ø´BYfAohƒ!ãDŒ ŒþEö(Cºõ˜.ü}4„ž | ~輋hN=£DGTPš-ƒAòòjqªldõÿ“6H&ð΀Éh‡[©ïÚ"hjá&}§æ°4*|O1$ŒG r7ÔÌ—ïc_¦©Çœ ¹ôè§Ê—*;%1Óð‰Á!פ+,Ã=·Ae²¦iP ²½¬îùf%éÚÅäá{WõÊÊ|mC,?tBU¼Ï«â’èÓ/ñXTþÑ„r¸^`…e@š¤ wD÷¯=QÖC¨ümFVï\¡“ò¬ðÑk\{å"_CÄ!/¹€ŽþBdÿnšÑV¸˜.+‚ïk,wµ?i·¦,“ûÏö/a÷À~eí/ Ý<h¨@#˾Ç=€ª0çRÉ·•†!¤øŠ¯°ÿs–òÏyË„«²VV]ïuŒäB^„üˆ“Œ1…c4€_gå´›6I7cn c“ø‰u-Ús¨çm¤o~†·öõ7 Ö绨Zä­ÕÈZ`~…Íû8Îö€´.Nw©.°ÇÇŒÅ+IɆKÖæßiWOC¿¢çôl3ièYòÓÉçË\9Ò~ñÛ,¡S¼\Ïtæl@ŒÕÎf*Z2ÿêï‰L‹=&#ð-8â¬É[ ðЕ¾+Ü?ëÖÄÑ^8ö3-ZÛ;©D³6jçÌxW`Ãíb#Ò4úk>Ó7Aføƒg6{BCèG« så8¹[äLcíI¡˜¨sX¨žŸ’r.)ˆöÓŒ‚œ1#~T#CYe“% q ¸*¸sUñàfÑÕöv¥Çý`G–g3kU 0îJkl„ÙK<ö“*kíü$G/5R ;Ükʃ67’å Û\@¥v…oàHÇ1UŒ çôâð<²WÛJýËûj­Ï|·p5€ˆ#ºf^1¢ ¤~¹³[*3.£N¾cêÐä±EYø°Xª’JÄSx_i-ᬦæ¥•ŽŸ*y­ñ—±á é±d¢3¸bÓëY¼Õ6J 9±­gSTÑ~æÓN +1óº7ŸáG…ƒ(±»TFí;Lÿy¨Û”qªàƼ}ÿPÎÚã8ˆ#Ž‚q%Ç&›«ø}ñŠ¢áì‹oÿ“7sLJÏyœï¨m ÆÁ`ä¢O$ áR‹Äc©T{Õ‚o;Á_A‰°‡`bAƒUý×ÏÞ%É®„¬GÒ¨IKotr=ÝÈñ†.]ùg7GWù)bÅ=JU98æÏ$kµ™:¬[D‹žJQ©H8Æóqú%tâ]átgF'F_:ÖÉ$8Òý z¦ÚÝ\5FrË{dkÜšZ©^_ü Þ a¯îÉÊ¿§ð­ÿÔaÆVýÌoð˜@Ž”—{×\ÙMT‘”µŠåc¨ª£FÞx¤ÀG|Öäãø|ÇñIñ¹)^«)öìÖ†—Ÿñ£U>ÁÃ!‘aÈ»zž1”+o2F˜Õ¨4QÏSõt»}Þ«Û+/2`–4F^‰<ªkQ’q«ØÔ}4†bEXîø?-'ÇÖÆD8œg±M‡ Ø’iH3›¬6×Tm$?¢„Tž­)à j}1%W“¹å䊶GŒªaör]@àÓNq`œÿ&Ô"„‘ð!R5Ðõƒí6ü-°‘UXž䬙+¹”qæîð°e®™èýð~9Ô™<ßÝ$ðQQޝßXµ±È%0J4Èð&±s³Û4ŒïÜ·­C‘!6Õaf…CÅð{§Ïɰ•1ê"º)—Öæ:Á•MRòÂÿÿròPµÄž³× !‚É€‘±oX½«“\AŠçáÐfâw¤€mgs(‹Bž£üÝ.½¨é{$­±T¬‹‚ážR |À‘{Åüd½Qš±êæ¡0Y³4N,ö¦Ÿkf[0¸oÍWÓðiaZÂDà†aRüɆAª+®'iÆí/:mœèJK‰?–ÓR*?"Ósó5] {h)æ_» î§^“^õó¬i›Ãóíþ <Û¯~9úNZ§ÝÔ[»5N©„WÖ¿£‰èFÒºÄeupª;~WÁC§¼{óbFˆ|M\¢æzz~]ŠÆý¤AÅ Ö…·•Ž”È"³¿D}ÜO¤ží­Äô§f_iˆ0·­!Z8œÕ=–ƒú€û—PžP™±Sª…o×Vv¤Ê¢]í‰þKÍætéG³J»ï(›jüðŠSЀy÷P”Ì{»Cn²UR…}›@U®âŽišÃ?ÄJDǨó1tDFi·G–döײ‡ØÆ‚•kª v¶ÀîZÑì¾öœÙÊ'ÂNhcs¦Æq´|Ò­º(š¹1†ç¢ãpmåH`§fñN2/x¶EÑf(ë‰ë0 g1õ¦ãö†CEQGëáÊÊĤ™SÃfwÏmt]{ò½t\•ɶŽ* =L¸Ëω'b%úpÄ H;eÝã`™«ØöÍÔšõ->õwö y`ÔGjûüÁ\»Ì+{(µv ÕèŒ )ƃE³úD‘ï‡DZC¸WÙɼތ‰Õ¿ƒëä63,ž˜h€£(†\Ö¦ð@0šo‡ÂÔ £®"ÔÛLuzÙ…Sjfä'é6pUÉØ°ÒÒ‘$"Ž-'1™ºŽ!»m ‹=j[_Ì4=fC¼Ã¤ ÈGŠÔEHê dþó†£ZûÇI‡)lÓó2Ó Ø7±ëÊÊ–õß{;Šù+Ú]Ã/ó¬…\4 Éäxgš£šg[Þsdù¤=1ÌáCý1e- BD·ÁÉj('ÆÔò•9¸•T²ýÇ!¨°  :¬ew˹i ®=¹^¦Å ,¨·íwÍ4‚G¾ú‘§Ò¢æ$ ·ØÁ”»ºkǧ~jWñ\e§àsÛ‹ÉÍA˜ ËÞ ]¶%¤-º̇d‡$n5•À÷~¦(h¡|Òh>™ˆ0'·h%ù³ ÍF£®nªlžÛ8ŽðBDF±{ôZ3Ë<‡Ù“°Œ¨äî’¼8FU,ÎgÖt•eÖÕ5Θ½¨Ul/”×.&ìmZZÞãÏ<‡Gfs4Áçoˆ¹ÐÀ­J³™›~]@àÓNa` ƒ6Ž9±"lšì澤¬ä)M› {>/¶Ý©,·öyŽKx™‘x`èÍeAÊ‚µê,ë¿aÓOáçäxÑkõÑ›v'š3Ì‚?o ¬§,[¯5ž1[n›ªç$ô‰´O,BŽe»D¢HÞzä}Ä‚-+OKHœ!N›Ñ3Uà2ÌEà‡Y·vJÜÝNJ&þ 'Ž6 ×þq¯P@Å\å6b-£Û`8&ôL¶§gHc¢gS†w൘8–WÈ3…ÑàDAªéßWÿmj&ŽÍ*¯­>Gt òДZXLVB! ôýŽpÊ®ôeÙéÌÂSh;ñâ+-óëé`DÿPSRŠÍ8ÝÎŒê±ì>4f¾w¿ŸVMç±KS/]Ýr$ã–¸Yëññ %9¦¾ÀŽî_”F µÙÆ%Þ'’}ÞÐÜÓ³qAh¾q÷¦#@Gc²²‡ìŠwË:nÿAbo ÀX¨gNJªL’¿=q¬Nšo(8´¸{ôcŠí^!±[üÕ•%‘==QžDƒ|q\‡±¨¿ôÏD °Q”µ±£c0Û¥fY¹p‘8! }Þ¡"m±‰NÜT ‘õ½þ‹+ŒÜëÃ#+¿·ìF6u›7°¤Ƭ¢ÀNû~vUxí\vŽiç4"‰'œBaC>t8ßDMU!ÙÅÂP9·œñ&µ4.ßEâ„íèWÃ…UK»hû_§Ý_á¶ÙÎe}ûd¤€åNzÞëá,ySØg" ÆßB5Y3C¼¨Qí¡4»à¼³,!ý†ÈÔh‚Ö»% «óª´}‡G]”Õ³ü»@3ü¯}rÚù0e©ˆˆ ýá¼FÙ¡Á-þ¦Àû¢„P‡Á ÊÎCM~ìÆ!6-©_*£Ý¡‘áeŽ< †ŒÈBÓÛz¶!TŸJ(øU õ| @_éñh¬°lª” àml‰¨’>P.hãÒoøÙQD®èš8ß"ôï×âQÞTmÆSí©Za„<]G„ÄÜîGùdÛŸs,6ÁBOä¹EÛ°‘nÙ_% déQ8Ñ)¬EÅòmô,zdeëeŽ%BH€î>P— 3 ô›%nìüßK•/ý úµºì¡!” ¼·ä=åEé«›ElL^'‚F¥0Äàœ~£Ý×­¤¹¿£´teJî/UõʉjYÛ*ûIê²n¶T†9ÆúhŒ _CzÖ[ØÉ˜j~'Ië¤Vt¸,¿þ³w73ž¨C´/<Ë(¼’ÂÙÉH?Êá^Ôµ¬ëZy°¶#ÿO±ÿýýâ4xÃúS“ß~—WÅxD¨ªYl³NÈÖŠ‰KÖl-h¥ÆrúXæ­· e7ÀRµG"ùEÃëÊÀ¹ˆ"Š;—Þ`!üŸv ’§Øú5¨¢›™´æÄ¸›ã;¤ˆ¸D±IÒåì„sI)µ²:ÓÏÓUÿ컓c&–åì{€¬phÖìþfÂs1¹0Ô’02!ÐzzZtË™Žsi¨}Eßô+¦Çá*Ì I¹^SÃÚuà‹öˆGÔ?ÖÅ›…ó~|¨Yn˜1Ð%£ÛË0|~Þ ‘í']5Ÿ¾w¼ âå ŸÕ&‘-ª§_ƒiÚó­{h9ÞCg'ê@wÌ88H¦>j0'4 07ÊE8QI¿ü²\"ãj“1k1R²œ} ÀÏ`†~â,\"Áé|KëµÍžxvºB¿¶¾Ñˉ¦’Ìû.@Q>,ÖµÈdÆÑ‰÷#êœ}€ûý™!RQÕÎù>­Ó)\ø5¾‚ä¦y2d,ãßy+l¹À‡¤q3?¨.t{6/% óúE¦ŽÑ †Šmëx½mâ3šþgì¶üÔÚ".z?À#6†êþ75Ã]Bèdž-ÇQ”`H›,ß<@”EÎüW»¶Ï vè–¼¡§Ó]£·«Ö@nY ¦b&ðÜJÚžÈ)¯Œ~_•c¼W´ÅÆ7 °kßè”ìÙ/3i#[s5V½q(kššTïÉ>`]”s®<ÍØ·ŽW¡‚y}„;Ã}ìãÊ…8w:ÿ€Ámðéw àÓ"¸*9Ý@킬 >•lìùʱS>Îãô·¬¹ŒRY;µƒ¯©Àµ¸BšÕÀ vÜL¦îRÖùhc§z¨ÜUÄ]¢‘î#šsh·.rÒÙ7Þú çkªªœíd¤:óºžh6[ýq€„H0ýhI"ÎÂÃf—o•E%‡4îÿÏãzînôXà@>¤"û¹ Zø¨PÃC±Ýˆ%Û¼áMù7*}¼©¢Îq:3 ­²¯eØêKÐÅC¥\êƒù«µ—¢šŒV©RAN}+gÈú€ä(¾¿´Ê!ÛÍäv.±˜ ™'Û‡4 Ü.¶ztûí)Ô¥2ñ%qyÍmt•Ã#Û’0ï)ÙdÆ…¶rÁd‹X±•šÙ©4[ëâˆÇ"î!÷/Ô¦ôîŠ$Z(dt¥š[öÂz 6 Ž*ÆÄ”4ðÞÖ@‹OëPÊ7°-ŒxÄpw#ûF¤r¸ò/MoE‘@ãßLëñF½Ê`ƒkb—ÌõêÜÚµPs¿žA¯{#ÿ¡"€ù¨£ü+<ôæ#ÜÑNï#zŒÇp0Éð^PkÂb>C&– DüV°õQ¯36Y_¿.X„Ç2rc·½˜…¢Ur¶$ß]Þ@:õ;ÉÅ!¬ä¬ãB°]ñÃ"º|„ÉvÏB¼W¾LŽ®§JOVÿïÎ{è’eÚƒ6.¨ÂË-ÀDHoÍ'^Wëg>zÿÌCø.lxKoi%ñìÄ×eþÆÂż-¶)õ)˜÷Ì)þ ýM} lÁÂ1æ!Õâžl(ø¹µ±UF©îD8Âà”DLTF·Œ(‰ÿ“x­e0š*Í ·íÞŒqºkŠÎƒ.NÞ3@ˆìJ‰Ì° <Ÿƒ»Õy8Έ%ÅŒeðæ=á/‡¥T–ߟé’rÙG»FÞ €æn®Ä눼«ÿÓkDV–SϤ¯ìû¿ÁŽ(n“89ÖjË ¨O\gD9b϶yö¥x™È:¨óVB2ê»îÖÿÚ¬U H­²6¾éÕÓiÓaÉ0Û8¹8.äÏ´—«fÎñÞÚPÕЄÒUí±3HcÄ<ý7À0¾ö$t`å+†LÓ üÄ’°s’-\äO53ƒÁ§&)“!‚äëø¯£é@ŠU›n{0¡bæŽþþîF<è]@à“Nbž" :æiæQ‚5~Å>eÞÔ÷‡h ~ârÍO82(.u9&Ü#ú5Œc«¾Ms¨MA‹B†Ó†&§`]“K§û@æx÷4§™…`¿ÎZ@8.{ƒpÄ\Gš0† WÙ}k—±lz±¦Â·ˆmzµ·ã§O]Ùì°l’*×Ì?®æ‰JÕ0ï ^xZ„æTªJÒHº*òÍpH=†´å˜¦´¹5ÀßÚOz±Dëœ#ÁÒ"Å»šbºXýÚÏñ“ pL\Ñœãvà ¨UÍ-BF’š)^ø†2=¿t0^jô&Ùkþ«œÜW¬ö¤Rݱ£ ¼B¾WÄeJ¯§zI¦xqVg˜ÅI¼,Ä0ü¿æ'Õ"L"µÿêá&OÑ wžÝ_QèÈ÷6„ ê¡y+Aª+è¬4)¬¨øÁpÖ ÆÊžáC&òh§ï‚ü§I“)ç+2ǯk¶ŽK1Qì¸õ8'¡?€ ¬,ÁÒH™Jb%®Ä±í|²Ô/[$5ýj"S'ͤ*@ó IHˆ¦*à«Ö élÒ~gè¬êY•†h^íÐ)=·ÇøZ\(ÉhÀ?ó3R}Ð5M¼>*>šæx GŸ©þ“¤Ú† l*µÄ¢ÁÍxz6z­Ò™†Ó£ò!ìÿɤš².kHÑÄ7Ä ÕvTZæÔiTJF´Wgœ†¢ÖÀ´x¼×^D* q14`ÁÒ[¾C)€û`lhLïG6ñc—‘[¡¦¡™)ËyÙçmè!‚ÚÕ+DÒÞΑ¾bQE󸕈ŒJÓISžQui?#Üó0Qg+A½.yóƒÆ-¦8D%¬"0Ùîo96@4S\÷/iŽü¨3Ôx;Õ…"Hîøax>z«¿ö–ŒŠzŠk]gbbä¸yg3ž7‹ag@09ikyÏÜžz‰ækk£ÕiS˜l;d…ÓËõ ²vÖýnë áŽÊȰ…;õZŒþO›PoºÎßK †Dp4F˜›%ü¶ÏCrlàùì1õäYΉé§ï£ô:A±ý·ÝºI¸Úð,‰,óô¹¯€08÷øæ¦S§.ª«ä {µ&·vÛ§æW«zŽ“¼mL ÃØÆFÀ%x.+iÁˆ—²¥‚Ùƒ³2à-WQÉ~¬öNÏ"|%å*ùÇÀ™LÖDàñ¹Êe‰ÐnÓíbxú/$­zç0:åÌåú®‚Nª­½J1 LZÛ‘ùÑQtIÆÅÜ d‰Ænf-þ¹ªi´þ‚îs’Ö<ì;žYǪè¾ÙT*«»Ø÷zwõ(âD¿€W·€<€×pƒ§µúÕþQ ¾öŠ»µù…øÃpÚ‰Œâä½¢s9Pv\AOMòéÚR”™¹ï€8âãáà EŠ"åŒ⌰·óû¤*™¹ ‡¬MôÁ&(üÛÑ3¾5n˜ä$„!EÌÖ@©meÍ$ëj[K¸ª)¬Û)ÌYg-s¯aû ,BYë:9Ä„A] Šˆlg7)†»Ó;ÔýVN‰3&ÑHÂ,'kµG6RÝ$[žíèôáT£uŠÿÔC¸Ó¦ëïȇŒ]ÀŽ%ŸT Éü{u©t:-AL29ûi•÷uãš9ÃÒ¡ªJ®]ûK\Dz3Öð7åàߤâç„ýaUØ5ñXdU5,Ùå¡bbÛÉBÂKDäp¯÷ük 7X©¥™¡âÅ©‹ç5Ÿ4DŸ øãÀ“l¾gJ¯Í-(E©ûd/èu\Ó~-“ açáËÚNf£’]_“Ô%¤¶<ºû Ž9u©˜FЖMóAdD5{?9yög}°…Ʀ§¹wró³‚)’f18† ] _kÌu~‹"Æ+mø fTvÉœ·–±¬,áøÒ;^]*m@vC,á“Ê¿½ŒÕëÒ›\ßµe›ôΰ¥Àm‚^~M¶\Ùá99|ÌÐ×(ò**^Ê4û7r?}'‚HÛ˜˜wÖºÛ¯/Áx]'pEžñØË¦wg’ ëR6çýiÈè, Àá*ŽƒÏšá฾6>¡ÄÆxÌ.ò^]ŽÇlõü'Lü8ƒ:¹îp”rÁ!­KÂÑ(‚ˆ43à0üûéÎ:V9²-êí@0ÆÌÕ"6ïG«Žñ5gd>›íó#Z1WnRç• mP-$ÚíÕ¢JîË» ÿ0ŒŒf)q³Á ?uzÎ1\£s¶ÆëJk“BYîR–}Œ ‹ƒ«‚³¨ÈŽ$±•ü.á§­Šä,‰š­Žã®ébOD;\“-Ù]®¢¶øŸ„\×q;AZÛHÝ0æaÃ÷t¨Y÷)tfjL,y+ªHƒÊ5íšÕm!š¼6|†µ¡ ¦Ó ¦Æw"C'JOÒÊv9ëm b–F?ãQ<°2ZÔ*Jí©˜¦%]7ÀùÆ_¡ÐŽÜ…ãô†Í¾¾0™ú¬][e5>u\ç=Éùê2˜“òV;ǘ®wýƒ?·ÝÀi†íËÝŒôŸÊE„.d6†æW­@aúÊ §œ°§Ö˜7P3€I*³ÑO¦ÊÚ¹ëní(×ùB†±<Cúo,@£*ÖòÎòÀ¸ø5ƒÙï¶/¿d7rÆê+­<ëìN)pî‘ GZê€X/-rÙàlð< èᤸ^ôúRÿ¾h"ÄÉPh—·‡«¼·|û±½;ḘÀSžŠŸ–õ¥:ÅÝ"I}]ný‰ -‡K–GC¥b¥hPø—Š~‰Â!ãi¿LvD=^YûÅl³¶ý'¯Ë7’vÏ>EÓûp„ä˜ ¤Wé( EÂðHÒã󏔯âî2žü=Eô—:\>`‚¶óßèÍHæŽ }[Ãhš/ØÄé%{ŸºsEAMÛÌìñéNw OÚ˜kV;27ö\%>`(ý?¡ç ìÙ…0¨È’ˆ›&ˆê‰X\°68ðtòß©BèÇ#›5¢$wPøM2q‘廢jî,L¶¦HU&ÝpDQh2^*“?§þ=Ô »Ú`.ò˜~ù¦ÅØl¤÷€ÒÚ&÷ÝþAg£Î<·øAíZ”ÿÄ`ooClaž"[4 Û°”ØUË ß‡µ¨Wµ}Ôå['W(Tð›Öºl,ƒgš» •¤•£›ä-²|b°FÀ®=» ï¨ÃIû9ÌX«z®ñ'0‰Àt¥±×Û2m`JƒäuN¹¼¥!øáƒ:%aÁ}SwdR×Ç-*†#Qþtäû¬«ÜÑE¿÷@H1Ë 6Ì$1\ÔÛjtäÄ?Áª/Ä7øã™¥Ü³—DLö³b×ÁmÛß „×xMÛëÏ…õd…òÇFÇ-tÆë—¸“<Í‚\¢OW“ʹƒšWìÔµ‡›º¿£ÙÏËŠ:ö²c¾ö­ÛÝyPØJ­ÈåÄíÀŠá²¬EºÑW§t99jÂïPÿ©À?iq„Q¤‚ÎA»ÛƒZ^Ê™  ‘ƒ„ñúÏÀ^]˜[}lÆj‰ÝÙ¼r,F‰9\ð÷íÇ»LG¬ö+ ©‚’@:ä LsÆ“,@n^.Þ—êQ•;DgÃÉSÝÿÓ&£Qö›ÓÜEú«q_æŽÃÄåZÝÊ]œùùÎG3CÏp „äsT\ÞPYßa¤`æŒëÊkQ~ZÌ½ÎØZ«ðc·ÕÖ‚Cm§«"<h{lÌK1‚ïÄg¬vTc¯Þ ^Roõ»V-hkm¼˜ÙžÞ’·HÈ=ÂŽmx Do ‘ÌŒS¹þJ°7‘ÏQ AZT cí²…FM^ܨB·‹c ¡J%t|×r§dÉÚn+ùVÖï‡J¢Âmö÷…I;W\`Þ(+® Õ°-l͈¤ÌB£m/d+/!Ï_Å„Ëû&ÀšT™e¶Y¬Œ`iÕŸ"çõ–’^;øï«ÓUŽ7Ù=6P”±u­§K»g˜H #5b¶¿,4ò(¤x÷Zà´ª=Žú@ Ž7Y3?”ÎÔåÿýBØœ`kKQ±P4úKÅAÖ˜ýdntÊ$©½ø3Ürž Fœ´¹‹[ÈËÁX&§Î¬ Óÿ>&Ï~ߦñˆeªVÛÕØ/€mŽHê Y„¹Î;o¶cª}`kþh_NüÆÅðwM$0«ÁÙ']8A©ÄÍ|ù¶nËKùÞ6ˆY¤U\XWGD{fÎuø<«ððÿ Õ´ÈÅ_î«NTºoó†6£*±¹5в†¯½Óân7ôeba&Äâݧ"§$’ƒŠ:À£¸p÷Êñ7;S¹yè ÈÂô¹ÛÏQw"`¸k:m0^_á›SCîÜ?kS›õlÕ‡:$ý•5}fo¹Néë#È4b›¤<­šŽÄHo6œ,JBêŠúDãÎÌ‚ôä÷D8;çJÞs*ÙBå¶Û§Ÿ& Î78ÞQ(£o&3i¥Û’†Ø *þýáò=ââ÷ߊnoí¨LÊ,ñ‚*®)©¦ð»Ï?zàƒ#¨?Úiè$º=_x¾œ›NfYè´Ü…`„ ÷qWÔ¹»p ]€Ün0á (a`! #àtX8êúê’­’š+‰{®?šÙªMæã{àÿÿq|,2Î5ÃøªÎý½d-9wl®.sÞä“« IõW-¨"÷§U¹_ö©ßÆ °?³ÃðÞ5b‡[:28Òÿ1˜‰päø]cg2Q”-ÇÚ©;$m™^5˜o•×ì‡ÍÂà8àÿa“b"Hâ0\/üg¤tw2ÛÛÕrK8 wy©B¯}Ü'Ãg iåxK–ÑW4†…ÊØp+AÝs ³—g͇1™U’c%íAN•/XÕ+Uk8Š ßúmZ#ÇN 2Æ¿ö¯¹•VÔÐ%ç‘„Íû"LˆK;'åü%ÞR³ÇÍø$<2|aˆ+AùŒòîoШÉá•m¥N¶x DÊbêZÙÙ'}Ô‚EæÆ–€X¾Vu€½G ”R~ɤ¤‚ôƒÀigj˜jêF¬LB²‚HQƒ&0LÎÏ]AVu sèšêزCÒÈà¡YÀ{ºk’³—¦JRÚ¸G$ jÅLðÈýgqÿ›æîy è’öô>Œ&£Ó &ÈøïÆ™x”ädV§øïk'Î(#þ^]øŽ WW°ü¨R/û^j‚ó¹2:R](Uø’Ì¢°Â~Õy&Db`pŸ;Ÿác3òÏ+bÏ(¼+û\F‚kÖmó|à($âþâÔ§–dT yÑðJò¡PçgVH.Öó×–Œn“´™¿Qi…¢MJ–¯þ˜…‚8aäÚí¸<ˆéºêë¿¢ ó(—NlÄ6¬«ïTìÌã*ãù^ƒ€ø$°¯°ïñŸÎçíôÃÆ½‘“Õ‰‰ñ¿Ž‘=êBEtbú‡5o{öf|ÈP“iºI Éëa ÿÇ]ØϬêB,ìW‡þ„€¼œ“5@s`¯ºÎ®õÕ-˜õvîÖž]ÈÜ<¹Ù0¢ŠIMk¯zìwg[žµ#˜1Õy.çø#9×kStò%!ÕÌž/PH)Üæm ©ƒ¿ó^Pò¦¡AÂ4‰«^ÀèŠ îB,ànƺ®j«v|ã ‰¯\ ŽÏ‘ ?&<=Ÿù1ÐÃa†qeV›VrãAUN.‹9››f@µ|Ã/Ɇ–«O¨`žö•VÈíÊš½÷oR¼{YÚY'6(*4a€’×”IQ#¸SUSaâil6TH†œšL,¡ì˜h:á' ¦¾¡¯Óœ™î+‰|2nÏŒš…ÌZ.}ÐaÚÌßæŠ=þRÞÖä>nm«ª-^ ,ÝQÎu¿ƒtcýýH8lÏ bNM]\&"ÙÍ•Ÿº'‰/¡mõú<7z7{d­&…› ljNŒ[h. ©q’° YÎJã=;i娜‡P”z˜ä ýŽ_›Ä7€›þ[æ­ÿlÍI [|àýˆ ]ü‡Þˆ_;À«XÈ9ßµ ™“ž?ûÁvåukw ¡ Ë¢ùʼXFFäE=0>øOX„]@àÓNa`:òV`¿–Eršd×rOjp•[(AHjJQÇ+ZÚ?~7³â”¿=—Õm§Â+hõ¾/bÇuSS¦€RÅëLNš X߀¿1v¢Áú½JBQíøÅï½|óR¶cW0¦8Þ=¤ø ´fr®&‹,¼´ óˆ‡ÿ¦ígÌ:sbßn!ó "7ÃuÚ}Æ«oUö˜öI{K†VèÉm¿' -ƒ4bËuâoQ+´uCHx^BƒÌ¸Î‰Þâj0Ö„´ÞTÈÂ=G‹GRÂÂG){«²É>Ø`ò(ÅÆ>U{ÙÈ9rs8ß÷¦ÓcP¤ß'ò§y$®xv]MdŒvô ß,çKÇŠJè̲wöt¶F“â3UBö»[ùª86® ~—ˆÃÃI¤Úà/ô(R…ìÆ©ì˜Bž9»5dZRSGNwʾC°©fµü±"<‚2¯ôÍôŒþÊ1PÞ€äÂú®ãFq¢ü×,€u°3!Ñd+@PrCƒ+ë~z¯6ú8;.8Rfô¶œåV ÈŒ²O/2¸5%ô‚rª;ù½„Ζ“i—ó&þ-Z÷…Û×Ý@æÔ³Tó]dä /¼Ä3j%ĦI)„æÆ¿„faÇŸù†]–lPÁ7P”]F×7®¶¬ÌZÞPttº'M!¡ÆA$Ð|fß~n ¦¹©D&™`ÒˆGŠ: ã=3ÄG«5QµåSdîÞ< RˆâáhDñ±úŽƒƒ‰lºÁRZS‘üш˜ÕLÝ«St¢»$;M”b8Ï#¨=o^gXûíßæû œÉ@KLKľ¾c=6 Ì;]?—JüÅ€{§Áë¾rqÑgsô`©[u¯ˆÚG¼ëHTªžð zeËYH5B¬…òÙML‹F„ú,2% À˽ít÷Ì¿gÉ#–ùÄæˆoø^ü½f­“.5¼ÁP+0ç\ö…ýŸ‡¹ž%y›yÃÆ L³ÊÊ‘d "ÃI°kfØ´«” H7ëf °Æ¹ÙÊNqïqN,&@NYkþÈS™¾ñf"Îqì!ÁxR¬ô£\Í1Ò < XA«âÝo—š©Àßr\9q鮦3üŽŸ™Pw­òÓìÕ¥‹2ø‘çÖfë&4½-0©MIzVÁlì€íìò; g¬ß49óyQe{ÐÒÎɃIñå‘nÞ|¤8V0vguØUI¦%þ˜zµÈÔQ“ù³Ø#ªR^·zo~ÚÛA9<&{†`¥º{´3/˜ºûEŸkÓêóÂŒ¬=©0©@Í8)¶ï‘‰ 7’YRt $Í÷½ Ío)±q¦ë&)ïé_|Ò4)`šçRŒ4VL¥¢×çH(f\ñІÁü=^PŽÏ ê›íJyüߪŒÛc–öXmÙã sµË¿QóK=£¯‰õ^Biˆw þa‡›€Õ “®BþçC t_ÖQ‹ú:H•@qð]I;þ[€•b쿘‚ÓØ–ÉTCƒµG;$.Sµ*ý_¡Ø²ðƒFÓññÉ®ýˆæê\3W CjWß¾HBÄõ+…˜*É!‚w‘ÚéÒRÑ3Ò—Â$ä÷ÑSónBAh¾sCç4)‘-k5úíxñ±.® 7'•ѾžhœL{Zh:¼¸¨€MÚSž ޏ¡+â¬;ï4OlUèJ´uáVu–‚:çŒ0¶•ß{Xùï¬Fp¬v}ýã S´² œ.@k·ž­ÚnúÓOëm@î3 3™‘S©OˆP÷ÀCØÁjï7±á ‡ óF9À158Õ6§¤Î¤šÒÞˆ6§wÑh²Ê©vÉN‚.uË<ŠŽ–¥®O+§G/¸±ºéêt­àÃS&ÑY›a_h@%[€Ÿ”œ*sË'מýˆC¹Tõ„*(¸QéRÔ”M9žب ëÕ•`ñ§^+ÏáRŽ™ {ïrհгƒl íMjqXº‹Á‰åÚû“Z*í™:äŽÊ…®ûi‹€¾y"vIéW ,;‰øþ«®£yá$€'“›Ù‚/† ÈòêjíÒ´!’9&=·½íêHSè7ŸÛEì s©`Bw(_ƒâNíÂ"™ÀúèÏ9%½VœéÖ*–ÏÕN¤èu_…¦“í ÑéY§áó‚#/ ó0,·g¬+f¶ùžIñ°œgfóÞvÆ:`º®wœÝn]«s‘üoÜN6>µjÍ ç:ÎíB·ë£X ökŸ¹Ž[ñ:÷&`ýLÎ|0'Éž¿maNüV,¾°ãJ `Äw"çehöy]^{MÌ)GX‚ê,Â/L¼½#D YåÿVI}Rž SŽÓ41˜4T‹>¡]ŒH€Õî‡5AUsÜîšüËïc¬^êþv¡Tº¶5ÉÐþ¯:ºè¢î‚é¶aÊKø“m÷˜¬†ú‡@€"“b’zéb)¬†CM/Òä€7œÇ\YÝÙýÒùœ à (îD²üB“žHsç/q©›åÎx-:ݸôš=&C‚;-|¡''Úí)7HÞ(oS_ö»ÆðË úœÊÒS-ñ¯'ý¿G*«$z¸._ÉÌ ÛW¾Ö3¡dtÇ‚ Eù´±û½³»ê»šŠëøïB—Hºí²¿xF‹>W4 µ†%‰I´€)b¬ŠÈ+Nq\qÕŽÙïÀJÒ-é_Þ0‡}§;ÐeM˜Âì¯l‹aç“Fd…üV—m PÀT¥pýµ´ZF;ðUaJ‰ŒVrï=«z)Pf‚nÆüT'žŸz j¸Ãôî™íÌJÞ®†2pĸ(ÕïÜ}üõ÷­ Àã7Ylm¿`›·Ô˜¹­„m¶s‹¶ Azš‹TƒÖv5/‚œ@:Œò#~Cþæt—Ÿÿz Þá+æäåÉT"õšË¦Ml>ø ~µÍ:Œê;à žIÖw6^3 ôÒ±:­pÁ䀋$:ç¦AÜg@Ú»Ët·\:‹hµê†RÆ8¯á›Å-`KrHÕÂ7íøØWßPA¥•Lw% qþ›7Å^6Þ;Ü™vòã´œŽë¯ ÄTlŽÚZà—^ZÔ¦èÊ‹ÓÒuΞÚ¯là[F«³$V„¿ n‰2) ƯF¨‡SF;RtægH.i¡,`¥YÌÉ´ja£CFwë%cLJœýLi1(Û·a“ÎI «î‰¸1«3G%GXc×dí‰øDÆ€²]–”Œ¤_R£Ì/{a|ð+ÔYÖZj'ìØ(‹9×ÝØ)ä²iшï2ÇÔ`ÇÆ=~4»þöorN{”ìã%µÑC R쀂×K¶ žÇ劧€å>z1˜×^¦òxáסm)÷X„Õã4Ò~-’éÖyŸ¢¹’ô=Oœå`±M‡À)ø¦ » ²ŸVÕ|—;˜ÃÏñt–ášEÎÍC‡ó d¾8ØÛ ƒ©“¤´˜Ö˜{Ö¨öWr¼ž©¦!ÉãHwûš–ʲ§=e3×ÿaúÞåT˜Ù$äÊ1>ZäØŸµY)B¤Œ+ÈJÑi“3eÅšI¿ËÂR+×ꦞ¤§þBýç¼,vˆVÀý‡}W;ø›ç¾翺®;ÄÝ.έp^÷oo`ù”[5ÏUnº+4‡‡ijûûêÛ!Ù¶¡™3‰#¸Iñ¨ªÐÉ}ÐèɧÕQ€¸ï¨à[g§ƒô31{º¢Gå×ÙÏ"+‚[6°5;·'Ñè¥5#)?hý×ì·1UIâEÜÐsý,[Ì }2#Z"Õiަõ‘*1ÉFŸõTÃx+QbFIÙ癹E‰¨Nwµÿ4À ÿ½Ýä6z*.Ìž|‡7^päÉäÔ¨2ý¼¾é¤\ªÕô¾éaó×GgR”}÷(Pgðøq¹”ÃÁ&'üÍî&w¼Çó$»ûÃÌ»Ž¿>U×Vú SP”Ñš"LJÓ|‚RYÆ nó€ŠR•{öwÅucÉXñÁ¼fS_ ²ËEö|i‡’Ñ@±uôˆºÑvÏú]°?·n;º„ÖTDŠ£Ï)QÔMœ˜³l;©ª»÷¼á]ɸ˜èIï™îNð'å#‘²9‰Û¨Æ·‹HÖ^ÅªÔ o§~»Ý5À¿øg63_Ñ9JÿèeR'œƒÏ¨1Ž'ÈN¼­L´Æ—µ:eûÕù< uˆ«¼+|#ØhÊK´Ž 1QB#©£Î¦O‰Úò¡ˆ©^fLn¸í“)pöErjMDuïjµ”ž0•Ì Mîâþ¹ýÉÁÃÞÏát—§BÙõx’>?YÄxki• ã SMDú}¾P‚DuÞ>5z¼NÂqžÉ‡•˜Õw¶÷„„T5"1ûbãÆÏ»n_»ã«m0‹ú%_¶ÔÅFîEö(h>C[ú¿È/â…œ 1@¥vg`JÂ:<ŠëÁ¦~ƒ.®3Csïíì—5”<ÿauƒuö&_'è<¥.¤_Ôn“z¦ÕÅÔbØ“¢dns‘”}¿%±þxx×Õ„±ÆÉEÆó|‡càoš4ŒÙŒ@hÑ´ ƒ9‰ð€~2*•uM'½Ø³©»´féÇ[Œ‹>ŦÖ{±[Yà»§˜màLHç(Áê礣ºNR°î4Dï;º|˜œéR+fÃÖ)µã˜j¿]@àãL€ ů§öójv\Ƭ¦ÀRó VÃ…l‹$ߺî,j)×ïK7è¤w¬x?*UÜk«Cç•4Ô~¡Èjq“{jœYäM£æÛ𬳳fÆåëªSð’˜ä?F±ƒ{õS½%re å;óoû„bGÔÄ%=–zp–±~xCD‰«o‚uœÿ´÷JÇBª·º†Z}‘Y<øÕ¶l02—Ö• ó!Oâ:³gW÷Ër,á¦àÔ›B棊º#;+ÓTE0z/`a'½ÂÛiCpžËËnÀo¨Ý-£eGݹü¦>8êÂúoqàk~¦îøÆÉ%VÛÒ" ÙÜ¿¿Ë³ÌuH% 3R.|¦‡Ÿ=aÚŒ#^,áp|³œ¨(“u÷ âRµçTje>•êP3GDK3ò@¬CìQ3ÁÖ+V$*/Où€Š‚œ*­†"2ïm…)QVéL»ŽT\|¾IÎ7rü‡Gñco·Et±óxÃ÷ Q³SdøNw|d~BÃý}È ¿Å©Õï×RvHö3&×ÿÀÖSµ›qÔª–wšòŸß—ƒñ®Ln}Ïe|”]ÞÛ§1]*›ùqñRGê(õ¤Ÿ% ›tf¹‚`¨ùÊ‚)Dfê‹z+¾ü M+% …SÇšïÐÝɤ‡ëK*ÇäŠ1ÍâqNc0ªž²í*‡¬)|ž"nŒ$Wg¡½²Ä?Ë[¸ÒשÍ!†$qûYÆåøŸRÒïl¶žh•{'U~HųŸÙ=6e!ÿ-ó”&KØ{–Ê¿=îÊc<>:’¼òû‘B,j8 ê}³/z&‹l#³ ´dL9˜l­Ô÷ó¾èm50àÉ ì/# ü¢;ç€Ùaf©Î&a§d?%Þq+²‰öëÙa9´•ŠØ«(@D´ž»LÍ>1?x…4e{Šc¸´%<2‚G]u õ]™š¢)I°°n‡ƒžEÔßçWÍ<$c'S7é‌mHÒpañÌpò×hrPx(Vg3™†í÷è´vSüSº„§,{Û|_ÂÄš_fÐi7+Œ‘,^òÌjˆ2êÈncçf Ö?FxiçÚ:eWiž¦\þ¾¬4µµ*xŒ•€kâ¹+ç=.ÅZKót&žö¨S/É^¡ŠÏïnÄóÊ·5Ë\íé¡À5êk\æ›í÷õHL˜»"@6–ÄIh¾{åßÏã@míû˜ù&û¼N½N÷˲’¨-›è“Ρâ­¬û:”Ä÷süÛ»w$YeºŸã¸D§¡¯›Ðf |›û@û+‰3ÝWÚq@(Ù·Ï>“ŽùÄŽ´¦[á÷.WœK³Ý ¢6zR ÎŒÅî}ÃÏÔ~|ÿ „ÑÝ÷ÀF’\¦èÎúoÄÅ.êíóèµæJMUŠ.”ÿ¦y´`˜y7O±TÝfº߉éé͹»^×þZu÷1ÊjȯV€ (D'YþÊÒ1Ð4¨4ÃzºÑ¿(I_Õ‰š9Ùëû«sÆ,P¢üX ÷^ ÄÓyvr%eJdu7wÒw±½#¸-(etðnŒ½ÜÇv¶Êý ‘‚Òu³ùKÓ úb¤ìòGì1+ŽÍš Ÿw.¯Eª÷6Üúªšƒ‹›Üß„³w·lqÄ-Ý™ìRMhÓ®9¸ø¡ìƒéVºVAHß&ÍÚ,pÔ ?V‰ðJž1¹Ò/ÁYà^3<‘‘d6¾2´3?CÔØ ª©û;Lmª%4›¿7ƒ¿l"ZÒÅf½öŒXr6ÜÆ²½W´9þª™`#æêÄÇ]?»ÖÎ dÆ!­Ô^ÙeêþœS_@šëj² ¦¥Q'¨ Á‹¼Íå…N%Lt õª”Žf ¹–FªÀ¦n… ã>“ÝõlSmÈÕý¢¡‡ËËäðÖELª—›ÌN5 +C~SAùC-Ô®7¾”¥óÁÓu,eÊuÄ—‹}ÀJ–¸¼¼ÜÔJDjËòYé¿Ö¯6X¢™ø×ßIP$ðcî³ô›à#³ÔÝ™«éºD¶y2—ïlÀ]KpgÑ]ÿ  ˆÕÅh 4ÙoÔ ñ¡Ÿ—E›ppœ¯Ó,†4:S;‘AÇ‹ïö7ÌÒpuJè©Ô1ÒK!Òë·~Ô]…DZÿ¯°/ŽUz ‚Œ£@ŨÀú‡jj¬k¯næ£Wtƒát·õtäjØK8ßÂ6P)f÷â4íÇ.ÞY³7ª»º1, iO0Y–î/*çx%\ïªó†Rb¹Å²~0—›‹HÇLGˆ¤Aè£3AQœF.ÂÑë딡€·rÈMú})‡âÏÿ9úÆîù U,ç•qlü>¤®xJÛoè˜%Š ?˜”ízî'º´À ÝŠ¿@ÇÏ -@"ŽÞ†Qõ^¬å1‡ôÆ!t#àâ™ÞIs!’Ð [Á,c½«HþÌþ‘ºæ°:Uj<æfWð"ž¯Efõû†N%:ÖÉ:v؆AP#o¯a¢³#£N„9.#’ŽiÁŽ…}~¦…y>Ùíf¿@°lòô¶à=ªÇb,Yx1µ<ïvo?ìeéÓ à ¬rj uà  'k`« ¿G•yñ¸Þe‹BÑkû4˾TÉHšHù)Þ†yVÎQ3LrÏ¡›N>#ï>@;ú?vÎgÊ_°õÂ÷áB[þBóV:bØŠ3(-mE¹}ÿ¨s| c~m¬ü9<Åß oõåM‰SØ|‚‘€fÉÌ3Qäcùçq©;@ÑŽ ‰*°Ê l° Hâ‘°i˜ðLá|Üü,Aêp¥X"Eˆ½|9ß,O“6ÑZ¼}Á™äP’ äç•lžÁk[Ï(©ã³×¦®D8cL—RÄ„@ÿÒs³Ó5U,AB~¼èpä<„CºUº|©,¥ôyik´¢A¾-›ÓtS*4b+ï#i錃üÞ¢×i+žN“ù†h¦¢ªŠÿ/²*ÆâÁÚç­4vtíˆ-/s9µç*ìÙÏ´RbŠM Œñ…½ tk¡ÈW[‘5< >®“üwkæªhÿS™øÒp,­gœZé¬ÑIAºésÛ‰Æ8)™¿«Á üpS¤ŽÜžkÞÆœVàÁÒ#bü.`UÍp¦Pv.Sä2l½'CÊŸ¶³khß½œ¼æ¢"K)ÊôÖ±ÏO²Ö(hQïuÛÏô„³ŸGvå8d %éûSƒ(d{Ã+¡Šm4P¸ˆÉ•Fã…¤gaviotatb-0.4.orig/gtb/gtb4/kqk.gtb.cp40000644000175000017500000002234311536321052016733 0ustar varunvarun@€3€3<<£ Nã$]@çüt©6oëÎYÛXÒ¾¬ÁŠœÜÖ.Qu’îtwµŽØƒõþÖuzu3eøæÒ!UŠt€ ‘S3µ$d]½È(ÏInÇà ö:ó«GÉlc¾?зÈ1XN¼ÚrîªkGEÈ‘t‘|ê¿goÎA@gn“³+f­Vä¿ w^Ëïo[c»¹L.*íjû< Œ†wè=Ƴ•—¤Âfü4ÓzN§Öf¨áÕÍ"m HwM×Ë«Kà¾YmÖèxW¡bíQŽÿT€ó³Ã;Ï»²f^-¢ž¿ÂØ^¾ð¿c±O~ÌÜh+.¹Œ¹zczòƒ’òVÅ_2$Ù€¶÷[?£Ñê»ãÞJŒþæ©Óú6ˆÀôÿ©/{>çôR½IZa™{@7 Ê©dQ`&ÔÍßk¢YµüP‡·tçŒC¬M²‹7ÍhÕnt› ‘*Øÿ©MK‚ùNõúD/œÿ=”°¦95 ö 0BÈÑ7pº`rÃ𿀀rð0öºÎ*R Eë gòGy7瀅£ 1:˜îúhõìŒ ã2}0û@&ïâ´}ƒÕi"‰óÍ=³Ö^q¯Ï¼¨™NÒ/)t’DrÍ·R}¸çç»›Ù·¾£¬Gv4:§Î¢J½‹rHî‰[,¯Ä“¥A§ ,E%êR™'¯+ÍôÀ¿D÷ !À©ù@žxàä¼±êDpxÿþâHÙ<œû s7‹.ˆ—(tE8T(õ5B´å>C«CÌRY:@´Èxm¨|<{/©yé`ßúDásŽzQ}`€ŽœYªí­ÿöMET@‚K蟖` ½¤zæ‘Ìi­ðóòïÏö¤;¡6Ú1ÃìM”PJPZY fC‡‹ÐÑSyŽÈGfæ2ðV|ÈØS+Ù-wr³0+ +åÆÊQ÷fä¥Ùô·àü]&¶mv"ˆØ‚0“K(üÄÑM<|ÏR<ÎÝ*½ÈSd®ýß¹ÛkÊ”•¾É˳yÙrÁ 7䲜©?$Ügîæ>`éðó‡M‡À‡ó”&WZ\ŠA‚ªR¢¨›rà¨,’Ž‚í’¦Gkð£€3»ú:£­~jsþ˜Ÿ=ªÖ(ôòü ·t]ņÊ1­76ÿÐW3…XùË…Ñ  ®M2*É”Ù~?¶@o0G“mK¾cÄîø¹ø€-sRÌ¡ÇUasAÝ]]Æc%·’€±‚š“Âãe€j­“bˆ‰Ýc"z“Ú>”DP=ˆîX‘ÌšÛ?>Ñ‚5ÒŠV§ù6ZH_ƒÎ0Y©z*„}€SË880bŒAUR±LX*­dz¬*JøJl5nÙ63ªÆú—¨3^«:äȰ«Æ÷`\J>Ö÷fIjá^â|#°$ÄE{¸¬ÝuÙàuÉéekÐ;@^ˆ“îy¼|G·G¢™‹Îe:Þ+ \Mî¤)?õ£5­ÂùpåϳM˜dÂO NgŸ¥ÉÓ!•à¡vï¼$¸Ž£‡ˆ‹¾JŠ” ½îT8÷²úÖ¢õªztŒ­Fb(ýŽ@DÆŠÄòŒ¡ALu"]{œÌ{|c[€”ð@rºêȋӯì×âò!ý½Ëtéú‹3 + ¨3“Ö(J Ý* (qà>{¦ÊNe*^éÛ÷kIFüÔ´ÅÜF£·žJ° ¹U••©+—ðÈ/es/†Ã8ž6f„Óoa²††D•°õlÏü7Î\J$1` ~V†4ì?uS¨˜¥0=˜tiá9J‡ñ$™8‰â¨š£Eø?>Hõs]ÆU}¹ÏÈû˜ ãk¥ÚU‡©_­ÑO u³ó¸%‹vQØë0 Eý”A«Õ÷g<<¬[~ƒCgd޶2¬kËu´¹]XSX,M°œFÃP‰ ¶£w£2­ã`ëF_Á*>š"Ñ –«_f½,qË2¨Ú~אּ ²ê´õ™u0ò^JW³†¶'uƒ4ê¯|ƒa¡ª³l«“ ÉqVÆJ]¾!à‹ò >'½9Öoº¶M²¿©D[-˜— `ž£Ý€=ó2t-ß"2ÇüZ•†n”tïZPrPÉT—ÖÝl4øL,”W(Ü%` (ûlí©åOäì[$ãÙÎTÆÕ¸„£¬ñ«I•DEÆB‚w%f\t¶'bÖ%ÕBÒò¬êi º·¤?‘kÐS:S‡¿-ó2”¤VœI1€¿µqì¸LKÛÕBû"š;“‰öu~ƒš­_L^Š«W&|Ù(”.HµÇžÀm*S¡Ô`jzÓ» ÉŒ …K £õÿÖ(i4@ΙjX]ÚïtÑ<V—•¬ŠB´§ÑœÞˆ‚’}~“òñ_ J‘u"µ,0ü•èZcºœ¿‘ ¤q Eïz¤ïÿ¹/¡Žom–ª!1 kÍåéÄAYrl,júا„æ:Ÿ£œU¨Ìj±³«¬±Ødú, MG¤¾Sj¹aÎ[Æyõ(5Xp›˜h¥/Í./F:Mw—ðZl\´_ÛÒ-~`ʦ&û˜Û“ËÝ€©ÚŒó” ª·k“Ûà‰¨ö6órxºnç‡èQØPCbe\_¸;ª24J':+›œ„Þ-" Ð_ƒ1@ZWFwØ@؈¹oej@‘GìB]õh,Š5"¬Ÿq'}üª­ÐE¦s—”1– HP} Ë“¹5“‘ð/Å)ž¼^ê+Õƒø~ºì§§ÎÌÄ3„ÈûÔ2 …(üߤj¢vV_7:ñ]€3T&6£’;•D£rìÎ/Sàß\å}\>hµ8¢'L¾eŠäoôN…vä­wì ­ô)\b•—wÄÃÆl9)kŸõ¤¯lIa;¼Z;Í6¼ŽR±Tø LI#MxÈY'Cž<ücR¡8L¶î5)µd6´uÔ_?§b¶Ë"?!öY…Ä×ßÜ ÚRTð‡jø0`È…Ðïñ܉"F|ÙØ×p1Ä„3²4ÎH&ƒ:*Uöì ¯»§ÃÏâÔ'©áªT©4D‚›©íÈ0ÌhÙQŰ0ÈÆ ÷ádX-Ñ5‚ g4ýyé6È#î¼X‚¼/v 7•Éó¬ð`™3ë—}Ø~ô%7>£Ù+ÓŠÅ€~HÄç¥Ë:²,¼o"’eÿÛþ9<‹[\® ¨uÚR«2·Oµ¼èàÑH„QÈæÉš~°Ìœì*tŽ%‹rW‹4Dl¸N³/!Bñ5­âÏ]:/Ф5Rdݽ¶’Ü4¯6xb3`°·£­[<ý©A±ÖjBY§r^ë‹Ì;åÔSý4@Ù ”¼k*÷|šÎ“ѰžiرˆÙ_L1;SbÖQЪsýQ»SšHn¶$ÐvôÒeæºÏ‹+ÊÐØèE‚Þù'º-·ñv—ÑX].ÇmðįlG㶬á³ÛT!x¿}Lí£¦`£Ï‹<Ô%‰Iƒ«ó̧W(+VŠÜˆÕïlUE¬* `ê1éŸ}H=BÎѧ®²Ë™»õaÔ i\ y ËJÊ ¬Þ±›•£ŸÚÆ’†GÀù^è£:ÏtµnFëÁrNÌ2÷L.ð!Ð>±Ö¦ÓNYñ›/<ÙŽøl»ÉwÃY!üÓn‰,häçƒÔLµrjs;FdÔï>×*û)aòtpªé¤¸¾ æ’:mÑË2T¨åR§6Øk’QyšÓ¼3ŠkgdxTÁçaèifFÏ¿¦î;tÒî*Ï­.uÖ ¿Nõò¼Íùv…•“n Ó¦¸Ô3ó+ÆòëZb*k°‚È‚H«¼÷ÒøÞ’-…õaßî¦ÕM›„ƒÃ©ÅL㿲;Ò¥Be]š…G;n_ëÛ­—$~´@îêÖb¨e*o+at`{¡éqÉB£ØŠÕÉdZ¼¸Äêkiš~(÷?©JùÍÀŸí{w¤ƒ‚xÆ`i_ ÿïï)È„íÕâ×`Y!g_ˆâ×Ú<7´q•}AöšŸTUÂ;œ‰xP‰)]€ûÔd4%TÝS!”I·²ö3+¾Ò˲ñ%·àïñ†v¸Ç?`ëÜ5KÛÃÿÒÙ§ZTcªÎ±L>·€áÆ£ehvNATd´¶Â‘ðŒ+èî¹9ÞËêÕÀÇd⟣ǧWšá¹E¿ÕÎÂ¥¹¥îŸ F¶©Žæ8ßÑ“XZˆÆœ IûB&ÍKŒ±³9KþDñtL´IÍÔxˬ{3Øf§¯lûú—!™Ü&›Íïú6kXêÁs;¨€Dh7cÈÞṄ$ÙÎmz»¬4phNÅ]%z˜\ªêRcs—“ÛªBŒ;Wp6VÇçù'Š0쩟KjÊÍ”ïå'tÍp¬˜¹/ßÞ1»pVá2™ÛÖ˜âú@^! žIBÓcy ­dšSceG&…Àúw㉿lí…)ªñ9êí…–Ò»‹(v$D…!çö¯ô†€,SÖÎg‘ ýp±²Hò67µæ1À{2…QSejç6”ŸnÖ Ú‚Üíâµ,@9œ{¼” ušY+²Yõõp”S-h0‘©tATð‚Œ «·Vð9ÛÿÙ¸*I<'!îÓ'ñŒ€ÙÕ>Û z.z—fhZñ5Z¨* (•23ìwPÖyMP†éÓ'Æ^Uq‚&¿£¦^Üí¿pý•W‡._¾g­ÞP¬i›âÌqô>CùMò«€ì˜AÇþv'f¯O¼ÐX“:ö]Úx@½ž]†Y=ÝN\@»´ coVŒˆö_Í<µj}_…ÏÜ‹€fP¤¤9'i 4~´‚2¶I>2p÷oôÿ_‚öÔû°ŽŸiûFW¼Q^üÍÐü'¾Ù¥;‘[äúJ¹s+d8It¢ â¬C%ÕÍÐÖÿ/Èî×G[W_‡µu=”G…£ø[*ôCük¸<ÏÞ› ³Y ˜9'[µ¶-c÷ÐÝ­7LhH<‹jG(úgS”)•ã;‡õ›Âô€²·°"Ò‚”%•ñºu?FzÝ0„µ[ ü8f-Wˆ‘ÁHFáeÔoüož ü–œ…ï®-§Üʆ„ K"IýºÂhh˜®åýHþú[-ÆÒúLá:­JÓ2rµ¼Â,fyÛ)ôÄ´HËnëXº3¡ˆ¨® ^xz‰¡ƒãñ—fÜJ5 WŸÀû²P[ÈÛaJi…ù Œµ–ÿ3¼ä5¸òÑ–V‚—É¡yuXhY²Çˆ’“]Ñ“S½nûw±TœØíÝ3f®‹€*}}4ì˜X‰'†‘C­æTuƸÕÏiÇCíß#ÏH·Ù—@¼ÕÔ™SN´ÀNò6q'©'—›x=ŽiaIBãkLVÀs‡8Z;Äg¿ä ˜·x¾åÙp7â{{XG;Π¨@C·±¼ J9…µLuê •—þÂR“ŠNHK1+‹¨‹š¸½É9לá<ª Pí;RÊB»æ|ÞÙ.Ë„w± éøü|Yå S-ÆÓë†ìÉ¢½=¸ÍÕ‡•Ç?Ü\à¶ a=.oŸ¢3ìy§j(Øa²~½Ô°/Ö‚Y¬ü?wþ“âçµGÇœ{ø†êÉõ5x8ʳÝ(EÙë)Wwu¿yÀÝèNGêfîb#-ñ$Õ§±õ+þ°=wv‚´‚ÕLàΰž,1‚Ô “gÛ÷üΨ' <°ˆ¯iÑÞOIÃÔ œ ïï)Ø{ãgBwFî+y~yý,å,Jš¤5€nDZY2ò@X@ºóL´Kš»¿±L;„¡ G8Ž}Jç†l~ä‡×ÿúÆ1ˆø¬"ËÁHä• 6;Ÿì¥W˸Žýx.:À\©4« ‡ý¥2F¥˜ž& SïŸ-¦HØTÆ °Iðá ¦ ^÷/é`oiRÜ%Úi¯9Ž-×ËØ=$‚¤úÙa‰ÖJ»è=·Ñ×´žúuÚ¶B3iQóêµ(Ôkh¥9"æú´Âô|H¤Z³ÏNÛè ´½D¸{Îõ2`‰õŒ€/ŽG²wäɳíùò,û3(6ÄŠVÒÚHñ±É®CÞ "3MwèêõÄFÆA€fõÅúWíŠy7}0¯ç¿ dÁŶ½÷5t2ÉЄª¼l9»õØåg1Âø Zâ d>^ë`tŸ ?"«î~q“ž¾Æõ#7žØI§äˆÄÅ‚k JïÏÍ4y„"Ø•`ÆòÇÔY›\>'H1?ØÑzâA0Œ JÓêä9«ìZŽNüêœ (×ÖXØù3µÁ¬ÒwÜ«:ÄÖÚäv—wtlãweŸ7Rëð) å“VVäjE’’¨?›K›gB#ñzØ÷„_ØZIú"-¹,U ôT×MGW¹ ‡ûP©Œ+éòw¥dï­ÇäM:üãcÏC7˾L 0½¢Ce·¨ XøŠIn0ÂTvBupuhöÈI£“©ØCâá{qìq>2‚,Зå’Ïú¶3y 0mƒ‰º‰4ì±°l„ù•ƒt8&ea9;eóEózü̱v3÷¶&fÙ«IÉÖæX$/(gÞîø6$g dŒ<ÊÆËÀã䈠fÑ8¹4ÏŽÖ Ïx¨¼Â…°B`•# ‚‚AÎÕé²{P@á²ã¢ñ,÷*höw8¸Í˜ÍlƳK!àô0†Ru<îy1©‚™êlhª8$î…”J±— ¬íâ±c°I¶ôºöxrQž&G›z•¿°Fõý68¾ÒsLnßžü†6x3sYØÚÊMk°Jù:F™yú‰GJFzH·g/º¦ö»Zk© ijiÅ ¶û}°6±@žïnaCw³o¥!ûÖÔ7¿,Žj ð鬇Â>ñsç¼Dše†µ1àIômz='!M‚^J*,n»Ãšƒ°8Z0"mJ7,çáÔ©µ1V ÿ+¹S>ô’‘ªØ>ÂUÏ¿(m—œo0!™|cø-‚ó$»Ev$(ÝUB€Àât[•‰°Qã–÷ƒ‰O²4XØj£ìöX>p“GÈ…ÊÝ=å"bcÓÜñFêýØœêYDmÙ»)Ð1ŒXd䬱ÜY”©7Ó¦8#F‘ÀÉ—ÐC¹œª9”FÒÈó(Eì‹u͵+º4Qo¦|úϽo}öU36Ñ÷žzÅ,þ-øîLÒÆ×ëÇ‹Eºl˜ìº=˜”‘*B±Q@J ´aKŠÚ…Vê;´ ˆi”@(NÔ;ØU9Áè(“ÚÀª¯E6‡—YŽ©ñ½õÛÑ Ïp6¥y¾ :'&^ݼ­0z?z~ÊÁ2Û,»¹Ai²`O»føÆ“xà¼î’z\‰¹QkàMn±÷ì‡ c 0(d`¾m_Mbó‰Ý¤Iο4%´p¼y“è¼æ®Ý]²ý9]ÝTŠ~‡ŒK…ÌÿqaÈ]½'ýÙ”˜PsV%ä–Çò×HÖŠÜj‹QH’wÍÕ¾Øðñ}oÀŒ~o=bDª§L¬¸ÝƒW^äAv‡™ Å~ŠÊŠçq¼­ý/¶¼õ¿Yz¹n:óó¯–S)‚8f(¾÷3?´|…jåÉsJ) CS.TÁ1WBäºÜÜkf!$¦4 Qïö£í}]€3€3@¦ GÝéeC•R Gn´]7D8¤Î©\,'UÁÊ„öšñÁúœDœ}”¼2º’uW‘œîMn€8£grebé`€³.޳î2¥ÛGÆÂÕ–`:ÌIž®($!ÌôŠæ:õ¬Á×ôM¿ð]­b=3b*g %R\”Wºìð•}LAÐù´UæÖhÅ!—ìîKVN’¿ « ß¼%r¹6Iä{þ »Þi( -wßbEL3PÅ+Ò^=_Ô3ÇAÐ#èI}oÈTÕñ³X{ÖQAnì.ÎÂÁóòè—“epÁÇÜÐó:´¾{±vÆÖ™4#¸\G`¨¼å¡&ìf´!µ†ª\·LÓ XôüôxÁKÍÉñÉV%SÖØÇaPYð(È¿ï'Ä럕{t£.¤u$¿æi í&‹6P«AfÆ› ­Fž9A>Ä‹d­,A¬ê€åÒé³Ìþ¥y{+½ñÑfQŠŽñ÷Å`¤Ñ¡ÙÊ\ˆ‡àô'昚ְ†ÏÄ[ “Ê9Š ´å:²¾‡|m,E㸂p?é*G%âaŠ´ƒIA˜Cg6zÇš¾á}¿†àdï°†ü8–zñ)‰ÝžŠƒ¾ÙE On<™gØ/S³4Âmä,IxTõñ_ÞbVû²PH¾FhØlu;Ëé«ÍÐ ÖŒl.§¹û Ó;ªÝŠaêÖŒï^aVÉÑ_=Þ1£þÈý5ú …¯kÛbˆßð†ßPÔ﻽‘.©Þgˆ§W‘¶+¿¾ò¾ÚUíeP›±ÖGÆb³ŒÊb‹®¡PnqOÈî¬Å €sþy5u-{Á¸ÛÉ|§ß{¶¿Œ;ù’Å>¯Ô Ìê’v¤"#âßêO,—ÀàE*'Ç|É `ê}ž© 65p—ÿúÁ®›,¬Š—g9J«‚S$5|&+d¸ÝÔü/±vjÎÚ“ñ¦æÝÒj$Ö„ð‰F{5ÏoqU&‘˜çØj"oÁ— .x„š)‚‰l¢«~HV®œDé ÄÁøK¾ŒÄɇÖ×ß –Ðò}Dð£ŸîàÍ>‡4ƒxQˆBƒ³÷ð$µ—uI`b}\<öâKÜu@ÁrÐ%‰»ŽŒ«’þ¶ ȈT]¬käÄXÿNwœÝíë™5%ƒüØ[ë€ÙÛç¼ãlkNæ×›tTÈ·æªU÷F¸š½‰û×ö~‡˜é&úÄ>ŽeÑÞo7u;Hà Ú\C„ߺ¬hØŠÎo•A°* sÅ*!Æy±èÌ ”ZÖ ½[ø˜Û„ÔÒì,ãeë ø¸„™ôafåe‘( ´(3=Â…®a§µ†/ŸÀàÃÇ!`LÖ²'œs‡W}ÿÕ•"²™ +¹B|@+ê@«Žˆ.Õ¸'µµ«F:øÛÈ>œÈþú%ÊuÎÃ|îà×þ§p3ãܲÝ÷ýÊ8þª3¸­(ÒÇ>p[¦ñż¡ò­ùå‘rDHß<3ðaˆz/Àª»Jæ,ømÏéëÜ=ƒÂ8úcs'3ÍÃä'˜`ÎQ¹G‰QnØíU õ¹Öðmyc’û9ç¤×'C¢ÏÅçŽNÙB±£Æ²Á]æ¡æ*<«ÖtóCÛÀƒÊx{~½ÍËýŸR §F'æ n±c!4_ÙɰÊo$ú§q¢n cH ª¢ ¡ë þ|]R¨’÷qNXb5Z‘ÕŠ¾‡lò£þŽÓý²1]c‹@zM [0Ì5%6¾?=O_K«V%'«ðé¡Z0 ’{v'­´´ë¡B¨ÇdžRóTÎÒ¬ƒgÏKä;˜ >L/„Pô ¦ßbUi¥¥*bÌ<¹Öh,|XÆ6ÜD€Ÿb'EþònûgøKĦ“ýÔ3:UFiÕ?@Òü¢A†LžîÄ®_ Gõ<~·$H›7Y?ÆÞ÷kaJcs:> u¾âIùH}–eš:Ó!¯ì…DE$GdðîB³§Öfºuz>šH¹›%Ò¡ô@¬œÌ·bDŽM,Uà}3Ù#Pq&„‡OSájN¾@jš5©ïwqÑ5ûç%5Õ*Å #{f¹Ç½ö½Ûs öQÓuuâ%B¡)õÒ2ZÚ43¡A5'¨[0ü짺¾é­ ìƒþ¤«H fhçj{š:°´N:š-å¤Pj­³ùy ysçxÃå ÖSöñù:>Š?ÃQ0Pd#QàôçY¸®ncÅ>+FAC4õšÕÇíÔ’¤*œÑw;û Ïä»P: rkow…pŸ¦uÅrˆöS—ÿ0í/e/'¿Ù:‡Ì¥õ5¼F*ØO ùýµä¦TÁ€PaEJT³q ·I¶û'Â~WàT` KU0÷]tÚßz߈Ìïy±FÉúªáq;-T#Ý=-äÞöŽ&ÊÆé4‹dûdGqZ¶ÈBªîÀ®?ʆ¾!³…WÅC!~:u™½§›~x ŒÊÃø…ôãÑ2=O'X{ÎÇ?ýijüU4TÜhv«f|µ“DÚ™³ôÆæÐYhÇ;)[!jñ#óø]¡_¹™Óõ=C¯ð´Y»ã°O%Ÿã…>ÐUè9CþØ“<*B²4 NjÄ@O ¬ûËŸw/¼ ž4Oitƒ ˆ )Ä f!ˆ=|J/#×Egaviotatb-0.4.orig/gtb/gtb4/krk.gtb.cp40000644000175000017500000002511011536321052016727 0ustar varunvarun@€3€3<<F ¯pH*]@çþt¦ºÃ>¸ÈY¡Òyêakgúà æÓÂÆšµl=‰Lz¤ï\Fc½Néåî#l¿ ìÓ ’NøG÷OJÌ¡~³˜?h)åͺÆjq§‰8á7²í^.ß[#ÞV#ã¥Q»ÿ©äK>Q¯»ê¥ndõmêYttU°ß_64ÿ¥Š§wŽo©ÿŸ­{»‹'YÿÅÓxÃÕß÷ùý-ÒŠ?° ˆÑlˆç´ë"°äiâ?oÌ,Xmò‡’§4:’ä`¬ÞÈ'p"ËQFõ9èr¶D˜Õ÷?í-¤Ç‚mljÞO8ôÏÊïZê€%eøÊ§œ'6•Ü˺„´¨¾£¹pÈ]ê›°¥ Ëë×”j•y³/‡ºr9,bÉ6'v-n±H²µÝ÷žï¦ë^Îÿ“¯´æèµ'Ÿydib ™6¸Zj+‰ï‰{û©´Xb”AÿØÌ”›á©í'^å¥÷\(˜½jö^›i$Xb« CØÑÍ÷ò%pÌ›Ô"§zPGÁ’MEr”E-„{¹€¿®v­º ±z”Ê3Ø&o•,¸M>pO]³E'õ-Øs,l¶±&“ÜYò P—r#X(ÏÌlRÇN(J楱-v>Â#:¶Ó6²v5&œ°®¤o™Yñ¥ÒÕÁÆvîÛõ²˜_ê>ýGm#ð‰¼æçBN¡‰0kÒ·v~ïD/•v=a¬sH±¶ë#œwÑb$[¿’©H­£–ìf¨æû @ù ŠÙ ×>’j“ñšÉìøZõ ~ücÄUX¨ÉJËúök°¸m$ua‚ÆŠ–ÐëüSæë™ìÎCÇÝx3JÁ¹|3ŸRªíYö;ŽÏ <Ž· ë¼L•KÏŒs¸øœÐxíÎÀ«T¸ÿ¨é¡4!] ÜÌ·Wc9¨Æv¨j"v¤ÂÜîR súU¹Ê–x}\n5‰–àÄ‹?Éeã(‚íˆy~J‚Õ¶^Ö­ïkÂÌæŸÎzÚ» Œ ½»É÷Ò_b”b—Æ!‘YÙTW¡O--U ÉåO¼{V}9¯š_  ƒñ…½)Ù¿…ôs¬:;nÛâ³ Bè>Ó†ZaÌ<ø«ŸWôÕœ&7Gñû‡}铿O˜9wé›ö³l•Æ~‰€Êe₞ZÛÙùÊ8IÑŸJÆ™“Ö!cZU·ºOdbå8fd÷›ÔeëÁY³[¤—_òÙcyíçôÓ×Ì °G²ù÷î^¯p…<<ªmÙo‰«’ªÒŸ¬©¥!ÁÍD¡2!ý%Zâ*uÈcvEýÂókz´¿žÿ`uô: 7A.Æ;¢Å©m´‰@/ªö8 n ‰¹ƒ»Uh26@í\Š9¥7L¬è=v¡À>k؉ޟTÞwnºRV5G•Ìk4?âõÃX‹"%“Ó¬{RcžF3òi³…GÎ2Ý~0Y ’ú?nïPÆ‘ˆl=…·øÅ—nÌ™päݳÎûéø2l;¹Þ%6é/øBµþ]×ߢ"‚F©| ÕºJt´•Ò‡%Éq>²°üoõúÉdá>q¢¶õmj°øvèŽÑ´ß‰ríROA,3Ð8 ð¾e¼èĬãjý 0øþ ½ç¼ ¶• ì¢e+_xÛvײbÿË*fHoˆð,Ëvå)0T³q+#rr0…:Ìz.B­0¾eÀ>Xøï­%WHÉíã –Ê%Ým!„68kñOh‘"ä›»²u\!J^hÈ’ýÈc£6! —®†·ÕePæ­†¬$6Zð^£•g®Yâ¾Ä§èl-ýÌ\‰÷{X¥œå¥à²r¨ƒ Íñzo~þR÷µ3ýé;Â0–zÁÓ3ÓP/¹,>¨T=ˆA- d7M<¢8ëøT]¶ü±rÄÇ¿Ê+U@vð¼°OŠÜâK¦ìtÖbPC2=æ$þ­ wÿð{«Ì“ `Ö!;B¯Dxú.rŒ¯8jÙzÓvK ·Z¹Ò. Yñk¢2uCÄØ&¾Ë–¡±Ùú{^zpK8CUÐN@ÛMå€ vÍq(KþªH.Ü¢²Ãt—Œ(”¦ND6û>”:rGzu(-Ó·!p ¥ 6ž#…ø]îÜŽ¯/ VΘt×$ÕÜÁO›ã¨ m·ºÀ|åÉÉ_G5ÏɬpOðSe--‹£ˆW!¼ùZ3¿“¨hWI[¨@ N¦Àb%˜% ÁÙZš¿©¤£Ú…£5x°Œ)¡mÏ_|ÏxË8ž7ñ½)rßö0¼2.þÕU±úIzUÁê¾Êð“È»ÓBp¶xR®¼<9ef@èŠ “tÚ¡ÔÄy¨f1ñ DòÀq•¯gwhŽ&Ö}óSµÒAšÿä;PK­¥ŸÐ¯0—‰·ˆe³Öͯ8tpáÅtBÞT³‘SƒV;:~j·ê›×HØzrpÔKs[bósñÎ ½Z^ÂâΈÕå5QmvxÖ™’}Y–ŠÄ*F4¶$кÅËu3zŸ=ÚùbAn¿áæIÑÓmEî÷ }`—M|ÑÁÆ1í[ü_؃0ÎÑ$®›ÌþlªW!€¸¶NL†iøn޾$h`£(ú‘Â*%*ßçìNI‚7ãüƒZ£©bo´mÕÕhµd#>÷”ï_;ÉÊ,`:þã•õ v€ïK# R‚efbÒ,¬Gkätem4 uØøÝ<ãêÍ­çÝ#' w¨¤oøo½¼…h¾âÂÍ%R‘_0>#‘=C÷mœÂÒA½¾˜LÔJYkGeº#¨gI7‹YkÉÝ©ûÍÈs ” ÌÓsy³pÞˆ 4ÑýÞ§ó(\e¡Jÿá _}¯ ýt—èТ»ÈUŒ þRùëÄÓr>«¹K*û¶²ýÁirõ}¯«¢¬ëÌÚ€ó0¦IÌ8vP­Ðž`¬Å_YA¼Pe ŒRÜ«év»ô] fB™'àÇl˜ŠQ6È¿åú‹:I •ö6@¤îS8+À3+0"ª]€3à;èc娰èÒf¸ÖIôïµ­;ßÚnwµƒ¥#É•ßq_Shü4# AüØTŽò«ZQø’ê¹Ä7%3ý7zõsµ<”࿆ßÈe‡º¬’„ø+1îrNT›øȽÂï ¶Ì®Òç\ªÛSLõp~#&=Ðk•],˜f Æ)ÄK?U,ã…ˆlÙ2|K/D§‚©r~SEë‚›‡”ã[hlÏ¥ Õ½ñ*;—ÆKn³5BºøŸÉ#MS#dö‡Fô?£Âöì'ƒ›ß+ùRt‘ÒÇy¤¶>À9F (ü³Å1É‘B¢„IÂû:õc“ëp'HW'–³¬ô4+@Àõéˆ#Í4¤X ºÍ:ÿ71PÇQ.äC@êvV@z&¥~kUøÌ5qó¬w9ɰª ä8%!"ÖðË„lÝ͓зk0 ‡Úƒ£Ñ‹°•ä]#!+.µgÑ$¬=>­àëZÃÇŽ‡rÙøs1±Õ¾^©¡+QK)Ÿ[ˆœEsÌnvLr‡Nª¨Úw>igó†/“6‰K€{O´#÷ÉL(øußÏ¢åíô$ÆÚ%Ê„òf´ÔnR¢6!s"¸«Üéêȵ§ñÄ• ÿLør= Éx>‘â«2˜¡À$!›Q†CÂÓSŒ``†§€J=WZb|!xçïL”¢I5jûCèâr”åGØÍnh7[šPA ý/®Q,—˜mÏKz#G@ °6>%|;–|)(,”½XÂMC1¼*¨NöwRÞ]ô+·”`aE4Ôè<Ù]÷ïy›‰ØÛÍØ3ï6£„~†ëë²Líám åì/š1E²¤:;†7?åo»*•*m¾Òò‰¾¸!Zè”sŸËÿ£…áø©ÉÃ¥‰´Üà:ùßY\Fþº’d`rU-Ú.eU¨ŠÒ¸¼ÐVíÚìý%djSµ] wf¾´#š©*\+žç,¦* ¿óÙýzv^F"‰†û¾4f ñžÌä`@U¢x {ð­Ó\1%J@Û‹ÚÏRšŒ>¯ãõƃÚjZ„OIÀ%½Ì6þ©¢øÇæOp}ŸVCµ1áÜXÕK’þÖGÓ~Cî•y~ÙÇôúÒŠ=xÚëË1P½Î*·éßE4'8–gNÕe Ï[ ±Oü›æâu²xÏc$á)ªKÌ£iÜÑíÞ ^ß34ýˆÆgнŽf-ð1U–N‡Œ(î˜.úÁ1ÿ²Éwÿ1@ÕÿÈÅíÎüÖ™.«à<¨ø¹mÄ%Ü‚/¸]iwëýr™±Ò¿¢1+‡#èâˆûž¿üKþöŽb6Ú.bòõ$"N Lþ;òå¬ô©3îТ5)™ìDŸ Á^ÊêȪœ…LÀÕ—©p5ü¶<±ˆ¦}Ã+:UYø›:æµü2­ºêšÒ°'%©µ³I)ƒ¨ë·¢ž~Ò!™ùYœ›"¿©„ýÖãū꧔ËOâªÛsÚÑ&‘ ƒ[¨,õÚ@$&à_0Þö,ËTBÑF)µ 3¨î÷š<ÙE®ÍB^3Æ ëû"( L)Õî™õb$ï 'så0´ Ì3-÷Ä}ðÍanWÏd›¿û—àšHüïéÉ æ=léd„KÍÚŒ‰,3¯ µWw(Kä­mì¼Ønüzešœ”ÝÒÇ%ÞOF¬¶*0 ;Pº\k[¾¤×ü®ád8¨ú˜ ÆbK3VNòû {i†Bèöd¾3Ÿ.|ÑìtHrÎàŒß»¶[Š˜¯Gg»óÉCêžÍ'OÜx @Bi´=ü#´PéØ_¾Ó¸Ô›Þƒ lƒS4èàîOoj °Î¥‹¸4:‘èT€¦zZ3T!§íÆöÀß<ñü¨øñV£œ{ñ”édË’qˆrÐÚT%¿:¶¡0$kl s¬í: Ë/ÀÒ:Ë&Ëcö’‹Ap Ý$ƒ zCìÈ~µhaͰÄ> (“¯ÉŠ·£çró¦JËdŽ×!úîJ:g‚¡q=“ŒkèaÑÊ!ïÏjÆy‚"èã†H“UžúuFh¨r5 E#£‘í²»Ê*ú×=™ºt%לnmÁs 2í!½2üÝm„´:pÌ=ö¢´·7±x©Ä™S³¼#AÁ4¶Bmû˜oŸoÒšöUlgý“–ó’z½Á.³Ì|ì’ȦXoÐÉ èÌi+="0ÚÙê¶…ú|oÙŠswøMÓ„èv[6¬½×‘v£´ñ——ÿó-Ï/‰¾ÜÈqD‡ŽžÿJÐØ€wY¦îMú¬žClš/¬FÕú!Ÿ~W|éDñ·Î™öUÜ{ÿð<% à ä#º•¸ùÖdçXÚL“ ˆ Ûˆµ«ÝÍhšÆ%À´I)®}¢OÅŽÌ) Öl­0#ŽJà‰5Æi¥ŽjÕ±¨Nü,çš>Vàñ.sâXÝÙ+VãÀðœ庬#}Zþ\%Å,Òó€‹]@‡öŽTÝ¡ÕRO ×ÚÖÐ U*‡ÞW²—%/›t[O£j]ÄIªõ‰Î‰€óùsà NkIë€þÞM¹*ÙJ6—A¯ô–>‡)­LÏ¢%íÑ>úìæÚʬÃÜaÀàGB†÷´æÌµÉ ÃXÈ:öŽ2ä݇ i…çÄ_O6¿åÆÖó\õ»i½8Ÿòæ–+ÁøDòì24Z-³'›~ÁâGÀ‰<%ÅPÓ0ßn"H¬3àÂo\[âÿOrÜV„ã‡Ý’.÷÷ñ4(ëÁ7˜r©Ã½û7K½Oýþ,4ŽÓ” Û„ à"LJ‡-MÎaʦh˜?.u¾Ó,0ÒÙ± úký%=$×Ólm_x˜(µ¥wà2&úz3­é•å|ÕL㿸‚#âA+ª8”z¶ p1Fy¯µ}ÐËP)ŽFr>2B†¢ûþLáý6ŒwÏö%EöÚ€r„€\±þ®Ð‚ “:ùù ‘uµÞ¨sß 5ùŠpž ÒçcBßú0·a¹c,^‹ïÂ~‚>Í`¦Òö°ÇC¤7ÔÉiGõL'7OÁšÀJ# ”–}Ÿ¿€ˆÄÙ{6ñ†ñÄLUÓç YK¼.l³XóÞA?WˆÖ Ë—¦ùÕŸ±Þ̘Fm뱫=w—-èÜJKZ™ò€9"·2¾Ùð#GQÎU=îf·ƒA¤Ma´È¿gi@›‹¶§K ªXˆóTò´~Ð,9Œ/>준>h"E›òöÞ²fŠuk0Õv¦ª£³òxT+D2 ù1àC‰EJóùàÓÜ÷>%™³æºaœJH?Pæà`¶:䡼°¬ÈùœïoËsTá[«ó¶ªåAQË*ßÇöø:U¼Âm¸AI H(sñÏPí \”‚UÇ»j`z;µB•¢»õÙM*$Lã4¶Ô½F£™gî¾~·ìå¥-÷­'ÞÊŒµþG¿ºbuŽ(ñúFı½ú0|€ö2SiÁ,—.Ú¥]°q½ÙH€8GÁuɽ_ ÌÕéB/ëøWWçörý#ó œ**PêHCk¹A’C¨›ø!•Â0O×Éïm[Ëåœc¨XÿUýr¼Œ“jçÖbY¯U5ûÅKç„e¬¶¯„Ó#ÉšXBL£±YAØÞTÑP[™Ûi‰§Ž¿3{ï®°`žõ‚ V|¤+D~u¾õ;´úŠ7ƒgG_B 74Ü2“pKHx ƒ[­b—ÞÈCSà‰5ñ ˜…0œê, ²¯cóùÓ'›¡^†–]‹?÷&û¾ Ã{…qËRsšnAƒ>ÐQ¡„Oc•â ×WݹÈI4'=[e[ÁxDÄ}–&Ÿ÷*·í”RâÄ^æ”T©6á®È˜ƒÛC_VÔ#H °¯ƒ¾íŠ;N€gkIc©›VFÁÙ©L?‚Õ%÷œŽ+ˆ Lœ¯›i¶[ÇšnÁ6 xt×庆}8¥{¿óB#Ñ_åæœÇÐÜ<ÀJ„i2P\P„ÊÊ€"Ò¡ §½ê?vmÏL˜åSÔŽÓÞ˜.ßÈ!õÏ>éNÏÀ¥ì%7“Ú5»ï+.4.M_#ƒj9ð| ³¼gñž:L;³$8ÞjPð¡1€øæ×ºÀémƒ‹OÛd¿ÓU· ìeèv݇^äWÃ㿳ªèùAwF…:»…z§ÊíÔÿ6‹zuÍocP¿±T+[‡³o-¼ì¹i4Sú…h¡-°øàñb”-=f ÉnRù {8ÉÍéõ?f4AûÄÇçz+ÔßpQÇÝ#WÉ{A¬¯Ìøim»+eP þ×?·Y “S‘XQƒŸäñ˜c¸EœBu䟴Àu¨o6Lœ‘œÐ:yITH0°»|UYYóávêÇ"ÙÄ G7$åN$Þ|ýháÉdXœÔáŠÍ‘Ë‹ÔÕ §¡îŠiáë¥Å’§ ÅGˆë¬sSáòVJ49 üA‡?ÚÛ[ÔèR„!Ýž3Õ§®ÕÙÉF q¥ÍÓÕ+? Ù@çØ#̤ŠG¡°Qás‚n— Rü‚";°O’¶ý’ã)f"kþQQÈçÞ¯ã”ÿF*ák.ÔU†"*¶óý>YÃoÉwýL¶>~)å¤$·µú“%Z9òE˞ݿ»£l /èÕ€wü…W ”qª&röʧH­ÔDðŠ 7å„uGزgMá®Þü6ã< Åh49xÉ!/0ËFО͘´ÍFÅS`Œ)5¾Þ ÷Sá_G4—r!K|Ð< ‚æÛÊØêµjWñ㛺ZÏnÅ𵯆²l¥ðÕ¨»ô-ÜÜHjzKŒõ<ÀøhH ½ž>¶Nì¹Ìþ*#{EˆÑõ¼m†…îãÐý{“Ë’)s>>ÒÆ+èÂÔ:9/2ëfCA7iLž Ê/:·s_U¶_¾@e`fé¯qj+¼ä¨¢°©Ê8úÌñ£hb»cIÞx].8§WuÎ~y™R>ý¸zÁ¨¨®C‚仢¬ŽAiÄpô+å ;¹"߀fi‰ãÇØÚ£$ºFøÔ]Ùß%úŽ@ÛwM«÷ó¤¦ÉSýGÁî82ÀÿØHªê¼zøûŽ5¦bNɉž!dIù4i1ÉVqs  +C¾@Åð™™þ{YV³RÃùÈÄøÜdO‡djw<k@]ŠÀÓÉ2²(–£P­yRà]žðVøª”!þ¯‚Â%¿øo.Š~LBŒ•—ûnÅ,ÃèOh|¿þC¨îSû%ÔÃ…d ý|5 ˜QÒ•éVÂXAX¬ãj‰hÓo2 ÙPÔÀé> Ò–¾ó¦2&Ù³oœÓ È5œ­©]3`1‰GK•m“sÿ祸P“Å7'ת–ñÕOK öéôÔªÂTâV_Èð ëÇ÷ÛpcäéW#¿ƒk¶ 3¸¤QyÔ.¤?ɾòãižÁñ'ºXÖüéqOL‘ ð±Ëø{—Ïp7i:aä9›Y¥†Ãß‘Dñ:ᢠ+î0ÄíMûTQÚzþ.²þ}¢ØÌoBÂr^ÊYáþK3BqK2¯HhÍ|áÌó•Pî¬^ã4MËdYsxlŸ@|Iì—uoÿÀ¢Îj•ŠiÞЃœïy>d@Ri?òù)§P1žEÝYr+yEAäÄ‹/ß>âO0¦­ÓNTö¯DÁ¬qÒ¬Rï€a¸~çó‘FΔ}/2ƒO|§pôÎ/Võ Î E½âGeÍ«ðÖíw­þ‡Ó{mO±qÊ»à!)YØÙšF£°ñßöQ¤e5ÂTÂFbqz£CÐí-#W1Î!´±öÒ¸vöcW=ÀDÜß\±Œ?â¡Æ™jý~€@#ÿ4±MzÛ°ö ¡Ú}‡;õ«&Ÿï2ndd¢òF±Êr®³èäϪ²ö7 æ*ú\T?ùo,õ0¸ é_<4ìÉb°÷HS;þ¤½^j£=#S(¿*d£e\tŸ`ï<ÈTß/ôÄE¡Š|™¹çËÉB>0½(¹d®±1ýn´+C¸iç÷Žù‚Îó™TråLmGÿ~â5 ¶á¢á z±dÙ3ÆŸ}¤BÉ(šÏÔ¼Ç×ß!`³¥"`<æÑÞGk“¢·l+¬YRøê½£o­Ö!}ýÕ¹ŠS²ÄOŒEq‚ù"–‘ÝOª–ëÕˆ°‹i·#épmåaW«"Wv”__áx9öùLEŠfpf—‚5~ñw“á?P{¥hóɯ§ý+hÍ IŸbA~AP~ê-¿²¤úw%:8w#Ó|Â{rý¿\yZMV9üü¿nt%ACB0a@<°Vº¦ùÚ&Æ5­;´Óùf˜õ®ÜœºœRDso´wÛå¨2’uB0¯˜ša¹³žVÒþ>÷ ¶YQj¢ŠUº5ŒË£EdÊ"ÙV;£V8™ QS÷9 ù{´æà Ñ3h~Ù.Âݤåœséð™´‡€Ér·ÌÑî#î:ò¨x1—Ÿ "3ÔkÏ2 &]€3€0AL‚ ’ÿ©8›(ñ•õãY)J ¤ÙbDÚÀØz£‡€ Çt§z^B±Ñ’×9íQ‚›Ä ÆÅ MJ#<³2©‡Øˆ®n¸>•‡1ŠõŠÍ€€ÿzøšöÀNY8à(M"!ÛÂË´Üf' #/»á‹ƒj5°äôÊ– Z#Þg¶­Šys ía3˜Ç¦Xf+“‹Q (ÓЃYL«C•…Öj¸0âd¹ÙªrêI+é å«Ê(Þ·;Dûø0ðŸÈ8­wTjÂIE6t>rTnx æϼ`·†.›WÝn¤Š+ó‰ÉñMˆ%R_,¶ô[S6ò’ú®¦ï»0bµãaÙù]CíoŠ©VCÿ¥ ¢·­÷úè邿'ˆ€&!'°¾©]V,'›"èsL¶tä´ÄåÐèó ¢ˆáL#}b‰ÔU ÑŸ°„¥›Îï¹”‰1±ôê– ׈4´Ìáb§¾–Ueˆ#ñ’ «n–÷Šo³’Â<šÃiT@»l<±ÁïLÒÎ蘪q-Õo µMŽAYÂË<m§ë¨Ö_^ð7&NMÔ ÎJú%Úa„‚Ë ¿rí\ƒŽLÀõ]Pù÷müBÀâ3†îNê9j¿ö¼dkf`¥GÁG—ÿÀIŽÓ,3è8öa:ƒÂmÄÕNÕ‰Cæb–½6ʾ5$µNVÌz¾ë è »\ôÜþvӧ纤u4klÚÌí¼à,IÖkxUjIA}~®PSí^¦ŸíŒ¸TœO‹¹–éï&™¼|[4Œñ†vÏi V5ËMØ:ìË™f$œ‡7k ‘Ô¼sv >çcxÕ‰Ð4Ôð9òkõX>­o\p–ÏékŽ=”¥y÷y4ýPp²€ÿu9ß~ UvWž5ßD¢T¡PHaÓÛðûâlŸ’"vD Å!†Uh³ÁK¦Û;}„ï{MbL ¿¤ó˜cÙûÒ€á/ì7§ïÞÑi¥%ãÐÆDÇ\°ð5:(2t‹x9½þÎ¥û€³®H–i±”íË·y3úå8•³líY˜ŠÈ‰ÃߌG'¨á—ßݼƒ[@qã8bšlÝÚ"LAVý {¡>¥v¶mªTÀÕÍ—Ë#ÙöígÖƒ×zo:yWêÌùÒgà€šyª˜yÔr|M†È¨÷Õ÷˜r=ëæ ’òíÀÜVNŒë±”ax èÁ¼o¬ÔÚTœ¯‹ôšþX)”ó)ÃÚmÉDäcÛ iiYpG ÃN¸Þø…Aç]†¦àÞc+w]5½Qˆš{Ý7~7$žhÃû6œƒpˆ_„›òüŒ_•J+œê4³Oã†Q$VTú*O®mÒÐ9é2v Ÿ?¿%<º=\7%%)¦î7Ùäæ*ˆÇq4z?ê%¬Ð†š¶÷bGœ÷sæÐ‚èݬà¹XàžµÓ\°î^bŽ \(›¢3Ýx0ôçdó¾(2n9WÞ?wnQærý÷Ä~yÀû ³áÊ‚ ì©S³óÁˆ–ß—ß’B€ÚÑè*ç›¶ù ¬à…9D[óꮦ €‰bd(GËnÍî­žQãE¬Þß3“Ôÿøžo}† pÁÉØÓ³àЇ;µgÇãõå²&/Ô|\ I—ÁdÆÀ縷½×9\v6E&£IyJ-¤DfýÚ§ä²M?Ÿ.b×¼z½˜ˆ1æŽ]@« ÷&S€5IxÉ~³q½ªÜ€ðÇã&¢š´¯‹²ÔÚ“<~î ¼9þ‹m¼G˜Œê/ Ý0wÜèÿEžXWOjIûÅ+Àßú+h;’_¤òæñW‹à2ÕAô¤ö€í°×¥MOi0Zð½$? ïí‚]7Ž~®‘>öŠô–{à^S¨Lf§‘’ù!†“ “‹¢“‘±jš-oWZI„ V¹îBµÞºßÇ&ÑjéˆE4Ã!¾i¸>Áî#Uä›Í·ß…ÿ¥GlÐàͰ¹õÕä<·í츥¡¨4‘ްü¥Ô-ÈØpúáñs<¯>üܲ§/]Þ$‰B€ˆË^jGakfoPN¦D_s/ôyÖè¯ø¹Lm+Þ¸âß÷ »ŒÍ—\Å)Œ%Üø)‡F²ÊÓ.X½ÆýM.#aêáøæo?iê ÎßáÉ}&rÑn¹ÁíÆZ4MÏÞ7ÆÏßÞòziïô8:@aÍ=wÁ™×byÿ‹Ù®<ì¼–;Ì SOº€Íº ¥À˜÷0#œ¿#ì½RºÅ=. ôìRjèóœ Ò×F ¾“o픟¬5ð+…&âÙÞù§c[Ž*a•˜3¹™×D÷ìMe Ú ëexWi#ßȽ KTG³Á`kØîüé 9!RNrÀªÂ)¸]‘£4¯x©ÐÙޮצ»eø¶«ÿ)͸ä(<ˆYóÏœ"¶Û6ø5v$¸¼¯y6Éw®ÏÛò(¬#” šgÉ‹îc‰=>‘Ìlé‰è‰Ô².vÕ_$ˆ­<:.¹U÷;<Ÿj'o¨ ¾ b/%.ûâÀò6î¥U¡:ÖO¬ÌÆ>RøÏ«è>.HX!/€œªp ¦l±˜Aã–Aý† rh‘\CH~¢éjìøn…m‘vÇVá"ÞÓ7u¦^­ÎdêwÐnèÞRkñ¨¡Ïù€)¿³ê»™¡!m-O“NÌg©¤~µ´Õw:ÐÑs=±e8½:™Û×^À"N%ýéFM½ÏpxégÅ](Ïñ¾ 03Ä8tÚR£Î3„qˆL÷£@‹VN[âô¡DcVÏžJ¬LVÕ¤/ëqeÐfuŽÜšIøº.åâ!ÉFŠï5‡Í¼—ÿ0œ“Ù~Ûî[«Ç¬x§›ÐÐͽ1¢õâ1V¥G×ò ±IOøžîv±ÜèWß+ ÆÈ{MÚÈ—”Ú–Ñ1¾LçO¸¶ZO<ô ÃA›'ÎFب:ÿvaM£7´Pô•Û^¦¹æ þð4ÒO]^_>ËUš»á¯¼ûÄ´/Ñv†í”s#ƒgaviotatb-0.4.orig/gtb/gtb4/kbk.gtb.cp40000644000175000017500000000374511536321052016721 0ustar varunvarun@€3€3<<¤Œå]@€!QàêÞ§É+S6‡[†ìãé‡ñvJZW+Ão”^fxštÔRîïÔ†YLªÄ âôWÎG‡D»q)hìÖ;wzÀK7^ÉR×VÆ]-ÉÝèg¼ºÌðÉZ¡Ö¯Ù†z„Ö‚ëúPä~¨—ûÙžø’$ÜâÚt0$&‡âîlèİ;B.ån±‘9ê«Ù7x€·Ö¾øŸÂËuÞóý,°4K°o çQ!zXݦõÔŽ›,U¨^Ê•ŠœRG?›ˆêß-ѾÖ$D˜†:XËÁÆ âFÍÁ×ÜÉôGŠ@Q*o¤áhT»v2Áqˆ ȨÁ3ž½|Á´Ùm”WO[Ž÷ÌA”N*kûÆd)Ÿ³m€N4à4²ÂôÅlßΕzÊm)+íˆ_èê{ŒDÇg|cÓ^šh‚Ý#«¢tÝ£_ÛÀ^Ñùûü³æÏƒF@Ÿú´>Xœ¶½ˆ(5Hb­_aØ›@?‡Eô:R¡ÛÌâÌ >B½†fUœ ‘#U1˜b¢^>¯¹\¤ ™¨MëÉD(¢Á-œjÒ^Y–©((‘dL-À;ZDé3[4Á‚^}¶#Ú]6ƒÚÜË‘òœë)–éì »q;s98A&ŒtϾ ÃaòÂÊ:vE+òÏCtÅ’u³†4­>Jbíà¿ýÜŒejô¾×O DÿsßTßkëÊ‘5wƒ,9V­wäT×§øÞÉßÎÝ—x͸BØ ]@€!R!Þi'ÌB8ã±Itk#†ggþ…G>Êob-Iòñ²) ý„ïh”s-IX¤?m…ö¨ùd«žƒ4³ALiX&Ë2:®I8Býì/X²°}ÝWÉà ‚ÇhÄJûºnkLÁa‰êyíø0˜°|Uí —Å0/å΋W™…åØsq=ºŸ–0A[W„_]éæ·I+l<¹ÀFâ3>Æ3hÛS×a=Ä·éÄÈHð¥ÀF%ŸMŽë8ôšðñ¿¸>uf3ɤdWD6ëœ×pHKßZË›2ÿ¡†äà¡ÃˆÃ]b@½ïZÿž]—-H]¬Ú;+֞Ĝ£Wï¦çW‘õôâãˆ7 É(Qk˜ø0ñØQc;ÕÈ‹,´~ ±òVÙW phºyˆ¶÷œ¥LöÛW.;Öƒ ÿ'æü‚$jCæï<6 MÍv²Z’Ìð±Ëà¿á+tÌ}Û@€ éø¸Ý¡2š¹ŸFÒ®¼Ô]€3k7µô¶:†)´-½¦«„ód>OûðIÛÒ˜ŒöLŸÃ]_¸ówùÂHs)Kˆ¨9ÁŠÝ(ìŠàï˜:>U§¥#Qï†ýÜ)~çÅžÇJí´ŽaÝ8’~}ðZC¼‰ÝÙЕƵD¥N8X©ÅË¥²övÌ.§>+σBS`‚w`éçöjëÇ^Í^;ÙË%»|•^.Æ 0,a¶×k®§­\Ès;®?ºÔQ@q,(ýÝA/¿3Z#ýñ‚[&g¡Û©`ì6žÿ*Eø¯+å ÄÝ™ÁñJ53L9Ò½뢋F>gíkvÇDÿ—Yš ˆŠÎ¬ÛÍÐŽö¢ÃœÄ¢Ñáu7ÐçÀ29˜ý–îš×v4)´æ û©Qî,xn…ν5ÉwwÇ&£²¼H®¤–Ö“­ƒã~ÆL>=Eékáñ½1ºzçšØ5¼¬Ë޽C'¬õTâ–xÁ;(†-¿Ü‡É"t6ÍÝsZi6ó‘¹Ë1yÇ”IË£#VŸºš9€¸¯ŽïRcô“+Ó—LI™[å•( ÜÏoJ8–ïºxù˜îÊc`>]gaviotatb-0.4.orig/license.txt0000644000175000017500000001125511536321052015531 0ustar varunvarun Gaviota Tablebases Probing Code API Copyright (c) 2010 Miguel A. Ballicora ----------------------------------------------------------------------------- LICENSES ----------------------------------------------------------------------------- This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------------- This Software also contain the following compression libraries: ----------------------------------------------------------------------------- LZMA: 2009-02-02 : Igor Pavlov : Public domain ----------------------------------------------------------------------------- ZLIB License /* zlib.h -- interface of the 'zlib' general purpose compression library version 1.2.3, July 18th, 2005 Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Jean-loup Gailly Mark Adler jloup@gzip.org madler@alumni.caltech.edu The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). */ ---------------------------------------------------------------------------- LZF: Copyright (c) 2000-2007 Marc Alexander Lehmann Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH- ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Alternatively, the following files carry an additional notice that explicitly allows relicensing under the GPLv2: lzf.c lzf.h lzfP.h lzf_c.c lzf_d.c ----------------------------------------------------------------------------- gaviotatb-0.4.orig/version.h0000644000175000017500000000002711536321052015177 0ustar varunvarun#define VERSION "0.4" gaviotatb-0.4.orig/gtb-types.h0000644000175000017500000000070011536321052015426 0ustar varunvarun#if !defined(H_GTBTYPES) #define H_GTBTYPES #ifdef __cplusplus extern "C" { #endif /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ #include "sysport.h" typedef uint32_t sq_t; typedef uint8_t pc_t; typedef uint32_t mv_t; typedef int32_t tbkey_t; typedef uint16_t dtm_t; typedef int32_t index_t; #define MAXINDEX_T ((1ul << 31)-1ul) /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ #ifdef __cplusplus } #endif #endif gaviotatb-0.4.orig/gtb-att.c0000644000175000017500000002033411536321052015052 0ustar varunvarun/* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include #include #include "gtb-att.h" #if 0 #include "mtypes.h" #include "bool_t.h" #include "maindef.h" #else /* mtypes.h */ typedef unsigned int SQUARE; typedef unsigned char SQ_CONTENT; /* bool_t.h */ #if !defined(bool_t) typedef int bool_t; #endif #if !defined(TRUE) #define TRUE ((bool_t)1) #endif #if !defined(FALSE) #define FALSE ((bool_t)0) #endif /* maindef.h */ #define NOPIECE 0u #define PAWN 1u #define KNIGHT 2u #define BISHOP 3u #define ROOK 4u #define QUEEN 5u #define KING 6u #define PIECE_MASK (KING|PAWN|KNIGHT|BISHOP|ROOK|QUEEN) /*Whites*/ #define wK (KING | WHITES) #define wP (PAWN | WHITES) #define wN (KNIGHT | WHITES) #define wB (BISHOP | WHITES) #define wR (ROOK | WHITES) #define wQ (QUEEN | WHITES) /*Blacks*/ #define bK (KING | BLACKS) #define bP (PAWN | BLACKS) #define bN (KNIGHT | BLACKS) #define bB (BISHOP | BLACKS) #define bR (ROOK | BLACKS) #define bQ (QUEEN | BLACKS) /*Bits that define color */ #define WHITES (1u<<6) #define BLACKS (1u<<7) /*squares*/ enum SQUARES { A1,B1,C1,D1,E1,F1,G1,H1, A2,B2,C2,D2,E2,F2,G2,H2, A3,B3,C3,D3,E3,F3,G3,H3, A4,B4,C4,D4,E4,F4,G4,H4, A5,B5,C5,D5,E5,F5,G5,H5, A6,B6,C6,D6,E6,F6,G6,H6, A7,B7,C7,D7,E7,F7,G7,H7, A8,B8,C8,D8,E8,F8,G8,H8, NOSQUARE, ERRSQUARE = 128 }; #endif /*----------------------------------------------------------------------*/ #ifndef NDEBUG #define NDEBUG #endif #ifdef DEBUG #undef NDEBUG #endif #include "assert.h" /*----------------------------------------------------------------------*/ /* global variables */ uint64_t Reach [7] [64]; /* static variables */ static unsigned char attmap [64] [64]; static unsigned int attmsk [256]; /* static functions */ static unsigned int mapx88 (unsigned int x); /* macros */ #define BB_ISBITON(bb,bit) (0 != (((bb)>>(bit)) & U64(1))) #define map88(x) ( (x) + ((x)&070) ) #define unmap88(x) ( ( (x) + ((x)& 07) ) >> 1 ) /*----------------------------------------------------------------------*/ static unsigned int mapx88 (unsigned int x) { return ((x & 070) << 1) | (x & 07); } void attack_maps_init(void) { int i; unsigned int m, from, to; unsigned int to88, fr88; int diff; uint64_t rook, bishop, queen, knight, king; if (!reach_was_initialized()) { printf ("Wrong initialization order of data\n"); exit(EXIT_FAILURE); } for (i = 0; i < 256; ++i) { attmsk [i] = 0; } attmsk[wP] = 1 << 0; attmsk[bP] = 1 << 1; attmsk[KNIGHT] = 1 << 2; attmsk[wN] = 1 << 2; attmsk[bN] = 1 << 2; attmsk[BISHOP] = 1 << 3; attmsk[wB] = 1 << 3; attmsk[bB] = 1 << 3; attmsk[ROOK ] = 1 << 4; attmsk[wR] = 1 << 4; attmsk[bR] = 1 << 4; attmsk[QUEEN ] = 1 << 5; attmsk[wQ] = 1 << 5; attmsk[bQ] = 1 << 5; attmsk[KING ] = 1 << 6; attmsk[wK] = 1 << 6; attmsk[bK] = 1 << 6; for (to = 0; to < 64; ++to) { for (from = 0; from < 64; ++from) { m = 0; rook = Reach [ROOK] [from]; bishop = Reach [BISHOP] [from]; queen = Reach [QUEEN] [from]; knight = Reach [KNIGHT] [from]; king = Reach [KING] [from]; if (BB_ISBITON (knight, to)) { m |= attmsk[wN]; } if (BB_ISBITON (king, to)) { m |= attmsk[wK]; } if (BB_ISBITON (rook, to)) { m |= attmsk[wR]; } if (BB_ISBITON (bishop, to)) { m |= attmsk[wB]; } if (BB_ISBITON (queen, to)) { m |= attmsk[wQ]; } to88 = mapx88(to); fr88 = mapx88(from); diff = (int)to88 - (int)fr88; if (diff == 17 || diff == 15) { m |= attmsk[wP]; } if (diff == -17 || diff == -15) { m |= attmsk[bP]; } attmap [to] [from] = (unsigned char) m; } } } bool_t possible_attack(unsigned int from, unsigned int to, unsigned int piece) { assert (piece < 256); assert (from < 64 && to < 64); assert (reach_was_initialized()); assert (attmsk [piece] != 0 || 0==fprintf(stderr, "PIECE=%d\n",piece) ); /* means piece has been considered */ return 0 != (attmap [to] [from] & attmsk [piece]); } /* | | REACH ROUTINES | \*----------------------------------------------*/ enum Key {REACH_INITIALIZED_KEY = 0x1313}; static int reach_initialized_key = 0; bool_t reach_was_initialized (void) { return reach_initialized_key == REACH_INITIALIZED_KEY; } void reach_init (void) { SQUARE buflist[64+1], *list; SQ_CONTENT pc; int stp_a [] = {15, -15 }; int stp_b [] = {17, -17 }; int STEP_A, STEP_B; unsigned int side; unsigned int index; SQUARE sq, us; int s; for (pc = KNIGHT; pc < (KING+1); pc++) { for (sq = 0; sq < 64; sq++) { uint64_t bb = U64(0x0); tolist_rev (U64(0x0), pc, sq, buflist); for (list = buflist; *list != NOSQUARE; list++) { bb |= U64(1) << *list; } Reach [pc] [sq] = bb; } } for (side = 0; side < 2; side++) { index = 1u ^ side; STEP_A = stp_a[side]; STEP_B = stp_b[side]; for (sq = 0; sq < 64; sq++) { int sq88 = (int)map88(sq); uint64_t bb = U64(0x0); list = buflist; s = sq88 + STEP_A; if (0 == (s & 0x88)) { us = (SQUARE)unmap88(s); *list++ = us; } s = sq88 + STEP_B; if (0 == (s & 0x88)) { us = (SQUARE)unmap88(s); *list++ = us; } *list = NOSQUARE; for (list = buflist; *list != NOSQUARE; list++) { bb |= U64(1) << *list; } Reach [index] [sq] = bb; } } reach_initialized_key = REACH_INITIALIZED_KEY; } /*--------------------------------------------------------------------------------*/ static const int bstep[] = { 17, 15, -15, -17, 0}; static const int rstep[] = { 1, 16, -1, -16, 0}; static const int nstep[] = { 18, 33, 31, 14, -18, -33, -31, -14, 0}; static const int kstep[] = { 1, 17, 16, 15, -1, -17, -16, -15, 0}; static const int *psteparr[] = {NULL, NULL, /* NOPIECE & PAWN */ nstep, bstep, rstep, kstep, kstep /* same for Q & K*/ }; static const int pslider[] = {FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE }; void tolist_rev (uint64_t occ, SQ_CONTENT input_piece, SQUARE sq, SQUARE *list) /* reversible moves from pieces. Output is a list of squares */ { int direction; unsigned int pc; int s; int from; int step; const int *steparr; bool_t slider; SQUARE us; assert (sq < 64); /* i.e. no pawn allowed as input */ assert (input_piece == KNIGHT || input_piece == BISHOP || input_piece == ROOK || input_piece == QUEEN || input_piece == KING); from = (int)map88(sq); pc = input_piece & (PAWN|KNIGHT|BISHOP|ROOK|QUEEN|KING); steparr = psteparr [pc]; slider = pslider [pc]; if (slider) { for (direction = 0; steparr[direction] != 0; direction++) { step = steparr[direction]; s = from + step; while (0 == (s & 0x88)) { us = (SQUARE)unmap88(s); if (0 != (0x1u & (unsigned int)(occ >> us))) break; *list++ = us; s += step; } } } else { for (direction = 0; steparr[direction] != 0; direction++) { step = steparr[direction]; s = from + step; if (0 == (s & 0x88)) { us = (SQUARE)unmap88(s); if (0 == (0x1u & (unsigned int)(occ >> us))) { *list++ = us; } } } } *list = NOSQUARE; return; } gaviotatb-0.4.orig/gtb-dec.h0000644000175000017500000000333411536321052015023 0ustar varunvarun/* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* gtb-dec.h */ #if !defined(H_DECOD) #define H_DECOD /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ #include enum Compression {CP0, CP1, CP2, CP3, CP4, CP5, CP6, CP7, CP8, CP9, CP_END}; extern void set_decoding_scheme(int x); extern int decoding_scheme(void); extern int decode (size_t z, unsigned char *bz, size_t n, unsigned char *bp); /* This function should be included with the TB compressor extern int encode (size_t n, unsigned char *bp, size_t *z, unsigned char *bz); */ /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ #endif gaviotatb-0.4.orig/compile.sh0000755000175000017500000000151011536321052015326 0ustar varunvarun#!/bin/sh gcc -I sysport/ -I compression/ -I compression/liblzf/ -I compression/zlib/ -I compression/lzma/ -I compression/huffman/ -D Z_PREFIX -D NDEBUG -lpthread -lm -Wall -Wextra -O2 -o tbprobe tbprobe.c gtb-probe.c gtb-dec.c gtb-att.c sysport/sysport.c compression/wrap.c compression/huffman/hzip.c compression/lzma/LzmaEnc.c compression/lzma/LzmaDec.c compression/lzma/Alloc.c compression/lzma/LzFind.c compression/lzma/Lzma86Enc.c compression/lzma/Lzma86Dec.c compression/lzma/Bra86.c compression/zlib/zcompress.c compression/zlib/uncompr.c compression/zlib/inflate.c compression/zlib/deflate.c compression/zlib/adler32.c compression/zlib/crc32.c compression/zlib/infback.c compression/zlib/inffast.c compression/zlib/inftrees.c compression/zlib/trees.c compression/zlib/zutil.c compression/liblzf/lzf_c.c compression/liblzf/lzf_d.c gaviotatb-0.4.orig/gtb-att.h0000644000175000017500000000326611536321052015064 0ustar varunvarun/* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #if !defined(H_PROBATT) #define H_PROBATT /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ #include "sysport.h" extern uint64_t Reach [7] [64]; extern void attack_maps_init (void); extern int /*bool*/ possible_attack(unsigned int from, unsigned int to, unsigned int piece); extern void reach_init (void); extern int /*bool*/ reach_was_initialized (void); extern void tolist_rev (uint64_t occ, unsigned char input_piece, unsigned int sq, unsigned int *list); /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ #endif gaviotatb-0.4.orig/Rakefile.rb0000644000175000017500000003125411536321052015416 0ustar varunvarunrequire 'date' $target = 'tbprobe' $sources = 'sources.txt' #switches_gcc = '-lpthread -lm -Wwrite-strings -Wshadow -Wconversion -W -Wall -Wextra -Wcast-qual -ansi -pedantic -O2 ' $switches_gcc = '-lpthread -lm -Wwrite-strings -Wshadow -Wconversion -W -Wall -Wextra -O2 ' $switches_icc = '-lpthread -Wall -O2 ' #-wd981,593,2259 $include = [] $include << 'sysport/' $include << 'compression/' $include << 'compression/liblzf/' $include << 'compression/zlib/' $include << 'compression/lzma/' $include << 'compression/huffman/' $dswitches = [] $dswitches << 'Z_PREFIX' $dswitches << 'NDEBUG' $profile_data_folder = '/media/bigdisk/profdata/' $benchfile = 'pgo-medium.txt' $sync_line = '' $windows_destiny = '/home/miguel/Desktop/tbprobe-windows' $version_sensitive = 'tbprobe.o' #------------------------------------------------------------------------------------ $errors_comp = 'errors_comp.txt' $errors_link = 'errors_link.txt' def build_clist filelist sl = [] File.open filelist, "r" do |f| lines = f.readlines lines.each do |line| if line != nil line = line.chomp.strip if line != '' firstchar = line[0,1] if firstchar != ';' sl << line end end end end end return sl end def build_c c elements = [] elements << $compiler elements << series('-I', $include) elements << series('-D', $dswitches) elements << $switches elements << '-c' elements << c line = glue(elements) end def series s, list build = '' list.each do |x| build = build+' '+s+' '+x end build = build.strip end def glue list build = '' list.each do |x| build = build+' '+x end build = build.strip end #------------------------------------------------------------------------------------ def sources_line filelist sources = '' File.open filelist, "r" do |f| lines = f.readlines lines.each do |line| if line != nil line = line.chomp.strip firstchar = line[0,1] if firstchar != ';' sources += line + ' ' end end end end sources = sources.strip return sources end def rebuild_line elements = [] elements << $compiler elements << series('-I', $include) elements << series('-D', $dswitches) elements << $switches elements << '-o' elements << $target elements << sources_line($sources) line = glue(elements) end def go_rebuild s tf = 'temporary-output.txt' puts "compiling " + $target + "...\n" # actual compilation ok = system(s) if ok # get version system ('./'+ $target +' -v > ' + tf) out = `cat temporary-output.txt` puts out cleanfile(tf) puts "done\n" else puts 'Compiling errors.' end end def cleanfile x if File.exist?(x) system ('rm ' + x) end end def cleanlist filelist filelist.each do |f| cleanfile(f) end end def cleanpattern p x = Dir[p] cleanlist(x) end #--------------# # name target # #--------------# task :name do File.open "progname.h", 'w' do |f| f.write '#define PROGRAM_NAME "'+ $target +'"'+"\n" end end #--------------# # sync # #--------------# task :sync do if $sync_line != '' system($sync_line) end end #--------------# # Clean target # #--------------# task :remove_h_sensitive do if (!FileUtils.uptodate?($version_sensitive, 'version.h')) cleanfile($version_sensitive) end end task :clean_target => [:remove_h_sensitive] do cleanfile($target) end #----------------# # Clean pgo data # #----------------# task :clean_pgodata do cleanpattern($profile_data_folder+'*.dyn') cleanpattern($profile_data_folder+'*.dpi') cleanpattern($profile_data_folder+'*.dpi.lock') end #--------------# # DEFAULT TASK # #--------------# task :default => :gcc2 do puts " " end #--------------# # GCC TASK # #--------------# task :gcc => [:clean_target, :sync, :name] do $compiler = 'gcc' $switches = $switches_gcc go_rebuild(rebuild_line) end #--------------# # GCC TASK # #--------------# task :gdb => [:clean_target, :sync, :name] do $compiler = 'gcc' $switches = '-g ' + $switches_gcc go_rebuild(rebuild_line) end #--------------# # GCC TASK # #--------------# task :debug => [:clean_target, :sync, :name] do $compiler = 'gcc' $switches = '-D DEBUG ' + $switches_gcc go_rebuild(rebuild_line) end #--------------# # INTEL TASK # #--------------# task :intel => [:clean_target, :sync, :name] do $compiler = 'icc' $switches = $switches_icc go_rebuild(rebuild_line) end #--------------# # PGO BEGIN # #--------------# task :pgo_begin => [:clean_target, :clean_pgodata, :sync, :name] do $compiler = 'icc' $switches = '-I lzma -D GCCLINUX -lpthread -Wall -wd981,593,2259 -O2 ' $switches += '-prof-gen -prof-dir '+$profile_data_folder errorfile = 'icc-err-begin.txt' cleanfile(errorfile) li = rebuild_line+' 2> '+errorfile go_rebuild(li) system = ('cat '+errorfile) end #------------# # PGO TEST # #------------# task :test => [:pgo_begin] do system ('./'+$target+' < '+$benchfile) end #------------# # PGO END # #------------# task :pgo_end => [:test, :name] do $compiler = 'icc' $switches = '-I lzma -D GCCLINUX -lpthread -Wall -wd981,593,2259 -O2 ' $switches += '-prof-use -ipo -prof-dir '+$profile_data_folder errorfile = 'icc-err-ending.txt' cleanfile(errorfile) li = rebuild_line+' 2> '+errorfile go_rebuild(li) system = ('cat '+errorfile) end task :pgo => :pgo_end #--------------# # GCC SEE # #--------------# task :see do $compiler = 'gcc' $switches = $switches_gcc puts rebuild_line end ################################################################################### require 'fileutils.rb' def to_obj x newname = File.basename(x, File.extname(x)) + '.o' arr = File.split(x.strip) t = File.join(arr[0],newname) t end def build_clist filelist sl = [] File.open filelist, "r" do |f| lines = f.readlines lines.each do |line| if line != nil line = line.chomp.strip if line != '' firstchar = line[0,1] if firstchar != ';' sl << line end end end end end return sl end def build_olist clist olist = [] clist.each do |x| olist << to_obj(x) end return olist end def build_objects compiler, switches, clist ok = 1 == 1; clist.each do |src| unless FileUtils.uptodate?(to_obj(src), src) print src + ': ' ok = ok && compile_o(compiler,switches,src) if (ok) puts '-> ' + to_obj(src) else puts '=> ERROR' end if (!ok) break end end end return ok end def compile_line compiler, switches, c elements = [] elements << compiler elements << series('-I', $include) elements << series('-D', $dswitches) elements << switches elements << '-c' elements << '-o' elements << to_obj(c) elements << c line = glue(elements) end def link_line compiler, switches, target, olist elements = [] elements << compiler #elements << series('-I', $include) #elements << series('-D', $dswitches) elements << switches elements << '-o' elements << target elements << glue(olist) line = glue(elements) end def compile_o compiler,switches, src y = compile_line(compiler,switches,src) system(y + ' 2> ' + $errors_comp) end def link compiler,switches,target,olist y = link_line(compiler,switches,target,olist) system(y + ' 2> ' + $errors_link) end def clean_objects clist clist.each do |src| o = to_obj(src) cleanfile(o) end end def errors2screen if File.exist?('errors_comp.txt') puts `cat errors_comp.txt` end if File.exist?('errors_link.txt') puts `cat errors_link.txt` end end #--------------# # gcc2 # #--------------# task :gcc2 => [:clean_target, :sync, :name] do $compiler = 'gcc' $switches = $switches_gcc c_array = build_clist($sources) o_array = build_olist(c_array) ok = build_objects($compiler,$switches, c_array) ok = ok && link($compiler,$switches, $target, o_array) errors2screen if ok # get version tf = 'temporary-output.txt' system ('./'+ $target +' -v > ' + tf) out = `cat temporary-output.txt` puts out cleanfile(tf) puts "done!\n" else puts '*** Compiling errors ***' end end #--------------# # CLEAN # #--------------# task :clean => [:clean_target] do clean_objects(build_clist($sources)) end task :clobber => [:clean] do list = Dir['*~'] list.each do |src| puts(src) cleanfile(src) end list = Dir['errors_*'] list.each do |src| puts(src) cleanfile(src) end end #--------------# # DEPLOY # #--------------# def copyline dpath, name el = [] el << 'cp' el << name el << File.join(dpath,name) line = glue(el) return line end def uncopyline dpath, name el = [] el << 'cp' el << File.join(dpath,name) el << name line = glue(el) return line end def cmpline dpath, name el = [] el << 'cmp' el << name el << File.join(dpath,name) line = glue(el) return line end def diffline dpath, name el = [] el << 'diff --ignore-space-change --ignore-blank-lines --ignore-all-space --brief' el << name el << File.join(dpath,name) line = glue(el) return line end def xxdiffline dpath, x el = [] el << 'xxdiff --ignore-space-change --ignore-blank-lines --ignore-all-space --merge' el << x el << File.join(dpath,x) line = glue(el) end def uncopy_if_notupdated dpath, x ok = system(cmpline(dpath,x)) if (!ok && !FileUtils.uptodate?(x, File.join(dpath,x))) system uncopyline(dpath,x) end end def multichomp x y = x z = x.chomp while z != y do y = z z = z.chomp end z end $home_dir = '/home/miguel' $current_dir = '/media/bigdisk/gaviotadev/' def valid_destination x ok = x != nil && x != '' && x != './' && x != $home_dir && x != ($home_dir+'/') ok end def currdir `pwd`.chomp end task :get_homedir do $home_dir = `echo $HOME`.chomp end task :get_currentdir do $current_dir = `pwd`.chomp + '/' end def select_folder default if (File.exist?(default)) system 'zenity --file-selection --directory --filename='+default+'> zenityanswer.txt' else owndir = currdir + '/' system 'zenity --file-selection --directory --filename='+owndir+'> zenityanswer.txt' end folder =`cat zenityanswer.txt` folder = multichomp(folder) default = folder default end task :select_deploy_destiny => [:get_homedir] do $windows_destiny = select_folder($windows_destiny) end task :deploy => [:gcc2, :select_deploy_destiny, :get_homedir, :get_currentdir] do if (valid_destination($windows_destiny)) destiny = $windows_destiny own_location = $current_dir rs = [] rs << 'rsync' rs << '-vr' rs << '-f"- .git"' rs << '-f"+ */"' rs << '-f"- *"' rs << own_location rs << destiny system glue(rs) c_array = build_clist($sources) c_array.each do |x| system copyline(destiny,x) end h_array = Dir['*.h'] h_array.each do |z| system copyline(destiny,z) end i_array = $include i_array.each do |x| pattern = File.join(x,'*.h') h_array = Dir[pattern] h_array.each do |z| system copyline(destiny,z) end end puts 'Deployed project to: '+destiny else if ($windows_destiny == nil || $windows_destiny.strip == '') puts 'Cancelled deployment' else puts 'Cancelled deployment to: '+$windows_destiny end end end task :inploy => [:select_deploy_destiny, :get_homedir, :get_currentdir] do destiny = $windows_destiny c_array = build_clist($sources) c_array.each do |x| uncopy_if_notupdated(destiny,x) end h_array = Dir['*.h'] h_array.each do |z| uncopy_if_notupdated(destiny,z) end i_array = $include i_array.each do |x| pattern = File.join(x,'*.h') h_array = Dir[pattern] h_array.each do |z| uncopy_if_notupdated(destiny,z) end end puts 'In-ployed project from: '+destiny end #--------------# # COMPARE # #--------------# def checkdiff dpath,z if (system(diffline(dpath,z))) puts '--------------------------------> '+z+': is ok' else system(xxdiffline(dpath,z)) end end task :compare => [:select_deploy_destiny, :get_homedir, :get_currentdir] do destiny = $windows_destiny c_array = build_clist($sources) c_array.each do |z| checkdiff(destiny,z) end h_array = Dir['*.h'] h_array.each do |z| checkdiff(destiny,z) end i_array = $include i_array.each do |x| pattern = File.join(x,'*.h') h_array = Dir[pattern] h_array.each do |z| checkdiff(destiny,z) end end puts 'In-ployed project from: '+destiny end #--------------# # SPLINT # #--------------# task :splint do system ('rm splint.txt') c_array = build_clist($sources) c_array.each do |s| system './splintcheck.sh '+s end end #--------------# # TO WEBFOLDER # #--------------# $webfolder = '' task :select_webfolder => [:get_homedir] do $webfolder = select_folder($webfolder) end task :to_web => [:intel, :get_homedir, :select_webfolder] do ok = false if (valid_destination($webfolder)) ok = system copyline($webfolder, $target) end if (ok) puts 'succesful copy of '+ $target else puts 'failed to copy '+ $target end end #--------------# # DUMMY TASK # #--------------# task :dummy do puts "dummy test\n" end gaviotatb-0.4.orig/sysport/0000755000175000017500000000000011536321052015065 5ustar varunvarungaviotatb-0.4.orig/sysport/sysport.c0000644000175000017500000001573511536321052016767 0ustar varunvarun#include #include #include #include "sysport.h" /**** CLOCK *************************************************************************/ #if defined(USECLOCK) #include extern myclock_t myclock(void) {return (myclock_t)clock();} extern myclock_t ticks_per_sec (void) {return CLOCKS_PER_SEC;} #elif defined(USEWINCLOCK) #define WIN32_LEAN_AND_MEAN #include extern myclock_t myclock(void) {return (myclock_t)GetTickCount();} extern myclock_t ticks_per_sec (void) {return 1000;} #elif defined(USELINCLOCK) #include extern myclock_t myclock(void) { struct timeval tv; gettimeofday(&tv, NULL); return (myclock_t)tv.tv_sec * 1000 + (myclock_t)tv.tv_usec/1000; } extern myclock_t ticks_per_sec (void) {return 1000;} #else #error No Clock specified in compilation #endif /**** PATH NAMES *************************************************************************/ #if defined(GCCLINUX) extern int isfoldersep (int x) { return x == '/';} #elif defined(MVSC) extern int isfoldersep (int x) { return x == '\\' || x == ':';} #else extern int isfoldersep (int x) { return x == '/' || x == '\\' || x == ':';} #endif /**** Maximum Files Open *****************************************************************/ #if defined(GCCLINUX) #include #if 0 struct rlimit { rlim_t rlim_cur; /* Soft limit */ rlim_t rlim_max; /* Hard limit (ceiling for rlim_cur) */ }; #endif extern int mysys_fopen_max (void) { int ok; struct rlimit rl; ok = 0 == getrlimit(RLIMIT_NOFILE, &rl); if (ok) return (int)rl.rlim_cur; else return FOPEN_MAX; } #elif defined(MVSC) extern int mysys_fopen_max (void) { return FOPEN_MAX;} #else extern int mysys_fopen_max (void) { return FOPEN_MAX;} #endif #if defined(MULTI_THREADED_INTERFACE) /**** THREADS ****************************************************************************/ /* | | POSIX | \*-------------------------*/ #if defined (POSIX_THREADS) #include extern int /* boolean */ mythread_create (/*@out@*/ mythread_t *thread, routine_t start_routine, void *arg, /*@out@*/ int *ret_error) { const pthread_attr_t *attr = NULL; /* default attributes */ int ret; ret = pthread_create (thread, attr, start_routine, arg); *ret_error = ret; return 0 == ret; } extern int /* boolean */ mythread_join (mythread_t thread) { void *p; /* value return from pthread_exit, not used */ int ret = pthread_join (thread, &p); return 0 == ret; } extern void mythread_exit (void) { pthread_exit (NULL); } extern const char * mythread_create_error (int err) { const char *s; switch (err) { case 0 : s = "Success"; break; case EAGAIN: s = "EAGAIN" ; break; case EINVAL: s = "EINVAL" ; break; case EPERM : s = "EPERM" ; break; default : s = "Unknown error"; break; } return s; } extern void mythread_mutex_init (mythread_mutex_t *m) { pthread_mutex_init (m,NULL);} extern void mythread_mutex_destroy (mythread_mutex_t *m) { pthread_mutex_destroy(m) ;} extern void mythread_mutex_lock (mythread_mutex_t *m) { pthread_mutex_lock (m) ;} extern void mythread_mutex_unlock (mythread_mutex_t *m) { pthread_mutex_unlock (m) ;} #ifdef SPINLOCKS extern void mythread_spinx_init (mythread_spinx_t *m) { pthread_spin_init (m,0);} /**/ extern void mythread_spinx_destroy (mythread_spinx_t *m) { pthread_spin_destroy(m) ;} /**/ extern void mythread_spinx_lock (mythread_spinx_t *m) { pthread_spin_lock (m) ;} /**/ extern void mythread_spinx_unlock (mythread_spinx_t *m) { pthread_spin_unlock (m) ;} /**/ #else extern void mythread_spinx_init (mythread_spinx_t *m) { pthread_mutex_init (m,NULL);} /**/ extern void mythread_spinx_destroy (mythread_spinx_t *m) { pthread_mutex_destroy(m) ;} /**/ extern void mythread_spinx_lock (mythread_spinx_t *m) { pthread_mutex_lock (m) ;} /**/ extern void mythread_spinx_unlock (mythread_spinx_t *m) { pthread_mutex_unlock (m) ;} /**/ #endif /* semaphores */ extern int /* boolean */ mysem_init (mysem_t *sem, unsigned int value) { return -1 != sem_init (sem, 0 /*not shared with processes*/, value);} extern int /* boolean */ mysem_wait (mysem_t *sem) { return 0 == sem_wait (sem);} extern int /* boolean */ mysem_post (mysem_t *sem) { return 0 == sem_post (sem);} extern int /* boolean */ mysem_destroy (mysem_t *sem) { return 0 == sem_destroy (sem);} /* | | NT_THREADS | \*-------------------------*/ #elif defined(NT_THREADS) #define WIN32_LEAN_AND_MEAN #include #include extern int /* boolean */ mythread_create (/*@out@*/ mythread_t *thread, routine_t start_routine, void *arg, /*@out@*/ int *ret_error) { static unsigned int thread_id; mythread_t t; int /* boolean */ is_ok; t = (mythread_t) _beginthreadex (NULL, 0, start_routine, arg, 0, &thread_id ); is_ok = (t != 0); *thread = t; *ret_error = is_ok? 0: errno; return is_ok; } extern int /* boolean */ mythread_join (mythread_t thread) { unsigned long int ret; ret = WaitForSingleObject (thread, INFINITE); CloseHandle(thread); return ret != WAIT_FAILED; } extern void mythread_exit (void) { return; } extern const char * mythread_create_error (int err) { const char *s; switch (err) { case 0 : s = "Success"; break; case EAGAIN: s = "EAGAIN" ; break; case EINVAL: s = "EINVAL" ; break; case EPERM : s = "EPERM" ; break; default : s = "Unknown error"; break; } return s; } extern void mythread_mutex_init (mythread_mutex_t *m) { *m = CreateMutex(0, FALSE, 0) ;} extern void mythread_mutex_destroy (mythread_mutex_t *m) { CloseHandle(*m) ;} extern void mythread_mutex_lock (mythread_mutex_t *m) { WaitForSingleObject(*m, INFINITE) ;} extern void mythread_mutex_unlock (mythread_mutex_t *m) { ReleaseMutex(*m) ;} extern void mythread_spinx_init (mythread_spinx_t *m) { InitializeCriticalSection(m) ;} /**/ extern void mythread_spinx_destroy (mythread_spinx_t *m) { DeleteCriticalSection(m) ;} /**/ extern void mythread_spinx_lock (mythread_spinx_t *m) { EnterCriticalSection (m) ;} /**/ extern void mythread_spinx_unlock (mythread_spinx_t *m) { LeaveCriticalSection (m) ;} /**/ /* semaphores */ extern int /* boolean */ mysem_init (mysem_t *sem, unsigned int value) { mysem_t h = CreateSemaphore( NULL, /* cannot be inherited */ value, /* Initial Count */ 256, /* Maximum Count */ NULL /* Name --> NULL, not shared among threads */ ); if (h != NULL) *sem = h; return h != NULL; } extern int /* boolean */ mysem_wait (mysem_t *sem) { HANDLE h = *sem; return WAIT_FAILED != WaitForSingleObject (h, INFINITE); } extern int /* boolean */ mysem_post (mysem_t *sem) { HANDLE h = *sem; return 0 != ReleaseSemaphore(h, 1, NULL); } extern int /* boolean */ mysem_destroy (mysem_t *sem) { return 0 != CloseHandle( *sem); } /**** THREADS ****************************************************************************/ #else #error Definition of threads not present #endif /* MULTI_THREADED_INTERFACE */ #endif gaviotatb-0.4.orig/sysport/sysport.h0000644000175000017500000001201311536321052016756 0ustar varunvarun#if !defined(H_SYSPOR) #define H_SYSPOR /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/ /* | Define | MONOTHREAD: if SMP functions are not going to be used nor linked with -lpthread | */ #ifdef _MSC_VER #include #else #include #endif #ifdef _MSC_VER #if !defined(MVSC) #define MVSC #endif #endif #if defined(__linux__) || defined(__GNUC__) #if !defined(GCCLINUX) #define GCCLINUX #endif #endif /* | | To allow multithreaded functions, MULTI_THREADED_INTERFACE should be defined | \*--------------------------------------------------------------------------------*/ #if defined(CYGWIN) #define USECLOCK #define MULTI_THREADED_INTERFACE #undef NT_THREADS #define POSIX_THREADS #define GCCLINUX_INTEGERS #elif defined(MINGW) #define USEWINCLOCK #define MULTI_THREADED_INTERFACE #define NT_THREADS #undef POSIX_THREADS #define GCCLINUX_INTEGERS #elif defined(GCCLINUX) #define USELINCLOCK #define MULTI_THREADED_INTERFACE #undef NT_THREADS #define POSIX_THREADS #define GCCLINUX_INTEGERS #elif defined(MVSC) #define USEWINCLOCK #define MULTI_THREADED_INTERFACE #define NT_THREADS #undef POSIX_THREADS #define MSWINDOWS_INTEGERS #else #error COMPILER NOT DEFINED #endif #if defined(MONOTHREAD) #undef MULTI_THREADED_INTERFACE #endif #if defined(GCCLINUX) #define U64(x) (x##ull) #elif defined(MVSC) #define U64(x) (x##ui64) #else #error OS not defined properly #endif #if defined(GCCLINUX) /* typedef unsigned long long int uint64_t; typedef long long int int64_t; typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; */ #include #elif defined(MVSC) typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned __int64 uint64_t; typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; typedef __int64 int64_t; #else #error OS not defined properly for 64 bit integers #endif /*----------------- PATH NAMES ------------------*/ #if defined(GCCLINUX) #define FOLDERSEP "/" #elif defined(MVSC) #define FOLDERSEP "\\" #else #define FOLDERSEP "/" #endif /* path names */ extern int isfoldersep (int x); /*----------------- FOPEN MAX ------------------*/ extern int mysys_fopen_max (void); /*------------ TIMER -------------*/ typedef int64_t myclock_t; extern myclock_t myclock(void); extern myclock_t ticks_per_sec (void); #define MYCLOCKS_PER_SEC (ticks_per_sec()) #define GET_TICK (myclock()) /*********************************************************************/ #if defined(MULTI_THREADED_INTERFACE) /*------------ THREADS -------------*/ #if defined (POSIX_THREADS) #include #include #define THREAD_CALL typedef void * thread_return_t; typedef pthread_t mythread_t; typedef thread_return_t (THREAD_CALL *routine_t) (void *); typedef pthread_mutex_t mythread_mutex_t; #ifdef SPINLOCKS typedef pthread_spinlock_t mythread_spinx_t; #else typedef pthread_mutex_t mythread_spinx_t; #endif typedef sem_t mysem_t; #elif defined(NT_THREADS) #define WIN32_LEAN_AND_MEAN #include #include #define THREAD_CALL __stdcall typedef unsigned thread_return_t; typedef HANDLE mythread_t; typedef thread_return_t (THREAD_CALL *routine_t) (void *); typedef HANDLE mythread_mutex_t; #define SPINLOCKS #ifdef SPINLOCKS typedef CRITICAL_SECTION mythread_spinx_t; #else typedef HANDLE mythread_spinx_t; #endif typedef HANDLE mysem_t; #else #error Definition of threads not present #endif extern int /*boolean*/ mythread_create (/*@out@*/ mythread_t *thread, routine_t start_routine, void *arg, /*@out@*/ int *ret_error); extern int /*boolean*/ mythread_join (mythread_t thread); extern void mythread_exit (void); extern const char * mythread_create_error (int err); extern void mythread_mutex_init (mythread_mutex_t *m); extern void mythread_mutex_destroy (mythread_mutex_t *m); extern void mythread_mutex_lock (mythread_mutex_t *m); extern void mythread_mutex_unlock (mythread_mutex_t *m); extern void mythread_spinx_init (mythread_spinx_t *m); /**/ extern void mythread_spinx_destroy (mythread_spinx_t *m); /**/ extern void mythread_spinx_lock (mythread_spinx_t *m); /**/ extern void mythread_spinx_unlock (mythread_spinx_t *m); /**/ /* semaphores*/ extern int /*boolean*/ mysem_init (mysem_t *sem, unsigned int value); extern int /*boolean*/ mysem_wait (mysem_t *sem); extern int /*boolean*/ mysem_post (mysem_t *sem); extern int /*boolean*/ mysem_destroy (mysem_t *sem); #endif #if defined(MINGW) #undef GCCLINUX #define MSVC #endif /* end MULTI_THREADED_INTERFACE*/ #endif /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*/ gaviotatb-0.4.orig/gtb-probe.c0000755000175000017500000054277011536321052015411 0ustar varunvarun/* This Software is distributed with the following X11 License, sometimes also known as MIT license. Copyright (c) 2010 Miguel A. Ballicora Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* NBBOTF will remove the internal bitbase on the fly */ #ifdef NBBOTF #ifdef WDL_PROBE #undef WDL_PROBE #endif #else #define WDL_PROBE #endif /*-- Intended to be modified to make public --> Supporting functions the TB generator ---------------------*/ #ifdef GTB_SHARE #define SHARED_forbuilding #endif /*---------------------------------------------------------------------------------------------------------*/ #include #include #include #include "gtb-probe.h" #if defined(SHARED_forbuilding) #include "gtb-prob2.h" #else #define mySHARED static typedef unsigned char SQ_CONTENT; typedef unsigned int SQUARE; #endif #include "sysport.h" #include "gtb-att.h" #include "gtb-types.h" /*---------------------------------------------------------------------------------------------------------*/ /*#include "posit_t.h"*/ #define MAX_LISTSIZE 17 #if 0 typedef unsigned sq_t; typedef unsigned char pc_t; typedef uint32_t mv_t; #endif struct posit { sq_t ws[MAX_LISTSIZE]; sq_t bs[MAX_LISTSIZE]; pc_t wp[MAX_LISTSIZE]; pc_t bp[MAX_LISTSIZE]; sq_t ep; unsigned int stm; unsigned int cas; }; typedef struct posit posit_t; #if 0 typedef long int tbkey_t; #endif /*---------------------------------------------------------------------------------------------------------*/ /*#include "bool_t.h"*/ #if !defined(H_BOOL) typedef int bool_t; #endif #if !defined(TRUE) #define TRUE ((bool_t)1) #endif #if !defined(FALSE) #define FALSE ((bool_t)0) #endif /*--------- private if external building code is not present ----------------------------------------------*/ #if !defined(SHARED_forbuilding) #define MAX_EGKEYS 145 #define SLOTSIZE 1 #define NOINDEX ((index_t)(-1)) #if 0 typedef unsigned short int dtm_t; typedef size_t index_t; /*typedef int index_t;*/ #endif enum Loading_status { STATUS_ABSENT = 0, STATUS_STATICRAM = 1, STATUS_MALLOC = 2, STATUS_FILE = 3, STATUS_REJECT = 4 }; struct endgamekey { int id; const char *str; index_t maxindex; index_t slice_n; void (*itopc) (index_t, SQUARE *, SQUARE *); bool_t (*pctoi) (const SQUARE *, const SQUARE *, index_t *); dtm_t * egt_w; dtm_t * egt_b; FILE * fd; int status; int pathn; }; #endif /*----------------------------------------------------------------------------------------------------------*/ /* array for better moves */ #ifdef GTB_SHARE mySHARED int bettarr [2] [8] [8]; #endif /*------------ ENUMS ----------------------------------------------------------*/ enum Mask_values { RESMASK = tb_RESMASK, INFOMASK = tb_INFOMASK, PLYSHIFT = tb_PLYSHIFT }; enum Info_values { iDRAW = tb_DRAW, iWMATE = tb_WMATE, iBMATE = tb_BMATE, iFORBID = tb_FORBID, iDRAWt = tb_DRAW |4, iWMATEt = tb_WMATE |4, iBMATEt = tb_BMATE |4, iUNKNOWN = tb_UNKNOWN, iUNKNBIT = (1<<2) }; /*-------------------------- inherited from a previous maindef.h -----------*/ #define WHITES (1u<<6) #define BLACKS (1u<<7) #define NOPIECE 0u #define PAWN 1u #define KNIGHT 2u #define BISHOP 3u #define ROOK 4u #define QUEEN 5u #define KING 6u #define WH 0 #define BL 1 #define Opp(x) ((x)^1) #define wK (KING | WHITES) /*------------------- SQUARES -------------------*/ /* from 1-63 different squares posibles */ /*squares*/ enum SQUARES { A1,B1,C1,D1,E1,F1,G1,H1, A2,B2,C2,D2,E2,F2,G2,H2, A3,B3,C3,D3,E3,F3,G3,H3, A4,B4,C4,D4,E4,F4,G4,H4, A5,B5,C5,D5,E5,F5,G5,H5, A6,B6,C6,D6,E6,F6,G6,H6, A7,B7,C7,D7,E7,F7,G7,H7, A8,B8,C8,D8,E8,F8,G8,H8, NOSQUARE, ERRSQUARE = 128 }; /*------------------- end of inherited from a previous maindef.h -----------*/ #if !defined(NDEBUG) #define NDEBUG #endif #ifdef DEBUG #undef NDEBUG #endif #include "assert.h" /*------------------- general DEFINES--------------------------- -----------*/ #define gtbNOSIDE ((unsigned)-1) #define gtbNOINDEX ((index_t)-1) /*************************************************\ | | COMPRESSION SCHEMES | \*************************************************/ #include "gtb-dec.h" static const char *const Extension[] = { ".gtb.cp0" ,".gtb.cp1" ,".gtb.cp2" ,".gtb.cp3" ,".gtb.cp4" ,".gtb.cp5" ,".gtb.cp6" ,".gtb.cp7" ,".gtb.cp8" ,".gtb.cp9" }; /*************************************************\ | | MOVES | \*************************************************/ enum move_kind { NORMAL_MOVE = 0, CASTLE_MOVE, PASSNT_MOVE, PROMOT_MOVE }; enum move_content { NOMOVE = 0 }; #define MV_TYPE(mv) ( (BYTE) ((mv) >>6 & 3 ) ) #define MV_TO(mv) ( (SQUARE) ((mv) >>8 & 63) ) #define MV_PT(mv) ( (SQ_CONTENT) ((mv) >>(3+16) &7 ) ) #define MV_TK(mv) ( (SQ_CONTENT) ((mv) >>(6+16) &7 ) ) #define MV_FROM(mv) ( (SQUARE) ((mv) & 63) ) /* | move,type,color,piece,from,to,taken,promoted *------------------------------------------------------------------*/ #define MV_BUILD(mv,ty,co,pc,fr,to,tk,pm) ( \ (mv) = (fr) | (to)<< 8 | (ty)<< 6 | (co)<<8 \ | (pc)<<16 | (pm)<< (3+16) | (tk)<< (6+16) \ ) #define MV_ADD_TOTK(mv,to,tk) ( \ mv |= (uint32_t)(to) << 8 \ | (uint32_t)(tk) << (6+16) \ ) #define map88(x) ( (x) + ((x)&070) ) #define unmap88(x) ( ( (x) + ((x)& 07) ) >> 1 ) /*************************************************\ | | STATIC VARIABLES | \*************************************************/ static int GTB_scheme = 4; /*************************************************\ | | needed for | PRE LOAD CACHE AND DEPENDENT FUNCTIONS | \*************************************************/ #define EGTB_MAXBLOCKSIZE 65536 static int GTB_MAXOPEN = 4; static bool_t Uncompressed = TRUE; static unsigned char Buffer_zipped [EGTB_MAXBLOCKSIZE]; static unsigned char Buffer_packed [EGTB_MAXBLOCKSIZE]; static unsigned int zipinfo_init (void); static void zipinfo_done (void); enum Flip_flags { WE_FLAG = 1, NS_FLAG = 2, NW_SE_FLAG = 4 }; /* used in flipt */ struct filesopen { int n; tbkey_t *key; }; /* STATIC GLOBALS */ static struct filesopen fd = {0, NULL}; static bool_t TB_INITIALIZED = FALSE; static bool_t DTM_CACHE_INITIALIZED = FALSE; static int WDL_FRACTION = 64; static int WDL_FRACTION_MAX = 128; static size_t DTM_cache_size = 0; static size_t WDL_cache_size = 0; static unsigned int TB_AVAILABILITY = 0; /* LOCKS */ static mythread_mutex_t Egtb_lock; /****************************************************************************\ * * * DEBUGGING or PRINTING ZONE * * ****************************************************************************/ #if 0 #define FOLLOW_EGTB #ifndef DEBUG #define DEBUG #endif #endif #define validsq(x) ((x) >= A1 && (x) <= H8) #if defined(DEBUG) static void print_pos (const sq_t *ws, const sq_t *bs, const pc_t *wp, const pc_t *bp); #endif #if defined(DEBUG) || defined(FOLLOW_EGTB) static void output_state (unsigned stm, const SQUARE *wSQ, const SQUARE *bSQ, const SQ_CONTENT *wPC, const SQ_CONTENT *bPC); static const char *Square_str[64] = { "a1","b1","c1","d1","e1","f1","g1","h1", "a2","b2","c2","d2","e2","f2","g2","h2", "a3","b3","c3","d3","e3","f3","g3","h3", "a4","b4","c4","d4","e4","f4","g4","h4", "a5","b5","c5","d5","e5","f5","g5","h5", "a6","b6","c6","d6","e6","f6","g6","h6", "a7","b7","c7","d7","e7","f7","g7","h7", "a8","b8","c8","d8","e8","f8","g8","h8" }; static const char *P_str[] = { "--", "P", "N", "B", "R", "Q", "K" }; #endif #ifdef FOLLOW_EGTB #define STAB #define STABCONDITION 1 /*(stm == BL && whiteSQ[0]==H1 && whiteSQ[1]==D1 && whiteSQ[2]==D3 && blackSQ[0]==C2 )*/ static bool_t GLOB_REPORT = TRUE; #endif #if defined(FOLLOW_EGTB) static const char *Info_str[8] = { " Draw", " Wmate", " Bmate", "Illegal", "~Draw", "~Wmate", "~Bmate", "Unknown" }; #endif static void list_index (void); static void fatal_error(void) { exit(EXIT_FAILURE); } #ifdef STAB #define FOLLOW_LU(x,y) {if (GLOB_REPORT) printf ("************** %s: %lu\n", (x), (long unsigned)(y));} #else #define FOLLOW_LU(x,y) #endif #ifdef STAB #define FOLLOW_LULU(x,y,z) {if (GLOB_REPORT) printf ("************** %s: %lu, %lu\n", (x), (long unsigned)(y), (long unsigned)(z));} #else #define FOLLOW_LULU(x,y,z) #endif #ifdef STAB #define FOLLOW_label(x) {if (GLOB_REPORT) printf ("************** %s\n", (x));} #else #define FOLLOW_label(x) #endif #ifdef STAB #define FOLLOW_DTM(msg,dtm) {if (GLOB_REPORT) printf ("************** %s: %lu, info:%s, plies:%lu \n"\ , (msg), (long unsigned)(dtm), (Info_str[(dtm)&INFOMASK]), (long unsigned)((dtm)>>PLYSHIFT)\ );} #else #define FOLLOW_DTM(msg,dtm) #endif /*--------------------------------*\ | | | INDEXING FUNCTIONS | | *---------------------------------*/ #define IDX_set_empty(x) {x=0;x--;} #define IDX_is_empty(x) (0==(1+(x))) #define NO_KKINDEX NOINDEX #define MAX_KKINDEX 462 #define MAX_PPINDEX 576 #define MAX_PpINDEX (24 * 48) /*1128*/ #define MAX_AAINDEX ((63-62) + (62 * (127-62)/2) - 1 + 1) #define MAX_AAAINDEX (64*21*31) #define MAX_PP48_INDEX (1128) /* (24*23*22/6) + 24 * (24*23/2) */ #define MAX_PPP48_INDEX 8648 /* VARIABLES */ static index_t kkidx [64] [64]; static index_t ppidx [24] [48]; static index_t pp48_idx[48][48]; static index_t ppp48_idx[48][48][48]; static sq_t wksq [MAX_KKINDEX]; static sq_t bksq [MAX_KKINDEX]; static sq_t pp48_sq_x[MAX_PP48_INDEX]; static sq_t pp48_sq_y[MAX_PP48_INDEX]; static index_t pp_hi24 [MAX_PPINDEX]; /* was unsigned int */ static index_t pp_lo48 [MAX_PPINDEX]; static unsigned int flipt [64] [64]; static index_t aaidx [64] [64]; /* was unsigned int */ static unsigned char aabase [MAX_AAINDEX]; static uint8_t ppp48_sq_x[MAX_PPP48_INDEX]; static uint8_t ppp48_sq_y[MAX_PPP48_INDEX]; static uint8_t ppp48_sq_z[MAX_PPP48_INDEX]; /* FUNCTIONS */ static void init_indexing (int verbosity); static void norm_kkindex (SQUARE x, SQUARE y, /*@out@*/ SQUARE *pi, /*@out@*/ SQUARE *pj); static void pp_putanchorfirst (SQUARE a, SQUARE b, /*@out@*/ SQUARE *out_anchor, /*@out@*/ SQUARE *out_loosen); static index_t wsq_to_pidx24 (SQUARE pawn); static index_t wsq_to_pidx48 (SQUARE pawn); static SQUARE pidx24_to_wsq (index_t a); static SQUARE pidx48_to_wsq (index_t a); static SQUARE flipWE (SQUARE x) { return x ^ 07;} static SQUARE flipNS (SQUARE x) { return x ^ 070;} static SQUARE flipNW_SE (SQUARE x) { return ((x&7)<<3) | (x>>3);} static SQUARE getcol (SQUARE x) { return x & 7;} static SQUARE getrow (SQUARE x) { return x >> 3;} static bool_t in_queenside (sq_t x) { return 0 == (x & (1<<2));} /* 1:0 */ static void kxk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 2:0 */ static void kabk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kakb_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kaak_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 2:1 */ static void kabkc_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kaakb_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 3:0 */ static void kabck_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kaabk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kaaak_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kabbk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* one pawn */ static void kpk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 1:1 one pawn */ static void kakp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 2:0 one pawn */ static void kapk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 2:0 two pawns */ static void kppk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 2:1 one pawn */ static void kapkb_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kabkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kaakp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 2:1 + 3:0 two pawns */ static void kppka_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kappk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kapkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 3:0 one pawn */ static void kabpk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kaapk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* three pawns */ static void kpppk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static void kppkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* 1:1 two pawns */ static void kpkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); /* corresponding pc to index */ static bool_t kxk_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kabk_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kakb_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kpk_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kakp_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kapk_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kppk_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kaak_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kabkc_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kaakb_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out);/**/ static bool_t kabck_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kaabk_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out);/**/ static bool_t kaaak_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kabbk_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out);/**/ static bool_t kapkb_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kabkp_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); static bool_t kaakp_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out); static bool_t kppka_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out); static bool_t kappk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out); static bool_t kapkp_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out); static bool_t kabpk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out); static bool_t kaapk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out); static bool_t kppkp_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out); static bool_t kpppk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out); static bool_t kpkp_pctoindex (const SQUARE *pw, const SQUARE *pb, /*@out@*/ index_t *out); /* testing functions */ static bool_t test_kppk (void); static bool_t test_kaakb (void); static bool_t test_kaabk (void); static bool_t test_kaaak (void); static bool_t test_kabbk (void); static bool_t test_kapkb (void); static bool_t test_kabkp (void); static bool_t test_kppka (void); static bool_t test_kappk (void); static bool_t test_kapkp (void); static bool_t test_kabpk (void); static bool_t test_kaapk (void); static bool_t test_kaakp (void); static bool_t test_kppkp (void); static bool_t test_kpppk (void); static unsigned flip_type (SQUARE x, SQUARE y); static index_t init_kkidx (void); static index_t init_ppidx (void); static void init_flipt (void); static index_t init_aaidx (void); static index_t init_aaa (void); static index_t init_pp48_idx (void); static index_t init_ppp48_idx (void); enum TB_INDEXES { MAX_KXK = MAX_KKINDEX*64 ,MAX_kabk = MAX_KKINDEX*64*64 ,MAX_kakb = MAX_KKINDEX*64*64 ,MAX_kpk = 24*64*64 ,MAX_kakp = 24*64*64*64 ,MAX_kapk = 24*64*64*64 ,MAX_kppk = MAX_PPINDEX*64*64 ,MAX_kpkp = MAX_PpINDEX*64*64 ,MAX_kaak = MAX_KKINDEX*MAX_AAINDEX ,MAX_kabkc = MAX_KKINDEX*64*64*64 ,MAX_kabck = MAX_KKINDEX*64*64*64 ,MAX_kaakb = MAX_KKINDEX*MAX_AAINDEX*64 ,MAX_kaabk = MAX_KKINDEX*MAX_AAINDEX*64 ,MAX_kabbk = MAX_KKINDEX*MAX_AAINDEX*64 ,MAX_kaaak = MAX_KKINDEX*MAX_AAAINDEX ,MAX_kapkb = 24*64*64*64*64 ,MAX_kabkp = 24*64*64*64*64 ,MAX_kabpk = 24*64*64*64*64 ,MAX_kppka = MAX_kppk*64 ,MAX_kappk = MAX_kppk*64 ,MAX_kapkp = MAX_kpkp*64 ,MAX_kaapk = 24*MAX_AAINDEX*64*64 ,MAX_kaakp = 24*MAX_AAINDEX*64*64 ,MAX_kppkp = 24*MAX_PP48_INDEX*64*64 ,MAX_kpppk = MAX_PPP48_INDEX*64*64 }; #if defined(SHARED_forbuilding) extern index_t biggest_memory_needed (void) { return MAX_kabkc; } #endif /*--------------------------------*\ | | | CACHE PROTOTYPES | | *---------------------------------*/ #if !defined(SHARED_forbuilding) mySHARED bool_t get_dtm (tbkey_t key, unsigned side, index_t idx, dtm_t *out, bool_t probe_hard); #endif static bool_t get_dtm_from_cache (tbkey_t key, unsigned side, index_t idx, dtm_t *out); /*--------------------------------*\ | | | INIT | | *---------------------------------*/ static bool_t fd_init (struct filesopen *pfd); static void fd_done (struct filesopen *pfd); static void RAM_egtbfree (void); /*--------------------------------------------------------------------------*/ #if !defined(SHARED_forbuilding) mySHARED void egtb_freemem (int i); #endif mySHARED struct endgamekey egkey[] = { {0, "kqk", MAX_KXK, 1, kxk_indextopc, kxk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {1, "krk", MAX_KXK, 1, kxk_indextopc, kxk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {2, "kbk", MAX_KXK, 1, kxk_indextopc, kxk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {3, "knk", MAX_KXK, 1, kxk_indextopc, kxk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {4, "kpk", MAX_kpk, 24,kpk_indextopc, kpk_pctoindex, NULL , NULL ,NULL ,0, 0 }, /* 4 pieces */ {5, "kqkq", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {6, "kqkr", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {7, "kqkb", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {8, "kqkn", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {9, "krkr", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {10,"krkb", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {11,"krkn", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {12,"kbkb", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {13,"kbkn", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {14,"knkn", MAX_kakb, 1, kakb_indextopc, kakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, /**/ {15,"kqqk", MAX_kaak, 1, kaak_indextopc, kaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, {16,"kqrk", MAX_kabk, 1, kabk_indextopc, kabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {17,"kqbk", MAX_kabk, 1, kabk_indextopc, kabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {18,"kqnk", MAX_kabk, 1, kabk_indextopc, kabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {19,"krrk", MAX_kaak, 1, kaak_indextopc, kaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, {20,"krbk", MAX_kabk, 1, kabk_indextopc, kabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {21,"krnk", MAX_kabk, 1, kabk_indextopc, kabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {22,"kbbk", MAX_kaak, 1, kaak_indextopc, kaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, {23,"kbnk", MAX_kabk, 1, kabk_indextopc, kabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {24,"knnk", MAX_kaak, 1, kaak_indextopc, kaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, /**/ /**/ {25,"kqkp", MAX_kakp, 24,kakp_indextopc, kakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {26,"krkp", MAX_kakp, 24,kakp_indextopc, kakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {27,"kbkp", MAX_kakp, 24,kakp_indextopc, kakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {28,"knkp", MAX_kakp, 24,kakp_indextopc, kakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, /**/ {29,"kqpk", MAX_kapk, 24,kapk_indextopc, kapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {30,"krpk", MAX_kapk, 24,kapk_indextopc, kapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {31,"kbpk", MAX_kapk, 24,kapk_indextopc, kapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {32,"knpk", MAX_kapk, 24,kapk_indextopc, kapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, /**/ {33,"kppk", MAX_kppk, MAX_PPINDEX ,kppk_indextopc, kppk_pctoindex, NULL , NULL ,NULL ,0, 0 }, /**/ {34,"kpkp", MAX_kpkp, MAX_PpINDEX ,kpkp_indextopc, kpkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, /**/ /**/ /* 5 pieces */ { 35,"kqqqk", MAX_kaaak, 1, kaaak_indextopc, kaaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 36,"kqqrk", MAX_kaabk, 1, kaabk_indextopc, kaabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 37,"kqqbk", MAX_kaabk, 1, kaabk_indextopc, kaabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 38,"kqqnk", MAX_kaabk, 1, kaabk_indextopc, kaabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 39,"kqrrk", MAX_kabbk, 1, kabbk_indextopc, kabbk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 40,"kqrbk", MAX_kabck, 1, kabck_indextopc, kabck_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 41,"kqrnk", MAX_kabck, 1, kabck_indextopc, kabck_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 42,"kqbbk", MAX_kabbk, 1, kabbk_indextopc, kabbk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 43,"kqbnk", MAX_kabck, 1, kabck_indextopc, kabck_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 44,"kqnnk", MAX_kabbk, 1, kabbk_indextopc, kabbk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 45,"krrrk", MAX_kaaak, 1, kaaak_indextopc, kaaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 46,"krrbk", MAX_kaabk, 1, kaabk_indextopc, kaabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 47,"krrnk", MAX_kaabk, 1, kaabk_indextopc, kaabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 48,"krbbk", MAX_kabbk, 1, kabbk_indextopc, kabbk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 49,"krbnk", MAX_kabck, 1, kabck_indextopc, kabck_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 50,"krnnk", MAX_kabbk, 1, kabbk_indextopc, kabbk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 51,"kbbbk", MAX_kaaak, 1, kaaak_indextopc, kaaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 52,"kbbnk", MAX_kaabk, 1, kaabk_indextopc, kaabk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 53,"kbnnk", MAX_kabbk, 1, kabbk_indextopc, kabbk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 54,"knnnk", MAX_kaaak, 1, kaaak_indextopc, kaaak_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 55,"kqqkq", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 56,"kqqkr", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 57,"kqqkb", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 58,"kqqkn", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 59,"kqrkq", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 60,"kqrkr", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 61,"kqrkb", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 62,"kqrkn", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 63,"kqbkq", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 64,"kqbkr", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 65,"kqbkb", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 66,"kqbkn", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 67,"kqnkq", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 68,"kqnkr", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 69,"kqnkb", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 70,"kqnkn", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 71,"krrkq", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 72,"krrkr", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 73,"krrkb", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 74,"krrkn", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 75,"krbkq", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 76,"krbkr", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 77,"krbkb", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 78,"krbkn", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 79,"krnkq", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 80,"krnkr", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 81,"krnkb", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 82,"krnkn", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 83,"kbbkq", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 84,"kbbkr", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 85,"kbbkb", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 86,"kbbkn", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 87,"kbnkq", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 88,"kbnkr", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 89,"kbnkb", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 90,"kbnkn", MAX_kabkc, 1, kabkc_indextopc, kabkc_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 91,"knnkq", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 92,"knnkr", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 93,"knnkb", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 94,"knnkn", MAX_kaakb, 1, kaakb_indextopc, kaakb_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 95,"kqqpk", MAX_kaapk, 24, kaapk_indextopc, kaapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 96,"kqrpk", MAX_kabpk, 24, kabpk_indextopc, kabpk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 97,"kqbpk", MAX_kabpk, 24, kabpk_indextopc, kabpk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 98,"kqnpk", MAX_kabpk, 24, kabpk_indextopc, kabpk_pctoindex, NULL , NULL ,NULL ,0, 0 }, { 99,"krrpk", MAX_kaapk, 24, kaapk_indextopc, kaapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {100,"krbpk", MAX_kabpk, 24, kabpk_indextopc, kabpk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {101,"krnpk", MAX_kabpk, 24, kabpk_indextopc, kabpk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {102,"kbbpk", MAX_kaapk, 24, kaapk_indextopc, kaapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {103,"kbnpk", MAX_kabpk, 24, kabpk_indextopc, kabpk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {104,"knnpk", MAX_kaapk, 24, kaapk_indextopc, kaapk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {105,"kqppk", MAX_kappk, MAX_PPINDEX, kappk_indextopc, kappk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {106,"krppk", MAX_kappk, MAX_PPINDEX, kappk_indextopc, kappk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {107,"kbppk", MAX_kappk, MAX_PPINDEX, kappk_indextopc, kappk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {108,"knppk", MAX_kappk, MAX_PPINDEX, kappk_indextopc, kappk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {109,"kqpkq", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {110,"kqpkr", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {111,"kqpkb", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {112,"kqpkn", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {113,"krpkq", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {114,"krpkr", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {115,"krpkb", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {116,"krpkn", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {117,"kbpkq", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {118,"kbpkr", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {119,"kbpkb", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {120,"kbpkn", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {121,"knpkq", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {122,"knpkr", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {123,"knpkb", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {124,"knpkn", MAX_kapkb, 24, kapkb_indextopc, kapkb_pctoindex, NULL , NULL ,NULL ,0, 0 }, {125,"kppkq", MAX_kppka, MAX_PPINDEX, kppka_indextopc, kppka_pctoindex, NULL , NULL ,NULL ,0, 0 }, {126,"kppkr", MAX_kppka, MAX_PPINDEX, kppka_indextopc, kppka_pctoindex, NULL , NULL ,NULL ,0, 0 }, {127,"kppkb", MAX_kppka, MAX_PPINDEX, kppka_indextopc, kppka_pctoindex, NULL , NULL ,NULL ,0, 0 }, {128,"kppkn", MAX_kppka, MAX_PPINDEX, kppka_indextopc, kppka_pctoindex, NULL , NULL ,NULL ,0, 0 }, {129,"kqqkp", MAX_kaakp, 24, kaakp_indextopc, kaakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {130,"kqrkp", MAX_kabkp, 24, kabkp_indextopc, kabkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {131,"kqbkp", MAX_kabkp, 24, kabkp_indextopc, kabkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {132,"kqnkp", MAX_kabkp, 24, kabkp_indextopc, kabkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {133,"krrkp", MAX_kaakp, 24, kaakp_indextopc, kaakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {134,"krbkp", MAX_kabkp, 24, kabkp_indextopc, kabkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {135,"krnkp", MAX_kabkp, 24, kabkp_indextopc, kabkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {136,"kbbkp", MAX_kaakp, 24, kaakp_indextopc, kaakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {137,"kbnkp", MAX_kabkp, 24, kabkp_indextopc, kabkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {138,"knnkp", MAX_kaakp, 24, kaakp_indextopc, kaakp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {139,"kqpkp", MAX_kapkp, MAX_PpINDEX, kapkp_indextopc, kapkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {140,"krpkp", MAX_kapkp, MAX_PpINDEX, kapkp_indextopc, kapkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {141,"kbpkp", MAX_kapkp, MAX_PpINDEX, kapkp_indextopc, kapkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {142,"knpkp", MAX_kapkp, MAX_PpINDEX, kapkp_indextopc, kapkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {143,"kppkp", MAX_kppkp, 24*MAX_PP48_INDEX, kppkp_indextopc, kppkp_pctoindex, NULL , NULL ,NULL ,0, 0 }, {144,"kpppk", MAX_kpppk, MAX_PPP48_INDEX, kpppk_indextopc, kpppk_pctoindex, NULL , NULL ,NULL ,0, 0 }, {MAX_EGKEYS, NULL, 0, 1, NULL, NULL, NULL, NULL ,NULL ,0 ,0} }; static int eg_was_open[MAX_EGKEYS]; static uint64_t Bytes_read = 0; /****************************************************************************\ | | | PATH MANAGEMENT ZONE | | \****************************************************************************/ #define MAXPATHLEN tb_MAXPATHLEN #define MAX_GTBPATHS 10 static int Gtbpath_end_index = 0; static const char ** Gtbpath = NULL; /*---------------- EXTERNAL PATH MANAGEMENT --------------------------------*/ extern const char *tbpaths_getmain (void) { return Gtbpath[0];} extern const char ** tbpaths_init(void) { const char **newps; newps = (const char **) malloc (sizeof (char *)); if (newps != NULL) { newps[0] = NULL; } return newps; } static const char ** tbpaths_add_single(const char **ps, const char *newpath) { size_t counter; const char **newps; size_t i, psize; char *ppath; if (NULL == ps) return NULL; psize = strlen(newpath) + 1; ppath = (char *) malloc (psize * sizeof (char)); if (NULL == ppath) return ps; /* failed to incorporate a new path */ for (i = 0; i < psize; i++) ppath[i] = newpath[i]; for (counter = 0; ps[counter] != NULL; counter++) ; /* cast to deal with const poisoning */ newps = (const char **) realloc ((char **)ps, sizeof(char *) * (counter+2)); if (newps != NULL) { newps [counter] = ppath; newps [counter+1] = NULL; } return newps; } extern const char ** tbpaths_add(const char **ps, const char *newpath) { size_t i, psize; char *mpath; if (NULL == ps) return NULL; psize = strlen(newpath) + 1; mpath = (char *) malloc (psize * sizeof (char)); if (NULL == mpath) { return ps; /* failed to incorporate a new path */ } for (i = 0; i < psize; i++) mpath[i] = newpath[i]; for (i = 0; i < psize; i++) { if(';' == mpath[i]) mpath[i] = '\0'; } for (i = 0;;) { while (i < psize && mpath[i] == '\0') i++; if (i >= psize) break; ps = tbpaths_add_single (ps, &mpath[i]); while (i < psize && mpath[i] != '\0') i++; } free(mpath); return ps; } extern const char ** tbpaths_done(const char **ps) { int counter; void *q; if (ps != NULL) { for (counter = 0; ps[counter] != NULL; counter++) { /* cast to deal with const poisoning */ void *p = (void *) ps[counter]; free(p); } /* cast to deal with const poisoning */ q = (void *) ps; free(q); } return NULL; } /*---------------- PATH INITIALIZATION ROUTINES ----------------------------*/ static void path_system_reset(void) {Gtbpath_end_index = 0;} static bool_t path_system_init (const char **path) { size_t i; size_t sz; const char *x; bool_t ok = TRUE; path_system_reset(); if (path == NULL) { return FALSE; } /* calculate needed size for Gtbpath */ i = 0; do { x = path[i++]; } while (x != NULL); sz = i; /* sz includes the NULL */ Gtbpath = (const char **) malloc (sz * sizeof(char *)); if (Gtbpath) { ok = TRUE; /* point to the same strings provided */ Gtbpath_end_index = 0; for (i = 0; i < sz; i++) { Gtbpath[i] = path[i]; Gtbpath_end_index++; } } else { ok = FALSE; } return ok; } static void path_system_done (void) { /* before we free Gtbpath, we have to deal with the "const poisoning" and cast it. free() does not accept const pointers */ char ** p = (char **) Gtbpath; /* clean up */ if (p != NULL) free(p); return; } /****************************************************************************\ * * * General Initialization Zone * * ****************************************************************************/ #ifdef WDL_PROBE static size_t wdl_cache_init (size_t cache_mem); static void wdl_cache_flush (void); static void wdl_cache_reset_counters (void); static void wdl_cache_done (void); static bool_t get_WDL_from_cache (tbkey_t key, unsigned side, index_t idx, unsigned int *out); static bool_t wdl_preload_cache (tbkey_t key, unsigned side, index_t idx); #endif #ifdef GTB_SHARE static void init_bettarr (void); #endif static void eg_was_open_reset(void) { int i; for (i = 0; i < MAX_EGKEYS; i++) { eg_was_open[i] = 0; } } static long unsigned int eg_was_open_count(void) { long int i, x; for (i = 0, x = 0; i < MAX_EGKEYS; i++) { x += eg_was_open[i]; } return (long unsigned) x; } enum Sizes {INISIZE = 4096}; static char ini_str[INISIZE]; static void sjoin(char *s, const char *tail, size_t max) {strncat(s, tail, max - strlen(s) - 1);} char * tb_init (int verbosity, int decoding_sch, const char **paths) { unsigned int zi; int paths_ok; char *ret_str; char localstr[256]; assert(!TB_INITIALIZED); if (verbosity) { ini_str[0] = '\0'; ret_str = ini_str; } else { ret_str = NULL; } paths_ok = path_system_init (paths); if (paths_ok && verbosity) { int g; assert(Gtbpath!=NULL); sjoin(ini_str,"\nGTB PATHS\n",INISIZE); for (g = 0; Gtbpath[g] != NULL; g++) { const char *p = Gtbpath[g]; if (0 == g) { sprintf (localstr," main: %s\n", p); } else { sprintf (localstr," #%d: %s\n", g, p); } sjoin(ini_str,localstr,INISIZE); } } if (!paths_ok && verbosity) { sjoin (ini_str,"\nGTB PATHS not initialized\n",INISIZE); } if (!reach_was_initialized()) reach_init(); attack_maps_init (); /* external initialization */ init_indexing(0 /* no verbosity */); #ifdef GTB_SHARE init_bettarr(); #endif if (!fd_init (&fd) && verbosity) { sjoin (ini_str," File Open Memory initialization = **FAILED**\n",INISIZE); return ret_str; } GTB_scheme = decoding_sch; Uncompressed = GTB_scheme == 0; if (GTB_scheme == 0) { Uncompressed = TRUE; } set_decoding_scheme(GTB_scheme); if (verbosity) { sjoin (ini_str,"\nGTB initialization\n",INISIZE); sprintf (localstr," Compression Scheme = %d\n", GTB_scheme); sjoin (ini_str,localstr,INISIZE); } zi = zipinfo_init(); TB_AVAILABILITY = zi; if (verbosity) { if (0 == zi) { sjoin (ini_str," Compression Indexes = **FAILED**\n",INISIZE); } else { int n, bit; n = 3; bit = 1; if (zi&(1u<n = 0; allowed = mysys_fopen_max() - 5 /*stdin,stdout,sterr,stdlog,book*/; if (allowed < 4) GTB_MAXOPEN = 4; if (allowed > 32) GTB_MAXOPEN = 32; p = (tbkey_t *) malloc(sizeof(tbkey_t)*(size_t)GTB_MAXOPEN); if (p != NULL) { for (i = 0; i < GTB_MAXOPEN; i++) { p[i] = -1; } pfd->key = p; return TRUE; } else { return FALSE; } } static void fd_done (struct filesopen *pfd) { int i; tbkey_t closingkey; FILE *finp; assert(pfd != NULL); for (i = 0; i < pfd->n; i++) { closingkey = pfd->key[i]; finp = egkey [closingkey].fd; fclose (finp); egkey[closingkey].fd = NULL; pfd->key[i] = -1; } pfd->n = 0; free(pfd->key); } /****************************************************************************\ | | | PROBE ZONE | | \****************************************************************************/ #if !defined(SHARED_forbuilding) /* shared with building routines */ mySHARED void list_sq_copy (const SQUARE *a, SQUARE *b); mySHARED void list_pc_copy (const SQ_CONTENT *a, SQ_CONTENT *b); mySHARED dtm_t inv_dtm (dtm_t x); mySHARED bool_t egtb_get_id (SQ_CONTENT *w, SQ_CONTENT *b, tbkey_t *id); mySHARED void list_sq_flipNS (SQUARE *s); mySHARED dtm_t adjust_up (dtm_t dist); mySHARED dtm_t bestx (unsigned stm, dtm_t a, dtm_t b); mySHARED void sortlists (SQUARE *ws, SQ_CONTENT *wp); mySHARED /*@NULL@*/ FILE * fd_openit(tbkey_t key); mySHARED dtm_t dtm_unpack (unsigned stm, unsigned char packed); mySHARED void unpackdist (dtm_t d, unsigned int *res, unsigned int *ply); mySHARED dtm_t packdist (unsigned int inf, unsigned int ply); mySHARED bool_t fread_entry_packed (FILE *dest, unsigned side, dtm_t *px); mySHARED bool_t fpark_entry_packed (FILE *finp, unsigned side, index_t max, index_t idx); #endif /* use only with probe */ static bool_t egtb_get_dtm (tbkey_t k, unsigned stm, const SQUARE *wS, const SQUARE *bS, bool_t probe_hard, dtm_t *dtm); static void removepiece (SQUARE *ys, SQ_CONTENT *yp, int j); static bool_t egtb_filepeek (tbkey_t key, unsigned side, index_t idx, dtm_t *out_dtm); /*prototype*/ #ifdef WDL_PROBE static bool_t tb_probe_wdl (unsigned stm, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, bool_t probingtype, /*@out@*/ unsigned *res); #endif static bool_t tb_probe_ (unsigned stm, SQUARE epsq, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, bool_t probingtype, /*@out@*/ unsigned *res, /*@out@*/ unsigned *ply); extern bool_t tb_probe_soft (unsigned stm, SQUARE epsq, unsigned castles, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, /*@out@*/ unsigned *res, /*@out@*/ unsigned *ply) { if (castles != 0) return FALSE; return tb_probe_ (stm, epsq, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, FALSE, res, ply); } extern bool_t tb_probe_hard (unsigned stm, SQUARE epsq, unsigned castles, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, /*@out@*/ unsigned *res, /*@out@*/ unsigned *ply) { if (castles != 0) return FALSE; return tb_probe_ (stm, epsq, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, TRUE, res, ply); } extern bool_t tb_probe_WDL_soft (unsigned stm, SQUARE epsq, unsigned castles, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, /*@out@*/ unsigned *res) { unsigned ply_n; unsigned *ply = &ply_n; if (castles != 0) return FALSE; if (epsq != NOSQUARE) return tb_probe_ (stm, epsq, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, FALSE, res, ply); /* probe bitbase like, assuming no en passant */ #ifdef WDL_PROBE return tb_probe_wdl (stm, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, FALSE, res); #else return tb_probe_ (stm, epsq, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, FALSE, res, ply); #endif } extern bool_t tb_probe_WDL_hard (unsigned stm, SQUARE epsq, unsigned castles, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, /*@out@*/ unsigned *res) { unsigned ply_n; unsigned *ply = &ply_n; if (castles != 0) return FALSE; if (epsq != NOSQUARE) return tb_probe_ (stm, epsq, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, TRUE, res, ply); /* probe bitbase like, assuming no en passant */ #ifdef WDL_PROBE return tb_probe_wdl (stm, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, TRUE, res); #else return tb_probe_ (stm, epsq, inp_wSQ, inp_bSQ, inp_wPC, inp_bPC, TRUE, res, ply); #endif } static bool_t tb_probe_ (unsigned stm, SQUARE epsq, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, bool_t probingtype, /*@out@*/ unsigned *res, /*@out@*/ unsigned *ply) { int i = 0, j = 0; tbkey_t id = -1; dtm_t dtm; SQUARE storage_ws [MAX_LISTSIZE], storage_bs [MAX_LISTSIZE]; SQ_CONTENT storage_wp [MAX_LISTSIZE], storage_bp [MAX_LISTSIZE]; SQUARE *ws = storage_ws; SQUARE *bs = storage_bs; SQ_CONTENT *wp = storage_wp; SQ_CONTENT *bp = storage_bp; SQUARE *xs; SQUARE *ys; SQ_CONTENT *xp; SQ_CONTENT *yp; SQUARE tmp_ws [MAX_LISTSIZE], tmp_bs [MAX_LISTSIZE]; SQ_CONTENT tmp_wp [MAX_LISTSIZE], tmp_bp [MAX_LISTSIZE]; SQUARE *temps; bool_t straight = FALSE; SQUARE capturer_a, capturer_b, xed = NOSQUARE; unsigned int plies; unsigned int inf; bool_t okdtm = TRUE; bool_t okcall = TRUE; /************************************/ assert (stm == WH || stm == BL); /*assert (inp_wPC[0] == KING && inp_bPC[0] == KING );*/ assert ((epsq >> 3) == 2 || (epsq >> 3) == 5 || epsq == NOSQUARE); /* VALID ONLY FOR KK!! */ if (inp_wPC[1] == NOPIECE && inp_bPC[1] == NOPIECE) { index_t dummy_i; bool_t b = kxk_pctoindex (inp_wSQ, inp_bSQ, &dummy_i); *res = b? iDRAW: iFORBID; *ply = 0; return TRUE; } /* copy input */ list_pc_copy (inp_wPC, wp); list_pc_copy (inp_bPC, bp); list_sq_copy (inp_wSQ, ws); list_sq_copy (inp_bSQ, bs); sortlists (ws, wp); sortlists (bs, bp); FOLLOW_label("EGTB_PROBE") if (egtb_get_id (wp, bp, &id)) { FOLLOW_LU("got ID",id) straight = TRUE; } else if (egtb_get_id (bp, wp, &id)) { FOLLOW_LU("rev ID",id) straight = FALSE; list_sq_flipNS (ws); list_sq_flipNS (bs); temps = ws; ws = bs; bs = temps; stm = Opp(stm); if (epsq != NOSQUARE) epsq ^= 070; /* added */ {SQ_CONTENT *tempp = wp; wp = bp; bp = tempp;} /* added */ } else { #if defined(DEBUG) printf("did not get id...\n"); output_state (stm, ws, bs, wp, bp); #endif unpackdist (iFORBID, res, ply); return FALSE; } /* store position... */ list_pc_copy (wp, tmp_wp); list_pc_copy (bp, tmp_bp); list_sq_copy (ws, tmp_ws); list_sq_copy (bs, tmp_bs); /* x will be stm and y will be stw */ if (stm == WH) { xs = ws; xp = wp; ys = bs; yp = bp; } else { xs = bs; xp = bp; ys = ws; yp = wp; } okdtm = egtb_get_dtm (id, stm, ws, bs, probingtype, &dtm); FOLLOW_LU("dtmok?",okdtm) FOLLOW_DTM("dtm", dtm) if (okdtm) { capturer_a = NOSQUARE; capturer_b = NOSQUARE; if (epsq != NOSQUARE) { /* captured pawn, trick: from epsquare to captured */ xed = epsq ^ (1<<3); /* find index captured (j) */ for (j = 0; ys[j] != NOSQUARE; j++) { if (ys[j] == xed) break; } /* try first possible ep capture */ if (0 == (0x88 & (map88(xed) + 1))) capturer_a = xed + 1; /* try second possible ep capture */ if (0 == (0x88 & (map88(xed) - 1))) capturer_b = xed - 1; if (ys[j] == xed) { /* find capturers (i) */ for (i = 0; xs[i] != NOSQUARE && okcall; i++) { if (xp[i]==PAWN && (xs[i]==capturer_a || xs[i]==capturer_b)) { dtm_t epscore = iFORBID; /* execute capture */ xs[i] = epsq; removepiece (ys, yp, j); okcall = tb_probe_ (Opp(stm), NOSQUARE, ws, bs, wp, bp, probingtype, &inf, &plies); if (okcall) { epscore = packdist (inf, plies); epscore = adjust_up (epscore); /* chooses to ep or not */ dtm = bestx (stm, epscore, dtm); } /* restore position */ list_pc_copy (tmp_wp, wp); list_pc_copy (tmp_bp, bp); list_sq_copy (tmp_ws, ws); list_sq_copy (tmp_bs, bs); } } } } /* ep */ if (straight) { unpackdist (dtm, res, ply); } else { unpackdist (inv_dtm (dtm), res, ply); } } if (!okdtm || !okcall) { unpackdist (iFORBID, res, ply); } return okdtm && okcall; } #ifdef _MSC_VER /* to silence warning for sprintf usage */ #pragma warning(disable:4996) #endif static bool_t egtb_filepeek (tbkey_t key, unsigned side, index_t idx, dtm_t *out_dtm) { FILE *finp; #define USE_FD #if !defined(USE_FD) char buf[1024]; char *filename = buf; #endif bool_t ok; dtm_t x=0; index_t maxindex = egkey[key].maxindex; assert (Uncompressed); assert (side == WH || side == BL); assert (out_dtm != NULL); assert (idx >= 0); assert (key < MAX_EGKEYS); #if defined(USE_FD) if (NULL == (finp = egkey[key].fd) ) { if (NULL == (finp = fd_openit (key))) { return FALSE; } } #else sprintf (buf, "%s.gtb", egkey[key].str); if (NULL == (finp = fopen (filename, "rb"))) { return FALSE; } #endif ok = fpark_entry_packed (finp, side, maxindex, idx); ok = ok && fread_entry_packed (finp, side, &x); if (ok) { *out_dtm = x; } else *out_dtm = iFORBID; #if !defined(USE_FD) fclose (finp); #endif return ok; } /* will get defined later */ static bool_t dtm_cache_is_on (void); static bool_t egtb_get_dtm (tbkey_t k, unsigned stm, const SQUARE *wS, const SQUARE *bS, bool_t probe_hard_flag, dtm_t *dtm) { bool_t idxavail; index_t idx; dtm_t *tab[2]; bool_t (*pc2idx) (const SQUARE *, const SQUARE *, index_t *); FOLLOW_label("egtb_get_dtm --> starts") if (egkey[k].status == STATUS_MALLOC || egkey[k].status == STATUS_STATICRAM) { tab[WH] = egkey[k].egt_w; tab[BL] = egkey[k].egt_b; pc2idx = egkey[k].pctoi; idxavail = pc2idx (wS, bS, &idx); FOLLOW_LU("indexavail (RAM)",idxavail) if (idxavail) { *dtm = tab[stm][idx]; } else { *dtm = iFORBID; } return TRUE; } else if (egkey[k].status == STATUS_ABSENT) { pc2idx = egkey[k].pctoi; idxavail = pc2idx (wS, bS, &idx); FOLLOW_LU("indexavail (HD)",idxavail) if (idxavail) { bool_t success; /* | LOCK *-------------------------------*/ mythread_mutex_lock (&Egtb_lock); if (dtm_cache_is_on()) { success = get_dtm (k, stm, idx, dtm, probe_hard_flag); FOLLOW_LU("get_dtm (succ)",success) FOLLOW_LU("get_dtm (dtm )",*dtm) #if defined(DEBUG) if (Uncompressed) { dtm_t dtm_temp; bool_t ok; bool_t success2; assert (decoding_scheme() == 0 && GTB_scheme == 0); success2 = egtb_filepeek (k, stm, idx, &dtm_temp); ok = (success == success2) && (!success || *dtm == dtm_temp); if (!ok) { printf ("\nERROR\nsuccess1=%d sucess2=%d\n" "k=%d stm=%u idx=%d dtm_peek=%d dtm_cache=%d\n", success, success2, k, stm, idx, dtm_temp, *dtm); fatal_error(); } } #endif } else { assert(Uncompressed); if (probe_hard_flag && Uncompressed) success = egtb_filepeek (k, stm, idx, dtm); else success = FALSE; } mythread_mutex_unlock (&Egtb_lock); /*------------------------------*\ | UNLOCK */ if (success) { return TRUE; } else { if (probe_hard_flag) /* after probing hard and failing, no chance to succeed later */ egkey[k].status = STATUS_REJECT; *dtm = iUNKNOWN; return FALSE; } } else { *dtm = iFORBID; return TRUE; } } else if (egkey[k].status == STATUS_REJECT) { FOLLOW_label("STATUS_REJECT") *dtm = iFORBID; return FALSE; } else { FOLLOW_label("STATUS_WRONG!") assert(0); *dtm = iFORBID; return FALSE; } } static void removepiece (SQUARE *ys, SQ_CONTENT *yp, int j) { int k; for (k = j; ys[k] != NOSQUARE; k++) { ys[k] = ys[k+1]; yp[k] = yp[k+1]; } } /* | | mySHARED by probe and build | \*----------------------------------------------------*/ mySHARED /*@NULL@*/ FILE * fd_openit (tbkey_t key) { int i; tbkey_t closingkey; FILE * finp = NULL; char buf[4096]; char * filename = buf; int start; int end; int pth; const char * extension; assert (0 <= key && key < MAX_EGKEYS); assert (0 <= fd.n && fd.n <= GTB_MAXOPEN); /* test if I reach limit of files open */ if (fd.n == GTB_MAXOPEN) { /* fclose the last accessed, first in the list */ closingkey = fd.key[0]; finp = egkey [closingkey].fd; assert (finp != NULL); fclose (finp); egkey[closingkey].fd = NULL; finp = NULL; for (i = 1; i < fd.n; i++) { fd.key[i-1] = fd.key[i]; } fd.key[--fd.n] = -1; } assert (fd.n < GTB_MAXOPEN); /* set proper extensions to the File */ if (Uncompressed) { assert (decoding_scheme() == 0 && GTB_scheme == 0); extension = ".gtb"; } else { extension = Extension[decoding_scheme()]; } /* Scan folders to find the File*/ finp = NULL; start = egkey[key].pathn; end = Gtbpath_end_index; /*@@ printf ("start: %d\n",start); printf ("===================Gtbpath[0]=%s\n",Gtbpath[0]); */ for (pth = start; NULL == finp && pth < end && Gtbpath[pth] != NULL; pth++) { const char *path = Gtbpath[pth]; size_t pl = strlen(path); /*@@ printf ("path: %s\n",path); */ if (pl == 0) { sprintf (buf, "%s%s%s", path, egkey[key].str, extension); } else { if (isfoldersep( path[pl-1] )) { sprintf (buf, "%s%s%s", path, egkey[key].str, extension); } else { sprintf (buf, "%s%s%s%s", path, FOLDERSEP, egkey[key].str, extension); } } /*printf ("try to open %s --> ",filename);*/ /* Finally found the file? */ finp = fopen (filename, "rb"); /*printf ("%d\n",finp != NULL);*/ } /* File was found and opened */ if (NULL != finp) { fd.key [fd.n++] = key; egkey[key].fd = finp; egkey[key].pathn = pth; /* remember succesful path */ eg_was_open[key] = 1; return finp; } start = 0; end = egkey[key].pathn; for (pth = start; NULL == finp && pth < end && Gtbpath[pth] != NULL; pth++) { const char *path = Gtbpath[pth]; size_t pl = strlen(path); if (pl == 0) { sprintf (buf, "%s%s%s", path, egkey[key].str, extension); } else { if (isfoldersep( path[pl-1] )) { sprintf (buf, "%s%s%s", path, egkey[key].str, extension); } else { sprintf (buf, "%s%s%s%s", path, FOLDERSEP, egkey[key].str, extension); } } /*printf ("try to open %s --> ",filename);*/ /* Finally found the file? */ finp = fopen (filename, "rb"); /*printf ("%d\n",finp != NULL);*/ } /* File was found and opened */ if (NULL != finp) { fd.key [fd.n++] = key; egkey[key].fd = finp; egkey[key].pathn = pth; /* remember succesful path */ eg_was_open[key] = 1; } return finp; } #ifdef _MSC_VER /* to silence warning for sprintf usage */ #pragma warning(default:4996) #endif mySHARED void sortlists (SQUARE *ws, SQ_CONTENT *wp) { int i, j; SQUARE ts; SQ_CONTENT tp; /* input is sorted */ for (i = 0; wp[i] != NOPIECE; i++) { for (j = (i+1); wp[j] != NOPIECE; j++) { if (wp[j] > wp[i]) { tp = wp[i]; wp[i] = wp[j]; wp[j] = tp; ts = ws[i]; ws[i] = ws[j]; ws[j] = ts; } } } } mySHARED void list_sq_copy (const SQUARE *a, SQUARE *b) { while (NOSQUARE != (*b++ = *a++)) ; } mySHARED void list_pc_copy (const SQ_CONTENT *a, SQ_CONTENT *b) { while (NOPIECE != (*b++ = *a++)) ; } mySHARED dtm_t inv_dtm (dtm_t x) { unsigned mat; assert ( (x & iUNKNBIT) == 0); if (x == iDRAW || x == iFORBID) return x; mat = (unsigned)x & 3u; if (mat == iWMATE) mat = iBMATE; else mat = iWMATE; x = (dtm_t) (((unsigned)x & ~3u) | mat); return x; } static const char pctoch[] = {'-','p','n','b','r','q','k'}; mySHARED bool_t egtb_get_id (SQ_CONTENT *w, SQ_CONTENT *b, tbkey_t *id) { char pcstr[2*MAX_LISTSIZE]; SQ_CONTENT *s; char *t; bool_t found; tbkey_t i; static tbkey_t cache_i = 0; assert (PAWN == 1 && KNIGHT == 2 && BISHOP == 3 && ROOK == 4 && QUEEN == 5 && KING == 6); t = pcstr; s = w; while (NOPIECE != *s) *t++ = pctoch[*s++]; s = b; while (NOPIECE != *s) *t++ = pctoch[*s++]; *t = '\0'; found = (0 == strcmp(pcstr, egkey[cache_i].str)); if (found) { *id = cache_i; return found; } for (i = 0, found = FALSE; !found && egkey[i].str != NULL; i++) { found = (0 == strcmp(pcstr, egkey[i].str)); } if (found) { cache_i = *id = i - 1; } return found; } mySHARED void list_sq_flipNS (SQUARE *s) { while (*s != NOSQUARE) { *s ^= 070; s++; } } mySHARED void unpackdist (dtm_t d, unsigned int *res, unsigned int *ply) { *ply = (unsigned int)d >> PLYSHIFT; *res = d & INFOMASK; } mySHARED dtm_t packdist (unsigned int inf, unsigned int ply) { assert (inf <= INFOMASK); return (dtm_t) (inf | ply << PLYSHIFT); } mySHARED dtm_t adjust_up (dtm_t dist) { #if 0 static const dtm_t adding[] = { 0, 1<> 2; if (WH == stm) { switch (info) { case iWMATE: moves = store + 1; plies = moves * 2 - 1; prefx = info; break; case iBMATE: moves = store; plies = moves * 2; prefx = info; break; case iDRAW: moves = store + 1 + 63; plies = moves * 2 - 1; prefx = iWMATE; break; case iFORBID: moves = store + 63; plies = moves * 2; prefx = iBMATE; break; default: plies = 0; prefx = 0; assert(0); break; } ret = (dtm_t) (prefx | (plies << 3)); } else { switch (info) { case iBMATE: moves = store + 1; plies = moves * 2 - 1; prefx = info; break; case iWMATE: moves = store; plies = moves * 2; prefx = info; break; case iDRAW: if (store == 63) { /* exception: no position in the 5-man TBs needs to store 63 for iBMATE it is then used to indicate iWMATE when just overflows */ store++; moves = store + 63; plies = moves * 2; prefx = iWMATE; break; } moves = store + 1 + 63; plies = moves * 2 - 1; prefx = iBMATE; break; case iFORBID: moves = store + 63; plies = moves * 2; prefx = iWMATE; break; default: plies = 0; prefx = 0; assert(0); break; } ret = (dtm_t) (prefx | (plies << 3)); } return ret; } /* static bool_t fwrite_entry_packed (FILE *dest, unsigned side, dtm_t x); */ mySHARED bool_t fread_entry_packed (FILE *finp, unsigned side, dtm_t *px) { unsigned char p[SLOTSIZE]; bool_t ok = (SLOTSIZE == fread (p, sizeof(unsigned char), SLOTSIZE, finp)); if (ok) { *px = dtm_unpack (side, p[0]); } return ok; } mySHARED bool_t fpark_entry_packed (FILE *finp, unsigned side, index_t max, index_t idx) { bool_t ok; index_t i; long int fseek_i; index_t sz = (index_t) sizeof(unsigned char); assert (side == WH || side == BL); assert (finp != NULL); assert (idx >= 0); i = ((index_t)side * max + idx) * sz; fseek_i = (long int) i; assert (fseek_i >= 0); ok = (0 == fseek (finp, fseek_i, SEEK_SET)); return ok; } /*----------------------------------------------------*\ | | shared by probe and build | \*/ /*---------------------------------------------------------------------*\ | WDL CACHE Implementation ZONE \*---------------------------------------------------------------------*/ #define WDL_entries_per_unit 4 #define WDL_entry_mask 3 static size_t WDL_units_per_block = 0; static bool_t WDL_CACHE_INITIALIZED = FALSE; typedef unsigned char unit_t; /* block unit */ typedef struct wdl_block wdl_block_t; struct wdl_block { tbkey_t key; unsigned side; index_t offset; unit_t *p_arr; wdl_block_t *prev; wdl_block_t *next; }; struct WDL_CACHE { /* defined at init */ bool_t cached; size_t max_blocks; size_t entries_per_block; unit_t * buffer; /* flushables */ wdl_block_t * top; wdl_block_t * bot; size_t n; wdl_block_t * blocks; /* was entry */ /* counters */ uint64_t hard; uint64_t soft; uint64_t hardmisses; uint64_t hits; uint64_t softmisses; uint64_t comparisons; }; struct WDL_CACHE wdl_cache = {FALSE,0,0,NULL, NULL,NULL,0,NULL, 0,0,0,0,0,0}; /*---------------------------------------------------------------------*\ | DTM CACHE Implementation ZONE \*---------------------------------------------------------------------*/ struct dtm_block; typedef struct dtm_block dtm_block_t; struct dtm_block { tbkey_t key; unsigned side; index_t offset; dtm_t *p_arr; dtm_block_t *prev; dtm_block_t *next; }; struct cache_table { /* defined at init */ bool_t cached; size_t max_blocks; size_t entries_per_block; dtm_t * buffer; /* flushables */ dtm_block_t * top; dtm_block_t * bot; size_t n; dtm_block_t * entry; /* counters */ uint64_t hard; uint64_t soft; uint64_t hardmisses; uint64_t hits; uint64_t softmisses; unsigned long comparisons; }; struct cache_table dtm_cache = {FALSE,0,0,NULL, NULL,NULL,0,NULL, 0,0,0,0,0,0}; struct general_counters { /* counters */ uint64_t hits; uint64_t miss; }; static struct general_counters Drive = {0,0}; static void split_index (size_t entries_per_block, index_t i, index_t *o, index_t *r); static dtm_block_t *point_block_to_replace (void); static bool_t preload_cache (tbkey_t key, unsigned side, index_t idx); static void movetotop (dtm_block_t *t); /*--cache prototypes--------------------------------------------------------*/ /*- WDL --------------------------------------------------------------------*/ #ifdef WDL_PROBE static unsigned int wdl_extract (unit_t *uarr, index_t x); static wdl_block_t * wdl_point_block_to_replace (void); static void wdl_movetotop (wdl_block_t *t); #if 0 static bool_t wdl_cache_init (size_t cache_mem); static void wdl_cache_flush (void); static bool_t get_WDL (tbkey_t key, unsigned side, index_t idx, unsigned int *info_out, bool_t probe_hard_flag); #endif static bool_t wdl_cache_is_on (void); static void wdl_cache_reset_counters (void); static void wdl_cache_done (void); static wdl_block_t * wdl_point_block_to_replace (void); static bool_t get_WDL_from_cache (tbkey_t key, unsigned side, index_t idx, unsigned int *out); static void wdl_movetotop (wdl_block_t *t); static bool_t wdl_preload_cache (tbkey_t key, unsigned side, index_t idx); #endif /*--------------------------------------------------------------------------*/ /*- DTM --------------------------------------------------------------------*/ static bool_t dtm_cache_is_on (void); static void dtm_cache_reset_counters (void); static void dtm_cache_done (void); static size_t dtm_cache_init (size_t cache_mem); static void dtm_cache_flush (void); /*--------------------------------------------------------------------------*/ static bool_t dtm_cache_is_on (void) { return dtm_cache.cached; } static void dtm_cache_reset_counters (void) { dtm_cache.hard = 0; dtm_cache.soft = 0; dtm_cache.hardmisses = 0; dtm_cache.hits = 0; dtm_cache.softmisses = 0; dtm_cache.comparisons = 0; return; } static size_t dtm_cache_init (size_t cache_mem) { unsigned int i; dtm_block_t *p; size_t entries_per_block; size_t max_blocks; size_t block_mem; if (DTM_CACHE_INITIALIZED) dtm_cache_done(); entries_per_block = 16 * 1024; /* fixed, needed for the compression schemes */ block_mem = entries_per_block * sizeof(dtm_t); max_blocks = cache_mem / block_mem; if (!Uncompressed && 1 > max_blocks) max_blocks = 1; cache_mem = max_blocks * block_mem; dtm_cache_reset_counters (); dtm_cache.entries_per_block = entries_per_block; dtm_cache.max_blocks = max_blocks; dtm_cache.cached = TRUE; dtm_cache.top = NULL; dtm_cache.bot = NULL; dtm_cache.n = 0; if (0 == cache_mem || NULL == (dtm_cache.buffer = (dtm_t *) malloc (cache_mem))) { dtm_cache.cached = FALSE; dtm_cache.buffer = NULL; dtm_cache.entry = NULL; return 0; } if (0 == max_blocks|| NULL == (dtm_cache.entry = (dtm_block_t *) malloc (max_blocks * sizeof(dtm_block_t)))) { dtm_cache.cached = FALSE; dtm_cache.entry = NULL; free (dtm_cache.buffer); dtm_cache.buffer = NULL; return 0; } for (i = 0; i < max_blocks; i++) { p = &dtm_cache.entry[i]; p->key = -1; p->side = gtbNOSIDE; p->offset = gtbNOINDEX; p->p_arr = dtm_cache.buffer + i * entries_per_block; p->prev = NULL; p->next = NULL; } DTM_CACHE_INITIALIZED = TRUE; return cache_mem; } static void dtm_cache_done (void) { assert(DTM_CACHE_INITIALIZED); dtm_cache.cached = FALSE; dtm_cache.hard = 0; dtm_cache.soft = 0; dtm_cache.hardmisses = 0; dtm_cache.hits = 0; dtm_cache.softmisses = 0; dtm_cache.comparisons = 0; dtm_cache.max_blocks = 0; dtm_cache.entries_per_block = 0; dtm_cache.top = NULL; dtm_cache.bot = NULL; dtm_cache.n = 0; if (dtm_cache.buffer != NULL) free (dtm_cache.buffer); dtm_cache.buffer = NULL; if (dtm_cache.entry != NULL) free (dtm_cache.entry); dtm_cache.entry = NULL; DTM_CACHE_INITIALIZED = FALSE; return; } static void dtm_cache_flush (void) { unsigned int i; dtm_block_t *p; size_t entries_per_block = dtm_cache.entries_per_block; size_t max_blocks = dtm_cache.max_blocks; dtm_cache.top = NULL; dtm_cache.bot = NULL; dtm_cache.n = 0; for (i = 0; i < max_blocks; i++) { p = &dtm_cache.entry[i]; p->key = -1; p->side = gtbNOSIDE; p->offset = gtbNOINDEX; p->p_arr = dtm_cache.buffer + i * entries_per_block; p->prev = NULL; p->next = NULL; } dtm_cache_reset_counters (); return; } /*---- end tbcache zone ----------------------------------------------------------------------*/ extern bool_t tbcache_is_on (void) { return dtm_cache_is_on() || wdl_cache_is_on(); } /* STATISTICS OUTPUT */ extern void tbstats_get (struct TB_STATS *x) { long unsigned mask = 0xfffffffflu; uint64_t memory_hits, total_hits; /* | WDL CACHE \*---------------------------------------------------*/ x->wdl_easy_hits[0] = (long unsigned)(wdl_cache.hits & mask); x->wdl_easy_hits[1] = (long unsigned)(wdl_cache.hits >> 32); x->wdl_hard_prob[0] = (long unsigned)(wdl_cache.hard & mask); x->wdl_hard_prob[1] = (long unsigned)(wdl_cache.hard >> 32); x->wdl_soft_prob[0] = (long unsigned)(wdl_cache.soft & mask); x->wdl_soft_prob[1] = (long unsigned)(wdl_cache.soft >> 32); x->wdl_cachesize = WDL_cache_size; /* occupancy */ x->wdl_occupancy = wdl_cache.max_blocks==0? 0:(double)100.0*(double)wdl_cache.n/(double)wdl_cache.max_blocks; /* | DTM CACHE \*---------------------------------------------------*/ x->dtm_easy_hits[0] = (long unsigned)(dtm_cache.hits & mask); x->dtm_easy_hits[1] = (long unsigned)(dtm_cache.hits >> 32); x->dtm_hard_prob[0] = (long unsigned)(dtm_cache.hard & mask); x->dtm_hard_prob[1] = (long unsigned)(dtm_cache.hard >> 32); x->dtm_soft_prob[0] = (long unsigned)(dtm_cache.soft & mask); x->dtm_soft_prob[1] = (long unsigned)(dtm_cache.soft >> 32); x->dtm_cachesize = DTM_cache_size; /* occupancy */ x->dtm_occupancy = dtm_cache.max_blocks==0? 0:(double)100.0*(double)dtm_cache.n/(double)dtm_cache.max_blocks; /* | GENERAL \*---------------------------------------------------*/ /* memory */ memory_hits = wdl_cache.hits + dtm_cache.hits; x->memory_hits[0] = (long unsigned)(memory_hits & mask); x->memory_hits[1] = (long unsigned)(memory_hits >> 32); /* hard drive */ x->drive_hits[0] = (long unsigned)(Drive.hits & mask); x->drive_hits[1] = (long unsigned)(Drive.hits >> 32); x->drive_miss[0] = (long unsigned)(Drive.miss & mask); x->drive_miss[1] = (long unsigned)(Drive.miss >> 32); x->bytes_read[0] = (long unsigned)(Bytes_read & mask); x->bytes_read[1] = (long unsigned)(Bytes_read >> 32); x->files_opened = eg_was_open_count(); /* total */ total_hits = memory_hits + Drive.hits; x->total_hits[0] = (long unsigned)(total_hits & mask); x->total_hits[1] = (long unsigned)(total_hits >> 32); /* efficiency */ { uint64_t denominator = memory_hits + Drive.hits + Drive.miss; x->memory_efficiency = 0==denominator? 0: 100.0 * (double)(memory_hits) / (double)(denominator); } } extern bool_t tbcache_init (size_t cache_mem, int wdl_fraction) { assert (wdl_fraction <= WDL_FRACTION_MAX && wdl_fraction >= 0); /* defensive against input */ if (wdl_fraction > WDL_FRACTION_MAX) wdl_fraction = WDL_FRACTION_MAX; if (wdl_fraction < 0) wdl_fraction = 0; WDL_FRACTION = wdl_fraction; DTM_cache_size = (cache_mem/(size_t)WDL_FRACTION_MAX)*(size_t)(WDL_FRACTION_MAX-WDL_FRACTION); WDL_cache_size = (cache_mem/(size_t)WDL_FRACTION_MAX)*(size_t) WDL_FRACTION ; #ifdef WDL_PROBE /* returns the actual memory allocated */ DTM_cache_size = dtm_cache_init (DTM_cache_size); WDL_cache_size = wdl_cache_init (WDL_cache_size); #else /* returns the actual memory allocated */ DTM_cache_size = dtm_cache_init (DTM_cache_size); #endif tbstats_reset (); return TRUE; } extern bool_t tbcache_restart (size_t cache_mem, int wdl_fraction) { return tbcache_init (cache_mem, wdl_fraction); } extern void tbcache_done (void) { dtm_cache_done(); #ifdef WDL_PROBE wdl_cache_done(); #endif tbstats_reset (); return; } extern void tbcache_flush (void) { dtm_cache_flush(); #ifdef WDL_PROBE wdl_cache_flush(); #endif tbstats_reset (); return; } extern void tbstats_reset (void) { dtm_cache_reset_counters (); #ifdef WDL_PROBE wdl_cache_reset_counters (); #endif eg_was_open_reset(); Drive.hits = 0; Drive.miss = 0; return; } static dtm_block_t * dtm_cache_pointblock (tbkey_t key, unsigned side, index_t idx) { index_t offset; index_t remainder; dtm_block_t * p; dtm_block_t * ret; if (!dtm_cache_is_on()) return NULL; split_index (dtm_cache.entries_per_block, idx, &offset, &remainder); ret = NULL; for (p = dtm_cache.top; p != NULL; p = p->prev) { dtm_cache.comparisons++; if (key == p->key && side == p->side && offset == p->offset) { ret = p; break; } } FOLLOW_LU("point_to_dtm_block ok?",(ret!=NULL)) return ret; } /****************************************************************************\ | | | WRAPPERS for ENCODING/DECODING FUNCTIONS ZONE | | \****************************************************************************/ #include "gtb-dec.h" /* | | PRE LOAD CACHE AND DEPENDENT FUNCTIONS | \*--------------------------------------------------------------------------*/ struct ZIPINFO { index_t extraoffset; index_t totalblocks; index_t * blockindex; }; struct ZIPINFO Zipinfo[MAX_EGKEYS]; static index_t egtb_block_getnumber (tbkey_t key, unsigned side, index_t idx); static index_t egtb_block_getsize (tbkey_t key, index_t idx); static index_t egtb_block_getsize_zipped (tbkey_t key, index_t block ); static bool_t egtb_block_park (tbkey_t key, index_t block); static bool_t egtb_block_read (tbkey_t key, index_t len, unsigned char *buffer); static bool_t egtb_block_decode (tbkey_t key, index_t z, unsigned char *bz, index_t n, unsigned char *bp); static bool_t egtb_block_unpack (unsigned side, index_t n, const unsigned char *bp, dtm_t *out); static bool_t egtb_file_beready (tbkey_t key); static bool_t egtb_loadindexes (tbkey_t key); static index_t egtb_block_uncompressed_to_index (tbkey_t key, index_t b); static bool_t fread32 (FILE *f, unsigned long int *y); static unsigned int zipinfo_init (void) { int i, start, end; unsigned ret; bool_t ok, complet[8] = {0,0,0,0,0,0,0,0}; bool_t pa, partial[8] = {0,0,0,0,0,0,0,0}; unsigned int z; int x, j; /* reset all values */ for (i = 0; i < MAX_EGKEYS; i++) { Zipinfo[i].blockindex = NULL; Zipinfo[i].extraoffset = 0; Zipinfo[i].totalblocks = 0; } /* load all values */ start = 0; end = 5; x = 3; for (i = start, ok = TRUE, pa = FALSE; i < end; i++) { ok = NULL != fd_openit(i); pa = pa || ok; ok = ok && egtb_loadindexes (i); } complet[x] = ok; partial[x] = pa; start = 5; end = 35; x = 4; for (i = start, ok = TRUE, pa = FALSE; i < end; i++) { ok = NULL != fd_openit(i); pa = pa || ok; ok = ok && egtb_loadindexes (i); } complet[x] = ok; partial[x] = pa; start = 35; end = MAX_EGKEYS; x = 5; for (i = start, ok = TRUE, pa = FALSE; i < end; i++) { ok = NULL != fd_openit(i); pa = pa || ok; ok = ok && egtb_loadindexes (i); } complet[x] = ok; partial[x] = pa; for (j = 0, z = 0, x = 3; x < 8; x++) { if (partial[x]) z |= 1u << j; j++; if (complet[x]) z |= 1u << j; j++; } ret = z; return ret; } static void zipinfo_done (void) { int i; bool_t ok; for (i = 0, ok = TRUE; ok && i < MAX_EGKEYS; i++) { if (Zipinfo[i].blockindex != NULL) { free(Zipinfo[i].blockindex); Zipinfo[i].blockindex = NULL; Zipinfo[i].extraoffset = 0; Zipinfo[i].totalblocks = 0; } } return; } static size_t zipinfo_memory_allocated (void) { int i; index_t accum_blocks = 0; for (i = 0; i < MAX_EGKEYS; i++) { if (Zipinfo[i].blockindex != NULL) { accum_blocks += Zipinfo[i].totalblocks; } } return (size_t)accum_blocks * sizeof(index_t); } extern size_t tb_indexmemory (void) { return zipinfo_memory_allocated (); } static bool_t fread32 (FILE *f, unsigned long int *y) { enum SIZE {SZ = 4}; int i; unsigned long int x; unsigned char p[SZ]; bool_t ok; ok = (SZ == fread (p, sizeof(unsigned char), SZ, f)); if (ok) { for (x = 0, i = 0; i < SZ; i++) { x |= (unsigned long int)p[i] << (i*8); } *y = x; } return ok; } static bool_t egtb_loadindexes (tbkey_t key) { unsigned long int blocksize = 1; unsigned long int tailblocksize1 = 0; unsigned long int tailblocksize2 = 0; unsigned long int offset=0; unsigned long int dummy; unsigned long int i; unsigned long int blocks; unsigned long int n_idx; unsigned long int idx; index_t *p; bool_t ok; FILE *f; if (Uncompressed) { assert (decoding_scheme() == 0 && GTB_scheme == 0); return TRUE; /* no need to load indexes */ } if (Zipinfo[key].blockindex != NULL) return TRUE; /* indexes must have been loaded already */ if (NULL == (f = egkey[key].fd)) return FALSE; /* file was no open */ /* Get Reserved bytes, blocksize, offset */ ok = (0 == fseek (f, 0, SEEK_SET)) && fread32 (f, &dummy) && fread32 (f, &dummy) && fread32 (f, &blocksize) && fread32 (f, &dummy) && fread32 (f, &tailblocksize1) && fread32 (f, &dummy) && fread32 (f, &tailblocksize2) && fread32 (f, &dummy) && fread32 (f, &offset) && fread32 (f, &dummy); blocks = (offset - 40)/4 -1; n_idx = blocks + 1; p = NULL; ok = ok && NULL != (p = (index_t *)malloc (n_idx * sizeof(index_t))); /* Input of Indexes */ for (i = 0; ok && i < n_idx; i++) { ok = fread32 (f, &idx); p[i] = (index_t)idx; /* reads a 32 bit int, and converts it to index_t */ assert (sizeof(index_t) >= 4); } if (ok) { Zipinfo[key].extraoffset = 0; assert (n_idx <= MAXINDEX_T); Zipinfo[key].totalblocks = (index_t) n_idx; Zipinfo[key].blockindex = p; } if (!ok && p != NULL) { free(p); } return ok; } static index_t egtb_block_uncompressed_to_index (tbkey_t key, index_t b) { index_t max; index_t blocks_per_side; index_t idx; max = egkey[key].maxindex; blocks_per_side = 1 + (max-1) / (index_t)dtm_cache.entries_per_block; if (b < blocks_per_side) { idx = 0; } else { b -= blocks_per_side; idx = max; } idx += b * (index_t)dtm_cache.entries_per_block; return idx; } static index_t egtb_block_getnumber (tbkey_t key, unsigned side, index_t idx) { index_t blocks_per_side; index_t block_in_side; index_t max = egkey[key].maxindex; blocks_per_side = 1 + (max-1) / (index_t)dtm_cache.entries_per_block; block_in_side = idx / (index_t)dtm_cache.entries_per_block; return (index_t)side * blocks_per_side + block_in_side; /* block */ } static index_t egtb_block_getsize (tbkey_t key, index_t idx) { index_t blocksz = (index_t) dtm_cache.entries_per_block; index_t maxindex = egkey[key].maxindex; index_t block, offset, x; assert (dtm_cache.entries_per_block <= MAXINDEX_T); assert (0 <= idx && idx < maxindex); assert (key < MAX_EGKEYS); block = idx / blocksz; offset = block * blocksz; /* | adjust block size in case that this is the last block | and is shorter than "blocksz" */ if ( (offset + blocksz) > maxindex) x = maxindex - offset; /* last block size */ else x = blocksz; /* size of a normal block */ return x; } static index_t egtb_block_getsize_zipped (tbkey_t key, index_t block ) { index_t i, j; assert (Zipinfo[key].blockindex != NULL); i = Zipinfo[key].blockindex[block]; j = Zipinfo[key].blockindex[block+1]; return j - i; } static bool_t egtb_file_beready (tbkey_t key) { bool_t success; assert (key < MAX_EGKEYS); success = (NULL != egkey[key].fd) || (NULL != fd_openit(key) && egtb_loadindexes (key)); return success; } static bool_t egtb_block_park (tbkey_t key, index_t block) { index_t i; long fseek_i; assert (egkey[key].fd != NULL); if (Uncompressed) { assert (decoding_scheme() == 0 && GTB_scheme == 0); i = egtb_block_uncompressed_to_index (key, block); } else { assert (Zipinfo[key].blockindex != NULL); i = Zipinfo[key].blockindex[block]; i += Zipinfo[key].extraoffset; } fseek_i = (long) i; assert (fseek_i >= 0); return 0 == fseek (egkey[key].fd, fseek_i, SEEK_SET); } static bool_t egtb_block_read (tbkey_t key, index_t len, unsigned char *buffer) { assert (egkey[key].fd != NULL); assert (sizeof(size_t) >= sizeof(len)); return ((size_t)len == fread (buffer, sizeof (unsigned char), (size_t)len, egkey[key].fd)); } tbkey_t TB_PROBE_indexing_dummy; static bool_t egtb_block_decode (tbkey_t key, index_t z, unsigned char *bz, index_t n, unsigned char *bp) /* bz:buffer zipped to bp:buffer packed */ { size_t zz = (size_t) z; size_t nn = (size_t) n; TB_PROBE_indexing_dummy = key; /* to silence compiler */ assert (sizeof(size_t) >= sizeof(n)); assert (sizeof(size_t) >= sizeof(z)); return decode (zz-1, bz+1, nn, bp); } static bool_t egtb_block_unpack (unsigned side, index_t n, const unsigned char *bp, dtm_t *out) /* bp:buffer packed to out:distance to mate buffer */ { index_t i; for (i = 0; i < n; i++) { *out++ = dtm_unpack (side, bp[i]); } return TRUE; } static bool_t preload_cache (tbkey_t key, unsigned side, index_t idx) /* output to the least used block of the cache */ { dtm_block_t *pblock; dtm_t *p; bool_t ok; FOLLOW_label("preload_cache starts") if (idx >= egkey[key].maxindex) { FOLLOW_LULU("Wrong index", __LINE__, idx) return FALSE; } /* find aged blocked in cache */ pblock = point_block_to_replace(); if (NULL == pblock) return FALSE; p = pblock->p_arr; if (Uncompressed) { index_t block = egtb_block_getnumber (key, side, idx); index_t n = egtb_block_getsize (key, idx); ok = egtb_file_beready (key) && egtb_block_park (key, block) && egtb_block_read (key, n, Buffer_packed) && egtb_block_unpack (side, n, Buffer_packed, p); FOLLOW_LULU("preload_cache", __LINE__, ok) assert (decoding_scheme() == 0 && GTB_scheme == 0); if (ok) { Bytes_read = Bytes_read + (uint64_t) n; } } else { index_t block = 0; index_t n = 0; index_t z = 0; ok = egtb_file_beready (key); FOLLOW_LULU("preload_cache", __LINE__, ok) if (ok) { block = egtb_block_getnumber (key, side, idx); n = egtb_block_getsize (key, idx); z = egtb_block_getsize_zipped (key, block); } ok = ok && egtb_block_park (key, block); FOLLOW_LULU("preload_cache", __LINE__, ok) ok = ok && egtb_block_read (key, z, Buffer_zipped); FOLLOW_LULU("preload_cache", __LINE__, ok) ok = ok && egtb_block_decode (key, z, Buffer_zipped, n, Buffer_packed); FOLLOW_LULU("preload_cache", __LINE__, ok) ok = ok && egtb_block_unpack (side, n, Buffer_packed, p); FOLLOW_LULU("preload_cache", __LINE__, ok) if (ok) { Bytes_read = Bytes_read + (uint64_t) z; } } if (ok) { index_t offset; index_t remainder; split_index (dtm_cache.entries_per_block, idx, &offset, &remainder); pblock->key = key; pblock->side = side; pblock->offset = offset; } else { /* make it unusable */ pblock->key = -1; pblock->side = gtbNOSIDE; pblock->offset = gtbNOINDEX; } FOLLOW_LU("preload_cache?", ok) return ok; } /****************************************************************************\ | | | MEMORY ALLOCATION ZONE | | \****************************************************************************/ mySHARED void egtb_freemem (int i) { if (egkey[i].status == STATUS_MALLOC) { assert (egkey[i].egt_w != NULL); assert (egkey[i].egt_b != NULL); free (egkey[i].egt_w); free (egkey[i].egt_b); egkey[i].egt_w = NULL; egkey[i].egt_b = NULL; } egkey[i].status = STATUS_ABSENT; } /***************************************************************************/ mySHARED bool_t get_dtm (tbkey_t key, unsigned side, index_t idx, dtm_t *out, bool_t probe_hard_flag) { bool_t found; if (probe_hard_flag) { dtm_cache.hard++; } else { dtm_cache.soft++; } if (get_dtm_from_cache (key, side, idx, out)) { dtm_cache.hits++; found = TRUE; } else if (probe_hard_flag) { dtm_cache.hardmisses++; found = preload_cache (key, side, idx) && get_dtm_from_cache (key, side, idx, out); if (found) { Drive.hits++; } else { Drive.miss++; } } else { dtm_cache.softmisses++; found = FALSE; } return found; } static bool_t get_dtm_from_cache (tbkey_t key, unsigned side, index_t idx, dtm_t *out) { index_t offset; index_t remainder; bool_t found; dtm_block_t *p; if (!dtm_cache_is_on()) return FALSE; split_index (dtm_cache.entries_per_block, idx, &offset, &remainder); found = NULL != (p = dtm_cache_pointblock (key, side, idx)); if (found) { *out = p->p_arr[remainder]; movetotop(p); } FOLLOW_LU("get_dtm_from_cache ok?",found) return found; } static void split_index (size_t entries_per_block, index_t i, index_t *o, index_t *r) { index_t n; n = i / (index_t) entries_per_block; *o = n * (index_t) entries_per_block; *r = i - *o; return; } static dtm_block_t * point_block_to_replace (void) { dtm_block_t *p, *t, *s; assert (0 == dtm_cache.n || dtm_cache.top != NULL); assert (0 == dtm_cache.n || dtm_cache.bot != NULL); assert (0 == dtm_cache.n || dtm_cache.bot->prev == NULL); assert (0 == dtm_cache.n || dtm_cache.top->next == NULL); /* no cache is being used */ if (dtm_cache.max_blocks == 0) return NULL; if (dtm_cache.n > 0 && -1 == dtm_cache.top->key) { /* top entry is unusable, should be the one to replace*/ p = dtm_cache.top; } else if (dtm_cache.n == 0) { assert (NULL != dtm_cache.entry); p = &dtm_cache.entry[dtm_cache.n++]; dtm_cache.top = p; dtm_cache.bot = p; assert (NULL != p); p->prev = NULL; p->next = NULL; } else if (dtm_cache.n < dtm_cache.max_blocks) { /* add */ assert (NULL != dtm_cache.entry); s = dtm_cache.top; p = &dtm_cache.entry[dtm_cache.n++]; dtm_cache.top = p; assert (NULL != p && NULL != s); s->next = p; p->prev = s; p->next = NULL; } else if (1 < dtm_cache.max_blocks) { /* replace*/ assert (NULL != dtm_cache.bot && NULL != dtm_cache.top); t = dtm_cache.bot; s = dtm_cache.top; dtm_cache.bot = t->next; dtm_cache.top = t; s->next = t; t->prev = s; assert (dtm_cache.top); dtm_cache.top->next = NULL; assert (dtm_cache.bot); dtm_cache.bot->prev = NULL; p = t; } else { assert (1 == dtm_cache.max_blocks); p = dtm_cache.top; assert (p == dtm_cache.bot && p == dtm_cache.entry); } /* make the information content unusable, it will be replaced */ p->key = -1; p->side = gtbNOSIDE; p->offset = gtbNOINDEX; return p; } static void movetotop (dtm_block_t *t) { dtm_block_t *s, *nx, *pv; assert (t != NULL); if (t->next == NULL) /* at the top already */ return; /* detach */ pv = t->prev; nx = t->next; if (pv == NULL) /* at the bottom */ dtm_cache.bot = nx; else pv->next = nx; if (nx == NULL) /* at the top */ dtm_cache.top = pv; else nx->prev = pv; /* relocate */ s = dtm_cache.top; assert (s != NULL); if (s == NULL) dtm_cache.bot = t; else s->next = t; t->next = NULL; t->prev = s; dtm_cache.top = t; return; } /****************************************************************************\ * * * INDEXING ZONE * * ****************************************************************************/ static void init_indexing (int verbosity) { index_t a,b,c,d,e,f; init_flipt (); a = init_kkidx () ; b = init_ppidx () ; c = init_aaidx () ; d = init_aaa () ; e = init_pp48_idx () ; f = init_ppp48_idx () ; if (verbosity) { printf ("\nGTB supporting tables, Initialization\n"); printf (" Max kk idx: %8d\n", (int)a ); printf (" Max pp idx: %8d\n", (int)b ); printf (" Max aa idx: %8d\n", (int)c ); printf (" Max aaa idx: %8d\n", (int)d ); printf (" Max pp48 idx: %8d\n", (int)e ); printf (" Max ppp48 idx: %8d\n", (int)f ); } if (!reach_was_initialized()) reach_init(); /* testing used only in development stage */ #ifdef _MSC_VER #pragma warning(disable:4127) #endif if (0) { list_index (); printf ("\nTEST indexing functions\n"); test_kaakb (); test_kaabk (); test_kaaak (); test_kabbk (); test_kapkb (); test_kabkp (); test_kppka (); test_kapkp (); test_kabpk(); test_kaapk (); test_kappk (); test_kaakp (); test_kppk (); test_kppkp (); test_kpppk (); } #ifdef _MSC_VER #pragma warning(default:4127) #endif return; } static index_t init_kkidx (void) /* modifies kkidx[][], wksq[], bksq[] */ { index_t idx; SQUARE x, y, i, j; /* default is noindex */ for (x = 0; x < 64; x++) { for (y = 0; y < 64; y++) { IDX_set_empty(kkidx [x][y]); } } idx = 0; for (x = 0; x < 64; x++) { for (y = 0; y < 64; y++) { /* is x,y illegal? continue */ if (possible_attack (x, y, wK) || x == y) continue; /* normalize */ /*i <-- x; j <-- y */ norm_kkindex (x, y, &i, &j); if (IDX_is_empty(kkidx [i][j])) { /* still empty */ kkidx [i][j] = idx; kkidx [x][y] = idx; bksq [idx] = i; wksq [idx] = j; idx++; } } } assert (idx == MAX_KKINDEX); return idx; } static index_t init_aaidx (void) /* modifies aabase[], aaidx[][] */ { index_t idx; SQUARE x, y; /* default is noindex */ for (x = 0; x < 64; x++) { for (y = 0; y < 64; y++) { IDX_set_empty(aaidx [x][y]); } } for (idx = 0; idx < MAX_AAINDEX; idx++) aabase [idx] = 0; idx = 0; for (x = 0; x < 64; x++) { for (y = x + 1; y < 64; y++) { assert (idx == (int)((y - x) + x * (127-x)/2 - 1) ); if (IDX_is_empty(aaidx [x][y])) { /* still empty */ aaidx [x] [y] = idx; aaidx [y] [x] = idx; aabase [idx] = (unsigned char) x; idx++; } else { assert (aaidx [x] [y] == idx); assert (aabase [idx] == x); } } } assert (idx == MAX_AAINDEX); return idx; } static index_t init_ppidx (void) /* modifies ppidx[][], pp_hi24[], pp_lo48[] */ { index_t i, j; index_t idx = 0; SQUARE a, b; /* default is noindex */ for (i = 0; i < 24; i++) { for (j = 0; j < 48; j++) { IDX_set_empty(ppidx [i][j]); } } for (idx = 0; idx < MAX_PPINDEX; idx++) { IDX_set_empty(pp_hi24 [idx]); IDX_set_empty(pp_lo48 [idx]); } idx = 0; for (a = H7; a >= A2; a--) { if ((a & 07) < 4) /* square in the queen side */ continue; for (b = a - 1; b >= A2; b--) { SQUARE anchor, loosen; pp_putanchorfirst (a, b, &anchor, &loosen); if ((anchor & 07) > 3) { /* square in the king side */ anchor = flipWE(anchor); loosen = flipWE(loosen); } i = wsq_to_pidx24 (anchor); j = wsq_to_pidx48 (loosen); if (IDX_is_empty(ppidx [i] [j])) { ppidx [i] [j] = idx; assert (idx < MAX_PPINDEX); pp_hi24 [idx] = i; assert (i < 24); pp_lo48 [idx] = j; assert (j < 48); idx++; } } } assert (idx == MAX_PPINDEX); return idx; } static void init_flipt (void) { unsigned int i, j; for (i = 0; i < 64; i++) { for (j = 0; j < 64; j++) { flipt [i] [j] = flip_type (i, j); } } } /*--- NORMALIZE -------*/ static void norm_kkindex (SQUARE x, SQUARE y, /*@out@*/ SQUARE *pi, /*@out@*/ SQUARE *pj) { unsigned int rowx, rowy, colx, coly; assert (x < 64); assert (y < 64); if (getcol(x) > 3) { x = flipWE (x); /* x = x ^ 07 */ y = flipWE (y); } if (getrow(x) > 3) { x = flipNS (x); /* x = x ^ 070 */ y = flipNS (y); } rowx = getrow(x); colx = getcol(x); if ( rowx > colx ) { x = flipNW_SE (x); /* x = ((x&7)<<3) | (x>>3) */ y = flipNW_SE (y); } rowy = getrow(y); coly = getcol(y); if ( rowx == colx && rowy > coly) { x = flipNW_SE (x); y = flipNW_SE (y); } *pi = x; *pj = y; } static unsigned int flip_type (SQUARE x, SQUARE y) { unsigned int rowx, rowy, colx, coly; unsigned int ret = 0; assert (x < 64); assert (y < 64); if (getcol(x) > 3) { x = flipWE (x); /* x = x ^ 07 */ y = flipWE (y); ret |= 1; } if (getrow(x) > 3) { x = flipNS (x); /* x = x ^ 070 */ y = flipNS (y); ret |= 2; } rowx = getrow(x); colx = getcol(x); if ( rowx > colx ) { x = flipNW_SE (x); /* x = ((x&7)<<3) | (x>>3) */ y = flipNW_SE (y); ret |= 4; } rowy = getrow(y); coly = getcol(y); if ( rowx == colx && rowy > coly) { x = flipNW_SE (x); y = flipNW_SE (y); ret |= 4; } return ret; } static void pp_putanchorfirst (SQUARE a, SQUARE b, /*@out@*/ SQUARE *out_anchor, /*@out@*/ SQUARE *out_loosen) { unsigned int anchor, loosen; unsigned int row_b, row_a; row_b = b & 070; row_a = a & 070; /* default */ anchor = a; loosen = b; if (row_b > row_a) { anchor = b; loosen = a; } else if (row_b == row_a) { unsigned int x, col, inv, hi_a, hi_b; x = a; col = x & 07; inv = col ^ 07; x = (1u< hi_a) { anchor = b; loosen = a; } if (hi_b < hi_a) { anchor = a; loosen = b; } if (hi_b == hi_a) { if (a < b) { anchor = a; loosen = b; } else { anchor = b; loosen = a; } } } *out_anchor = anchor; *out_loosen = loosen; return; } static index_t wsq_to_pidx24 (SQUARE pawn) { unsigned int idx24; SQUARE sq = pawn; /* input can be only queen side, pawn valid */ assert (A2 <= pawn && pawn < A8); assert ((pawn & 07) < 4); sq ^= 070; /* flipNS*/ sq -= 8; /* down one row*/ idx24 = (sq+(sq&3)) >> 1; assert (idx24 < 24); return (index_t) idx24; } static index_t wsq_to_pidx48 (SQUARE pawn) { unsigned int idx48; SQUARE sq = pawn; /* input can be both queen or king side, pawn valid square */ assert (A2 <= pawn && pawn < A8); sq ^= 070; /* flipNS*/ sq -= 8; /* down one row*/ idx48 = sq; assert (idx48 < 48); return (index_t)idx48; } static SQUARE pidx24_to_wsq (index_t a) { enum {B11100 = 7u << 2}; unsigned int x = (unsigned int) a; /* x is pslice */ assert (a < 24); x += x & B11100; /* get upper part and double it */ x += 8; /* add extra row */ x ^= 070; /* flip NS */ return (SQUARE) x; } static SQUARE pidx48_to_wsq (index_t a) { unsigned int x; assert (a < 48); /* x is pslice */ x = (unsigned int)a; x += 8; /* add extra row */ x ^= 070; /* flip NS */ return x; } static void kxk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum {BLOCK_A = 64}; index_t a = i / BLOCK_A; index_t b = i - a * BLOCK_A; pw[0] = wksq [a]; pb[0] = bksq [a]; pw[1] = (SQUARE) b; pw[2] = NOSQUARE; pb[1] = NOSQUARE; assert (kxk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kxk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out) { enum {BLOCK_A = 64}; SQUARE *p; SQUARE ws[32], bs[32]; index_t ki; int i; unsigned int ft; ft = flip_type (inp_pb[0],inp_pw[0]); assert (ft < 8); for (i = 0; inp_pw[i] != NOSQUARE; i++) { ws[i] = inp_pw[i]; } ws[i] = NOSQUARE; for (i = 0; inp_pb[i] != NOSQUARE; i++) { bs[i] = inp_pb[i]; } bs[i] = NOSQUARE; if ((ft & 1) != 0) { for (p = ws; *p != NOSQUARE; p++) *p = flipWE (*p); for (p = bs; *p != NOSQUARE; p++) *p = flipWE (*p); } if ((ft & 2) != 0) { for (p = ws; *p != NOSQUARE; p++) *p = flipNS (*p); for (p = bs; *p != NOSQUARE; p++) *p = flipNS (*p); } if ((ft & 4) != 0) { for (p = ws; *p != NOSQUARE; p++) *p = flipNW_SE (*p); for (p = bs; *p != NOSQUARE; p++) *p = flipNW_SE (*p); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ if (IDX_is_empty(ki)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + (index_t) ws[1]; return TRUE; } static void kabk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t a, b, c, r; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; pw[0] = wksq [a]; pb[0] = bksq [a]; pw[1] = (SQUARE) b; pw[2] = (SQUARE) c; pw[3] = NOSQUARE; pb[1] = NOSQUARE; assert (kabk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kabk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; SQUARE *p; SQUARE ws[32], bs[32]; index_t ki; int i; unsigned int ft; ft = flip_type (inp_pb[0],inp_pw[0]); assert (ft < 8); for (i = 0; inp_pw[i] != NOSQUARE; i++) { ws[i] = inp_pw[i]; } ws[i] = NOSQUARE; for (i = 0; inp_pb[i] != NOSQUARE; i++) { bs[i] = inp_pb[i]; } bs[i] = NOSQUARE; if ((ft & 1) != 0) { for (p = ws; *p != NOSQUARE; p++) *p = flipWE (*p); for (p = bs; *p != NOSQUARE; p++) *p = flipWE (*p); } if ((ft & 2) != 0) { for (p = ws; *p != NOSQUARE; p++) *p = flipNS (*p); for (p = bs; *p != NOSQUARE; p++) *p = flipNS (*p); } if ((ft & 4) != 0) { for (p = ws; *p != NOSQUARE; p++) *p = flipNW_SE (*p); for (p = bs; *p != NOSQUARE; p++) *p = flipNW_SE (*p); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ if (IDX_is_empty(ki)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + (index_t)ws[1] * BLOCK_B + (index_t)ws[2]; return TRUE; } static void kabkc_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t a, b, c, d, r; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; pw[0] = wksq [a]; pb[0] = bksq [a]; pw[1] = (SQUARE) b; pw[2] = (SQUARE) c; pw[3] = NOSQUARE; pb[1] = (SQUARE) d; pb[2] = NOSQUARE; assert (kabkc_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kabkc_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out) { enum {N_WHITE = 3, N_BLACK = 2}; enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; SQUARE ws[MAX_LISTSIZE], bs[MAX_LISTSIZE]; index_t ki; int i; unsigned int ft; #if 0 ft = flip_type (inp_pb[0], inp_pw[0]); #else ft = flipt [inp_pb[0]] [inp_pw[0]]; #endif assert (ft < 8); for (i = 0; i < N_WHITE; i++) ws[i] = inp_pw[i]; ws[N_WHITE] = NOSQUARE; for (i = 0; i < N_BLACK; i++) bs[i] = inp_pb[i]; bs[N_BLACK] = NOSQUARE; if ((ft & WE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipWE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipWE (bs[i]); } if ((ft & NS_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNS (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNS (bs[i]); } if ((ft & NW_SE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNW_SE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNW_SE (bs[i]); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ if (IDX_is_empty(ki)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + (index_t)ws[1] * BLOCK_B + (index_t)ws[2] * BLOCK_C + (index_t)bs[1]; return TRUE; } /* ABC/ ***/ extern void kabck_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t a, b, c, d, r; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; pw[0] = wksq [a]; pb[0] = bksq [a]; pw[1] = (SQUARE) b; pw[2] = (SQUARE) c; pw[3] = (SQUARE) d; pw[4] = NOSQUARE; pb[1] = NOSQUARE; assert (kabck_pctoindex (pw, pb, &a) && a == i); return; } extern bool_t kabck_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out) { enum {N_WHITE = 4, N_BLACK = 1}; enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; SQUARE ws[MAX_LISTSIZE], bs[MAX_LISTSIZE]; index_t ki; int i; unsigned int ft; ft = flipt [inp_pb[0]] [inp_pw[0]]; assert (ft < 8); for (i = 0; i < N_WHITE; i++) ws[i] = inp_pw[i]; ws[N_WHITE] = NOSQUARE; for (i = 0; i < N_BLACK; i++) bs[i] = inp_pb[i]; bs[N_BLACK] = NOSQUARE; if ((ft & WE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipWE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipWE (bs[i]); } if ((ft & NS_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNS (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNS (bs[i]); } if ((ft & NW_SE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNW_SE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNW_SE (bs[i]); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ if (IDX_is_empty(ki)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + (index_t)ws[1] * BLOCK_B + (index_t)ws[2] * BLOCK_C + (index_t)ws[3]; return TRUE; } static void kakb_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t a, b, c, r; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; pw[0] = wksq [a]; pb[0] = bksq [a]; pw[1] = (SQUARE) b; pw[2] = NOSQUARE; pb[1] = (SQUARE) c; pb[2] = NOSQUARE; assert (kakb_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kakb_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; SQUARE ws[32], bs[32]; index_t ki; unsigned int ft; #if 0 ft = flip_type (inp_pb[0], inp_pw[0]); #else ft = flipt [inp_pb[0]] [inp_pw[0]]; #endif assert (ft < 8); ws[0] = inp_pw[0]; ws[1] = inp_pw[1]; ws[2] = NOSQUARE; bs[0] = inp_pb[0]; bs[1] = inp_pb[1]; bs[2] = NOSQUARE; if ((ft & 1) != 0) { ws[0] = flipWE (ws[0]); ws[1] = flipWE (ws[1]); bs[0] = flipWE (bs[0]); bs[1] = flipWE (bs[1]); } if ((ft & 2) != 0) { ws[0] = flipNS (ws[0]); ws[1] = flipNS (ws[1]); bs[0] = flipNS (bs[0]); bs[1] = flipNS (bs[1]); } if ((ft & 4) != 0) { ws[0] = flipNW_SE (ws[0]); ws[1] = flipNW_SE (ws[1]); bs[0] = flipNW_SE (bs[0]); bs[1] = flipNW_SE (bs[1]); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ if (IDX_is_empty(ki)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + (index_t)ws[1] * BLOCK_B + (index_t)bs[1]; return TRUE; } /********************** KAAKB *************************************/ static bool_t test_kaakb (void); static bool_t kaakb_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kaakb_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kaakb (void) { enum {MAXPC = 16+1}; char str[] = "kaakb"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = NOSQUARE; pb[0] = d; pb[1] = e; pb[2] = NOSQUARE; if (kaakb_pctoindex (pw, pb, &i)) { kaakb_indextopc (i, px, py); kaakb_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kaakb_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum { BLOCK_B = 64, BLOCK_A = BLOCK_B * MAX_AAINDEX }; index_t a, b, c, r, x, y; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; assert (i == (a * BLOCK_A + b * BLOCK_B + c)); pw[0] = wksq [a]; pb[0] = bksq [a]; x = aabase [b]; y = (b + 1) + x - (x * (127-x)/2); pw[1] = (SQUARE) x; pw[2] = (SQUARE) y; pw[3] = NOSQUARE; pb[1] = (SQUARE) c; pb[2] = NOSQUARE; assert (kaakb_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kaakb_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out) { enum {N_WHITE = 3, N_BLACK = 2}; enum { BLOCK_B = 64, BLOCK_A = BLOCK_B * MAX_AAINDEX }; SQUARE ws[MAX_LISTSIZE], bs[MAX_LISTSIZE]; index_t ki, ai; unsigned int ft; int i; ft = flipt [inp_pb[0]] [inp_pw[0]]; assert (ft < 8); for (i = 0; i < N_WHITE; i++) ws[i] = inp_pw[i]; ws[N_WHITE] = NOSQUARE; for (i = 0; i < N_BLACK; i++) bs[i] = inp_pb[i]; bs[N_BLACK] = NOSQUARE; if ((ft & WE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipWE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipWE (bs[i]); } if ((ft & NS_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNS (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNS (bs[i]); } if ((ft & NW_SE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNW_SE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNW_SE (bs[i]); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ ai = aaidx [ws[1]] [ws[2]]; if (IDX_is_empty(ki) || IDX_is_empty(ai)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + ai * BLOCK_B + (index_t)bs[1]; return TRUE; } /****************** End KAAKB *************************************/ /********************** KAAB/K ************************************/ static bool_t test_kaabk (void); static bool_t kaabk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kaabk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kaabk (void) { enum {MAXPC = 16+1}; char str[] = "kaabk"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = d; pw[4] = NOSQUARE; pb[0] = e; pb[1] = NOSQUARE; if (kaabk_pctoindex (pw, pb, &i)) { kaabk_indextopc (i, px, py); kaabk_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kaabk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum { BLOCK_B = 64, BLOCK_A = BLOCK_B * MAX_AAINDEX }; index_t a, b, c, r, x, y; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; assert (i == (a * BLOCK_A + b * BLOCK_B + c)); pw[0] = wksq [a]; pb[0] = bksq [a]; x = aabase [b]; y = (b + 1) + x - (x * (127-x)/2); pw[1] = (SQUARE) x; pw[2] = (SQUARE) y; pw[3] = (SQUARE) c; pw[4] = NOSQUARE; pb[1] = NOSQUARE; assert (kaabk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kaabk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out) { enum {N_WHITE = 4, N_BLACK = 1}; enum { BLOCK_B = 64, BLOCK_A = BLOCK_B * MAX_AAINDEX }; SQUARE ws[MAX_LISTSIZE], bs[MAX_LISTSIZE]; index_t ki, ai; unsigned int ft; int i; ft = flipt [inp_pb[0]] [inp_pw[0]]; assert (ft < 8); for (i = 0; i < N_WHITE; i++) ws[i] = inp_pw[i]; ws[N_WHITE] = NOSQUARE; for (i = 0; i < N_BLACK; i++) bs[i] = inp_pb[i]; bs[N_BLACK] = NOSQUARE; if ((ft & WE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipWE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipWE (bs[i]); } if ((ft & NS_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNS (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNS (bs[i]); } if ((ft & NW_SE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNW_SE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNW_SE (bs[i]); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ ai = aaidx [ws[1]] [ws[2]]; if (IDX_is_empty(ki) || IDX_is_empty(ai)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + ai * BLOCK_B + (index_t)ws[3]; return TRUE; } /****************** End KAAB/K *************************************/ /********************** KABB/K ************************************/ static bool_t test_kabbk (void); static bool_t kabbk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kabbk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kabbk (void) { enum {MAXPC = 16+1}; char str[] = "kabbk"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = d; pw[4] = NOSQUARE; pb[0] = e; pb[1] = NOSQUARE; if (kabbk_pctoindex (pw, pb, &i)) { kabbk_indextopc (i, px, py); kabbk_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kabbk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum { BLOCK_B = 64, BLOCK_A = BLOCK_B * MAX_AAINDEX }; index_t a, b, c, r, x, y; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; assert (i == (a * BLOCK_A + b * BLOCK_B + c)); pw[0] = wksq [a]; pb[0] = bksq [a]; x = aabase [b]; y = (b + 1) + x - (x * (127-x)/2); pw[1] = (SQUARE) c; pw[2] = (SQUARE) x; pw[3] = (SQUARE) y; pw[4] = NOSQUARE; pb[1] = NOSQUARE; assert (kabbk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kabbk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, /*@out@*/ index_t *out) { enum {N_WHITE = 4, N_BLACK = 1}; enum { BLOCK_B = 64, BLOCK_A = BLOCK_B * MAX_AAINDEX }; SQUARE ws[MAX_LISTSIZE], bs[MAX_LISTSIZE]; index_t ki, ai; unsigned int ft; int i; ft = flipt [inp_pb[0]] [inp_pw[0]]; assert (ft < 8); for (i = 0; i < N_WHITE; i++) ws[i] = inp_pw[i]; ws[N_WHITE] = NOSQUARE; for (i = 0; i < N_BLACK; i++) bs[i] = inp_pb[i]; bs[N_BLACK] = NOSQUARE; if ((ft & WE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipWE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipWE (bs[i]); } if ((ft & NS_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNS (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNS (bs[i]); } if ((ft & NW_SE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNW_SE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNW_SE (bs[i]); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ ai = aaidx [ws[2]] [ws[3]]; if (IDX_is_empty(ki) || IDX_is_empty(ai)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + ai * BLOCK_B + (index_t)ws[1]; return TRUE; } /********************** End KABB/K *************************************/ /********************** init KAAA/K ************************************/ static index_t aaa_getsubi (sq_t x, sq_t y, sq_t z); static sq_t aaa_xyz [MAX_AAAINDEX] [3]; static index_t aaa_base [64]; static index_t init_aaa (void) /* modifies aaa_base[], aaa_xyz[][] */ { index_t comb [64]; index_t accum; index_t a; index_t idx; SQUARE x, y, z; /* getting aaa_base */ comb [0] = 0; for (a = 1; a < 64; a++) { comb [a] = a * (a-1) / 2; } accum = 0; aaa_base [0] = accum; for (a = 0; a < (64-1); a++) { accum += comb[a]; aaa_base [a+1] = accum; } assert ((accum + comb[63]) == MAX_AAAINDEX); /* end getting aaa_base */ /* initialize aaa_xyz [][] */ for (idx = 0; idx < MAX_AAAINDEX; idx++) { IDX_set_empty (aaa_xyz[idx][0]); IDX_set_empty (aaa_xyz[idx][1]); IDX_set_empty (aaa_xyz[idx][2]); } idx = 0; for (z = 0; z < 64; z++) { for (y = 0; y < z; y++) { for (x = 0; x < y; x++) { assert (idx == aaa_getsubi (x, y, z)); aaa_xyz [idx] [0] = x; aaa_xyz [idx] [1] = y; aaa_xyz [idx] [2] = z; idx++; } } } assert (idx == MAX_AAAINDEX); return idx; } static index_t aaa_getsubi (sq_t x, sq_t y, sq_t z) /* uses aaa_base */ { index_t calc_idx, base; assert (x < 64 && y < 64 && z < 64); assert (x < y && y < z); base = aaa_base[z]; calc_idx = (index_t)x + ((index_t)y - 1) * (index_t)y / 2 + base; return calc_idx; } /********************** KAAA/K ************************************/ static bool_t test_kaaak (void); static bool_t kaaak_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kaaak_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kaaak (void) { enum {MAXPC = 16+1}; char str[] = "kaaak"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = d; pw[4] = NOSQUARE; pb[0] = e; pb[1] = NOSQUARE; if (kaaak_pctoindex (pw, pb, &i)) { kaaak_indextopc (i, px, py); kaaak_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kaaak_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum { BLOCK_A = MAX_AAAINDEX }; index_t a, b, r; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r; assert (i == (a * BLOCK_A + b)); assert (b < BLOCK_A); pw[0] = wksq [a]; pb[0] = bksq [a]; pw[1] = aaa_xyz [b] [0]; pw[2] = aaa_xyz [b] [1]; pw[3] = aaa_xyz [b] [2]; pw[4] = NOSQUARE; pb[1] = NOSQUARE; assert (kaaak_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kaaak_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out) { enum {N_WHITE = 4, N_BLACK = 1}; enum { BLOCK_A = MAX_AAAINDEX }; SQUARE ws[MAX_LISTSIZE], bs[MAX_LISTSIZE]; index_t ki, ai; unsigned int ft; int i; ft = flipt [inp_pb[0]] [inp_pw[0]]; assert (ft < 8); for (i = 0; i < N_WHITE; i++) ws[i] = inp_pw[i]; ws[N_WHITE] = NOSQUARE; for (i = 0; i < N_BLACK; i++) bs[i] = inp_pb[i]; bs[N_BLACK] = NOSQUARE; if ((ft & WE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipWE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipWE (bs[i]); } if ((ft & NS_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNS (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNS (bs[i]); } if ((ft & NW_SE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNW_SE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNW_SE (bs[i]); } { SQUARE tmp; if (ws[2] < ws[1]) { tmp = ws[1]; ws[1] = ws[2]; ws[2] = tmp; } if (ws[3] < ws[2]) { tmp = ws[2]; ws[2] = ws[3]; ws[3] = tmp; } if (ws[2] < ws[1]) { tmp = ws[1]; ws[1] = ws[2]; ws[2] = tmp; } } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ /*128 == (128 & (((ws[1]^ws[2])-1) | ((ws[1]^ws[3])-1) | ((ws[2]^ws[3])-1)) */ if (ws[1] == ws[2] || ws[1] == ws[3] || ws[2] == ws[3]) { *out = NOINDEX; return FALSE; } ai = aaa_getsubi ( ws[1], ws[2], ws[3] ); if (IDX_is_empty(ki) || IDX_is_empty(ai)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + ai; return TRUE; } /****************** End KAAB/K *************************************/ /********************** KAP/KB ************************************/ static bool_t test_kapkb (void); static bool_t kapkb_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kapkb_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kapkb (void) { enum {MAXPC = 16+1}; char str[] = "kapkb"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (c <= H1 || c >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = NOSQUARE; pb[0] = e; pb[1] = d; pb[2] = NOSQUARE; if (kapkb_pctoindex (pw, pb, &i)) { kapkb_indextopc (i, px, py); kapkb_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kapkb_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d * BLOCK_D + e; *----------------------------------------------------------*/ enum {B11100 = 7u << 2}; enum {BLOCK_A = 64*64*64*64, BLOCK_B = 64*64*64, BLOCK_C = 64*64, BLOCK_D = 64}; index_t a, b, c, d, e, r; index_t x; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r / BLOCK_D; r -= d * BLOCK_D; e = r; /* x is pslice */ x = a; x += x & B11100; /* get upper part and double it */ x += 8; /* add extra row */ x ^= 070; /* flip NS */ pw[0] = (SQUARE) b; pb[0] = (SQUARE) c; pw[1] = (SQUARE) d; pw[2] = (SQUARE) x; pw[3] = NOSQUARE; pb[1] = (SQUARE) e; pb[2] = NOSQUARE; assert (kapkb_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kapkb_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64*64, BLOCK_B = 64*64*64, BLOCK_C = 64*64, BLOCK_D = 64}; index_t pslice; SQUARE sq; SQUARE pawn = pw[2]; SQUARE wa = pw[1]; SQUARE wk = pw[0]; SQUARE bk = pb[0]; SQUARE ba = pb[1]; assert (A2 <= pawn && pawn < A8); if ( !(A2 <= pawn && pawn < A8)) { *out = NOINDEX; return FALSE; } if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); ba = flipWE (ba); } sq = pawn; sq ^= 070; /* flipNS*/ sq -= 8; /* down one row*/ pslice = (index_t) ((sq+(sq&3)) >> 1); *out = pslice * BLOCK_A + (index_t)wk * BLOCK_B + (index_t)bk * BLOCK_C + (index_t)wa * BLOCK_D + (index_t)ba; return TRUE; } /********************** end KAP/KB ************************************/ /************************* KAB/KP ************************************/ static bool_t test_kabkp (void); static bool_t kabkp_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kabkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kabkp (void) { enum {MAXPC = 16+1}; char str[] = "kabkp"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (d <= H1 || d >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = NOSQUARE; pb[0] = e; pb[1] = d; pb[2] = NOSQUARE; if (kabkp_pctoindex (pw, pb, &i)) { kabkp_indextopc (i, px, py); kabkp_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kabkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d * BLOCK_D + e; *----------------------------------------------------------*/ enum {B11100 = 7u << 2}; enum {BLOCK_A = 64*64*64*64, BLOCK_B = 64*64*64, BLOCK_C = 64*64, BLOCK_D = 64}; index_t a, b, c, d, e, r; index_t x; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r / BLOCK_D; r -= d * BLOCK_D; e = r; /* x is pslice */ x = a; x += x & B11100; /* get upper part and double it */ x += 8; /* add extra row */ /*x ^= 070;*/ /* do not flip NS */ pw[0] = (SQUARE) b; pb[0] = (SQUARE) c; pw[1] = (SQUARE) d; pw[2] = (SQUARE) e; pw[3] = NOSQUARE; pb[1] = (SQUARE) x; pb[2] = NOSQUARE; assert (kabkp_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kabkp_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64*64, BLOCK_B = 64*64*64, BLOCK_C = 64*64, BLOCK_D = 64}; index_t pslice; SQUARE sq; SQUARE pawn = pb[1]; SQUARE wa = pw[1]; SQUARE wk = pw[0]; SQUARE bk = pb[0]; SQUARE wb = pw[2]; assert (A2 <= pawn && pawn < A8); if ( !(A2 <= pawn && pawn < A8)) { *out = NOINDEX; return FALSE; } if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); wb = flipWE (wb); } sq = pawn; /*sq ^= 070;*/ /* do not flipNS*/ sq -= 8; /* down one row*/ pslice = (index_t) ((sq+(sq&3)) >> 1); *out = pslice * BLOCK_A + (index_t)wk * BLOCK_B + (index_t)bk * BLOCK_C + (index_t)wa * BLOCK_D + (index_t)wb; return TRUE; } /********************** end KAB/KP ************************************/ static void kpk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c; *----------------------------------------------------------*/ enum {B11100 = 7u << 2}; enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t a, b, c, r; index_t x; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; /* x is pslice */ x = a; x += x & B11100; /* get upper part and double it */ x += 8; /* add extra row */ x ^= 070; /* flip NS */ pw[1] = (SQUARE) x; pw[0] = (SQUARE) b; pb[0] = (SQUARE) c; pw[2] = NOSQUARE; pb[1] = NOSQUARE; assert (kpk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kpk_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t pslice; SQUARE sq; SQUARE pawn = pw[1]; SQUARE wk = pw[0]; SQUARE bk = pb[0]; #ifdef DEBUG if ( !(A2 <= pawn && pawn < A8)) { SQ_CONTENT wp[MAX_LISTSIZE], bp[MAX_LISTSIZE]; bp [0] = wp[0] = KING; wp[1] = PAWN; wp[2] = bp[1] = NOPIECE; output_state (0, pw, pb, wp, bp); } #endif assert (A2 <= pawn && pawn < A8); if ( !(A2 <= pawn && pawn < A8)) { *out = NOINDEX; return FALSE; } if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); } sq = pawn; sq ^= 070; /* flipNS*/ sq -= 8; /* down one row*/ pslice = (index_t) ((sq+(sq&3)) >> 1); *out = pslice * BLOCK_A + (index_t)wk * BLOCK_B + (index_t)bk; return TRUE; } /********************** KPP/K ************************************/ static bool_t test_kppk (void); static bool_t kppk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kppk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kppk (void) { enum {MAXPC = 16+1}; char str[] = "kppk"; SQUARE a, b, c, d; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { sq_t anchor1, anchor2, loosen1, loosen2; if (c <= H1 || c >= A8) continue; if (b <= H1 || b >= A8) continue; pp_putanchorfirst (b, c, &anchor1, &loosen1); pp_putanchorfirst (c, b, &anchor2, &loosen2); if (!(anchor1 == anchor2 && loosen1 == loosen2)) { printf ("Output depends on input in pp_outanchorfirst()\n input:%u, %u\n",(unsigned)b,(unsigned)c); fatal_error(); } } } for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { if (c <= H1 || c >= A8) continue; if (b <= H1 || b >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = NOSQUARE; pb[0] = d; pb[1] = NOSQUARE; if (kppk_pctoindex (pw, pb, &i)) { kppk_indextopc (i, px, py); kppk_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kppk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c; *----------------------------------------------------------*/ enum {B11100 = 7u << 2}; enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t a, b, c, r; index_t m, n; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; m = pp_hi24 [a]; n = pp_lo48 [a]; pw[0] = (SQUARE) b; pb[0] = (SQUARE) c; pb[1] = NOSQUARE; pw[1] = pidx24_to_wsq (m); pw[2] = pidx48_to_wsq (n); pw[3] = NOSQUARE; assert (A2 <= pw[1] && pw[1] < A8); assert (A2 <= pw[2] && pw[2] < A8); #ifdef DEBUG if (!(kppk_pctoindex (pw, pb, &a) && a == i)) { pc_t wp[] = {KING, PAWN, PAWN, NOPIECE}; pc_t bp[] = {KING, NOPIECE}; printf("Indexes not matching: input:%d, output:%d\n", i, a); print_pos (pw, pb, wp, bp); } #endif assert (kppk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kppk_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t pp_slice; SQUARE anchor, loosen; SQUARE wk = pw[0]; SQUARE pawn_a = pw[1]; SQUARE pawn_b = pw[2]; SQUARE bk = pb[0]; index_t i, j; #ifdef DEBUG if (!(A2 <= pawn_a && pawn_a < A8)) { printf ("\n\nsquare of pawn_a: %s\n", Square_str[pawn_a]); printf(" wk %s\n p1 %s\n p2 %s\n bk %s\n" , Square_str[wk] , Square_str[pawn_a] , Square_str[pawn_b] , Square_str[bk] ); } #endif assert (A2 <= pawn_a && pawn_a < A8); assert (A2 <= pawn_b && pawn_b < A8); pp_putanchorfirst (pawn_a, pawn_b, &anchor, &loosen); if ((anchor & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ anchor = flipWE (anchor); loosen = flipWE (loosen); wk = flipWE (wk); bk = flipWE (bk); } i = wsq_to_pidx24 (anchor); j = wsq_to_pidx48 (loosen); pp_slice = ppidx [i] [j]; if (IDX_is_empty(pp_slice)) { *out = NOINDEX; return FALSE; } assert (pp_slice < MAX_PPINDEX ); *out = pp_slice * BLOCK_A + (index_t)wk * BLOCK_B + (index_t)bk; return TRUE; } /****************** end KPP/K ************************************/ static void kakp_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {B11100 = 7u << 2}; enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t a, b, c, d, r; index_t x; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; /* x is pslice */ x = a; x += x & B11100; /* get upper part and double it */ x += 8; /* add extra row */ /* x ^= 070; */ /* flip NS */ pw[0] = (SQUARE) b; pb[0] = (SQUARE) c; pw[1] = (SQUARE) d; pb[1] = (SQUARE) x; pw[2] = NOSQUARE; pb[2] = NOSQUARE; assert (kakp_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kakp_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t pslice; SQUARE sq; SQUARE pawn = pb[1]; SQUARE wa = pw[1]; SQUARE wk = pw[0]; SQUARE bk = pb[0]; assert (A2 <= pawn && pawn < A8); if ( !(A2 <= pawn && pawn < A8)) { *out = NOINDEX; return FALSE; } if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); } sq = pawn; /*sq ^= 070;*/ /* flipNS*/ sq -= 8; /* down one row*/ pslice = (index_t) ((sq+(sq&3)) >> 1); *out = pslice * BLOCK_A + (index_t)wk * BLOCK_B + (index_t)bk * BLOCK_C + (index_t)wa; return TRUE; } static void kapk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {B11100 = 7u << 2}; enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t a, b, c, d, r; index_t x; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; /* x is pslice */ x = a; x += x & B11100; /* get upper part and double it */ x += 8; /* add extra row */ x ^= 070; /* flip NS */ pw[0] = (SQUARE) b; pb[0] = (SQUARE) c; pw[1] = (SQUARE) d; pw[2] = (SQUARE) x; pw[3] = NOSQUARE; pb[1] = NOSQUARE; assert (kapk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kapk_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t pslice; SQUARE sq; SQUARE pawn = pw[2]; SQUARE wa = pw[1]; SQUARE wk = pw[0]; SQUARE bk = pb[0]; assert (A2 <= pawn && pawn < A8); if ( !(A2 <= pawn && pawn < A8)) { *out = NOINDEX; return FALSE; } if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); } sq = pawn; sq ^= 070; /* flipNS*/ sq -= 8; /* down one row*/ pslice = (index_t) ((sq+(sq&3)) >> 1); *out = pslice * BLOCK_A + (index_t)wk * BLOCK_B + (index_t)bk * BLOCK_C + (index_t)wa; return TRUE; } static void kaak_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { enum {BLOCK_A = MAX_AAINDEX}; index_t a, b, r, x, y; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r; assert (i == (a * BLOCK_A + b)); pw[0] = wksq [a]; pb[0] = bksq [a]; x = aabase [b]; y = (b + 1) + x - (x * (127-x)/2); pw[1] = (SQUARE) x; pw[2] = (SQUARE) y; pw[3] = NOSQUARE; pb[1] = NOSQUARE; assert (kaak_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kaak_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out) { enum {N_WHITE = 3, N_BLACK = 1}; enum {BLOCK_A = MAX_AAINDEX}; SQUARE ws[MAX_LISTSIZE], bs[MAX_LISTSIZE]; index_t ki, ai; unsigned int ft; SQUARE i; ft = flipt [inp_pb[0]] [inp_pw[0]]; assert (ft < 8); for (i = 0; i < N_WHITE; i++) ws[i] = inp_pw[i]; ws[N_WHITE] = NOSQUARE; for (i = 0; i < N_BLACK; i++) bs[i] = inp_pb[i]; bs[N_BLACK] = NOSQUARE; if ((ft & WE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipWE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipWE (bs[i]); } if ((ft & NS_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNS (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNS (bs[i]); } if ((ft & NW_SE_FLAG) != 0) { for (i = 0; i < N_WHITE; i++) ws[i] = flipNW_SE (ws[i]); for (i = 0; i < N_BLACK; i++) bs[i] = flipNW_SE (bs[i]); } ki = kkidx [bs[0]] [ws[0]]; /* kkidx [black king] [white king] */ ai = (index_t) aaidx [ws[1]] [ws[2]]; if (IDX_is_empty(ki) || IDX_is_empty(ai)) { *out = NOINDEX; return FALSE; } *out = ki * BLOCK_A + ai; return TRUE; } /********************** KPP/KA ************************************/ static bool_t test_kppka (void); static bool_t kppka_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kppka_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kppka (void) { enum {MAXPC = 16+1}; char str[] = "kppka"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (c <= H1 || c >= A8) continue; if (b <= H1 || b >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = NOSQUARE; pb[0] = e; pb[1] = d; pb[2] = NOSQUARE; if (kppka_pctoindex (pw, pb, &i)) { kppka_indextopc (i, px, py); kppka_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kppka_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t a, b, c, d, r; index_t m, n; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; m = pp_hi24 [a]; n = pp_lo48 [a]; pw[0] = (SQUARE) b; pw[1] = pidx24_to_wsq (m); pw[2] = pidx48_to_wsq (n); pw[3] = NOSQUARE; pb[0] = (SQUARE) c; pb[1] = (SQUARE) d; pb[2] = NOSQUARE; assert (A2 <= pw[1] && pw[1] < A8); assert (A2 <= pw[2] && pw[2] < A8); assert (kppka_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kppka_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t pp_slice; index_t i, j; SQUARE anchor, loosen; SQUARE wk = pw[0]; SQUARE pawn_a = pw[1]; SQUARE pawn_b = pw[2]; SQUARE bk = pb[0]; SQUARE ba = pb[1]; assert (A2 <= pawn_a && pawn_a < A8); assert (A2 <= pawn_b && pawn_b < A8); pp_putanchorfirst (pawn_a, pawn_b, &anchor, &loosen); if ((anchor & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ anchor = flipWE (anchor); loosen = flipWE (loosen); wk = flipWE (wk); bk = flipWE (bk); ba = flipWE (ba); } i = wsq_to_pidx24 (anchor); j = wsq_to_pidx48 (loosen); pp_slice = ppidx [i] [j]; if (IDX_is_empty(pp_slice)) { *out = NOINDEX; return FALSE; } assert (pp_slice < MAX_PPINDEX ); *out = pp_slice * (index_t)BLOCK_A + (index_t)wk * (index_t)BLOCK_B + (index_t)bk * (index_t)BLOCK_C + (index_t)ba; return TRUE; } /********************** end KPP/KA ************************************/ /********************** KAPP/K ************************************/ static bool_t test_kappk (void); static bool_t kappk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kappk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kappk (void) { enum {MAXPC = 16+1}; char str[] = "kappk"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (c <= H1 || c >= A8) continue; if (b <= H1 || b >= A8) continue; pw[0] = a; pw[1] = d; pw[2] = b; pw[3] = c; pw[4] = NOSQUARE; pb[0] = e; pb[1] = NOSQUARE; if (kappk_pctoindex (pw, pb, &i)) { kappk_indextopc (i, px, py); kappk_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kappk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t a, b, c, d, r; index_t m, n; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; m = pp_hi24 [a]; n = pp_lo48 [a]; pw[0] = (SQUARE) b; pw[1] = (SQUARE) d; pw[2] = pidx24_to_wsq (m); pw[3] = pidx48_to_wsq (n); pw[4] = NOSQUARE; pb[0] = (SQUARE) c; pb[1] = NOSQUARE; assert (A2 <= pw[3] && pw[3] < A8); assert (A2 <= pw[2] && pw[2] < A8); assert (kappk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kappk_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t pp_slice; SQUARE anchor, loosen; SQUARE wk = pw[0]; SQUARE wa = pw[1]; SQUARE pawn_a = pw[2]; SQUARE pawn_b = pw[3]; SQUARE bk = pb[0]; index_t i, j; assert (A2 <= pawn_a && pawn_a < A8); assert (A2 <= pawn_b && pawn_b < A8); pp_putanchorfirst (pawn_a, pawn_b, &anchor, &loosen); if ((anchor & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ anchor = flipWE (anchor); loosen = flipWE (loosen); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); } i = wsq_to_pidx24 (anchor); j = wsq_to_pidx48 (loosen); pp_slice = ppidx [i] [j]; if (IDX_is_empty(pp_slice)) { *out = NOINDEX; return FALSE; } assert (pp_slice < MAX_PPINDEX ); *out = pp_slice * (index_t)BLOCK_A + (index_t)wk * (index_t)BLOCK_B + (index_t)bk * (index_t)BLOCK_C + (index_t)wa; return TRUE; } /********************** end KAPP/K ************************************/ /********************** KAPP/K ************************************/ static bool_t test_kapkp (void); static bool_t kapkp_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kapkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kapkp (void) { enum {MAXPC = 16+1}; char str[] = "kapkp"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (c <= H1 || c >= A8) continue; if (b <= H1 || b >= A8) continue; pw[0] = a; pw[1] = d; pw[2] = b; pw[3] = NOSQUARE; pb[0] = e; pb[1] = c; pb[2] = NOSQUARE; if (kapkp_pctoindex (pw, pb, &i)) { kapkp_indextopc (i, px, py); kapkp_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static bool_t kapkp_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t pp_slice; SQUARE anchor, loosen; SQUARE wk = pw[0]; SQUARE wa = pw[1]; SQUARE pawn_a = pw[2]; SQUARE bk = pb[0]; SQUARE pawn_b = pb[1]; index_t m, n; assert (A2 <= pawn_a && pawn_a < A8); assert (A2 <= pawn_b && pawn_b < A8); assert (pw[3] == NOSQUARE && pb[2] == NOSQUARE); anchor = pawn_a; loosen = pawn_b; if ((anchor & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ anchor = flipWE (anchor); loosen = flipWE (loosen); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); } m = wsq_to_pidx24 (anchor); n = (index_t)loosen - 8; pp_slice = m * 48 + n; if (IDX_is_empty(pp_slice)) { *out = NOINDEX; return FALSE; } assert (pp_slice < (64*MAX_PpINDEX) ); *out = pp_slice * (index_t)BLOCK_A + (index_t)wk * (index_t)BLOCK_B + (index_t)bk * (index_t)BLOCK_C + (index_t)wa; return TRUE; } static void kapkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {BLOCK_A = 64*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; enum {block_m = 48}; index_t a, b, c, d, r; index_t m, n; SQUARE sq_m, sq_n; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; /* unpack a, which is pslice, into m and n */ r = a; m = r / block_m; r -= m * block_m; n = r ; sq_m = pidx24_to_wsq (m); sq_n = (SQUARE) n + 8; pw[0] = (SQUARE) b; pb[0] = (SQUARE) c; pw[1] = (SQUARE) d; pw[2] = sq_m; pb[1] = sq_n; pw[3] = NOSQUARE; pb[2] = NOSQUARE; assert (A2 <= sq_m && sq_m < A8); assert (A2 <= sq_n && sq_n < A8); assert (kapkp_pctoindex (pw, pb, &a) && a == i); return; } /********************** end KAP/KP ************************************/ /********************** KABP/K ************************************/ static bool_t test_kabpk (void); static bool_t kabpk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kabpk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kabpk (void) { enum {MAXPC = 16+1}; char str[] = "kabpk"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (d <= H1 || d >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = d; pw[4] = NOSQUARE; pb[0] = e; pb[1] = NOSQUARE; if (kabpk_pctoindex (pw, pb, &i)) { kabpk_indextopc (i, px, py); kabpk_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kabpk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d * BLOCK_D + e; *----------------------------------------------------------*/ enum {BLOCK_A = 64*64*64*64, BLOCK_B = 64*64*64, BLOCK_C = 64*64, BLOCK_D = 64}; index_t a, b, c, d, e, r; SQUARE x; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r / BLOCK_D; r -= d * BLOCK_D; e = r; x = pidx24_to_wsq(a); pw[0] = (SQUARE) b; pw[1] = (SQUARE) d; pw[2] = (SQUARE) e; pw[3] = x; pw[4] = NOSQUARE; pb[0] = (SQUARE) c; pb[1] = NOSQUARE; assert (kabpk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kabpk_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64*64*64, BLOCK_B = 64*64*64, BLOCK_C = 64*64, BLOCK_D = 64}; index_t pslice; SQUARE wk = pw[0]; SQUARE wa = pw[1]; SQUARE wb = pw[2]; SQUARE pawn = pw[3]; SQUARE bk = pb[0]; assert (A2 <= pawn && pawn < A8); if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); wb = flipWE (wb); } pslice = wsq_to_pidx24 (pawn); *out = pslice * (index_t)BLOCK_A + (index_t)wk * (index_t)BLOCK_B + (index_t)bk * (index_t)BLOCK_C + (index_t)wa * (index_t)BLOCK_D + (index_t)wb; return TRUE; } /********************** end KABP/K ************************************/ /********************** KAAP/K ************************************/ static bool_t test_kaapk (void); static bool_t kaapk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kaapk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kaapk (void) { enum {MAXPC = 16+1}; char str[] = "kaapk"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (d <= H1 || d >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = d; pw[4] = NOSQUARE; pb[0] = e; pb[1] = NOSQUARE; if (kaapk_pctoindex (pw, pb, &i)) { kaapk_indextopc (i, px, py); kaapk_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kaapk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {BLOCK_C = MAX_AAINDEX ,BLOCK_B = 64*BLOCK_C ,BLOCK_A = 64*BLOCK_B }; index_t a, b, c, d, r; index_t x, y, z; assert (i >= 0); r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; z = (index_t) pidx24_to_wsq(a); /* split d into x, y*/ x = aabase [d]; y = (d + 1) + x - (x * (127-x)/2); assert (aaidx[x][y] == aaidx[y][x]); assert (aaidx[x][y] == d); pw[0] = (SQUARE) b; pw[1] = (SQUARE) x; pw[2] = (SQUARE) y; pw[3] = (SQUARE) z; pw[4] = NOSQUARE; pb[0] = (SQUARE) c; pb[1] = NOSQUARE; assert (kaapk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kaapk_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_C = MAX_AAINDEX ,BLOCK_B = 64*BLOCK_C ,BLOCK_A = 64*BLOCK_B }; index_t aa_combo, pslice; SQUARE wk = pw[0]; SQUARE wa = pw[1]; SQUARE wa2 = pw[2]; SQUARE pawn = pw[3]; SQUARE bk = pb[0]; assert (A2 <= pawn && pawn < A8); if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); wa2 = flipWE (wa2); } pslice = wsq_to_pidx24 (pawn); aa_combo = (index_t) aaidx [wa] [wa2]; if (IDX_is_empty(aa_combo)) { *out = NOINDEX; return FALSE; } *out = pslice * (index_t)BLOCK_A + (index_t)wk * (index_t)BLOCK_B + (index_t)bk * (index_t)BLOCK_C + aa_combo; assert (*out >= 0); return TRUE; } /********************** end KAAP/K ************************************/ /********************** KAA/KP ************************************/ static bool_t test_kaakp (void); static bool_t kaakp_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kaakp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static bool_t test_kaakp (void) { enum {MAXPC = 16+1}; char str[] = "kaakp"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (d <= H1 || d >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = NOSQUARE; pb[0] = e; pb[1] = d; pb[2] = NOSQUARE; if (kaakp_pctoindex (pw, pb, &i)) { kaakp_indextopc (i, px, py); kaakp_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kaakp_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {BLOCK_C = MAX_AAINDEX ,BLOCK_B = 64*BLOCK_C ,BLOCK_A = 64*BLOCK_B }; index_t a, b, c, d, r; index_t x, y, z; SQUARE zq; assert (i >= 0); r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; zq = pidx24_to_wsq(a); z = (index_t)flipNS(zq); /* split d into x, y*/ x = aabase [d]; y = (d + 1) + x - (x * (127-x)/2); assert (aaidx[x][y] == aaidx[y][x]); assert (aaidx[x][y] == d); pw[0] = (SQUARE)b; pw[1] = (SQUARE)x; pw[2] = (SQUARE)y; pw[3] = NOSQUARE; pb[0] = (SQUARE)c; pb[1] = (SQUARE)z; pb[2] = NOSQUARE; assert (kaakp_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kaakp_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_C = MAX_AAINDEX ,BLOCK_B = 64*BLOCK_C ,BLOCK_A = 64*BLOCK_B }; index_t aa_combo, pslice; SQUARE wk = pw[0]; SQUARE wa = pw[1]; SQUARE wa2 = pw[2]; SQUARE bk = pb[0]; SQUARE pawn = pb[1]; assert (A2 <= pawn && pawn < A8); if ((pawn & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ pawn = flipWE (pawn); wk = flipWE (wk); bk = flipWE (bk); wa = flipWE (wa); wa2 = flipWE (wa2); } pawn = flipNS(pawn); pslice = wsq_to_pidx24 (pawn); aa_combo = (index_t)aaidx [wa] [wa2]; if (IDX_is_empty(aa_combo)) { *out = NOINDEX; return FALSE; } *out = pslice * (index_t)BLOCK_A + (index_t)wk * (index_t)BLOCK_B + (index_t)bk * (index_t)BLOCK_C + aa_combo; assert (*out >= 0); return TRUE; } /********************** end KAA/KP ************************************/ /********************** KPP/KP ************************************/ /* index_t pp48_idx[48][48]; sq_t pp48_sq_x[MAX_PP48_INDEX]; sq_t pp48_sq_y[MAX_PP48_INDEX]; */ static bool_t test_kppkp (void); static bool_t kppkp_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kppkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static sq_t map24_b (sq_t s); static sq_t unmap24_b (index_t i); static index_t init_pp48_idx (void) /* modifies pp48_idx[][], pp48_sq_x[], pp48_sq_y[] */ { enum {MAX_I = 48, MAX_J = 48}; SQUARE i, j; index_t idx = 0; SQUARE a, b; /* default is noindex */ for (i = 0; i < MAX_I; i++) { for (j = 0; j < MAX_J; j++) { IDX_set_empty (pp48_idx [i][j]); } } for (idx = 0; idx < MAX_PP48_INDEX; idx++) { pp48_sq_x [idx] = NOSQUARE; pp48_sq_y [idx] = NOSQUARE; } idx = 0; for (a = H7; a >= A2; a--) { for (b = a - 1; b >= A2; b--) { i = flipWE( flipNS (a) ) - 8; j = flipWE( flipNS (b) ) - 8; if (IDX_is_empty(pp48_idx [i] [j])) { pp48_idx [i][j]= idx; assert (idx < MAX_PP48_INDEX); pp48_idx [j][i]= idx; pp48_sq_x [idx] = i; assert (i < MAX_I); pp48_sq_y [idx] = j; assert (j < MAX_J); idx++; } } } assert (idx == MAX_PP48_INDEX); return idx; } static bool_t test_kppkp (void) { enum {MAXPC = 16+1}; char str[] = "kppkp"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (c <= H1 || c >= A8) continue; if (b <= H1 || b >= A8) continue; if (d <= H1 || d >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = NOSQUARE; pb[0] = e; pb[1] = d; pb[2] = NOSQUARE; if (kppkp_pctoindex (pw, pb, &i)) { kppkp_indextopc (i, px, py); kppkp_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kppkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {BLOCK_A = MAX_PP48_INDEX*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t a, b, c, d, r; SQUARE m, n; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r / BLOCK_C; r -= c * BLOCK_C; d = r; m = pp48_sq_x [b]; n = pp48_sq_y [b]; pw[0] = (SQUARE)c; pw[1] = flipWE(flipNS(m+8)); pw[2] = flipWE(flipNS(n+8)); pw[3] = NOSQUARE; pb[0] = (SQUARE)d; pb[1] = (SQUARE)unmap24_b (a); pb[2] = NOSQUARE; assert (A2 <= pw[1] && pw[1] < A8); assert (A2 <= pw[2] && pw[2] < A8); assert (A2 <= pb[1] && pb[1] < A8); assert (kppkp_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kppkp_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = MAX_PP48_INDEX*64*64, BLOCK_B = 64*64, BLOCK_C = 64}; index_t pp48_slice; SQUARE wk = pw[0]; SQUARE pawn_a = pw[1]; SQUARE pawn_b = pw[2]; SQUARE bk = pb[0]; SQUARE pawn_c = pb[1]; SQUARE i, j, k; assert (A2 <= pawn_a && pawn_a < A8); assert (A2 <= pawn_b && pawn_b < A8); assert (A2 <= pawn_c && pawn_c < A8); if ((pawn_c & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ wk = flipWE (wk); pawn_a = flipWE (pawn_a); pawn_b = flipWE (pawn_b); bk = flipWE (bk); pawn_c = flipWE (pawn_c); } i = flipWE( flipNS (pawn_a) ) - 8; j = flipWE( flipNS (pawn_b) ) - 8; k = map24_b (pawn_c); /* black pawn, so low indexes mean more advanced 0 == A2 */ pp48_slice = pp48_idx [i] [j]; if (IDX_is_empty(pp48_slice)) { *out = NOINDEX; return FALSE; } assert (pp48_slice < MAX_PP48_INDEX ); *out = (index_t)k * (index_t)BLOCK_A + pp48_slice * (index_t)BLOCK_B + (index_t)wk * (index_t)BLOCK_C + (index_t)bk; return TRUE; } static sq_t map24_b (sq_t s) { s -= 8; return ((s&3)+s)>>1; } static sq_t unmap24_b (index_t i) { return (sq_t) ((i&(4+8+16)) + i + 8); } /********************** end KPP/KP ************************************/ /********************** KPPP/K ************************************/ static const sq_t itosq[48] = { H7,G7,F7,E7, H6,G6,F6,E6, H5,G5,F5,E5, H4,G4,F4,E4, H3,G3,F3,E3, H2,G2,F2,E2, D7,C7,B7,A7, D6,C6,B6,A6, D5,C5,B5,A5, D4,C4,B4,A4, D3,C3,B3,A3, D2,C2,B2,A2 }; static bool_t test_kpppk (void); static bool_t kpppk_pctoindex (const SQUARE *inp_pw, const SQUARE *inp_pb, index_t *out); static void kpppk_indextopc (index_t i, SQUARE *pw, SQUARE *pb); static index_t init_ppp48_idx (void) /* modifies ppp48_idx[][], ppp48_sq_x[], ppp48_sq_y[], ppp48_sq_z[] */ { enum {MAX_I = 48, MAX_J = 48, MAX_K = 48}; SQUARE i, j, k; index_t idx = 0; SQUARE a, b, c; int x, y, z; /* default is noindex */ for (i = 0; i < MAX_I; i++) { for (j = 0; j < MAX_J; j++) { for (k = 0; k < MAX_K; k++) { IDX_set_empty(ppp48_idx [i][j][k]); } } } for (idx = 0; idx < MAX_PPP48_INDEX; idx++) { ppp48_sq_x [idx] = (uint8_t)NOSQUARE; ppp48_sq_y [idx] = (uint8_t)NOSQUARE; ppp48_sq_z [idx] = (uint8_t)NOSQUARE; } idx = 0; for (x = 0; x < 48; x++) { for (y = x+1; y < 48; y++) { for (z = y+1; z < 48; z++) { a = itosq [x]; b = itosq [y]; c = itosq [z]; if (!in_queenside(b) || !in_queenside(c)) continue; i = a - 8; j = b - 8; k = c - 8; if (IDX_is_empty(ppp48_idx [i] [j] [k])) { ppp48_idx [i][j][k] = idx; ppp48_idx [i][k][j] = idx; ppp48_idx [j][i][k] = idx; ppp48_idx [j][k][i] = idx; ppp48_idx [k][i][j] = idx; ppp48_idx [k][j][i] = idx; ppp48_sq_x [idx] = (uint8_t) i; assert (i < MAX_I); ppp48_sq_y [idx] = (uint8_t) j; assert (j < MAX_J); ppp48_sq_z [idx] = (uint8_t) k; assert (k < MAX_K); idx++; } } } } /* assert (idx == MAX_PPP48_INDEX);*/ return idx; } static bool_t test_kpppk (void) { enum {MAXPC = 16+1}; char str[] = "kpppk"; SQUARE a, b, c, d, e; SQUARE pw[MAXPC], pb[MAXPC]; SQUARE px[MAXPC], py[MAXPC]; index_t i, j; bool_t err = FALSE; printf ("%8s ", str); for (a = 0; a < 64; a++) { for (b = 0; b < 64; b++) { for (c = 0; c < 64; c++) { for (d = 0; d < 64; d++) { for (e = 0; e < 64; e++) { if (c <= H1 || c >= A8) continue; if (b <= H1 || b >= A8) continue; if (d <= H1 || d >= A8) continue; pw[0] = a; pw[1] = b; pw[2] = c; pw[3] = d; pw[4] = NOSQUARE; pb[0] = e; pb[1] = NOSQUARE; if (kpppk_pctoindex (pw, pb, &i)) { kpppk_indextopc (i, px, py); kpppk_pctoindex (px, py, &j); if (i != j) { err = TRUE; } assert (i == j); } } } } } if ((a&1)==0) { printf("."); fflush(stdout); } } if (err) printf ("> %s NOT passed\n", str); else printf ("> %s PASSED\n", str); return !err; } static void kpppk_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c * BLOCK_C + d; *----------------------------------------------------------*/ enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t a, b, c, r; SQUARE m, n, o; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; m = ppp48_sq_x [a]; n = ppp48_sq_y [a]; o = ppp48_sq_z [a]; pw[0] = (SQUARE)b; pw[1] = m + 8; pw[2] = n + 8; pw[3] = o + 8; pw[4] = NOSQUARE; pb[0] = (SQUARE)c; pb[1] = NOSQUARE; assert (A2 <= pw[1] && pw[1] < A8); assert (A2 <= pw[2] && pw[2] < A8); assert (A2 <= pw[3] && pw[3] < A8); assert (kpppk_pctoindex (pw, pb, &a) && a == i); return; } static bool_t kpppk_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; index_t ppp48_slice; SQUARE wk = pw[0]; SQUARE pawn_a = pw[1]; SQUARE pawn_b = pw[2]; SQUARE pawn_c = pw[3]; SQUARE bk = pb[0]; SQUARE i, j, k; assert (A2 <= pawn_a && pawn_a < A8); assert (A2 <= pawn_b && pawn_b < A8); assert (A2 <= pawn_c && pawn_c < A8); i = pawn_a - 8; j = pawn_b - 8; k = pawn_c - 8; ppp48_slice = ppp48_idx [i] [j] [k]; if (IDX_is_empty(ppp48_slice)) { wk = flipWE (wk); pawn_a = flipWE (pawn_a); pawn_b = flipWE (pawn_b); pawn_c = flipWE (pawn_c); bk = flipWE (bk); } i = pawn_a - 8; j = pawn_b - 8; k = pawn_c - 8; ppp48_slice = ppp48_idx [i] [j] [k]; if (IDX_is_empty(ppp48_slice)) { *out = NOINDEX; return FALSE; } assert (ppp48_slice < MAX_PPP48_INDEX ); *out = (index_t)ppp48_slice * BLOCK_A + (index_t)wk * BLOCK_B + (index_t)bk; return TRUE; } /********************** end KPPP/K ************************************/ static bool_t kpkp_pctoindex (const SQUARE *pw, const SQUARE *pb, index_t *out) { enum {BLOCK_A = 64*64, BLOCK_B = 64}; SQUARE pp_slice; SQUARE anchor, loosen; SQUARE wk = pw[0]; SQUARE bk = pb[0]; SQUARE pawn_a = pw[1]; SQUARE pawn_b = pb[1]; SQUARE m, n; #ifdef DEBUG if (!(A2 <= pawn_a && pawn_a < A8)) { printf ("\n\nsquare of pawn_a: %s\n", Square_str[pawn_a]); printf(" wk %s\n p1 %s\n p2 %s\n bk %s\n" , Square_str[wk] , Square_str[pawn_a] , Square_str[pawn_b] , Square_str[bk] ); } #endif assert (A2 <= pawn_a && pawn_a < A8); assert (A2 <= pawn_b && pawn_b < A8); assert (pw[2] == NOSQUARE && pb[2] == NOSQUARE); /*pp_putanchorfirst (pawn_a, pawn_b, &anchor, &loosen);*/ anchor = pawn_a; loosen = pawn_b; if ((anchor & 07) > 3) { /* column is more than 3. e.g. = e,f,g, or h */ anchor = flipWE (anchor); loosen = flipWE (loosen); wk = flipWE (wk); bk = flipWE (bk); } m = (SQUARE)wsq_to_pidx24 (anchor); n = loosen - 8; pp_slice = m * 48 + n; if (IDX_is_empty(pp_slice)) { *out = NOINDEX; return FALSE; } assert (pp_slice < MAX_PpINDEX ); *out = (index_t) (pp_slice * BLOCK_A + wk * BLOCK_B + bk); return TRUE; } static void kpkp_indextopc (index_t i, SQUARE *pw, SQUARE *pb) { /*---------------------------------------------------------* inverse work to make sure that the following is valid index = a * BLOCK_A + b * BLOCK_B + c; *----------------------------------------------------------*/ enum {B11100 = 7u << 2}; enum {BLOCK_A = 64*64, BLOCK_B = 64}; enum {block_m = 48}; index_t a, b, c, r; index_t m, n; SQUARE sq_m, sq_n; r = i; a = r / BLOCK_A; r -= a * BLOCK_A; b = r / BLOCK_B; r -= b * BLOCK_B; c = r; /* unpack a, which is pslice, into m and n */ r = a; m = r / block_m; r -= m * block_m; n = r ; sq_m = pidx24_to_wsq (m); sq_n = (SQUARE)n + 8; pw[0] = (SQUARE)b; pb[0] = (SQUARE)c; pw[1] = sq_m; pb[1] = sq_n; pw[2] = NOSQUARE; pb[2] = NOSQUARE; assert (A2 <= pw[1] && pw[1] < A8); assert (A2 <= pb[1] && pb[1] < A8); return; } /****************************************************************************\ * * * DEBUG ZONE * * ****************************************************************************/ #if defined(DEBUG) static void print_pos (const sq_t *ws, const sq_t *bs, const pc_t *wp, const pc_t *bp) { int i; printf ("White: "); for (i = 0; ws[i] != NOSQUARE; i++) { printf ("%s%s ", P_str[wp[i]], Square_str[ws[i]]); } printf ("\nBlack: "); for (i = 0; bs[i] != NOSQUARE; i++) { printf ("%s%s ", P_str[bp[i]], Square_str[bs[i]]); } printf ("\n"); } #endif #if defined(DEBUG) || defined(FOLLOW_EGTB) static void output_state (unsigned stm, const SQUARE *wSQ, const SQUARE *bSQ, const SQ_CONTENT *wPC, const SQ_CONTENT *bPC) { int i; assert (stm == WH || stm == BL); printf("\n%s to move\n", stm==WH?"White":"Black"); printf("W: "); for (i = 0; wSQ[i] != NOSQUARE; i++) { printf("%s%s ", P_str[wPC[i]], Square_str[wSQ[i]]); } printf("\n"); printf("B: "); for (i = 0; bSQ[i] != NOSQUARE; i++) { printf("%s%s ", P_str[bPC[i]], Square_str[bSQ[i]]); } printf("\n\n"); } #endif static void list_index (void) { enum {START_GTB = 0, END_GTB = (MAX_EGKEYS)}; int i; index_t accum = 0; printf ("\nIndex for each GTB\n"); printf ("%3s: %7s %7s %7s %7s\n" , "i", "TB", "RAM-slice", "RAM-max", "HD-cumulative"); for (i = START_GTB; i < END_GTB; i++) { index_t indiv_k = egkey[i].maxindex * (index_t)sizeof(dtm_t) * 2/1024; accum += indiv_k; printf ("%3d: %7s %8luk %8luk %8luM\n", i, egkey[i].str, (long unsigned)(indiv_k/egkey[i].slice_n), (long unsigned)indiv_k, (long unsigned)accum/1024/2); } printf ("\n"); return; } /************************************************************************************************************** NEW_WDL **************************************************************************************************************/ /*---------------------------------------------------------------------*\ | WDL CACHE Implementation ZONE \*---------------------------------------------------------------------*/ /* | WDL CACHE Statics \*---------------------------------------------------------------------*/ /*--------------------------------------------------------------------------*/ static unsigned int wdl_extract (unit_t *uarr, index_t x); static wdl_block_t * wdl_point_block_to_replace (void); static void wdl_movetotop (wdl_block_t *t); #if 0 static bool_t wdl_cache_init (size_t cache_mem); static void wdl_cache_flush (void); static bool_t get_WDL (tbkey_t key, unsigned side, index_t idx, unsigned int *info_out, bool_t probe_hard_flag); #endif static bool_t wdl_cache_is_on (void); static void wdl_cache_reset_counters (void); static void wdl_cache_done (void); static wdl_block_t * wdl_point_block_to_replace (void); static bool_t get_WDL_from_cache (tbkey_t key, unsigned side, index_t idx, unsigned int *out); static void wdl_movetotop (wdl_block_t *t); static bool_t wdl_preload_cache (tbkey_t key, unsigned side, index_t idx); /*--------------------------------------------------------------------------*/ /*---------------------------------------------------------------------*\ | WDL CACHE Maintainance \*---------------------------------------------------------------------*/ static size_t wdl_cache_init (size_t cache_mem) { unsigned int i; wdl_block_t *p; size_t entries_per_block; size_t max_blocks; size_t block_mem; if (WDL_CACHE_INITIALIZED) wdl_cache_done(); entries_per_block = 16 * 1024; /* fixed, needed for the compression schemes */ WDL_units_per_block = entries_per_block / WDL_entries_per_unit; block_mem = WDL_units_per_block * sizeof(unit_t); max_blocks = cache_mem / block_mem; cache_mem = max_blocks * block_mem; wdl_cache_reset_counters (); wdl_cache.entries_per_block = entries_per_block; wdl_cache.max_blocks = max_blocks; wdl_cache.cached = TRUE; wdl_cache.top = NULL; wdl_cache.bot = NULL; wdl_cache.n = 0; if (0 == cache_mem || NULL == (wdl_cache.buffer = (unit_t *) malloc (cache_mem))) { wdl_cache.cached = FALSE; return 0; } if (0 == max_blocks|| NULL == (wdl_cache.blocks = (wdl_block_t *) malloc (max_blocks * sizeof(wdl_block_t)))) { wdl_cache.cached = FALSE; free (wdl_cache.buffer); return 0; } for (i = 0; i < max_blocks; i++) { p = &wdl_cache.blocks[i]; p->key = -1; p->side = gtbNOSIDE; p->offset = gtbNOINDEX; p->p_arr = wdl_cache.buffer + i * WDL_units_per_block; p->prev = NULL; p->next = NULL; } WDL_CACHE_INITIALIZED = TRUE; return cache_mem; } static void wdl_cache_done (void) { assert(WDL_CACHE_INITIALIZED); wdl_cache.cached = FALSE; wdl_cache.hard = 0; wdl_cache.soft = 0; wdl_cache.hardmisses = 0; wdl_cache.hits = 0; wdl_cache.softmisses = 0; wdl_cache.comparisons = 0; wdl_cache.max_blocks = 0; wdl_cache.entries_per_block = 0; wdl_cache.top = NULL; wdl_cache.bot = NULL; wdl_cache.n = 0; if (wdl_cache.buffer != NULL) free (wdl_cache.buffer); wdl_cache.buffer = NULL; if (wdl_cache.blocks != NULL) free (wdl_cache.blocks); wdl_cache.blocks = NULL; WDL_CACHE_INITIALIZED = FALSE; return; } static void wdl_cache_flush (void) { unsigned int i; wdl_block_t *p; size_t max_blocks = wdl_cache.max_blocks; wdl_cache.top = NULL; wdl_cache.bot = NULL; wdl_cache.n = 0; for (i = 0; i < max_blocks; i++) { p = &wdl_cache.blocks[i]; p->key = -1; p->side = gtbNOSIDE; p->offset = gtbNOINDEX; p->p_arr = wdl_cache.buffer + i * WDL_units_per_block; p->prev = NULL; p->next = NULL; } wdl_cache_reset_counters (); return; } static void wdl_cache_reset_counters (void) { wdl_cache.hard = 0; wdl_cache.soft = 0; wdl_cache.hardmisses = 0; wdl_cache.hits = 0; wdl_cache.softmisses = 0; wdl_cache.comparisons = 0; return; } static bool_t wdl_cache_is_on (void) { return wdl_cache.cached; } /****************************************************************************\ | Replacement \****************************************************************************/ static wdl_block_t * wdl_point_block_to_replace (void) { wdl_block_t *p, *t, *s; assert (0 == wdl_cache.n || wdl_cache.top != NULL); assert (0 == wdl_cache.n || wdl_cache.bot != NULL); assert (0 == wdl_cache.n || wdl_cache.bot->prev == NULL); assert (0 == wdl_cache.n || wdl_cache.top->next == NULL); if (wdl_cache.n > 0 && -1 == wdl_cache.top->key) { /* top blocks is unusable, should be the one to replace*/ p = wdl_cache.top; } else if (wdl_cache.n == 0) { p = &wdl_cache.blocks[wdl_cache.n++]; wdl_cache.top = p; wdl_cache.bot = p; p->prev = NULL; p->next = NULL; } else if (wdl_cache.n < wdl_cache.max_blocks) { /* add */ s = wdl_cache.top; p = &wdl_cache.blocks[wdl_cache.n++]; wdl_cache.top = p; s->next = p; p->prev = s; p->next = NULL; } else { /* replace*/ t = wdl_cache.bot; s = wdl_cache.top; wdl_cache.bot = t->next; wdl_cache.top = t; s->next = t; t->prev = s; wdl_cache.top->next = NULL; wdl_cache.bot->prev = NULL; p = t; } /* make the information content unusable, it will be replaced */ p->key = -1; p->side = gtbNOSIDE; p->offset = gtbNOINDEX; return p; } /****************************************************************************\ | | NEW PROBING ZONE | \****************************************************************************/ static unsigned int wdl_extract (unit_t *uarr, index_t x); static bool_t get_WDL_from_cache (tbkey_t key, unsigned side, index_t idx, unsigned int *info_out); static unsigned dtm2WDL(dtm_t dtm); static void wdl_movetotop (wdl_block_t *t); static bool_t wdl_preload_cache (tbkey_t key, unsigned side, index_t idx); static void dtm_block_2_wdl_block(dtm_block_t *g, wdl_block_t *w, size_t n); static bool_t get_WDL (tbkey_t key, unsigned side, index_t idx, unsigned int *info_out, bool_t probe_hard_flag) { dtm_t dtm; bool_t found; found = get_WDL_from_cache (key, side, idx, info_out); if (found) { wdl_cache.hits++; } else { /* may probe soft */ found = get_dtm (key, side, idx, &dtm, probe_hard_flag); if (found) { *info_out = dtm2WDL(dtm); /* move cache info from dtm_cache to WDL_cache */ if (wdl_cache_is_on()) wdl_preload_cache (key, side, idx); } } if (probe_hard_flag) { wdl_cache.hard++; if (!found) { wdl_cache.hardmisses++; } } else { wdl_cache.soft++; if (!found) { wdl_cache.softmisses++; } } return found; } static bool_t get_WDL_from_cache (tbkey_t key, unsigned side, index_t idx, unsigned int *out) { index_t offset; index_t remainder; wdl_block_t *p; wdl_block_t *ret; if (!wdl_cache_is_on()) return FALSE; split_index (wdl_cache.entries_per_block, idx, &offset, &remainder); ret = NULL; for (p = wdl_cache.top; p != NULL; p = p->prev) { wdl_cache.comparisons++; if (key == p->key && side == p->side && offset == p->offset) { ret = p; break; } } if (ret != NULL) { *out = wdl_extract (ret->p_arr, remainder); wdl_movetotop(ret); } FOLLOW_LU("get_wdl_from_cache ok?",(ret != NULL)) return ret != NULL; } static unsigned int wdl_extract (unit_t *uarr, index_t x) { index_t width = 2; index_t nu = x/WDL_entries_per_unit; index_t y = x - (nu * WDL_entries_per_unit); return (uarr[nu] >> (y*width)) & WDL_entry_mask; } static void wdl_movetotop (wdl_block_t *t) { wdl_block_t *s, *nx, *pv; assert (t != NULL); if (t->next == NULL) /* at the top already */ return; /* detach */ pv = t->prev; nx = t->next; if (pv == NULL) /* at the bottom */ wdl_cache.bot = nx; else pv->next = nx; if (nx == NULL) /* at the top */ wdl_cache.top = pv; else nx->prev = pv; /* relocate */ s = wdl_cache.top; assert (s != NULL); if (s == NULL) wdl_cache.bot = t; else s->next = t; t->next = NULL; t->prev = s; wdl_cache.top = t; return; } /****************************************************************************************************/ static bool_t wdl_preload_cache (tbkey_t key, unsigned side, index_t idx) /* output to the least used block of the cache */ { dtm_block_t *dtm_block; wdl_block_t *to_modify; bool_t ok; FOLLOW_label("wdl preload_cache starts") if (idx >= egkey[key].maxindex) { FOLLOW_LULU("Wrong index", __LINE__, idx) return FALSE; } /* find fresh block in dtm cache */ dtm_block = dtm_cache_pointblock (key, side, idx); /* find aged blocked in wdl cache */ to_modify = wdl_point_block_to_replace (); ok = !(NULL == dtm_block || NULL == to_modify); if (!ok) return FALSE; /* transform and move a block */ dtm_block_2_wdl_block(dtm_block, to_modify, dtm_cache.entries_per_block); if (ok) { index_t offset; index_t remainder; split_index (wdl_cache.entries_per_block, idx, &offset, &remainder); to_modify->key = key; to_modify->side = side; to_modify->offset = offset; } else { /* make it unusable */ to_modify->key = -1; to_modify->side = gtbNOSIDE; to_modify->offset = gtbNOINDEX; } FOLLOW_LU("wdl preload_cache?", ok) return ok; } /****************************************************************************************************/ static void dtm_block_2_wdl_block(dtm_block_t *g, wdl_block_t *w, size_t n) { int width = 2; int shifting; size_t i; int j; unsigned int x ,y; dtm_t *s = g->p_arr; unit_t *d = w->p_arr; for (i = 0, y = 0; i < n; i++) { j = i & 3; /* modulo WDL_entries_per_unit */ x = dtm2WDL(s[i]); shifting = j * width; y |= (x << shifting); if (j == 3) { d[i/WDL_entries_per_unit] = (unit_t) y; y = 0; } } if (0 != (n & 3)) { /* not multiple of 4 */ d[(n-1)/WDL_entries_per_unit] = (unit_t) y; /* save the rest */ y = 0; } return; } static unsigned dtm2WDL(dtm_t dtm) { return (unsigned) dtm & 3; } /**************************/ #ifdef WDL_PROBE static unsigned int inv_wdl(unsigned w); static bool_t egtb_get_wdl (tbkey_t k, unsigned stm, const SQUARE *wS, const SQUARE *bS, bool_t probe_hard_flag, unsigned int *wdl); static bool_t tb_probe_wdl (unsigned stm, const SQUARE *inp_wSQ, const SQUARE *inp_bSQ, const SQ_CONTENT *inp_wPC, const SQ_CONTENT *inp_bPC, bool_t probingtype, /*@out@*/ unsigned *res) { tbkey_t id = -1; unsigned int wdl = iUNKNOWN; SQUARE storage_ws [MAX_LISTSIZE], storage_bs [MAX_LISTSIZE]; SQ_CONTENT storage_wp [MAX_LISTSIZE], storage_bp [MAX_LISTSIZE]; SQUARE *ws = storage_ws; SQUARE *bs = storage_bs; SQ_CONTENT *wp = storage_wp; SQ_CONTENT *bp = storage_bp; SQUARE tmp_ws [MAX_LISTSIZE], tmp_bs [MAX_LISTSIZE]; SQ_CONTENT tmp_wp [MAX_LISTSIZE], tmp_bp [MAX_LISTSIZE]; SQUARE *temps; bool_t straight = FALSE; bool_t okcall = TRUE; unsigned ply_; unsigned *ply = &ply_; /************************************/ assert (stm == WH || stm == BL); /* VALID ONLY FOR KK!! */ if (inp_wPC[1] == NOPIECE && inp_bPC[1] == NOPIECE) { index_t dummy_i; bool_t b = kxk_pctoindex (inp_wSQ, inp_bSQ, &dummy_i); *res = b? iDRAW: iFORBID; *ply = 0; return TRUE; } /* copy input */ list_pc_copy (inp_wPC, wp); list_pc_copy (inp_bPC, bp); list_sq_copy (inp_wSQ, ws); list_sq_copy (inp_bSQ, bs); sortlists (ws, wp); sortlists (bs, bp); FOLLOW_label("EGTB_PROBE") if (egtb_get_id (wp, bp, &id)) { FOLLOW_LU("got ID",id) straight = TRUE; } else if (egtb_get_id (bp, wp, &id)) { FOLLOW_LU("rev ID",id) straight = FALSE; list_sq_flipNS (ws); list_sq_flipNS (bs); temps = ws; ws = bs; bs = temps; stm = Opp(stm); /* no enpassant in this fuction, so no adjustment */ {SQ_CONTENT *tempp = wp; wp = bp; bp = tempp;} /* added */ } else { #if defined(DEBUG) printf("did not get id...\n"); output_state (stm, ws, bs, wp, bp); #endif unpackdist (iFORBID, res, ply); return FALSE; } /* store position... */ list_pc_copy (wp, tmp_wp); list_pc_copy (bp, tmp_bp); list_sq_copy (ws, tmp_ws); list_sq_copy (bs, tmp_bs); /* x will be stm and y will be stw */ /* if (stm == WH) { xs = ws; xp = wp; ys = bs; yp = bp; } else { xs = bs; xp = bp; ys = ws; yp = wp; } */ okcall = egtb_get_wdl (id, stm, ws, bs, probingtype, &wdl); FOLLOW_LU("dtmok?",okcall) FOLLOW_DTM("wdl", wdl) if (okcall) { /*assert(epsq == NOSQUARE); */ if (straight) { *res = wdl; } else { *res = inv_wdl (wdl); } } else { unpackdist (iFORBID, res, ply); } return okcall; } static unsigned int inv_wdl(unsigned w) { unsigned r = tb_UNKNOWN; switch (w) { case tb_DRAW: r = tb_DRAW; break; case tb_WMATE: r = tb_BMATE; break; case tb_BMATE: r = tb_WMATE; break; case tb_FORBID: r = tb_FORBID; break; case tb_UNKNOWN: r = tb_UNKNOWN; break; default: r = tb_UNKNOWN; break; } return r; } static bool_t egtb_get_wdl (tbkey_t k, unsigned stm, const SQUARE *wS, const SQUARE *bS, bool_t probe_hard_flag, unsigned int *wdl) { bool_t idxavail; index_t idx; dtm_t *tab[2]; bool_t (*pc2idx) (const SQUARE *, const SQUARE *, index_t *); FOLLOW_label("egtb_get_wdl --> starts") if (egkey[k].status == STATUS_MALLOC || egkey[k].status == STATUS_STATICRAM) { tab[WH] = egkey[k].egt_w; tab[BL] = egkey[k].egt_b; pc2idx = egkey[k].pctoi; idxavail = pc2idx (wS, bS, &idx); FOLLOW_LU("indexavail (RAM)",idxavail) if (idxavail) { *wdl = dtm2WDL(tab[stm][idx]); } else { *wdl = dtm2WDL(iFORBID); } return FALSE; } else if (egkey[k].status == STATUS_ABSENT) { pc2idx = egkey[k].pctoi; idxavail = pc2idx (wS, bS, &idx); FOLLOW_LU("indexavail (HD)",idxavail) if (idxavail) { bool_t success; /* | LOCK *-------------------------------*/ mythread_mutex_lock (&Egtb_lock); success = get_WDL (k, stm, idx, wdl, probe_hard_flag); FOLLOW_LU("get_wld (succ)",success) FOLLOW_LU("get_wld (wdl )",*wdl) /* this may not be needed */ if (!success) { dtm_t dtm; unsigned res, ply; if (probe_hard_flag && Uncompressed) { assert(Uncompressed); success = egtb_filepeek (k, stm, idx, &dtm); unpackdist (dtm, &res, &ply); *wdl = res; } else success = FALSE; } mythread_mutex_unlock (&Egtb_lock); /*------------------------------*\ | UNLOCK */ if (success) { return TRUE; } else { if (probe_hard_flag) /* after probing hard and failing, no chance to succeed later */ egkey[k].status = STATUS_REJECT; *wdl = dtm2WDL(iUNKNOWN); return FALSE; } } else { *wdl = dtm2WDL(iFORBID); return TRUE; } } else if (egkey[k].status == STATUS_REJECT) { FOLLOW_label("STATUS_REJECT") *wdl = dtm2WDL(iFORBID); return FALSE; } else { FOLLOW_label("STATUS_WRONG!") assert(0); *wdl = dtm2WDL(iFORBID); return FALSE; } } #endif gaviotatb-0.4.orig/readme.txt0000644000175000017500000001276211536321052015350 0ustar varunvarun Gaviota Tablebases Probing Code API Copyright (c) 2010 Miguel A. Ballicora ----------------------------------------------------------------------------- This software provides C code to probe the Gaviota Endgame Tablebases. It is released under then X11 ("MIT") license (see license.txt). This API (Application Programming Interface) is designed to be as portable as possible. Functions could be called from Linux or Windows. Most likely it will work in other operating systems but that has not been tested. This API is a beta version and as such, it is not guaranteed any type of backward compatibility or to remain untouched, at least until version 1.0 is released. A very small set of tablebase files is included in this distribution for testing purposes (only 3 pieces). They are compressed with four different compression schemes. For a more complete set, please download Gaviota from http://sites.google.com/site/gaviotachessengine/ and generate the 4 and 5 piece tablebases. Instructions how to generate and compressed them are in the website. More information can always be found: http://sites.google.com/site/gaviotachessengine/Home/endgame-tablebases-1 Alternatively, already compressed tablebase files (ready to go!) can be downloaded from http://www.olympuschess.com/egtb/gaviota/ (Many thanks to Josh Shriver) "tbprobe" is distributed here as a tablebase probing example. The current API is relatively "low level" to optimize performance. We hope the small program tbprobe is self explanatory. A more complete and detailed documentation may be released later. We plan to support an interface with a FEN notation; thus, it is expected that some other functions maybe added to this API. Four different types of compression are included. It is possible that in the future some other compression schemes could be provided, but only if they represent a serious improvement in speed or memory size. To maximize backward compatibility between versions of programs and TBs, it is strongly recommended that engine developers always support at least scheme 4 (tb_CP4), which is considered the default at this point. For that reason, it is suggested that testers always have a set of TBs compressed with scheme 4. This API is designed to be multithreading friendly. Regions where different threads could access data from this API were protected with a mutex to avoid problems. -------------------------- How to use this API ------------------------------ To include this code in any engine or GUI, the following files should be compiled and linked: gtb-probe.c gtb-dec.c gtb-att.c sysport/sysport.c compression/wrap.c compression/huffman/hzip.c compression/liblzf/lzf_c.c compression/liblzf/lzf_d.c compression/zlib/zcompress.c compression/zlib/uncompr.c compression/zlib/inflate.c compression/zlib/deflate.c compression/zlib/adler32.c compression/zlib/crc32.c compression/zlib/infback.c compression/zlib/inffast.c compression/zlib/inftrees.c compression/zlib/trees.c compression/zlib/zutil.c compression/lzma/LzmaEnc.c compression/lzma/LzmaDec.c compression/lzma/Alloc.c compression/lzma/LzFind.c compression/lzma/Lzma86Enc.c compression/lzma/Lzma86Dec.c compression/lzma/Bra86.c The following files will be "included" gtb-probe.h gtb-dec.h gtb-att.h gtb-types.h plus all the *.h files in the folders, so set the proper -I flags: sysport/ compression/ compression/huffman/ compression/liblzf/ compression/zlib/ compression/lzma/ The following libraries should be linked in Linux -lpthread -lm In Windows, the appropriate MT (multithreaded library should be linked too) These switches should be set in the compiler -D NDEBUG -D Z_PREFIX The first one removes the assert code, and the second one makes sure that some names in the zlib library will not collision with names in other compression libraries. -------------------------- COMPILATION EXAMPLE ------------------------------ The file compile.sh is an example of how tbprobe can be compiled in Linux using gcc. Rakefile.rb is the ruby version of Makefile. You have to install 'rake' to execute it. This is what I use but you don't have to. It is provided out of laziness. I should probably remove it. ------------------ COMPILING A STATIC LIBRARY (optional) -------------------- Aaron Becker wrote a Makefile to compile a static library --> libgtb.a I just applied this modification from his fork. For now, this for Linux only. Type 'make' to compile it. Some people may find this approach more convenient since the library has to be compiled only once. Of course, this library needs to be included at linking time, when you compile your own program ---------------------------- For UCI Authors -------------------------------- Generally, UCI (Universal Chess Interface) GUIs use standard labels for Tablebase paths and cache sizes. For instance, NalimovPath and NalimovCache are used for the Nalimov tablebases. Therefore, engine authors are strongly encouraged (Please!) to follow a common standard to simplify the life of GUI developers and users. For that reason, it is suggested to implement as parameters: GaviotaTbPath and GaviotaTbCache in their communication with a UCI graphical user interface. ----------------------------------------------------------------------------- Good luck with the tablebases! Miguel ***************************************************************************** gaviotatb-0.4.orig/version.txt0000644000175000017500000000000411536321052015562 0ustar varunvarun0.4 gaviotatb-0.4.orig/makefile.mingw0000755000175000017500000000514211536321052016167 0ustar varunvarun INCLUDE = -Isysport/ \ -Icompression/ \ -Icompression/liblzf/ \ -Icompression/zlib/ \ -Icompression/lzma/ \ -Icompression/huffman/ MAKE = make -f makefile.mingw AR = i386-mingw32-ar RANLIB = i386-mingw32-ranlib DEFAULT_CC = i386-mingw32-gcc DEFAULT_DEFINE = -DZ_PREFIX DEFAULT_ARCHFLAGS = -m32 DEFAULT_CFLAGS = -Wall -Wextra $(INCLUDE) $(DEFAULT_DEFINE) \ $(DEFAULT_ARCHFLAGS) -DMINGW OPTFLAGS = -O3 -msse -DNDEBUG DEBUGFLAGS = -O0 -g -DDEBUG PGO1FLAGS = $(OPTFLAGS) -fprofile-generate PGO2FLAGS = $(OPTFLAGS) -fprofile-use SRCFILES := gtb-probe.c gtb-dec.c gtb-att.c sysport/sysport.c \ compression/wrap.c compression/huffman/hzip.c \ compression/lzma/LzmaEnc.c compression/lzma/LzmaDec.c \ compression/lzma/Alloc.c compression/lzma/LzFind.c \ compression/lzma/Lzma86Enc.c compression/lzma/Lzma86Dec.c \ compression/lzma/Bra86.c compression/zlib/zcompress.c \ compression/zlib/uncompr.c compression/zlib/inflate.c \ compression/zlib/deflate.c compression/zlib/adler32.c \ compression/zlib/crc32.c compression/zlib/infback.c \ compression/zlib/inffast.c compression/zlib/inftrees.c \ compression/zlib/trees.c compression/zlib/zutil.c \ compression/liblzf/lzf_c.c compression/liblzf/lzf_d.c OBJFILES := $(patsubst %.c,%.o,$(SRCFILES)) PROFFILES := $(SRCFILES:.c=.gcno) $(SRCFILES:.c=.gcda) LIBNAME := libgtb.a .PHONY: all clean .DEFAULT_GOAL := all all: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(OPPTFLAGS) $(DEFAULT_CFLAGS)' $(LIBNAME): $(OBJFILES) $(AR) rcs $@ $(OBJFILES) $(RANLIB) $@ opt: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(OPTFLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS)' debug: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(DEBUGFLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS)' pgo-start: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(PGO1FLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS) -fprofile-generate' pgo-finish: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(PGO2FLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS) -fprofile-generate' clean: $(RM) -f $(OBJFILES) $(LIBNAME) pgo-clean: $(RM) -f $(PROFFILES) .depend: $(CC) -MM $(DEFAULT_CFLAGS) $(SRCFILES) > $@ include .depend gaviotatb-0.4.orig/Makefile0000644000175000017500000000572511536321052015013 0ustar varunvarunINCLUDE = -Isysport/ \ -Icompression/ \ -Icompression/liblzf/ \ -Icompression/zlib/ \ -Icompression/lzma/ \ -Icompression/huffman/ DEFAULT_CC = /usr/bin/gcc DEFAULT_DEFINE = -DZ_PREFIX #DEFAULT_ARCHFLAGS = -m64 DEFAULT_CFLAGS = -Wall -Wextra -fPIC $(INCLUDE) $(DEFAULT_DEFINE) \ $(DEFAULT_ARCHFLAGS) PREFIX = /usr/local OPTFLAGS = -fast -msse -DNDEBUG DEBUGFLAGS = -O0 -g -DDEBUG PGO1FLAGS = $(OPTFLAGS) -fprofile-generate PGO2FLAGS = $(OPTFLAGS) -fprofile-use SRCFILES := gtb-probe.c gtb-dec.c gtb-att.c sysport/sysport.c \ compression/wrap.c compression/huffman/hzip.c \ compression/lzma/LzmaEnc.c compression/lzma/LzmaDec.c \ compression/lzma/Alloc.c compression/lzma/LzFind.c \ compression/lzma/Lzma86Enc.c compression/lzma/Lzma86Dec.c \ compression/lzma/Bra86.c compression/zlib/zcompress.c \ compression/zlib/uncompr.c compression/zlib/inflate.c \ compression/zlib/deflate.c compression/zlib/adler32.c \ compression/zlib/crc32.c compression/zlib/infback.c \ compression/zlib/inffast.c compression/zlib/inftrees.c \ compression/zlib/trees.c compression/zlib/zutil.c \ compression/liblzf/lzf_c.c compression/liblzf/lzf_d.c OBJFILES := $(patsubst %.c,%.o,$(SRCFILES)) PROFFILES := $(SRCFILES:.c=.gcno) $(SRCFILES:.c=.gcda) LIBNAME := libgtb.a SONAME :=libgtb.so SOVERSION := 1.0.1 SOMAJORVERSION := 1 .PHONY: all clean .DEFAULT_GOAL := all all: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(OPPTFLAGS) $(DEFAULT_CFLAGS)' $(MAKE) $(SONAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(OPPTFLAGS) $(DEFAULT_CFLAGS)' $(LIBNAME): $(OBJFILES) $(AR) rcs $@ $(OBJFILES) $(SONAME): $(OBJFILES) $(CC) -shared $(OBJFILES) -Wl,-soname=$(SONAME).$(SOMAJORVERSION) -o $(SONAME).$(SOVERSION) opt: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(OPTFLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS)' debug: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(DEBUGFLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS)' pgo-start: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(PGO1FLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS) -fprofile-generate' pgo-finish: $(MAKE) $(LIBNAME) \ CC='$(DEFAULT_CC)' \ ARCHFLAGS='$(DEFAULT_ARCHFLAGS)' \ DEFINE='$(DEFAULT_DEFINE)' \ CFLAGS='$(PGO2FLAGS) $(DEFAULT_CFLAGS)' \ LDFLAGS='$(LDFLAGS) -fprofile-generate' clean: $(RM) -f $(OBJFILES) $(LIBNAME) $(SONAME) pgo-clean: $(RM) -f $(PROFFILES) install: install -m 755 -o root -g root $(LIBNAME) $(SONAME).$(SOVERSION) $(PREFIX)/lib ln -sf $(SONAME).$(SOMAJORVERSION) $(PREFIX)/lib/$(SONAME) install -m 644 -o root -g root gtb-probe.h $(PREFIX)/include ldconfig .depend: $(CC) -MM $(DEFAULT_CFLAGS) $(SRCFILES) > $@ include .depend gaviotatb-0.4.orig/.gitignore0000644000175000017500000000020411536321052015326 0ustar varunvarun*.o tags attic .depend .DS_Store *.dylib *.so *.a *.gcda *.gcno tbprobe errors_comp.txt errors_link.txt *.rb version* errors.txt *~