You can subscribe to this list here.
2003 |
Jan
(23) |
Feb
(10) |
Mar
(25) |
Apr
(16) |
May
(10) |
Jun
(2) |
Jul
(7) |
Aug
|
Sep
|
Oct
(6) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(9) |
Aug
(5) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
From: Tom H. <tom...@us...> - 2003-04-23 04:33:25
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv13096/src Modified Files: rccparse.ypp rccparser.h Log Message: 2003-04-23 Tom Howard <tom...@us...> * ./configure.in * ./src/Makefile.am Fixed documentation building * ./src/rccparse.ypp * ./src/rccparser.h Fixed newly introduced init parsing errors. Index: rccparse.ypp =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparse.ypp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** rccparse.ypp 23 Apr 2003 04:08:43 -0000 1.13 --- rccparse.ypp 23 Apr 2003 04:33:14 -0000 1.14 *************** *** 1280,1284 **** { PARAM.buildInit(); }; | LP INIT_KW side OK_KW RP ! { PARAM.buildInit(); }; | LP INIT_KW OK_KW RP { PARAM.buildCoachInit(); } --- 1280,1284 ---- { PARAM.buildInit(); }; | LP INIT_KW side OK_KW RP ! { PARAM.buildCoachInit(); }; | LP INIT_KW OK_KW RP { PARAM.buildCoachInit(); } Index: rccparser.h =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparser.h,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** rccparser.h 23 Apr 2003 04:08:43 -0000 1.34 --- rccparser.h 23 Apr 2003 04:33:15 -0000 1.35 *************** *** 7630,7640 **** doBuildInit( int unum ) {} ! /** This function is called after parsing an online coach init message or a player reconnect message * ! * Override this function in your subclass to handle player reconnect messages or online coach init messages * ! * \pre The client is an online coach or player * ! * \pre An entire online coach init message or player reconnect has been parsed. * */ --- 7630,7640 ---- doBuildInit( int unum ) {} ! /** This function is called after parsing a player reconnect message * ! * Override this function in your subclass to handle player reconnect messages * ! * \pre The client is a player * ! * \pre An entire player reconnect has been parsed. * */ *************** *** 7643,7654 **** doBuildInit() {} ! /** This function is called after parsing an offline coach init message * * Override this function in your subclass to handle player ! * offline coach init messages * ! * \pre The client is an offline coach * ! * \pre An entire offline coach init message has been parsed. * */ --- 7643,7654 ---- doBuildInit() {} ! /** This function is called after parsing an coach init message * * Override this function in your subclass to handle player ! * coach init messages * ! * \pre The client is an coach * ! * \pre An entire coach init message has been parsed. * */ |
From: Tom H. <tom...@us...> - 2003-04-23 04:08:46
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv6133 Modified Files: ChangeLog NEWS configure.in Log Message: 2003-04-23 Tom Howard <tom...@us...> * ./configure.in * ./src/Makefile.am Fixed documentation building * ./src/rccparse.ypp * ./src/rccparser.h Fixed newly introduced init parsing errors. Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccparser/ChangeLog,v retrieving revision 1.68 retrieving revision 1.69 diff -C2 -d -r1.68 -r1.69 *** ChangeLog 22 Apr 2003 00:46:39 -0000 1.68 --- ChangeLog 23 Apr 2003 04:08:42 -0000 1.69 *************** *** 1,2 **** --- 1,12 ---- + 2003-04-23 Tom Howard <tom...@us...> + + * ./configure.in + * ./src/Makefile.am + Fixed documentation building + + * ./src/rccparse.ypp + * ./src/rccparser.h + Fixed newly introduced init parsing errors. + 2003-04-22 Tom Howard <tom...@us...> Index: NEWS =================================================================== RCS file: /cvsroot/rccparser/rccparser/NEWS,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** NEWS 22 Apr 2003 00:46:39 -0000 1.22 --- NEWS 23 Apr 2003 04:08:43 -0000 1.23 *************** *** 1,3 **** --- 1,5 ---- [1.2.3] + * Fixed documentation building problems on some machines. + * Fixed bug in coach init messages. *************** *** 10,27 **** [1.2.2] * When a version 8 player audio message is received by a player ! doBuildOppSide() and doBuildOurSide() are no longer called as they ! are redundant. doBuildPlayerAudio( int time, double dir, const ! std::string& msg ) or doBuildPlayerAudio( int time ) is called for ! opponent messages and doBuildPlayerAudio( int time, double dir, int ! unum, const std::string& msg ) or doBuildPlayerAudio( int time, int ! unum ) is called for team-mate's messages. * The minor changes to the Version 9 protocol are now supported, ! including the new catch fault, indirect free kick and penalty ! playmodes. * All of rcc::Parser's virtual functions have now been documented. ! If you spot any errors in the documentation please let me know or ! better yet, submit a patch. [1.2.1] --- 12,29 ---- [1.2.2] * When a version 8 player audio message is received by a player ! doBuildOppSide() and doBuildOurSide() are no longer called as they ! are redundant. doBuildPlayerAudio( int time, double dir, const ! std::string& msg ) or doBuildPlayerAudio( int time ) is called for ! opponent messages and doBuildPlayerAudio( int time, double dir, int ! unum, const std::string& msg ) or doBuildPlayerAudio( int time, int ! unum ) is called for team-mate's messages. * The minor changes to the Version 9 protocol are now supported, ! including the new catch fault, indirect free kick and penalty ! playmodes. * All of rcc::Parser's virtual functions have now been documented. ! If you spot any errors in the documentation please let me know or ! better yet, submit a patch. [1.2.1] Index: configure.in =================================================================== RCS file: /cvsroot/rccparser/rccparser/configure.in,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** configure.in 24 Mar 2003 19:30:28 -0000 1.33 --- configure.in 23 Apr 2003 04:08:43 -0000 1.34 *************** *** 26,31 **** fi ! AC_PROG_YACC AC_PROG_AWK --- 26,39 ---- fi ! AC_SUBST([YACC]) ! AC_SUBST([YACCFLAGS]) ! AC_SUBST([AM_YACCFLAGS]) ! AC_CHECK_PROGS([YACC], ! [bison byacc yacc], ! [$srcdir/missing bison]) + if test "$YACC" = "bison"; then + YACC="bison -y" + fi AC_PROG_AWK *************** *** 113,118 **** fi ! AC_PATH_PROG(DOXYGEN, doxygen, found) ! AM_CONDITIONAL(BUILD_DOC, [test "$DOXYGEN"] ) AC_ARG_VAR(DOT, [name and location of dot executable, which is --- 121,134 ---- fi ! AC_ARG_WITH(doxygen, ! AC_HELP_STRING([--with-doxygen], ! [use doxygen to rebuild the documentation if neccesary (default=yes)]), ! use_doxygen=$withval, use_doxygen=yes) ! ! if test "$use_doxygen" = "yes"; then ! AC_PATH_PROG(DOXYGEN, doxygen, found) ! fi ! ! AM_CONDITIONAL(BUILD_DOC, [test "$DOXYGEN"]) AC_ARG_VAR(DOT, [name and location of dot executable, which is |
From: Tom H. <tom...@us...> - 2003-04-23 04:08:46
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv6133/src Modified Files: Makefile.am rccparse.ypp rccparser.h Log Message: 2003-04-23 Tom Howard <tom...@us...> * ./configure.in * ./src/Makefile.am Fixed documentation building * ./src/rccparse.ypp * ./src/rccparser.h Fixed newly introduced init parsing errors. Index: Makefile.am =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/Makefile.am,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** Makefile.am 24 Mar 2003 19:27:34 -0000 1.39 --- Makefile.am 23 Apr 2003 04:08:43 -0000 1.40 *************** *** 10,29 **** doxygen.conf \ doc/html/* \ ! doc/htmlgz/* \ ! doc/xml/* \ ! doc/ps/* \ ! doc/pdf/* \ doc/latex/* \ - doc/* \ - doc \ header.tex BUILT_SOURCES = \ rccparse.h \ rcclexer.cpp librccparser_la_SOURCES = \ rcclexer.cpp \ ! rccparse.ypp \ rccparser.cpp --- 10,29 ---- doxygen.conf \ doc/html/* \ ! doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz \ ! doc/xml/@PACKAGE@-@VERSION@.xml \ ! doc/ps/@PACKAGE@-@VERSION@.ps \ ! doc/pdf/@PACKAGE@-@VERSION@.pdf \ doc/latex/* \ header.tex BUILT_SOURCES = \ rccparse.h \ + rccparse.cpp \ rcclexer.cpp librccparser_la_SOURCES = \ rcclexer.cpp \ ! rccparse.cpp \ ! rccparse.h \ rccparser.cpp *************** *** 63,66 **** --- 63,83 ---- AM_YFLAGS=-d -v + YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) + + .ypp.cpp: + $(YACCCOMPILE) `test -f '$<' || echo '$(srcdir)/'`$< + sed '/^#/ s|y\.tab\.c|$@|' y.tab.c >$@ + rm -f y.tab.c + if test -f y.tab.h; then \ + to=`echo "$*_H" | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`; \ + sed "/^#/ s/Y_TAB_H/$$to/g" y.tab.h >$*.h; \ + fi + if test -f y.output; then \ + mv y.output $*.output; \ + fi + + .ypp.h: $*.ypp if test -e "$*.cpp"; then \ *************** *** 69,73 **** elif test "$*.h" -ot "$*.ypp"; then \ $(MAKE) $(AM_MAKEFLAGS) -W "$*.ypp" $*.cpp; \ - touch "$*.h"; \ fi \ else \ --- 86,89 ---- *************** *** 185,190 **** @cp -f $(srcdir)/addcomment.pl doc/html/addcomment.pl ! doxygen: doxygen.conf if BUILD_DOC --- 201,211 ---- @cp -f $(srcdir)/addcomment.pl doc/html/addcomment.pl + htmlgz: doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz ! doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz: $(HTMLFILES) doc/html/style.css doc/html/comment.pl doc/html/getcomments.pl doc/html/addcomment.pl ! @if ! test -d doc/htmlgz; then rm -f doc/htmlgz; mkdir doc/htmlgz; fi ! @ln -s doc/html @PACKAGE@-@VERSION@.html ! @$(AMTAR) chof - "@PACKAGE@-@VERSION@.html" | GZIP=$(GZIP_ENV) gzip -c >"doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz" ! @rm -rf @PACKAGE@-@VERSION@.html if BUILD_DOC *************** *** 199,236 **** '/@HAVE_DOT@/ { sub( /@HAVE_DOT@/, have_dot ); } /@INPUT@/ { sub( /@INPUT@/, "$(srcdir)" ); } { print }' \ $(srcdir)/doxygen.conf.tmpl > doxygen.conf ! doxygen doxygen.conf ! @rm -f doc/latex/doxygen.sty ! $(HTMLFILES): doxygen doc/html/header.html doc/html/footer.html doc/html/style.css @chmod +x $@ @touch $@ ! doc/ps/@PACKAGE@-@VERSION@.ps: doxygen doc/latex/doxygen.sty RC.eps ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/RC.eps doc/latex/RC.eps ! cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) ps ! if ! test -d doc/ps; then mkdir doc/ps; fi ! cp doc/latex/refman.ps doc/ps/@PACKAGE@-@VERSION@.ps ! doc/pdf/@PACKAGE@-@VERSION@.pdf: doc/ps/@PACKAGE@-@VERSION@.ps doxygen doc/latex/doxygen.sty RC.epdf ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/RC.epdf doc/latex/RC.pdf ! cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) pdf ! if ! test -d doc/pdf; then mkdir doc/pdf; fi ! cp doc/latex/refman.pdf doc/pdf/@PACKAGE@-@VERSION@.pdf ! doc/xml/doxygen.xml: doxygen ! doc/xml/@PACKAGE@-@VERSION@.xml: doc/xml/doxygen.xml ! @cp doc/xml/doxygen.xml doc/xml/@PACKAGE@-@VERSION@.xml ! doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz: $(HTMLFILES) doc/html/style.css doc/html/comment.pl doc/html/getcomments.pl doc/html/addcomment.pl ! @if ! test -d doc/htmlgz; then rm -f doc/htmlgz; mkdir doc/htmlgz; fi ! @ln -s doc/html @PACKAGE@-@VERSION@.html ! @$(AMTAR) chof - "@PACKAGE@-@VERSION@.html" | GZIP=$(GZIP_ENV) gzip -c >"doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz" ! @rm -rf @PACKAGE@-@VERSION@.html else --- 220,296 ---- '/@HAVE_DOT@/ { sub( /@HAVE_DOT@/, have_dot ); } /@INPUT@/ { sub( /@INPUT@/, "$(srcdir)" ); } { print }' \ $(srcdir)/doxygen.conf.tmpl > doxygen.conf ! @echo "Running doxygen..." ! @doxygen doxygen.conf ! @rm doc/latex/doxygen.sty ! $(HTMLFILES): doxygen.conf doc/html/header.html doc/html/footer.html doc/html/style.css @chmod +x $@ @touch $@ ! doc/latex/refman.tex: doxygen.conf ! doc/latex/refman.idx: doxygen.conf ! doc/latex/@PACKAGE@-@VERSION@.tex: doc/latex/refman.tex ! @cp doc/latex/refman.tex doc/latex/@PACKAGE@-@VERSION@.tex ! doc/latex/@PACKAGE@-@VERSION@.idx: doc/latex/@PACKAGE@-@VERSION@.tex doc/latex/RC.eps ! @echo "Running latex..." ! @cd doc/latex && latex @PACKAGE@-@VERSION@.tex + doc/latex/@PACKAGE@-@VERSION@-ni.ind: doc/latex/@PACKAGE@-@VERSION@.idx + @echo "Running makeindex..." + @cd doc/latex && makeindex @PACKAGE@-@VERSION@.idx + @cp doc/latex/@PACKAGE@-@VERSION@.ind doc/latex/@PACKAGE@-@VERSION@-ni.ind ! doc/latex/@PACKAGE@-@VERSION@-ni.tex: doc/latex/@PACKAGE@-@VERSION@.tex ! @cd doc/latex && sed 's/\\makeindex//' @PACKAGE@-@VERSION@.tex > @PACKAGE@-@VERSION@-ni.tex ! ! doc/latex/@PACKAGE@-@VERSION@.dvi: doc/latex/@PACKAGE@-@VERSION@-ni.tex doc/latex/@PACKAGE@-@VERSION@-ni.ind doc/latex/doxygen.sty ! @echo "Rerunning latex...." ! @cd doc/latex && latex @PACKAGE@-@VERSION@-ni.tex ! @cp doc/latex/@PACKAGE@-@VERSION@-ni.dvi doc/latex/@PACKAGE@-@VERSION@.dvi ! ! doc/latex/RC.eps: RC.eps ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/latex; then rm -f doc/ps; mkdir doc/latex; fi ! @cp -f $(srcdir)/RC.eps doc/latex/RC.eps ! ! doc/ps/@PACKAGE@-@VERSION@.ps: doc/latex/@PACKAGE@-@VERSION@.dvi doc/latex/RC.eps ! @if ! test -d doc/ps; then mkdir doc/ps; fi ! @echo "Creating ps documentation..." ! @cd doc/latex/ && dvips -o ../ps/@PACKAGE@-@VERSION@.ps @PACKAGE@-@VERSION@.dvi ! ! doc/latex/RC.pdf: RC.epdf ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/RC.epdf doc/latex/RC.pdf ! ! doc/latex/@PACKAGE@-@VERSION@-pdf.tex: doc/latex/@PACKAGE@-@VERSION@.tex ! @cp doc/latex/@PACKAGE@-@VERSION@.tex doc/latex/@PACKAGE@-@VERSION@-pdf.tex ! ! doc/latex/@PACKAGE@-@VERSION@-pdf.idx: doc/latex/@PACKAGE@-@VERSION@.tex doc/latex/RC.pdf doc/latex/doxygen.sty ! @echo "Running pdflatex..." ! @cd doc/latex && pdflatex @PACKAGE@-@VERSION@-pdf.tex ! ! doc/latex/@PACKAGE@-@VERSION@-pdf-ni.ind: doc/latex/@PACKAGE@-@VERSION@-pdf.idx ! @echo "Running makeindex..." ! @cd doc/latex && makeindex @PACKAGE@-@VERSION@-pdf.idx ! @cp doc/latex/@PACKAGE@-@VERSION@-pdf.ind doc/latex/@PACKAGE@-@VERSION@-pdf-ni.ind ! ! doc/latex/@PACKAGE@-@VERSION@-pdf-ni.tex: doc/latex/@PACKAGE@-@VERSION@-pdf.tex ! @cd doc/latex && sed 's/\\makeindex//' @PACKAGE@-@VERSION@-pdf.tex > @PACKAGE@-@VERSION@-pdf-ni.tex ! ! doc/pdf/@PACKAGE@-@VERSION@.pdf: doc/latex/@PACKAGE@-@VERSION@-pdf-ni.tex doc/latex/@PACKAGE@-@VERSION@-pdf-ni.ind doc/latex/doxygen.sty doc/latex/RC.pdf ! @echo "Rerunning pdflatex...." ! @cd doc/latex && pdflatex @PACKAGE@-@VERSION@-pdf-ni.tex ! @cp doc/latex/@PACKAGE@-@VERSION@-pdf-ni.pdf doc/latex/@PACKAGE@-@VERSION@.pdf ! @if ! test -d doc/pdf; then mkdir doc/pdf; fi ! @cp doc/latex/@PACKAGE@-@VERSION@-pdf-ni.pdf doc/pdf/@PACKAGE@-@VERSION@.pdf ! ! doc/xml/doxygen.xml: doxygen.conf ! ! doc/xml/@PACKAGE@-@VERSION@.xml: doc/xml/doxygen.xml ! @cp doc/xml/doxygen.xml doc/xml/@PACKAGE@-@VERSION@.xml else *************** *** 246,278 **** $(srcdir)/doxygen.conf.tmpl > doxygen.conf ! $(HTMLFILES): doxygen ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! if test -e "$(srcdir)$@" \ ! && ! test "$(srcdir)$@" -ef "$@"; then \ ! cp -f "$(srcdir)$@" "$@"; \ else \ touch "$@"; \ ! fi \ ! done ! chmod +x "$@" ! doc/ps/@PACKAGE@-@VERSION@.ps: doxygen ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/ps; then rm -f doc/ps; mkdir doc/ps; fi ! if test -e "$(srcdir)$@" \ ! && ! test "$(srcdir)$@" -ef "$@"; then \ ! cp -f "$(srcdir)$@" "$@"; \ else \ touch "$@"; \ fi ! doc/pdf/@PACKAGE@-@VERSION@.pdf: doxygen ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/pdf; then rm -f doc/pdf; mkdir doc/pdf; fi ! if test -e "$(srcdir)$@" \ ! && ! test "$(srcdir)$@" -ef "$@"; then \ ! cp -f "$(srcdir)$@" "$@"; \ else \ touch "$@"; \ --- 306,337 ---- $(srcdir)/doxygen.conf.tmpl > doxygen.conf ! $(HTMLFILES): doxygen.conf ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @if test -e "$(srcdir)/$@" \ ! && ! test "$(srcdir)/$@" -ef "$@"; then \ ! cp -f "$(srcdir)/$@" "$@"; \ else \ touch "$@"; \ ! fi ! @chmod +x "$@" ! doc/ps/@PACKAGE@-@VERSION@.ps: doxygen.conf ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/ps; then rm -f doc/ps; mkdir doc/ps; fi ! @if test -e "$(srcdir)/$@" \ ! && ! test "$(srcdir)/$@" -ef "$@"; then \ ! cp -f "$(srcdir)/$@" "$@"; \ else \ touch "$@"; \ fi ! doc/pdf/@PACKAGE@-@VERSION@.pdf: doxygen.conf ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/pdf; then rm -f doc/pdf; mkdir doc/pdf; fi ! @if test -e "$(srcdir)/$@" \ ! && ! test "$(srcdir)/$@" -ef "$@"; then \ ! cp -f "$(srcdir)/$@" "$@"; \ else \ touch "$@"; \ *************** *** 280,301 **** doc/xml/@PACKAGE@-@VERSION@.xml: $(pkginclude_HEADERS) $(librccparser_la_SOURCES) $(rccptest_SOURCES) doxygen.conf header.html footer.html ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/xml; then rm -f doc/xml; mkdir doc/xml; fi ! if test -e "$(srcdir)$@" \ ! && ! test "$(srcdir)$@" -ef "$@"; then \ ! cp -f "$(srcdir)$@" "$@"; \ else \ touch "$@"; \ fi ! doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz: $(HTMLFILES) doc/html/style.css doc/html/comment.pl doc/html/getcomments.pl doc/html/addcomment.pl ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/htmlgz; then rm -f doc/htmlgz; mkdir doc/htmlgz; fi ! if test -e "$(srcdir)$@" \ ! && ! test "$(srcdir)$@" -ef "$@"; then \ ! cp -f "$(srcdir)$@" "$@"; \ ! else \ ! touch "$@"; \ ! fi endif --- 339,352 ---- doc/xml/@PACKAGE@-@VERSION@.xml: $(pkginclude_HEADERS) $(librccparser_la_SOURCES) $(rccptest_SOURCES) doxygen.conf header.html footer.html ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/xml; then rm -f doc/xml; mkdir doc/xml; fi ! @if test -e "$(srcdir)/$@" \ ! && ! test "$(srcdir)/$@" -ef "$@"; then \ ! cp -f "$(srcdir)/$@" "$@"; \ else \ touch "$@"; \ fi ! endif *************** *** 304,308 **** doc: $(HTMLFILES) doc/ps/@PACKAGE@-@VERSION@.ps doc/pdf/@PACKAGE@-@VERSION@.pdf doc/xml/@PACKAGE@-@VERSION@.xml doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz ! EXTRA_DIST = clang.data out.data rcclexer.lpp ac_lib_rccparser.m4 \ doc/ps/@PACKAGE@-@VERSION@.ps \ doc/pdf/@PACKAGE@-@VERSION@.pdf \ --- 355,360 ---- doc: $(HTMLFILES) doc/ps/@PACKAGE@-@VERSION@.ps doc/pdf/@PACKAGE@-@VERSION@.pdf doc/xml/@PACKAGE@-@VERSION@.xml doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz ! EXTRA_DIST = clang.data out.data rcclexer.lpp rccparse.ypp \ ! ac_lib_rccparser.m4 \ doc/ps/@PACKAGE@-@VERSION@.ps \ doc/pdf/@PACKAGE@-@VERSION@.pdf \ *************** *** 326,329 **** --- 378,383 ---- htmldir = $(docdir)/html + htmlgzdir = $(docdir)/htmlgz + psdir = $(docdir)/ps *************** *** 333,336 **** --- 387,391 ---- html_DATA = $(HTMLFILES) doc/html/style.css doc/html/header.jpg doc/html/comment.pl doc/html/getcomments.pl doc/html/addcomment.pl + htmlgz_DATA = doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz ps_DATA = doc/ps/@PACKAGE@-@VERSION@.ps pdf_DATA = doc/pdf/@PACKAGE@-@VERSION@.pdf Index: rccparse.ypp =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparse.ypp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** rccparse.ypp 22 Apr 2003 00:46:39 -0000 1.12 --- rccparse.ypp 23 Apr 2003 04:08:43 -0000 1.13 *************** *** 1277,1281 **** init: LP INIT_KW side INT play_mode RP { PARAM.buildInit( getInt( $4 ) ); } ! | LP INIT_KW side RP { PARAM.buildInit(); }; | LP INIT_KW OK_KW RP --- 1277,1283 ---- init: LP INIT_KW side INT play_mode RP { PARAM.buildInit( getInt( $4 ) ); } ! | LP INIT_KW side play_mode RP ! { PARAM.buildInit(); }; ! | LP INIT_KW side OK_KW RP { PARAM.buildInit(); }; | LP INIT_KW OK_KW RP Index: rccparser.h =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparser.h,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** rccparser.h 22 Apr 2003 00:46:40 -0000 1.33 --- rccparser.h 23 Apr 2003 04:08:43 -0000 1.34 *************** *** 7630,7641 **** doBuildInit( int unum ) {} ! /** This function is called after parsing an online coach init message * ! * Override this function in your subclass to handle player ! * online coach init messages * ! * \pre The client is an online coach * ! * \pre An entire online coach init message has been parsed. * */ --- 7630,7640 ---- doBuildInit( int unum ) {} ! /** This function is called after parsing an online coach init message or a player reconnect message * ! * Override this function in your subclass to handle player reconnect messages or online coach init messages * ! * \pre The client is an online coach or player * ! * \pre An entire online coach init message or player reconnect has been parsed. * */ |
From: Tom H. <tom...@us...> - 2003-04-22 00:46:45
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv13335/src Modified Files: rccparse.ypp rccparser.h Log Message: 2003-04-22 Tom Howard <tom...@us...> * ./src/rccparse.ypp * ./src/rccparser.h Fixed errors in init messages for coaches Applied Pat's CLang Play version patch Applied Pat's ok say patch Index: rccparse.ypp =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparse.ypp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** rccparse.ypp 21 Apr 2003 23:52:03 -0000 1.11 --- rccparse.ypp 22 Apr 2003 00:46:39 -0000 1.12 *************** *** 375,378 **** --- 375,379 ---- | audio | change + | clang_player_ver_msg | error_msg | warning *************** *** 1276,1282 **** init: LP INIT_KW side INT play_mode RP { PARAM.buildInit( getInt( $4 ) ); } ! | LP INIT_KW side play_mode RP { PARAM.buildInit(); }; ! | LP INIT_KW side OK_KW RP { PARAM.buildCoachInit(); } ; --- 1277,1283 ---- init: LP INIT_KW side INT play_mode RP { PARAM.buildInit( getInt( $4 ) ); } ! | LP INIT_KW side RP { PARAM.buildInit(); }; ! | LP INIT_KW OK_KW RP { PARAM.buildCoachInit(); } ; *************** *** 1369,1372 **** --- 1370,1385 ---- { PARAM.buildSubstitution( getInt( $3 ) ); } ; + + clang_player_ver_msg: LP CLANG_KW clang_player_ver_list RP + { PARAM.buildClangPlayerVersionMsg( ); } + ; + + clang_player_ver: LP VER_KW near_player_name INT INT RP + { PARAM.buildClangPlayerVersion( getInt( $4 ), getInt ( $5 ) ); } + ; + + clang_player_ver_list: /* empty */ + | clang_player_ver_list clang_player_ver + ; error_msg: LP CANT_KW INIT_KW RP Index: rccparser.h =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparser.h,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** rccparser.h 21 Apr 2003 23:52:03 -0000 1.32 --- rccparser.h 22 Apr 2003 00:46:40 -0000 1.33 *************** *** 1466,1469 **** --- 1466,1477 ---- void + buildClangPlayerVersionMsg( ) + { M_parser.doBuildClangPlayerVersionMsg( ); } + + void + buildClangPlayerVersion( int min, int max ) + { M_parser.doBuildClangPlayerVersion( min, max ); } + + void buildCantReconnect() { M_parser.doBuildCantReconnect(); } *************** *** 7871,7874 **** --- 7879,7914 ---- //@} + //! \name Clang version parsing functions + //@{ + /** This function is called after parsing a clang player version message + * (where the player reports what version of clang it supports) + * + * Override this function in your subclass to handle clang player version + * messages + * + * \pre The client is an online coach + * + * \pre An entire clang player version message has been parsed + * + * \pre zero of more clang player version tokens have been parsed + */ + virtual + void + doBuildClangPlayerVersionMsg( ) {} + + /** This function is called after parsing a player clang version + * token (where the player reports what version of clang it supports) + * + * Override this function in your subclass to handle clang player + * version messages + * + * \pre The client is an online coach + * + * \pre A player specification has been parsed + */ + virtual + void + doBuildClangPlayerVersion( int min, int max ) {} + //@} |
From: Tom H. <tom...@us...> - 2003-04-22 00:46:42
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv13335 Modified Files: ChangeLog NEWS Log Message: 2003-04-22 Tom Howard <tom...@us...> * ./src/rccparse.ypp * ./src/rccparser.h Fixed errors in init messages for coaches Applied Pat's CLang Play version patch Applied Pat's ok say patch Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccparser/ChangeLog,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** ChangeLog 21 Apr 2003 23:52:03 -0000 1.67 --- ChangeLog 22 Apr 2003 00:46:39 -0000 1.68 *************** *** 3,6 **** --- 3,8 ---- * ./src/rccparse.ypp * ./src/rccparser.h + Fixed errors in init messages for coaches + Applied Pat's CLang Play version patch Applied Pat's ok say patch Index: NEWS =================================================================== RCS file: /cvsroot/rccparser/rccparser/NEWS,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** NEWS 21 Apr 2003 23:52:03 -0000 1.21 --- NEWS 22 Apr 2003 00:46:39 -0000 1.22 *************** *** 1,3 **** --- 1,8 ---- [1.2.3] + * Fixed bug in coach init messages. + + * Added missing support for CLang version messages. Thanks go to + Pat Riley for the patch. + * Added missing support for ok say messages. Thanks go to Pat Riley for the patch. |
From: Tom H. <tom...@us...> - 2003-04-21 23:52:07
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv29418/src Modified Files: rccparse.ypp rccparser.h Log Message: 2003-04-22 Tom Howard <tom...@us...> * ./src/rccparse.ypp * ./src/rccparser.h Applied Pat's ok say patch Index: rccparse.ypp =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparse.ypp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** rccparse.ypp 24 Mar 2003 18:15:20 -0000 1.10 --- rccparse.ypp 21 Apr 2003 23:52:03 -0000 1.11 *************** *** 1442,1445 **** --- 1442,1447 ---- | LP OK_KW COMPRESSION_KW INT RP { PARAM.buildCompressionOK( getInt( $4 ) ); } + | LP OK_KW SAY_KW RP + { PARAM.buildSayOK( ); } | LP OK_KW STR RP { PARAM.buildUnknownOK( getString( $3 ) ); } Index: rccparser.h =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparser.h,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** rccparser.h 24 Mar 2003 18:41:11 -0000 1.31 --- rccparser.h 21 Apr 2003 23:52:03 -0000 1.32 *************** *** 1582,1585 **** --- 1582,1589 ---- void + buildSayOK( ) + { M_parser.doBuildSayOK( ); } + + void buildChangePlayerTypeOK( int unum, int type ) { M_parser.doBuildChangePlayerTypeOK( unum, type ); } *************** *** 8455,8458 **** --- 8459,8480 ---- void doBuildEyeOK( bool on ) {} + + /** This function is called after parsing an \c say OK + * message. + * + * Override this function in your subclass to handle + * \c say OK messages. + * + * \pre The client is an online or offline coach + * + * \pre The client sent a \c say command + * + * \pre An entire \c say OK + * message has been parsed. + * + */ + virtual + void + doBuildSayOK( ) {} /** This function is called after parsing an \c change_player_type |
From: Tom H. <tom...@us...> - 2003-04-21 23:52:06
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv29418 Modified Files: ChangeLog NEWS Log Message: 2003-04-22 Tom Howard <tom...@us...> * ./src/rccparse.ypp * ./src/rccparser.h Applied Pat's ok say patch Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccparser/ChangeLog,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** ChangeLog 24 Mar 2003 19:28:03 -0000 1.66 --- ChangeLog 21 Apr 2003 23:52:03 -0000 1.67 *************** *** 1,2 **** --- 1,8 ---- + 2003-04-22 Tom Howard <tom...@us...> + + * ./src/rccparse.ypp + * ./src/rccparser.h + Applied Pat's ok say patch + 2003-03-24 Tom Howard <tom...@us...> Index: NEWS =================================================================== RCS file: /cvsroot/rccparser/rccparser/NEWS,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** NEWS 24 Mar 2003 18:41:02 -0000 1.20 --- NEWS 21 Apr 2003 23:52:03 -0000 1.21 *************** *** 1,2 **** --- 1,6 ---- + [1.2.3] + * Added missing support for ok say messages. Thanks go to Pat Riley + for the patch. + [1.2.2] * When a version 8 player audio message is received by a player |
From: Tom H. <tom...@us...> - 2003-03-25 17:31:05
|
Update of /cvsroot/rccparser/rccserializer In directory sc8-pr-cvs1:/tmp/cvs-serv26516 Modified Files: configure.ac Log Message: 2003-03-25 Tom Howard <tom...@us...> * ./configure.ac Released rccserializer-0.0.0 Index: configure.ac =================================================================== RCS file: /cvsroot/rccparser/rccserializer/configure.ac,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** configure.ac 25 Mar 2003 17:03:01 -0000 1.1.1.1 --- configure.ac 25 Mar 2003 17:31:01 -0000 1.2 *************** *** 1,5 **** dnl Process this file with autoconf to produce a configure script. AC_INIT(src/rccserializer.cpp) ! AM_INIT_AUTOMAKE(rccserializer, 0.0.0) AM_CONFIG_HEADER(config.h) AC_PREREQ(2.53) --- 1,5 ---- dnl Process this file with autoconf to produce a configure script. AC_INIT(src/rccserializer.cpp) ! AM_INIT_AUTOMAKE(rccserializer, 0.0.1) AM_CONFIG_HEADER(config.h) AC_PREREQ(2.53) |
From: Tom H. <tom...@us...> - 2003-03-25 17:29:44
|
Update of /cvsroot/rccparser/rccserializer In directory sc8-pr-cvs1:/tmp/cvs-serv25818 Modified Files: ChangeLog Log Message: 2003-03-25 Tom Howard <tom...@us...> * ./configure.ac Released rccserializer-0.0.0 Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccserializer/ChangeLog,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ChangeLog 25 Mar 2003 17:24:49 -0000 1.2 --- ChangeLog 25 Mar 2003 17:29:39 -0000 1.3 *************** *** 1,4 **** --- 1,9 ---- 2003-03-25 Tom Howard <tom...@us...> + * ./configure.ac + Released rccserializer-0.0.0 + + 2003-03-25 Tom Howard <tom...@us...> + * Initial code import |
From: Tom H. <tom...@us...> - 2003-03-25 17:24:56
|
Update of /cvsroot/rccparser/rccserializer In directory sc8-pr-cvs1:/tmp/cvs-serv23797 Modified Files: ChangeLog NEWS README Log Message: 2003-03-25 Tom Howard <tom...@us...> * Initial code import Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccserializer/ChangeLog,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** ChangeLog 25 Mar 2003 17:03:01 -0000 1.1.1.1 --- ChangeLog 25 Mar 2003 17:24:49 -0000 1.2 *************** *** 1,44 **** ! 2003-01-10 Tom Howard <tom...@us...> ! ! * ./configure.ac ! Released rcclient-0.0.1 ! ! 2003-01-10 Tom Howard <tom...@us...> ! ! * ./README ! Updated readme ! ! * ./acinclude.m4 ! * ./configure.ac ! Added macro from rcssnet detection ! ! * ./src/rcclient.cpp ! * ./src/rcclient.h ! * ./src/rcctest.cpp ! Integrated with rcssnet and added compression support ! ! 2003-01-06 Tom Howard <tom...@us...> ! ! * ./configure.ac ! Released rcclient-0.0.0 ! ! 2003-01-06 Tom Howard <tom...@us...> ! ! * ./AUTHORS ! Added myself ! ! * ./README ! Added basic documentation ! ! * ./src/Makefile.am ! changed library instaltion directory ! ! * ./src/rcclient.cpp ! * ./src/rcclient.h ! Added reconnect ! ! 2003-01-06 Tom Howard <tom...@us...> ! * ./src/rcclient.cpp ! Removed default agruments. They are already specified in the .h --- 1,4 ---- ! 2003-03-25 Tom Howard <tom...@us...> ! * Initial code import Index: NEWS =================================================================== RCS file: /cvsroot/rccparser/rccserializer/NEWS,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** NEWS 25 Mar 2003 17:03:01 -0000 1.1.1.1 --- NEWS 25 Mar 2003 17:24:49 -0000 1.2 *************** *** 1,36 **** - [0.0.1] - * RCClient supports compressed communications with the server, through - the use of the compression() and setCompression() functions. To - change the current compression level (default is none), you first need - to send the request to the simulator, which is done with the - compression() function. The server will then reply with either - - (ok compression LEVEL) - - or - - (warning compression_unsupported) - - or not at all if your request was lost, or the compression requested - was greater than 9. - - If you receive the warning, the data will remain uncompressed and no - further action is required. - - If you receive acknowledgement of the new compression level, you MUST - call setCompression() with the new compression level, BEFORE - rcc::Parser::doBuildCompressionOK() returns. Otherwise subsequent - data will be read at the wrong compression level, which will result in - parse errors and loss of data. - - What's more, you CANNOT send any data after your request to change to - the compression level until the server has responded or you give up - the request as lost. Sound nasty? Well it is. Unfortunately there is - no nice solution because the server uses plain UDP, which does not - guarantee reliability. Unless the server changes this is as good as - we can get. - - The rcctest example now uses compression, to demostrate how it's done. - [0.0.0] * Initial release. Please see the README file for some basic --- 1,2 ---- Index: README =================================================================== RCS file: /cvsroot/rccparser/rccserializer/README,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** README 25 Mar 2003 17:03:01 -0000 1.1.1.1 --- README 25 Mar 2003 17:24:50 -0000 1.2 *************** *** 1,29 **** ============ INTRODUCTION ============ ! RCClient is a library for clients for the RoboCup Soccer Simulator ! (http://sserver.sf.net). The library is designed for use with the ! RCCParser library and provides complete network send and receive ! functionality for version 7 and 8 players (including goalies). Send ! support for other clients (coaches) will be added soon (recv ! functionality is already implemented). =========== CONFIGURING =========== ! Before you can build the RCClient library you will need to run the ! `configure' script located in the root of the distribution directory. ! The default configuration will set up RCClient to install its components in the following locations: ! /usr/local/bin for the rcctest executable, /usr/local/lib for the ! RCClient library and /usr/local/include/rcclient for the RCClient ! headers. ! You may need administrator privileges to install RCClient into the default locations. These locations can be modified by using configure's `--prefix=DIR' and related options. See `configure --help' for more details. ! RCClient has several features that can be enabled or disabled at configure time by using the `--enable-FEATURE[=ARG]' or `--disable-FEATURE' parameters to `configure'. `--disable-FEATURE' is --- 1,27 ---- ============ INTRODUCTION ============ ! RCCSerializer is a set of libraries for clients for the RoboCup Soccer ! Simulator (http://sserver.sf.net). The library provides complete ! command serialisation for field players, goalies, online coaches and ! offline coaches. =========== CONFIGURING =========== ! Before you can build the RCCSerializer library you will need to run ! the `configure' script located in the root of the distribution ! directory. ! The default configuration will set up RCCSerializer to install its components in the following locations: ! /usr/local/lib for the RCCSerializer libraries and ! /usr/local/include/rcclient for the RCCSerializer headers. ! You may need administrator privileges to install RCCSerializer into the default locations. These locations can be modified by using configure's `--prefix=DIR' and related options. See `configure --help' for more details. ! RCCSerializer has several features that can be enabled or disabled at configure time by using the `--enable-FEATURE[=ARG]' or `--disable-FEATURE' parameters to `configure'. `--disable-FEATURE' is *************** *** 36,40 **** libraries. Shared libraries are enabled by default. ! RCClient uses GNU Libtool in order to build shared libraries on a variety of systems. While this is very nice for making usable binaries, it can be a pain when trying to debug a program. For that --- 34,38 ---- libraries. Shared libraries are enabled by default. ! RCCSerializer uses GNU Libtool in order to build shared libraries on a variety of systems. While this is very nice for making usable binaries, it can be a pain when trying to debug a program. For that *************** *** 43,55 **** To link against the shared library you must either use GNU Libtool, ! and specify the full pathname of the RCClient shared library, or use ! `-L<prefix>/lib' during linking and do at least one of the following: - add `<prefix>/lib' to the `LD_LIBRARY_PATH' environment variable ! during execution - add `<prefix>/lib' to the `LD_RUN_PATH' environment ! variable during linking - use the `-Wl,--rpath -Wl,<prefix>/lib' ! linker flag - have your system administrator add `<prefix>/lib' to `/etc/ld.so.conf' ! where <prefix> is where you installed RCClient (default is /usr/local). See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual --- 41,60 ---- To link against the shared library you must either use GNU Libtool, ! and specify the full pathname of one of the RCCSerializer shared ! libraries, or use `-L<prefix>/lib' during linking and do at least one ! of the following: ! - add `<prefix>/lib' to the `LD_LIBRARY_PATH' environment variable ! during execution ! ! - add `<prefix>/lib' to the `LD_RUN_PATH' environment variable during ! linking ! ! - use the `-Wl,--rpath -Wl,<prefix>/lib' linker flag ! ! - have your system administrator add `<prefix>/lib' to `/etc/ld.so.conf' ! where <prefix> is where you installed RCCSerializer (default is /usr/local). See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual *************** *** 60,86 **** libraries. Static libraries are enabled by default. ! Your code can be compiled with the static RCClient library by adding ! `-I<prefix>/rcclient -L<prefix>/lib -lrcclient' or modify as necessary if you installed rcclient into non-default directories. - - `--enable-rccptest=yes' will enable the building and installation of - rccptest, a parser testing program that reads from stdin. - ======== BUILDING ======== ! Once you have successfully configured RCClient, simply run `make' to build the sources. ========== INSTALLING ========== ! When you have completed building RCClient, it's components can be installed into their default locations or the locations specified during configuring by running `make install'. Depending on where you ! are installing RCClient, you may need special permissions to do this. ============ UNINSTALLING ============ ! RCClient can also be easily removed by entering the distribution directory and running `make uninstall'. This will remove all the files that where installed, but not any directories that were created --- 65,87 ---- libraries. Static libraries are enabled by default. ! Your code can be compiled with one of the static RCCSerializer libraries by adding ! `-I<prefix>/rccserializer -L<prefix>/lib -l<libname>' or modify as necessary if you installed rcclient into non-default directories. ======== BUILDING ======== ! Once you have successfully configured RCCSerializer, simply run `make' to build the sources. ========== INSTALLING ========== ! When you have completed building RCCSerializer, it's components can be installed into their default locations or the locations specified during configuring by running `make install'. Depending on where you ! are installing RCCSerializer, you may need special permissions to do this. ============ UNINSTALLING ============ ! RCCSerializer can also be easily removed by entering the distribution directory and running `make uninstall'. This will remove all the files that where installed, but not any directories that were created *************** *** 89,156 **** ================ USING THE LIBRARY ================ ! The parser can be interfaced with your code by adding ! ! #include <rcclient/rcclient.h> ! ! in one of you source files. You can then create an instance of a ! rcc::Client by passing it an instance of a rcc::Parser, the port you ! wish to connect on and the host name of the machine running the ! server. For instance ! ! rcc::Client your_client( your_parser, server_port, server_host ); ! ! You would then send an init message to the server by calling ! init(). E.G. ! ! your_client.init( your_teamname, protocol_version, goalie_flag ); ! ! Apon receiving your init message, the server will start to send data ! to your client. You can start parsing the data by either calling the ! operator() or by passing your client to a thread and have it call the ! operator(). The operator() is used to provide direct compatibility ! with rcss::thread::Thread. ! ! The operator() does not return until some error in parsing has ! occurred, so if you chose not to use a threaded approach (which is a ! perfectly valid thing to do) you will only be able to call send ! functions (such as dash and turn) from within the rcc::Parser virtual ! functions. ! ! Also note, if you choose to use a single threaded approach you will ! also have to make sure that you return promptly from any of the ! rcc::Parser virtual functions. Failure to do so may result in a ! backup of data and potential data loss if the network buffer ! overflows. ! RCClient supports compressed communications with the server, through ! the use of the compression() and setCompression() functions. To ! change the current compression level (default is none), you first need ! to send the request to the simulator, which is done with the ! compression() function. The server will then reply with either ! (ok compression LEVEL) ! or ! (warning compression_unsupported) ! or not at all if your request was lost, or the compression requested ! was greater than 9. ! If you receive the warning, the data will remain uncompressed and no ! further action is required. ! If you receive acknowledgement of the new compression level, you MUST ! call setCompression() with the new compression level, BEFORE ! rcc::Parser::doBuildCompressionOK() returns. Otherwise subsequent ! data will be read at the wrong compression level, which will result in ! parse errors and loss of data. ! What's more, you CANNOT send any data after your request to change to ! the compression level until the server has responded of you give up ! the request as lost. Sound nasty? Well it is. Unfortunately there is ! no nice solution because the server uses plain UDP, which does not ! guarantee reliability. Unless the server changes this is as good as ! we can get. ============== Making Contact ============== --- 90,113 ---- ================ USING THE LIBRARY ================ ! The library can be interfaced with your code by adding ! #include <rccserializer/rccplayerserializer.hpp> ! for field players, ! #include <rccserializer/rccofflinecoachserializer.hpp> ! for offline coaches or ! #include <rccserializer/rcconlinecoachserializer.hpp> ! in one of your source files. You can then create an instance of a ! rcc::*Serializer by passing it an reference to an output stream. For instance ! rcc::PlayerSerializer ser( server_stream ); ! ser.init( "YourTeam", 9 ); ! would write an init message to server_stream, with the team name ! "YourTeam" and version 9. ============== Making Contact ============== |
From: Tom H. <tom...@us...> - 2003-03-25 17:24:56
|
Update of /cvsroot/rccparser/rccserializer/src In directory sc8-pr-cvs1:/tmp/cvs-serv23797/src Modified Files: rcconlinecoachserializer.cpp Log Message: 2003-03-25 Tom Howard <tom...@us...> * Initial code import Index: rcconlinecoachserializer.cpp =================================================================== RCS file: /cvsroot/rccparser/rccserializer/src/rcconlinecoachserializer.cpp,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** rcconlinecoachserializer.cpp 25 Mar 2003 17:03:02 -0000 1.1.1.1 --- rcconlinecoachserializer.cpp 25 Mar 2003 17:24:50 -0000 1.2 *************** *** 27,32 **** #include <rcssserver/clangmsg.h> #include <sstream> ! namespace rcc --- 27,35 ---- #include <rcssserver/clangmsg.h> + #ifdef HAVE_SSTREAM #include <sstream> ! #else ! #include <strstream> ! #endif namespace rcc *************** *** 65,69 **** --- 68,76 ---- { output() << "(team_graphic (" << x << " " << y; + #ifdef HAVE_SSTREAM std::istringstream values( xpm[ 0 ] ); + #else + std::istrstream values( xpm[ 0 ] ); + #endif unsigned int width = 0, height = 0, colors = 0; values >> width >> height >> colors; |
From: Tom H. <tom...@us...> - 2003-03-25 17:03:09
|
Update of /cvsroot/rccparser/rccserializer In directory sc8-pr-cvs1:/tmp/cvs-serv10919 Log Message: New Module Status: Vendor Tag: rcc Release Tags: start N rccserializer/AUTHORS N rccserializer/BUGS N rccserializer/COPYING N rccserializer/ChangeLog N rccserializer/INSTALL N rccserializer/Makefile.am N rccserializer/NEWS N rccserializer/README N rccserializer/acinclude.m4 N rccserializer/bootstrap N rccserializer/configure.ac N rccserializer/rel.awk N rccserializer/src/Makefile.am N rccserializer/src/rccserializer.cpp N rccserializer/src/rccstest.cpp N rccserializer/src/rccserializer.hpp N rccserializer/src/rcconlinecoachserializer.hpp N rccserializer/src/rccplayerserializer.hpp N rccserializer/src/rcccoachserializer.hpp N rccserializer/src/rccofflinecoachserializer.hpp N rccserializer/src/rccplayerserializer.cpp N rccserializer/src/rcccoachserializer.cpp N rccserializer/src/rccofflinecoachserializer.cpp N rccserializer/src/rcconlinecoachserializer.cpp N rccserializer/src/ac_lib_rccplayerserializer.m4 N rccserializer/src/ac_lib_rcconlinecoachserializer.m4 N rccserializer/src/ac_lib_rccofflinecoachserializer.m4 No conflicts created by this import ***** Bogus filespec: - Imported sources |
From: Tom H. <tom...@us...> - 2003-03-24 19:30:34
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv9813 Modified Files: configure.in Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./configure.in Released rccparser-1.2.2 Index: configure.in =================================================================== RCS file: /cvsroot/rccparser/rccparser/configure.in,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** configure.in 24 Mar 2003 18:15:18 -0000 1.32 --- configure.in 24 Mar 2003 19:30:28 -0000 1.33 *************** *** 1,5 **** dnl Process this file with autoconf to produce a configure script. AC_INIT(src/rccparse.ypp) ! AM_INIT_AUTOMAKE(rccparser, 1.2.2) AM_CONFIG_HEADER(config.h) --- 1,5 ---- dnl Process this file with autoconf to produce a configure script. AC_INIT(src/rccparse.ypp) ! AM_INIT_AUTOMAKE(rccparser, 1.2.3) AM_CONFIG_HEADER(config.h) |
From: Tom H. <tom...@us...> - 2003-03-24 19:28:08
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv7530 Modified Files: ChangeLog Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./configure.in Released rccparser-1.2.2 Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccparser/ChangeLog,v retrieving revision 1.65 retrieving revision 1.66 diff -C2 -d -r1.65 -r1.66 *** ChangeLog 24 Mar 2003 19:27:33 -0000 1.65 --- ChangeLog 24 Mar 2003 19:28:03 -0000 1.66 *************** *** 1,4 **** --- 1,9 ---- 2003-03-24 Tom Howard <tom...@us...> + * ./configure.in + Released rccparser-1.2.2 + + 2003-03-24 Tom Howard <tom...@us...> + * ./Makefile.am * ./src/Makefile.am |
From: Tom H. <tom...@us...> - 2003-03-24 19:27:39
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv7029/src Modified Files: Makefile.am Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./Makefile.am * ./src/Makefile.am Fixed some doc building problems Index: Makefile.am =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/Makefile.am,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** Makefile.am 24 Mar 2003 18:46:22 -0000 1.38 --- Makefile.am 24 Mar 2003 19:27:34 -0000 1.39 *************** *** 16,20 **** doc/latex/* \ doc/* \ ! doc BUILT_SOURCES = \ --- 16,21 ---- doc/latex/* \ doc/* \ ! doc \ ! header.tex BUILT_SOURCES = \ *************** *** 154,171 **** @cp -f $(srcdir)/header.jpg doc/html/header.jpg ! doc/latex/doxygen.sty: doxygen.sty @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/doxygen.sty doc/latex/doxygen.sty ! doc/latex/RC.eps: RC.eps @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/RC.eps doc/latex/RC.eps ! doc/latex/RC.pdf: RC.epdf @if ! test -d doc; then rm -f doc; mkdir doc; fi @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/RC.epdf doc/latex/RC.pdf doc/html/getcomments.pl: getcomments.pl --- 155,172 ---- @cp -f $(srcdir)/header.jpg doc/html/header.jpg ! doc/html/header.html: header.html @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @cp -f $(srcdir)/header.html doc/html/header.html ! doc/html/footer.html: footer.html @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @cp -f $(srcdir)/footer.html doc/html/footer.html ! doc/latex/doxygen.sty: doxygen.sty @if ! test -d doc; then rm -f doc; mkdir doc; fi @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/doxygen.sty doc/latex/doxygen.sty doc/html/getcomments.pl: getcomments.pl *************** *** 205,222 **** @touch $@ ! doc/latex/refman.ps: doxygen doc/latex/doxygen.sty doc/latex/RC.eps ! @cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) ps ! ! doc/ps/@PACKAGE@-@VERSION@.ps: doc/latex/refman.ps ! @if ! test -d doc/ps; then mkdir doc/ps; fi ! @cp doc/latex/refman.ps doc/ps/@PACKAGE@-@VERSION@.ps ! ! ! doc/latex/refman.pdf: doxygen doc/latex/doxygen.sty doc/latex/RC.pdf ! @cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) pdf ! doc/pdf/@PACKAGE@-@VERSION@.pdf: doc/latex/refman.pdf ! @if ! test -d doc/pdf; then mkdir doc/pdf; fi ! @cp doc/latex/refman.pdf doc/pdf/@PACKAGE@-@VERSION@.pdf doc/xml/doxygen.xml: doxygen --- 206,224 ---- @touch $@ ! doc/ps/@PACKAGE@-@VERSION@.ps: doxygen doc/latex/doxygen.sty RC.eps ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/RC.eps doc/latex/RC.eps ! cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) ps ! if ! test -d doc/ps; then mkdir doc/ps; fi ! cp doc/latex/refman.ps doc/ps/@PACKAGE@-@VERSION@.ps ! doc/pdf/@PACKAGE@-@VERSION@.pdf: doc/ps/@PACKAGE@-@VERSION@.ps doxygen doc/latex/doxygen.sty RC.epdf ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/RC.epdf doc/latex/RC.pdf ! cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) pdf ! if ! test -d doc/pdf; then mkdir doc/pdf; fi ! cp doc/latex/refman.pdf doc/pdf/@PACKAGE@-@VERSION@.pdf doc/xml/doxygen.xml: doxygen |
From: Tom H. <tom...@us...> - 2003-03-24 19:27:39
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv7029 Modified Files: ChangeLog Makefile.am Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./Makefile.am * ./src/Makefile.am Fixed some doc building problems Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccparser/ChangeLog,v retrieving revision 1.64 retrieving revision 1.65 diff -C2 -d -r1.64 -r1.65 *** ChangeLog 24 Mar 2003 18:46:21 -0000 1.64 --- ChangeLog 24 Mar 2003 19:27:33 -0000 1.65 *************** *** 1,4 **** --- 1,10 ---- 2003-03-24 Tom Howard <tom...@us...> + * ./Makefile.am + * ./src/Makefile.am + Fixed some doc building problems + + 2003-03-24 Tom Howard <tom...@us...> + * ./src/Makefile.am Added missing files to dist Index: Makefile.am =================================================================== RCS file: /cvsroot/rccparser/rccparser/Makefile.am,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** Makefile.am 3 Feb 2003 13:47:42 -0000 1.17 --- Makefile.am 24 Mar 2003 19:27:33 -0000 1.18 *************** *** 40,45 **** echo ""; \ echo `cvs tag -b $$tag`; \ ! $(AWK) -f @srcdir@/rel.awk -v change=1 @srcdir@/configure.in > configure.tmp; ! mv configure.tmp @srcdir@/configure.in $(MAKE) $(AM_MAKEFLAGS) commit --- 40,45 ---- echo ""; \ echo `cvs tag -b $$tag`; \ ! $(AWK) -f $(srcdir)/rel.awk -v change=1 $(srcdir)/configure.in > configure.tmp; ! mv configure.tmp $(srcdir)/configure.in $(MAKE) $(AM_MAKEFLAGS) commit *************** *** 52,61 **** echo ""; \ cvs tag -b "$$tag"; \ ! $(AWK) -f @srcdir@/rel.awk -v change=2 @srcdir@/configure.in > configure.tmp; ! mv configure.tmp @srcdir@/configure.in $(MAKE) $(AM_MAKEFLAGS) commit release: update distcheck add_rel commit dist upload tag tag: do_tag inc_rel --- 52,63 ---- echo ""; \ cvs tag -b "$$tag"; \ ! $(AWK) -f $(srcdir)/rel.awk -v change=2 $(srcdir)/configure.in > configure.tmp; ! mv configure.tmp $(srcdir)/configure.in $(MAKE) $(AM_MAKEFLAGS) commit release: update distcheck add_rel commit dist upload tag + quick-release: update add_rel commit dist upload tag + tag: do_tag inc_rel *************** *** 73,82 **** LOGHEADER=`echo -e "$$DATE\t$$USERNAME\t<$$USEREMAIL>\n"`; \ echo -e "$$LOGHEADER\n\n\t* ./configure.in\n\tReleased @PACKAGE@-@VERSION@\n" \ ! | cat - @srcdir@/ChangeLog > ChangeLog.tmp ! mv ChangeLog.tmp @srcdir@/ChangeLog inc_rel: ! $(AWK) -f @srcdir@/rel.awk -v change=3 @srcdir@/configure.in > configure.tmp; ! mv configure.tmp @srcdir@/configure.in $(MAKE) $(AM_MAKEFLAGS) commit --- 75,84 ---- LOGHEADER=`echo -e "$$DATE\t$$USERNAME\t<$$USEREMAIL>\n"`; \ echo -e "$$LOGHEADER\n\n\t* ./configure.in\n\tReleased @PACKAGE@-@VERSION@\n" \ ! | cat - $(srcdir)/ChangeLog > ChangeLog.tmp ! mv ChangeLog.tmp $(srcdir)/ChangeLog inc_rel: ! $(AWK) -f $(srcdir)/rel.awk -v change=3 $(srcdir)/configure.in > configure.tmp; ! mv configure.tmp $(srcdir)/configure.in $(MAKE) $(AM_MAKEFLAGS) commit *************** *** 90,94 **** commit: ! $(AWK) '/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/ { count++ } { if ( count == 1 ) print $0 }' @srcdir@/ChangeLog > message.tmp cvs -z9 commit -F message.tmp --- 92,96 ---- commit: ! $(AWK) '/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/ { count++ } { if ( count == 1 ) print $0 }' $(srcdir)/ChangeLog > message.tmp cvs -z9 commit -F message.tmp *************** *** 105,117 **** /^cvs server: .* is a new entry/ { print "\t* ./" $$3 } \ END { print "" }' | \ ! cat - @srcdir@/ChangeLog > ChangeLog.tmp ! mv ChangeLog.tmp @srcdir@/ChangeLog ! if test -n "$(CVSEDITOR)"; then $(CVSEDITOR) ChangeLog; \ ! elif test -n "$(VISUAL)"; then $(VISUAL) ChangeLog; \ ! elif test -n "$(EDITOR)"; then $(EDITOR) ChangeLog; \ else \ EDITOR=`which vi`; \ if test -n "$$EDITOR" && test -x "$$EDITOR"; then \ ! $$EDITOR ChangeLog; \ else \ echo ""; \ --- 107,119 ---- /^cvs server: .* is a new entry/ { print "\t* ./" $$3 } \ END { print "" }' | \ ! cat - $(srcdir)/ChangeLog > ChangeLog.tmp ! mv ChangeLog.tmp $(srcdir)/ChangeLog ! if test -n "$(CVSEDITOR)"; then $(CVSEDITOR) $(srcdir)/ChangeLog; \ ! elif test -n "$(VISUAL)"; then $(VISUAL) $(srcdir)/ChangeLog; \ ! elif test -n "$(EDITOR)"; then $(EDITOR) $(srcdir)/ChangeLog; \ else \ EDITOR=`which vi`; \ if test -n "$$EDITOR" && test -x "$$EDITOR"; then \ ! $$EDITOR $(srcdir)/ChangeLog; \ else \ echo ""; \ *************** *** 122,124 **** doc: ! cd @srcdir@/src && $(MAKE) $(AM_MAKEFLAGS) doc --- 124,126 ---- doc: ! cd $(srcdir)/src && $(MAKE) $(AM_MAKEFLAGS) doc |
From: Tom H. <tom...@us...> - 2003-03-24 18:46:32
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv20794/src Modified Files: Makefile.am Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./src/Makefile.am Added missing files to dist Index: Makefile.am =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/Makefile.am,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** Makefile.am 24 Mar 2003 18:15:19 -0000 1.37 --- Makefile.am 24 Mar 2003 18:46:22 -0000 1.38 *************** *** 314,318 **** comment.pl \ getcomments.pl \ ! addcomment.pl docdir = $(pkgdatadir)/doc --- 314,322 ---- comment.pl \ getcomments.pl \ ! addcomment.pl \ ! header.tex.tmpl \ ! doxygen.sty \ ! RC.eps \ ! RC.epdf docdir = $(pkgdatadir)/doc |
From: Tom H. <tom...@us...> - 2003-03-24 18:46:27
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv20794 Modified Files: ChangeLog Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./src/Makefile.am Added missing files to dist Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccparser/ChangeLog,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** ChangeLog 24 Mar 2003 18:41:02 -0000 1.63 --- ChangeLog 24 Mar 2003 18:46:21 -0000 1.64 *************** *** 1,4 **** --- 1,9 ---- 2003-03-24 Tom Howard <tom...@us...> + * ./src/Makefile.am + Added missing files to dist + + 2003-03-24 Tom Howard <tom...@us...> + * ./rccparser.ncb * ./rccparser.opt |
From: Tom H. <tom...@us...> - 2003-03-24 18:41:44
|
Update of /cvsroot/rccparser/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv12191/rccparser Modified Files: rccparser.dsp rccparser.plg Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./rccparser.ncb * ./rccparser.opt * ./rccparser/rccparser.dsp * ./rccparser/rccparser.plg * ./rccptest/rccptest.dsp * ./rccptest/rccptest.plg * ./src/rccparser.h Fixed VC++ compilation problems Index: rccparser.dsp =================================================================== RCS file: /cvsroot/rccparser/rccparser/rccparser/rccparser.dsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rccparser.dsp 17 Dec 2002 17:52:58 -0000 1.1 --- rccparser.dsp 24 Mar 2003 18:41:06 -0000 1.2 *************** *** 42,46 **** # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c ! # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" --- 42,46 ---- # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c ! # ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "HAVE_SSTREAM" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" *************** *** 64,69 **** # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" ! # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c ! # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" --- 64,69 ---- # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" ! # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c ! # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_LIB" /D "_DEBUG" /D "HAVE_SSTREAM" /D "WIN32" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" *************** *** 91,94 **** --- 91,98 ---- SOURCE=..\src\rccparse.cpp + # End Source File + # Begin Source File + + SOURCE=..\src\rccparser.cpp # End Source File # End Group Index: rccparser.plg =================================================================== RCS file: /cvsroot/rccparser/rccparser/rccparser/rccparser.plg,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rccparser.plg 17 Dec 2002 17:52:59 -0000 1.1 --- rccparser.plg 24 Mar 2003 18:41:09 -0000 1.2 *************** *** 4,23 **** <h1>Build Log</h1> <h3> ! --------------------Configuration: rccparser - Win32 Debug-------------------- </h3> <h3>Command Lines</h3> ! Creating temporary file "C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP49.tmp" with contents [ ! /nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"Debug/rccparser.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ! "H:\rccparser\src\rccparse.cpp" ! "H:\rccparser\src\rcclexer.cpp" ] ! Creating command line "cl.exe @C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP49.tmp" ! Creating command line "link.exe -lib /nologo /out:"Debug\rccparser.lib" .\Debug\rccparse.obj .\Debug\rcclexer.obj " <h3>Output Window</h3> Compiling... - rccparse.cpp - h:\rccparser\src\rccparser.h(81) : warning C4355: 'this' : used in base member initializer list rcclexer.cpp Creating library... --- 4,27 ---- <h1>Build Log</h1> <h3> ! --------------------Configuration: rccparser - Win32 Release-------------------- </h3> <h3>Command Lines</h3> ! Creating temporary file "C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP10.tmp" with contents [ ! /nologo /ML /W3 /GX /O2 /D "NDEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "HAVE_SSTREAM" /Fp"Release/rccparser.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c ! "H:\RCCPARSER\src\rcclexer.cpp" ! "H:\RCCPARSER\src\rccparse.cpp" ! "H:\rccparser\src\rccparser.cpp" ] ! Creating command line "cl.exe @C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP10.tmp" ! Creating command line "link.exe -lib /nologo /out:"Release\rccparser.lib" .\Release\rcclexer.obj .\Release\rccparse.obj .\Release\rccparser.obj " <h3>Output Window</h3> Compiling... rcclexer.cpp + H:\RCCPARSER\src\rccparser.h(1633) : warning C4355: 'this' : used in base member initializer list + rccparse.cpp + H:\RCCPARSER\src\rccparser.h(1633) : warning C4355: 'this' : used in base member initializer list + rccparser.cpp + H:\rccparser\src\rccparser.h(1633) : warning C4355: 'this' : used in base member initializer list Creating library... *************** *** 25,29 **** <h3>Results</h3> ! rccparser.lib - 0 error(s), 1 warning(s) </pre> </body> --- 29,33 ---- <h3>Results</h3> ! rccparser.lib - 0 error(s), 3 warning(s) </pre> </body> |
From: Tom H. <tom...@us...> - 2003-03-24 18:41:42
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv12191 Modified Files: ChangeLog NEWS rccparser.ncb rccparser.opt Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./rccparser.ncb * ./rccparser.opt * ./rccparser/rccparser.dsp * ./rccparser/rccparser.plg * ./rccptest/rccptest.dsp * ./rccptest/rccptest.plg * ./src/rccparser.h Fixed VC++ compilation problems Index: ChangeLog =================================================================== RCS file: /cvsroot/rccparser/rccparser/ChangeLog,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** ChangeLog 21 Mar 2003 16:06:50 -0000 1.62 --- ChangeLog 24 Mar 2003 18:41:02 -0000 1.63 *************** *** 1,2 **** --- 1,13 ---- + 2003-03-24 Tom Howard <tom...@us...> + + * ./rccparser.ncb + * ./rccparser.opt + * ./rccparser/rccparser.dsp + * ./rccparser/rccparser.plg + * ./rccptest/rccptest.dsp + * ./rccptest/rccptest.plg + * ./src/rccparser.h + Fixed VC++ compilation problems + 2003-03-21 Tom Howard <tom...@us...> Index: NEWS =================================================================== RCS file: /cvsroot/rccparser/rccparser/NEWS,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** NEWS 24 Mar 2003 18:15:17 -0000 1.19 --- NEWS 24 Mar 2003 18:41:02 -0000 1.20 *************** *** 1,15 **** [1.2.2] * When a version 8 player audio message is received by a player ! doBuildOppSide() and doBuildOurSide() are no longer called as they ! are redundant. doBuildPlayerAudio( int time, double dir, const ! std::string& msg ) or doBuildPlayerAudio( int time ) is called for ! opponent messages and doBuildPlayerAudio( int time, double dir, int ! unum, const std::string& msg ) or doBuildPlayerAudio( int time, int ! unum ) is called for team-mate's messages. ! * Support for the new catch fault, indirect free kick and penalty ! playmodes has been added. ! * All of rcc::Parser's virtual functions have now been documented. [1.2.1] --- 1,18 ---- [1.2.2] * When a version 8 player audio message is received by a player ! doBuildOppSide() and doBuildOurSide() are no longer called as they ! are redundant. doBuildPlayerAudio( int time, double dir, const ! std::string& msg ) or doBuildPlayerAudio( int time ) is called for ! opponent messages and doBuildPlayerAudio( int time, double dir, int ! unum, const std::string& msg ) or doBuildPlayerAudio( int time, int ! unum ) is called for team-mate's messages. ! * The minor changes to the Version 9 protocol are now supported, ! including the new catch fault, indirect free kick and penalty ! playmodes. ! * All of rcc::Parser's virtual functions have now been documented. ! If you spot any errors in the documentation please let me know or ! better yet, submit a patch. [1.2.1] Index: rccparser.ncb =================================================================== RCS file: /cvsroot/rccparser/rccparser/rccparser.ncb,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvsMtADOv and /tmp/cvswZCa8Z differ Index: rccparser.opt =================================================================== RCS file: /cvsroot/rccparser/rccparser/rccparser.opt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 Binary files /tmp/cvsvbyDhq and /tmp/cvs8DRH7H differ |
From: Tom H. <tom...@us...> - 2003-03-24 18:41:18
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv12191/src Modified Files: rccparser.h Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./rccparser.ncb * ./rccparser.opt * ./rccparser/rccparser.dsp * ./rccparser/rccparser.plg * ./rccptest/rccptest.dsp * ./rccptest/rccptest.plg * ./src/rccparser.h Fixed VC++ compilation problems Index: rccparser.h =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparser.h,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** rccparser.h 24 Mar 2003 18:15:21 -0000 1.30 --- rccparser.h 24 Mar 2003 18:41:11 -0000 1.31 *************** *** 485,489 **** bool parseCLang( const char* message ) ! { M_parser.parseCLang( message ); } void --- 485,489 ---- bool parseCLang( const char* message ) ! { return M_parser.parseCLang( message ); } void *************** *** 1640,1643 **** --- 1640,1647 ---- {} + #ifdef DOXYGEN_ONLY + /* The following functions are actually inherited from rcss::Parser, + but I cannot find a way to document them as such. */ + //! \name Parsing Functions //@{ *************** *** 1652,1659 **** */ bool ! parse( std::istream& strm ) ! { ! rcss::Parser::parse( strm ); ! } /** Secondary parsing function. --- 1656,1660 ---- */ bool ! parse( std::istream& strm ); /** Secondary parsing function. *************** *** 1669,1677 **** */ bool ! parse( const std::string& file ) ! { ! rcss::Parser::parse( file ); ! } //@} protected: /** This function is called every time a message has been parsed. --- 1670,1676 ---- */ bool ! parse( const std::string& file ); //@} + #endif protected: /** This function is called every time a message has been parsed. |
From: Tom H. <tom...@us...> - 2003-03-24 18:41:15
|
Update of /cvsroot/rccparser/rccparser/rccptest In directory sc8-pr-cvs1:/tmp/cvs-serv12191/rccptest Modified Files: rccptest.dsp rccptest.plg Log Message: 2003-03-24 Tom Howard <tom...@us...> * ./rccparser.ncb * ./rccparser.opt * ./rccparser/rccparser.dsp * ./rccparser/rccparser.plg * ./rccptest/rccptest.dsp * ./rccptest/rccptest.plg * ./src/rccparser.h Fixed VC++ compilation problems Index: rccptest.dsp =================================================================== RCS file: /cvsroot/rccparser/rccparser/rccptest/rccptest.dsp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rccptest.dsp 17 Dec 2002 17:53:01 -0000 1.1 --- rccptest.dsp 24 Mar 2003 18:41:10 -0000 1.2 *************** *** 42,46 **** # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c ! # ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" --- 42,46 ---- # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c ! # ADD CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HAVE_SSTREAM" /YX /FD /c # ADD BASE RSC /l 0x809 /d "NDEBUG" # ADD RSC /l 0x809 /d "NDEBUG" *************** *** 49,54 **** # ADD BSC32 /nologo LINK32=link.exe ! # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 ! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "rccptest - Win32 Debug" --- 49,54 ---- # ADD BSC32 /nologo LINK32=link.exe ! # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 ! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 !ELSEIF "$(CFG)" == "rccptest - Win32 Debug" *************** *** 64,69 **** # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" ! # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c ! # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" --- 64,69 ---- # PROP Intermediate_Dir "Debug" # PROP Target_Dir "" ! # ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c ! # ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "_CONSOLE" /D "_DEBUG" /D "HAVE_SSTREAM" /D "WIN32" /D "_MBCS" /YX /FD /GZ /c # ADD BASE RSC /l 0x809 /d "_DEBUG" # ADD RSC /l 0x809 /d "_DEBUG" *************** *** 72,77 **** # ADD BSC32 /nologo LINK32=link.exe ! # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF --- 72,77 ---- # ADD BSC32 /nologo LINK32=link.exe ! # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept ! # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept !ENDIF Index: rccptest.plg =================================================================== RCS file: /cvsroot/rccparser/rccparser/rccptest/rccptest.plg,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** rccptest.plg 6 Jan 2003 16:29:08 -0000 1.2 --- rccptest.plg 24 Mar 2003 18:41:10 -0000 1.3 *************** *** 4,54 **** <h1>Build Log</h1> <h3> ! --------------------Configuration: rccparser - Win32 Debug-------------------- ! </h3> ! <h3>Command Lines</h3> ! Creating temporary file "C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP5.tmp" with contents ! [ ! /nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /Fp"Debug/rccparser.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c ! "H:\RCCPARSER\src\rcclexer.cpp" ! "H:\RCCPARSER\src\rccparse.cpp" ! ] ! Creating command line "cl.exe @C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP5.tmp" ! Creating command line "link.exe -lib /nologo /out:"Debug\rccparser.lib" .\Debug\rcclexer.obj .\Debug\rccparse.obj " ! <h3>Output Window</h3> ! Compiling... ! rcclexer.cpp ! rccparse.cpp ! h:\rccparser\src\rccparser.h(81) : warning C4355: 'this' : used in base member initializer list ! Creating library... ! <h3> ! --------------------Configuration: rccptest - Win32 Debug-------------------- </h3> <h3>Command Lines</h3> ! Creating temporary file "C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP6.tmp" with contents [ ! /nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"Debug/rccptest.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c "H:\RCCPARSER\src\rccptest.cpp" ] ! Creating command line "cl.exe @C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP6.tmp" ! Creating temporary file "C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP7.tmp" with contents [ ! kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"Debug/rccptest.pdb" /debug /machine:I386 /out:"Debug/rccptest.exe" /pdbtype:sept ! .\Debug\rccptest.obj ! \RCCPARSER\rccparser\Debug\rccparser.lib ] ! Creating command line "link.exe @C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP7.tmp" <h3>Output Window</h3> Compiling... rccptest.cpp ! h:\rccparser\src\rccparser.h(81) : warning C4355: 'this' : used in base member initializer list ! c:\program files\microsoft visual studio\vc98\include\deque(208) : warning C4786: 'std::reverse_iterator<std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::const_iterator,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > const *,int>' : identifier was truncated to '255' characters in the debug information ! c:\program files\microsoft visual studio\vc98\include\deque(207) : while compiling class-template member function '__thiscall std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::~std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >(void)' ! c:\program files\microsoft visual studio\vc98\include\deque(208) : warning C4786: 'std::reverse_iterator<std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::iterator,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,int>' : identifier was truncated to '255' characters in the debug information ! c:\program files\microsoft visual studio\vc98\include\deque(207) : while compiling class-template member function '__thiscall std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::~std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >(void)' ! warning C4786: 'std::stack<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::~stack<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >' : identifier was truncated to '255' characters in the debug information ! c:\program files\microsoft visual studio\vc98\include\stack(22) : warning C4786: 'std::stack<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::stack<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >' : identifier was truncated to '255' characters in the debug information ! c:\program files\microsoft visual studio\vc98\include\stack(27) : warning C4786: 'std::stack<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::empty' : identifier was truncated to '255' characters in the debug information ! c:\program files\microsoft visual studio\vc98\include\deque(208) : warning C4786: 'std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::~deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information ! c:\program files\microsoft visual studio\vc98\include\deque(191) : warning C4786: 'std::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >::deque<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > >' : identifier was truncated to '255' characters in the debug information Linking... --- 4,27 ---- <h1>Build Log</h1> <h3> ! --------------------Configuration: rccptest - Win32 Release-------------------- </h3> <h3>Command Lines</h3> ! Creating temporary file "C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP11.tmp" with contents [ ! /nologo /ML /W3 /GX /O2 /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /D "HAVE_SSTREAM" /Fp"Release/rccptest.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c "H:\RCCPARSER\src\rccptest.cpp" ] ! Creating command line "cl.exe @C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP11.tmp" ! Creating temporary file "C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP12.tmp" with contents [ ! kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"Release/rccptest.pdb" /machine:I386 /out:"Release/rccptest.exe" ! .\Release\rccptest.obj ! \RCCPARSER\rccparser\Release\rccparser.lib ] ! Creating command line "link.exe @C:\DOCUME~1\THOWAR~1.PCT\LOCALS~1\Temp\RSP12.tmp" <h3>Output Window</h3> Compiling... rccptest.cpp ! H:\RCCPARSER\src\rccparser.h(1633) : warning C4355: 'this' : used in base member initializer list Linking... *************** *** 56,60 **** <h3>Results</h3> ! rccptest.exe - 0 error(s), 9 warning(s) </pre> </body> --- 29,33 ---- <h3>Results</h3> ! rccptest.exe - 0 error(s), 1 warning(s) </pre> </body> |
From: Tom H. <tom...@us...> - 2003-03-24 18:15:54
|
Update of /cvsroot/rccparser/rccparser In directory sc8-pr-cvs1:/tmp/cvs-serv1335 Modified Files: NEWS bootstrap configure.in Log Message: 2003-03-21 Tom Howard <tom...@us...> * ./src/Makefile.am * ./src/RC.epdf * ./src/RC.eps * ./src/RC.tif * ./src/RC.xcf * ./src/doxygen.sty * ./src/header.tex.tmpl Spruced up pdf and ps docs. Index: NEWS =================================================================== RCS file: /cvsroot/rccparser/rccparser/NEWS,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** NEWS 19 Mar 2003 18:40:30 -0000 1.18 --- NEWS 24 Mar 2003 18:15:17 -0000 1.19 *************** *** 11,15 **** playmodes has been added. ! * More documentation has been added. [1.2.1] --- 11,15 ---- playmodes has been added. ! * All of rcc::Parser's virtual functions have now been documented. [1.2.1] Index: bootstrap =================================================================== RCS file: /cvsroot/rccparser/rccparser/bootstrap,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** bootstrap 26 Jul 2002 08:12:37 -0000 1.1 --- bootstrap 24 Mar 2003 18:15:17 -0000 1.2 *************** *** 1,6 **** #!/bin/sh set -x ! aclocal -I $LIBTOOL_ACLOCALDIR libtoolize --force --copy autoheader automake --add-missing --copy --- 1,7 ---- #!/bin/sh set -x ! aclocal libtoolize --force --copy + aclocal autoheader automake --add-missing --copy Index: configure.in =================================================================== RCS file: /cvsroot/rccparser/rccparser/configure.in,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** configure.in 3 Feb 2003 13:47:42 -0000 1.31 --- configure.in 24 Mar 2003 18:15:18 -0000 1.32 *************** *** 18,21 **** --- 18,29 ---- + AC_ARG_WITH(sstream, + AC_HELP_STRING([--with-sstream], + [use sstream instead of strstream (default=yes)]), + use_sstream=$withval, use_sstream=yes) + if test "$use_sstream" = "yes"; then + AC_CXX_HAVE_SSTREAM + fi + AC_PROG_YACC *************** *** 71,111 **** if test $RCCPTEST=rccptest; then AC_CHECK_HEADERS([rcssserver/clangparser.h], [ ! AC_CHECK_LIB(rcssclangparser, parse, [], [ ! echo "" ! echo "************** WARNING ****************" ! echo "Could not find the rcssclangparser library or it is out of date." ! echo "If you wish to link rccptest with the rcssclangparser library," ! echo "please (re)install rcssserver or specify the path to the" ! echo "rcssclangparser library by adding" ! echo "" ! echo -e "\tCXXFLAGS=\"-L<LIBDIR> <YOUR_OTHER_FLAGS>\"" ! echo "" ! echo "to configure's command line arguments." ! echo "" ! echo "By not linking rccptest against the rcssclangparser library," ! echo "rccptest will use a dumby parser that will pretend that all CLang" ! echo "messages are parsed correctly, so long as the rccparser library" ! echo "recognises it as a CLang message" ! echo "************** WARNING ****************" ! echo "" ! ])], [ ! echo "" ! echo "************** WARNING ****************" ! echo "Could not find the headers for the rcssclangparser library or it is" ! echo "out of date. If you wish to link rccptest with the rcssclangparser" ! echo " library, please (re)install rcssserver or specify the path to the" ! echo "rcssclangparser library headers by adding" ! echo "" ! echo -e "\tCXXFLAGS=\"-I<INCLUDEDIR> <YOUR_OTHER_FLAGS>\"" ! echo "" ! echo "to configure's command line arguments." ! echo "" ! echo "By not linking rccptest against the rcssclangparser library," ! echo "rccptest will use a dumby parser that will pretend that all CLang" ! echo "messages are parsed correctly, so long as the rccparser library" ! echo "recognises it as a CLang message" ! echo "************** WARNING ****************" ! echo "" ! ]) fi --- 79,114 ---- if test $RCCPTEST=rccptest; then AC_CHECK_HEADERS([rcssserver/clangparser.h], [ ! AC_CHECK_LIB(rcssclangparser, parse, [], [AC_MSG_WARN([ ! ! Could not find the rcssclangparser library or it is out of date. ! If you wish to link rccptest with the rcssclangparser library, ! please (re)install rcssserver or specify the path to the ! rcssclangparser library by adding ! ! CXXFLAGS=\"-L<LIBDIR> <YOUR_OTHER_FLAGS>\" ! ! to configure's command line arguments. ! ! By not linking rccptest against the rcssclangparser library, ! rccptest will use a dumby parser that will pretend that all CLang ! messages are parsed correctly, so long as the rccparser library ! recognises it as a CLang message. ! ])] ! )], [AC_MSG_WARN([ ! ! Could not find the headers for the rcssclangparser library or it is ! out of date. If you wish to link rccptest with the rcssclangparser ! library, please (re)install rcssserver or specify the path to the ! rcssclangparser library headers by adding ! ! CXXFLAGS=\"-I<INCLUDEDIR> <YOUR_OTHER_FLAGS>\" ! ! to configure's command line arguments. ! ! By not linking rccptest against the rcssclangparser library, ! rccptest will use a dumby parser that will pretend that all CLang ! messages are parsed correctly, so long as the rccparser library ! recognises it as a CLang message. ! ])]) fi *************** *** 113,118 **** AM_CONDITIONAL(BUILD_DOC, [test "$DOXYGEN"] ) ! AC_ARG_VAR(HAVE_DOT, [If the program dot is available]) ! AC_PATH_PROG(HAVE_DOT, dot, YES, NO) dnl test for debug mode --- 116,123 ---- AM_CONDITIONAL(BUILD_DOC, [test "$DOXYGEN"] ) ! AC_ARG_VAR(DOT, [name and location of dot executable, which is ! used for creating diagrams in the documentation. If it is not ! set, it configure looks for dot in your PATH.]) ! AC_PATH_PROG(DOT, dot) dnl test for debug mode |
From: Tom H. <tom...@us...> - 2003-03-24 18:15:38
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv1335/src Modified Files: Makefile.am header.tex.tmpl rcclexer.h rccparse.ypp rccparser.h rccptest.cpp Added Files: rccparser.cpp Log Message: 2003-03-21 Tom Howard <tom...@us...> * ./src/Makefile.am * ./src/RC.epdf * ./src/RC.eps * ./src/RC.tif * ./src/RC.xcf * ./src/doxygen.sty * ./src/header.tex.tmpl Spruced up pdf and ps docs. --- NEW FILE: rccparser.cpp --- // -*-c++-*- /*************************************************************************** rccparser.cpp Parser Abstract Base Class ------------------- begin : 22-MAR-2003 copyright : (C) 2003 by Tom Howard email : tom...@us... ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU GPL as published by the Free Software * * Foundation; either version 2 of the License, or (at your option) any * * later version. * * * ***************************************************************************/ #include "rccparser.h" #include "rcclexer.h" #include <algorithm> namespace rcc { Parser::Param::Param( Parser& parser ) : M_parser( parser ), M_lexer( new rcc::Lexer ) {} Parser::Param::~Param() { delete M_lexer; } Parser::Param::Param( const Param& param ) : M_parser( param.M_parser ), M_lexer( new rcc::Lexer( *( param.M_lexer ) ) ) {} Parser::Param& Parser::Param::operator=( const Parser::Param& param ) { Parser::Param tmp( param ); std::swap( tmp, *this ); return *this; } bool Parser::setStream( std::istream& strm ) { M_param.getLexer().switch_streams( &strm, &std::cerr ); return true; } } Index: Makefile.am =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/Makefile.am,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** Makefile.am 21 Mar 2003 16:06:51 -0000 1.36 --- Makefile.am 24 Mar 2003 18:15:19 -0000 1.37 *************** *** 24,28 **** librccparser_la_SOURCES = \ rcclexer.cpp \ ! rccparse.ypp librccparser_la_LDFLAGS = -version-info 3:0:3 --- 24,29 ---- librccparser_la_SOURCES = \ rcclexer.cpp \ ! rccparse.ypp \ ! rccparser.cpp librccparser_la_LDFLAGS = -version-info 3:0:3 *************** *** 109,113 **** ! HTMLFILES = doc/html/annotated.html \ doc/html/annotated.html \ doc/html/classes.html \ --- 110,114 ---- ! HTMLFILES = \ doc/html/annotated.html \ doc/html/classes.html \ *************** *** 117,126 **** doc/html/classrcc_1_1Parser__inherit__graph.gif \ doc/html/files.html \ ! doc/html/footer.html \ doc/html/functions.html \ doc/html/globals.html \ doc/html/graph_legend.gif \ doc/html/graph_legend.html \ - doc/html/header.html \ doc/html/hierarchy.html \ doc/html/index.html \ --- 118,126 ---- doc/html/classrcc_1_1Parser__inherit__graph.gif \ doc/html/files.html \ ! doc/html/doxygen.gif \ doc/html/functions.html \ doc/html/globals.html \ doc/html/graph_legend.gif \ doc/html/graph_legend.html \ doc/html/hierarchy.html \ doc/html/index.html \ *************** *** 135,190 **** doc/html/rccparser_8h.html \ doc/html/rccparser_8h__dep__incl.gif \ ! doc/html/rccparser_8h__incl.gifrccptest_8cpp-source.html header.tex: header.tex.tmpl ! $(AWK) -v ver=@VERSION@ -v date=`date +%Y-%m-%d` \ ! '/@VER@/ { sub( /@VER@/, ver ); } /@DATE@/ { sub( /@DATE@/, date ); } { print }' \ $(srcdir)/header.tex.tmpl > header.tex doc/html/style.css: style.css ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! cp -f $(srcdir)/style.css doc/html/style.css doc/html/header.jpg: header.jpg ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! cp -f $(srcdir)/header.jpg doc/html/header.jpg doc/latex/doxygen.sty: doxygen.sty ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/doxygen.sty doc/latex/doxygen.sty ! ! doc/latex/header.tex: header.tex ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/header.tex doc/latex/header.tex doc/latex/RC.eps: RC.eps ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/RC.eps doc/latex/RC.eps ! doc/latex/RC.pdf: RC.pdf ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! cp -f $(srcdir)/RC.pdf doc/latex/RC.pdf doc/html/getcomments.pl: getcomments.pl ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! cp -f $(srcdir)/getcomments.pl doc/html/getcomments.pl doc/html/comment.pl: comment.pl ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! cp -f $(srcdir)/comment.pl doc/html/comment.pl doc/html/addcomment.pl: addcomment.pl ! if ! test -d doc; then rm -f doc; mkdir doc; fi ! if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! cp -f $(srcdir)/addcomment.pl doc/html/addcomment.pl --- 135,186 ---- doc/html/rccparser_8h.html \ doc/html/rccparser_8h__dep__incl.gif \ ! doc/html/rccparser_8h__incl.gif \ ! doc/html/rccptest_8cpp-source.html header.tex: header.tex.tmpl ! @$(AWK) -v ver=@VERSION@ -v date=`date +%Y-%m-%d` \ ! '/@VER@/ { sub( /@VER@/, ver ); } { print }' \ $(srcdir)/header.tex.tmpl > header.tex doc/html/style.css: style.css ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @cp -f $(srcdir)/style.css doc/html/style.css doc/html/header.jpg: header.jpg ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @cp -f $(srcdir)/header.jpg doc/html/header.jpg doc/latex/doxygen.sty: doxygen.sty ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/doxygen.sty doc/latex/doxygen.sty doc/latex/RC.eps: RC.eps ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/RC.eps doc/latex/RC.eps ! doc/latex/RC.pdf: RC.epdf ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/latex; then rm -f doc/latex; mkdir doc/latex; fi ! @cp -f $(srcdir)/RC.epdf doc/latex/RC.pdf doc/html/getcomments.pl: getcomments.pl ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @cp -f $(srcdir)/getcomments.pl doc/html/getcomments.pl doc/html/comment.pl: comment.pl ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @cp -f $(srcdir)/comment.pl doc/html/comment.pl doc/html/addcomment.pl: addcomment.pl ! @if ! test -d doc; then rm -f doc; mkdir doc; fi ! @if ! test -d doc/html; then rm -f doc/html; mkdir doc/html; fi ! @cp -f $(srcdir)/addcomment.pl doc/html/addcomment.pl *************** *** 194,239 **** doxygen.conf: doxygen.conf.tmpl $(pkginclude_HEADERS) $(librccparser_la_SOURCES) $(rccptest_SOURCES) header.tex ! $(AWK) -v have_dot=@HAVE_DOT@ \ ! '/@DOT@/ { sub( /@DOT@/, have_dot ); } /@INPUT@/ { sub( /@INPUT@/, "$(srcdir)" ); } { print }' \ $(srcdir)/doxygen.conf.tmpl > doxygen.conf doxygen doxygen.conf ! cp -f $(srcdir)/doxygen.sty doc/latex/doxygen.sty $(HTMLFILES): doxygen doc/html/header.html doc/html/footer.html doc/html/style.css ! chmod +x $@ ! ! doc/latex/refman.ps: doxygen doc/latex/doxygen.sty doc/latex/header.tex ! cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) ps doc/ps/@PACKAGE@-@VERSION@.ps: doc/latex/refman.ps ! if ! test -d doc/ps; then mkdir doc/ps; fi ! cp doc/latex/refman.ps doc/ps/@PACKAGE@-@VERSION@.ps ! doc/latex/refman.pdf: doxygen doc/latex/doxygen.sty doc/latex/header.tex ! cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) pdf doc/pdf/@PACKAGE@-@VERSION@.pdf: doc/latex/refman.pdf ! if ! test -d doc/pdf; then mkdir doc/pdf; fi ! cp doc/latex/refman.pdf doc/pdf/@PACKAGE@-@VERSION@.pdf doc/xml/doxygen.xml: doxygen doc/xml/@PACKAGE@-@VERSION@.xml: doc/xml/doxygen.xml ! cp doc/xml/doxygen.xml doc/xml/@PACKAGE@-@VERSION@.xml doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz: $(HTMLFILES) doc/html/style.css doc/html/comment.pl doc/html/getcomments.pl doc/html/addcomment.pl ! if ! test -d doc/htmlgz; then rm -f doc/htmlgz; mkdir doc/htmlgz; fi ! ln -s doc/html @PACKAGE@-@VERSION@.html ! $(AMTAR) chof - "@PACKAGE@-@VERSION@.html" | GZIP=$(GZIP_ENV) gzip -c >"doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz" ! rm -rf @PACKAGE@-@VERSION@.html else doxygen.conf: doxygen.conf.tmpl $(pkginclude_HEADERS) $(librccparser_la_SOURCES) $(rccptest_SOURCES) ! $(AWK) -v have_dot=@HAVE_DOT@ \ ! '/@DOT@/ { sub( /@DOT@/, have_dot ); } /@INPUT@/ { sub( /@INPUT@/, "$(srcdir)" ); } { print }' \ $(srcdir)/doxygen.conf.tmpl > doxygen.conf --- 190,245 ---- doxygen.conf: doxygen.conf.tmpl $(pkginclude_HEADERS) $(librccparser_la_SOURCES) $(rccptest_SOURCES) header.tex ! @if test "@DOT@"; then \ ! HAVE_DOT="YES"; \ ! else \ ! HAVE_DOT="NO"; \ ! fi; \ ! $(AWK) -v have_dot=$$HAVE_DOT \ ! '/@HAVE_DOT@/ { sub( /@HAVE_DOT@/, have_dot ); } /@INPUT@/ { sub( /@INPUT@/, "$(srcdir)" ); } { print }' \ $(srcdir)/doxygen.conf.tmpl > doxygen.conf doxygen doxygen.conf ! @rm -f doc/latex/doxygen.sty $(HTMLFILES): doxygen doc/html/header.html doc/html/footer.html doc/html/style.css ! @chmod +x $@ ! @touch $@ ! doc/latex/refman.ps: doxygen doc/latex/doxygen.sty doc/latex/RC.eps ! @cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) ps doc/ps/@PACKAGE@-@VERSION@.ps: doc/latex/refman.ps ! @if ! test -d doc/ps; then mkdir doc/ps; fi ! @cp doc/latex/refman.ps doc/ps/@PACKAGE@-@VERSION@.ps ! doc/latex/refman.pdf: doxygen doc/latex/doxygen.sty doc/latex/RC.pdf ! @cd doc/latex && $(MAKE) $(AM_MAKEFLAGS) pdf doc/pdf/@PACKAGE@-@VERSION@.pdf: doc/latex/refman.pdf ! @if ! test -d doc/pdf; then mkdir doc/pdf; fi ! @cp doc/latex/refman.pdf doc/pdf/@PACKAGE@-@VERSION@.pdf doc/xml/doxygen.xml: doxygen doc/xml/@PACKAGE@-@VERSION@.xml: doc/xml/doxygen.xml ! @cp doc/xml/doxygen.xml doc/xml/@PACKAGE@-@VERSION@.xml doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz: $(HTMLFILES) doc/html/style.css doc/html/comment.pl doc/html/getcomments.pl doc/html/addcomment.pl ! @if ! test -d doc/htmlgz; then rm -f doc/htmlgz; mkdir doc/htmlgz; fi ! @ln -s doc/html @PACKAGE@-@VERSION@.html ! @$(AMTAR) chof - "@PACKAGE@-@VERSION@.html" | GZIP=$(GZIP_ENV) gzip -c >"doc/htmlgz/@PACKAGE@-@VERSION@.html.tar.gz" ! @rm -rf @PACKAGE@-@VERSION@.html else doxygen.conf: doxygen.conf.tmpl $(pkginclude_HEADERS) $(librccparser_la_SOURCES) $(rccptest_SOURCES) ! @if test "@DOT@"; then \ ! HAVE_DOT="YES"; \ ! else \ ! HAVE_DOT="NO"; \ ! fi; \ ! $(AWK) -v have_dot=$$HAVE_DOT \ ! '/@HAVE_DOT@/ { sub( /@HAVE_DOT@/, have_dot ); } /@INPUT@/ { sub( /@INPUT@/, "$(srcdir)" ); } { print }' \ $(srcdir)/doxygen.conf.tmpl > doxygen.conf Index: header.tex.tmpl =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/header.tex.tmpl,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** header.tex.tmpl 21 Mar 2003 16:06:52 -0000 1.1 --- header.tex.tmpl 24 Mar 2003 18:15:19 -0000 1.2 *************** *** 50,54 **** \textsl{\textbf{{\Huge @VER@}}}\\ \vspace*{1cm} ! {\LARGE @DATE@}\\ \vspace*{1cm} {\LARGE By Tom Howard}\\ --- 50,54 ---- \textsl{\textbf{{\Huge @VER@}}}\\ \vspace*{1cm} ! {\LARGE \today}\\ \vspace*{1cm} {\LARGE By Tom Howard}\\ Index: rcclexer.h =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rcclexer.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** rcclexer.h 6 Jan 2003 15:41:32 -0000 1.4 --- rcclexer.h 24 Mar 2003 18:15:19 -0000 1.5 *************** *** 28,132 **** #include <string> class RCCLexer : public yyFlexLexer { public: ! class Holder ! { ! private: ! enum Type { S_CSTR, S_INT, S_DOUB, S_BOOL, S_STR }; ! ! union ! { ! const char* m_cstr; ! int m_int; ! double m_double; ! bool m_bool; ! }; ! std::string m_str; ! Type m_type; ! ! public: ! Holder& ! operator=( const char* x ) ! { ! m_cstr = x; ! m_type = S_CSTR; ! return *this; ! } ! ! Holder& ! operator=( int x ) ! { ! m_int = x; ! m_type = S_INT; ! return *this; ! } ! ! Holder& ! operator=( double x ) ! { ! m_double = x; ! m_type = S_DOUB; ! return *this; ! } ! ! Holder& ! operator=( bool x ) ! { ! m_bool = x; ! m_type = S_BOOL; ! return *this; ! } ! ! Holder& ! operator=( const std::string& x ) ! { ! m_str = x; ! m_type = S_STR; ! return *this; ! } ! ! const char* ! getCStr() const ! { return m_cstr; } ! ! int ! getInt() const ! { return m_int; } ! ! double ! getDouble() const ! { return m_double; } ! ! bool ! getBool() const ! { return m_bool; } ! ! std::string& ! getStr() ! { return m_str; } ! ! const std::string& ! getStr() const ! { return m_str; } ! }; ! ! virtual ! int ! yylex(); ! inline ! int ! lex( Holder& holder ) ! { M_lexed_val = &holder; return yylex(); } private: ! Holder* M_lexed_val; }; namespace rcc { ! typedef RCCLexer Lexer; } --- 28,57 ---- #include <string> + #include "rccparser.h" + class RCCLexer : public yyFlexLexer { public: ! typedef rcc::Holder Holder; ! virtual ! int ! yylex(); + inline + int + lex( Holder& holder ) + { M_lexed_val = &holder; return yylex(); } private: ! Holder* M_lexed_val; }; namespace rcc { ! class Lexer ! : public RCCLexer ! { ! }; } Index: rccparse.ypp =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparse.ypp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** rccparse.ypp 19 Mar 2003 18:40:32 -0000 1.9 --- rccparse.ypp 24 Mar 2003 18:15:20 -0000 1.10 *************** *** 2,6 **** /*************************************************************************** ! rccparse.yy Implementation of RoboCup language parser ------------------- --- 2,6 ---- /*************************************************************************** ! rccparse.ypp Implementation of RoboCup language parser ------------------- *************** *** 21,25 **** --- 21,37 ---- %{ + #ifdef HAVE_CONFIG_H + #include "config.h" + #endif + + #ifdef HAVE_SSTREAM + #include <sstream> + #else + #include <strstream> + #endif + #include "rccparser.h" + #include "rcclexer.h" + /* C declarations */ *************** *** 74,77 **** --- 86,108 ---- namespace rcc { + bool + Parser::parseCLang( const char* message ) + { + #ifdef HAVE_SSTREAM + std::istringstream strm( message ); + #else + std::istrstream strm( message ); + #endif + if( M_clang_parser.parse( strm ) ) + { + doParsedCLang( message ); + return true; + } + else + { + return false; + } + } + rcc::Parser::Param& getParam( void* param ) *************** *** 90,94 **** #define PARSER getParser( param ) ! #define YYSTYPE rcc::Parser::Lexer::Holder inline --- 121,125 ---- #define PARSER getParser( param ) ! #define YYSTYPE rcc::Holder inline *************** *** 96,107 **** yylex( YYSTYPE* holder, rcc::Parser::Param& param ) { ! int rval = param.getLexer().lex( *holder ); /* cout << rval << endl; */ ! return rval; } inline int ! getInt( const rcc::Parser::Lexer::Holder& holder ) { return holder.getInt(); --- 127,138 ---- yylex( YYSTYPE* holder, rcc::Parser::Param& param ) { ! int rval = param.getLexer().lex( *holder ); /* cout << rval << endl; */ ! return rval; } inline int ! getInt( const rcc::Holder& holder ) { return holder.getInt(); *************** *** 110,114 **** inline double ! getDouble( const rcc::Parser::Lexer::Holder& holder ) { return holder.getDouble(); --- 141,145 ---- inline double ! getDouble( const rcc::Holder& holder ) { return holder.getDouble(); *************** *** 117,136 **** inline const std::string& ! getString( const rcc::Parser::Lexer::Holder& holder ) { return holder.getStr(); } inline std::string& ! getString( rcc::Parser::Lexer::Holder& holder ) { return holder.getStr(); } inline const char* ! getCStr( const rcc::Parser::Lexer::Holder& holder ) { return holder.getCStr(); } inline bool ! getBool( const rcc::Parser::Lexer::Holder& holder ) { return holder.getBool(); --- 148,167 ---- inline const std::string& ! getString( const rcc::Holder& holder ) { return holder.getStr(); } inline std::string& ! getString( rcc::Holder& holder ) { return holder.getStr(); } inline const char* ! getCStr( const rcc::Holder& holder ) { return holder.getCStr(); } inline bool ! getBool( const rcc::Holder& holder ) { return holder.getBool(); Index: rccparser.h =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccparser.h,v retrieving revision 1.29 retrieving revision 1.30 diff -C2 -d -r1.29 -r1.30 *** rccparser.h 20 Mar 2003 11:58:49 -0000 1.29 --- rccparser.h 24 Mar 2003 18:15:21 -0000 1.30 *************** *** 3,7 **** /*************************************************************************** rccparser.h ! Parser template ------------------- begin : 24-MAY-2002 --- 3,7 ---- /*************************************************************************** rccparser.h ! Parser Abstract Base Class ------------------- [...1062 lines suppressed...] + * unknown OK messages. + * + * Unknown OK message only occur when the parser is used with a + * newer version of the simulator and the parser has not been + * updated. By using this function you can provide support in your + * teams for new OK messages without having to wait for the parser + * to be upgraded. + * + * \pre An entire unknown OK + * message has been parsed. + * + */ virtual void doBuildUnknownOK( const std::string& msg ) {} //@} + + }; } Index: rccptest.cpp =================================================================== RCS file: /cvsroot/rccparser/rccparser/src/rccptest.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** rccptest.cpp 10 Jan 2003 17:36:04 -0000 1.4 --- rccptest.cpp 24 Mar 2003 18:15:22 -0000 1.5 *************** *** 23,26 **** --- 23,32 ---- #endif + #ifdef HAVE_SSTREAM + #include <sstream> + #else + #include <strstream> + #endif + #include "rccparser.h" #include <stack> *************** *** 106,110 **** --- 112,120 ---- if( str.size() == 2 ) { + #ifdef HAVE_SSTREAM std::istringstream strm( str ); + #else + std::istrstream strm( str ); + #endif int offset = -1; strm >> offset; |
From: Tom H. <tom...@us...> - 2003-03-21 16:06:55
|
Update of /cvsroot/rccparser/rccparser/src In directory sc8-pr-cvs1:/tmp/cvs-serv27758/src Modified Files: Makefile.am Added Files: RC.epdf RC.eps RC.tif RC.xcf doxygen.sty header.tex.tmpl Log Message: 2003-03-21 Tom Howard <tom...@us...> * ./src/Makefile.am * ./src/RC.epdf * ./src/RC.eps * ./src/RC.tif * ./src/RC.xcf * ./src/doxygen.sty * ./src/header.tex.tmpl Spruced up pdf and ps docs. --- NEW FILE: RC.epdf --- %PDF-1.2 1 0 obj << /CreationDate (D:20030321143405) /Producer (@\(#\)ImageMagick 5.3.8 09/01/01 Q:16 http://www.imagemagick.org) >> endobj 2 0 obj << /Type /Catalog /Pages 3 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> [...3358 lines suppressed...] 0000000430 00000 n 0000000513 00000 n 0000000531 00000 n 0000000569 00000 n 0000000677 00000 n 0000227454 00000 n 0000227477 00000 n 0000227504 00000 n 0000243217 00000 n 0000000000 00000 n 0000000000 00000 n trailer << /Size 16 /Info 1 0 R /Root 2 0 R >> startxref 243239 %%EOF --- NEW FILE: RC.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (RC.eps) %%CreationDate: (Fri Mar 21 14:34:02 2003) %%BoundingBox: 0 0 400 150 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...5240 lines suppressed...] ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff end %%PageTrailer %%Trailer %%EOF --- NEW FILE: RC.tif --- II* ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿýÿþÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿÿýÿÿýÿÿýÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿþÿÿþÿýýÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿþÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþþþÿÿÿÿÿýÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿýÿÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿþÿþþþøùûñòôäèéÚÞßÕØÝÔ×ÜÕØÝÔ×Ü×ÛÞâæéíîðö÷ùýýýþþþÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿýÿÿÿÿÿÿýþÿóôöäåéÖ×ÛÄËÑ·ÀǨ±º£¯¦¡}tuwz{|¢¦ «£«¶²¹ÃÁÆÌÎÑÖÞßáëíìúúúþÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýüãçê·¾Ä ©{{|| ¢ ¢¦ª«¯®¬§¢~}zz£¨¬ÍÑÔõöøÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿýÿÿÿþþþÿÿÿþÿÿþÿýÿÿÿÿþÿÿÿÿÿÿÿÿÿýÿÿÿùùùÈÑÚ ª~x¤©ª«¨¨¥| ¢²¥µ¥µ¥µ¤´£³¯ª©¥¥¤¢ ¢|pq}²·½æçéÿÿÿþþþÿÿÿþÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿýÿþÿÿþÿÿÿÿþÿÿþþþÿÿÿçè췾ƥ}¡¥«« xtro{kwo{§««©«¡} ¢ ¡yo{u©ÍÐÕùûúÿÿýþþþÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿýÿÿÿþþÿÿÿÿÿÿÿþþþÞâ奸|¦¨y xxn|jviriuiuhtv ~ ¢£§¥ |q}oy ¾ÁÆö÷ûþþþÿÿýþþþÿÿÿÿÿÿþÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿýÿÿÿÿÿÿÿÿýÿÿÿöúý®µ½~¢«¨}slxjvgslzqssp|p| ¬§³¦²«· ¬¸¢¬¦¤£¡¢||{}}ugsáåèþþþÿÿÿþþþþþþÿÿýþþþÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿÿÿÿÿþÿÿÿÿûüþÓØÜ©ª zr~nznzmzq~w}xvtx¤¨´ ¬¸¦²¾§³¿£¯»©µ£¯ ¬¡ ¬ ¬©¨¦¤¡ yyzu}u}r~oy¨¯·ìðóÿÿÿþþþþþþÿÿÿÿÿÿþþüÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿÿñõö¿ÆÌ§³£¬¬} ¦ªªª¡°¡°¯¨§µ¬¶Âª´À¦°¼§±½§±½£¹£¹£¹¢¬¸ ª¶ ª¶ ª¶¨´¦²£¯¢«¢« ª§¦¢}u}vxzq}|¤ÑÕØþÿÿþÿÿÿÿÿÿÿýþþüÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿþÿÿÿÿÙÞᣯ«»¨·¨¤ ¬¢®¦¯§±¨²§´½¸ÄмÈÔºÆÒ¹Ç¦²À¬¶Âª´Àª´À·Ã¯¹Å³½É°ºÆ®¸Ä¬¶Â¬¶Â«µÁ·Ã°ºÆ¹ÃϵÁͱ½É§±½ ª¶¨²¥¯¢¬¡«©§¦¢~{wyvlxir{¤©¯ôõùþÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿýþÿÿÇÎÔ¦¦¶¬¼¡° ¬¦²ª¶£¯½ª¸«·«´Ã½ÆÕÂÎÞ¾ÊØ³¿Ë°ºÄµ¾Ç´¾È³½Ç¶ÀÊ´Áʵ¿É³½Ç³½Ç³½Ç±»Ç´¾Ê¸ÂΰºÆ²¼È½ÇÓ¼ÈÔ¾ÊÖ¹ÃϬ¶Â¦°¼¡«µ©³¦°¤£¬¢« ª¨¥ {t~t~dm|jsjvXdpûüÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþþþÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿýþþÿÿÉÐØ¯«»£°£ ¬¨´¨´À¨´À¦°¼¤®º¹Å¼ÈÔÅÏÛÇÑÝÂÌØ»ÅѹÃͺÄιÃϺÄлÅϺÄθÂ̸Â̸ÂÌ·ÁË·Á˶ÀÊ´¾È³½Ç³½Ç´¾È´¾È³½É²¼Æ²¼Æ°ºÄ·Á©³½§±»¦°º£·¨²¦°¦°¤® ©¦£¡z_irU]h_iuYeqKU_ïóöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþÿÿÿÿþÿÿÿÿÿÿþÿúûý¸¿É¨¨¸¤~¢¨ ¬¤°¼³¿Ë«·Ã¥±½«µÁ°ºÆ´¾Ê¾ÈÔ½ÇÓºÄйÃͼÆÐ¾ÈÒ¾ÈÒ¼ÆÐ½ÇѾÈÒ¾ÈѽÇнÇнÇнÆÏ¼ÆÐ»ÅϺÄκÄιÃ͸ÂÌ·Á˳½Ç±»Å°ºÄ®¸Â®¸Â·Á¬¶À¬¶À«µ¿¨²¼£·¡«µ¢ªµ¨±¦¯¤¡ª ©¦nxHP[R\f\htQYd6?H_fnÙÝàÿÿýÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþþþÿÿÿþÿÿð󸍱ºªÀ¡{¢¥±¢®ºµÁϹũµÁ®¸Ä²¼È´¾Ê·ÁË»ÅÏ»ÅϽÇÑ¿ÉÓÀÊÔÀÊÔÁËÕÁËÕÃËÖÃËÖÄÌ×ÃÌÕÃÌÕÂËÔÁÊÓÀÊÓ¾ÈÑ¿ÈÑÀÉÒ¿ÈѾÇмÆÏ»ÅιÁÌ·ÀÉ´½Æ²»Ä°¹Â¯¸Á¶¿¬µ¾¬´¿ª²½©±¼§¯º¦¯¸¥®·£¬µ¨±§°¤®©¡KS^JR]OYcWakDNX,5>BIO½ÁÄþÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿþþÿÿÿÿÿÿÿàåé¡«µ®«»¨~ §ª£²£¯»²¾Ê¯»Ç¬¸Ä³½É·ÁË·ÁË»ÅϾÈÒÀÊÔÁËÔÃÍÖÄÎ×ÅÏØÄÎׯÐÚÆÐÚÆÎÙÇÏÚÇÏÚÇÏÚÆÏØÆÏØÆÏØÄÎ×ÅÎ×ÅÎ×ÅÎ×ÅÎ×ÃÌÕÁÊÓÀÊÓ¿ÈѾÇнÆÏ»ÄÍ·Àɶ¿Èµ¾Ç³¼Å±¹Ä±ºÃ¯¸Á¯¸Á¶¿«´½ª³¼©²»¨±º¥¬¶¡©´¡«£W_jIR[DNWJT^QYd@GO,3;5<D¢¦ôöõÿþÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿþÿÿÈÍÓ§§¶½ ¢«¢®¨´¨´Â®ºÆ¹Å±½É·ÁÍ»ÅϼÆÐ¿ÉÓÂÌÖÅÍØÇÏÚÈÑÚÇÐÙÈÑÚÊÓÜÉÒÛÊÒÝÈÒÜÉÓÝÊÓÜËÔÝËÔÝËÔÝËÔÝËÔÝÊÓÜËÔÝÊÓÜÉÒÛÊÓÜÊÓÜÈÑÚÇÐÙÆÏØÃÌÕÃÌÕÄÍÖÁÊÓ¾ÇнÆÏ¼ÅλÄ͹ÂË·ÀÉ·ÀÉ´½Æ³¼Å³¼Å²»Ä°¹Â¯¶À¬µ¾¢¬¶¥¯_isJR]FOX=FO?HQLS]=FO,5<$+3^afëëëþþþÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿþþüÿÿýÍÑÚ¦©¹«» «£¯¡«·³¿Í¯»Ç¯»Ç´¾Ê¹ÃϼÆÐÀÊÔÂÌÕÅÍØÆÎÙÈÐÛÈÐÛÊÒÝÊÓÜËÔÝÌÕÞÌÕÞÍÖßÌÖàÍ×áÎÖáÏ×âÏÙãÏÙãÐØãÐØãÏ×âÎ×àÎ×àÏØáÎ×àÍÖßÍÖßÍÖßËÔÝÉÒÛÈÑØÈÑØÇÐ×ÅÎÕÂËÒÂËÒÀÉÒÀÉÒ¾ÇмÅκÃ̹Â˹ÂË·Àɶ¿È¶½Ç³ºÄ¨°»¤®¸gq}KU_GQZAHP;DM=FOFOX:AI05;#)puyþÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþüÿÿÿÿÿÿïóö¢±¦¸°¾¥ ¤¨¡£¬»¾ÊØ·Ãѯ¼Å¶ÀʺÄξÈÒÂÌÖÆÏØÈÑÚÈÑÚÉÑÜÉÒÛËÔÝÍÖßÎ×àÎ×àÏØáÐÙâÐÙâÑÛäÒÜåÓÜåÓÛæÓÝçÔÞèÔÜçÔÜçÕÞçÕÜä×ÞæÙàèØßçÕÜäÒÙáÐÙàÑØàÐ×ßÎÕÝÍÔÜÍÔÜÍÔÜÊÑÙÈÏ×ÅÎÕÅÎÕÄÍÔÂËÒÁÊÑ¿ÈϾÅ;ÅͼÅλÂʹÀȯ¸Áª´¾oy JT`GQ[AHP>GP8AJ<ENAGS7>D+36")1®°ýþÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûüûÿ¬´Á ¯¼ ¡¢¯ª¬¤°¼ÀÎÛ¼ÈÖ²¼È¶ÀÌ»ÅÏ¿ÉÓÄÎØÆÏØÉÒÛÊÓÜËÔÝËÓÞÎ×àÎ×àÐÙâÑÚãÒÛäÓÜãÔßåÕàæ×âæÛäéÜåêÜåêÛäéÚãèÙâçÙâéÜãéÞåëßçêßçêáéìáéìÜãéÙàæ×ÞæÕÜäÔÛãÒÙáÐ×ÝÑØàÐ×ßÎÕÝÌÓÛËÒÚËÒÚÈÏׯÍÕÅÌÔÃÊÒÁÈÐÀÉÒÀÇϾÅ͵¾Ç®¸ÂvJT`JT`@JT<EN;BL7>F:CJ9BK3:D$+1+/2ÉÊÌÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿþÿÿþÿÿÿþÿÿþÿÿÿÿÿÿÿÿÿýÿÿÿºÁɨ®¾¢®¢¥µ©¡¯¨¶ÀÌÚÁÍÛ²¾Ê·Á˼ÆÏÀÊÓÅÎ×ÈÑÚÊÓÜËÔÝÌÕÞÍÖßÏØáÐÙàÓÜãÕÞãØàã×àåØãåÜæèÞæèâìîÖàâÌ×ÙÔÞàÝçéâêìåíïåëëæêíëìîìíïìíïéíîçííåîíæëîßäêÜáçÛßèÚßåØÝã×ÜâÕÜâÔÛãÒÙßÐ×ßÏÖÞÍÔÜËÒÚÊÑÙÉÐØÇÎÖÅÎ×ÄÍÔÂÉѺÃ̳½Çy KUaKU_AIT=FO:CL9BI5>E8?G5<D.5=#)9=@áãâÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿþþþÿÿýÿÿÿÿÿÿÌÐÛ¤ª·©¶¦ª©£± ¬º¹ÅÓ½É׳¿Ë·ÁͽÇÑÂÌÕÆÏØÇÐÙÊÓÜÍÖßÍÖßÎ×ÞÐÙàÑÚáÔÝâ×ßâÞãçÞæèáççäèéçëìèîîÓÛÞºÂÅ´»Á¶½Ã¸ÀÃÂÊÍÓØÜæëîðôóóõôóóóòòòðñóëðóçïòáèîÞåïßãìßãìÞãéÝâæÛàäÙàæØßå×ÞäÕÜâÓÚàÑØàÐ×ßÏÖÞÍÔÜËÒÚÈÑØÊÑÙÆÍÕ¾ÇйÃÍ~LVbKU_CKV>GP;DM8AJ8AH2;B29A/6>+06 WX\ööøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþýüýüúüúùûùùûùùûùùûùøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøøûøùûùùûùùûùúüúüýüýþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿýÿÿÿÿÿÿÿÿûÿÿÿÖÚ㩦¶ ½©¬§·§³Á¶ÂÐ¾ÊØ²¾Ê·ÁÍÀÊÔÃÍ×ÇÐÙÈÐÛÊÓÜÌÕÞÎ×ÞÐÙàÑÚßÔÛáØßåÝâåãçêåéìçëìéëêîîîììîÖÚݺ¿Å¸½Ã¹¾Ä´»Á±¸¾´ºª±·²¹¿ÃÈÌÓ×ÚáâäêëíïóôíñôæëñåéòäèñãçðãèîáæìâçëáæêßäèÞãçÜáåÜáçØßåÖÝãÔÛáÓÚâÒÙáÑØàÏÖÞÍÔÜËÒÚÃÌÕ¼ÆÐLVbLVbDLW>FQ<EN9BK7@I5>E29A.5?*19).4klpôõ÷ÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûýûõùõîõîèñèåïåãîããîããîãâîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîââîâãîããîãåïåèñèîõîõùõûýûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿþÿÿÿÿþÿÿÿÿÿÿÿýÝâ訥²±¿¡²§«©¶³¿Í¶ÂеÁϰ¼È½ÇÓÉÓÝÆÐÚÇÏÚÉÒÛÊÓÜÍÖßÏØßÑÚßÕÜâØàãÝâæáæéèèêëìîëìîíííñññèéëÉÎÒ¸½Ã¹¾Ä¿Ã̾ÅͽÄ̹Àȶ½Å²¹Á¨¯·£ª²¢©±¤«³¥®µ¸ÁÈØßåëðôëðôèëðæëïåêðæëñåêðäéíåèíãæëàåéàåéÞãçÙàæØßå×ÞäÕÜäÓÚâÑØàÑØàÏÖÞÆÏØ¿ÉÓ LXdKWcBJU@HS;DM:CL7@I6?F2;B/6>,3;)-6&)0klpþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþûýûò÷òäïäÒäÒÃÛúֺ¶Ó¶µÓµµÓµ´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´´Ò´µÓµ¶Ó¶¹Õ¹ÃÛÃÒäÒäïäò÷òûýûþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþþÿÿýÿþÿÿýö÷û¤³¯¯¾¨¸¡©§·«¸È·Ãϲ¾Ì°¼È¼ÈÔÊÔàÇÑÛÆÎÙÈÑÚËÔÝÌÖßÎ×ÞÑÚß×ßâÜáåáåèäèëèéëëëíìììíííðððæçëÄÉͶ½Ã¸¿ÇÀÇÏÂÉÑÀÉоÇμÅ̺ÃʸÁÊ´½Æ¯¶¾¨¯¹¢«´¥®¢ª¦®®¸ÁËÖÜåìòêñ÷éîôçìðæéîçêïçêïåèíâçëâçëâçëÝäêÚáçÙàæØßåÖÝåÔÛãÑØàÌÕÜÃÌÕ¾ÈÒLXdMYeCKV?GR=FO9BK7@I6?F3<C07?+2:(/7(,5"%,©ª¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþýõùõãîãÇÝǦʦº}±}wwvvvvu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uu¬uvvww}±}º¦Ê¦ÇÝÇãîãõùõýþýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþÿþÿÿÿÿÿ¹½È¥¨´¨¹§§©´§µÂºÆÔ¶Âг¿Ë¼ÈÔÌÖâÈÒÜÅÏÙÉÒÛÊÓÜÍÖßÎ×ÞÑÚßÖÞáÝâåâæéçèêéêìììîëíìîîîðððãäæÁÆÊ·»Ä»¿ÈÀÇÏÃÌÓÂËÒÁÊÑ¿ÈѾÇнÆÏºÃÌ·¿Ê´¾È±»Ä¬µ¾¦¯¶ «±¢«¦§ ª´ÀÉÒàçïîó÷êîñçëîèëðæëïåêîäéíãèìßæìÜãéÙàæÖÝãÓÚâÏÖÞÌÓÛÉÒÙÄÍÖÊÓܧ±KWcKWcFPZ@JT<DO:CL8AJ5>E3<C18@+2:(/7*.7(-3"126îîðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûýûîõîÒäҦʦy¯yVVDD==;;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;==DDVVx®x¦Ê¦ÑãÑîõîûýûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿÿÿÿêîñ£ª¥´ ¢¦´¬ºÇ±½ÉµÁÍ¼ÈØ¾ÊÖÉÕáËÕáÄÎØÇÏÚËÔÝÍÖßÍÖßÑØÞ×ßâÞâåãçêèéëêëíììîîîðìîíðððäåéÀÅÉ´»Á¼ÀÉÄÈÑÅÌÔÃÌÓÃÌÓÂËÔÁÊÓ¿ÈѾÇлÃθÂ̳Àɰ½Æ¯¹Ã®¶Áª²½£¬µ¥®¡©¦¡¡«¿ÈÑéîôîó÷èëðéíðæëïåêîâçíÝäêÙàæÕÜäÒÙáÑØàÒÙáÓÚâÖÝå×ÞæÓÚâÔÝæ¢¬¶PZdAKUBLV>FQ;CN8AJ4=F4=D18@.5=)08'.4).4#(.³´¶ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùûùèñèÂÚºVV00xtsssssssssssssssssssssssssssssssssssssssssssssssssssstx00VVºÂÚÂèñèùûùþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿþÿÿþÿÈÏÕ¥¢®°w £°¼Ì¹ÅÕ¹ÅÓµÁÏÁÍÙË×ãÊÔàÃÍÙÅÏÙÊÒÝÌÕÞÎ×àÒÛâÖÞáÝâæâæéèéëëëíííïíîðìíïñïðåæèÂÇͳºÂ»ÂÊÂËÒÅÎÕÆÏÖÅÎÕÂËÔÂËÔÁÊÓ¾ÈÒ½ÇѺÄεÂ˵¿É³½Ç°ºÄ·Á«µ¿©³½¤®¸«´£«¦¡¤®¸ÔÛãðóøîïóæëïãèìßäêÜãéÛâèÛâêÛâêÜãëÝâèÞãéÞãéÝâèÙÞäÑØàÔÝæ·ÁÊYeq=GQAIT:BM8AJ6?H3<E09@-4>*19'.4',2(-3!\]aÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøûøäïä¹Õ¹}±}DDxx®xάͬ¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬t¬tjj==¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬¬Í¬Îx®xxCC}±}¹Õ¹äïäøûøþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿúÿÿÿÿÿÿÿÿýøùû¤²§¥¶xº¿ÌÝÀËݱ¿Ê·ÄÍÍÖåÉÕáÄÎÚÄÌÙÉÑÞËÕÞÎ×ÞÒÛà×ßâÞâåáåèèéëëëëîîîíîðíïîñðîèëðÂÇ˵¼ÂºÃÊÅÎÕÇÐ×ÇÐׯÏÖÅÎ×ÃÌÕÂËÔÀÉÒ¿ÉÓ½ÇÑ»ÅϸÂ̵¿É³½Ç°ºÄ®¸Â©¶¿©³½§±»¦°º ¶¦¯ª¤§¯ºÛâêêîñçëîæéîæéîåêîäéíãèîáæìàåëÜãéÚáçÚÞçÙÝæÓÚâÍÖÝÒÙã¹ÃÍU_i:DN<DO9AL5>G4=F3:B-6=,3;)08',2&+1$',´µ¹ÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøûøãîã¶Ó¶ww<<t¬Í¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÌªggVVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Í¬t<<wwµÓµâîâ÷ú÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþÿÿÿÿÿÿÿÿ´»Ã¤²ªq}£»ÈØÄÑáÅÑáºÈÓÌÙâÉÒáÂÌÖÂÌÖÇÏÜÌÔßÐÙâÓÜáÙáäàåèãæëçèêëìîíîðîîîîîîñññìíïÈÍѸ½Ã¿ÆÎÈÑØÊÓÜÉÒÛÈÑÚÇÐÙÅÎ×ÃÌÕÁÊÓ¿ÈѽÇѼÆÐºÄθÂ̵¿É²¼Æ°ºÄ¬¹Âª·Àª´À¨²¾§±½¢®º ¶§²¡¬£pz´¼ñõøìðóêíòèíñæëïäéïâçíßäêÞãéÙàæÙàæÚÞçÙÝæÖÝåÒÛâÐ×ßÍÕàÀÊÔ BLV9AL9AL4=F1:A/8?+2:)08(,5%*0%*..25âââÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøûøâîâµÓµu¬u;;s¬Í¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÌªggVVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¬Í¬s::u¬u´Ò´âîâ÷ú÷þþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿýèé먩¸{t§¸ÃÐàÈÖãÄÐÞÇÓáÆÒÞ¿ÉÕÁËÕÆÎÙÊÒÝÏØáÓÜãØàãßäçäèëèéíëëëíííîïñîîîððîîïñËÐÖ´»ÁÀÇÏÊÓÚËÔÝÌÕÞËÔÝÉÒÛÉÒÛÅÎ×ÂËÔÁÊÓ¾ÈÒ¼ÆÐ»ÅϹÃͶÀʲ¾Ê°¼È®ºÆ«·Ã©µÁ¨´À¦²¾¦°¼£¯»¶¨³¤¯¨nx¯¸ÁòöùìïôéîòçìðåêðãèîáæìÞãéÝâèÚáçÙàæ×ÞäÙÝæØßçÖÝåÓÚâÏÖàÇÑÚÎÛä§³BJW6>I7@I2;B.7>*3:)08&-5%*0"'-!$) ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøûøâîâµÓµu¬u::s¬Í¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÌª ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøûøâîâ´Ò´u¬u::s¬Í¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÌª YY[ÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøûøâîâ´Ò´u¬u::s¬Í¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÌª kghii i j k lnqs'z+7<NUj¡r °£Á®ÀÓÈÙãÝçìèîïîñññòòòòòòóóóóóõööôòóõÆËÏ¿ÈÑÓÜãèóùçùýê÷ýíøüëùúéøýìöÿä÷ýåóöÝîöÛêñÕäëÏÜåÈÒÜÁÎ×½ÇÑ»ÂÔ´Â˲¿È±½Ë®¼Ç«·Ã¨¶Ã§µ¾£±¾ ®»§µ¢¯ hvlyçìðõùüñõøñôùîó÷ìñõëðôíðõîñöðô÷ôõùþÿÿªªªMONVWYUVXRSWIJL¡ÜåîÒÙãÍÖßÊÔÞÇÑÝ¿ËÙ«¼Ì«¼Ìr'.6(1:&).$($BAFÿýþþÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþøûøâîâµÓµvv;;s¬Í¬ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÌª l #{#YY¬Í¬«Í«ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«Ì««Í«s«t<<i kns'{*<AW^yª Á¦ÄØÈÝçÞêíêðñðóóóóóóñóòôôô÷÷÷ûùúððòÑÕÞÝàåÍÅÇÈÈÉÈÆÆÄơȴËÁÉÏÖÞÈÜå¾Ì׸ÆÏ¸Âδ¾È®¼Ç¯¹Åª¶Â¨´Ä¥³¼¢°½«¸¦´¢¯co{p}ïóö÷øüòöùñõøïôøíòöìñõîñöïò÷õöúûüþþþþPPP l s**NN|°|®Î®ÕæÕëóëìôìÚéÚ¸Ô¸»c¡c??$|$rm!z!s«sâîâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿâîâ» y k nu03NRu©y¡Ä¤ÇÚÇßçßëîëñòñóóõóõòõõõøö÷ûùúÿýþóöûÞÒÔ ¢+-´syÁÍÛ»ÌÖµÁͲ¾Ê¬½Çª¸Å¨¶Á¢´¾¤°À ®»©¹¥²¯]iu{ôøû÷øúôøûòöùïôøîó÷îó÷ðóøñõø÷øüþÿÿééé ;DMes|fwÂÉÏýÿþÿÿýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþþþììì VVV### l kjhgªÌªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿggij l mmm k jhgVVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªÌªgªÌªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ«Í«kr,,SS·¹Õ¹ÖæÖÖæÖºÖº»^^77wnj»ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ» y lr*~,KMx«y¥Æ¥ÊÛÊâéâíðíòñöôôòøøøúøûûýüýýûþÿÿÚ® l !z!PP¸·Ô·ÎâÎÓåÓÇÝǨ˨vv@@vZZÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ» n "z">>OOEE**qjâîâÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿXXm y HH~¯~´Ï´ÙæÚîóïúøùýýýþ... [truncated message content] |